# External dependencies for the java_* rules.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
load("@bazel_tools//tools/jdk:jdk_build_file.bzl", "JDK_BUILD_TEMPLATE")
load("@bazel_tools//tools/jdk:local_java_repository.bzl", "local_java_repository")
load("@bazel_tools//tools/jdk:remote_java_repository.bzl", "remote_java_repository")

maybe(
    local_java_repository,
    name = "local_jdk",
    java_home = DEFAULT_SYSTEM_JAVABASE,
    build_file_content = JDK_BUILD_TEMPLATE,
)

# OpenJDK distributions that should only be downloaded on demand (e.g. when
# building a java_library or a genrule that uses java make variables).
# This will allow us to stop bundling the full JDK with Bazel.
# Note that while these are currently the same as the openjdk_* rules in
# Bazel's WORKSPACE file, but they don't have to be the same.

# This must be kept in sync with the top-level WORKSPACE file.
maybe(
    remote_java_repository,
    {remotejdk11_linux}
    target_compatible_with = [
        "@platforms//os:linux",
        "@platforms//cpu:x86_64",
    ],
    version = "11",
)

# This must be kept in sync with the top-level WORKSPACE file.
maybe(
    remote_java_repository,
    {remotejdk11_linux_aarch64}
    target_compatible_with = [
        "@platforms//os:linux",
        "@platforms//cpu:aarch64",
    ],
    version = "11",
)

# This must be kept in sync with the top-level WORKSPACE file.
maybe(
    remote_java_repository,
    {remotejdk11_linux_ppc64le}
    target_compatible_with = [
        "@platforms//os:linux",
        "@platforms//cpu:ppc",
    ],
    version = "11",
)

# This must be kept in sync with the top-level WORKSPACE file.
maybe(
    remote_java_repository,
    {remotejdk11_linux_s390x}
    target_compatible_with = [
        "@platforms//os:linux",
        "@platforms//cpu:s390x",
    ],
    version = "11",
)

# This must be kept in sync with the top-level WORKSPACE file.
maybe(
    remote_java_repository,
    {remotejdk11_macos}
    target_compatible_with = [
        "@platforms//os:macos",
        "@platforms//cpu:x86_64",
    ],
    version = "11",
)

# This must be kept in sync with the top-level WORKSPACE file.
maybe(
    remote_java_repository,
    {remotejdk11_macos_aarch64}
    target_compatible_with = [
        "@platforms//os:macos",
        "@platforms//cpu:aarch64",
    ],
    version = "11",
)

# This must be kept in sync with the top-level WORKSPACE file.
maybe(
    remote_java_repository,
    {remotejdk11_win}
    target_compatible_with = [
        "@platforms//os:windows",
        "@platforms//cpu:x86_64",
    ],
    version = "11",
)

# This must be kept in sync with the top-level WORKSPACE file.
maybe(
    remote_java_repository,
    {remotejdk11_win_arm64}
    target_compatible_with = [
        "@platforms//os:windows",
        "@platforms//cpu:arm64",
    ],
    version = "11",
)

# This must be kept in sync with the top-level WORKSPACE file.
maybe(
    remote_java_repository,
    {remotejdk17_linux}
    target_compatible_with = [
        "@platforms//os:linux",
        "@platforms//cpu:x86_64",
    ],
    version = "17",
)

# This must be kept in sync with the top-level WORKSPACE file.
maybe(
    remote_java_repository,
    {remotejdk17_linux_aarch64}
    target_compatible_with = [
        "@platforms//os:linux",
        "@platforms//cpu:aarch64",
    ],
    version = "17",
)

# This must be kept in sync with the top-level WORKSPACE file.
maybe(
    remote_java_repository,
    {remotejdk17_macos}
    target_compatible_with = [
        "@platforms//os:macos",
        "@platforms//cpu:x86_64",
    ],
    version = "17",
)

# This must be kept in sync with the top-level WORKSPACE file.
maybe(
    remote_java_repository,
    {remotejdk17_macos_aarch64}
    target_compatible_with = [
        "@platforms//os:macos",
        "@platforms//cpu:aarch64",
    ],
    version = "17",
)

# This must be kept in sync with the top-level WORKSPACE file.
maybe(
    remote_java_repository,
    {remotejdk17_win}
    target_compatible_with = [
        "@platforms//os:windows",
        "@platforms//cpu:x86_64",
    ],
    version = "17",
)

maybe(
    remote_java_repository,
    {remotejdk17_win_arm64}
    target_compatible_with = [
        "@platforms//os:windows",
        "@platforms//cpu:arm64",
    ],
    version = "17",
)

# This must be kept in sync with the top-level WORKSPACE file.
maybe(
    remote_java_repository,
    {remotejdk18_linux}
    target_compatible_with = [
        "@platforms//os:linux",
        "@platforms//cpu:x86_64",
    ],
    version = "18",
)

# This must be kept in sync with the top-level WORKSPACE file.
maybe(
    remote_java_repository,
    {remotejdk18_linux_aarch64}
    target_compatible_with = [
        "@platforms//os:linux",
        "@platforms//cpu:aarch64",
    ],
    version = "18",
)

# This must be kept in sync with the top-level WORKSPACE file.
maybe(
    remote_java_repository,
    {remotejdk18_macos}
    target_compatible_with = [
        "@platforms//os:macos",
        "@platforms//cpu:x86_64",
    ],
    version = "18",
)

# This must be kept in sync with the top-level WORKSPACE file.
maybe(
    remote_java_repository,
    {remotejdk18_macos_aarch64}
    target_compatible_with = [
        "@platforms//os:macos",
        "@platforms//cpu:aarch64",
    ],
    version = "18",
)

# This must be kept in sync with the top-level WORKSPACE file.
maybe(
    remote_java_repository,
    {remotejdk18_win}
    target_compatible_with = [
        "@platforms//os:windows",
        "@platforms//cpu:x86_64",
    ],
    version = "18",
)

# This must be kept in sync with the top-level WORKSPACE file.
maybe(
    remote_java_repository,
    {remotejdk18_win_arm64}
    target_compatible_with = [
        "@platforms//os:windows",
        "@platforms//cpu:arm64",
    ],
    version = "18",
)

maybe(
    http_archive,
{remote_java_tools}
)

maybe(
    http_archive,
{remote_java_tools_linux}
)

maybe(
    http_archive,
{remote_java_tools_windows}
)

maybe(
    http_archive,
{remote_java_tools_darwin_x86_64}
)

maybe(
    http_archive,
{remote_java_tools_darwin_arm64}
)

maybe(
    http_archive,
{rules_java}
)

# Needed only because of java_tools.
maybe(
    http_archive,
{rules_cc}
)

# Needed only because of java_tools.
maybe(
    http_archive,
{rules_proto}
)

register_toolchains("@bazel_tools//tools/jdk:all")
