# libtcod samples mingw32 makefile
# to build debug version, run "make -f makefile-samples-mingw debug"
# to build release version, run "make -f makefile-samples-mingw release"
SRCDIR=.
INCDIR=include
SDLDIR=dependencies/SDL-1.2.12
CFLAGS=$(FLAGS) -I$(INCDIR) -I$(SDLDIR)/include -I$(SRCDIR) -Wall
CC=mingw32-gcc
CPP=mingw32-g++
UPX=dependencies/upx/win/upx.exe
.SUFFIXES: .dll .a .o .h .c .hpp .cpp

$(TEMP)/libtcod/debug/samples/%.o : $(SRCDIR)/samples/%.cpp
	$(CPP) $(CFLAGS) -g -o $@ -c $< 
$(TEMP)/libtcod/debug/samples/%.o : $(SRCDIR)/samples/%.c
	$(CC) $(CFLAGS) -g -o $@ -c $< 
$(TEMP)/libtcod/debug/samples/%.o : $(SRCDIR)/samples/hmtool/%.cpp
	$(CPP) $(CFLAGS) -g -o $@ -c $< 
$(TEMP)/libtcod/release/samples/%.o : $(SRCDIR)/samples/%.cpp
	$(CPP) $(CFLAGS) -O2 -s -o $@ -c $< 
$(TEMP)/libtcod/release/samples/%.o : $(SRCDIR)/samples/%.c
	$(CC) $(CFLAGS) -O2 -s -o $@ -c $< 
$(TEMP)/libtcod/release/samples/%.o : $(SRCDIR)/samples/hmtool/%.cpp
	$(CPP) $(CFLAGS) -O2 -s -o $@ -c $< 

C_OBJS_DEBUG=$(TEMP)/libtcod/debug/samples/samples_c.o
CPP_OBJS_DEBUG=$(TEMP)/libtcod/debug/samples/samples_cpp.o

HMTOOLOBJS_DEBUG=$(TEMP)/libtcod/debug/samples/hmtool.o \
	$(TEMP)/libtcod/debug/samples/operation.o

C_OBJS_RELEASE=$(TEMP)/libtcod/release/samples/samples_c.o
CPP_OBJS_RELEASE=$(TEMP)/libtcod/release/samples/samples_cpp.o

HMTOOLOBJS_RELEASE=$(TEMP)/libtcod/release/samples/hmtool.o \
	$(TEMP)/libtcod/release/samples/operation.o

all : debug release

debug : samples_c_debug.exe samples_cpp_debug.exe hmtool_debug.exe 

release : samples_c.exe samples_cpp.exe hmtool.exe 

$(TEMP)/libtcod/debug/hmtool :
	\mkdir -p $@
	
$(TEMP)/libtcod/release/hmtool :
	\mkdir -p $@

$(TEMP)/libtcod/debug/samples :
	\mkdir -p $@
	
$(TEMP)/libtcod/release/samples :
	\mkdir -p $@

samples_c.exe : $(TEMP)/libtcod/release/samples $(C_OBJS_RELEASE)
	$(CC) $(C_OBJS_RELEASE) $(CFLAGS) -o $@ -Llib -ltcod-mingw  -L$(SDLDIR)/lib/mingw -lSDL -mwindows
	$(UPX) samples_c.exe 

samples_cpp.exe : $(TEMP)/libtcod/release/samples $(CPP_OBJS_RELEASE)
	$(CPP) $(CPP_OBJS_RELEASE) -o $@ -Llib -ltcod-mingw -L$(SDLDIR)/lib/mingw -lSDL -mwindows
	$(UPX) samples_cpp.exe 

hmtool.exe : $(TEMP)/libtcod/release/hmtool $(HMTOOLOBJS_RELEASE)
	$(CPP) -o $@ $(HMTOOLOBJS_RELEASE) -Llib -ltcod-mingw -ltcod-gui-mingw
	$(UPX) hmtool.exe 

samples_c_debug.exe : $(TEMP)/libtcod/debug/samples $(C_OBJS_DEBUG)
	$(CC) $(C_OBJS_DEBUG) $(CFLAGS) -o $@ -Llib -ltcod-mingw-debug -L$(SDLDIR)/lib/mingw -lSDL 

samples_cpp_debug.exe : $(TEMP)/libtcod/debug/samples $(CPP_OBJS_DEBUG)
	$(CPP) $(CPP_OBJS_DEBUG) -o $@ -Llib -ltcod-mingw-debug  -L$(SDLDIR)/lib/mingw -lSDL 

hmtool_debug.exe : $(TEMP)/libtcod/debug/hmtool $(HMTOOLOBJS_DEBUG)
	$(CPP) -o $@ $(HMTOOLOBJS_DEBUG) -Llib -ltcod-mingw-debug -ltcod-gui-mingw-debug

clean :
	\rm -f $(C_OBJS_RELEASE) $(CPP_OBJS_RELEASE) $(HMTOOLOBJS_RELEASE) \
        samples_c.exe samples_cpp.exe hmtool.exe \
        $(C_OBJS_DEBUG) $(CPP_OBJS_DEBUG) $(HMTOOLOBJS_DEBUG) \
        samples_c_debug.exe samples_cpp_debug.exe hmtool_debug.exe 
