blob: 6722ea82e20de5efec507ded6f393bec5200a9d1 [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/features.gni")
gypi_values = exec_script(
"//build/gypi_to_gn.py",
[ rebase_path("devtools.gypi") ],
"scope",
[ "devtools.gypi" ])
# Some of the files in the .gypi use GYP variable expansions, go through and
# fix them.
devtools_core_files =
gypi_values.devtools_core_base_files +
gypi_values.devtools_bindings_js_files +
gypi_values.devtools_common_js_files +
gypi_values.devtools_components_js_files +
gypi_values.devtools_emulation_js_files +
gypi_values.devtools_host_js_files +
gypi_values.devtools_main_js_files +
gypi_values.devtools_platform_js_files +
gypi_values.devtools_sdk_js_files +
gypi_values.devtools_toolbox_bootstrap_js_files +
gypi_values.devtools_ui_js_files +
gypi_values.devtools_workspace_js_files +
gypi_values.devtools_core_css_files
devtools_extensions_js_files = gypi_values.devtools_extensions_js_files -
[ "<@(devtools_extension_api_files)" ] +
gypi_values.devtools_extension_api_files
devtools_modules_js_files =
gypi_values.devtools_accessibility_js_files +
gypi_values.devtools_audits_js_files +
gypi_values.devtools_animation_js_files +
gypi_values.devtools_cm_modes_js_files +
gypi_values.devtools_components_lazy_js_files +
gypi_values.devtools_console_js_files +
gypi_values.devtools_devices_js_files +
gypi_values.devtools_diff_js_files +
gypi_values.devtools_elements_js_files +
gypi_values.devtools_emulated_devices_js_files +
devtools_extensions_js_files +
gypi_values.devtools_heap_snapshot_worker_js_files +
gypi_values.devtools_layers_js_files +
gypi_values.devtools_network_js_files +
gypi_values.devtools_profiler_js_files +
gypi_values.devtools_promises_js_files +
gypi_values.devtools_resources_js_files +
gypi_values.devtools_security_js_files +
gypi_values.devtools_screencast_js_files +
gypi_values.devtools_script_formatter_worker_js_files +
gypi_values.devtools_settings_js_files +
gypi_values.devtools_snippets_js_files +
gypi_values.devtools_source_frame_js_files +
gypi_values.devtools_sources_js_files +
gypi_values.devtools_temp_storage_shared_worker_js_files +
gypi_values.devtools_timeline_js_files +
gypi_values.devtools_ui_lazy_js_files
all_devtools_files =
gypi_values.devtools_cm_css_files +
gypi_values.devtools_cm_js_files +
devtools_core_files +
gypi_values.devtools_module_json_files +
devtools_modules_js_files +
gypi_values.devtools_acorn_files
# FIXME: Fix the generate_devtools_grd.py script to accept trailing slashes.
resources_out_dir_no_slash = "$root_out_dir/resources/inspector"
resources_out_dir = resources_out_dir_no_slash + "/"
generated_scripts = [
resources_out_dir + "InspectorBackendCommands.js",
resources_out_dir + "SupportedCSSProperties.js",
]
#-------------------------------------------------------------------------------
visibility = [ "//third_party/WebKit/*" ]
group("devtools_frontend_resources") {
public_deps = [
":copy_compatibility_scripts",
":copy_inspector_images",
":copy_emulated_devices_images",
":devtools_extension_api",
":frontend_protocol_sources",
":supported_css_properties",
":build_applications",
]
if (!debug_devtools) {
# This overwrites application-specific core CSS (devtools.css),
# and thus should be guarded out in Debug builds.
public_deps += [
":concatenated_inspector_css",
":concatenated_toolbox_css",
]
}
}
copy("copy_compatibility_scripts") {
sources = gypi_values.devtools_compatibility_scripts
outputs = [ resources_out_dir + "{{source_file_part}}" ]
}
copy("copy_inspector_images") {
sources = gypi_values.devtools_image_files
outputs = [ resources_out_dir + "Images/{{source_file_part}}" ]
}
copy("copy_emulated_devices_images") {
sources = gypi_values.devtools_emulated_devices_images
outputs = [ resources_out_dir + "emulated_devices/{{source_file_part}}" ]
}
action("generate_devtools_grd") {
script = "scripts/generate_devtools_grd.py"
deps = [ ":devtools_frontend_resources" ]
static_files_list = "$target_gen_dir/devtools_static_grd_files.tmp"
inputs = gypi_values.devtools_image_files + all_devtools_files
inputs += gypi_values.devtools_compatibility_scripts
inputs += [ static_files_list ]
static_files = []
if (debug_devtools) {
# Debug: all files are picked as-is.
generated_files = generated_scripts + [
resources_out_dir + "inspector.html",
resources_out_dir + "toolbox.html",
]
static_files += all_devtools_files + [ "front_end/Runtime.js" ]
} else {
# Release: pick compiled non-remote files and lazy-loaded CSS.
generated_files = [
resources_out_dir + "inspector.css",
resources_out_dir + "inspector.html",
resources_out_dir + "inspector.js",
resources_out_dir + "toolbox.css",
resources_out_dir + "toolbox.html",
resources_out_dir + "toolbox.js",
resources_out_dir + "accessibility_module.js",
resources_out_dir + "audits_module.js",
resources_out_dir + "animation_module.js",
resources_out_dir + "components_lazy_module.js",
resources_out_dir + "console_module.js",
resources_out_dir + "devices_module.js",
resources_out_dir + "diff_module.js",
resources_out_dir + "elements_module.js",
resources_out_dir + "heap_snapshot_worker_module.js",
resources_out_dir + "layers_module.js",
resources_out_dir + "network_module.js",
resources_out_dir + "profiler_module.js",
resources_out_dir + "promises_module.js",
resources_out_dir + "resources_module.js",
resources_out_dir + "security_module.js",
resources_out_dir + "script_formatter_worker_module.js",
resources_out_dir + "settings_module.js",
resources_out_dir + "snippets_module.js",
resources_out_dir + "source_frame_module.js",
resources_out_dir + "sources_module.js",
resources_out_dir + "temp_storage_shared_worker_module.js",
resources_out_dir + "timeline_module.js",
resources_out_dir + "ui_lazy_module.js",
resources_out_dir + "devtools_extension_api.js",
]
}
write_file(static_files_list, rebase_path(static_files, root_build_dir))
images_path = "front_end/Images"
inputs += generated_files
outfile = "$root_gen_dir/devtools/devtools_resources.grd"
outputs = [ outfile ]
relative_path_dirs = [
resources_out_dir_no_slash,
"front_end",
]
args = rebase_path(generated_files, root_build_dir) +
rebase_path(generated_files, root_build_dir) +
rebase_path(gypi_values.devtools_compatibility_scripts, root_build_dir) + [
"--static_files_list", rebase_path(static_files_list, root_build_dir),
"--relative_path_dirs" ] +
rebase_path(relative_path_dirs, root_build_dir) + [
"--images", rebase_path(images_path, root_build_dir),
"--output", rebase_path(outfile, root_build_dir),
]
}
action("devtools_extension_api") {
script = "scripts/generate_devtools_extension_api.py"
inputs = gypi_values.devtools_extension_api_files
outputs = [ resources_out_dir + "devtools_extension_api.js" ]
args = rebase_path(outputs, root_build_dir) +
rebase_path(gypi_values.devtools_extension_api_files, root_build_dir)
}
action("supported_css_properties") {
script = "scripts/generate_supported_css.py"
inputs = [ "../core/css/CSSProperties.in" ]
outputs = [ resources_out_dir + "SupportedCSSProperties.js" ]
args = rebase_path(inputs, root_build_dir) +
rebase_path(outputs, root_build_dir)
}
action("frontend_protocol_sources") {
script = "scripts/CodeGeneratorFrontend.py"
inputs = [ "protocol.json" ]
outputs = [ resources_out_dir + "InspectorBackendCommands.js" ]
args = rebase_path(inputs, root_build_dir) + [
"--output_js_dir",
rebase_path(resources_out_dir, root_build_dir),
]
}
action("build_applications") {
script = "scripts/build_applications.py"
helper_scripts = [
"scripts/modular_build.py",
"scripts/concatenate_application_code.py",
]
inputs = helper_scripts + all_devtools_files + generated_scripts + [
"front_end/inspector.html",
"front_end/toolbox.html",
]
outputs = [
resources_out_dir + "inspector.html",
resources_out_dir + "toolbox.html",
]
deps = [
":supported_css_properties",
":frontend_protocol_sources",
]
if (debug_devtools) {
deps += [ ":copy_debug_non_modules" ]
debug_mode = "1"
} else {
outputs += [
resources_out_dir + "inspector.js",
resources_out_dir + "toolbox.js",
resources_out_dir + "accessibility_module.js",
resources_out_dir + "audits_module.js",
resources_out_dir + "animation_module.js",
resources_out_dir + "cm_modes_module.js",
resources_out_dir + "components_lazy_module.js",
resources_out_dir + "console_module.js",
resources_out_dir + "devices_module.js",
resources_out_dir + "diff_module.js",
resources_out_dir + "elements_module.js",
resources_out_dir + "emulated_devices_module.js",
resources_out_dir + "heap_snapshot_worker_module.js",
resources_out_dir + "layers_module.js",
resources_out_dir + "network_module.js",
resources_out_dir + "profiler_module.js",
resources_out_dir + "promises_module.js",
resources_out_dir + "resources_module.js",
resources_out_dir + "security_module.js",
resources_out_dir + "screencast_module.js",
resources_out_dir + "script_formatter_worker_module.js",
resources_out_dir + "settings_module.js",
resources_out_dir + "snippets_module.js",
resources_out_dir + "source_frame_module.js",
resources_out_dir + "sources_module.js",
resources_out_dir + "temp_storage_shared_worker_module.js",
resources_out_dir + "timeline_module.js",
resources_out_dir + "ui_lazy_module.js",
]
debug_mode = "0"
}
args = [
"inspector", "toolbox",
"--input_path", rebase_path("front_end", root_build_dir),
"--output_path", rebase_path(resources_out_dir, root_build_dir),
"--debug", debug_mode
]
}
if (debug_devtools) {
# Debug: copy non-module directories and core into resources_out_dir as-is.
group("copy_debug_non_modules") {
public_deps = [
":copy_runtime_core",
":copy_acorn_js_files",
":copy_codemirror_files",
]
}
copy("copy_runtime_core") {
sources = gypi_values.devtools_core_base_files +
gypi_values.devtools_core_css_files
outputs = [ resources_out_dir + "/{{source_file_part}}" ]
}
copy("copy_acorn_js_files") {
sources = gypi_values.devtools_acorn_files
outputs = [ resources_out_dir + "acorn/{{source_file_part}}" ]
}
copy("copy_codemirror_files") {
sources = gypi_values.devtools_cm_js_files +
gypi_values.devtools_cm_css_files
outputs = [ resources_out_dir + "cm/{{source_file_part}}" ]
}
}
if (!debug_devtools) {
# Release: Concatenate application CSS.
template("concatenate_css") {
assert(defined(invoker.app_name), target_name)
app_name = invoker.app_name
action(target_name) {
script = "scripts/concatenate_css_files.py"
input_stylesheet = "front_end/" + app_name + ".css"
inputs = [ input_stylesheet ] + gypi_values.devtools_core_css_files
outputs = [ resources_out_dir + app_name + ".css" ]
args = [ rebase_path(input_stylesheet, root_build_dir) ] +
rebase_path(outputs, root_build_dir)
}
}
concatenate_css("concatenated_inspector_css") {
app_name = "inspector"
}
concatenate_css("concatenated_toolbox_css") {
app_name = "toolbox"
}
}