summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorJon Chronopoulos <patches@crondog.com>2019-08-11 09:11:32 (GMT)
committerBrad King <brad.king@kitware.com>2019-08-20 14:26:06 (GMT)
commit1c87bc60eef7de896215b0b8a2d0e0abf411f113 (patch)
tree1919aa2832a1ff81cba346e7fbb296d0404dd6e5 /Modules
parent2a5d077a89ea3ef08409e4d3e043ae78c9d8132d (diff)
downloadCMake-1c87bc60eef7de896215b0b8a2d0e0abf411f113.zip
CMake-1c87bc60eef7de896215b0b8a2d0e0abf411f113.tar.gz
CMake-1c87bc60eef7de896215b0b8a2d0e0abf411f113.tar.bz2
ProcessorCount: Fix virtual processor count on Solaris
The previous code did not count the number of virtual processors across physical processors on SunOS. Can handle the following situations: ``` $ uname -a SunOS solaris 5.11 11.4.0.15.0 i86pc i386 i86pc $ psrinfo -p -v The physical processor has 1 virtual processor (0) x86 (GenuineIntel 306D2 family 6 model 61 step 2 clock 3492 MHz) Intel Core Processor (Broadwell) The physical processor has 1 virtual processor (1) x86 (GenuineIntel 306D2 family 6 model 61 step 2 clock 3492 MHz) Intel Core Processor (Broadwell) The physical processor has 1 virtual processor (2) x86 (GenuineIntel 306D2 family 6 model 61 step 2 clock 3492 MHz) Intel Core Processor (Broadwell) The physical processor has 1 virtual processor (3) x86 (GenuineIntel 306D2 family 6 model 61 step 2 clock 3492 MHz) Intel Core Processor (Broadwell) ``` ``` $ uname -a SunOS sol11x86 5.11 11.0 i86pc i386 i86pc $ psrinfo -p -v The physical processor has 2 virtual processors (0 1) x86 (GenuineIntel 50650 family 6 model 85 step 0 clock 2000 MHz) Intel(r) Xeon(r) Gold 6138 CPU @ 2.00GHz ``` ``` $ uname -a SunOS sol11 5.11 11.0 sun4v sparc sun4v $ psrinfo -p -v The physical processor has 2 cores and 16 virtual processors (0-15) The core has 8 virtual processors (0-7) The core has 8 virtual processors (8-15) SPARC-T4 (chipid 0, clock 2848 MHz) ```
Diffstat (limited to 'Modules')
-rw-r--r--Modules/ProcessorCount.cmake10
1 files changed, 7 insertions, 3 deletions
diff --git a/Modules/ProcessorCount.cmake b/Modules/ProcessorCount.cmake
index 8c25256..43ec889 100644
--- a/Modules/ProcessorCount.cmake
+++ b/Modules/ProcessorCount.cmake
@@ -168,9 +168,13 @@ function(ProcessorCount var)
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE
OUTPUT_VARIABLE psrinfo_output)
- string(REGEX MATCH "([0-9]+) virtual processor" procs "${psrinfo_output}")
- set(count "${CMAKE_MATCH_1}")
- #message("ProcessorCount: trying psrinfo -p -v '${ProcessorCount_cmd_prvinfo}'")
+ string(REGEX MATCHALL "has [0-9]+ virtual processor" procs "${psrinfo_output}")
+ set(count "")
+ foreach(proc ${procs})
+ string(REGEX MATCH "has ([0-9]+) virtual" res ${proc})
+ math(EXPR count "${count} + ${CMAKE_MATCH_1}")
+ endforeach()
+ #message("ProcessorCount: trying '${ProcessorCount_cmd_psrinfo}' -p -v")
else()
# Sun (systems where uname -X emits "NumCPU" in its output):
find_program(ProcessorCount_cmd_uname uname)