summaryrefslogtreecommitdiffstats
path: root/Tests
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2020-10-08 13:21:57 (GMT)
committerKitware Robot <kwrobot@kitware.com>2020-10-08 13:22:21 (GMT)
commitbc19ceb6fed526e3d95879b616176392f7dc89d9 (patch)
tree5ebbf0ef60e7ccb438e1531ecb61468f0af63a47 /Tests
parent96dcf07d337097c2dfbda4255df43b37c98986d9 (diff)
parent5c66ac31e638dae7529e04064047722fca80ec01 (diff)
downloadCMake-bc19ceb6fed526e3d95879b616176392f7dc89d9.zip
CMake-bc19ceb6fed526e3d95879b616176392f7dc89d9.tar.gz
CMake-bc19ceb6fed526e3d95879b616176392f7dc89d9.tar.bz2
Merge topic 'check_cuda_helpers'
5c66ac31e6 CUDA: CheckLinkerFlag now supports CUDA da2622ff36 CUDA: Add Support to SourceCompiles|Runs and CheckCompilerFlags Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !5338
Diffstat (limited to 'Tests')
-rw-r--r--Tests/CMakeOnly/CMakeLists.txt5
-rw-r--r--Tests/CMakeOnly/CompilerIdCUDA/CMakeLists.txt14
-rw-r--r--Tests/RunCMake/CMakeLists.txt16
-rw-r--r--Tests/RunCMake/CheckCompilerFlag/CheckCUDACompilerFlag.cmake13
-rw-r--r--Tests/RunCMake/CheckCompilerFlag/RunCMakeTest.cmake4
-rw-r--r--Tests/RunCMake/CheckLinkerFlag/CheckCUDALinkerFlag.cmake3
-rw-r--r--Tests/RunCMake/CheckLinkerFlag/RunCMakeTest.cmake4
-rw-r--r--Tests/RunCMake/CheckSourceCompiles/CheckCUDASourceCompiles.cmake27
-rw-r--r--Tests/RunCMake/CheckSourceCompiles/RunCMakeTest.cmake4
-rw-r--r--Tests/RunCMake/CheckSourceRuns/CheckCUDASourceRuns.cmake21
-rw-r--r--Tests/RunCMake/CheckSourceRuns/RunCMakeTest.cmake4
11 files changed, 111 insertions, 4 deletions
diff --git a/Tests/CMakeOnly/CMakeLists.txt b/Tests/CMakeOnly/CMakeLists.txt
index 361cf5f..a41b44e 100644
--- a/Tests/CMakeOnly/CMakeLists.txt
+++ b/Tests/CMakeOnly/CMakeLists.txt
@@ -38,6 +38,11 @@ if (APPLE AND CMAKE_C_COMPILER_ID MATCHES "Clang|GNU")
add_CMakeOnly_test(CheckOBJCXXCompilerFlag)
endif()
+if(CMake_TEST_CUDA)
+ add_CMakeOnly_test(CompilerIdCUDA)
+endif()
+
+
if(CMAKE_Fortran_COMPILER)
add_CMakeOnly_test(CompilerIdFortran)
endif()
diff --git a/Tests/CMakeOnly/CompilerIdCUDA/CMakeLists.txt b/Tests/CMakeOnly/CompilerIdCUDA/CMakeLists.txt
new file mode 100644
index 0000000..da14000
--- /dev/null
+++ b/Tests/CMakeOnly/CompilerIdCUDA/CMakeLists.txt
@@ -0,0 +1,14 @@
+cmake_minimum_required(VERSION 3.18)
+project(CompilerIdCUDA CUDA)
+
+foreach(v
+ CMAKE_CUDA_COMPILER
+ CMAKE_CUDA_COMPILER_ID
+ CMAKE_CUDA_COMPILER_VERSION
+ )
+ if(${v})
+ message(STATUS "${v}=[${${v}}]")
+ else()
+ message(SEND_ERROR "${v} not set!")
+ endif()
+endforeach()
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
index 557808e..63738d7 100644
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/Tests/RunCMake/CMakeLists.txt
@@ -538,9 +538,15 @@ add_RunCMake_test(target_compile_features)
add_RunCMake_test(target_compile_options -DCMAKE_C_COMPILER_ID=${CMAKE_C_COMPILER_ID})
add_RunCMake_test(target_include_directories)
add_RunCMake_test(target_sources)
-add_RunCMake_test(CheckCompilerFlag)
-add_RunCMake_test(CheckSourceCompiles -DCMake_TEST_ISPC=${CMake_TEST_ISPC})
-add_RunCMake_test(CheckSourceRuns)
+add_RunCMake_test(CheckCompilerFlag -DCMake_TEST_CUDA=${CMake_TEST_CUDA}
+ -DCMake_TEST_ISPC=${CMake_TEST_ISPC})
+add_RunCMake_test(CheckSourceCompiles -DCMake_TEST_CUDA=${CMake_TEST_CUDA}
+ -DCMake_TEST_ISPC=${CMake_TEST_ISPC})
+add_RunCMake_test(CheckSourceRuns -DCMake_TEST_CUDA=${CMake_TEST_CUDA})
+set_property(TEST RunCMake.CheckCompilerFlag
+ RunCMake.CheckSourceCompiles
+ RunCMake.CheckSourceRuns
+ APPEND PROPERTY LABELS "CUDA")
set_property(TEST RunCMake.CheckSourceCompiles
RunCMake.CheckCompilerFlag
APPEND PROPERTY LABELS "ISPC")
@@ -549,7 +555,9 @@ add_RunCMake_test(CheckIPOSupported)
if (CMAKE_SYSTEM_NAME MATCHES "(Linux|Darwin)"
AND (CMAKE_C_COMPILER_ID MATCHES "Clang|GNU" OR CMAKE_Fortran_COMPILER_ID MATCHES "GNU"))
add_RunCMake_test(CheckLinkerFlag -DCMAKE_C_COMPILER_ID=${CMAKE_C_COMPILER_ID}
- -DCMAKE_Fortran_COMPILER_ID=${CMAKE_Fortran_COMPILER_ID})
+ -DCMAKE_Fortran_COMPILER_ID=${CMAKE_Fortran_COMPILER_ID}
+ -DCMake_TEST_CUDA=${CMake_TEST_CUDA})
+ set_property(TEST RunCMake.CheckLinkerFlag APPEND PROPERTY LABELS "CUDA")
endif()
diff --git a/Tests/RunCMake/CheckCompilerFlag/CheckCUDACompilerFlag.cmake b/Tests/RunCMake/CheckCompilerFlag/CheckCUDACompilerFlag.cmake
new file mode 100644
index 0000000..a40699c
--- /dev/null
+++ b/Tests/RunCMake/CheckCompilerFlag/CheckCUDACompilerFlag.cmake
@@ -0,0 +1,13 @@
+
+enable_language (CUDA)
+include(CheckCompilerFlag)
+
+check_compiler_flag(CUDA "-_this_is_not_a_flag_" SHOULD_FAIL)
+if(SHOULD_FAIL)
+ message(SEND_ERROR "invalid CUDA compile flag didn't fail.")
+endif()
+
+check_compiler_flag(CUDA "-DFOO" SHOULD_WORK)
+if(NOT SHOULD_WORK)
+ message(SEND_ERROR "${CMAKE_CUDA_COMPILER_ID} compiler flag '-DFOO' check failed")
+endif()
diff --git a/Tests/RunCMake/CheckCompilerFlag/RunCMakeTest.cmake b/Tests/RunCMake/CheckCompilerFlag/RunCMakeTest.cmake
index e4d65b8..7a4e2ce 100644
--- a/Tests/RunCMake/CheckCompilerFlag/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CheckCompilerFlag/RunCMakeTest.cmake
@@ -15,6 +15,10 @@ if (CMAKE_Fortran_COMPILER_ID)
run_cmake(CheckFortranCompilerFlag)
endif()
+if (CMake_TEST_CUDA)
+ run_cmake(CheckCUDACompilerFlag)
+endif()
+
if(CMake_TEST_ISPC)
run_cmake(CheckISPCCompilerFlag)
endif()
diff --git a/Tests/RunCMake/CheckLinkerFlag/CheckCUDALinkerFlag.cmake b/Tests/RunCMake/CheckLinkerFlag/CheckCUDALinkerFlag.cmake
new file mode 100644
index 0000000..84d6dd9
--- /dev/null
+++ b/Tests/RunCMake/CheckLinkerFlag/CheckCUDALinkerFlag.cmake
@@ -0,0 +1,3 @@
+
+set (CHECK_LANGUAGE CUDA)
+include ("${CMAKE_CURRENT_SOURCE_DIR}/CheckLinkerFlag.cmake")
diff --git a/Tests/RunCMake/CheckLinkerFlag/RunCMakeTest.cmake b/Tests/RunCMake/CheckLinkerFlag/RunCMakeTest.cmake
index 224a2a3..6ec9148 100644
--- a/Tests/RunCMake/CheckLinkerFlag/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CheckLinkerFlag/RunCMakeTest.cmake
@@ -12,3 +12,7 @@ endif()
if (CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
run_cmake(CheckFortranLinkerFlag)
endif()
+
+if (CMake_TEST_CUDA)
+ run_cmake(CheckCUDALinkerFlag)
+endif()
diff --git a/Tests/RunCMake/CheckSourceCompiles/CheckCUDASourceCompiles.cmake b/Tests/RunCMake/CheckSourceCompiles/CheckCUDASourceCompiles.cmake
new file mode 100644
index 0000000..1e6e6b2
--- /dev/null
+++ b/Tests/RunCMake/CheckSourceCompiles/CheckCUDASourceCompiles.cmake
@@ -0,0 +1,27 @@
+
+enable_language (CUDA)
+include(CheckSourceCompiles)
+
+check_source_compiles(CUDA "I don't build" SHOULD_FAIL)
+if(SHOULD_FAIL)
+ message(SEND_ERROR "invalid CUDA source didn't fail.")
+endif()
+
+check_source_compiles(CUDA [=[
+ #include <vector>
+ __device__ int d_func() { }
+ int main() {
+ return 0;
+ }
+]=]
+ SHOULD_BUILD)
+if(NOT SHOULD_BUILD)
+ message(SEND_ERROR "Test fail for valid CUDA source.")
+endif()
+
+check_source_compiles(CUDA "void l(char const (&x)[2]){}; int main() { l(\"\\n\"); return 0;}"
+ SHOULD_BUILD_COMPLEX)
+
+if(NOT SHOULD_BUILD_COMPLEX)
+ message(SEND_ERROR "Test fail for valid CUDA complex source.")
+endif()
diff --git a/Tests/RunCMake/CheckSourceCompiles/RunCMakeTest.cmake b/Tests/RunCMake/CheckSourceCompiles/RunCMakeTest.cmake
index a574d7d..22cb466 100644
--- a/Tests/RunCMake/CheckSourceCompiles/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CheckSourceCompiles/RunCMakeTest.cmake
@@ -15,6 +15,10 @@ if (CMAKE_Fortran_COMPILER_ID)
run_cmake(CheckFortranSourceCompiles)
endif()
+if (CMake_TEST_CUDA)
+ run_cmake(CheckCUDASourceCompiles)
+endif()
+
if(CMake_TEST_ISPC)
run_cmake(CheckISPCSourceCompiles)
endif()
diff --git a/Tests/RunCMake/CheckSourceRuns/CheckCUDASourceRuns.cmake b/Tests/RunCMake/CheckSourceRuns/CheckCUDASourceRuns.cmake
new file mode 100644
index 0000000..01e5ac8
--- /dev/null
+++ b/Tests/RunCMake/CheckSourceRuns/CheckCUDASourceRuns.cmake
@@ -0,0 +1,21 @@
+
+enable_language (CUDA)
+include(CheckSourceRuns)
+
+check_source_runs(CUDA "int main() {return 2;}" SHOULD_FAIL)
+if(SHOULD_FAIL)
+ message(SEND_ERROR "CUDA check_source_runs succeeded, but should have failed.")
+endif()
+
+check_source_runs(CUDA
+[=[
+ #include <vector>
+ __device__ __host__ void fake_function();
+ __host__ int main() {
+ return 0;
+ }
+]=]
+ SHOULD_RUN)
+if(NOT SHOULD_RUN)
+ message(SEND_ERROR "CUDA check_source_runs failed for valid CUDA executable.")
+endif()
diff --git a/Tests/RunCMake/CheckSourceRuns/RunCMakeTest.cmake b/Tests/RunCMake/CheckSourceRuns/RunCMakeTest.cmake
index 8bcde6a..b27b08d 100644
--- a/Tests/RunCMake/CheckSourceRuns/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CheckSourceRuns/RunCMakeTest.cmake
@@ -14,3 +14,7 @@ endif()
if (CMAKE_Fortran_COMPILER_ID)
run_cmake(CheckFortranSourceRuns)
endif()
+
+if (CMake_TEST_CUDA)
+ run_cmake(CheckCUDASourceRuns)
+endif()