Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1067)

Unified Diff: build/config/android/internal_rules.gni

Issue 1180693002: Update from https://crrev.com/333737 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: rebased Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/config/android/config.gni ('k') | build/config/android/rules.gni » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
+ }
+}
« no previous file with comments | « build/config/android/config.gni ('k') | build/config/android/rules.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698