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

rustc_binary("bin") {
  name = "wlancfg"
  with_unit_tests = true

  deps = [
    "//garnet/lib/wlan/fidl:fidl-rustc",
    "//garnet/lib/wlan/fidl:service-rustc",
    "//garnet/public/lib/fidl/rust/fidl:fidl-rustc",
    "//garnet/public/rust/crates/fuchsia-app",
    "//garnet/public/rust/crates/fuchsia-async:fuchsia-async-rustc",
    "//garnet/public/rust/crates/fuchsia-zircon:fuchsia-zircon-rustc",
    "//third_party/rust-crates/rustc_deps:failure",
    "//third_party/rust-crates/rustc_deps:futures",
    "//third_party/rust-crates/rustc_deps:serde",
    "//third_party/rust-crates/rustc_deps:serde_derive",
    "//third_party/rust-crates/rustc_deps:serde_json",
  ]
}

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

  binary = "rust_crates/wlancfg"

  meta = [
    {
      path = rebase_path("meta/sandbox")
      dest = "sandbox"
    },
  ]

  resources = [
    {
      path = rebase_path("config/default.json")
      dest = "default.json"
    },
  ]
}

package("config") {
  deprecated_system_image = true
  package_name = "wlancfg_config"
  resources = [
    {
      dest = "sysmgr/wlancfg.config"
      path = rebase_path("wlancfg.config")
    },
  ]
}
