Configure: ensure that a DEPEND generates the correct inclusion directory
We incorrectly assumed that explicit dependencies meant that the source directory would be added for inclusion. However, if the dependent file is generated, it's stored in the build directory, and that should be used for inclusion rather than the source directory. Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/5153)
This commit is contained in:
parent
1b5ad51fc9
commit
e431bcfabd
1 changed files with 22 additions and 9 deletions
31
Configure
31
Configure
|
@ -1946,13 +1946,6 @@ EOF
|
|||
}
|
||||
$d .= $e;
|
||||
$unified_info{depends}->{$ddest}->{$d} = 1;
|
||||
# If we depend on a header file or a perl module, let's make
|
||||
# sure it can get included
|
||||
if ($dest ne "" && $d =~ /\.(h|pm)$/) {
|
||||
my $i = dirname($d);
|
||||
push @{$unified_info{includes}->{$ddest}->{source}}, $i
|
||||
unless grep { $_ eq $i } @{$unified_info{includes}->{$ddest}->{source}};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1989,6 +1982,25 @@ EOF
|
|||
|
||||
# Massage the result
|
||||
|
||||
# If we depend on a header file or a perl module, add an inclusion of
|
||||
# its directory to allow smoothe inclusion
|
||||
foreach my $dest (keys %{$unified_info{depends}}) {
|
||||
next if $dest eq "";
|
||||
foreach my $d (keys %{$unified_info{depends}->{$dest}}) {
|
||||
next unless $d =~ /\.(h|pm)$/;
|
||||
if ($d eq "configdata.pm"
|
||||
|| defined($unified_info{generate}->{$d})) {
|
||||
my $i = cleandir($blddir, dirname($d));
|
||||
push @{$unified_info{includes}->{$dest}->{build}}, $i
|
||||
unless grep { $_ eq $i } @{$unified_info{includes}->{$dest}->{build}};
|
||||
} else {
|
||||
my $i = cleandir($srcdir, dirname($d));
|
||||
push @{$unified_info{includes}->{$dest}->{source}}, $i
|
||||
unless grep { $_ eq $i } @{$unified_info{includes}->{$dest}->{source}};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Trickle down includes placed on libraries, engines and programs to
|
||||
# their sources (i.e. object files)
|
||||
foreach my $dest (keys %{$unified_info{engines}},
|
||||
|
@ -2024,8 +2036,9 @@ EOF
|
|||
# Includes
|
||||
foreach my $dest (sort keys %{$unified_info{includes}}) {
|
||||
if (defined($unified_info{includes}->{$dest}->{build})) {
|
||||
my @source_includes =
|
||||
( @{$unified_info{includes}->{$dest}->{source}} );
|
||||
my @source_includes = ();
|
||||
@source_includes = ( @{$unified_info{includes}->{$dest}->{source}} )
|
||||
if defined($unified_info{includes}->{$dest}->{source});
|
||||
$unified_info{includes}->{$dest} =
|
||||
[ @{$unified_info{includes}->{$dest}->{build}} ];
|
||||
foreach my $inc (@source_includes) {
|
||||
|
|
Loading…
Reference in a new issue