load("//src:release_archive.bzl", "release_archive")

# Description:
#   one version C++ implementation.
package(default_visibility = ["//src:__subpackages__"])

filegroup(
    name = "srcs",
    srcs = glob(["**"]),
    visibility = ["//src:__pkg__"],
)

SOURCES = [
    # keep sorted
    "allowlist.cc",
    "allowlist.h",
    "duplicate_class_collector.cc",
    "duplicate_class_collector.h",
    "one_version.cc",
    "one_version.h",
    "one_version_main.cc",
]

cc_library(
    name = "duplicate_class_collector",
    srcs = [
        "duplicate_class_collector.cc",
    ],
    hdrs = [
        "duplicate_class_collector.h",
    ],
    deps = [
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/strings",
    ],
)

cc_test(
    name = "duplicate_class_collector_test",
    srcs = [
        "duplicate_class_collector_test.cc",
    ],
    deps = [
        ":duplicate_class_collector",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_library(
    name = "allowlist",
    srcs = ["allowlist.cc"],
    hdrs = ["allowlist.h"],
    deps = [
        ":duplicate_class_collector",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/container:flat_hash_set",
        "@abseil-cpp//absl/strings",
        "@abseil-cpp//absl/types:span",
    ],
)

cc_test(
    name = "allowlist_test",
    srcs = ["allowlist_test.cc"],
    deps = [
        ":allowlist",
        ":duplicate_class_collector",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/container:flat_hash_set",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_library(
    name = "one_version",
    srcs = ["one_version.cc"],
    hdrs = ["one_version.h"],
    deps = [
        ":allowlist",
        ":duplicate_class_collector",
        "//src/tools/singlejar:input_jar",
        "@abseil-cpp//absl/log:die_if_null",
        "@abseil-cpp//absl/memory",
        "@abseil-cpp//absl/strings",
    ],
)

cc_binary(
    name = "one_version_main",
    srcs = [
        "one_version_main.cc",
    ],
    deps = [
        ":allowlist",
        ":duplicate_class_collector",
        ":one_version",
        "//src/tools/singlejar:input_jar",
        "//src/tools/singlejar:token_stream",
        "@abseil-cpp//absl/container:flat_hash_map",
        "@abseil-cpp//absl/container:flat_hash_set",
        "@abseil-cpp//absl/log:die_if_null",
        "@abseil-cpp//absl/strings",
    ],
)

filegroup(
    name = "embedded_java_tools",
    srcs = SOURCES + [
        "//src/tools/singlejar:embedded_java_tools",
    ],
    visibility = ["//src:__pkg__"],
)

release_archive(
    name = "one_version_transitive_zip",
    package_dir = "java_tools",
    visibility = ["//src:__pkg__"],
    deps = [
        ":one_version_zip",
        "//src/tools/singlejar:singlejar_transitive_zip",
    ],
)

release_archive(
    name = "one_version_zip",
    srcs = SOURCES,
    package_dir = "src/tools/one_version",
    visibility = ["//visibility:private"],
)

release_archive(
    name = "one_version_deploy_zip",
    srcs = [":one_version_main"],
    package_dir = "java_tools/src/tools/one_version",
    visibility = ["//src:__pkg__"],
)
