CC = gcc
CFLAGS=-g -Wall -DDEBUG -Wpedantic -lSDL2 -lSDL2_ttf
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)/game

all: $(BIN)

release: CFLAGS=-Wall -Wpedantic -O2 -lSDL2 -lSDL2_ttf
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
.PHONY: disass

clean:
	rm -rf $(BINDIR)/* $(OBJDIR)/*

test:
	$(BIN)

disass:
	objdump -S --disassemble $(OBJDIR)/$(FILE).o > $(OBJDIR)/$(FILE).s