CC = gcc
CXX = g++
LD = g++

YUIDOC = -yuidoc -e .cpp,.hpp,.js .

include user_makefile

ifndef BOOST_VERSION
BOOST_VERSION = 1_49
endif

DEBUGFLAGS = -g -ggdb -Wall -O4
RELEASEFLAGS = -DNODEBUG -O3
export PARENT_DEFINES = $(DEBUGFLAGS)

DEFINES = $(USER_DEFINES) $(PARENT_DEFINES) -DDX_GCC_COMPILE -DDX_NON_INLINE_ASM -DDX_LIB_NOT_DEFAULTPATH -DLIBARCHIVE_STATIC -DSTATICLIB \
          -D_WIN32_WINNT=0x0501 --exec-charset=cp932
INCDIR = $(USER_INCDIR)

CPPFLAGS = $(USER_CPPFLAGS) $(DEFINES) $(INCDIR)
CFLAGS = $(USER_CFLAGS) -fno-strict-aliasing -static-libgcc -static
CXXFLAGS = $(USER_CXXFLAGS) $(CFLAGS) -std=gnu++0x
LDFLAGS = $(USER_LDFLAGS) -L../common/network -L../common/database -lmmo-network -lmmo-database -lDxLib -lDxUseCLib -lDxDrawFunc -ljpeg -lpng -lzlib \
       -ltheora_static -lvorbis_static -lvorbisfile_static -logg_static -lsnappy -lsqlite3 \
       -lbulletdynamics -lbulletcollision -lbulletmath \
       -lboost_system-mgw46-mt-$(BOOST_VERSION) -lboost_thread-mgw46-mt-$(BOOST_VERSION) \
       -lboost_filesystem-mgw46-mt-$(BOOST_VERSION) -lboost_date_time-mgw46-mt-$(BOOST_VERSION) \
       -larchive_static -llzma -lv8 -lminiupnpc -lwsock32 -lws2_32 -liphlpapi -lcrypto -lgdi32 -lwinmm -lpsapi

BINDIR = bin/

TARGET = $(BINDIR)mmo
OBJS := $(patsubst %.cpp,%.o,$(wildcard *.cpp))
OBJS += $(patsubst %.cpp,%.o,$(wildcard scene/*.cpp))
OBJS += $(patsubst %.cpp,%.o,$(wildcard network/*.cpp))
OBJS += $(patsubst %.cpp,%.o,$(wildcard ui/*.cpp))
OBJS += $(patsubst %.cpp,%.o,$(wildcard 3d/*.cpp))
OBJS += resource.o

DEPENDS=$(patsubst %.o,%.d,$(OBJS))

all: $(OBJS) libmmo-network.a libmmo-database.a
	$(LD) $(CXXFLAGS) -o $(TARGET) $(OBJS) $(LDFLAGS)
	
release: $(OBJS) libmmo-network.a libmmo-database.a
	$(LD) $(CXXFLAGS) -o $(TARGET) $(OBJS) $(LDFLAGS)
	$(YUIDOC)

#.PHONY : clean depend
cleanall:
	rm -f $(OBJS) $(TARGET).exe $(DEPENDS)
	$(MAKE) -C ../common/network clean
	$(MAKE) -C ../common/database clean
	
clean:
	rm -f $(OBJS) $(TARGET).exe $(DEPENDS)

libmmo-network.a:
	$(MAKE) -C ../common/network
	
libmmo-database.a:
	$(MAKE) -C ../common/database

resource.o:
	windres resource.rc -o resource.o
	

#%.d: %.cpp
#	@set -e; $(CC) -MM $(CPPFLAGS) $(CXXFLAGS) $< | sed -e 's#\($*\)\.o[ :]*#\1.o $@ : #g' > $@; [ -s $@ ] || rm -f $@
#-include $(DEPENDS)
