]> git.ipfire.org Git - thirdparty/openssl.git/blame - util/clean-depend.pl
Fix memory leak in DSA redo case.
[thirdparty/openssl.git] / util / clean-depend.pl
CommitLineData
8039257d
BL
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;
84cf97af
BL
6use Cwd;
7
8my $path = getcwd();
9$path =~ /([^\/]+)$/;
10$path = $1;
8039257d
BL
11
12while(<STDIN>) {
13 print;
14 last if /^# DO NOT DELETE THIS LINE/;
15}
16
17my %files;
18
46f4d2be 19# Fetch all the dependency output first
87b79c3e 20my $thisfile="";
8039257d 21while(<STDIN>) {
87b79c3e
RL
22 my ($dummy, $file,$deps)=/^((.*):)? (.*)$/;
23 $thisfile=$file if defined $file;
8039257d
BL
24 next if !defined $deps;
25 my @deps=split ' ',$deps;
87b79c3e
RL
26 @deps=grep(!/^\\$/,@deps);
27 push @{$files{$thisfile}},@deps;
8039257d
BL
28}
29
637691e6 30my $file;
46f4d2be
RL
31
32# Time to clean out possible system directories and normalise quirks
33# from different makedepend methods
34foreach $file (sort keys %files) {
35 # This gets around a quirk with gcc, which removes all directory
36 # information from the original file
37 my $tmpfile=$file;
38 $tmpfile=~s/\.o$/.c/;
39 (my $origfile)=grep(/(^|\/)${tmpfile}$/,@{$files{$file}});
40 my $newfile=$origfile;
41 $newfile=~s/\.c$/.o/;
42 if ($newfile ne $file) {
43 $files{$newfile} = $files{$file};
44 delete $files{$file};
45 $file = $newfile;
46 }
47
48 @{$files{$file}} =
49 grep(!/^\//,
50 grep(!/^$origfile$/, @{$files{$file}}));
51}
52
637691e6 53foreach $file (sort keys %files) {
6f935399 54 my $len=0;
637691e6 55 my $dep;
6da980e2
RL
56 my $origfile=$file;
57 $origfile=~s/\.o$/.c/;
3009e9f9 58 $file=~s/^\.\///;
6da980e2 59 push @{$files{$file}},$origfile;
cb40bdaf 60 my $prevdep="";
9311c442
BL
61
62 # Remove leading ./ before sorting
63 my @deps = map { $_ =~ s/^\.\///; $_ } @{$files{$file}};
84cf97af
BL
64 # Remove ../thisdir/
65 @deps = map { $_ =~ s|^../$path/||; $_ } @deps;
9311c442
BL
66
67 foreach $dep (sort @deps) {
3009e9f9 68 $dep=~s/^\.\///;
cb40bdaf
RL
69 next if $prevdep eq $dep; # to exterminate duplicates...
70 $prevdep = $dep;
8039257d
BL
71 $len=0 if $len+length($dep)+1 >= 80;
72 if($len == 0) {
73 print "\n$file:";
74 $len=length($file)+1;
75 }
76 print " $dep";
77 $len+=length($dep)+1;
78 }
79}
80
81print "\n";