1 #!/usr/bin/env python 2 # 3 # Copyright 2013 The Chromium Authors. All rights reserved. 4 # Use of this source code is governed by a BSD-style license that can be 5 # found in the LICENSE file. 6 7 """Writes .h file for NativeLibraries.template 8 9 This header should contain the list of native libraries to load in the form: 10 = { "lib1", "lib2" } 11 """ 12 13 import json 14 import optparse 15 import os 16 import sys 17 18 from util import build_utils 19 20 21 def main(argv): 22 parser = optparse.OptionParser() 23 24 parser.add_option('--output', help='Path to generated .java file') 25 parser.add_option('--ordered-libraries', 26 help='Path to json file containing list of ordered libraries') 27 parser.add_option('--stamp', help='Path to touch on success') 28 29 # args should be the list of libraries in dependency order. 30 options, _ = parser.parse_args() 31 32 build_utils.MakeDirectory(os.path.dirname(options.output)) 33 34 with open(options.ordered_libraries, 'r') as libfile: 35 libraries = json.load(libfile) 36 # Generates string of the form '= { "base", "net", 37 # "content_shell_content_view" }' from a list of the form ["libbase.so", 38 # libnet.so", "libcontent_shell_content_view.so"] 39 libraries = ['"' + lib[3:-3] + '"' for lib in libraries] 40 array = '= { ' + ', '.join(libraries) + '}'; 41 42 with open(options.output, 'w') as header: 43 header.write(array) 44 45 if options.stamp: 46 build_utils.Touch(options.stamp) 47 48 49 if __name__ == '__main__': 50 sys.exit(main(sys.argv)) 51