# 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" ]
}

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

executable("netcp") {
  sources = [ "netcp.c" ]
  deps = [
    ":common",
    "//zircon/public/lib/tftp",
  ]
}

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",
  ]
}
