# 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/testing:wlanphy-testdev",
    "drivers/third_party/atheros/ath10k:ath10k_driver",
    "drivers/third_party/broadcom/brcmfmac:fuchsia_driver",
    "drivers/third_party/intel/iwlwifi:iwlwifi_driver",
    "drivers/wlan:wlan_driver",
    "drivers/wlanif:wlanif_driver",
    "drivers/wlanphy:wlanphy_driver",
    "testing/wlantap-driver:wlantap_driver",
  ]
  if (current_cpu == "x64") {
    deps += [ "drivers/third_party/broadcom/brcmfmac:test_fuchsia_driver" ]
  }
}

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

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

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

group("tests") {
  testonly = true

  deps = [
    "drivers/lib/components/cpp/test:tests",
    "drivers/lib/fuzzing:tests",
    "drivers/lib/log: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_host_tests",
    "drivers/third_party/broadcom/brcmfmac:brcmfmac_tests",
    "drivers/third_party/intel/iwlwifi:tests",
    "drivers/third_party/intel/iwlwifi/test:iwlwifi_test",
    "drivers/wlan:tests",
    "drivers/wlanif/test:tests",
    "drivers/wlanphy:tests",
    "lib/bitfield/wlan-bitfield-tests",
    "lib/common/cpp:ieee80211_codes_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/frame_writer:wlan-frame-writer-tests",
    "lib/ieee80211:ieee80211-tests",
    "lib/inspect:wlan-inspect-tests",
    "lib/mlme/cpp/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/hw-sim:wlan-hw-sim-lib-tests",
    "testing/hw-sim/test:tests",
    "testing/wlan-service-util:wlan-service-util-tests",
    "testing/wlantap-client",
    "testing/wlantap-driver:tests",
    "tools/wlantool:wlantool-tests",
    "wlancfg:tests",
    "wlancfg/tool:donut-tests",
    "wlandevicemonitor:tests",
    "wlanstack:wlanstack-tests",
  ]
}

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