# mongrel2 uses {get,make,swap}context() functions, which are
# available in glibc for all architectures and in uClibc only for a
# subset of the architectures
config BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS
	bool
	default y if BR2_TOOLCHAIN_USES_GLIBC
	default y if BR2_TOOLCHAIN_USES_UCLIBC && \
		(BR2_arm || BR2_armeb || BR2_i386 || BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || BR2_sparc || BR2_x86_64)

comment "mongrel2 needs a uClibc or glibc toolchain w/ C++, threads, wchar, dynamic library"
	depends on !BR2_INSTALL_LIBSTDCPP || \
		!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \
		BR2_STATIC_LIBS || !BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS

config BR2_PACKAGE_MONGREL2
	bool "mongrel2"
	select BR2_PACKAGE_SQLITE
	select BR2_PACKAGE_ZEROMQ
	depends on BR2_INSTALL_LIBSTDCPP # zeromq
	depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq
	depends on BR2_USE_WCHAR # zeromq -> util-linux
	depends on !BR2_STATIC_LIBS # uses dlopen()
	depends on BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS
	help
	  Mongrel2 is an application, language, and network architecture
	  agnostic web server that focuses on web applications using
	  modern browser technologies.

	  Mongrel2 supports 17 languages and platforms, HTTP, Flash
	  sockets, WebSockets, Long Polling, and many ways to deploy
	  and hack on it.

	  http://www.mongrel2.org
