# Copyright 2017 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/go/toolchain.gni")

go_binary("ifconfig") {
  gopackage = "netstack/ifconfig"

  deps = [
    ":ifconfig_lib"
  ]
}

go_library("ifconfig_lib") {
  name = "ifconfig_lib"

  deps = [
    "//garnet/go/src/netstack:netstack_lib",
    "//garnet/public/fidl/fuchsia.sys($go_toolchain)",
    "//garnet/public/fidl/fuchsia.netstack($go_toolchain)",
    "//garnet/public/fidl/fuchsia.wlan.service($go_toolchain)",
    "//garnet/public/lib/component/go/src/app",
  ]
}

go_test("netstack_ifconfig_test") {
  gopackage = "netstack/ifconfig"
  deps = [
    ":ifconfig_lib",
  ]
}
