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

	  http://hostap.epitest.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"
	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_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_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
