# 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/toolchain.gni")
import("//build/package.gni")

go_library("wlantool_lib") {
  name = "wlantool"
  source_dir = "wlantool"

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

go_binary("wlantool_bin") {
  output_name = "wlan"
  gopackage = "wlantool"

  deps = [ ":wlantool_lib" ]
}

package("wlantool") {
  deprecated_system_image = true

  deps = [
    ":wlantool_bin",
  ]

  binaries = [
    {
      name = "wlan"
    },
  ]
}
