Index: Source/bindings/generated_bindings.gyp |
diff --git a/Source/bindings/generated_bindings.gyp b/Source/bindings/generated_bindings.gyp |
index ab11178b9cbe76e76c3cdea3195cc162c9f9a8bd..a8f089b34814ec722103ce92dd09136136f1a830 100644 |
--- a/Source/bindings/generated_bindings.gyp |
+++ b/Source/bindings/generated_bindings.gyp |
@@ -28,6 +28,12 @@ |
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
# |
+# Generate IDL bindings, together with auxiliary files |
+# (constructors on global objects, aggregate bindings files). |
+# |
+# Design doc: |
+# https://sites.google.com/a/chromium.org/dev/developers/design-documents/idl-build |
+ |
{ |
'includes': [ |
'../build/scripts/scripts.gypi', |
@@ -53,11 +59,8 @@ |
'<@(static_dependency_idl_files)', |
'<@(generated_dependency_idl_files)', |
], |
- # Include in aggregate bindings (exclude testing) |
- # The only differences for testing files are: |
- # * They are not included in aggregate bindings (excluded from below list) |
- # * They do not appear as a property on the global object (Window): |
- # specify [NoInterfaceObject] on the interface in the .idl file |
+ # Main interface IDL files (excluding dependencies and testing) |
+ # are included as properties on global objects, and in aggregate bindings |
'main_interface_idl_files': [ |
'<@(core_idl_files)', |
'<@(modules_idl_files)', |
@@ -74,8 +77,7 @@ |
], |
'generated_idl_files': [ |
'<@(generated_interface_idl_files)', |
- # FIXME: generate global constructors *before* computing dependencies |
- # '<@(generated_dependency_idl_files)', |
+ '<@(generated_dependency_idl_files)', |
], |
# Static IDL files |
@@ -99,11 +101,11 @@ |
], |
'generated_global_constructors_idl_files': [ |
- '<(SHARED_INTERMEDIATE_DIR)/blink/WindowConstructors.idl', |
- '<(SHARED_INTERMEDIATE_DIR)/blink/WorkerGlobalScopeConstructors.idl', |
- '<(SHARED_INTERMEDIATE_DIR)/blink/SharedWorkerGlobalScopeConstructors.idl', |
- '<(SHARED_INTERMEDIATE_DIR)/blink/DedicatedWorkerGlobalScopeConstructors.idl', |
- '<(SHARED_INTERMEDIATE_DIR)/ServiceWorkerGlobalScopeConstructors.idl', |
+ '<(SHARED_INTERMEDIATE_DIR)/blink/WindowConstructors.idl', |
+ '<(SHARED_INTERMEDIATE_DIR)/blink/WorkerGlobalScopeConstructors.idl', |
+ '<(SHARED_INTERMEDIATE_DIR)/blink/SharedWorkerGlobalScopeConstructors.idl', |
+ '<(SHARED_INTERMEDIATE_DIR)/blink/DedicatedWorkerGlobalScopeConstructors.idl', |
+ '<(SHARED_INTERMEDIATE_DIR)/ServiceWorkerGlobalScopeConstructors.idl', |
], |
'compiler_module_files': [ |
@@ -170,13 +172,56 @@ |
}, |
'targets': [{ |
- 'target_name': 'interface_dependencies', |
+ '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', |
+ '<(main_interface_idl_files_list)', |
+ '<@(main_interface_idl_files)', |
+ ], |
+ 'outputs': [ |
+ '<@(generated_global_constructors_idl_files)', |
+ ], |
+ 'action': [ |
+ 'python', |
+ 'scripts/generate_global_constructors.py', |
+ '--idl-files-list', |
+ '<(main_interface_idl_files_list)', |
+ '<@(write_file_only_if_changed)', |
+ '--', |
+ 'Window', |
+ '<(SHARED_INTERMEDIATE_DIR)/blink/WindowConstructors.idl', |
+ 'WorkerGlobalScope', |
+ '<(SHARED_INTERMEDIATE_DIR)/blink/WorkerGlobalScopeConstructors.idl', |
+ 'SharedWorkerGlobalScope', |
+ '<(SHARED_INTERMEDIATE_DIR)/blink/SharedWorkerGlobalScopeConstructors.idl', |
+ 'DedicatedWorkerGlobalScope', |
+ '<(SHARED_INTERMEDIATE_DIR)/blink/DedicatedWorkerGlobalScopeConstructors.idl', |
+ 'ServiceWorkerGlobalScope', |
+ '<(SHARED_INTERMEDIATE_DIR)/ServiceWorkerGlobalScopeConstructors.idl', |
+ ], |
+ 'message': 'Generating IDL files for interface properties on global objects', |
+ }] |
+ }, |
+ { |
+ 'target_name': 'interfaces_info', |
'type': 'none', |
'dependencies': [ |
+ 'global_constructors_idls', |
'../core/core_generated.gyp:generated_testing_idls', |
], |
'actions': [{ |
- 'action_name': 'compute_interface_dependencies', |
+ '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. |
@@ -185,43 +230,33 @@ |
'idl_files_list': '<|(idl_files_list.tmp <@(static_idl_files))', |
}, |
'inputs': [ |
- 'scripts/compute_dependencies.py', |
+ 'scripts/compute_interfaces_info.py', |
+ 'scripts/utilities.py', |
'<(idl_files_list)', |
'<@(static_idl_files)', |
'<@(generated_idl_files)', |
- ], |
- 'outputs': [ |
- '<(SHARED_INTERMEDIATE_DIR)/blink/InterfaceDependencies.txt', |
- '<(SHARED_INTERMEDIATE_DIR)/blink/InterfacesInfo.pickle', |
- '<@(generated_global_constructors_idl_files)', |
- '<(SHARED_INTERMEDIATE_DIR)/blink/EventInterfaces.in', |
- ], |
- 'action': [ |
- 'python', |
- 'scripts/compute_dependencies.py', |
- '--idl-files-list', |
- '<(idl_files_list)', |
- '--interface-dependencies-file', |
- '<(SHARED_INTERMEDIATE_DIR)/blink/InterfaceDependencies.txt', |
- '--interfaces-info-file', |
- '<(SHARED_INTERMEDIATE_DIR)/blink/InterfacesInfo.pickle', |
- '--window-constructors-file', |
- '<(SHARED_INTERMEDIATE_DIR)/blink/WindowConstructors.idl', |
- '--workerglobalscope-constructors-file', |
- '<(SHARED_INTERMEDIATE_DIR)/blink/WorkerGlobalScopeConstructors.idl', |
- '--sharedworkerglobalscope-constructors-file', |
- '<(SHARED_INTERMEDIATE_DIR)/blink/SharedWorkerGlobalScopeConstructors.idl', |
- '--dedicatedworkerglobalscope-constructors-file', |
- '<(SHARED_INTERMEDIATE_DIR)/blink/DedicatedWorkerGlobalScopeConstructors.idl', |
- '--serviceworkerglobalscope-constructors-file', |
- '<(SHARED_INTERMEDIATE_DIR)/ServiceWorkerGlobalScopeConstructors.idl', |
- '--event-names-file', |
- '<(SHARED_INTERMEDIATE_DIR)/blink/EventInterfaces.in', |
- '<@(write_file_only_if_changed)', |
- '--', |
- '<@(generated_idl_files)', |
- ], |
- 'message': 'Computing dependencies between IDL files, and generating global scope constructor IDLs files and list of Event interfaces', |
+ ], |
+ 'outputs': [ |
+ '<(SHARED_INTERMEDIATE_DIR)/blink/InterfaceDependencies.txt', |
+ '<(SHARED_INTERMEDIATE_DIR)/blink/InterfacesInfo.pickle', |
+ '<(SHARED_INTERMEDIATE_DIR)/blink/EventInterfaces.in', |
+ ], |
+ 'action': [ |
+ 'python', |
+ 'scripts/compute_interfaces_info.py', |
+ '--idl-files-list', |
+ '<(idl_files_list)', |
+ '--interface-dependencies-file', |
+ '<(SHARED_INTERMEDIATE_DIR)/blink/InterfaceDependencies.txt', |
+ '--interfaces-info-file', |
+ '<(SHARED_INTERMEDIATE_DIR)/blink/InterfacesInfo.pickle', |
+ '--event-names-file', |
+ '<(SHARED_INTERMEDIATE_DIR)/blink/EventInterfaces.in', |
+ '<@(write_file_only_if_changed)', |
+ '--', |
+ '<@(generated_idl_files)', |
+ ], |
+ 'message': 'Computing global information about IDL files, and generating list of Event interfaces', |
}] |
}, |
{ |
@@ -231,7 +266,7 @@ |
# https://code.google.com/p/gyp/wiki/InputFormatReference#Linking_Dependencies |
'hard_dependency': 1, |
'dependencies': [ |
- 'interface_dependencies', |
+ 'interfaces_info', |
'../core/core_generated.gyp:generated_testing_idls', |
], |
'sources': [ |
@@ -259,7 +294,7 @@ |
# 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. |
+ # compute this file-by-file. http://crbug.com/341748 |
'<@(dependency_idl_files)', |
], |
'outputs': [ |