diff options
author | Richard Levitte <levitte@openssl.org> | 2018-10-21 11:11:04 +0200 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2018-10-31 15:47:56 +0100 |
commit | 222b0a8e1a43e67c8d65fd325828d8860ed2d348 (patch) | |
tree | 60738fb8a4c7058d19e777097419fd777b64956a /Configure | |
parent | 3b1928fe64e36634e09482c721f4d3d0c10047a8 (diff) |
Configuration: when building the dirinfo structure, include shared_sources
This makes sure that any resulting directory target in the build files
also depend on object files meant for shared libraries.
As a side effect, we move the production of the dirinfo structure from
common.tmpl to Configure, to make it easier to check the result.
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/7452)
(cherry picked from commit b6e660754c2e799cffe4906269fcace0e07c73bc)
Diffstat (limited to 'Configure')
-rwxr-xr-x | Configure | 36 |
1 files changed, 36 insertions, 0 deletions
@@ -2243,6 +2243,42 @@ EOF [ @{$unified_info{includes}->{$dest}->{source}} ]; } } + + # For convenience collect information regarding directories where + # files are generated, those generated files and the end product + # they end up in where applicable. Then, add build rules for those + # directories + my %loopinfo = ( "lib" => [ @{$unified_info{libraries}} ], + "dso" => [ @{$unified_info{engines}} ], + "bin" => [ @{$unified_info{programs}} ], + "script" => [ @{$unified_info{scripts}} ] ); + foreach my $type (keys %loopinfo) { + foreach my $product (@{$loopinfo{$type}}) { + my %dirs = (); + my $pd = dirname($product); + + foreach (@{$unified_info{sources}->{$product}}, + @{$unified_info{shared_sources}->{$product} // []}) { + my $d = dirname($_); + + # We don't want to create targets for source directories + # when building out of source + next if ($config{sourcedir} ne $config{builddir} + && $d =~ m|^\Q$config{sourcedir}\E|); + # We already have a "test" target, and the current directory + # is just silly to make a target for + next if $d eq "test" || $d eq "."; + + $dirs{$d} = 1; + push @{$unified_info{dirinfo}->{$d}->{deps}}, $_ + if $d ne $pd; + } + foreach (keys %dirs) { + push @{$unified_info{dirinfo}->{$_}->{products}->{$type}}, + $product; + } + } + } } # For the schemes that need it, we provide the old *_obj configs |