From f5c736352ed453310438a9ffc5056cdd0c4b25b4 Mon Sep 17 00:00:00 2001 From: Manjunath Kudlur Date: Thu, 25 Feb 2016 08:50:50 -0800 Subject: 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}. --- protobuf.bzl | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/protobuf.bzl b/protobuf.bzl index 399cf624..e5af3339 100644 --- a/protobuf.bzl +++ b/protobuf.bzl @@ -15,9 +15,13 @@ def _GenDir(ctx): return _GetPath(ctx, ctx.attr.includes[0]) return _GetPath(ctx, ctx.label.package + '/' + ctx.attr.includes[0]) -def _CcOuts(srcs): - return [s[:-len(".proto")] + ".pb.h" for s in srcs] + \ - [s[:-len(".proto")] + ".pb.cc" for s in srcs] +def _CcOuts(srcs, use_grpc_plugin=False): + ret = [s[:-len(".proto")] + ".pb.h" 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): return [s[:-len(".proto")] + "_pb2.py" for s in srcs] @@ -169,7 +173,8 @@ def cc_proto_library( if use_grpc_plugin: grpc_cpp_plugin = "//external:grpc_cpp_plugin" - outs = _CcOuts(srcs) + outs = _CcOuts(srcs, use_grpc_plugin) + _proto_gen( name=name + "_genproto", srcs=srcs, @@ -184,6 +189,8 @@ def cc_proto_library( if default_runtime and not default_runtime in cc_libs: cc_libs += [default_runtime] + if use_grpc_plugin: + cc_libs += ["//external:grpc_lib"] native.cc_library( name=name, @@ -192,7 +199,6 @@ def cc_proto_library( includes=includes, **kargs) - def internal_copied_filegroup( name, srcs, @@ -222,7 +228,6 @@ def internal_copied_filegroup( srcs=outs, **kargs) - def py_proto_library( name, srcs=[], -- cgit v1.2.3