# Copyright 2019 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//third_party/protobuf/proto_library.gni")

# Compiles a protocol buffer into gRPC C++ interface.
#
# Example
#   cc_grpc_library("mylib") {
#     sources = [
#       "foo.proto",
#     ]
#   }
template("cc_grpc_library") {
  proto_library_name = "${target_name}_proto_lib"
  proto_library(proto_library_name) {
    forward_variables_from(invoker,
                           [
                             "defines",
                             "deps",
                             "sources",
                             "use_protobuf_full",
                             "import_dirs",
                           ])
    remove_configs = [ "//build/config/compiler:chromium_code" ]
    extra_configs = [
      "//build/config/compiler:no_chromium_code",
      "//third_party/grpc:grpc_config",
    ]
    generate_python = false
    generator_plugin_label = "//third_party/grpc:grpc_cpp_plugin"
    generator_plugin_suffix = ".grpc.pb"
  }

  # This group forces caller to depend on grpcpp, which is required when using
  # the compiled gRPC library.
  group(target_name) {
    public_deps = [
      ":${proto_library_name}",
      "//third_party/grpc:grpcpp",
    ]
  }
}
