# OPTIONS.
DEBUG = 1

OS := LINUX
#OS := WIN32

# VERSION.
VMAJOR  = 0
VMINOR  = 0
VREV    = 1
VERSION = -DVMAJOR=$(VMAJOR) -DVMINOR=$(VMINOR) -DVREV=$(VREV)
VERSIONFILE = VERSION

# OBJECTS.
APPNAME = Lephisto
OBJS := $(shell find ../src/ -name '*.c' -print)
OBJS := $(OBJS:%.c=%.o)

# CFLAGS
CLUA = -I../lib/lua
CPLUTO = -I../lib/pluto
CSDL = $(shell sdl-config --cflags)
CXML = $(shell xml2-config --cflags)
CTTF = $(shell freetype-config --cflags)
CAL  = -lopenal
CVORBIS =
CGL  =
CFLAGS = $(CLUA) $(CPLUTO) $(CSDL) $(CXML) $(CTTF) $(CGL) $(CAL) $(CVORBIS) $(VERSION) -D$(OS) -fgnu89-inline
ifdef DEBUG
CFLAGS += -W -Wall -g3 -DDEBUG -DLUA_USE_APICHECK -std=c99
else
CFLAGS += -O2 -funroll-loops -pipe -std=c99
endif

# LDFLAGS.
LDLUA = ../lib/lua/liblua.a
LDPLUTO = ../lib/pluto/pluto.a
LDSDL = $(shell sdl-config --libs) -lSDL_image
LDXML = $(shell xml2-config --libs)
LDTTF = $(shell freetype-config --libs)
LDGL	= -lGL
LDAL  = -lopenal
LDVORBIS = -lvorbisfile
LDPNG   = -lpng
LDFLAGS = -lm $(LDLUA) $(LDPLUTO) $(LDSDL) $(LDXML) $(LDTTF) $(LDGL) $(LDPNG) $(LDAL) $(LDVORBIS)

# This is just for gstat to run some analysis on performance.
ifdef DEBUG
LDFLAGS += -pg
endif

# DATA.
DATA_AI   = $(shell find ../scripts/ai/ -name '*.lua')
DATA_GFX  = $(shell find ../gfx/ -name '*.png')
DATA_XML  = $(shell find ../dat/ -name '*.xml' -o -name '*.ttf')
DATA_SND  = $(shell find ../snd/ -name '*.ogg' -o -name '*.wav')
DATA_MISN	= $(shell find ../dat/missions/ -name '*.lua')
DATA = data
DATAFILES = $(VERSIONFILE) $(DATA_AI) $(DATA_GFX) $(DATA_XML) $(DATA_SND) $(DATA_MISN)

# TARGETS.
%.o: %.c %.h
	@$(CC) -c $(CFLAGS) -o $@ $<
	@echo -e "\tCC $@"

all: utils data lua pluto $(OBJS)
	@$(CC) $(LDFLAGS) -o $(APPNAME) $(OBJS) ../lib/lua/liblua.a ../lib/pluto/pluto.a
	@echo "\tLD $(APPNAME)"

lua:
	@if [ ! -e ../lib/lua/liblua.a ]; then (cd ../lib/lua; $(MAKE) a); fi

pluto:
	@if [ ! -e ../lib/pluto/pluto.a ]; then (cd ../lib/pluto; $(MAKE)); fi

pack: ../src/pack.c ../utils/pack/main.c
	@(cd ../utils/pack; $(MAKE))

mksprite: ../utils/mkspr/main.c
	@(cd ../utils/mkspr; $(MAKE))

$(VERSIONFILE):
	@echo -n "$(VMAJOR).$(VMINOR).$(VREV)" > $(VERSIONFILE)

data: pack $(DATAFILES) ../src/pack.c ../utils/pack/main.c
	@echo -n "$(VMAJOR).$(VMINOR).$(VREV)" > $(VERSIONFILE)
	@echo -e "\tCreating data..\n"
	@./pack $(DATA) $(DATAFILES)

utils: mksprite

clean:
	@echo -e "\tRemoving data.."
	rm -rf $(OBJS) $(APPNAME) $(DATA) pack core mksprite *.out a.txt
	@echo -e "\tCleaning utils."
	@(cd ../utils/pack; $(MAKE) clean)
	@(cd ../utils/mkspr; $(MAKE) clean)
	@echo -e "\tCleaning Lua"
	@(cd ../lib/lua; $(MAKE) clean)
	@(cd ../lib/pluto; $(MAKE) clean)