1 cmake_minimum_required(VERSION 3.22.1)
2 project(cuda_backend)
3
4 set(CMAKE_CXX_STANDARD 17)
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 ../shared/target/build
28 ${CUDAToolkit_LIBRARY_DIR}
29 )
30
31 add_library(cuda_backend SHARED
32 ${CUDA_BACKEND}/src/main/native/include/cuda_backend.h
33 ${CUDA_BACKEND}/src/main/native/cpp/cuda_backend.cpp
34 ${CUDA_BACKEND}/src/main/native/cpp/cuda_backend_buffer.cpp
35 ${CUDA_BACKEND}/src/main/native/cpp/cuda_backend_kernel.cpp
36 ${CUDA_BACKEND}/src/main/native/cpp/cuda_backend_module.cpp
37 ${CUDA_BACKEND}/src/main/native/cpp/cuda_backend_queue.cpp
38 )
39
40 target_link_libraries(cuda_backend
41 shared_backend
42 -lcuda
43 )
44
45 add_executable(cuda_info
46 ${CUDA_BACKEND}/src/main/native/cpp/info.cpp
47 )
48
49 add_executable(cuda_squares
50 ${CUDA_BACKEND}/src/main/native/cpp/squares.cpp
51 )
52
53 target_link_libraries(cuda_squares
54 cuda_backend
55
56 )
57
58 target_link_libraries(cuda_info
59 cuda_backend
60
61 )
62 endif()