summaryrefslogtreecommitdiff
path: root/Tests/Cuda/WithC
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2017-02-14 10:32:44 -0500
committerBrad King <brad.king@kitware.com>2017-02-14 10:34:06 -0500
commit8d75d8dc72a0ac4502991891782a2c84df1f61c3 (patch)
treecf7081c5075e4c0114bc0ee2d7e037207865bf4e /Tests/Cuda/WithC
parentc4a6135039a417087b478c031849337316022263 (diff)
downloadcmake-8d75d8dc72a0ac4502991891782a2c84df1f61c3.tar.gz
Tests: Add case for CUDA with C but not C++
An executable using CUDA and C should link as CUDA.
Diffstat (limited to 'Tests/Cuda/WithC')
-rw-r--r--Tests/Cuda/WithC/CMakeLists.txt12
-rw-r--r--Tests/Cuda/WithC/cuda.cu16
-rw-r--r--Tests/Cuda/WithC/main.c6
3 files changed, 34 insertions, 0 deletions
diff --git a/Tests/Cuda/WithC/CMakeLists.txt b/Tests/Cuda/WithC/CMakeLists.txt
new file mode 100644
index 0000000000..7596804bfc
--- /dev/null
+++ b/Tests/Cuda/WithC/CMakeLists.txt
@@ -0,0 +1,12 @@
+cmake_minimum_required(VERSION 3.7)
+project(CudaComplex CUDA C)
+
+set(CMAKE_CUDA_FLAGS "-gencode arch=compute_30,code=compute_30")
+
+add_executable(CudaWithC main.c cuda.cu)
+
+if(APPLE)
+ # We need to add the default path to the driver (libcuda.dylib) as an rpath, so that
+ # the static cuda runtime can find it at runtime.
+ target_link_libraries(CudaWithC PRIVATE -Wl,-rpath,/usr/local/cuda/lib)
+endif()
diff --git a/Tests/Cuda/WithC/cuda.cu b/Tests/Cuda/WithC/cuda.cu
new file mode 100644
index 0000000000..06bd7b975b
--- /dev/null
+++ b/Tests/Cuda/WithC/cuda.cu
@@ -0,0 +1,16 @@
+#include <cuda.h>
+
+#include <iostream>
+
+extern "C" int use_cuda(void)
+{
+ int nDevices = 0;
+ cudaError_t err = cudaGetDeviceCount(&nDevices);
+ if (err != cudaSuccess) {
+ std::cerr << "Failed to retrieve the number of CUDA enabled devices"
+ << std::endl;
+ return 1;
+ }
+ std::cout << "Found " << nDevices << " CUDA enabled devices" << std::endl;
+ return 0;
+}
diff --git a/Tests/Cuda/WithC/main.c b/Tests/Cuda/WithC/main.c
new file mode 100644
index 0000000000..f9101a7068
--- /dev/null
+++ b/Tests/Cuda/WithC/main.c
@@ -0,0 +1,6 @@
+extern int use_cuda(void);
+
+int main()
+{
+ return use_cuda();
+}