diff --git a/CMakeLists.txt b/CMakeLists.txt index d99a4feaa..626da7019 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -343,11 +343,30 @@ if(OPTION_OMP) endif() # check for libfftw3f_omp +include(CheckCSourceCompiles) if(OPENMP_FOUND) - find_library(fftw3f_omp fftw3f_omp PATHS ${FFTW3F_LIBRARY_DIRS}) - if(fftw3f_omp) + set(CMAKE_REQUIRED_INCLUDES ${FFTW3F_INCLUDE_DIRS}) + set(CMAKE_REQUIRED_LIBRARIES) + foreach(l ${FFTW3F_LIBRARIES}) + find_library(_f ${l} PATHS ${FFTW3F_LIBRARY_DIRS}) + set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${_f}) + endforeach() + check_c_source_compiles( +"#include +int main() +{ + fftwf_init_threads(); + fftwf_plan_with_nthreads(1); + return 0; +}" _fftw3f_multithread) + if(_fftw3f_multithread) add_definitions(-DRT_FFTW3F_OMP) - set(FFTW3F_LIBRARIES ${FFTW3F_LIBRARIES} ${fftw3f_omp}) + else() + find_library(fftw3f_omp fftw3f_omp PATHS ${FFTW3F_LIBRARY_DIRS}) + if(fftw3f_omp) + add_definitions(-DRT_FFTW3F_OMP) + set(FFTW3F_LIBRARIES ${FFTW3F_LIBRARIES} ${fftw3f_omp}) + endif() endif() endif()