From 3a3acae7775b87f80066db84ae9a80279c09783a Mon Sep 17 00:00:00 2001 From: David Madl Date: Sat, 7 Mar 2026 22:56:32 +0100 Subject: [PATCH] build: make Android NDK build happy --- CMakeLists.txt | 106 +++++++++++++++++--------------- src/common/VectorOpsComplex.cpp | 2 +- src/ext/getopt/getopt.c | 4 ++ src/ext/getopt/getopt.h | 2 + src/ext/getopt/getopt_long.c | 3 + 5 files changed, 68 insertions(+), 49 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 213e4a7..05d426f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,59 +3,69 @@ project(rubberband) set(CMAKE_CXX_STANDARD 20) -set(CMAKE_CXX_FLAGS "-DNOMINMAX -DUSE_BQRESAMPLER -DHAVE_KISSFFT") +# -DNOMINMAX: for MSVCC to avoid defining max() as macro, breaking std::max() +# -DHAVE_UNISTD_H: for libsndfile access() +# -DUSE_PTHREADS: for Thread.h +set(CMAKE_CXX_FLAGS "-DNOMINMAX -DHAVE_UNISTD_H -DUSE_PTHREADS -DUSE_BQRESAMPLER -DHAVE_KISSFFT") + +# disable libsndfile tests +set(BUILD_TESTING FALSE) -#include_directories(mpg123/lib/x86_64/include) include_directories( -./dotnet/rubberband-dll -./ladspa-lv2 -./rubberband -./src/common -./src/ext/float_cast -./src/ext/getopt -./src/ext/kissfft -./src/ext/pommier -./src/ext/speex -./src/faster -./src/finer -./vamp + ./rubberband + ./src/common + ./src/ext/float_cast + ./src/ext/kissfft + ./src/ext/pommier + ./src/ext/speex + ./src/faster + ./src/finer ) -add_executable(rubberband -./src/ext/getopt/getopt.c -./src/ext/getopt/getopt_long.c -./src/ext/kissfft/kiss_fft.c -./src/ext/kissfft/kiss_fftr.c -./src/ext/speex/resample.c -./main/main.cpp -./src/common/Allocators.cpp -./src/common/BQResampler.cpp -./src/common/FFT.cpp -./src/common/Log.cpp -./src/common/mathmisc.cpp -./src/common/Profiler.cpp -./src/common/Resampler.cpp -./src/common/StretchCalculator.cpp -./src/common/sysutils.cpp -./src/common/Thread.cpp -./src/common/VectorOpsComplex.cpp -./src/faster/AudioCurveCalculator.cpp -./src/faster/CompoundAudioCurve.cpp -./src/faster/HighFrequencyAudioCurve.cpp -./src/faster/PercussiveAudioCurve.cpp -./src/faster/R2Stretcher.cpp -./src/faster/SilentAudioCurve.cpp -./src/faster/StretcherChannelData.cpp -./src/faster/StretcherProcess.cpp -./src/finer/R3LiveShifter.cpp -./src/finer/R3Stretcher.cpp -./src/rubberband-c.cpp -./src/RubberBandLiveShifter.cpp -./src/RubberBandStretcher.cpp +if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + # only for WIN32 target system + include_directories( + ./src/ext/getopt + ) +endif() + +set(RUBBERBAND_SRC + #./src/ext/getopt/getopt.c + #./src/ext/getopt/getopt_long.c + ./src/ext/kissfft/kiss_fft.c + ./src/ext/kissfft/kiss_fftr.c + ./src/ext/speex/resample.c + ./main/main.cpp + ./src/common/Allocators.cpp + ./src/common/BQResampler.cpp + ./src/common/FFT.cpp + ./src/common/Log.cpp + ./src/common/mathmisc.cpp + ./src/common/Profiler.cpp + ./src/common/Resampler.cpp + ./src/common/StretchCalculator.cpp + ./src/common/sysutils.cpp + ./src/common/Thread.cpp + ./src/common/VectorOpsComplex.cpp + ./src/faster/AudioCurveCalculator.cpp + ./src/faster/CompoundAudioCurve.cpp + ./src/faster/HighFrequencyAudioCurve.cpp + ./src/faster/PercussiveAudioCurve.cpp + ./src/faster/R2Stretcher.cpp + ./src/faster/SilentAudioCurve.cpp + ./src/faster/StretcherChannelData.cpp + ./src/faster/StretcherProcess.cpp + ./src/finer/R3LiveShifter.cpp + ./src/finer/R3Stretcher.cpp + ./src/rubberband-c.cpp + ./src/RubberBandLiveShifter.cpp + ./src/RubberBandStretcher.cpp ) -#target_link_directories(rubberband PRIVATE mpg123/lib/x86_64) -#target_link_libraries(test_lockstep mpg123-0) -#target_link_libraries(rubberband ${CMAKE_SOURCE_DIR}/mpg123/lib/x86_64/libmpg123.dll.a) + +add_executable(rubberband-main ${RUBBERBAND_SRC}) + +add_library(rubberband SHARED ${RUBBERBAND_SRC}) add_subdirectory(src/ext/libsndfile) +target_link_libraries(rubberband-main sndfile) target_link_libraries(rubberband sndfile) diff --git a/src/common/VectorOpsComplex.cpp b/src/common/VectorOpsComplex.cpp index bba7cef..8df0b51 100644 --- a/src/common/VectorOpsComplex.cpp +++ b/src/common/VectorOpsComplex.cpp @@ -23,7 +23,7 @@ #include "VectorOpsComplex.h" -#include "system/sysutils.h" +//#include "system/sysutils.h" #include diff --git a/src/ext/getopt/getopt.c b/src/ext/getopt/getopt.c index 1ca7d77..09ef7a6 100644 --- a/src/ext/getopt/getopt.c +++ b/src/ext/getopt/getopt.c @@ -31,6 +31,8 @@ * SUCH DAMAGE. */ +#if OS_IS_WIN32 + #include #include #include @@ -114,3 +116,5 @@ getopt(nargc, nargv, ostr) } return (optopt); /* dump back option letter */ } + +#endif \ No newline at end of file diff --git a/src/ext/getopt/getopt.h b/src/ext/getopt/getopt.h index d95d6cf..f82d1e6 100644 --- a/src/ext/getopt/getopt.h +++ b/src/ext/getopt/getopt.h @@ -61,6 +61,8 @@ # if !defined(GETOPT_API) # define GETOPT_API __declspec(dllimport) # endif +#else +# define GETOPT_API #endif /* diff --git a/src/ext/getopt/getopt_long.c b/src/ext/getopt/getopt_long.c index f5cd244..0182299 100644 --- a/src/ext/getopt/getopt_long.c +++ b/src/ext/getopt/getopt_long.c @@ -37,6 +37,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#if OS_IS_WIN32 #include #include @@ -549,3 +550,5 @@ getopt_long(nargc, nargv, options, long_options, idx) return retval; } #endif /* !GETOPT_LONG */ + +#endif \ No newline at end of file