# 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.

declare_args() {
  # If true, replaces netstack with netstack3.
  #
  # When set as a GN argument, requires that sysmgr_config_warn_override be set
  # to true to avoid build failures. See that flag's documentation for details.
  use_netstack3 = false
}

group("config") {
  if (use_netstack3) {
    deps = [
      "netstack3",
      "netstack3/sysmgr:config",
    ]
  } else {
    deps = [
      "netstack",
      "netstack/sysmgr:config",
    ]
  }

  deps += [
    "dhcpv6/client",
    "dhcpv6/client/sysmgr:config",
    "dns:dns-resolver",
    "dns/sysmgr:config",
    "http-client",
    "http-client/sysmgr:config",
  ]
}

group("drivers") {
  deps = [ "drivers/network-device" ]
}

group("tests") {
  testonly = true
  deps = [
    "dhcp:tests",
    "dhcpd-cli:tests",
    "dhcpv6:tests",
    "dns:tests",
    "drivers:tests",
    "http-client:tests",
    "lib:tests",
    "mdns:tests",
    "net-cli:tests",
    "netcfg:tests",
    "netdump:tests",
    "netstack:tests",
    "netstack3:tests",
    "ping3:tests",
    "testing/netemul:tests",
    "tests",
    "tools:tests",
    "tun:tests",
  ]
}
