#!/usr/bin/perl # List files that depend on given file. # Parser copied from target.pl ;) local %dep; $wanted={}; sub parse { my $file; my $makefile=shift (@_); my $target; my $deps; $wanted{$makefile}=1; open $file,$makefile || die "Couldn't open $makefile!\n"; while (<$file>) { chomp; if (m/^include\s+([\w.]+)/) { # print "including $1\n"; &parse($1); } if (m/^([\w.\/-]+):/) { $target = $1; $first = $target unless (defined $first); # print "Found: $1\n"; s/[^:]*:\s*//; $deps=$_; while ($deps =~ m/\\$/) { $deps =~ s/\s*\\$/ /; $deps .= <$file>; chomp $deps; } $dep{$target} = $deps; # print " $target -> $deps\n"; } } close $file; } &parse("Makefile"); foreach $i (@ARGV) { $wanted{$i}=1; } foreach $i (keys %dep) { foreach $j (split /\s+/,$dep{$i}) { if (exists $wanted{$j}) { $because{$i} .= "$j "; } } } foreach $i (keys %because) { print "$i: ",$because{$i},"\n"; }