|
@@ -63,6 +63,10 @@ def _proto_gen_impl(ctx):
|
|
if ctx.attr.gen_py:
|
|
if ctx.attr.gen_py:
|
|
args += ["--python_out=" + ctx.var["GENDIR"] + "/" + gen_dir]
|
|
args += ["--python_out=" + ctx.var["GENDIR"] + "/" + gen_dir]
|
|
|
|
|
|
|
|
+ if ctx.executable.grpc_cpp_plugin:
|
|
|
|
+ args += ["--plugin=protoc-gen-grpc=" + ctx.executable.grpc_cpp_plugin.path]
|
|
|
|
+ args += ["--grpc_out=" + ctx.var["GENDIR"] + "/" + gen_dir]
|
|
|
|
+
|
|
if args:
|
|
if args:
|
|
ctx.action(
|
|
ctx.action(
|
|
inputs=srcs + deps,
|
|
inputs=srcs + deps,
|
|
@@ -90,6 +94,11 @@ _proto_gen = rule(
|
|
single_file = True,
|
|
single_file = True,
|
|
mandatory = True,
|
|
mandatory = True,
|
|
),
|
|
),
|
|
|
|
+ "grpc_cpp_plugin": attr.label(
|
|
|
|
+ cfg = HOST_CFG,
|
|
|
|
+ executable = True,
|
|
|
|
+ single_file = True,
|
|
|
|
+ ),
|
|
"gen_cc": attr.bool(),
|
|
"gen_cc": attr.bool(),
|
|
"gen_py": attr.bool(),
|
|
"gen_py": attr.bool(),
|
|
"outs": attr.output_list(),
|
|
"outs": attr.output_list(),
|
|
@@ -106,6 +115,7 @@ def cc_proto_library(
|
|
include=None,
|
|
include=None,
|
|
protoc="//google/protobuf:protoc",
|
|
protoc="//google/protobuf:protoc",
|
|
internal_bootstrap_hack=False,
|
|
internal_bootstrap_hack=False,
|
|
|
|
+ use_grpc_plugin=False,
|
|
default_runtime="//google/protobuf:protobuf",
|
|
default_runtime="//google/protobuf:protobuf",
|
|
**kargs):
|
|
**kargs):
|
|
"""Bazel rule to create a C++ protobuf library from proto source files
|
|
"""Bazel rule to create a C++ protobuf library from proto source files
|
|
@@ -126,6 +136,8 @@ def cc_proto_library(
|
|
for bootstraping. When it is set to True, no files will be generated.
|
|
for bootstraping. When it is set to True, no files will be generated.
|
|
The rule will simply be a provider for .proto files, so that other
|
|
The rule will simply be a provider for .proto files, so that other
|
|
cc_proto_library can depend on it.
|
|
cc_proto_library can depend on it.
|
|
|
|
+ use_grpc_plugin: a flag to indicate whether to call the grpc C++ plugin
|
|
|
|
+ when processing the proto files.
|
|
default_runtime: the implicitly default runtime which will be depended on by
|
|
default_runtime: the implicitly default runtime which will be depended on by
|
|
the generated cc_library target.
|
|
the generated cc_library target.
|
|
**kargs: other keyword arguments that are passed to cc_library.
|
|
**kargs: other keyword arguments that are passed to cc_library.
|
|
@@ -153,6 +165,10 @@ def cc_proto_library(
|
|
**kargs)
|
|
**kargs)
|
|
return
|
|
return
|
|
|
|
|
|
|
|
+ grpc_cpp_plugin = None
|
|
|
|
+ if use_grpc_plugin:
|
|
|
|
+ grpc_cpp_plugin = "//external:grpc_cpp_plugin"
|
|
|
|
+
|
|
outs = _CcOuts(srcs)
|
|
outs = _CcOuts(srcs)
|
|
_proto_gen(
|
|
_proto_gen(
|
|
name=name + "_genproto",
|
|
name=name + "_genproto",
|
|
@@ -160,6 +176,7 @@ def cc_proto_library(
|
|
deps=[s + "_genproto" for s in deps],
|
|
deps=[s + "_genproto" for s in deps],
|
|
includes=includes,
|
|
includes=includes,
|
|
protoc=protoc,
|
|
protoc=protoc,
|
|
|
|
+ grpc_cpp_plugin=grpc_cpp_plugin,
|
|
gen_cc=1,
|
|
gen_cc=1,
|
|
outs=outs,
|
|
outs=outs,
|
|
visibility=["//visibility:public"],
|
|
visibility=["//visibility:public"],
|