Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F92131679
FindFFTW3.cmake
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sun, Nov 17, 15:31
Size
4 KB
Mime Type
text/x-c
Expires
Tue, Nov 19, 15:31 (1 d, 22 h)
Engine
blob
Format
Raw Data
Handle
22377481
Attached To
rSPCLIBS SPClibs
FindFFTW3.cmake
View Options
# - Find the FFTW3 library
#
# Usage:
# find_package(FFTW [REQUIRED] [QUIET] )
#
# It sets the following variables:
# FFTW3_FOUND ... true if fftw is found on the system
# FFTW3_LIBRARIES ... full path to fftw library
# FFTW3_INCLUDES ... fftw include directory
#
# The following variables will be checked by the function
# FFTW3_USE_STATIC_LIBS ... if true, only static libraries are found
# FFTW3_ROOT ... if set, the libraries are exclusively searched
# under this path
# FFTW3_LIBRARY ... fftw library to use
# FFTW3_INCLUDE_DIR ... fftw include directory
#
#If environment variable FFTWDIR is specified, it has same effect as FFTW3_ROOT
if(NOT FFTW3_ROOT AND ENV{FFTWDIR})
set(FFTW3_ROOT $ENV{FFTWDIR})
endif()
set(_FFTW3_PRECISIONS "double" "float" "quad")
set(_FFTW3_IMPLEMENTATIONS "sequential" "mpi" "openmp" "threads")
if(NOT FFTW3_FIND_COMPONENTS)
set(FFTW3_FIND_COMPONENTS "double" "float" "quad")
endif()
set(_precisions)
set(_implementations)
foreach(_comp ${FFTW3_FIND_COMPONENTS})
list(FIND _FFTW3_PRECISIONS ${_comp} _pos)
if(NOT _pos EQUAL -1)
list(APPEND _precisions ${_comp})
else()
list(APPEND _implementations ${_comp})
endif()
endforeach()
if("${_implementations}" STREQUAL "")
set(_implementations "sequential")
endif()
#Check whether to search static or dynamic libs
set(CMAKE_FIND_LIBRARY_SUFFIXES_SAV ${CMAKE_FIND_LIBRARY_SUFFIXES})
if(${FFTW3_USE_STATIC_LIBS})
set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX})
set(_import_type STATIC)
else()
set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_SHARED_LIBRARY_SUFFIX})
set(_import_type SHARED)
endif()
set(_precision_double)
set(_precision_simple "f")
set(_precision_quad "l")
set(_needed_vars)
foreach(_impl ${_implementations})
if("${_impl}" STREQUAL "sequential")
set(_suffix)
set(_namespace)
elseif("${_impl}" STREQUAL "openmp")
set(_suffix "_omp")
set(_namespace "::${_impl}")
else()
set(_suffix "_${_impl}")
set(_namespace "::${_impl}")
endif()
set(_include_suffix)
if("${_impl}" STREQUAL "mpi")
set(_include_suffix "-mpi")
endif()
find_path(
FFTW3_${_impl}_INCLUDE_DIRS
NAMES "fftw3${_include_suffix}.h"
PATHS "${FFTW_ROOT}" ENV FFTW_ROOT
PATH_SUFFIXES "include"
)
mark_as_advanced(FFTW3_${_impl}_INCLUDE_DIRS)
list(APPEND _needed_vars
FFTW3_${_impl}_INCLUDE_DIRS
FFTW3_${_impl}_LIBRARIES
)
set(FFTW3_${_impl}_LIBRARIES)
foreach(_prec ${_precisions})
set(_lib FFTW3_${_prec}_${_impl}_LIBRARY)
find_library(
${_lib}
NAMES "fftw3${_precision_${_prec}}${_suffix}"
PATHS "${FFTW_ROOT}" ENV FFTW_ROOT
PATH_SUFFIXES "lib" "lib64"
)
if(${_lib})
list(APPEND FFTW3_${_impl}_LIBRARIES ${${_lib}})
set(FFTW3_${_prec}_FOUND TRUE)
set(FFTW3_${_impl}_FOUND TRUE)
if(NOT DEFINED _fftw_version OR NOT _fftw_version)
file(WRITE "${PROJECT_BINARY_DIR}/_fftw_version.c"
"#include <fftw3${_include_suffix}.h>
#include <stdio.h>
int main() {
printf(\"%s\", fftw_version);
return 0;
}")
try_run(_res _compile
${PROJECT_BINARY_DIR}
"${PROJECT_BINARY_DIR}/_fftw_version.c"
CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${FFTW3_${_impl}_INCLUDE_DIRS}"
LINK_LIBRARIES ${${_lib}}
RUN_OUTPUT_VARIABLE _fftw_version
COMPILE_OUTPUT_VARIABLE _compile_out
)
if(_fftw_version)
string(REGEX MATCH "[0-9.]+" _fftw_version ${_fftw_version})
endif()
endif()
endif()
mark_as_advanced(FFTW3_${_prec}_${_impl}_LIBRARY)
endforeach()
endforeach()
if(FFTW3_sequential_INCLUDE_DIRS)
set(FFTW3_INCLUDE_DIRS ${FFTW3_sequential_INCLUDE_DIRS}
CACHE PATH "Path to the include of fftw" FORCE)
list(APPEND _needed_vars FFTW3_INCLUDE_DIRS)
mark_as_advanced(FFTW3_INCLUDE_DIRS)
endif()
if(FFTW3_sequential_LIBRARIES)
set(FFTW3_LIBRARIES ${FFTW3_sequential_LIBRARIES}
CACHE PATH "FFTW libraries" FORCE)
list(APPEND _needed_vars FFTW3_LIBRARIES)
mark_as_advanced(FFTW3_LIBRARIES)
endif()
set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_SAV})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(FFTW3
REQUIRED_VARS ${_needed_vars}
VERSION_VAR _fftw_version
HANDLE_COMPONENTS)
Event Timeline
Log In to Comment