1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-16 22:37:30 +08:00

Merge branch 'backport-cuda-12.9' into cuda-12.9

This commit is contained in:
Brad King
2025-05-02 16:16:06 -04:00
3 changed files with 12 additions and 3 deletions

View File

@@ -71,7 +71,14 @@ function(cmake_cuda_architectures_all lang lang_var_)
endif()
endif()
if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 12.8)
if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 12.9)
if(CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA"
OR (CMAKE_${lang}_COMPILER_ID STREQUAL "Clang" AND CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0)
)
list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL 100 101 103 120 121)
list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 100 120)
endif()
elseif(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 12.8)
if(CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA"
OR (CMAKE_${lang}_COMPILER_ID STREQUAL "Clang" AND CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0)
)

View File

@@ -5,7 +5,7 @@ function(cmake_cuda_architectures_validate lang)
if(DEFINED CMAKE_${lang}_ARCHITECTURES)
if(CMAKE_${lang}_ARCHITECTURES STREQUAL "")
message(FATAL_ERROR "CMAKE_${lang}_ARCHITECTURES must be non-empty if set.")
elseif(CMAKE_${lang}_ARCHITECTURES AND NOT CMAKE_${lang}_ARCHITECTURES MATCHES "^([0-9]+a?(-real|-virtual)?(;[0-9]+a?(-real|-virtual)?|;)*|all|all-major|native)$")
elseif(CMAKE_${lang}_ARCHITECTURES AND NOT CMAKE_${lang}_ARCHITECTURES MATCHES "^([0-9]+(a|f)?(-real|-virtual)?(;[0-9]+(a|f)?(-real|-virtual)?|;)*|all|all-major|native)$")
message(FATAL_ERROR
"CMAKE_${lang}_ARCHITECTURES:\n"
" ${CMAKE_${lang}_ARCHITECTURES}\n"

View File

@@ -25,7 +25,9 @@ function(verify_output flag)
list(APPEND command_archs "${CMAKE_MATCH_1}")
endforeach()
list(SORT command_archs)
# We need to use a NATURAL comparison so that architecture values like `100`
# get placed at the end instead of the front
list(SORT command_archs COMPARE NATURAL)
list(REMOVE_DUPLICATES command_archs)
if(NOT "${command_archs}" STREQUAL "${architectures}")
message(FATAL_ERROR "Architectures used for \"${flag}\" don't match the reference (\"${command_archs}\" != \"${architectures}\").")