diff options
Diffstat (limited to 'm4/ax_count_cpus.m4')
-rw-r--r-- | m4/ax_count_cpus.m4 | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/m4/ax_count_cpus.m4 b/m4/ax_count_cpus.m4 index 2f5ba70a..5db89255 100644 --- a/m4/ax_count_cpus.m4 +++ b/m4/ax_count_cpus.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # =========================================================================== | 1 | # =========================================================================== |
2 | # http://www.gnu.org/software/autoconf-archive/ax_count_cpus.html | 2 | # https://www.gnu.org/software/autoconf-archive/ax_count_cpus.html |
3 | # =========================================================================== | 3 | # =========================================================================== |
4 | # | 4 | # |
5 | # SYNOPSIS | 5 | # SYNOPSIS |
@@ -28,7 +28,7 @@ | |||
28 | # and this notice are preserved. This file is offered as-is, without any | 28 | # and this notice are preserved. This file is offered as-is, without any |
29 | # warranty. | 29 | # warranty. |
30 | 30 | ||
31 | #serial 17 | 31 | #serial 22 |
32 | 32 | ||
33 | AC_DEFUN([AX_COUNT_CPUS],[dnl | 33 | AC_DEFUN([AX_COUNT_CPUS],[dnl |
34 | AC_REQUIRE([AC_CANONICAL_HOST])dnl | 34 | AC_REQUIRE([AC_CANONICAL_HOST])dnl |
@@ -38,43 +38,48 @@ | |||
38 | 38 | ||
39 | # Try generic methods | 39 | # Try generic methods |
40 | 40 | ||
41 | # 'getconf' is POSIX utility, '_SC_NPROCESSORS_ONLN' is optional | 41 | # 'getconf' is POSIX utility, but '_NPROCESSORS_ONLN' and |
42 | CPU_COUNT=`getconf _NPROCESSORS_ONLN 2>/dev/null | $EGREP -e '^@<:@0-9@:>@+'` || CPU_COUNT="0" | 42 | # 'NPROCESSORS_ONLN' are platform-specific |
43 | AS_IF([[test "$CPU_COUNT" -gt "0" 2>/dev/null]],[[# empty]],[dnl | 43 | command -v getconf >/dev/null 2>&1 && \ |
44 | CPU_COUNT=`getconf _NPROCESSORS_ONLN 2>/dev/null || getconf NPROCESSORS_ONLN 2>/dev/null` || CPU_COUNT="0" | ||
45 | AS_IF([[test "$CPU_COUNT" -gt "0" 2>/dev/null || ! command -v nproc >/dev/null 2>&1]],[[: # empty]],[dnl | ||
44 | # 'nproc' is part of GNU Coreutils and is widely available | 46 | # 'nproc' is part of GNU Coreutils and is widely available |
45 | CPU_COUNT=`OMP_NUM_THREADS='' nproc 2>/dev/null` || CPU_COUNT=`nproc 2>/dev/null` || CPU_COUNT="0" | 47 | CPU_COUNT=`OMP_NUM_THREADS='' nproc 2>/dev/null` || CPU_COUNT=`nproc 2>/dev/null` || CPU_COUNT="0" |
46 | ])dnl | 48 | ])dnl |
47 | 49 | ||
48 | AS_IF([[test "$CPU_COUNT" -gt "0" 2>/dev/null]],[[# empty]],[dnl | 50 | AS_IF([[test "$CPU_COUNT" -gt "0" 2>/dev/null]],[[: # empty]],[dnl |
49 | # Try platform-specific preferred methods | 51 | # Try platform-specific preferred methods |
50 | AS_CASE([[$host_os]],dnl | 52 | AS_CASE([[$host_os]],dnl |
51 | [[*linux*]],[[CPU_COUNT=`lscpu -p 2>/dev/null | $EGREP -e '^@<:@0-9@:>@+,' -c` || CPU_COUNT="0"]],dnl | 53 | [[*linux*]],[[CPU_COUNT=`lscpu -p 2>/dev/null | $EGREP -e '^@<:@0-9@:>@+,' -c` || CPU_COUNT="0"]],dnl |
52 | [[*darwin*]],[[CPU_COUNT=`sysctl -n hw.logicalcpu 2>/dev/null` || CPU_COUNT="0"]],dnl | 54 | [[*darwin*]],[[CPU_COUNT=`sysctl -n hw.logicalcpu 2>/dev/null` || CPU_COUNT="0"]],dnl |
53 | [[freebsd*]],[[CPU_COUNT=`sysctl -n kern.smp.cpus 2>/dev/null` || CPU_COUNT="0"]],dnl | 55 | [[freebsd*]],[[command -v sysctl >/dev/null 2>&1 && CPU_COUNT=`sysctl -n kern.smp.cpus 2>/dev/null` || CPU_COUNT="0"]],dnl |
54 | [[solaris*]],[[CPU_COUNT=`psrinfo 2>/dev/null | $EGREP -e '^@<:@0-9@:>@.*on-line' -c 2>/dev/null` || CPU_COUNT="0"]],dnl | 56 | [[netbsd*]], [[command -v sysctl >/dev/null 2>&1 && CPU_COUNT=`sysctl -n hw.ncpuonline 2>/dev/null` || CPU_COUNT="0"]],dnl |
57 | [[solaris*]],[[command -v psrinfo >/dev/null 2>&1 && CPU_COUNT=`psrinfo 2>/dev/null | $EGREP -e '^@<:@0-9@:>@.*on-line' -c 2>/dev/null` || CPU_COUNT="0"]],dnl | ||
55 | [[mingw*]],[[CPU_COUNT=`ls -qpU1 /proc/registry/HKEY_LOCAL_MACHINE/HARDWARE/DESCRIPTION/System/CentralProcessor/ 2>/dev/null | $EGREP -e '^@<:@0-9@:>@+/' -c` || CPU_COUNT="0"]],dnl | 58 | [[mingw*]],[[CPU_COUNT=`ls -qpU1 /proc/registry/HKEY_LOCAL_MACHINE/HARDWARE/DESCRIPTION/System/CentralProcessor/ 2>/dev/null | $EGREP -e '^@<:@0-9@:>@+/' -c` || CPU_COUNT="0"]],dnl |
56 | [[msys*]],[[CPU_COUNT=`ls -qpU1 /proc/registry/HKEY_LOCAL_MACHINE/HARDWARE/DESCRIPTION/System/CentralProcessor/ 2>/dev/null | $EGREP -e '^@<:@0-9@:>@+/' -c` || CPU_COUNT="0"]],dnl | 59 | [[msys*]],[[CPU_COUNT=`ls -qpU1 /proc/registry/HKEY_LOCAL_MACHINE/HARDWARE/DESCRIPTION/System/CentralProcessor/ 2>/dev/null | $EGREP -e '^@<:@0-9@:>@+/' -c` || CPU_COUNT="0"]],dnl |
57 | [[cygwin*]],[[CPU_COUNT=`ls -qpU1 /proc/registry/HKEY_LOCAL_MACHINE/HARDWARE/DESCRIPTION/System/CentralProcessor/ 2>/dev/null | $EGREP -e '^@<:@0-9@:>@+/' -c` || CPU_COUNT="0"]]dnl | 60 | [[cygwin*]],[[CPU_COUNT=`ls -qpU1 /proc/registry/HKEY_LOCAL_MACHINE/HARDWARE/DESCRIPTION/System/CentralProcessor/ 2>/dev/null | $EGREP -e '^@<:@0-9@:>@+/' -c` || CPU_COUNT="0"]]dnl |
58 | )dnl | 61 | )dnl |
59 | ])dnl | 62 | ])dnl |
60 | 63 | ||
61 | AS_IF([[test "$CPU_COUNT" -gt "0" 2>/dev/null]],[[# empty]],[dnl | 64 | AS_IF([[test "$CPU_COUNT" -gt "0" 2>/dev/null || ! command -v sysctl >/dev/null 2>&1]],[[: # empty]],[dnl |
62 | # Try less preferred generic method | 65 | # Try less preferred generic method |
63 | # 'hw.ncpu' exist on many platforms, but not on GNU/Linux | 66 | # 'hw.ncpu' exist on many platforms, but not on GNU/Linux |
64 | CPU_COUNT=`sysctl -n hw.ncpu 2>/dev/null` || CPU_COUNT="0" | 67 | CPU_COUNT=`sysctl -n hw.ncpu 2>/dev/null` || CPU_COUNT="0" |
65 | ])dnl | 68 | ])dnl |
66 | 69 | ||
67 | AS_IF([[test "$CPU_COUNT" -gt "0" 2>/dev/null]],[[# empty]],[dnl | 70 | AS_IF([[test "$CPU_COUNT" -gt "0" 2>/dev/null]],[[: # empty]],[dnl |
68 | # Try platform-specific fallback methods | 71 | # Try platform-specific fallback methods |
69 | # They can be less accurate and slower then preferred methods | 72 | # They can be less accurate and slower then preferred methods |
70 | AS_CASE([[$host_os]],dnl | 73 | AS_CASE([[$host_os]],dnl |
71 | [[*linux*]],[[CPU_COUNT=`$EGREP -e '^processor' -c /proc/cpuinfo 2>/dev/null` || CPU_COUNT="0"]],dnl | 74 | [[*linux*]],[[CPU_COUNT=`$EGREP -e '^processor' -c /proc/cpuinfo 2>/dev/null` || CPU_COUNT="0"]],dnl |
72 | [[*darwin*]],[[CPU_COUNT=`system_profiler SPHardwareDataType 2>/dev/null | $EGREP -i -e 'number of cores:'|cut -d : -f 2 -s|tr -d ' '` || CPU_COUNT="0"]],dnl | 75 | [[*darwin*]],[[CPU_COUNT=`system_profiler SPHardwareDataType 2>/dev/null | $EGREP -i -e 'number of cores:'|cut -d : -f 2 -s|tr -d ' '` || CPU_COUNT="0"]],dnl |
73 | [[freebsd*]],[[CPU_COUNT=`dmesg 2>/dev/null| $EGREP -e '^cpu@<:@0-9@:>@+: '|sort -u|$EGREP -e '^' -c` || CPU_COUNT="0"]],dnl | 76 | [[freebsd*]],[[CPU_COUNT=`dmesg 2>/dev/null| $EGREP -e '^cpu@<:@0-9@:>@+: '|sort -u|$EGREP -e '^' -c` || CPU_COUNT="0"]],dnl |
74 | [[solaris*]],[[CPU_COUNT=`kstat -m cpu_info -s state -p 2>/dev/null | $EGREP -c -e 'on-line'` || \ | 77 | [[netbsd*]], [[CPU_COUNT=`command -v cpuctl >/dev/null 2>&1 && cpuctl list 2>/dev/null| $EGREP -e '^@<:@0-9@:>@+ .* online ' -c` || \ |
78 | CPU_COUNT=`dmesg 2>/dev/null| $EGREP -e '^cpu@<:@0-9@:>@+ at'|sort -u|$EGREP -e '^' -c` || CPU_COUNT="0"]],dnl | ||
79 | [[solaris*]],[[command -v kstat >/dev/null 2>&1 && CPU_COUNT=`kstat -m cpu_info -s state -p 2>/dev/null | $EGREP -c -e 'on-line'` || \ | ||
75 | CPU_COUNT=`kstat -m cpu_info 2>/dev/null | $EGREP -c -e 'module: cpu_info'` || CPU_COUNT="0"]],dnl | 80 | CPU_COUNT=`kstat -m cpu_info 2>/dev/null | $EGREP -c -e 'module: cpu_info'` || CPU_COUNT="0"]],dnl |
76 | [[mingw*]],[AS_IF([[CPU_COUNT=`reg query 'HKLM\\Hardware\\Description\\System\\CentralProcessor' 2>/dev/null | $EGREP -e '\\\\@<:@0-9@:>@+$' -c`]],dnl | 81 | [[mingw*]],[AS_IF([[CPU_COUNT=`reg query 'HKLM\\Hardware\\Description\\System\\CentralProcessor' 2>/dev/null | $EGREP -e '\\\\@<:@0-9@:>@+$' -c`]],dnl |
77 | [[# empty]],[[test "$NUMBER_OF_PROCESSORS" -gt "0" 2>/dev/null && CPU_COUNT="$NUMBER_OF_PROCESSORS"]])],dnl | 82 | [[: # empty]],[[test "$NUMBER_OF_PROCESSORS" -gt "0" 2>/dev/null && CPU_COUNT="$NUMBER_OF_PROCESSORS"]])],dnl |
78 | [[msys*]],[[test "$NUMBER_OF_PROCESSORS" -gt "0" 2>/dev/null && CPU_COUNT="$NUMBER_OF_PROCESSORS"]],dnl | 83 | [[msys*]],[[test "$NUMBER_OF_PROCESSORS" -gt "0" 2>/dev/null && CPU_COUNT="$NUMBER_OF_PROCESSORS"]],dnl |
79 | [[cygwin*]],[[test "$NUMBER_OF_PROCESSORS" -gt "0" 2>/dev/null && CPU_COUNT="$NUMBER_OF_PROCESSORS"]]dnl | 84 | [[cygwin*]],[[test "$NUMBER_OF_PROCESSORS" -gt "0" 2>/dev/null && CPU_COUNT="$NUMBER_OF_PROCESSORS"]]dnl |
80 | )dnl | 85 | )dnl |