Commit 134a59bd authored by peria's avatar peria Committed by Commit bot

Remove aggregation of generated binding code.

After this change, we maybe able to skip needless compiles
based on redundant dependencies. (issue 388172)
Plus, it is expected to compile those files in parallel.

BUG=634231, 388172

Review-Url: https://codereview.chromium.org/2318933002
Cr-Commit-Position: refs/heads/master@{#417216}
parent 9fd8459b
...@@ -3,9 +3,9 @@ ...@@ -3,9 +3,9 @@
# found in the LICENSE file. # found in the LICENSE file.
import("//third_party/WebKit/Source/bindings/bindings.gni") import("//third_party/WebKit/Source/bindings/bindings.gni")
import("//third_party/WebKit/Source/core/core_idl_files.gni")
import("//third_party/WebKit/Source/bindings/scripts/scripts.gni") import("//third_party/WebKit/Source/bindings/scripts/scripts.gni")
import("//third_party/WebKit/Source/core/core.gni") import("//third_party/WebKit/Source/core/core.gni")
import("//third_party/WebKit/Source/core/core_idl_files.gni")
visibility = [ "//third_party/WebKit/Source/*" ] visibility = [ "//third_party/WebKit/Source/*" ]
...@@ -192,112 +192,24 @@ generated_core_testing_dictionary_files = [ ...@@ -192,112 +192,24 @@ generated_core_testing_dictionary_files = [
"$blink_core_output_dir/testing/InternalDictionaryDerivedDerived.h", "$blink_core_output_dir/testing/InternalDictionaryDerivedDerived.h",
] ]
if (is_win && is_official_build) { bindings_core_generated_interface_files =
bindings_core_generated_aggregate_files = process_file_template(
[ "$bindings_core_v8_output_dir/V8GeneratedCoreBindings.cpp" ] core_definition_idl_files,
} else { [
bindings_core_generated_aggregate_files = [ "$bindings_core_v8_output_dir/V8{{source_name_part}}.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings00.cpp", "$bindings_core_v8_output_dir/V8{{source_name_part}}.h",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings01.cpp", ])
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings02.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings03.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings04.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings05.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings06.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings07.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings08.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings09.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings10.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings11.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings12.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings13.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings14.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings15.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings16.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings17.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings18.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings19.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings20.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings21.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings22.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings23.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings24.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings25.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings26.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings27.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings28.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings29.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings30.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings31.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings32.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings33.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings34.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings35.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings36.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings37.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings38.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings39.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings40.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings41.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings42.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings43.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings44.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings45.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings46.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings47.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings48.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings49.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings50.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings51.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings52.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings53.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings54.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings55.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings56.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings57.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings58.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings59.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings60.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings61.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings62.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings63.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings64.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings65.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings66.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings67.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings68.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings69.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings70.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings71.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings72.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings73.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings74.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings75.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings76.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings77.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings78.cpp",
"$bindings_core_v8_output_dir/V8GeneratedCoreBindings79.cpp",
]
}
group("bindings_core_v8_generated") { group("bindings_core_v8_generated") {
public_deps = [ public_deps = [
":bindings_core_impl_generated", ":bindings_core_impl_generated",
":bindings_core_v8_generated_aggregate", ":generate_bindings_core_v8_interfaces",
":bindings_core_v8_generated_individual",
] ]
} }
aggregate_generated_bindings("bindings_core_v8_generated_aggregate") {
sources = core_definition_idl_files
component_dir = "core"
is_partial = false
outputs = bindings_core_generated_aggregate_files
}
# IDL file lists; see: http://www.chromium.org/developers/web-idl-interfaces # IDL file lists; see: http://www.chromium.org/developers/web-idl-interfaces
# Interface IDL files: generate individual bindings (includes testing) # Interface IDL files: generate individual bindings (includes testing)
idl_compiler("bindings_core_v8_generated_individual") { idl_compiler("generate_bindings_core_v8_interfaces") {
sources = core_definition_idl_files + core_testing_definition_idl_files + sources = core_definition_idl_files + core_testing_definition_idl_files +
generated_webcore_testing_idl_files generated_webcore_testing_idl_files
output_dir = bindings_core_v8_output_dir output_dir = bindings_core_v8_output_dir
...@@ -318,11 +230,11 @@ idl_impl("bindings_core_impl_generated") { ...@@ -318,11 +230,11 @@ idl_impl("bindings_core_impl_generated") {
blink_core_sources("bindings_core_impl") { blink_core_sources("bindings_core_impl") {
sources = sources =
bindings_core_generated_union_type_files + bindings_core_generated_union_type_files +
generated_core_dictionary_files + bindings_core_generated_aggregate_files generated_core_dictionary_files + bindings_core_generated_interface_files
deps = [ deps = [
":bindings_core_impl_generated", ":bindings_core_impl_generated",
":bindings_core_v8_generated_aggregate", ":generate_bindings_core_v8_interfaces",
] ]
} }
......
...@@ -13,24 +13,13 @@ visibility = [ "//third_party/WebKit/*" ] ...@@ -13,24 +13,13 @@ visibility = [ "//third_party/WebKit/*" ]
group("bindings_modules_generated") { group("bindings_modules_generated") {
public_deps = [ public_deps = [
":bindings_modules_impl_generated", ":bindings_modules_impl_generated",
":bindings_modules_v8_generated_aggregate",
":bindings_modules_v8_generated_individual",
":bindings_modules_v8_generated_init_partial", ":bindings_modules_v8_generated_init_partial",
":bindings_modules_v8_generated_partial_aggregate", ":generate_bindings_modules_v8_interfaces",
":bindings_modules_v8_generated_partial_individual", ":generate_bindings_modules_v8_partial_interfaces",
] ]
} }
# bindings_modules_generated_aggregate in modules/v8/generated.gyp idl_compiler("generate_bindings_modules_v8_interfaces") {
aggregate_generated_bindings("bindings_modules_v8_generated_aggregate") {
sources = modules_definition_idl_files
component_dir = "modules"
is_partial = false
outputs = bindings_modules_generated_aggregate_files
}
# bindings_modules_generated_individual in modules/v8/generated.gyp
idl_compiler("bindings_modules_v8_generated_individual") {
# Note in GYP this is modules_interface_idl_files but this variable is just # Note in GYP this is modules_interface_idl_files but this variable is just
# defined to modules_definition_idl_files. # defined to modules_definition_idl_files.
sources = modules_definition_idl_files sources = modules_definition_idl_files
...@@ -39,7 +28,6 @@ idl_compiler("bindings_modules_v8_generated_individual") { ...@@ -39,7 +28,6 @@ idl_compiler("bindings_modules_v8_generated_individual") {
target_component = "modules" target_component = "modules"
} }
# bindings_modules_impl_generated in modules/v8/generated.gyp
idl_impl("bindings_modules_impl_generated") { idl_impl("bindings_modules_impl_generated") {
sources = modules_dictionary_idl_files sources = modules_dictionary_idl_files
outputs = bindings_modules_generated_union_type_files + outputs = bindings_modules_generated_union_type_files +
...@@ -48,8 +36,7 @@ idl_impl("bindings_modules_impl_generated") { ...@@ -48,8 +36,7 @@ idl_impl("bindings_modules_impl_generated") {
target_component = "modules" target_component = "modules"
} }
# bindings_modules_generated_individual in modules/v8/generated.gyp idl_compiler("generate_bindings_modules_v8_partial_interfaces") {
idl_compiler("bindings_modules_v8_generated_partial_individual") {
# Note in GYP this is modules_interface_idl_files but this variable is just # Note in GYP this is modules_interface_idl_files but this variable is just
# defined to modules_definition_idl_files. # defined to modules_definition_idl_files.
sources = core_idl_with_modules_dependency_files + sources = core_idl_with_modules_dependency_files +
...@@ -59,15 +46,6 @@ idl_compiler("bindings_modules_v8_generated_partial_individual") { ...@@ -59,15 +46,6 @@ idl_compiler("bindings_modules_v8_generated_partial_individual") {
target_component = "modules" target_component = "modules"
} }
# bindings_modules_generated_aggregate in modules/v8/generated.gyp
aggregate_generated_bindings(
"bindings_modules_v8_generated_partial_aggregate") {
sources = core_idl_with_modules_dependency_files
component_dir = "modules"
is_partial = true
outputs = bindings_modules_generated_partial_aggregate_files
}
# GYP version: Source/bindings/modules/v8/generated.gyp:bindings_modules_v8_generated_init_partial # GYP version: Source/bindings/modules/v8/generated.gyp:bindings_modules_v8_generated_init_partial
action("bindings_modules_v8_generated_init_partial") { action("bindings_modules_v8_generated_init_partial") {
script = "$bindings_scripts_dir/generate_init_partial_interfaces.py" script = "$bindings_scripts_dir/generate_init_partial_interfaces.py"
......
...@@ -4,100 +4,11 @@ ...@@ -4,100 +4,11 @@
import("//build/config/chrome_build.gni") import("//build/config/chrome_build.gni")
import("//third_party/WebKit/Source/bindings/bindings.gni") import("//third_party/WebKit/Source/bindings/bindings.gni")
import("//third_party/WebKit/Source/core/core_idl_files.gni")
import("//third_party/WebKit/Source/modules/modules_idl_files.gni")
bindings_modules_v8_output_dir = "$bindings_output_dir/modules/v8" bindings_modules_v8_output_dir = "$bindings_output_dir/modules/v8"
if (is_win && is_official_build) {
bindings_modules_generated_aggregate_files =
[ "$bindings_modules_v8_output_dir/V8GeneratedModulesBindings.cpp" ]
} else {
bindings_modules_generated_aggregate_files = [
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings00.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings01.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings02.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings03.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings04.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings05.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings06.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings07.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings08.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings09.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings10.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings11.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings12.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings13.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings14.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings15.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings16.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings17.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings18.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings19.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings20.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings21.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings22.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings23.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings24.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings25.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings26.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings27.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings28.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings29.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings30.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings31.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings32.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings33.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings34.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings35.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings36.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings37.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings38.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings39.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings40.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings41.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings42.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings43.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings44.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings45.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings46.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings47.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings48.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings49.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings50.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings51.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings52.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings53.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings54.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings55.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings56.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings57.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings58.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings59.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings60.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings61.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings62.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings63.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings64.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings65.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings66.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings67.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings68.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings69.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings70.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings71.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings72.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings73.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings74.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings75.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings76.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings77.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings78.cpp",
"$bindings_modules_v8_output_dir/V8GeneratedModulesBindings79.cpp",
]
}
bindings_modules_generated_partial_aggregate_files =
[ "$bindings_modules_v8_output_dir/V8GeneratedModulesBindingsPartial.cpp" ]
bindings_modules_generated_init_partial_interfaces_file = bindings_modules_generated_init_partial_interfaces_file =
"$bindings_modules_v8_output_dir/initPartialInterfacesInModules.cpp" "$bindings_modules_v8_output_dir/initPartialInterfacesInModules.cpp"
...@@ -152,3 +63,19 @@ bindings_modules_generated_union_type_files = [ ...@@ -152,3 +63,19 @@ bindings_modules_generated_union_type_files = [
"$bindings_modules_v8_output_dir/UnsignedLongOrUnsignedLongSequence.cpp", "$bindings_modules_v8_output_dir/UnsignedLongOrUnsignedLongSequence.cpp",
"$bindings_modules_v8_output_dir/UnsignedLongOrUnsignedLongSequence.h", "$bindings_modules_v8_output_dir/UnsignedLongOrUnsignedLongSequence.h",
] ]
bindings_modules_generated_interface_files =
process_file_template(
modules_definition_idl_files,
[
"$bindings_modules_v8_output_dir/V8{{source_name_part}}.cpp",
"$bindings_modules_v8_output_dir/V8{{source_name_part}}.h",
])
bindings_modules_generated_partial_interface_files =
process_file_template(
core_idl_with_modules_dependency_files,
[
"$bindings_modules_v8_output_dir/V8{{source_name_part}}Partial.cpp",
"$bindings_modules_v8_output_dir/V8{{source_name_part}}Partial.h",
])
#!/usr/bin/python
#
# Copyright (C) 2009 Google Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Copyright (c) 2009 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Generate aggregate .cpp files that include multiple V8 binding .cpp files.
This can be a single output file, to preserve symbol space; or multiple output
files, to reduce maximum compilation unit size and allow parallel compilation.
Usage:
aggregate_generated_bindings.py --component-directory COMPONENT_DIR --input-file IDL_FILES_LIST OUTPUT_FILE1 OUTPUT_FILE2 ...
COMPONENT_DIR is the relative directory of a component, e.g., 'core', 'modules'.
IDL_FILES_LIST is a text file containing the IDL file paths, so the command
line doesn't exceed OS length limits.
OUTPUT_FILE1 etc. are filenames of output files.
Design doc: http://www.chromium.org/developers/design-documents/idl-build
"""
import errno
import optparse
import os
import re
import sys
from utilities import (should_generate_impl_file_from_idl,
get_file_contents,
idl_filename_to_interface_name,
read_idl_files_list_from_file)
COPYRIGHT_TEMPLATE = """/*
* THIS FILE WAS AUTOMATICALLY GENERATED, DO NOT EDIT.
*
* This file was generated by the action_derivedsourcesallinone.py script.
*
* Copyright (C) 2009 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
"""
def extract_meta_data(file_paths):
"""Extracts interface name from each IDL file."""
meta_data_list = []
for file_path in file_paths:
if not file_path.endswith('.idl'):
print 'WARNING: non-IDL file passed: "%s"' % file_path
continue
if not os.path.exists(file_path):
print 'WARNING: file not found: "%s"' % file_path
continue
idl_file_contents = get_file_contents(file_path)
if not should_generate_impl_file_from_idl(idl_file_contents):
continue
# Extract interface name from file name
interface_name = idl_filename_to_interface_name(file_path)
meta_data = {
'name': interface_name,
}
meta_data_list.append(meta_data)
return meta_data_list
def generate_content(component_dir, aggregate_partial_interfaces, files_meta_data_this_partition):
# Add fixed content.
output = [COPYRIGHT_TEMPLATE,
'#define NO_IMPLICIT_ATOMICSTRING\n\n']
# List all includes.
files_meta_data_this_partition.sort()
suffix = 'Partial' if aggregate_partial_interfaces else ''
for meta_data in files_meta_data_this_partition:
cpp_filename = 'V8%s%s.cpp' % (meta_data['name'], suffix)
output.append('#include "bindings/%s/v8/%s"\n' %
(component_dir, cpp_filename))
return ''.join(output)
def write_content(content, output_file_name):
parent_path, file_name = os.path.split(output_file_name)
if not os.path.exists(parent_path):
print 'Creating directory: %s' % parent_path
os.makedirs(parent_path)
with open(output_file_name, 'w') as f:
f.write(content)
def parse_options():
parser = optparse.OptionParser()
parser.add_option('--component-directory')
parser.add_option('--input-file',
help='A file name which lists up target IDL file names.',
type='string')
parser.add_option('--partial',
help='To parse partial IDLs, add this option.',
action='store_true',
dest='partial',
default=False)
options, output_file_names = parser.parse_args()
if len(output_file_names) == 0:
raise Exception('Expected at least one output file name(s).')
if not options.input_file:
raise Exception('No input file is specified.')
return options, output_file_names
def main():
options, output_file_names = parse_options()
component_dir = options.component_directory
input_file_name = options.input_file
aggregate_partial_interfaces = options.partial
idl_file_names = read_idl_files_list_from_file(input_file_name,
is_gyp_format=True)
files_meta_data = extract_meta_data(idl_file_names)
total_partitions = len(output_file_names)
for partition, file_name in enumerate(output_file_names):
files_meta_data_this_partition = [
meta_data for meta_data in files_meta_data
if hash(meta_data['name']) % total_partitions == partition]
file_contents = generate_content(component_dir,
aggregate_partial_interfaces,
files_meta_data_this_partition)
write_content(file_contents, file_name)
if __name__ == '__main__':
sys.exit(main())
...@@ -10,10 +10,11 @@ from optparse import OptionParser ...@@ -10,10 +10,11 @@ from optparse import OptionParser
import os import os
import posixpath import posixpath
import sys import sys
from utilities import write_file from utilities import get_file_contents
from utilities import idl_filename_to_interface_name
from aggregate_generated_bindings import extract_meta_data
from utilities import read_idl_files_list_from_file from utilities import read_idl_files_list_from_file
from utilities import should_generate_impl_file_from_idl
from utilities import write_file
_COPYRIGHT = """// Copyright 2014 The Chromium Authors. All rights reserved. _COPYRIGHT = """// Copyright 2014 The Chromium Authors. All rights reserved.
...@@ -55,6 +56,33 @@ def parse_options(): ...@@ -55,6 +56,33 @@ def parse_options():
return options return options
def extract_meta_data(file_paths):
"""Extracts interface name from each IDL file."""
meta_data_list = []
for file_path in file_paths:
if not file_path.endswith('.idl'):
print 'WARNING: non-IDL file passed: "%s"' % file_path
continue
if not os.path.exists(file_path):
print 'WARNING: file not found: "%s"' % file_path
continue
idl_file_contents = get_file_contents(file_path)
if not should_generate_impl_file_from_idl(idl_file_contents):
continue
# Extract interface name from file name
interface_name = idl_filename_to_interface_name(file_path)
meta_data = {
'name': interface_name,
}
meta_data_list.append(meta_data)
return meta_data_list
def main(): def main():
options = parse_options() options = parse_options()
......
...@@ -272,37 +272,6 @@ template("idl_impl") { ...@@ -272,37 +272,6 @@ template("idl_impl") {
} }
} }
# Calls the aggregate_generated_bindings script.
#
# Parameters:
# sources = a list of source IDL files.
# component_dir = Name of directory for these files (one word, no slashes).
# outputs = a list of files to write to.
template("aggregate_generated_bindings") {
action(target_name) {
script = "//third_party/WebKit/Source/bindings/scripts/aggregate_generated_bindings.py"
# Write lists of main IDL files to a file, so that the command lines don't
# exceed OS length limits.
idl_files_list = "$target_gen_dir/${target_name}_file_list.tmp"
write_file(idl_files_list, rebase_path(invoker.sources, root_build_dir))
inputs = [ idl_files_list ] + invoker.sources
outputs = invoker.outputs
args = [
"--component-directory",
invoker.component_dir,
"--input-file",
rebase_path(idl_files_list, root_build_dir),
]
if (invoker.is_partial) {
args += [ "--partial" ]
}
args += rebase_path(invoker.outputs, root_build_dir)
}
}
# Calls the compute_global_objects script. # Calls the compute_global_objects script.
# #
# Parameters: # Parameters:
......
...@@ -45,10 +45,10 @@ target(modules_target_type, "modules") { ...@@ -45,10 +45,10 @@ target(modules_target_type, "modules") {
sources = rebase_path(modules_files, ".", "//") sources = rebase_path(modules_files, ".", "//")
sources += bindings_modules_v8_files sources += bindings_modules_v8_files
sources += rebase_path(bindings_modules_generated_aggregate_files, ".", "//") sources += rebase_path(bindings_modules_generated_interface_files, ".", "//")
sources += rebase_path(bindings_modules_generated_union_type_files, ".", "//") sources += rebase_path(bindings_modules_generated_union_type_files, ".", "//")
sources += sources +=
rebase_path(bindings_modules_generated_partial_aggregate_files, ".", "//") rebase_path(bindings_modules_generated_partial_interface_files, ".", "//")
sources += sources +=
rebase_path([ bindings_modules_generated_init_partial_interfaces_file ], rebase_path([ bindings_modules_generated_init_partial_interfaces_file ],
".", ".",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment