blob: 1ac3cd69e6998969302d5f7cce26792f2f30a649 [file] [log] [blame]
# 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("//bazel/toolchains:proto_lang_toolchain.bzl", "proto_lang_toolchain")
package(default_applicable_licenses = ["//:license"])
licenses(["notice"])
cc_binary(
name = "protoc-gen-hpb",
srcs = [
"protoc-gen-hpb.cc",
],
malloc = "@bazel_tools//tools/cpp:malloc",
visibility = ["//visibility:public"],
deps = [
":generator",
"//src/google/protobuf/compiler:plugin",
"@abseil-cpp//absl/flags:flag",
],
)
proto_lang_toolchain(
name = "toolchain",
command_line = select({
"//hpb:hpb_backend_upb": "--hpb_out=$(OUT)",
"//hpb:hpb_backend_cpp": "--hpb_out=backend=cpp:$(OUT)",
}),
output_files = "multiple",
plugin = ":protoc-gen-hpb",
plugin_format_flag = "--plugin=protoc-gen-hpb=%s",
progress_message = "Generating hpb protocol buffers",
runtime = "//hpb:generated_hpb_support",
visibility = ["//hpb/bazel:__pkg__"],
)
cc_library(
name = "generator",
srcs = [
"gen_accessors.cc",
"gen_accessors.h",
"gen_enums.cc",
"gen_enums.h",
"gen_extensions.cc",
"gen_extensions.h",
"gen_messages.cc",
"gen_messages.h",
"gen_repeated_fields.cc",
"gen_repeated_fields.h",
"generator.cc",
],
hdrs = [
"generator.h",
],
visibility = ["//visibility:private"],
deps = [
":context",
":gen_utils",
":keywords",
":names",
"//src/google/protobuf",
"//src/google/protobuf/compiler:code_generator",
"//src/google/protobuf/compiler:code_generator_lite",
"//src/google/protobuf/compiler:plugin",
"//upb_generator:common",
"//upb_generator:file_layout",
"//upb_generator/c:names",
"//upb_generator/minitable:names",
"@abseil-cpp//absl/container:flat_hash_map",
"@abseil-cpp//absl/container:flat_hash_set",
"@abseil-cpp//absl/numeric:bits",
"@abseil-cpp//absl/strings",
],
)
cc_library(
name = "keywords",
srcs = ["keywords.cc"],
hdrs = ["keywords.h"],
visibility = ["//visibility:private"],
deps = [
"@abseil-cpp//absl/container:flat_hash_set",
"@abseil-cpp//absl/strings",
],
)
cc_library(
name = "gen_utils",
srcs = ["gen_utils.cc"],
hdrs = ["gen_utils.h"],
visibility = ["//visibility:public"],
deps = [
"//src/google/protobuf",
"//src/google/protobuf/compiler:code_generator",
"@abseil-cpp//absl/log:absl_log",
"@abseil-cpp//absl/strings",
],
)
cc_library(
name = "names",
srcs = ["names.cc"],
hdrs = ["names.h"],
visibility = ["//visibility:private"],
deps = [
":context",
":keywords",
"//src/google/protobuf",
"//src/google/protobuf/compiler:code_generator",
"@abseil-cpp//absl/log:absl_check",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:string_view",
],
)
cc_library(
name = "context",
hdrs = ["context.h"],
deps = [
"//src/google/protobuf",
"//src/google/protobuf/io",
"//src/google/protobuf/io:printer",
"//upb/port",
"//upb/reflection",
"//upb_generator/common:cpp_to_upb_def",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:string_view",
"@abseil-cpp//absl/types:span",
],
)