# 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 = "go.fuchsia.dev/fuchsia/tools/whereiscl/lib"
  source_dir = "lib"
  deps = [ ":netutil" ]
}

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

go_library("netutil") {
  name = "go.fuchsia.dev/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 = "go.fuchsia.dev/fuchsia/tools/whereiscl/testhelper"
  source_dir = "testhelper"
}

go_test("whereiscl_test") {
  gopackages = [ "go.fuchsia.dev/fuchsia/tools/whereiscl/lib" ]
  deps = [
    ":lib",
    ":testhelper",
    "//third_party/golibs:github.com/google/go-cmp",
  ]
}
