Chris@366: Chris@366: LIB_DIR := src Chris@366: INC_DIR := cq Chris@366: TEST_DIR := test Chris@366: VAMP_DIR := vamp Chris@366: KFFT_DIR := src/ext/kissfft Chris@366: Chris@366: VAMPSDK_DIR ?= ../vamp-plugin-sdk Chris@366: Chris@366: PLUGIN_EXT ?= .so Chris@366: Chris@366: CXX ?= g++ Chris@366: CC ?= gcc Chris@366: AR ?= ar Chris@366: RANLIB ?= ranlib Chris@366: Chris@366: #VALGRIND ?= valgrind -q Chris@366: Chris@366: GENERAL_FLAGS := -I. -I$(VAMPSDK_DIR) -I$(INC_DIR) -I$(LIB_DIR) -I$(KFFT_DIR) -I$(KFFT_DIR)/tools -Dkiss_fft_scalar=double Chris@366: Chris@366: CFLAGS := $(GENERAL_FLAGS) $(CFLAGS) Chris@366: CXXFLAGS := $(GENERAL_FLAGS) $(CXXFLAGS) Chris@366: Chris@366: LDFLAGS := $(LDFLAGS) Chris@366: PLUGIN_LDFLAGS := $(LDFLAGS) $(PLUGIN_LDFLAGS) Chris@366: TEST_LDFLAGS := $(LDFLAGS) -lboost_unit_test_framework Chris@366: PF_LDFLAGS := $(LDFLAGS) -lsndfile Chris@366: Chris@366: LIB := libcq.a Chris@366: PLUGIN := cqvamp$(PLUGIN_EXT) Chris@366: PF := $(TEST_DIR)/processfile Chris@366: Chris@366: LIB_HEADERS := \ Chris@366: $(INC_DIR)/CQBase.h \ Chris@366: $(INC_DIR)/CQKernel.h \ Chris@366: $(INC_DIR)/ConstantQ.h \ Chris@366: $(INC_DIR)/CQSpectrogram.h \ Chris@366: $(INC_DIR)/CQInverse.h \ Chris@366: $(INC_DIR)/Chromagram.h \ Chris@366: $(LIB_DIR)/Pitch.h \ Chris@366: $(LIB_DIR)/dsp/FFT.h \ Chris@366: $(LIB_DIR)/dsp/KaiserWindow.h \ Chris@366: $(LIB_DIR)/dsp/MathUtilities.h \ Chris@366: $(LIB_DIR)/dsp/nan-inf.h \ Chris@366: $(LIB_DIR)/dsp/Resampler.h \ Chris@366: $(LIB_DIR)/dsp/SincWindow.h \ Chris@366: $(LIB_DIR)/dsp/Window.h \ Chris@366: $(KFFT_DIR)/kiss_fft.h \ Chris@366: $(KFFT_DIR)/tools/kiss_fftr.h Chris@366: Chris@366: LIB_SOURCES := \ Chris@366: $(LIB_DIR)/CQKernel.cpp \ Chris@366: $(LIB_DIR)/ConstantQ.cpp \ Chris@366: $(LIB_DIR)/CQSpectrogram.cpp \ Chris@366: $(LIB_DIR)/CQInverse.cpp \ Chris@366: $(LIB_DIR)/Chromagram.cpp \ Chris@366: $(LIB_DIR)/Pitch.cpp \ Chris@366: $(LIB_DIR)/dsp/FFT.cpp \ Chris@366: $(LIB_DIR)/dsp/KaiserWindow.cpp \ Chris@366: $(LIB_DIR)/dsp/MathUtilities.cpp \ Chris@366: $(LIB_DIR)/dsp/Resampler.cpp \ Chris@366: $(LIB_DIR)/dsp/SincWindow.cpp \ Chris@366: $(KFFT_DIR)/kiss_fft.c \ Chris@366: $(KFFT_DIR)/tools/kiss_fftr.c Chris@366: Chris@366: VAMP_HEADERS := \ Chris@366: $(VAMP_DIR)/CQVamp.h \ Chris@366: $(VAMP_DIR)/CQChromaVamp.h Chris@366: Chris@366: VAMP_SOURCES := \ Chris@366: $(VAMP_DIR)/CQVamp.cpp \ Chris@366: $(VAMP_DIR)/CQChromaVamp.cpp \ Chris@366: $(VAMP_DIR)/libmain.cpp Chris@366: Chris@366: TEST_SOURCES := \ Chris@366: $(TEST_DIR)/TestFFT.cpp \ Chris@366: $(TEST_DIR)/TestMathUtilities.cpp \ Chris@366: $(TEST_DIR)/TestResampler.cpp \ Chris@366: $(TEST_DIR)/TestWindow.cpp \ Chris@366: $(TEST_DIR)/TestCQKernel.cpp \ Chris@366: $(TEST_DIR)/TestCQFrequency.cpp \ Chris@366: $(TEST_DIR)/TestCQTime.cpp Chris@366: Chris@366: HEADERS := $(LIB_HEADERS) $(VAMP_HEADERS) Chris@366: SOURCES := $(LIB_SOURCES) $(VAMP_SOURCES) Chris@366: Chris@366: LIB_OBJECTS := $(LIB_SOURCES:.cpp=.o) Chris@366: LIB_OBJECTS := $(LIB_OBJECTS:.c=.o) Chris@366: Chris@366: OBJECTS := $(SOURCES:.cpp=.o) Chris@366: OBJECTS := $(OBJECTS:.c=.o) Chris@366: Chris@366: TEST_OBJECTS := $(TEST_SOURCES:.cpp=.o) Chris@366: TEST_TARGETS := $(TEST_SOURCES:.cpp=) Chris@366: Chris@366: PF_SOURCES := $(TEST_DIR)/processfile.cpp Chris@366: PF_OBJECTS := $(PF_SOURCES:.cpp=.o) $(OBJECTS) Chris@366: Chris@366: LIBS := $(VAMPSDK_DIR)/libvamp-sdk.a -lpthread Chris@366: Chris@366: default: all Chris@366: Chris@366: all: libs $(PF) test Chris@366: Chris@366: libs: $(LIB) $(PLUGIN) Chris@366: Chris@366: test: libs $(TEST_TARGETS) Chris@366: for t in $(TEST_TARGETS); do echo; echo "Running $$t"; $(VALGRIND) ./"$$t" || exit 1; done && echo && $(VALGRIND) "./test/test-inverse.sh" && echo 'Tests complete' Chris@366: Chris@366: $(PLUGIN): $(OBJECTS) Chris@366: $(CXX) -o $@ $^ $(LIBS) $(PLUGIN_LDFLAGS) Chris@366: Chris@366: $(PF): $(PF_OBJECTS) Chris@366: $(CXX) -o $@ $^ $(LIBS) $(PF_LDFLAGS) Chris@366: Chris@366: $(LIB): $(LIB_OBJECTS) Chris@366: $(RM) -f $@ Chris@366: $(AR) cr $@ $^ Chris@366: $(RANLIB) $@ Chris@366: Chris@366: $(TEST_DIR)/Test%: $(TEST_DIR)/Test%.o Chris@366: $(CXX) -o $@ $^ $(LIB) $(LIBS) $(TEST_LDFLAGS) Chris@366: Chris@366: clean: Chris@366: rm -f $(OBJECTS) $(TEST_OBJECTS) $(PF_OBJECTS) Chris@366: Chris@366: distclean: clean Chris@366: rm -f $(PLUGIN) $(TEST_TARGETS) Chris@366: Chris@366: depend: Chris@366: makedepend -Y -fMakefile.inc $(SOURCES) $(TEST_SOURCES) $(PF_SOURCES) $(HEADERS) Chris@366: Chris@366: # DO NOT DELETE Chris@366: Chris@366: src/CQKernel.o: src/dsp/MathUtilities.h src/dsp/nan-inf.h src/dsp/FFT.h Chris@366: src/CQKernel.o: src/dsp/Window.h Chris@366: src/ConstantQ.o: src/dsp/Resampler.h src/dsp/MathUtilities.h Chris@366: src/ConstantQ.o: src/dsp/nan-inf.h src/dsp/FFT.h Chris@366: src/CQInverse.o: src/dsp/Resampler.h src/dsp/MathUtilities.h Chris@366: src/CQInverse.o: src/dsp/nan-inf.h src/dsp/FFT.h Chris@366: src/Chromagram.o: src/Pitch.h Chris@366: src/Pitch.o: src/Pitch.h Chris@366: src/dsp/FFT.o: src/dsp/FFT.h src/dsp/MathUtilities.h src/dsp/nan-inf.h Chris@366: src/dsp/KaiserWindow.o: src/dsp/KaiserWindow.h src/dsp/MathUtilities.h Chris@366: src/dsp/KaiserWindow.o: src/dsp/nan-inf.h Chris@366: src/dsp/MathUtilities.o: src/dsp/MathUtilities.h src/dsp/nan-inf.h Chris@366: src/dsp/Resampler.o: src/dsp/Resampler.h src/dsp/MathUtilities.h Chris@366: src/dsp/Resampler.o: src/dsp/nan-inf.h src/dsp/KaiserWindow.h Chris@366: src/dsp/Resampler.o: src/dsp/SincWindow.h Chris@366: src/dsp/SincWindow.o: src/dsp/SincWindow.h Chris@366: src/ext/kissfft/kiss_fft.o: src/ext/kissfft/_kiss_fft_guts.h Chris@366: src/ext/kissfft/kiss_fft.o: src/ext/kissfft/kiss_fft.h Chris@366: src/ext/kissfft/tools/kiss_fftr.o: src/ext/kissfft/tools/kiss_fftr.h Chris@366: src/ext/kissfft/tools/kiss_fftr.o: src/ext/kissfft/kiss_fft.h Chris@366: src/ext/kissfft/tools/kiss_fftr.o: src/ext/kissfft/_kiss_fft_guts.h Chris@366: vamp/CQVamp.o: vamp/CQVamp.h cq/CQSpectrogram.h cq/ConstantQ.h cq/CQBase.h Chris@366: vamp/CQVamp.o: cq/CQParameters.h cq/CQKernel.h src/Pitch.h Chris@366: vamp/CQChromaVamp.o: vamp/CQChromaVamp.h cq/CQSpectrogram.h cq/ConstantQ.h Chris@366: vamp/CQChromaVamp.o: cq/CQBase.h cq/CQParameters.h cq/CQKernel.h Chris@366: vamp/libmain.o: vamp/CQVamp.h cq/CQSpectrogram.h cq/ConstantQ.h cq/CQBase.h Chris@366: vamp/libmain.o: cq/CQParameters.h cq/CQKernel.h vamp/CQChromaVamp.h Chris@366: test/TestFFT.o: src/dsp/FFT.h Chris@366: test/TestMathUtilities.o: src/dsp/MathUtilities.h src/dsp/nan-inf.h Chris@366: test/TestResampler.o: src/dsp/Resampler.h src/dsp/Window.h src/dsp/FFT.h Chris@366: test/TestWindow.o: src/dsp/Window.h Chris@366: test/TestCQKernel.o: cq/CQKernel.h cq/CQParameters.h Chris@366: test/TestCQFrequency.o: cq/CQSpectrogram.h cq/ConstantQ.h cq/CQBase.h Chris@366: test/TestCQFrequency.o: cq/CQParameters.h cq/CQKernel.h src/dsp/Window.h Chris@366: test/TestCQTime.o: cq/CQSpectrogram.h cq/ConstantQ.h cq/CQBase.h Chris@366: test/TestCQTime.o: cq/CQParameters.h cq/CQKernel.h src/dsp/Window.h Chris@366: test/processfile.o: cq/ConstantQ.h cq/CQBase.h cq/CQParameters.h Chris@366: test/processfile.o: cq/CQKernel.h Chris@366: cq/CQKernel.o: cq/CQParameters.h Chris@366: cq/ConstantQ.o: cq/CQBase.h cq/CQParameters.h cq/CQKernel.h Chris@366: cq/CQSpectrogram.o: cq/ConstantQ.h cq/CQBase.h cq/CQParameters.h Chris@366: cq/CQSpectrogram.o: cq/CQKernel.h Chris@366: cq/CQInverse.o: cq/CQBase.h cq/CQKernel.h cq/CQParameters.h Chris@366: cq/Chromagram.o: cq/CQBase.h Chris@366: src/dsp/MathUtilities.o: src/dsp/nan-inf.h Chris@366: src/ext/kissfft/tools/kiss_fftr.o: src/ext/kissfft/kiss_fft.h Chris@366: vamp/CQVamp.o: cq/CQSpectrogram.h cq/ConstantQ.h cq/CQBase.h Chris@366: vamp/CQVamp.o: cq/CQParameters.h cq/CQKernel.h