package(default_visibility = ["//visibility:public"]) alias( name = "sdk", actual = "//external:android/sdk", ) android_library( name = "incremental_stub_application", deps = ["//src/tools/android/java/com/google/devtools/build/android/incrementaldeployment:incremental_stub_application"], ) android_library( name = "incremental_split_stub_application", deps = ["//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 = "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 = [ "//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", }, )