config BR2_PACKAGE_CONNMAN
	bool "connman"
	select BR2_PACKAGE_DBUS
	select BR2_PACKAGE_LIBGLIB2
	select BR2_PACKAGE_IPTABLES
	depends on BR2_USE_WCHAR # libglib2
	depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2
	depends on BR2_USE_MMU # dbus, libglib2
	depends on !BR2_STATIC_LIBS # needs dlopen()
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	depends on !BR2_TOOLCHAIN_USES_MUSL # mixes userspace and kernel headers
	help
	  The Connection Manager (ConnMan) project provides a daemon
	  for managing internet connections within embedded devices
	  running the Linux operating system.

	  For more information, see https://01.org/connman

if BR2_PACKAGE_CONNMAN

config BR2_PACKAGE_CONNMAN_ETHERNET
	bool "enable Ethernet support"
	default y

config BR2_PACKAGE_CONNMAN_WIFI
	bool "enable WiFi support"
	select BR2_PACKAGE_WPA_SUPPLICANT # runtime
	select BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW # runtime
	help
	  Enable WiFi support (scan and static/dhcp interface
	  setup). ConnMan detects the start of wpa_supplicant
	  automatically.

config BR2_PACKAGE_CONNMAN_WISPR
	bool "enable WISPr support"
	select BR2_PACKAGE_GNUTLS
	help
	  Enable support for Wireless Internet Service Provider
	  roaming (WISPr). A RADIUS server is used to authenticate the
	  subscriber's credentials.

config BR2_PACKAGE_CONNMAN_BLUETOOTH
	bool "enable Bluetooth support"
	help
	  Enable Bluetooth support. The start of bluetoothd is
	  automatically detected and only a runtime dependency.

config BR2_PACKAGE_CONNMAN_LOOPBACK
	bool "enable loopback support"

config BR2_PACKAGE_CONNMAN_NEARD
	bool "enable neard support"
	select BR2_PACKAGE_NEARD
	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # neard

config BR2_PACKAGE_CONNMAN_OFONO
	bool "enable ofono support"
	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # ofono
	select BR2_PACKAGE_OFONO

config BR2_PACKAGE_CONNMAN_DEBUG
	bool "enable compiling with debugging information"

config BR2_PACKAGE_CONNMAN_CLIENT
	bool "enable command line client"
	select BR2_PACKAGE_READLINE

endif # BR2_PACKAGE_CONNMAN

comment "connman needs a glibc or uClibc toolchain w/ wchar, threads, resolver, dynamic library"
	depends on BR2_USE_MMU
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \
		|| BR2_TOOLCHAIN_USES_MUSL
