# Copyright (c) 2009-2021, Google LLC
# All rights reserved.
#
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file or at
# https://developers.google.com/open-source/licenses/bsd

load("@bazel_skylib//:bzl_library.bzl", "bzl_library")

licenses(["notice"])

bzl_library(
    name = "proto_library_bzl",
    srcs = ["proto_library.bzl"],
    visibility = ["//visibility:public"],
    deps = [
        "//bazel/private:bazel_proto_library_rule_bzl",
        "@proto_bazel_features//:features",
    ],
)

bzl_library(
    name = "cc_proto_library_bzl",
    srcs = ["cc_proto_library.bzl"],
    visibility = ["//visibility:public"],
    deps = ["//bazel/private:bazel_cc_proto_library_bzl"],
)

bzl_library(
    name = "java_proto_library_bzl",
    srcs = ["java_proto_library.bzl"],
    visibility = ["//visibility:public"],
    deps = ["//bazel/private:bazel_java_proto_library_rule_bzl"],
)

bzl_library(
    name = "java_lite_proto_library_bzl",
    srcs = ["java_lite_proto_library.bzl"],
    visibility = ["//visibility:public"],
    deps = ["//bazel/private:java_lite_proto_library_bzl"],
)

bzl_library(
    name = "py_proto_library_bzl",
    srcs = ["py_proto_library.bzl"],
    visibility = ["//visibility:public"],
    deps = [
        "//bazel/common:proto_common_bzl",
        "//bazel/common:proto_info_bzl",
        "//bazel/private:toolchain_helpers_bzl",
        "@rules_python//python:py_info_bzl",
    ],
)

bzl_library(
    name = "upb_proto_library_bzl",
    srcs = [
        "upb_c_proto_library.bzl",
        "upb_minitable_proto_library.bzl",
        "upb_proto_library.bzl",
        "upb_proto_reflection_library.bzl",
    ],
    visibility = ["//visibility:public"],
    deps = ["//bazel/private:upb_proto_library_internal_bzl"],
)

# The data in this target is exposed in //bazel/private:for_bazel_tests
filegroup(
    name = "for_bazel_tests",
    testonly = True,
    srcs = [
        "BUILD.bazel",
        ":cc_proto_library_bzl",
        ":java_lite_proto_library_bzl",
        ":proto_library_bzl",
        ":py_proto_library_bzl",
        "//bazel/common:for_bazel_tests",
        "//bazel/toolchains:for_bazel_tests",
    ],
    visibility = ["//bazel/private:__pkg__"],
)
