blob: ed55c5fad6baa31628a2327541a03c1701055566 [file] [log] [blame]
Brian Silverman72890c22015-09-19 14:37:37 -04001# - 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
Austin Schuhc55b0172022-02-20 17:52:35 -080025include(CMakeFindDependencyMacro)
26find_dependency(PkgConfig)
Brian Silverman72890c22015-09-19 14:37:37 -040027
28#Determine from PKG
29if( PKG_CONFIG_FOUND AND NOT FFTW_ROOT )
30 pkg_check_modules( PKG_FFTW QUIET "fftw3" )
31endif()
32
33#Check whether to search static or dynamic libs
34set( CMAKE_FIND_LIBRARY_SUFFIXES_SAV ${CMAKE_FIND_LIBRARY_SUFFIXES} )
35
36if( ${FFTW_USE_STATIC_LIBS} )
37 set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX} )
38else()
39 set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_SHARED_LIBRARY_SUFFIX} )
40endif()
41
42if( FFTW_ROOT )
43
44 #find libs
45 find_library(
46 FFTW_LIB
47 NAMES "fftw3"
48 PATHS ${FFTW_ROOT}
49 PATH_SUFFIXES "lib" "lib64"
50 NO_DEFAULT_PATH
51 )
52
53 find_library(
54 FFTWF_LIB
55 NAMES "fftw3f"
56 PATHS ${FFTW_ROOT}
57 PATH_SUFFIXES "lib" "lib64"
58 NO_DEFAULT_PATH
59 )
60
61 find_library(
62 FFTWL_LIB
63 NAMES "fftw3l"
64 PATHS ${FFTW_ROOT}
65 PATH_SUFFIXES "lib" "lib64"
66 NO_DEFAULT_PATH
67 )
68
69 #find includes
70 find_path(
71 FFTW_INCLUDES
72 NAMES "fftw3.h"
73 PATHS ${FFTW_ROOT}
74 PATH_SUFFIXES "include"
75 NO_DEFAULT_PATH
76 )
77
78else()
79
80 find_library(
81 FFTW_LIB
82 NAMES "fftw3"
83 PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR}
84 )
85
86 find_library(
87 FFTWF_LIB
88 NAMES "fftw3f"
89 PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR}
90 )
91
92
93 find_library(
94 FFTWL_LIB
95 NAMES "fftw3l"
96 PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR}
97 )
98
99 find_path(
100 FFTW_INCLUDES
101 NAMES "fftw3.h"
102 PATHS ${PKG_FFTW_INCLUDE_DIRS} ${INCLUDE_INSTALL_DIR}
103 )
104
Austin Schuhc55b0172022-02-20 17:52:35 -0800105endif()
Brian Silverman72890c22015-09-19 14:37:37 -0400106
107set(FFTW_LIBRARIES ${FFTW_LIB} ${FFTWF_LIB})
108
109if(FFTWL_LIB)
110 set(FFTW_LIBRARIES ${FFTW_LIBRARIES} ${FFTWL_LIB})
111endif()
112
113set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_SAV} )
114
115include(FindPackageHandleStandardArgs)
116find_package_handle_standard_args(FFTW DEFAULT_MSG
117 FFTW_INCLUDES FFTW_LIBRARIES)
118
119mark_as_advanced(FFTW_INCLUDES FFTW_LIBRARIES FFTW_LIB FFTWF_LIB FFTWL_LIB)
120