diff options
author | calamity@chromium.org <calamity@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-25 04:49:10 +0000 |
---|---|---|
committer | calamity@chromium.org <calamity@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-25 04:49:10 +0000 |
commit | c6abf2bc3de64efa474d4c1c41fa80d258ee7f2b (patch) | |
tree | 94cca7a63c25323092f61ebc6c19dda4dd00c55d /tools/json_schema_compiler | |
parent | ad80eefefc04c2d41687984c92614066df34ee02 (diff) | |
download | chromium_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-x | tools/json_schema_compiler/compiler.py | 2 | ||||
-rw-r--r-- | tools/json_schema_compiler/schema_bundle_generator.py | 18 |
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: |