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

group("wlan") {
  testonly = true
  deps = [
    ":drivers",
    ":packages",
  ]
}

group("drivers") {
  deps = [
    "drivers/third_party/broadcom/brcmfmac:fuchsia_driver",
    "drivers/wlanif:wlanif_driver",
    "drivers/wlanphy:wlanphy_driver",
    "drivers/wlansoftmac:wlansoftmac_driver",
    "testing/wlantap-driver:wlantap_driver",
    "tests/helpers/testcontroller-driver:testcontroller_driver",
  ]
}

group("_packages_common") {
  deps = [
    "wlancfg",
    "//src/connectivity/location/regulatory_region",
  ]
}

group("packages") {
  deps = [
    ":_packages_common",
    "wlandevicemonitor:wlandevicemonitor",
  ]
}

group("packages-legacy-privacy") {
  deps = [
    ":_packages_common",
    "wlandevicemonitor:wlandevicemonitor-legacy-privacy",
  ]
}

group("tests") {
  testonly = true

  deps = [
    "drivers/lib/components/cpp/test:tests",
    "drivers/lib/fidl-bridge/cpp/test:fidl_bridge_test",
    "drivers/lib/fuzzing:tests",
    "drivers/lib/log:tests",
    "drivers/lib/timer/cpp/test:tests",
    "drivers/testing/lib/sim-env/test:wlan-sim-env-test",
    "drivers/testing/lib/sim-fake-ap/test:wlan-sim-fake-ap-test",
    "drivers/third_party/broadcom/brcmfmac:brcmfmac_host_tests",
    "drivers/third_party/broadcom/brcmfmac:brcmfmac_tests",
    "drivers/wlanif/test:tests",
    "drivers/wlanphy:tests",
    "drivers/wlansoftmac:tests",
    "drivers/wlansoftmac/rust_driver:wlansoftmac-rust-tests",
    "lib/bitfield/wlan-bitfield-tests",
    "lib/common/cpp:mcs_rate_lookup_tests",
    "lib/common/cpp:wlan_cpp_bitfield_tests",
    "lib/common/rust:wlan-common-tests",
    "lib/eapol:eapol-tests",
    "lib/ffi-transport:tests",
    "lib/fidl-ext:wlan-fidl-ext-tests",
    "lib/frame_writer:wlan-frame-writer-tests",
    "lib/ieee80211:ieee80211-tests",
    "lib/ieee80211-testutils:ieee80211-testutils-tests",
    "lib/mlme/fullmac:wlan-fullmac-mlme-tests",
    "lib/mlme/fullmac/c-binding:wlan-fullmac-mlme-c-tests",
    "lib/mlme/rust:wlan-mlme-tests",
    "lib/rsn:wlan-rsn-tests",
    "lib/sae:wlan-sae-tests",
    "lib/sme:wlan-sme-tests",
    "lib/stash:wlan-stash-tests",
    "lib/statemachine:wlan-statemachine-tests",
    "lib/telemetry:wlan-telemetry-tests",
    "lib/trace:wlan-trace-tests",
    "lib/wep_deprecated:wep-deprecated-tests",
    "testing/hw-sim:wlan-hw-sim-lib-tests",
    "testing/hw-sim/test:wlan-hw-sim-component-tests",
    "tests",
    "tools/wlantool:wlantool-tests",
    "wlancfg:tests",
    "wlancfg/tool:donut-tests",
    "wlandevicemonitor:tests",
    "wlanix:wlanix-tests",
  ]
}

group("tools") {
  deps = [ "wlancfg/tool:donut" ]
}

# (https://fxbug.dev/42078127) Remove after transition that includes WLAN in assembly for most builds.
group("wlan-bundle-for-transition") {
  deps = []
}
