cmake_minimum_required(VERSION 3.8)


project(CppCudaMemory CXX CUDA)


set (CMAKE_CXX_STANDARD 17)
set (CMAKE_CUDA_STANDARD 14)

#find CVB
file(TO_CMAKE_PATH "$ENV{CVB}/cmake" CVB_MODULE_PATH)
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CVB_MODULE_PATH}")
find_package(CVB REQUIRED)

find_package(CUDA REQUIRED)
set(CMAKE_CUDA_FLAGS --expt-relaxed-constexpr)

set(SOURCES
  main.cu
)


add_executable(${PROJECT_NAME} 
  ${SOURCES}
)


target_link_libraries(${PROJECT_NAME}
  CVB::CVCDriver
  CVB::CVCUtilities
)

target_include_directories(${PROJECT_NAME} PRIVATE ${CUDA_INCLUDE_DIRS})

# can be used only with CMake 3.18+
# set_target_properties(${PROJECT_NAME} PROPERTIES CUDA_ARCHITECTURES "35;50;60;70")
target_compile_options(${PROJECT_NAME} PUBLIC $<$<COMPILE_LANGUAGE:CUDA>:-arch=sm_35
 -gencode=arch=compute_35,code=sm_35
 -gencode=arch=compute_50,code=sm_50
 -gencode=arch=compute_53,code=sm_53
 -gencode=arch=compute_61,code=sm_61
 -gencode=arch=compute_75,code=sm_75
 -gencode=arch=compute_75,code=compute_75
 -use_fast_math -cudart static
 $<$<NOT:$<BOOL:${WIN32}>>:-forward-unknown-to-host-compiler>
 >)

if(UNIX)
  target_link_libraries(${PROJECT_NAME} pthread)
endif()




