# Copyright 2018 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/package.gni")
import("//build/rust/rustc_binary.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")

rustc_binary("bin") {
  name = "wlan"
  with_unit_tests = true
  edition = "2018"

  deps = [
    "//garnet/lib/wlan/fidl:fidl-rustc",
    "//garnet/lib/wlan/fidl:service-rustc",
    "//garnet/lib/wlan/fidl:sme-rustc",
    "//garnet/public/lib/fidl/rust/fidl",
    "//garnet/public/rust/fuchsia-async",
    "//garnet/public/rust/fuchsia-component",
    "//garnet/public/rust/fuchsia-zircon",
    "//sdk/fidl/fuchsia.wlan.common:fuchsia.wlan.common-rustc",
    "//sdk/fidl/fuchsia.wlan.minstrel:fuchsia.wlan.minstrel-rustc",
    "//src/connectivity/wlan/lib/common/rust:wlan-common",
    "//third_party/rust_crates:clap",
    "//third_party/rust_crates:failure",
    "//third_party/rust_crates:futures-preview",
    "//third_party/rust_crates:hex",
    "//third_party/rust_crates:itertools",
    "//third_party/rust_crates:structopt",
  ]
}

package("wlan") {
  deps = [
    ":bin",
  ]

  binaries = [
    {
      name = "wlan"
      dest = "wlan"
      shell = true
    },
  ]
}

test_package("wlan-tests") {
  deps = [
    ":bin_test",
  ]

  tests = [
    {
      name = "wlan_bin_test"
      environments = basic_envs
    },
  ]
}
