Fixed grpc C++ plugin support.
grpc C++ plugin generates additional files, namely .grpc.pb.cc and .grpc.pb.h. Adding these files to the outs of the _proto_gen rule, so dependents don't complain about undeclared inclusions. Also, compiling the .grpc.pb.cc requires additional header files from the grpc library, so added //external:grpc_lib to the deps of the cc_library. Clients are expected to declare that in their bazel WORKSPACE, pointing it to @grpc//:grpc++{_unsecure}.
This commit is contained in:
parent
cc775f7ac1
commit
f5c736352e
17
protobuf.bzl
17
protobuf.bzl
@ -15,9 +15,13 @@ def _GenDir(ctx):
|
|||||||
return _GetPath(ctx, ctx.attr.includes[0])
|
return _GetPath(ctx, ctx.attr.includes[0])
|
||||||
return _GetPath(ctx, ctx.label.package + '/' + ctx.attr.includes[0])
|
return _GetPath(ctx, ctx.label.package + '/' + ctx.attr.includes[0])
|
||||||
|
|
||||||
def _CcOuts(srcs):
|
def _CcOuts(srcs, use_grpc_plugin=False):
|
||||||
return [s[:-len(".proto")] + ".pb.h" for s in srcs] + \
|
ret = [s[:-len(".proto")] + ".pb.h" for s in srcs] + \
|
||||||
[s[:-len(".proto")] + ".pb.cc" for s in srcs]
|
[s[:-len(".proto")] + ".pb.cc" for s in srcs]
|
||||||
|
if use_grpc_plugin:
|
||||||
|
ret += [s[:-len(".proto")] + ".grpc.pb.h" for s in srcs] + \
|
||||||
|
[s[:-len(".proto")] + ".grpc.pb.cc" for s in srcs]
|
||||||
|
return ret
|
||||||
|
|
||||||
def _PyOuts(srcs):
|
def _PyOuts(srcs):
|
||||||
return [s[:-len(".proto")] + "_pb2.py" for s in srcs]
|
return [s[:-len(".proto")] + "_pb2.py" for s in srcs]
|
||||||
@ -169,7 +173,8 @@ def cc_proto_library(
|
|||||||
if use_grpc_plugin:
|
if use_grpc_plugin:
|
||||||
grpc_cpp_plugin = "//external:grpc_cpp_plugin"
|
grpc_cpp_plugin = "//external:grpc_cpp_plugin"
|
||||||
|
|
||||||
outs = _CcOuts(srcs)
|
outs = _CcOuts(srcs, use_grpc_plugin)
|
||||||
|
|
||||||
_proto_gen(
|
_proto_gen(
|
||||||
name=name + "_genproto",
|
name=name + "_genproto",
|
||||||
srcs=srcs,
|
srcs=srcs,
|
||||||
@ -184,6 +189,8 @@ def cc_proto_library(
|
|||||||
|
|
||||||
if default_runtime and not default_runtime in cc_libs:
|
if default_runtime and not default_runtime in cc_libs:
|
||||||
cc_libs += [default_runtime]
|
cc_libs += [default_runtime]
|
||||||
|
if use_grpc_plugin:
|
||||||
|
cc_libs += ["//external:grpc_lib"]
|
||||||
|
|
||||||
native.cc_library(
|
native.cc_library(
|
||||||
name=name,
|
name=name,
|
||||||
@ -192,7 +199,6 @@ def cc_proto_library(
|
|||||||
includes=includes,
|
includes=includes,
|
||||||
**kargs)
|
**kargs)
|
||||||
|
|
||||||
|
|
||||||
def internal_copied_filegroup(
|
def internal_copied_filegroup(
|
||||||
name,
|
name,
|
||||||
srcs,
|
srcs,
|
||||||
@ -222,7 +228,6 @@ def internal_copied_filegroup(
|
|||||||
srcs=outs,
|
srcs=outs,
|
||||||
**kargs)
|
**kargs)
|
||||||
|
|
||||||
|
|
||||||
def py_proto_library(
|
def py_proto_library(
|
||||||
name,
|
name,
|
||||||
srcs=[],
|
srcs=[],
|
||||||
|
Loading…
Reference in New Issue
Block a user