# Copyright 2019 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/host.gni")

source_set("common") {
  sources = [ "netprotocol.c" ]
  public_deps = [ "//src/bringup/lib/netboot" ]
  configs += [
    # TODO(https://fxbug.dev/42136089): delete the below and fix compiler warnings
    "//build/config:Wno-conversion",
  ]
}

executable("netruncmd") {
  sources = [ "netruncmd.c" ]
  deps = [ ":common" ]
}

executable("netcp") {
  sources = [ "netcp.c" ]
  deps = [
    ":common",
    "//zircon/system/ulib/tftp",
  ]
  configs += [
    # TODO(https://fxbug.dev/42136089): delete the below and fix compiler warnings
    "//build/config:Wno-conversion",
  ]
}

executable("netls") {
  sources = [ "netls.c" ]
  deps = [ ":common" ]
}

executable("netaddr") {
  sources = [ "netaddr.c" ]
  deps = [ ":common" ]
}

install_host_tools("netprotocol") {
  deps = [
    ":netaddr",
    ":netcp",
    ":netls",
    ":netruncmd",
  ]
  outputs = [
    "netaddr",
    "netcp",
    "netls",
    "netruncmd",
  ]
}
