# 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") {
  with_unit_tests = true
  edition = "2018"

  deps = [
    "//garnet/lib/rust/fidl_fuchsia_netstack_ext",
    "//garnet/lib/rust/fidl_zircon_ethernet_ext",
    "//garnet/public/fidl/fuchsia.devicesettings:fuchsia.devicesettings-rustc",
    "//garnet/public/fidl/fuchsia.netstack:fuchsia.netstack-rustc",
    "//garnet/public/lib/fidl/rust/fidl",
    "//garnet/public/rust/fdio",
    "//garnet/public/rust/fuchsia-app",
    "//garnet/public/rust/fuchsia-async",
    "//garnet/public/rust/fuchsia-vfs/fuchsia-vfs-watcher",
    "//garnet/public/rust/fuchsia-zircon",
    "//third_party/rust-crates/rustc_deps:failure",
    "//third_party/rust-crates/rustc_deps:futures-preview",
    "//third_party/rust-crates/rustc_deps:log",
    "//third_party/rust-crates/rustc_deps:serde",
    "//third_party/rust-crates/rustc_deps:serde_derive",
    "//third_party/rust-crates/rustc_deps:serde_json",
    "//third_party/rust-crates/rustc_deps:tempfile",
    "//zircon/public/fidl/zircon-ethernet:zircon-ethernet-rustc",
  ]

  name = "netcfg"
}

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

  binary = "rust_crates/netcfg"

  meta = [
    {
      path = rebase_path("meta/netcfg.cmx")
      dest = "netcfg.cmx"
    },
  ]

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

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

package("netcfg_tests") {
  testonly = true
  deps = [
    ":bin",
  ]
  tests = [
    {
      name = "netcfg_bin_test_rustc"
      dest = "netcfg_bin_test_rustc"
    },
  ]
}
