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