# Copyright 2019 The Chromium OS 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("//common-mk/pkg_config.gni")
import("//common-mk/proto_library.gni")

group("all") {
  deps = [
    ":wilco_dtc_go_grpc_protos",
    ":wilco_dtc_grpc_protos",
  ]
}

# Library with generated gRPC API definitions.
pkg_config("wilco_dtc_grpc_protos_exported_pkg_deps") {
  pkg_deps = [
    "grpc++",
    "protobuf",
  ]
}

# Generates proto and gRPC definitions.
proto_library("wilco_dtc_grpc_protos") {
  configs = [ ":wilco_dtc_grpc_protos_exported_pkg_deps" ]
  proto_in_dir = "."
  proto_out_dir = "include"
  gen_grpc = true
  sources = [
    "wilco_dtc.proto",
    "wilco_dtc_supportd.proto",
  ]
  standalone = true
}

# Generates go proto and gRPC definitions.
goproto_library("wilco_dtc_go_grpc_protos") {
  proto_in_dir = "."
  proto_out_dir = "go/src/chromiumos/wilco_dtc/"
  gen_grpc = true
  sources = [
    "wilco_dtc.proto",
    "wilco_dtc_supportd.proto",
  ]
}
