menuconfig BR2_PACKAGE_SCONESERVER
	bool "sconeserver"
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_TOOLCHAIN_HAS_THREADS
	# pthread_setschedprio needs NPTL
	depends on !BR2_PTHREADS && !BR2_PTHREADS_OLD
	# no NPTL for these archs
	depends on !BR2_avr32 && !BR2_xtensa && !BR2_arc
	select BR2_PACKAGE_PCRE
	help
	  Sconeserver is a modular, object-orientated and extremely versatile
	  network server framework for GNU/Linux and UNIX-like platforms.

	  http://www.sconemad.com/sconeserver/

if BR2_PACKAGE_SCONESERVER

comment "Sconeserver modules"

config BR2_PACKAGE_SCONESERVER_EXAMPLES
	bool "examples"
	help
	  Example modules for Sconeserver

config BR2_PACKAGE_SCONESERVER_HTTP_SCONESITE
	bool "http::sconesite"
	select BR2_PACKAGE_LIBXML2
	help
	  http::sconesite module for Sconeserver

config BR2_PACKAGE_SCONESERVER_HTTP_SCONESITE_IMAGE
	bool "http::sconesite::image"
	depends on BR2_PACKAGE_SCONESERVER_HTTP_SCONESITE
	depends on BR2_USE_MMU # imagemagick
	select BR2_PACKAGE_IMAGEMAGICK
	help
	  http::sconesite::image module for Sconeserver

config BR2_PACKAGE_SCONESERVER_MYSQL
	bool "mysql"
	depends on BR2_USE_MMU # mysql
	select BR2_PACKAGE_MYSQL
	help
	  MySQL module for Sconeserver

config BR2_PACKAGE_SCONESERVER_BLUETOOTH
	bool "bluetooth"
	depends on BR2_USE_WCHAR # bluez->libglib2
	depends on BR2_USE_MMU # bluez->dbus
	depends on BR2_TOOLCHAIN_HAS_THREADS # bluez->dbus, bluez->libglib2
	depends on !BR2_avr32 # bluez_utils
	depends on !BR2_PREFER_STATIC_LIB # bluez_utils
	select BR2_PACKAGE_BLUEZ_UTILS
	help
	  Bluetooth module for Sconeserver

comment "bluetooth support needs a toolchain w/ wchar, threads, dynamic library"
	depends on !BR2_avr32 && BR2_USE_MMU
	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_PREFER_STATIC_LIB

config BR2_PACKAGE_SCONESERVER_RSS
	bool "rss"
	select BR2_PACKAGE_LIBXML2
	help
	  RSS module for Sconeserver

config BR2_PACKAGE_SCONESERVER_LOCATION
	bool "location"
	depends on BR2_USE_MMU # gpsd
	depends on BR2_TOOLCHAIN_HAS_THREADS # gpsd
	depends on !BR2_microblaze # gpsd
	select BR2_PACKAGE_GPSD
	help
	  Location module for Sconeserver

config BR2_PACKAGE_SCONESERVER_LETTUCE
	bool "lettuce"
	help
	  Sconeserver module for Lettuce embedded automation platform

	  http://www.sconemad.com/lettuce/

config BR2_PACKAGE_SCONESERVER_MATHS
	bool "maths"
	select BR2_PACKAGE_MPFR
	help
	  Mathematics module for Sconeserver

config BR2_PACKAGE_SCONESERVER_TESTBUILDER
	bool "testbuilder"
	help
	  Testbuilder module for Sconeserver

config BR2_PACKAGE_SCONESERVER_UI
	bool "ui"
	depends on BR2_PACKAGE_XORG7
	select BR2_PACKAGE_XLIB_LIBX11
	help
	  UI module for Sconeserver

comment "ui module requires X.org"
	depends on !BR2_PACKAGE_XORG7

endif # BR2_PACKAGE_SCONESERVER

comment "sconeserver needs a toolchain w/ C++, threads"
	depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS)
	depends on !BR2_PTHREADS && !BR2_PTHREADS_OLD
	depends on !BR2_avr32 && !BR2_xtensa && !BR2_arc
