Home | History | Annotate | Download | only in gyp
      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