diff options
author | Henry Schreiner <hschrein@cern.ch> | 2018-04-20 15:19:36 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2018-04-23 15:26:56 (GMT) |
commit | 1fb2812d5b77ef077d8bcdd05e8250cd95d8e20c (patch) | |
tree | f0c8a661b1f390bdd6200e99318ae2fb47056c80 | |
parent | b0610e4c95ae83b890f1a50a9578dd40de5fb57e (diff) | |
download | CMake-1fb2812d5b77ef077d8bcdd05e8250cd95d8e20c.zip CMake-1fb2812d5b77ef077d8bcdd05e8250cd95d8e20c.tar.gz CMake-1fb2812d5b77ef077d8bcdd05e8250cd95d8e20c.tar.bz2 |
CUDA: Add compiler detection for CUDA < 7.5
If the CUDA version macros are not defined, run `nvcc --version` and
extract the version from its output.
Fixes: #17920
-rw-r--r-- | Modules/CMakeDetermineCompilerId.cmake | 16 | ||||
-rw-r--r-- | Modules/Compiler/NVIDIA-DetermineCompiler.cmake | 8 |
2 files changed, 21 insertions, 3 deletions
diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake index 15c304c..ea5465a 100644 --- a/Modules/CMakeDetermineCompilerId.cmake +++ b/Modules/CMakeDetermineCompilerId.cmake @@ -52,6 +52,22 @@ function(CMAKE_DETERMINE_COMPILER_ID lang flagvar src) endforeach() endif() + # CUDA < 7.5 is missing version macros + if(lang STREQUAL "CUDA" + AND CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA" + AND NOT CMAKE_${lang}_COMPILER_VERSION) + execute_process( + COMMAND "${CMAKE_${lang}_COMPILER}" + --version + OUTPUT_VARIABLE output ERROR_VARIABLE output + RESULT_VARIABLE result + TIMEOUT 10 + ) + if(output MATCHES [=[ V([0-9]+)\.([0-9]+)\.([0-9]+)]=]) + set(CMAKE_${lang}_COMPILER_VERSION "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3}") + endif() + endif() + if (COMPILER_QNXNTO AND CMAKE_${lang}_COMPILER_ID STREQUAL "GNU") execute_process( COMMAND "${CMAKE_${lang}_COMPILER}" diff --git a/Modules/Compiler/NVIDIA-DetermineCompiler.cmake b/Modules/Compiler/NVIDIA-DetermineCompiler.cmake index cb0beaf..bf9111a 100644 --- a/Modules/Compiler/NVIDIA-DetermineCompiler.cmake +++ b/Modules/Compiler/NVIDIA-DetermineCompiler.cmake @@ -2,9 +2,11 @@ set(_compiler_id_pp_test "defined(__NVCC__)") set(_compiler_id_version_compute " -# define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@(__CUDACC_VER_MAJOR__) -# define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@(__CUDACC_VER_MINOR__) -# define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__CUDACC_VER_BUILD__) +# if defined(__CUDACC_VER_MAJOR__) +# define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@(__CUDACC_VER_MAJOR__) +# define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@(__CUDACC_VER_MINOR__) +# define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__CUDACC_VER_BUILD__) +# endif # if defined(_MSC_VER) /* _MSC_VER = VVRR */ # define @PREFIX@SIMULATE_VERSION_MAJOR @MACRO_DEC@(_MSC_VER / 100) |