blob: ef34ce29da825365159245185dc8e9e1d0361cbd [file] [log] [blame]
load("//bazel:macros.bzl", "exports_files_legacy")
load("@rules_cc//cc:defs.bzl", "cc_toolchain", "cc_toolchain_suite")
load(":linux_amd64_toolchain_config.bzl", "provide_linux_amd64_toolchain_config")
load(":mac_m1_toolchain_config.bzl", "provide_mac_m1_toolchain_config")
licenses(["notice"])
exports_files_legacy()
# https://bazel.build/reference/be/c-cpp#cc_toolchain_suite
# cc_toolchain_suite will fetch deps for toolchains it will not use, which
# is why we split up the suites by OS. When attempting to fetch "@clang_linux_amd64//:all_files",
# a script compiled for linux to extract ar archives will break on other platforms.
cc_toolchain_suite(
name = "clang_suite_linux",
toolchains = {
# The key is target_cpu|compiler
# compiler appears to be a string we can choose arbitrarily
# https://bazel.build/reference/command-line-reference?hl=en#flag--compiler
"k8|host_is_linux_amd64": ":linux_amd64_host",
"x86_64|host_is_linux_amd64": ":linux_amd64_host",
"k8": ":linux_amd64_host",
},
)
cc_toolchain_suite(
name = "clang_suite_mac",
toolchains = {
"arm64|host_is_mac_m1": ":mac_m1_host",
"darwin|host_is_mac_m1": ":mac_m1_host",
"darwin_arm64|host_is_mac_m1": ":mac_m1_host",
"darwin_x86_64": ":mac_m1_host",
},
)
filegroup(name = "not_implemented")
filegroup(
name = "archive_linux_amd64_files",
srcs = [
"linux_trampolines/ar_trampoline_linux.sh",
"@clang_linux_amd64//:archive_files",
],
)
filegroup(
name = "compile_linux_amd64_files",
srcs = [
"linux_trampolines/IWYU_mapping.imp",
"linux_trampolines/clang_trampoline_linux.sh",
"@clang_linux_amd64//:compile_files",
],
)
filegroup(
name = "link_linux_amd64_files",
srcs = [
# Bazel assumes it is talking to Clang when linking.
"linux_trampolines/clang_trampoline_linux.sh",
"@clang_linux_amd64//:link_files",
],
)
filegroup(
name = "all_mac_m1_files",
srcs = [
"mac_trampolines/ar_trampoline_mac.sh",
"mac_trampolines/clang_trampoline_mac.sh",
"mac_trampolines/lld_trampoline_mac.sh",
"@clang_mac_m1//:all_files",
],
)
provide_linux_amd64_toolchain_config(
name = "linux_amd64_toolchain_config",
)
provide_mac_m1_toolchain_config(
name = "mac_m1_toolchain_config",
)
# https://bazel.build/reference/be/c-cpp#cc_toolchain
cc_toolchain(
name = "linux_amd64_host",
all_files = ":not_implemented",
ar_files = ":archive_linux_amd64_files",
compiler_files = ":compile_linux_amd64_files",
dwp_files = ":not_implemented",
linker_files = ":link_linux_amd64_files",
objcopy_files = ":not_implemented",
strip_files = ":not_implemented",
supports_param_files = False,
toolchain_config = ":linux_amd64_toolchain_config",
)
cc_toolchain(
name = "mac_m1_host",
all_files = ":all_mac_m1_files",
ar_files = ":all_mac_m1_files",
compiler_files = ":all_mac_m1_files",
dwp_files = ":not_implemented",
linker_files = ":all_mac_m1_files",
objcopy_files = ":not_implemented",
strip_files = ":not_implemented",
supports_param_files = False,
toolchain_config = ":mac_m1_toolchain_config",
)