# 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, dynamic library"
	depends on !BR2_INSTALL_LIBSTDCPP || \
		!BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \
		!BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS

config BR2_PACKAGE_MONGREL2
	bool "mongrel2"
	depends on BR2_INSTALL_LIBSTDCPP # zeromq
	depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq
	depends on !BR2_STATIC_LIBS # uses dlopen()
	depends on BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS
	select BR2_PACKAGE_SQLITE
	select BR2_PACKAGE_ZEROMQ
	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
