79 lines
2.5 KiB
CMake
Raw Permalink Normal View History

2021-10-14 13:47:35 +02:00
# ---------------------------------
# Finds FFTW3
#
# Sets define if the lib is found, adds include paths, libs
#
# ---------
GET_PROPERTY(OV_PRINTED GLOBAL PROPERTY OV_TRIED_ThirdPartyFFTW3)
# On windows, we take the itpp one.
IF(WIN32)
FIND_PATH(PATH_FFTW3 include/fftw3.h PATHS ${LIST_DEPENDENCIES_PATH} PATH_SUFFIXES itpp)
IF(PATH_FFTW3)
SET(FFTW3_FOUND TRUE)
# Of course the name of the library is this or that, depending on the circumstances ...
IF("${PLATFORM_TARGET}" STREQUAL "x64")
FIND_LIBRARY(FFTW3_TMP NAMES libfftw3-3_win64 PATHS ${PATH_FFTW3}/lib NO_DEFAULT_PATH)
IF(FFTW3_TMP)
SET(FFTW3_LIBRARIES libfftw3-3_win64)
ELSE(FFTW3_TMP)
SET(FFTW3_LIBRARIES libfftw3-3)
ENDIF(FFTW3_TMP)
ELSE()
FIND_LIBRARY(FFTW3_TMP NAMES libfftw3-3_win32 PATHS ${PATH_FFTW3}/lib NO_DEFAULT_PATH)
IF(FFTW3_TMP)
SET(FFTW3_LIBRARIES libfftw3-3_win32)
ELSE(FFTW3_TMP)
SET(FFTW3_LIBRARIES libfftw3-3)
ENDIF(FFTW3_TMP)
ENDIF()
SET(FFTW3_INCLUDE_DIRS ${PATH_FFTW3}/include )
SET(FFTW3_LIBRARY_DIRS ${PATH_FFTW3}/lib )
ENDIF(PATH_FFTW3)
ENDIF(WIN32)
IF(UNIX)
INCLUDE("FindThirdPartyPkgConfig")
pkg_check_modules(FFTW3 fftw3)
ENDIF(UNIX)
IF(FFTW3_FOUND)
SET(FFTW3_LOCATED_LIBS "")
OV_PRINT(OV_PRINTED " Found fftw3 includes...")
FOREACH(FFTW3_LIB ${FFTW3_LIBRARIES})
SET(FFTW3_LIB1 "FFTW3_LIB1-NOTFOUND")
# The list is 'fftw3 m' on Fedora 19. CMake gets confused unless the two following lines are used ...
# 1) catch fftw3 if its under dependencies/lib/ (fedora19)
FIND_LIBRARY(FFTW3_LIB1 NAMES ${FFTW3_LIB} PATHS ${LIST_DEPENDENCIES_PATH} PATH_SUFFIXES lib NO_DEFAULT_PATH)
# 2) catch fftw3 from found paths, and libm from usual system paths, i.e. default path is allowed. (covers other systems + libm on fedora).
FIND_LIBRARY(FFTW3_LIB1 NAMES ${FFTW3_LIB} PATHS ${FFTW3_LIBRARY_DIRS})
IF(FFTW3_LIB1)
OV_PRINT(OV_PRINTED " [ OK ] Third party lib ${FFTW3_LIB1}")
LIST(APPEND FFTW3_LOCATED_LIBS ${FFTW3_LIB1})
ELSE(FFTW3_LIB1)
OV_PRINT(OV_PRINTED " [FAILED] Third party lib ${FFTW3_LIB}")
SET(FFTW3_FOUND "-NOTFOUND")
BREAK()
ENDIF(FFTW3_LIB1)
ENDFOREACH(FFTW3_LIB)
ENDIF(FFTW3_FOUND)
IF(FFTW3_FOUND)
INCLUDE_DIRECTORIES(${FFTW3_INCLUDE_DIRS})
ADD_DEFINITIONS(${FFTW3_CFLAGS})
FOREACH(FFTW3_LIB ${FFTW3_LOCATED_LIBS})
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${FFTW3_LIB})
ENDFOREACH(FFTW3_LIB)
ADD_DEFINITIONS(-DTARGET_HAS_ThirdPartyFFTW3)
ELSE(FFTW3_FOUND)
OV_PRINT(OV_PRINTED " FAILED to find fftw3...")
ENDIF(FFTW3_FOUND)
SET_PROPERTY(GLOBAL PROPERTY OV_TRIED_ThirdPartyFFTW3 "Yes")