# 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/go.chromium.org/luci/resultdb/proto/v1/"
  non_go_deps = [ ":resultdb_proto" ]
  sources = []

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