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
20if( NOT FFTW_ROOT AND ENV{FFTWDIR} )
21  set( FFTW_ROOT $ENV{FFTWDIR} )
22endif()
23
24# Check if we can use PkgConfig
25find_package(PkgConfig)
26
27#Determine from PKG
28if( PKG_CONFIG_FOUND AND NOT FFTW_ROOT )
29  pkg_check_modules( PKG_FFTW QUIET "fftw3" )
30endif()
31
32#Check whether to search static or dynamic libs
33set( CMAKE_FIND_LIBRARY_SUFFIXES_SAV ${CMAKE_FIND_LIBRARY_SUFFIXES} )
34
35if( ${FFTW_USE_STATIC_LIBS} )
36  set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX} )
37else()
38  set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_SHARED_LIBRARY_SUFFIX} )
39endif()
40
41if( 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
77else()
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
104endif( FFTW_ROOT )
105
106set(FFTW_LIBRARIES ${FFTW_LIB} ${FFTWF_LIB})
107
108if(FFTWL_LIB)
109  set(FFTW_LIBRARIES ${FFTW_LIBRARIES} ${FFTWL_LIB})
110endif()
111
112set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_SAV} )
113
114include(FindPackageHandleStandardArgs)
115find_package_handle_standard_args(FFTW DEFAULT_MSG
116                                  FFTW_INCLUDES FFTW_LIBRARIES)
117
118mark_as_advanced(FFTW_INCLUDES FFTW_LIBRARIES FFTW_LIB FFTWF_LIB FFTWL_LIB)
119
120