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()