Warning, /graphics/krita/cmake/modules/FindFFTW3.cmake is written in an unsupported language. File is not indexed.

0001 # SPDX-FileCopyrightText: 2023 L. E. Segovia <amy@amyspark.me>
0002 # SPDX-License-Identifier: BSD-3-Clause
0003 #
0004 #[=======================================================================[.rst:
0005 FindFFTW3
0006 --------------
0007 
0008 Find FFTW headers and libraries. There are separate targets for each supported
0009 precision, see below.
0010 
0011 Imported Targets
0012 ^^^^^^^^^^^^^^^^
0013 
0014 ``FFTW3::fftw3``
0015   The FFTW3 double precision library, if found.
0016 
0017 ``FFTW3::fftw3f``
0018   The FFTW3 single precision library, if found.
0019 
0020 ``FFTW3::fftw3l``
0021   The FFTW3 long-double precision library, if found.
0022 
0023 ``FFTW3::fftw3q``
0024   The FFTW3 quadruple precision library, if found.
0025 
0026 ``FFTW3::fftw3_threads``
0027   The threads support library for the FFTW3 double precision library, if found.
0028 
0029 ``FFTW3::fftw3f_threads``
0030   The threads support library for the FFTW3 single precision library, if found.
0031 
0032 ``FFTW3::fftw3l_threads``
0033   The threads support library for the FFTW3 long-double precision library, if found.
0034 
0035 ``FFTW3::fftw3q_threads``
0036   The threads support library for the FFTW3 quadruple precision library, if found.
0037 
0038 ``FFTW3::fftw3_openmp``
0039   The OpenMP support library for the FFTW3 double precision library, if found.
0040 
0041 ``FFTW3::fftw3f_openmp``
0042   The OpenMP support library for the FFTW3 single precision library, if found.
0043 
0044 ``FFTW3::fftw3l_openmp``
0045   The OpenMP support library for the FFTW3 long-double precision library, if found.
0046 
0047 ``FFTW3::fftw3q_openmp``
0048   The OpenMP support library for the FFTW3 quadruple precision library, if found.
0049 
0050 Result Variables
0051 ^^^^^^^^^^^^^^^^
0052 
0053 This will define the following variables in your project:
0054 
0055 ``FFTW3_FOUND``
0056   true if (the requested version of) FFTW3 is available.
0057 ``FFTW3_VERSION``
0058   the version of FFTW3.
0059 ``FFTW3_LIBRARIES``
0060   the libraries to link against to use FFTW3.
0061 ``FFTW3_INCLUDE_DIRS``
0062   where to find the FFTW3 headers.
0063 ``FFTW3_COMPILE_OPTIONS``
0064   this should be passed to target_compile_options(), if the
0065   target is not used for linking
0066 
0067 #]=======================================================================]
0068 
0069 include(FindPackageHandleStandardArgs)
0070 
0071 set(PKG_FFTW_CONFIG_DIR CACHE STRING "PkgConfig path for locating the package modules")
0072 foreach(_dir ${CMAKE_PREFIX_PATH})
0073     list(APPEND PKG_FFTW_CONFIG_DIR ${_dir}/lib/cmake/fftw3)
0074 endforeach()
0075 mark_as_advanced(PKG_FFTW_CONFIG_DIR)
0076 
0077 find_package(FFTW3 QUIET NO_MODULE
0078     HINTS ${PKG_FFTW_CONFIG_DIR} /usr/lib/cmake/fftw3 /usr/local/lib/cmake/fftw3
0079 )
0080 mark_as_advanced(FFTW3_DIR)
0081 
0082 # if we found the FFTW3 CMake package then we can start
0083 # looking up the various precision versions.
0084 # they're exported separately, see e.g. 
0085 # https://archlinux.org/packages/extra/x86_64/fftw/
0086 # https://github.com/microsoft/vcpkg/blob/a325228200d7f229f3337e612e0077f2a5307090/ports/fftw3/portfile.cmake
0087 # https://github.com/Homebrew/homebrew-core/blob/43c39073420de6975f20ac96e98dc822338a3df3/Formula/fftw.rb
0088 if(FFTW3_FOUND)
0089     find_package(FFTW3f QUIET NO_MODULE
0090         HINTS ${PKG_FFTW_CONFIG_DIR} /usr/lib/cmake/fftw3 /usr/local/lib/cmake/fftw3
0091     )
0092     mark_as_advanced(FFTW3f_DIR)
0093 
0094     find_package(FFTW3l QUIET NO_MODULE
0095         HINTS ${PKG_FFTW_CONFIG_DIR} /usr/lib/cmake/fftw3 /usr/local/lib/cmake/fftw3
0096     )
0097     mark_as_advanced(FFTW3l_DIR)
0098 
0099     find_package(FFTW3q QUIET NO_MODULE
0100         HINTS ${PKG_FFTW_CONFIG_DIR} /usr/lib/cmake/fftw3 /usr/local/lib/cmake/fftw3
0101     )
0102     mark_as_advanced(FFTW3q_DIR)
0103 
0104     # As of fftw3 3.3.10, the precision targets are not
0105     # available because the library doesn't implement
0106     # exporting properly; FFTW3LibraryDepends.cmake
0107     # is fixed to the last built precision.
0108     # Additionally, the OMP and threads libraries
0109     # do not have targets altogether.
0110     #
0111     # So reconstruct the targets manually.
0112 
0113     # if (TARGET FFTW3::fftw3f)
0114     #     set(FFTW3_fftw3f_FOUND ON)
0115     # else ()
0116     #     set(FFTW3_fftw3f_FOUND OFF)
0117     # endif ()
0118 
0119     # if (TARGET FFTW3::fftw3l)
0120     #     set(FFTW3_fftw3l_FOUND ON)
0121     # else ()
0122     #     set(FFTW3_fftw3l_FOUND OFF)
0123     # endif ()
0124 
0125     # if (TARGET FFTW3::fftw3q)
0126     #     set(FFTW3_fftw3q_FOUND ON)
0127     # else ()
0128     #     set(FFTW3_fftw3q_FOUND OFF)
0129     # endif ()
0130 
0131     # if (TARGET FFTW3::fftw3f_omp)
0132     #     set(FFTW3_fftw3f_FOUND ON)
0133     # else ()
0134     #     set(FFTW3_fftw3f_FOUND OFF)
0135     # endif ()
0136 
0137     # if (TARGET FFTW3::fftw3l_omp)
0138     #     set(FFTW3_fftw3l_FOUND ON)
0139     # else ()
0140     #     set(FFTW3_fftw3l_FOUND OFF)
0141     # endif ()
0142 
0143     # if (TARGET FFTW3::fftw3q_omp)
0144     #     set(FFTW3_fftw3q_omp_FOUND ON)
0145     # else ()
0146     #     set(FFTW3_fftw3q_omp_FOUND OFF)
0147     # endif ()
0148 
0149     # if (TARGET FFTW3::fftw3f_threads)
0150     #     set(FFTW3_fftw3f_FOUND ON)
0151     # else ()
0152     #     set(FFTW3_fftw3f_FOUND OFF)
0153     # endif ()
0154 
0155     # if (TARGET FFTW3::fftw3l_threads)
0156     #     set(FFTW3_fftw3l_threads_FOUND ON)
0157     # else ()
0158     #     set(FFTW3_fftw3l_threads_FOUND OFF)
0159     # endif ()
0160 
0161     # if (TARGET FFTW3::fftw3q_threads)
0162     #     set(FFTW3_fftw3q_threads_FOUND ON)
0163     # else ()
0164     #     set(FFTW3_fftw3q_threads_FOUND OFF)
0165     # endif ()
0166 
0167     # find_package_handle_standard_args(FFTW3 
0168     #     FOUND_VAR FFTW3_FOUND
0169     #     HANDLE_COMPONENTS
0170     #     CONFIG_MODE
0171     # )
0172     # return()
0173 endif()
0174 
0175 find_package(PkgConfig QUIET)
0176 
0177 if(PkgConfig_FOUND)
0178     pkg_check_modules(PKG_FFTW QUIET fftw3)
0179     # Reusing information from the existing CMake package file, if any.
0180     if (NOT FFTW3_VERSION)
0181         set(FFTW3_VERSION ${PKG_FFTW_VERSION})
0182     endif()
0183     set(FFTW3_COMPILE_OPTIONS "${PKG_FFTW_CFLAGS};${PKG_FFTW_CFLAGS_OTHER}")
0184 
0185     pkg_check_modules(PKG_FFTW_OMP QUIET fftw3_omp)
0186     pkg_check_modules(PKG_FFTW_THREADS QUIET fftw3_threads)
0187 
0188     pkg_check_modules(PKG_FFTW_SINGLE QUIET fftw3f)
0189     pkg_check_modules(PKG_FFTW_LONGDOUBLE QUIET fftw3l)
0190     pkg_check_modules(PKG_FFTW_QUAD QUIET fftw3q)
0191 
0192     pkg_check_modules(PKG_FFTW_SINGLE_OMP QUIET fftw3f_omp)
0193     pkg_check_modules(PKG_FFTW_LONGDOUBLE_OMP QUIET fftw3l_omp)
0194     pkg_check_modules(PKG_FFTW_QUAD_OMP QUIET fftw3q_omp)
0195 
0196     pkg_check_modules(PKG_FFTW_SINGLE_THREADS QUIET fftw3f_omp)
0197     pkg_check_modules(PKG_FFTW_LONGDOUBLE_THREADS QUIET fftw3l_omp)
0198     pkg_check_modules(PKG_FFTW_QUAD_OMP QUIET fftw3q_omp)
0199 endif()
0200 
0201 find_path(FFTW3_INCLUDE_DIR
0202     NAMES "fftw3.h"
0203     HINTS ${FFTW3_INCLUDE_DIRS} ${PKG_FFTW_INCLUDEDIR} ${PKG_FFTW_INCLUDE_DIRS}
0204 )
0205 
0206 find_library(FFTW3_LIBRARY
0207     NAMES fftw3 libfftw3
0208     HINTS ${FFTW3_LIBRARY_DIRS} ${PKG_FFTW_LIBDIR} ${PKG_FFTW_LIBRARY_DIRS}
0209 )
0210 
0211 # There's nothing in the FFTW3 headers that could be used to detect the exact
0212 # FFTW3 version being used so don't attempt to do so. A version can only be found
0213 # through pkg-config
0214 if (NOT FFTW3_VERSION)
0215     message(WARNING "Cannot determine FFTW3 version without pkg-config")
0216 endif ()
0217 
0218 if (FFTW3_INCLUDE_DIR AND FFTW3_LIBRARY)
0219     set(FFTW3_fftw3_FOUND ON)
0220 else()
0221     set(FFTW3_fftw3_FOUND OFF)
0222 endif()
0223 
0224 # Find components
0225 if ("fftw3_omp" IN_LIST FFTW3_FIND_COMPONENTS)
0226     find_library(FFTW3_fftw3_omp_LIBRARY
0227         NAMES fftw3_omp libfftw3_omp
0228         HINTS
0229             ${FFTW3_LIBRARY_DIRS}
0230             ${PKG_FFTW_LIBDIR} ${PKG_FFTW_LIBRARY_DIRS}
0231             ${PKG_FFTW_OMP_LIBDIR} ${PKG_FFTW_OMP_LIBRARY_DIRS}
0232     )
0233 
0234     if (FFTW3_fftw3_omp_LIBRARY)
0235         set(FFTW3_fftw3_omp_FOUND ON)
0236     else ()
0237         set(FFTW3_fftw3_omp_FOUND OFF)
0238     endif ()
0239 endif ()
0240 
0241 if ("fftw3_threads" IN_LIST FFTW3_FIND_COMPONENTS)
0242     find_library(FFTW3_fftw3_threads_LIBRARY
0243         NAMES fftw3_threads libfftw3_threads
0244         HINTS
0245             ${FFTW3_LIBRARY_DIRS}
0246             ${PKG_FFTW_LIBDIR} ${PKG_FFTW_LIBRARY_DIRS}
0247             ${PKG_FFTW_THREADS_LIBDIR} ${PKG_FFTW_THREADS_LIBRARY_DIRS}
0248     )
0249 
0250     if (FFTW3_fftw3_threads_LIBRARY)
0251         set(FFTW3_fftw3_threads_FOUND ON)
0252     else ()
0253         set(FFTW3_fftw3_threads_FOUND OFF)
0254     endif ()
0255 endif ()
0256 
0257 if ("fftw3f" IN_LIST FFTW3_FIND_COMPONENTS)
0258     find_library(FFTW3_fftw3f_LIBRARY
0259         NAMES fftw3f libfftw3f
0260         HINTS
0261             ${FFTW3_LIBRARY_DIRS}
0262             ${PKG_FFTW_LIBDIR} ${PKG_FFTW_LIBRARY_DIRS}
0263             ${PKG_FFTW_SINGLE_LIBDIR} ${PKG_FFTW_SINGLE_LIBRARY_DIRS}
0264     )
0265 
0266     if(FFTW3_fftw3f_LIBRARY)
0267         set(FFTW3_fftw3f_FOUND ON)
0268     else()
0269         set(FFTW3_fftw3f_FOUND OFF)
0270     endif ()
0271 endif ()
0272 
0273 if ("fftw3f_omp" IN_LIST FFTW3_FIND_COMPONENTS)
0274     find_library(FFTW3_fftw3f_omp_LIBRARY
0275         NAMES fftw3f_omp libfftw3f_omp
0276         HINTS
0277             ${FFTW3_LIBRARY_DIRS}
0278             ${PKG_FFTW_LIBDIR} ${PKG_FFTW_LIBRARY_DIRS}
0279             ${PKG_FFTW_SINGLE_LIBDIR} ${PKG_FFTW_SINGLE_LIBRARY_DIRS}
0280             ${PKG_FFTW_SINGLE_OMP_LIBDIR} ${PKG_FFTW_SINGLE_OMP_LIBRARY_DIRS}
0281     )
0282 
0283     if (FFTW3_fftw3f_omp_LIBRARY)
0284         set(FFTW3_fftw3f_omp_FOUND ON)
0285     else ()
0286         set(FFTW3_fftw3f_omp_FOUND OFF)
0287     endif ()
0288 endif ()
0289 
0290 if ("fftw3f_threads" IN_LIST FFTW3_FIND_COMPONENTS)
0291     find_library(FFTW3_fftw3f_threads_LIBRARY
0292         NAMES fftw3f_threads libfftw3f_threads
0293         HINTS
0294             ${FFTW3_LIBRARY_DIRS} ${FFTW3f_LIBRARY_DIRS}
0295             ${PKG_FFTW_LIBDIR} ${PKG_FFTW_LIBRARY_DIRS}
0296             ${PKG_FFTW_SINGLE_LIBDIR} ${PKG_FFTW_SINGLE_LIBRARY_DIRS}
0297             ${PKG_FFTW_SINGLE_OMP_LIBDIR} ${PKG_FFTW_SINGLE_OMP_LIBRARY_DIRS}
0298     )
0299 
0300     if (FFTW3_fftw3f_threads_LIBRARY)
0301         set(FFTW3_fftw3f_threads_FOUND ON)
0302     else ()
0303         set(FFTW3_fftw3f_threads_FOUND OFF)
0304     endif ()
0305 endif ()
0306 
0307 if ("fftw3l" IN_LIST FFTW3_FIND_COMPONENTS)
0308     find_library(FFTW3_fftw3l_LIBRARY
0309         NAMES fftw3l libfftw3l
0310         HINTS
0311             ${FFTW3_LIBRARY_DIRS} ${FFTW3l_LIBRARY_DIRS}
0312             ${PKG_FFTW_LIBDIR} ${PKG_FFTW_LIBRARY_DIRS}
0313             ${PKG_FFTW_LONGDOUBLE_LIBDIR} ${PKG_FFTW_LONGDOUBLE_LIBRARY_DIRS}
0314     )
0315 
0316     if(FFTW3_fftw3l_LIBRARY)
0317         set(FFTW3_fftw3l_FOUND ON)
0318     else()
0319         set(FFTW3_fftw3l_FOUND OFF)
0320     endif ()
0321 endif ()
0322 
0323 if ("fftw3l_omp" IN_LIST FFTW3_FIND_COMPONENTS)
0324     find_library(FFTW3_fftw3l_omp_LIBRARY
0325         NAMES fftw3l_omp libfftw3l_omp
0326         HINTS
0327             ${FFTW3_LIBRARY_DIRS} ${FFTW3l_LIBRARY_DIRS}
0328             ${PKG_FFTW_LIBDIR} ${PKG_FFTW_LIBRARY_DIRS}
0329             ${PKG_FFTW_LONGDOUBLE_LIBDIR} ${PKG_FFTW_LONGDOUBLE_LIBRARY_DIRS}
0330             ${PKG_FFTW_LONGDOUBLE_OMP_LIBDIR} ${PKG_FFTW_LONGDOUBLE_OMP_LIBRARY_DIRS}
0331     )
0332 
0333     if (FFTW3_fftw3l_omp_LIBRARY)
0334         set(FFTW3_fftw3l_omp_FOUND ON)
0335     else ()
0336         set(FFTW3_fftw3l_omp_FOUND OFF)
0337     endif ()
0338 endif ()
0339 
0340 if ("fftw3l_threads" IN_LIST FFTW3_FIND_COMPONENTS)
0341     find_library(FFTW3_fftw3l_threads_LIBRARY
0342         NAMES fftw3l_threads libfftw3l_threads
0343         HINTS
0344             ${FFTW3_LIBRARY_DIRS} ${FFTW3l_LIBRARY_DIRS}
0345             ${PKG_FFTW_LIBDIR} ${PKG_FFTW_LIBRARY_DIRS}
0346             ${PKG_FFTW_LONGDOUBLE_LIBDIR} ${PKG_FFTW_LONGDOUBLE_LIBRARY_DIRS}
0347             ${PKG_FFTW_LONGDOUBLE_OMP_LIBDIR} ${PKG_FFTW_LONGDOUBLE_OMP_LIBRARY_DIRS}
0348     )
0349 
0350     if (FFTW3_fftw3l_threads_LIBRARY)
0351         set(FFTW3_fftw3l_threads_FOUND ON)
0352     else ()
0353         set(FFTW3_fftw3l_threads_FOUND OFF)
0354     endif ()
0355 endif ()
0356 
0357 if ("fftw3q" IN_LIST FFTW3_FIND_COMPONENTS)
0358     find_library(FFTW3_fftw3q_LIBRARY
0359         NAMES fftw3q libfftw3q
0360         HINTS
0361             ${FFTW3_LIBRARY_DIRS} ${FFTW3q_LIBRARY_DIRS}
0362             ${PKG_FFTW_LIBDIR} ${PKG_FFTW_LIBRARY_DIRS}
0363             ${PKG_FFTW_QUAD_LIBDIR} ${PKG_FFTW_QUAD_LIBRARY_DIRS}
0364     )
0365 
0366     if(FFTW3_fftw3q_LIBRARY)
0367         set(FFTW3_fftw3q_FOUND ON)
0368     else()
0369         set(FFTW3_fftw3q_FOUND OFF)
0370     endif ()
0371 endif ()
0372 
0373 if ("fftw3q_omp" IN_LIST FFTW3_FIND_COMPONENTS)
0374     find_library(FFTW3_fftw3q_omp_LIBRARY
0375         NAMES fftw3q_omp libfftw3q_omp
0376         HINTS
0377             ${FFTW3_LIBRARY_DIRS} ${FFTW3q_LIBRARY_DIRS}
0378             ${PKG_FFTW_LIBDIR} ${PKG_FFTW_LIBRARY_DIRS}
0379             ${PKG_FFTW_QUAD_LIBDIR} ${PKG_FFTW_QUAD_LIBRARY_DIRS}
0380             ${PKG_FFTW_QUAD_OMP_LIBDIR} ${PKG_FFTW_QUAD_OMP_LIBRARY_DIRS}
0381     )
0382 
0383     if (FFTW3_fftw3q_omp_LIBRARY)
0384         set(FFTW3_fftw3q_omp_FOUND ON)
0385     else ()
0386         set(FFTW3_fftw3q_omp_FOUND OFF)
0387     endif ()
0388 endif ()
0389 
0390 if ("fftw3q_threads" IN_LIST FFTW3_FIND_COMPONENTS)
0391     find_library(FFTW3_fftw3q_threads_LIBRARY
0392         NAMES fftw3q_threads libfftw3q_threads
0393         HINTS
0394             ${FFTW3_LIBRARY_DIRS} ${FFTW3q_LIBRARY_DIRS}
0395             ${PKG_FFTW_LIBDIR} ${PKG_FFTW_LIBRARY_DIRS}
0396             ${PKG_FFTW_QUAD_LIBDIR} ${PKG_FFTW_QUAD_LIBRARY_DIRS}
0397             ${PKG_FFTW_QUAD_OMP_LIBDIR} ${PKG_FFTW_QUAD_OMP_LIBRARY_DIRS}
0398     )
0399 
0400     if (FFTW3_fftw3q_threads_LIBRARY)
0401         set(FFTW3_fftw3q_threads_FOUND ON)
0402     else ()
0403         set(FFTW3_fftw3q_threads_FOUND OFF)
0404     endif ()
0405 endif ()
0406 
0407 find_package_handle_standard_args(FFTW3
0408     FOUND_VAR FFTW3_FOUND
0409     REQUIRED_VARS FFTW3_INCLUDE_DIR FFTW3_LIBRARY
0410     HANDLE_COMPONENTS
0411     VERSION_VAR FFTW3_VERSION
0412 )
0413 
0414 if (FFTW3_FOUND)
0415 if (FFTW3_LIBRARY AND NOT TARGET FFTW3::fftw3)
0416     add_library(FFTW3::fftw3 UNKNOWN IMPORTED GLOBAL)
0417     set_target_properties(FFTW3::fftw3 PROPERTIES
0418         IMPORTED_LOCATION "${FFTW3_LIBRARY}"
0419         INTERFACE_COMPILE_OPTIONS "${PKG_FFTW_CFLAGS};${PKG_FFTW_CFLAGS_OTHER}"
0420         INTERFACE_INCLUDE_DIRECTORIES "${FFTW3_INCLUDE_DIR};${PKG_FFTW_INCLUDE_DIRS}"
0421         INTERFACE_LINK_LIBRARIES "${PKG_FFTW_LINK_LIBRARIES}"
0422     )
0423 endif ()
0424 
0425 if (FFTW3_fftw3_omp_LIBRARY AND NOT TARGET FFTW3::fftw3_omp)
0426     add_library(FFTW3::fftw3_omp UNKNOWN IMPORTED GLOBAL)
0427     set_target_properties(FFTW3::fftw3_omp PROPERTIES
0428         IMPORTED_LOCATION "${FFTW3_fftw3_omp_LIBRARY}"
0429         INTERFACE_COMPILE_OPTIONS "${PKG_FFTW_OMP_CFLAGS};${PKG_FFTW_OMP_CFLAGS_OTHER}"
0430         INTERFACE_INCLUDE_DIRECTORIES "${FFTW3_INCLUDE_DIR};${PKG_FFTW_OMP_INCLUDE_DIRS}"
0431         INTERFACE_LINK_LIBRARIES "${PKG_FFTW_OMP_LINK_LIBRARIES}"
0432     )
0433 endif ()
0434 
0435 if (FFTW3_fftw3_threads_LIBRARY AND NOT TARGET FFTW3::fftw3_threads)
0436     add_library(FFTW3::fftw3_threads UNKNOWN IMPORTED GLOBAL)
0437     set_target_properties(FFTW3::fftw3 PROPERTIES
0438         IMPORTED_LOCATION "${FFTW3_fftw3_threads_LIBRARY}"
0439         INTERFACE_COMPILE_OPTIONS "${PKG_FFTW_THREADS_CFLAGS};${PKG_FFTW_THREADS_CFLAGS_OTHER}"
0440         INTERFACE_INCLUDE_DIRECTORIES "${FFTW3_INCLUDE_DIR};${PKG_FFTW_THREADS_INCLUDE_DIRS}"
0441         INTERFACE_LINK_LIBRARIES "${PKG_FFTW_THREADS_LINK_LIBRARIES}"
0442     )
0443 endif ()
0444 
0445 if (FFTW3_fftw3f_LIBRARY AND NOT TARGET FFTW3::fftw3f)
0446     add_library(FFTW3::fftw3f UNKNOWN IMPORTED GLOBAL)
0447     set_target_properties(FFTW3::fftw3f PROPERTIES
0448         IMPORTED_LOCATION "${FFTW3_fftw3f_LIBRARY}"
0449         INTERFACE_COMPILE_OPTIONS "${PKG_FFTW_SINGLE_CFLAGS};${PKG_FFTW_SINGLE_CFLAGS_OTHER}"
0450         INTERFACE_INCLUDE_DIRECTORIES "${FFTW3_INCLUDE_DIR};${PKG_FFTW_SINGLE_INCLUDE_DIRS}"
0451         INTERFACE_LINK_LIBRARIES "${PKG_FFTW_SINGLE_LINK_LIBRARIES}"
0452     )
0453 endif ()
0454 
0455 if (FFTW3_fftw3f_omp_LIBRARY AND NOT TARGET FFTW3::fftw3f_omp)
0456     add_library(FFTW3::fftw3f_omp UNKNOWN IMPORTED GLOBAL)
0457     set_target_properties(FFTW3::fftw3f_omp PROPERTIES
0458         IMPORTED_LOCATION "${FFTW3_fftw3f_omp_LIBRARY}"
0459         INTERFACE_COMPILE_OPTIONS "${PKG_FFTW_SINGLE_OMP_CFLAGS};${PKG_FFTW_SINGLE_OMP_CFLAGS_OTHER}"
0460         INTERFACE_INCLUDE_DIRECTORIES "${FFTW3_INCLUDE_DIR};${PKG_FFTW_SINGLE_OMP_INCLUDE_DIRS}"
0461         INTERFACE_LINK_LIBRARIES "${PKG_FFTW_SINGLE_OMP_LINK_LIBRARIES}"
0462     )
0463 endif ()
0464 
0465 if (FFTW3_fftw3f_threads_LIBRARY AND NOT TARGET FFTW3::fftw3f_threads)
0466     add_library(FFTW3::fftw3f_threads UNKNOWN IMPORTED GLOBAL)
0467     set_target_properties(FFTW3::fftw3f PROPERTIES
0468         IMPORTED_LOCATION "${FFTW3_fftw3f_threads_LIBRARY}"
0469         INTERFACE_COMPILE_OPTIONS "${PKG_FFTW_THREADS_CFLAGS};${PKG_FFTW_SINGLE_THREADS_CFLAGS_OTHER}"
0470         INTERFACE_INCLUDE_DIRECTORIES "${FFTW3_INCLUDE_DIR};${PKG_FFTW_SINGLE_THREADS_INCLUDE_DIRS}"
0471         INTERFACE_LINK_LIBRARIES "${PKG_FFTW_SINGLE_THREADS_LINK_LIBRARIES}"
0472     )
0473 endif ()
0474 
0475 if (FFTW3_fftw3l_LIBRARY AND NOT TARGET FFTW3::fftw3l)
0476     add_library(FFTW3::fftw3l UNKNOWN IMPORTED GLOBAL)
0477     set_target_properties(FFTW3::fftw3l PROPERTIES
0478         IMPORTED_LOCATION "${FFTW3_fftw3l_LIBRARY}"
0479         INTERFACE_COMPILE_OPTIONS "${PKG_FFTW_LONGDOUBLE_CFLAGS};${PKG_FFTW_LONGDOUBLE_CFLAGS_OTHER}"
0480         INTERFACE_INCLUDE_DIRECTORIES "${FFTW3_INCLUDE_DIR};${PKG_FFTW_LONGDOUBLE_INCLUDE_DIRS}"
0481         INTERFACE_LINK_LIBRARIES "${PKG_FFTW_LONGDOUBLE_LINK_LIBRARIES}"
0482     )
0483 endif ()
0484 
0485 if (FFTW3_fftw3l_omp_LIBRARY AND NOT TARGET FFTW3::fftw3l_omp)
0486     add_library(FFTW3::fftw3l_omp UNKNOWN IMPORTED GLOBAL)
0487     set_target_properties(FFTW3::fftw3l_omp PROPERTIES
0488         IMPORTED_LOCATION "${FFTW3_fftw3l_omp_LIBRARY}"
0489         INTERFACE_COMPILE_OPTIONS "${PKG_FFTW_LONGDOUBLE_OMP_CFLAGS};${PKG_FFTW_LONGDOUBLE_OMP_CFLAGS_OTHER}"
0490         INTERFACE_INCLUDE_DIRECTORIES "${FFTW3_INCLUDE_DIR};${PKG_FFTW_LONGDOUBLE_OMP_INCLUDE_DIRS}"
0491         INTERFACE_LINK_LIBRARIES "${PKG_FFTW_LONGDOUBLE_OMP_LINK_LIBRARIES}"
0492     )
0493 endif ()
0494 
0495 if (FFTW3_fftw3l_threads_LIBRARY AND NOT TARGET FFTW3::fftw3l_threads)
0496     add_library(FFTW3::fftw3l_threads UNKNOWN IMPORTED GLOBAL)
0497     set_target_properties(FFTW3::fftw3l_threads PROPERTIES
0498         IMPORTED_LOCATION "${FFTW3_fftw3l_threads_LIBRARY}"
0499         INTERFACE_COMPILE_OPTIONS "${PKG_FFTW_THREADS_CFLAGS};${PKG_FFTW_LONGDOUBLE_THREADS_CFLAGS_OTHER}"
0500         INTERFACE_INCLUDE_DIRECTORIES "${FFTW3_INCLUDE_DIR};${PKG_FFTW_LONGDOUBLE_THREADS_INCLUDE_DIRS}"
0501         INTERFACE_LINK_LIBRARIES "${PKG_FFTW_LONGDOUBLE_THREADS_LINK_LIBRARIES}"
0502     )
0503 endif ()
0504 
0505 if (FFTW3_fftw3q_LIBRARY AND NOT TARGET FFTW3::fftw3q)
0506     add_library(FFTW3::fftw3q UNKNOWN IMPORTED GLOBAL)
0507     set_target_properties(FFTW3::fftw3q PROPERTIES
0508         IMPORTED_LOCATION "${FFTW3_fftw3q_LIBRARY}"
0509         INTERFACE_COMPILE_OPTIONS "${PKG_FFTW_QUAD_CFLAGS};${PKG_FFTW_QUAD_CFLAGS_OTHER}"
0510         INTERFACE_INCLUDE_DIRECTORIES "${FFTW3_INCLUDE_DIR};${PKG_FFTW_QUAD_INCLUDE_DIRS}"
0511         INTERFACE_LINK_LIBRARIES "${PKG_FFTW_QUAD_LINK_LIBRARIES}"
0512     )
0513 endif ()
0514 
0515 if (FFTW3_fftw3q_omp_LIBRARY AND NOT TARGET FFTW3::fftw3q_omp)
0516     add_library(FFTW3::fftw3q_omp UNKNOWN IMPORTED GLOBAL)
0517     set_target_properties(FFTW3::fftw3q_omp PROPERTIES
0518         IMPORTED_LOCATION "${FFTW3_fftw3q_omp_LIBRARY}"
0519         INTERFACE_COMPILE_OPTIONS "${PKG_FFTW_QUAD_OMP_CFLAGS};${PKG_FFTW_QUAD_OMP_CFLAGS_OTHER}"
0520         INTERFACE_INCLUDE_DIRECTORIES "${FFTW3_INCLUDE_DIR};${PKG_FFTW_QUAD_OMP_INCLUDE_DIRS}"
0521         INTERFACE_LINK_LIBRARIES "${PKG_FFTW_QUAD_OMP_LINK_LIBRARIES}"
0522     )
0523 endif ()
0524 
0525 if (FFTW3_fftw3q_THREADS_LIBRARY AND NOT TARGET FFTW3::fftw3q_threads)
0526     add_library(FFTW3::fftw3q_threads UNKNOWN IMPORTED GLOBAL)
0527     set_target_properties(FFTW3::fftw3q PROPERTIES
0528         IMPORTED_LOCATION "${FFTW3_fftw3q_threads_LIBRARY}"
0529         INTERFACE_COMPILE_OPTIONS "${PKG_FFTW_THREADS_CFLAGS};${PKG_FFTW_QUAD_THREADS_CFLAGS_OTHER}"
0530         INTERFACE_INCLUDE_DIRECTORIES "${FFTW3_INCLUDE_DIR};${PKG_FFTW_QUAD_THREADS_INCLUDE_DIRS}"
0531         INTERFACE_LINK_LIBRARIES "${PKG_FFTW_QUAD_THREADS_LINK_LIBRARIES}"
0532     )
0533 endif ()
0534 
0535 mark_as_advanced(
0536     FFTW3_INCLUDE_DIR
0537     FFTW3_LIBRARY
0538     FFTW3_fftw3f_LIBRARY
0539     FFTW3_fftw3f_OMP_LIBRARY
0540     FFTW3_fftw3f_THREADS_LIBRARY
0541     FFTW3_fftw3l_LIBRARY
0542     FFTW3_fftw3l_OMP_LIBRARY
0543     FFTW3_fftw3l_THREADS_LIBRARY
0544     FFTW3_fftw3q_LIBRARY
0545     FFTW3_fftw3q_OMP_LIBRARY
0546     FFTW3_fftw3q_THREADS_LIBRARY
0547 )
0548 
0549 set(FFTW3_LIBRARIES
0550     ${FFTW3_LIBRARY}
0551     ${FFTW3_fftw3f_LIBRARY}
0552     ${FFTW3_fftw3f_OMP_LIBRARY}
0553     ${FFTW3_fftw3f_THREADS_LIBRARY}
0554     ${FFTW3_fftw3l_LIBRARY}
0555     ${FFTW3_fftw3l_OMP_LIBRARY}
0556     ${FFTW3_fftw3l_THREADS_LIBRARY}
0557     ${FFTW3_fftw3q_LIBRARY}
0558     ${FFTW3_fftw3q_OMP_LIBRARY}
0559     ${FFTW3_fftw3q_THREADS_LIBRARY}
0560 )
0561 set(FFTW_INCLUDE_DIRS ${FFTW3_INCLUDE_DIR})
0562 endif ()