# 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("//src/sys/build/components.gni")

rustc_binary("bin") {
  name = "network_settings_server"
  edition = "2018"
  deps = [
    "//src/lib/syslog/rust:syslog",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:rouille",
    "//third_party/rust_crates:serde",
    "//third_party/rust_crates:serde_json",
    "//third_party/rust_crates:thiserror",
  ]

  sources = [
    "src/main.rs",
    "src/net_settings_types.rs",
    "src/server.rs",
  ]
}

resource("network_settings_server_resources") {
  sources = [ "resources/index.html" ]
  outputs = [ "data/{{source_file_part}}" ]
}

fuchsia_package_with_single_component("network_settings_server") {
  manifest = "meta/network_settings_server.cmx"
  deps = [
    ":bin",
    ":network_settings_server_resources",
  ]
}
