blob: fd8e73febf2ecfed1e8fbaa8ba62d1d3febcf9b4 [file] [log] [blame]
# Copyright 2014 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/generated_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/modules/modules.gni")
import("//third_party/blink/renderer/modules/modules_idl_files.gni")
visibility = [ "//third_party/blink/renderer/*" ]
blink_modules_sources("v8") {
visibility = []
visibility = [ "//third_party/blink/renderer/modules" ]
sources = generated_enumeration_sources_in_modules
if (use_blink_v8_binding_new_idl_callback_function) {
sources += generated_callback_function_sources_in_modules
}
if (use_blink_v8_binding_new_idl_callback_interface) {
sources += generated_callback_interface_sources_in_modules
}
if (use_blink_v8_binding_new_idl_dictionary) {
sources += generated_dictionary_sources_in_modules
}
if (use_blink_v8_binding_new_idl_interface) {
sources += generated_interface_sources_in_modules +
generated_namespace_sources_in_modules
}
deps = [
":generate_mojo_bindings",
":generated",
"//third_party/blink/renderer/platform",
"//v8",
]
}
source_set("testing") {
testonly = true
visibility = []
visibility = [ "//third_party/blink/renderer/modules/*" ]
configs += [
"//third_party/blink/renderer:config",
"//third_party/blink/renderer:inside_blink",
]
sources = []
if (use_blink_v8_binding_new_idl_interface) {
sources += generated_interface_sources_for_testing_in_modules
} else {
sources += [
"$bindings_modules_v8_output_dir/v8_internals_partial.cc",
"$bindings_modules_v8_output_dir/v8_internals_partial.h",
]
}
deps = [
":generated",
"//third_party/blink/renderer/core",
"//third_party/blink/renderer/modules",
"//third_party/blink/renderer/platform",
"//v8",
]
if (!use_blink_v8_binding_new_idl_interface) {
deps += [ ":generate_bindings_modules_v8_partial_interfaces_for_testing" ]
}
}
group("generated") {
visibility = []
visibility = [
"//third_party/blink/renderer/bindings/modules/v8/*",
"//third_party/blink/renderer/modules/*",
]
public_deps = [
":bindings_modules_v8_generated",
"//third_party/blink/renderer/bindings:generate_bindings_all",
]
}
group("bindings_modules_v8_generated") {
public_deps = [
":bindings_modules_impl_generated",
":bindings_modules_v8_generated_init_partial",
":generate_bindings_modules_v8_interfaces",
":generate_bindings_modules_v8_partial_interfaces",
":generate_bindings_modules_v8_partial_interfaces_for_testing",
":generate_v8_context_snapshot_external_references",
"//third_party/blink/renderer/bindings/core/v8:bindings_core_v8_generated",
]
}
if (!use_blink_v8_binding_new_idl_callback_interface ||
!use_blink_v8_binding_new_idl_dictionary ||
!use_blink_v8_binding_new_idl_interface) {
idl_compiler("generate_bindings_modules_v8_interfaces") {
sources = []
if (!use_blink_v8_binding_new_idl_callback_interface) {
sources += filter_include(modules_idl_files, [ "*_callback.idl" ])
}
if (!use_blink_v8_binding_new_idl_dictionary) {
sources += modules_dictionary_idl_files
}
if (!use_blink_v8_binding_new_idl_interface) {
sources += filter_exclude(modules_idl_files, [ "*_callback.idl" ])
}
output_dir = bindings_modules_v8_output_dir
output_name_suffix = ""
target_component = "modules"
}
} else {
group("generate_bindings_modules_v8_interfaces") {
}
}
idl_impl("bindings_modules_impl_generated") {
if (use_blink_v8_binding_new_idl_dictionary) {
dict_idls = []
} else {
dict_idls = modules_dictionary_idl_files
}
non_dict_outputs = bindings_modules_generated_union_type_files
if (!use_blink_v8_binding_new_idl_callback_function) {
non_dict_outputs += generated_modules_callback_function_files
}
non_dict_output_dir = bindings_modules_v8_output_dir
target_component = "modules"
}
if (use_blink_v8_binding_new_idl_interface) {
group("generate_bindings_modules_v8_partial_interfaces") {
}
} else {
idl_compiler("generate_bindings_modules_v8_partial_interfaces") {
sources = core_interface_idl_files_modules_dependent
output_dir = bindings_modules_v8_output_dir
output_name_suffix = "_partial"
target_component = "modules"
}
}
if (use_blink_v8_binding_new_idl_interface) {
group("generate_bindings_modules_v8_partial_interfaces_for_testing") {
}
} else {
idl_compiler("generate_bindings_modules_v8_partial_interfaces_for_testing") {
sources = webcore_testing_idl_with_modules_dependency_files
output_dir = bindings_modules_v8_output_dir
output_name_suffix = "_partial"
target_component = "modules"
}
}
if (use_blink_v8_binding_new_idl_interface) {
group("bindings_modules_origin_trial_features") {
}
} else {
generate_origin_trial_features("bindings_modules_origin_trial_features") {
sources = modules_idl_files + modules_generated_dependency_idl_files +
modules_dependency_idl_files
component = "modules"
output_dir = bindings_modules_output_dir + "/v8"
deps = [
"//third_party/blink/renderer/bindings:global_constructors_idls",
"//third_party/blink/renderer/bindings/modules:interfaces_info_modules",
"//third_party/blink/renderer/bindings/modules:modules_global_constructors_idls",
]
}
}
if (use_blink_v8_binding_new_idl_interface) {
group("bindings_modules_v8_generated_init_partial") {
}
} else {
action("bindings_modules_v8_generated_init_partial") {
script = "$bindings_scripts_dir/generate_init_partial_interfaces.py"
inputs = [ "$bindings_output_dir/interfaces_info.pickle" ]
outputs = [ bindings_modules_generated_init_partial_interfaces_file ]
# Put the IDL file list in a response file to avoid command-line limits.
response_file_contents =
rebase_path(core_interface_idl_files_modules_dependent, root_build_dir)
args = [
"--idl-files-list",
"{{response_file_name}}",
"--output",
rebase_path(bindings_modules_generated_init_partial_interfaces_file,
root_build_dir),
]
deps = [ "//third_party/blink/renderer/bindings:interfaces_info" ]
}
}
# Note that this intentionally depends on the generator target of the mojom
# target instead of the mojom target itself directly. This is to ensure that the
# dependencies are header-only and don't link against any bindings code.
group("generate_mojo_bindings") {
visibility = [] # Allow re-assignment of list.
visibility = [ ":*" ]
deps = [
"//device/gamepad/public/mojom:mojom_blink_headers",
"//device/vr/public/mojom:vr_service_blink_headers",
"//media/capture/mojom:image_capture_blink_headers",
"//media/midi:mojo_blink_headers",
"//services/device/public/mojom:generic_sensor_headers",
"//services/device/public/mojom:mojom_blink_headers",
"//services/device/public/mojom:usb_blink_headers",
"//services/shape_detection/public/mojom:mojom_blink_headers",
# IndexedDB Mojom Blink headers are provided by the mojom_modules
# target.
"//third_party/blink/public/mojom:mojom_modules_blink_headers",
]
}
blink_modules_sources("bindings_modules_impl") {
# ":generate_bindings_modules_v8_partial_interfaces_for_testing" is not
# included here.
sources = get_target_outputs(":bindings_modules_impl_generated")
if (!use_blink_v8_binding_new_idl_callback_interface ||
!use_blink_v8_binding_new_idl_dictionary ||
!use_blink_v8_binding_new_idl_interface) {
sources += get_target_outputs(":generate_bindings_modules_v8_interfaces")
}
if (!use_blink_v8_binding_new_idl_interface) {
sources +=
get_target_outputs(":generate_bindings_modules_v8_partial_interfaces") +
get_target_outputs(":bindings_modules_v8_generated_init_partial") +
get_target_outputs(":bindings_modules_origin_trial_features")
}
deps = [
":bindings_modules_origin_trial_features",
":bindings_modules_v8_generated",
":generate_mojo_bindings",
":generated",
"//third_party/blink/renderer/modules/mediarecorder:buildflags",
"//third_party/dawn/src/dawn:dawn_headers",
]
}
action("generate_v8_context_snapshot_external_references") {
script = "$bindings_scripts_dir/generate_v8_context_snapshot_external_references.py"
idl_files =
core_interface_idl_files_core_only +
core_interface_idl_files_modules_dependent + modules_definition_idl_files
output = bindings_generated_v8_context_snapshot_external_references_file
inputs = idl_files + [ script ]
outputs = [ output ]
response_file_contents = rebase_path(idl_files, root_build_dir)
args = [
"--cache-dir",
rebase_path(bindings_scripts_output_dir, root_build_dir),
"--output",
rebase_path(output, root_build_dir),
"--idl-files-list",
"{{response_file_name}}",
"--info-dir",
rebase_path("$bindings_output_dir", root_build_dir),
"--target-component",
"modules",
]
deps = [
"//third_party/blink/renderer/bindings:interfaces_info",
"//third_party/blink/renderer/bindings/scripts:cached_jinja_templates",
"//third_party/blink/renderer/bindings/scripts:cached_lex_yacc_tables",
]
}