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_DIR}
21 	        ${SHARED_BACKEND}/include
22 	        ${CUDA_BACKEND}/include
23     )
24 
25     link_directories(
26             ${CMAKE_BINARY_DIR}
27             ${CUDAToolkit_LIBRARY_DIR}
28     )
29 
30     add_library(cuda_backend SHARED
31             ${SHARED_BACKEND}/cpp/shared.cpp
32             ${SHARED_BACKEND}/include/shared.h
33             ${SHARED_BACKEND}/cpp/buffer.cpp
34             ${SHARED_BACKEND}/include/buffer.h
35             ${SHARED_BACKEND}/cpp/schema_cursor.cpp
36             ${SHARED_BACKEND}/include/schema_cursor.h
37             ${SHARED_BACKEND}/cpp/buffer_cursor.cpp
38             ${SHARED_BACKEND}/include/buffer_cursor.h
39             ${SHARED_BACKEND}/cpp/hex.cpp
40             ${SHARED_BACKEND}/include/hex.h
41             ${SHARED_BACKEND}/cpp/json.cpp
42             ${SHARED_BACKEND}/include/json.h
43             ${SHARED_BACKEND}/cpp/fsutil.cpp
44             ${SHARED_BACKEND}/include/fsutil.h
45             ${SHARED_BACKEND}/cpp/strutil.cpp
46             ${SHARED_BACKEND}/include/strutil.h
47             ${CUDA_BACKEND}/include/cuda_backend.h
48 	    ${CUDA_BACKEND}/cpp/cuda_backend.cpp
49             ${CUDA_BACKEND}/cpp/cuda_backend_buffer.cpp
50             ${CUDA_BACKEND}/cpp/cuda_backend_kernel.cpp
51             ${CUDA_BACKEND}/cpp/cuda_backend_module.cpp
52             ${CUDA_BACKEND}/cpp/cuda_backend_queue.cpp
53     )
54 
55     target_link_libraries(cuda_backend
56             -lcuda
57     )
58 
59     add_executable(cuda_info
60 	    ${CUDA_BACKEND}/cpp/info.cpp
61     )
62 
63     add_executable(cuda_squares
64             ${CUDA_BACKEND}/cpp/squares.cpp
65     )
66 
67     target_link_libraries(cuda_squares
68             cuda_backend
69             -lcuda
70     )
71 
72     target_link_libraries(cuda_info
73             cuda_backend
74             -lcuda
75     )
76 endif()