Skip to content

Commit

Permalink
bind-gen: Update BUILD.gn files to build the new IDL interface impl
Browse files Browse the repository at this point in the history
Makes the implementation of the new IDL interface bindings buildable
by switching |use_blink_v8_binding_new_idl_interface|.

Bug: 839389
Change-Id: I94f2a8f704b538b294358afff86923889245f089
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2290487
Commit-Queue: Yuki Shiino <yukishiino@chromium.org>
Reviewed-by: Hitoshi Yoshida <peria@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#788110}
  • Loading branch information
yuki3 authored and Commit Bot committed Jul 14, 2020
1 parent 240c50d commit fdd9843
Show file tree
Hide file tree
Showing 12 changed files with 380 additions and 132 deletions.
6 changes: 6 additions & 0 deletions BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,12 @@ declare_args() {
root_extra_deps = []
}

# Ninja's console pool
# https://ninja-build.org/manual.html#_the_literal_console_literal_pool
pool("console") {
depth = 1
}

if (is_official_build) {
# An official (maximally optimized!) component (optimized for build times)
# build doesn't make sense and usually doesn't work.
Expand Down
80 changes: 50 additions & 30 deletions third_party/blink/renderer/bindings/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -41,21 +41,26 @@ action("interfaces_info") {
]
}

generate_global_constructors("global_constructors_idls") {
sources =
core_interface_idl_files_core_only +
core_interface_idl_files_modules_dependent +
core_buffer_source_type_idl_files + core_callback_interface_idl_files
global_objects_file =
"$bindings_modules_output_dir/global_objects_modules.pickle"
interfaces = modules_core_global_constructors_original_interfaces
basenames = modules_core_global_constructors_original_interface_basenames
component = "core"
output_dir = blink_modules_output_dir
deps = [
"//third_party/blink/renderer/bindings/modules:modules_global_constructors_idls",
"//third_party/blink/renderer/bindings/modules:modules_global_objects",
]
if (use_blink_v8_binding_new_idl_interface) {
group("global_constructors_idls") {
}
} else {
generate_global_constructors("global_constructors_idls") {
sources =
core_interface_idl_files_core_only +
core_interface_idl_files_modules_dependent +
core_buffer_source_type_idl_files + core_callback_interface_idl_files
global_objects_file =
"$bindings_modules_output_dir/global_objects_modules.pickle"
interfaces = modules_core_global_constructors_original_interfaces
basenames = modules_core_global_constructors_original_interface_basenames
component = "core"
output_dir = blink_modules_output_dir
deps = [
"//third_party/blink/renderer/bindings/modules:modules_global_constructors_idls",
"//third_party/blink/renderer/bindings/modules:modules_global_objects",
]
}
}

template("collect_idl_files") {
Expand Down Expand Up @@ -172,44 +177,59 @@ template("generate_bindings") {
action_with_pydeps(target_name) {
script = "${bindings_scripts_dir}/generate_bindings.py"

if (defined(invoker.pool)) {
pool = invoker.pool
}

web_idl_database_outputs = get_target_outputs(":web_idl_database")
web_idl_database = web_idl_database_outputs[0]

inputs = [ web_idl_database ]
outputs = invoker.outputs

args = [
invoker.target,
"--web_idl_database",
rebase_path(web_idl_database, root_build_dir),
"--root_src_dir",
rebase_path("//", root_build_dir),
"--root_gen_dir",
rebase_path(root_gen_dir, root_build_dir),
"--output_core_reldir",
rebase_path("${bindings_output_dir}/core/v8/", root_gen_dir),
"--output_modules_reldir",
rebase_path("${bindings_output_dir}/modules/v8/", root_gen_dir),
]
"--web_idl_database",
rebase_path(web_idl_database, root_build_dir),
"--root_src_dir",
rebase_path("//", root_build_dir),
"--root_gen_dir",
rebase_path(root_gen_dir, root_build_dir),
"--output_core_reldir",
rebase_path("${bindings_output_dir}/core/v8/", root_gen_dir),
"--output_modules_reldir",
rebase_path("${bindings_output_dir}/modules/v8/", root_gen_dir),
] + invoker.targets

deps = [ ":web_idl_database" ]
}
}

if (use_v8_bind_gen_for_dictionary) {
generate_bindings("generate_bindings_dictionary") {
target = "dictionary"
targets = [ "dictionary" ]
outputs =
generated_core_dictionary_files + generated_modules_dictionary_files +
generated_core_testing_dictionary_files
}
}

generate_bindings("generate_bindings_enumeration") {
target = "enumeration"
generate_bindings("generate_bindings_all") {
# This is a very long running task, so let users know the progress.
if (current_toolchain == default_toolchain) {
pool = "//:console"
}

targets = [ "enumeration" ]
outputs = generated_enumeration_sources_in_core +
generated_enumeration_sources_in_modules +
generated_enumeration_sources_for_testing_in_core
if (use_blink_v8_binding_new_idl_interface) {
targets += [ "interface" ]
outputs += generated_interface_sources_in_core +
generated_interface_sources_in_modules +
generated_interface_sources_for_testing_in_core +
generated_interface_sources_for_testing_in_modules
}
}

action_with_pydeps("generate_high_entropy_list") {
Expand Down
27 changes: 16 additions & 11 deletions third_party/blink/renderer/bindings/core/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,20 @@ compute_global_objects("core_global_objects") {
deps = []
}

generate_global_constructors("core_global_constructors_idls") {
sources =
core_interface_idl_files_core_only +
core_interface_idl_files_modules_dependent +
core_buffer_source_type_idl_files + core_callback_interface_idl_files
global_objects_file = "$bindings_core_output_dir/global_objects_core.pickle"
interfaces = core_global_constructors_original_interfaces
basenames = core_global_constructors_original_interface_basenames
component = "core"
output_dir = blink_core_output_dir
deps = [ ":core_global_objects" ]
if (use_blink_v8_binding_new_idl_interface) {
group("core_global_constructors_idls") {
}
} else {
generate_global_constructors("core_global_constructors_idls") {
sources =
core_interface_idl_files_core_only +
core_interface_idl_files_modules_dependent +
core_buffer_source_type_idl_files + core_callback_interface_idl_files
global_objects_file = "$bindings_core_output_dir/global_objects_core.pickle"
interfaces = core_global_constructors_original_interfaces
basenames = core_global_constructors_original_interface_basenames
component = "core"
output_dir = blink_core_output_dir
deps = [ ":core_global_objects" ]
}
}
121 changes: 98 additions & 23 deletions third_party/blink/renderer/bindings/core/v8/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -12,29 +12,86 @@ import("//third_party/blink/renderer/core/core_idl_files.gni")

visibility = [ "//third_party/blink/renderer/*" ]

blink_core_sources("generated") {
sources = generated_enumeration_sources_in_core
deps =
[ "//third_party/blink/renderer/bindings:generate_bindings_enumeration" ]
if (use_blink_v8_binding_new_idl_interface) {
blink_core_sources("v8") {
visibility = []
visibility = [ "//third_party/blink/renderer/core" ]

sources = generated_enumeration_sources_in_core
if (use_blink_v8_binding_new_idl_interface) {
sources += generated_interface_sources_in_core
}

deps = [
":generated",
"//third_party/blink/renderer/platform",
"//v8",
]
}
} else {
group("v8") {
}
}

blink_core_sources("generated_for_testing") {
sources = generated_enumeration_sources_for_testing_in_core
deps =
[ "//third_party/blink/renderer/bindings:generate_bindings_enumeration" ]
if (use_blink_v8_binding_new_idl_interface) {
jumbo_source_set("testing") {
testonly = true

visibility = []
visibility = [ "//third_party/blink/renderer/core/*" ]

configs += [
"//third_party/blink/renderer:config",
"//third_party/blink/renderer:inside_blink",
]

sources = generated_enumeration_sources_for_testing_in_core
if (use_blink_v8_binding_new_idl_interface) {
sources += generated_interface_sources_for_testing_in_core
}

deps = [
":generated",
":testing_internal",
"//third_party/blink/renderer/platform",
"//v8",
]
}
} else {
group("testing") {
testonly = true

deps = [ ":testing_internal" ]
}
}

generate_origin_trial_features("bindings_core_origin_trial_features") {
sources = core_interface_idl_files_core_only +
core_interface_idl_files_modules_dependent +
core_partial_definition_idl_files +
core_global_constructors_generated_idl_files
component = "core"
output_dir = bindings_core_output_dir + "/v8"
deps = [
"//third_party/blink/renderer/bindings/core:core_global_constructors_idls",
"//third_party/blink/renderer/bindings/core:interfaces_info_core",
group("generated") {
visibility = []
visibility = [
"//third_party/blink/renderer/bindings/core/v8/*",
"//third_party/blink/renderer/core/*",
]

public_deps =
[ "//third_party/blink/renderer/bindings:generate_bindings_all" ]
}

if (use_blink_v8_binding_new_idl_interface) {
group("bindings_core_origin_trial_features") {
}
} else {
generate_origin_trial_features("bindings_core_origin_trial_features") {
sources = core_interface_idl_files_core_only +
core_interface_idl_files_modules_dependent +
core_partial_definition_idl_files +
core_global_constructors_generated_idl_files
component = "core"
output_dir = bindings_core_output_dir + "/v8"
deps = [
"//third_party/blink/renderer/bindings/core:core_global_constructors_idls",
"//third_party/blink/renderer/bindings/core:interfaces_info_core",
]
}
}

group("bindings_core_v8_generated") {
Expand All @@ -54,6 +111,13 @@ group("bindings_core_v8_generated") {
idl_compiler("generate_bindings_core_v8_interfaces") {
sources = core_definition_idl_files + core_testing_definition_idl_files +
generated_webcore_testing_idl_files
if (use_blink_v8_binding_new_idl_interface) {
sources -=
core_interface_idl_files_core_only +
core_interface_idl_files_modules_dependent + webcore_testing_idl_files +
webcore_testing_idl_with_modules_dependency_files +
generated_webcore_testing_idl_files
}
if (use_v8_bind_gen_for_dictionary) {
sources -= core_dictionary_idl_files
sources -= core_testing_dictionary_idl_files
Expand Down Expand Up @@ -96,8 +160,11 @@ blink_core_sources("bindings_core_impl") {
_non_testing_sources -= generated_core_testing_dictionary_files
}

sources = _non_testing_sources + bindings_core_generated_interface_files +
get_target_outputs(":bindings_core_origin_trial_features")
sources = _non_testing_sources + bindings_core_generated_interface_files

if (!use_blink_v8_binding_new_idl_interface) {
sources += get_target_outputs(":bindings_core_origin_trial_features")
}

deps = [
":bindings_core_origin_trial_features",
Expand All @@ -109,7 +176,9 @@ blink_core_sources("bindings_core_impl") {
# Compile the test sources generated above. This test target doesn't count
# as part of the "core" component so shouldn't use the blink_core_sources for
# linking on Windows.
jumbo_source_set("testing") {
jumbo_source_set("testing_internal") {
testonly = true

sources = generated_core_testing_dictionary_files +
generated_core_testing_callback_function_files

Expand All @@ -119,8 +188,14 @@ jumbo_source_set("testing") {
if (!use_v8_bind_gen_for_dictionary) {
testing_idl_interface_files += core_testing_dictionary_idl_files
}

if (use_blink_v8_binding_new_idl_interface) {
idl_files = core_testing_dictionary_idl_files
} else {
idl_files = testing_idl_interface_files
}
sources += process_file_template(
testing_idl_interface_files,
idl_files,
[
"$bindings_core_v8_output_dir/v8_{{source_name_part}}.cc",
"$bindings_core_v8_output_dir/v8_{{source_name_part}}.h",
Expand All @@ -134,7 +209,7 @@ jumbo_source_set("testing") {
":bindings_core_v8_generated",
"//skia",
"//third_party/blink/renderer/bindings:generate_v8_bindings",
"//third_party/blink/renderer/core:all_generators",
"//third_party/blink/renderer/core",
"//third_party/blink/renderer/platform",
"//v8",
]
Expand Down
11 changes: 11 additions & 0 deletions third_party/blink/renderer/bindings/core/v8/generated.gni
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,17 @@ if (is_win && is_official_build) {
"$bindings_core_v8_output_dir/v8_{{source_name_part}}.h",
])
}
if (use_blink_v8_binding_new_idl_interface) {
bindings_core_generated_interface_files = []
bindings_core_generated_interface_files =
process_file_template(
core_buffer_source_type_idl_files +
core_callback_interface_idl_files + core_dictionary_idl_files,
[
"$bindings_core_v8_output_dir/v8_{{source_name_part}}.cc",
"$bindings_core_v8_output_dir/v8_{{source_name_part}}.h",
])
}

generated_core_dictionary_files = []

Expand Down
23 changes: 14 additions & 9 deletions third_party/blink/renderer/bindings/modules/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -127,15 +127,20 @@ compute_global_objects("modules_global_objects") {
deps = [ "//third_party/blink/renderer/bindings/core:core_global_objects" ]
}

generate_global_constructors("modules_global_constructors_idls") {
sources = modules_idl_files
global_objects_file =
"$bindings_modules_output_dir/global_objects_modules.pickle"
interfaces = modules_global_constructors_original_interfaces
basenames = modules_global_constructors_original_interface_basenames
component = "modules"
output_dir = blink_modules_output_dir
deps = [ ":modules_global_objects" ]
if (use_blink_v8_binding_new_idl_interface) {
group("modules_global_constructors_idls") {
}
} else {
generate_global_constructors("modules_global_constructors_idls") {
sources = modules_idl_files
global_objects_file =
"$bindings_modules_output_dir/global_objects_modules.pickle"
interfaces = modules_global_constructors_original_interfaces
basenames = modules_global_constructors_original_interface_basenames
component = "modules"
output_dir = blink_modules_output_dir
deps = [ ":modules_global_objects" ]
}
}

# Compile the sources produced above. This will get linked into "modules".
Expand Down
Loading

0 comments on commit fdd9843

Please sign in to comment.