# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

module(
    name = "fuzztest",
    version = "20260218.0",
    # TODO(lszekeres): Remove and use default name.
    repo_name = "com_google_fuzztest",
)

bazel_dep(
    name = "rules_cc",
    version = "0.2.17",
)
bazel_dep(
    name = "rules_shell",
    version = "0.6.1",
)
bazel_dep(
    name = "abseil-cpp",
    version = "20260107.1",
)
bazel_dep(
    name = "re2",
    version = "2025-11-05.bcr.1",
)
bazel_dep(
    name = "bazel_skylib",
    version = "1.9.0",
)
bazel_dep(
    name = "platforms",
    version = "1.0.0",
)
bazel_dep(
    name = "flatbuffers",
    # When updating, check if we still need to override the versions of
    # rules_foreign_cc and aspect_bazel_lib below.
    version = "25.12.19",
)

# Needed to override problematic versions of the modules transitively inherited
# from flatbuffers. To check if this is still needed, comment out the overrides
# and run:
#
#   bazel mod all_paths rules_foreign_cc aspect_bazel_lib
#
# Verify that the version of rules_foreign_cc in the output is at least 0.13.0,
# and that the version of aspect_bazel_lib in the output is at least 2.19.1.
single_version_override(
    module_name = "rules_foreign_cc",
    version = "0.15.1",
)

single_version_override(
    module_name = "aspect_bazel_lib",
    version = "2.22.5",
)

# GoogleTest is not a dev dependency, because it's needed when FuzzTest is used
# with GoogleTest integration (e.g., googletest_adaptor). Note that the FuzzTest
# framework can be used without GoogleTest integration as well.
bazel_dep(
    name = "googletest",
    version = "1.17.0.bcr.2",
)

# Protobuf is not a dev dependency; it is needed for Bazel BUILD rules:
# https://github.com/protocolbuffers/protobuf/blob/main/bazel/proto_library.bzl
# https://github.com/protocolbuffers/protobuf/blob/main/bazel/cc_proto_library.bzl
bazel_dep(
    name = "protobuf",
    version = "33.5",
)
bazel_dep(
    name = "riegeli",
    version = "0.0.0-20250822-9f2744d",
    repo_name = "com_google_riegeli",
)

# Dev dependencies.
# These dependencies will be ignored if the current module is not the root
# module (https://bazel.build/rules/lib/globals/module#bazel_dep).
bazel_dep(
    name = "nlohmann_json",
    version = "3.12.0.bcr.1",
    dev_dependency = True,
)
bazel_dep(
    name = "antlr4-cpp-runtime",
    version = "4.13.2",
    dev_dependency = True,
    repo_name = "antlr_cpp",
)
