CC = gcc CFLAGS=-g -Wall -DDEBUG -Wpedantic SRCDIR=src OBJDIR=obj SRCS=$(wildcard $(SRCDIR)/*.c) # Substitute all .c with .o from SRCS OBJS=$(patsubst $(SRCDIR)/%.c, $(OBJDIR)/%.o, $(SRCS)) BINDIR=bin BIN=$(BINDIR)/clox all: $(BIN) release: CFLAGS=-Wall -Wpedantic -O2 release: clean release: $(BIN) $(BIN): $(OBJS) $(BINDIR) $(CC) $(CFLAGS) $(OBJS) -o $@ $(OBJDIR)/%.o: $(SRCDIR)/%.c $(OBJDIR) $(CC) $(CFLAGS) -c $< -o $@ $(BINDIR): mkdir $@ $(OBJDIR): mkdir $@ .PHONY: clean .PHONY: test clean: rm -rf $(BINDIR)/* $(OBJDIR)/* test: $(BIN) test.lox