#The compiler
CC:=gcc
#The flags passed to the compiler
CFLAGS:=-O3 -g -Wall -Wextra -Wpedantic -std=gnu11
#Buggy on some systems: -fsanitize=address -fsanitize=leak
#The flags passed to the linker
LDFLAGS:=-lm
#Executable
EXEC=canon
#Dependencies
DEP_GFX=../gfx/gfx.o

bin/$(EXEC): main.c bin/$(DEP_GFX)
	@mkdir -p $(dir $@)
	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) -lSDL2

bin/$(EXEC)_corr: main_corr.c bin/$(DEP_GFX)
	@mkdir -p $(dir $@)
	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) -lSDL2

corr: bin/$(EXEC)_corr

run: bin/$(EXEC)
	@./bin/$(EXEC)

run_corr: bin/$(EXEC)_corr
	@./bin/$(EXEC)_corr

bin/%.o: %.c %.h
	@mkdir -p $(dir $@)
	$(CC) -c $(CFLAGS) $< -o $@

clean:
	rm -rf bin

.PHONY: clean
