155714Skris#!/usr/local/bin/perl -w
255714Skris# Clean the dependency list in a makefile of standard includes...
355714Skris# Written by Ben Laurie <ben@algroup.co.uk> 19 Jan 1999
455714Skris
555714Skrisuse strict;
655714Skris
755714Skriswhile(<STDIN>) {
855714Skris    print;
955714Skris    last if /^# DO NOT DELETE THIS LINE/;
1055714Skris}
1155714Skris
1255714Skrismy %files;
1355714Skris
14109998Smarkmmy $thisfile="";
1555714Skriswhile(<STDIN>) {
16109998Smarkm    my ($dummy, $file,$deps)=/^((.*):)? (.*)$/;
17109998Smarkm    my $origfile="";
18109998Smarkm    $thisfile=$file if defined $file;
1955714Skris    next if !defined $deps;
20109998Smarkm    $origfile=$thisfile;
21109998Smarkm    $origfile=~s/\.o$/.c/;
2255714Skris    my @deps=split ' ',$deps;
2376866Skris    @deps=grep(!/^\//,@deps);
2476866Skris    @deps=grep(!/^\\$/,@deps);
25109998Smarkm    @deps=grep(!/^$origfile$/,@deps);
26109998Smarkm# pull out the kludged kerberos header (if present).
27109998Smarkm    @deps=grep(!/^[.\/]+\/krb5.h/,@deps);
28109998Smarkm    push @{$files{$thisfile}},@deps;
2955714Skris}
3055714Skris
3155714Skrismy $file;
3255714Skrisforeach $file (sort keys %files) {
3355714Skris    my $len=0;
3455714Skris    my $dep;
35109998Smarkm    my $origfile=$file;
36109998Smarkm    $origfile=~s/\.o$/.c/;
37109998Smarkm    $file=~s/^\.\///;
38109998Smarkm    push @{$files{$file}},$origfile;
39109998Smarkm    my $prevdep="";
40194206Ssimon
41194206Ssimon    # Remove leading ./ before sorting
42194206Ssimon    my @deps = map { $_ =~ s/^\.\///; $_ } @{$files{$file}};
43194206Ssimon
44194206Ssimon    foreach $dep (sort @deps) {
45238405Sjkim	$dep=~s/^\.\///;
46109998Smarkm	next if $prevdep eq $dep; # to exterminate duplicates...
47109998Smarkm	$prevdep = $dep;
4855714Skris	$len=0 if $len+length($dep)+1 >= 80;
4955714Skris	if($len == 0) {
5055714Skris	    print "\n$file:";
5155714Skris	    $len=length($file)+1;
5255714Skris	}
5355714Skris	print " $dep";
5455714Skris	$len+=length($dep)+1;
5555714Skris    }
5655714Skris}
5755714Skris
5855714Skrisprint "\n";
59