- 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,
     },
   ],