CC ?= gcc CFLAGS ?= -Wall -Wextra -g -Isrc LDFLAGS ?= -ljack -lm -lpthread -lsndfile SRC = src/main.c src/looper.c src/channel.c src/midi.c src/ringbuffer.c src/wav.c OBJ = $(SRC:.c=.o) looper: $(OBJ) $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) src/%.o: src/%.c $(CC) $(CFLAGS) -c -o $@ $< integration: looper tests/integration.c $(CC) $(CFLAGS) -o integration_test tests/integration.c -ljack -lm -lpthread ./integration_test test: integration .PHONY: clean integration test clean: rm -f looper integration_test src/*.o check: cppcheck --enable=all --error-exitcode=1 --suppress=missingIncludeSystem --suppress=normalCheckLevelMaxBranches src/*.c --library=posix . # Optional: Format code using clang-format format: clang-format -i src/*.c install-hooks: git config core.hooksPath .githooks