Work on Windows GN component build.
[chromium-blink-merge.git] / build / json_schema_compile.gypi
blob6e5727a6ba4b4491d3303dba67233b0919d8fc8b
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.
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,