From 698958a34679b0f494462fd5bb0b0c3b5cd7898d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Micha=C3=ABl=20Celerier?= Date: Thu, 5 Sep 2019 16:47:18 +0200 Subject: [PATCH 1/6] Implement CMake build script --- CMakeLists.txt | 143 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..dff5bbcd --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,143 @@ +cmake_minimum_required(VERSION 3.15 FATAL_ERROR) +project(rubberband VERSION 2.1.1) + +option(RUBBERBAND_EXAMPLE "Build the Rubberband example app" OFF) + +### Dependencies ### +find_package(Threads REQUIRED) + +# FFTW3 +find_path(FFTW3_INCLUDEDIR fftw3.h) +find_library(FFTW3_LIBRARY fftw3) + +# libsamplerate +find_path(SAMPLERATE_INCLUDEDIR samplerate.h) +find_library(SAMPLERATE_LIBRARY samplerate) + +### Create our target ### +add_library(rubberband) + +### Handle general flags, include paths, etc ### +target_compile_options(rubberband + PRIVATE + $<$:-mmacosx-version-min=10.7> + $<$>,$>:-ffast-math -march=native -O3 -ftree-vectorize> +) + +target_compile_definitions(rubberband + PRIVATE + $<$:USE_PTHREADS> + $<$:HAVE_VDSP> + MALLOC_IS_ALIGNED + NO_THREAD_CHECKS + NO_TIMING +) + +target_include_directories(rubberband + PUBLIC + $ + $ + PRIVATE + $ +) + +target_link_libraries(rubberband + PRIVATE + Threads::Threads +) + +# Handle FFT library +if(FFTW3_INCLUDEDIR AND FFTW3_LIBRARY) + target_include_directories(rubberband + PRIVATE + ${FFTW3_INCLUDEDIR} + ) + target_compile_definitions(rubberband + PRIVATE + HAVE_FFTW3 + FFTW_DOUBLE_ONLY + ) + target_link_libraries(rubberband + PUBLIC + ${FFTW3_LIBRARY} + ) +else() + target_compile_definitions(rubberband + PRIVATE + USE_KISSFFT + ) + target_sources(rubberband + PRIVATE + src/kissfft/kiss_fft.c + src/kissfft/kiss_fftr.c + ) +endif() + +# Handle resampling library +if(SAMPLERATE_INCLUDEDIR AND SAMPLERATE_LIBRARY) + target_include_directories(rubberband + PRIVATE + ${SAMPLERATE_INCLUDEDIR} + ) + target_compile_definitions(rubberband + PRIVATE + HAVE_LIBSAMPLERATE + ) + target_link_libraries(rubberband + PUBLIC + ${SAMPLERATE_LIBRARY} + ) +else() + target_compile_definitions(rubberband + PRIVATE + USE_SPEEX + ) + target_sources(rubberband + PRIVATE + src/speex/resample.c + ) +endif() + +### Source files ### +target_sources(rubberband + PRIVATE + src/RubberBandStretcher.cpp + src/StretchCalculator.cpp + src/StretcherChannelData.cpp + src/StretcherImpl.cpp + src/StretcherProcess.cpp + src/audiocurves/CompoundAudioCurve.cpp + src/audiocurves/ConstantAudioCurve.cpp + src/audiocurves/HighFrequencyAudioCurve.cpp + src/audiocurves/PercussiveAudioCurve.cpp + src/audiocurves/SilentAudioCurve.cpp + src/audiocurves/SpectralDifferenceAudioCurve.cpp + src/base/Profiler.cpp + src/dsp/AudioCurveCalculator.cpp + src/dsp/FFT.cpp + src/dsp/Resampler.cpp + src/rubberband-c.cpp + src/system/Allocators.cpp + src/system/Thread.cpp + src/system/VectorOpsComplex.cpp + src/system/sysutils.cpp +) + +### Example ### +if(RUBBERBAND_EXAMPLE) + add_executable(rubberband_test main/main.cpp) + target_include_directories(rubberband_test PRIVATE src Threads::Threads) + target_link_libraries(rubberband_test PRIVATE rubberband -lsndfile) +endif() + +### Installation ### + +install( + TARGETS rubberband + EXPORT rubberband-exports + RUNTIME DESTINATION lib + ARCHIVE DESTINATION lib) + +install(EXPORT rubberband-exports + DESTINATION lib/cmake/rubberband) +export(EXPORT rubberband-exports) From 8df1fb04f89b1ef66097e4add70d1b3fad04a44e Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 18 Nov 2019 18:42:52 +0100 Subject: [PATCH 2/6] Fix CMakeLists.txt for MSVC (tested with Community 2017) --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index dff5bbcd..f29fe58b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,6 +28,9 @@ target_compile_definitions(rubberband PRIVATE $<$:USE_PTHREADS> $<$:HAVE_VDSP> + $<$>:__MSVC__ WIN32 _LIB NOMINMAX _USE_MATH_DEFINES USE_KISSFFT USE_SPEEX> + $<$,$>:NDEBUG> + $<$,$>:_DEBUG NO_TIMING NO_THREAD_CHECKS> MALLOC_IS_ALIGNED NO_THREAD_CHECKS NO_TIMING @@ -38,6 +41,7 @@ target_include_directories(rubberband $ $ PRIVATE + $ $ ) From d78ecf7b396dea540cfc35c562e9b104c7897c43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Micha=C3=ABl=20Celerier?= Date: Mon, 25 Nov 2019 18:45:53 +0100 Subject: [PATCH 3/6] Accelerate framework --- CMakeLists.txt | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index f29fe58b..1e7ca204 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,6 +14,11 @@ find_library(FFTW3_LIBRARY fftw3) find_path(SAMPLERATE_INCLUDEDIR samplerate.h) find_library(SAMPLERATE_LIBRARY samplerate) +# Accelerate framework +if(APPLE) + find_library(ACCELERATE_FRAMEWORK NAMES Accelerate) +endif() + ### Create our target ### add_library(rubberband) @@ -77,6 +82,14 @@ else() ) endif() +# Apple framework +if(APPLE) + target_link_libraries(rubberband + PRIVATE + "${ACCELERATE_FRAMEWORK}" + ) +endif() + # Handle resampling library if(SAMPLERATE_INCLUDEDIR AND SAMPLERATE_LIBRARY) target_include_directories(rubberband From 09e31f7070dc5ed60a880938571e50b7fa702deb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Micha=C3=ABl=20Celerier?= Date: Fri, 29 Nov 2019 19:47:19 +0100 Subject: [PATCH 4/6] Fixes for libsamplerate --- CMakeLists.txt | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1e7ca204..b116a7c5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,8 +11,10 @@ find_path(FFTW3_INCLUDEDIR fftw3.h) find_library(FFTW3_LIBRARY fftw3) # libsamplerate -find_path(SAMPLERATE_INCLUDEDIR samplerate.h) -find_library(SAMPLERATE_LIBRARY samplerate) +if(NOT TARGET samplerate) + find_path(SAMPLERATE_INCLUDEDIR samplerate.h) + find_library(SAMPLERATE_LIBRARY samplerate) +endif() # Accelerate framework if(APPLE) @@ -91,7 +93,17 @@ if(APPLE) endif() # Handle resampling library -if(SAMPLERATE_INCLUDEDIR AND SAMPLERATE_LIBRARY) +if(TARGET samplerate) + target_compile_definitions(rubberband + PRIVATE + HAVE_LIBSAMPLERATE + ) + + target_link_libraries(rubberband + PRIVATE + samplerate + ) +elseif(SAMPLERATE_INCLUDEDIR AND SAMPLERATE_LIBRARY) target_include_directories(rubberband PRIVATE ${SAMPLERATE_INCLUDEDIR} From d10e4fd2c914ec029d46bd943dd72f8ff8d1b104 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Micha=C3=ABl=20Celerier?= Date: Sat, 21 Dec 2019 12:23:08 +0100 Subject: [PATCH 5/6] Do not build for 10.7 as it uses libstdc++ instead of libc++ not available in newer macOS --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b116a7c5..614589d5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,7 +27,7 @@ add_library(rubberband) ### Handle general flags, include paths, etc ### target_compile_options(rubberband PRIVATE - $<$:-mmacosx-version-min=10.7> + $<$:-mmacosx-version-min=10.11> $<$>,$>:-ffast-math -march=native -O3 -ftree-vectorize> ) From 893b93460d86da24fdcc1bd1319d70469f0758cb Mon Sep 17 00:00:00 2001 From: Antoine Villeret Date: Wed, 19 Feb 2020 12:10:37 +0100 Subject: [PATCH 6/6] Don't force march to native this might fix libossia crosscompiling --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 614589d5..c265a8c2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,7 +28,7 @@ add_library(rubberband) target_compile_options(rubberband PRIVATE $<$:-mmacosx-version-min=10.11> - $<$>,$>:-ffast-math -march=native -O3 -ftree-vectorize> + $<$>,$>:-ffast-math -O3 -ftree-vectorize> ) target_compile_definitions(rubberband