###############################################################################
# Bazel now uses Bzlmod by default to manage external dependencies.
# Please consider migrating your external dependencies from WORKSPACE to MODULE.bazel.
#
# For more details, please check https://github.com/bazelbuild/bazel/issues/18958
###############################################################################

# NOTE: When editing this file, also update the lockfile.
#   bazel mod deps --lockfile_mode=update

bazel_dep(name = "platforms", version = "1.0.0")
bazel_dep(name = "rules_go", repo_name = "io_bazel_rules_go")
single_version_override(
    module_name = "rules_go",
    patch_strip = 1,
    patches = [
        "//third_party/rules_go:rules_go_absolute_embedsrc.patch",
        "//third_party/rules_go:introduce-all-scope-for-nogo.patch",
        "//third_party/rules_go:cache-fix.patch",
    ],
    version = "0.55.1",
)

bazel_dep(name = "gazelle")
single_version_override(
    module_name = "gazelle",
    patch_strip = 1,
    patches = [
        "//third_party/gazelle:add-prepatching.patch",
    ],
    version = "0.44.0",
)

# rules_rust was split into multiple dependencies. Sadly, this means we have to
# patch each include separately.
RULES_RUST_VERSION = "0.61.0"

bazel_dep(name = "rules_rust")
single_version_override(
    module_name = "rules_rust",
    patch_strip = 1,
    patches = [
        "//third_party/rules_rust:rust-prost-nostd.patch",
        "//third_party/rules_rust:rust-reproducibility.patch",
        "//third_party/rules_rust:musl.patch",
    ],
    version = RULES_RUST_VERSION,
)

bazel_dep(name = "rules_rust_prost")
single_version_override(
    module_name = "rules_rust_prost",
    patch_strip = 3,
    patches = [
        "//third_party/rules_rust:rust-prost-nostd.patch",
    ],
    version = RULES_RUST_VERSION,
)

bazel_dep(name = "openssl")
single_version_override(
    module_name = "openssl",
    patch_strip = 1,
    patches = [
        "//third_party/openssl/patches:force-gnuas.patch",
    ],
    version = "3.3.1.bcr.1",
)

bazel_dep(name = "rules_rust_protobuf", version = RULES_RUST_VERSION)
bazel_dep(name = "rules_rust_mdbook", version = RULES_RUST_VERSION)
bazel_dep(name = "libuuid")
single_version_override(
    module_name = "libuuid",
    patch_strip = 1,
    patches = [
        "//third_party/libuuid/patches:musl-compat.patch",
    ],
    version = "2.39.3.bcr.1",
)

bazel_dep(name = "glib")
single_version_override(
    module_name = "glib",
    patch_strip = 1,
    patches = [
        "//third_party/glib/patches:musl-compat.patch",
    ],
    version = "2.82.2.bcr.5",
)

bazel_dep(name = "zstd", version = "1.5.7")
bazel_dep(name = "gperf", version = "3.1")
bazel_dep(name = "zlib", version = "1.3.1.bcr.6")
bazel_dep(name = "boringssl", version = "0.20250514.0")
bazel_dep(name = "libcap", version = "2.27")
bazel_dep(name = "buildifier_prebuilt", version = "8.2.0.2")
bazel_dep(name = "bazel_skylib", version = "1.8.0")
bazel_dep(name = "rules_pkg", version = "1.1.0")
bazel_dep(name = "rules_oci", version = "2.2.6")
bazel_dep(name = "aspect_bazel_lib", version = "2.19.4")
bazel_dep(name = "rules_multirun", version = "0.12.0")
bazel_dep(name = "rules_python", version = "1.4.1")
bazel_dep(name = "rules_cc", version = "0.1.2")
bazel_dep(name = "rules_perl", version = "0.2.4")
bazel_dep(name = "rules_proto", version = "7.1.0")
bazel_dep(name = "rules_proto_grpc_doc", version = "5.1.0")
bazel_dep(name = "rules_proto_grpc_buf", version = "5.1.0")
bazel_dep(name = "rules_foreign_cc", version = "0.14.0")

# Currently supported version are listed here:
# https://protobuf.dev/support/version-support/
bazel_dep(name = "protobuf", version = "31.1")
bazel_dep(name = "toolchain_cc_mngn")
git_override(
    module_name = "toolchain_cc_mngn",
    commit = "80acaa3e95473ad76c34c6f409b82f3802de9bd2",
    remote = "https://review.monogon.dev/toolchain_cc",
)

register_toolchains("@toolchain_cc_mngn//linux_musl:linux_x86_64_linux_x86_64_musl_static")

register_toolchains("@toolchain_cc_mngn//linux_musl:linux_x86_64_linux_aarch64_musl_static")

register_toolchains("@toolchain_cc_mngn//efi:linux_x86_64_efi_x86_64")

register_toolchains("@toolchain_cc_mngn//efi:linux_x86_64_efi_aarch64")

# Rust Toolchains
register_toolchains("@rust_toolchains//:all")

# Protobuf Toolchains
register_toolchains("@rules_rust_protobuf//:default_proto_toolchain")

register_toolchains("//build/toolchain/rust-efi:prost_efi_toolchain")

register_toolchains("//build/toolchain/toolchain-bundle:all")

include("//build/bazel:rust.MODULE.bazel")
include("//build/bazel:go.MODULE.bazel")
include("//build/bazel:oci.MODULE.bazel")
include("//build/bazel:third_party.MODULE.bazel")
include("//build/bazel:toolchain.MODULE.bazel")
