cmake_minimum_required(VERSION 3.22.1) project(rubberband) set(CMAKE_CXX_STANDARD 20) # -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") # TODO: see Android.mk in librubberband and copy options from LOCAL_CFLAGS # disable libsndfile tests set(BUILD_TESTING FALSE) include_directories( ./rubberband ./src/common ./src/ext/float_cast ./src/ext/kissfft #./src/ext/pommier #./src/ext/speex ./src/faster ./src/finer ) 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 ) 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)