
#---------------------------------------------------------------------------
#Compiling options n' stuff!
#---------------------------------------------------------------------------

#Select your target here!  Only one at a time, goofball.  =)
target = linux
#target = mingw

#Set debugging mode or not (true / false)
#debug = true
debug = false

#Put defines here.  =)
defines = -DSOMETHING_HERE

#--------------------------------------------------------------------------

#Setting up debugging settings.
ifeq ($(debug),true)
debugflags = -g
debugdefine = -DDEBUG
endif
ifeq ($(debug),false)
debugflags =  
debugdefine = 
endif

#Special OS-Specific defines
ifeq ($(target),linux)
osdefine = -DLINUX
endif
ifeq ($(target),mingw)
osdefine = -DMINGW
endif

#Put C++ options here.
coptions = -g -Wall -pedantic

#To make life easier and code easier to read.  =)
cflags = $(coptions) $(debugflags) $(defines) $(osdefine) $(debugdefine)

#Line to compile for all.  Note: Don't include header files as pre-reqs.
compile = g++ $^ -c $(cflags) -o $@

#Source directory.
s = ./src/

#object directory.
o = ./obj/

#Libraries go here.  Sets the libraries based on target.
ifeq ($(target),linux)
libs = `allegro-config --libs` -lalfont -lpng -lldpng ./libfmod-3.74.so
endif

ifeq ($(target),mingw)
libs = -lalfont -lldpng -lpng -lalleg  $(o)libfmod.a 
endif

#----------------------------------------------------------------------------
#Linking and compiling section!
#----------------------------------------------------------------------------

#Put all the final objects here.
objects = $(o)main.o $(o)graphics.o $(o)timer.o $(o)sound.o $(o)sprite.o $(o)scene.o $(o)vectors.o $(o)input.o $(o)menu.o $(o)text.o $(o)game.o $(o)ddisplay.o $(o)lup.o $(o)gover.o $(o)intro.o

#Linking main program.
ifeq ($(target),linux)
hero: $(objects)
	g++ $(objects) $(libs) -o hero
else
hero.exe: $(objects)
	g++ $(objects) $(libs) -o hero.exe
endif

#main.cc
$(o)main.o: $(s)main.cc
	$(compile)

#graphics.cc
$(o)graphics.o: $(s)graphics.cc
	$(compile)

#timer.cc
$(o)timer.o: $(s)timer.cc
	$(compile)

#sound.cc
$(o)sound.o: $(s)sound.cc
	$(compile)

#sprite.cc
$(o)sprite.o: $(s)sprite.cc
	$(compile)

#scene.cc
$(o)scene.o: $(s)scene.cc
	$(compile)

#vectors.cc
$(o)vectors.o: $(s)vectors.cc
	$(compile)

#input.cc
$(o)input.o: $(s)input.cc
	$(compile)

#menu.cc
$(o)menu.o: $(s)menu.cc
	$(compile)

#text.cc
$(o)text.o: $(s)text.cc
	 $(compile)

#game.cc
$(o)game.o: $(s)game.cc
	$(compile)

#ddisplay.cc
$(o)ddisplay.o: $(s)ddisplay.cc
	$(compile)

#lup.cc
$(o)lup.o: $(s)lup.cc
	$(compile)

#gover.cc
$(o)gover.o: $(s)gover.cc
	$(compile)

#intro.cc
$(o)intro.o: $(s)intro.cc
	$(compile)

#remove all files.
.PHONY: clean
clean:
	rm -f ./obj/*.o hero ./src/*~ ./*~