# Internal Starlark definitions for Protobuf.

load("@bazel_skylib//lib:selects.bzl", "selects")
load("@rules_pkg//pkg:mappings.bzl", "pkg_files", "strip_prefix")
load("//bazel:cc_proto_library.bzl", starlark_cc_proto_library = "cc_proto_library")
load(":cc_proto_blacklist_test.bzl", "cc_proto_blacklist_test")
load(":compiler_config_setting.bzl", "create_compiler_config_setting")

package(
    default_visibility = [
        # Public, but Protobuf only visibility.
        "//:__subpackages__",
    ],
)

create_compiler_config_setting(
    name = "config_msvc_cl",
    value = "msvc-cl",
)

create_compiler_config_setting(
    name = "config_clang_cl",
    value = "clang-cl",
)

platform(
    name = "x64_windows-clang-cl",
    constraint_values = [
        "@platforms//cpu:x86_64",
        "@platforms//os:windows",
        # This is necessary for Bazel 7 compatibility with a MODULE.bazel file that still works in
        # Bazel 8.  Using cc_configure_extension from rules_cc produces a @local_config_cc
        # repository that's not compatible with @bazel_tools//tools/cpp:clang-cl from before
        # Bazel 8.  See https://github.com/bazelbuild/rules_cc/issues/330.
        "@rules_cc//cc/private/toolchain:clang-cl",
    ],
)

platform(
    name = "x64_windows-msvc-cl",
    constraint_values = [
        "@platforms//cpu:x86_64",
        "@platforms//os:windows",
        # This may be necessary in case cc_configure_extension from rules_cc produces a
        # @local_config_cc repository that's not compatible with @bazel_tools//tools/cpp:msvc from
        # before Bazel 8, as with clang-cl above, to avoid silently falling back to clang-cl.
        # See https://github.com/bazelbuild/rules_cc/issues/330.
        "@rules_cc//cc/private/toolchain:msvc",
    ],
)

config_setting(
    name = "protobuf_allow_msvc",
    values = {
        "define": "protobuf_allow_msvc=true",
    },
)

selects.config_setting_group(
    name = "config_msvc",
    match_any = [
        ":config_clang_cl",
        ":config_msvc_cl",
    ],
)

platform(
    name = "aarch64_linux",
    constraint_values = [
        "@platforms//cpu:aarch64",
        "@platforms//os:linux",
    ],
)

config_setting(
    name = "aarch64",
    values = {"cpu": "linux-aarch_64"},
)

config_setting(
    name = "x86_64",
    values = {"cpu": "linux-x86_64"},
)

# Android NDK builds can specify different crosstool_top flags to choose which
# STL they use for C++. We need these multiple variants to catch all of those
# versions of crosstool_top and reliably detect Android.
#
# For more info on the various crosstool_tops used by NDK Bazel builds, see:
# https://docs.bazel.build/versions/master/android-ndk.html#configuring-the-stl

# When using https://bazel.build/concepts/platforms
config_setting(
    name = "config_android",
    constraint_values = ["@platforms//os:android"],
)

# When using legacy flags like --android_crosstool_top, --android_cpu, and --fat_apk_cpu
config_setting(
    name = "config_android-legacy-default-crosstool",
    values = {
        # Default of `--android_crosstool_top`
        "crosstool_top": "//external:android/crosstool",
    },
)

config_setting(
    name = "config_android-stlport",
    values = {
        "crosstool_top": "@androidndk//:toolchain-stlport",
    },
)

config_setting(
    name = "config_android-libcpp",
    values = {
        "crosstool_top": "@androidndk//:toolchain-libcpp",
    },
)

config_setting(
    name = "config_android-gnu-libstdcpp",
    values = {
        "crosstool_top": "@androidndk//:toolchain-gnu-libstdcpp",
    },
)

config_setting(
    name = "config_android-default",
    values = {
        "crosstool_top": "@androidndk//:default_crosstool",
    },
)

config_setting(
    name = "config_win32",
    values = {
        "cpu": "win32",
    },
)

config_setting(
    name = "config_win64",
    values = {
        "cpu": "win64",
    },
)

selects.config_setting_group(
    name = "config_win",
    match_any = [
        ":config_win32",
        ":config_win64",
    ],
)

config_setting(
    name = "config_osx_aarch64",
    values = {"cpu": "osx-aarch_64"},
)

config_setting(
    name = "config_osx_x86_64",
    values = {"cpu": "osx-x86_64"},
)

selects.config_setting_group(
    name = "config_osx",
    match_any = [
        ":config_osx_aarch64",
        ":config_osx_x86_64",
    ],
)

# Internal testing:

starlark_cc_proto_library(
    name = "any_cc_proto",
    visibility = ["//visibility:private"],
    deps = ["//:any_proto"],
)

starlark_cc_proto_library(
    name = "api_cc_proto",
    visibility = ["//visibility:private"],
    deps = ["//:api_proto"],
)

starlark_cc_proto_library(
    name = "compiler_plugin_cc_proto",
    visibility = ["//visibility:private"],
    deps = ["//:compiler_plugin_proto"],
)

starlark_cc_proto_library(
    name = "descriptor_cc_proto",
    visibility = ["//visibility:private"],
    deps = ["//:descriptor_proto"],
)

starlark_cc_proto_library(
    name = "duration_cc_proto",
    visibility = ["//visibility:private"],
    deps = ["//:duration_proto"],
)

starlark_cc_proto_library(
    name = "empty_cc_proto",
    visibility = ["//visibility:private"],
    deps = ["//:empty_proto"],
)

starlark_cc_proto_library(
    name = "field_mask_cc_proto",
    visibility = ["//visibility:private"],
    deps = ["//:field_mask_proto"],
)

starlark_cc_proto_library(
    name = "source_context_cc_proto",
    visibility = ["//visibility:private"],
    deps = ["//:source_context_proto"],
)

starlark_cc_proto_library(
    name = "struct_cc_proto",
    visibility = ["//visibility:private"],
    deps = ["//:struct_proto"],
)

starlark_cc_proto_library(
    name = "timestamp_cc_proto",
    visibility = ["//visibility:private"],
    deps = ["//:timestamp_proto"],
)

starlark_cc_proto_library(
    name = "type_cc_proto",
    visibility = ["//visibility:private"],
    deps = ["//:type_proto"],
)

starlark_cc_proto_library(
    name = "wrappers_cc_proto",
    visibility = ["//visibility:private"],
    deps = ["//:wrappers_proto"],
)

cc_proto_blacklist_test(
    name = "cc_proto_blacklist_test",
    deps = [
        ":any_cc_proto",
        ":api_cc_proto",
        ":compiler_plugin_cc_proto",
        ":descriptor_cc_proto",
        ":duration_cc_proto",
        ":empty_cc_proto",
        ":field_mask_cc_proto",
        ":source_context_cc_proto",
        ":struct_cc_proto",
        ":timestamp_cc_proto",
        ":type_cc_proto",
        ":wrappers_cc_proto",
    ],
)

pkg_files(
    name = "dist_files",
    srcs = glob(["*"]),
    strip_prefix = strip_prefix.from_root(""),
    visibility = ["//pkg:__pkg__"],
)
