diff --git a/cmake/FindHeffteFFTW.cmake b/cmake/FindHeffteFFTW.cmake index 3e96d91..fc9a67f 100644 --- a/cmake/FindHeffteFFTW.cmake +++ b/cmake/FindHeffteFFTW.cmake @@ -73,22 +73,34 @@ if (NOT FFTW_LIBRARIES) PREFIX ${FFTW_ROOT} VAR FFTW_LIBRARIES REQUIRED "fftw3" "fftw3f" - OPTIONAL "fftw3_threads" "fftw3f_threads") + OPTIONAL "") heffte_find_fftw_libraries( PREFIX ${FFTW_ROOT} VAR FFTW_OMP_LIBRARIES REQUIRED "" OPTIONAL "fftw3_omp" "fftw3f_omp") + heffte_find_fftw_libraries( + PREFIX ${FFTW_ROOT} + VAR FFTW_THREADS_LIBRARIES + REQUIRED "" + OPTIONAL "fftw3_threads" "fftw3f_threads") if (FFTW_OMP_LIBRARIES) - list(APPEND FFTW_OMP_LIBRARIES "${FFTW_LIBRARIES}") + list(PREPEND FFTW_LIBRARIES "${FFTW_OMP_LIBRARIES}") if (Heffte_FFTW_LIBOMP) list(APPEND FFTW_LIBRARIES "${Heffte_FFTW_LIBOMP}") else() find_package(OpenMP REQUIRED) list(APPEND FFTW_LIBRARIES OpenMP::OpenMP_CXX) endif() + elseif (FFTW_THREADS_LIBRARIES) + list(PREPEND FFTW_LIBRARIES "${FFTW_THREADS_LIBRARIES}") + set(THREADS_PREFER_PTHREAD_FLAG TRUE) + find_package(Threads REQUIRED) + list(APPEND FFTW_LIBRARIES Threads::Threads) endif() + + message(STATUS "FFTW_LIBRARIES = ${FFTW_LIBRARIES}") endif() # respect user provided FFTW_INCLUDES diff --git a/cmake/HeffteConfig.cmake b/cmake/HeffteConfig.cmake index 1c0e78f..2de4cca 100644 --- a/cmake/HeffteConfig.cmake +++ b/cmake/HeffteConfig.cmake @@ -8,13 +8,22 @@ endif() include("${CMAKE_CURRENT_LIST_DIR}/HeffteTargets.cmake") -if (@Heffte_ENABLE_FFTW@ AND NOT TARGET Heffte::FFTW) - add_library(Heffte::FFTW INTERFACE IMPORTED GLOBAL) +if ("@Heffte_ENABLE_FFTW@") + # find dependencies if ("@OpenMP_FOUND@") find_package(OpenMP REQUIRED) endif() - target_link_libraries(Heffte::FFTW INTERFACE @FFTW_LIBRARIES@) - set_target_properties(Heffte::FFTW PROPERTIES INTERFACE_INCLUDE_DIRECTORIES @FFTW_INCLUDES@) + if (NOT "@FFTW_THREADS_LIBRARIES@" STREQUAL "") + set(THREADS_PREFER_PTHREAD_FLAG TRUE) + find_package(Threads REQUIRED) + endif() + + # add the target, if missing + if (NOT TARGET Heffte::FFTW) + add_library(Heffte::FFTW INTERFACE IMPORTED GLOBAL) + target_link_libraries(Heffte::FFTW INTERFACE @FFTW_LIBRARIES@) + set_target_properties(Heffte::FFTW PROPERTIES INTERFACE_INCLUDE_DIRECTORIES @FFTW_INCLUDES@) + endif() endif() if (@Heffte_ENABLE_MKL@ AND NOT TARGET Heffte::MKL)