Merge pull request #585 from jpcima/dependency-management
Dependency management
This commit is contained in:
commit
c045f71706
14 changed files with 223 additions and 230 deletions
|
|
@ -36,6 +36,7 @@ option (SFIZZ_STATIC_DEPENDENCIES "Link dependencies statically [default: OFF]"
|
|||
option (SFIZZ_RELEASE_ASSERTS "Forced assertions in release builds [default: OFF]" OFF)
|
||||
|
||||
include (SfizzConfig)
|
||||
include (SfizzDeps)
|
||||
|
||||
# Don't use IPO in non Release builds
|
||||
include (CheckIPO)
|
||||
|
|
|
|||
|
|
@ -1,37 +1,8 @@
|
|||
project(sfizz)
|
||||
|
||||
# Check SIMD
|
||||
include(SfizzSIMDSourceFiles)
|
||||
set(BENCHMARK_SIMD_SOURCES)
|
||||
sfizz_add_simd_sources(BENCHMARK_SIMD_SOURCES "../src")
|
||||
find_package(benchmark CONFIG REQUIRED)
|
||||
|
||||
# Check libsamplerate
|
||||
find_library(SAMPLERATE_LIBRARY "samplerate")
|
||||
find_path(SAMPLERATE_INCLUDE_DIR "samplerate.h")
|
||||
message(STATUS "Checking samplerate library: ${SAMPLERATE_LIBRARY}")
|
||||
message(STATUS "Checking samplerate includes: ${SAMPLERATE_INCLUDE_DIR}")
|
||||
if(SAMPLERATE_LIBRARY AND SAMPLERATE_INCLUDE_DIR)
|
||||
add_library(sfizz_samplerate INTERFACE)
|
||||
add_library(sfizz::samplerate ALIAS sfizz_samplerate)
|
||||
target_include_directories(sfizz_samplerate INTERFACE "${SAMPLERATE_INCLUDE_DIR}")
|
||||
target_link_libraries(sfizz_samplerate INTERFACE "${SAMPLERATE_LIBRARY}")
|
||||
endif()
|
||||
|
||||
add_library(bm_simd STATIC ${BENCHMARK_SIMD_SOURCES})
|
||||
target_link_libraries(bm_simd PRIVATE absl::span sfizz::cpuid)
|
||||
add_library(bm_ftz STATIC ../src/sfizz/ScopedFTZ.cpp)
|
||||
|
||||
macro(sfizz_add_benchmark TARGET)
|
||||
add_executable("${TARGET}" ${ARGN})
|
||||
target_link_libraries("${TARGET}"
|
||||
PRIVATE sfizz::filesystem absl::span absl::algorithm
|
||||
PRIVATE benchmark::benchmark benchmark::benchmark_main
|
||||
PRIVATE bm_simd bm_ftz)
|
||||
if(LIBATOMIC_FOUND)
|
||||
target_link_libraries("${TARGET}" PRIVATE atomic)
|
||||
endif()
|
||||
target_include_directories("${TARGET}" PRIVATE ../src/sfizz)
|
||||
PRIVATE sfizz::internal sfizz::filesystem absl::span absl::algorithm
|
||||
PRIVATE benchmark::benchmark benchmark::benchmark_main)
|
||||
sfizz_enable_fast_math("${TARGET}")
|
||||
endmacro()
|
||||
|
||||
|
|
@ -44,7 +15,6 @@ sfizz_add_benchmark(bm_gain BM_gain.cpp)
|
|||
sfizz_add_benchmark(bm_divide BM_divide.cpp)
|
||||
sfizz_add_benchmark(bm_ramp BM_ramp.cpp)
|
||||
sfizz_add_benchmark(bm_ADSR BM_ADSR.cpp)
|
||||
target_link_libraries(bm_ADSR PRIVATE sfizz::internal)
|
||||
|
||||
sfizz_add_benchmark(bm_add BM_add.cpp)
|
||||
sfizz_add_benchmark(bm_multiplyAdd BM_multiplyAdd.cpp)
|
||||
|
|
@ -66,15 +36,12 @@ sfizz_add_benchmark(bm_clamp BM_clamp.cpp)
|
|||
sfizz_add_benchmark(bm_allWithin BM_allWithin.cpp)
|
||||
|
||||
sfizz_add_benchmark(bm_logger BM_logger.cpp)
|
||||
target_link_libraries(bm_logger PRIVATE sfizz::internal)
|
||||
sfizz_add_benchmark(bm_smoothers BM_smoothers.cpp)
|
||||
target_link_libraries(bm_smoothers PRIVATE sfizz::internal)
|
||||
sfizz_add_benchmark(bm_powerFollower BM_powerFollower.cpp)
|
||||
target_link_libraries(bm_powerFollower PRIVATE sfizz::internal)
|
||||
|
||||
if(TARGET sfizz::samplerate)
|
||||
sfizz_add_benchmark(bm_resample BM_resample.cpp ${BENCHMARK_SIMD_SOURCES})
|
||||
target_link_libraries(bm_resample PRIVATE sfizz::samplerate sfizz::sndfile sfizz::cpuid sfizz::hiir)
|
||||
target_link_libraries(bm_resample PRIVATE sfizz::samplerate sfizz::sndfile sfizz::hiir)
|
||||
endif()
|
||||
|
||||
sfizz_add_benchmark(bm_envelopes BM_envelopes.cpp)
|
||||
|
|
@ -104,13 +71,7 @@ target_link_libraries(bm_filterModulation PRIVATE sfizz::sndfile)
|
|||
sfizz_add_benchmark(bm_filterStereoMono BM_filterStereoMono.cpp ../src/sfizz/SfzFilter.cpp)
|
||||
target_link_libraries(bm_filterStereoMono PRIVATE sfizz::sndfile)
|
||||
|
||||
sfizz_add_benchmark(bm_stringResonator BM_stringResonator.cpp
|
||||
../src/sfizz/effects/impl/ResonantArray.cpp
|
||||
../src/sfizz/effects/impl/ResonantArraySSE.cpp
|
||||
../src/sfizz/effects/impl/ResonantArrayAVX.cpp
|
||||
../src/sfizz/effects/impl/ResonantString.cpp
|
||||
../src/sfizz/effects/impl/ResonantStringSSE.cpp
|
||||
../src/sfizz/effects/impl/ResonantStringAVX.cpp)
|
||||
sfizz_add_benchmark(bm_stringResonator BM_stringResonator.cpp)
|
||||
target_link_libraries(bm_stringResonator PRIVATE sfizz::sndfile)
|
||||
|
||||
add_custom_target(sfizz_benchmarks)
|
||||
|
|
|
|||
|
|
@ -1,26 +1,12 @@
|
|||
project(sfizz)
|
||||
|
||||
if(SFIZZ_JACK)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(JACK "jack" REQUIRED)
|
||||
link_directories(${JACK_LIBRARY_DIRS})
|
||||
|
||||
add_executable(sfizz_jack MidiHelpers.h jack_client.cpp)
|
||||
target_include_directories(sfizz_jack PRIVATE ${JACK_INCLUDE_DIRS})
|
||||
target_link_libraries(sfizz_jack PRIVATE sfizz::sfizz absl::flags_parse ${JACK_LIBRARIES})
|
||||
target_link_libraries(sfizz_jack PRIVATE sfizz::sfizz sfizz::jack absl::flags_parse)
|
||||
sfizz_enable_lto_if_needed(sfizz_jack)
|
||||
install(TARGETS sfizz_jack DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
COMPONENT "jack" OPTIONAL)
|
||||
endif()
|
||||
|
||||
if(SFIZZ_RENDER)
|
||||
add_library(sfizz_fmidi STATIC
|
||||
"external/fmidi/sources/fmidi/fmidi.h"
|
||||
"external/fmidi/sources/fmidi/fmidi_mini.cpp")
|
||||
add_library(sfizz::fmidi ALIAS sfizz_fmidi)
|
||||
target_include_directories(sfizz_fmidi PUBLIC "external/fmidi/sources")
|
||||
target_compile_definitions(sfizz_fmidi PUBLIC "FMIDI_STATIC=1" "FMIDI_DISABLE_DESCRIBE_API=1")
|
||||
|
||||
add_executable(sfizz_render MidiHelpers.h sfizz_render.cpp)
|
||||
target_link_libraries(sfizz_render PRIVATE sfizz::internal sfizz::fmidi sfizz::sndfile sfizz::cxxopts)
|
||||
sfizz_enable_lto_if_needed(sfizz_render)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
include(CMakeDependentOption)
|
||||
include(CheckCXXCompilerFlag)
|
||||
include(CheckLibraryExists)
|
||||
include(GNUWarnings)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 11 CACHE STRING "C++ standard to be used")
|
||||
|
|
@ -30,26 +29,6 @@ if(WIN32)
|
|||
add_compile_definitions(NOMINMAX)
|
||||
endif()
|
||||
|
||||
# Find macOS system libraries
|
||||
if(APPLE)
|
||||
find_library(APPLE_COREFOUNDATION_LIBRARY "CoreFoundation")
|
||||
find_library(APPLE_FOUNDATION_LIBRARY "Foundation")
|
||||
find_library(APPLE_COCOA_LIBRARY "Cocoa")
|
||||
find_library(APPLE_CARBON_LIBRARY "Carbon")
|
||||
find_library(APPLE_OPENGL_LIBRARY "OpenGL")
|
||||
find_library(APPLE_ACCELERATE_LIBRARY "Accelerate")
|
||||
find_library(APPLE_QUARTZCORE_LIBRARY "QuartzCore")
|
||||
find_library(APPLE_AUDIOTOOLBOX_LIBRARY "AudioToolbox")
|
||||
find_library(APPLE_AUDIOUNIT_LIBRARY "AudioUnit")
|
||||
find_library(APPLE_COREAUDIO_LIBRARY "CoreAudio")
|
||||
find_library(APPLE_COREMIDI_LIBRARY "CoreMIDI")
|
||||
# See https://stackoverflow.com/a/54103956
|
||||
# and https://stackoverflow.com/a/21692023
|
||||
# Apparently this is not needed in Travis CI using addons
|
||||
# but it is in Appveyor instead
|
||||
list(APPEND CMAKE_PREFIX_PATH /usr/local)
|
||||
endif()
|
||||
|
||||
# The variable CMAKE_SYSTEM_PROCESSOR is incorrect on Visual studio...
|
||||
# see https://gitlab.kitware.com/cmake/cmake/issues/15170
|
||||
|
||||
|
|
@ -90,48 +69,6 @@ function(sfizz_enable_fast_math NAME)
|
|||
endif()
|
||||
endfunction()
|
||||
|
||||
# The jsl utility library for C++
|
||||
add_library(sfizz_jsl INTERFACE)
|
||||
add_library(sfizz::jsl ALIAS sfizz_jsl)
|
||||
target_include_directories(sfizz_jsl INTERFACE "external/jsl/include")
|
||||
|
||||
# The cxxopts library
|
||||
add_library(sfizz_cxxopts INTERFACE)
|
||||
add_library(sfizz::cxxopts ALIAS sfizz_cxxopts)
|
||||
target_include_directories(sfizz_cxxopts INTERFACE "external/cxxopts")
|
||||
|
||||
# The sndfile library
|
||||
if(SFIZZ_USE_SNDFILE OR SFIZZ_DEMOS OR SFIZZ_BENCHMARKS OR SFIZZ_RENDER)
|
||||
add_library(sfizz_sndfile INTERFACE)
|
||||
add_library(sfizz::sndfile ALIAS sfizz_sndfile)
|
||||
if(SFIZZ_USE_VCPKG OR CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
||||
find_package(SndFile CONFIG REQUIRED)
|
||||
find_path(SNDFILE_INCLUDE_DIR "sndfile.hh")
|
||||
target_include_directories(sfizz_sndfile INTERFACE "${SNDFILE_INCLUDE_DIR}")
|
||||
target_link_libraries(sfizz_sndfile INTERFACE SndFile::sndfile)
|
||||
else()
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(SNDFILE "sndfile" REQUIRED)
|
||||
target_include_directories(sfizz_sndfile INTERFACE ${SNDFILE_INCLUDE_DIRS})
|
||||
if(SFIZZ_STATIC_DEPENDENCIES)
|
||||
target_link_libraries(sfizz_sndfile INTERFACE ${SNDFILE_STATIC_LIBRARIES})
|
||||
else()
|
||||
target_link_libraries(sfizz_sndfile INTERFACE ${SNDFILE_LIBRARIES})
|
||||
endif()
|
||||
link_directories(${SNDFILE_LIBRARY_DIRS})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# The st_audiofile library
|
||||
if(SFIZZ_USE_SNDFILE)
|
||||
set(ST_AUDIO_FILE_USE_SNDFILE ON CACHE BOOL "" FORCE)
|
||||
set(ST_AUDIO_FILE_EXTERNAL_SNDFILE "sfizz::sndfile" CACHE STRING "" FORCE)
|
||||
else()
|
||||
set(ST_AUDIO_FILE_USE_SNDFILE OFF CACHE BOOL "" FORCE)
|
||||
set(ST_AUDIO_FILE_EXTERNAL_SNDFILE "" CACHE STRING "" FORCE)
|
||||
endif()
|
||||
add_subdirectory("external/st_audiofile" EXCLUDE_FROM_ALL)
|
||||
|
||||
# If we build with Clang, optionally use libc++. Enabled by default on Apple OS.
|
||||
cmake_dependent_option(USE_LIBCPP "Use libc++ with clang" "${APPLE}"
|
||||
"CMAKE_CXX_COMPILER_ID MATCHES Clang" OFF)
|
||||
|
|
@ -142,49 +79,6 @@ if(USE_LIBCPP)
|
|||
add_link_options(-lc++abi) # New command on CMake master, not in 3.12 release
|
||||
endif()
|
||||
|
||||
add_library(sfizz_pugixml STATIC "src/external/pugixml/src/pugixml.cpp")
|
||||
add_library(sfizz::pugixml ALIAS sfizz_pugixml)
|
||||
target_include_directories(sfizz_pugixml PUBLIC "src/external/pugixml/src")
|
||||
|
||||
add_library(sfizz_spline STATIC "src/external/spline/spline/spline.cpp")
|
||||
add_library(sfizz::spline ALIAS sfizz_spline)
|
||||
target_include_directories(sfizz_spline PUBLIC "src/external/spline")
|
||||
|
||||
add_library(sfizz_tunings STATIC "src/external/tunings/src/Tunings.cpp")
|
||||
add_library(sfizz::tunings ALIAS sfizz_tunings)
|
||||
target_include_directories(sfizz_tunings PUBLIC "src/external/tunings/include")
|
||||
|
||||
add_library(sfizz_hiir INTERFACE)
|
||||
add_library(sfizz::hiir ALIAS sfizz_hiir)
|
||||
target_include_directories(sfizz_hiir INTERFACE "src/external/hiir")
|
||||
|
||||
add_library(sfizz_threadpool INTERFACE)
|
||||
add_library(sfizz::threadpool ALIAS sfizz_threadpool)
|
||||
target_include_directories(sfizz_threadpool INTERFACE "external/threadpool")
|
||||
|
||||
add_library(sfizz_atomic_queue INTERFACE)
|
||||
add_library(sfizz::atomic_queue ALIAS sfizz_atomic_queue)
|
||||
target_include_directories(sfizz_atomic_queue INTERFACE "external/atomic_queue/include")
|
||||
|
||||
add_library(sfizz_filesystem INTERFACE)
|
||||
add_library(sfizz::filesystem ALIAS sfizz_filesystem)
|
||||
target_include_directories(sfizz_filesystem INTERFACE "external/filesystem/include")
|
||||
|
||||
add_library(sfizz_atomic INTERFACE)
|
||||
add_library(sfizz::atomic ALIAS sfizz_atomic)
|
||||
if(UNIX AND NOT APPLE)
|
||||
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/check_libatomic")
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/check_libatomic/check_libatomic.c" "int main() { return 0; }")
|
||||
try_compile(SFIZZ_LINK_LIBATOMIC "${CMAKE_CURRENT_BINARY_DIR}/check_libatomic"
|
||||
SOURCES "${CMAKE_CURRENT_BINARY_DIR}/check_libatomic/check_libatomic.c"
|
||||
LINK_LIBRARIES "atomic")
|
||||
if(SFIZZ_LINK_LIBATOMIC)
|
||||
target_link_libraries(sfizz_atomic INTERFACE "atomic")
|
||||
endif()
|
||||
else()
|
||||
set(SFIZZ_LINK_LIBATOMIC FALSE)
|
||||
endif()
|
||||
|
||||
# Don't show build information when building a different project
|
||||
function(show_build_info_if_needed)
|
||||
if(CMAKE_PROJECT_NAME STREQUAL "sfizz")
|
||||
|
|
@ -204,7 +98,6 @@ Build tests: ${SFIZZ_TESTS}
|
|||
Use sndfile: ${SFIZZ_USE_SNDFILE}
|
||||
Use vcpkg: ${SFIZZ_USE_VCPKG}
|
||||
Statically link dependencies: ${SFIZZ_STATIC_DEPENDENCIES}
|
||||
Link libatomic: ${SFIZZ_LINK_LIBATOMIC}
|
||||
Use clang libc++: ${USE_LIBCPP}
|
||||
Release asserts: ${SFIZZ_RELEASE_ASSERTS}
|
||||
|
||||
|
|
@ -217,5 +110,3 @@ Compiler CXX min size flags: ${CMAKE_CXX_FLAGS_MINSIZEREL}
|
|||
")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
find_package(Threads REQUIRED)
|
||||
|
|
|
|||
195
cmake/SfizzDeps.cmake
Normal file
195
cmake/SfizzDeps.cmake
Normal file
|
|
@ -0,0 +1,195 @@
|
|||
# Find system threads
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
# Find macOS system libraries
|
||||
if(APPLE)
|
||||
find_library(APPLE_COREFOUNDATION_LIBRARY "CoreFoundation")
|
||||
find_library(APPLE_FOUNDATION_LIBRARY "Foundation")
|
||||
find_library(APPLE_COCOA_LIBRARY "Cocoa")
|
||||
find_library(APPLE_CARBON_LIBRARY "Carbon")
|
||||
find_library(APPLE_OPENGL_LIBRARY "OpenGL")
|
||||
find_library(APPLE_ACCELERATE_LIBRARY "Accelerate")
|
||||
find_library(APPLE_QUARTZCORE_LIBRARY "QuartzCore")
|
||||
find_library(APPLE_AUDIOTOOLBOX_LIBRARY "AudioToolbox")
|
||||
find_library(APPLE_AUDIOUNIT_LIBRARY "AudioUnit")
|
||||
find_library(APPLE_COREAUDIO_LIBRARY "CoreAudio")
|
||||
find_library(APPLE_COREMIDI_LIBRARY "CoreMIDI")
|
||||
endif()
|
||||
|
||||
# Set up macOS library paths
|
||||
if(APPLE)
|
||||
# See https://stackoverflow.com/a/54103956
|
||||
# and https://stackoverflow.com/a/21692023
|
||||
# Apparently this is not needed in Travis CI using addons
|
||||
# but it is in Appveyor instead
|
||||
list(APPEND CMAKE_PREFIX_PATH /usr/local)
|
||||
endif()
|
||||
|
||||
# The jsl utility library for C++
|
||||
add_library(sfizz_jsl INTERFACE)
|
||||
add_library(sfizz::jsl ALIAS sfizz_jsl)
|
||||
target_include_directories(sfizz_jsl INTERFACE "external/jsl/include")
|
||||
|
||||
# The cxxopts library
|
||||
add_library(sfizz_cxxopts INTERFACE)
|
||||
add_library(sfizz::cxxopts ALIAS sfizz_cxxopts)
|
||||
target_include_directories(sfizz_cxxopts INTERFACE "external/cxxopts")
|
||||
|
||||
# The sndfile library
|
||||
if(SFIZZ_USE_SNDFILE OR SFIZZ_DEMOS OR SFIZZ_BENCHMARKS OR SFIZZ_RENDER)
|
||||
add_library(sfizz_sndfile INTERFACE)
|
||||
add_library(sfizz::sndfile ALIAS sfizz_sndfile)
|
||||
if(SFIZZ_USE_VCPKG OR CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
||||
find_package(SndFile CONFIG REQUIRED)
|
||||
find_path(SNDFILE_INCLUDE_DIR "sndfile.hh")
|
||||
target_include_directories(sfizz_sndfile INTERFACE "${SNDFILE_INCLUDE_DIR}")
|
||||
target_link_libraries(sfizz_sndfile INTERFACE SndFile::sndfile)
|
||||
else()
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(SNDFILE "sndfile" REQUIRED)
|
||||
target_include_directories(sfizz_sndfile INTERFACE ${SNDFILE_INCLUDE_DIRS})
|
||||
if(SFIZZ_STATIC_DEPENDENCIES)
|
||||
target_link_libraries(sfizz_sndfile INTERFACE ${SNDFILE_STATIC_LIBRARIES})
|
||||
else()
|
||||
target_link_libraries(sfizz_sndfile INTERFACE ${SNDFILE_LIBRARIES})
|
||||
endif()
|
||||
link_directories(${SNDFILE_LIBRARY_DIRS})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# The st_audiofile library
|
||||
if(SFIZZ_USE_SNDFILE)
|
||||
set(ST_AUDIO_FILE_USE_SNDFILE ON CACHE BOOL "" FORCE)
|
||||
set(ST_AUDIO_FILE_EXTERNAL_SNDFILE "sfizz::sndfile" CACHE STRING "" FORCE)
|
||||
else()
|
||||
set(ST_AUDIO_FILE_USE_SNDFILE OFF CACHE BOOL "" FORCE)
|
||||
set(ST_AUDIO_FILE_EXTERNAL_SNDFILE "" CACHE STRING "" FORCE)
|
||||
endif()
|
||||
add_subdirectory("external/st_audiofile" EXCLUDE_FROM_ALL)
|
||||
|
||||
# The pugixml library
|
||||
add_library(sfizz_pugixml STATIC "src/external/pugixml/src/pugixml.cpp")
|
||||
add_library(sfizz::pugixml ALIAS sfizz_pugixml)
|
||||
target_include_directories(sfizz_pugixml PUBLIC "src/external/pugixml/src")
|
||||
|
||||
# The spline library
|
||||
add_library(sfizz_spline STATIC "src/external/spline/spline/spline.cpp")
|
||||
add_library(sfizz::spline ALIAS sfizz_spline)
|
||||
target_include_directories(sfizz_spline PUBLIC "src/external/spline")
|
||||
|
||||
# The tunings library
|
||||
add_library(sfizz_tunings STATIC "src/external/tunings/src/Tunings.cpp")
|
||||
add_library(sfizz::tunings ALIAS sfizz_tunings)
|
||||
target_include_directories(sfizz_tunings PUBLIC "src/external/tunings/include")
|
||||
|
||||
# The hiir library
|
||||
add_library(sfizz_hiir INTERFACE)
|
||||
add_library(sfizz::hiir ALIAS sfizz_hiir)
|
||||
target_include_directories(sfizz_hiir INTERFACE "src/external/hiir")
|
||||
|
||||
# The kissfft library
|
||||
add_library(sfizz_kissfft STATIC
|
||||
"src/external/kiss_fft/kiss_fft.c"
|
||||
"src/external/kiss_fft/tools/kiss_fftr.c")
|
||||
add_library(sfizz::kissfft ALIAS sfizz_kissfft)
|
||||
target_include_directories(sfizz_kissfft
|
||||
PUBLIC "src/external/kiss_fft"
|
||||
PUBLIC "src/external/kiss_fft/tools")
|
||||
|
||||
# The cpuid library
|
||||
add_library(sfizz_cpuid STATIC
|
||||
"src/external/cpuid/src/cpuid/cpuinfo.cpp"
|
||||
"src/external/cpuid/src/cpuid/version.cpp")
|
||||
add_library(sfizz::cpuid ALIAS sfizz_cpuid)
|
||||
set_property(TARGET sfizz_cpuid PROPERTY CXX_STANDARD 11)
|
||||
target_include_directories(sfizz_cpuid
|
||||
PUBLIC "src/external/cpuid/src"
|
||||
PRIVATE "src/external/cpuid/platform/src")
|
||||
|
||||
# The threadpool library
|
||||
add_library(sfizz_threadpool INTERFACE)
|
||||
add_library(sfizz::threadpool ALIAS sfizz_threadpool)
|
||||
target_include_directories(sfizz_threadpool INTERFACE "external/threadpool")
|
||||
|
||||
# The atomic_queue library
|
||||
add_library(sfizz_atomic_queue INTERFACE)
|
||||
add_library(sfizz::atomic_queue ALIAS sfizz_atomic_queue)
|
||||
target_include_directories(sfizz_atomic_queue INTERFACE "external/atomic_queue/include")
|
||||
|
||||
# The ghc::filesystem library
|
||||
add_library(sfizz_filesystem INTERFACE)
|
||||
add_library(sfizz::filesystem ALIAS sfizz_filesystem)
|
||||
target_include_directories(sfizz_filesystem INTERFACE "external/filesystem/include")
|
||||
|
||||
# The atomic library
|
||||
add_library(sfizz_atomic INTERFACE)
|
||||
add_library(sfizz::atomic ALIAS sfizz_atomic)
|
||||
if(UNIX AND NOT APPLE)
|
||||
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/check_libatomic")
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/check_libatomic/check_libatomic.c" "int main() { return 0; }")
|
||||
try_compile(SFIZZ_LINK_LIBATOMIC "${CMAKE_CURRENT_BINARY_DIR}/check_libatomic"
|
||||
SOURCES "${CMAKE_CURRENT_BINARY_DIR}/check_libatomic/check_libatomic.c"
|
||||
LINK_LIBRARIES "atomic")
|
||||
if(SFIZZ_LINK_LIBATOMIC)
|
||||
target_link_libraries(sfizz_atomic INTERFACE "atomic")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# The jack library
|
||||
if(SFIZZ_JACK)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(JACK "jack" REQUIRED)
|
||||
elseif()
|
||||
find_package(PkgConfig)
|
||||
if(PKGCONFIG_FOUND)
|
||||
pkg_check_modules(JACK "jack")
|
||||
endif()
|
||||
endif()
|
||||
if(JACK_FOUND)
|
||||
add_library(sfizz_jacklib INTERFACE)
|
||||
add_library(sfizz::jack ALIAS sfizz_jacklib)
|
||||
target_include_directories(sfizz_jacklib INTERFACE ${JACK_INCLUDE_DIRS})
|
||||
target_link_libraries(sfizz_jacklib INTERFACE ${JACK_LIBRARIES})
|
||||
link_directories(${JACK_LIBRARY_DIRS})
|
||||
endif()
|
||||
|
||||
# The Qt library
|
||||
find_package(Qt5 COMPONENTS Widgets)
|
||||
|
||||
# The fmidi library
|
||||
add_library(sfizz_fmidi STATIC
|
||||
"external/fmidi/sources/fmidi/fmidi.h"
|
||||
"external/fmidi/sources/fmidi/fmidi_mini.cpp")
|
||||
add_library(sfizz::fmidi ALIAS sfizz_fmidi)
|
||||
target_include_directories(sfizz_fmidi PUBLIC "external/fmidi/sources")
|
||||
target_compile_definitions(sfizz_fmidi PUBLIC "FMIDI_STATIC=1" "FMIDI_DISABLE_DESCRIBE_API=1")
|
||||
|
||||
# The samplerate library
|
||||
find_package(PkgConfig)
|
||||
if(PKGCONFIG_FOUND)
|
||||
pkg_check_modules(SAMPLERATE "samplerate")
|
||||
if(SAMPLERATE_FOUND)
|
||||
add_library(sfizz_samplerate INTERFACE)
|
||||
add_library(sfizz::samplerate ALIAS sfizz_samplerate)
|
||||
target_include_directories(sfizz_samplerate INTERFACE ${SAMPLERATE_INCLUDE_DIRS})
|
||||
target_link_libraries(sfizz_samplerate INTERFACE ${SAMPLERATE_LIBRARIES})
|
||||
link_directories(${SAMPLERATE_LIBRARY_DIRS})
|
||||
endif()
|
||||
endif()
|
||||
if(NOT TARGET sfizz::samplerate)
|
||||
find_library(SAMPLERATE_LIBRARY "samplerate")
|
||||
find_path(SAMPLERATE_INCLUDE_DIR "samplerate.h")
|
||||
message(STATUS "Checking samplerate library: ${SAMPLERATE_LIBRARY}")
|
||||
message(STATUS "Checking samplerate includes: ${SAMPLERATE_INCLUDE_DIR}")
|
||||
if(SAMPLERATE_LIBRARY AND SAMPLERATE_INCLUDE_DIR)
|
||||
add_library(sfizz_samplerate INTERFACE)
|
||||
add_library(sfizz::samplerate ALIAS sfizz_samplerate)
|
||||
target_include_directories(sfizz_samplerate INTERFACE "${SAMPLERATE_INCLUDE_DIR}")
|
||||
target_link_libraries(sfizz_samplerate INTERFACE "${SAMPLERATE_LIBRARY}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# The benchmark library
|
||||
if(SFIZZ_BENCHMARKS)
|
||||
find_package(benchmark CONFIG REQUIRED)
|
||||
endif()
|
||||
|
|
@ -1,32 +1,22 @@
|
|||
find_package(PkgConfig)
|
||||
if(PKGCONFIG_FOUND)
|
||||
pkg_check_modules(JACK "jack")
|
||||
if(TARGET Qt5::Widgets AND TARGET sfizz::jack)
|
||||
add_executable(sfizz_demo_filters DemoFilters.cpp)
|
||||
target_link_libraries(sfizz_demo_filters PRIVATE sfizz::internal sfizz::jack Qt5::Widgets)
|
||||
set_target_properties(sfizz_demo_filters PROPERTIES AUTOUIC ON)
|
||||
|
||||
add_executable(sfizz_demo_smooth DemoSmooth.cpp)
|
||||
target_link_libraries(sfizz_demo_smooth PRIVATE sfizz::internal sfizz::jack Qt5::Widgets)
|
||||
set_target_properties(sfizz_demo_smooth PROPERTIES AUTOUIC ON)
|
||||
|
||||
add_executable(sfizz_demo_stereo DemoStereo.cpp)
|
||||
target_link_libraries(sfizz_demo_stereo PRIVATE sfizz::internal sfizz::jack Qt5::Widgets)
|
||||
set_target_properties(sfizz_demo_stereo PROPERTIES AUTOUIC ON)
|
||||
|
||||
add_executable(sfizz_demo_wavetables DemoWavetables.cpp)
|
||||
target_link_libraries(sfizz_demo_wavetables PRIVATE sfizz::internal sfizz::jack Qt5::Widgets)
|
||||
set_target_properties(sfizz_demo_wavetables PROPERTIES AUTOUIC ON)
|
||||
endif()
|
||||
find_package(Qt5 COMPONENTS Widgets)
|
||||
|
||||
if(TARGET Qt5::Widgets)
|
||||
if(JACK_FOUND)
|
||||
add_executable(sfizz_demo_filters DemoFilters.cpp)
|
||||
target_include_directories(sfizz_demo_filters PRIVATE ${JACK_INCLUDE_DIRS})
|
||||
target_link_libraries(sfizz_demo_filters PRIVATE sfizz::internal Qt5::Widgets ${JACK_LIBRARIES})
|
||||
set_target_properties(sfizz_demo_filters PROPERTIES AUTOUIC ON)
|
||||
|
||||
add_executable(sfizz_demo_smooth DemoSmooth.cpp)
|
||||
target_include_directories(sfizz_demo_smooth PRIVATE ${JACK_INCLUDE_DIRS})
|
||||
target_link_libraries(sfizz_demo_smooth PRIVATE sfizz::internal Qt5::Widgets ${JACK_LIBRARIES})
|
||||
set_target_properties(sfizz_demo_smooth PROPERTIES AUTOUIC ON)
|
||||
|
||||
add_executable(sfizz_demo_stereo DemoStereo.cpp)
|
||||
target_include_directories(sfizz_demo_stereo PRIVATE ${JACK_INCLUDE_DIRS})
|
||||
target_link_libraries(sfizz_demo_stereo PRIVATE sfizz::internal Qt5::Widgets ${JACK_LIBRARIES})
|
||||
set_target_properties(sfizz_demo_stereo PROPERTIES AUTOUIC ON)
|
||||
|
||||
add_executable(sfizz_demo_wavetables DemoWavetables.cpp)
|
||||
target_include_directories(sfizz_demo_wavetables PRIVATE ${JACK_INCLUDE_DIRS})
|
||||
target_link_libraries(sfizz_demo_wavetables PRIVATE sfizz::internal Qt5::Widgets ${JACK_LIBRARIES})
|
||||
set_target_properties(sfizz_demo_wavetables PROPERTIES AUTOUIC ON)
|
||||
endif()
|
||||
|
||||
add_executable(sfizz_demo_parser DemoParser.cpp)
|
||||
target_link_libraries(sfizz_demo_parser PRIVATE sfizz::parser Qt5::Widgets)
|
||||
set_target_properties(sfizz_demo_parser PROPERTIES AUTOUIC ON)
|
||||
|
|
|
|||
|
|
@ -1,18 +1,12 @@
|
|||
###############################
|
||||
# Developer tools
|
||||
|
||||
find_package(PkgConfig)
|
||||
if(PKGCONFIG_FOUND)
|
||||
pkg_check_modules(JACK "jack")
|
||||
endif()
|
||||
find_package(Qt5 COMPONENTS Widgets)
|
||||
|
||||
if(JACK_FOUND AND TARGET Qt5::Widgets)
|
||||
if(TARGET sfizz::jack AND TARGET Qt5::Widgets)
|
||||
add_executable(sfizz_capture_eg CaptureEG.h CaptureEG.cpp)
|
||||
target_include_directories(sfizz_capture_eg PRIVATE . ${JACK_INCLUDE_DIRS})
|
||||
target_link_libraries(sfizz_capture_eg PRIVATE sfizz::sndfile Qt5::Widgets ${JACK_LIBRARIES})
|
||||
target_include_directories(sfizz_capture_eg PRIVATE .)
|
||||
target_link_libraries(sfizz_capture_eg PRIVATE sfizz::sndfile Qt5::Widgets sfizz::jack)
|
||||
set_target_properties(sfizz_capture_eg PROPERTIES AUTOUIC ON)
|
||||
endif()
|
||||
|
||||
add_executable(sfizz_preprocessor Preprocessor.cpp)
|
||||
target_link_libraries(sfizz_preprocessor PRIVATE sfizz_parser sfizz::cxxopts)
|
||||
target_link_libraries(sfizz_preprocessor PRIVATE sfizz::parser sfizz::cxxopts)
|
||||
|
|
|
|||
|
|
@ -1,8 +1,5 @@
|
|||
include(GNUInstallDirs)
|
||||
|
||||
add_subdirectory(external/kiss_fft)
|
||||
add_subdirectory(external/cpuid)
|
||||
|
||||
set(FAUST_FILES
|
||||
sfizz/dsp/filters/filters_modulable.dsp
|
||||
sfizz/dsp/filters/rbj_filters.dsp
|
||||
|
|
@ -242,7 +239,7 @@ target_link_libraries(sfizz_messaging PUBLIC absl::strings)
|
|||
add_library(sfizz_internal STATIC)
|
||||
add_library(sfizz::internal ALIAS sfizz_internal)
|
||||
target_sources(sfizz_internal PRIVATE ${SFIZZ_HEADERS} ${SFIZZ_SOURCES} ${FAUST_FILES})
|
||||
target_include_directories(sfizz_internal PUBLIC .)
|
||||
target_include_directories(sfizz_internal PUBLIC "." "sfizz")
|
||||
target_link_libraries(sfizz_internal
|
||||
PUBLIC absl::strings absl::span sfizz::filesystem sfizz::atomic_queue
|
||||
PRIVATE sfizz::parser sfizz::messaging absl::flat_hash_map Threads::Threads st_audiofile sfizz::pugixml sfizz::spline sfizz::tunings sfizz::hiir sfizz::kissfft sfizz::cpuid sfizz::threadpool sfizz::jsl sfizz::atomic)
|
||||
|
|
@ -254,7 +251,7 @@ if(WIN32)
|
|||
target_compile_definitions(sfizz_internal PRIVATE _USE_MATH_DEFINES)
|
||||
endif()
|
||||
if(SFIZZ_RELEASE_ASSERTS)
|
||||
target_compile_definitions(sfizz_internal PRIVATE "SFIZZ_ENABLE_RELEASE_ASSERT=1")
|
||||
target_compile_definitions(sfizz_internal PUBLIC "SFIZZ_ENABLE_RELEASE_ASSERT=1")
|
||||
endif()
|
||||
sfizz_enable_fast_math(sfizz_internal)
|
||||
|
||||
|
|
|
|||
7
src/external/cpuid/CMakeLists.txt
vendored
7
src/external/cpuid/CMakeLists.txt
vendored
|
|
@ -1,7 +0,0 @@
|
|||
cmake_minimum_required (VERSION 3.5)
|
||||
project(sfizz_cpuid)
|
||||
|
||||
add_library(sfizz_cpuid STATIC src/cpuid/cpuinfo.cpp src/cpuid/version.cpp)
|
||||
add_library(sfizz::cpuid ALIAS sfizz_cpuid)
|
||||
set_property(TARGET sfizz_cpuid PROPERTY CXX_STANDARD 11)
|
||||
target_include_directories(sfizz_cpuid PUBLIC src PRIVATE platform/src)
|
||||
13
src/external/kiss_fft/CMakeLists.txt
vendored
13
src/external/kiss_fft/CMakeLists.txt
vendored
|
|
@ -1,13 +0,0 @@
|
|||
# This CMake build file is part of sfizz
|
||||
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
project(sfizz_kissfft VERSION "1.3.0" LANGUAGES C)
|
||||
|
||||
add_library(sfizz_kissfft STATIC
|
||||
kiss_fft.c
|
||||
tools/kiss_fftr.c)
|
||||
add_library(sfizz::kissfft ALIAS sfizz_kissfft)
|
||||
target_include_directories(sfizz_kissfft
|
||||
PUBLIC "."
|
||||
PUBLIC "tools")
|
||||
|
|
@ -1,8 +1,6 @@
|
|||
###############################
|
||||
# Test application
|
||||
|
||||
project(sfizz)
|
||||
|
||||
set(SFIZZ_TEST_SOURCES
|
||||
DirectRegionT.cpp
|
||||
RegionValuesT.cpp
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue