summaryrefslogtreecommitdiffstats
path: root/tools/json_schema_compiler
diff options
context:
space:
mode:
authorcalamity@chromium.org <calamity@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-25 04:49:10 +0000
committercalamity@chromium.org <calamity@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-25 04:49:10 +0000
commitc6abf2bc3de64efa474d4c1c41fa80d258ee7f2b (patch)
tree94cca7a63c25323092f61ebc6c19dda4dd00c55d /tools/json_schema_compiler
parentad80eefefc04c2d41687984c92614066df34ee02 (diff)
downloadchromium_src-c6abf2bc3de64efa474d4c1c41fa80d258ee7f2b.zip
chromium_src-c6abf2bc3de64efa474d4c1c41fa80d258ee7f2b.tar.gz
chromium_src-c6abf2bc3de64efa474d4c1c41fa80d258ee7f2b.tar.bz2
IDL generated extensions code only generate foo_api.h when required
BUG=148545 Review URL: https://chromiumcodereview.appspot.com/12035070 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@178751 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools/json_schema_compiler')
-rwxr-xr-xtools/json_schema_compiler/compiler.py2
-rw-r--r--tools/json_schema_compiler/schema_bundle_generator.py18
2 files changed, 14 insertions, 6 deletions
diff --git a/tools/json_schema_compiler/compiler.py b/tools/json_schema_compiler/compiler.py
index a347541..a270756 100755
--- a/tools/json_schema_compiler/compiler.py
+++ b/tools/json_schema_compiler/compiler.py
@@ -153,7 +153,7 @@ def handle_bundle_schema(filenames, dest_dir, root, root_namespace):
referenced_namespace.unix_name)
generator = schema_bundle_generator.SchemaBundleGenerator(
- api_model, api_defs, type_generator)
+ root, api_model, api_defs, type_generator)
api_h_code = generator.GenerateAPIHeader().Render()
schemas_h_code = generator.GenerateSchemasHeader().Render()
schemas_cc_code = generator.GenerateSchemasCC().Render()
diff --git a/tools/json_schema_compiler/schema_bundle_generator.py b/tools/json_schema_compiler/schema_bundle_generator.py
index 37b3bde..e9fb926 100644
--- a/tools/json_schema_compiler/schema_bundle_generator.py
+++ b/tools/json_schema_compiler/schema_bundle_generator.py
@@ -35,7 +35,8 @@ class SchemaBundleGenerator(object):
"""This class contains methods to generate code based on multiple schemas.
"""
- def __init__(self, model, api_defs, cpp_type_generator):
+ def __init__(self, root, model, api_defs, cpp_type_generator):
+ self._root = root;
self._model = model
self._api_defs = api_defs
self._cpp_type_generator = cpp_type_generator
@@ -84,15 +85,22 @@ class SchemaBundleGenerator(object):
c.Append('#include "base/basictypes.h"')
for namespace in self._model.namespaces.values():
- ifdefs = self._GetPlatformIfdefs(namespace)
- if ifdefs is not None:
- c.Append("#if %s" % ifdefs, indent_level=0)
-
namespace_name = namespace.unix_name.replace("experimental_", "")
implementation_header = namespace.compiler_options.get(
"implemented_in",
"chrome/browser/extensions/api/%s/%s_api.h" % (namespace_name,
namespace_name))
+ if not os.path.exists(
+ os.path.join(self._root, os.path.normpath(implementation_header))):
+ if "implemented_in" in namespace.compiler_options:
+ raise ValueError('Header file for namespace "%s" specified in '
+ 'compiler_options not found: %s' %
+ (namespace.unix_name, implementation_header))
+ continue
+ ifdefs = self._GetPlatformIfdefs(namespace)
+ if ifdefs is not None:
+ c.Append("#if %s" % ifdefs, indent_level=0)
+
c.Append('#include "%s"' % implementation_header)
if ifdefs is not None: