Przeglądaj źródła

Tests/CompileFeatures: Cover cuda_std_## meta-features

Brad King 2 lat temu
rodzic
commit
fb0990ef04

+ 1 - 0
.gitlab/ci/configure_cuda12.2_clang.cmake

@@ -1,3 +1,4 @@
 set(CMake_TEST_CUDA "Clang" CACHE STRING "")
+set(CMake_TEST_CUDA_STANDARDS "03;11;14;17;20;23" CACHE STRING "")
 
 include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

+ 1 - 0
.gitlab/ci/configure_cuda12.2_nvidia.cmake

@@ -1,4 +1,5 @@
 set(CMake_TEST_CUDA "NVIDIA" CACHE STRING "")
 set(CMake_TEST_CUDA_CUPTI "ON" CACHE STRING "")
+set(CMake_TEST_CUDA_STANDARDS "03;11;14;17;20" CACHE STRING "")
 
 include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

+ 2 - 0
Tests/CMakeLists.txt

@@ -395,10 +395,12 @@ if(BUILD_TESTING)
 
   string(REPLACE ";" "$<SEMICOLON>" TEST_STDS_C "${CMake_TEST_C_STANDARDS}")
   string(REPLACE ";" "$<SEMICOLON>" TEST_STDS_CXX "${CMake_TEST_CXX_STANDARDS}")
+  string(REPLACE ";" "$<SEMICOLON>" TEST_STDS_CUDA "${CMake_TEST_CUDA_STANDARDS}")
   set(CompileFeatures_BUILD_OPTIONS
     -DCMake_TEST_C_STANDARDS=${TEST_STDS_C}
     -DCMake_TEST_CXX_STANDARDS=${TEST_STDS_CXX}
     -DCMake_TEST_CUDA=${CMake_TEST_CUDA}
+    -DCMake_TEST_CUDA_STANDARDS=${TEST_STDS_CUDA}
     )
   ADD_TEST_MACRO(CompileFeatures CompileFeatures)
   set_property(TEST CompileFeatures APPEND PROPERTY LABELS "CUDA")

+ 7 - 1
Tests/CompileFeatures/CMakeLists.txt

@@ -9,7 +9,13 @@ set(ext_CXX cpp)
 set(std_C 90 99 11 17 23)
 set(std_CXX 98 11 14 17 20 23 26)
 
-foreach(lang C CXX)
+if(CMake_TEST_CUDA)
+  enable_language(CUDA)
+  set(ext_CUDA cu)
+  set(std_CUDA 03 11 14 17 20 23 26)
+endif()
+
+foreach(lang C CXX CUDA)
   foreach(std IN LISTS std_${lang})
     string(TOLOWER "${lang}_std_${std}" feature)
     if("${std}" IN_LIST CMake_TEST_${lang}_STANDARDS

+ 0 - 0
Tests/CompileFeatures/cuda_std_03.cu


+ 4 - 0
Tests/CompileFeatures/cuda_std_11.cu

@@ -0,0 +1,4 @@
+#include "cxx_std.h"
+#if defined(CXX_STD) && CXX_STD < CXX_STD_11
+#  error "cuda_std_11 not honored"
+#endif

+ 4 - 0
Tests/CompileFeatures/cuda_std_14.cu

@@ -0,0 +1,4 @@
+#include "cxx_std.h"
+#if defined(CXX_STD) && CXX_STD <= CXX_STD_11
+#  error "cuda_std_14 not honored"
+#endif

+ 4 - 0
Tests/CompileFeatures/cuda_std_17.cu

@@ -0,0 +1,4 @@
+#include "cxx_std.h"
+#if defined(CXX_STD) && CXX_STD <= CXX_STD_14
+#  error "cuda_std_17 not honored"
+#endif

+ 4 - 0
Tests/CompileFeatures/cuda_std_20.cu

@@ -0,0 +1,4 @@
+#include "cxx_std.h"
+#if defined(CXX_STD) && CXX_STD <= CXX_STD_17
+#  error "cuda_std_20 not honored"
+#endif

+ 4 - 0
Tests/CompileFeatures/cuda_std_23.cu

@@ -0,0 +1,4 @@
+#include "cxx_std.h"
+#if defined(CXX_STD) && CXX_STD <= CXX_STD_20
+#  error "cuda_std_23 not honored"
+#endif

+ 4 - 0
Tests/CompileFeatures/cuda_std_26.cu

@@ -0,0 +1,4 @@
+#include "cxx_std.h"
+#if defined(CXX_STD) && CXX_STD <= CXX_STD_23
+#  error "cuda_std_26 not honored"
+#endif