# Copyright 2025 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

module(name = "quiche")

# Last updated 2025-02-25
bazel_dep(name = "bazel_skylib", version = "1.7.1")

# Last updated 2025-02-25
bazel_dep(name = "rules_cc", version = "0.1.1")

# Last updated 2025-02-25
bazel_dep(name = "abseil-cpp", repo_name = "com_google_absl", version = "20250127.0")

# Last updated 2025-02-25
bazel_dep(name = "protobuf", repo_name = "com_google_protobuf", version = "29.3")

# Last updated 2025-02-25
bazel_dep(name = "boringssl", version = "0.20250212.0")

# Last updated 2025-02-25
bazel_dep(name = "googletest", repo_name = "com_google_googletest", version = "1.16.0")

# Last updated 2025-02-25
bazel_dep(name = "re2", version = "2024-07-02.bcr.1")

# Last updated 2025-02-25
bazel_dep(name = "zlib", version = "1.3.1.bcr.5")

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

http_archive(
    name = "com_google_quic_trace",
    sha256 = "ba01a041ae37b423fb8d555c53e545dcc914ad1a9a03832f266c0107d4433b08",  # Last updated 2025-02-25
    strip_prefix = "quic-trace-ed3deb8a056b260c59f2fd42af6dfa3db48a8cad",
    urls = ["https://github.com/google/quic-trace/archive/ed3deb8a056b260c59f2fd42af6dfa3db48a8cad.tar.gz"],
)

http_archive(
    name = "com_google_googleurl",
    sha256 = "1d2c507cc31e109ecb41ba1fe766f5ff0f5974c3ba8d0919b3d22668f7e89305",  # Last updated 2023-07-06
    urls = ["https://storage.googleapis.com/quiche-envoy-integration/googleurl-5573f9aa120f3fbd378ca1b2565bbf7d223cd542.tar.gz"],
)
