xref: /aosp_15_r20/external/skia/toolchain/BUILD.bazel (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Workerload("@rules_cc//cc:defs.bzl", "cc_toolchain")
2*c8dee2aaSAndroid Build Coastguard Workerload(":ios_toolchain_config.bzl", "provide_ios_toolchain_config")
3*c8dee2aaSAndroid Build Coastguard Workerload(":linux_amd64_toolchain_config.bzl", "provide_linux_amd64_toolchain_config")
4*c8dee2aaSAndroid Build Coastguard Workerload(":mac_toolchain_config.bzl", "provide_mac_toolchain_config")
5*c8dee2aaSAndroid Build Coastguard Workerload(":ndk_linux_arm64_toolchain_config.bzl", "ndk_cc_toolchain_config")
6*c8dee2aaSAndroid Build Coastguard Workerload(":windows_toolchain_config.bzl", "provide_windows_amd64_toolchain_config")
7*c8dee2aaSAndroid Build Coastguard Worker
8*c8dee2aaSAndroid Build Coastguard Workerpackage(
9*c8dee2aaSAndroid Build Coastguard Worker    default_applicable_licenses = ["//:license"],
10*c8dee2aaSAndroid Build Coastguard Worker)
11*c8dee2aaSAndroid Build Coastguard Worker
12*c8dee2aaSAndroid Build Coastguard Workerlicenses(["notice"])
13*c8dee2aaSAndroid Build Coastguard Worker
14*c8dee2aaSAndroid Build Coastguard Worker# https://bazel.build/docs/toolchains
15*c8dee2aaSAndroid Build Coastguard Worker# https://bazel.build/reference/be/platform#toolchain
16*c8dee2aaSAndroid Build Coastguard Workertoolchain(
17*c8dee2aaSAndroid Build Coastguard Worker    name = "clang_linux_x64_toolchain",
18*c8dee2aaSAndroid Build Coastguard Worker    # Where should we run this toolchain?
19*c8dee2aaSAndroid Build Coastguard Worker    exec_compatible_with = [
20*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//os:linux",
21*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//cpu:x86_64",
22*c8dee2aaSAndroid Build Coastguard Worker        # We do not want an extra constraint here related to the hermetic toolchain because
23*c8dee2aaSAndroid Build Coastguard Worker        # we want the toolchain to run on any Linux x64 machine (and it certainly can).
24*c8dee2aaSAndroid Build Coastguard Worker    ],
25*c8dee2aaSAndroid Build Coastguard Worker    # What can this toolchain build?
26*c8dee2aaSAndroid Build Coastguard Worker    target_compatible_with = [
27*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//os:linux",
28*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//cpu:x86_64",
29*c8dee2aaSAndroid Build Coastguard Worker        # We want to be able to explicitly tell Bazel to use this toolchain, and not the
30*c8dee2aaSAndroid Build Coastguard Worker        # default one on a user's machine or on the RBE worker. Thus we need an extra constraint
31*c8dee2aaSAndroid Build Coastguard Worker        # that we can use to differentiate the "stock" C++ toolchain from our hermetic one and
32*c8dee2aaSAndroid Build Coastguard Worker        # force that use by specifying the target platform.
33*c8dee2aaSAndroid Build Coastguard Worker        "//bazel/platform:use_hermetic_toolchain",
34*c8dee2aaSAndroid Build Coastguard Worker    ],
35*c8dee2aaSAndroid Build Coastguard Worker    toolchain = ":linux_amd64_host",
36*c8dee2aaSAndroid Build Coastguard Worker    # https://github.com/bazelbuild/rules_cc/blob/8bb0eb5c5ccd96b91753bb112096bb6993d16d13/cc/BUILD#L32-L36
37*c8dee2aaSAndroid Build Coastguard Worker    toolchain_type = "@rules_cc//cc:toolchain_type",
38*c8dee2aaSAndroid Build Coastguard Worker)
39*c8dee2aaSAndroid Build Coastguard Worker
40*c8dee2aaSAndroid Build Coastguard Worker# Our one mac toolchain can run on either Intel Macs or M1 Macs, however Bazel does not allow you to specify
41*c8dee2aaSAndroid Build Coastguard Worker# more than one cpu type in exec_compatible_with. Thus, we list the same toolchain twice.
42*c8dee2aaSAndroid Build Coastguard Workertoolchain(
43*c8dee2aaSAndroid Build Coastguard Worker    name = "clang_mac_x64_toolchain",
44*c8dee2aaSAndroid Build Coastguard Worker    exec_compatible_with = [
45*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//os:macos",
46*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//cpu:x86_64",
47*c8dee2aaSAndroid Build Coastguard Worker    ],
48*c8dee2aaSAndroid Build Coastguard Worker    target_compatible_with = [
49*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//os:macos",
50*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//cpu:x86_64",
51*c8dee2aaSAndroid Build Coastguard Worker        "//bazel/platform:use_hermetic_toolchain",
52*c8dee2aaSAndroid Build Coastguard Worker    ],
53*c8dee2aaSAndroid Build Coastguard Worker    toolchain = ":mac_host",
54*c8dee2aaSAndroid Build Coastguard Worker    # https://github.com/bazelbuild/rules_cc/blob/8bb0eb5c5ccd96b91753bb112096bb6993d16d13/cc/BUILD#L32-L36
55*c8dee2aaSAndroid Build Coastguard Worker    toolchain_type = "@rules_cc//cc:toolchain_type",
56*c8dee2aaSAndroid Build Coastguard Worker)
57*c8dee2aaSAndroid Build Coastguard Worker
58*c8dee2aaSAndroid Build Coastguard Workertoolchain(
59*c8dee2aaSAndroid Build Coastguard Worker    name = "clang_mac_arm64_toolchain",
60*c8dee2aaSAndroid Build Coastguard Worker    exec_compatible_with = [
61*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//os:macos",
62*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//cpu:arm64",
63*c8dee2aaSAndroid Build Coastguard Worker    ],
64*c8dee2aaSAndroid Build Coastguard Worker    target_compatible_with = [
65*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//os:macos",
66*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//cpu:arm64",
67*c8dee2aaSAndroid Build Coastguard Worker        "//bazel/platform:use_hermetic_toolchain",
68*c8dee2aaSAndroid Build Coastguard Worker    ],
69*c8dee2aaSAndroid Build Coastguard Worker    toolchain = ":mac_host",
70*c8dee2aaSAndroid Build Coastguard Worker    # https://github.com/bazelbuild/rules_cc/blob/8bb0eb5c5ccd96b91753bb112096bb6993d16d13/cc/BUILD#L32-L36
71*c8dee2aaSAndroid Build Coastguard Worker    toolchain_type = "@rules_cc//cc:toolchain_type",
72*c8dee2aaSAndroid Build Coastguard Worker)
73*c8dee2aaSAndroid Build Coastguard Worker
74*c8dee2aaSAndroid Build Coastguard Worker# Cross compilation toolchain for an Intel Mac host and Apple silicon target
75*c8dee2aaSAndroid Build Coastguard Workertoolchain(
76*c8dee2aaSAndroid Build Coastguard Worker    name = "clang_host_mac_x64_target_mac_arm64_toolchain",
77*c8dee2aaSAndroid Build Coastguard Worker    exec_compatible_with = [
78*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//os:macos",
79*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//cpu:x86_64",
80*c8dee2aaSAndroid Build Coastguard Worker    ],
81*c8dee2aaSAndroid Build Coastguard Worker    target_compatible_with = [
82*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//os:macos",
83*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//cpu:arm64",
84*c8dee2aaSAndroid Build Coastguard Worker        "//bazel/platform:use_hermetic_toolchain",
85*c8dee2aaSAndroid Build Coastguard Worker    ],
86*c8dee2aaSAndroid Build Coastguard Worker    toolchain = ":mac_target_arm64",
87*c8dee2aaSAndroid Build Coastguard Worker    # https://github.com/bazelbuild/rules_cc/blob/8bb0eb5c5ccd96b91753bb112096bb6993d16d13/cc/BUILD#L32-L36
88*c8dee2aaSAndroid Build Coastguard Worker    toolchain_type = "@rules_cc//cc:toolchain_type",
89*c8dee2aaSAndroid Build Coastguard Worker)
90*c8dee2aaSAndroid Build Coastguard Worker
91*c8dee2aaSAndroid Build Coastguard Worker# Windows x64 toolchain.
92*c8dee2aaSAndroid Build Coastguard Workertoolchain(
93*c8dee2aaSAndroid Build Coastguard Worker    name = "clang_windows_x64_toolchain",
94*c8dee2aaSAndroid Build Coastguard Worker    exec_compatible_with = [
95*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//os:windows",
96*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//cpu:x86_64",
97*c8dee2aaSAndroid Build Coastguard Worker    ],
98*c8dee2aaSAndroid Build Coastguard Worker    target_compatible_with = [
99*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//os:windows",
100*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//cpu:x86_64",
101*c8dee2aaSAndroid Build Coastguard Worker        "//bazel/platform:use_hermetic_toolchain",
102*c8dee2aaSAndroid Build Coastguard Worker    ],
103*c8dee2aaSAndroid Build Coastguard Worker    toolchain = ":windows_host",
104*c8dee2aaSAndroid Build Coastguard Worker    # https://github.com/bazelbuild/rules_cc/blob/8bb0eb5c5ccd96b91753bb112096bb6993d16d13/cc/BUILD#L32-L36
105*c8dee2aaSAndroid Build Coastguard Worker    toolchain_type = "@rules_cc//cc:toolchain_type",
106*c8dee2aaSAndroid Build Coastguard Worker)
107*c8dee2aaSAndroid Build Coastguard Worker
108*c8dee2aaSAndroid Build Coastguard Workertoolchain(
109*c8dee2aaSAndroid Build Coastguard Worker    name = "clang_ios_arm64_toolchain",
110*c8dee2aaSAndroid Build Coastguard Worker    exec_compatible_with = [
111*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//os:macos",
112*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//cpu:arm64",
113*c8dee2aaSAndroid Build Coastguard Worker    ],
114*c8dee2aaSAndroid Build Coastguard Worker    target_compatible_with = [
115*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//os:ios",
116*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//cpu:arm64",
117*c8dee2aaSAndroid Build Coastguard Worker    ],
118*c8dee2aaSAndroid Build Coastguard Worker    toolchain = ":ios_target_arm64",
119*c8dee2aaSAndroid Build Coastguard Worker    # https://github.com/bazelbuild/rules_cc/blob/8bb0eb5c5ccd96b91753bb112096bb6993d16d13/cc/BUILD#L32-L36
120*c8dee2aaSAndroid Build Coastguard Worker    toolchain_type = "@rules_cc//cc:toolchain_type",
121*c8dee2aaSAndroid Build Coastguard Worker)
122*c8dee2aaSAndroid Build Coastguard Worker
123*c8dee2aaSAndroid Build Coastguard Worker# Based on:
124*c8dee2aaSAndroid Build Coastguard Worker# https://skia.googlesource.com/skcms/+/ba39d81f9797aa973bdf01aa6b0363b280352fba/toolchain/BUILD.bazel#28
125*c8dee2aaSAndroid Build Coastguard Workertoolchain(
126*c8dee2aaSAndroid Build Coastguard Worker    name = "linux_amd64_ndk_arm64_toolchain",
127*c8dee2aaSAndroid Build Coastguard Worker    exec_compatible_with = [
128*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//os:linux",
129*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//cpu:x86_64",
130*c8dee2aaSAndroid Build Coastguard Worker    ],
131*c8dee2aaSAndroid Build Coastguard Worker    target_compatible_with = [
132*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//os:android",
133*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//cpu:arm64",
134*c8dee2aaSAndroid Build Coastguard Worker    ],
135*c8dee2aaSAndroid Build Coastguard Worker    toolchain = ":linux_amd64_ndk_arm64",
136*c8dee2aaSAndroid Build Coastguard Worker    toolchain_type = "@rules_cc//cc:toolchain_type",
137*c8dee2aaSAndroid Build Coastguard Worker)
138*c8dee2aaSAndroid Build Coastguard Worker
139*c8dee2aaSAndroid Build Coastguard Worker# Based on:
140*c8dee2aaSAndroid Build Coastguard Worker# https://skia.googlesource.com/skcms/+/ba39d81f9797aa973bdf01aa6b0363b280352fba/toolchain/BUILD.bazel#42
141*c8dee2aaSAndroid Build Coastguard Workertoolchain(
142*c8dee2aaSAndroid Build Coastguard Worker    name = "linux_amd64_ndk_arm32_toolchain",
143*c8dee2aaSAndroid Build Coastguard Worker    exec_compatible_with = [
144*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//os:linux",
145*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//cpu:x86_64",
146*c8dee2aaSAndroid Build Coastguard Worker    ],
147*c8dee2aaSAndroid Build Coastguard Worker    target_compatible_with = [
148*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//os:android",
149*c8dee2aaSAndroid Build Coastguard Worker        "@platforms//cpu:armv7",
150*c8dee2aaSAndroid Build Coastguard Worker    ],
151*c8dee2aaSAndroid Build Coastguard Worker    toolchain = ":linux_amd64_ndk_arm32",
152*c8dee2aaSAndroid Build Coastguard Worker    toolchain_type = "@rules_cc//cc:toolchain_type",
153*c8dee2aaSAndroid Build Coastguard Worker)
154*c8dee2aaSAndroid Build Coastguard Worker
155*c8dee2aaSAndroid Build Coastguard Workerfilegroup(name = "not_implemented")
156*c8dee2aaSAndroid Build Coastguard Worker
157*c8dee2aaSAndroid Build Coastguard Workerfilegroup(
158*c8dee2aaSAndroid Build Coastguard Worker    name = "archive_linux_amd64_files",
159*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
160*c8dee2aaSAndroid Build Coastguard Worker        "linux_trampolines/ar_trampoline_linux.sh",
161*c8dee2aaSAndroid Build Coastguard Worker        "@clang_linux_amd64//:archive_files",
162*c8dee2aaSAndroid Build Coastguard Worker    ],
163*c8dee2aaSAndroid Build Coastguard Worker)
164*c8dee2aaSAndroid Build Coastguard Worker
165*c8dee2aaSAndroid Build Coastguard Workerfilegroup(
166*c8dee2aaSAndroid Build Coastguard Worker    name = "compile_linux_amd64_files",
167*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
168*c8dee2aaSAndroid Build Coastguard Worker        "linux_trampolines/IWYU_mapping.imp",
169*c8dee2aaSAndroid Build Coastguard Worker        "linux_trampolines/clang_trampoline_linux.sh",
170*c8dee2aaSAndroid Build Coastguard Worker        "@clang_linux_amd64//:compile_files",
171*c8dee2aaSAndroid Build Coastguard Worker    ],
172*c8dee2aaSAndroid Build Coastguard Worker)
173*c8dee2aaSAndroid Build Coastguard Worker
174*c8dee2aaSAndroid Build Coastguard Workerfilegroup(
175*c8dee2aaSAndroid Build Coastguard Worker    name = "link_linux_amd64_files",
176*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
177*c8dee2aaSAndroid Build Coastguard Worker        # Bazel usually assumes it is talking to Clang when linking.
178*c8dee2aaSAndroid Build Coastguard Worker        "linux_trampolines/clang_trampoline_linux.sh",
179*c8dee2aaSAndroid Build Coastguard Worker        "@clang_linux_amd64//:link_files",
180*c8dee2aaSAndroid Build Coastguard Worker    ],
181*c8dee2aaSAndroid Build Coastguard Worker)
182*c8dee2aaSAndroid Build Coastguard Worker
183*c8dee2aaSAndroid Build Coastguard Workerfilegroup(
184*c8dee2aaSAndroid Build Coastguard Worker    name = "all_linux_amd64_files",
185*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
186*c8dee2aaSAndroid Build Coastguard Worker        ":archive_linux_amd64_files",
187*c8dee2aaSAndroid Build Coastguard Worker        ":compile_linux_amd64_files",
188*c8dee2aaSAndroid Build Coastguard Worker        ":link_linux_amd64_files",
189*c8dee2aaSAndroid Build Coastguard Worker    ],
190*c8dee2aaSAndroid Build Coastguard Worker)
191*c8dee2aaSAndroid Build Coastguard Worker
192*c8dee2aaSAndroid Build Coastguard Workerfilegroup(
193*c8dee2aaSAndroid Build Coastguard Worker    name = "archive_mac_files",
194*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
195*c8dee2aaSAndroid Build Coastguard Worker        "mac_trampolines/ar_trampoline_mac.sh",
196*c8dee2aaSAndroid Build Coastguard Worker        "@clang_mac//:archive_files",
197*c8dee2aaSAndroid Build Coastguard Worker    ],
198*c8dee2aaSAndroid Build Coastguard Worker)
199*c8dee2aaSAndroid Build Coastguard Worker
200*c8dee2aaSAndroid Build Coastguard Workerfilegroup(
201*c8dee2aaSAndroid Build Coastguard Worker    name = "compile_mac_files",
202*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
203*c8dee2aaSAndroid Build Coastguard Worker        "mac_trampolines/clang_trampoline_mac.sh",
204*c8dee2aaSAndroid Build Coastguard Worker        "@clang_mac//:compile_files",
205*c8dee2aaSAndroid Build Coastguard Worker    ],
206*c8dee2aaSAndroid Build Coastguard Worker)
207*c8dee2aaSAndroid Build Coastguard Worker
208*c8dee2aaSAndroid Build Coastguard Workerfilegroup(
209*c8dee2aaSAndroid Build Coastguard Worker    name = "link_mac_files",
210*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
211*c8dee2aaSAndroid Build Coastguard Worker        "mac_trampolines/clang_trampoline_mac.sh",
212*c8dee2aaSAndroid Build Coastguard Worker        "@clang_mac//:link_files",
213*c8dee2aaSAndroid Build Coastguard Worker    ],
214*c8dee2aaSAndroid Build Coastguard Worker)
215*c8dee2aaSAndroid Build Coastguard Worker
216*c8dee2aaSAndroid Build Coastguard Workerfilegroup(
217*c8dee2aaSAndroid Build Coastguard Worker    name = "all_mac_files",
218*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
219*c8dee2aaSAndroid Build Coastguard Worker        ":archive_mac_files",
220*c8dee2aaSAndroid Build Coastguard Worker        ":compile_mac_files",
221*c8dee2aaSAndroid Build Coastguard Worker        ":link_mac_files",
222*c8dee2aaSAndroid Build Coastguard Worker    ],
223*c8dee2aaSAndroid Build Coastguard Worker)
224*c8dee2aaSAndroid Build Coastguard Worker
225*c8dee2aaSAndroid Build Coastguard Workerfilegroup(
226*c8dee2aaSAndroid Build Coastguard Worker    name = "archive_windows_files",
227*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
228*c8dee2aaSAndroid Build Coastguard Worker        "windows_trampolines/ar_trampoline_windows.bat",
229*c8dee2aaSAndroid Build Coastguard Worker        "@clang_windows_amd64//:archive_files",
230*c8dee2aaSAndroid Build Coastguard Worker    ],
231*c8dee2aaSAndroid Build Coastguard Worker)
232*c8dee2aaSAndroid Build Coastguard Worker
233*c8dee2aaSAndroid Build Coastguard Workerfilegroup(
234*c8dee2aaSAndroid Build Coastguard Worker    name = "compile_windows_files",
235*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
236*c8dee2aaSAndroid Build Coastguard Worker        "windows_trampolines/clang_trampoline_windows.bat",
237*c8dee2aaSAndroid Build Coastguard Worker        "@clang_windows_amd64//:compile_files",
238*c8dee2aaSAndroid Build Coastguard Worker    ],
239*c8dee2aaSAndroid Build Coastguard Worker)
240*c8dee2aaSAndroid Build Coastguard Worker
241*c8dee2aaSAndroid Build Coastguard Workerfilegroup(
242*c8dee2aaSAndroid Build Coastguard Worker    name = "link_windows_files",
243*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
244*c8dee2aaSAndroid Build Coastguard Worker        # Bazel usually assumes it is talking to Clang when linking.
245*c8dee2aaSAndroid Build Coastguard Worker        "windows_trampolines/clang_trampoline_windows.bat",
246*c8dee2aaSAndroid Build Coastguard Worker        "@clang_windows_amd64//:link_files",
247*c8dee2aaSAndroid Build Coastguard Worker    ],
248*c8dee2aaSAndroid Build Coastguard Worker)
249*c8dee2aaSAndroid Build Coastguard Worker
250*c8dee2aaSAndroid Build Coastguard Workerfilegroup(
251*c8dee2aaSAndroid Build Coastguard Worker    name = "all_windows_files",
252*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
253*c8dee2aaSAndroid Build Coastguard Worker        ":archive_windows_files",
254*c8dee2aaSAndroid Build Coastguard Worker        ":compile_windows_files",
255*c8dee2aaSAndroid Build Coastguard Worker        ":link_windows_files",
256*c8dee2aaSAndroid Build Coastguard Worker    ],
257*c8dee2aaSAndroid Build Coastguard Worker)
258*c8dee2aaSAndroid Build Coastguard Worker
259*c8dee2aaSAndroid Build Coastguard Workerfilegroup(
260*c8dee2aaSAndroid Build Coastguard Worker    name = "archive_ios_files",
261*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
262*c8dee2aaSAndroid Build Coastguard Worker        "ios_trampolines/ar_trampoline_ios.sh",
263*c8dee2aaSAndroid Build Coastguard Worker        "@clang_ios//:archive_files",
264*c8dee2aaSAndroid Build Coastguard Worker    ],
265*c8dee2aaSAndroid Build Coastguard Worker)
266*c8dee2aaSAndroid Build Coastguard Worker
267*c8dee2aaSAndroid Build Coastguard Workerfilegroup(
268*c8dee2aaSAndroid Build Coastguard Worker    name = "compile_ios_files",
269*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
270*c8dee2aaSAndroid Build Coastguard Worker        "ios_trampolines/clang_trampoline_ios.sh",
271*c8dee2aaSAndroid Build Coastguard Worker        "@clang_ios//:compile_files",
272*c8dee2aaSAndroid Build Coastguard Worker    ],
273*c8dee2aaSAndroid Build Coastguard Worker)
274*c8dee2aaSAndroid Build Coastguard Worker
275*c8dee2aaSAndroid Build Coastguard Workerfilegroup(
276*c8dee2aaSAndroid Build Coastguard Worker    name = "link_ios_files",
277*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
278*c8dee2aaSAndroid Build Coastguard Worker        "ios_trampolines/clang_trampoline_ios.sh",
279*c8dee2aaSAndroid Build Coastguard Worker        "@clang_ios//:link_files",
280*c8dee2aaSAndroid Build Coastguard Worker    ],
281*c8dee2aaSAndroid Build Coastguard Worker)
282*c8dee2aaSAndroid Build Coastguard Worker
283*c8dee2aaSAndroid Build Coastguard Workerfilegroup(
284*c8dee2aaSAndroid Build Coastguard Worker    name = "all_ios_files",
285*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
286*c8dee2aaSAndroid Build Coastguard Worker        ":compile_ios_files",
287*c8dee2aaSAndroid Build Coastguard Worker        ":link_ios_files",
288*c8dee2aaSAndroid Build Coastguard Worker    ],
289*c8dee2aaSAndroid Build Coastguard Worker)
290*c8dee2aaSAndroid Build Coastguard Worker
291*c8dee2aaSAndroid Build Coastguard Workerprovide_linux_amd64_toolchain_config(
292*c8dee2aaSAndroid Build Coastguard Worker    name = "linux_amd64_toolchain_config",
293*c8dee2aaSAndroid Build Coastguard Worker)
294*c8dee2aaSAndroid Build Coastguard Worker
295*c8dee2aaSAndroid Build Coastguard Workerprovide_mac_toolchain_config(
296*c8dee2aaSAndroid Build Coastguard Worker    name = "mac_toolchain_config",
297*c8dee2aaSAndroid Build Coastguard Worker)
298*c8dee2aaSAndroid Build Coastguard Worker
299*c8dee2aaSAndroid Build Coastguard Workerprovide_mac_toolchain_config(
300*c8dee2aaSAndroid Build Coastguard Worker    name = "mac_arm64_toolchain_config",
301*c8dee2aaSAndroid Build Coastguard Worker    cpu = "arm64",
302*c8dee2aaSAndroid Build Coastguard Worker)
303*c8dee2aaSAndroid Build Coastguard Worker
304*c8dee2aaSAndroid Build Coastguard Workerprovide_windows_amd64_toolchain_config(
305*c8dee2aaSAndroid Build Coastguard Worker    name = "windows_amd64_toolchain_config",
306*c8dee2aaSAndroid Build Coastguard Worker)
307*c8dee2aaSAndroid Build Coastguard Worker
308*c8dee2aaSAndroid Build Coastguard Workerprovide_ios_toolchain_config(
309*c8dee2aaSAndroid Build Coastguard Worker    name = "ios_arm64_toolchain_config",
310*c8dee2aaSAndroid Build Coastguard Worker    cpu = "arm64",
311*c8dee2aaSAndroid Build Coastguard Worker)
312*c8dee2aaSAndroid Build Coastguard Worker
313*c8dee2aaSAndroid Build Coastguard Worker# https://bazel.build/reference/be/c-cpp#cc_toolchain
314*c8dee2aaSAndroid Build Coastguard Workercc_toolchain(
315*c8dee2aaSAndroid Build Coastguard Worker    name = "linux_amd64_host",
316*c8dee2aaSAndroid Build Coastguard Worker    # Use by the rust toolchain when linking
317*c8dee2aaSAndroid Build Coastguard Worker    # https://github.com/bazelbuild/rules_rust/blob/dab425760656c449d3a0f73c490be92c240b6ef2/rust/private/rustc.bzl#L627
318*c8dee2aaSAndroid Build Coastguard Worker    all_files = ":all_linux_amd64_files",
319*c8dee2aaSAndroid Build Coastguard Worker    ar_files = ":archive_linux_amd64_files",
320*c8dee2aaSAndroid Build Coastguard Worker    compiler_files = ":compile_linux_amd64_files",
321*c8dee2aaSAndroid Build Coastguard Worker    dwp_files = ":not_implemented",
322*c8dee2aaSAndroid Build Coastguard Worker    linker_files = ":link_linux_amd64_files",
323*c8dee2aaSAndroid Build Coastguard Worker    module_map = "@clang_linux_amd64//:generated_module_map",
324*c8dee2aaSAndroid Build Coastguard Worker    objcopy_files = ":not_implemented",
325*c8dee2aaSAndroid Build Coastguard Worker    strip_files = ":not_implemented",
326*c8dee2aaSAndroid Build Coastguard Worker    supports_param_files = False,
327*c8dee2aaSAndroid Build Coastguard Worker    toolchain_config = ":linux_amd64_toolchain_config",
328*c8dee2aaSAndroid Build Coastguard Worker)
329*c8dee2aaSAndroid Build Coastguard Worker
330*c8dee2aaSAndroid Build Coastguard Workercc_toolchain(
331*c8dee2aaSAndroid Build Coastguard Worker    name = "mac_host",
332*c8dee2aaSAndroid Build Coastguard Worker    all_files = ":all_mac_files",  # Apparently also used to compile objc code
333*c8dee2aaSAndroid Build Coastguard Worker    ar_files = ":archive_mac_files",
334*c8dee2aaSAndroid Build Coastguard Worker    compiler_files = ":compile_mac_files",
335*c8dee2aaSAndroid Build Coastguard Worker    dwp_files = ":not_implemented",
336*c8dee2aaSAndroid Build Coastguard Worker    linker_files = ":link_mac_files",
337*c8dee2aaSAndroid Build Coastguard Worker    module_map = "@clang_mac//:generated_module_map",
338*c8dee2aaSAndroid Build Coastguard Worker    objcopy_files = ":not_implemented",
339*c8dee2aaSAndroid Build Coastguard Worker    strip_files = ":not_implemented",
340*c8dee2aaSAndroid Build Coastguard Worker    supports_param_files = False,
341*c8dee2aaSAndroid Build Coastguard Worker    toolchain_config = ":mac_toolchain_config",
342*c8dee2aaSAndroid Build Coastguard Worker)
343*c8dee2aaSAndroid Build Coastguard Worker
344*c8dee2aaSAndroid Build Coastguard Workercc_toolchain(
345*c8dee2aaSAndroid Build Coastguard Worker    name = "mac_target_arm64",
346*c8dee2aaSAndroid Build Coastguard Worker    all_files = ":all_mac_files",  # Apparently also used to compile objc code
347*c8dee2aaSAndroid Build Coastguard Worker    ar_files = ":archive_mac_files",
348*c8dee2aaSAndroid Build Coastguard Worker    compiler_files = ":compile_mac_files",
349*c8dee2aaSAndroid Build Coastguard Worker    dwp_files = ":not_implemented",
350*c8dee2aaSAndroid Build Coastguard Worker    linker_files = ":link_mac_files",
351*c8dee2aaSAndroid Build Coastguard Worker    module_map = "@clang_mac//:generated_module_map",
352*c8dee2aaSAndroid Build Coastguard Worker    objcopy_files = ":not_implemented",
353*c8dee2aaSAndroid Build Coastguard Worker    strip_files = ":not_implemented",
354*c8dee2aaSAndroid Build Coastguard Worker    supports_param_files = False,
355*c8dee2aaSAndroid Build Coastguard Worker    toolchain_config = ":mac_arm64_toolchain_config",
356*c8dee2aaSAndroid Build Coastguard Worker)
357*c8dee2aaSAndroid Build Coastguard Worker
358*c8dee2aaSAndroid Build Coastguard Workercc_toolchain(
359*c8dee2aaSAndroid Build Coastguard Worker    name = "windows_host",
360*c8dee2aaSAndroid Build Coastguard Worker    all_files = ":all_windows_files",
361*c8dee2aaSAndroid Build Coastguard Worker    ar_files = ":archive_windows_files",
362*c8dee2aaSAndroid Build Coastguard Worker    compiler_files = ":compile_windows_files",
363*c8dee2aaSAndroid Build Coastguard Worker    dwp_files = ":not_implemented",
364*c8dee2aaSAndroid Build Coastguard Worker    linker_files = ":link_windows_files",
365*c8dee2aaSAndroid Build Coastguard Worker    objcopy_files = ":not_implemented",
366*c8dee2aaSAndroid Build Coastguard Worker    strip_files = ":not_implemented",
367*c8dee2aaSAndroid Build Coastguard Worker    supports_param_files = True,
368*c8dee2aaSAndroid Build Coastguard Worker    toolchain_config = ":windows_amd64_toolchain_config",
369*c8dee2aaSAndroid Build Coastguard Worker)
370*c8dee2aaSAndroid Build Coastguard Worker
371*c8dee2aaSAndroid Build Coastguard Workercc_toolchain(
372*c8dee2aaSAndroid Build Coastguard Worker    name = "ios_target_arm64",
373*c8dee2aaSAndroid Build Coastguard Worker    all_files = ":all_ios_files",  # Apparently also used to compile objc code
374*c8dee2aaSAndroid Build Coastguard Worker    ar_files = ":archive_ios_files",
375*c8dee2aaSAndroid Build Coastguard Worker    compiler_files = ":compile_ios_files",
376*c8dee2aaSAndroid Build Coastguard Worker    dwp_files = ":not_implemented",
377*c8dee2aaSAndroid Build Coastguard Worker    linker_files = ":link_ios_files",
378*c8dee2aaSAndroid Build Coastguard Worker    module_map = "@clang_ios//:generated_module_map",
379*c8dee2aaSAndroid Build Coastguard Worker    objcopy_files = ":not_implemented",
380*c8dee2aaSAndroid Build Coastguard Worker    strip_files = ":not_implemented",
381*c8dee2aaSAndroid Build Coastguard Worker    supports_param_files = False,
382*c8dee2aaSAndroid Build Coastguard Worker    toolchain_config = ":ios_arm64_toolchain_config",
383*c8dee2aaSAndroid Build Coastguard Worker)
384*c8dee2aaSAndroid Build Coastguard Worker
385*c8dee2aaSAndroid Build Coastguard Workerfilegroup(
386*c8dee2aaSAndroid Build Coastguard Worker    name = "ndk_arm64_v8a_toolchain_all_files",
387*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
388*c8dee2aaSAndroid Build Coastguard Worker        "android_trampolines/aarch64-linux-android-ar.sh",
389*c8dee2aaSAndroid Build Coastguard Worker        "android_trampolines/aarch64-linux-android-dwp.sh",
390*c8dee2aaSAndroid Build Coastguard Worker        "android_trampolines/aarch64-linux-android-ld.sh",
391*c8dee2aaSAndroid Build Coastguard Worker        "android_trampolines/aarch64-linux-android-nm.sh",
392*c8dee2aaSAndroid Build Coastguard Worker        "android_trampolines/aarch64-linux-android-objcopy.sh",
393*c8dee2aaSAndroid Build Coastguard Worker        "android_trampolines/aarch64-linux-android-objdump.sh",
394*c8dee2aaSAndroid Build Coastguard Worker        "android_trampolines/aarch64-linux-android-strip.sh",
395*c8dee2aaSAndroid Build Coastguard Worker        "android_trampolines/clang.sh",
396*c8dee2aaSAndroid Build Coastguard Worker    ] + ["@ndk_linux_amd64//:arm64_v8a_all_files"],
397*c8dee2aaSAndroid Build Coastguard Worker)
398*c8dee2aaSAndroid Build Coastguard Worker
399*c8dee2aaSAndroid Build Coastguard Workerndk_cc_toolchain_config(
400*c8dee2aaSAndroid Build Coastguard Worker    name = "ndk_arm64_v8a_toolchain_config",
401*c8dee2aaSAndroid Build Coastguard Worker    cpu = "arm64-v8a",
402*c8dee2aaSAndroid Build Coastguard Worker)
403*c8dee2aaSAndroid Build Coastguard Worker
404*c8dee2aaSAndroid Build Coastguard Worker# Based on:
405*c8dee2aaSAndroid Build Coastguard Worker# https://skia.googlesource.com/skcms/+/ba39d81f9797aa973bdf01aa6b0363b280352fba/toolchain/BUILD.bazel#109
406*c8dee2aaSAndroid Build Coastguard Workercc_toolchain(
407*c8dee2aaSAndroid Build Coastguard Worker    name = "linux_amd64_ndk_arm64",
408*c8dee2aaSAndroid Build Coastguard Worker    all_files = ":ndk_arm64_v8a_toolchain_all_files",
409*c8dee2aaSAndroid Build Coastguard Worker    ar_files = ":ndk_arm64_v8a_toolchain_all_files",
410*c8dee2aaSAndroid Build Coastguard Worker    compiler_files = ":ndk_arm64_v8a_toolchain_all_files",
411*c8dee2aaSAndroid Build Coastguard Worker    dwp_files = ":not_implemented",
412*c8dee2aaSAndroid Build Coastguard Worker    dynamic_runtime_lib = "@ndk_linux_amd64//:arm64_v8a_dynamic_runtime_libraries",
413*c8dee2aaSAndroid Build Coastguard Worker    linker_files = ":ndk_arm64_v8a_toolchain_all_files",
414*c8dee2aaSAndroid Build Coastguard Worker    objcopy_files = ":not_implemented",
415*c8dee2aaSAndroid Build Coastguard Worker    static_runtime_lib = "@ndk_linux_amd64//:arm64_v8a_static_runtime_libraries",
416*c8dee2aaSAndroid Build Coastguard Worker    strip_files = ":not_implemented",
417*c8dee2aaSAndroid Build Coastguard Worker    supports_param_files = False,
418*c8dee2aaSAndroid Build Coastguard Worker    toolchain_config = ":ndk_arm64_v8a_toolchain_config",
419*c8dee2aaSAndroid Build Coastguard Worker)
420*c8dee2aaSAndroid Build Coastguard Worker
421*c8dee2aaSAndroid Build Coastguard Workerfilegroup(
422*c8dee2aaSAndroid Build Coastguard Worker    name = "ndk_armeabi_v7a_toolchain_all_files",
423*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
424*c8dee2aaSAndroid Build Coastguard Worker        "android_trampolines/arm-linux-androideabi-ar.sh",
425*c8dee2aaSAndroid Build Coastguard Worker        "android_trampolines/arm-linux-androideabi-dwp.sh",
426*c8dee2aaSAndroid Build Coastguard Worker        "android_trampolines/arm-linux-androideabi-ld.sh",
427*c8dee2aaSAndroid Build Coastguard Worker        "android_trampolines/arm-linux-androideabi-nm.sh",
428*c8dee2aaSAndroid Build Coastguard Worker        "android_trampolines/arm-linux-androideabi-objcopy.sh",
429*c8dee2aaSAndroid Build Coastguard Worker        "android_trampolines/arm-linux-androideabi-objdump.sh",
430*c8dee2aaSAndroid Build Coastguard Worker        "android_trampolines/arm-linux-androideabi-strip.sh",
431*c8dee2aaSAndroid Build Coastguard Worker        "android_trampolines/clang.sh",
432*c8dee2aaSAndroid Build Coastguard Worker    ] + ["@ndk_linux_amd64//:armeabi_v7a_all_files"],
433*c8dee2aaSAndroid Build Coastguard Worker)
434*c8dee2aaSAndroid Build Coastguard Worker
435*c8dee2aaSAndroid Build Coastguard Workerndk_cc_toolchain_config(
436*c8dee2aaSAndroid Build Coastguard Worker    name = "ndk_armeabi_v7a_toolchain_config",
437*c8dee2aaSAndroid Build Coastguard Worker    cpu = "armeabi-v7a",
438*c8dee2aaSAndroid Build Coastguard Worker)
439*c8dee2aaSAndroid Build Coastguard Worker
440*c8dee2aaSAndroid Build Coastguard Worker# Based on:
441*c8dee2aaSAndroid Build Coastguard Worker# https://skia.googlesource.com/skcms/+/ba39d81f9797aa973bdf01aa6b0363b280352fba/toolchain/BUILD.bazel#139
442*c8dee2aaSAndroid Build Coastguard Workercc_toolchain(
443*c8dee2aaSAndroid Build Coastguard Worker    name = "linux_amd64_ndk_arm32",
444*c8dee2aaSAndroid Build Coastguard Worker    all_files = ":ndk_armeabi_v7a_toolchain_all_files",
445*c8dee2aaSAndroid Build Coastguard Worker    ar_files = ":ndk_armeabi_v7a_toolchain_all_files",
446*c8dee2aaSAndroid Build Coastguard Worker    compiler_files = ":ndk_armeabi_v7a_toolchain_all_files",
447*c8dee2aaSAndroid Build Coastguard Worker    dwp_files = ":not_implemented",
448*c8dee2aaSAndroid Build Coastguard Worker    dynamic_runtime_lib = "@ndk_linux_amd64//:armeabi_v7a_dynamic_runtime_libraries",
449*c8dee2aaSAndroid Build Coastguard Worker    linker_files = ":ndk_armeabi_v7a_toolchain_all_files",
450*c8dee2aaSAndroid Build Coastguard Worker    objcopy_files = ":not_implemented",
451*c8dee2aaSAndroid Build Coastguard Worker    static_runtime_lib = "@ndk_linux_amd64//:armeabi_v7a_static_runtime_libraries",
452*c8dee2aaSAndroid Build Coastguard Worker    strip_files = ":not_implemented",
453*c8dee2aaSAndroid Build Coastguard Worker    supports_param_files = False,
454*c8dee2aaSAndroid Build Coastguard Worker    toolchain_config = ":ndk_armeabi_v7a_toolchain_config",
455*c8dee2aaSAndroid Build Coastguard Worker)
456