menuconfig BR2_PACKAGE_SCONESERVER
	bool "sconeserver"
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
	depends on !BR2_STATIC_LIBS # dlopen()
	select BR2_PACKAGE_PCRE
	select BR2_PACKAGE_ZLIB
	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 with dynamic library, C++, NPTL"
	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \
		|| BR2_STATIC_LIBS
