| Index: build/config/jumbo.gni | 
| diff --git a/build/config/jumbo.gni b/build/config/jumbo.gni | 
| index 90e8f52e482e1bd31ccdfc7a1cced2f341271d6f..8e206fba67108cc80e5ffac2ada7003dd10b5cc0 100644 | 
| --- a/build/config/jumbo.gni | 
| +++ b/build/config/jumbo.gni | 
| @@ -3,11 +3,13 @@ | 
| # found in the LICENSE file. | 
|  | 
| import("//build/split_static_library.gni")  # When someone uses that target_type | 
| +import("//testing/test.gni")  # When someone uses the test target_type | 
|  | 
| declare_args() { | 
| # If true, use a jumbo build (files compiled together) to speed up | 
| -  # compilation. | 
| -  use_jumbo_build = false | 
| +  # compilation. Enabled by default for everything official builds and | 
| +  # Android+gcc builds because of a warning that prevents builds. | 
| +  use_jumbo_build = !is_official_build && !(is_android && !is_clang) | 
|  | 
| # A target to exclude from jumbo builds, for optimal round trip time | 
| # when frequently changing a single cpp file. | 
| @@ -21,7 +23,8 @@ declare_args() { | 
| # Higher numbers than 100 does not reduce wall clock compile times | 
| # even for 4 cores or less so no reason to go (much) higher than 100. | 
| # 100 uses 8% less total CPU than 50 when compiling content and 10% | 
| -  # less wall clock when compiling with 4 cores. | 
| +  # less wall clock when compiling with 4 cores but content is extreme so | 
| +  # the total negative effect of 50 is smaller. | 
| jumbo_file_merge_limit = 100 | 
| } | 
|  | 
| @@ -47,6 +50,14 @@ declare_args() { | 
| #      If set to a list of files, those files will not be merged with | 
| #      the rest. This can be necessary if merging the files causes | 
| #      compilation issues and fixing the issues is impractical. | 
| +# | 
| +#   jumbo_gen_dir | 
| +#      If set, this overrides the default location for the generated | 
| +#      jumbo files. This can be needed if the default location is too | 
| +#      deep for the build tools. By default the location is based on | 
| +#      the first file in sources. (Might not be neeeded one Chromium | 
| +#      has the fix for | 
| +#      https://github.com/ninja-build/ninja/issues/1161. | 
| template("internal_jumbo_target") { | 
| use_jumbo_build_for_target = use_jumbo_build | 
| if (defined(invoker.always_build_jumbo) && invoker.always_build_jumbo) { | 
| @@ -65,8 +76,11 @@ template("internal_jumbo_target") { | 
| } | 
|  | 
| invoker_sources = invoker.sources | 
| -  gen_target_dir = get_path_info(invoker_sources[0], "gen_dir") | 
| -  assert(excluded_sources != [] || true)  # Prevent "unused variable". | 
| +  if (defined(invoker.jumbo_gen_dir)) { | 
| +    gen_target_dir = invoker.jumbo_gen_dir | 
| +  } else { | 
| +    gen_target_dir = get_path_info(invoker_sources[0], "gen_dir") | 
| +  } | 
|  | 
| # Find the gen_target_dir directory with shortest path. Short paths | 
| # are nice in themselves since they mean shorter error messages and | 
| @@ -255,3 +269,21 @@ set_defaults("jumbo_component") { | 
| configs = default_compiler_configs | 
| } | 
| } | 
| + | 
| +# See documentation above by "internal_jumbo_target". | 
| +template("jumbo_test") { | 
| +  internal_jumbo_target(target_name) { | 
| +    target_type = "test" | 
| +    forward_variables_from(invoker, "*") | 
| +  } | 
| +} | 
| + | 
| +set_defaults("jumbo_test") { | 
| +  if (is_android) { | 
| +    configs = default_shared_library_configs | 
| +    configs -= [ "//build/config/android:hide_all_but_jni_onload" ] | 
| +    configs += [ "//build/config/android:hide_all_but_jni" ] | 
| +  } else { | 
| +    configs = default_executable_configs | 
| +  } | 
| +} | 
|  |