summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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: