#
# RAM $Id: Makefile 62 2008-11-17 04:58:19Z quixadhal $
#

CC      	= g++

CRYPT		= #-DNOCRYPT		# Uncomment to use clear-text passwords
RAND		= #-DOLD_RAND		# Uncomment if your random number generator is broken
SOCIAL		= #-DSOCIAL_DEBUG	# Uncomment for debugging of the socials
PLAYERLIST      = #-DPLAYER_LIST        # Uncomment for player list features

# Comment out the -Wmissing-format-attribute flag if you're using gcc 2.95
# or upgrade!
#
# The W_CONLY set of flags are only valid when using C, not for C++
# -Wmissing-declarations is C only under g++ 4.2.x and older!

W_ERROR         = -Werror
W_ANSI          = #-pedantic
W_UBER          = -Wall
W_FORMAT        = -Wformat -Wformat-security -Wmissing-format-attribute
W_MESSY         = -Wmissing-braces -Wparentheses -Wshadow -Wredundant-decls
W_TYPE          = -Wcast-qual -Wcast-align -Wchar-subscripts -Wreturn-type -Wswitch -Wwrite-strings
W_EXTRA         = -Wunused -Wuninitialized #-Wunreachable-code
W_NITPICK       = -Wpointer-arith -Winline
ifeq ($(CC), gcc)
W_CONLY		= -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes 
endif

WARN		= $(W_ERROR) $(W_ANSI) $(W_UBER) $(W_FORMAT) $(W_MESSY) $(W_TYPE) $(W_EXTRA) $(W_NITPICK) $(W_CONLY)

OPT	    	= -O3 				# You trust the compiler, don't you?
DEBUG		= -g				# Just enough to fix the occasional crash
#DEBUG		= -ggdb3			# Full debugging with ALL defined symbols!
PROF		= #-pg				# Enable profiling via gprof

OPTIONS		= $(OPT) $(DEBUG) $(PROF) $(CRYPT) $(RAND) $(SOCIAL) $(PLAYERLIST)

C_FLAGS 	= $(WARN) $(OPTIONS)
L_FLAGS 	= $(DEBUG) $(PROF)

LIBS		= 				# Uncomment if you're using Linux
#LIBS		= 				# Uncomment if you're using BSD or OS X
#LIBS		= -lsocket -lresolv -lnsl	# Uncomment if you're using Solaris

O_FILES		= act_comm.o act_info.o act_move.o act_obj.o act_wiz.o \
		  alias.o ban.o bit.o bug.o comm.o const.o \
		  db.o fight.o handler.o healer.o hedit.o \
		  interp.o magic.o mem.o mob_cmds.o mob_prog.o note.o \
		  olc.o olc_act.o olc_mpcode.o olc_save.o playerlist.o \
		  random.o save.o sha256.o skills.o special.o string.o \
		  strings.o tables.o update.o

ram: $(O_FILES)
	@rm -f $@
	$(CC) $(L_FLAGS) -o $@ $(O_FILES) $(LIBS)
	@ls -l $@

%o : %c
	$(CC) $(C_FLAGS) -c $< -o $@

tags :
	@rm -f $@
	@ctags *.[ch]
	@ls -l $@

clean:
	@rm -f *.o

spotless:
	@rm -f *.o tags ram gmon.out

dep:
	@find . -name \*.c -a -type f | sort | xargs -P 1 -r $(CC) $(OPTIONS) -MM

#--- Dependancies go below here ---

act_comm.o: act_comm.c merc.h strings.h random.h tables.h db.h interp.h \
  magic.h act.h
act_info.o: act_info.c sha256.h merc.h strings.h random.h tables.h db.h \
  interp.h magic.h act.h
act_move.o: act_move.c merc.h strings.h random.h db.h interp.h magic.h \
  act.h
act_obj.o: act_obj.c merc.h strings.h random.h db.h interp.h magic.h \
  act.h
act_wiz.o: act_wiz.c merc.h tables.h strings.h random.h db.h interp.h \
  magic.h special.h act.h
alias.o: alias.c merc.h strings.h interp.h
ban.o: ban.c merc.h strings.h db.h interp.h
bit.o: bit.c merc.h interp.h tables.h
bug.o: bug.c merc.h db.h
comm.o: comm.c sha256.h merc.h tables.h strings.h db.h act.h interp.h \
  magic.h
const.o: const.c merc.h magic.h interp.h
db.o: db.c merc.h strings.h random.h tables.h act.h db.h interp.h magic.h \
  special.h
fight.o: fight.c merc.h strings.h random.h db.h interp.h act.h magic.h
handler.o: handler.c merc.h strings.h random.h tables.h db.h act.h \
  interp.h magic.h
healer.o: healer.c merc.h strings.h random.h interp.h magic.h
hedit.o: hedit.c merc.h interp.h tables.h db.h olc.h strings.h
interp.o: interp.c merc.h strings.h random.h db.h act.h interp.h
magic.o: magic.c merc.h strings.h random.h db.h act.h interp.h magic.h
mem.o: mem.c merc.h tables.h strings.h
mob_cmds.o: mob_cmds.c merc.h db.h magic.h interp.h act.h strings.h random.h mob_cmds.h
mob_prog.o: mob_prog.c merc.h interp.h db.h act.h tables.h strings.h random.h
note.o: note.c merc.h strings.h db.h interp.h tables.h
olc.o: olc.c merc.h interp.h db.h act.h tables.h strings.h olc.h
olc_act.o: olc_act.c merc.h interp.h act.h magic.h tables.h special.h strings.h random.h db.h olc.h
olc_mpcode.o: olc_mpcode.c merc.h interp.h tables.h db.h strings.h olc.h
olc_save.o: olc_save.c merc.h tables.h db.h interp.h special.h strings.h olc.h
playerlist.o: playerlist.c merc.h strings.h db.h
random.o: random.c merc.h random.h
save.o: save.c merc.h strings.h tables.h db.h magic.h
sha256.o: sha256.c sha256.h
skills.o: skills.c merc.h strings.h random.h db.h interp.h magic.h
special.o: special.c merc.h strings.h random.h db.h act.h interp.h \
  magic.h special.h
string.o: string.c merc.h interp.h tables.h strings.h olc.h
strings.o: strings.c merc.h strings.h
tables.o: tables.c merc.h strings.h db.h interp.h tables.h
update.o: update.c merc.h random.h db.h act.h interp.h magic.h