lpmoo-1.2/etc/
lpmoo-1.2/mudlib/
lpmoo-1.2/mudlib/etc/
lpmoo-1.2/mudlib/include/
lpmoo-1.2/mudlib/include/moo/
lpmoo-1.2/mudlib/lpc/
lpmoo-1.2/mudlib/std/auto/
lpmoo-1.2/mudlib/std/bfuns/
#
# Makefile for LPMOO
#

DRIVER =	dgd/bin/driver
DGD_CF =	etc/dgd.cf

MOO_DB =	etc/moo.db
DGD_DB =	etc/dgd.db

DGD_LOG =	mudlib/etc/dgd.log
DGD_PID =	etc/dgd.pid

DNS_LOG =	etc/dns.log
DNS_PID =	etc/dns.pid

DGD =		dgd-1.0.9.23.tar
RGX =		rgx-0.3.tar
NET =		net-5.tar

NETDIFF =	src/net-1.0.9.22.cdiff
RGXDIFF =	src/rgx-1.0.9.10.cdiff

install ::
	@echo "Please carefully read the instructions in the ./INSTALL file."

prepare :: .prepare
	@echo "** Preparations completed **"

net :: .net
	@echo "** Networking package installed **"

space :: $(DGD).gz $(RGX).gz $(NET).gz

$(DGD).gz:
	gzip $(DGD)

$(RGX).gz:
	gzip $(RGX)

$(NET).gz:
	gzip $(NET)

$(DGD) $(RGX) $(NET):
	gunzip $@.gz

dgd: $(DGD)
	rm -rf dgd
	tar xf $(DGD)
	touch dgd

dgd-rgx: $(RGX) dgd
	rm -rf dgd-rgx
	tar xf $(RGX)
	touch dgd-rgx

dgd-net: $(NET)
	rm -rf dgd-net
	tar xf $(NET)
	touch dgd-net

.prepare: dgd dgd-rgx
	cp src/lpc.Makefile dgd/src/lpc/Makefile
	cp src/lpc.list dgd/src/lpc/list
	ln -s ../README ../Copyright ../Credits ../src/Changelog dgd/doc/.
	ln -s ../../dgd-rgx/src/rgx.c ../../dgd-rgx/src/rgx.h dgd/src/.
	ln -s ../../dgd-rgx/src/regex dgd/src/regex
	patch -p0 -s < $(RGXDIFF)
	sed -e '/^directory/s!"[^"]*"!"'$$PWD'/mudlib"!'  \
	  < etc/dgd.cf > etc/dgd.cf.new
	mv etc/dgd.cf.new etc/dgd.cf
	sed -e '/^timezone/s!"[^"]*"!"'`/bin/date | cut -c21-23`'"!'  \
	  < etc/moo.cf > etc/moo.cf.new
	mv etc/moo.cf.new etc/moo.cf
	@touch .prepare

.net: dgd-net
	patch -p0 -s < $(NETDIFF)
	patch -p0 -s < src/lpmoo-net.cdiff
	rm -f dgd/src/comp/a.out
	sed -e '/^outbound_net/s/NO/YES/' < etc/moo.cf > etc/moo.cf.new
	mv etc/moo.cf.new etc/moo.cf
	@touch .net

bootstrap :: $(DRIVER) $(db) clean
	@if [ "x$(db)" = "x" ]; then  \
	  echo "Need \`db=filename' argument";  \
	else  \
	  echo "Bootstrapping with MOO database $(db)";  \
	  if [ `expr '$(db)' : '^/'` = 1 ]; then  \
	    rm -f $(MOO_DB) && ln -s $(db) $(MOO_DB);  \
	  else  \
	    rm -f $(MOO_DB) && ln -s ../$(db) $(MOO_DB);  \
	  fi;  \
	  $(DRIVER) $(DGD_CF);  \
	fi

clean ::
	@echo "Cleaning tmp files"
	@rm -f tmp/* mudlib/tmp/* mudlib/verb/*
	@echo "Removing DGD process ID file"
	@rm -f $(DGD_PID)

run :: $(DRIVER) $(DGD_DB)
	@if [ -r $(DGD_PID) ]; then  \
	  echo "DGD is already running? Try \`make kill' or \`make clean'";  \
	else  \
	  echo "Starting DGD with last state dump";  \
	  if [ -f $(DGD_LOG) ]; then  \
	    mv $(DGD_LOG) $(DGD_LOG).old;  \
	  fi;  \
	  $(DRIVER) $(DGD_CF) $(DGD_DB) 1>$(DGD_LOG) 2>&1 &  \
	  echo $$! > $(DGD_PID);  \
	fi

kill ::
	@if [ ! -r $(DGD_PID) ]; then  \
	  echo "No DGD process to kill";  \
	else  \
	  echo "Killing DGD process";  \
	  kill `cat $(DGD_PID)`;  \
	  rm -f $(DGD_PID);  \
	fi

dns :: bin/dnsbot
	@eval `sed -n -e '/=.*;/s/[ 	]*=[ 	]*/=/p' < etc/dns.cf` &&  \
	save=`umask` && umask 077 &&  \
	echo "$$login_command" >tmp/dns.in && umask $$save &&  \
	bin/dnsbot "$$host" "$$port" <tmp/dns.in 1>$(DNS_LOG) 2>&1 &  \
	echo $$! >$(DNS_PID)
	@echo "DNS daemon started"

bin/dnsbot: src/dnsbot.c
	$(CC) src/dnsbot.c -o bin/dnsbot

dns.pl :: src/dnsbot.pl
	@perl src/dnsbot.pl </dev/null 1>$(DNS_LOG) 2>&1 & echo $$! >$(DNS_PID)
	@echo "Perl DNS daemon started"