| Index: native_client_sdk/src/build_tools/dsc_info.py
|
| diff --git a/native_client_sdk/src/build_tools/dsc_info.py b/native_client_sdk/src/build_tools/dsc_info.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..e5bb048747f5909b70ec3cb10649529f7f4f0fbb
|
| --- /dev/null
|
| +++ b/native_client_sdk/src/build_tools/dsc_info.py
|
| @@ -0,0 +1,65 @@
|
| +#!/usr/bin/env python
|
| +# Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +"""Extracts information from a library.dsc file."""
|
| +
|
| +import optparse
|
| +import os
|
| +import sys
|
| +
|
| +import parse_dsc
|
| +
|
| +def Error(msg):
|
| + print >> sys.stderr, 'dsc_info: %s' % msg
|
| + sys.exit(1)
|
| +
|
| +
|
| +def FindTarget(tree, target_name):
|
| + targets = tree['TARGETS']
|
| + for target in targets:
|
| + if target['NAME'] == target_name:
|
| + return target
|
| + Error('Target %s not found' % target_name)
|
| +
|
| +
|
| +def GetSources(lib_dir, tree, target_name):
|
| + result = []
|
| + target = FindTarget(tree, target_name)
|
| + for filename in target['SOURCES']:
|
| + result.append('/'.join([lib_dir, filename]))
|
| + return result
|
| +
|
| +
|
| +def DoMain(argv):
|
| + "Entry point for gyp's pymod_do_main command."
|
| + parser = optparse.OptionParser(usage='%prog: [OPTIONS] TARGET')
|
| + # Give a clearer error message when this is used as a module.
|
| + parser.prog = 'dsc_info'
|
| + parser.add_option('-s', '--sources',
|
| + help='Print a list of source files for the target',
|
| + action='store_true', default=False)
|
| + parser.add_option('-l', '--libdir',
|
| + help='Directory where the library.dsc file is located',
|
| + metavar='DIR')
|
| + options, args = parser.parse_args(argv)
|
| + if len(args) != 1:
|
| + parser.error('Expecting exactly one argument.')
|
| + target = args[0]
|
| + libdir = options.libdir or ''
|
| + tree = parse_dsc.LoadProject(os.path.join(libdir, 'library.dsc'))
|
| + if options.sources:
|
| + return '\n'.join(GetSources(libdir, tree, target))
|
| + parser.error('No action specified')
|
| +
|
| +
|
| +def main(argv):
|
| + print DoMain(argv[1:])
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + try:
|
| + sys.exit(main(sys.argv))
|
| + except KeyboardInterrupt:
|
| + Error('interrupted')
|
|
|