aboutsummaryrefslogtreecommitdiff
path: root/m4/lc_cpucores.m4
diff options
context:
space:
mode:
Diffstat (limited to 'm4/lc_cpucores.m4')
-rw-r--r--m4/lc_cpucores.m457
1 files changed, 57 insertions, 0 deletions
diff --git a/m4/lc_cpucores.m4 b/m4/lc_cpucores.m4
new file mode 100644
index 00000000..5e4e02d7
--- /dev/null
+++ b/m4/lc_cpucores.m4
@@ -0,0 +1,57 @@
+dnl ###########################################################################
+dnl
+dnl lc_CPUCORES - Check how to find out the number of online CPU cores
+dnl
+dnl Check how to find out the number of available CPU cores in the system.
+dnl sysconf(_SC_NPROCESSORS_ONLN) works on most systems, except that BSDs
+dnl use sysctl().
+dnl
+dnl ###########################################################################
+dnl
+dnl Author: Lasse Collin
+dnl
+dnl This file has been put into the public domain.
+dnl You can do whatever you want with this file.
+dnl
+dnl ###########################################################################
+AC_DEFUN([lc_CPUCORES], [
+AC_MSG_CHECKING([how to detect the number of available CPU cores])
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <unistd.h>
+int
+main(void)
+{
+ long i;
+ i = sysconf(_SC_NPROCESSORS_ONLN);
+ return 0;
+}
+]])], [
+ AC_DEFINE([HAVE_NCPU_SYSCONF], [1],
+ [Define to 1 if the number of available CPU cores can be
+ detected with sysconf(_SC_NPROCESSORS_ONLN).])
+ AC_MSG_RESULT([sysconf])
+], [
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <sys/types.h>
+#ifdef HAVE_SYS_PARAM_H
+# include <sys/param.h>
+#endif
+#include <sys/sysctl.h>
+int
+main(void)
+{
+ int name[2] = { CTL_HW, HW_NCPU };
+ int cpus;
+ size_t cpus_size = sizeof(cpus);
+ sysctl(name, 2, &cpus, &cpus_size, NULL, NULL);
+ return 0;
+}
+]])], [
+ AC_DEFINE([HAVE_NCPU_SYSCTL], [1],
+ [Define to 1 if the number of available CPU cores can be
+ detected with sysctl().])
+ AC_MSG_RESULT([sysctl])
+], [
+ AC_MSG_RESULT([unknown])
+])])
+])dnl lc_CPUCORES