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