blob: 61c9e7f59da72c0cc9f73b6fae10932d8a7cebbd [file] [log] [blame]
# Copyright 2019 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.
import("//build/config/python.gni")
import("//third_party/blink/renderer/bindings/bindings.gni")
import("//third_party/blink/renderer/bindings/core/v8/generated.gni")
import("//third_party/blink/renderer/bindings/generated_in_core.gni")
import("//third_party/blink/renderer/bindings/generated_in_modules.gni")
import("//third_party/blink/renderer/bindings/idl_in_core.gni")
import("//third_party/blink/renderer/bindings/idl_in_modules.gni")
import("//third_party/blink/renderer/bindings/modules/v8/generated.gni")
import("//third_party/blink/renderer/bindings/scripts/scripts.gni")
import("//third_party/blink/renderer/build/scripts/scripts.gni")
import("//third_party/blink/renderer/core/core_idl_files.gni")
import("//third_party/blink/renderer/modules/modules_idl_files.gni")
visibility = [ "//third_party/blink/renderer/*" ]
action("interfaces_info") {
script = "$bindings_scripts_dir/compute_interfaces_info_overall.py"
inputs = [
"$bindings_core_output_dir/interfaces_info_core.pickle",
"$bindings_modules_output_dir/interfaces_info_modules.pickle",
]
outputs = [ "$bindings_output_dir/interfaces_info.pickle" ]
args = [
"--",
rebase_path("$bindings_core_output_dir/interfaces_info_core.pickle",
root_build_dir),
rebase_path("$bindings_modules_output_dir/interfaces_info_modules.pickle",
root_build_dir),
rebase_path("$bindings_output_dir/interfaces_info.pickle", root_build_dir),
]
public_deps = [
"//third_party/blink/renderer/bindings/core:interfaces_info_core",
"//third_party/blink/renderer/bindings/modules:interfaces_info_modules",
]
}
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") {
action_with_pydeps(target_name) {
script = "${bindings_scripts_dir}/collect_idl_files.py"
inputs = invoker.inputs
outputs = [ invoker.output ]
# List input file names in a temporary file.
response_file_contents = rebase_path(inputs, root_build_dir)
args = [
"--idl_list_file",
"{{response_file_name}}",
"--component",
invoker.component,
"--output",
rebase_path(invoker.output, root_build_dir),
]
if (defined(invoker.for_testing) && invoker.for_testing) {
args += [ "--for_testing" ]
}
if (defined(invoker.deps)) {
deps = invoker.deps
}
}
}
collect_idl_files("web_idl_in_core") {
component = "core"
inputs = static_idl_files_in_core
output = "${bindings_output_dir}/web_idl_in_core.pickle"
}
collect_idl_files("web_idl_in_core_for_testing") {
component = "core"
for_testing = true
inputs = static_idl_files_in_core_for_testing
inputs += get_path_info(
[
"$root_gen_dir/third_party/blink/renderer/core/testing/internal_runtime_flags.idl",
"$root_gen_dir/third_party/blink/renderer/core/testing/internal_settings_generated.idl",
],
"abspath")
deps = [
"//third_party/blink/renderer/core:generated_testing_idls_internal_runtime_flags",
"//third_party/blink/renderer/core:generated_testing_idls_settings",
]
output = "${bindings_output_dir}/web_idl_in_core_for_testing.pickle"
}
collect_idl_files("web_idl_in_modules") {
component = "modules"
inputs = static_idl_files_in_modules
output = "${bindings_output_dir}/web_idl_in_modules.pickle"
}
collect_idl_files("web_idl_in_modules_for_testing") {
component = "modules"
for_testing = true
inputs = static_idl_files_in_modules_for_testing
output = "${bindings_output_dir}/web_idl_in_modules_for_testing.pickle"
}
action_with_pydeps("web_idl_database") {
visibility += [ "//tools/privacy_budget/blink_apis:*" ]
script = "${bindings_scripts_dir}/build_web_idl_database.py"
input_data_files = get_target_outputs(":web_idl_in_core") +
get_target_outputs(":web_idl_in_core_for_testing") +
get_target_outputs(":web_idl_in_modules") +
get_target_outputs(":web_idl_in_modules_for_testing")
runtime_enabled_features_file = "../platform/runtime_enabled_features.json5"
inputs = input_data_files + [ runtime_enabled_features_file ]
outputs = [ web_idl_database_filepath ]
args = [
"--output",
rebase_path(web_idl_database_filepath, root_build_dir),
"--runtime_enabled_features",
rebase_path(runtime_enabled_features_file, root_build_dir),
"--",
] + rebase_path(input_data_files, root_build_dir)
deps = [
":web_idl_in_core",
":web_idl_in_core_for_testing",
":web_idl_in_modules",
":web_idl_in_modules_for_testing",
]
}
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 = [
"--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" ]
}
}
generate_bindings("generate_bindings_all") {
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_callback_function) {
targets += [ "callback_function" ]
outputs += generated_callback_function_sources_in_core +
generated_callback_function_sources_in_modules +
generated_callback_function_sources_for_testing_in_core
}
if (use_blink_v8_binding_new_idl_callback_interface) {
targets += [ "callback_interface" ]
outputs += generated_callback_interface_sources_in_core +
generated_callback_interface_sources_in_modules
}
if (use_blink_v8_binding_new_idl_dictionary) {
targets += [ "dictionary" ]
outputs += generated_dictionary_sources_in_core +
generated_dictionary_sources_in_modules +
generated_dictionary_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
targets += [ "namespace" ]
outputs += generated_namespace_sources_in_core +
generated_namespace_sources_in_modules
}
}
# Exposes the libraries that affect the resulting blob image of the V8 context
# snapshot.
group("v8_context_snapshot_influential_libs") {
visibility = []
visibility = [ "//tools/v8_context_snapshot/*" ]
public_deps = [
"//third_party/blink/renderer/core",
"//third_party/blink/renderer/modules",
"//third_party/blink/renderer/platform",
]
}