CC         := clang
CFLAGS     := -std=c99 -Wall -Wextra -ggdb
LDFLAGS    := -lm
SYSTEM     := $(shell uname -s)

SOURCES    := main.c ppm.c keyboard.c mouse.c

GAME       := bin/pathfinder
HEXDUMP    := bin/hexdump
PACKER     := bin/packer

ifeq ($(SYSTEM), Linux)
    LDFLAGS += -lGL -lglut
endif

ifeq ($(SYSTEM), Darwin)
    LDFLAGS += -framework OpenGL -framework GLUT
endif

build: mkdirs info $(HEXDUMP) $(PACKER) $(GAME)

info: # Print out information about the build
	$(info CC         : $(CC))
	$(info SYSTEM     : $(SYSTEM))
	$(info CFLAGS     : $(CFLAGS))
	$(info LDFLAGS    : $(LDFLAGS))

$(GAME): $(SOURCES)
	$(CC) $(CFLAGS) $(SOURCES) -o $(GAME) $(LDFLAGS)

$(HEXDUMP): tools/hexdump.c
	$(CC) -std=c99 -o $(HEXDUMP) tools/hexdump.c

$(PACKER): tools/packer.c
	$(CC) -std=c99 -o $(PACKER) tools/packer.c

mkdirs:
	mkdir -p bin

clean:
	rm -rf bin/

.PHONY: mkdirs game clean info
