Roll src/third_party/WebKit 56db356:7227c61 (svn 201871:201874)
[chromium-blink-merge.git] / build / json_schema_bundle_registration_compile.gypi
blobead8d48aae26bfc1225da09b7ec624e68204b2ef
1 # Copyright 2014 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     #   impl_dir_:
11     #     The root path of API implementations; also used for the
12     #     output location. (N.B. Named as such to prevent gyp from
13     #     expanding it as a relative path.)
14     #   root_namespace:
15     #     A Python string substituion pattern used to generate the C++
16     #     namespace for each API. Use %(namespace)s to replace with the API
17     #     namespace, like "toplevel::%(namespace)s_api".
18     #   bundle_name:
19     #     A string to prepend to generated bundle class names, so that multiple
20     #     bundle rules can be used without conflicting.  Only used with one of
21     #     the cpp-bundle generators.
22     #
23     # Functions and namespaces can be excluded by setting "nocompile" to true.
24     'api_gen_dir': '<(DEPTH)/tools/json_schema_compiler',
25     'api_gen': '<(api_gen_dir)/compiler.py',
26     'generator_files': [
27       '<(api_gen_dir)/cc_generator.py',
28       '<(api_gen_dir)/code.py',
29       '<(api_gen_dir)/compiler.py',
30       '<(api_gen_dir)/cpp_bundle_generator.py',
31       '<(api_gen_dir)/cpp_type_generator.py',
32       '<(api_gen_dir)/cpp_util.py',
33       '<(api_gen_dir)/h_generator.py',
34       '<(api_gen_dir)/idl_schema.py',
35       '<(api_gen_dir)/json_schema.py',
36       '<(api_gen_dir)/model.py',
37       '<(api_gen_dir)/util_cc_helper.py',
38     ],
39   },
40   'actions': [
41     {
42       # GN version: json_schema_api.gni
43       'action_name': 'genapi_bundle_registration',
44       'inputs': [
45         '<@(generator_files)',
46         '<@(schema_files)',
47         '<@(non_compiled_schema_files)',
48       ],
49       'outputs': [
50         '<(SHARED_INTERMEDIATE_DIR)/<(impl_dir_)/generated_api_registration.h',
51         '<(SHARED_INTERMEDIATE_DIR)/<(impl_dir_)/generated_api_registration.cc',
52       ],
53       'action': [
54         'python',
55         '<(api_gen)',
56         '--root=<(DEPTH)',
57         '--destdir=<(SHARED_INTERMEDIATE_DIR)',
58         '--namespace=<(root_namespace)',
59         '--bundle-name=<(bundle_name)',
60         '--generator=cpp-bundle-registration',
61         '--impl-dir=<(impl_dir_)',
62         '<@(schema_files)',
63         '<@(non_compiled_schema_files)',
64       ],
65       'message': 'Generating C++ API bundle code for function registration',
66       'process_outputs_as_sources': 1,
67       # Avoid running MIDL compiler on IDL input files.
68       'explicit_idl_action': 1,
69     },
70   ],
71   'include_dirs': [
72     '<(SHARED_INTERMEDIATE_DIR)',
73     '<(DEPTH)',
74   ],
75   'direct_dependent_settings': {
76     'include_dirs': [
77       '<(SHARED_INTERMEDIATE_DIR)',
78     ]
79   },
80   # This target exports a hard dependency because it generates header
81   # files.
82   'hard_dependency': 1,