diff options
author | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2016-10-21 01:54:32 +0200 |
---|---|---|
committer | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2016-10-21 01:54:32 +0200 |
commit | 799bd5efb70b0abe076353dedd6a1983f1b01951 (patch) | |
tree | e2d27deaff339c6abbad0df423f68387af72cb30 /bazel/cc_grpc_library.bzl | |
parent | 4dc64310bb4f4521fc025f1cb53bab309128c086 (diff) |
Adding shim for generating C++ protos.
Diffstat (limited to 'bazel/cc_grpc_library.bzl')
-rw-r--r-- | bazel/cc_grpc_library.bzl | 45 |
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 + ) |