# 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 = [
    ":packages",
    "drivers",
  ]
}

group("drivers") {
  deps = [
    "drivers/realtek/rtl88xx:rtl88xx_driver",
    "drivers/testing:wlanphy-testdev",
    "drivers/third_party/atheros/ath10k:ath10k_driver",
    "drivers/third_party/broadcom/brcmfmac:driver_module",
    "drivers/third_party/broadcom/brcmfmac:test_driver_module",
    "drivers/third_party/intel/iwlwifi:iwlwifi_driver",
    "drivers/wlan:wlan_driver",
    "drivers/wlanif:wlanif_driver",
    "drivers/wlanphy:wlanphy_driver",
    "testing/wlantap-driver:wlantap_driver",
  ]
}

# This target just includes the wlan-related packages, but not any sysmgr
# config that will cause them to actually be used. Product configs (and only
# product configs, rather than other group targets, to avoid conflicts) should
# also include an appropriate target under config/.
group("packages") {
  deps = [
    "wlancfg",
    "wlanstack",
    "//src/connectivity/location/regulatory_region",
  ]
}

group("tests") {
  testonly = true

  deps = [
    "drivers/realtek:tests",
    "drivers/testing/lib/sim-device/test:sim_device_test",
    "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_tests",
    "drivers/third_party/intel/iwlwifi:tests",
    "drivers/third_party/intel/iwlwifi/test:iwlwifi_test",
    "drivers/wlan:wlan_drivers_tests",
    "drivers/wlanif/test:wlanif_unittest",
    "drivers/wlanphy:wlanphy-unittests",
    "lib/bitfield/wlan-bitfield-tests",
    "lib/common/cpp:mcs_rate_lookup_tests",
    "lib/common/rust:wlan-common-tests",
    "lib/eapol:eapol-tests",
    "lib/frame_writer:wlan-frame-writer-tests",
    "lib/inspect:wlan-inspect-tests",
    "lib/mlme/cpp/tests:wlan_tests",
    "lib/mlme/rust:wlan-mlme-tests",
    "lib/mlme/rust/c-binding:wlan-mlme-c-tests",
    "lib/rsn:wlan-rsn-tests",
    "lib/sae:wlan-sae-tests",
    "lib/sme:wlan-sme-tests",
    "lib/span:wlan-span-tests",
    "lib/stash:wlan-stash-tests",
    "lib/statemachine:wlan-statemachine-tests",
    "lib/wep_deprecated:wep-deprecated-tests",
    "testing/ap-smoke-test:wlan-ap-smoke-test",
    "testing/client-smoke-test:wlan-smoke-test",
    "testing/client-smoke-test:wlan-smoke-test-tests",
    "testing/client-stress-test:wlan-stress-test",
    "testing/hw-sim:wlan-hw-sim-lib-tests",
    "testing/hw-sim/test:rate-selection-package",
    "testing/hw-sim/test:wlan-hw-sim-test",
    "testing/wlan-service-util:wlan-service-util-tests",
    "testing/wlantap-client",
    "testing/wlantap-driver:wlantap",
    "tools/wlantool:wlantool-tests",
    "wlancfg:wlancfg-tests",
    "wlancfg/tool:donut-tests",
    "wlanstack:wlanstack-tests",
  ]
}

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