xref: /aosp_15_r20/external/eigen/cmake/FindFFTW.cmake (revision bf2c37156dfe67e5dfebd6d394bad8b2ab5804d4)
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
25include(CMakeFindDependencyMacro)
26find_dependency(PkgConfig)
27
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
105endif()
106
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
121