# Copyright 2019 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_binary.gni")
import("//build/go/go_library.gni")
import("//build/go/go_test.gni")
import("//build/host.gni")

go_library("lib") {
  name = "fuchsia.googlesource.com/fuchsia/tools/whereiscl/lib"
  source_dir = "lib"
  deps = [
    ":netutil",
  ]
}

go_library("main") {
  name = "main"
  source_dir = "."
  deps = [
    ":lib",
  ]
}

go_library("netutil") {
  name = "fuchsia.googlesource.com/fuchsia/tools/whereiscl/netutil"
  source_dir = "netutil"
}

go_binary("whereiscl") {
  gopackage = "main"
  deps = [
    ":main",
  ]
}

install_host_tools("host") {
  deps = [
    ":whereiscl",
  ]
  outputs = [
    "whereiscl",
  ]
}

go_library("testhelper") {
  name = "fuchsia.googlesource.com/fuchsia/tools/whereiscl/testhelper"
  source_dir = "testhelper"
}

go_test("whereiscl_test") {
  gopackage = "fuchsia.googlesource.com/fuchsia/tools/whereiscl/lib"
  deps = [
    ":lib",
    ":testhelper",
    "//garnet/public/go/third_party:github.com/google/go-cmp",
  ]
}
