Skip to content

Commit

Permalink
🔧 Add GN flag to switch the source of the support lib
Browse files Browse the repository at this point in the history
Setting enable_android_deps_repository to true will let the build
use the dependencies defined in //third_party/android_deps, that will
be added by https://crrev.com/c/819771.
By default this flag is disabled.

Bug: 807641
Change-Id: If75f7bbac38d2dc807ae35cdd8de0f229bcf6545
Reviewed-on: https://chromium-review.googlesource.com/895691
Commit-Queue: Nicolas Dossou-Gbété <dgn@chromium.org>
Reviewed-by: agrieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#534024}
  • Loading branch information
Nicolas Dossou-gbete authored and Commit Bot committed Feb 2, 2018
1 parent 09f600f commit 2360887
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 15 deletions.
5 changes: 5 additions & 0 deletions build/config/android/config.gni
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,11 @@ if (is_android) {
# When true, updates all android_aar_prebuilt() .info files during gn gen.
# Refer to android_aar_prebuilt() for more details.
update_android_aar_prebuilts = false

# When true, uses the third party libraries from //third_party/android_deps
# over the ones in other places. (instead of the support library from
# android_tools for example)
enable_android_deps_repository = false
}

# We need a second declare_args block to make sure we are using the overridden
Expand Down
41 changes: 41 additions & 0 deletions build/config/android/rules.gni
Original file line number Diff line number Diff line change
Expand Up @@ -3305,3 +3305,44 @@ if (enable_java_templates) {
}
}
}

# Compatibility wrapper to toggle android_deps usage for a dependency.
#
# This target creates a wrapper for a dependency allowing it to be loaded
# either from //third_party/android_deps or from an existing //third_party
# (or other) target.
#
# Variables
# fallback_target: Target to use when the android_deps repo is not enabled.
# android_deps_target_name: Name of the target from the android_deps repo to
# use when the repo is enabled. Is not set, the wrapper's target name will
# be used instead.
#
# Example
# prebuilt_wrapper("android_support_multidex_java") {
# android_deps_target_name = "com_android_support_multidex_java"
# fallback_target = "$android_support_library_package:$target_name"
# }
template("prebuilt_wrapper") {
if (defined(invoker.android_deps_target_name)) {
_resolved_android_deps_target_name = invoker.android_deps_target_name
} else {
_resolved_android_deps_target_name = target_name
}

if (enable_android_deps_repository) {
_resolved_target =
"//third_party/android_deps:${_resolved_android_deps_target_name}"
assert(invoker.fallback_target != "") # Mark as used.
} else {
_resolved_target = "${invoker.fallback_target}"
assert(_resolved_android_deps_target_name != "") # Mark as used.
}

java_group(target_name) {
forward_variables_from(invoker, [ "testonly" ])
deps = [
_resolved_target,
]
}
}
56 changes: 41 additions & 15 deletions build/secondary/third_party/android_tools/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -46,35 +46,61 @@ support_lib_alias("android_gcm_java") {
}
support_lib_alias("emma_device_java") {
}
support_lib_alias("android_arch_lifecycle_common_java") {
prebuilt_wrapper("android_arch_lifecycle_common_java") {
fallback_target = "$android_support_library_package:$target_name"
}
support_lib_alias("android_arch_lifecycle_runtime_java") {
prebuilt_wrapper("android_arch_lifecycle_runtime_java") {
fallback_target = "$android_support_library_package:$target_name"
}
support_lib_alias("android_support_multidex_java") {
prebuilt_wrapper("android_support_multidex_java") {
android_deps_target_name = "com_android_support_multidex_java"
fallback_target = "$android_support_library_package:$target_name"
}
support_lib_alias("android_support_annotations_java") {
prebuilt_wrapper("android_support_annotations_java") {
android_deps_target_name = "com_android_support_support_annotations_java"
fallback_target = "$android_support_library_package:$target_name"
}
support_lib_alias("android_support_cardview_java") {
prebuilt_wrapper("android_support_cardview_java") {
android_deps_target_name = "com_android_support_cardview_v7_java"
fallback_target = "$android_support_library_package:$target_name"
}
support_lib_alias("android_support_compat_java") {
prebuilt_wrapper("android_support_compat_java") {
android_deps_target_name = "com_android_support_support_compat_java"
fallback_target = "$android_support_library_package:$target_name"
}
support_lib_alias("android_support_core_ui_java") {
prebuilt_wrapper("android_support_core_ui_java") {
android_deps_target_name = "com_android_support_support_core_ui_java"
fallback_target = "$android_support_library_package:$target_name"
}
support_lib_alias("android_support_core_utils_java") {
prebuilt_wrapper("android_support_core_utils_java") {
android_deps_target_name = "com_android_support_support_core_utils_java"
fallback_target = "$android_support_library_package:$target_name"
}
support_lib_alias("android_support_design_java") {
prebuilt_wrapper("android_support_design_java") {
android_deps_target_name = "com_android_support_design_java"
fallback_target = "$android_support_library_package:$target_name"
}
support_lib_alias("android_support_v4_java") {
prebuilt_wrapper("android_support_v4_java") {
fallback_target = "$android_support_library_package:$target_name"
}
support_lib_alias("android_support_v7_appcompat_java") {
prebuilt_wrapper("android_support_v7_appcompat_java") {
fallback_target = "$android_support_library_package:$target_name"
}
support_lib_alias("android_support_v7_gridlayout_java") {
prebuilt_wrapper("android_support_v7_gridlayout_java") {
android_deps_target_name = "com_android_support_gridlayout_v7_java"
fallback_target = "$android_support_library_package:$target_name"
}
support_lib_alias("android_support_v7_mediarouter_java") {
prebuilt_wrapper("android_support_v7_mediarouter_java") {
android_deps_target_name = "com_android_support_mediarouter_v7_java"
fallback_target = "$android_support_library_package:$target_name"
}
support_lib_alias("android_support_v7_recyclerview_java") {
prebuilt_wrapper("android_support_v7_recyclerview_java") {
android_deps_target_name = "com_android_support_recyclerview_v7_java"
fallback_target = "$android_support_library_package:$target_name"
}
support_lib_alias("android_support_v13_java") {
prebuilt_wrapper("android_support_v13_java") {
android_deps_target_name = "com_android_support_support_v13_java"
fallback_target = "$android_support_library_package:$target_name"
}

# TODO(dgn): Use the POM files instead of hardcoding the dependencies.
Expand Down

0 comments on commit 2360887

Please sign in to comment.