1 cmake_minimum_required(VERSION 3.22.1)
2 project(cuda_backend)
3
4 set(CMAKE_CXX_STANDARD 14)
5
6 find_package(CUDAToolkit)
7 if(CUDAToolkit_FOUND)
8 message("CUDA")
9 if ("${CUDA_BACKEND}EMPTY" STREQUAL "EMPTY")
10 set (CUDA_BACKEND "${CMAKE_SOURCE_DIR}")
11 message("CUDA_BACKEND=${CUDA_BACKEND}")
12 endif()
13
14 if ("${SHARED_BACKEND}EMPTY" STREQUAL "EMPTY")
15 set (SHARED_BACKEND "${CMAKE_SOURCE_DIR}/../shared")
16 message("SHARED_BACKEND=${SHARED_BACKEND}")
17 endif()
18
19 include_directories(
20 ${CUDAToolkit_INCLUDE_DIRS} # was ${CUDAToolkit_INCLUDE_DIR}
21 ${SHARED_BACKEND}/src/main/native/include
22 ${CUDA_BACKEND}/src/main/native/include
23 )
24
25 link_directories(
26 ${CMAKE_BINARY_DIR}
27 ${CUDAToolkit_LIBRARY_DIR}
28 )
29
30 add_library(cuda_backend SHARED
31 ${CUDA_BACKEND}/src/main/native/include/cuda_backend.h
32 ${CUDA_BACKEND}/src/main/native/cpp/cuda_backend.cpp
33 ${CUDA_BACKEND}/src/main/native/cpp/cuda_backend_buffer.cpp
34 ${CUDA_BACKEND}/src/main/native/cpp/cuda_backend_kernel.cpp
35 ${CUDA_BACKEND}/src/main/native/cpp/cuda_backend_module.cpp
36 ${CUDA_BACKEND}/src/main/native/cpp/cuda_backend_queue.cpp
37 )
38
39 target_link_libraries(cuda_backend
40 shared_backend
41 -lcuda
42 )
43
44 add_executable(cuda_info
45 ${CUDA_BACKEND}/src/main/native/cpp/info.cpp
46 )
47
48 add_executable(cuda_squares
49 ${CUDA_BACKEND}/src/main/native/cpp/squares.cpp
50 )
51
52 target_link_libraries(cuda_squares
53 cuda_backend
54
55 )
56
57 target_link_libraries(cuda_info
58 cuda_backend
59
60 )
61 endif()