• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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: //extensions/generated_extensions_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