]>
Commit | Line | Data |
---|---|---|
1ca0323e | 1 | #! /usr/bin/env python3 |
de987222 BP |
2 | |
3 | # Copyright (c) 2008, 2011, 2017 Nicira, Inc. | |
4 | # | |
5 | # Licensed under the Apache License, Version 2.0 (the "License"); | |
6 | # you may not use this file except in compliance with the License. | |
7 | # You may obtain a copy of the License at: | |
8 | # | |
9 | # http://www.apache.org/licenses/LICENSE-2.0 | |
10 | # | |
11 | # Unless required by applicable law or agreed to in writing, software | |
12 | # distributed under the License is distributed on an "AS IS" BASIS, | |
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 | # See the License for the specific language governing permissions and | |
15 | # limitations under the License. | |
16 | ||
17 | from build import soutil | |
18 | import sys | |
19 | ||
20 | ||
21 | def sodepends(include_dirs, filenames, dst): | |
22 | ok = True | |
23 | print("# Generated automatically -- do not modify! " | |
24 | "-*- buffer-read-only: t -*-") | |
25 | for toplevel in sorted(filenames): | |
26 | # Skip names that don't end in .in. | |
27 | if not toplevel.endswith('.in'): | |
28 | continue | |
29 | ||
30 | # Open file. | |
31 | fn = soutil.find_file(include_dirs, toplevel) | |
32 | if not fn: | |
33 | ok = False | |
34 | continue | |
35 | try: | |
36 | outer = open(fn) | |
37 | except IOError as e: | |
38 | sys.stderr.write("%s: open: %s\n" % (fn, e.strerror)) | |
39 | ok = False | |
40 | continue | |
41 | ||
42 | dependencies = [] | |
43 | while True: | |
44 | line = outer.readline() | |
45 | if not line: | |
46 | break | |
47 | ||
48 | name = soutil.extract_include_directive(line) | |
49 | if name: | |
50 | if soutil.find_file(include_dirs, name): | |
51 | dependencies.append(name) | |
52 | else: | |
53 | ok = False | |
54 | ||
55 | dst.write("\n%s:" % toplevel[:-3]) | |
56 | for s in [toplevel] + sorted(dependencies): | |
57 | dst.write(' \\\n\t%s' % s) | |
58 | dst.write('\n') | |
59 | for s in [toplevel] + sorted(dependencies): | |
60 | dst.write('%s:\n' % s) | |
61 | return ok | |
62 | ||
63 | ||
64 | if __name__ == '__main__': | |
65 | include_dirs, args = soutil.parse_include_dirs() | |
66 | error = not sodepends(include_dirs, args, sys.stdout) | |
67 | sys.exit(1 if error else 0) |