Index: build/config/android/internal_rules.gni |
diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni |
index 07a05e15d6406f3853c6c1a87b3833e2c59f149b..d3d54f1ce7bd2ab18d840f3c44cadc6799085ff4 100644 |
--- a/build/config/android/internal_rules.gni |
+++ b/build/config/android/internal_rules.gni |
@@ -13,6 +13,7 @@ rebased_android_sdk_build_tools = |
android_sdk_jar = "$android_sdk/android.jar" |
rebased_android_sdk_jar = rebase_path(android_sdk_jar, root_build_dir) |
+android_aapt_path = "$rebased_android_sdk_build_tools/aapt" |
template("android_lint") { |
set_sources_assignment_filter([]) |
@@ -59,6 +60,16 @@ template("android_lint") { |
"--java-files=$rebased_java_files", |
"--enable", |
] |
+ |
+ if (defined(invoker.deps)) { |
+ deps = invoker.deps |
+ } |
+ if (defined(invoker.public_deps)) { |
+ public_deps = invoker.public_deps |
+ } |
+ if (defined(invoker.data_deps)) { |
+ data_deps = invoker.data_deps |
+ } |
} |
} |
@@ -183,6 +194,20 @@ template("zip") { |
rebase_path(invoker.base_dir, root_build_dir), |
] |
} |
+ |
+ if (defined(invoker.deps)) { |
+ deps = invoker.deps |
+ } |
+ if (defined(invoker.public_deps)) { |
+ public_deps = invoker.public_deps |
+ } |
+ if (defined(invoker.data_deps)) { |
+ data_deps = invoker.data_deps |
+ } |
+ |
+ if (defined(invoker.visibility)) { |
+ visibility = invoker.visibility |
+ } |
} |
} |
@@ -211,6 +236,10 @@ template("write_build_config") { |
type == "android_resources" || type == "deps_dex") |
action(target_name) { |
+ if (defined(invoker.visibility)) { |
+ visibility = invoker.visibility |
+ } |
+ |
script = "//build/android/gyp/write_build_config.py" |
depfile = "$target_gen_dir/$target_name.d" |
inputs = [] |
@@ -369,7 +398,8 @@ template("process_java_prebuilt") { |
_proguard_config_path = invoker.proguard_config |
_build_config = invoker.build_config |
_rebased_build_config = rebase_path(_build_config, root_build_dir) |
- action("${target_name}__proguard_process") { |
+ _output_jar_target = "${target_name}__proguard_process" |
+ action(_output_jar_target) { |
script = "//build/android/gyp/proguard.py" |
inputs = [ |
android_sdk_jar, |
@@ -398,15 +428,36 @@ template("process_java_prebuilt") { |
rebased_android_sdk_jar, |
"--classpath=@FileArg($_rebased_build_config:javac:classpath)", |
] |
+ |
+ if (defined(invoker.deps)) { |
+ deps = invoker.deps |
+ } |
+ if (defined(invoker.public_deps)) { |
+ public_deps = invoker.public_deps |
+ } |
+ if (defined(invoker.data_deps)) { |
+ data_deps = invoker.data_deps |
+ } |
} |
} else { |
- copy("${target_name}__copy_jar") { |
+ _output_jar_target = "${target_name}__copy_jar" |
+ copy(_output_jar_target) { |
sources = [ |
_input_jar_path, |
] |
outputs = [ |
_output_jar_path, |
] |
+ |
+ if (defined(invoker.deps)) { |
+ deps = invoker.deps |
+ } |
+ if (defined(invoker.public_deps)) { |
+ public_deps = invoker.public_deps |
+ } |
+ if (defined(invoker.data_deps)) { |
+ data_deps = invoker.data_deps |
+ } |
} |
} |
@@ -429,15 +480,80 @@ template("process_java_prebuilt") { |
"--toc-path", |
rebase_path(_jar_toc_path, root_build_dir), |
] |
+ public_deps = [ |
+ ":$_output_jar_target", |
+ ] |
} |
group(target_name) { |
- deps = [ |
+ if (defined(invoker.visibility)) { |
+ visibility = invoker.visibility |
+ } |
+ public_deps = [ |
":${target_name}__jar_toc", |
+ ":$_output_jar_target", |
] |
} |
} |
+template("finalize_apk") { |
+ action(target_name) { |
+ script = "//build/android/gyp/finalize_apk.py" |
+ depfile = "$target_gen_dir/$target_name.d" |
+ |
+ if (defined(invoker.testonly)) { |
+ testonly = invoker.testonly |
+ } |
+ |
+ sources = [ |
+ invoker.input_apk_path, |
+ ] |
+ inputs = [ |
+ invoker.keystore_path, |
+ ] |
+ outputs = [ |
+ depfile, |
+ invoker.output_apk_path, |
+ ] |
+ |
+ args = [ |
+ "--depfile", |
+ rebase_path(depfile, root_build_dir), |
+ "--zipalign-path", |
+ rebase_path(zipalign_path, root_build_dir), |
+ "--unsigned-apk-path", |
+ rebase_path(invoker.input_apk_path, root_build_dir), |
+ "--final-apk-path", |
+ rebase_path(invoker.output_apk_path, root_build_dir), |
+ "--key-path", |
+ rebase_path(invoker.keystore_path, root_build_dir), |
+ "--key-name", |
+ invoker.keystore_name, |
+ "--key-passwd", |
+ invoker.keystore_password, |
+ ] |
+ if (defined(invoker.rezip_apk) && invoker.rezip_apk) { |
+ _rezip_jar_path = "$root_build_dir/lib.java/rezip_apk.jar" |
+ inputs += [ _rezip_jar_path ] |
+ args += [ |
+ "--load-library-from-zip=1", |
+ "--rezip-apk-jar-path", |
+ rebase_path(_rezip_jar_path, root_build_dir), |
+ ] |
+ } |
+ |
+ if (defined(invoker.deps)) { |
+ deps = invoker.deps |
+ } |
+ if (defined(invoker.public_deps)) { |
+ public_deps = invoker.public_deps |
+ } |
+ if (defined(invoker.data_deps)) { |
+ data_deps = invoker.data_deps |
+ } |
+ } |
+} |
+ |
# Packages resources, assets, dex, and native libraries into an apk. Signs and |
# zipaligns the apk. |
template("create_apk") { |
@@ -449,16 +565,18 @@ template("create_apk") { |
_android_manifest = invoker.android_manifest |
_base_path = invoker.base_path |
_final_apk_path = invoker.apk_path |
- _resources_zip = invoker.resources_zip |
- _dex_path = invoker.dex_path |
- _keystore_path = invoker.keystore_path |
- _keystore_name = invoker.keystore_name |
- _keystore_password = invoker.keystore_password |
+ |
+ if (defined(invoker.resources_zip)) { |
+ _resources_zip = invoker.resources_zip |
+ } |
+ if (defined(invoker.dex_path)) { |
+ _dex_path = invoker.dex_path |
+ } |
_load_library_from_apk = invoker.load_library_from_apk |
- _deps = [] |
+ _package_deps = [] |
if (defined(invoker.deps)) { |
- _deps = invoker.deps |
+ _package_deps = invoker.deps |
} |
_native_libs_dir = "//build/android/empty/res" |
@@ -466,7 +584,6 @@ template("create_apk") { |
_native_libs_dir = invoker.native_libs_dir |
} |
- _asset_location = "//build/android/empty/res" |
if (defined(invoker.asset_location)) { |
_asset_location = invoker.asset_location |
} |
@@ -486,28 +603,41 @@ template("create_apk") { |
_configuration_name = "Debug" |
} |
- action("${target_name}__package_resources") { |
- deps = _deps |
+ _create_density_splits = |
+ defined(invoker.create_density_splits) && invoker.create_density_splits |
+ if (_create_density_splits) { |
+ _split_densities = [ |
+ "hdpi", |
+ "xhdpi", |
+ "xxhdpi", |
+ "tvdpi", |
+ ] |
+ } |
+ |
+ _package_resources_target_name = "${target_name}__package_resources" |
+ action(_package_resources_target_name) { |
+ deps = _package_deps |
script = "//build/android/gyp/package_resources.py" |
depfile = "${target_gen_dir}/${target_name}.d" |
inputs = [ |
_android_manifest, |
- _resources_zip, |
] |
+ if (defined(_resources_zip)) { |
+ inputs += [ _resources_zip ] |
+ } |
outputs = [ |
depfile, |
_resource_packaged_apk_path, |
] |
- _rebased_resources_zips = [ rebase_path(_resources_zip, root_build_dir) ] |
args = [ |
"--depfile", |
rebase_path(depfile, root_build_dir), |
"--android-sdk", |
rebased_android_sdk, |
- "--android-sdk-tools", |
- rebased_android_sdk_build_tools, |
+ "--aapt-path", |
+ android_aapt_path, |
"--configuration-name=$_configuration_name", |
"--android-manifest", |
rebase_path(_android_manifest, root_build_dir), |
@@ -515,29 +645,53 @@ template("create_apk") { |
_version_code, |
"--version-name", |
_version_name, |
- "--asset-dir", |
- rebase_path(_asset_location, root_build_dir), |
- "--resource-zips=$_rebased_resources_zips", |
"--apk-path", |
rebase_path(_resource_packaged_apk_path, root_build_dir), |
] |
+ if (defined(_asset_location)) { |
+ args += [ |
+ "--asset-dir", |
+ rebase_path(_asset_location, root_build_dir), |
+ ] |
+ } |
+ if (defined(_resources_zip)) { |
+ args += [ |
+ "--resource-zips", |
+ rebase_path(_resources_zip, root_build_dir), |
+ ] |
+ } |
if (_shared_resources) { |
args += [ "--shared-resources" ] |
} |
+ if (_create_density_splits) { |
+ args += [ "--create-density-splits" ] |
+ foreach(_density, _split_densities) { |
+ outputs += [ "${_resource_packaged_apk_path}-${_density}" ] |
+ } |
+ } |
} |
- action("${target_name}__package") { |
+ package_target = "${target_name}__package" |
+ action(package_target) { |
script = "//build/android/gyp/ant.py" |
_ant_script = "//build/android/ant/apk-package.xml" |
+ deps = [ |
+ ":${_package_resources_target_name}", |
+ ] |
+ if (defined(invoker.deps)) { |
+ deps += invoker.deps |
+ } |
depfile = "$target_gen_dir/$target_name.d" |
inputs = [ |
- _dex_path, |
_resource_packaged_apk_path, |
_ant_script, |
] |
+ if (defined(_dex_path)) { |
+ inputs += [ _dex_path ] |
+ } |
outputs = [ |
depfile, |
@@ -549,7 +703,6 @@ template("create_apk") { |
rebase_path(_resource_packaged_apk_path, root_build_dir) |
_rebased_packaged_apk_path = rebase_path(_packaged_apk_path, root_build_dir) |
_rebased_native_libs_dir = rebase_path(_native_libs_dir, root_build_dir) |
- _rebased_dex_path = rebase_path(_dex_path, root_build_dir) |
args = [ |
"--depfile", |
rebase_path(depfile, root_build_dir), |
@@ -564,59 +717,57 @@ template("create_apk") { |
"-DUNSIGNED_APK_PATH=$_rebased_packaged_apk_path", |
"-DEMMA_INSTRUMENT=0", |
"-DEMMA_DEVICE_JAR=$_rebased_emma_jar", |
- "-DDEX_FILE_PATH=$_rebased_dex_path", |
"-Dbasedir=.", |
"-buildfile", |
rebase_path(_ant_script, root_build_dir), |
] |
+ if (defined(_dex_path)) { |
+ _rebased_dex_path = rebase_path(_dex_path, root_build_dir) |
+ args += [ |
+ "-DDEX_FILE_PATH=$_rebased_dex_path", |
+ "-DHAS_CODE=true", |
+ ] |
+ } else { |
+ args += [ "-DHAS_CODE=false" ] |
+ } |
} |
- action("${target_name}__finalize") { |
- script = "//build/android/gyp/finalize_apk.py" |
- depfile = "$target_gen_dir/$target_name.d" |
- |
- sources = [ |
- _packaged_apk_path, |
- ] |
- inputs = [ |
- _keystore_path, |
- ] |
- outputs = [ |
- depfile, |
- _final_apk_path, |
+ _finalize_apk_rule_name = "${target_name}__finalize" |
+ finalize_apk(_finalize_apk_rule_name) { |
+ input_apk_path = _packaged_apk_path |
+ output_apk_path = _final_apk_path |
+ keystore_path = invoker.keystore_path |
+ keystore_name = invoker.keystore_name |
+ keystore_password = invoker.keystore_password |
+ rezip_apk = _load_library_from_apk |
+ |
+ public_deps = [ |
+ # Generator of the _packaged_apk_path this target takes as input. |
+ ":$package_target", |
] |
+ } |
- args = [ |
- "--depfile", |
- rebase_path(depfile, root_build_dir), |
- "--zipalign-path", |
- rebase_path(zipalign_path, root_build_dir), |
- "--unsigned-apk-path", |
- rebase_path(_packaged_apk_path, root_build_dir), |
- "--final-apk-path", |
- rebase_path(_final_apk_path, root_build_dir), |
- "--key-path", |
- rebase_path(_keystore_path, root_build_dir), |
- "--key-name", |
- _keystore_name, |
- "--key-passwd", |
- _keystore_password, |
- ] |
- if (_load_library_from_apk) { |
- _rezip_jar_path = "$root_build_dir/lib.java/rezip_apk.jar" |
- inputs += [ _rezip_jar_path ] |
- args += [ |
- "--load-library-from-zip-file=1", |
- "--rezip-apk-jar-path", |
- rebase_path(_rezip_jar_path, root_build_dir), |
- ] |
+ _final_deps = [ ":${_finalize_apk_rule_name}" ] |
+ |
+ if (_create_density_splits) { |
+ foreach(_density, _split_densities) { |
+ _finalize_split_rule_name = "${target_name}__finalize_${_density}_split" |
+ finalize_apk(_finalize_split_rule_name) { |
+ input_apk_path = "${_resource_packaged_apk_path}-${_density}" |
+ _output_paths = process_file_template( |
+ [ _final_apk_path ], |
+ "{{source_dir}}/{{source_name_part}}-${_density}.apk") |
+ output_apk_path = _output_paths[0] |
+ keystore_path = invoker.keystore_path |
+ keystore_name = invoker.keystore_name |
+ keystore_password = invoker.keystore_password |
+ } |
+ _final_deps += [ ":${_finalize_split_rule_name}" ] |
} |
} |
group(target_name) { |
- deps = [ |
- ":${target_name}__finalize", |
- ] |
+ public_deps = _final_deps |
} |
} |
@@ -637,11 +788,15 @@ template("java_prebuilt_impl") { |
_dex_path = _base_path + ".dex.jar" |
} |
- _final_deps = [] |
_template_name = target_name |
- _final_deps += [ ":${_template_name}__build_config" ] |
- write_build_config("${_template_name}__build_config") { |
+ build_config_target_name = "${_template_name}__build_config" |
+ process_jar_target_name = "${_template_name}__process_jar" |
+ if (_supports_android) { |
+ dex_target_name = "${_template_name}__dex" |
+ } |
+ |
+ write_build_config(build_config_target_name) { |
type = "java_library" |
supports_android = _supports_android |
requires_android = |
@@ -658,8 +813,12 @@ template("java_prebuilt_impl") { |
} |
} |
- _final_deps += [ ":${_template_name}__process_jar" ] |
- process_java_prebuilt("${_template_name}__process_jar") { |
+ process_java_prebuilt(process_jar_target_name) { |
+ visibility = [ ":$_template_name" ] |
+ if (_supports_android) { |
+ visibility += [ ":$dex_target_name" ] |
+ } |
+ |
if (defined(invoker.proguard_preprocess) && invoker.proguard_preprocess) { |
proguard_preprocess = true |
proguard_config = invoker.proguard_config |
@@ -668,20 +827,31 @@ template("java_prebuilt_impl") { |
build_config = _build_config |
input_jar_path = invoker.jar_path |
output_jar_path = _jar_path |
+ |
+ deps = [ |
+ ":$build_config_target_name", |
+ ] |
} |
if (_supports_android) { |
- _final_deps += [ ":${_template_name}__dex" ] |
- dex("${_template_name}__dex") { |
+ dex(dex_target_name) { |
sources = [ |
_jar_path, |
] |
output = _dex_path |
+ deps = [ |
+ ":$process_jar_target_name", |
+ ] |
} |
} |
group(target_name) { |
- deps = _final_deps |
+ deps = [ |
+ ":$process_jar_target_name", |
+ ] |
+ if (_supports_android) { |
+ deps += [ ":$dex_target_name" ] |
+ } |
} |
} |
@@ -756,12 +926,18 @@ template("compile_java") { |
_rebased_build_config = rebase_path(_build_config, root_build_dir) |
_rebased_jar_path = rebase_path(_intermediate_jar_path, root_build_dir) |
- _template_name = target_name |
- _final_deps = [ ":${_template_name}__javac" ] |
- action("${_template_name}__javac") { |
+ javac_target_name = "${target_name}__javac" |
+ finish_target_name = "${target_name}__finish" |
+ final_target_name = target_name |
+ |
+ action(javac_target_name) { |
script = "//build/android/gyp/javac.py" |
depfile = "$target_gen_dir/$target_name.d" |
- deps = [] |
+ deps = _srcjar_deps |
+ if (defined(invoker.deps)) { |
+ deps += invoker.deps |
+ } |
+ |
outputs = [ |
depfile, |
_intermediate_jar_path, |
@@ -792,8 +968,9 @@ template("compile_java") { |
args += rebase_path(_java_files, root_build_dir) |
} |
- _final_deps += [ ":${_template_name}__finish" ] |
- process_java_prebuilt("${_template_name}__finish") { |
+ process_java_prebuilt(finish_target_name) { |
+ visibility = [ ":$final_target_name" ] |
+ |
build_config = _build_config |
input_jar_path = _intermediate_jar_path |
output_jar_path = _final_jar_path |
@@ -801,10 +978,18 @@ template("compile_java") { |
proguard_preprocess = invoker.proguard_preprocess |
proguard_config = invoker.proguard_config |
} |
+ deps = [ |
+ ":$javac_target_name", |
+ ] |
} |
- group(target_name) { |
- deps = _final_deps |
+ group(final_target_name) { |
+ if (defined(invoker.visibility)) { |
+ visibility = invoker.visibility |
+ } |
+ public_deps = [ |
+ ":$finish_target_name", |
+ ] |
} |
} |
@@ -842,12 +1027,24 @@ template("java_library_impl") { |
} |
} |
+ # Define build_config_deps which will be a list of targets required to |
+ # build the _build_config. |
if (defined(invoker.override_build_config)) { |
_build_config = invoker.override_build_config |
+ |
+ # When a custom build config file is specified, we need to use the deps |
+ # supplied by the invoker any time we reference the build config file. |
+ assert(defined(invoker.deps), |
+ "If you specify a build config file for " + |
+ "java_library_impl($target_name), you should " + |
+ "also specify the target that made it in the deps") |
+ build_config_deps = invoker.deps |
} else { |
_build_config = _base_path + ".build_config" |
- _final_deps += [ ":${_template_name}__build_config" ] |
- write_build_config("${_template_name}__build_config") { |
+ build_config_target_name = "${_template_name}__build_config" |
+ build_config_deps = [ ":$build_config_target_name" ] |
+ |
+ write_build_config(build_config_target_name) { |
type = "java_library" |
supports_android = _supports_android |
requires_android = _requires_android |
@@ -906,8 +1103,9 @@ template("java_library_impl") { |
} |
assert(_java_files != [] || _srcjar_deps != [] || _srcjars != []) |
- _final_deps += [ ":${_template_name}__compile_java" ] |
- compile_java("${_template_name}__compile_java") { |
+ _compile_java_target = "${_template_name}__compile_java" |
+ _final_deps += [ ":$_compile_java_target" ] |
+ compile_java(_compile_java_target) { |
jar_path = _jar_path |
build_config = _build_config |
java_files = _java_files |
@@ -931,6 +1129,8 @@ template("java_library_impl") { |
if (defined(invoker.manifest_entries)) { |
manifest_entries = invoker.manifest_entries |
} |
+ |
+ deps = build_config_deps |
} |
if (defined(invoker.main_class)) { |
@@ -958,6 +1158,8 @@ template("java_library_impl") { |
"--main-class", |
invoker.main_class, |
] |
+ |
+ deps = build_config_deps |
} |
} |
@@ -973,6 +1175,12 @@ template("java_library_impl") { |
android_manifest = _android_manifest |
jar_path = _jar_path |
java_files = _java_files |
+ deps = [ |
+ ":$_compile_java_target", |
+ ] |
+ if (defined(invoker.deps)) { |
+ deps += invoker.deps |
+ } |
} |
if (run_findbugs) { |
@@ -980,6 +1188,7 @@ template("java_library_impl") { |
findbugs("${_template_name}__findbugs") { |
build_config = _build_config |
jar_path = _jar_path |
+ deps = build_config_deps |
} |
} |
} |
@@ -990,6 +1199,9 @@ template("java_library_impl") { |
_jar_path, |
] |
output = _dex_path |
+ deps = [ |
+ ":$_compile_java_target", |
+ ] |
} |
} |
@@ -997,8 +1209,8 @@ template("java_library_impl") { |
if (defined(invoker.visibility)) { |
visibility = invoker.visibility |
} |
- deps = _final_deps |
- datadeps = _final_datadeps |
+ public_deps = _final_deps |
+ data_deps = _final_datadeps |
} |
} |
@@ -1022,6 +1234,10 @@ template("process_resources") { |
} |
action(target_name) { |
+ if (defined(invoker.visibility)) { |
+ visibility = invoker.visibility |
+ } |
+ |
script = "//build/android/gyp/process_resources.py" |
depfile = "$target_gen_dir/$target_name.d" |
@@ -1049,8 +1265,8 @@ template("process_resources") { |
rebase_path(depfile, root_build_dir), |
"--android-sdk", |
rebase_path(android_sdk, root_build_dir), |
- "--android-sdk-tools", |
- rebase_path(android_sdk_build_tools, root_build_dir), |
+ "--aapt-path", |
+ android_aapt_path, |
"--android-manifest", |
rebase_path(android_manifest, root_build_dir), |
"--resource-dirs=$rebase_resource_dirs", |
@@ -1076,8 +1292,8 @@ template("process_resources") { |
] |
} |
- if (defined(invoker.v14_verify_only) && invoker.v14_verify_only) { |
- args += [ "--v14-verify-only" ] |
+ if (defined(invoker.v14_skip) && invoker.v14_skip) { |
+ args += [ "--v14-skip" ] |
} |
if (defined(invoker.shared_resources) && invoker.shared_resources) { |
@@ -1101,6 +1317,9 @@ template("process_resources") { |
if (defined(invoker.args)) { |
args += invoker.args |
} |
+ if (defined(invoker.deps)) { |
+ deps = invoker.deps |
+ } |
} |
} |
@@ -1111,6 +1330,10 @@ template("copy_ex") { |
} |
action(target_name) { |
+ if (defined(invoker.visibility)) { |
+ visibility = invoker.visibility |
+ } |
+ |
script = "//build/android/gyp/copy_ex.py" |
if (defined(invoker.deps)) { |
@@ -1155,7 +1378,9 @@ template("copy_ex") { |
template("deps_dex") { |
set_sources_assignment_filter([]) |
build_config = "$target_gen_dir/${target_name}.build_config" |
- write_build_config("${target_name}__build_config") { |
+ build_config_target_name = "${target_name}__build_config" |
+ |
+ write_build_config(build_config_target_name) { |
type = "deps_dex" |
deps = invoker.deps |
@@ -1175,6 +1400,9 @@ template("deps_dex") { |
excluded_jars = rebase_path(invoker.excluded_jars, root_build_dir) |
args += [ "--excluded-paths=${excluded_jars}" ] |
} |
+ deps = [ |
+ ":$build_config_target_name", |
+ ] |
} |
} |
@@ -1227,3 +1455,57 @@ template("generate_split_manifest") { |
] |
} |
} |
+ |
+# Generates a script in the output bin directory which runs the test |
+# target using the test runner script in build/android/test_runner.py. |
+template("test_runner_script") { |
+ testonly = true |
+ _test_name = invoker.test_name |
+ _test_type = invoker.test_type |
+ |
+ action(target_name) { |
+ script = "//build/android/gyp/create_test_runner_script.py" |
+ depfile = "$target_gen_dir/$target_name.d" |
+ |
+ test_runner_args = [ |
+ _test_type, |
+ "--output-directory", |
+ rebase_path(root_build_dir, root_build_dir), |
+ ] |
+ if (_test_type == "gtest") { |
+ assert(defined(invoker.test_suite)) |
+ test_runner_args += [ |
+ "--suite", |
+ invoker.test_suite, |
+ ] |
+ } else if (_test_type == "instrumentation") { |
+ assert(defined(invoker.test_apk)) |
+ test_runner_args += [ |
+ "--test-apk", |
+ invoker.test_apk, |
+ ] |
+ } else { |
+ assert(false, "Invalid test type: $_test_type.") |
+ } |
+ |
+ if (defined(invoker.isolate_file)) { |
+ test_runner_args += [ |
+ "--isolate-file-path", |
+ rebase_path(invoker.isolate_file, root_build_dir), |
+ ] |
+ } |
+ |
+ generated_script = "$root_build_dir/bin/run_${_test_name}" |
+ outputs = [ |
+ depfile, |
+ generated_script, |
+ ] |
+ args = [ |
+ "--depfile", |
+ rebase_path(depfile, root_build_dir), |
+ "--script-output-path", |
+ rebase_path(generated_script, root_build_dir), |
+ ] |
+ args += test_runner_args |
+ } |
+} |