# 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:build_defs.bzl",
    "UPB_DEFAULT_COPTS",
    "UPB_DEFAULT_CPPOPTS",
)
load(
    "//lua:lua_proto_library.bzl",
    "lua_proto_library",
)

licenses(["notice"])

cc_library(
    name = "lupb",
    srcs = [
        "def.c",
        "msg.c",
        "upb.c",
    ],
    hdrs = [
        "upb.h",
    ],
    copts = UPB_DEFAULT_COPTS,
    visibility = ["//visibility:public"],
    deps = [
        "//upb:json",
        "//upb:message",
        "//upb:reflection",
        "//upb:text",
        "@lua//:liblua",
    ],
)

cc_binary(
    name = "protoc-gen-lua",
    srcs = ["upbc.cc"],
    copts = UPB_DEFAULT_CPPOPTS,
    visibility = ["//visibility:public"],
    deps = [
        "//src/google/protobuf/compiler:code_generator",
        "@com_google_absl//absl/strings",
    ],
)

exports_files(["upb.lua"])

cc_test(
    name = "test_lua",
    srcs = ["main.c"],
    args = ["$(location :test_upb.lua)"],
    copts = UPB_DEFAULT_COPTS,
    data = [
        "test_upb.lua",
        "upb.lua",
        ":descriptor_proto_lua",
        ":empty_proto_lua",
        ":test_messages_proto2_proto_lua",
        ":test_messages_proto3_proto_lua",
        ":test_proto_lua",
        "//:descriptor_proto",
        "//conformance:conformance_proto",
        "//third_party/lunit:console.lua",
        "//third_party/lunit:lunit.lua",
    ],
    linkstatic = 1,
    deps = [
        ":lupb",
        "@lua//:liblua",
    ],
)

proto_library(
    name = "test_proto",
    testonly = 1,
    srcs = ["test.proto"],
    deps = ["//:timestamp_proto"],
)

lua_proto_library(
    name = "test_proto_lua",
    testonly = 1,
    deps = [":test_proto"],
)

lua_proto_library(
    name = "descriptor_proto_lua",
    deps = ["//:descriptor_proto"],
)

lua_proto_library(
    name = "empty_proto_lua",
    deps = ["//:empty_proto"],
)

lua_proto_library(
    name = "test_messages_proto3_proto_lua",
    testonly = 1,
    deps = ["//src/google/protobuf:test_messages_proto3_proto"],
)

lua_proto_library(
    name = "test_messages_proto2_proto_lua",
    testonly = 1,
    deps = ["//src/google/protobuf:test_messages_proto2_proto"],
)
