diff options
author | David Cole <david.cole@kitware.com> | 2010-11-08 14:37:04 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2011-03-15 19:07:30 (GMT) |
commit | 3430955d5f207232ed0ada83d3e6519ae5c908eb (patch) | |
tree | 65c04a781d8613335ea50e9d29406501e1ed1216 /Modules/ProcessorCount.cmake | |
parent | 4d6418f68353f888e08b42b86ea9eb7e2e2781e3 (diff) | |
download | CMake-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.cmake | 24 |
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() |