# 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("@rules_cc//cc:cc_binary.bzl", "cc_binary")
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")
load("//bazel:proto_library.bzl", "proto_library")
load(
    "//lua:lua_proto_library.bzl",
    "lua_proto_library",
)
load(
    "//upb/bazel:copts.bzl",
    "UPB_DEFAULT_COPTS",
    "UPB_DEFAULT_CPPOPTS",
    "UPB_DEFAULT_FEATURES",
)

licenses(["notice"])

cc_library(
    name = "lupb",
    srcs = [
        "def.c",
        "msg.c",
        "upb.c",
    ],
    hdrs = [
        "upb.h",
    ],
    copts = UPB_DEFAULT_COPTS + ["-Wno-tautological-constant-out-of-range-compare"],
    features = UPB_DEFAULT_FEATURES,
    visibility = ["//visibility:public"],
    deps = [
        "//upb/json",
        "//upb/message",
        "//upb/port",
        "//upb/reflection",
        "//upb/text",
        "@lua//:liblua",
    ],
)

cc_binary(
    name = "protoc-gen-lua",
    srcs = ["upbc.cc"],
    copts = UPB_DEFAULT_CPPOPTS,
    features = UPB_DEFAULT_FEATURES,
    visibility = ["//visibility:public"],
    deps = [
        "//src/google/protobuf",
        "//src/google/protobuf/compiler:code_generator",
        "//src/google/protobuf/io:printer",
        "@abseil-cpp//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",
    ],
    features = UPB_DEFAULT_FEATURES,
    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"],
)
