Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 # Instantiate grit. This will produce a script target to run grit, and a | 5 # Instantiate grit. This will produce a script target to run grit, and a |
| 6 # static library that compiles the .cc files. | 6 # static library that compiles the .cc files. |
| 7 # | 7 # |
| 8 # Parameters | 8 # Parameters |
| 9 # | 9 # |
| 10 # source (required) | 10 # source (required) |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 75 # ] | 75 # ] |
| 76 # | 76 # |
| 77 # grit_flags = [ "-E", "foo=bar" ] # Optional extra flags. | 77 # grit_flags = [ "-E", "foo=bar" ] # Optional extra flags. |
| 78 # # You can also put deps here if the grit source depends on generated | 78 # # You can also put deps here if the grit source depends on generated |
| 79 # # files. | 79 # # files. |
| 80 # } | 80 # } |
| 81 import("//build/config/chrome_build.gni") | 81 import("//build/config/chrome_build.gni") |
| 82 import("//build/config/crypto.gni") | 82 import("//build/config/crypto.gni") |
| 83 import("//build/config/features.gni") | 83 import("//build/config/features.gni") |
| 84 import("//build/config/ui.gni") | 84 import("//build/config/ui.gni") |
| 85 import("//build/util/java_action.gni") | |
| 86 import("//third_party/closure_compiler/compile_js2.gni") | |
| 85 | 87 |
| 86 declare_args() { | 88 declare_args() { |
| 87 # Enables used resource whitelist generation. | 89 # Enables used resource whitelist generation. |
| 88 enable_resource_whitelist_generation = false | 90 enable_resource_whitelist_generation = false |
| 89 } | 91 } |
| 90 | 92 |
| 91 grit_defines = [] | 93 grit_defines = [] |
| 94 grit_environment = [] | |
| 92 | 95 |
| 93 # Mac and iOS want Title Case strings. | 96 # Mac and iOS want Title Case strings. |
| 94 use_titlecase_in_grd_files = is_mac || is_ios | 97 use_titlecase_in_grd_files = is_mac || is_ios |
| 95 if (use_titlecase_in_grd_files) { | 98 if (use_titlecase_in_grd_files) { |
| 96 grit_defines += [ | 99 grit_defines += [ |
| 97 "-D", | 100 "-D", |
| 98 "use_titlecase", | 101 "use_titlecase", |
| 99 ] | 102 ] |
| 100 } | 103 } |
| 101 | 104 |
| 102 if (is_chrome_branded) { | 105 if (is_chrome_branded) { |
| 103 grit_defines += [ | 106 grit_defines += [ |
| 104 "-D", | 107 "-D", |
| 105 "_google_chrome", | 108 "_google_chrome", |
| 109 ] | |
| 110 grit_environment += [ | |
| 106 "-E", | 111 "-E", |
| 107 "CHROMIUM_BUILD=google_chrome", | 112 "CHROMIUM_BUILD=google_chrome", |
| 108 ] | 113 ] |
| 109 } else { | 114 } else { |
| 110 grit_defines += [ | 115 grit_defines += [ |
| 111 "-D", | 116 "-D", |
| 112 "_chromium", | 117 "_chromium", |
| 118 ] | |
| 119 grit_environment += [ | |
| 113 "-E", | 120 "-E", |
| 114 "CHROMIUM_BUILD=chromium", | 121 "CHROMIUM_BUILD=chromium", |
| 115 ] | 122 ] |
| 116 } | 123 } |
| 117 | 124 |
| 118 if (is_chromeos) { | 125 if (is_chromeos) { |
| 119 grit_defines += [ | 126 grit_defines += [ |
| 120 "-D", | 127 "-D", |
| 121 "chromeos", | 128 "chromeos", |
| 122 "-D", | 129 "-D", |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 167 } | 174 } |
| 168 | 175 |
| 169 if (enable_image_loader_extension) { | 176 if (enable_image_loader_extension) { |
| 170 grit_defines += [ | 177 grit_defines += [ |
| 171 "-D", | 178 "-D", |
| 172 "image_loader_extension", | 179 "image_loader_extension", |
| 173 ] | 180 ] |
| 174 } | 181 } |
| 175 | 182 |
| 176 if (is_android) { | 183 if (is_android) { |
| 177 grit_defines += [ | 184 grit_environment += [ |
| 178 "-E", | 185 "-E", |
| 179 "ANDROID_JAVA_TAGGED_ONLY=true", | 186 "ANDROID_JAVA_TAGGED_ONLY=true", |
| 180 ] | 187 ] |
| 181 } | 188 } |
| 182 | 189 |
| 183 if (is_mac || is_ios) { | 190 if (is_mac || is_ios) { |
| 184 grit_defines += [ | 191 grit_defines += [ |
| 185 "-D", | 192 "-D", |
| 186 "scale_factors=2x", | 193 "scale_factors=2x", |
| 187 ] | 194 ] |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 420 } | 427 } |
| 421 args += [ | 428 args += [ |
| 422 "-o", | 429 "-o", |
| 423 rebased_output_dir, | 430 rebased_output_dir, |
| 424 "--depdir", | 431 "--depdir", |
| 425 ".", | 432 ".", |
| 426 "--depfile", | 433 "--depfile", |
| 427 rebase_path(depfile, root_build_dir), | 434 rebase_path(depfile, root_build_dir), |
| 428 "--write-only-new=1", | 435 "--write-only-new=1", |
| 429 "--depend-on-stamp", | 436 "--depend-on-stamp", |
| 430 ] + grit_defines | 437 ] + grit_defines + grit_environment |
| 431 | 438 |
| 432 # Add extra defines with -D flags. | 439 # Add extra defines with -D flags. |
| 433 if (defined(invoker.defines)) { | 440 if (defined(invoker.defines)) { |
| 434 foreach(i, invoker.defines) { | 441 foreach(i, invoker.defines) { |
| 435 args += [ | 442 args += [ |
| 436 "-D", | 443 "-D", |
| 437 i, | 444 i, |
| 438 ] | 445 ] |
| 439 } | 446 } |
| 440 } | 447 } |
| 441 | 448 |
| 449 if (defined(invoker.moved_file_list)) { | |
| 450 response_file_contents = invoker.moved_file_list | |
| 451 args += [ "--moved-input-file-list={{response_file_name}}" ] | |
| 452 } | |
| 453 | |
| 442 args += grit_flags + assert_files_flags | 454 args += grit_flags + assert_files_flags |
| 443 | 455 |
| 444 if (defined(invoker.visibility)) { | 456 if (defined(invoker.visibility)) { |
| 445 # This needs to include both what the invoker specified (since they | 457 # This needs to include both what the invoker specified (since they |
| 446 # probably include generated headers from this target), as well as the | 458 # probably include generated headers from this target), as well as the |
| 447 # generated source set (since there's no guarantee that the visibility | 459 # generated source set (since there's no guarantee that the visibility |
| 448 # specified by the invoker includes our target). | 460 # specified by the invoker includes our target). |
| 449 # | 461 # |
| 450 # Only define visibility at all if the invoker specified it. Otherwise, | 462 # Only define visibility at all if the invoker specified it. Otherwise, |
| 451 # we want to keep the public "no visibility specified" default. | 463 # we want to keep the public "no visibility specified" default. |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 486 if (defined(invoker.configs)) { | 498 if (defined(invoker.configs)) { |
| 487 configs += invoker.configs | 499 configs += invoker.configs |
| 488 } | 500 } |
| 489 | 501 |
| 490 if (defined(invoker.visibility)) { | 502 if (defined(invoker.visibility)) { |
| 491 visibility = invoker.visibility | 503 visibility = invoker.visibility |
| 492 } | 504 } |
| 493 output_name = grit_output_name | 505 output_name = grit_output_name |
| 494 } | 506 } |
| 495 } | 507 } |
| 508 | |
| 509 flatten_resource_path = "//tools/grit/flatten_resource.py" | |
| 510 closure_compiler_path = "//third_party/closure_compiler/compiler/compiler.jar" | |
| 511 | |
| 512 template("strip_js") { | |
| 513 assert(defined(invoker.sources), | |
| 514 "Need sources in $target_name listing the js files.") | |
| 515 | |
| 516 _target_name = target_name | |
| 517 | |
| 518 action_foreach("${_target_name}_flatten") { | |
| 519 script = flatten_resource_path | |
| 520 sources = invoker.sources | |
| 521 output = "{{source_gen_dir}}/flattened_${target_name}/{{source_file_part}}" | |
| 522 outputs = [ | |
| 523 output, | |
| 524 ] | |
| 525 args = grit_defines | |
| 526 args += [ | |
| 527 rebase_path("{{source}}"), | |
| 528 rebase_path("$root_out_dir/$output"), | |
| 529 ] | |
| 530 } | |
| 531 | |
| 532 compile_js2_foreach(_target_name) { | |
| 533 sources = get_target_outputs(":${_target_name}_flatten") | |
| 534 deps = [ | |
| 535 ":${_target_name}_flatten", | |
| 536 ] | |
| 537 strip_whitespace = true | |
| 538 } | |
| 539 } | |
| 540 | |
| 541 template("strip_and_grit") { | |
| 542 _target_name = target_name | |
| 543 | |
| 544 if (strip_resource_files) { | |
| 545 strip_js("${_target_name}_stripped") { | |
| 546 sources = invoker.js_resource_files | |
| 547 } | |
| 548 grit(_target_name) { | |
| 549 forward_variables_from(invoker, | |
| 550 [ | |
| 551 "source", | |
| 552 "outputs", | |
| 553 "outputs_dir", | |
| 554 "defines", | |
| 555 "grit_flags", | |
| 556 "output_dir", | |
| 557 ]) | |
| 558 moved_file_list = [] | |
| 559 | |
| 560 foreach(js_resource_file, invoker.js_resource_files) { | |
| 561 name = get_path_info(js_resource_file, "file") | |
| 562 | |
| 563 # Generating the actual paths is messy, because, to avoid name clashes b oth the | |
|
Dan Beam
2016/07/14 17:47:59
80 col wrap
| |
| 564 # actions in strip_js use {{source_gen_dir}}, hence adding $root_gen_dir to | |
| 565 # the front of the path twice. | |
| 566 gen_dir = get_path_info(js_resource_file, "gen_dir") | |
| 567 gen_dir_rebased = rebase_path(gen_dir, "//") | |
| 568 stripped_target_name = "${_target_name}_stripped" | |
| 569 actual = "${root_gen_dir}/${gen_dir_rebased}/flattened_${stripped_target _name}_flatten/closure_${stripped_target_name}/${name}" | |
| 570 abs_orig = rebase_path(js_resource_file) | |
| 571 abs_actual = rebase_path(actual) | |
| 572 moved_file_list += [ "$abs_orig:$abs_actual" ] | |
| 573 } | |
| 574 | |
| 575 deps = invoker.deps | |
| 576 deps += [ ":${_target_name}_stripped" ] | |
| 577 } | |
| 578 } else { | |
| 579 # If we can't run the closure compiler simply run grit. | |
| 580 grit(_target_name) { | |
| 581 forward_variables_from(invoker, | |
| 582 [ | |
| 583 "source", | |
| 584 "outputs", | |
| 585 "outputs_dir", | |
| 586 "defines", | |
| 587 "grit_flags", | |
| 588 "output_dir", | |
| 589 ]) | |
| 590 | |
| 591 inputs = invoker.js_resource_files | |
| 592 | |
| 593 deps = invoker.deps | |
| 594 } | |
| 595 } | |
| 596 } | |
| OLD | NEW |