blob: 8459ff3d9ba2101d4eafb9600ece8d54f4da1ec8 [file] [log] [blame]
package(default_visibility = ["//visibility:public"])
alias(
name = "sdk",
actual = "//external:android/sdk",
)
android_library(
name = "incremental_stub_application",
exports = ["//src/tools/android/java/com/google/devtools/build/android/incrementaldeployment:incremental_stub_application"],
)
android_library(
name = "incremental_split_stub_application",
exports = ["//src/tools/android/java/com/google/devtools/build/android/incrementaldeployment:incremental_split_stub_application"],
)
alias(
name = "busybox",
actual = "//src/tools/android/java/com/google/devtools/build/android:ResourceProcessorBusyBox",
)
alias(
name = "merge_dexzips",
actual = "//src/tools/android/java/com/google/devtools/build/android/ziputils:reducer",
)
alias(
name = "shuffle_jars",
actual = "//src/tools/android/java/com/google/devtools/build/android/ziputils:mapper",
)
alias(
name = "dexbuilder",
actual = "//src/tools/android/java/com/google/devtools/build/android/dexer:DexBuilder",
)
alias(
name = "dexmerger",
actual = "//src/tools/android/java/com/google/devtools/build/android/dexer:DexFileMerger",
)
alias(
name = "dexsharder",
actual = "//src/tools/android/java/com/google/devtools/build/android/dexer:DexFileSplitter",
)
alias(
name = "desugar_java8",
actual = "//src/tools/android/java/com/google/devtools/build/android/desugar:Desugar",
)
# Bazel puts this on the bootclasspath of android_* targets to support Java 8
# if requested.
filegroup(
name = "desugar_java8_extra_bootclasspath",
srcs = ["java_lang_extras.jar"],
visibility = ["//visibility:public"],
)
java_import(
name = "singlejar_deploy",
jars = select({
"//src:windows": ["@bazel_tools//tools/jdk:singlejar"],
"//src:windows_msvc": ["@bazel_tools//tools/jdk:singlejar"],
"//conditions:default": [],
}),
visibility = ["//visibility:private"],
)
java_binary(
name = "singlejar_javabin",
main_class = "com.google.devtools.build.singlejar.SingleJar",
runtime_deps = select({
"//src:windows": [":singlejar_deploy"],
"//src:windows_msvc": [":singlejar_deploy"],
"//conditions:default": [],
}),
visibility = ["//visibility:private"],
)
gen_java_lang_extras_jar_cmd = """
for jar in $(locations @local_jdk//:bootclasspath); do
if [[ "$${jar}" == *"/rt.jar" ]]; then
$(location %s) \
--exclude_build_data \
--dont_change_compression \
--sources $${jar} \
--include_prefixes "java/lang/invoke/" \
--include_prefixes "java/lang/annotation/" \
--output $@
break
fi
done
"""
# javac needs this Jar to compile lambdas, method references, and type annotations.
# These classes are not part of the android.jar.
genrule(
name = "gen_java_lang_extras_jar",
srcs = [
"@local_jdk//:bootclasspath"
],
tools = select({
"//src:windows": [":singlejar_javabin"],
"//src:windows_msvc": [":singlejar_javabin"],
"//conditions:default": ["@bazel_tools//tools/jdk:singlejar"],
}),
outs = ["java_lang_extras.jar"],
cmd = select({
"//src:windows": gen_java_lang_extras_jar_cmd % ":singlejar_javabin",
"//src:windows_msvc": gen_java_lang_extras_jar_cmd % ":singlejar_javabin",
"//conditions:default": gen_java_lang_extras_jar_cmd % "@bazel_tools//tools/jdk:singlejar",
}),
visibility = ["//visibility:private"],
)
alias(
name = "IdlClass",
actual = "//src/tools/android/java/com/google/devtools/build/android/idlclass:IdlClass",
)
py_binary(
name = "merge_manifests",
srcs = [
"android_permissions.py",
"merge_manifests.py",
],
deps = [
"//third_party/py/gflags",
],
)
py_binary(
name = "build_incremental_dexmanifest",
srcs = [":build_incremental_dexmanifest.py"],
deps = [],
)
py_binary(
name = "build_split_manifest",
srcs = ["build_split_manifest.py"],
deps = [
"//third_party/py/gflags",
],
)
py_binary(
name = "incremental_install",
srcs = ["incremental_install.py"],
deps = [
"//third_party/py/concurrent:futures",
"//third_party/py/gflags",
],
)
py_binary(
name = "strip_resources",
srcs = ["strip_resources.py"],
deps = [
"//third_party/py/gflags",
],
)
py_binary(
name = "aar_native_libs_zip_creator",
srcs = [
"aar_native_libs_zip_creator.py",
],
deps = [
":junction_lib",
"//third_party/py/gflags",
],
)
py_binary(
name = "stubify_manifest",
srcs = ["stubify_manifest.py"],
deps = [
"//third_party/py/gflags",
],
)
sh_binary(
name = "rex_wrapper",
srcs = ["fail.sh"],
)
py_binary(
name = "aar_embedded_jars_extractor",
srcs = ["aar_embedded_jars_extractor.py"],
deps = [
":junction_lib",
"//third_party/py/gflags",
],
)
py_binary(
name = "aar_resources_extractor",
srcs = ["aar_resources_extractor.py"],
deps = [
":junction_lib",
"//third_party/py/gflags",
],
)
py_binary(
name = "resource_extractor",
srcs = ["resource_extractor.py"],
)
py_library(
name = "junction_lib",
srcs = ["junction.py"],
visibility = ["//visibility:private"],
)
alias(
name = "android_runtest",
actual = "fail.sh",
)
alias(
name = "adb_static",
actual = "fail.sh",
)
alias(
name = "adb",
actual = "@androidsdk//:adb",
)
# If needed, this file can be regenerated by (validity is 30 * 365 days):
# keytool -genkeypair \
# -alias androiddebugkey \
# -dname "CN=Android Debug, O=Android, C=US" \
# -keystore cica \
# -sigalg SHA256withDSA \
# -validity 10950
filegroup(
name = "debug_keystore",
srcs = ["bazel_debug.keystore"],
)
alias(
name = "databinding_annotation_processor",
actual = "@android_databinding//:annotation_processor",
)
alias(
name = "jarjar_bin",
actual = "//third_party/java/jarjar:jarjar_bin",
)
# This is the default binding of //external:android/sdk. If someone attempts to
# build a rule that depends on //external:android/sdk without setting up
# android_sdk_repository in their WORKSPACE, the genrule will fail with a
# helpful error message.
android_sdk(
name = "poison_pill_android_sdk",
proguard = ":error_message",
aapt = ":error_message",
dx = ":error_message",
main_dex_list_creator = ":error_message",
adb = ":error_message",
framework_aidl = ":error_message",
aidl = ":error_message",
android_jar = ":error_message.jar",
shrinked_android_jar = ":error_message.jar",
annotations_jar = ":error_message.jar",
main_dex_classes = ":error_message",
apksigner = ":error_message",
zipalign = ":error_message",
)
genrule(
name = "no_android_sdk_repository_error",
outs = ["error_message", "error_message.jar"],
cmd = """echo \
This build requires an Android SDK. Please add the android_sdk_repository \
rule to your WORKSPACE. ; \
exit 1 """,
)
# //external:has_androidsdk is bound to either
# @bazel_tools//tools/android:always_true or
# @bazel_tools//tools/android:always_false depending on whether
# android_sdk_repository has run. This allows targets to depend on targets from
# @androidsdk if and only if the user has an android_sdk_repository set up.
config_feature_flag(
name = "true",
default_value = "true",
allowed_values = ["true", "false"],
)
config_setting(
name = "always_true",
flag_values = {
":true": "true"
},
)
config_setting(
name = "always_false",
flag_values = {
":true": "false",
},
)
package_group(
name = "android_device_whitelist",
packages = ["//..."],
)