1*9e965d6fSRomain Jobredeaux# Copyright 2018 The Bazel Authors. All rights reserved. 2*9e965d6fSRomain Jobredeaux# 3*9e965d6fSRomain Jobredeaux# Licensed under the Apache License, Version 2.0 (the "License"); 4*9e965d6fSRomain Jobredeaux# you may not use this file except in compliance with the License. 5*9e965d6fSRomain Jobredeaux# You may obtain a copy of the License at 6*9e965d6fSRomain Jobredeaux# 7*9e965d6fSRomain Jobredeaux# http://www.apache.org/licenses/LICENSE-2.0 8*9e965d6fSRomain Jobredeaux# 9*9e965d6fSRomain Jobredeaux# Unless required by applicable law or agreed to in writing, software 10*9e965d6fSRomain Jobredeaux# distributed under the License is distributed on an "AS IS" BASIS, 11*9e965d6fSRomain Jobredeaux# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*9e965d6fSRomain Jobredeaux# See the License for the specific language governing permissions and 13*9e965d6fSRomain Jobredeaux# limitations under the License. 14*9e965d6fSRomain Jobredeaux"""Tools needed by the mobile-install aspect defined as aspect attributes.""" 15*9e965d6fSRomain Jobredeaux 16*9e965d6fSRomain Jobredeauxload(":dependency_map.bzl", "versioned_deps") 17*9e965d6fSRomain Jobredeaux 18*9e965d6fSRomain JobredeauxTOOL_ATTRS = dict( 19*9e965d6fSRomain Jobredeaux # Target Attrs 20*9e965d6fSRomain Jobredeaux # This library should not be versioned. It needs to be built with the same 21*9e965d6fSRomain Jobredeaux # config that is used to build the app. Android binds the application to a 22*9e965d6fSRomain Jobredeaux # concrete achitecture during install time. If no libs are on the apk, it 23*9e965d6fSRomain Jobredeaux # will select the most specific to the device is running. We want to use 24*9e965d6fSRomain Jobredeaux # whatever the user builds as long as it is compatible. And since we push 25*9e965d6fSRomain Jobredeaux # the native libs outside the apk to speed up transfer times, we need to 26*9e965d6fSRomain Jobredeaux # use dummy libs. 27*9e965d6fSRomain Jobredeaux _android_sdk = attr.label( 28*9e965d6fSRomain Jobredeaux default = Label( 29*9e965d6fSRomain Jobredeaux "//tools/android:android_jar", 30*9e965d6fSRomain Jobredeaux ), 31*9e965d6fSRomain Jobredeaux allow_files = True, 32*9e965d6fSRomain Jobredeaux cfg = "target", 33*9e965d6fSRomain Jobredeaux ), 34*9e965d6fSRomain Jobredeaux _flags = attr.label( 35*9e965d6fSRomain Jobredeaux default = Label( 36*9e965d6fSRomain Jobredeaux "//rules/flags", 37*9e965d6fSRomain Jobredeaux ), 38*9e965d6fSRomain Jobredeaux ), 39*9e965d6fSRomain Jobredeaux _studio_deployer = attr.label( 40*9e965d6fSRomain Jobredeaux default = "//tools/android:gen_fail", # TODO(#119): Studio deployer jar to be released 41*9e965d6fSRomain Jobredeaux allow_single_file = True, 42*9e965d6fSRomain Jobredeaux cfg = "exec", 43*9e965d6fSRomain Jobredeaux executable = True, 44*9e965d6fSRomain Jobredeaux ), 45*9e965d6fSRomain Jobredeaux _mi_shell_dummy_native_libs = attr.label( 46*9e965d6fSRomain Jobredeaux default = Label( 47*9e965d6fSRomain Jobredeaux "//tools/android:gen_fail", # FIXME: Unused internally 48*9e965d6fSRomain Jobredeaux ), 49*9e965d6fSRomain Jobredeaux allow_single_file = True, 50*9e965d6fSRomain Jobredeaux cfg = "target", 51*9e965d6fSRomain Jobredeaux ), 52*9e965d6fSRomain Jobredeaux _mi_shell_app = attr.label( 53*9e965d6fSRomain Jobredeaux default = versioned_deps.mi_shell_app.head, 54*9e965d6fSRomain Jobredeaux allow_files = True, 55*9e965d6fSRomain Jobredeaux cfg = "target", 56*9e965d6fSRomain Jobredeaux executable = True, 57*9e965d6fSRomain Jobredeaux ), 58*9e965d6fSRomain Jobredeaux _mi_java8_legacy_dex = attr.label( 59*9e965d6fSRomain Jobredeaux default = Label("//tools/android:java8_legacy_dex"), 60*9e965d6fSRomain Jobredeaux allow_single_file = True, 61*9e965d6fSRomain Jobredeaux cfg = "target", 62*9e965d6fSRomain Jobredeaux ), 63*9e965d6fSRomain Jobredeaux 64*9e965d6fSRomain Jobredeaux # Host Attrs 65*9e965d6fSRomain Jobredeaux _aapt2 = attr.label( 66*9e965d6fSRomain Jobredeaux default = Label( 67*9e965d6fSRomain Jobredeaux "@androidsdk//:aapt2_binary", 68*9e965d6fSRomain Jobredeaux ), 69*9e965d6fSRomain Jobredeaux allow_single_file = True, 70*9e965d6fSRomain Jobredeaux cfg = "exec", 71*9e965d6fSRomain Jobredeaux executable = True, 72*9e965d6fSRomain Jobredeaux ), 73*9e965d6fSRomain Jobredeaux _android_test_runner = attr.label( 74*9e965d6fSRomain Jobredeaux default = Label( 75*9e965d6fSRomain Jobredeaux "@bazel_tools//tools/jdk:TestRunner_deploy.jar", 76*9e965d6fSRomain Jobredeaux ), 77*9e965d6fSRomain Jobredeaux allow_single_file = True, 78*9e965d6fSRomain Jobredeaux cfg = "exec", 79*9e965d6fSRomain Jobredeaux executable = True, 80*9e965d6fSRomain Jobredeaux ), 81*9e965d6fSRomain Jobredeaux _apk_signer = attr.label( 82*9e965d6fSRomain Jobredeaux default = Label("@androidsdk//:apksigner"), 83*9e965d6fSRomain Jobredeaux allow_files = True, 84*9e965d6fSRomain Jobredeaux cfg = "exec", 85*9e965d6fSRomain Jobredeaux executable = True, 86*9e965d6fSRomain Jobredeaux ), 87*9e965d6fSRomain Jobredeaux _desugar_java8 = attr.label( 88*9e965d6fSRomain Jobredeaux default = Label("//tools/android:desugar_java8"), 89*9e965d6fSRomain Jobredeaux allow_files = True, 90*9e965d6fSRomain Jobredeaux cfg = "exec", 91*9e965d6fSRomain Jobredeaux executable = True, 92*9e965d6fSRomain Jobredeaux ), 93*9e965d6fSRomain Jobredeaux _d8 = attr.label( 94*9e965d6fSRomain Jobredeaux default = Label("//tools/android:d8"), 95*9e965d6fSRomain Jobredeaux allow_files = True, 96*9e965d6fSRomain Jobredeaux cfg = "exec", 97*9e965d6fSRomain Jobredeaux executable = True, 98*9e965d6fSRomain Jobredeaux ), 99*9e965d6fSRomain Jobredeaux _host_java_runtime = attr.label( 100*9e965d6fSRomain Jobredeaux default = Label("//tools/jdk:current_host_java_runtime"), 101*9e965d6fSRomain Jobredeaux cfg = "exec", 102*9e965d6fSRomain Jobredeaux ), 103*9e965d6fSRomain Jobredeaux _java_jdk = attr.label( 104*9e965d6fSRomain Jobredeaux default = Label("//tools/jdk:current_java_runtime"), 105*9e965d6fSRomain Jobredeaux allow_files = True, 106*9e965d6fSRomain Jobredeaux cfg = "exec", 107*9e965d6fSRomain Jobredeaux ), 108*9e965d6fSRomain Jobredeaux _resource_busybox = attr.label( 109*9e965d6fSRomain Jobredeaux default = Label("@bazel_tools//src/tools/android/java/com/google/devtools/build/android:ResourceProcessorBusyBox_deploy.jar"), 110*9e965d6fSRomain Jobredeaux allow_files = True, 111*9e965d6fSRomain Jobredeaux cfg = "exec", 112*9e965d6fSRomain Jobredeaux executable = True, 113*9e965d6fSRomain Jobredeaux ), 114*9e965d6fSRomain Jobredeaux _zipalign = attr.label( 115*9e965d6fSRomain Jobredeaux default = Label( 116*9e965d6fSRomain Jobredeaux "@androidsdk//:zipalign_binary", 117*9e965d6fSRomain Jobredeaux ), 118*9e965d6fSRomain Jobredeaux allow_single_file = True, 119*9e965d6fSRomain Jobredeaux cfg = "exec", 120*9e965d6fSRomain Jobredeaux executable = True, 121*9e965d6fSRomain Jobredeaux ), 122*9e965d6fSRomain Jobredeaux 123*9e965d6fSRomain Jobredeaux 124*9e965d6fSRomain Jobredeaux # Versioned Host Attrs 125*9e965d6fSRomain Jobredeaux _android_kit = attr.label( 126*9e965d6fSRomain Jobredeaux default = versioned_deps.android_kit.head, 127*9e965d6fSRomain Jobredeaux allow_files = True, 128*9e965d6fSRomain Jobredeaux cfg = "exec", 129*9e965d6fSRomain Jobredeaux executable = True, 130*9e965d6fSRomain Jobredeaux ), 131*9e965d6fSRomain Jobredeaux _deploy = attr.label( 132*9e965d6fSRomain Jobredeaux default = versioned_deps.deploy.head, 133*9e965d6fSRomain Jobredeaux allow_files = True, 134*9e965d6fSRomain Jobredeaux cfg = "exec", 135*9e965d6fSRomain Jobredeaux executable = True, 136*9e965d6fSRomain Jobredeaux ), 137*9e965d6fSRomain Jobredeaux _deploy_info = attr.label( 138*9e965d6fSRomain Jobredeaux default = versioned_deps.deploy_info.head, 139*9e965d6fSRomain Jobredeaux allow_files = True, 140*9e965d6fSRomain Jobredeaux cfg = "exec", 141*9e965d6fSRomain Jobredeaux executable = True, 142*9e965d6fSRomain Jobredeaux ), 143*9e965d6fSRomain Jobredeaux _jar_tool = attr.label( 144*9e965d6fSRomain Jobredeaux default = versioned_deps.jar_tool.head, 145*9e965d6fSRomain Jobredeaux allow_files = True, 146*9e965d6fSRomain Jobredeaux cfg = "exec", 147*9e965d6fSRomain Jobredeaux executable = True, 148*9e965d6fSRomain Jobredeaux ), 149*9e965d6fSRomain Jobredeaux _make_sync = attr.label( 150*9e965d6fSRomain Jobredeaux default = versioned_deps.make_sync.head, 151*9e965d6fSRomain Jobredeaux allow_files = True, 152*9e965d6fSRomain Jobredeaux cfg = "exec", 153*9e965d6fSRomain Jobredeaux executable = True, 154*9e965d6fSRomain Jobredeaux ), 155*9e965d6fSRomain Jobredeaux _merge_syncs = attr.label( 156*9e965d6fSRomain Jobredeaux default = versioned_deps.merge_syncs.head, 157*9e965d6fSRomain Jobredeaux allow_files = True, 158*9e965d6fSRomain Jobredeaux cfg = "exec", 159*9e965d6fSRomain Jobredeaux executable = True, 160*9e965d6fSRomain Jobredeaux ), 161*9e965d6fSRomain Jobredeaux _mi_android_java_toolchain = attr.label( 162*9e965d6fSRomain Jobredeaux default = Label("//tools/jdk:toolchain_android_only"), 163*9e965d6fSRomain Jobredeaux ), 164*9e965d6fSRomain Jobredeaux _mi_java_toolchain = attr.label( 165*9e965d6fSRomain Jobredeaux cfg = "exec", 166*9e965d6fSRomain Jobredeaux default = Label("//tools/jdk:toolchain"), 167*9e965d6fSRomain Jobredeaux ), 168*9e965d6fSRomain Jobredeaux _mi_host_javabase = attr.label( 169*9e965d6fSRomain Jobredeaux default = Label("//tools/jdk:current_host_java_runtime"), 170*9e965d6fSRomain Jobredeaux ), 171*9e965d6fSRomain Jobredeaux _pack_dexes = attr.label( 172*9e965d6fSRomain Jobredeaux default = versioned_deps.pack_dexes.head, 173*9e965d6fSRomain Jobredeaux allow_files = True, 174*9e965d6fSRomain Jobredeaux cfg = "exec", 175*9e965d6fSRomain Jobredeaux executable = True, 176*9e965d6fSRomain Jobredeaux ), 177*9e965d6fSRomain Jobredeaux _pack_generic = attr.label( 178*9e965d6fSRomain Jobredeaux default = versioned_deps.pack_generic.head, 179*9e965d6fSRomain Jobredeaux allow_files = True, 180*9e965d6fSRomain Jobredeaux cfg = "exec", 181*9e965d6fSRomain Jobredeaux executable = True, 182*9e965d6fSRomain Jobredeaux ), 183*9e965d6fSRomain Jobredeaux _res_v3_dummy_manifest = attr.label( 184*9e965d6fSRomain Jobredeaux allow_single_file = True, 185*9e965d6fSRomain Jobredeaux default = versioned_deps.res_v3_dummy_manifest.head, 186*9e965d6fSRomain Jobredeaux ), 187*9e965d6fSRomain Jobredeaux _res_v3_dummy_r_txt = attr.label( 188*9e965d6fSRomain Jobredeaux allow_single_file = True, 189*9e965d6fSRomain Jobredeaux default = versioned_deps.res_v3_dummy_r_txt.head, 190*9e965d6fSRomain Jobredeaux ), 191*9e965d6fSRomain Jobredeaux _resource_extractor = attr.label( 192*9e965d6fSRomain Jobredeaux allow_single_file = True, 193*9e965d6fSRomain Jobredeaux cfg = "exec", 194*9e965d6fSRomain Jobredeaux default = versioned_deps.resource_extractor.head, 195*9e965d6fSRomain Jobredeaux executable = True, 196*9e965d6fSRomain Jobredeaux ), 197*9e965d6fSRomain Jobredeaux _sync_merger = attr.label( 198*9e965d6fSRomain Jobredeaux default = versioned_deps.sync_merger.head, 199*9e965d6fSRomain Jobredeaux allow_files = True, 200*9e965d6fSRomain Jobredeaux cfg = "exec", 201*9e965d6fSRomain Jobredeaux executable = True, 202*9e965d6fSRomain Jobredeaux ), 203*9e965d6fSRomain Jobredeaux 204*9e965d6fSRomain Jobredeaux) 205