xref: /aosp_15_r20/external/bazelbuild-rules_android/toolchains/android/toolchain.bzl (revision 9e965d6fece27a77de5377433c2f7e6999b8cc0b)
1*9e965d6fSRomain Jobredeaux# Copyright 2019 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
15*9e965d6fSRomain Jobredeaux"""Android toolchain."""
16*9e965d6fSRomain Jobredeaux
17*9e965d6fSRomain Jobredeaux_ATTRS = dict(
18*9e965d6fSRomain Jobredeaux    aapt2 = attr.label(
19*9e965d6fSRomain Jobredeaux        allow_files = True,
20*9e965d6fSRomain Jobredeaux        cfg = "exec",
21*9e965d6fSRomain Jobredeaux        default = "@androidsdk//:aapt2_binary",
22*9e965d6fSRomain Jobredeaux    ),
23*9e965d6fSRomain Jobredeaux    aar_import_checks = attr.label(
24*9e965d6fSRomain Jobredeaux        allow_single_file = True,
25*9e965d6fSRomain Jobredeaux        cfg = "exec",
26*9e965d6fSRomain Jobredeaux        default = "//src/validations/aar_import_checks",
27*9e965d6fSRomain Jobredeaux        executable = True,
28*9e965d6fSRomain Jobredeaux    ),
29*9e965d6fSRomain Jobredeaux    aar_embedded_jars_extractor = attr.label(
30*9e965d6fSRomain Jobredeaux        allow_files = True,
31*9e965d6fSRomain Jobredeaux        cfg = "exec",
32*9e965d6fSRomain Jobredeaux        default = "@bazel_tools//tools/android:aar_embedded_jars_extractor",
33*9e965d6fSRomain Jobredeaux        executable = True,
34*9e965d6fSRomain Jobredeaux    ),
35*9e965d6fSRomain Jobredeaux    aar_embedded_proguard_extractor = attr.label(
36*9e965d6fSRomain Jobredeaux        allow_files = True,
37*9e965d6fSRomain Jobredeaux        cfg = "exec",
38*9e965d6fSRomain Jobredeaux        default = "@bazel_tools//tools/android:aar_embedded_proguard_extractor",
39*9e965d6fSRomain Jobredeaux        executable = True,
40*9e965d6fSRomain Jobredeaux    ),
41*9e965d6fSRomain Jobredeaux    aar_native_libs_zip_creator = attr.label(
42*9e965d6fSRomain Jobredeaux        allow_files = True,
43*9e965d6fSRomain Jobredeaux        cfg = "exec",
44*9e965d6fSRomain Jobredeaux        default = "@bazel_tools//tools/android:aar_native_libs_zip_creator",
45*9e965d6fSRomain Jobredeaux        executable = True,
46*9e965d6fSRomain Jobredeaux    ),
47*9e965d6fSRomain Jobredeaux    aar_resources_extractor = attr.label(
48*9e965d6fSRomain Jobredeaux        allow_files = True,
49*9e965d6fSRomain Jobredeaux        cfg = "exec",
50*9e965d6fSRomain Jobredeaux        default = "@bazel_tools//tools/android:aar_resources_extractor",
51*9e965d6fSRomain Jobredeaux        executable = True,
52*9e965d6fSRomain Jobredeaux    ),
53*9e965d6fSRomain Jobredeaux    adb = attr.label(
54*9e965d6fSRomain Jobredeaux        allow_files = True,
55*9e965d6fSRomain Jobredeaux        cfg = "exec",
56*9e965d6fSRomain Jobredeaux        default = "@androidsdk//:platform-tools/adb",
57*9e965d6fSRomain Jobredeaux        executable = True,
58*9e965d6fSRomain Jobredeaux    ),
59*9e965d6fSRomain Jobredeaux    add_g3itr_xslt = attr.label(
60*9e965d6fSRomain Jobredeaux        cfg = "exec",
61*9e965d6fSRomain Jobredeaux        default = Label("//tools/android/xslt:add_g3itr.xslt"),
62*9e965d6fSRomain Jobredeaux        allow_files = True,
63*9e965d6fSRomain Jobredeaux    ),
64*9e965d6fSRomain Jobredeaux    android_archive_jar_optimization_inputs_validator = attr.label(
65*9e965d6fSRomain Jobredeaux        allow_files = True,
66*9e965d6fSRomain Jobredeaux        default = "@androidsdk//:fail",
67*9e965d6fSRomain Jobredeaux        cfg = "exec",
68*9e965d6fSRomain Jobredeaux        executable = True,
69*9e965d6fSRomain Jobredeaux    ),
70*9e965d6fSRomain Jobredeaux    android_archive_packages_validator = attr.label(
71*9e965d6fSRomain Jobredeaux        allow_files = True,
72*9e965d6fSRomain Jobredeaux        default = "@androidsdk//:fail",
73*9e965d6fSRomain Jobredeaux        cfg = "exec",
74*9e965d6fSRomain Jobredeaux        executable = True,
75*9e965d6fSRomain Jobredeaux    ),
76*9e965d6fSRomain Jobredeaux    android_kit = attr.label(
77*9e965d6fSRomain Jobredeaux        allow_files = True,
78*9e965d6fSRomain Jobredeaux        cfg = "exec",
79*9e965d6fSRomain Jobredeaux        default = "@androidsdk//:fail",  # TODO: "//src/tools/ak", needs Go
80*9e965d6fSRomain Jobredeaux        executable = True,
81*9e965d6fSRomain Jobredeaux    ),
82*9e965d6fSRomain Jobredeaux    android_resources_busybox = attr.label(
83*9e965d6fSRomain Jobredeaux        allow_files = True,
84*9e965d6fSRomain Jobredeaux        cfg = "exec",
85*9e965d6fSRomain Jobredeaux        default = "@bazel_tools//src/tools/android/java/com/google/devtools/build/android:ResourceProcessorBusyBox_deploy.jar",
86*9e965d6fSRomain Jobredeaux        executable = True,
87*9e965d6fSRomain Jobredeaux    ),
88*9e965d6fSRomain Jobredeaux    apk_to_bundle_tool = attr.label(
89*9e965d6fSRomain Jobredeaux        allow_files = True,
90*9e965d6fSRomain Jobredeaux        cfg = "exec",
91*9e965d6fSRomain Jobredeaux        default = "@androidsdk//:fail",
92*9e965d6fSRomain Jobredeaux        executable = True,
93*9e965d6fSRomain Jobredeaux    ),
94*9e965d6fSRomain Jobredeaux    bundletool = attr.label(
95*9e965d6fSRomain Jobredeaux        allow_files = True,
96*9e965d6fSRomain Jobredeaux        cfg = "exec",
97*9e965d6fSRomain Jobredeaux        default = "//tools/android:bundletool_deploy.jar",
98*9e965d6fSRomain Jobredeaux        executable = True,
99*9e965d6fSRomain Jobredeaux    ),
100*9e965d6fSRomain Jobredeaux    bundletool_module_builder = attr.label(
101*9e965d6fSRomain Jobredeaux        allow_single_file = True,
102*9e965d6fSRomain Jobredeaux        cfg = "exec",
103*9e965d6fSRomain Jobredeaux        default = "//src/tools/bundletool_module_builder",
104*9e965d6fSRomain Jobredeaux        executable = True,
105*9e965d6fSRomain Jobredeaux    ),
106*9e965d6fSRomain Jobredeaux    centralize_r_class_tool = attr.label(
107*9e965d6fSRomain Jobredeaux        allow_files = True,
108*9e965d6fSRomain Jobredeaux        cfg = "exec",
109*9e965d6fSRomain Jobredeaux        default = "@androidsdk//:fail",
110*9e965d6fSRomain Jobredeaux        executable = True,
111*9e965d6fSRomain Jobredeaux    ),
112*9e965d6fSRomain Jobredeaux    data_binding_annotation_processor = attr.label(
113*9e965d6fSRomain Jobredeaux        cfg = "exec",
114*9e965d6fSRomain Jobredeaux        default = "//tools/android:compiler_annotation_processor",
115*9e965d6fSRomain Jobredeaux    ),
116*9e965d6fSRomain Jobredeaux    data_binding_annotation_template = attr.label(
117*9e965d6fSRomain Jobredeaux        default = "//rules:data_binding_annotation_template.txt",
118*9e965d6fSRomain Jobredeaux        allow_files = True,
119*9e965d6fSRomain Jobredeaux    ),
120*9e965d6fSRomain Jobredeaux    data_binding_exec = attr.label(
121*9e965d6fSRomain Jobredeaux        cfg = "exec",
122*9e965d6fSRomain Jobredeaux        default = "@bazel_tools//tools/android:databinding_exec",
123*9e965d6fSRomain Jobredeaux        executable = True,
124*9e965d6fSRomain Jobredeaux    ),
125*9e965d6fSRomain Jobredeaux    desugar = attr.label(
126*9e965d6fSRomain Jobredeaux        cfg = "exec",
127*9e965d6fSRomain Jobredeaux        default = Label("@bazel_tools//tools/android:desugar_java8"),
128*9e965d6fSRomain Jobredeaux        executable = True,
129*9e965d6fSRomain Jobredeaux    ),
130*9e965d6fSRomain Jobredeaux    desugar_java8_extra_bootclasspath = attr.label(
131*9e965d6fSRomain Jobredeaux        allow_files = True,
132*9e965d6fSRomain Jobredeaux        cfg = "exec",
133*9e965d6fSRomain Jobredeaux        default = "@bazel_tools//tools/android:desugar_java8_extra_bootclasspath",
134*9e965d6fSRomain Jobredeaux        executable = True,
135*9e965d6fSRomain Jobredeaux    ),
136*9e965d6fSRomain Jobredeaux    dexbuilder = attr.label(
137*9e965d6fSRomain Jobredeaux        cfg = "exec",
138*9e965d6fSRomain Jobredeaux        default = Label("@bazel_tools//tools/android:dexbuilder"),
139*9e965d6fSRomain Jobredeaux        executable = True,
140*9e965d6fSRomain Jobredeaux    ),
141*9e965d6fSRomain Jobredeaux    dexbuilder_after_proguard = attr.label(
142*9e965d6fSRomain Jobredeaux        cfg = "exec",
143*9e965d6fSRomain Jobredeaux        default = Label("@bazel_tools//tools/android:dexbuilder_after_proguard"),
144*9e965d6fSRomain Jobredeaux        executable = True,
145*9e965d6fSRomain Jobredeaux    ),
146*9e965d6fSRomain Jobredeaux    dexmerger = attr.label(
147*9e965d6fSRomain Jobredeaux        cfg = "exec",
148*9e965d6fSRomain Jobredeaux        default = Label("@bazel_tools//tools/android:dexmerger"),
149*9e965d6fSRomain Jobredeaux        executable = True,
150*9e965d6fSRomain Jobredeaux    ),
151*9e965d6fSRomain Jobredeaux    dexsharder = attr.label(
152*9e965d6fSRomain Jobredeaux        cfg = "exec",
153*9e965d6fSRomain Jobredeaux        default = Label("@bazel_tools//tools/android:dexsharder"),
154*9e965d6fSRomain Jobredeaux        executable = True,
155*9e965d6fSRomain Jobredeaux    ),
156*9e965d6fSRomain Jobredeaux    enforce_min_sdk_floor_tool = attr.label(
157*9e965d6fSRomain Jobredeaux        allow_files = True,
158*9e965d6fSRomain Jobredeaux        cfg = "exec",
159*9e965d6fSRomain Jobredeaux        default = "//src/tools/enforce_min_sdk_floor",
160*9e965d6fSRomain Jobredeaux        executable = True,
161*9e965d6fSRomain Jobredeaux    ),
162*9e965d6fSRomain Jobredeaux    idlclass = attr.label(
163*9e965d6fSRomain Jobredeaux        allow_files = True,
164*9e965d6fSRomain Jobredeaux        cfg = "exec",
165*9e965d6fSRomain Jobredeaux        default = "@bazel_tools//src/tools/android/java/com/google/devtools/build/android/idlclass:IdlClass_deploy.jar",
166*9e965d6fSRomain Jobredeaux        executable = True,
167*9e965d6fSRomain Jobredeaux    ),
168*9e965d6fSRomain Jobredeaux    import_deps_checker = attr.label(
169*9e965d6fSRomain Jobredeaux        allow_files = True,
170*9e965d6fSRomain Jobredeaux        cfg = "exec",
171*9e965d6fSRomain Jobredeaux        default = "@android_tools//:ImportDepsChecker_deploy.jar",
172*9e965d6fSRomain Jobredeaux        executable = True,
173*9e965d6fSRomain Jobredeaux    ),
174*9e965d6fSRomain Jobredeaux    jacocorunner = attr.label(
175*9e965d6fSRomain Jobredeaux        default = "@androidsdk//:fail",
176*9e965d6fSRomain Jobredeaux    ),
177*9e965d6fSRomain Jobredeaux    java_stub = attr.label(
178*9e965d6fSRomain Jobredeaux        allow_files = True,
179*9e965d6fSRomain Jobredeaux        # used in android_local_test
180*9e965d6fSRomain Jobredeaux        default = "@bazel_tools//tools/java:java_stub_template.txt",
181*9e965d6fSRomain Jobredeaux    ),
182*9e965d6fSRomain Jobredeaux    jdeps_tool = attr.label(
183*9e965d6fSRomain Jobredeaux        allow_files = True,
184*9e965d6fSRomain Jobredeaux        cfg = "exec",
185*9e965d6fSRomain Jobredeaux        # used in android_local_test
186*9e965d6fSRomain Jobredeaux        default = "//src/tools/jdeps",
187*9e965d6fSRomain Jobredeaux        executable = True,
188*9e965d6fSRomain Jobredeaux    ),
189*9e965d6fSRomain Jobredeaux    merge_baseline_profiles_tool = attr.label(
190*9e965d6fSRomain Jobredeaux        default = "@androidsdk//:fail",
191*9e965d6fSRomain Jobredeaux        cfg = "exec",
192*9e965d6fSRomain Jobredeaux        executable = True,
193*9e965d6fSRomain Jobredeaux    ),
194*9e965d6fSRomain Jobredeaux    object_method_rewriter = attr.label(
195*9e965d6fSRomain Jobredeaux        allow_files = True,
196*9e965d6fSRomain Jobredeaux        cfg = "exec",
197*9e965d6fSRomain Jobredeaux        default = "@androidsdk//:fail",
198*9e965d6fSRomain Jobredeaux        executable = True,
199*9e965d6fSRomain Jobredeaux    ),
200*9e965d6fSRomain Jobredeaux    proguard_allowlister = attr.label(
201*9e965d6fSRomain Jobredeaux        cfg = "exec",
202*9e965d6fSRomain Jobredeaux        default = "@bazel_tools//tools/jdk:proguard_whitelister",
203*9e965d6fSRomain Jobredeaux        executable = True,
204*9e965d6fSRomain Jobredeaux    ),
205*9e965d6fSRomain Jobredeaux    profgen = attr.label(
206*9e965d6fSRomain Jobredeaux        default = "@androidsdk//:fail",
207*9e965d6fSRomain Jobredeaux        cfg = "exec",
208*9e965d6fSRomain Jobredeaux        executable = True,
209*9e965d6fSRomain Jobredeaux    ),
210*9e965d6fSRomain Jobredeaux    proto_map_generator = attr.label(
211*9e965d6fSRomain Jobredeaux        cfg = "exec",
212*9e965d6fSRomain Jobredeaux        default = "@androidsdk//:fail",
213*9e965d6fSRomain Jobredeaux        allow_files = True,
214*9e965d6fSRomain Jobredeaux        executable = True,
215*9e965d6fSRomain Jobredeaux    ),
216*9e965d6fSRomain Jobredeaux    r8 = attr.label(
217*9e965d6fSRomain Jobredeaux        cfg = "exec",
218*9e965d6fSRomain Jobredeaux        default = "//tools/android:r8_deploy.jar",
219*9e965d6fSRomain Jobredeaux        executable = True,
220*9e965d6fSRomain Jobredeaux        allow_files = True,
221*9e965d6fSRomain Jobredeaux    ),
222*9e965d6fSRomain Jobredeaux    resource_shrinker = attr.label(
223*9e965d6fSRomain Jobredeaux        cfg = "exec",
224*9e965d6fSRomain Jobredeaux        default = "//tools/android:resource_shrinker_deploy.jar",
225*9e965d6fSRomain Jobredeaux        executable = True,
226*9e965d6fSRomain Jobredeaux        allow_files = True,
227*9e965d6fSRomain Jobredeaux    ),
228*9e965d6fSRomain Jobredeaux    res_v3_dummy_manifest = attr.label(
229*9e965d6fSRomain Jobredeaux        allow_files = True,
230*9e965d6fSRomain Jobredeaux        default = "//rules:res_v3_dummy_AndroidManifest.xml",
231*9e965d6fSRomain Jobredeaux    ),
232*9e965d6fSRomain Jobredeaux    res_v3_dummy_r_txt = attr.label(
233*9e965d6fSRomain Jobredeaux        allow_files = True,
234*9e965d6fSRomain Jobredeaux        default = "//rules:res_v3_dummy_R.txt",
235*9e965d6fSRomain Jobredeaux    ),
236*9e965d6fSRomain Jobredeaux    robolectric_template = attr.label(
237*9e965d6fSRomain Jobredeaux        allow_files = True,
238*9e965d6fSRomain Jobredeaux        default = "//rules:robolectric_properties_template.txt",
239*9e965d6fSRomain Jobredeaux    ),
240*9e965d6fSRomain Jobredeaux    sandboxed_sdk_toolbox = attr.label(
241*9e965d6fSRomain Jobredeaux        allow_single_file = True,
242*9e965d6fSRomain Jobredeaux        cfg = "exec",
243*9e965d6fSRomain Jobredeaux        default = "//src/tools/java/com/google/devtools/build/android/sandboxedsdktoolbox:sandboxed_sdk_toolbox_deploy.jar",
244*9e965d6fSRomain Jobredeaux        executable = True,
245*9e965d6fSRomain Jobredeaux    ),
246*9e965d6fSRomain Jobredeaux    shuffle_jars = attr.label(
247*9e965d6fSRomain Jobredeaux        cfg = "exec",
248*9e965d6fSRomain Jobredeaux        default = Label("@bazel_tools//tools/android:shuffle_jars"),
249*9e965d6fSRomain Jobredeaux        executable = True,
250*9e965d6fSRomain Jobredeaux    ),
251*9e965d6fSRomain Jobredeaux    testsupport = attr.label(
252*9e965d6fSRomain Jobredeaux        default = "@bazel_tools//tools/jdk:TestRunner",
253*9e965d6fSRomain Jobredeaux    ),
254*9e965d6fSRomain Jobredeaux    unzip_tool = attr.label(
255*9e965d6fSRomain Jobredeaux        cfg = "exec",
256*9e965d6fSRomain Jobredeaux        default = "//toolchains/android:unzip",
257*9e965d6fSRomain Jobredeaux        executable = True,
258*9e965d6fSRomain Jobredeaux    ),
259*9e965d6fSRomain Jobredeaux    xsltproc_tool = attr.label(
260*9e965d6fSRomain Jobredeaux        cfg = "exec",
261*9e965d6fSRomain Jobredeaux        default = Label("//tools/android/xslt:xslt"),
262*9e965d6fSRomain Jobredeaux        allow_files = True,
263*9e965d6fSRomain Jobredeaux        executable = True,
264*9e965d6fSRomain Jobredeaux    ),
265*9e965d6fSRomain Jobredeaux    zip_tool = attr.label(
266*9e965d6fSRomain Jobredeaux        cfg = "exec",
267*9e965d6fSRomain Jobredeaux        default = "//toolchains/android:zip",
268*9e965d6fSRomain Jobredeaux        executable = True,
269*9e965d6fSRomain Jobredeaux    ),
270*9e965d6fSRomain Jobredeaux    zip_filter = attr.label(
271*9e965d6fSRomain Jobredeaux        cfg = "exec",
272*9e965d6fSRomain Jobredeaux        default = "@bazel_tools//tools/android:zip_filter",
273*9e965d6fSRomain Jobredeaux        executable = True,
274*9e965d6fSRomain Jobredeaux    ),
275*9e965d6fSRomain Jobredeaux    zipper = attr.label(
276*9e965d6fSRomain Jobredeaux        allow_single_file = True,
277*9e965d6fSRomain Jobredeaux        cfg = "exec",
278*9e965d6fSRomain Jobredeaux        default = "@bazel_tools//tools/zip:zipper",
279*9e965d6fSRomain Jobredeaux        executable = True,
280*9e965d6fSRomain Jobredeaux    ),
281*9e965d6fSRomain Jobredeaux    dex_zips_merger = attr.label(
282*9e965d6fSRomain Jobredeaux        cfg = "exec",
283*9e965d6fSRomain Jobredeaux        default = "@bazel_tools//tools/android:merge_dexzips",
284*9e965d6fSRomain Jobredeaux        executable = True,
285*9e965d6fSRomain Jobredeaux    ),
286*9e965d6fSRomain Jobredeaux    java8_legacy_dex = attr.label(
287*9e965d6fSRomain Jobredeaux        allow_single_file = True,
288*9e965d6fSRomain Jobredeaux        cfg = "exec",
289*9e965d6fSRomain Jobredeaux        default = "@bazel_tools//tools/android:java8_legacy_dex",
290*9e965d6fSRomain Jobredeaux    ),
291*9e965d6fSRomain Jobredeaux    build_java8_legacy_dex = attr.label(
292*9e965d6fSRomain Jobredeaux        cfg = "exec",
293*9e965d6fSRomain Jobredeaux        default = "@bazel_tools//tools/android:build_java8_legacy_dex",
294*9e965d6fSRomain Jobredeaux        executable = True,
295*9e965d6fSRomain Jobredeaux    ),
296*9e965d6fSRomain Jobredeaux    dex_list_obfuscator = attr.label(
297*9e965d6fSRomain Jobredeaux        cfg = "exec",
298*9e965d6fSRomain Jobredeaux        default = "@bazel_tools//tools/android:dex_list_obfuscator",
299*9e965d6fSRomain Jobredeaux        executable = True,
300*9e965d6fSRomain Jobredeaux    ),
301*9e965d6fSRomain Jobredeaux)
302*9e965d6fSRomain Jobredeaux
303*9e965d6fSRomain Jobredeauxdef _impl(ctx):
304*9e965d6fSRomain Jobredeaux    return [platform_common.ToolchainInfo(
305*9e965d6fSRomain Jobredeaux        **{name: getattr(ctx.attr, name) for name in _ATTRS.keys()}
306*9e965d6fSRomain Jobredeaux    )]
307*9e965d6fSRomain Jobredeaux
308*9e965d6fSRomain Jobredeauxandroid_toolchain = rule(
309*9e965d6fSRomain Jobredeaux    implementation = _impl,
310*9e965d6fSRomain Jobredeaux    attrs = _ATTRS,
311*9e965d6fSRomain Jobredeaux)
312