summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitlab/ci/configure_fedora31_makefiles.cmake7
-rw-r--r--Help/release/dev/cuda-check-support.rst14
-rw-r--r--Modules/CheckCompilerFlag.cmake4
-rw-r--r--Modules/CheckLinkerFlag.cmake2
-rw-r--r--Modules/CheckSourceCompiles.cmake3
-rw-r--r--Modules/CheckSourceRuns.cmake3
-rw-r--r--Modules/FindJNI.cmake8
-rw-r--r--Modules/FindwxWidgets.cmake10
-rw-r--r--Source/CMakeVersion.cmake2
-rw-r--r--Tests/CMakeOnly/CMakeLists.txt5
-rw-r--r--Tests/CMakeOnly/CompilerIdCUDA/CMakeLists.txt14
-rw-r--r--Tests/FindPython/ArtifactsInteractive/CMakeLists.txt2
-rw-r--r--Tests/FindPython/ExactVersion/CMakeLists.txt2
-rw-r--r--Tests/FindPython/NumPy/CMakeLists.txt2
-rw-r--r--Tests/FindPython/NumPyOnly/CMakeLists.txt2
-rw-r--r--Tests/FindPython/PyPy/CMakeLists.txt2
-rw-r--r--Tests/FindPython/PyPy2/CMakeLists.txt2
-rw-r--r--Tests/FindPython/PyPy3/CMakeLists.txt2
-rw-r--r--Tests/FindPython/RequiredArtifacts/CMakeLists.txt2
-rw-r--r--Tests/FindPython/RequiredArtifacts/Check/CMakeLists.txt2
-rw-r--r--Tests/FindPython/VersionRange/CMakeLists.txt2
-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
30 files changed, 168 insertions, 20 deletions
diff --git a/.gitlab/ci/configure_fedora31_makefiles.cmake b/.gitlab/ci/configure_fedora31_makefiles.cmake
index aee100e..8d2454f 100644
--- a/.gitlab/ci/configure_fedora31_makefiles.cmake
+++ b/.gitlab/ci/configure_fedora31_makefiles.cmake
@@ -44,10 +44,9 @@ set(CMake_TEST_FindPatch "ON" CACHE BOOL "")
set(CMake_TEST_FindPNG "ON" CACHE BOOL "")
set(CMake_TEST_FindPostgreSQL "ON" CACHE BOOL "")
set(CMake_TEST_FindProtobuf "ON" CACHE BOOL "")
-#FIXME: Not all FindPython tests pass on Fedora!
-#set(CMake_TEST_FindPython "ON" CACHE BOOL "")
-#set(CMake_TEST_FindPython_NumPy "ON" CACHE BOOL "")
-#set(CMake_TEST_FindPython_PyPy "ON" CACHE BOOL "")
+set(CMake_TEST_FindPython "ON" CACHE BOOL "")
+set(CMake_TEST_FindPython_NumPy "ON" CACHE BOOL "")
+set(CMake_TEST_FindPython_PyPy "ON" CACHE BOOL "")
set(CMake_TEST_FindRuby "ON" CACHE BOOL "")
set(CMake_TEST_FindRuby_RVM "ON" CACHE BOOL "")
set(CMake_TEST_FindSDL "ON" CACHE BOOL "")
diff --git a/Help/release/dev/cuda-check-support.rst b/Help/release/dev/cuda-check-support.rst
new file mode 100644
index 0000000..d88ef94
--- /dev/null
+++ b/Help/release/dev/cuda-check-support.rst
@@ -0,0 +1,14 @@
+cuda-check-support
+------------------
+
+* The :module:`CheckCompilerFlag` module was extended to
+ support 'CUDA'.
+
+* The :module:`CheckSourceCompiles` module was extended to
+ support 'CUDA'.
+
+* The :module:`CheckSourceRuns` module was extended to
+ support 'CUDA'.
+
+* The :module:`CheckLinkerFlag` module has been extended to
+ support the validity of CUDA link flags.
diff --git a/Modules/CheckCompilerFlag.cmake b/Modules/CheckCompilerFlag.cmake
index f2385d5..3ce1b9b 100644
--- a/Modules/CheckCompilerFlag.cmake
+++ b/Modules/CheckCompilerFlag.cmake
@@ -49,6 +49,10 @@ function(CHECK_COMPILER_FLAG _lang _flag _var)
elseif(_lang STREQUAL CXX)
set(_lang_src "int main() { return 0; }")
set(_lang_fail_regex FAIL_REGEX "command[ -]line option .* is valid for .* but not for C\\+\\+")
+ elseif(_lang STREQUAL CUDA)
+ set(_lang_src "__host__ int main() { return 0; }")
+ set(_lang_fail_regex FAIL_REGEX "command[ -]line option .* is valid for .* but not for C\\+\\+" # Host GNU
+ FAIL_REGEX "argument unused during compilation: .*") # Clang
elseif(_lang STREQUAL Fortran)
set(_lang_src " program test\n stop\n end program")
set(_lang_fail_regex FAIL_REGEX "command[ -]line option .* is valid for .* but not for Fortran")
diff --git a/Modules/CheckLinkerFlag.cmake b/Modules/CheckLinkerFlag.cmake
index 051e0bc..f56d365 100644
--- a/Modules/CheckLinkerFlag.cmake
+++ b/Modules/CheckLinkerFlag.cmake
@@ -66,6 +66,8 @@ function(CHECK_LINKER_FLAG _lang _flag _var)
set (_source "int main() { return 0; }")
elseif (_lang STREQUAL "Fortran")
set (_source " program test\n stop\n end program")
+ elseif (_lang MATCHES "CUDA")
+ set (_source "__host__ int main() { return 0; }")
elseif (_lang MATCHES "^(OBJC|OBJCXX)$")
set (_source "#ifndef __OBJC__\n# error \"Not an Objective-C++ compiler\"\n#endif\nint main(void) { return 0; }")
else()
diff --git a/Modules/CheckSourceCompiles.cmake b/Modules/CheckSourceCompiles.cmake
index 70a733d..08fc153 100644
--- a/Modules/CheckSourceCompiles.cmake
+++ b/Modules/CheckSourceCompiles.cmake
@@ -89,6 +89,9 @@ function(CHECK_SOURCE_COMPILES _lang _source _var)
elseif(_lang STREQUAL CXX)
set(_lang_textual "C++")
set(_lang_ext "cxx")
+ elseif(_lang STREQUAL CUDA)
+ set(_lang_textual "CUDA")
+ set(_lang_ext "cu")
elseif(_lang STREQUAL Fortran)
set(_lang_textual "Fortran")
set(_lang_ext "F")
diff --git a/Modules/CheckSourceRuns.cmake b/Modules/CheckSourceRuns.cmake
index 6165123..20f3e1e 100644
--- a/Modules/CheckSourceRuns.cmake
+++ b/Modules/CheckSourceRuns.cmake
@@ -87,6 +87,9 @@ function(CHECK_SOURCE_RUNS _lang _source _var)
elseif(_lang STREQUAL CXX)
set(_lang_textual "C++")
set(_lang_ext "cxx")
+ elseif(_lang STREQUAL CUDA)
+ set(_lang_textual "CUDA")
+ set(_lang_ext "cu")
elseif(_lang STREQUAL Fortran)
set(_lang_textual "Fortran")
set(_lang_ext "F")
diff --git a/Modules/FindJNI.cmake b/Modules/FindJNI.cmake
index bbca952..5aa2d60 100644
--- a/Modules/FindJNI.cmake
+++ b/Modules/FindJNI.cmake
@@ -215,6 +215,14 @@ set(_JNI_JAVA_DIRECTORIES_BASE
/usr/local/jre-1.7.0
/usr/local/jdk-1.6.0
/usr/local/jre-1.6.0
+ # FreeBSD specific paths for default JVM
+ /usr/local/openjdk15
+ /usr/local/openjdk14
+ /usr/local/openjdk13
+ /usr/local/openjdk12
+ /usr/local/openjdk11
+ /usr/local/openjdk8
+ /usr/local/openjdk7
# SuSE specific paths for default JVM
/usr/lib64/jvm/java
/usr/lib64/jvm/jre
diff --git a/Modules/FindwxWidgets.cmake b/Modules/FindwxWidgets.cmake
index 93ac51d..eab09f1 100644
--- a/Modules/FindwxWidgets.cmake
+++ b/Modules/FindwxWidgets.cmake
@@ -760,8 +760,16 @@ else()
# UNIX: Start actual work.
#-----------------------------------------------------------------
# Support cross-compiling, only search in the target platform.
+ #
+ # Look for wx-config -- this can be set in the environment,
+ # or try versioned and toolchain-versioned variants of the -config
+ # executable as well.
find_program(wxWidgets_CONFIG_EXECUTABLE
- NAMES $ENV{WX_CONFIG} wx-config wx-config-3.1 wx-config-3.0 wx-config-2.9 wx-config-2.8
+ NAMES
+ $ENV{WX_CONFIG}
+ wx-config
+ wx-config-3.1 wx-config-3.0 wx-config-2.9 wx-config-2.8
+ wxgtk3u-3.1-config wxgtk3u-3.0-config wxgtk2u-2.8-config
DOC "Location of wxWidgets library configuration provider binary (wx-config)."
ONLY_CMAKE_FIND_ROOT_PATH
)
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake
index 9502460..8d4d1c2 100644
--- a/Source/CMakeVersion.cmake
+++ b/Source/CMakeVersion.cmake
@@ -1,7 +1,7 @@
# CMake version number components.
set(CMake_VERSION_MAJOR 3)
set(CMake_VERSION_MINOR 18)
-set(CMake_VERSION_PATCH 20201007)
+set(CMake_VERSION_PATCH 20201008)
#set(CMake_VERSION_RC 0)
set(CMake_VERSION_IS_DIRTY 0)
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/FindPython/ArtifactsInteractive/CMakeLists.txt b/Tests/FindPython/ArtifactsInteractive/CMakeLists.txt
index 8ada221..524be92 100644
--- a/Tests/FindPython/ArtifactsInteractive/CMakeLists.txt
+++ b/Tests/FindPython/ArtifactsInteractive/CMakeLists.txt
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.1)
-project(TestArtifactsInteractive LANGUAGES NONE)
+project(TestArtifactsInteractive LANGUAGES C)
set (components Interpreter Development)
if (CMake_TEST_FindPython_NumPy)
diff --git a/Tests/FindPython/ExactVersion/CMakeLists.txt b/Tests/FindPython/ExactVersion/CMakeLists.txt
index 4aa748b..60abb26 100644
--- a/Tests/FindPython/ExactVersion/CMakeLists.txt
+++ b/Tests/FindPython/ExactVersion/CMakeLists.txt
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.1)
-project(TestExactVersion LANGUAGES NONE)
+project(TestExactVersion LANGUAGES C)
find_package(Python${Python_MAJOR_VERSION} ${Python_REQUESTED_VERSION} COMPONENTS Interpreter Development)
if(NOT Python${Python_MAJOR_VERSION}_FOUND)
diff --git a/Tests/FindPython/NumPy/CMakeLists.txt b/Tests/FindPython/NumPy/CMakeLists.txt
index f557026..3e17f68 100644
--- a/Tests/FindPython/NumPy/CMakeLists.txt
+++ b/Tests/FindPython/NumPy/CMakeLists.txt
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.1)
-project(TestNumPy C)
+project(TestNumPy LANGUAGES C)
find_package (Python2 REQUIRED COMPONENTS Interpreter Development NumPy)
find_package (Python3 REQUIRED COMPONENTS Interpreter Development NumPy)
diff --git a/Tests/FindPython/NumPyOnly/CMakeLists.txt b/Tests/FindPython/NumPyOnly/CMakeLists.txt
index a5db603..bedc627 100644
--- a/Tests/FindPython/NumPyOnly/CMakeLists.txt
+++ b/Tests/FindPython/NumPyOnly/CMakeLists.txt
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.1)
-project(TestNumPyOnly C)
+project(TestNumPyOnly LANGUAGES C)
find_package(Python2 REQUIRED COMPONENTS NumPy)
find_package(Python3 REQUIRED COMPONENTS NumPy)
diff --git a/Tests/FindPython/PyPy/CMakeLists.txt b/Tests/FindPython/PyPy/CMakeLists.txt
index 6539b63..4cf7c0a 100644
--- a/Tests/FindPython/PyPy/CMakeLists.txt
+++ b/Tests/FindPython/PyPy/CMakeLists.txt
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.1)
-project(TestPyPy LANGUAGES NONE)
+project(TestPyPy LANGUAGES C)
set (Python_FIND_IMPLEMENTATIONS PyPy)
diff --git a/Tests/FindPython/PyPy2/CMakeLists.txt b/Tests/FindPython/PyPy2/CMakeLists.txt
index 4efea23..ebfc9ab 100644
--- a/Tests/FindPython/PyPy2/CMakeLists.txt
+++ b/Tests/FindPython/PyPy2/CMakeLists.txt
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.1)
-project(TestPyPy2 LANGUAGES NONE)
+project(TestPyPy2 LANGUAGES C)
set (Python2_FIND_IMPLEMENTATIONS "PyPy")
diff --git a/Tests/FindPython/PyPy3/CMakeLists.txt b/Tests/FindPython/PyPy3/CMakeLists.txt
index 7454a68..bf7cd61 100644
--- a/Tests/FindPython/PyPy3/CMakeLists.txt
+++ b/Tests/FindPython/PyPy3/CMakeLists.txt
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.1)
-project(TestPyPy3 LANGUAGES NONE)
+project(TestPyPy3 LANGUAGES C)
set (Python3_FIND_IMPLEMENTATIONS "PyPy")
diff --git a/Tests/FindPython/RequiredArtifacts/CMakeLists.txt b/Tests/FindPython/RequiredArtifacts/CMakeLists.txt
index 6e854e3..ae50f32 100644
--- a/Tests/FindPython/RequiredArtifacts/CMakeLists.txt
+++ b/Tests/FindPython/RequiredArtifacts/CMakeLists.txt
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.1)
-project(TestRequiredArtifacts LANGUAGES NONE)
+project(TestRequiredArtifacts LANGUAGES C)
include(CTest)
diff --git a/Tests/FindPython/RequiredArtifacts/Check/CMakeLists.txt b/Tests/FindPython/RequiredArtifacts/Check/CMakeLists.txt
index 036407f..287cfdb 100644
--- a/Tests/FindPython/RequiredArtifacts/Check/CMakeLists.txt
+++ b/Tests/FindPython/RequiredArtifacts/Check/CMakeLists.txt
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.1)
-project(TestRequiredArtifacts.Check LANGUAGES NONE)
+project(TestRequiredArtifacts.Check LANGUAGES C)
set (components)
if (CHECK_INTERPRETER)
diff --git a/Tests/FindPython/VersionRange/CMakeLists.txt b/Tests/FindPython/VersionRange/CMakeLists.txt
index 0d946f5..e8873cb 100644
--- a/Tests/FindPython/VersionRange/CMakeLists.txt
+++ b/Tests/FindPython/VersionRange/CMakeLists.txt
@@ -1,6 +1,6 @@
cmake_minimum_required (VERSION 3.18...3.19)
-project (TestVersionRange LANGUAGES NONE)
+project (TestVersionRange LANGUAGES C)
find_package (${Python} ${Python_REQUESTED_VERSION} EXACT COMPONENTS Interpreter)
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()