diff --git a/CMake/FindFFTW.cmake b/CMake/FindFFTW.cmake new file mode 100644 index 0000000000000000000000000000000000000000..906906ec89c987a24216fe2ed38a426f40b99492 --- /dev/null +++ b/CMake/FindFFTW.cmake @@ -0,0 +1,68 @@ +## FFTW can be compiled and subsequently linked against +## various data types. +## There is a single set of include files, and then muttiple libraries, +## One for each type. I.e. libfftw.a-->double, libfftwf.a-->float + +## The following logic belongs in the individual package +## MARK_AS_ADVANCED(USE_FFTWD) +## OPTION(USE_FFTWD "Use double precision FFTW if found" ON) +## MARK_AS_ADVANCED(USE_FFTWF) +## OPTION(USE_FFTWF "Use single precision FFTW if found" ON) + +IF(USE_FFTWD OR USE_FFTWF) + + SET(FFTW_INC_SEARCHPATH + /sw/include + /usr/include + /usr/local/include + /usr/include/fftw + /usr/local/include/fftw + ) + + FIND_PATH(FFTW_INCLUDE_PATH fftw3.h ${FFTW_INC_SEARCHPATH}) + + IF(FFTW_INCLUDE_PATH) + SET(FFTW_INCLUDE ${FFTW_INCLUDE_PATH}) + ENDIF (FFTW_INCLUDE_PATH) + + IF(FFTW_INCLUDE) + INCLUDE_DIRECTORIES( ${FFTW_INCLUDE}) + ENDIF(FFTW_INCLUDE) + + GET_FILENAME_COMPONENT(FFTW_INSTALL_BASE_PATH ${FFTW_INCLUDE_PATH} PATH) + + SET(FFTW_LIB_SEARCHPATH + ${FFTW_INSTALL_BASE_PATH}/lib + /usr/lib/fftw + /usr/local/lib/fftw + ) + + IF(USE_FFTWD) + MARK_AS_ADVANCED(FFTWD_LIB) +# OPTION(FFTWD_LIB "The full path to the fftw3 library (including the library)" ) + FIND_LIBRARY(FFTWD_LIB fftw3 ${FFTW_LIB_SEARCHPATH}) #Double Precision Lib + FIND_LIBRARY(FFTWD_THREADS_LIB fftw3_threads ${FFTW_LIB_SEARCHPATH}) #Double Precision Lib only if compiled with threads support + + IF(FFTWD_LIB) + SET(FFTWD_FOUND 1) + IF(FFTWD_THREADS_LIB) + SET(FFTWD_LIB ${FFTWD_LIB} ${FFTWD_THREADS_LIB} ) + ENDIF(FFTWD_THREADS_LIB) + ENDIF(FFTWD_LIB) + ENDIF(USE_FFTWD) + + IF(USE_FFTWF) + MARK_AS_ADVANCED(FFTWF_LIB) +# OPTION(FFTWF_LIB "The full path to the fftw3f library (including the library)" ) + FIND_LIBRARY(FFTWF_LIB fftw3f ${FFTW_LIB_SEARCHPATH}) #Single Precision Lib + FIND_LIBRARY(FFTWF_THREADS_LIB fftw3f_threads ${FFTW_LIB_SEARCHPATH}) #Single Precision Lib only if compiled with threads support + + IF(FFTWF_LIB) + SET(FFTWF_FOUND 1) + IF(FFTWF_THREADS_LIB) + SET(FFTWF_LIB ${FFTWF_LIB} ${FFTWF_THREADS_LIB} ) + ENDIF(FFTWF_THREADS_LIB) + ENDIF(FFTWF_LIB) + ENDIF(USE_FFTWF) + +ENDIF(USE_FFTWD OR USE_FFTWF)