| load("//tools/python:private/defs.bzl", "py_library", "py_binary") |
| load("//tools/python:private/version.bzl", "PY_BINARY_VERSION") |
| |
| 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", |
| ) |
| |
| # Defines d8_dexmerger 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_dexmerger", |
| main_class = "com.android.tools.r8.dexfilemerger.DexFileMerger", |
| visibility = ["//visibility:private"], |
| runtime_deps = ["//external:android/d8_jar_import"], |
| ) |
| |
| config_setting( |
| name = "use_dx_dexmerger", |
| values = { |
| "define": "android_dexmerger_tool=dx_dexmerger", |
| }, |
| ) |
| |
| config_setting( |
| name = "use_d8_dexmerger", |
| values = { |
| "define": "android_dexmerger_tool=d8_dexmerger", |
| }, |
| ) |
| |
| alias( |
| name = "dexmerger", |
| actual = select({ |
| "use_d8_dexmerger": ":d8_dexmerger", |
| "use_dx_dexmerger": "//src/tools/android/java/com/google/devtools/build/android/dexer:DexFileMerger", |
| "//conditions:default": "//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"], |
| python_version = PY_BINARY_VERSION, |
| deps = ["//third_party/py/abseil"], |
| ) |
| |
| py_binary( |
| name = "build_incremental_dexmanifest", |
| srcs = [":build_incremental_dexmanifest.py"], |
| python_version = PY_BINARY_VERSION, |
| deps = [], |
| ) |
| |
| py_binary( |
| name = "build_split_manifest", |
| srcs = ["build_split_manifest.py"], |
| python_version = PY_BINARY_VERSION, |
| deps = [ |
| "//third_party/py/abseil", |
| ], |
| ) |
| |
| py_binary( |
| name = "incremental_install", |
| srcs = ["incremental_install.py"], |
| python_version = PY_BINARY_VERSION, |
| deps = [ |
| "//third_party/py/concurrent:futures", |
| "//third_party/py/abseil", |
| ], |
| ) |
| |
| py_binary( |
| name = "strip_resources", |
| srcs = ["strip_resources.py"], |
| python_version = PY_BINARY_VERSION, |
| deps = [ |
| "//third_party/py/abseil", |
| ], |
| ) |
| |
| py_binary( |
| name = "aar_native_libs_zip_creator", |
| srcs = [ |
| "aar_native_libs_zip_creator.py", |
| ], |
| python_version = PY_BINARY_VERSION, |
| deps = [ |
| ":junction_lib", |
| "//third_party/py/abseil", |
| ], |
| ) |
| |
| py_binary( |
| name = "stubify_manifest", |
| srcs = ["stubify_manifest.py"], |
| python_version = PY_BINARY_VERSION, |
| deps = [ |
| "//third_party/py/abseil", |
| ], |
| ) |
| |
| py_binary( |
| name = "aar_embedded_jars_extractor", |
| srcs = ["aar_embedded_jars_extractor.py"], |
| python_version = PY_BINARY_VERSION, |
| deps = [ |
| ":junction_lib", |
| "//third_party/py/abseil", |
| ], |
| ) |
| |
| py_binary( |
| name = "aar_resources_extractor", |
| srcs = ["aar_resources_extractor.py"], |
| python_version = PY_BINARY_VERSION, |
| deps = [ |
| ":junction_lib", |
| "//third_party/py/abseil", |
| ], |
| ) |
| |
| py_binary( |
| name = "resource_extractor", |
| srcs = ["resource_extractor.py"], |
| python_version = PY_BINARY_VERSION, |
| ) |
| |
| 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__"], |
| ) |