Add CMake find modules for FFTW, LibSampleratae and LibSndFile.
Removes reliance on pkg-config for finding these libraries.
This commit is contained in:
@@ -165,14 +165,9 @@ FIND_PACKAGE(Qt5Test)
|
||||
SET(QT_QTTEST_LIBRARY Qt5::Test)
|
||||
|
||||
# check for libsndfile
|
||||
IF(PKG_CONFIG_FOUND)
|
||||
PKG_CHECK_MODULES(SNDFILE REQUIRED sndfile>=1.0.18)
|
||||
IF(NOT SNDFILE_FOUND)
|
||||
MESSAGE(FATAL_ERROR "LMMS requires libsndfile1 and libsndfile1-dev >= 1.0.18 - please install, remove CMakeCache.txt and try again!")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
FIND_PACKAGE(LibSndFile 1.0.18 REQUIRED)
|
||||
SET(SNDFILE_LIBRARIES sndfile-shared)
|
||||
FIND_PACKAGE(SndFile REQUIRED)
|
||||
IF(NOT SNDFILE_FOUND)
|
||||
MESSAGE(FATAL_ERROR "LMMS requires libsndfile1 and libsndfile1-dev >= 1.0.18 - please install, remove CMakeCache.txt and try again!")
|
||||
ENDIF()
|
||||
# check if we can use SF_SET_COMPRESSION_LEVEL
|
||||
IF(NOT SNDFILE_VERSION VERSION_LESS 1.0.26)
|
||||
@@ -396,15 +391,8 @@ IF(WANT_JACK)
|
||||
ENDIF(JACK_FOUND)
|
||||
ENDIF(WANT_JACK)
|
||||
|
||||
|
||||
# check for FFTW3F-library
|
||||
IF(PKG_CONFIG_FOUND)
|
||||
PKG_CHECK_MODULES(FFTW3F REQUIRED fftw3f>=3.0.0)
|
||||
ELSE()
|
||||
#currently find_package for fftw is broken in vcpkg. Replace this when fixed
|
||||
FIND_PATH(FFTW3F_INCLUDE_DIRS fftw3.h)
|
||||
FIND_LIBRARY(FFTW3F_LIBRARIES fftw3f)
|
||||
ENDIF()
|
||||
FIND_PACKAGE(FFTW COMPONENTS fftw3f REQUIRED)
|
||||
|
||||
# check for FLTK
|
||||
FIND_PACKAGE(FLTK)
|
||||
@@ -486,13 +474,7 @@ ELSE()
|
||||
ENDIF(WANT_DEBUG_FPE)
|
||||
|
||||
# check for libsamplerate
|
||||
IF(PKG_CONFIG_FOUND)
|
||||
PKG_CHECK_MODULES(SAMPLERATE REQUIRED samplerate>=0.1.8)
|
||||
ELSE()
|
||||
#TODO no cmake config support. Can we check the version some other way?
|
||||
FIND_FILE(SAMPLERATE_INCLUDE_DIRS samplerate.h)
|
||||
FIND_LIBRARY(SAMPLERATE_LIBRARIES libsamplerate-0)
|
||||
ENDIF()
|
||||
FIND_PACKAGE(Samplerate 0.1.8 REQUIRED)
|
||||
|
||||
# set compiler flags
|
||||
IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
|
||||
|
||||
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)
|
||||
@@ -1,6 +1,5 @@
|
||||
INCLUDE(BuildPlugin)
|
||||
INCLUDE_DIRECTORIES(${FFTW3F_INCLUDE_DIRS})
|
||||
LINK_DIRECTORIES(${FFTW3F_LIBRARY_DIRS})
|
||||
LINK_LIBRARIES(${FFTW3F_LIBRARIES})
|
||||
BUILD_PLUGIN(eq EqEffect.cpp EqCurve.cpp EqCurve.h EqControls.cpp EqControlsDialog.cpp EqFilter.h EqParameterWidget.cpp EqFader.h EqSpectrumView.h EqSpectrumView.cpp
|
||||
MOCFILES EqControls.h EqControlsDialog.h EqCurve.h EqParameterWidget.h EqFader.h EqSpectrumView.h EMBEDDED_RESOURCES *.png)
|
||||
|
||||
@@ -35,7 +35,7 @@ FOREACH(_item ${XML_SOURCES})
|
||||
|
||||
# Vocoder does not use fftw
|
||||
IF(NOT ("${_plugin}" STREQUAL "vocoder_1337"))
|
||||
TARGET_LINK_LIBRARIES("${_plugin}" -lfftw3f)
|
||||
TARGET_LINK_LIBRARIES("${_plugin}" ${FFTW3F_LIBRARIES})
|
||||
ENDIF()
|
||||
IF(NOT MSVC)
|
||||
TARGET_LINK_LIBRARIES("${_plugin}" m)
|
||||
@@ -51,10 +51,9 @@ ADD_DEFINITIONS(-DFFTW3)
|
||||
INCLUDE_DIRECTORIES(
|
||||
"${CMAKE_SOURCE_DIR}/include"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/ladspa"
|
||||
${FFTW3F_INCLUDE_DIRS}
|
||||
"${FFTW3F_INCLUDE_DIRS}"
|
||||
"${CMAKE_BINARY_DIR}"
|
||||
)
|
||||
LINK_DIRECTORIES(${FFTW3F_LIBRARY_DIRS})
|
||||
|
||||
ADD_LIBRARY(iir STATIC ladspa/util/iir.c)
|
||||
SET_TARGET_PROPERTIES(iir PROPERTIES COMPILE_FLAGS "${PIC_FLAGS}")
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
INCLUDE(BuildPlugin)
|
||||
INCLUDE_DIRECTORIES(${FFTW3F_INCLUDE_DIRS})
|
||||
LINK_DIRECTORIES(${FFTW3F_LIBRARY_DIRS})
|
||||
LINK_LIBRARIES(${FFTW3F_LIBRARIES})
|
||||
BUILD_PLUGIN(spectrumanalyzer SpectrumAnalyzer.cpp SpectrumAnalyzerControls.cpp SpectrumAnalyzerControlDialog.cpp SpectrumAnalyzer.h SpectrumAnalyzerControls.h SpectrumAnalyzerControlDialog.h MOCFILES SpectrumAnalyzerControlDialog.h SpectrumAnalyzerControls.h EMBEDDED_RESOURCES *.png)
|
||||
|
||||
Reference in New Issue
Block a user