| Index: Source/bindings/generated_bindings.gyp
|
| diff --git a/Source/bindings/generated_bindings.gyp b/Source/bindings/generated_bindings.gyp
|
| index 0d5ac4ba2a2bd0fc0a809bc8d7add170c4fc1728..7bcc32f887442593301b9b855a9a16a84bc9345c 100644
|
| --- a/Source/bindings/generated_bindings.gyp
|
| +++ b/Source/bindings/generated_bindings.gyp
|
| @@ -44,7 +44,7 @@
|
| ],
|
|
|
| 'variables': {
|
| - # For details, see: http://www.chromium.org/developers/web-idl-interfaces
|
| + # IDL file lists; see: http://www.chromium.org/developers/web-idl-interfaces
|
| #
|
| # Interface IDL files / Dependency IDL files
|
| # Interface IDL files: generate individual bindings (includes testing)
|
| @@ -64,16 +64,21 @@
|
| '<@(core_idl_files)',
|
| '<@(modules_idl_files)',
|
| ],
|
| + # Write list of main IDL files to a file, so that the command line doesn't
|
| + # exceed OS length limits.
|
| + 'main_interface_idl_files_list': '<|(main_interface_idl_files_list.tmp <@(main_interface_idl_files))',
|
|
|
| # Static IDL files / Generated IDL files
|
| # Paths need to be passed separately for static and generated files, as
|
| # static files are listed in a temporary file (b/c too long for command
|
| - # line), but generated files must be passed at the command line, as they are
|
| - # not present at GYP time, when the temporary file is generated
|
| + # line), but generated files must be passed at the command line, as their
|
| + # paths are not fixed at GYP time, when the temporary file is generated,
|
| + # because their paths depend on the build directory, which varies.
|
| 'static_idl_files': [
|
| '<@(static_interface_idl_files)',
|
| '<@(static_dependency_idl_files)',
|
| ],
|
| + 'static_idl_files_list': '<|(static_idl_files_list.tmp <@(static_idl_files))',
|
| 'generated_idl_files': [
|
| '<@(generated_interface_idl_files)',
|
| '<@(generated_dependency_idl_files)',
|
| @@ -107,6 +112,7 @@
|
| '<(SHARED_INTERMEDIATE_DIR)/ServiceWorkerGlobalScopeConstructors.idl',
|
| ],
|
|
|
| +
|
| # Python source
|
| 'jinja_module_files': [
|
| # jinja2/__init__.py contains version string, so sufficient for package
|
| @@ -152,6 +158,7 @@
|
| 'templates/methods.cpp',
|
| ],
|
|
|
| +
|
| 'bindings_output_dir': '<(SHARED_INTERMEDIATE_DIR)/blink/bindings',
|
|
|
| 'conditions': [
|
| @@ -169,21 +176,18 @@
|
| ],
|
| },
|
|
|
| - 'targets': [{
|
| + 'targets': [
|
| +################################################################################
|
| + {
|
| 'target_name': 'global_constructors_idls',
|
| 'type': 'none',
|
| 'actions': [{
|
| 'action_name': 'generate_global_constructors_idls',
|
| - 'variables': {
|
| - # Write list of IDL files to a file, so that the command line doesn't
|
| - # exceed OS length limits.
|
| - # Only includes main IDL files (exclude dependencies and testing,
|
| - # which should not appear on global objects).
|
| - 'main_interface_idl_files_list': '<|(main_interface_idl_files_list.tmp <@(main_interface_idl_files))',
|
| - },
|
| 'inputs': [
|
| 'scripts/generate_global_constructors.py',
|
| 'scripts/utilities.py',
|
| + # Only includes main IDL files (exclude dependencies and testing,
|
| + # which should not appear on global objects).
|
| '<(main_interface_idl_files_list)',
|
| '<@(main_interface_idl_files)',
|
| ],
|
| @@ -211,26 +215,21 @@
|
| 'message': 'Generating IDL files for constructors on global objects',
|
| }]
|
| },
|
| +################################################################################
|
| {
|
| 'target_name': 'interfaces_info',
|
| 'type': 'none',
|
| 'dependencies': [
|
| + # Generated IDLs
|
| 'global_constructors_idls',
|
| '../core/core_generated.gyp:generated_testing_idls',
|
| ],
|
| 'actions': [{
|
| 'action_name': 'compute_interfaces_info',
|
| - 'variables': {
|
| - # Write list of static IDL files to a file, so that the command line
|
| - # doesn't exceed OS length limits.
|
| - # Generated IDL files cannot be included, as their path depends on the
|
| - # build directory, and must instead be passed as command line arguments.
|
| - 'idl_files_list': '<|(idl_files_list.tmp <@(static_idl_files))',
|
| - },
|
| 'inputs': [
|
| 'scripts/compute_interfaces_info.py',
|
| 'scripts/utilities.py',
|
| - '<(idl_files_list)',
|
| + '<(static_idl_files_list)',
|
| '<@(static_idl_files)',
|
| '<@(generated_idl_files)',
|
| ],
|
| @@ -242,134 +241,137 @@
|
| 'python',
|
| 'scripts/compute_interfaces_info.py',
|
| '--idl-files-list',
|
| - '<(idl_files_list)',
|
| + '<(static_idl_files_list)',
|
| '--interfaces-info-file',
|
| '<(SHARED_INTERMEDIATE_DIR)/blink/InterfacesInfo.pickle',
|
| '--event-names-file',
|
| '<(SHARED_INTERMEDIATE_DIR)/blink/EventInterfaces.in',
|
| '<@(write_file_only_if_changed)',
|
| '--',
|
| + # Generated files must be passed at command line
|
| '<@(generated_idl_files)',
|
| ],
|
| 'message': 'Computing global information about IDL files, and generating list of Event interfaces',
|
| }]
|
| - },
|
| - {
|
| - # 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/code_generator_v8.py',
|
| - '<@(code_generator_template_files)',
|
| - ],
|
| - 'outputs': [
|
| - '<(bindings_output_dir)/cached_jinja_templates.stamp', # Dummy to track dependency
|
| - ],
|
| - 'action': [
|
| - 'python',
|
| - 'scripts/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:
|
| - # https://code.google.com/p/gyp/wiki/InputFormatReference#Linking_Dependencies
|
| - 'hard_dependency': 1,
|
| - 'dependencies': [
|
| - 'interfaces_info',
|
| - 'cached_jinja_templates',
|
| - '../core/core_generated.gyp:generated_testing_idls',
|
| + },
|
| +################################################################################
|
| + {
|
| + # 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/code_generator_v8.py',
|
| + '<@(code_generator_template_files)',
|
| ],
|
| - 'sources': [
|
| - '<@(interface_idl_files)',
|
| + 'outputs': [
|
| + '<(bindings_output_dir)/cached_jinja_templates.stamp', # Dummy to track dependency
|
| ],
|
| - 'rules': [{
|
| - 'rule_name': 'binding',
|
| - 'extension': 'idl',
|
| - 'msvs_external_rule': 1,
|
| - 'inputs': [
|
| - '<@(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/InterfacesInfo.pickle',
|
| - # Further, if any dependency (partial interface or implemented
|
| - # interface) changes, rebuild everything, since every IDL potentially
|
| - # depends on them, because we're not computing dependencies
|
| - # file-by-file.
|
| - # FIXME: This is too conservative, and causes excess rebuilds:
|
| - # compute this file-by-file. http://crbug.com/341748
|
| - '<@(dependency_idl_files)',
|
| - ],
|
| - 'outputs': [
|
| - '<(bindings_output_dir)/V8<(RULE_INPUT_ROOT).cpp',
|
| - '<(bindings_output_dir)/V8<(RULE_INPUT_ROOT).h',
|
| - ],
|
| - # sanitize-win-build-log.sed uses a regex which matches this command
|
| - # line (Python script + .idl file being processed).
|
| - # Update that regex if command line changes (other than changing flags)
|
| - 'action': [
|
| - 'python',
|
| - 'scripts/idl_compiler.py',
|
| - '--output-dir',
|
| - '<(bindings_output_dir)',
|
| - '--idl-attributes-file',
|
| - 'IDLExtendedAttributes.txt',
|
| - '--interfaces-info',
|
| - '<(SHARED_INTERMEDIATE_DIR)/blink/InterfacesInfo.pickle',
|
| - '<@(write_file_only_if_changed)',
|
| - '<(RULE_INPUT_PATH)',
|
| - ],
|
| - 'message': 'Generating binding from <(RULE_INPUT_PATH)',
|
| - }],
|
| - },
|
| - {
|
| - 'target_name': 'aggregate_generated_bindings',
|
| - 'type': 'none',
|
| - 'actions': [{
|
| - 'action_name': 'generate_aggregate_generated_bindings',
|
| - 'variables': {
|
| - # Write list of IDL files to a file, so that the command line doesn't
|
| - # exceed OS length limits.
|
| - 'main_interface_idl_files_list': '<|(main_interface_idl_files_list.tmp <@(main_interface_idl_files))',
|
| - },
|
| - 'inputs': [
|
| - 'scripts/aggregate_generated_bindings.py',
|
| - '<(main_interface_idl_files_list)',
|
| - ],
|
| - 'outputs': [
|
| - '<@(aggregate_generated_bindings_files)',
|
| - ],
|
| - 'action': [
|
| - 'python',
|
| - 'scripts/aggregate_generated_bindings.py',
|
| - '<(main_interface_idl_files_list)',
|
| - '--',
|
| - '<@(aggregate_generated_bindings_files)',
|
| - ],
|
| - 'message': 'Generating aggregate generated bindings files',
|
| - }],
|
| - },
|
| - {
|
| - 'target_name': 'generated_bindings',
|
| - 'type': 'none',
|
| - 'dependencies': [
|
| - 'aggregate_generated_bindings',
|
| - 'individual_generated_bindings',
|
| + 'action': [
|
| + 'python',
|
| + 'scripts/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:
|
| + # https://code.google.com/p/gyp/wiki/InputFormatReference#Linking_Dependencies
|
| + 'hard_dependency': 1,
|
| + 'dependencies': [
|
| + 'interfaces_info',
|
| + 'cached_jinja_templates',
|
| + '../core/core_generated.gyp:generated_testing_idls',
|
| + ],
|
| + 'sources': [
|
| + '<@(interface_idl_files)',
|
| + ],
|
| + 'rules': [{
|
| + 'rule_name': 'binding',
|
| + 'extension': 'idl',
|
| + 'msvs_external_rule': 1,
|
| + 'inputs': [
|
| + '<@(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/InterfacesInfo.pickle',
|
| + # Further, if any dependency (partial interface or implemented
|
| + # interface) changes, rebuild everything, since every IDL potentially
|
| + # depends on them, because we're not computing dependencies
|
| + # file-by-file.
|
| + # FIXME: This is too conservative, and causes excess rebuilds:
|
| + # compute this file-by-file. http://crbug.com/341748
|
| + '<@(dependency_idl_files)',
|
| + ],
|
| + 'outputs': [
|
| + '<(bindings_output_dir)/V8<(RULE_INPUT_ROOT).cpp',
|
| + '<(bindings_output_dir)/V8<(RULE_INPUT_ROOT).h',
|
| + ],
|
| + # sanitize-win-build-log.sed uses a regex which matches this command
|
| + # line (Python script + .idl file being processed).
|
| + # Update that regex if command line changes (other than changing flags)
|
| + 'action': [
|
| + 'python',
|
| + 'scripts/idl_compiler.py',
|
| + '--output-dir',
|
| + '<(bindings_output_dir)',
|
| + '--idl-attributes-file',
|
| + 'IDLExtendedAttributes.txt',
|
| + '--interfaces-info',
|
| + '<(SHARED_INTERMEDIATE_DIR)/blink/InterfacesInfo.pickle',
|
| + '<@(write_file_only_if_changed)',
|
| + '<(RULE_INPUT_PATH)',
|
| + ],
|
| + 'message': 'Generating binding from <(RULE_INPUT_PATH)',
|
| + }],
|
| + },
|
| +################################################################################
|
| + {
|
| + 'target_name': 'aggregate_generated_bindings',
|
| + 'type': 'none',
|
| + 'actions': [{
|
| + 'action_name': 'generate_aggregate_generated_bindings',
|
| + 'inputs': [
|
| + 'scripts/aggregate_generated_bindings.py',
|
| + # Only includes main IDL files (exclude dependencies and testing,
|
| + # for which bindings are not included in aggregate bindings).
|
| + '<(main_interface_idl_files_list)',
|
| + ],
|
| + 'outputs': [
|
| + '<@(aggregate_generated_bindings_files)',
|
| + ],
|
| + 'action': [
|
| + 'python',
|
| + 'scripts/aggregate_generated_bindings.py',
|
| + '<(main_interface_idl_files_list)',
|
| + '--',
|
| + '<@(aggregate_generated_bindings_files)',
|
| + ],
|
| + 'message': 'Generating aggregate generated bindings files',
|
| + }],
|
| + },
|
| +################################################################################
|
| + {
|
| + 'target_name': 'generated_bindings',
|
| + 'type': 'none',
|
| + 'dependencies': [
|
| + 'aggregate_generated_bindings',
|
| + 'individual_generated_bindings',
|
| + ],
|
| + },
|
| +################################################################################
|
| + ], # targets
|
| }
|
|
|