blob: f63ba005f20eaf25809fe53a7635dd6e615880d3 [file] [log] [blame]
# Copyright 2014 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# This is a quick and dirty rule to make Bazel compile itself. It
# only supports Java.
proto_filetype = [".proto"]
def cc_grpc_library(name, src):
basename = src[:-len(".proto")]
protoc_label = str(Label("//third_party/protobuf:protoc"))
cpp_plugin_label = str(Label("//third_party/grpc:cpp_plugin"))
native.genrule(
name = name + "_codegen",
srcs = [src],
tools = [protoc_label, cpp_plugin_label],
cmd = "\\\n".join([
"$(location " + protoc_label + ")",
" --plugin=protoc-gen-grpc=$(location " + cpp_plugin_label + ")",
" --cpp_out=$(GENDIR)",
" --grpc_out=$(GENDIR)",
" $(location " + src + ")",
]),
outs = [basename + ".grpc.pb.h", basename + ".grpc.pb.cc", basename + ".pb.cc", basename + ".pb.h"],
)
native.cc_library(
name = name,
srcs = [basename + ".grpc.pb.cc", basename + ".pb.cc"],
hdrs = [basename + ".grpc.pb.h", basename + ".pb.h"],
deps = [str(Label("//third_party/grpc:grpc++_unsecure"))],
includes = ["."],
)