- Extend compiler.py to recognize .idl files.
- Extend .gyp to pass certain .idl files to compiler.py.
- Implement a translator taking IDL parser output and creating
a schema that the JSON compiler recognizes.
- Convert one API to IDL using asargent's JSON cat JSON-to-IDL
converter, and adapt API's implementation to use the newly generated
output.
TEST=no changes
BUG=none
Review URL: http://codereview.chromium.org/9600050
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@125300 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/build/json_schema_compile.gypi b/build/json_schema_compile.gypi
index 3abecf3e..b44fe91 100644
--- a/build/json_schema_compile.gypi
+++ b/build/json_schema_compile.gypi
@@ -23,9 +23,10 @@
'<(api_gen_dir)/cc_generator.py',
'<(api_gen_dir)/code.py',
'<(api_gen_dir)/compiler.py',
- '<(api_gen_dir)/cpp_util.py',
'<(api_gen_dir)/cpp_type_generator.py',
+ '<(api_gen_dir)/cpp_util.py',
'<(api_gen_dir)/h_generator.py',
+ '<(api_gen_dir)/json_schema.py',
'<(api_gen_dir)/model.py',
'<(api_gen_dir)/util.cc',
'<(api_gen_dir)/util.h',
@@ -47,7 +48,45 @@
'--destdir=<(SHARED_INTERMEDIATE_DIR)',
'--namespace=<(root_namespace)',
],
- 'message': 'Generating C++ code from <(RULE_INPUT_PATH) jsons',
+ 'message': 'Generating C++ code from <(RULE_INPUT_PATH) json files',
+ 'process_outputs_as_sources': 1,
+ },
+ {
+ 'rule_name': 'genapi_idl',
+ 'extension': 'idl',
+ 'inputs': [
+ '<(api_gen_dir)/any.cc',
+ '<(api_gen_dir)/any.h',
+ '<(api_gen_dir)/any_helper.py',
+ '<(api_gen_dir)/cc_generator.py',
+ '<(api_gen_dir)/code.py',
+ '<(api_gen_dir)/compiler.py',
+ '<(api_gen_dir)/cpp_type_generator.py',
+ '<(api_gen_dir)/cpp_util.py',
+ '<(api_gen_dir)/h_generator.py',
+ '<(api_gen_dir)/idl_schema.py',
+ '<(api_gen_dir)/model.py',
+ '<(api_gen_dir)/util.cc',
+ '<(api_gen_dir)/util.h',
+ '<(api_gen_dir)/util_cc_helper.py',
+ # TODO(calamity): uncomment this when gyp on windows behaves like other
+ # platforms. List expansions of filepaths in inputs expand to different
+ # things.
+ # '<@(json_schema_files)',
+ ],
+ 'outputs': [
+ '<(SHARED_INTERMEDIATE_DIR)/<(cc_dir)/<(RULE_INPUT_ROOT).cc',
+ '<(SHARED_INTERMEDIATE_DIR)/<(cc_dir)/<(RULE_INPUT_ROOT).h',
+ ],
+ 'action': [
+ 'python',
+ '<(api_gen)',
+ '<(RULE_INPUT_PATH)',
+ '--root=<(DEPTH)',
+ '--destdir=<(SHARED_INTERMEDIATE_DIR)',
+ '--namespace=<(root_namespace)',
+ ],
+ 'message': 'Generating C++ code from <(RULE_INPUT_PATH) IDL files',
'process_outputs_as_sources': 1,
},
],