summaryrefslogtreecommitdiff
path: root/Build/source/mswin32/fix-depend.pl
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/mswin32/fix-depend.pl')
-rw-r--r--Build/source/mswin32/fix-depend.pl66
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;
+}