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

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

Issue 2109293003: 🎊 Reland #2 of Have build_config targets depend only on other build_config targets (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: change // to * to fix downstream Created 4 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/android/gyp/write_build_config.py ('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 f436a0762af9ef2c9adc0c4079fd8a03794b6b9f..a4baaff47a51c05bbe820e39357dec4f86829089 100644
--- a/build/config/android/internal_rules.gni
+++ b/build/config/android/internal_rules.gni
@@ -7,6 +7,58 @@ import("//build/config/sanitizers/sanitizers.gni")
assert(is_android)
+# These identify targets that have .build_config files (except for android_apk,
+# java_binary, resource_rewriter, since we never need to depend on these).
+_java_target_whitelist = [
+ "*:*_java",
+ "*:*_javalib",
+ "*:*_java_*", # e.g. java_test_support
+ "*:java",
+ "*:junit",
+ "*:junit_*",
+ "*:*_junit_*",
+ "*:*javatests",
+ "*:*_assets",
+ "*android*:assets",
+ "*:*_apk_*resources",
+ "*android*:resources",
+ "*:*_resources",
+ "*:*_grd",
+ "*:*locale_paks",
+
+ # TODO(agrieve): Rename targets below to match above patterns.
+ "*android_webview/glue:glue",
+ "//build/android/pylib/device/commands:chromium_commands",
+ "//build/android/rezip:rezip",
+ "//chrome/test/android/cast_emulator:cast_emulator",
+ "//components/cronet/android:cronet_api",
+ "//components/cronet/android:cronet_javadoc_classpath",
+ "//components/policy:app_restrictions_resources",
+ "//device/battery/android:battery_monitor_android",
+ "//device/vibration/android:vibration_manager_android",
+ "//mojo/public/java:bindings",
+ "//mojo/public/java:system",
+ "//third_party/android_tools:emma_device",
+ "//third_party/cardboard-java:cardboard-java",
+ "//third_party/custom_tabs_client:custom_tabs_client_shared_lib",
+ "//third_party/custom_tabs_client:custom_tabs_support_lib",
+ "//third_party/errorprone:chromium_errorprone",
+ "//third_party/haha:haha",
+ "//third_party/junit:hamcrest",
+ "//third_party/netty4:netty_all",
+ "//third_party/netty-tcnative:netty-tcnative",
+ "//third_party/robolectric:android-all-4.3_r2-robolectric-0",
+ "//third_party/robolectric:json-20080701",
+ "//third_party/robolectric:tagsoup-1.2",
+]
+
+# Targets that match the whitelist but are not actually java targets.
+_java_target_blacklist = [
+ "//chrome:packed_extra_resources",
+ "//chrome:packed_resources",
+ "//remoting/android:remoting_android_raw_resources",
+]
+
# Write the target's .build_config file. This is a json file that contains a
# dictionary of information about how to build this target (things that
# require knowledge about this target's dependencies and cannot be calculated
@@ -17,9 +69,34 @@ assert(is_android)
# See build/android/gyp/write_build_config.py and
# build/android/gyp/util/build_utils.py:ExpandFileArgs
template("write_build_config") {
+ type = invoker.type
+
+ # Don't need to enforce naming scheme for these targets since we never
+ # consider them in dependency chains.
+ if (type != "android_apk" && type != "java_binary" &&
+ type != "resource_rewriter") {
+ set_sources_assignment_filter(_java_target_whitelist)
+ _parent_invoker = invoker.invoker
+ _target_label =
+ get_label_info(":${_parent_invoker.target_name}", "label_no_toolchain")
+ sources = [
+ _target_label,
+ ]
+ if (sources != []) {
+ set_sources_assignment_filter(_java_target_blacklist)
+ sources = []
+ sources = [
+ _target_label,
+ ]
+ if (sources != []) {
+ assert(false, "Invalid java target name: $_target_label")
+ }
+ }
+ sources = []
+ }
+
action(target_name) {
set_sources_assignment_filter([])
- type = invoker.type
build_config = invoker.build_config
assert(type == "android_apk" || type == "java_library" ||
@@ -31,7 +108,6 @@ template("write_build_config") {
[
"deps",
"testonly",
- "visibility",
])
if (!defined(deps)) {
deps = []
@@ -41,14 +117,32 @@ template("write_build_config") {
depfile = "$target_gen_dir/$target_name.d"
inputs = []
- possible_deps_configs = []
- foreach(d, deps) {
- dep_gen_dir = get_label_info(d, "target_gen_dir")
- dep_name = get_label_info(d, "name")
- possible_deps_configs += [ "$dep_gen_dir/$dep_name.build_config" ]
+ _deps_configs = []
+ if (defined(invoker.possible_config_deps)) {
+ foreach(_possible_dep, invoker.possible_config_deps) {
+ set_sources_assignment_filter(_java_target_whitelist)
+ _target_label = get_label_info(_possible_dep, "label_no_toolchain")
+ sources = [
+ _target_label,
+ ]
+ if (sources == []) {
+ set_sources_assignment_filter(_java_target_blacklist)
+ sources = []
+ sources = [
+ _target_label,
+ ]
+ if (sources != []) {
+ deps += [ "${_target_label}__build_config" ]
+ _dep_gen_dir = get_label_info(_possible_dep, "target_gen_dir")
+ _dep_name = get_label_info(_possible_dep, "name")
+ _deps_configs += [ "$_dep_gen_dir/$_dep_name.build_config" ]
+ }
+ }
+ sources = []
+ }
+ set_sources_assignment_filter([])
}
- rebase_possible_deps_configs =
- rebase_path(possible_deps_configs, root_build_dir)
+ _rebased_deps_configs = rebase_path(_deps_configs, root_build_dir)
outputs = [
depfile,
@@ -60,7 +154,7 @@ template("write_build_config") {
type,
"--depfile",
rebase_path(depfile, root_build_dir),
- "--possible-deps-configs=$rebase_possible_deps_configs",
+ "--deps-configs=$_rebased_deps_configs",
"--build-config",
rebase_path(build_config, root_build_dir),
]
@@ -130,13 +224,11 @@ template("write_build_config") {
if (is_android_assets) {
if (defined(invoker.asset_sources)) {
- inputs += invoker.asset_sources
_rebased_asset_sources =
rebase_path(invoker.asset_sources, root_build_dir)
args += [ "--asset-sources=$_rebased_asset_sources" ]
}
if (defined(invoker.asset_renaming_sources)) {
- inputs += invoker.asset_renaming_sources
_rebased_asset_renaming_sources =
rebase_path(invoker.asset_renaming_sources, root_build_dir)
args += [ "--asset-renaming-sources=$_rebased_asset_renaming_sources" ]
@@ -1601,7 +1693,9 @@ if (enable_java_templates) {
requires_android =
defined(invoker.requires_android) && invoker.requires_android
- deps = _deps
+ if (defined(invoker.deps)) {
+ possible_config_deps = _deps
+ }
build_config = _build_config
jar_path = _jar_path
if (_supports_android) {
@@ -2027,12 +2121,14 @@ if (enable_java_templates) {
build_config_target_name = "${_template_name}__build_config"
write_build_config(build_config_target_name) {
- deps = _accumulated_deps
if (defined(invoker.is_java_binary) && invoker.is_java_binary) {
type = "java_binary"
} else {
type = "java_library"
}
+ if (defined(invoker.deps)) {
+ possible_config_deps = invoker.deps
+ }
supports_android = _supports_android
requires_android = _requires_android
bypass_platform_checks = defined(invoker.bypass_platform_checks) &&
@@ -2334,11 +2430,10 @@ if (enable_java_templates) {
build_config_target_name = "${target_name}__build_config"
write_build_config(build_config_target_name) {
- forward_variables_from(invoker,
- [
- "deps",
- "dex_path",
- ])
+ forward_variables_from(invoker, [ "dex_path" ])
+ if (defined(invoker.deps)) {
+ possible_config_deps = invoker.deps
+ }
type = "deps_dex"
build_config = build_config
}
« no previous file with comments | « build/android/gyp/write_build_config.py ('k') | build/config/android/rules.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698