diff options
author | Michael Meeks <michael.meeks@novell.com> | 2011-09-05 14:17:40 +0100 |
---|---|---|
committer | Michael Meeks <michael.meeks@novell.com> | 2011-09-05 15:25:10 +0100 |
commit | 66ec27f69123a308926583180a6f45db80e3d427 (patch) | |
tree | 41e43016b59ce65d2b870e72e1d3d52c0f9fe572 /solenv/bin | |
parent | 691a15b36a2e29856bd4daa84b93cd7deefeef90 (diff) |
elide duplicate dummy dependencies as we concatenate them to a library depfile
Diffstat (limited to 'solenv/bin')
-rwxr-xr-x | solenv/bin/concat-deps.pl | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/solenv/bin/concat-deps.pl b/solenv/bin/concat-deps.pl new file mode 100755 index 000000000000..a9788cb0ac3f --- /dev/null +++ b/solenv/bin/concat-deps.pl @@ -0,0 +1,50 @@ +#! /usr/bin/env perl + +# reads a list of dependency files from a file, opens and +# concatenates them, while eliding duplicate nop rules. + +sub read_depfiles($) +{ + my $name = shift; + my $depfh; + my @files; + open ($depfh, $name) || die "Can't open list of dependencies: $name: $!"; + while (<$depfh>) { + push @files, split(/\s+/, $_); + } + close ($depfh); + +# print STDERR "dep files: " . join ("'", @files) . "\n"; + return @files; +} + +my @depfiles = read_depfiles (shift @ARGV); + +my %rules; +print "# concatenated, reduced dependencies generated by solenv/bin/concat-deps.pl\n"; + +for my $fname (@depfiles) { + my $fileh; + + next if ($fname eq ''); + open ($fileh, $fname) || die "Can't open $fname: $!\n"; + + my $last = ''; + while (<$fileh>) { + my $line = $_; + if ($line eq "\n") { + if ($last =~ /^(.*):\s*$/) { + if (defined $rules{$1}) { + $last = ''; + next; + } + $rules{$1} = 1; + } + } + print $last; + $last = $line; + } + print $last; + + close ($fileh); +} |