1 # Copyright 2014 The Chromium Authors. All rights reserved. 2 # Use of this source code is governed by a BSD-style license that can be 3 # found in the LICENSE file. 4 5 gypi_values = exec_script( 6 "//build/gypi_to_gn.py", 7 [ rebase_path("devtools.gypi") ], 8 "scope", 9 [ "devtools.gypi" ]) 10 11 # Some of the files in the .gypi use GYP variable expansions, go through and 12 # fix them. 13 devtools_core_base_js_files = gypi_values.devtools_core_base_js_files - [ 14 "<@(devtools_main_js_files)", 15 "<@(devtools_standalone_files)", 16 ] + gypi_values.devtools_main_js_files + gypi_values.devtools_standalone_files 17 18 devtools_core_js_files = 19 devtools_core_base_js_files + 20 gypi_values.devtools_common_js_files + 21 gypi_values.devtools_sdk_js_files + 22 gypi_values.devtools_ui_js_files + 23 gypi_values.devtools_components_js_files 24 25 devtools_extensions_js_files = gypi_values.devtools_extensions_js_files - 26 [ "<@(devtools_extension_api_files)" ] + 27 gypi_values.devtools_extension_api_files 28 29 devtools_modules_js_files = 30 gypi_values.devtools_console_js_files + 31 gypi_values.devtools_search_js_files + 32 gypi_values.devtools_devices_js_files + 33 gypi_values.devtools_elements_js_files + 34 devtools_extensions_js_files + 35 gypi_values.devtools_resources_js_files + 36 gypi_values.devtools_network_js_files + 37 gypi_values.devtools_source_frame_js_files + 38 gypi_values.devtools_sources_js_files + 39 gypi_values.devtools_timeline_js_files + 40 gypi_values.devtools_profiler_js_files + 41 gypi_values.devtools_audits_js_files + 42 gypi_values.devtools_layers_js_files + 43 gypi_values.devtools_heap_snapshot_worker_js_files + 44 gypi_values.devtools_temp_storage_shared_worker_js_files + 45 gypi_values.devtools_script_formatter_worker_js_files + 46 gypi_values.devtools_uglify_files 47 48 all_devtools_files = 49 devtools_core_js_files + 50 devtools_modules_js_files + 51 gypi_values.devtools_cm_css_files + 52 gypi_values.devtools_cm_js_files + 53 gypi_values.devtools_module_json_files 54 55 #------------------------------------------------------------------------------- 56 57 visibility = "//third_party/WebKit/*" 58 59 # Probably need to parameterize this. If we set it to true, there will be some 60 # further work in the scripts below. 61 debug_devtools = false 62 63 group("devtools_frontend_resources") { 64 deps = [ 65 ":build_audits_module", 66 ":build_console_module", 67 ":build_core_module", 68 ":build_devices_module", 69 ":build_elements_module", 70 ":build_extensions_module", 71 ":build_heap_snapshot_worker_module", 72 ":build_layers_module", 73 ":build_network_module", 74 ":build_profiler_module", 75 ":build_resources_module", 76 ":build_script_formatter_worker_module", 77 ":build_search_module", 78 ":build_settings_module", 79 ":build_source_frame_module", 80 ":build_sources_module", 81 ":build_temp_storage_shared_worker_module", 82 ":build_timeline_module", 83 ":copy_inspector_images", 84 ":devtools_html", 85 ":frontend_protocol_sources", 86 ":supported_css_properties", 87 ] 88 89 if (debug_devtools) { 90 deps += [ ":concatenated_devtools_css" ] 91 } 92 } 93 94 copy("copy_inspector_images") { 95 sources = gypi_values.devtools_image_files 96 outputs = [ "$root_out_dir/resources/inspector/Images/{{source_file_part}}" ] 97 } 98 99 # TODO(GYP) need debug_devtools support (this runs somewhat differently). 100 action("generate_devtools_grd") { 101 script = "scripts/generate_devtools_grd.py" 102 103 input_pages = [ 104 "$root_out_dir/resources/inspector/devtools.html", 105 "$root_out_dir/resources/inspector/main/Main.js", 106 "$root_out_dir/resources/inspector/search/AdvancedSearchView.js", 107 "$root_out_dir/resources/inspector/console/ConsolePanel.js", 108 "$root_out_dir/resources/inspector/elements/ElementsPanel.js", 109 "$root_out_dir/resources/inspector/extensions/ExtensionServer.js", 110 "$root_out_dir/resources/inspector/resources/ResourcesPanel.js", 111 "$root_out_dir/resources/inspector/network/NetworkPanel.js", 112 "$root_out_dir/resources/inspector/source_frame/SourceFrame.js", 113 "$root_out_dir/resources/inspector/sources/SourcesPanel.js", 114 "$root_out_dir/resources/inspector/timeline/TimelinePanel.js", 115 "$root_out_dir/resources/inspector/profiler/ProfilesPanel.js", 116 "$root_out_dir/resources/inspector/audits/AuditsPanel.js", 117 "$root_out_dir/resources/inspector/layers/LayersPanel.js", 118 "$root_out_dir/resources/inspector/profiler/heap_snapshot_worker/HeapSnapshotWorker.js", 119 "$root_out_dir/resources/inspector/script_formatter_worker/ScriptFormatterWorker.js", 120 "$root_out_dir/resources/inspector/temp_storage_shared_worker/TempStorageSharedWorker.js", 121 "$root_out_dir/resources/inspector/devices/DevicesView.js", 122 "$root_out_dir/resources/inspector/inspector.css", 123 "$root_out_dir/resources/inspector/devtools_extension_api.js", 124 ] + gypi_values.devtools_standalone_files + gypi_values.devtools_cm_css_files 125 126 images = gypi_values.devtools_image_files 127 images_path = "front_end/Images" 128 129 source_prereqs = input_pages + images 130 131 outfile = "$root_gen_dir/devtools/devtools_resources.grd" 132 outputs = [ outfile ] 133 134 relative_path_dirs = [ 135 "$root_out_dir/resources/inspector", 136 "frontend", 137 ] 138 139 args = rebase_path(input_pages, root_build_dir) + [ 140 "--relative_path_dirs" ] + 141 rebase_path(relative_path_dirs, root_build_dir) + [ 142 "--images", rebase_path(images_path, root_build_dir), 143 "--output", rebase_path(outfile, root_build_dir), 144 ] 145 146 deps = [ 147 ":devtools_html", 148 ":devtools_extension_api", 149 ":devtools_frontend_resources", 150 ] 151 } 152 153 action("devtools_html") { 154 script = "scripts/generate_devtools_html.py" 155 156 source_prereqs = [ "front_end/inspector.html"] 157 outputs = [ "$root_out_dir/resources/inspector/devtools.html"] 158 159 args = rebase_path(source_prereqs, root_build_dir) + 160 rebase_path(outputs, root_build_dir) 161 162 if (debug_devtools) { 163 args += [ "1" ] 164 } else { 165 args += [ "0" ] 166 } 167 } 168 169 action("devtools_extension_api") { 170 script = "scripts/generate_devtools_extension_api.py" 171 172 source_prereqs = gypi_values.devtools_extension_api_files 173 outputs = [ "$root_out_dir/resources/inspector/devtools_extension_api.js" ] 174 175 args = rebase_path(outputs, root_build_dir) + 176 rebase_path(gypi_values.devtools_extension_api_files, root_build_dir) 177 } 178 179 action("supported_css_properties") { 180 script = "scripts/generate_supported_css.py" 181 182 source_prereqs = [ 183 "../core/css/CSSPropertyNames.in", 184 "../core/css/SVGCSSPropertyNames.in", 185 "../core/css/CSSShorthands.in", 186 ] 187 188 outputs = [ 189 "$root_gen_dir/blink/SupportedCSSProperties.js" 190 ] 191 192 args = rebase_path(source_prereqs, root_build_dir) + 193 rebase_path(outputs, root_build_dir) 194 } 195 196 action("frontend_protocol_sources") { 197 script = "scripts/CodeGeneratorFrontend.py" 198 199 source_prereqs = [ "protocol.json" ] 200 outputs = [ "$root_gen_dir/blink/InspectorBackendCommands.js" ] 201 202 args = rebase_path(source_prereqs, root_build_dir) + [ 203 "--output_js_dir", rebase_path("$root_gen_dir/blink", root_build_dir), 204 ] 205 } 206 207 # Runs the inline_js_imports script. 208 # input: (String) The input .js file to read. 209 # imported_files: (List of strings) The list of files the input depends on. 210 # output: (String) The .js file to write. 211 template("inline_js_imports") { 212 assert(defined(invoker.input), target_name) 213 assert(defined(invoker.imported_files), target_name) 214 assert(defined(invoker.output), target_name) 215 216 action(target_name) { 217 script = "scripts/inline_js_imports.py" 218 219 source_prereqs = [ invoker.input ] + invoker.imported_files 220 outputs = [ invoker.output ] 221 222 args = [ 223 rebase_path(invoker.input, root_build_dir), 224 rebase_path(invoker.output, root_build_dir), 225 ] 226 } 227 } 228 229 inline_js_imports("build_audits_module") { 230 input = "front_end/audits/AuditsPanel.js" 231 imported_files = gypi_values.devtools_audits_js_files 232 output = "$root_out_dir/resources/inspector/audits/AuditsPanel.js" 233 } 234 235 action("build_core_module") { 236 script = "scripts/concatenate_js_files.py" 237 input_page = "front_end/inspector.html" 238 source_prereqs = [ 239 input_page, 240 "$root_gen_dir/blink/InspectorBackendCommands.js", 241 "$root_gen_dir/blink/SupportedCSSProperties.js", 242 "$root_gen_dir/blink/common/modules.js", 243 ] + devtools_core_js_files 244 245 search_path = [ 246 "$root_gen_dir/blink", 247 "front_end", 248 ] 249 outputs = [ 250 "$root_out_dir/resources/inspector/main/Main.js", 251 ] 252 253 args = [ 254 rebase_path(input_page, root_build_dir), 255 ] 256 args += rebase_path(search_path, root_build_dir) 257 args += rebase_path(outputs, root_build_dir) 258 259 deps = [ 260 ":devtools_html", 261 ":supported_css_properties", 262 ":frontend_protocol_sources", 263 ":concatenated_module_descriptors", 264 ] 265 } 266 267 inline_js_imports("build_console_module") { 268 input = "front_end/console/ConsolePanel.js" 269 imported_files = gypi_values.devtools_console_js_files 270 output = "$root_out_dir/resources/inspector/console/ConsolePanel.js" 271 } 272 273 inline_js_imports("build_devices_module") { 274 input = "front_end/devices/DevicesView.js" 275 imported_files = gypi_values.devtools_devices_js_files 276 output = "$root_out_dir/resources/inspector/devices/DevicesView.js" 277 } 278 279 inline_js_imports("build_elements_module") { 280 input = "front_end/elements/ElementsPanel.js" 281 imported_files = gypi_values.devtools_elements_js_files 282 output = "$root_out_dir/resources/inspector/elements/ElementsPanel.js" 283 } 284 285 inline_js_imports("build_extensions_module") { 286 input = "front_end/extensions/ExtensionServer.js" 287 imported_files = devtools_extensions_js_files 288 output = "$root_out_dir/resources/inspector/extensions/ExtensionServer.js" 289 } 290 291 inline_js_imports("build_layers_module") { 292 input = "front_end/layers/LayersPanel.js" 293 imported_files = gypi_values.devtools_layers_js_files 294 output = "$root_out_dir/resources/inspector/layers/LayersPanel.js" 295 } 296 297 inline_js_imports("build_network_module") { 298 input = "front_end/network/NetworkPanel.js" 299 imported_files = gypi_values.devtools_network_js_files 300 output = "$root_out_dir/resources/inspector/network/NetworkPanel.js" 301 } 302 303 inline_js_imports("build_profiler_module") { 304 input = "front_end/profiler/ProfilesPanel.js" 305 imported_files = gypi_values.devtools_profiler_js_files 306 output = "$root_out_dir/resources/inspector/profiler/ProfilesPanel.js" 307 } 308 309 inline_js_imports("build_resources_module") { 310 input = "front_end/resources/ResourcesPanel.js" 311 imported_files = gypi_values.devtools_resources_js_files 312 output = "$root_out_dir/resources/inspector/resources/ResourcesPanel.js" 313 } 314 315 inline_js_imports("build_search_module") { 316 input = "front_end/search/AdvancedSearchView.js" 317 imported_files = gypi_values.devtools_search_js_files 318 output = "$root_out_dir/resources/inspector/search/AdvancedSearchView.js" 319 } 320 321 inline_js_imports("build_settings_module") { 322 input = "front_end/settings/SettingsScreen.js" 323 imported_files = gypi_values.devtools_settings_js_files 324 output = "$root_out_dir/resources/inspector/settings/SettingsScreen.js" 325 } 326 327 inline_js_imports("build_source_frame_module") { 328 input = "front_end/source_frame/SourceFrame.js" 329 imported_files = gypi_values.devtools_source_frame_js_files + 330 gypi_values.devtools_cm_js_files 331 output = "$root_out_dir/resources/inspector/source_frame/SourceFrame.js" 332 } 333 334 inline_js_imports("build_sources_module") { 335 input = "front_end/sources/SourcesPanel.js" 336 imported_files = gypi_values.devtools_sources_js_files 337 output = "$root_out_dir/resources/inspector/sources/SourcesPanel.js" 338 } 339 340 inline_js_imports("build_timeline_module") { 341 input = "front_end/timeline/TimelinePanel.js" 342 imported_files = gypi_values.devtools_timeline_js_files 343 output = "$root_out_dir/resources/inspector/timeline/TimelinePanel.js" 344 } 345 346 inline_js_imports("build_heap_snapshot_worker_module") { 347 input = "front_end/profiler/heap_snapshot_worker/HeapSnapshotWorker.js" 348 imported_files = gypi_values.devtools_heap_snapshot_worker_js_files 349 output = "$root_out_dir/resources/inspector/profiler/heap_snapshot_worker/HeapSnapshotWorker.js" 350 } 351 352 inline_js_imports("build_script_formatter_worker_module") { 353 input = "front_end/script_formatter_worker/ScriptFormatterWorker.js" 354 imported_files = gypi_values.devtools_uglify_files 355 output = "$root_out_dir/resources/inspector/script_formatter_worker/ScriptFormatterWorker.js" 356 } 357 358 inline_js_imports("build_temp_storage_shared_worker_module") { 359 input = "front_end/temp_storage_shared_worker/TempStorageSharedWorker.js" 360 imported_files = gypi_values.devtools_temp_storage_shared_worker_js_files 361 output = "$root_out_dir/resources/inspector/temp_storage_shared_worker/TempStorageSharedWorker.js" 362 } 363 364 action("concatenated_module_descriptors") { 365 script = "scripts/concatenate_module_descriptors.py" 366 367 input = "front_end/common/modules.js" 368 source_prereqs = [ input ] + gypi_values.devtools_module_json_files 369 outputs = [ "$root_gen_dir/blink/common/modules.js" ] 370 371 args = rebase_path([ input ] + outputs + gypi_values.devtools_module_json_files, root_build_dir) 372 } 373 374 action("concatenated_devtools_css") { 375 script = "scripts/concatenate_css_files.py" 376 377 input_page = "front_end/inspector.html" 378 source_prereqs = [ input_page ] + all_devtools_files 379 search_path = [ "front_end" ] 380 381 outputs = [ "$root_out_dir/resources/inspector/inspector.css" ] 382 383 args = [ rebase_path(input_page, root_build_dir) ] + 384 rebase_path(search_path, root_build_dir) + 385 rebase_path(outputs, root_build_dir) 386 } 387