1#!/usr/local/bin/perl -w 2# Clean the dependency list in a makefile of standard includes... 3# Written by Ben Laurie <ben@algroup.co.uk> 19 Jan 1999 4 5use strict; 6 7while(<STDIN>) { 8 print; 9 last if /^# DO NOT DELETE THIS LINE/; 10} 11 12my %files; 13 14my $thisfile=""; 15while(<STDIN>) { 16 my ($dummy, $file,$deps)=/^((.*):)? (.*)$/; 17 my $origfile=""; 18 $thisfile=$file if defined $file; 19 next if !defined $deps; 20 $origfile=$thisfile; 21 $origfile=~s/\.o$/.c/; 22 my @deps=split ' ',$deps; 23 @deps=grep(!/^\//,@deps); 24 @deps=grep(!/^\\$/,@deps); 25 @deps=grep(!/^$origfile$/,@deps); 26# pull out the kludged kerberos header (if present). 27 @deps=grep(!/^[.\/]+\/krb5.h/,@deps); 28 push @{$files{$thisfile}},@deps; 29} 30 31my $file; 32foreach $file (sort keys %files) { 33 my $len=0; 34 my $dep; 35 my $origfile=$file; 36 $origfile=~s/\.o$/.c/; 37 $file=~s/^\.\///; 38 push @{$files{$file}},$origfile; 39 my $prevdep=""; 40 41 # Remove leading ./ before sorting 42 my @deps = map { $_ =~ s/^\.\///; $_ } @{$files{$file}}; 43 44 foreach $dep (sort @deps) { 45 $dep=~s/^\.\///; 46 next if $prevdep eq $dep; # to exterminate duplicates... 47 $prevdep = $dep; 48 $len=0 if $len+length($dep)+1 >= 80; 49 if($len == 0) { 50 print "\n$file:"; 51 $len=length($file)+1; 52 } 53 print " $dep"; 54 $len+=length($dep)+1; 55 } 56} 57 58print "\n"; 59