diff options
author | Richard Levitte <levitte@openssl.org> | 2015-10-04 21:12:03 +0200 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2015-10-05 11:08:18 +0200 |
commit | 46f4d2bef6c11e024c29b78a835b433c472ed3cf (patch) | |
tree | e5ffe34d1576aeaf863aa1b8a08bc9c2f9a2505b /util | |
parent | 5f0580ccf126a4834a406423e15da5b8a8bdf993 (diff) |
Fix make depend for things being built in subdirectories
Some makedepend mechanisms remove all directory information in the
target, so a dependency can looks like this:
ssl3_record.o: record/ssl3_record.c
However, that doesn't quite suit us, our Makefile has us build
record/ssl3_record.o rather than ssl3_record.o.
To clear this up, a change to util/clean-depend.pl takes care of this
case by looking up the original file in the dependencies and restoring
the directory information from it.
Reviewed-by: Ben Laurie <ben@openssl.org>
Diffstat (limited to 'util')
-rwxr-xr-x | util/clean-depend.pl | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/util/clean-depend.pl b/util/clean-depend.pl index 04d86b6d09..30197b798d 100755 --- a/util/clean-depend.pl +++ b/util/clean-depend.pl @@ -11,22 +11,40 @@ while(<STDIN>) { my %files; +# Fetch all the dependency output first my $thisfile=""; while(<STDIN>) { my ($dummy, $file,$deps)=/^((.*):)? (.*)$/; - my $origfile=""; $thisfile=$file if defined $file; next if !defined $deps; - $origfile=$thisfile; - $origfile=~s/\.o$/.c/; my @deps=split ' ',$deps; - @deps=grep(!/^\//,@deps); @deps=grep(!/^\\$/,@deps); - @deps=grep(!/^$origfile$/,@deps); push @{$files{$thisfile}},@deps; } my $file; + +# Time to clean out possible system directories and normalise quirks +# from different makedepend methods +foreach $file (sort keys %files) { + # This gets around a quirk with gcc, which removes all directory + # information from the original file + my $tmpfile=$file; + $tmpfile=~s/\.o$/.c/; + (my $origfile)=grep(/(^|\/)${tmpfile}$/,@{$files{$file}}); + my $newfile=$origfile; + $newfile=~s/\.c$/.o/; + if ($newfile ne $file) { + $files{$newfile} = $files{$file}; + delete $files{$file}; + $file = $newfile; + } + + @{$files{$file}} = + grep(!/^\//, + grep(!/^$origfile$/, @{$files{$file}})); +} + foreach $file (sort keys %files) { my $len=0; my $dep; |