ifeq ($(CONFIG),Debug)
CPPFLAGS ?= -g -O0 -Wall -Wcpp -Wunused-function -DDEBUG -DUSE_FULL_ASSERT
endif
ifeq ($(CONFIG),Release)
CPPFLAGS ?= -Os -ffast-math
endif
BUILDROOT ?= .
BUILD ?= $(BUILDROOT)/Build
PATCHSOURCE ?= $(BUILDROOT)/PatchSource
SOURCE = $(BUILDROOT)/Source
LIBSOURCE = $(BUILDROOT)/LibSource
BUILDSOURCE = $(BUILD)/Source
TESTPATCHES = $(BUILDROOT)/TestPatches
DSPINC = $(BUILDROOT)/Libraries/CMSIS/DSP/Include
DSPLIB = $(BUILDROOT)/Libraries/CMSIS/DSP/Source
DAISYSP = $(BUILDROOT)/Libraries/DaisySP/Source
CPPFLAGS += -I$(SOURCE)
CPPFLAGS += -I$(PATCHSOURCE)
CPPFLAGS += -I$(LIBSOURCE)
CPPFLAGS += -I$(BUILDSOURCE)
CPPFLAGS += -I$(TESTPATCHES)
CPPFLAGS += -I$(DSPINC)
CPPFLAGS += -I$(DAISYSP)
CPPFLAGS += -I$(DAISYSP)/Control
CPPFLAGS += -I$(DAISYSP)/Drums
CPPFLAGS += -I$(DAISYSP)/Dynamics
CPPFLAGS += -I$(DAISYSP)/Effects
CPPFLAGS += -I$(DAISYSP)/Filters
CPPFLAGS += -I$(DAISYSP)/Noise
CPPFLAGS += -I$(DAISYSP)/PhysicalModeling
CPPFLAGS += -I$(DAISYSP)/Synthesis
CPPFLAGS += -I$(DAISYSP)/Utility
CPPFLAGS += -ILibraries -ILibraries/KissFFT
CPPFLAGS += -D__PROGRAM_START=1 CPPFLAGS += "-DPATCHNAME=\"$(PATCHNAME)\""
CXXFLAGS = -std=gnu++17
LDLIBS = -lm
LDFLAGS = -Wl,--gc-sections
CC=$(TOOLROOT)gcc
LD=$(TOOLROOT)gcc
AR=$(TOOLROOT)ar
AS=$(TOOLROOT)as
NM=$(TOOLROOT)nm
CXX=$(TOOLROOT)g++
GDB=$(TOOLROOT)gdb
SIZE=$(TOOLROOT)size
RANLIB=$(TOOLROOT)ranlib
OBJCOPY=$(TOOLROOT)objcopy
OBJDUMP=$(TOOLROOT)objdump
include $(BUILDROOT)/sources.mk
C_SRC += Libraries/KissFFT/kiss_fft.c
C_SRC += $(wildcard $(BUILDSOURCE)/*.c)
CPP_SRC += $(wildcard $(BUILDSOURCE)/*.cpp)
C_SRC += $(wildcard $(PATCHSOURCE)/*.c)
CPP_SRC += $(wildcard $(PATCHSOURCE)/*.cpp)
CPP_SRC += $(wildcard $(DAISYSP)/*/*.cpp)
ifdef MAXIMILIAN
CPP_SRC := $(filter-out $(PATCHSOURCE)/$(MAXIMILIAN).cpp, $(CPP_SRC))
endif
OBJS = $(addprefix $(BUILD)/Test/,$(notdir $(C_SRC:.c=.o)))
OBJS += $(addprefix $(BUILD)/Test/,$(notdir $(CPP_SRC:.cpp=.o)))
vpath %.c $(sort $(dir $(C_SRC)))
vpath %.cpp $(sort $(dir $(CPP_SRC)))
vpath %.cpp $(SOURCE) $(LIBSOURCE) $(BUILDSOURCE)
vpath %.c $(SOURCE) $(LIBSOURCE) $(BUILDSOURCE)
.PHONY: native run test
native: $(TESTPATCHES)/PatchRun.cpp $(DEPS) $(OBJS)
@$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(TESTPATCHES)/PatchRun.cpp -I$(BUILD) $(OBJS) -o $(BUILD)/Test/patch
echo Built $(PATCHNAME) native executable in $(BUILD)/Test/patch
run: native
@$(BUILD)/Test/patch
grind: native
valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes $(BUILD)/Test/patch
test: $(TESTPATCHES)/PatchTest.cpp $(DEPS) $(OBJS)
@$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(TESTPATCHES)/PatchTest.cpp -I$(BUILD) $(OBJS) -o $(BUILD)/Test/$@
@$(BUILD)/Test/$@
$(BUILD)/Test/%.o: %.c
@$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
@$(CC) -MM -MT"$@" $(CPPFLAGS) $(CFLAGS) $< > $(@:.o=.d)
$(BUILD)/Test/%.o: %.cpp
@$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@
@$(CXX) -MM -MT"$@" $(CPPFLAGS) $(CXXFLAGS) $< > $(@:.o=.d)
-include $(OBJS:.o=.d) $(SOLO_OBJS:.o=.d) $(MULTI_OBJS:.o=.d)