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 import optparse
      8 import os
      9 import subprocess
     10 import sys
     11 
     12 from util import build_utils
     13 
     14 def DoGcc(options):
     15   build_utils.MakeDirectory(os.path.dirname(options.output))
     16 
     17   gcc_cmd = [ 'gcc' ]  # invoke host gcc.
     18   if options.defines:
     19     gcc_cmd.extend(sum(map(lambda w: ['-D', w], options.defines), []))
     20   gcc_cmd.extend([
     21       '-E',                  # stop after preprocessing.
     22       '-D', 'ANDROID',       # Specify ANDROID define for pre-processor.
     23       '-x', 'c-header',      # treat sources as C header files
     24       '-P',                  # disable line markers, i.e. '#line 309'
     25       '-I', options.include_path,
     26       '-o', options.output,
     27       options.template
     28       ])
     29 
     30   build_utils.CheckOutput(gcc_cmd)
     31 
     32 
     33 def main(argv):
     34   parser = optparse.OptionParser()
     35   parser.add_option('--include-path', help='Include path for gcc.')
     36   parser.add_option('--template', help='Path to template.')
     37   parser.add_option('--output', help='Path for generated file.')
     38   parser.add_option('--stamp', help='Path to touch on success.')
     39   parser.add_option('--defines', help='Pre-defines macros', action='append')
     40 
     41   # TODO(newt): remove this once http://crbug.com/177552 is fixed in ninja.
     42   parser.add_option('--ignore', help='Ignored.')
     43 
     44   options, _ = parser.parse_args()
     45 
     46   DoGcc(options)
     47 
     48   if options.stamp:
     49     build_utils.Touch(options.stamp)
     50 
     51 
     52 if __name__ == '__main__':
     53   sys.exit(main(sys.argv))
     54