kong--kong
93 行
2.7 KiB
Python
93 行
2.7 KiB
Python
load(":cc_toolchain_config.bzl", "cc_toolchain_config")
|
|
|
|
aarch64_glibc_distros = {
|
|
"rhel9": "11",
|
|
"rhel8": "8",
|
|
"aws2023": "11",
|
|
"aws2": "8",
|
|
}
|
|
|
|
def define_managed_toolchain(
|
|
name = None,
|
|
arch = "x86_64",
|
|
vendor = "unknown",
|
|
libc = "gnu",
|
|
gcc_version = "11",
|
|
ld = "gcc",
|
|
target_compatible_with = []):
|
|
identifier = "{arch}-{vendor}-linux-{libc}-gcc-{gcc_version}".format(
|
|
arch = arch,
|
|
vendor = vendor,
|
|
libc = libc,
|
|
gcc_version = gcc_version,
|
|
)
|
|
|
|
tools_prefix = "{arch}-{vendor}-linux-{libc}-".format(
|
|
arch = arch,
|
|
vendor = vendor,
|
|
libc = libc,
|
|
)
|
|
|
|
native.toolchain(
|
|
name = "%s_toolchain" % identifier,
|
|
exec_compatible_with = [
|
|
"@platforms//os:linux",
|
|
"@platforms//cpu:x86_64",
|
|
],
|
|
target_compatible_with = [
|
|
"@platforms//os:linux",
|
|
"@platforms//cpu:%s" % arch,
|
|
] + target_compatible_with,
|
|
toolchain = ":%s_cc_toolchain" % identifier,
|
|
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
|
|
)
|
|
|
|
cc_toolchain_config(
|
|
name = "%s_cc_toolchain_config" % identifier,
|
|
ld = ld,
|
|
target_cpu = arch,
|
|
target_libc = libc,
|
|
tools_prefix = tools_prefix,
|
|
src = "@%s//:toolchain" % identifier,
|
|
)
|
|
|
|
native.cc_toolchain(
|
|
name = "%s_cc_toolchain" % identifier,
|
|
all_files = "@%s//:toolchain" % identifier,
|
|
compiler_files = "@%s//:toolchain" % identifier,
|
|
dwp_files = ":empty",
|
|
linker_files = "@%s//:toolchain" % identifier,
|
|
objcopy_files = ":empty",
|
|
strip_files = ":empty",
|
|
supports_param_files = 0,
|
|
toolchain_config = ":%s_cc_toolchain_config" % identifier,
|
|
toolchain_identifier = "%s_cc_toolchain" % identifier,
|
|
)
|
|
|
|
def register_managed_toolchain(name = None, arch = "x86_64", vendor = "unknown", libc = "gnu", gcc_version = "11"):
|
|
identifier = "{arch}-{vendor}-linux-{libc}-gcc-{gcc_version}".format(
|
|
arch = arch,
|
|
vendor = vendor,
|
|
libc = libc,
|
|
gcc_version = gcc_version,
|
|
)
|
|
native.register_toolchains("//build/toolchain:%s_toolchain" % identifier)
|
|
|
|
def register_all_toolchains(name = None):
|
|
native.register_toolchains("//build/toolchain:local_aarch64-linux-gnu_toolchain")
|
|
|
|
register_managed_toolchain(
|
|
arch = "x86_64",
|
|
gcc_version = "8",
|
|
libc = "gnu",
|
|
vendor = "aws2",
|
|
)
|
|
|
|
for vendor in aarch64_glibc_distros:
|
|
register_managed_toolchain(
|
|
arch = "aarch64",
|
|
gcc_version = aarch64_glibc_distros[vendor],
|
|
libc = "gnu",
|
|
vendor = vendor,
|
|
)
|