Building: Add modules with DEPENDs to GENERATEd files
[openssl.git] / Configurations / windows-makefile.tmpl
index f327169c804bb3aa89320bf0a94a8d3d8097962a..19e3f4e0eee5f2cf024c9a8b278a8162bc9a28fc 100644 (file)
@@ -62,53 +62,53 @@ GENERATED={- # common0.tmpl provides @generated
 INSTALL_LIBS={-
         join(" ", map { quotify1(platform->sharedlib_import($_)
                                  // platform->staticlib($_)) }
 INSTALL_LIBS={-
         join(" ", map { quotify1(platform->sharedlib_import($_)
                                  // platform->staticlib($_)) }
-                  grep { !$unified_info{attributes}->{$_}->{noinst} }
+                  grep { !$unified_info{attributes}->{libraries}->{$_}->{noinst} }
                   @{$unified_info{libraries}})
 -}
 INSTALL_SHLIBS={-
         join(" ", map { my $x = platform->sharedlib($_);
                         $x ? quotify_l($x) : () }
                   @{$unified_info{libraries}})
 -}
 INSTALL_SHLIBS={-
         join(" ", map { my $x = platform->sharedlib($_);
                         $x ? quotify_l($x) : () }
-                  grep { !$unified_info{attributes}->{$_}->{noinst} }
+                  grep { !$unified_info{attributes}->{libraries}->{$_}->{noinst} }
                   @{$unified_info{libraries}})
 -}
 INSTALL_SHLIBPDBS={-
         join(" ", map { my $x = platform->sharedlibpdb($_);
                         $x ? quotify_l($x) : () }
                   @{$unified_info{libraries}})
 -}
 INSTALL_SHLIBPDBS={-
         join(" ", map { my $x = platform->sharedlibpdb($_);
                         $x ? quotify_l($x) : () }
-                  grep { !$unified_info{attributes}->{$_}->{noinst} }
+                  grep { !$unified_info{attributes}->{libraries}->{$_}->{noinst} }
                   @{$unified_info{libraries}})
 -}
 INSTALL_ENGINES={-
         join(" ", map { quotify1(platform->dso($_)) }
                   @{$unified_info{libraries}})
 -}
 INSTALL_ENGINES={-
         join(" ", map { quotify1(platform->dso($_)) }
-                  grep { !$unified_info{attributes}->{$_}->{noinst}
-                         && $unified_info{attributes}->{$_}->{engine} }
+                  grep { !$unified_info{attributes}->{modules}->{$_}->{noinst}
+                         && $unified_info{attributes}->{modules}->{$_}->{engine} }
                   @{$unified_info{modules}})
 -}
 INSTALL_ENGINEPDBS={-
         join(" ", map { quotify1(platform->dsopdb($_)) }
                   @{$unified_info{modules}})
 -}
 INSTALL_ENGINEPDBS={-
         join(" ", map { quotify1(platform->dsopdb($_)) }
-                  grep { !$unified_info{attributes}->{$_}->{noinst}
-                         && $unified_info{attributes}->{$_}->{engine} }
+                  grep { !$unified_info{attributes}->{modules}->{$_}->{noinst}
+                         && $unified_info{attributes}->{modules}->{$_}->{engine} }
                   @{$unified_info{modules}})
 -}
 INSTALL_PROGRAMS={-
         join(" ", map { quotify1(platform->bin($_)) }
                   @{$unified_info{modules}})
 -}
 INSTALL_PROGRAMS={-
         join(" ", map { quotify1(platform->bin($_)) }
-                  grep { !$unified_info{attributes}->{$_}->{noinst} }
+                  grep { !$unified_info{attributes}->{programs}->{$_}->{noinst} }
                   @{$unified_info{programs}})
 -}
 INSTALL_PROGRAMPDBS={-
         join(" ", map { quotify1(platform->binpdb($_)) }
                   @{$unified_info{programs}})
 -}
 INSTALL_PROGRAMPDBS={-
         join(" ", map { quotify1(platform->binpdb($_)) }
-                  grep { !$unified_info{attributes}->{$_}->{noinst} }
+                  grep { !$unified_info{attributes}->{programs}->{$_}->{noinst} }
                   @{$unified_info{programs}})
 -}
 BIN_SCRIPTS={-
         join(" ", map { quotify1($_) }
                   @{$unified_info{programs}})
 -}
 BIN_SCRIPTS={-
         join(" ", map { quotify1($_) }
-                  grep { !$unified_info{attributes}->{$_}->{noinst}
-                         && !$unified_info{attributes}->{$_}->{misc} }
+                  grep { !$unified_info{attributes}->{scripts}->{$_}->{noinst}
+                         && !$unified_info{attributes}->{scripts}->{$_}->{misc} }
                   @{$unified_info{scripts}})
 -}
 MISC_SCRIPTS={-
         join(" ", map { quotify1($_) }
                   @{$unified_info{scripts}})
 -}
 MISC_SCRIPTS={-
         join(" ", map { quotify1($_) }
-                  grep { !$unified_info{attributes}->{$_}->{noinst}
-                         && $unified_info{attributes}->{$_}->{misc} }
+                  grep { !$unified_info{attributes}->{scripts}->{$_}->{noinst}
+                         && $unified_info{attributes}->{scripts}->{$_}->{misc} }
                   @{$unified_info{scripts}})
 -}
 
                   @{$unified_info{scripts}})
 -}
 
@@ -148,7 +148,7 @@ OPENSSLDIR_dev={- #
 OPENSSLDIR_dir={- canonpath($openssldir_dir) -}
 LIBDIR={- our $libdir = $config{libdir} || "lib";
           file_name_is_absolute($libdir) ? "" : $libdir -}
 OPENSSLDIR_dir={- canonpath($openssldir_dir) -}
 LIBDIR={- our $libdir = $config{libdir} || "lib";
           file_name_is_absolute($libdir) ? "" : $libdir -}
-MODULESDIR_dev={- use File::Spec::Functions qw(:DEFAULT splitpath);
+MODULESDIR_dev={- use File::Spec::Functions qw(:DEFAULT splitpath catpath);
                   our $modulesprefix = catdir($prefix,$libdir);
                   our ($modulesprefix_dev, $modulesprefix_dir,
                        $modulesprefix_file) =
                   our $modulesprefix = catdir($prefix,$libdir);
                   our ($modulesprefix_dev, $modulesprefix_dir,
                        $modulesprefix_file) =
@@ -158,7 +158,7 @@ MODULESDIR_dev={- use File::Spec::Functions qw(:DEFAULT splitpath);
                       catdir($modulesprefix_dir, "ossl-modules");
                   our $modulesdir = catpath($modulesdir_dev, $modulesdir_dir);
                   our $enginesdir_dev = $modulesprefix_dev;
                       catdir($modulesprefix_dir, "ossl-modules");
                   our $modulesdir = catpath($modulesdir_dev, $modulesdir_dir);
                   our $enginesdir_dev = $modulesprefix_dev;
-                  out $enginesdir_dir =
+                  our $enginesdir_dir =
                       catdir($modulesprefix_dir, "engines-$sover_dirname");
                   our $enginesdir = catpath($enginesdir_dev, $enginesdir_dir);
                   $modulesdir_dev -}
                       catdir($modulesprefix_dir, "engines-$sover_dirname");
                   our $enginesdir = catpath($enginesdir_dev, $enginesdir_dir);
                   $modulesdir_dev -}
@@ -206,6 +206,7 @@ AS={- $config{AS} -}
 ASFLAGS={- join(' ', @{$config{ASFLAGS}}) -}
 
 RC={- $config{RC} -}
 ASFLAGS={- join(' ', @{$config{ASFLAGS}}) -}
 
 RC={- $config{RC} -}
+RCFLAGS={- join(' ', @{$config{RCFLAGS}}) -}
 
 ECHO="$(PERL)" "$(SRCDIR)\util\echo.pl"
 
 
 ECHO="$(PERL)" "$(SRCDIR)\util\echo.pl"
 
@@ -286,7 +287,17 @@ DSO_ASFLAGS={- join(' ', $target{dso_asflags} || (),
                          @{$config{module_asflags}},
                          '$(CNF_ASFLAGS)', '$(ASFLAGS)') -}
 DSO_CPPFLAGS={- join(' ', $target{dso_cppflags} || (),
                          @{$config{module_asflags}},
                          '$(CNF_ASFLAGS)', '$(ASFLAGS)') -}
 DSO_CPPFLAGS={- join(' ', $target{dso_cppflags} || (),
-                          $target{module_cppflags} || (),
+                          $target{module_cppflag} || (),
+                          (map { '-D'.quotify1($_) }
+                               @{$target{dso_defines}},
+                               @{$target{module_defines}},
+                               @{$config{dso_defines}},
+                               @{$config{module_defines}}),
+                          (map { '-I'.quotify1($_) }
+                               @{$target{dso_includes}},
+                               @{$target{module_includes}},
+                               @{$config{dso_includes}},
+                               @{$config{module_includes}}),
                           @{$config{dso_cppflags}},
                           @{$config{module_cppflags}},
                           '$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
                           @{$config{dso_cppflags}},
                           @{$config{module_cppflags}},
                           '$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
@@ -358,6 +369,7 @@ test: tests
        set RESULT_D=$(BLDDIR)\test\test-runs
        set PERL=$(PERL)
        set OPENSSL_ENGINES=$(MAKEDIR)\engines
        set RESULT_D=$(BLDDIR)\test\test-runs
        set PERL=$(PERL)
        set OPENSSL_ENGINES=$(MAKEDIR)\engines
+       set OPENSSL_MODULES=$(MAKEDIR)\providers
        set OPENSSL_DEBUG_MEMORY=on
        "$(PERL)" "$(SRCDIR)\test\run_tests.pl" $(TESTS)
        @{- if ($disabled{tests}) { output_on(); } else { output_off(); } "" -}
        set OPENSSL_DEBUG_MEMORY=on
        "$(PERL)" "$(SRCDIR)\test\run_tests.pl" $(TESTS)
        @{- if ($disabled{tests}) { output_on(); } else { output_off(); } "" -}
@@ -538,7 +550,7 @@ reconfigure reconf:
               $args{generator}->[1] || platform->dsoname($args{product});
           return <<"EOF";
 $target: $args{generator}->[0] $deps $mkdef
               $args{generator}->[1] || platform->dsoname($args{product});
           return <<"EOF";
 $target: $args{generator}->[0] $deps $mkdef
-       \$(PERL) $mkdef$ord_ver --ordinals $args{generator}->[0] --name $ord_name --OS windows > $target
+       "\$(PERL)" $mkdef$ord_ver --ordinals $args{generator}->[0] --name $ord_name --OS windows > $target
 EOF
       } elsif (!platform->isasm($args{src})) {
           my $target = $args{src};
 EOF
       } elsif (!platform->isasm($args{src})) {
           my $target = $args{src};
@@ -546,10 +558,14 @@ EOF
               my $dofile = abs2rel(rel2abs(catfile($config{sourcedir},
                                                    "util", "dofile.pl")),
                                    rel2abs($config{builddir}));
               my $dofile = abs2rel(rel2abs(catfile($config{sourcedir},
                                                    "util", "dofile.pl")),
                                    rel2abs($config{builddir}));
+              my @modules = ( 'configdata.pm',
+                              grep { $_ =~ m|\.pm$| } @{$args{deps}} );
+              my %moduleincs = map { '"-I'.dirname($_).'"' => 1 } @modules;
+              @modules = map { "-M".basename($_, '.pm') } @modules;
+              my $modules = join(' ', '', sort keys %moduleincs, @modules);
               return <<"EOF";
 $target: "$args{generator}->[0]" $deps
               return <<"EOF";
 $target: "$args{generator}->[0]" $deps
-       "\$(PERL)" "-I\$(BLDDIR)" -Mconfigdata "$dofile" \\
-           "-o$target{build_file}" $generator > \$@
+       "\$(PERL)"$modules "$dofile" "-o$target{build_file}" $generator > \$@
 EOF
          } else {
               return <<"EOF";
 EOF
          } else {
               return <<"EOF";
@@ -558,22 +574,23 @@ $target: "$args{generator}->[0]" $deps
 EOF
          }
       } else {
 EOF
          }
       } else {
+          my $cppflags = {
+              shlib => '$(LIB_CFLAGS) $(LIB_CPPFLAGS)',
+              lib => '$(LIB_CFLAGS) $(LIB_CPPFLAGS)',
+              dso => '$(DSO_CFLAGS) $(DSO_CPPFLAGS)',
+              bin => '$(BIN_CFLAGS) $(BIN_CPPFLAGS)'
+          } -> {$args{intent}};
           my $target = platform->asm($args{src});
           my $target = platform->asm($args{src});
+
           if ($args{generator}->[0] =~ /\.pl$/) {
           if ($args{generator}->[0] =~ /\.pl$/) {
-              $generator = '"$(PERL)"'.$generator_incs.' '.$generator;
+              $generator = '"$(PERL)"'.$generator_incs.' '.$generator
+                  .' "$(PERLASM_SCHEME)"'.$incs.' '.$cppflags.$defs.' $(PROCESSSOR)';
           } elsif ($args{generator}->[0] =~ /\.S$/) {
               $generator = undef;
           } else {
               die "Generator type for $src unknown: $generator\n";
           }
 
           } elsif ($args{generator}->[0] =~ /\.S$/) {
               $generator = undef;
           } else {
               die "Generator type for $src unknown: $generator\n";
           }
 
-          my $cppflags = $incs;
-          $cppflags .= {
-              shlib => ' $(LIB_CFLAGS) $(LIB_CPPFLAGS)',
-              lib => ' $(LIB_CFLAGS) $(LIB_CPPFLAGS)',
-              dso => ' $(DSO_CFLAGS) $(DSO_CPPFLAGS)',
-              bin => ' $(BIN_CFLAGS) $(BIN_CPPFLAGS)'
-          } -> {$args{intent}};
           if (defined($generator)) {
               # If the target is named foo.S in build.info, we want to
               # end up generating foo.s in two steps.
           if (defined($generator)) {
               # If the target is named foo.S in build.info, we want to
               # end up generating foo.s in two steps.
@@ -582,7 +599,7 @@ EOF
 $target: "$args{generator}->[0]" $deps
        set ASM=\$(AS)
        $generator \$@.S
 $target: "$args{generator}->[0]" $deps
        set ASM=\$(AS)
        $generator \$@.S
-       \$(CPP) $cppflags $defs \$@.S > \$@.i && move /Y \$@.i \$@
+       \$(CPP) $incs $cppflags $defs \$@.S > \$@.i && move /Y \$@.i \$@
         del /Q \$@.S
 EOF
               }
         del /Q \$@.S
 EOF
               }
@@ -601,8 +618,13 @@ EOF
   }
 
  sub src2obj {
   }
 
  sub src2obj {
+     my $asmext = platform->asmext();
      my %args = @_;
      my %args = @_;
-     my @srcs = map { (my $x = $_) =~ s/\.s$/.asm/; $x } ( @{$args{srcs}} );
+     my @srcs =
+         map { my $x = $_;
+               (platform->isasm($x) && grep { $x eq $_ } @generated)
+               ? platform->asm($x) : $x }
+         ( @{$args{srcs}} );
      my $srcs = '"'.join('" "',  @srcs).'"';
      my $deps = '"'.join('" "', @srcs, @{$args{deps}}).'"';
      my $incs = join("", map { ' /I "'.$_.'"' } @{$args{incs}});
      my $srcs = '"'.join('" "',  @srcs).'"';
      my $deps = '"'.join('" "', @srcs, @{$args{deps}}).'"';
      my $incs = join("", map { ' /I "'.$_.'"' } @{$args{incs}});
@@ -625,12 +647,12 @@ EOF
          my $res = platform->res($args{obj});
          return <<"EOF";
 $res: $deps
          my $res = platform->res($args{obj});
          return <<"EOF";
 $res: $deps
-       \$(RC) \$(RCOUTFLAG)\$\@ $srcs
+       \$(RC) \$(RCFLAGS) \$(RCOUTFLAG)\$\@ $srcs
 EOF
      }
      my $obj = platform->obj($args{obj});
      my $dep = platform->dep($args{obj});
 EOF
      }
      my $obj = platform->obj($args{obj});
      my $dep = platform->dep($args{obj});
-     if ($srcs[0] =~ /\.asm$/) {
+     if ($srcs[0] =~ /\Q${asmext}\E$/) {
          return <<"EOF";
 $obj: $deps
        \$(AS) $asflags \$(ASOUTFLAG)\$\@ $srcs
          return <<"EOF";
 $obj: $deps
        \$(AS) $asflags \$(ASOUTFLAG)\$\@ $srcs
@@ -696,8 +718,8 @@ EOF
  }
  sub obj2dso {
      my %args = @_;
  }
  sub obj2dso {
      my %args = @_;
-     my $dso = platform->dso($args{lib});
-     my $dso_n = platform->dsoname($args{lib});
+     my $dso = platform->dso($args{module});
+     my $dso_n = platform->dsoname($args{module});
      my @objs = map { platform->convertext($_) }
                 grep { platform->isobj($_) || platform->isres($_) }
                 @{$args{objs}};
      my @objs = map { platform->convertext($_) }
                 grep { platform->isobj($_) || platform->isres($_) }
                 @{$args{objs}};