summaryrefslogtreecommitdiffstats
path: root/Modules/Internal/CMakeCUDAArchitecturesValidate.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'Modules/Internal/CMakeCUDAArchitecturesValidate.cmake')
-rw-r--r--Modules/Internal/CMakeCUDAArchitecturesValidate.cmake19
1 files changed, 19 insertions, 0 deletions
diff --git a/Modules/Internal/CMakeCUDAArchitecturesValidate.cmake b/Modules/Internal/CMakeCUDAArchitecturesValidate.cmake
new file mode 100644
index 0000000..b6997d2
--- /dev/null
+++ b/Modules/Internal/CMakeCUDAArchitecturesValidate.cmake
@@ -0,0 +1,19 @@
+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+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)$")
+ message(FATAL_ERROR
+ "CMAKE_${lang}_ARCHITECTURES:\n"
+ " ${CMAKE_${lang}_ARCHITECTURES}\n"
+ "is not one of the following:\n"
+ " * a semicolon-separated list of integers, each optionally\n"
+ " followed by '-real' or '-virtual'\n"
+ " * a special value: all, all-major, native\n"
+ )
+ endif()
+ endif()
+endfunction()