BUCK•8.63 kB
load("@prelude//tests:test_toolchain.bzl", "noop_test_toolchain")
load("@prelude//toolchains:genrule.bzl", "system_genrule_toolchain")
load(
"@prelude//toolchains:python.bzl",
"system_python_bootstrap_toolchain",
"system_python_toolchain",
)
load(
"@prelude//toolchains:remote_test_execution.bzl",
"remote_test_execution_toolchain",
)
load("@prelude-si//toolchains:clang_distribution.bzl", "download_clang_distribution", "hermetic_clang_toolchain")
load("@prelude-si//toolchains:deno_distribution.bzl", "download_deno_distribution")
load("@prelude-si//deno:toolchain.bzl", "deno_toolchain")
load("@prelude-si//:deno.bzl", "deno_target_runtime")
load("@prelude-si//toolchains:rust_distribution.bzl", "download_rust_distribution", "hermetic_rust_toolchain")
load("@prelude-si//toolchains:python_distribution.bzl", "download_python_distribution", "hermetic_python_toolchain", "hermetic_python_bootstrap_toolchain")
load("@prelude-si//artifact:toolchain.bzl", "artifact_toolchain")
load("@prelude-si//build_context:toolchain.bzl", "build_context_toolchain")
load("@prelude-si//build_metadata:toolchain.bzl", "build_metadata_toolchain")
load("@prelude-si//docker:toolchain.bzl", "docker_toolchain")
load("@prelude-si//e2e:toolchain.bzl", "e2e_toolchain")
load("@prelude-si//git:toolchain.bzl", "git_toolchain")
load("@prelude-si//nix:toolchain.bzl", "nix_toolchain")
load("@prelude-si//pnpm:toolchain.bzl", "pnpm_toolchain")
load("@prelude-si//python:toolchain.bzl", "si_python_toolchain")
load("@prelude-si//rootfs:toolchain.bzl", "rootfs_toolchain")
load("@prelude-si//rust:toolchain.bzl", "si_rust_toolchain")
load("@prelude-si//shell:toolchain.bzl", "shell_toolchain")
load("@prelude-si//toml:toolchain.bzl", "toml_toolchain")
load(":toolchain.bzl", "toolchain_alias")
download_clang_distribution(
name = "clang",
version = "20.1.0",
)
download_deno_distribution(
name = "deno_dist",
version = "2.2.12",
)
download_rust_distribution(
name = "rust_dist",
version = "1.88.0",
)
download_rust_distribution(
name = "rustfmt_nightly_dist",
version = "nightly-2025-04-17",
)
download_python_distribution(
name = "python_dist",
version = "3.13.6",
)
remote_test_execution_toolchain(
name = "remote_test_execution",
visibility = ["PUBLIC"],
)
noop_test_toolchain(
name = "test",
visibility = ["PUBLIC"],
)
hermetic_clang_toolchain(
name = "cxx",
distribution = ":clang",
binary_linker_flags = [
"-nostdlib++",
] + select({
"config//os:linux": ["-lclang_rt.builtins"],
"config//os:macos": ["-lclang_rt.osx"],
"DEFAULT": ["-lclang_rt.builtins"],
}),
linker_flags = [
"--rtlib=compiler-rt",
],
visibility = ["PUBLIC"],
)
system_genrule_toolchain(
name = "genrule",
visibility = ["PUBLIC"],
)
hermetic_python_bootstrap_toolchain(
name = "python_bootstrap",
distribution = ":python_dist",
visibility = ["PUBLIC"],
)
hermetic_rust_toolchain(
name = "rust_release",
distribution = ":rust_dist",
default_edition = "2024",
clippy_toml = "root//:clippy.toml",
visibility = ["PUBLIC"],
# rustc_target_triple auto-detected from distribution target
rustc_flags = [
"-Copt-level=3",
# https://doc.rust-lang.org/cargo/reference/profiles.html#debug
"-Cdebuginfo=line-tables-only",
# https://doc.rust-lang.org/cargo/reference/profiles.html#strip
"-Cstrip=none",
"-Cdebug-assertions=false",
"-Coverflow-checks=false",
"-Clto=false",
"-Ccodegen-units=16",
] + select({
"config//os:linux": [
# Use hermetic toolchain for linking on Linux
"-Clink-arg=-fuse-ld=lld",
# Override GCC runtime with LLVM runtime at link time on Linux
"-Clink-arg=-Wl,--allow-shlib-undefined",
],
"DEFAULT": [
# On Darwin, use system linker for better SDK integration
],
})
)
hermetic_rust_toolchain(
name = "rust_debug",
distribution = ":rust_dist",
default_edition = "2024",
clippy_toml = "root//:clippy.toml",
visibility = ["PUBLIC"],
rustc_flags = [
"-Copt-level=0",
"-Cdebuginfo=full",
"-Ccodegen-units=256",
"-Cdebug-assertions=true",
"-Coverflow-checks=true",
] + select({
"config//os:linux": [
# Use hermetic toolchain for linking on Linux
"-Clink-arg=-fuse-ld=lld",
# Override GCC runtime with LLVM runtime at link time on Linux
"-Clink-arg=-Wl,--allow-shlib-undefined",
],
"DEFAULT": [
# On Darwin, use system linker for better SDK integration
],
}),
)
toolchain_alias(
name = "rust",
actual = select({
"root//config:build_debug": ":rust_debug",
"root//config:build_release": ":rust_release",
}),
visibility = ["PUBLIC"],
)
build_context_toolchain(
name = "build_context",
visibility = ["PUBLIC"],
)
build_metadata_toolchain(
name = "build_metadata",
visibility = ["PUBLIC"],
)
# Platform-specific toolchain instances
deno_toolchain(
name = "deno-linux-x86_64",
deno_exe = "$(location :deno_dist-extraction)/toolchain/bin/deno",
target_string = "linux-x86_64",
)
deno_target_runtime(
name = "deno-runtime-linux-x86_64",
target = "linux-x86_64",
visibility = ["PUBLIC"],
)
deno_toolchain(
name = "deno-linux-aarch64",
deno_exe = "$(location :deno_dist-extraction)/toolchain/bin/deno",
target_string = "linux-aarch64",
)
deno_target_runtime(
name = "deno-runtime-linux-aarch64",
target = "linux-aarch64",
visibility = ["PUBLIC"],
)
deno_toolchain(
name = "deno-darwin-x86_64",
deno_exe = "$(location :deno_dist-extraction)/toolchain/bin/deno",
target_string = "darwin-x86_64",
)
deno_target_runtime(
name = "deno-runtime-darwin-x86_64",
target = "darwin-x86_64",
visibility = ["PUBLIC"],
)
deno_toolchain(
name = "deno-darwin-aarch64",
deno_exe = "$(location :deno_dist-extraction)/toolchain/bin/deno",
target_string = "darwin-aarch64",
)
deno_target_runtime(
name = "deno-runtime-darwin-aarch64",
target = "darwin-aarch64",
visibility = ["PUBLIC"],
)
deno_toolchain(
name = "deno-windows-x86_64",
deno_exe = "$(location :deno_dist-extraction)/toolchain/bin/deno",
target_string = "windows-x86_64",
)
deno_target_runtime(
name = "deno-runtime-windows-x86_64",
target = "windows-x86_64",
visibility = ["PUBLIC"],
)
deno_toolchain(
name = "deno-windows-aarch64",
deno_exe = "$(location :deno_dist-extraction)/toolchain/bin/deno",
target_string = "windows-aarch64",
)
deno_target_runtime(
name = "deno-runtime-windows-aarch64",
target = "windows-aarch64",
visibility = ["PUBLIC"],
)
toolchain_alias(
name = "deno",
actual = select({
"prelude//cpu:arm64": select({
"prelude//os:linux": ":deno-linux-aarch64",
"prelude//os:macos": ":deno-darwin-aarch64",
"prelude//os:windows": ":deno-windows-aarch64",
}),
"prelude//cpu:x86_64": select({
"prelude//os:linux": ":deno-linux-x86_64",
"prelude//os:macos": ":deno-darwin-x86_64",
"prelude//os:windows": ":deno-windows-x86_64",
}),
}),
visibility = ["PUBLIC"],
)
hermetic_python_toolchain(
name = "python",
distribution = ":python_dist",
visibility = ["PUBLIC"],
)
docker_toolchain(
name = "docker",
visibility = ["PUBLIC"],
)
e2e_toolchain(
name = "e2e",
visibility = ["PUBLIC"],
)
artifact_toolchain(
name = "artifact",
visibility = ["PUBLIC"],
)
git_toolchain(
name = "git",
visibility = ["PUBLIC"],
)
nix_toolchain(
name = "nix",
visibility = ["PUBLIC"],
)
pnpm_toolchain(
name = "pnpm",
editorconfig = "root//:.editorconfig",
visibility = ["PUBLIC"],
)
rootfs_toolchain(
name = "rootfs",
visibility = ["PUBLIC"],
)
si_python_toolchain(
name = "si_python",
visibility = ["PUBLIC"],
)
si_rust_toolchain(
name = "si_rust",
rustfmt_toml = "root//:rustfmt.toml",
rust_dist = ":rust_dist",
rustfmt_dist = ":rustfmt_nightly_dist",
visibility = ["PUBLIC"],
)
shell_toolchain(
name = "shell",
editorconfig = "root//:.editorconfig",
visibility = ["PUBLIC"],
)
toml_toolchain(
name = "toml",
taplo_config = "root//:.taplo.toml",
cargo_sort_config = "root//:tomlfmt.toml",
cargo_dist = ":rust_dist",
visibility = ["PUBLIC"],
)