config 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
	select BR2_PACKAGE_LIBNL
	depends on BR2_TOOLCHAIN_HAS_THREADS # 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_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.

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

config BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT
	bool "Enable HS20"
	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_CLI
	bool "Install wpa_cli binary"
	help
	  Install wpa_cli command line utility

config BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO
	depends on !BR2_STATIC_LIBS
	bool "Install wpa_client shared library"
	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_DBUS_OLD
	bool "Enable support for old DBus control interface"
	depends on BR2_PACKAGE_DBUS
	help
	  Enable support for old DBus control interface
	  (fi.epitest.hostap.WPASupplicant).

config BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW
	bool "Enable support for new DBus control interface"
	depends on BR2_PACKAGE_DBUS
	help
	  Enable support for new DBus control interface (fi.w1.wpa_supplicant1).

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

endif
