Make a separate target for sfizz::internal, for tests and benchmarks
This commit is contained in:
parent
e78edbb7ce
commit
f063062f7c
12 changed files with 93 additions and 63 deletions
|
|
@ -44,7 +44,7 @@ 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::sfizz)
|
||||
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,11 +66,11 @@ 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::sfizz)
|
||||
target_link_libraries(bm_logger PRIVATE sfizz::internal)
|
||||
sfizz_add_benchmark(bm_smoothers BM_smoothers.cpp)
|
||||
target_link_libraries(bm_smoothers PRIVATE sfizz::sfizz)
|
||||
target_link_libraries(bm_smoothers PRIVATE sfizz::internal)
|
||||
sfizz_add_benchmark(bm_powerFollower BM_powerFollower.cpp)
|
||||
target_link_libraries(bm_powerFollower PRIVATE sfizz::sfizz)
|
||||
target_link_libraries(bm_powerFollower PRIVATE sfizz::internal)
|
||||
|
||||
if(TARGET sfizz::samplerate)
|
||||
sfizz_add_benchmark(bm_resample BM_resample.cpp ${BENCHMARK_SIMD_SOURCES})
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ if(SFIZZ_RENDER)
|
|||
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::sfizz sfizz::fmidi sfizz::sndfile sfizz::cxxopts)
|
||||
target_link_libraries(sfizz_render PRIVATE sfizz::internal sfizz::fmidi sfizz::sndfile sfizz::cxxopts)
|
||||
sfizz_enable_lto_if_needed(sfizz_render)
|
||||
install(TARGETS sfizz_render DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT "render" OPTIONAL)
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -158,6 +158,14 @@ 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")
|
||||
|
|
|
|||
|
|
@ -178,6 +178,14 @@ endif
|
|||
|
||||
SFIZZ_CXX_FLAGS += -I$(SFIZZ_DIR)/src/external/hiir
|
||||
|
||||
# threadpool dependency
|
||||
|
||||
SFIZZ_CXX_FLAGS += -I$(SFIZZ_DIR)/external/threadpool
|
||||
|
||||
# atomic_queue dependency
|
||||
|
||||
SFIZZ_CXX_FLAGS += -I$(SFIZZ_DIR)/external/atomic_queue/include
|
||||
|
||||
# ghc::filesystem dependency
|
||||
|
||||
SFIZZ_CXX_FLAGS += -I$(SFIZZ_DIR)/external/filesystem/include
|
||||
|
|
|
|||
|
|
@ -8,54 +8,54 @@ 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::sfizz Qt5::Widgets ${JACK_LIBRARIES})
|
||||
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::sfizz Qt5::Widgets ${JACK_LIBRARIES})
|
||||
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::sfizz Qt5::Widgets ${JACK_LIBRARIES})
|
||||
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::sfizz Qt5::Widgets ${JACK_LIBRARIES})
|
||||
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)
|
||||
target_link_libraries(sfizz_demo_parser PRIVATE sfizz::parser Qt5::Widgets)
|
||||
set_target_properties(sfizz_demo_parser PROPERTIES AUTOUIC ON)
|
||||
|
||||
add_executable(sfizz_demo_stretch_tuning DemoStretchTuning.cpp)
|
||||
target_link_libraries(sfizz_demo_stretch_tuning PRIVATE sfizz::sfizz Qt5::Widgets)
|
||||
target_link_libraries(sfizz_demo_stretch_tuning PRIVATE sfizz::internal Qt5::Widgets)
|
||||
set_target_properties(sfizz_demo_stretch_tuning PROPERTIES AUTOUIC ON)
|
||||
endif()
|
||||
|
||||
add_executable(eq_apply EQ.cpp)
|
||||
target_link_libraries(eq_apply PRIVATE sfizz::sfizz sfizz::sndfile sfizz::cxxopts sfizz::filesystem)
|
||||
target_link_libraries(eq_apply PRIVATE sfizz::internal sfizz::sndfile sfizz::cxxopts sfizz::filesystem)
|
||||
|
||||
add_executable(filter_apply Filter.cpp)
|
||||
target_link_libraries(filter_apply PRIVATE sfizz::sfizz sfizz::sndfile sfizz::cxxopts sfizz::filesystem)
|
||||
target_link_libraries(filter_apply PRIVATE sfizz::internal sfizz::sndfile sfizz::cxxopts sfizz::filesystem)
|
||||
|
||||
add_executable(sfizz_plot_curve PlotCurve.cpp)
|
||||
target_link_libraries(sfizz_plot_curve PRIVATE sfizz::sfizz)
|
||||
target_link_libraries(sfizz_plot_curve PRIVATE sfizz::internal)
|
||||
|
||||
add_executable(sfizz_plot_wavetables PlotWavetables.cpp)
|
||||
target_link_libraries(sfizz_plot_wavetables PRIVATE sfizz::sfizz)
|
||||
target_link_libraries(sfizz_plot_wavetables PRIVATE sfizz::internal)
|
||||
|
||||
add_executable(sfizz_plot_lfo PlotLFO.cpp)
|
||||
target_link_libraries(sfizz_plot_lfo PRIVATE sfizz::sfizz sfizz::sndfile sfizz::cxxopts)
|
||||
target_link_libraries(sfizz_plot_lfo PRIVATE sfizz::internal sfizz::sndfile sfizz::cxxopts)
|
||||
|
||||
add_executable(sfizz_file_instrument FileInstrument.cpp)
|
||||
target_link_libraries(sfizz_file_instrument PRIVATE sfizz::sfizz sfizz::sndfile)
|
||||
target_link_libraries(sfizz_file_instrument PRIVATE sfizz::internal sfizz::sndfile)
|
||||
|
||||
add_executable(sfizz_file_wavetable FileWavetable.cpp)
|
||||
target_link_libraries(sfizz_file_wavetable PRIVATE sfizz::sfizz)
|
||||
target_link_libraries(sfizz_file_wavetable PRIVATE sfizz::internal)
|
||||
|
||||
add_executable(sfizz_tuning Tuning.cpp)
|
||||
target_link_libraries(sfizz_tuning PRIVATE sfizz::sfizz sfizz::cxxopts)
|
||||
target_link_libraries(sfizz_tuning PRIVATE sfizz::internal sfizz::cxxopts)
|
||||
|
|
|
|||
21
external/atomic_queue/LICENSE
vendored
Normal file
21
external/atomic_queue/LICENSE
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2019 Maxim Egorushkin
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
|
@ -238,60 +238,42 @@ target_sources(sfizz_messaging PRIVATE
|
|||
target_include_directories(sfizz_messaging PUBLIC ".")
|
||||
target_link_libraries(sfizz_messaging PUBLIC absl::strings)
|
||||
|
||||
# Sfizz static library
|
||||
add_library(sfizz_static STATIC)
|
||||
add_library(sfizz::static ALIAS sfizz_static)
|
||||
target_sources(sfizz_static PRIVATE
|
||||
${SFIZZ_HEADERS} ${SFIZZ_SOURCES} ${FAUST_FILES} sfizz/sfizz_wrapper.cpp sfizz/sfizz.cpp)
|
||||
target_include_directories(sfizz_static PUBLIC .)
|
||||
target_include_directories(sfizz_static PUBLIC external)
|
||||
target_link_libraries(sfizz_static PUBLIC absl::strings absl::span sfizz::filesystem)
|
||||
target_link_libraries(sfizz_static 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::jsl sfizz::atomic)
|
||||
set_target_properties(sfizz_static PROPERTIES OUTPUT_NAME sfizz PUBLIC_HEADER "sfizz.h;sfizz.hpp;sfizz_message.h")
|
||||
# Sfizz internals (use this for testing)
|
||||
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_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)
|
||||
if(SFIZZ_USE_SNDFILE)
|
||||
target_compile_definitions(sfizz_static PUBLIC SFIZZ_USE_SNDFILE=1)
|
||||
target_link_libraries(sfizz_static PUBLIC st_audiofile)
|
||||
target_compile_definitions(sfizz_internal PUBLIC "SFIZZ_USE_SNDFILE=1")
|
||||
target_link_libraries(sfizz_internal PUBLIC st_audiofile)
|
||||
endif()
|
||||
if(WIN32)
|
||||
target_compile_definitions(sfizz_static PRIVATE _USE_MATH_DEFINES)
|
||||
target_compile_definitions(sfizz_internal PRIVATE _USE_MATH_DEFINES)
|
||||
endif()
|
||||
if(SFIZZ_RELEASE_ASSERTS)
|
||||
target_compile_definitions(sfizz_static PRIVATE "SFIZZ_ENABLE_RELEASE_ASSERT=1")
|
||||
target_compile_definitions(sfizz_internal PRIVATE "SFIZZ_ENABLE_RELEASE_ASSERT=1")
|
||||
endif()
|
||||
sfizz_enable_fast_math(sfizz_static)
|
||||
sfizz_enable_fast_math(sfizz_internal)
|
||||
|
||||
if(WIN32)
|
||||
include(VSTConfig)
|
||||
configure_file(${PROJECT_SOURCE_DIR}/scripts/innosetup.iss.in ${PROJECT_BINARY_DIR}/innosetup.iss @ONLY)
|
||||
endif()
|
||||
|
||||
configure_file(${PROJECT_SOURCE_DIR}/scripts/doxygen/Doxyfile.in ${PROJECT_SOURCE_DIR}/Doxyfile @ONLY)
|
||||
|
||||
add_library(sfizz::sfizz ALIAS sfizz_static)
|
||||
# Sfizz static library
|
||||
add_library(sfizz_static STATIC sfizz/sfizz_wrapper.cpp sfizz/sfizz.cpp)
|
||||
add_library(sfizz::static ALIAS sfizz_static)
|
||||
target_include_directories(sfizz_static PUBLIC .)
|
||||
target_link_libraries(sfizz_static PRIVATE sfizz::internal)
|
||||
set_target_properties(sfizz_static PROPERTIES OUTPUT_NAME "sfizz" PUBLIC_HEADER "sfizz.h;sfizz.hpp;sfizz_message.h")
|
||||
|
||||
# Shared library and installation target
|
||||
if(SFIZZ_SHARED)
|
||||
add_library(sfizz_shared SHARED)
|
||||
add_library(sfizz_shared SHARED sfizz/sfizz_wrapper.cpp sfizz/sfizz.cpp)
|
||||
add_library(sfizz::shared ALIAS sfizz_shared)
|
||||
target_sources(sfizz_shared PRIVATE
|
||||
${SFIZZ_HEADERS} ${SFIZZ_SOURCES} ${FAUST_FILES} sfizz/sfizz_wrapper.cpp sfizz/sfizz.cpp)
|
||||
target_include_directories(sfizz_shared PRIVATE .)
|
||||
target_include_directories(sfizz_shared PRIVATE external)
|
||||
target_link_libraries(sfizz_shared PRIVATE absl::strings absl::span 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::jsl sfizz::filesystem sfizz::atomic)
|
||||
if(SFIZZ_USE_SNDFILE)
|
||||
target_compile_definitions(sfizz_shared PUBLIC SFIZZ_USE_SNDFILE=1)
|
||||
target_link_libraries(sfizz_shared PUBLIC st_audiofile)
|
||||
endif()
|
||||
if(WIN32)
|
||||
target_compile_definitions(sfizz_shared PRIVATE _USE_MATH_DEFINES)
|
||||
endif()
|
||||
if(SFIZZ_RELEASE_ASSERTS)
|
||||
target_compile_definitions(sfizz_shared PRIVATE "SFIZZ_ENABLE_RELEASE_ASSERT=1")
|
||||
endif()
|
||||
target_include_directories(sfizz_shared PUBLIC .)
|
||||
target_link_libraries(sfizz_shared PRIVATE sfizz::internal)
|
||||
target_compile_definitions(sfizz_shared PRIVATE SFIZZ_EXPORT_SYMBOLS)
|
||||
set_target_properties(sfizz_shared PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR} OUTPUT_NAME sfizz PUBLIC_HEADER "sfizz.h;sfizz.hpp;sfizz_message.h")
|
||||
set_target_properties(sfizz_shared PROPERTIES SOVERSION "${PROJECT_VERSION_MAJOR}" OUTPUT_NAME "sfizz" PUBLIC_HEADER "sfizz.h;sfizz.hpp;sfizz_message.h")
|
||||
sfizz_enable_lto_if_needed(sfizz_shared)
|
||||
sfizz_enable_fast_math(sfizz_shared)
|
||||
|
||||
if(NOT MSVC)
|
||||
install(TARGETS sfizz_shared
|
||||
|
|
@ -305,3 +287,15 @@ if(SFIZZ_SHARED)
|
|||
COMPONENT "development")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Generic library alias
|
||||
add_library(sfizz::sfizz ALIAS sfizz_static)
|
||||
|
||||
# Windows installer
|
||||
if(WIN32)
|
||||
include(VSTConfig)
|
||||
configure_file(${PROJECT_SOURCE_DIR}/scripts/innosetup.iss.in ${PROJECT_BINARY_DIR}/innosetup.iss @ONLY)
|
||||
endif()
|
||||
|
||||
# Doxygen
|
||||
configure_file(${PROJECT_SOURCE_DIR}/scripts/doxygen/Doxyfile.in ${PROJECT_SOURCE_DIR}/Doxyfile @ONLY)
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@
|
|||
#include "Config.h"
|
||||
#include "Debug.h"
|
||||
#include "Oversampler.h"
|
||||
#include <ThreadPool.h>
|
||||
#include "absl/types/span.h"
|
||||
#include "absl/strings/match.h"
|
||||
#include "absl/memory/memory.h"
|
||||
|
|
@ -44,7 +45,6 @@
|
|||
#else
|
||||
#include <pthread.h>
|
||||
#endif
|
||||
#include "threadpool/ThreadPool.h"
|
||||
using namespace std::placeholders;
|
||||
|
||||
static std::weak_ptr<ThreadPool> globalThreadPoolWeakPtr;
|
||||
|
|
|
|||
|
|
@ -48,9 +48,8 @@ set(SFIZZ_TEST_SOURCES
|
|||
)
|
||||
|
||||
add_executable(sfizz_tests ${SFIZZ_TEST_SOURCES})
|
||||
target_link_libraries(sfizz_tests PRIVATE sfizz::sfizz sfizz::jsl)
|
||||
target_link_libraries(sfizz_tests PRIVATE sfizz::internal sfizz::jsl)
|
||||
sfizz_enable_lto_if_needed(sfizz_tests)
|
||||
sfizz_enable_fast_math(sfizz_tests)
|
||||
# target_link_libraries(sfizz_tests PRIVATE absl::strings absl::str_format absl::flat_hash_map cnpy absl::span absl::algorithm)
|
||||
|
||||
file(COPY "." DESTINATION ${CMAKE_BINARY_DIR}/tests)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue