Skip to content

Commit

Permalink
favor lookup for threaded fftw libraries
Browse files Browse the repository at this point in the history
Co-authored-by: Axel Huebl <[email protected]>
  • Loading branch information
mkstoyanov and ax3l committed Oct 23, 2024
1 parent c93784f commit 9acbb39
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 6 deletions.
16 changes: 14 additions & 2 deletions cmake/FindHeffteFFTW.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
17 changes: 13 additions & 4 deletions cmake/HeffteConfig.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 9acbb39

Please sign in to comment.