-rwxr-xr-x | scripts/deps.pl | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/scripts/deps.pl b/scripts/deps.pl new file mode 100755 index 0000000..56c4e77 --- a/dev/null +++ b/scripts/deps.pl | |||
@@ -0,0 +1,73 @@ | |||
1 | #!/usr/bin/perl -w | ||
2 | |||
3 | use strict; | ||
4 | |||
5 | my %depends; | ||
6 | my %tokenpath; | ||
7 | |||
8 | sub getdepends ($$) | ||
9 | { | ||
10 | my ($token, $path, $intoken); | ||
11 | $token = shift || return; | ||
12 | $token =~ s/CONFIG_//; | ||
13 | $path = shift || return; | ||
14 | #print "opening $path/config.in\n"; | ||
15 | #print "token is $token\n"; | ||
16 | open( FILE, "< $path/config.in" ) || return; | ||
17 | $intoken = 0; | ||
18 | while( <FILE> ) { | ||
19 | if( $intoken == 1 ) { | ||
20 | /depends\S*(.*)/ && return $1; | ||
21 | if( /\S*(config|menu)/ ) { | ||
22 | $intoken = 0; | ||
23 | return; | ||
24 | } | ||
25 | } else { | ||
26 | /$token/ || next; | ||
27 | $intoken = 1; | ||
28 | } | ||
29 | /$token/ || next; | ||
30 | } | ||
31 | close( FILE ); | ||
32 | return; | ||
33 | } | ||
34 | |||
35 | sub makedepends ($$) | ||
36 | { | ||
37 | my ($depends, $tokenpath, $token, $depword, $mustbesep, $state); | ||
38 | $depends = shift || return; | ||
39 | $tokenpath = shift || return; | ||
40 | $mustbesep = 0; | ||
41 | |||
42 | for $token (keys %$depends){ | ||
43 | print ${$tokenpath}{$token} . " : "; | ||
44 | for (split(/\s+/, ${$depends}{$token})){ | ||
45 | /^\s+$/ && next; | ||
46 | /\&\&/ && next; | ||
47 | /\|\|/ && next; | ||
48 | /^$/ && next; | ||
49 | if(defined(${$tokenpath}{"CONFIG_" . $_})){ | ||
50 | print '$(if $(CONFIG_' . $_ . '),' . ${$tokenpath}{"CONFIG_" . $_} . ') '; | ||
51 | } else { | ||
52 | print STDERR "ERROR in dependency generation, unable to locate path for token CONFIG_$_\n"; | ||
53 | } | ||
54 | } | ||
55 | print "\n"; | ||
56 | } | ||
57 | } | ||
58 | |||
59 | while( <> ) { | ||
60 | my $dep; | ||
61 | my ($token, $path, $pro); | ||
62 | chomp; | ||
63 | s/^\s*//g; | ||
64 | s/\s*$//g; | ||
65 | ($token, $path, $pro) = split(/\s+/,$_); | ||
66 | $tokenpath{$token} = $path; | ||
67 | $dep = getdepends($token, $path); | ||
68 | if( $dep ) { | ||
69 | $depends{$token} = $dep; | ||
70 | } | ||
71 | } | ||
72 | |||
73 | makedepends(\%depends, \%tokenpath); | ||