1*bf2c3715SXin Li# - Find the FFTW library 2*bf2c3715SXin Li# 3*bf2c3715SXin Li# Usage: 4*bf2c3715SXin Li# find_package(FFTW [REQUIRED] [QUIET] ) 5*bf2c3715SXin Li# 6*bf2c3715SXin Li# It sets the following variables: 7*bf2c3715SXin Li# FFTW_FOUND ... true if fftw is found on the system 8*bf2c3715SXin Li# FFTW_LIBRARIES ... full path to fftw library 9*bf2c3715SXin Li# FFTW_INCLUDES ... fftw include directory 10*bf2c3715SXin Li# 11*bf2c3715SXin Li# The following variables will be checked by the function 12*bf2c3715SXin Li# FFTW_USE_STATIC_LIBS ... if true, only static libraries are found 13*bf2c3715SXin Li# FFTW_ROOT ... if set, the libraries are exclusively searched 14*bf2c3715SXin Li# under this path 15*bf2c3715SXin Li# FFTW_LIBRARY ... fftw library to use 16*bf2c3715SXin Li# FFTW_INCLUDE_DIR ... fftw include directory 17*bf2c3715SXin Li# 18*bf2c3715SXin Li 19*bf2c3715SXin Li#If environment variable FFTWDIR is specified, it has same effect as FFTW_ROOT 20*bf2c3715SXin Liif( NOT FFTW_ROOT AND ENV{FFTWDIR} ) 21*bf2c3715SXin Li set( FFTW_ROOT $ENV{FFTWDIR} ) 22*bf2c3715SXin Liendif() 23*bf2c3715SXin Li 24*bf2c3715SXin Li# Check if we can use PkgConfig 25*bf2c3715SXin Liinclude(CMakeFindDependencyMacro) 26*bf2c3715SXin Lifind_dependency(PkgConfig) 27*bf2c3715SXin Li 28*bf2c3715SXin Li#Determine from PKG 29*bf2c3715SXin Liif( PKG_CONFIG_FOUND AND NOT FFTW_ROOT ) 30*bf2c3715SXin Li pkg_check_modules( PKG_FFTW QUIET "fftw3" ) 31*bf2c3715SXin Liendif() 32*bf2c3715SXin Li 33*bf2c3715SXin Li#Check whether to search static or dynamic libs 34*bf2c3715SXin Liset( CMAKE_FIND_LIBRARY_SUFFIXES_SAV ${CMAKE_FIND_LIBRARY_SUFFIXES} ) 35*bf2c3715SXin Li 36*bf2c3715SXin Liif( ${FFTW_USE_STATIC_LIBS} ) 37*bf2c3715SXin Li set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX} ) 38*bf2c3715SXin Lielse() 39*bf2c3715SXin Li set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_SHARED_LIBRARY_SUFFIX} ) 40*bf2c3715SXin Liendif() 41*bf2c3715SXin Li 42*bf2c3715SXin Liif( FFTW_ROOT ) 43*bf2c3715SXin Li 44*bf2c3715SXin Li #find libs 45*bf2c3715SXin Li find_library( 46*bf2c3715SXin Li FFTW_LIB 47*bf2c3715SXin Li NAMES "fftw3" 48*bf2c3715SXin Li PATHS ${FFTW_ROOT} 49*bf2c3715SXin Li PATH_SUFFIXES "lib" "lib64" 50*bf2c3715SXin Li NO_DEFAULT_PATH 51*bf2c3715SXin Li ) 52*bf2c3715SXin Li 53*bf2c3715SXin Li find_library( 54*bf2c3715SXin Li FFTWF_LIB 55*bf2c3715SXin Li NAMES "fftw3f" 56*bf2c3715SXin Li PATHS ${FFTW_ROOT} 57*bf2c3715SXin Li PATH_SUFFIXES "lib" "lib64" 58*bf2c3715SXin Li NO_DEFAULT_PATH 59*bf2c3715SXin Li ) 60*bf2c3715SXin Li 61*bf2c3715SXin Li find_library( 62*bf2c3715SXin Li FFTWL_LIB 63*bf2c3715SXin Li NAMES "fftw3l" 64*bf2c3715SXin Li PATHS ${FFTW_ROOT} 65*bf2c3715SXin Li PATH_SUFFIXES "lib" "lib64" 66*bf2c3715SXin Li NO_DEFAULT_PATH 67*bf2c3715SXin Li ) 68*bf2c3715SXin Li 69*bf2c3715SXin Li #find includes 70*bf2c3715SXin Li find_path( 71*bf2c3715SXin Li FFTW_INCLUDES 72*bf2c3715SXin Li NAMES "fftw3.h" 73*bf2c3715SXin Li PATHS ${FFTW_ROOT} 74*bf2c3715SXin Li PATH_SUFFIXES "include" 75*bf2c3715SXin Li NO_DEFAULT_PATH 76*bf2c3715SXin Li ) 77*bf2c3715SXin Li 78*bf2c3715SXin Lielse() 79*bf2c3715SXin Li 80*bf2c3715SXin Li find_library( 81*bf2c3715SXin Li FFTW_LIB 82*bf2c3715SXin Li NAMES "fftw3" 83*bf2c3715SXin Li PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR} 84*bf2c3715SXin Li ) 85*bf2c3715SXin Li 86*bf2c3715SXin Li find_library( 87*bf2c3715SXin Li FFTWF_LIB 88*bf2c3715SXin Li NAMES "fftw3f" 89*bf2c3715SXin Li PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR} 90*bf2c3715SXin Li ) 91*bf2c3715SXin Li 92*bf2c3715SXin Li 93*bf2c3715SXin Li find_library( 94*bf2c3715SXin Li FFTWL_LIB 95*bf2c3715SXin Li NAMES "fftw3l" 96*bf2c3715SXin Li PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR} 97*bf2c3715SXin Li ) 98*bf2c3715SXin Li 99*bf2c3715SXin Li find_path( 100*bf2c3715SXin Li FFTW_INCLUDES 101*bf2c3715SXin Li NAMES "fftw3.h" 102*bf2c3715SXin Li PATHS ${PKG_FFTW_INCLUDE_DIRS} ${INCLUDE_INSTALL_DIR} 103*bf2c3715SXin Li ) 104*bf2c3715SXin Li 105*bf2c3715SXin Liendif() 106*bf2c3715SXin Li 107*bf2c3715SXin Liset(FFTW_LIBRARIES ${FFTW_LIB} ${FFTWF_LIB}) 108*bf2c3715SXin Li 109*bf2c3715SXin Liif(FFTWL_LIB) 110*bf2c3715SXin Li set(FFTW_LIBRARIES ${FFTW_LIBRARIES} ${FFTWL_LIB}) 111*bf2c3715SXin Liendif() 112*bf2c3715SXin Li 113*bf2c3715SXin Liset( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_SAV} ) 114*bf2c3715SXin Li 115*bf2c3715SXin Liinclude(FindPackageHandleStandardArgs) 116*bf2c3715SXin Lifind_package_handle_standard_args(FFTW DEFAULT_MSG 117*bf2c3715SXin Li FFTW_INCLUDES FFTW_LIBRARIES) 118*bf2c3715SXin Li 119*bf2c3715SXin Limark_as_advanced(FFTW_INCLUDES FFTW_LIBRARIES FFTW_LIB FFTWF_LIB FFTWL_LIB) 120*bf2c3715SXin Li 121