|
|
|
@ -2,7 +2,7 @@ |
|
|
|
|
|
|
|
|
|
load("//:bazel/generate_cc.bzl", "generate_cc") |
|
|
|
|
|
|
|
|
|
def cc_grpc_library(name, srcs, deps, proto_only, **kwargs): |
|
|
|
|
def cc_grpc_library(name, srcs, deps, proto_only, use_external = False, **kwargs): |
|
|
|
|
"""Generates C++ grpc classes from a .proto file. |
|
|
|
|
|
|
|
|
|
Assumes the generated classes will be used in cc_api_version = 2. |
|
|
|
@ -12,6 +12,8 @@ def cc_grpc_library(name, srcs, deps, proto_only, **kwargs): |
|
|
|
|
srcs: a single proto_library, which wraps the .proto files with services. |
|
|
|
|
deps: a list of C++ proto_library (or cc_proto_library) which provides |
|
|
|
|
the compiled code of any message that the services depend on. |
|
|
|
|
use_external: When True the grpc deps are prefixed with //external. This |
|
|
|
|
allows grpc to be used as a dependency in other bazel projects. |
|
|
|
|
**kwargs: rest of arguments, e.g., compatible_with and visibility. |
|
|
|
|
""" |
|
|
|
|
if len(srcs) > 1: |
|
|
|
@ -37,18 +39,31 @@ def cc_grpc_library(name, srcs, deps, proto_only, **kwargs): |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
if not proto_only: |
|
|
|
|
if use_external: |
|
|
|
|
# when this file is used by non-grpc projects |
|
|
|
|
plugin = "//external:grpc_cpp_plugin" |
|
|
|
|
else: |
|
|
|
|
plugin = "//:grpc_cpp_plugin" |
|
|
|
|
|
|
|
|
|
generate_cc( |
|
|
|
|
name = codegen_grpc_target, |
|
|
|
|
srcs = [proto_target], |
|
|
|
|
plugin = "//:grpc_cpp_plugin", |
|
|
|
|
plugin = plugin, |
|
|
|
|
**kwargs |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
if use_external: |
|
|
|
|
# when this file is used by non-grpc projects |
|
|
|
|
grpc_deps = ["//external:grpc++", "//external:grpc++_codegen_proto", |
|
|
|
|
"//external:protobuf"] |
|
|
|
|
else: |
|
|
|
|
grpc_deps = ["//:grpc++", "//:grpc++_codegen_proto", "//external:protobuf"] |
|
|
|
|
|
|
|
|
|
native.cc_library( |
|
|
|
|
name = name, |
|
|
|
|
srcs = [":" + codegen_grpc_target, ":" + codegen_target], |
|
|
|
|
hdrs = [":" + codegen_grpc_target, ":" + codegen_target], |
|
|
|
|
deps = deps + ["//:grpc++", "//:grpc++_codegen_proto", "//external:protobuf"], |
|
|
|
|
deps = deps + grpc_deps, |
|
|
|
|
**kwargs |
|
|
|
|
) |
|
|
|
|
else: |
|
|
|
|