From 3697350ef7f2d69590fc30b63c699de8075cb734 Mon Sep 17 00:00:00 2001 From: Miroslav Stoyanov Date: Fri, 21 Oct 2022 16:26:45 -0400 Subject: [PATCH] switch to cmake native find-cuda-libraries --- CMakeLists.txt | 30 +++++++++++++++++++++--------- cmake/HeffteConfig.cmake | 12 +++++++++--- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f5de10..84cc438 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -122,15 +122,27 @@ endif() # build CPU libheffte, the CUDA test comes first to use cuda_add_library() vs add_library() if (Heffte_ENABLE_CUDA) - find_package(CUDA REQUIRED) - - list(APPEND CUDA_NVCC_FLAGS "-std=c++11") - cuda_add_library(Heffte ${Heffte_common_sources} - include/heffte_backend_cuda.h - src/heffte_backend_cuda.cu) - - cuda_add_cufft_to_target(Heffte) - target_include_directories(Heffte PUBLIC $) + if (CMAKE_VERSION VERSION_LESS 3.17) + find_package(CUDA REQUIRED) + + list(APPEND CUDA_NVCC_FLAGS "-std=c++11") + cuda_add_library(Heffte ${Heffte_common_sources} + include/heffte_backend_cuda.h + src/heffte_backend_cuda.cu) + + cuda_add_cufft_to_target(Heffte) + target_include_directories(Heffte PUBLIC $) + else() + enable_language(CUDA) + find_package(CUDAToolkit REQUIRED) + list(APPEND Heffte_common_sources + include/heffte_backend_cuda.h + src/heffte_backend_cuda.cu + ) + set_source_files_properties(include/heffte_backend_cuda.h src/heffte_backend_cuda.cu PROPERTIES LANGUAGE CUDA) + add_library(Heffte ${Heffte_common_sources}) + target_link_libraries(Heffte CUDA::cufft CUDA::cudart) + endif() else() add_library(Heffte ${Heffte_common_sources}) endif() diff --git a/cmake/HeffteConfig.cmake b/cmake/HeffteConfig.cmake index 627428b..8bbe907 100644 --- a/cmake/HeffteConfig.cmake +++ b/cmake/HeffteConfig.cmake @@ -33,10 +33,16 @@ if (@Heffte_ENABLE_ONEAPI@ AND NOT TARGET Heffte::OneMKL) endif() if (@Heffte_ENABLE_CUDA@) - if (NOT CUDA_TOOLKIT_ROOT_DIR AND NOT "@CUDA_TOOLKIT_ROOT_DIR@" STREQUAL "") - set(CUDA_TOOLKIT_ROOT_DIR @CUDA_TOOLKIT_ROOT_DIR@) + if (CMAKE_VERSION VERSION_LESS 3.17) + if (NOT CUDA_TOOLKIT_ROOT_DIR AND NOT "@CUDA_TOOLKIT_ROOT_DIR@" STREQUAL "") + set(CUDA_TOOLKIT_ROOT_DIR @CUDA_TOOLKIT_ROOT_DIR@) + endif() + find_package(CUDA REQUIRED) + else() + if (NOT TARGET CUDA::cufft) + find_package(CUDAToolkit REQUIRED) + endif() endif() - find_package(CUDA REQUIRED) endif() if (@Heffte_ENABLE_MAGMA@ AND NOT TARGET Heffte::MAGMA)