load("@rules_cc//cc:defs.bzl", "objc_library")
load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix")

objc_library(
    name = "objectivec",
    hdrs = [
        "GPBAny.pbobjc.h",
        "GPBApi.pbobjc.h",
        "GPBDuration.pbobjc.h",
        "GPBEmpty.pbobjc.h",
        "GPBFieldMask.pbobjc.h",
        "GPBSourceContext.pbobjc.h",
        "GPBStruct.pbobjc.h",
        "GPBTimestamp.pbobjc.h",
        "GPBType.pbobjc.h",
        "GPBWrappers.pbobjc.h",
        "GPBArray.h",
        "GPBBootstrap.h",
        "GPBCodedInputStream.h",
        "GPBCodedOutputStream.h",
        "GPBDescriptor.h",
        "GPBDictionary.h",
        "GPBExtensionInternals.h",
        "GPBExtensionRegistry.h",
        "GPBMessage.h",
        "GPBProtocolBuffers.h",
        "GPBProtocolBuffers_RuntimeSupport.h",
        "GPBRootObject.h",
        "GPBRuntimeTypes.h",
        "GPBUnknownField.h",
        "GPBUnknownFieldSet.h",
        "GPBUtilities.h",
        "GPBWellKnownTypes.h",
        "GPBWireFormat.h",
        "google/protobuf/Any.pbobjc.h",
        "google/protobuf/Api.pbobjc.h",
        "google/protobuf/Duration.pbobjc.h",
        "google/protobuf/Empty.pbobjc.h",
        "google/protobuf/FieldMask.pbobjc.h",
        "google/protobuf/SourceContext.pbobjc.h",
        "google/protobuf/Struct.pbobjc.h",
        "google/protobuf/Timestamp.pbobjc.h",
        "google/protobuf/Type.pbobjc.h",
        "google/protobuf/Wrappers.pbobjc.h",
        # Package private headers, but exposed because the generated sources
        # need to use them.
        "GPBArray_PackagePrivate.h",
        "GPBCodedInputStream_PackagePrivate.h",
        "GPBCodedOutputStream_PackagePrivate.h",
        "GPBDescriptor_PackagePrivate.h",
        "GPBDictionary_PackagePrivate.h",
        "GPBMessage_PackagePrivate.h",
        "GPBRootObject_PackagePrivate.h",
        "GPBUnknownFieldSet_PackagePrivate.h",
        "GPBUnknownField_PackagePrivate.h",
        "GPBUtilities_PackagePrivate.h",
    ],
    copts = [
        "-Wno-vla",
    ],
    includes = [
        ".",
    ],
    non_arc_srcs = [
        "GPBAny.pbobjc.m",
        "GPBApi.pbobjc.m",
        "GPBArray.m",
        "GPBCodedInputStream.m",
        "GPBCodedOutputStream.m",
        "GPBDescriptor.m",
        "GPBDictionary.m",
        "GPBDuration.pbobjc.m",
        "GPBEmpty.pbobjc.m",
        "GPBExtensionInternals.m",
        "GPBExtensionRegistry.m",
        "GPBFieldMask.pbobjc.m",
        "GPBMessage.m",
        "GPBRootObject.m",
        "GPBSourceContext.pbobjc.m",
        "GPBStruct.pbobjc.m",
        "GPBTimestamp.pbobjc.m",
        "GPBType.pbobjc.m",
        "GPBUnknownField.m",
        "GPBUnknownFieldSet.m",
        "GPBUtilities.m",
        "GPBWellKnownTypes.m",
        "GPBWireFormat.m",
        "GPBWrappers.pbobjc.m",
    ],
    visibility = ["//visibility:public"],
)

pkg_files(
    name = "dist_files",
    srcs = glob([
        "*.h",
        "*.m",
        "**/*.h",
        "**/*.m",
        "**/*.mm",
        "**/*.swift",
        "DevTools/*.sh",
        "DevTools/*.py",
        "ProtocolBuffers_iOS.xcodeproj/**/*",
        "ProtocolBuffers_OSX.xcodeproj/**/*",
        "ProtocolBuffers_tvOS.xcodeproj/**/*",
        "Tests/CocoaPods/**/*",
        "Tests/*.pddm",
        "Tests/*.txt",
        "Tests/*.plist",
        "Tests/*.proto",
    ]) + [
        ".clang-format",
        "BUILD.bazel",
        "README.md",
        "Tests/golden_message",
        "Tests/golden_packed_fields_message",
        "generate_well_known_types.sh",
    ],
    strip_prefix = strip_prefix.from_root(""),
    visibility = ["//pkg:__pkg__"],
)
