Commit 84f38675 authored by Richard Levitte's avatar Richard Levitte
Browse files

Build file templates: additional information to build file template functions



Send a bit information to the build file template functions.  For
src2obj(), the additional option 'product' holds the name of the final
file that the object file will go into.  Additionally, the diverse
functions will get the option 'installed', with a value that evaluates
true if the final product is to be installed, otherwise false.

Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
parent e82e2186
Loading
Loading
Loading
Loading
+23 −6
Original line number Diff line number Diff line
@@ -34,6 +34,18 @@
     @newlist;
 }

 # is_installed checks if a given file will be installed (i.e. they are
 # not defined _NO_INST in build.info)
 sub is_installed {
     my $product = shift;
     if (grep { $product eq $_ }
         map { (@{$unified_info{install}->{$_}}) }
         keys %{$unified_info{install}}) {
         return 1;
     }
     return 0;
 }

 # dogenerate is responsible for producing all the recipes that build
 # generated source files.  It recurses in case a dependency is also a
 # generated source file.
@@ -72,6 +84,7 @@
     my %opts = @_;
     if (@{$unified_info{sources}->{$obj}}) {
         $OUT .= src2obj(obj => $obj_no_o,
                         product => $bin,
                         srcs => $unified_info{sources}->{$obj},
                         deps => $unified_info{depends}->{$obj},
                         incs => [ @{$unified_info{includes}->{$bin}},
@@ -102,9 +115,10 @@
                                        (@{$unified_info{sources}->{$lib}},
                                         @{$unified_info{shared_sources}->{$lib}}) ],
                              deps => [ reducedepends(resolvedepends($lib)) ],
                              installed => is_installed($lib),
                              %ordinals);
         foreach (@{$unified_info{shared_sources}->{$lib}}) {
             doobj($_, $lib, intent => "lib");
             doobj($_, $lib, intent => "lib", installed => is_installed($lib));
         }
     }
     $OUT .= obj2lib(lib => $lib,
@@ -126,10 +140,11 @@
                     objs => [ map { (my $x = $_) =~ s|\.o$||; $x }
                               (@{$unified_info{sources}->{$lib}},
                                @{$unified_info{shared_sources}->{$lib}}) ],
                     deps => [ resolvedepends($lib) ]);
                     deps => [ resolvedepends($lib) ],
                     installed => is_installed($lib));
     foreach ((@{$unified_info{sources}->{$lib}},
               @{$unified_info{shared_sources}->{$lib}})) {
         doobj($_, $lib, intent => "dso");
         doobj($_, $lib, intent => "dso", installed => is_installed($lib));
     }
     $cache{$lib} = 1;
 }
@@ -143,9 +158,10 @@
     $OUT .= obj2bin(bin => $bin,
                     objs => [ map { (my $x = $_) =~ s|\.o$||; $x }
                               @{$unified_info{sources}->{$bin}} ],
                     deps => $deps);
                     deps => $deps,
                     installed => is_installed($bin));
     foreach (@{$unified_info{sources}->{$bin}}) {
         doobj($_, $bin, intent => "bin");
         doobj($_, $bin, intent => "bin", installed => is_installed($bin));
     }
     $cache{$bin} = 1;
 }
@@ -156,7 +172,8 @@
     my $script = shift;
     return "" if $cache{$script};
     $OUT .= in2script(script => $script,
                       sources => $unified_info{sources}->{$script});
                       sources => $unified_info{sources}->{$script},
                       installed => is_installed($script));
     $cache{$script} = 1;
 }