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