diff options
author | Lasse Collin <lasse.collin@tukaani.org> | 2015-03-27 22:39:07 +0200 |
---|---|---|
committer | Lasse Collin <lasse.collin@tukaani.org> | 2015-03-27 22:39:07 +0200 |
commit | 4c544d2410903d38402221cb783ed85585b6a007 (patch) | |
tree | 21b27a8b98147a14b1dd2dba9b58001547a0bfb3 | |
parent | xz: size_t/uint32_t cleanup in options.c. (diff) | |
download | xz-4c544d2410903d38402221cb783ed85585b6a007.tar.xz |
Fix CPU core count detection on QNX.
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 <sys/syspage.h>.
Thanks to Ole André Vadla Ravnås.
-rw-r--r-- | m4/tuklib_cpucores.m4 | 15 |
1 files 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 <sys/types.h> #ifdef HAVE_SYS_PARAM_H # include <sys/param.h> |