From 4748f8902271bafd2bb015eb283830e84496199d Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Wed, 29 Jun 2016 22:51:42 +0200 Subject: [PATCH] Make build.info INCLUDE stmts be both source and build tree relative INCLUDE statements in build.info files were source tree centric. That meant that to get include directory specs in the build tree, we had to resort to perl fragments that specified the build tree include paths as absolute ones. This change has the INCLUDE statement consider both the source and build tree for any include directory. It means that there may be some extra unnecessary include paths, but it also makes life simpler for anyone who makes changes in the build.info files. Reviewed-by: Rich Salz --- Configure | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/Configure b/Configure index 17d7063dba..f8a6ec2e84 100755 --- a/Configure +++ b/Configure @@ -1713,8 +1713,8 @@ EOF # sure it can get included if ($dest ne "" && $d =~ /\.(h|pm)$/) { my $i = dirname($d); - push @{$unified_info{includes}->{$ddest}}, $i - unless grep { $_ eq $i } @{$unified_info{includes}->{$ddest}}; + push @{$unified_info{includes}->{$ddest}->{source}}, $i + unless grep { $_ eq $i } @{$unified_info{includes}->{$ddest}->{source}}; } } } @@ -1732,9 +1732,12 @@ EOF } } foreach (@{$includes{$dest}}) { - my $i = cleandir($sourced, $_, $blddir); - push @{$unified_info{includes}->{$ddest}}, $i - unless grep { $_ eq $i } @{$unified_info{includes}->{$ddest}}; + my $is = cleandir($sourced, $_, $blddir); + my $ib = cleandir($buildd, $_, $blddir); + push @{$unified_info{includes}->{$ddest}->{source}}, $is + unless grep { $_ eq $is } @{$unified_info{includes}->{$ddest}->{source}}; + push @{$unified_info{includes}->{$ddest}->{build}}, $ib + unless grep { $_ eq $ib } @{$unified_info{includes}->{$ddest}->{build}}; } } } @@ -1751,6 +1754,22 @@ EOF [ sort keys %{$unified_info{$l1}->{$l2}} ]; } } + # Includes + foreach my $dest (sort keys %{$unified_info{includes}}) { + if (defined($unified_info{includes}->{$dest}->{build})) { + my @source_includes = + ( @{$unified_info{includes}->{$dest}->{source}} ); + $unified_info{includes}->{$dest} = + [ @{$unified_info{includes}->{$dest}->{build}} ]; + foreach my $inc (@source_includes) { + push @{$unified_info{includes}->{$dest}}, $inc + unless grep { $_ eq $inc } @{$unified_info{includes}->{$dest}}; + } + } else { + $unified_info{includes}->{$dest} = + [ @{$unified_info{includes}->{$dest}->{source}} ]; + } + } } # For the schemes that need it, we provide the old *_obj configs