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:
Manjunath Kudlur 2016-02-25 08:50:50 -08:00
parent cc775f7ac1
commit f5c736352e

View File

@ -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=[],