From d9c26b1ffc0907483d2743b644999d9d505a01a8 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Wed, 27 Jan 2016 22:25:25 +0100 Subject: [PATCH] mongrel2: allow using uClibc but only on certain architectures mongrel2 uses the {get,make,swap}context functions: - With glibc, no problem, they are available on all supported architectures - With uClibc, they are available only on a subset of the architectures. Until now, only BR2_UCLIBC_VERSION_SNAPSHOT configurations were allowed to select mongrel2, but we are going to get rid of the uClibc snapshot version, and uClibc-ng is as capable as the uClibc snapshot. However, only certain architectures have the *context() functions. - With musl, there is no *context() support. Since this dependency is quite complicated, we introduce a BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS hidden boolean to encode which C libraries are supported. Also, listing the supported uClibc architectures would be too long in the comment, so we simply indicate that the package needs uClibc or glibc. Signed-off-by: Thomas Petazzoni Signed-off-by: Peter Korsgaard --- package/mongrel2/Config.in | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/package/mongrel2/Config.in b/package/mongrel2/Config.in index 1c7b4950b7..49dd6fd97d 100644 --- a/package/mongrel2/Config.in +++ b/package/mongrel2/Config.in @@ -1,10 +1,16 @@ -comment "mongrel2 needs a toolchain w/ C++, threads, wchar, dynamic library" - depends on BR2_UCLIBC_VERSION_SNAPSHOT || \ - BR2_TOOLCHAIN_USES_GLIBC || \ - BR2_arm +# 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_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_STATIC_LIBS || !BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS config BR2_PACKAGE_MONGREL2 bool "mongrel2" @@ -14,11 +20,7 @@ config BR2_PACKAGE_MONGREL2 depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq depends on BR2_USE_WCHAR # zeromq -> util-linux depends on !BR2_STATIC_LIBS # uses dlopen() - # {get,make,swap}context functions present in - # {e,}glibc and in uClibc's master branch. Source has arm workaround - depends on BR2_UCLIBC_VERSION_SNAPSHOT || \ - BR2_TOOLCHAIN_USES_GLIBC || \ - BR2_arm + 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 -- 2.30.2