diff --git a/.editorconfig b/.editorconfig index 44554ce7..ea67a2e5 100644 --- a/.editorconfig +++ b/.editorconfig @@ -4,11 +4,15 @@ # Top-most EditorConfig file root = true -# No trailing whitespaces, but with a newline ending every file, -# UTF-8 charset, set indent to spaces with width of four +# UTF-8 charset, set indent to spaces with width of four, +# with no trailing whitespaces and a newline ending every file. [*] +charset = utf-8 +indent_size = 4 +indent_style = space insert_final_newline = true trim_trailing_whitespace = true -charset = utf-8 + +[*.{ttl,ttl.in}] +indent_size = 2 indent_style = space -indent_size = 4 diff --git a/.gitignore b/.gitignore index e18ae90c..707f5cef 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,4 @@ -build -build-arm -build-asan -build-release -build-reldeb -build-debug +build* docs .vscode perf.data @@ -16,6 +11,7 @@ cmake_install.cmake compile_commands.json *.a *.txt.user +*.autosave .DS_Store @@ -23,11 +19,9 @@ clients/sfizz_jack clients/sfzprint # gh-pages unstaged files: - _site/ .bundle/ api/ assets/ node_modules/ -Gemfile.lock -yarn.lock +*.lock diff --git a/CMakeLists.txt b/CMakeLists.txt index d0c26f74..dbe4223c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,105 +1,63 @@ cmake_minimum_required(VERSION 3.13) -project(sfizz VERSION 1.0.0 LANGUAGES CXX) +project (sfizz VERSION 1.0.0 LANGUAGES CXX) -# Do not override if set to more than 14 -if (NOT CMAKE_CXX_STANDARD OR CMAKE_CXX_STANDARD LESS 14) - set(CMAKE_CXX_STANDARD 14) +# External configuration CMake scripts +set (CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_CURRENT_SOURCE_DIR}/cmake") +include (SfizzConfig) + +# Build Options +set (BUILD_TESTING OFF CACHE BOOL "Disable Abseil's tests [default: OFF]") + +set (LV2PLUGIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib/lv2" CACHE STRING + "Install destination for LV2 bundle [default: ${CMAKE_INSTALL_PREFIX}/lib/lv2]") + +option (ENABLE_LTO "Enable Link Time Optimization [default: ON]" ON) +option (SFIZZ_JACK "Enable JACK stand-alone build [default: ON]" ON) +option (SFIZZ_LV2 "Enable LV2 plug-in build [default: ON]" ON) +option (SFIZZ_BENCHMARKS "Enable benchmarks build [default: OFF]" OFF) +option (SFIZZ_TESTS "Enable tests build [default: OFF]" OFF) +option (SFIZZ_SHARED "Enable shared library build [default: ON]" ON) + +# Don't use IPO in non Release builds +include (CheckIPO) + +# Add Abseil +add_subdirectory (external/abseil-cpp EXCLUDE_FROM_ALL) + +# Add the static library targets and sources +add_subdirectory (src) + +# Optional targets +if (SFIZZ_JACK) + add_subdirectory (clients) endif() -# Skip installing all dependencies -set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY true) - -# Enable LTO -set(CMAKE_POLICY_DEFAULT_CMP0069 NEW) # To override the policy in abseil and benchmark -set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) - -# Enable PIC -# set(POSITION_INDEPENDENT_CODE ON) - -if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT ANDROID) - set(USE_LIBCPP ON CACHE BOOL "Use libc++ with clang") - add_compile_options(-stdlib=libc++) - # Presumably need the above for linking too, maybe other options missing as well - add_link_options(-stdlib=libc++) # New command on CMake master, not in 3.12 release - add_link_options(-lc++abi) # New command on CMake master, not in 3.12 release -endif() - -if (UNIX) - add_compile_options(-fPIC) - add_compile_options(-Wall) - add_compile_options(-Wextra) - add_compile_options(-ffast-math) - add_compile_options(-fno-omit-frame-pointer) -endif() - -if (WIN32) - # TODO: Remove when abseil updates (deprecation warning from c++17 onwards) - add_compile_options(/wd4996) - # add_compile_options(/W3) - # add_compile_options(/GR-) - # add_compile_options(/permissive-) - # add_compile_options(/fp:fast) -endif() - -message("Cmake flags: ${CMAKE_CXX_FLAGS}") - -# Export the compile_commands.json file -set(CMAKE_EXPORT_COMPILE_COMMANDS ON) - -# find_package(Git QUIET) -# if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git") -# Update submodules as needed -# option(GIT_SUBMODULE "Check submodules during build" ON) - # if(GIT_SUBMODULE) - # message(STATUS "Submodule update") - # execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive --remote - # WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - # RESULT_VARIABLE GIT_SUBMOD_RESULT) - # if(NOT GIT_SUBMOD_RESULT EQUAL "0") -# message(FATAL_ERROR "git submodule update --init failed with ${GIT_SUBMOD_RESULT}, please checkout submodules") -# endif() -# endif() -# endif() - -# Build options and includes -set(BUILD_TESTING OFF CACHE BOOL "Disable Abseil's tests") -add_subdirectory(external/abseil-cpp EXCLUDE_FROM_ALL) - -# Download libsndfile -if (WIN32) - # file(DOWNLOAD https://github.com/bastibe/libsndfile-binaries/raw/master/libsndfile32bit.dll external/libsndfile-win/libsndfile32bit.dll) - # file(DOWNLOAD https://github.com/bastibe/libsndfile-binaries/raw/master/libsndfile64bit.dll external/libsndfile-win/libsndfile64bit.dll) - # message(STATUS "Downloading libsndfile") - # # find_library(sndfile libsndfile-1.lib HINTS ${WIN_SNDFILE_PATH}/lib) - set(WIN_SNDFILE_PATH "C:/Program Files/Mega-Nerd/libsndfile") - add_library(sndfile STATIC IMPORTED) - set_target_properties(sndfile PROPERTIES IMPORTED_LOCATION "${WIN_SNDFILE_PATH}/lib/libsndfile-1.lib") - set_target_properties(sndfile PROPERTIES LINKER_LANGUAGE CXX) - file(COPY "${WIN_SNDFILE_PATH}/bin/libsndfile-1.dll" DESTINATION ${CMAKE_BINARY_DIR}) - target_include_directories(sndfile INTERFACE "${WIN_SNDFILE_PATH}/include") -elseif(APPLE) - find_path(SNDFILE_INCLUDE_DIR NAMES sndfile.hh PATHS "/usr/local/include") - find_library(SNDFILE_LIBRARY NAMES sndfile PATHS "/usr/local/lib") - message(STATUS "include dir: " ${SNDFILE_INCLUDE_DIR} " lib: " ${SNDFILE_LIBRARY}) - add_library(sndfile SHARED IMPORTED GLOBAL) - target_include_directories(sndfile INTERFACE ${SNDFILE_INCLUDE_DIR}) - target_link_libraries(sndfile INTERFACE ${SNDFILE_LIBRARY}) -endif() - -add_subdirectory(sfizz) - -if (SFIZZ_CLIENTS) -add_subdirectory(clients) -endif() - -if (SFIZZ_TESTS) -add_subdirectory(tests) +if (SFIZZ_LV2) + add_subdirectory (lv2) endif() if (SFIZZ_BENCHMARKS) -# Benchmarks -set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable Google Benchmark tests") -set(BENCHMARK_ENABLE_INSTALL OFF CACHE BOOL "Disable Google Benchmark install") -add_subdirectory(external/benchmark EXCLUDE_FROM_ALL) -add_subdirectory(benchmarks) + add_subdirectory (benchmarks) endif() + +if (SFIZZ_TESTS) + add_subdirectory (tests) +endif() + +message (STATUS " +Project name: ${CMAKE_PROJECT_NAME} +Build type: ${CMAKE_BUILD_TYPE} +Build using LTO: ${ENABLE_LTO} +Build as shared library: ${SFIZZ_SHARED} +Build JACK stand-alone client: ${SFIZZ_JACK} +Build LV2 plug-in: ${SFIZZ_LV2} +Build benchmarks: ${SFIZZ_BENCHMARKS} +Build tests: ${SFIZZ_TESTS} + +Install prefix: ${CMAKE_INSTALL_PREFIX} +LV2 destination directory: ${LV2PLUGIN_INSTALL_DIR} + +Compiler CXX debug flags: ${CMAKE_CXX_FLAGS_DEBUG} +Compiler CXX release flags: ${CMAKE_CXX_FLAGS_RELEASE} +Compiler CXX min size flags: ${CMAKE_CXX_FLAGS_MINSIZEREL} +") diff --git a/benchmarks/BM_ADSR.cpp b/benchmarks/BM_ADSR.cpp index ff654eb8..850c4e7c 100644 --- a/benchmarks/BM_ADSR.cpp +++ b/benchmarks/BM_ADSR.cpp @@ -22,7 +22,7 @@ // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include -#include "../sfizz/ADSREnvelope.h" +#include "ADSREnvelope.h" #include #include #include @@ -35,7 +35,7 @@ constexpr int release = attack; constexpr int releaseTime = envelopeSize - static_cast(envelopeSize / 4); // Explicitely instantiate class -#include "../sfizz/ADSREnvelope.cpp" +#include "ADSREnvelope.cpp" template class sfz::ADSREnvelope; static void Point(benchmark::State& state) { diff --git a/benchmarks/BM_add.cpp b/benchmarks/BM_add.cpp index b65f076c..26b3c62f 100644 --- a/benchmarks/BM_add.cpp +++ b/benchmarks/BM_add.cpp @@ -27,7 +27,7 @@ #include #include #include -#include "../sfizz/SIMDHelpers.h" +#include "SIMDHelpers.h" class AddArray : public benchmark::Fixture { public: diff --git a/benchmarks/BM_copy.cpp b/benchmarks/BM_copy.cpp index 7d612e9c..9a9298d3 100644 --- a/benchmarks/BM_copy.cpp +++ b/benchmarks/BM_copy.cpp @@ -27,7 +27,7 @@ #include #include #include -#include "../sfizz/SIMDHelpers.h" +#include "SIMDHelpers.h" class CopyArray : public benchmark::Fixture { public: diff --git a/benchmarks/BM_cumsum.cpp b/benchmarks/BM_cumsum.cpp index 9407e6e1..fb2cb28c 100644 --- a/benchmarks/BM_cumsum.cpp +++ b/benchmarks/BM_cumsum.cpp @@ -27,7 +27,7 @@ #include #include #include -#include "../sfizz/SIMDHelpers.h" +#include "SIMDHelpers.h" class CumArray : public benchmark::Fixture { public: diff --git a/benchmarks/BM_diff.cpp b/benchmarks/BM_diff.cpp index bacfe5f7..bdc3b4b5 100644 --- a/benchmarks/BM_diff.cpp +++ b/benchmarks/BM_diff.cpp @@ -27,7 +27,7 @@ #include #include #include -#include "../sfizz/SIMDHelpers.h" +#include "SIMDHelpers.h" #include "absl/types/span.h" class DiffArray : public benchmark::Fixture { diff --git a/benchmarks/BM_fill.cpp b/benchmarks/BM_fill.cpp index a437531e..056a3dc1 100644 --- a/benchmarks/BM_fill.cpp +++ b/benchmarks/BM_fill.cpp @@ -22,8 +22,8 @@ // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include -#include "../sfizz/SIMDHelpers.h" -#include "../sfizz/Buffer.h" +#include "SIMDHelpers.h" +#include "Buffer.h" #include #include #include diff --git a/benchmarks/BM_gain.cpp b/benchmarks/BM_gain.cpp index f5385eaa..a8855760 100644 --- a/benchmarks/BM_gain.cpp +++ b/benchmarks/BM_gain.cpp @@ -27,7 +27,7 @@ #include #include #include -#include "../sfizz/SIMDHelpers.h" +#include "SIMDHelpers.h" class GainSingle : public benchmark::Fixture { public: diff --git a/benchmarks/BM_interpolationCast.cpp b/benchmarks/BM_interpolationCast.cpp index 2411cadd..f7c2b8a7 100644 --- a/benchmarks/BM_interpolationCast.cpp +++ b/benchmarks/BM_interpolationCast.cpp @@ -26,7 +26,7 @@ #include #include #include -#include "../sfizz/SIMDHelpers.h" +#include "SIMDHelpers.h" // In this one we have an array of jumps diff --git a/benchmarks/BM_looping.cpp b/benchmarks/BM_looping.cpp index 4e1ba5e5..b036da82 100644 --- a/benchmarks/BM_looping.cpp +++ b/benchmarks/BM_looping.cpp @@ -26,7 +26,7 @@ #include #include #include -#include "../sfizz/SIMDHelpers.h" +#include "SIMDHelpers.h" // In this one we have an array of indices diff --git a/benchmarks/BM_mathfuns.cpp b/benchmarks/BM_mathfuns.cpp index 08e9a50e..1b4339b4 100644 --- a/benchmarks/BM_mathfuns.cpp +++ b/benchmarks/BM_mathfuns.cpp @@ -21,7 +21,7 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -#include "../sfizz/SIMDHelpers.h" +#include "SIMDHelpers.h" #include "absl/types/span.h" #include #include diff --git a/benchmarks/BM_mean.cpp b/benchmarks/BM_mean.cpp index 7a457842..4519cd06 100644 --- a/benchmarks/BM_mean.cpp +++ b/benchmarks/BM_mean.cpp @@ -21,7 +21,7 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -#include "../sfizz/SIMDHelpers.h" +#include "SIMDHelpers.h" #include #include #include diff --git a/benchmarks/BM_meanSquared.cpp b/benchmarks/BM_meanSquared.cpp index a207f528..43858b00 100644 --- a/benchmarks/BM_meanSquared.cpp +++ b/benchmarks/BM_meanSquared.cpp @@ -21,7 +21,7 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -#include "../sfizz/SIMDHelpers.h" +#include "SIMDHelpers.h" #include #include #include diff --git a/benchmarks/BM_multiplyAdd.cpp b/benchmarks/BM_multiplyAdd.cpp index 218d98ad..25218ea4 100644 --- a/benchmarks/BM_multiplyAdd.cpp +++ b/benchmarks/BM_multiplyAdd.cpp @@ -27,7 +27,7 @@ #include #include #include -#include "../sfizz/SIMDHelpers.h" +#include "SIMDHelpers.h" class MultiplyAdd : public benchmark::Fixture { public: diff --git a/benchmarks/BM_pan.cpp b/benchmarks/BM_pan.cpp index 5792b476..20d6b539 100644 --- a/benchmarks/BM_pan.cpp +++ b/benchmarks/BM_pan.cpp @@ -27,8 +27,8 @@ #include #include #include -#include "../sfizz/SIMDHelpers.h" -#include "../sfizz/Config.h" +#include "SIMDHelpers.h" +#include "Config.h" #include "absl/types/span.h" class PanArray : public benchmark::Fixture { diff --git a/benchmarks/BM_pointerIterationOrOffsets.cpp b/benchmarks/BM_pointerIterationOrOffsets.cpp index 118eccd3..57a891ea 100644 --- a/benchmarks/BM_pointerIterationOrOffsets.cpp +++ b/benchmarks/BM_pointerIterationOrOffsets.cpp @@ -24,7 +24,7 @@ #include #include #include -#include "../sfizz/SIMDHelpers.h" +#include "SIMDHelpers.h" #include "absl/types/span.h" constexpr int bigNumber { 2399132 }; diff --git a/benchmarks/BM_ramp.cpp b/benchmarks/BM_ramp.cpp index 2a57b5dc..313372ad 100644 --- a/benchmarks/BM_ramp.cpp +++ b/benchmarks/BM_ramp.cpp @@ -23,8 +23,8 @@ #include #include -#include "../sfizz/SIMDHelpers.h" -#include "../sfizz/Buffer.h" +#include "SIMDHelpers.h" +#include "Buffer.h" static void Dummy(benchmark::State& state) { diff --git a/benchmarks/BM_readInterleaved.cpp b/benchmarks/BM_readInterleaved.cpp index e2e6e79e..48692243 100644 --- a/benchmarks/BM_readInterleaved.cpp +++ b/benchmarks/BM_readInterleaved.cpp @@ -22,8 +22,8 @@ // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include -#include "../sfizz/SIMDHelpers.h" -#include "../sfizz/Buffer.h" +#include "SIMDHelpers.h" +#include "Buffer.h" #include #include #include diff --git a/benchmarks/BM_saturating.cpp b/benchmarks/BM_saturating.cpp index 81d82141..e41c420f 100644 --- a/benchmarks/BM_saturating.cpp +++ b/benchmarks/BM_saturating.cpp @@ -26,7 +26,7 @@ #include #include #include -#include "../sfizz/SIMDHelpers.h" +#include "SIMDHelpers.h" // In this one we have an array of indices diff --git a/benchmarks/BM_subtract.cpp b/benchmarks/BM_subtract.cpp index 2062dcdf..7eb8cf18 100644 --- a/benchmarks/BM_subtract.cpp +++ b/benchmarks/BM_subtract.cpp @@ -27,7 +27,7 @@ #include #include #include -#include "../sfizz/SIMDHelpers.h" +#include "SIMDHelpers.h" class SubArray : public benchmark::Fixture { public: diff --git a/benchmarks/BM_writeInterleaved.cpp b/benchmarks/BM_writeInterleaved.cpp index 72932392..dd6c2884 100644 --- a/benchmarks/BM_writeInterleaved.cpp +++ b/benchmarks/BM_writeInterleaved.cpp @@ -22,8 +22,8 @@ // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include -#include "../sfizz/SIMDHelpers.h" -#include "../sfizz/Buffer.h" +#include "SIMDHelpers.h" +#include "Buffer.h" #include #include #include diff --git a/benchmarks/CMakeLists.txt b/benchmarks/CMakeLists.txt index 2a4e0342..eae12e7b 100644 --- a/benchmarks/CMakeLists.txt +++ b/benchmarks/CMakeLists.txt @@ -1,5 +1,21 @@ project(sfizz) +set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable Google Benchmark tests") +set(BENCHMARK_ENABLE_INSTALL OFF CACHE BOOL "Disable Google Benchmark install") + +include(FetchContent) +FetchContent_Declare( + benchmark + GIT_REPOSITORY https://github.com/google/benchmark.git + GIT_TAG v1.5.0 +) + +FetchContent_GetProperties(benchmark) +if(NOT benchmark_POPULATED) + FetchContent_Populate(benchmark) + add_subdirectory(${benchmark_SOURCE_DIR} ${benchmark_BINARY_DIR}) +endif() + # Check SIMD include(CheckIncludeFiles) CHECK_INCLUDE_FILES(x86intrin.h HAVE_X86INTRIN_H) @@ -9,83 +25,104 @@ CHECK_INCLUDE_FILES(arm_neon.h HAVE_ARM_NEON_H) # SIMD checks if (HAVE_X86INTRIN_H AND UNIX) add_compile_options(-DHAVE_X86INTRIN_H) - set(SFIZZ_SIMD_SOURCES ../sfizz/SIMDSSE.cpp) + set(SFIZZ_SIMD_SOURCES ../src/sfizz/SIMDSSE.cpp) elseif (HAVE_INTRIN_H AND WIN32) add_compile_options(/DHAVE_INTRIN_H) - set(SFIZZ_SIMD_SOURCES ../sfizz/SIMDSSE.cpp) + set(SFIZZ_SIMD_SOURCES ../src/sfizz/SIMDSSE.cpp) elseif (HAVE_ARM_NEON_H AND UNIX) add_compile_options(-DHAVE_ARM_NEON_H) add_compile_options(-mfpu=neon-fp-armv8) add_compile_options(-march=native) add_compile_options(-mtune=cortex-a53) add_compile_options(-funsafe-math-optimizations) - set(SFIZZ_SIMD_SOURCES ../sfizz/SIMDNEON.cpp) + set(SFIZZ_SIMD_SOURCES ../src/sfizz/SIMDDummy.cpp) else() - set(SFIZZ_SIMD_SOURCES ../sfizz/SIMDDummy.cpp) + set(SFIZZ_SIMD_SOURCES ../src/sfizz/SIMDDummy.cpp) endif() add_executable(bm_opf_high_vs_low BM_OPF_high_vs_low.cpp) target_link_libraries(bm_opf_high_vs_low benchmark absl::span) +target_include_directories(bm_opf_high_vs_low PRIVATE ../src/sfizz ../src/external) add_executable(bm_write BM_writeInterleaved.cpp ${SFIZZ_SIMD_SOURCES}) target_link_libraries(bm_write benchmark absl::span) +target_include_directories(bm_write PRIVATE ../src/sfizz ../src/external) add_executable(bm_read BM_readInterleaved.cpp ${SFIZZ_SIMD_SOURCES}) target_link_libraries(bm_read benchmark absl::span) +target_include_directories(bm_read PRIVATE ../src/sfizz ../src/external) add_executable(bm_fill BM_fill.cpp ${SFIZZ_SIMD_SOURCES}) target_link_libraries(bm_fill benchmark absl::span) +target_include_directories(bm_fill PRIVATE ../src/sfizz ../src/external) add_executable(bm_mathfuns BM_mathfuns.cpp ${SFIZZ_SIMD_SOURCES}) target_link_libraries(bm_mathfuns benchmark absl::span) +target_include_directories(bm_mathfuns PRIVATE ../src/sfizz ../src/external) add_executable(bm_gain BM_gain.cpp ${SFIZZ_SIMD_SOURCES}) target_link_libraries(bm_gain benchmark absl::span) +target_include_directories(bm_gain PRIVATE ../src/sfizz ../src/external) add_executable(bm_looping BM_looping.cpp ${SFIZZ_SIMD_SOURCES}) target_link_libraries(bm_looping benchmark absl::span absl::algorithm) +target_include_directories(bm_looping PRIVATE ../src/sfizz ../src/external) add_executable(bm_saturating BM_saturating.cpp ${SFIZZ_SIMD_SOURCES}) target_link_libraries(bm_saturating benchmark absl::span absl::algorithm) +target_include_directories(bm_saturating PRIVATE ../src/sfizz ../src/external) add_executable(bm_ramp BM_ramp.cpp ${SFIZZ_SIMD_SOURCES}) target_link_libraries(bm_ramp benchmark absl::span absl::algorithm) +target_include_directories(bm_ramp PRIVATE ../src/sfizz ../src/external) add_executable(bm_ADSR BM_ADSR.cpp ${SFIZZ_SIMD_SOURCES}) target_link_libraries(bm_ADSR benchmark absl::span absl::algorithm) +target_include_directories(bm_ADSR PRIVATE ../src/sfizz ../src/external) add_executable(bm_add BM_add.cpp ${SFIZZ_SIMD_SOURCES}) target_link_libraries(bm_add benchmark absl::span absl::algorithm) +target_include_directories(bm_add PRIVATE ../src/sfizz ../src/external) add_executable(bm_multiplyAdd BM_multiplyAdd.cpp ${SFIZZ_SIMD_SOURCES}) target_link_libraries(bm_multiplyAdd benchmark absl::span absl::algorithm) +target_include_directories(bm_multiplyAdd PRIVATE ../src/sfizz ../src/external) add_executable(bm_subtract BM_subtract.cpp ${SFIZZ_SIMD_SOURCES}) target_link_libraries(bm_subtract benchmark absl::span absl::algorithm) +target_include_directories(bm_subtract PRIVATE ../src/sfizz ../src/external) add_executable(bm_copy BM_copy.cpp ${SFIZZ_SIMD_SOURCES}) target_link_libraries(bm_copy benchmark absl::span absl::algorithm) +target_include_directories(bm_copy PRIVATE ../src/sfizz ../src/external) add_executable(bm_pan BM_pan.cpp ${SFIZZ_SIMD_SOURCES}) target_link_libraries(bm_pan benchmark absl::span absl::algorithm) +target_include_directories(bm_pan PRIVATE ../src/sfizz ../src/external) add_executable(bm_mean BM_mean.cpp ${SFIZZ_SIMD_SOURCES}) target_link_libraries(bm_mean benchmark absl::span absl::algorithm) +target_include_directories(bm_mean PRIVATE ../src/sfizz ../src/external) add_executable(bm_meanSquared BM_meanSquared.cpp ${SFIZZ_SIMD_SOURCES}) target_link_libraries(bm_meanSquared benchmark absl::span absl::algorithm) +target_include_directories(bm_meanSquared PRIVATE ../src/sfizz ../src/external) add_executable(bm_cumsum BM_cumsum.cpp ${SFIZZ_SIMD_SOURCES}) target_link_libraries(bm_cumsum benchmark absl::span absl::algorithm) +target_include_directories(bm_cumsum PRIVATE ../src/sfizz ../src/external) add_executable(bm_diff BM_diff.cpp ${SFIZZ_SIMD_SOURCES}) target_link_libraries(bm_diff benchmark absl::span absl::algorithm) +target_include_directories(bm_diff PRIVATE ../src/sfizz ../src/external) add_executable(bm_interpolationCast BM_interpolationCast.cpp ${SFIZZ_SIMD_SOURCES}) target_link_libraries(bm_interpolationCast benchmark absl::span absl::algorithm) +target_include_directories(bm_interpolationCast PRIVATE ../src/sfizz ../src/external) add_executable(bm_pointerIterationOrOffsets BM_pointerIterationOrOffsets.cpp ${SFIZZ_SIMD_SOURCES}) target_link_libraries(bm_pointerIterationOrOffsets benchmark absl::span absl::algorithm) +target_include_directories(bm_pointerIterationOrOffsets PRIVATE ../src/sfizz ../src/external) add_custom_target(sfizz_benchmarks) add_dependencies(sfizz_benchmarks @@ -109,4 +146,4 @@ add_dependencies(sfizz_benchmarks bm_pan bm_subtract bm_multiplyAdd -) \ No newline at end of file +) diff --git a/clients/CMakeLists.txt b/clients/CMakeLists.txt index 2dbefa05..784064f7 100644 --- a/clients/CMakeLists.txt +++ b/clients/CMakeLists.txt @@ -3,19 +3,8 @@ project(sfizz) ############################### add_executable(sfzprint sfzprint.cpp) target_link_libraries(sfzprint sfizz::parser absl::flags_parse) -install(TARGETS sfzprint DESTINATION . OPTIONAL) - -############################### -# Basic command line program -if(APPLE) - find_path(JACK_INCLUDE_DIR NAMES jack.h PATHS "/usr/local/include/jack") - find_library(JACK_LIBRARY NAMES jack PATHS "/usr/local/lib") - message(STATUS "include dir: " ${JACK_INCLUDE_DIR} " lib: " ${JACK_LIBRARY}) - add_library(jack SHARED IMPORTED GLOBAL) - target_include_directories(jack INTERFACE ${JACK_INCLUDE_DIR}) - target_link_libraries(jack INTERFACE ${JACK_LIBRARY}) -endif() +# install(TARGETS sfzprint DESTINATION . OPTIONAL) add_executable(sfizz_jack jack_client.cpp) target_link_libraries(sfizz_jack sfizz::sfizz jack absl::flags_parse) -install(TARGETS sfizz_jack DESTINATION . OPTIONAL) +# install(TARGETS sfizz_jack DESTINATION . OPTIONAL) \ No newline at end of file diff --git a/clients/jack_client.cpp b/clients/jack_client.cpp index ed001020..f2e8c11b 100644 --- a/clients/jack_client.cpp +++ b/clients/jack_client.cpp @@ -21,8 +21,7 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -#include "AudioSpan.h" -#include "Synth.h" +#include "sfizz.hpp" #include #include #include diff --git a/cmake/CheckIPO.cmake b/cmake/CheckIPO.cmake new file mode 100644 index 00000000..5213cbda --- /dev/null +++ b/cmake/CheckIPO.cmake @@ -0,0 +1,14 @@ +# Added in CMake 3.9 +include (CheckIPOSupported) +check_ipo_supported (RESULT result OUTPUT output) + +if (result AND ENABLE_LTO AND ${CMAKE_BUILD_TYPE} STREQUAL "Release") + message (STATUS "\nLTO enabled.") +else() + if (${output}) + message (WARNING "\nIPO disabled: ${output}") + else() + message (WARNING "\nIPO was disabled, not in a Release build?") + endif() + set (ENABLE_LTO OFF) +endif() diff --git a/cmake/LV2Config.cmake b/cmake/LV2Config.cmake new file mode 100644 index 00000000..97a6f3c3 --- /dev/null +++ b/cmake/LV2Config.cmake @@ -0,0 +1,9 @@ +# Configuration for this plugin +# TODO: generate version from git +set (LV2PLUGIN_VERSION_MINOR 0) +set (LV2PLUGIN_VERSION_MICRO 1) +set (LV2PLUGIN_NAME "Sfizz") +set (LV2PLUGIN_COMMENT "SFZ sampler") +set (LV2PLUGIN_URI "http://sfztools.github.io/sfizz") +set (LV2PLUGIN_AUTHOR "Paul Ferrand") +set (LV2PLUGIN_SPDX_LICENSE_ID "BSD-2-Clause") diff --git a/cmake/SfizzConfig.cmake b/cmake/SfizzConfig.cmake new file mode 100644 index 00000000..90450eb1 --- /dev/null +++ b/cmake/SfizzConfig.cmake @@ -0,0 +1,28 @@ +# Do not override the C++ standard if set to more than 14 +if (NOT CMAKE_CXX_STANDARD OR CMAKE_CXX_STANDARD LESS 14) + set(CMAKE_CXX_STANDARD 14) +endif() + +# Export the compile_commands.json file +set (CMAKE_EXPORT_COMPILE_COMMANDS ON) + +# Only install what's explicitely said +set (CMAKE_SKIP_INSTALL_ALL_DEPENDENCY true) + +# Add required flags for the builds +if (UNIX) + add_compile_options(-Wall) + add_compile_options(-Wextra) + add_compile_options(-ffast-math) + add_compile_options(-fno-omit-frame-pointer) # For debugging purposes + add_compile_options(-fPIC) +endif() + +# If we build with Clang use libc++ +if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT ANDROID) + set(USE_LIBCPP ON CACHE BOOL "Use libc++ with clang") + add_compile_options(-stdlib=libc++) + # Presumably need the above for linking too, maybe other options missing as well + add_link_options(-stdlib=libc++) # New command on CMake master, not in 3.12 release + add_link_options(-lc++abi) # New command on CMake master, not in 3.12 release +endif() diff --git a/cmake/SfizzSIMDSourceFilesCheck.cmake b/cmake/SfizzSIMDSourceFilesCheck.cmake new file mode 100644 index 00000000..1237b3bc --- /dev/null +++ b/cmake/SfizzSIMDSourceFilesCheck.cmake @@ -0,0 +1,28 @@ +# Check SIMD +include (CheckIncludeFiles) +CHECK_INCLUDE_FILES(x86intrin.h HAVE_X86INTRIN_H) +CHECK_INCLUDE_FILES(intrin.h HAVE_INTRIN_H) + +if (!APPLE) + CHECK_INCLUDE_FILES (arm_neon.h HAVE_ARM_NEON_H) +endif() + +# SIMD checks +if (HAVE_X86INTRIN_H AND UNIX) + add_compile_options (-DHAVE_X86INTRIN_H) + set (SFIZZ_SIMD_SOURCES sfizz/SIMDSSE.cpp) +elseif (HAVE_INTRIN_H AND WIN32) + add_compile_options (/DHAVE_INTRIN_H) + set (SFIZZ_SIMD_SOURCES sfizz/SIMDSSE.cpp) +elseif (HAVE_ARM_NEON_H AND UNIX) + add_compile_options (-DHAVE_ARM_NEON_H) + add_compile_options (-mfpu=neon-fp-armv8) + add_compile_options (-march=native) + add_compile_options (-mtune=cortex-a53) + add_compile_options (-funsafe-math-optimizations) + set (SFIZZ_SIMD_SOURCES sfizz/SIMDDummy.cpp) +else() + set (SFIZZ_SIMD_SOURCES sfizz/SIMDDummy.cpp) +endif() + +set (SFIZZ_SOURCES ${SFIZZ_SOURCES} ${SFIZZ_SIMD_SOURCES}) diff --git a/lv2/CMakeLists.txt b/lv2/CMakeLists.txt index b7f33978..7ea112c5 100644 --- a/lv2/CMakeLists.txt +++ b/lv2/CMakeLists.txt @@ -1,19 +1,46 @@ -cmake_minimum_required(VERSION 3.11) -project(sfizz-lv2) +project (lv2plugin) -find_package(PkgConfig REQUIRED) -pkg_check_modules(sfizz REQUIRED IMPORTED_TARGET sfizz) +# CMAKE_PROJECT_NAME is the top level project name, not the current one +set (LV2PLUGIN_PRJ_NAME "${CMAKE_PROJECT_NAME}_lv2") -# Force add relocation to the flags globally. It's ugly but what can you do... -# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") +# Set the build directory as /lv2/.lv2/ +set (PROJECT_BINARY_DIR "${PROJECT_BINARY_DIR}/${CMAKE_PROJECT_NAME}.lv2") -# Export the compile_commands.json file -set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +# LV2 plugin specific settings +include (LV2Config) -add_library(sfizz-lv2 SHARED sfizz.c) -set_target_properties(sfizz-lv2 PROPERTIES PREFIX "") -set_target_properties(sfizz-lv2 PROPERTIES OUTPUT_NAME "sfizz") -target_link_libraries(sfizz-lv2 sfizz) -if(UNIX) -target_compile_options(sfizz-lv2 PRIVATE -Wextra -pedantic -Wall -Werror) -endif() \ No newline at end of file +if (WIN32) + set (LV2PLUGIN_EXT "dll") +elseif (APPLE) + set (LV2PLUGIN_EXT "dylib") +else() + set (LV2PLUGIN_EXT "so") +endif() + +# Keep non build turtle files in IDE +set (LV2PLUGIN_TTL_SRC_FILES + manifest.ttl.in + ${CMAKE_PROJECT_NAME}.ttl.in +) +add_library (${LV2PLUGIN_PRJ_NAME} SHARED ${CMAKE_PROJECT_NAME}.c ${LV2PLUGIN_TTL_SRC_FILES}) +target_link_libraries (${LV2PLUGIN_PRJ_NAME} ${CMAKE_PROJECT_NAME}::${CMAKE_PROJECT_NAME}) + +if (ENABLE_LTO) + set_property (TARGET ${LV2PLUGIN_PRJ_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION True) +endif() + +# Remove the "lib" prefix, rename the target name and build it in the .lv build dir +# /lv2/_lv2. to +# /lv2/.lv2/. +set_target_properties (${LV2PLUGIN_PRJ_NAME} PROPERTIES PREFIX "") +set_target_properties (${LV2PLUGIN_PRJ_NAME} PROPERTIES OUTPUT_NAME "${CMAKE_PROJECT_NAME}") +set_target_properties (${LV2PLUGIN_PRJ_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}") + +# Generate *.ttl files from *.in sources, +# create the destination directory if it doesn't exists and copy needed files +file (MAKE_DIRECTORY ${PROJECT_BINARY_DIR}) +configure_file (manifest.ttl.in ${PROJECT_BINARY_DIR}/manifest.ttl) +configure_file (${CMAKE_PROJECT_NAME}.ttl.in ${PROJECT_BINARY_DIR}/${CMAKE_PROJECT_NAME}.ttl) + +# Installation +install (DIRECTORY ${PROJECT_BINARY_DIR} DESTINATION ${LV2PLUGIN_INSTALL_DIR}) diff --git a/lv2/manifest.ttl.in b/lv2/manifest.ttl.in new file mode 100644 index 00000000..ee608fb7 --- /dev/null +++ b/lv2/manifest.ttl.in @@ -0,0 +1,7 @@ +@prefix lv2: . +@prefix rdfs: . + +<@LV2PLUGIN_URI@> + a lv2:Plugin ; + lv2:binary <@CMAKE_PROJECT_NAME@.@LV2PLUGIN_EXT@> ; + rdfs:seeAlso <@CMAKE_PROJECT_NAME@.ttl> . diff --git a/lv2/sfizz.ttl.in b/lv2/sfizz.ttl.in new file mode 100644 index 00000000..032d51ff --- /dev/null +++ b/lv2/sfizz.ttl.in @@ -0,0 +1,108 @@ +@prefix atom: . +@prefix bufsize: . +@prefix doap: . +@prefix foaf: . +@prefix lv2: . +@prefix midi: . +@prefix opts: . +@prefix patch: . +@prefix pg: . +@prefix pprop: . +@prefix rdf: . +@prefix rdfs: . +@prefix state: . +@prefix units: . +@prefix urid: . +@prefix work: . + +<#config> + a pg:Group ; + lv2:symbol "config" ; + lv2:name "Configuration" . + +<@LV2PLUGIN_URI@:sfzfile> + a lv2:Parameter ; + rdfs:label "SFZ file" ; + rdfs:range atom:Path . + +<@LV2PLUGIN_URI@:numvoices> + a lv2:Parameter ; + rdfs:label "Polyphony" ; + rdfs:range atom:Int . + +<@LV2PLUGIN_URI@> + a doap:Project, lv2:Plugin, lv2:InstrumentPlugin ; + + doap:name "@LV2PLUGIN_NAME@" ; + doap:license ; + doap:maintainer [ + foaf:name "@LV2PLUGIN_AUTHOR@" ; + foaf:homepage <@LV2PLUGIN_URI@> ; + ] ; + rdfs:comment "@LV2PLUGIN_COMMENT@" ; + + lv2:minorVersion @LV2PLUGIN_VERSION_MINOR@ ; + lv2:microVersion @LV2PLUGIN_VERSION_MICRO@ ; + + lv2:requiredFeature urid:map, bufsize:boundedBlockLength, work:schedule ; + lv2:optionalFeature lv2:hardRTCapable, opts:options ; + lv2:extensionData opts:interface, state:interface, work:interface ; + + patch:writable <@LV2PLUGIN_URI@:sfzfile> ; + + lv2:port [ + a lv2:InputPort, atom:AtomPort ; + atom:bufferType atom:Sequence ; + atom:supports patch:Message, midi:MidiEvent ; + lv2:designation lv2:control ; + lv2:index 0 ; + lv2:symbol "control" ; + lv2:name "Control" + ] , [ + a lv2:OutputPort, atom:AtomPort ; + atom:bufferType atom:Sequence ; + atom:supports patch:Message ; + lv2:designation lv2:control ; + lv2:index 1 ; + lv2:symbol "notify" ; + lv2:name "Notify" ; + ] , [ + a lv2:AudioPort , lv2:OutputPort ; + lv2:index 2 ; + lv2:symbol "out_left" ; + lv2:name "Left Output" + ] , [ + a lv2:AudioPort , lv2:OutputPort ; + lv2:index 3 ; + lv2:symbol "out_right" ; + lv2:name "Right Output" + ] , [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 4 ; + lv2:symbol "volume" ; + lv2:name "Volume" ; + lv2:default 0.0 ; + lv2:minimum -80.0 ; + lv2:maximum 6.0 ; + lv2:portProperty pprop:notAutomatic ; + units:unit units:db + ] , [ + a lv2:InputPort, lv2:ControlPort ; + lv2:index 5 ; + lv2:symbol "num_voices" ; + lv2:name "Polyphony" ; + pg:group <#config> ; + lv2:portProperty pprop:notAutomatic ; + lv2:portProperty pprop:expensive ; + lv2:portProperty lv2:integer ; + lv2:portProperty lv2:enumeration ; + lv2:default 64 ; + lv2:minimum 8 ; + lv2:maximum 256 ; + lv2:scalePoint [ rdfs:label "8 voices"; rdf:value 8 ] ; + lv2:scalePoint [ rdfs:label "16 voices"; rdf:value 16 ] ; + lv2:scalePoint [ rdfs:label "32 voices"; rdf:value 32 ] ; + lv2:scalePoint [ rdfs:label "64 voices"; rdf:value 64 ] ; + lv2:scalePoint [ rdfs:label "128 voices"; rdf:value 128 ] ; + lv2:scalePoint [ rdfs:label "256 voices"; rdf:value 256 ] ; + ] . diff --git a/old_cmake/benchmark.txt b/old_cmake/benchmark.txt new file mode 100644 index 00000000..350482ab --- /dev/null +++ b/old_cmake/benchmark.txt @@ -0,0 +1,125 @@ +project(sfizz) + +include(FetchContent) +FetchContent_Declare( + benchmark + GIT_REPOSITORY https://github.com/google/benchmark.git + GIT_TAG v1.5.0 +) + +FetchContent_GetProperties(benchmark) +if(NOT benchmark_POPULATED) + FetchContent_Populate(benchmark) + add_subdirectory(${benchmark_SOURCE_DIR} ${benchmark_BINARY_DIR}) +endif() + +# Check SIMD +include(CheckIncludeFiles) +CHECK_INCLUDE_FILES(x86intrin.h HAVE_X86INTRIN_H) +CHECK_INCLUDE_FILES(intrin.h HAVE_INTRIN_H) +CHECK_INCLUDE_FILES(arm_neon.h HAVE_ARM_NEON_H) + +# SIMD checks +if (HAVE_X86INTRIN_H AND UNIX) + add_compile_options(-DHAVE_X86INTRIN_H) + set(SFIZZ_SIMD_SOURCES ../sfizz/SIMDSSE.cpp) +elseif (HAVE_INTRIN_H AND WIN32) + add_compile_options(/DHAVE_INTRIN_H) + set(SFIZZ_SIMD_SOURCES ../sfizz/SIMDSSE.cpp) +elseif (HAVE_ARM_NEON_H AND UNIX) + add_compile_options(-DHAVE_ARM_NEON_H) + add_compile_options(-mfpu=neon-fp-armv8) + add_compile_options(-march=native) + add_compile_options(-mtune=cortex-a53) + add_compile_options(-funsafe-math-optimizations) + set(SFIZZ_SIMD_SOURCES ../sfizz/SIMDNEON.cpp) +else() + set(SFIZZ_SIMD_SOURCES ../sfizz/SIMDDummy.cpp) +endif() + +add_executable(bm_opf_high_vs_low BM_OPF_high_vs_low.cpp) +target_link_libraries(bm_opf_high_vs_low benchmark absl::span) + +add_executable(bm_write BM_writeInterleaved.cpp ${SFIZZ_SIMD_SOURCES}) +target_link_libraries(bm_write benchmark absl::span) + +add_executable(bm_read BM_readInterleaved.cpp ${SFIZZ_SIMD_SOURCES}) +target_link_libraries(bm_read benchmark absl::span) + +add_executable(bm_fill BM_fill.cpp ${SFIZZ_SIMD_SOURCES}) +target_link_libraries(bm_fill benchmark absl::span) + +add_executable(bm_mathfuns BM_mathfuns.cpp ${SFIZZ_SIMD_SOURCES}) +target_link_libraries(bm_mathfuns benchmark absl::span) + +add_executable(bm_gain BM_gain.cpp ${SFIZZ_SIMD_SOURCES}) +target_link_libraries(bm_gain benchmark absl::span) + +add_executable(bm_looping BM_looping.cpp ${SFIZZ_SIMD_SOURCES}) +target_link_libraries(bm_looping benchmark absl::span absl::algorithm) + +add_executable(bm_saturating BM_saturating.cpp ${SFIZZ_SIMD_SOURCES}) +target_link_libraries(bm_saturating benchmark absl::span absl::algorithm) + +add_executable(bm_ramp BM_ramp.cpp ${SFIZZ_SIMD_SOURCES}) +target_link_libraries(bm_ramp benchmark absl::span absl::algorithm) + +add_executable(bm_ADSR BM_ADSR.cpp ${SFIZZ_SIMD_SOURCES}) +target_link_libraries(bm_ADSR benchmark absl::span absl::algorithm) + +add_executable(bm_add BM_add.cpp ${SFIZZ_SIMD_SOURCES}) +target_link_libraries(bm_add benchmark absl::span absl::algorithm) + +add_executable(bm_multiplyAdd BM_multiplyAdd.cpp ${SFIZZ_SIMD_SOURCES}) +target_link_libraries(bm_multiplyAdd benchmark absl::span absl::algorithm) + +add_executable(bm_subtract BM_subtract.cpp ${SFIZZ_SIMD_SOURCES}) +target_link_libraries(bm_subtract benchmark absl::span absl::algorithm) + +add_executable(bm_copy BM_copy.cpp ${SFIZZ_SIMD_SOURCES}) +target_link_libraries(bm_copy benchmark absl::span absl::algorithm) + +add_executable(bm_pan BM_pan.cpp ${SFIZZ_SIMD_SOURCES}) +target_link_libraries(bm_pan benchmark absl::span absl::algorithm) + +add_executable(bm_mean BM_mean.cpp ${SFIZZ_SIMD_SOURCES}) +target_link_libraries(bm_mean benchmark absl::span absl::algorithm) + +add_executable(bm_meanSquared BM_meanSquared.cpp ${SFIZZ_SIMD_SOURCES}) +target_link_libraries(bm_meanSquared benchmark absl::span absl::algorithm) + +add_executable(bm_cumsum BM_cumsum.cpp ${SFIZZ_SIMD_SOURCES}) +target_link_libraries(bm_cumsum benchmark absl::span absl::algorithm) + +add_executable(bm_diff BM_diff.cpp ${SFIZZ_SIMD_SOURCES}) +target_link_libraries(bm_diff benchmark absl::span absl::algorithm) + +add_executable(bm_interpolationCast BM_interpolationCast.cpp ${SFIZZ_SIMD_SOURCES}) +target_link_libraries(bm_interpolationCast benchmark absl::span absl::algorithm) + +add_executable(bm_pointerIterationOrOffsets BM_pointerIterationOrOffsets.cpp ${SFIZZ_SIMD_SOURCES}) +target_link_libraries(bm_pointerIterationOrOffsets benchmark absl::span absl::algorithm) + +add_custom_target(sfizz_benchmarks) +add_dependencies(sfizz_benchmarks + bm_opf_high_vs_low + bm_write + bm_pointerIterationOrOffsets + bm_read + bm_mean + bm_meanSquared + bm_fill + bm_cumsum + bm_diff + bm_interpolationCast + bm_mathfuns + bm_gain + bm_looping + bm_saturating + bm_ramp + bm_ADSR + bm_add + bm_pan + bm_subtract + bm_multiplyAdd +) \ No newline at end of file diff --git a/old_cmake/client.txt b/old_cmake/client.txt new file mode 100644 index 00000000..2dbefa05 --- /dev/null +++ b/old_cmake/client.txt @@ -0,0 +1,21 @@ +project(sfizz) + +############################### +add_executable(sfzprint sfzprint.cpp) +target_link_libraries(sfzprint sfizz::parser absl::flags_parse) +install(TARGETS sfzprint DESTINATION . OPTIONAL) + +############################### +# Basic command line program +if(APPLE) + find_path(JACK_INCLUDE_DIR NAMES jack.h PATHS "/usr/local/include/jack") + find_library(JACK_LIBRARY NAMES jack PATHS "/usr/local/lib") + message(STATUS "include dir: " ${JACK_INCLUDE_DIR} " lib: " ${JACK_LIBRARY}) + add_library(jack SHARED IMPORTED GLOBAL) + target_include_directories(jack INTERFACE ${JACK_INCLUDE_DIR}) + target_link_libraries(jack INTERFACE ${JACK_LIBRARY}) +endif() + +add_executable(sfizz_jack jack_client.cpp) +target_link_libraries(sfizz_jack sfizz::sfizz jack absl::flags_parse) +install(TARGETS sfizz_jack DESTINATION . OPTIONAL) diff --git a/old_cmake/lv2.txt b/old_cmake/lv2.txt new file mode 100644 index 00000000..b7f33978 --- /dev/null +++ b/old_cmake/lv2.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.11) +project(sfizz-lv2) + +find_package(PkgConfig REQUIRED) +pkg_check_modules(sfizz REQUIRED IMPORTED_TARGET sfizz) + +# Force add relocation to the flags globally. It's ugly but what can you do... +# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") + +# Export the compile_commands.json file +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +add_library(sfizz-lv2 SHARED sfizz.c) +set_target_properties(sfizz-lv2 PROPERTIES PREFIX "") +set_target_properties(sfizz-lv2 PROPERTIES OUTPUT_NAME "sfizz") +target_link_libraries(sfizz-lv2 sfizz) +if(UNIX) +target_compile_options(sfizz-lv2 PRIVATE -Wextra -pedantic -Wall -Werror) +endif() \ No newline at end of file diff --git a/old_cmake/root.txt b/old_cmake/root.txt new file mode 100644 index 00000000..d0c26f74 --- /dev/null +++ b/old_cmake/root.txt @@ -0,0 +1,105 @@ +cmake_minimum_required(VERSION 3.13) +project(sfizz VERSION 1.0.0 LANGUAGES CXX) + +# Do not override if set to more than 14 +if (NOT CMAKE_CXX_STANDARD OR CMAKE_CXX_STANDARD LESS 14) + set(CMAKE_CXX_STANDARD 14) +endif() + +# Skip installing all dependencies +set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY true) + +# Enable LTO +set(CMAKE_POLICY_DEFAULT_CMP0069 NEW) # To override the policy in abseil and benchmark +set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) + +# Enable PIC +# set(POSITION_INDEPENDENT_CODE ON) + +if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT ANDROID) + set(USE_LIBCPP ON CACHE BOOL "Use libc++ with clang") + add_compile_options(-stdlib=libc++) + # Presumably need the above for linking too, maybe other options missing as well + add_link_options(-stdlib=libc++) # New command on CMake master, not in 3.12 release + add_link_options(-lc++abi) # New command on CMake master, not in 3.12 release +endif() + +if (UNIX) + add_compile_options(-fPIC) + add_compile_options(-Wall) + add_compile_options(-Wextra) + add_compile_options(-ffast-math) + add_compile_options(-fno-omit-frame-pointer) +endif() + +if (WIN32) + # TODO: Remove when abseil updates (deprecation warning from c++17 onwards) + add_compile_options(/wd4996) + # add_compile_options(/W3) + # add_compile_options(/GR-) + # add_compile_options(/permissive-) + # add_compile_options(/fp:fast) +endif() + +message("Cmake flags: ${CMAKE_CXX_FLAGS}") + +# Export the compile_commands.json file +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +# find_package(Git QUIET) +# if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git") +# Update submodules as needed +# option(GIT_SUBMODULE "Check submodules during build" ON) + # if(GIT_SUBMODULE) + # message(STATUS "Submodule update") + # execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive --remote + # WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + # RESULT_VARIABLE GIT_SUBMOD_RESULT) + # if(NOT GIT_SUBMOD_RESULT EQUAL "0") +# message(FATAL_ERROR "git submodule update --init failed with ${GIT_SUBMOD_RESULT}, please checkout submodules") +# endif() +# endif() +# endif() + +# Build options and includes +set(BUILD_TESTING OFF CACHE BOOL "Disable Abseil's tests") +add_subdirectory(external/abseil-cpp EXCLUDE_FROM_ALL) + +# Download libsndfile +if (WIN32) + # file(DOWNLOAD https://github.com/bastibe/libsndfile-binaries/raw/master/libsndfile32bit.dll external/libsndfile-win/libsndfile32bit.dll) + # file(DOWNLOAD https://github.com/bastibe/libsndfile-binaries/raw/master/libsndfile64bit.dll external/libsndfile-win/libsndfile64bit.dll) + # message(STATUS "Downloading libsndfile") + # # find_library(sndfile libsndfile-1.lib HINTS ${WIN_SNDFILE_PATH}/lib) + set(WIN_SNDFILE_PATH "C:/Program Files/Mega-Nerd/libsndfile") + add_library(sndfile STATIC IMPORTED) + set_target_properties(sndfile PROPERTIES IMPORTED_LOCATION "${WIN_SNDFILE_PATH}/lib/libsndfile-1.lib") + set_target_properties(sndfile PROPERTIES LINKER_LANGUAGE CXX) + file(COPY "${WIN_SNDFILE_PATH}/bin/libsndfile-1.dll" DESTINATION ${CMAKE_BINARY_DIR}) + target_include_directories(sndfile INTERFACE "${WIN_SNDFILE_PATH}/include") +elseif(APPLE) + find_path(SNDFILE_INCLUDE_DIR NAMES sndfile.hh PATHS "/usr/local/include") + find_library(SNDFILE_LIBRARY NAMES sndfile PATHS "/usr/local/lib") + message(STATUS "include dir: " ${SNDFILE_INCLUDE_DIR} " lib: " ${SNDFILE_LIBRARY}) + add_library(sndfile SHARED IMPORTED GLOBAL) + target_include_directories(sndfile INTERFACE ${SNDFILE_INCLUDE_DIR}) + target_link_libraries(sndfile INTERFACE ${SNDFILE_LIBRARY}) +endif() + +add_subdirectory(sfizz) + +if (SFIZZ_CLIENTS) +add_subdirectory(clients) +endif() + +if (SFIZZ_TESTS) +add_subdirectory(tests) +endif() + +if (SFIZZ_BENCHMARKS) +# Benchmarks +set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable Google Benchmark tests") +set(BENCHMARK_ENABLE_INSTALL OFF CACHE BOOL "Disable Google Benchmark install") +add_subdirectory(external/benchmark EXCLUDE_FROM_ALL) +add_subdirectory(benchmarks) +endif() diff --git a/sfizz/CMakeLists.txt b/old_cmake/sfizz_source.txt similarity index 100% rename from sfizz/CMakeLists.txt rename to old_cmake/sfizz_source.txt diff --git a/old_cmake/tests.txt b/old_cmake/tests.txt new file mode 100644 index 00000000..882ff0fd --- /dev/null +++ b/old_cmake/tests.txt @@ -0,0 +1,40 @@ +############################### +# Test application + +project(sfizz) + +set(SFIZZ_TEST_SOURCES + RegionT.cpp + RegexT.cpp + HelpersT.cpp + HelpersT.cpp + AudioBufferT.cpp + RangeT.cpp + OpcodeT.cpp + BufferT.cpp + SIMDHelpersT.cpp + FilesT.cpp + OnePoleFilterT.cpp + RegionActivationT.cpp + RegionCrossfadesT.cpp + ADSREnvelopeT.cpp + LinearEnvelopeT.cpp + MainT.cpp + RegionTriggersT.cpp +) + +find_package(ZLIB REQUIRED) +add_library(cnpy cnpy.cpp) +target_link_libraries(cnpy PRIVATE ZLIB::ZLIB) + +add_executable(sfizz_tests ${SFIZZ_TEST_SOURCES}) +target_link_libraries(sfizz_tests PRIVATE sfizz) + +# Per OS properties +if(UNIX) + target_link_libraries(sfizz_tests PRIVATE atomic) +endif(UNIX) +target_link_libraries(sfizz_tests PRIVATE absl::strings absl::str_format absl::flat_hash_map sndfile cnpy absl::span absl::algorithm) +target_include_directories(sfizz_tests SYSTEM PRIVATE sources) + +file(COPY "." DESTINATION ${CMAKE_BINARY_DIR}/tests) \ No newline at end of file diff --git a/sfizz/sfizz.pc.in b/scripts/sfizz.pc.in similarity index 100% rename from sfizz/sfizz.pc.in rename to scripts/sfizz.pc.in diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 00000000..98d6ed36 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,61 @@ +project(sfizz) + +set (SFIZZ_SOURCES + sfizz/Synth.cpp + sfizz/FilePool.cpp + sfizz/Region.cpp + sfizz/Voice.cpp + sfizz/ScopedFTZ.cpp + sfizz/SfzHelpers.cpp + sfizz/FloatEnvelopes.cpp +) +include (SfizzSIMDSourceFilesCheck) + +# Parser core library +add_library (sfizz_parser STATIC) +target_sources (sfizz_parser PRIVATE sfizz/Parser.cpp sfizz/Opcode.cpp) +target_include_directories (sfizz_parser PUBLIC sfizz) +target_include_directories (sfizz_parser PUBLIC external) +target_link_libraries (sfizz_parser PRIVATE absl::strings) + +# Sfizz core library +add_library (sfizz STATIC ${SFIZZ_SOURCES} sfizz/sfizz_wrapper.cpp) +target_include_directories (sfizz PUBLIC sfizz) +target_include_directories (sfizz PUBLIC .) +target_include_directories (sfizz PUBLIC external) +target_link_libraries (sfizz PRIVATE sfizz_parser) +find_package (Threads REQUIRED) +target_link_libraries (sfizz PUBLIC absl::strings) +target_link_libraries (sfizz PRIVATE sndfile absl::flat_hash_map Threads::Threads) + +if (UNIX) + target_link_libraries (sfizz PUBLIC atomic) +endif() + +if (ENABLE_LTO) + set_property (TARGET sfizz_parser PROPERTY INTERPROCEDURAL_OPTIMIZATION True) + set_property (TARGET sfizz PROPERTY INTERPROCEDURAL_OPTIMIZATION True) +endif() + +add_library (sfizz::parser ALIAS sfizz_parser) +add_library (sfizz::sfizz ALIAS sfizz) + +# install(TARGETS sfizz_parser DESTINATION . EXCLUDE_FROM_ALL) +# install(TARGETS sfizz DESTINATION . EXCLUDE_FROM_ALL) + +# Shared library and installation target +if (SFIZZ_SHARED) + add_library (sfizz_shared SHARED sfizz.h) + set_target_properties (sfizz_shared PROPERTIES OUTPUT_NAME sfizz PUBLIC_HEADER sfizz.h) + target_link_libraries (sfizz_shared sfizz::sfizz) + configure_file (${CMAKE_SOURCE_DIR}/scripts/sfizz.pc.in sfizz.pc @ONLY) + if (UNIX) + include (GNUInstallDirs) + install (TARGETS sfizz_shared + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/static + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + install (FILES + ${CMAKE_BINARY_DIR}/src/sfizz.pc DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig) + endif() +endif() diff --git a/sfizz/ghc/filesystem.hpp b/src/external/ghc/filesystem.hpp similarity index 100% rename from sfizz/ghc/filesystem.hpp rename to src/external/ghc/filesystem.hpp diff --git a/sfizz/ghc/fs_fwd.hpp b/src/external/ghc/fs_fwd.hpp similarity index 100% rename from sfizz/ghc/fs_fwd.hpp rename to src/external/ghc/fs_fwd.hpp diff --git a/sfizz/ghc/fs_impl.hpp b/src/external/ghc/fs_impl.hpp similarity index 100% rename from sfizz/ghc/fs_impl.hpp rename to src/external/ghc/fs_impl.hpp diff --git a/sfizz/ghc/fs_std.hpp b/src/external/ghc/fs_std.hpp similarity index 100% rename from sfizz/ghc/fs_std.hpp rename to src/external/ghc/fs_std.hpp diff --git a/sfizz/ghc/fs_std_fwd.hpp b/src/external/ghc/fs_std_fwd.hpp similarity index 100% rename from sfizz/ghc/fs_std_fwd.hpp rename to src/external/ghc/fs_std_fwd.hpp diff --git a/sfizz/ghc/fs_std_impl.hpp b/src/external/ghc/fs_std_impl.hpp similarity index 100% rename from sfizz/ghc/fs_std_impl.hpp rename to src/external/ghc/fs_std_impl.hpp diff --git a/sfizz/mathfuns/neon_mathfun.h b/src/external/mathfuns/neon_mathfun.h similarity index 100% rename from sfizz/mathfuns/neon_mathfun.h rename to src/external/mathfuns/neon_mathfun.h diff --git a/sfizz/mathfuns/sse_mathfun.h b/src/external/mathfuns/sse_mathfun.h similarity index 100% rename from sfizz/mathfuns/sse_mathfun.h rename to src/external/mathfuns/sse_mathfun.h diff --git a/sfizz/atomicops.h b/src/external/moodycamel/atomicops.h similarity index 100% rename from sfizz/atomicops.h rename to src/external/moodycamel/atomicops.h diff --git a/sfizz/readerwriterqueue.h b/src/external/moodycamel/readerwriterqueue.h similarity index 100% rename from sfizz/readerwriterqueue.h rename to src/external/moodycamel/readerwriterqueue.h diff --git a/sfizz/sfizz.h b/src/sfizz.h similarity index 99% rename from sfizz/sfizz.h rename to src/sfizz.h index 86f578c4..34f75085 100644 --- a/sfizz/sfizz.h +++ b/src/sfizz.h @@ -23,7 +23,7 @@ /** @file - @brief sfizz public API. + @brief sfizz public C API */ #pragma once diff --git a/src/sfizz.hpp b/src/sfizz.hpp new file mode 100644 index 00000000..4dd6ab25 --- /dev/null +++ b/src/sfizz.hpp @@ -0,0 +1,2 @@ +#include "sfizz/AudioSpan.h" +#include "sfizz/Synth.h" \ No newline at end of file diff --git a/sfizz/ADSREnvelope.cpp b/src/sfizz/ADSREnvelope.cpp similarity index 100% rename from sfizz/ADSREnvelope.cpp rename to src/sfizz/ADSREnvelope.cpp diff --git a/sfizz/ADSREnvelope.h b/src/sfizz/ADSREnvelope.h similarity index 100% rename from sfizz/ADSREnvelope.h rename to src/sfizz/ADSREnvelope.h diff --git a/sfizz/AtomicGuard.h b/src/sfizz/AtomicGuard.h similarity index 100% rename from sfizz/AtomicGuard.h rename to src/sfizz/AtomicGuard.h diff --git a/sfizz/AudioBuffer.h b/src/sfizz/AudioBuffer.h similarity index 100% rename from sfizz/AudioBuffer.h rename to src/sfizz/AudioBuffer.h diff --git a/sfizz/AudioSpan.h b/src/sfizz/AudioSpan.h similarity index 100% rename from sfizz/AudioSpan.h rename to src/sfizz/AudioSpan.h diff --git a/sfizz/Buffer.h b/src/sfizz/Buffer.h similarity index 100% rename from sfizz/Buffer.h rename to src/sfizz/Buffer.h diff --git a/sfizz/CCMap.h b/src/sfizz/CCMap.h similarity index 100% rename from sfizz/CCMap.h rename to src/sfizz/CCMap.h diff --git a/sfizz/Config.h b/src/sfizz/Config.h similarity index 100% rename from sfizz/Config.h rename to src/sfizz/Config.h diff --git a/sfizz/Debug.h b/src/sfizz/Debug.h similarity index 100% rename from sfizz/Debug.h rename to src/sfizz/Debug.h diff --git a/sfizz/Defaults.h b/src/sfizz/Defaults.h similarity index 100% rename from sfizz/Defaults.h rename to src/sfizz/Defaults.h diff --git a/sfizz/EGDescription.h b/src/sfizz/EGDescription.h similarity index 100% rename from sfizz/EGDescription.h rename to src/sfizz/EGDescription.h diff --git a/sfizz/FilePool.cpp b/src/sfizz/FilePool.cpp similarity index 100% rename from sfizz/FilePool.cpp rename to src/sfizz/FilePool.cpp diff --git a/sfizz/FilePool.h b/src/sfizz/FilePool.h similarity index 98% rename from sfizz/FilePool.h rename to src/sfizz/FilePool.h index eee11e7a..c8d43c7b 100644 --- a/sfizz/FilePool.h +++ b/src/sfizz/FilePool.h @@ -28,7 +28,7 @@ #include "AudioBuffer.h" #include "Voice.h" #include "ghc/fs_std.hpp" -#include "readerwriterqueue.h" +#include "moodycamel/readerwriterqueue.h" #include #include #include diff --git a/sfizz/FloatEnvelopes.cpp b/src/sfizz/FloatEnvelopes.cpp similarity index 100% rename from sfizz/FloatEnvelopes.cpp rename to src/sfizz/FloatEnvelopes.cpp diff --git a/sfizz/HistoricalBuffer.h b/src/sfizz/HistoricalBuffer.h similarity index 100% rename from sfizz/HistoricalBuffer.h rename to src/sfizz/HistoricalBuffer.h diff --git a/sfizz/LeakDetector.h b/src/sfizz/LeakDetector.h similarity index 100% rename from sfizz/LeakDetector.h rename to src/sfizz/LeakDetector.h diff --git a/sfizz/LinearEnvelope.cpp b/src/sfizz/LinearEnvelope.cpp similarity index 100% rename from sfizz/LinearEnvelope.cpp rename to src/sfizz/LinearEnvelope.cpp diff --git a/sfizz/LinearEnvelope.h b/src/sfizz/LinearEnvelope.h similarity index 100% rename from sfizz/LinearEnvelope.h rename to src/sfizz/LinearEnvelope.h diff --git a/sfizz/MathHelpers.h b/src/sfizz/MathHelpers.h similarity index 100% rename from sfizz/MathHelpers.h rename to src/sfizz/MathHelpers.h diff --git a/sfizz/MidiState.h b/src/sfizz/MidiState.h similarity index 100% rename from sfizz/MidiState.h rename to src/sfizz/MidiState.h diff --git a/sfizz/OnePoleFilter.h b/src/sfizz/OnePoleFilter.h similarity index 100% rename from sfizz/OnePoleFilter.h rename to src/sfizz/OnePoleFilter.h diff --git a/sfizz/Opcode.cpp b/src/sfizz/Opcode.cpp similarity index 100% rename from sfizz/Opcode.cpp rename to src/sfizz/Opcode.cpp diff --git a/sfizz/Opcode.h b/src/sfizz/Opcode.h similarity index 100% rename from sfizz/Opcode.h rename to src/sfizz/Opcode.h diff --git a/sfizz/Parser.cpp b/src/sfizz/Parser.cpp similarity index 100% rename from sfizz/Parser.cpp rename to src/sfizz/Parser.cpp diff --git a/sfizz/Parser.h b/src/sfizz/Parser.h similarity index 100% rename from sfizz/Parser.h rename to src/sfizz/Parser.h diff --git a/sfizz/Range.h b/src/sfizz/Range.h similarity index 100% rename from sfizz/Range.h rename to src/sfizz/Range.h diff --git a/sfizz/Regexes.h b/src/sfizz/Regexes.h similarity index 100% rename from sfizz/Regexes.h rename to src/sfizz/Regexes.h diff --git a/sfizz/Region.cpp b/src/sfizz/Region.cpp similarity index 100% rename from sfizz/Region.cpp rename to src/sfizz/Region.cpp diff --git a/sfizz/Region.h b/src/sfizz/Region.h similarity index 100% rename from sfizz/Region.h rename to src/sfizz/Region.h diff --git a/sfizz/SIMDDummy.cpp b/src/sfizz/SIMDDummy.cpp similarity index 100% rename from sfizz/SIMDDummy.cpp rename to src/sfizz/SIMDDummy.cpp diff --git a/sfizz/SIMDHelpers.h b/src/sfizz/SIMDHelpers.h similarity index 100% rename from sfizz/SIMDHelpers.h rename to src/sfizz/SIMDHelpers.h diff --git a/sfizz/SIMDSSE.cpp b/src/sfizz/SIMDSSE.cpp similarity index 100% rename from sfizz/SIMDSSE.cpp rename to src/sfizz/SIMDSSE.cpp diff --git a/sfizz/ScopedFTZ.cpp b/src/sfizz/ScopedFTZ.cpp similarity index 100% rename from sfizz/ScopedFTZ.cpp rename to src/sfizz/ScopedFTZ.cpp diff --git a/sfizz/ScopedFTZ.h b/src/sfizz/ScopedFTZ.h similarity index 100% rename from sfizz/ScopedFTZ.h rename to src/sfizz/ScopedFTZ.h diff --git a/sfizz/SfzHelpers.cpp b/src/sfizz/SfzHelpers.cpp similarity index 100% rename from sfizz/SfzHelpers.cpp rename to src/sfizz/SfzHelpers.cpp diff --git a/sfizz/SfzHelpers.h b/src/sfizz/SfzHelpers.h similarity index 100% rename from sfizz/SfzHelpers.h rename to src/sfizz/SfzHelpers.h diff --git a/sfizz/StringViewHelpers.h b/src/sfizz/StringViewHelpers.h similarity index 100% rename from sfizz/StringViewHelpers.h rename to src/sfizz/StringViewHelpers.h diff --git a/sfizz/Synth.cpp b/src/sfizz/Synth.cpp similarity index 100% rename from sfizz/Synth.cpp rename to src/sfizz/Synth.cpp diff --git a/sfizz/Synth.h b/src/sfizz/Synth.h similarity index 100% rename from sfizz/Synth.h rename to src/sfizz/Synth.h diff --git a/sfizz/Voice.cpp b/src/sfizz/Voice.cpp similarity index 100% rename from sfizz/Voice.cpp rename to src/sfizz/Voice.cpp diff --git a/sfizz/Voice.h b/src/sfizz/Voice.h similarity index 100% rename from sfizz/Voice.h rename to src/sfizz/Voice.h diff --git a/sfizz/sfizz.cpp b/src/sfizz/sfizz_wrapper.cpp similarity index 100% rename from sfizz/sfizz.cpp rename to src/sfizz/sfizz_wrapper.cpp diff --git a/src/sfizz_parser.hpp b/src/sfizz_parser.hpp new file mode 100644 index 00000000..49ef76bc --- /dev/null +++ b/src/sfizz_parser.hpp @@ -0,0 +1,2 @@ +#include "sfizz/Parser.h" +#include "sfizz/Opcode.h" \ No newline at end of file diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 882ff0fd..ab383ecd 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -24,11 +24,12 @@ set(SFIZZ_TEST_SOURCES ) find_package(ZLIB REQUIRED) -add_library(cnpy cnpy.cpp) +add_library(cnpy cnpy/cnpy.cpp) target_link_libraries(cnpy PRIVATE ZLIB::ZLIB) +target_include_directories(cnpy PUBLIC cnpy) add_executable(sfizz_tests ${SFIZZ_TEST_SOURCES}) -target_link_libraries(sfizz_tests PRIVATE sfizz) +target_link_libraries(sfizz_tests PRIVATE sfizz::sfizz) # Per OS properties if(UNIX) diff --git a/tests/FilesT.cpp b/tests/FilesT.cpp index 06a65b63..3dd5a1cd 100644 --- a/tests/FilesT.cpp +++ b/tests/FilesT.cpp @@ -23,7 +23,7 @@ #include "Synth.h" #include "catch2/catch.hpp" -#include "../sfizz/ghc/fs_std.hpp" +#include "ghc/fs_std.hpp" using namespace Catch::literals; TEST_CASE("[Files] Single region (regions_one.sfz)") diff --git a/tests/OnePoleFilterT.cpp b/tests/OnePoleFilterT.cpp index 6df0b485..378271db 100644 --- a/tests/OnePoleFilterT.cpp +++ b/tests/OnePoleFilterT.cpp @@ -24,7 +24,7 @@ #include "OnePoleFilter.h" #include "catch2/catch.hpp" #include "cnpy.h" -#include "../sfizz/ghc/fs_std.hpp" +#include "ghc/fs_std.hpp" #include #include #include diff --git a/tests/cnpy.cpp b/tests/cnpy/cnpy.cpp similarity index 100% rename from tests/cnpy.cpp rename to tests/cnpy/cnpy.cpp diff --git a/tests/cnpy.h b/tests/cnpy/cnpy.h similarity index 100% rename from tests/cnpy.h rename to tests/cnpy/cnpy.h