# Copyright 2020 The Fuchsia 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("//build/go/go_library.gni")
import("//third_party/protobuf/proto_library.gni")

_protos = [
  "common",
]

proto_library("resultdb_proto") {
  sources = []
  foreach(name, _protos) {
    sources += [ "${name}.proto" ]
  }

  import_dirs = [
    "//third_party/protobuf/src",
  ]
  generate_python = false
  generate_cc = false
  generate_go = true
}

go_library("resultdb_proto_go") {
  name = "go.chromium.org/luci/resultdb/proto/v1"
  source_dir = "$root_gen_dir/go-proto-gen/src/third_party/luci-go/resultdb/proto/v1"
  non_go_deps = [ ":resultdb_proto" ]
  sources = []

  foreach(name, _protos) {
    sources += [ "${name}.pb.go" ]
  }
  deps = [ "//third_party/golibs:github.com/golang/protobuf" ]
}
