################### BEGIN USER CONFIG #######################
CFLAGS=-g -Wall
#CFLAGS=-O2 -funroll-loops -Wall
CXXFLAGS=${CFLAGS}
CC=gcc
CXX=g++
# unremark exactly one line:
# BUILD_MINGW_STATIC=1
BUILD_MINGW_DYNAMIC=1
# BUILD_LINUX=1
#################### END USER CONFIG ########################

VERSION=0.1

PBT_OBJS = \
        gamesrc/game.o gamesrc/loaders.o gamesrc/playgame.o \
        gamesrc/level.o gamesrc/maze.o gamesrc/obj.o \
	utilsrc/xtrig.o utilsrc/timers.o utilsrc/rand.o \
	res/pbt.res


ifdef BUILD_MINGW_STATIC
    EXEEXT=.exe
    ALLEGRO=-Wl,--subsystem,windows -lalleg_s -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lole32 -ldinput -lddraw -ldxguid -lwinmm -ldsound 
    CCFLAGS+= -DALLEGRO_STATICLINK=1
    ALLEG_DLL_LOC=
    PLATFORM=MINGW_ALLEGRO_STATIC
    ifdef MINGDIR
       INST_BASEDIR := $(subst \,/,$(MINGDIR))
    else
badming:
	@echo Please specify your mingw32 directory via MINGDIR=. Like in Allegro.
   endif
endif

ifdef BUILD_MINGW_DYNAMIC
    EXEEXT=.exe
    ALLEGRO= -lalleg
    #-lvorbis -logg
    # -Wl,--subsystem,windows
    ALLEG_DLL_LOC=c:/win/system/alleg41.dll
    PLATFORM=MINGW_ALLEGRO_DYNAMIC
    ifdef MINGDIR
       INST_BASEDIR := $(subst \,/,$(MINGDIR))
    else
badming:
	@echo Please specify your mingw32 directory via MINGDIR=. Like in Allegro.
   endif
endif

ifdef BUILD_LINUX
    INST_BASEDIR=/usr/local/
    EXEEXT=
    ALLEGRO=`allegro-config --libs`
endif

SOURCE_FILES := $(wildcard *.cc)
DFIM= -lvorbis -logg -lz
PNG=-lldpng -lpng -lz
CFLAGS+= -Igamesrc -Iutilsrc -Ieditorsrc -Igensrc
CXXFLAGS+= -Igamesrc -Iutilsrc -Ieditorsrc -Igensrc


all:  pbt${EXEEXT}


pbt${EXEEXT}: ${PBT_OBJS}
	${CXX} ${CXXFLAGS} ${PBT_OBJS} -o pbt${EXEEXT} ${ALLEGRO} 
# -ljpgal ${PNG} ${MASKINGGL} ${AGL}


ifdef BUILD_LINUX
%.res: %.rc
	echo "/* Workarround */" > dumby.cc
	${CXX} dumby.cc -c -o dumby.o
	rm dumby.cc
	mv dumby.o $@

packages: all dist-src dist-extra

else
%.res: %.rc
	windres -O coff -o $@ -i $<

.start-binary-win:
	rm -rf win-binary ||true
	mkdir win-binary
	mkdir win-binary/doc
	mkdir win-binary/sav
	upx -9v pbt.exe -o win-binary/pbt.exe || cp  src/pbt.exe win-binary/pbt.exe
	dat win-binary/levels.dat -c1 -a -t DATA 'data/custom/*.pbt' || true
	cp data skins win-binary -r || true
ifdef BUILD_MINGW_DYNAMIC
	cp c:/windows/system/alleg41.dll win-binary
endif
	#cp -f COPYING win-binary/copying.txt
	#cp -f NEWS win-binary/news.txt
	#cp -f README win-binary/readme.txt
	#cp -f ChangeLog win-binary/changelog.txt
	cp -Rf doc win-binary/doc
	cp res/win-pbt.cfg win-binary/pbt.cfg || true


binary-win: .start-binary-win
	cd win-binary; zip -r9 ../pbt-win-${VERSION}.zip * || tar -czf ../pbt-win-${VERSION}.tar.gz *;cd ..;
	makensis /DVERSION=${VERSION} res/pbt.nsi
	rm -Rf win-binary


packages: all binary-win tools-win dist-src dist-extra
endif

.start-dist: clean
	rm -Rf pbt-${VERSION} || true
	mkdir pbt-${VERSION}
	cp -Rf gamesrc utilsrc res makefile *.cfg pbt-${VERSION}


dist-src: .start-dist
	tar -czf pbt-src-${VERSION}.tar.gz pbt-${VERSION}
	rm -Rf pbt-${VERSION} || true

dist-extra: .start-dist
	cp -Rf data doc holdcode skins pbt-${VERSION}
	tar -czf pbt-extra-${VERSION}.tar.gz pbt-${VERSION}
	rm -Rf pbt-${VERSION} || true



clean:
	rm `find -name '*.exe' -or -name '*.o'` res/*.res pbt || true

