summaryrefslogtreecommitdiffstats
path: root/Modules/ProcessorCount.cmake
diff options
context:
space:
mode:
authorDavid Cole <david.cole@kitware.com>2010-11-08 14:37:04 (GMT)
committerBrad King <brad.king@kitware.com>2011-03-15 19:07:30 (GMT)
commit3430955d5f207232ed0ada83d3e6519ae5c908eb (patch)
tree65c04a781d8613335ea50e9d29406501e1ed1216 /Modules/ProcessorCount.cmake
parent4d6418f68353f888e08b42b86ea9eb7e2e2781e3 (diff)
downloadCMake-3430955d5f207232ed0ada83d3e6519ae5c908eb.zip
CMake-3430955d5f207232ed0ada83d3e6519ae5c908eb.tar.gz
CMake-3430955d5f207232ed0ada83d3e6519ae5c908eb.tar.bz2
Add ProcessorCount support for QNX via pidin. (#11302)
Thanks to Rolf Eike Beer <eike@sf-mail.de> for the code snippet parsing the pidin output.
Diffstat (limited to 'Modules/ProcessorCount.cmake')
-rw-r--r--Modules/ProcessorCount.cmake24
1 files changed, 22 insertions, 2 deletions
diff --git a/Modules/ProcessorCount.cmake b/Modules/ProcessorCount.cmake
index 5ccfbff..5c38267 100644
--- a/Modules/ProcessorCount.cmake
+++ b/Modules/ProcessorCount.cmake
@@ -42,7 +42,7 @@ function(ProcessorCount var)
message("ProcessorCount: using sysctl '${ProcessorCount_cmd_sysctl}'")
endif()
else()
- # Linux (and other systems with getconf):
+ # Linux (systems with getconf):
find_program(ProcessorCount_cmd_getconf getconf)
if(ProcessorCount_cmd_getconf)
execute_process(COMMAND ${ProcessorCount_cmd_getconf} _NPROCESSORS_ONLN
@@ -50,9 +50,22 @@ function(ProcessorCount var)
OUTPUT_VARIABLE count)
message("ProcessorCount: using getconf '${ProcessorCount_cmd_getconf}'")
endif()
+
+ if(NOT count)
+ # QNX (systems with pidin):
+ find_program(ProcessorCount_cmd_pidin pidin)
+ if(ProcessorCount_cmd_pidin)
+ execute_process(COMMAND ${ProcessorCount_cmd_pidin} info
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ OUTPUT_VARIABLE pidin_output)
+ string(REGEX MATCHALL "Processor[0-9]+: " procs "${pidin_output}")
+ list(LENGTH procs count)
+ message("ProcessorCount: using pidin '${ProcessorCount_cmd_pidin}'")
+ endif()
+ endif()
endif()
- # Execute this code when there is no 'sysctl' or 'getconf' or
+ # Execute this code when there is no 'sysctl' or 'getconf' or 'pidin' or
# when previously executed methods return empty output:
#
if(NOT count)
@@ -65,5 +78,12 @@ function(ProcessorCount var)
endif()
endif()
+ # Ensure an integer return (avoid inadvertently returning an empty string
+ # or an error string)... If it's not a decimal integer, return 0:
+ #
+ if(NOT count MATCHES "^[0-9]+$")
+ set(count 0)
+ endif()
+
set(${var} ${count} PARENT_SCOPE)
endfunction()