VPATH=src textures models audio levels
HEADERS=texture.h font.h
SOURCES=texture.c framework.c
TEXTURES=metalfloor.png radslimefloor.png chute.png dirtystripes.png metalwall.jpg magred.jpg magblue.jpg dust.png coolant.jpg robot2x.png andcon1x.png andcon2x.png andbut1.png andbut2.png andrim.png
MODELS=barrelx.md3 robotx.md3 andbutton1x.md3 andbutton2x.md3
AUDIO=ies13musx22trim.wav place.wav chute.wav victory.wav meltdown.wav crushed.wav slimed.wav
LEVELS=avoidslime start justattract justrepel barrelscrush combinemagnets ordermatters multiplesolutions END
BINARY=iesgame
EXTRADIST=Makefile README.txt README-long.txt $(HEADERS) $(TEXTURES) $(MODELS) $(AUDIO) $(LEVELS)
EXTRADISTNOCHECK=libmd3
DISTFILE=comp6005-prb102.zip
DISTDESC="COMP6005 Labs; Philip Boulain (prb102)"
SCRATCH=/dev/shm/scratch/
LD=gcc
CC=gcc
LDFLAGS=-lm -lGL -lGLU `sdl-config --libs` -lSDL_image -Wl,-rpath,libmd3/lib/ -Llibmd3/lib/ -lmd3-0.2
CFLAGS=-I. -Ilibmd3/include/libmodelfile-0.2/ -std=c99 --pedantic -Wall -Werror -D_BSD_SOURCE `sdl-config --cflags` $(CFLAGSEX)
#LDFLAGS=-lm -lGL -lGLU `sdl-config --libs` -lSDL_image `pkg-config --libs libmd3-0.2`
#CFLAGS=-I. -std=c99 --pedantic -Wall -Werror -D_BSD_SOURCE `sdl-config --cflags` `pkg-config --cflags libmd3-0.2` $(CFLAGSEX)
# Debug:
#CFLAGSEX=-g -O
# Release:
 CFLAGSEX=-O3 -DNDEBUG

OBJECTS=$(SOURCES:%.c=%.o)

.PHONY: all clean almostclean dist disttest work
all: $(BINARY)
#all: checkmd3 $(BINARY)
#checkmd3:
#	@./ensurelibmd3
$(BINARY): $(OBJECTS)
	@echo -e "    LD $@\e[40G   (linking)"
	@$(LD) $(LDFLAGS) -o $(BINARY) $^
	@echo "*** $(BINARY) built"
# $^ is a space-seperated list of all deps, with duplicates removed
%.o : %.c $(HEADERS) Makefile
	@echo -e "    CC $<\e[40G=> $@"
	@$(CC) -o $@ -c $(CFLAGS) $<
# $@ is the current target; $< the dep for that target
clean: almostclean
	@rm -fv $(BINARY) $(DISTFILE)
	@echo "*** Cleansed"
almostclean:
	@rm -fv $(OBJECTS)
	@rm -frv $(SCRATCH)
dist: $(DISTFILE)
$(DISTFILE): $(SOURCES) $(EXTRADIST)
	echo $(DISTDESC) | zip -r -z -9 $(DISTFILE) $^ $(EXTRADISTNOCHECK)
	@echo "*** $(DISTFILE) created"
disttest: $(DISTFILE)
	mkdir -p $(SCRATCH)
	cp $(DISTFILE) $(SCRATCH)
	echo "cd $(SCRATCH); unzip $(DISTFILE); make" | bash
	@echo "*** Distributable tested"
work:
	@echo "*** Outstanding tasks"
	@grep DEBUG --color=auto $(SOURCES) $(EXTRADIST) || true
	@grep TODO  --color=auto $(SOURCES) $(EXTRADIST) || true
	@grep FIXME --color=auto $(SOURCES) $(EXTRADIST) || true
# To `make work' is to find things for me to do ;)
