# 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") {
  public_deps = [
    "//src/connectivity/location/regulatory_region",
    "//src/connectivity/wlan/wlancfg",
    "//src/connectivity/wlan/wlanstack",
  ]
}

group("tests") {
  testonly = true

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

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