bazel_dep(name = "platforms", version = "1.0.0")
bazel_dep(name = "toolchains_llvm_bootstrapped", version = "0.5.3")
single_version_override(
    module_name = "toolchains_llvm_bootstrapped",
    patch_strip = 1,
    patches = [
        "//patches:toolchains_llvm_bootstrapped_resource_dir.patch",
    ],
)

osx = use_extension("@toolchains_llvm_bootstrapped//extensions:osx.bzl", "osx")
osx.framework(name = "ApplicationServices")
osx.framework(name = "AppKit")
osx.framework(name = "ColorSync")
osx.framework(name = "CoreFoundation")
osx.framework(name = "CoreGraphics")
osx.framework(name = "CoreServices")
osx.framework(name = "CoreText")
osx.framework(name = "CFNetwork")
osx.framework(name = "FontServices")
osx.framework(name = "Foundation")
osx.framework(name = "ImageIO")
osx.framework(name = "Kernel")
osx.framework(name = "OSLog")
osx.framework(name = "Security")
osx.framework(name = "SystemConfiguration")

register_toolchains(
    "@toolchains_llvm_bootstrapped//toolchain:all",
)

# Needed to disable xcode...
bazel_dep(name = "apple_support", version = "2.1.0")
bazel_dep(name = "rules_cc", version = "0.2.16")
bazel_dep(name = "rules_platform", version = "0.1.0")
bazel_dep(name = "rules_rs", version = "0.0.23")

# Special toolchains branch
archive_override(
    module_name = "rules_rs",
    integrity = "sha256-YbDRjZos4UmfIPY98znK1BgBWRQ1/ui3CtL6RqxE30I=",
    strip_prefix = "rules_rs-6cf3d940fdc48baf3ebd6c37daf8e0be8fc73ecb",
    url = "https://github.com/dzbarsky/rules_rs/archive/6cf3d940fdc48baf3ebd6c37daf8e0be8fc73ecb.tar.gz",
)

rules_rust = use_extension("@rules_rs//rs/experimental:rules_rust.bzl", "rules_rust")
use_repo(rules_rust, "rules_rust")

toolchains = use_extension("@rules_rs//rs/experimental/toolchains:module_extension.bzl", "toolchains")
toolchains.toolchain(
    edition = "2024",
    version = "1.93.0",
)
use_repo(
    toolchains,
    "experimental_rust_toolchains_1_93_0",
    "rust_toolchain_artifacts_macos_aarch64_1_93_0",
)

register_toolchains("@experimental_rust_toolchains_1_93_0//:all")

crate = use_extension("@rules_rs//rs:extensions.bzl", "crate")
crate.from_cargo(
    cargo_lock = "//codex-rs:Cargo.lock",
    cargo_toml = "//codex-rs:Cargo.toml",
    platform_triples = [
        "aarch64-unknown-linux-gnu",
        "aarch64-unknown-linux-musl",
        "aarch64-apple-darwin",
        "aarch64-pc-windows-gnullvm",
        "x86_64-unknown-linux-gnu",
        "x86_64-unknown-linux-musl",
        "x86_64-apple-darwin",
        "x86_64-pc-windows-gnullvm",
    ],
)

bazel_dep(name = "zstd", version = "1.5.7")

crate.annotation(
    crate = "zstd-sys",
    gen_build_script = "off",
    deps = ["@zstd"],
)
crate.annotation(
    build_script_env = {
        "AWS_LC_SYS_NO_JITTER_ENTROPY": "1",
    },
    crate = "aws-lc-sys",
    patch_args = ["-p1"],
    patches = [
        "//patches:aws-lc-sys_memcmp_check.patch",
    ],
)

inject_repo(crate, "zstd")

bazel_dep(name = "bzip2", version = "1.0.8.bcr.3")

crate.annotation(
    crate = "bzip2-sys",
    gen_build_script = "off",
    deps = ["@bzip2//:bz2"],
)

inject_repo(crate, "bzip2")

bazel_dep(name = "zlib", version = "1.3.1.bcr.8")

crate.annotation(
    crate = "libz-sys",
    gen_build_script = "off",
    deps = ["@zlib"],
)

inject_repo(crate, "zlib")

# TODO(zbarsky): Enable annotation after fixing windows arm64 builds.
crate.annotation(
    crate = "lzma-sys",
    gen_build_script = "on",
)

bazel_dep(name = "openssl", version = "3.5.4.bcr.0")

crate.annotation(
    build_script_data = [
        "@openssl//:gen_dir",
    ],
    build_script_env = {
        "OPENSSL_DIR": "$(execpath @openssl//:gen_dir)",
        "OPENSSL_NO_VENDOR": "1",
        "OPENSSL_STATIC": "1",
    },
    crate = "openssl-sys",
    data = ["@openssl//:gen_dir"],
)

inject_repo(crate, "openssl")

crate.annotation(
    crate = "runfiles",
    workspace_cargo_toml = "rust/runfiles/Cargo.toml",
)

# Fix readme inclusions
crate.annotation(
    crate = "windows-link",
    patch_args = ["-p1"],
    patches = [
        "//patches:windows-link.patch",
    ],
)

WINDOWS_IMPORT_LIB = """
load("@rules_cc//cc:defs.bzl", "cc_import")

cc_import(
    name = "windows_import_lib",
    static_library = glob(["lib/*.a"])[0],
)
"""

crate.annotation(
    additive_build_file_content = WINDOWS_IMPORT_LIB,
    crate = "windows_x86_64_gnullvm",
    gen_build_script = "off",
    deps = [":windows_import_lib"],
)
crate.annotation(
    additive_build_file_content = WINDOWS_IMPORT_LIB,
    crate = "windows_aarch64_gnullvm",
    gen_build_script = "off",
    deps = [":windows_import_lib"],
)
use_repo(crate, "crates")

rbe_platform_repository = use_repo_rule("//:rbe.bzl", "rbe_platform_repository")

rbe_platform_repository(
    name = "rbe_platform",
)
