util/postprocess-makedepend.pl: For VC, don't include system headers

All dependencies that VC gives us are absolute paths, so we need to
check if some of them are within our source or build tree.  We do that
by comparing the start of each dependency with the absolute versions
of our source and build directories.

Reviewed-by: Andy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5591)
This commit is contained in:
Richard Levitte 2018-03-14 10:37:26 +01:00
parent bbb9413b7e
commit 27c4490521

View File

@ -9,8 +9,15 @@
use strict;
use warnings;
my $producer = shift @ARGV;
use lib '.';
use configdata;
use File::Spec::Functions qw(canonpath rel2abs);
my $abs_srcdir = rel2abs($config{sourcedir});
my $abs_blddir = rel2abs($config{builddir});
my $producer = shift @ARGV;
die "Producer not given\n" unless $producer;
my $procedure = {
@ -98,7 +105,15 @@ my $procedure = {
if (/^Note: including file: */) {
(my $tail = $') =~ s/\s*\R$//;
return "${object}: \"$tail\"\n";
# VC gives us absolute paths for all include files, so to
# remove system header dependencies, we need to check that
# they don't match $abs_srcdir or $abs_blddir
$tail = canonpath($tail);
if ($tail =~ m|^\Q$abs_srcdir\E|i
|| $tail =~ m|^\Q$abs_blddir\E|i) {
return "${object}: \"$tail\"\n";
}
}
return undef;