load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

## LLVM

BAZEL_TOOLCHAIN_TAG = "0.7.2"

BAZEL_TOOLCHAIN_SHA = "f7aa8e59c9d3cafde6edb372d9bd25fb4ee7293ab20b916d867cd0baaa642529"

http_archive(
    name = "com_grail_bazel_toolchain",
    canonical_id = BAZEL_TOOLCHAIN_TAG,
    sha256 = BAZEL_TOOLCHAIN_SHA,
    strip_prefix = "bazel-toolchain-{tag}".format(tag = BAZEL_TOOLCHAIN_TAG),
    url = "https://github.com/grailbio/bazel-toolchain/archive/{tag}.tar.gz".format(tag = BAZEL_TOOLCHAIN_TAG),
)

load("@com_grail_bazel_toolchain//toolchain:deps.bzl", "bazel_toolchain_dependencies")

bazel_toolchain_dependencies()

load("@com_grail_bazel_toolchain//toolchain:rules.bzl", "llvm_toolchain")

LLVM_VERSION = "14.0.0"

llvm_toolchain(
    name = "llvm_toolchain",
    llvm_version = LLVM_VERSION,
)

# This sysroot is used by github.com/vsco/bazel-toolchains.
http_archive(
    name = "org_chromium_sysroot_linux_x64",
    build_file_content = """
filegroup(
  name = "sysroot",
  srcs = glob(["*/**"]),
  visibility = ["//visibility:public"],
)
""",
    sha256 = "84656a6df544ecef62169cfe3ab6e41bb4346a62d3ba2a045dc5a0a2ecea94a3",
    urls = ["https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain/2202c161310ffde63729f29d27fe7bb24a0bc540/debian_stretch_amd64_sysroot.tar.xz"],
)

llvm_toolchain(
    name = "llvm_toolchain_with_sysroot",
    llvm_version = LLVM_VERSION,
    sysroot = {
        "linux-x86_64": "@org_chromium_sysroot_linux_x64//:sysroot",
    },
    # We can share the downloaded LLVM distribution with the first configuration.
    toolchain_roots = {
        "": "@llvm_toolchain_llvm//",
    },
)

load("@llvm_toolchain_with_sysroot//:toolchains.bzl", "llvm_register_toolchains")

#llvm_register_toolchains()

### ZIG

#BAZEL_ZIG_CC_VERSION = "v1.0.1"
BAZEL_ZIG_CC_VERSION = "60a9f12d67f5b6a5a79d1b45b07ded41cdbb96fe"

http_archive(
    name = "bazel-zig-cc",
    #sha256 = "e9f82bfb74b3df5ca0e67f4d4989e7f1f7ce3386c295fd7fda881ab91f83e509",
    sha256 = "b005e86324022ffe040d47b0bf8216a527b403620cfb7b14c162224c6884afb8",
    strip_prefix = "bazel-zig-cc-{}".format(BAZEL_ZIG_CC_VERSION),
    urls = [
        "https://github.com/motiejus/bazel-zig-cc/archive/{}.tar.gz".format(BAZEL_ZIG_CC_VERSION),
        #"https://mirror.bazel.build/github.com/uber/bazel-zig-cc/releases/download/{0}/{0}.tar.gz".format(BAZEL_ZIG_CC_VERSION),
        #"https://github.com/uber/bazel-zig-cc/releases/download/{0}/{0}.tar.gz".format(BAZEL_ZIG_CC_VERSION),
    ],
)

load("@bazel-zig-cc//toolchain:defs.bzl", zig_toolchains = "toolchains")

ZIG_VERSION = "0.11.0-dev.2441+eb19f73af-dbgsafe"
ZIG_HASH = "fde61f641a557ec01784c99a62e5e7fde78d17c306280af851f469ff14c1e5a5"

#ZIG_VERSION = "0.11.0-dev.2441+eb19f73af"
#ZIG_HASH = "aa06f10bb1407d83eae790cba6be4721ec3e02e63aa209192a8919fc25db8544"

zig_toolchains(
    host_platform_sha256 = {
        "linux-aarch64": "",
        "linux-x86_64": ZIG_HASH,
        "macos-aarch64": "",
        "macos-x86_64": "",
        "windows-x86_64": "",
    },
    url_formats = ["https://dl.jakstys.lt/ntpad/zig/zig-{host_platform}-{version}.{_ext}"],
    version = ZIG_VERSION,
    #version = "0.11.0-dev.811+8ff9284c4",
)

register_toolchains(
    # amd64 toolchains for libc-aware platforms:
    "@zig_sdk//libc_aware/toolchain:linux_amd64_gnu.2.19",
    "@zig_sdk//libc_aware/toolchain:linux_amd64_gnu.2.28",
    "@zig_sdk//libc_aware/toolchain:linux_amd64_gnu.2.31",
    "@zig_sdk//libc_aware/toolchain:linux_amd64_musl",
    # arm64 toolchains for libc-aware platforms:
    "@zig_sdk//libc_aware/toolchain:linux_arm64_gnu.2.28",
    "@zig_sdk//libc_aware/toolchain:linux_arm64_musl",
)