xref: /aosp_15_r20/external/skia/toolchain/download_toolchains.bzl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker"""
2*c8dee2aaSAndroid Build Coastguard WorkerThis file exports the various toolchains for the hosts that we support building Skia on.
3*c8dee2aaSAndroid Build Coastguard Worker
4*c8dee2aaSAndroid Build Coastguard WorkerSupported:
5*c8dee2aaSAndroid Build Coastguard Worker - Linux amd64
6*c8dee2aaSAndroid Build Coastguard Worker - Mac (one toolchain for both M1 and Intel CPUs)
7*c8dee2aaSAndroid Build Coastguard Worker
8*c8dee2aaSAndroid Build Coastguard WorkerPlanned:
9*c8dee2aaSAndroid Build Coastguard Worker - Windows amd64
10*c8dee2aaSAndroid Build Coastguard Worker
11*c8dee2aaSAndroid Build Coastguard Worker"""
12*c8dee2aaSAndroid Build Coastguard Worker
13*c8dee2aaSAndroid Build Coastguard Workerload(":download_ios_toolchain.bzl", "download_ios_toolchain")
14*c8dee2aaSAndroid Build Coastguard Workerload(":download_linux_amd64_toolchain.bzl", "download_linux_amd64_toolchain")
15*c8dee2aaSAndroid Build Coastguard Workerload(":download_mac_toolchain.bzl", "download_mac_toolchain")
16*c8dee2aaSAndroid Build Coastguard Workerload(":download_ndk_linux_amd64_toolchain.bzl", "download_ndk_linux_amd64_toolchain")
17*c8dee2aaSAndroid Build Coastguard Workerload(":download_windows_amd64_toolchain.bzl", "download_windows_amd64_toolchain")
18*c8dee2aaSAndroid Build Coastguard Worker
19*c8dee2aaSAndroid Build Coastguard Worker# This key in this dictionary (and thus the name passed into the rule) controls what the subfolder
20*c8dee2aaSAndroid Build Coastguard Worker# will be called in the external directory. It must match what we use in the appropriate
21*c8dee2aaSAndroid Build Coastguard Worker# toolchain_config.bzl file or it will not be able to locate the sysroot to build with.
22*c8dee2aaSAndroid Build Coastguard Workername_toolchain = {
23*c8dee2aaSAndroid Build Coastguard Worker    "clang_linux_amd64": download_linux_amd64_toolchain,
24*c8dee2aaSAndroid Build Coastguard Worker    "clang_mac": download_mac_toolchain,
25*c8dee2aaSAndroid Build Coastguard Worker    "clang_windows_amd64": download_windows_amd64_toolchain,
26*c8dee2aaSAndroid Build Coastguard Worker    "ndk_linux_amd64": download_ndk_linux_amd64_toolchain,
27*c8dee2aaSAndroid Build Coastguard Worker    "clang_ios": download_ios_toolchain,
28*c8dee2aaSAndroid Build Coastguard Worker}
29*c8dee2aaSAndroid Build Coastguard Worker
30*c8dee2aaSAndroid Build Coastguard Workerdef download_toolchains_for_skia(*args):
31*c8dee2aaSAndroid Build Coastguard Worker    """
32*c8dee2aaSAndroid Build Coastguard Worker    Point Bazel to the correct rules for downloading the different toolchains.
33*c8dee2aaSAndroid Build Coastguard Worker
34*c8dee2aaSAndroid Build Coastguard Worker    Args:
35*c8dee2aaSAndroid Build Coastguard Worker        *args: multiple toolchains, see top of file for
36*c8dee2aaSAndroid Build Coastguard Worker               list of supported toolchains.
37*c8dee2aaSAndroid Build Coastguard Worker    """
38*c8dee2aaSAndroid Build Coastguard Worker
39*c8dee2aaSAndroid Build Coastguard Worker    for toolchain_name in args:
40*c8dee2aaSAndroid Build Coastguard Worker        if toolchain_name not in name_toolchain:
41*c8dee2aaSAndroid Build Coastguard Worker            fail("unrecognized toolchain name " + toolchain_name)
42*c8dee2aaSAndroid Build Coastguard Worker        download_toolchain = name_toolchain[toolchain_name]
43*c8dee2aaSAndroid Build Coastguard Worker        download_toolchain(name = toolchain_name)
44