CC = gcc CFLAGS = -g -Wall -Wpedantic -std=c89 TARGET = parc BASENM = piece-table SRC = $(addsuffix .c, $(addprefix src/, $(BASENM)) ) OBJDIR = out OBJ = $(addsuffix .o, $(addprefix $(OBJDIR)/, $(BASENM))) HEADERS = $(wildcard src/*.h) TEST := \ piece-table-delete \ piece-table-insert \ piece-table-internals 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) @printf "Running '%s'..." $@ @$(CC) $(CFLAGS) -o $@ $(addsuffix .c, $@) $(OBJ) @if ./$@ ; then printf "\t\tPASS\n";else printf "\t\tFAIL: exit value: %d\n" $$?; fi check: test test: $(TEST_FILES) .PHONY: clean all test check