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     #
     22     # Functions and namespaces can be excluded by setting "nocompile" to true.
     23     'api_gen_dir': '<(DEPTH)/tools/json_schema_compiler',
     24     'api_gen': '<(api_gen_dir)/compiler.py',
     25     'schema_include_rules': [],
     26   },
     27   'rules': [
     28     {
     29       # GN version: json_schema_api.gni
     30       'rule_name': 'genapi',
     31       'msvs_external_rule': 1,
     32       'extension': 'json',
     33       'inputs': [
     34         '<(api_gen_dir)/cc_generator.py',
     35         '<(api_gen_dir)/code.py',
     36         '<(api_gen_dir)/compiler.py',
     37         '<(api_gen_dir)/cpp_generator.py',
     38         '<(api_gen_dir)/cpp_type_generator.py',
     39         '<(api_gen_dir)/cpp_util.py',
     40         '<(api_gen_dir)/h_generator.py',
     41         '<(api_gen_dir)/json_schema.py',
     42         '<(api_gen_dir)/model.py',
     43         '<(api_gen_dir)/util.cc',
     44         '<(api_gen_dir)/util.h',
     45         '<(api_gen_dir)/util_cc_helper.py',
     46         # TODO(calamity): uncomment this when gyp on windows behaves like other
     47         # platforms. List expansions of filepaths in inputs expand to different
     48         # things.
     49         # '<@(schema_files)',
     50       ],
     51       'outputs': [
     52         '<(SHARED_INTERMEDIATE_DIR)/<(cc_dir)/<(RULE_INPUT_DIRNAME)/<(RULE_INPUT_ROOT).cc',
     53         '<(SHARED_INTERMEDIATE_DIR)/<(cc_dir)/<(RULE_INPUT_DIRNAME)/<(RULE_INPUT_ROOT).h',
     54       ],
     55       'action': [
     56         'python',
     57         '<(api_gen)',
     58         '<(RULE_INPUT_PATH)',
     59         '--root=<(DEPTH)',
     60         '--destdir=<(SHARED_INTERMEDIATE_DIR)',
     61         '--namespace=<(root_namespace)',
     62         '--generator=cpp',
     63         '--include-rules=<(schema_include_rules)'
     64       ],
     65       'message': 'Generating C++ code from <(RULE_INPUT_PATH) json files',
     66       'process_outputs_as_sources': 1,
     67     },
     68     {
     69       'rule_name': 'genapi_idl',
     70       'msvs_external_rule': 1,
     71       'extension': 'idl',
     72       'inputs': [
     73         '<(api_gen_dir)/cc_generator.py',
     74         '<(api_gen_dir)/code.py',
     75         '<(api_gen_dir)/compiler.py',
     76         '<(api_gen_dir)/cpp_generator.py',
     77         '<(api_gen_dir)/cpp_type_generator.py',
     78         '<(api_gen_dir)/cpp_util.py',
     79         '<(api_gen_dir)/h_generator.py',
     80         '<(api_gen_dir)/idl_schema.py',
     81         '<(api_gen_dir)/model.py',
     82         '<(api_gen_dir)/util.cc',
     83         '<(api_gen_dir)/util.h',
     84         '<(api_gen_dir)/util_cc_helper.py',
     85         # TODO(calamity): uncomment this when gyp on windows behaves like other
     86         # platforms. List expansions of filepaths in inputs expand to different
     87         # things.
     88         # '<@(schema_files)',
     89       ],
     90       'outputs': [
     91         '<(SHARED_INTERMEDIATE_DIR)/<(cc_dir)/<(RULE_INPUT_DIRNAME)/<(RULE_INPUT_ROOT).cc',
     92         '<(SHARED_INTERMEDIATE_DIR)/<(cc_dir)/<(RULE_INPUT_DIRNAME)/<(RULE_INPUT_ROOT).h',
     93       ],
     94       'action': [
     95         'python',
     96         '<(api_gen)',
     97         '<(RULE_INPUT_PATH)',
     98         '--root=<(DEPTH)',
     99         '--destdir=<(SHARED_INTERMEDIATE_DIR)',
    100         '--namespace=<(root_namespace)',
    101         '--generator=cpp',
    102         '--include-rules=<(schema_include_rules)'
    103       ],
    104       'message': 'Generating C++ code from <(RULE_INPUT_PATH) IDL files',
    105       'process_outputs_as_sources': 1,
    106     },
    107   ],
    108   'include_dirs': [
    109     '<(SHARED_INTERMEDIATE_DIR)',
    110     '<(DEPTH)',
    111   ],
    112   'dependencies':[
    113     '<(DEPTH)/tools/json_schema_compiler/api_gen_util.gyp:api_gen_util',
    114   ],
    115   'direct_dependent_settings': {
    116     'include_dirs': [
    117       '<(SHARED_INTERMEDIATE_DIR)',
    118     ]
    119   },
    120   # This target exports a hard dependency because it generates header
    121   # files.
    122   'hard_dependency': 1,
    123 }
    124