xref: /aosp_15_r20/external/eigen/cmake/FindFFTW.cmake (revision bf2c37156dfe67e5dfebd6d394bad8b2ab5804d4)
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