roh/conf.old/area/
roh/config/code/python/
roh/config/game/area/
roh/config/game/signs/
roh/help/dmhelp/
roh/help/help/
roh/log/
roh/log/staff/
roh/monsters/ocean/
roh/objects/misc/
roh/objects/ocean/
roh/player/
roh/rooms/area/1/
roh/rooms/misc/
roh/rooms/ocean/
roh/src-2.47e/
LANG=C
# Moved compiler logic to compiler file, will commit a base of it and then add to svn ignore
# so we can modify the makefile and not worry about changing g++/icc
include compiler

PROGRAM = realms.exe

CFLAGS := -g -Wall -I/usr/include/libxml2 $(COMPILER_CFLAGS) -std=c++11 -I.
CFLAGS += -I/usr/include/python3.3m -I/usr/include/x86_64-linux-gnu/python3.3m -fpermissive


LIBS = -laspell -lxml2 -lz -lc -L./ -lpython3.3m -lboost_python3  $(COMPILER_LIBS) 

GENERAL_SOURCE := alphanum.cpp pythonHandler.cpp abjuration.cpp access.cpp action.cpp afflictions.cpp
GENERAL_SOURCE += alchemy.cpp alignment.cpp anchor.cpp area.cpp attack.cpp asynch.cpp timer.cpp bank.cpp
GENERAL_SOURCE += bans.cpp builder.cpp calendar.cpp carry.cpp catRef.cpp catRefInfo.cpp clans.cpp color.cpp
GENERAL_SOURCE += combat.cpp combatSystem.cpp command1.cpp command2.cpp command4.cpp command5.cpp container.cpp
GENERAL_SOURCE += commerce.cpp communication.cpp config.cpp conjuration.cpp cmd.cpp creatureStreams.cpp craft.cpp 
GENERAL_SOURCE += creature.cpp creature2.cpp creatures.cpp creatureAttr.cpp damage.cpp data.cpp delayedAction.cpp
GENERAL_SOURCE += demographics.cpp deityData.cpp die.cpp dice.cpp divination.cpp dm.cpp dmcrt.cpp dmobj.cpp dmply.cpp 
GENERAL_SOURCE += dmroom.cpp duel.cpp effects.cpp enchantment.cpp equipment.cpp errors.cpp evocation.cpp
GENERAL_SOURCE += exits.cpp factions.cpp files-xml-read.cpp fighters.cpp files-xml-save.cpp
GENERAL_SOURCE += fishing.cpp flags.cpp global.cpp gods.cpp group.cpp groups.cpp guilds.cpp healers.cpp healmagic.cpp 
GENERAL_SOURCE += help.cpp hooks.cpp illusion.cpp io.cpp import.cpp levelGain.cpp location.cpp log.cpp logic.cpp login.cpp 
GENERAL_SOURCE += lottery.cpp magic.cpp magic1.cpp mccp.cpp md5.cpp memory.cpp misc.cpp money.cpp mxp.cpp msdp.cpp 
GENERAL_SOURCE += monsters.cpp monType.cpp mordorMain.cpp movement.cpp mudObject.cpp necromancy.cpp objIncrease.cpp 
GENERAL_SOURCE += object.cpp objects.cpp objectAttr.cpp oldQuest.cpp pets.cpp player.cpp player2.cpp proxy.cpp
GENERAL_SOURCE += players.cpp playerClass.cpp playerTitle.cpp post.cpp prefs.cpp property.cpp quests.cpp queue.cpp 
GENERAL_SOURCE += raceData.cpp range.cpp realms.cpp rogues.cpp room.cpp rooms.cpp sql.cpp security.cpp server.cpp   
GENERAL_SOURCE += ships.cpp singers.cpp size.cpp skills.cpp skillGain.cpp socket.cpp songs.cpp socials.cpp
GENERAL_SOURCE += specials.cpp special1.cpp spelling.cpp spells.cpp staff.cpp startlocs.cpp stats.cpp statistics.cpp
GENERAL_SOURCE += skillCommand.cpp steal.cpp swap.cpp talk.cpp threat.cpp serverTimer.cpp track.cpp translocation.cpp
GENERAL_SOURCE += transmutation.cpp traps.cpp undead.cpp unique.cpp update.cpp vprint.cpp wanderInfo.cpp warriors.cpp
GENERAL_SOURCE += watchers.cpp weaponless.cpp web.cpp xml.cpp 

REALMS_SOURCE  := main.cpp

ALL_SOURCE     := $(GENERAL_SOURCE) $(REALMS_SOURCE)

DEPSDIR = .deps/$(PROGRAM)
OBJSDIR = .objs/$(PROGRAM)

GENERAL_OBJ    := $(GENERAL_SOURCE:%.cpp=$(OBJSDIR)/%.o)
REALMS_OBJ	   := $(GENERAL_OBJ) $(REALMS_SOURCE:%.cpp=$(OBJSDIR)/%.o)

ALLOBJ         := $(REALMS_OBJ)

DEPSPRECOMP = $(PRE_COMPILED_HEADER:%.h=$(DEPSDIR)/%.d)
OBJSPRECOMP = $(PRE_COMPILED_HEADER:%.h=%.h.gch)

BINS := realms.exe


default:
	@echo 'Using $(CC) as a compiler' 
	$(MAKE) all


DEPS = $(ALL_SOURCE:%.cpp=$(DEPSDIR)/%.d)

#Linkage
$(PROGRAM): $(DEPSPRECOMP) $(DEPS) $(OBJSPRECOMP) $(REALMS_OBJ)
	@echo 'Building target: $@'
	@$(CC) -o $@ $(CFLAGS) $(REALMS_OBJ) $(LIBS) 
	@echo 'Done making: $@'
	
#cleaning
.PHONY: clean
clean:
	@echo 'Removing all binaries, dependancies, and object files.'
	@rm -rf $(OBJSDIR)
	@rm -f $(BINS)
	@rm -rf $(DEPSDIR)
	@rm -f *.pchi
	@rm -f *.gch
	@rm -f *.d
	@rm -f *~
	
.PHONY: objclean
objclean:
	@echo 'Removing object files'
	@rm -rf $(OBJSDIR)
	
#creating the dependencies of the %.c files
$(DEPSDIR)/%.d: %.cpp
	@echo "Making dependencies for $<"
	@dirname $@ | xargs mkdir -p 2>/dev/null || echo "$@ already exists" >/dev/null
	@$(CC) -MM $(CFLAGS) $< 2>/dev/null | sed 's#.*:# $@ :#1' > $@
	
#creating the dependencies of the %.h files, for the precompiled header
$(DEPSDIR)/%.d: %.h
	@echo "Making dependencies for precompiled header $<"
	@dirname $@ | xargs mkdir -p 2>/dev/null || echo "$@ already exists" >/dev/null
	@$(CC) -MM $(CFLAGS) $< 2>/dev/null | sed 's#.*:# $@ :#1' > $@
	
#compiling the precompiled header
%.h.gch:%.h $(DEPSPRECOMP)
	@echo "Precompiling header $@..."
	@$(CC) $(CFLAGS)  -x c++-header -o $@ -c $< || echo "error. Disabling precompiled header"
	@echo "...Done"
	
#compiling source files
$(OBJSDIR)/%.o: %.cpp $(DEPSDIR)/%.d $(OBJSPRECOMP)
	@echo -e 'Compiling $<'
	@dirname $@ | xargs mkdir -p 2>/dev/null || echo "$@ already exists" >/dev/null
	@$(CC) $(SRCSPRECOMP:%.h=-include %.h) $(CFLAGS) $(ICCFLAGS) -c $< -o $@
	
all: $(PROGRAM)
		
#all: $(BINS)

copy:
	@echo 'Copying binary to bin dir.'
	@cp -f realms.exe ../bin/
	
compiler:
	@cp compiler.default compiler

#include the dependencies, (if we are not actually performing a mere <make clean>)
ifneq ($(strip $(MAKECMDGOALS)),clean)
ifneq ($(strip $(MAKECMDGOALS)),objclean)
ifneq ($(strip $(DEPSPRECOMP)),)
-include $(DEPSPRECOMP)
endif
ifneq ($(strip $(DEPS)),)
-include $(DEPS)
endif
endif
endif