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