"""Bazel build and test dependencies."""

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

module(
    name = "bazel",
    repo_name = "io_bazel",
)

# =========================================
# Bazel module dependencies
# =========================================

bazel_dep(name = "rules_license", version = "0.0.7")
bazel_dep(name = "bazel_skylib", version = "1.5.0")
bazel_dep(name = "protobuf", version = "21.7", repo_name = "com_google_protobuf")
bazel_dep(name = "grpc", version = "1.48.1.bcr.1", repo_name = "com_github_grpc_grpc")
bazel_dep(name = "platforms", version = "0.0.8")
bazel_dep(name = "rules_pkg", version = "0.9.1")
bazel_dep(name = "stardoc", version = "0.5.3", repo_name = "io_bazel_skydoc")
bazel_dep(name = "zstd-jni", version = "1.5.2-3.bcr.1")
bazel_dep(name = "blake3", version = "1.3.3.bcr.1")
bazel_dep(name = "zlib", version = "1.3")
bazel_dep(name = "rules_cc", version = "0.0.9")
bazel_dep(name = "rules_graalvm", version = "0.10.3")
bazel_dep(name = "rules_java", version = "7.4.0")
bazel_dep(name = "rules_proto", version = "5.3.0-21.7")
bazel_dep(name = "rules_jvm_external", version = "5.2")
bazel_dep(name = "rules_python", version = "0.26.0")
bazel_dep(name = "rules_testing", version = "0.0.4")
bazel_dep(name = "googletest", version = "1.14.0", repo_name = "com_google_googletest")

# TODO(pcloudy): Add remoteapis and googleapis as Bazel modules in the BCR.
bazel_dep(name = "remoteapis", version = "")
bazel_dep(name = "googleapis", version = "")

single_version_override(
    module_name = "rules_jvm_external",
    patch_strip = 1,
    patches = ["//third_party:rules_jvm_external_5.2.patch"],
)

local_path_override(
    module_name = "remoteapis",
    path = "./third_party/remoteapis",
)

local_path_override(
    module_name = "googleapis",
    path = "./third_party/googleapis",
)

# The following Bazel modules are not direct dependencies for building Bazel,
# but are required for visibility from DIST_ARCHIVE_REPOS in repositories.bzl
bazel_dep(name = "apple_support", version = "1.8.1")
bazel_dep(name = "abseil-cpp", version = "20230125.1")
bazel_dep(name = "c-ares", version = "1.15.0")
bazel_dep(name = "rules_go", version = "0.39.1")
bazel_dep(name = "upb", version = "0.0.0-20220923-a547704")

# =========================================
# Java dependencies
# =========================================

maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
maven.install(
    artifacts = [
        "com.beust:jcommander:1.82",
        "com.github.ben-manes.caffeine:caffeine:3.0.5",
        "com.github.kevinstern:software-and-algorithms:1.0",
        "com.github.stephenc.jcip:jcip-annotations:1.0-1",
        "com.google.api-client:google-api-client-gson:1.35.2",
        "com.google.api-client:google-api-client:1.35.2",
        "com.google.auth:google-auth-library-credentials:1.6.0",
        "com.google.auth:google-auth-library-oauth2-http:1.6.0",
        "com.google.auto.service:auto-service-annotations:1.0.1",
        "com.google.auto.service:auto-service:1.0",
        "com.google.auto.value:auto-value-annotations:1.9",
        "com.google.auto.value:auto-value:1.8.2",
        "com.google.auto:auto-common:1.2.1",
        "com.google.code.findbugs:jsr305:3.0.2",
        "com.google.code.gson:gson:2.9.0",
        "com.google.code.java-allocation-instrumenter:java-allocation-instrumenter:3.3.0",
        "com.google.errorprone:error_prone_annotation:2.22.0",
        "com.google.errorprone:error_prone_annotations:2.22.0",
        "com.google.errorprone:error_prone_check_api:2.22.0",
        "com.google.errorprone:error_prone_core:2.22.0",
        "com.google.errorprone:error_prone_type_annotations:2.22.0",
        "com.google.flogger:flogger-system-backend:0.5.1",
        "com.google.flogger:flogger:0.5.1",
        "com.google.flogger:google-extensions:0.5.1",
        "com.google.guava:failureaccess:1.0.1",
        "com.google.guava:guava:31.1-jre",
        "com.google.http-client:google-http-client-gson:1.42.0",
        "com.google.http-client:google-http-client:1.42.0",
        "com.google.j2objc:j2objc-annotations:1.3",
        "com.google.turbine:turbine:0.4.0",
        "com.ryanharter.auto.value:auto-value-gson-extension:1.3.1",
        "com.ryanharter.auto.value:auto-value-gson-runtime:1.3.1",
        "com.ryanharter.auto.value:auto-value-gson-factory:1.3.1",
        "com.squareup:javapoet:1.12.0",
        "commons-collections:commons-collections:3.2.2",
        "commons-lang:commons-lang:2.6",
        "io.github.java-diff-utils:java-diff-utils:4.12",
        "io.grpc:grpc-api:1.48.1",
        "io.grpc:grpc-auth:1.48.1",
        "io.grpc:grpc-context:1.48.1",
        "io.grpc:grpc-core:1.48.1",
        "io.grpc:grpc-netty:1.48.1",
        "io.grpc:grpc-protobuf-lite:1.48.1",
        "io.grpc:grpc-protobuf:1.48.1",
        "io.grpc:grpc-stub:1.48.1",
        "io.netty:netty-buffer:4.1.93.Final",
        "io.netty:netty-codec-http2:4.1.93.Final",
        "io.netty:netty-codec-http:4.1.93.Final",
        "io.netty:netty-codec:4.1.93.Final",
        "io.netty:netty-common:4.1.93.Final",
        "io.netty:netty-handler-proxy:4.1.93.Final",
        "io.netty:netty-handler:4.1.93.Final",
        "io.netty:netty-resolver-dns:4.1.93.Final",
        "io.netty:netty-resolver:4.1.93.Final",
        "io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64:2.0.56.Final",
        "io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64:2.0.56.Final",
        "io.netty:netty-tcnative-boringssl-static:jar:osx-aarch_64:2.0.56.Final",
        "io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64:2.0.56.Final",
        "io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64:2.0.56.Final",
        "io.netty:netty-tcnative-classes:2.0.56.Final",
        "io.netty:netty-transport-classes-epoll:4.1.93.Final",
        "io.netty:netty-transport-classes-kqueue:4.1.93.Final",
        "io.netty:netty-transport-native-epoll:jar:linux-aarch_64:4.1.93.Final",
        "io.netty:netty-transport-native-epoll:jar:linux-x86_64:4.1.93.Final",
        "io.netty:netty-transport-native-kqueue:jar:osx-aarch_64:4.1.93.Final",
        "io.netty:netty-transport-native-kqueue:jar:osx-x86_64:4.1.93.Final",
        "io.netty:netty-transport-native-unix-common:4.1.93.Final",
        "io.netty:netty-transport-native-unix-common:jar:linux-aarch_64:4.1.93.Final",
        "io.netty:netty-transport-native-unix-common:jar:linux-x86_64:4.1.93.Final",
        "io.netty:netty-transport-native-unix-common:jar:osx-aarch_64:4.1.93.Final",
        "io.netty:netty-transport-native-unix-common:jar:osx-x86_64:4.1.93.Final",
        "io.netty:netty-transport:4.1.93.Final",
        "io.reactivex.rxjava3:rxjava:3.1.2",
        "it.unimi.dsi:fastutil:7.2.1",
        "javax.activation:javax.activation-api:1.2.0",
        "javax.annotation:javax.annotation-api:1.3.2",
        "javax.inject:javax.inject:1",
        "net.bytebuddy:byte-buddy-agent:1.14.5",
        "net.bytebuddy:byte-buddy:1.14.5",
        "org.apache.commons:commons-compress:1.20",
        "org.apache.commons:commons-pool2:2.8.0",
        "org.apache.tomcat:tomcat-annotations-api:8.0.5",
        "org.apache.velocity:velocity:1.7",
        "org.checkerframework:checker-qual:3.19.0",
        "org.ow2.asm:asm-analysis:9.2",
        "org.ow2.asm:asm-commons:9.2",
        "org.ow2.asm:asm-tree:9.2",
        "org.ow2.asm:asm-util:9.2",
        "org.ow2.asm:asm:9.2",
        "org.pcollections:pcollections:3.1.4",
        "org.threeten:threeten-extra:1.5.0",
        "org.tukaani:xz:1.9",
        "org.yaml:snakeyaml:1.28",
        "tools.profiler:async-profiler:3.0",
        # The following jars are for testing.
        # junit is not test only due to //src/java_tools/junitrunner/java/com/google/testing/junit/junit4:runner,
        # and hamcrest is a dependency of junit.
        "junit:junit:4.13.2",
        "org.hamcrest:hamcrest-core:1.3",
    ],
    excluded_artifacts = [
        # org.apache.httpcomponents and org.eclipse.jgit:org.eclipse.jgit
        # require java.security.jgss module to be embedded in the Bazel binary.
        "org.apache.httpcomponents:httpclient",
        "org.apache.httpcomponents:httpcore",
        "org.eclipse.jgit:org.eclipse.jgit",
        # We build protobuf Java library from source, exclude protobuf jars to be safe.
        "com.google.protobuf:protobuf-java",
        "com.google.protobuf:protobuf-javalite",
    ],
    # Don't forget to change this to back to True before submitting your change.
    fail_if_repin_required = True,
    lock_file = "//:maven_install.json",
    repositories = [
        "https://repo1.maven.org/maven2",
    ],
    strict_visibility = True,
)

# Test only maven dependencies
[
    maven.artifact(
        testonly = True,
        artifact = artifact,
        group = group,
        version = version,
    )
    for group, artifact, version in [coord.split(":") for coord in [
        "com.google.guava:guava-testlib:31.1-jre",
        "com.google.jimfs:jimfs:1.2",
        "com.google.testing.compile:compile-testing:0.18",
        "com.google.testparameterinjector:test-parameter-injector:1.0",
        "com.google.truth:truth:1.1.3",
        "com.google.truth.extensions:truth-java8-extension:1.1.3",
        "com.google.truth.extensions:truth-liteproto-extension:1.1.3",
        "com.google.truth.extensions:truth-proto-extension:1.1.3",
        "org.mockito:mockito-core:5.4.0",
    ]]
]

use_repo(maven, "maven", "unpinned_maven")

java_toolchains = use_extension("@rules_java//java:extensions.bzl", "toolchains")
use_repo(
    java_toolchains,
    "local_jdk",
    # The following are required for visibility in //src:test_repos
    "remote_java_tools",
    "remote_java_tools_darwin_arm64",
    "remote_java_tools_darwin_x86_64",
    "remote_java_tools_linux",
    "remote_java_tools_windows",
    "remotejdk11_linux",
    "remotejdk11_linux_aarch64",
    "remotejdk11_linux_ppc64le",
    "remotejdk11_linux_s390x",
    "remotejdk11_macos",
    "remotejdk11_macos_aarch64",
    "remotejdk11_win",
    "remotejdk11_win_arm64",
    "remotejdk17_linux",
    "remotejdk17_linux_s390x",
    "remotejdk17_macos",
    "remotejdk17_macos_aarch64",
    "remotejdk17_win",
    "remotejdk17_win_arm64",
    "remotejdk21_linux",
    "remotejdk21_macos",
    "remotejdk21_macos_aarch64",
    "remotejdk21_win",
)

# =========================================
# Python dependencies
# =========================================

python = use_extension("@rules_python//python/extensions:python.bzl", "python")
python.toolchain(python_version = "3.8")

pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
    hub_name = "bazel_pip_dev_deps",
    python_version = "3.8",
    requirements_lock = "//:requirements.txt",
)
use_repo(pip, "bazel_pip_dev_deps")

# =========================================
# Other Bazel build dependencies
# =========================================

bazel_build_deps = use_extension("//:extensions.bzl", "bazel_build_deps")
use_repo(
    bazel_build_deps,
    "bazel_tools_repo_cache",
    "bootstrap_repo_cache",
    "debian_bin_deps",
    "debian_cc_deps",
    "debian_java_deps",
    "debian_proto_deps",
    "openjdk_linux_aarch64_vanilla",
    "openjdk_linux_ppc64le_vanilla",
    "openjdk_linux_s390x_vanilla",
    "openjdk_linux_vanilla",
    "openjdk_macos_aarch64_vanilla",
    "openjdk_macos_x86_64_vanilla",
    "openjdk_win_arm64_vanilla",
    "openjdk_win_vanilla",
    "workspace_repo_cache",
)

# Required only by `--extra_toolchains=@local_config_cc//:cc-toolchain-arm64_windows` from .bazelrc
cc_configure = use_extension("@bazel_tools//tools/cpp:cc_configure.bzl", "cc_configure_extension")
use_repo(cc_configure, "local_config_cc")

# =========================================
# Other Bazel testing dependencies
# =========================================

bazel_test_deps = use_extension("//:extensions.bzl", "bazel_test_deps")
use_repo(
    bazel_test_deps,
    "bazelci_rules",
    "local_bazel_source_list",
    "local_config_winsdk",
)

bazel_rbe_deps = use_extension("//:rbe_extension.bzl", "bazel_rbe_deps")
use_repo(bazel_rbe_deps, "rbe_ubuntu2004_java11")

remote_coverage_tools_extension = use_extension("//tools/test:extensions.bzl", "remote_coverage_tools_extension")
use_repo(remote_coverage_tools_extension, "remote_coverage_tools")

gvm = use_extension("@rules_graalvm//:extensions.bzl", "graalvm")
gvm.graalvm(
    name = "graalvm",
    distribution = "ce",
    java_version = "20",
    version = "20.0.2",
)
use_repo(gvm, "graalvm_toolchains")
register_toolchains("@graalvm_toolchains//:gvm")

# =========================================
# Register platforms & toolchains
# =========================================

register_execution_platforms("//:default_host_platform")

register_toolchains("@bazel_tools//tools/python:autodetecting_toolchain")

register_toolchains("@local_config_winsdk//:all")

register_toolchains("//src/main/res:empty_rc_toolchain")

# Workaround for https://github.com/bazelbuild/bazel/issues/19837.
# TODO(bazel-team): Remove when .bazelversion is 7.0.0rc2 or later.
register_toolchains("//:bazel_java_toolchain_definition")

# =========================================
# Android tools dependencies
# =========================================

maven_android = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
maven_android.install(
    name = "maven_android",
    artifacts = [
        "androidx.databinding:databinding-compiler:3.4.0-alpha10",
        "com.android.tools.build:builder:7.1.3",
        "com.android.tools.build:manifest-merger:30.1.3",
        "com.android.tools:sdk-common:30.1.3",
        "com.android.tools:annotations:30.1.3",
        "com.android.tools.layoutlib:layoutlib-api:30.1.3",
        "com.android.tools:common:30.1.3",
        "com.android.tools:repository:30.1.3",
    ],
    # Don't forget to change this to back to True before submitting your change.
    fail_if_repin_required = True,
    lock_file = "//src/tools/android:maven_android_install.json",
    repositories = [
        "https://dl.google.com/android/maven2",
        "https://repo1.maven.org/maven2",
    ],
)
use_repo(maven_android, "maven_android", "unpinned_maven_android")

bazel_android_deps = use_extension("//:extensions.bzl", "bazel_android_deps")
use_repo(bazel_android_deps, "desugar_jdk_libs")

remote_android_extensions = use_extension("//tools/android:android_extensions.bzl", "remote_android_tools_extensions")
use_repo(remote_android_extensions, "android_gmaven_r8", "android_tools")
