blob: d5e5d182c2383899b5077d319aceb874c677c14a [file] [log] [blame] [edit]
# 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//rules:common_settings.bzl", "bool_flag")
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_python//python:defs.bzl", "py_binary")
load("//bazel/private:upb_proto_library_internal/copts.bzl", "upb_proto_library_copts")
load("//upb/bazel:amalgamation.bzl", "upb_amalgamation")
load("//upb/bazel:build_defs.bzl", "UPB_DEFAULT_COPTS")
package(default_applicable_licenses = ["//:license"])
licenses(["notice"])
exports_files(["LICENSE"])
exports_files(
[
"BUILD",
],
visibility = ["//upb/cmake:__pkg__"],
)
config_setting(
name = "windows",
constraint_values = ["@platforms//os:windows"],
visibility = [
"//hpb:__subpackages__",
"//hpb_generator:__subpackages__",
"//lua:__pkg__",
"//python:__pkg__",
"//upb:__subpackages__",
"//upb_generator:__subpackages__",
],
)
bool_flag(
name = "fasttable_enabled",
build_setting_default = False,
visibility = ["//bazel:__pkg__"],
)
config_setting(
name = "fasttable_enabled_setting",
flag_values = {"//upb:fasttable_enabled": "true"},
visibility = [
"//lua:__pkg__",
"//python:__pkg__",
"//upb:__subpackages__",
"//upb_generator:__subpackages__",
],
)
upb_proto_library_copts(
name = "upb_proto_library_copts",
copts = UPB_DEFAULT_COPTS,
visibility = ["//bazel:__pkg__"],
)
# Please update copy.bara.sky target = ":friends" if
# you make changes to this list.
package_group(
name = "friends",
packages = ["//..."],
)
package_group(
name = "friend_generators",
packages = ["//..."],
)
# Common support routines used by generated code. This library has no
# implementation, but depends on :upb and exposes a few more hdrs.
#
# This is public only because we have no way of visibility-limiting it to
# upb_c_proto_library() only. This interface is not stable and by using it you
# give up any backward compatibility guarantees.
cc_library(
name = "generated_code_support",
hdrs = ["generated_code_support.h"],
copts = UPB_DEFAULT_COPTS,
textual_hdrs = [
"//upb/port:inc",
],
visibility = [
"//pkg:__pkg__",
"//upb/reflection:__pkg__",
"//upb_generator:__subpackages__",
],
deps = [
"//upb/base",
"//upb/mem",
"//upb/message",
"//upb/message:internal",
"//upb/mini_descriptor",
"//upb/mini_table",
"//upb/wire",
] + select({
":fasttable_enabled_setting": [
"//upb/wire/decode_fast:field_parsers",
],
"//conditions:default": [],
}),
)
# Common support code for C++ generated code.
cc_library(
name = "generated_cpp_support",
copts = UPB_DEFAULT_COPTS,
textual_hdrs = [
"//upb/port:inc",
],
visibility = ["//hpb/bazel:__pkg__"],
)
# Amalgamation #################################################################
upb_amalgamation(
name = "gen_amalgamation",
outs = [
"upb.c",
"upb.h",
],
libs = [
":generated_code_support",
"//src/google/protobuf:descriptor_upb_c_proto",
"//src/google/protobuf:descriptor_upb_minitable_proto",
"//upb/base",
"//upb/base:internal",
"//upb/hash:hash",
"//upb/lex:lex",
"//upb/mem",
"//upb/mem:internal",
"//upb/message",
"//upb/message:compare",
"//upb/message:copy",
"//upb/message:internal",
"//upb/message:iterator",
"//upb/message:types",
"//upb/mini_descriptor",
"//upb/mini_descriptor:internal",
"//upb/mini_table",
"//upb/mini_table:internal",
"//upb/port",
"//upb/reflection",
"//upb/reflection:descriptor_upb_proto",
"//upb/reflection:internal",
"//upb/text:debug",
"//upb/text:internal",
"//upb/wire",
"//upb/wire:decoder",
"//upb/wire:eps_copy_input_stream",
"//upb/wire:reader",
"//upb/wire:reader_internal",
"//upb/wire:writer",
],
strip_import_prefix = ["src"],
visibility = ["//rust:__pkg__"],
)
cc_library(
name = "amalgamation",
srcs = ["upb.c"],
hdrs = ["upb.h"],
copts = UPB_DEFAULT_COPTS,
deps = ["//third_party/utf8_range"],
)
upb_amalgamation(
name = "gen_php_amalgamation",
outs = [
"php-upb.c",
"php-upb.h",
],
libs = [
":generated_code_support",
"//src/google/protobuf:descriptor_upb_c_proto",
"//src/google/protobuf:descriptor_upb_minitable_proto",
"//src/google/protobuf:descriptor_upb_reflection_proto",
"//upb/base",
"//upb/base:internal",
"//upb/hash:hash",
"//upb/json",
"//upb/lex:lex",
"//upb/mem",
"//upb/mem:internal",
"//upb/message",
"//upb/message:compare",
"//upb/message:copy",
"//upb/message:internal",
"//upb/message:iterator",
"//upb/message:types",
"//upb/mini_descriptor",
"//upb/mini_descriptor:internal",
"//upb/mini_table",
"//upb/mini_table:internal",
"//upb/port",
"//upb/reflection",
"//upb/reflection:descriptor_upb_proto",
"//upb/reflection:internal",
"//upb/wire",
"//upb/wire:decoder",
"//upb/wire:eps_copy_input_stream",
"//upb/wire:reader",
"//upb/wire:reader_internal",
"//upb/wire:writer",
],
prefix = "php-",
strip_import_prefix = ["src"],
visibility = ["@com_google_protobuf//php:__subpackages__"],
)
cc_library(
name = "php_amalgamation",
srcs = ["php-upb.c"],
hdrs = ["php-upb.h"],
copts = UPB_DEFAULT_COPTS,
deps = ["//third_party/utf8_range"],
)
upb_amalgamation(
name = "gen_ruby_amalgamation",
outs = [
"ruby-upb.c",
"ruby-upb.h",
],
libs = [
":generated_code_support",
"//src/google/protobuf:descriptor_upb_c_proto",
"//src/google/protobuf:descriptor_upb_minitable_proto",
"//upb/base",
"//upb/base:internal",
"//upb/hash:hash",
"//upb/json",
"//upb/lex:lex",
"//upb/mem",
"//upb/mem:internal",
"//upb/message",
"//upb/message:compare",
"//upb/message:copy",
"//upb/message:internal",
"//upb/message:iterator",
"//upb/message:types",
"//upb/mini_descriptor",
"//upb/mini_descriptor:internal",
"//upb/mini_table",
"//upb/mini_table:internal",
"//upb/port",
"//upb/reflection",
"//upb/reflection:descriptor_upb_proto",
"//upb/reflection:internal",
"//upb/util:def_to_proto",
"//upb/wire",
"//upb/wire:decoder",
"//upb/wire:eps_copy_input_stream",
"//upb/wire:reader",
"//upb/wire:reader_internal",
"//upb/wire:writer",
],
prefix = "ruby-",
strip_import_prefix = ["src"],
visibility = ["@com_google_protobuf//ruby:__subpackages__"],
)
cc_library(
name = "ruby_amalgamation",
srcs = ["ruby-upb.c"],
hdrs = ["ruby-upb.h"],
copts = UPB_DEFAULT_COPTS,
deps = ["//third_party/utf8_range"],
)
filegroup(
name = "source_files",
srcs = glob(
[
"**/*.h",
],
exclude = [
"**/conformance_upb.c",
"reflection/stage0/**/*",
],
),
visibility = [
"//python/dist:__pkg__",
"//upb/cmake:__pkg__",
],
)
filegroup(
name = "test_protos",
srcs = [
"//src/google/protobuf:test_messages_proto2.proto",
"//src/google/protobuf:test_messages_proto3.proto",
"//src/google/protobuf:well_known_type_protos",
"//upb/json:test_protos",
"//upb/message:test_protos",
"//upb/test:test_protos",
"//upb/util:test_protos",
],
visibility = ["//pkg:__pkg__"],
)
filegroup(
name = "test_srcs",
srcs = [
"//upb/json:test_srcs",
"//upb/mem:test_srcs",
"//upb/message:test_srcs",
"//upb/test:test_srcs",
"//upb/util:test_srcs",
"//upb/wire:test_srcs",
],
visibility = ["//pkg:__pkg__"],
)
cc_library(
name = "test_util",
testonly = True,
visibility = ["//pkg:__pkg__"],
deps = [
"//upb/test:fuzz_util",
"//upb/test:parse_text_proto",
"//upb/util:def_to_proto_test_lib",
"//upb/wire/test_util:field_types",
"//upb/wire/test_util:make_mini_table",
"//upb/wire/test_util:wire_message",
],
)