Home | History | Annotate | Download | only in build
      1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 {
      6   'variables': {
      7     # When including this gypi, the following variables must be set:
      8     #   schema_files:
      9     #     An array of json or idl files that comprise the api model.
     10     #   schema_include_rules (optional):
     11     #     An array of paths to include when searching for referenced objects,
     12     #     with the namespace separated by a :.
     13     #     Example:
     14     #       [ '/foo/bar:Foo::Bar::%(namespace)s' ]
     15     #   cc_dir:
     16     #     The directory to put the generated code in.
     17     #   root_namespace:
     18     #     A Python string substituion pattern used to generate the C++
     19     #     namespace for each API. Use %(namespace)s to replace with the API
     20     #     namespace, like "toplevel::%(namespace)s_api".
     21     #   bundle_name:
     22     #     A string to prepend to generated bundle class names, so that multiple
     23     #     bundle rules can be used without conflicting.  Only used with one of
     24     #     the cpp-bundle generators.
     25     #
     26     # Functions and namespaces can be excluded by setting "nocompile" to true.
     27     # The default root path of API implementation sources is
     28     # chrome/browser/extensions/api and can be overridden by setting "impl_dir".
     29     'api_gen_dir': '<(DEPTH)/tools/json_schema_compiler',
     30     'api_gen': '<(api_gen_dir)/compiler.py',
     31     'generator_files': [
     32       '<(api_gen_dir)/cc_generator.py',
     33       '<(api_gen_dir)/code.py',
     34       '<(api_gen_dir)/compiler.py',
     35       '<(api_gen_dir)/cpp_bundle_generator.py',
     36       '<(api_gen_dir)/cpp_type_generator.py',
     37       '<(api_gen_dir)/cpp_util.py',
     38       '<(api_gen_dir)/h_generator.py',
     39       '<(api_gen_dir)/idl_schema.py',
     40       '<(api_gen_dir)/json_schema.py',
     41       '<(api_gen_dir)/model.py',
     42       '<(api_gen_dir)/util_cc_helper.py',
     43     ],
     44     'schema_include_rules': [],
     45   },
     46   'actions': [
     47     {
     48       'action_name': 'genapi_bundle_schema',
     49       'inputs': [
     50         '<@(generator_files)',
     51         '<@(schema_files)',
     52         '<@(non_compiled_schema_files)',
     53       ],
     54       'outputs': [
     55         '<(SHARED_INTERMEDIATE_DIR)/<(cc_dir)/generated_schemas.h',
     56         '<(SHARED_INTERMEDIATE_DIR)/<(cc_dir)/generated_schemas.cc',
     57       ],
     58       'action': [
     59         'python',
     60         '<(api_gen)',
     61         '--root=<(DEPTH)',
     62         '--destdir=<(SHARED_INTERMEDIATE_DIR)',
     63         '--namespace=<(root_namespace)',
     64         '--bundle-name=<(bundle_name)',
     65         '--generator=cpp-bundle-schema',
     66         '--include-rules=<(schema_include_rules)',
     67         '<@(schema_files)',
     68         '<@(non_compiled_schema_files)',
     69       ],
     70       'message': 'Generating C++ API bundle code for schemas',
     71       'process_outputs_as_sources': 1,
     72       # Avoid running MIDL compiler on IDL input files.
     73       'explicit_idl_action': 1,
     74     },
     75   ],
     76   'include_dirs': [
     77     '<(SHARED_INTERMEDIATE_DIR)',
     78     '<(DEPTH)',
     79   ],
     80   'direct_dependent_settings': {
     81     'include_dirs': [
     82       '<(SHARED_INTERMEDIATE_DIR)',
     83     ]
     84   },
     85   # This target exports a hard dependency because it generates header
     86   # files.
     87   'hard_dependency': 1,
     88 }
     89