#!/bin/make -f
# src/Makefile.  Generated from Makefile.in by configure.

# #######################################################################
#                  Makefile for TinyMUCK 2.2fb5.x
# #######################################################################

# #######################################################################
#			User tunable options
# #######################################################################

#
# Prepend line.  used for compiling with things like nice.
#
# PRE= nice -10

#
# Optimizations
# -O                General optimizations, reccomended.
# -O2               Heavier optimizations, use at own risk.
# -g                Generate debugging information, suggested, you can
#                     always "strip netmuck" if you want the space.
# -pg               Generate profiling debug code.  Use with gprof.
# -Wall -pedantic	Good way to get spammed with warnings from GCC.
# -ftest-coverage -fprofile-arcs  Generate test coverage debug code for gcov.
#
OPTIM= -g

#
# Paths
#

# Right below the src/include directories
ROOT= ..

# Where the include files are
INCLUDE= ${ROOT}/include

# The root of the directory tree to install to.
prefix=/home/kittybot/cyport
datarootdir=@datarootdir@
exec_prefix=${prefix}
# Destinations for binaries
INSTALL_BINDIR=${exec_prefix}/bin
INSTALL_SBINDIR=${exec_prefix}/sbin
# Destination for helpfiles
INSTALL_HELPDIR=${prefix}/share/fbmuck
# Destination for starter databases
INSTALL_DBSDIR=${prefix}/share/fbmuck/starter_dbs

# ${DESTDIR} is used by the Debian packaging system to build the .debs
# and is defined by the debian/rules file.

# The game binaries should go into /usr/lib/fbmuck as they are meant
# to be called by the startup scripts and generally not manually.

###INSTALL_BINDIR= ${DESTDIR}/usr/lib/fbmuck/fb60/bin

# The default 2-object and 68-object game dbs should be considered
# 'example documentation' and go into /usr/share/doc/fbmuck/examples
# and be stored as compressed tarfiles.


# #######################################################################
# 		Variables set by the configure script.
# #######################################################################
INSTALL=/usr/bin/install -c
INSTALL_PROGRAM=${INSTALL}
INSTALL_SCRIPT=${INSTALL}
INSTALL_DATA=${INSTALL} -m 644

CC=gcc
CPP=gcc -E
DEFS=-DHAVE_CONFIG_H
LIBR=-lpcre -lnsl -lm  -L/usr/lib -lpcre
INCL=-I${INCLUDE}  -I/usr/include

# #######################################################################
#  	   Usualy don't need to change anything past here.
# #######################################################################

#
# Include path, Cflags...
#
CFLAGS= ${OPTIM}

#
# for saving old copies.
#
MV= mv -f
CP= cp -f
RM= rm -f
CHMOD= chmod

#
# Misc stuff for odd targets.
#
SRC_PREFIX=
MKDEPEND= makedepend
MAKE= make
LINT= 
MKTAGS= ctags --c-types=-m
# for RCS only
GET= co
CLEAN= rcsclean
LINTFLAGS= ${INCL}

##########################################################################
#            You should not have to change anything below here           #
##########################################################################

MALLSRC= crt_malloc.c
MALLOBJ= crt_malloc.o

ANNSRC= announce.c
ANNOBJ= announce.o

MISCSRC= Makefile.in ChangeLog COPYING mkversion.sh

CSRC= array.c boolexp.c compile.c create.c db.c db_header.c debugger.c \
	disassem.c diskprop.c edit.c events.c game.c hashtab.c help.c inst.c \
	interp.c log.c look.c match.c mcp.c mcpgui.c mcppkgs.c mfuns2.c \
	mfuns.c move.c msgparse.c mufevent.c oldcompress.c p_array.c \
	p_connects.c p_db.c p_error.c p_float.c player.c p_math.c p_mcp.c \
	p_misc.c p_props.c p_regex.c predicates.c propdirs.c property.c \
	props.c p_stack.c p_strings.c random.c rob.c sanity.c set.c \
	signal.c smatch.c snprintf.c speech.c strftime.c stringutil.c \
	timequeue.c timestamp.c tune.c unparse.c utils.c wiz.c

LSRC= copyright.c
MSRC= compress.c olddecomp.c reconst.c interface.c resolver.c topwords.c


COBJ= array.o boolexp.o compile.o create.o db_header.o db.o debugger.o \
	disassem.o diskprop.o edit.o events.o game.o hashtab.o help.o inst.o \
	interp.o log.o look.o match.o mcp.o mcpgui.o mcppkgs.o mfuns2.o \
	mfuns.o move.o msgparse.o mufevent.o oldcompress.o p_array.o \
	p_connects.o p_db.o p_error.o p_float.o player.o p_math.o p_mcp.o \
	p_misc.o p_props.o p_regex.o predicates.o propdirs.o property.o \
	props.o p_stack.o p_strings.o random.o rob.o sanity.o set.o \
	signal.o smatch.o snprintf.o speech.o strftime.o stringutil.o \
	timequeue.o timestamp.o tune.o unparse.o utils.o wiz.o

LOBJ= copyright.o
MOBJ= olddecomp.o reconst.o interface.o resolver.o topwords.o


SRC= ${MISCSRC} ${CSRC} ${LSRC} ${MSRC}
OBJ= ${COBJ} ${ROBJ} ${LOBJ} ${MOBJ}




TARGETS= fbmuck fbhelp fb-resolver fb-olddecompress fb-topwords fb-announce
OLDTARGETS = fbmuck~ fbhelp~ fb-resolver~ fb-olddecompress~ fb-topwords~ fb-announce~
HELPFILES= man.txt help.txt mpihelp.txt

.c.o:
	${PRE} ${CC} ${CFLAGS} ${INCL} ${DEFS} -c $*.c

.c.cpp:
	${PRE} ${CPP} ${CFLAGS} ${INCL} ${DEFS} -c $*.c -o $*.cpp

all: $(INCLUDE)/defines.h ${TARGETS} 

$(INCLUDE)/defines.h:
	@echo Creating $(INCLUDE)/defines.h...
	@echo '/* This file is automatically generated by make. */' > $(INCLUDE)/defines.h
	@echo "#define BINDIR \"$(INSTALL_BINDIR)\"" >> $(INCLUDE)/defines.h
	@echo "#define INSTALL_HELPDIR \"$(INSTALL_HELPDIR)\"" >> $(INCLUDE)/defines.h

fbmuck: $(INCLUDE)/defines.h ${P} ${COBJ} ${MALLOBJ} interface.o ${LOBJ} mkversion.sh Makefile
	sh mkversion.sh
	${PRE} ${CC} ${CFLAGS} ${INCL} ${DEFS} -c version.c
	if [ -f fbmuck ]; then ${MV} fbmuck fbmuck~ ; fi
	${PRE} ${CC} ${CFLAGS} ${INCL} ${DEFS} -o fbmuck ${COBJ} ${MALLOBJ} interface.o version.o \
	  ${LIBR} ${LOBJ}

fb-resolver: resolver.o ${LOBJ} ${MALLOBJ} Makefile
	${PRE} ${CC} ${CFLAGS} ${INCL} ${DEFS} -o fb-resolver resolver.o ${MALLOBJ} ${LIBR} ${LOBJ} -lpthread

fb-topwords: topwords.o hashtab.o ${MALLOBJ} Makefile
	${CC} ${CFLAGS} ${INCL} ${DEFS} -o fb-topwords topwords.o hashtab.o ${MALLOBJ} ${LIBR}

fb-olddecompress: olddecomp.o oldcompress.o compress.o db_header.o ${LOBJ} ${MALLOBJ} Makefile
	${CC} ${CFLAGS} ${INCL} ${DEFS} -o fb-olddecompress olddecomp.o oldcompress.o \
		compress.o db_header.o ${LIBR} ${MALLOBJ} ${LOBJ}

fb-announce: ${ANNOBJ} ${LOBJ} ${MALLOBJ} Makefile
	${CC} ${CFLAGS} ${ANNOBJ} -o fb-announce ${MALLOBJ} ${LIBR} ${LOBJ}

fbhelp.o: help.c
	${CC} ${CFLAGS} ${INCL} ${DEFS} -c help.c -o fbhelp.o -DSTANDALONE_HELP -DHELPFILE_DIR='"${INSTALL_HELPDIR}"'

fbhelp: fbhelp.o ${MALLOBJ} Makefile
	${CC} ${CFLAGS} ${INCL} ${DEFS} fbhelp.o -o fbhelp ${MALLOBJ}


#############################################################
# Funky stuff for debugging and coding work.
#

saber_src:
	#load ${CFLAGS} ${INCL} ${DEFS} ${CSRC}

saber_obj: ${CSRC} interface.o
	#load ${OBJ} interface.o

tags: ${CSRC} ${MSRC} ${MALLSRC}
	${MKTAGS} ${CSRC} ${MALLSRC} interface.c ../include/*.h

lint: ${CSRC} ${MSRC} ${MALLSRC} ${INCLUDE}/defines.h
	-${RM} netmuck.lint
	-${LINT} ${LINTFLAGS} ${CSRC} ${MSRC} ${MALLSRC} > netmuck.lint

${SRC}:
	${GET} $@

${MALLSRC}:
	${GET} $@

sources: ${MALLSRC} ${SRC}

names:
	@for i in ${SRC} ${MALLSRC}; do echo ${SRC_PREFIX}$$i; done

depend:
	${MKDEPEND} -- ${CFLAGS} ${INCL} ${DEFS} -- ${CSRC} ${MALLSRC} ${MSRC} ${LSRC}
	echo chmod -w Makefile
	chmod -w Makefile

Makefile: Makefile.in
	cd .. && ./configure
	@echo " "
	@echo Please re-run Make, as the Makefile was re-generated.
	@echo " "
	false

########################################################
# Cleanup stuff.
#

clean:
	-${RM} ${OBJ} core version.o ${LOBJ} ${SOBJ} ${MALLOBJ} ${ANNOBJ} resolver.o ${TARGETS} ${OLDTARGETS} fbhelp.o

cleaner: clean
	-${RM} Makefile config.status config.cache config.log ${INCLUDE}/autoconf.h ${TARGETS} version.c prochelp ${INCLUDE}/defines.h

distclean: cleaner

clobber: cleaner
	-${RM} tags *~ *.bak *.orig

nuke: distclean
	-${RM} ${OBJ} core version.o
	-${RM} ${TARGETS} tags *~ *.bak *.orig
	-${RM} Makefile config.status ${INCLUDE}/autoconf.h
	-${CLEAN} *

install: all
	${INSTALL} -d ${INSTALL_BINDIR}
	${INSTALL_PROGRAM} ${TARGETS} ${INSTALL_BINDIR}
	${INSTALL} -d ${INSTALL_HELPDIR}
	cd ../game/data && ${INSTALL_DATA} ${HELPFILES} ${INSTALL_HELPDIR}
	${INSTALL_SCRIPT} ../game/restart ${INSTALL_HELPDIR}/restart-script
	@echo " "
	@echo "You may run 'make install-sysv-inits' to install SysV style init scripts."
	@echo " "

# FIXME: Implement fb-addmuck
# FIXME: Check base and minimal dbs into CVS as unpacked file trees under dbs/
# FIXME: Create man pages for fbmuck, fbhelp, fb-addmuck, fb-announce, topwords

install-sysv-inits: all
	-[ -f /etc/fbmucks ] || echo "#MUCKNAME   USERNAME    MUCK_ROOT_PATH           SCRIPTNAME  PORTS" > /etc/fbmucks
	-[ -f /etc/redhat-release ] && ${INSTALL_SCRIPT} ../scripts/fbmuck-redhat-init /etc/rc.d/init.d/fbmuck
	-[ ! -f /etc/redhat-release ] && ${INSTALL_SCRIPT} ../scripts/fbmuck-sysvinit /etc/rc.d/init.d/fbmuck
	-chkconfig --add fbmuck || ( \
		for d in 0 1 2 3 4 5 6; do rm -f /etc/rc.d/rc$$d.d/S??fbmuck; done ; \
		for d in 0 1 2 3 4 5 6; do rm -f /etc/rc.d/rc$$d.d/K??fbmuck; done ; \
		for d in 0 1         6; do ln -s ../init.d/fbmuck /etc/rc.d/rc$$d.d/K23fbmuck; done ; \
		for d in     2 3 4 5  ; do ln -s ../init.d/fbmuck /etc/rc.d/rc$$d.d/S82fbmuck; done ; \
	)

#	${INSTALL} -d ${INSTALL_SBINDIR}
#	${INSTALL_SCRIPT} ../scripts/fb-addmuck ${INSTALL_SBINDIR}
#
#	${INSTALL} -d ${INSTALL_DBSDIR}
#	for d in minimal base; do \
#		cd dbs/${d} && tar cf ${INSTALL_DBSDIR}/${d}db.tar *; \
#		gzip ${INSTALL_DBSDIR}/${d}db.tar; \
#	done

# #######################################################################
# #######################################################################

# DO NOT DELETE THIS LINE -- make depend depends on it.
