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

_common_deps = [
  "dhcp:component",
  "dhcpv6/client:component",
  "dns:component",
  "http-client:component",
  "reachability:component",
]

fuchsia_component("component") {
  component_name = "network"
  manifest = "meta/network-default.cml"
  deps = _common_deps + [
           "netstack:component",
           "netcfg:component-advanced",
         ]
}

# TODO(https://fxbug.dev/85450): use subassembly-based product assembly to
# assemble the network realm from shards depending on the product, rather than
# creating two separate component manifests and relying on include shards to
# reduce duplication.
fuchsia_component("component-basic") {
  component_name = "network"
  manifest = "meta/network-basic.cml"
  deps = _common_deps + [
           "netstack:component",
           "netcfg:component-basic",
         ]
}

# TODO(https://fxbug.dev/85450): use subassembly-based product assembly to
# create this variant.
fuchsia_component("component-with-tracing") {
  component_name = "network"
  manifest = "meta/network-default.cml"
  deps = _common_deps + [
           "netstack:component-with-tracing",
           "netcfg:component-advanced",
         ]
}

fuchsia_package("network") {
  deps = [ ":component" ]
}

fuchsia_package("network-basic") {
  package_name = "network"
  deps = [ ":component-basic" ]
}

fuchsia_package("network-with-tracing") {
  package_name = "network"
  deps = [ ":component-with-tracing" ]
}

core_shard("virtualization-core-shard") {
  shard_file = "meta/virtualization.core_shard.cml"
}

# TODO(https://fxbug.dev/85821): Remove once out-of-tree users no longer
# reference v1 components.
fuchsia_package("network-legacy-deprecated") {
  deps = [
    "dns:component-legacy",
    "netstack:component-legacy",
    "netstack:component-with-fast-udp-legacy",
    "netstack3:component-legacy",
  ]
}

# TODO(https://fxbug.dev/85742): Remove this target once out-of-tree
# integration tests inject components from network-legacy-deprecated.
group("integration-test-deps") {
  deps = [ "netstack" ]
}

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

group("tests") {
  testonly = true
  deps = [
    # Ensure this target doesn't rot. This dependency can be removed if the
    # target becomes load bearing elsewhere.
    ":component-with-tracing",
    "dhcp:tests",
    "dhcpv6:tests",
    "dns:tests",
    "drivers:tests",
    "http-client:tests",
    "lib:tests",
    "mdns:tests",
    "net-cli:tests",
    "netcfg:tests",
    "netstack:tests",
    "netstack3:tests",
    "reachability:tests",
    "testing:tests",
    "tests",
    "tools:tests",
    "tun:tests",
  ]
}
