Commit dd219210 authored by brettw's avatar brettw Committed by Commit bot

Refactor inspector protocol compiles.

This removes the duplication of outputs from core/inspector:protocol_sources to
the compiled version in core:core_generated. A new target is created
core/inspector:protocol that uses get_target_outputs on :protocol_sources to
avoid duplicating the sources list.

To make this easier to implement, the core_config_add and core_config_remove
configs list were moved to core.gni so it can be shared with multiple core
build files.

The inspector_protocol.gni file was changed from listing the sources to
defining a template to run the script. This elimiates some duplicated code
between the two users of this script.

BUG=

Review-Url: https://codereview.chromium.org/2294123002
Cr-Commit-Position: refs/heads/master@{#415777}
parent 5738e49a
......@@ -2,7 +2,6 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/chrome_build.gni")
import("//build/config/chromecast_build.gni")
import("//build/config/ui.gni")
import("//build/split_static_library.gni")
......@@ -21,30 +20,6 @@ visibility = [ "//third_party/WebKit/Source/*" ]
rel_blink_core_gen_dir = rebase_path(blink_core_output_dir, root_build_dir)
# Compute the optimization level. The GYP code sets "optimize: max" which sets
# speed-over-size optimization for official builds on Windows only. The GN's
# build optimize_max config applies this optimization on all platforms, so
# compute how to modify the config list to duplicate the GYP behavior.
if (is_debug || !is_win || !is_official_build) {
# NOP.
core_config_add = []
core_config_remove = []
} else {
core_config_remove = [ "//build/config/compiler:default_optimization" ]
core_config_add = [ "//build/config/compiler:optimize_max" ]
}
# Core targets also get wexit time destructors.
core_config_add += [
"//build/config/compiler:wexit_time_destructors",
"//third_party/WebKit/Source:non_test_config",
]
if (remove_webcore_debug_symbols) {
core_config_remove += [ "//build/config/compiler:default_symbols" ]
core_config_add += [ "//build/config/compiler:no_symbols" ]
}
# Config for code that builds as part of core.
config("config") {
defines = [ "BLINK_CORE_IMPLEMENTATION=1" ]
......@@ -59,7 +34,6 @@ config("config") {
defines += [ "BLINK_MEDIA_LOG=DVLOG(2)" ]
}
}
core_config_add += [ ":config" ]
config("core_include_dirs") {
include_dirs = [
......@@ -424,35 +398,6 @@ target(link_target_type, "core_generated") {
"$blink_core_output_dir/InspectorOverridesInl.h",
"$blink_core_output_dir/InstrumentingAgents.h",
# Additional .cpp files from the inspector:protocol_sources list.
"$blink_core_output_dir/inspector/protocol/Accessibility.cpp",
"$blink_core_output_dir/inspector/protocol/Animation.cpp",
"$blink_core_output_dir/inspector/protocol/ApplicationCache.cpp",
"$blink_core_output_dir/inspector/protocol/CSS.cpp",
"$blink_core_output_dir/inspector/protocol/CacheStorage.cpp",
"$blink_core_output_dir/inspector/protocol/DOM.cpp",
"$blink_core_output_dir/inspector/protocol/DOMDebugger.cpp",
"$blink_core_output_dir/inspector/protocol/DOMStorage.cpp",
"$blink_core_output_dir/inspector/protocol/Database.cpp",
"$blink_core_output_dir/inspector/protocol/DeviceOrientation.cpp",
"$blink_core_output_dir/inspector/protocol/Emulation.cpp",
"$blink_core_output_dir/inspector/protocol/IO.cpp",
"$blink_core_output_dir/inspector/protocol/IndexedDB.cpp",
"$blink_core_output_dir/inspector/protocol/Input.cpp",
"$blink_core_output_dir/inspector/protocol/Inspector.cpp",
"$blink_core_output_dir/inspector/protocol/LayerTree.cpp",
"$blink_core_output_dir/inspector/protocol/Log.cpp",
"$blink_core_output_dir/inspector/protocol/Memory.cpp",
"$blink_core_output_dir/inspector/protocol/Network.cpp",
"$blink_core_output_dir/inspector/protocol/Page.cpp",
"$blink_core_output_dir/inspector/protocol/Protocol.cpp",
"$blink_core_output_dir/inspector/protocol/Rendering.cpp",
"$blink_core_output_dir/inspector/protocol/Security.cpp",
"$blink_core_output_dir/inspector/protocol/ServiceWorker.cpp",
"$blink_core_output_dir/inspector/protocol/Storage.cpp",
"$blink_core_output_dir/inspector/protocol/Tracing.cpp",
"$blink_core_output_dir/inspector/protocol/Worker.cpp",
# Additional .cpp files for SVG.
"$blink_core_output_dir/SVGElementFactory.cpp",
......@@ -482,7 +427,7 @@ target(link_target_type, "core_generated") {
":make_core_generated",
":prerequisites",
"inspector:instrumentation_sources",
"inspector:protocol_sources",
"inspector:protocol",
"//gin",
"//skia",
"//third_party/WebKit/Source/bindings/core/v8:bindings_core_v8_generated",
......
......@@ -2,8 +2,37 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/chrome_build.gni")
import("//third_party/WebKit/Source/config.gni")
blink_core_output_dir = "$root_gen_dir/blink/core"
# This file sets core_config_add and core_config_remove lists of configs to
# modify the default lists of configs set in the build as appropriate for core
# targets. This avoids duplicating logic across many targets.
core_config_add = [
"//build/config/compiler:wexit_time_destructors",
"//third_party/WebKit/Source:config",
"//third_party/WebKit/Source:non_test_config",
"//third_party/WebKit/Source/core:config",
]
core_config_remove = []
# Compute the optimization level. The GYP code sets "optimize: max" which sets
# speed-over-size optimization for official builds on Windows only. The GN's
# build optimize_max config applies this optimization on all platforms, so
# compute how to modify the config list to duplicate the GYP behavior.
# TODO revisit this behavior, as the Windows-specific part seems suspicious.
if (is_win && is_official_build) {
core_config_remove += [ "//build/config/compiler:default_optimization" ]
core_config_add += [ "//build/config/compiler:optimize_max" ]
}
if (remove_webcore_debug_symbols) {
core_config_remove += [ "//build/config/compiler:default_symbols" ]
core_config_add += [ "//build/config/compiler:no_symbols" ]
}
# This file is the GN version of core.gypi. We rebase most paths to be absolute
# so these lists can be used by BUILD files in different directories without
# worrying about the base directory.
......
......@@ -31,84 +31,93 @@ action("instrumentation_sources") {
# inspector protocol -----------------------------------------------------------
action("protocol_sources") {
script = "../../platform/inspector_protocol/CodeGenerator.py"
deps = [
":protocol_version",
]
sources = inspector_protocol_sources
inspector_protocol_generate("protocol_sources") {
out_dir = blink_core_output_dir
config_file = "inspector_protocol_config.json"
inputs = [
"browser_protocol.json",
"../../platform/v8_inspector/js_protocol.json",
"inspector_protocol_config.json",
]
# These are relative to blink_core_output_dir.
outputs = [
"$blink_core_output_dir/inspector/protocol/Forward.h",
"$blink_core_output_dir/inspector/protocol/Protocol.cpp",
"$blink_core_output_dir/inspector/protocol/Protocol.h",
"$blink_core_output_dir/inspector/protocol/Accessibility.cpp",
"$blink_core_output_dir/inspector/protocol/Accessibility.h",
"$blink_core_output_dir/inspector/protocol/Animation.cpp",
"$blink_core_output_dir/inspector/protocol/Animation.h",
"$blink_core_output_dir/inspector/protocol/ApplicationCache.cpp",
"$blink_core_output_dir/inspector/protocol/ApplicationCache.h",
"$blink_core_output_dir/inspector/protocol/CacheStorage.cpp",
"$blink_core_output_dir/inspector/protocol/CacheStorage.h",
"$blink_core_output_dir/inspector/protocol/CSS.cpp",
"$blink_core_output_dir/inspector/protocol/CSS.h",
"$blink_core_output_dir/inspector/protocol/Database.cpp",
"$blink_core_output_dir/inspector/protocol/Database.h",
"$blink_core_output_dir/inspector/protocol/Debugger.h",
"$blink_core_output_dir/inspector/protocol/DeviceOrientation.cpp",
"$blink_core_output_dir/inspector/protocol/DeviceOrientation.h",
"$blink_core_output_dir/inspector/protocol/DOM.cpp",
"$blink_core_output_dir/inspector/protocol/DOMDebugger.cpp",
"$blink_core_output_dir/inspector/protocol/DOMDebugger.h",
"$blink_core_output_dir/inspector/protocol/DOM.h",
"$blink_core_output_dir/inspector/protocol/DOMStorage.cpp",
"$blink_core_output_dir/inspector/protocol/DOMStorage.h",
"$blink_core_output_dir/inspector/protocol/Emulation.cpp",
"$blink_core_output_dir/inspector/protocol/Emulation.h",
"$blink_core_output_dir/inspector/protocol/IndexedDB.cpp",
"$blink_core_output_dir/inspector/protocol/IndexedDB.h",
"$blink_core_output_dir/inspector/protocol/Input.cpp",
"$blink_core_output_dir/inspector/protocol/Input.h",
"$blink_core_output_dir/inspector/protocol/Inspector.cpp",
"$blink_core_output_dir/inspector/protocol/Inspector.h",
"$blink_core_output_dir/inspector/protocol/IO.cpp",
"$blink_core_output_dir/inspector/protocol/IO.h",
"$blink_core_output_dir/inspector/protocol/LayerTree.cpp",
"$blink_core_output_dir/inspector/protocol/LayerTree.h",
"$blink_core_output_dir/inspector/protocol/Log.cpp",
"$blink_core_output_dir/inspector/protocol/Log.h",
"$blink_core_output_dir/inspector/protocol/Memory.cpp",
"$blink_core_output_dir/inspector/protocol/Memory.h",
"$blink_core_output_dir/inspector/protocol/Network.cpp",
"$blink_core_output_dir/inspector/protocol/Network.h",
"$blink_core_output_dir/inspector/protocol/Page.cpp",
"$blink_core_output_dir/inspector/protocol/Page.h",
"$blink_core_output_dir/inspector/protocol/Rendering.cpp",
"$blink_core_output_dir/inspector/protocol/Rendering.h",
"$blink_core_output_dir/inspector/protocol/Runtime.h",
"$blink_core_output_dir/inspector/protocol/Security.cpp",
"$blink_core_output_dir/inspector/protocol/Security.h",
"$blink_core_output_dir/inspector/protocol/ServiceWorker.cpp",
"$blink_core_output_dir/inspector/protocol/ServiceWorker.h",
"$blink_core_output_dir/inspector/protocol/Storage.cpp",
"$blink_core_output_dir/inspector/protocol/Storage.h",
"$blink_core_output_dir/inspector/protocol/Tracing.cpp",
"$blink_core_output_dir/inspector/protocol/Tracing.h",
"$blink_core_output_dir/inspector/protocol/Worker.cpp",
"$blink_core_output_dir/inspector/protocol/Worker.h",
"inspector/protocol/Accessibility.cpp",
"inspector/protocol/Accessibility.h",
"inspector/protocol/Animation.cpp",
"inspector/protocol/Animation.h",
"inspector/protocol/ApplicationCache.cpp",
"inspector/protocol/ApplicationCache.h",
"inspector/protocol/CacheStorage.cpp",
"inspector/protocol/CacheStorage.h",
"inspector/protocol/CSS.cpp",
"inspector/protocol/CSS.h",
"inspector/protocol/Database.cpp",
"inspector/protocol/Database.h",
"inspector/protocol/Debugger.h",
"inspector/protocol/DeviceOrientation.cpp",
"inspector/protocol/DeviceOrientation.h",
"inspector/protocol/DOM.cpp",
"inspector/protocol/DOMDebugger.cpp",
"inspector/protocol/DOMDebugger.h",
"inspector/protocol/DOM.h",
"inspector/protocol/DOMStorage.cpp",
"inspector/protocol/DOMStorage.h",
"inspector/protocol/Emulation.cpp",
"inspector/protocol/Emulation.h",
"inspector/protocol/Forward.h",
"inspector/protocol/IndexedDB.cpp",
"inspector/protocol/IndexedDB.h",
"inspector/protocol/Input.cpp",
"inspector/protocol/Input.h",
"inspector/protocol/Inspector.cpp",
"inspector/protocol/Inspector.h",
"inspector/protocol/IO.cpp",
"inspector/protocol/IO.h",
"inspector/protocol/LayerTree.cpp",
"inspector/protocol/LayerTree.h",
"inspector/protocol/Log.cpp",
"inspector/protocol/Log.h",
"inspector/protocol/Memory.cpp",
"inspector/protocol/Memory.h",
"inspector/protocol/Network.cpp",
"inspector/protocol/Network.h",
"inspector/protocol/Page.cpp",
"inspector/protocol/Page.h",
"inspector/protocol/Protocol.cpp",
"inspector/protocol/Protocol.h",
"inspector/protocol/Rendering.cpp",
"inspector/protocol/Rendering.h",
"inspector/protocol/Runtime.h",
"inspector/protocol/Security.cpp",
"inspector/protocol/Security.h",
"inspector/protocol/ServiceWorker.cpp",
"inspector/protocol/ServiceWorker.h",
"inspector/protocol/Storage.cpp",
"inspector/protocol/Storage.h",
"inspector/protocol/Tracing.cpp",
"inspector/protocol/Tracing.h",
"inspector/protocol/Worker.cpp",
"inspector/protocol/Worker.h",
]
args = [
"--jinja_dir",
rebase_path("../../../../", root_build_dir), # jinja is in chromium's third_party
"--output_base",
rebase_path(blink_core_output_dir, root_build_dir),
"--config",
rebase_path("inspector_protocol_config.json", root_build_dir),
deps = [
":protocol_version",
]
}
# Compiles the sources generated above.
source_set("protocol") {
sources = get_target_outputs(":protocol_sources")
configs -= core_config_remove
configs +=
core_config_add + [ "//third_party/WebKit/Source/core:core_include_dirs" ]
deps = [
":protocol_sources",
"//third_party/WebKit/Source/wtf",
]
}
......
......@@ -192,44 +192,39 @@ executable("character_data_generator") {
# Inspector protocol
action("inspector_protocol_sources") {
script = "inspector_protocol/CodeGenerator.py"
deps = [
":inspector_protocol_compatibility",
]
sources = inspector_protocol_sources
inspector_protocol_generate("inspector_protocol_sources") {
out_dir = blink_platform_output_dir
config_file = "v8_inspector/inspector_protocol_config.json"
inputs = [
"v8_inspector/js_protocol.json",
"v8_inspector/inspector_protocol_config.json",
]
# This are relative to blink_platform_output_dir.
outputs = [
"$blink_platform_output_dir/v8_inspector/protocol/Forward.h",
"$blink_platform_output_dir/v8_inspector/protocol/Protocol.cpp",
"$blink_platform_output_dir/v8_inspector/protocol/Protocol.h",
"$blink_platform_output_dir/v8_inspector/protocol/Console.cpp",
"$blink_platform_output_dir/v8_inspector/protocol/Console.h",
"$blink_platform_output_dir/v8_inspector/protocol/Debugger.cpp",
"$blink_platform_output_dir/v8_inspector/protocol/Debugger.h",
"$blink_platform_output_dir/v8_inspector/protocol/HeapProfiler.cpp",
"$blink_platform_output_dir/v8_inspector/protocol/HeapProfiler.h",
"$blink_platform_output_dir/v8_inspector/protocol/Profiler.cpp",
"$blink_platform_output_dir/v8_inspector/protocol/Profiler.h",
"$blink_platform_output_dir/v8_inspector/protocol/Runtime.cpp",
"$blink_platform_output_dir/v8_inspector/protocol/Runtime.h",
"$blink_platform_output_dir/v8_inspector/protocol/Schema.cpp",
"$blink_platform_output_dir/v8_inspector/protocol/Schema.h",
"$blink_platform_output_dir/v8_inspector/public/protocol/Debugger.h",
"$blink_platform_output_dir/v8_inspector/public/protocol/Runtime.h",
"$blink_platform_output_dir/v8_inspector/public/protocol/Schema.h",
"v8_inspector/protocol/Forward.h",
"v8_inspector/protocol/Protocol.cpp",
"v8_inspector/protocol/Protocol.h",
"v8_inspector/protocol/Console.cpp",
"v8_inspector/protocol/Console.h",
"v8_inspector/protocol/Debugger.cpp",
"v8_inspector/protocol/Debugger.h",
"v8_inspector/protocol/HeapProfiler.cpp",
"v8_inspector/protocol/HeapProfiler.h",
"v8_inspector/protocol/Profiler.cpp",
"v8_inspector/protocol/Profiler.h",
"v8_inspector/protocol/Runtime.cpp",
"v8_inspector/protocol/Runtime.h",
"v8_inspector/protocol/Schema.cpp",
"v8_inspector/protocol/Schema.h",
"v8_inspector/public/protocol/Debugger.h",
"v8_inspector/public/protocol/Runtime.h",
"v8_inspector/public/protocol/Schema.h",
]
args = [
"--jinja_dir",
rebase_path("../../../", root_build_dir), # jinja is in chromium's third_party
"--output_base",
rebase_path(blink_platform_output_dir, root_build_dir),
"--config",
rebase_path("v8_inspector/inspector_protocol_config.json", root_build_dir),
deps = [
":inspector_protocol_compatibility",
]
}
......
......@@ -2,31 +2,81 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
inspector_protocol_sources =
get_path_info([
"lib/Allocator_h.template",
"lib/Array_h.template",
"lib/BackendCallback_h.template",
"lib/Collections_h.template",
"lib/DispatcherBase_cpp.template",
"lib/DispatcherBase_h.template",
"lib/ErrorSupport_cpp.template",
"lib/ErrorSupport_h.template",
"lib/Forward_h.template",
"lib/FrontendChannel_h.template",
"lib/Maybe_h.template",
"lib/Object_cpp.template",
"lib/Object_h.template",
"lib/Parser_cpp.template",
"lib/Parser_h.template",
"lib/Protocol_cpp.template",
"lib/ValueConversions_h.template",
"lib/Values_cpp.template",
"lib/Values_h.template",
"templates/Exported_h.template",
"templates/Imported_h.template",
"templates/TypeBuilder_cpp.template",
"templates/TypeBuilder_h.template",
"CodeGenerator.py",
],
"abspath")
# This template will generate inspector protocol source code. The code will
# not be compiled, use get_target_outputs(<name>) to compile them.
#
# Inputs
#
# config_file (required)
# Path to json file specifying inspector protocol configuration.
#
# out_dir (required)
# Path to put the generated files in. It must be inside output or
# generated file directory.
#
# outputs (required)
# Files generated. Relative to out_dir.
#
# inputs (optional)
# Extra inputs specified by the config file.
template("inspector_protocol_generate") {
assert(defined(invoker.config_file))
assert(defined(invoker.out_dir))
assert(defined(invoker.outputs))
inspector_protocol_dir =
"//third_party/WebKit/Source/platform/inspector_protocol"
action(target_name) {
script = "$inspector_protocol_dir/CodeGenerator.py"
inputs = [
invoker.config_file,
"$inspector_protocol_dir/lib/Allocator_h.template",
"$inspector_protocol_dir/lib/Array_h.template",
"$inspector_protocol_dir/lib/BackendCallback_h.template",
"$inspector_protocol_dir/lib/Collections_h.template",
"$inspector_protocol_dir/lib/DispatcherBase_cpp.template",
"$inspector_protocol_dir/lib/DispatcherBase_h.template",
"$inspector_protocol_dir/lib/ErrorSupport_cpp.template",
"$inspector_protocol_dir/lib/ErrorSupport_h.template",
"$inspector_protocol_dir/lib/Forward_h.template",
"$inspector_protocol_dir/lib/FrontendChannel_h.template",
"$inspector_protocol_dir/lib/Maybe_h.template",
"$inspector_protocol_dir/lib/Object_cpp.template",
"$inspector_protocol_dir/lib/Object_h.template",
"$inspector_protocol_dir/lib/Parser_cpp.template",
"$inspector_protocol_dir/lib/Parser_h.template",
"$inspector_protocol_dir/lib/Protocol_cpp.template",
"$inspector_protocol_dir/lib/ValueConversions_h.template",
"$inspector_protocol_dir/lib/Values_cpp.template",
"$inspector_protocol_dir/lib/Values_h.template",
"$inspector_protocol_dir/templates/Exported_h.template",
"$inspector_protocol_dir/templates/Imported_h.template",
"$inspector_protocol_dir/templates/TypeBuilder_cpp.template",
"$inspector_protocol_dir/templates/TypeBuilder_h.template",
]
if (defined(invoker.inputs)) {
inputs += invoker.inputs
}
args = [
"--jinja_dir",
rebase_path("//third_party/", root_build_dir), # jinja is in chromium's third_party
"--output_base",
rebase_path(invoker.out_dir, root_build_dir),
"--config",
rebase_path(invoker.config_file, root_build_dir),
]
outputs = get_path_info(rebase_path(invoker.outputs, ".", invoker.out_dir),
"abspath")
forward_variables_from(invoker,
[
"visibility",
"deps",
"public_deps",
])
}
}
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