# 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" ]
  deps = [ "//zircon/system/public" ]
  configs += [
    # TODO(fxbug.dev/58162): 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/public/lib/tftp",
  ]
  configs += [
    # TODO(fxbug.dev/58162): 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",
  ]
}
