]> git.proxmox.com Git - mirror_ovs.git/blame - build-aux/sodepends.pl
Global replace of Nicira Networks.
[mirror_ovs.git] / build-aux / sodepends.pl
CommitLineData
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
15use strict;
16use warnings;
17use Getopt::Long;
18
19our ($exit_code) = 0;
20
21our (@include_dirs);
22Getopt::Long::Configure ("bundling");
23GetOptions("I|include=s" => \@include_dirs) or exit(1);
24@include_dirs = ('.') if !@include_dirs;
25
26sub 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
39print "# Generated automatically -- do not modify! -*- buffer-read-only: t -*-\n";
40for 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}
70exit $exit_code;