# Part of the Crubit project, under the Apache License v2.0 with LLVM
# Exceptions. See /LICENSE for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

# TODO: this needs to be paired with a refreshed patch
# (see WORKSPACE.bzlmod)
bazel_dep(name = "rules_rust", version = "0.63.0")

bazel_dep(name = "rules_cc", version = "0.2.0")
bazel_dep(name = "rules_shell", version = "0.5.1")

bazel_dep(name = "abseil-cpp", version = "20250127.1")
git_override(  # with nullability support
    module_name = "abseil-cpp",
    commit = "e3a2008867c5dc5c0f4c7a4e64fb568df70f23be",
    remote = "https://github.com/abseil/abseil-cpp",
)

bazel_dep(name = "bazel_skylib", version = "1.8.1")
bazel_dep(name = "fuzztest", version = "20250214.0")
bazel_dep(name = "google_benchmark", version = "1.9.1")
bazel_dep(name = "googletest", version = "1.17.0")
bazel_dep(name = "platforms", version = "0.0.11")
bazel_dep(name = "protobuf", version = "31.1")
bazel_dep(name = "re2", version = "2024-07-02.bcr.1")
bazel_dep(name = "rules_license", version = "1.0.0")
bazel_dep(name = "rules_proto", version = "7.1.0")
bazel_dep(name = "rules_python", version = "1.5.3")
# We don't directly use rules_foreign_cc, but *something* does, and depends on an
# out of date version that doesn't work with newer Bazel releases. So here we force
# it to be a newer version.
bazel_dep(name = "rules_foreign_cc", version = "0.15.0")
