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	next if $prevdep eq $dep; # to exterminate duplicates...
46	$prevdep = $dep;
47	$len=0 if $len+length($dep)+1 >= 80;
48	if($len == 0) {
49	    print "\n$file:";
50	    $len=length($file)+1;
51	}
52	print " $dep";
53	$len+=length($dep)+1;
54    }
55}
56
57print "\n";
58