diff options
Diffstat (limited to 'Build/source/mswin32/fix-depend.pl')
-rw-r--r-- | Build/source/mswin32/fix-depend.pl | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/Build/source/mswin32/fix-depend.pl b/Build/source/mswin32/fix-depend.pl new file mode 100644 index 00000000000..a57a16e76f5 --- /dev/null +++ b/Build/source/mswin32/fix-depend.pl @@ -0,0 +1,66 @@ +# +# Split makedepend generated lines +# to get at most one dependency per line +# to facilitate diffs +# +my $line; +my $depline; +my $target; +my @dep; +my %dependencies; +my @preamble; +my @postamble; +my @unmatched; + +while (<>) { + chomp; + $line = $_; + if ($line =~ m/^#/) { + if (keys %dependencies) { + push @postamble, $line; + } + else { + push @preamble, $line; + } + break; + } + elsif ($line =~ m/^([^\s].*):\s+(.*)$/) { + # new dependency + $target = $1; + push @{$dependencies{$target}}, $2; + break; + } + elsif ($line =~ m/^\s+(.*)\s+\\$/) { + # continuation + push @{$dependencies{$target}}, $1; + break; + } + elsif ($line =~ m/^\s+(.*)$/) { + # final + push @{$dependencies{$target}}, $1; + break; + } + else { + if ($line =~ m/[^\s]/) { + push @unmatched, $line; + } + } + +} + +END { + map { print "$_\n"; } @preamble; + map { + print "$_: \\\n"; + $depline = join (" ", @{$dependencies{$_}}); + my @dep = split("[ \t]", $depline); + @dep = grep { $_ !~ m/^(\s*|\s*\\)$/ } @dep; + $depline = join " \\\n\t", @dep; + $depline = "\t" . $depline . "\n"; + print $depline; + # skip one line + print "\n"; + } (keys %dependencies); + map { print "$_\n"; } @postamble; + map { print STDERR "unmatched: $_\n"; } @unmatched; +} |