aboutsummaryrefslogtreecommitdiffhomepage
path: root/bazel/cc_grpc_library.bzl
diff options
context:
space:
mode:
authorGravatar Nicolas "Pixel" Noble <pixel@nobis-crew.org>2016-10-21 01:54:32 +0200
committerGravatar Nicolas "Pixel" Noble <pixel@nobis-crew.org>2016-10-21 01:54:32 +0200
commit799bd5efb70b0abe076353dedd6a1983f1b01951 (patch)
treee2d27deaff339c6abbad0df423f68387af72cb30 /bazel/cc_grpc_library.bzl
parent4dc64310bb4f4521fc025f1cb53bab309128c086 (diff)
Adding shim for generating C++ protos.
Diffstat (limited to 'bazel/cc_grpc_library.bzl')
-rw-r--r--bazel/cc_grpc_library.bzl45
1 files changed, 36 insertions, 9 deletions
diff --git a/bazel/cc_grpc_library.bzl b/bazel/cc_grpc_library.bzl
index 8e6f9ebb21..e1dd27b0c3 100644
--- a/bazel/cc_grpc_library.bzl
+++ b/bazel/cc_grpc_library.bzl
@@ -2,7 +2,7 @@
load("//:bazel/generate_cc.bzl", "generate_cc")
-def cc_grpc_library(name, srcs, deps, **kwargs):
+def cc_grpc_library(name, srcs, deps, proto_only, **kwargs):
"""Generates C++ grpc classes from a .proto file.
Assumes the generated classes will be used in cc_api_version = 2.
@@ -17,19 +17,46 @@ def cc_grpc_library(name, srcs, deps, **kwargs):
if len(srcs) > 1:
fail("Only one srcs value supported", "srcs")
+ proto_target = "_" + name + "_only"
codegen_target = "_" + name + "_codegen"
+ codegen_grpc_target = "_" + name + "_grpc_codegen"
+ proto_deps = ["_" + dep + "_only" for dep in deps if dep.find(':') == -1]
+ proto_deps += [dep.split(':')[0] + ':' + "_" + dep.split(':')[1] + "_only" for dep in deps if dep.find(':') != -1]
- generate_cc(
- name = codegen_target,
+ native.proto_library(
+ name = proto_target,
srcs = srcs,
- plugin = "//external:grpc_cpp_plugin",
+ deps = proto_deps,
**kwargs
)
- native.cc_library(
- name = name,
- srcs = [":" + codegen_target],
- hdrs = [":" + codegen_target],
- deps = deps + ["//external:grpc++"],
+ generate_cc(
+ name = codegen_target,
+ srcs = [proto_target],
**kwargs
)
+
+ if not proto_only:
+ generate_cc(
+ name = codegen_grpc_target,
+ srcs = [proto_target],
+ plugin = "//:grpc_cpp_plugin",
+ **kwargs
+ )
+
+ if not proto_only:
+ 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"],
+ **kwargs
+ )
+ else:
+ native.cc_library(
+ name = name,
+ srcs = [":" + codegen_target],
+ hdrs = [":" + codegen_target],
+ deps = deps + ["//external:protobuf"],
+ **kwargs
+ )