menuconfig BR2_PACKAGE_WPA_SUPPLICANT
	bool "wpa_supplicant"
	depends on BR2_USE_MMU # fork()
	help
	  WPA supplicant for secure wireless networks

	  http://w1.fi/wpa_supplicant/

if BR2_PACKAGE_WPA_SUPPLICANT

config BR2_PACKAGE_WPA_SUPPLICANT_NL80211
	bool "Enable nl80211 support"
	default y
	depends on BR2_TOOLCHAIN_HAS_THREADS # libnl
	select BR2_PACKAGE_LIBNL
	help
	  Enable support for nl80211.  This is the current wireless
	  API for Linux, supported by all wireless drivers in vanilla
	  Linux, but may not be supported by some out-of-tree Linux
	  wireless drivers.  wpa_supplicant will still fall back to
	  using the Wireless Extensions (wext) API with these drivers.

	  If this option is disabled, then only the deprecated wext
	  API will be supported, with far less features.  Linux may
	  supports using wext with modern drivers using a
	  compatibility layer, but it must be enabled in the kernel
	  configuration.

comment "nl80211 support needs a toolchain w/ threads"
	depends on !BR2_TOOLCHAIN_HAS_THREADS

config BR2_PACKAGE_WPA_SUPPLICANT_WEXT
	bool "Enable wext (deprecated)"
	default y if !BR2_TOOLCHAIN_HAS_THREADS
	help
	  Enable support for wext.  This is the historic wireless API
	  for Linux, which is now deprecated and in maintenance-only in
	  the kernel.  It may still be required by out-of-tree drivers.

config BR2_PACKAGE_WPA_SUPPLICANT_WIRED
	bool "Enable wired support"
	select BR2_PACKAGE_WPA_SUPPLICANT_EAP
	help
	  Include the "wired" driver, so the internal IEEE 802.1x
	  supplicant can be used with Ethernet.  This also enables
	  support for MACSEC.

comment "wpa_supplicant will be useless without at least one driver"
	depends on !BR2_PACKAGE_WPA_SUPPLICANT_NL80211 && \
		!BR2_PACKAGE_WPA_SUPPLICANT_WEXT && \
		!BR2_PACKAGE_WPA_SUPPLICANT_WIRED

config BR2_PACKAGE_WPA_SUPPLICANT_IBSS_RSN
	bool "Enable IBSS RSN"
	depends on BR2_PACKAGE_WPA_SUPPLICANT_NL80211
	help
	  Enable support for RSN/WPA2 in Ad-Hoc mode.

config BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT
	bool "Enable AP mode"
	depends on BR2_PACKAGE_WPA_SUPPLICANT_NL80211
	help
	  With this option enabled, wpa_supplicant can act as an
	  access point much like hostapd does with a limited feature
	  set.  This links in parts of hostapd functionality into
	  wpa_supplicant, making it bigger but dispensing the need for
	  a separate hostapd binary in some applications hence being
	  smaller overall.  It also enables support for Wi-Fi Direct.

config BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY
	bool "Enable Wi-Fi Display"
	depends on BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT
	help
	  Enable support for Wi-Fi Display

config BR2_PACKAGE_WPA_SUPPLICANT_MESH_NETWORKING
	bool "Enable mesh networking"
	depends on BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT
	select BR2_PACKAGE_OPENSSL
	select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL
	help
	  Enable support for open and secured mesh networking
	  (IEEE 802.11s)

config BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN
	bool "Enable autoscan"
	help
	  Enable support for the autoscan feature (allow periodic scan)

config BR2_PACKAGE_WPA_SUPPLICANT_EAP
	bool "Enable EAP"
	help
	  Enable support for EAP, 802.1x/WPA-Enterprise and FILS.

config BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT
	bool "Enable HS20"
	select BR2_PACKAGE_WPA_SUPPLICANT_EAP
	help
	  Enable Hotspot 2.0 and IEEE 802.11u interworking
	  functionality.

config BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG
	bool "Enable syslog support"
	help
	  Enable support for sending debug messages to syslog.

config BR2_PACKAGE_WPA_SUPPLICANT_WPS
	bool "Enable WPS"
	help
	  Enable support for Wi-Fi Protected Setup (WPS).

config BR2_PACKAGE_WPA_SUPPLICANT_WPA3
	bool "Enable WPA3 support"
	select BR2_PACKAGE_OPENSSL
	select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL
	help
	  Enable WPA3 support including OWE, SAE, DPP

config BR2_PACKAGE_WPA_SUPPLICANT_CLI
	bool "Install wpa_cli binary"
	select BR2_PACKAGE_WPA_SUPPLICANT_CTRL_IFACE
	help
	  Install wpa_cli command line utility

config BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO
	bool "Install wpa_client shared library"
	depends on !BR2_STATIC_LIBS
	help
	  Install libwpa_client.so.

comment "wpa_client library needs a toolchain w/ dynamic library"
	depends on BR2_STATIC_LIBS

config BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE
	bool "Install wpa_passphrase binary"
	help
	  Install wpa_passphrase command line utility.

config BR2_PACKAGE_WPA_SUPPLICANT_CTRL_IFACE
	bool "Enable the Unix-socket control interface"
	help
	  Enable support for the Unix-socket-based API.

config BR2_PACKAGE_WPA_SUPPLICANT_DBUS
	bool "Enable support for the DBus control interface"
	depends on BR2_TOOLCHAIN_HAS_THREADS # dbus
	select BR2_PACKAGE_DBUS
	help
	  Enable support for the DBus control interface.

comment "dbus support needs a toolchain w/ threads"
	depends on !BR2_TOOLCHAIN_HAS_THREADS

config BR2_PACKAGE_WPA_SUPPLICANT_DBUS_INTROSPECTION
	bool "Introspection support"
	depends on BR2_PACKAGE_WPA_SUPPLICANT_DBUS
	help
	  Add introspection support for the DBus control interface.

endif
