| load("//tools/python:private/defs.bzl", "py_library", "py_binary") | |
| package(default_visibility = ["//visibility:public"]) | |
| alias( | |
| name = "sdk", | |
| actual = "//external:android/sdk", | |
| ) | |
| android_tools_defaults_jar(name = "android_jar") | |
| 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", | |
| ) | |
| # Defines d8_dexbuilder using @<repo>//:d8_jar_import generated by android_sdk_repository rule | |
| # without needing the SDK repo's name (typically @androidsdk but not required). | |
| java_binary( | |
| name = "d8_dexbuilder", | |
| main_class = "com.android.tools.r8.compatdexbuilder.CompatDexBuilder", | |
| visibility = ["//visibility:private"], | |
| runtime_deps = ["//external:android/d8_jar_import"], | |
| ) | |
| # NOTE: d8 dex builder doesn't support the persistent worker mode at the moment. To use this config, | |
| # without a build error, --nouse_workers_with_dexbuilder flag must also be specified. | |
| config_setting( | |
| name = "d8_incremental_dexing", | |
| values = { | |
| "define": "android_incremental_dexing_tool=d8_dexbuilder", | |
| }, | |
| ) | |
| config_setting( | |
| name = "dx_incremental_dexing", | |
| values = { | |
| "define": "android_incremental_dexing_tool=dx_dexbuilder", | |
| }, | |
| ) | |
| alias( | |
| name = "dexbuilder", | |
| actual = select({ | |
| "d8_incremental_dexing": ":d8_dexbuilder", | |
| "dx_incremental_dexing": "//src/tools/android/java/com/google/devtools/build/android/dexer:DexBuilder", | |
| "//conditions:default": "//src/tools/android/java/com/google/devtools/build/android/dexer:DexBuilder", | |
| }), | |
| ) | |
| alias( | |
| name = "dexbuilder_after_proguard", | |
| 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", | |
| ) | |
| sh_binary( | |
| name = "desugar_java8", | |
| srcs = ["desugar.sh"], | |
| data = ["//src/tools/android/java/com/google/devtools/build/android/desugar:Desugar"], | |
| ) | |
| alias( | |
| name = "aar_import_deps_checker", | |
| actual = "//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:ImportDepsChecker_embedded", | |
| visibility = ["//visibility:public"], | |
| ) | |
| alias( | |
| name = "zip_filter", | |
| actual = "//src/tools/android/java/com/google/devtools/build/android:ZipFilterAction", | |
| ) | |
| # 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"], | |
| ) | |
| # 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 = [ | |
| "@bazel_tools//tools/jdk:platformclasspath", | |
| ], | |
| outs = ["java_lang_extras.jar"], | |
| cmd = """ | |
| $(location @bazel_tools//tools/jdk:singlejar) \ | |
| --exclude_build_data \ | |
| --dont_change_compression \ | |
| --sources $(location @bazel_tools//tools/jdk:platformclasspath) \ | |
| --include_prefixes "java/lang/invoke/" \ | |
| --include_prefixes "java/lang/annotation/" \ | |
| --output $@""", | |
| tools = ["@bazel_tools//tools/jdk:singlejar"], | |
| visibility = ["//visibility:private"], | |
| ) | |
| java_import( | |
| name = "desugared_java8_legacy_apis", | |
| jars = [":ijar_desugared_java8_legacy_libs"], | |
| neverlink = 1, | |
| visibility = ["//visibility:public"], | |
| ) | |
| genrule( | |
| name = "ijar_desugared_java8_legacy_libs", | |
| srcs = ["desugared_java8_legacy_libs"], | |
| outs = ["desugared_java8_legacy_libs-ijar.jar"], | |
| cmd = "$(location @bazel_tools//tools/jdk:ijar) $< $@", | |
| tools = ["@bazel_tools//tools/jdk:ijar"], | |
| visibility = ["//visibility:private"], | |
| ) | |
| sh_binary( | |
| name = "build_java8_legacy_dex", | |
| srcs = ["build_java8_legacy_dex.sh"], | |
| data = [ | |
| "minify_java8_legacy_libs.cfg", | |
| ":desugared_java8_legacy_libs", | |
| ":dexer", | |
| "@bazel_tools//src/tools/android/java/com/google/devtools/build/android/desugar/scan:KeepScanner", | |
| "@bazel_tools//tools/jdk:proguard", | |
| ], | |
| visibility = ["//visibility:public"], | |
| ) | |
| genrule( | |
| name = "java8_legacy_dex", | |
| outs = ["java8_legacy.dex.zip"], | |
| cmd = """$(location :build_java8_legacy_dex) --output $@""", | |
| tools = [":build_java8_legacy_dex"], | |
| visibility = ["//visibility:public"], | |
| ) | |
| filegroup( | |
| name = "desugared_java8_legacy_libs", | |
| srcs = ["desugared_java8_legacy_libs.jar"], | |
| visibility = ["//visibility:private"], | |
| ) | |
| genrule( | |
| name = "desugar_java8_legacy_libs", | |
| srcs = ["@android_tools//:desugar_jdk_libs.jar"], | |
| outs = ["desugared_java8_legacy_libs.jar"], | |
| cmd = """ | |
| $(location :desugar_java8) \ | |
| --input $< \ | |
| --output $@ \ | |
| --classpath_entry "$(location @bazel_tools//tools/jdk:platformclasspath)" \ | |
| --core_library --allow_empty_bootclasspath \ | |
| --nobest_effort_tolerate_missing_deps \ | |
| --noemit_dependency_metadata_as_needed \ | |
| --nodesugar_try_with_resources_if_needed \ | |
| --desugar_supported_core_libs \ | |
| --rewrite_core_library_prefix java/lang/Double8 \ | |
| --rewrite_core_library_prefix java/lang/Integer8 \ | |
| --rewrite_core_library_prefix java/lang/Long8 \ | |
| --rewrite_core_library_prefix java/lang/Math8 \ | |
| --rewrite_core_library_prefix java/time/ \ | |
| --rewrite_core_library_prefix java/util/stream/ \ | |
| --rewrite_core_library_prefix java/util/function/ \ | |
| --rewrite_core_library_prefix java/util/Comparators \ | |
| --rewrite_core_library_prefix java/util/Desugar \ | |
| --rewrite_core_library_prefix java/util/DoubleSummaryStatistics \ | |
| --rewrite_core_library_prefix java/util/IntSummaryStatistics \ | |
| --rewrite_core_library_prefix java/util/LongSummaryStatistics \ | |
| --rewrite_core_library_prefix java/util/Objects \ | |
| --rewrite_core_library_prefix java/util/Optional \ | |
| --rewrite_core_library_prefix java/util/PrimitiveIterator \ | |
| --rewrite_core_library_prefix java/util/SortedSet\\$$1 \ | |
| --rewrite_core_library_prefix java/util/Spliterator \ | |
| --rewrite_core_library_prefix java/util/StringJoiner \ | |
| --rewrite_core_library_prefix java/util/Tripwire \ | |
| --rewrite_core_library_prefix java/util/concurrent/ConcurrentHashMap \ | |
| --rewrite_core_library_prefix java/util/concurrent/DesugarUnsafe \ | |
| --rewrite_core_library_prefix java/util/concurrent/ThreadLocalRandom \ | |
| --rewrite_core_library_prefix java/util/concurrent/atomic/DesugarAtomic \ | |
| --retarget_core_library_member "java/util/LinkedHashSet#spliterator->java/util/DesugarLinkedHashSet" \ | |
| --emulate_core_library_interface java/util/Collection \ | |
| --emulate_core_library_interface java/util/Map \ | |
| --emulate_core_library_interface java/util/Map\\$$Entry \ | |
| --emulate_core_library_interface java/util/Iterator \ | |
| --emulate_core_library_interface java/util/Comparator \ | |
| --dont_rewrite_core_library_invocation "java/util/Iterator#remove" """, | |
| tools = [ | |
| ":desugar_java8", | |
| "@bazel_tools//tools/jdk:platformclasspath", | |
| ], | |
| visibility = ["//visibility:private"], | |
| ) | |
| # No-one should depend on this but :desugared_java8_legacy_libs above | |
| exports_files( | |
| ["desugar_jdk_libs.jar"], | |
| visibility = ["//visibility:private"], | |
| ) | |
| # Mirrors @<repo>//:dx_binary generated by android_sdk_repository rule without | |
| # needing the SDK repo's name (typically @androidsdk but not required). | |
| java_binary( | |
| name = "dexer", | |
| main_class = "com.android.dx.command.Main", | |
| visibility = ["//visibility:private"], | |
| runtime_deps = ["//external:android/dx_jar_import"], | |
| ) | |
| alias( | |
| name = "IdlClass", | |
| actual = "//src/tools/android/java/com/google/devtools/build/android/idlclass:IdlClass", | |
| ) | |
| py_binary( | |
| name = "instrumentation_test_check", | |
| srcs = ["instrumentation_test_check.py"], | |
| # TODO(bazel-team): remove python_version = "PY2" while fixing https://github.com/bazelbuild/bazel/issues/10127. | |
| python_version = "PY2", | |
| deps = ["//third_party/py/abseil"], | |
| ) | |
| py_binary( | |
| name = "build_incremental_dexmanifest", | |
| srcs = [":build_incremental_dexmanifest.py"], | |
| # TODO(bazel-team): remove python_version = "PY2" while fixing https://github.com/bazelbuild/bazel/issues/10127. | |
| python_version = "PY2", | |
| deps = [], | |
| ) | |
| py_binary( | |
| name = "build_split_manifest", | |
| srcs = ["build_split_manifest.py"], | |
| # TODO(bazel-team): remove python_version = "PY2" while fixing https://github.com/bazelbuild/bazel/issues/10127. | |
| python_version = "PY2", | |
| deps = [ | |
| "//third_party/py/abseil", | |
| ], | |
| ) | |
| py_binary( | |
| name = "incremental_install", | |
| srcs = ["incremental_install.py"], | |
| # TODO(bazel-team): remove python_version = "PY2" while fixing https://github.com/bazelbuild/bazel/issues/10127. | |
| python_version = "PY2", | |
| deps = [ | |
| "//third_party/py/concurrent:futures", | |
| "//third_party/py/abseil", | |
| ], | |
| ) | |
| py_binary( | |
| name = "strip_resources", | |
| srcs = ["strip_resources.py"], | |
| # TODO(bazel-team): remove python_version = "PY2" while fixing https://github.com/bazelbuild/bazel/issues/10127. | |
| python_version = "PY2", | |
| deps = [ | |
| "//third_party/py/abseil", | |
| ], | |
| ) | |
| py_binary( | |
| name = "aar_native_libs_zip_creator", | |
| srcs = [ | |
| "aar_native_libs_zip_creator.py", | |
| ], | |
| # TODO(bazel-team): remove python_version = "PY2" while fixing https://github.com/bazelbuild/bazel/issues/10127. | |
| python_version = "PY2", | |
| deps = [ | |
| ":junction_lib", | |
| "//third_party/py/abseil", | |
| ], | |
| ) | |
| py_binary( | |
| name = "stubify_manifest", | |
| srcs = ["stubify_manifest.py"], | |
| # TODO(bazel-team): remove python_version = "PY2" while fixing https://github.com/bazelbuild/bazel/issues/10127. | |
| python_version = "PY2", | |
| deps = [ | |
| "//third_party/py/abseil", | |
| ], | |
| ) | |
| py_binary( | |
| name = "aar_embedded_jars_extractor", | |
| srcs = ["aar_embedded_jars_extractor.py"], | |
| # TODO(bazel-team): remove python_version = "PY2" while fixing https://github.com/bazelbuild/bazel/issues/10127. | |
| python_version = "PY2", | |
| deps = [ | |
| ":junction_lib", | |
| "//third_party/py/abseil", | |
| ], | |
| ) | |
| py_binary( | |
| name = "aar_resources_extractor", | |
| srcs = ["aar_resources_extractor.py"], | |
| # TODO(bazel-team): remove python_version = "PY2" while fixing https://github.com/bazelbuild/bazel/issues/10127. | |
| python_version = "PY2", | |
| deps = [ | |
| ":junction_lib", | |
| "//third_party/py/abseil", | |
| ], | |
| ) | |
| py_binary( | |
| name = "resource_extractor", | |
| srcs = ["resource_extractor.py"], | |
| # TODO(bazel-team): remove python_version = "PY2" while fixing https://github.com/bazelbuild/bazel/issues/10127. | |
| python_version = "PY2", | |
| ) | |
| py_library( | |
| name = "junction_lib", | |
| srcs = ["junction.py"], | |
| # TODO(bazel-team): remove srcs_version = "PY2AND3" while fixing https://github.com/bazelbuild/bazel/issues/10127. | |
| srcs_version = "PY2AND3", | |
| 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"], | |
| ) | |
| java_binary( | |
| name = "exec_binary", | |
| main_class = "android.databinding.AndroidDataBinding", | |
| runtime_deps = [ | |
| "//third_party/java/android_databinding:exec", | |
| ], | |
| ) | |
| alias( | |
| name = "databinding_annotation_processor", | |
| actual = "//external:databinding_annotation_processor", | |
| ) | |
| # This is the default value of databinding_annotation_processor if the user does | |
| # not provide one. | |
| filegroup(name = "empty") | |
| alias( | |
| name = "jarjar_bin", | |
| actual = "//third_party/java/jarjar:jarjar_bin", | |
| ) | |
| alias( | |
| name = "instrumentation_test_entry_point", | |
| actual = "@android_test_support//:instrumentation_test_runner", | |
| ) | |
| # 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", | |
| aapt = ":error_message", | |
| adb = ":error_message", | |
| aidl = ":error_message", | |
| android_jar = ":error_message.jar", | |
| apksigner = ":error_message", | |
| dx = ":error_message", | |
| framework_aidl = ":error_message", | |
| main_dex_classes = ":error_message", | |
| main_dex_list_creator = ":error_message", | |
| proguard = ":error_message", | |
| shrinked_android_jar = ":error_message.jar", | |
| 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", | |
| allowed_values = [ | |
| "true", | |
| "false", | |
| ], | |
| default_value = "true", | |
| ) | |
| 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 = ["//..."], | |
| ) | |
| package_group( | |
| name = "export_deps_whitelist", | |
| packages = ["//..."], | |
| ) | |
| package_group( | |
| name = "allow_android_library_deps_without_srcs_whitelist", | |
| packages = ["//..."], | |
| ) | |
| sh_binary( | |
| name = "dex_list_obfuscator", | |
| srcs = ["dex_list_obfuscator.sh"], | |
| visibility = ["//visibility:public"], | |
| ) | |
| filegroup( | |
| name = "bzl_srcs", | |
| srcs = glob(["*.bzl"]), | |
| visibility = ["//tools:__pkg__"], | |
| ) |