blob: cce62964fdbeac6a7f7d424095631182612e2f1c [file] [log] [blame]
# Protobuf IO library.
load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix")
load("//build_defs:cpp_opts.bzl", "COPTS")
package(
default_visibility = ["//visibility:public"],
)
cc_library(
name = "io",
srcs = [
"coded_stream.cc",
"zero_copy_stream.cc",
"zero_copy_stream_impl.cc",
"zero_copy_stream_impl_lite.cc",
],
hdrs = [
"coded_stream.h",
"zero_copy_stream.h",
"zero_copy_stream_impl.h",
"zero_copy_stream_impl_lite.h",
],
copts = COPTS,
include_prefix = "google/protobuf/io",
deps = [
":io_win32",
"//src/google/protobuf:arena",
"//src/google/protobuf/stubs:lite",
"@com_google_absl//absl/strings:internal",
],
)
cc_library(
name = "zero_copy_sink",
srcs = ["zero_copy_sink.cc"],
hdrs = ["zero_copy_sink.h"],
copts = COPTS,
strip_include_prefix = "/src",
deps = [
":io",
"//src/google/protobuf/stubs",
],
)
cc_test(
name = "zero_copy_sink_test",
srcs = ["zero_copy_sink_test.cc"],
copts = COPTS,
deps = [
":zero_copy_sink",
"//src/google/protobuf/stubs",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "printer",
srcs = ["printer.cc"],
hdrs = ["printer.h"],
copts = COPTS,
include_prefix = "google/protobuf/io",
deps = [
":zero_copy_sink",
"//src/google/protobuf/stubs",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/cleanup",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/functional:function_ref",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/types:optional",
"@com_google_absl//absl/types:span",
"@com_google_absl//absl/types:variant",
],
)
cc_library(
name = "tokenizer",
srcs = [
"strtod.cc",
"tokenizer.cc",
],
hdrs = [
"strtod.h",
"tokenizer.h",
],
copts = COPTS,
include_prefix = "google/protobuf/io",
deps = [
":io",
"//src/google/protobuf/stubs",
],
)
cc_library(
name = "gzip_stream",
srcs = ["gzip_stream.cc"],
hdrs = ["gzip_stream.h"],
copts = COPTS,
include_prefix = "google/protobuf/io",
deps = [
":io",
"//src/google/protobuf/stubs",
] + select({
"//build_defs:config_msvc": [],
"//conditions:default": ["@zlib//:zlib"],
}),
)
cc_library(
name = "io_win32",
srcs = ["io_win32.cc"],
hdrs = ["io_win32.h"],
copts = COPTS,
include_prefix = "google/protobuf/io",
visibility = ["//pkg:__pkg__"],
deps = [
"//src/google/protobuf:arena",
"//src/google/protobuf/stubs:lite",
],
)
cc_test(
name = "io_test",
srcs = [
"coded_stream_unittest.cc",
"printer_death_test.cc",
"printer_unittest.cc",
"tokenizer_unittest.cc",
"zero_copy_stream_unittest.cc",
],
copts = COPTS,
data = [
"//src/google/protobuf:testdata",
],
deps = [
":gzip_stream",
":io",
"//:protobuf",
"//src/google/protobuf:test_util2",
"//src/google/protobuf/testing",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "win32_test",
srcs = ["io_win32_unittest.cc"],
tags = [
"manual",
"windows",
],
deps = [
"//:protobuf_lite",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
)
################################################################################
# Distribution packaging
################################################################################
pkg_files(
name = "dist_files",
srcs = glob(["**/*"]),
strip_prefix = strip_prefix.from_root(""),
visibility = ["//src:__pkg__"],
)
filegroup(
name = "test_srcs",
srcs = glob([
"*_test.cc",
"*unittest.cc",
]),
visibility = ["//pkg:__pkg__"],
)