Ver Fonte

CUDA: Restore support for CMAKE_CUDA_ARCHITECTURES=OFF

Fixes: #23309
Robert Maynard há 3 anos atrás
pai
commit
2a79b647fa

+ 2 - 2
Modules/CMakeDetermineCUDACompiler.cmake

@@ -289,7 +289,7 @@ if(NOT CMAKE_CUDA_COMPILER_ID_RUN)
           set(architectures_test ${CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR})
         endif()
       endif()
-    else()
+    elseif(CMAKE_CUDA_ARCHITECTURES OR "${CMAKE_CUDA_ARCHITECTURES}" STREQUAL "")
       # Explicit architectures.  Test them during detection.
       set(architectures_explicit TRUE)
       set(architectures_test ${CMAKE_CUDA_ARCHITECTURES})
@@ -633,7 +633,7 @@ if("${CMAKE_CUDA_ARCHITECTURES}" STREQUAL "")
       message(FATAL_ERROR "Failed to detect a default CUDA architecture.\n\nCompiler output:\n${CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT}")
     endif()
   endif()
-elseif(NOT "${architectures_tested}" MATCHES "^(all|all-major)$")
+elseif(CMAKE_CUDA_ARCHITECTURES AND NOT "${architectures_tested}" MATCHES "^(all|all-major)$")
   # Sort since order mustn't matter.
   list(SORT architectures_detected)
   list(SORT architectures_tested)

+ 1 - 1
Modules/CMakeDetermineCompilerId.cmake

@@ -495,7 +495,7 @@ Id flags: ${testflags} ${CMAKE_${lang}_COMPILER_ID_FLAGS_ALWAYS}
       if(CMAKE_VS_PLATFORM_NAME STREQUAL x64)
         set(cuda_target "<TargetMachinePlatform>64</TargetMachinePlatform>")
       endif()
-      if(NOT CMAKE_CUDA_ARCHITECTURES MATCHES "^(all|all-major)$")
+      if(CMAKE_CUDA_ARCHITECTURES AND NOT CMAKE_CUDA_ARCHITECTURES MATCHES "^(all|all-major)$")
         foreach(arch ${CMAKE_CUDA_ARCHITECTURES})
           string(REGEX MATCH "[0-9]+" arch_name "${arch}")
           string(APPEND cuda_codegen "compute_${arch_name},sm_${arch_name};")

+ 2 - 0
Tests/RunCMake/CUDA_architectures/RunCMakeTest.cmake

@@ -4,3 +4,5 @@ run_cmake(architectures-all)
 run_cmake(architectures-all-major)
 run_cmake(architectures-empty)
 run_cmake(architectures-invalid)
+run_cmake(architectures-not-set)
+run_cmake(architectures-off)

+ 2 - 0
Tests/RunCMake/CUDA_architectures/architectures-not-set.cmake

@@ -0,0 +1,2 @@
+unset(CMAKE_CUDA_ARCHITECTURES)
+enable_language(CUDA)

+ 2 - 0
Tests/RunCMake/CUDA_architectures/architectures-off.cmake

@@ -0,0 +1,2 @@
+set(CMAKE_CUDA_ARCHITECTURES OFF)
+enable_language(CUDA)