summaryrefslogtreecommitdiffstats
path: root/Tests/Cuda/StaticRuntimePlusToolkit/CMakeLists.txt
diff options
context:
space:
mode:
authorRobert Maynard <robert.maynard@kitware.com>2020-01-03 21:43:26 (GMT)
committerRobert Maynard <robert.maynard@kitware.com>2020-01-14 18:50:37 (GMT)
commit6e474364d19566d211aefed003840be15cba940e (patch)
tree7b6196495f78169b49fed4052042093e293b565a /Tests/Cuda/StaticRuntimePlusToolkit/CMakeLists.txt
parent907bb7df57528e91a0dbcab331dfd9f07f28b660 (diff)
downloadCMake-6e474364d19566d211aefed003840be15cba940e.zip
CMake-6e474364d19566d211aefed003840be15cba940e.tar.gz
CMake-6e474364d19566d211aefed003840be15cba940e.tar.bz2
CUDAToolkit: No targets now depend on the CUDA runtime
It is not a requirement to have shared|static consistent across your CUDA libraries (e.g curand, nppc ) and your CUDA runtime library. It is entirely allowable to use a static nppc and a shared runtime.
Diffstat (limited to 'Tests/Cuda/StaticRuntimePlusToolkit/CMakeLists.txt')
-rw-r--r--Tests/Cuda/StaticRuntimePlusToolkit/CMakeLists.txt29
1 files changed, 29 insertions, 0 deletions
diff --git a/Tests/Cuda/StaticRuntimePlusToolkit/CMakeLists.txt b/Tests/Cuda/StaticRuntimePlusToolkit/CMakeLists.txt
new file mode 100644
index 0000000..df6c392
--- /dev/null
+++ b/Tests/Cuda/StaticRuntimePlusToolkit/CMakeLists.txt
@@ -0,0 +1,29 @@
+cmake_minimum_required(VERSION 3.15)
+project(StaticRuntimePlusToolkit CXX)
+
+#Goal for this example:
+# Validate that with c++ we can use some components of the CUDA toolkit, and
+# specify the cuda runtime
+find_package(CUDAToolkit REQUIRED)
+
+add_library(Common OBJECT curand.cpp nppif.cpp)
+target_link_libraries(Common PRIVATE CUDA::toolkit)
+set_target_properties(Common PROPERTIES POSITION_INDEPENDENT_CODE ON)
+
+#static runtime with shared toolkit libraries
+add_library(SharedToolkit SHARED shared.cpp)
+target_link_libraries(SharedToolkit PRIVATE Common PUBLIC CUDA::curand CUDA::nppif)
+target_link_libraries(SharedToolkit PUBLIC CUDA::cudart_static)
+
+#static runtime with static toolkit libraries
+add_library(StaticToolkit SHARED static.cpp)
+target_link_libraries(StaticToolkit PRIVATE Common CUDA::curand_static CUDA::nppif_static)
+target_link_libraries(StaticToolkit PUBLIC CUDA::cudart_static)
+
+#static runtime with mixed toolkit libraries
+add_library(MixedToolkit SHARED mixed.cpp)
+target_link_libraries(MixedToolkit PRIVATE Common CUDA::curand CUDA::nppif_static)
+target_link_libraries(MixedToolkit PUBLIC CUDA::cudart_static)
+
+add_executable(StaticRuntimePlusToolkit main.cpp)
+target_link_libraries(StaticRuntimePlusToolkit PRIVATE SharedToolkit StaticToolkit MixedToolkit)