Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """Fixup GCC-generated dependency files. | 6 """Fixup GCC-generated dependency files. |
| 7 | 7 |
| 8 Modify GCC generated dependency files so they are more suitable for including | 8 Modify GCC generated dependency files so they are more suitable for including |
| 9 in a GNU Makefile. Without the fixups, deleting or renaming headers can cause | 9 in a GNU Makefile. Without the fixups, deleting or renaming headers can cause |
| 10 the build to be broken. | 10 the build to be broken. |
| 11 | 11 |
| 12 See http://mad-scientist.net/make/autodep.html for more details of the problem. | 12 See http://mad-scientist.net/make/autodep.html for more details of the problem. |
| 13 """ | 13 """ |
| 14 | 14 |
| 15 import os | 15 import os |
| 16 import optparse | 16 import argparse |
|
binji
2014/11/13 23:57:03
sort
| |
| 17 import sys | 17 import sys |
| 18 | 18 |
| 19 TAG_LINE = '# Updated by fix_deps.py\n' | 19 TAG_LINE = '# Updated by fix_deps.py\n' |
| 20 | 20 |
| 21 | 21 |
| 22 class Error(Exception): | 22 class Error(Exception): |
| 23 pass | 23 pass |
| 24 | 24 |
| 25 | 25 |
| 26 def ParseLine(line, new_target): | 26 def ParseLine(line, new_target): |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 75 # For every depenency found output a dummy target with no rules | 75 # For every depenency found output a dummy target with no rules |
| 76 for dep in deps: | 76 for dep in deps: |
| 77 outlines.append('%s:\n' % dep) | 77 outlines.append('%s:\n' % dep) |
| 78 | 78 |
| 79 with open(output_filename, 'w') as outfile: | 79 with open(output_filename, 'w') as outfile: |
| 80 for line in outlines: | 80 for line in outlines: |
| 81 outfile.write(line) | 81 outfile.write(line) |
| 82 | 82 |
| 83 | 83 |
| 84 def main(argv): | 84 def main(argv): |
| 85 usage = "usage: %prog [options] <dep_file>" | 85 parser = argparse.ArgumentParser(description=__doc__) |
| 86 parser = optparse.OptionParser(usage=usage, description=__doc__) | 86 parser.add_argument('-o', '--output', help='Output filename (defaults to ' |
| 87 parser.add_option('-o', '--output', help='Output filename (defaults to ' | |
| 88 'input name with .deps extension') | 87 'input name with .deps extension') |
| 89 parser.add_option('-c', '--clean', action='store_true', | 88 parser.add_argument('-c', '--clean', action='store_true', |
| 90 help='Remove input file after writing output') | 89 help='Remove input file after writing output') |
| 91 options, args = parser.parse_args(argv) | 90 parser.add_argument('dep_file') |
| 92 if not args: | 91 options = parser.parse_args(argv) |
| 93 raise parser.error('No input file specified') | |
| 94 if len(args) > 1: | |
| 95 raise parser.error('Only one argument supported') | |
| 96 input_filename = args[0] | |
| 97 output_filename = options.output | 92 output_filename = options.output |
| 98 if not output_filename: | 93 if not output_filename: |
| 99 output_filename = os.path.splitext(input_filename)[0] + '.deps' | 94 output_filename = os.path.splitext(options.dep_file)[0] + '.deps' |
| 100 FixupDepFile(input_filename, output_filename) | 95 FixupDepFile(options.dep_file, output_filename) |
| 101 if options.clean and input_filename != output_filename: | 96 if options.clean and options.dep_file != output_filename: |
| 102 os.remove(input_filename) | 97 os.remove(options.dep_file) |
| 98 | |
| 99 return 0 | |
| 103 | 100 |
| 104 | 101 |
| 105 if __name__ == '__main__': | 102 if __name__ == '__main__': |
| 106 try: | 103 try: |
| 107 sys.exit(main(sys.argv[1:])) | 104 sys.exit(main(sys.argv[1:])) |
| 108 except Error as e: | 105 except Error as e: |
| 109 sys.stderr.write('%s: %s\n' % (os.path.basename(__file__), e)) | 106 sys.stderr.write('%s: %s\n' % (os.path.basename(__file__), e)) |
| 110 sys.exit(1) | 107 sys.exit(1) |
| OLD | NEW |