menuconfig BR2_PACKAGE_SCONESERVER
	bool "sconeserver"
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
	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_STATIC_LIBS # 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_USE_MMU
	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS

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_STATIC_LIBS # gpsd
	select BR2_PACKAGE_GPSD
	help
	  Location module for Sconeserver

comment "location support needs a toolchain w/ theads, dynamic library"
	depends on BR2_USE_MMU
	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBRARY

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++, NPTL"
	depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS_NPTL)
