CC = gcc TARGET = parc BASENM = buffer piece-table SRC = $(addsuffix .c, $(addprefix src/, $(BASENM)) ) OBJDIR = out OBJ = $(addsuffix .o, $(addprefix $(OBJDIR)/, $(BASENM))) HEADERS = $(wildcard src/*.h) TEST := buffer TEST_FILES = $(addprefix tests/, $(TEST)) TEST_SOURCES = $(addsuffix .c, $(addprefix tests/, $(TEST))) all: $(TARGET) $(TARGET): $(OBJ) src/main.c @$(CC) $(CFLAGS) $(OBJ) src/main.c -o $(TARGET) $(OBJ): $(OBJDIR)/%.o: src/%.c $(HEADERS) @mkdir -p out @$(CC) $(CFLAGS) -o $@ -c $< clean: @rm -f $(TARGET) @rm -f out/* @rm -rf out/ @rm -f $(TEST_FILES) $(TEST_FILES): $(TARGET) $(TEST_SOURCES) $(HEADERS) @$(CC) $(CFLAGS) -o $@ $(addsuffix .c, $@) $(OBJ) @if ./$@ ; then echo "PASS: $@";else echo "FAIL: $@ exit value: $$?"; fi test: $(TEST_FILES) .PHONY: clean all test