Jelajahi Sumber

Tests: Fix testing CMAKE_CUDA_ARCHITECTURES=OFF with Clang

Clang does not automatically choose an architecture supported
by the SDK.  The `OFF` value is meant for users to provide their
own architecture flags, so provide one as part of the test.
Brad King 3 tahun lalu
induk
melakukan
7024596a26

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

@@ -4,5 +4,18 @@ run_cmake(architectures-all)
 run_cmake(architectures-all-major)
 run_cmake(architectures-empty)
 run_cmake(architectures-invalid)
+
 run_cmake(architectures-not-set)
+include("${RunCMake_BINARY_DIR}/architectures-not-set-build/info.cmake" OPTIONAL)
+message(STATUS "  CMAKE_CUDA_COMPILER_ID='${CMAKE_CUDA_COMPILER_ID}'")
+message(STATUS "  CMAKE_CUDA_COMPILER_VERSION='${CMAKE_CUDA_COMPILER_VERSION}'")
+message(STATUS "  CMAKE_CUDA_ARCHITECTURES='${CMAKE_CUDA_ARCHITECTURES}'")
+
+if(CMAKE_CUDA_COMPILER_ID STREQUAL "Clang" AND CMAKE_CUDA_ARCHITECTURES)
+  list(GET CMAKE_CUDA_ARCHITECTURES 0 arch)
+  set(CMAKE_CUDA_FLAGS --cuda-gpu-arch=sm_${arch})
+  message(STATUS "Adding CMAKE_CUDA_FLAGS='${CMAKE_CUDA_FLAGS}' for CMAKE_CUDA_ARCHITECTURES=OFF with Clang.")
+  set(RunCMake_TEST_OPTIONS "-DCMAKE_CUDA_FLAGS=${CMAKE_CUDA_FLAGS}")
+endif()
 run_cmake(architectures-off)
+unset(RunCMake_TEST_OPTIONS)

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

@@ -1,2 +1,7 @@
 unset(CMAKE_CUDA_ARCHITECTURES)
 enable_language(CUDA)
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/info.cmake" "
+set(CMAKE_CUDA_COMPILER_ID \"${CMAKE_CUDA_COMPILER_ID}\")
+set(CMAKE_CUDA_COMPILER_VERSION \"${CMAKE_CUDA_COMPILER_VERSION}\")
+set(CMAKE_CUDA_ARCHITECTURES \"${CMAKE_CUDA_ARCHITECTURES}\")
+")