From 4c544d2410903d38402221cb783ed85585b6a007 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Fri, 27 Mar 2015 22:39:07 +0200 Subject: [PATCH] Fix CPU core count detection on QNX. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It tried to use sysctl() on QNX but - it broke the build because sysctl() needs -lsocket on QNX; - sysctl() doesn't work for detecting the core count on QNX even if it compiled. sysconf() works. An alternative would have been to use QNX-specific SYSPAGE_ENTRY(num_cpu) from . Thanks to Ole André Vadla Ravnås. --- m4/tuklib_cpucores.m4 | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/m4/tuklib_cpucores.m4 b/m4/tuklib_cpucores.m4 index 08e2cb0d..468c2db6 100644 --- a/m4/tuklib_cpucores.m4 +++ b/m4/tuklib_cpucores.m4 @@ -11,7 +11,7 @@ # Supported methods: # - GetSystemInfo(): Windows (including Cygwin) # - sysctl(): BSDs, OS/2 -# - sysconf(): GNU/Linux, Solaris, Tru64, IRIX, AIX, Cygwin (but +# - sysconf(): GNU/Linux, Solaris, Tru64, IRIX, AIX, QNX, Cygwin (but # GetSystemInfo() is used on Cygwin) # - pstat_getdynamic(): HP-UX # @@ -61,10 +61,17 @@ main(void) } ]])], [tuklib_cv_cpucores_method=cpuset], [ -# Look for sysctl() solution first, because on OS/2, both sysconf() -# and sysctl() pass the tests in this file, but only sysctl() -# actually works. +# On OS/2, both sysconf() and sysctl() pass the tests in this file, +# but only sysctl() works. On QNX it's the opposite: only sysconf() works +# (although it assumes that _POSIX_SOURCE, _XOPEN_SOURCE, and _POSIX_C_SOURCE +# are undefined or alternatively _QNX_SOURCE is defined). +# +# We test sysctl() first and intentionally break the sysctl() test on QNX +# so that sysctl() is never used on QNX. AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ +#ifdef __QNX__ +compile error +#endif #include #ifdef HAVE_SYS_PARAM_H # include