aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2018-09-10 02:18:22 +0200
committerRichard Levitte <levitte@openssl.org>2018-09-12 01:59:45 +0200
commit609e4be88e63e489c32438b3b0872fd891829301 (patch)
treeaf95fbfe4a0f66b20dea99012f4b48f0533f6c6b
parentd6b345708f8f8a04fdb5ca2e58a953b7fec461e1 (diff)
downloadopenssl-609e4be88e63e489c32438b3b0872fd891829301.zip
openssl-609e4be88e63e489c32438b3b0872fd891829301.tar.gz
openssl-609e4be88e63e489c32438b3b0872fd891829301.tar.bz2
Configure: DON'T trickle down includes from products to sources
Instead, use the include settings from the products later in the process, making it possible to have different includes for two different libraries that share the same source code. Reviewed-by: Paul Dale <paul.dale@oracle.com> Reviewed-by: Tim Hudson <tjh@openssl.org> (Merged from https://github.com/openssl/openssl/pull/7159)
-rw-r--r--Configurations/common.tmpl6
-rwxr-xr-xConfigure24
2 files changed, 7 insertions, 23 deletions
diff --git a/Configurations/common.tmpl b/Configurations/common.tmpl
index 180621e..ad67591 100644
--- a/Configurations/common.tmpl
+++ b/Configurations/common.tmpl
@@ -82,7 +82,8 @@
generator_incs => $unified_info{includes}->{$script},
generator_deps => $unified_info{depends}->{$script},
deps => $unified_info{depends}->{$src},
- incs => $unified_info{includes}->{$obj},
+ incs => [ @{$unified_info{includes}->{$obj}},
+ @{$unified_info{includes}->{$bin}} ],
%opts);
foreach (@{$unified_info{depends}->{$src}}) {
dogenerate($_, $obj, $bin, %opts);
@@ -103,7 +104,8 @@
product => $bin,
srcs => $unified_info{sources}->{$obj},
deps => $unified_info{depends}->{$obj},
- incs => $unified_info{includes}->{$obj},
+ incs => [ @{$unified_info{includes}->{$obj}},
+ @{$unified_info{includes}->{$bin}} ],
%opts);
foreach ((@{$unified_info{sources}->{$obj}},
@{$unified_info{depends}->{$obj}})) {
diff --git a/Configure b/Configure
index 3baa8ce..f9eda66 100755
--- a/Configure
+++ b/Configure
@@ -2189,26 +2189,6 @@ EOF
}
}
- # Trickle down includes placed on libraries, engines and programs to
- # their sources (i.e. object files)
- foreach my $dest (keys %{$unified_info{engines}},
- keys %{$unified_info{libraries}},
- keys %{$unified_info{programs}}) {
- foreach my $k (("source", "build")) {
- next unless defined($unified_info{includes}->{$dest}->{$k});
- my @incs = reverse @{$unified_info{includes}->{$dest}->{$k}};
- foreach my $obj (grep /\.o$/,
- (keys %{$unified_info{sources}->{$dest}},
- keys %{$unified_info{shared_sources}->{$dest}})) {
- foreach my $inc (@incs) {
- unshift @{$unified_info{includes}->{$obj}->{$k}}, $inc
- unless grep { $_ eq $inc } @{$unified_info{includes}->{$obj}->{$k}};
- }
- }
- }
- delete $unified_info{includes}->{$dest};
- }
-
### Make unified_info a bit more efficient
# One level structures
foreach (("programs", "libraries", "engines", "scripts", "extra", "overrides")) {
@@ -2233,9 +2213,11 @@ EOF
push @{$unified_info{includes}->{$dest}}, $inc
unless grep { $_ eq $inc } @{$unified_info{includes}->{$dest}};
}
- } else {
+ } elsif (defined($unified_info{includes}->{$dest}->{source})) {
$unified_info{includes}->{$dest} =
[ @{$unified_info{includes}->{$dest}->{source}} ];
+ } else {
+ delete $unified_info{includes}->{$dest};
}
}
}