# Copyright 2024 Google LLC
#
# 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("@rules_pkg//pkg:mappings.bzl", "pkg_files", "strip_prefix")
load("@rules_rust//rust:defs.bzl", "rust_library", "rust_test")

package(default_applicable_licenses = ["//:license"])

rust_library(
    name = "upb",
    srcs = [
        "arena.rs",
        "associated_mini_table.rs",
        "lib.rs",
        "message.rs",
        "owned_arena_box.rs",
        "text.rs",
        "wire.rs",
    ],
    proc_macro_deps = [
        "@crate_index//:paste",
    ],
    rustc_flags = ["--cfg=bzl"],
    visibility = [
        "//rust:__subpackages__",
        "//src/google/protobuf:__subpackages__",
    ],
    deps = [
        "//rust/upb/sys",
    ],
)

rust_test(
    name = "upb_rs_crate_test",
    crate = ":upb",
    rustc_flags = ["--cfg=bzl"],
    deps = [
        "@crate_index//:googletest",
    ],
)

pkg_files(
    name = "src",
    srcs = glob(["*"]) + [
        "//rust/upb/sys:srcs",
    ],
    prefix = "upb",
    strip_prefix = strip_prefix.from_root("rust/upb"),
    visibility = [
        "//rust:__subpackages__",
        "//src/google/protobuf:__subpackages__",
    ],
)
