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