]>
Commit | Line | Data |
---|---|---|
e0edde6f | 1 | # Copyright (c) 2008, 2011 Nicira, Inc. |
6ca37677 BP |
2 | # |
3 | # Licensed under the Apache License, Version 2.0 (the "License"); | |
4 | # you may not use this file except in compliance with the License. | |
5 | # You may obtain a copy of the License at: | |
6 | # | |
7 | # http://www.apache.org/licenses/LICENSE-2.0 | |
8 | # | |
9 | # Unless required by applicable law or agreed to in writing, software | |
10 | # distributed under the License is distributed on an "AS IS" BASIS, | |
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
12 | # See the License for the specific language governing permissions and | |
13 | # limitations under the License. | |
14 | ||
15 | use strict; | |
16 | use warnings; | |
17 | use Getopt::Long; | |
18 | ||
19 | our ($exit_code) = 0; | |
20 | ||
21 | our (@include_dirs); | |
22 | Getopt::Long::Configure ("bundling"); | |
23 | GetOptions("I|include=s" => \@include_dirs) or exit(1); | |
24 | @include_dirs = ('.') if !@include_dirs; | |
25 | ||
26 | sub find_file { | |
27 | my ($name) = @_; | |
28 | foreach my $dir (@include_dirs, '.') { | |
29 | my $file = "$dir/$name"; | |
30 | if (stat($file)) { | |
31 | return $file; | |
32 | } | |
33 | } | |
34 | print STDERR "$name not found in: ", join(' ', @include_dirs), "\n"; | |
35 | $exit_code = 1; | |
36 | return; | |
37 | } | |
38 | ||
39 | print "# Generated automatically -- do not modify! -*- buffer-read-only: t -*-\n"; | |
40 | for my $toplevel (sort(@ARGV)) { | |
41 | # Skip names that don't end in .in. | |
42 | next if $toplevel !~ /\.in$/; | |
43 | ||
44 | # Open file. | |
45 | my ($fn) = find_file($toplevel); | |
46 | next if !defined($fn); | |
47 | if (!open(OUTER, '<', $fn)) { | |
48 | print "$fn: open: $!\n"; | |
49 | $exit_code = 1; | |
50 | next; | |
51 | } | |
52 | ||
53 | my (@dependencies); | |
54 | OUTER: | |
55 | while (<OUTER>) { | |
56 | if (my ($name) = /^\.so (\S+)$/) { | |
57 | push(@dependencies, $name) if find_file($name); | |
58 | } | |
59 | } | |
60 | close(OUTER); | |
61 | ||
62 | my ($output) = $toplevel; | |
63 | $output =~ s/\.in//; | |
64 | ||
65 | print "\n$output:"; | |
66 | print " \\\n\t$_" foreach $toplevel, sort(@dependencies); | |
67 | print "\n"; | |
68 | print "$_:\n" foreach $toplevel, sort(@dependencies); | |
69 | } | |
70 | exit $exit_code; |