]> git.proxmox.com Git - mirror_ovs.git/blob - build-aux/sodepends.pl
nroff: Fix style of names.
[mirror_ovs.git] / build-aux / sodepends.pl
1 # Copyright (c) 2008, 2011 Nicira, Inc.
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;