Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

favor lookup for threaded fftw libraries #65

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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