Add CMake find modules for FFTW, LibSampleratae and LibSndFile.
Removes reliance on pkg-config for finding these libraries.
This commit is contained in:
47
cmake/modules/FindFFTW.cmake
Normal file
47
cmake/modules/FindFFTW.cmake
Normal file
@@ -0,0 +1,47 @@
|
||||
# FindFFTW.cmake - Try to find FFTW3
|
||||
# Copyright (c) 2018 Lukas W <lukaswhl/at/gmail.com>
|
||||
# This file is MIT licensed.
|
||||
# See http://opensource.org/licenses/MIT
|
||||
|
||||
# Try pkgconfig for hints
|
||||
find_package(PkgConfig QUIET)
|
||||
|
||||
if(NOT FFTW_FIND_COMPONENTS)
|
||||
set(FFTW_FIND_COMPONENTS fftw3f fftw3 fftwl)
|
||||
endif()
|
||||
|
||||
if(PKG_CONFIG_FOUND)
|
||||
pkg_check_modules(FFTW_PKG fftw>=3.0.0)
|
||||
pkg_check_modules(FFTW3_PKG fftw3>=3.0.0)
|
||||
endif()
|
||||
|
||||
find_path(FFTW_INCLUDE_DIR
|
||||
NAMES fftw3.h
|
||||
PATHS ${FFTW_PKG_INCLUDE_DIRS} ${FFTW3_PKG_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
set(check_list)
|
||||
|
||||
foreach(comp ${FFTW_FIND_COMPONENTS})
|
||||
string(TOUPPER ${comp} COMP)
|
||||
if(PKG_CONFIG_FOUND)
|
||||
pkg_check_modules(${COMP}_PKG REQUIRED ${comp}>=3.0.0)
|
||||
endif()
|
||||
|
||||
find_library(${COMP}_LIBRARY
|
||||
NAMES ${comp}
|
||||
PATHS ${comp}_PKG_LIBRARY_DIRS
|
||||
)
|
||||
list(APPEND check_list ${COMP}_LIBRARY)
|
||||
|
||||
set(${COMP}_LIBRARIES ${${COMP}_LIBRARY} CACHE FILEPATH "${COMP} library path")
|
||||
set(${COMP}_INCLUDE_DIRS ${FFTW_INCLUDE_DIR} CACHE PATH "${COMP} include path")
|
||||
mark_as_advanced(${COMP}_LIBRARIES ${COMP}_INCLUDE_DIRS)
|
||||
endforeach()
|
||||
|
||||
find_package(PackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(FFTW DEFAULT_MSG FFTW_INCLUDE_DIR ${check_list})
|
||||
|
||||
set(FFTW_INCLUDE_DIRS ${FFTW_INCLUDE_DIR})
|
||||
|
||||
mark_as_advanced(FFTW_LIBRARY FFTW_LIBRARIES FFTW_INCLUDE_DIR FFTW_INCLUDE_DIRS ${check_list})
|
||||
34
cmake/modules/FindSamplerate.cmake
Normal file
34
cmake/modules/FindSamplerate.cmake
Normal file
@@ -0,0 +1,34 @@
|
||||
# FindFFTW.cmake - Try to find FFTW3
|
||||
# Copyright (c) 2018 Lukas W <lukaswhl/at/gmail.com>
|
||||
# This file is MIT licensed.
|
||||
# See http://opensource.org/licenses/MIT
|
||||
|
||||
find_package(PkgConfig QUIET)
|
||||
if(PKG_CONFIG_FOUND)
|
||||
pkg_check_modules(SAMPLERATE_PKG samplerate)
|
||||
endif()
|
||||
|
||||
find_path(SAMPLERATE_INCLUDE_DIR
|
||||
NAMES samplerate.h
|
||||
PATHS ${SAMPLERATE_PKG_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
set(SAMPLERATE_NAMES samplerate libsamplerate)
|
||||
if(Samplerate_FIND_VERSION_MAJOR)
|
||||
list(APPEND SAMPLERATE_NAMES libsamplerate-${Samplerate_FIND_VERSION_MAJOR})
|
||||
else()
|
||||
list(APPEND SAMPLERATE_NAMES libsamplerate-0)
|
||||
endif()
|
||||
|
||||
find_library(SAMPLERATE_LIBRARY
|
||||
NAMES ${SAMPLERATE_NAMES}
|
||||
PATHS ${SAMPLERATE_PKG_LIBRARY_DIRS}
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(SAMPLERATE DEFAULT_MSG SAMPLERATE_LIBRARY SAMPLERATE_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(SAMPLERATE_INCLUDE_DIR SAMPLERATE_LIBRARY )
|
||||
|
||||
set(SAMPLERATE_LIBRARIES ${SAMPLERATE_LIBRARY} )
|
||||
set(SAMPLERATE_INCLUDE_DIRS ${SAMPLERATE_INCLUDE_DIR})
|
||||
39
cmake/modules/FindSndFile.cmake
Normal file
39
cmake/modules/FindSndFile.cmake
Normal file
@@ -0,0 +1,39 @@
|
||||
# FindSndFile.cmake - Try to find libsndfile
|
||||
# Copyright (c) 2018 Lukas W <lukaswhl/at/gmail.com>
|
||||
# This file is MIT licensed.
|
||||
# See http://opensource.org/licenses/MIT
|
||||
|
||||
# Try pkgconfig for hints
|
||||
find_package(PkgConfig QUIET)
|
||||
if(PKG_CONFIG_FOUND)
|
||||
pkg_check_modules(SNDFILE_PKG sndfile)
|
||||
endif(PKG_CONFIG_FOUND)
|
||||
set(SndFile_DEFINITIONS ${SNDFILE_PKG_CFLAGS_OTHER})
|
||||
|
||||
if(WIN32)
|
||||
# Try Vcpkg
|
||||
find_package(LibSndFile ${SndFile_FIND_VERSION} CONFIG QUIET)
|
||||
if(LibSndFile_FOUND)
|
||||
get_target_property(LibSndFile_Location sndfile-shared LOCATION)
|
||||
get_target_property(LibSndFile_Include_Path sndfile-shared INTERFACE_INCLUDE_DIRECTORIES)
|
||||
get_filename_component(LibSndFile_Path LibSndFile_Location PATH)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_path(SNDFILE_INCLUDE_DIR
|
||||
NAMES sndfile.h
|
||||
PATHS ${SNDFILE_PKG_INCLUDE_DIRS} ${LibSndFile_Include_Path}
|
||||
)
|
||||
|
||||
find_library(SNDFILE_LIBRARY
|
||||
NAMES sndfile libsndfile libsndfile-1
|
||||
PATHS ${SNDFILE_PKG_LIBRARY_DIRS} ${LibSndFile_Path}
|
||||
)
|
||||
|
||||
find_package(PackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(SndFile DEFAULT_MSG SNDFILE_LIBRARY SNDFILE_INCLUDE_DIR)
|
||||
|
||||
set(SNDFILE_LIBRARIES ${SNDFILE_LIBRARY})
|
||||
set(SNDFILE_INCLUDE_DIRS ${SNDFILE_INCLUDE_DIR})
|
||||
|
||||
mark_as_advanced(SNDFILE_LIBRARY SNDFILE_LIBRARIES SNDFILE_INCLUDE_DIR SNDFILE_INCLUDE_DIRS)
|
||||
Reference in New Issue
Block a user