module( name = "toolchains_llvm_bootstrapped", version = "0.5.2", bazel_compatibility = [">=7.4.0"], compatibility_level = 0, ) bazel_dep(name = "bazel_lib", version = "3.0.0") bazel_dep(name = "bazel_skylib", version = "1.8.2") bazel_dep(name = "bazel_features", version = "1.34.0") bazel_dep(name = "platforms", version = "1.0.0") bazel_dep(name = "rules_cc", version = "0.2.16") bazel_dep(name = "rules_shell", version = "0.6.1") bazel_dep(name = "with_cfg.bzl", version = "0.12.0") bazel_dep(name = "tar.bzl", version = "0.6.0") http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") LLVM_VERSION = "21.1.8" PREBUILT_LLVM_SUFFIX = "-5" LLVM_TOOLCHAIN_MINIMAL_SHA256 = { "darwin-arm64": "7f3067e14e65acd1bce873136e01ab17e680f25ba7d83d32c09af215d8fb546a", "linux-amd64-musl": "906985c22134e13c5356542e7f04cf1ef8f1ad1711d7161f89da4c42ac079e8b", "linux-arm64-musl": "80b947a8424ccbe2808b3fef62bfbf5a1a9942b8e0af569b53d62b1e54dfdbda", "windows-amd64": "9ba42717946ab0c90ceb0db45fcd033dd1e3a46bf7d8b13e7c7d50feb68b8ef7", "windows-arm64": "24049b3fe7f8ac6c6a59ed0795492b7e427cfbc8511691274b6a412869c4dc73", } [ http_archive( name = "llvm-toolchain-minimal-{llvm_version}-{target}".format( llvm_version = LLVM_VERSION, target = target.replace("-musl", "").replace("-gnu", ""), ), build_file = "//toolchain/llvm:BUILD.llvm_release.tpl" if "windows" not in target else "//toolchain/llvm:BUILD.llvm_release_windows.tpl", sha256 = sha256, urls = ["https://github.com/cerisier/toolchains_llvm_bootstrapped/releases/download/llvm-{llvm_version}{prebuilt_llvm_suffix}/llvm-toolchain-minimal-{llvm_version}-{target}.tar.zst".format( llvm_version = LLVM_VERSION, prebuilt_llvm_suffix = PREBUILT_LLVM_SUFFIX, target = target, )], ) for (target, sha256) in LLVM_TOOLCHAIN_MINIMAL_SHA256.items() ] TOOLCHAIN_EXTRAS_SHA256 = { "darwin-arm64": "70d4847b6b062512b96fec8546adffd34a01786f3731722d2d6ee432b82ae2ae", "linux-amd64-musl": "ba1f512c8c7582c81955a31531cb16e3eaa361ed379fba9c4279329d4040ae1c", "linux-arm64-musl": "0275de455fbf0ea3b2c402bca1a90367822034d6f718a94bca0ebd9671fc6e1a", "windows-amd64-gnu": "5655e757acec1a8e0b54f3e680400c8ee7256b9b2274845898e62d90b1ff68ad", } TOOLCHAIN_EXTRAS_VERSION = "20260206" [ http_archive( name = "toolchain-extra-prebuilts-{target}".format(target = target.replace("-musl", "").replace("-gnu", "")), build_file = "//prebuilt/extras:BUILD.extras.tpl", sha256 = sha256, urls = ["https://github.com/cerisier/toolchains_llvm_bootstrapped/releases/download/prebuilts-extras-{version}/toolchain-extra-prebuilts-{version}-{target}.tar.zst".format( target = target, version = TOOLCHAIN_EXTRAS_VERSION, )], ) for (target, sha256) in TOOLCHAIN_EXTRAS_SHA256.items() ] llvm_source = use_extension("//extensions:llvm_source.bzl", "llvm_source") use_repo(llvm_source, "compiler-rt", "libcxx", "libcxxabi", "libunwind", "llvm-raw", "llvm_zlib", "llvm_zstd") llvm = use_extension("//extensions:llvm.bzl", "llvm") llvm.configure( targets = [ "AArch64", "X86", "WebAssembly", ], ) use_repo(llvm, "llvm-project") musl = use_extension("//runtimes/musl/extension:musl.bzl", "musl") use_repo(musl, "musl_libc") mingw = use_extension("//runtimes/mingw/extension:mingw.bzl", "mingw") use_repo(mingw, "mingw") osx = use_extension("//extensions:osx.bzl", "osx") use_repo(osx, "macosx15.4.sdk") glibc = use_extension("//runtimes/glibc/extension:glibc.bzl", "glibc") # https://cerisier.github.io/glibc-headers/index.json glibc.index(file = "//runtimes/glibc/extension:glibc_headers_index.json") use_repo(glibc, "glibc") kernel_headers = use_extension("//kernel/extension:kernel_headers.bzl", "kernel_headers") # https://cerisier.github.io/kernel-headers/index.json kernel_headers.index(file = "//kernel/extension:kernel_headers_index.json") use_repo(kernel_headers, "kernel_headers") ######################### DEV DEPENDENCIES ################################### bazel_dep(name = "buildifier_prebuilt", version = "8.2.1", dev_dependency = True) bazel_dep(name = "bazelrc-preset.bzl", version = "1.6.0", dev_dependency = True) GLIBC_STUBS_GENERATOR_COMMIT = "33276300351d5a3cbedd308f4d21669b8e8ef83d" bazel_dep(name = "glibc-stubs-generator", version = "2.0.1", dev_dependency = True) archive_override( module_name = "glibc-stubs-generator", integrity = "sha256-q7bwGW3nRigiGuXj/2kIZMi/LFCHZpVbMD/kRdllLCg=", strip_prefix = "glibc-stubs-generator-{}".format(GLIBC_STUBS_GENERATOR_COMMIT), urls = ["https://github.com/cerisier/glibc-stubs-generator/archive/{}.tar.gz".format(GLIBC_STUBS_GENERATOR_COMMIT)], ) LIBSTDCXX_STUBS_GENERATOR_COMMIT = "ed896a140ef8466140c3bcfd066e710a80a41ebe" bazel_dep(name = "libstdcxx-stubs-generator", version = "0.0.1", dev_dependency = True) archive_override( module_name = "libstdcxx-stubs-generator", integrity = "sha256-OAZfeifniTQmKit60qHpZanOLLIJVyYEiMlpN5Q7Fjw=", strip_prefix = "libstdcxx-stubs-generator-{}".format(LIBSTDCXX_STUBS_GENERATOR_COMMIT), urls = ["https://github.com/cerisier/libstdcxx-stubs-generator/archive/{}.tar.gz".format(LIBSTDCXX_STUBS_GENERATOR_COMMIT)], ) PKGUTIL_COMMIT = "1209fe63e55da16e897aaab2c210b4e828064cd8" #v1.1.1 bazel_dep(name = "xpkgutil", version = "1.0.14", dev_dependency = True) archive_override( module_name = "xpkgutil", integrity = "sha256-2+8EfvVHefQpH84/IvzBslqvXcJ6iOeApL8CvTi1Uog=", strip_prefix = "pkgutil-{}".format(PKGUTIL_COMMIT), urls = ["https://github.com/cerisier/pkgutil/archive/{}.tar.gz".format(PKGUTIL_COMMIT)], ) # pbzx support for libarchive bazel_dep(name = "libarchive", version = "3.8.1", dev_dependency = True) single_version_override( module_name = "libarchive", patch_strip = 1, patches = [ "//third_party/libarchive:0001-libarchive_enable_xar_support.patch", "//third_party/libarchive:0002-feat-add-pbzx-read-filter.patch", "//third_party/libarchive:0003-give-mingw-acceptable-posix-types.patch", ], ) # bazel9 support: to be upstreamed to libarchive single_version_override( module_name = "bzip2", version = "1.0.8.bcr.3", ) single_version_override( module_name = "zstd", version = "1.5.7.bcr.1", ) single_version_override( module_name = "xz", version = "5.4.5.bcr.7", ) single_version_override( module_name = "mbedtls", version = "3.6.0.bcr.1", ) # Workaround for their terrible toolchains... bazel_dep(name = "rules_swift", version = "3.4.2", dev_dependency = True) single_version_override( module_name = "rules_swift", patch_strip = 1, patches = ["//third_party/rules_swift:0001-allow-disabling-autoconfiguration.patch"], version = "3.4.2", ) ## OVERRIDES PORTS FROM DEPENDENCIES bazel_dep(name = "rules_zig", version = "0.12.2", dev_dependency = True) zig = use_extension("@rules_zig//zig:extensions.bzl", "zig", dev_dependency = True) zig.index(file = "//:zig_index.json") zig.toolchain(zig_version = "0.14.0") zig.mirrors(urls = [ "https://mirror.zml.ai/zig", ]) use_repo(zig, "zig_toolchains") register_toolchains( "@rules_zig//zig/target:all", dev_dependency = True, ) register_toolchains( "@zig_toolchains//:all", dev_dependency = True, )