Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(125)

Unified Diff: Source/bindings/generated_bindings.gyp

Issue 166333002: IDL compiler: switch build to Python compiler (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebased Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/bindings/generated_bindings.gyp
diff --git a/Source/bindings/generated_bindings.gyp b/Source/bindings/generated_bindings.gyp
index 0257164a2938d63fdf5b669888fc2036bdd00145..b75eaa2e762635d82b980cb1a897d7f563bb09fc 100644
--- a/Source/bindings/generated_bindings.gyp
+++ b/Source/bindings/generated_bindings.gyp
@@ -106,24 +106,31 @@
'<(SHARED_INTERMEDIATE_DIR)/ServiceWorkerGlobalScopeConstructors.idl',
],
- 'compiler_module_files': [
- 'scripts/unstable/idl_compiler.py',
- '<(DEPTH)/third_party/ply/lex.py',
- '<(DEPTH)/third_party/ply/yacc.py',
+ # Python source
+ 'jinja_module_files': [
# jinja2/__init__.py contains version string, so sufficient for package
'<(DEPTH)/third_party/jinja2/__init__.py',
'<(DEPTH)/third_party/markupsafe/__init__.py', # jinja2 dep
+ ],
+ 'idl_compiler_files': [
+ 'scripts/unstable/idl_compiler.py',
+ # PLY (Python Lex-Yacc)
+ '<(DEPTH)/third_party/ply/lex.py',
+ '<(DEPTH)/third_party/ply/yacc.py',
+ # Web IDL lexer/parser (base parser)
'<(DEPTH)/tools/idl_parser/idl_lexer.py',
'<(DEPTH)/tools/idl_parser/idl_node.py',
'<(DEPTH)/tools/idl_parser/idl_parser.py',
+ # Blink IDL lexer/parser/constructor
'scripts/unstable/blink_idl_lexer.py',
'scripts/unstable/blink_idl_parser.py',
- 'scripts/unstable/code_generator_v8.py',
'scripts/unstable/idl_definitions.py',
'scripts/unstable/idl_definitions_builder.py',
'scripts/unstable/idl_reader.py',
'scripts/unstable/idl_validator.py',
'scripts/unstable/interface_dependency_resolver.py',
+ # V8 code generator
+ 'scripts/unstable/code_generator_v8.py',
'scripts/unstable/v8_attributes.py',
'scripts/unstable/v8_callback_interface.py',
'scripts/unstable/v8_globals.py',
@@ -132,6 +139,8 @@
'scripts/unstable/v8_types.py',
'scripts/unstable/v8_utilities.py',
],
+
+ # Jinja templates
'code_generator_template_files': [
'templates/attributes.cpp',
'templates/callback_interface.cpp',
@@ -156,16 +165,6 @@
}, {
'write_file_only_if_changed': '--write-file-only-if-changed 0',
}],
- ['OS!="win"', {
- # This fails to import on Windows (running native perl) because of a
- # dependency on JSON::XS (which is a separate module). It's necessary
- # on Mac and CrOS. It's not generally necessary on standard Linux, but
- # depending on what the user has locally it could be. So, don't use on
- # Windows is the simplest solution.
- 'json_perl_module_include_path': '-I<(DEPTH)/third_party/JSON/out/lib/perl5',
- }, {
- 'json_perl_module_include_path': '',
- }],
],
},
@@ -225,6 +224,31 @@
}]
},
{
+ # A separate pre-caching step is *required* to use bytecode caching in
+ # Jinja (which improves speed significantly), as the bytecode cache is
+ # not concurrency-safe on write; details in code_generator_v8.py.
+ 'target_name': 'cached_jinja_templates',
+ 'type': 'none',
+ 'actions': [{
+ 'action_name': 'cache_jinja_templates',
+ 'inputs': [
+ '<@(jinja_module_files)',
+ 'scripts/unstable/code_generator_v8.py',
+ '<@(code_generator_template_files)',
+ ],
+ 'outputs': [
+ '<(bindings_output_dir)/cached_jinja_templates.stamp', # Dummy to track dependency
+ ],
+ 'action': [
+ 'python',
+ 'scripts/unstable/code_generator_v8.py',
+ '<(bindings_output_dir)',
+ '<(bindings_output_dir)/cached_jinja_templates.stamp',
+ ],
+ 'message': 'Caching bytecode of Jinja templates',
+ }],
+ },
+ {
'target_name': 'individual_generated_bindings',
'type': 'none',
# The 'binding' rule generates .h files, so mark as hard_dependency, per:
@@ -232,6 +256,7 @@
'hard_dependency': 1,
'dependencies': [
'interfaces_info',
+ 'cached_jinja_templates',
'../core/core_generated.gyp:generated_testing_idls',
],
'sources': [
@@ -242,17 +267,13 @@
'extension': 'idl',
'msvs_external_rule': 1,
'inputs': [
- 'scripts/generate_bindings.pl',
- 'scripts/code_generator_v8.pm',
- 'scripts/idl_parser.pm',
- 'scripts/idl_serializer.pm',
- '../build/scripts/preprocessor.pm',
+ '<@(idl_compiler_files)',
+ '<(bindings_output_dir)/cached_jinja_templates.stamp',
'IDLExtendedAttributes.txt',
# If the dependency structure or public interface info (e.g.,
# [ImplementedAs]) changes, we rebuild all files, since we're not
# computing dependencies file-by-file in the build.
# This data is generally stable.
- '<(SHARED_INTERMEDIATE_DIR)/blink/InterfaceDependencies.txt',
'<(SHARED_INTERMEDIATE_DIR)/blink/InterfacesInfo.pickle',
# Further, if any dependency (partial interface or implemented
# interface) changes, rebuild everything, since every IDL potentially
@@ -266,36 +287,18 @@
'<(bindings_output_dir)/V8<(RULE_INPUT_ROOT).cpp',
'<(bindings_output_dir)/V8<(RULE_INPUT_ROOT).h',
],
- 'variables': {
- # IDL include paths. The generator will search recursively for IDL
- # files under these locations.
- 'generator_include_dirs': [
- '--include', '../core',
- '--include', '../modules',
- '--include', '<(SHARED_INTERMEDIATE_DIR)/blink',
- ],
- # Hook for embedders to specify extra directories to find IDL files.
- 'extra_blink_generator_include_dirs%': [],
- },
# sanitize-win-build-log.sed uses a regex which matches this command
- # line (Perl script + .idl file being processed).
+ # line (Python script + .idl file being processed).
# Update that regex if command line changes (other than changing flags)
'action': [
- '<(perl_exe)',
- '-w',
- '-Iscripts',
- '-I../build/scripts',
- '<@(json_perl_module_include_path)',
- 'scripts/generate_bindings.pl',
- '--outputDir',
+ 'python',
+ 'scripts/unstable/idl_compiler.py',
+ '--output-dir',
'<(bindings_output_dir)',
- '--idlAttributesFile',
+ '--idl-attributes-file',
'IDLExtendedAttributes.txt',
- '<@(generator_include_dirs)',
- '<@(extra_blink_generator_include_dirs)',
- '--interfaceDependenciesFile',
- '<(SHARED_INTERMEDIATE_DIR)/blink/InterfaceDependencies.txt',
- '<@(preprocessor)',
+ '--interfaces-info',
+ '<(SHARED_INTERMEDIATE_DIR)/blink/InterfacesInfo.pickle',
'<@(write_file_only_if_changed)',
'<(RULE_INPUT_PATH)',
],
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698