DESTDIR=
SRVDIR=		/usr/local/games/mboggle
GAMEDIR=	/usr/sipb/${MACHINE}bin
WORDDIR=	words
SRVLIBDIR=	${SRVDIR}/lib
SRVWORDDIR=	${SRVLIBDIR}/words
MANDIR=		/mit/sipb/man
MANSECT=	6
HOST=		CHARON.MIT.EDU
ZEPHYR=		-DSTARTZEPHYR=\"/usr/athena/zwrite\"
SHORT_TIMER=	
GAMESRVDIR=	../../src/gameserver
RM=		rm

CFLAGS=		-DMBOGGLE_HOST=\"$(HOST)\" -DMBOGGLE_PORT=32254\
		$(EXFLAGS) -DHESIOD -I/usr/athena/include\
		$(SHORT_TIMER) $(CDEBUGFLAGS)

CDEBUGFLAGS=	-O
LDFLAGS=	-L/usr/athena/lib

SRVFLAGS=	$(ZEPHYR)
GAMEFLAGS=
HASHFLAGS=	-DWORDDIR=\"$(SRVWORDDIR)\"

TARGETS= 	mboggle mbogglemaster buildhash checkword

HASHSRC= 	hash.c commonhash.c
HASHOBJ= 	hash.o commonhash.o
HASHINC= 	hash.h

BUILDSRC=	buildhash.c $(HASHSRC)
BUILDOBJ= 	buildhash.o $(HASHOBJ)
BUILDINC= 	$(HASHINC)

SRVSRC= 	mbogglemaster.c safe_read.c $(HASHSRC)
SRVOBJ= 	mbogglemaster.o safe_read.o $(HASHOBJ)
SRVINC= 	boggle.h $(HASHINC)

GAMESRC= 	boggle.c safe_read.c word_window.c
GAMEOBJ= 	boggle.o safe_read.o word_window.o
GAMEINC=	boggle.h

CHECKSRC=	checkword.c $(HASHSRC)
CHECKOBJ=	checkword.o $(HASHOBJ)
CHECKINC= 	$(HASHINC)

#ifndef _AIX
TERMLIB=	-ltermlib
#endif

/**/# Note: "words" not in all target because it takes so long to build
/**/# the words.  Build them by hand when they need to be built, rather
/**/# than allowing them to be built automatically during every "make
/**/# all".
all: $(TARGETS)
	
/**/# Install doesn't include the server because that should be installed
/**/# by hand on a particular machine.

install: game_install man_install

game_install: mboggle
	-$(RM) -f ${DESTDIR}${GAMEDIR}/mboggle
	install -c -s mboggle ${DESTDIR}${GAMEDIR}

srv_install: mbogglemaster checkword
	-$(RM) -f ${DESTDIR}${SRVDIR}/mbogglemaster
	-$(RM) -f ${DESTDIR}${SRVDIR}/checkword
	install -c -s mbogglemaster ${DESTDIR}${SRVDIR}/mbogglemaster
	install -c -s checkword ${DESTDIR}${SRVDIR}/checkword

word_install:
	-mkdir ${DESTDIR}${SRVLIBDIR}
	tar cf - words | (cd ${DESTDIR}$(SRVLIBDIR); tar xf -)

man_install: mboggle.s
	install -c mboggle.s \
		${DESTDIR}${MANDIR}/man${MANSECT}/mboggle.${MANSECT}

depend: $(SRVSRC) $(GAMESRC)
depend: ${SRVINC} ${GAMEINC} $(HASHINC) $(CHECKINC) $(BUILDINC) Makefile
	makedepend -v ${CFLAGS} -s'# DO NOT DELETE' ${SRVSRC} ${GAMESRC} \
		${HASHSRC} ${BUILDSRC} ${CHECKSRC}

clean:
	-rm -f *~ *.o $(TARGETS) *.bak

mboggle: ${GAMEOBJ}
	cc -o mboggle ${LDFLAGS} ${GAMEFLAGS} ${GAMEOBJ} -lcurses \
		$(TERMLIB) -lhesiod

saber_boggle: ${GAMESRC}
	/**/#setopt program_name mboggle
	/**/#load ${CFLAGS} $(LDFLAGS) ${GAMEFLAGS} ${GAMESRC} -lcurses \
		$(TERMLIB) -lhesiod

mbogglemaster: ${SRVOBJ}
	cc -o mbogglemaster ${LDFLAGS} ${SRVFLAGS} ${SRVOBJ} -lhesiod

saber_master: ${SRVSRC}
	/**/#setopt program_name mbogglemaster
	/**/#load ${CFLAGS} ${LDFLAGS} ${SRVFLAGS} ${SRVSRC} -lhesiod

checkword: ${CHECKOBJ}
	cc -o checkword ${LDFLAGS} ${CHECKOBJ}

buildhash: ${BUILDOBJ}
	cc -o buildhash ${LDFLAGS} ${BUILDOBJ} -lm

words: buildhash makewordfiles FORCE
	makewordfiles $(WORDDIR)
	buildhash $(WORDDIR) 4 25

hash.o commonhash.o checkword.o buildhash.o allwords.o:
	cc -c $(CFLAGS) $(HASHFLAGS) $*.c

boggle.o: boggle.c
	cc -c ${CFLAGS} ${GAMEFLAGS} boggle.c

mbogglemaster.o: mbogglemaster.c
	cc -c ${CFLAGS} ${SRVFLAGS} mbogglemaster.c

Makefile: Makefile.cpp
	-rm -f Makefile.bak
	-mv Makefile Makefile.bak
	imake -I. -TMakefile.cpp -f /dev/null

FORCE:

safe_read.c master.c user.c game_data.c:
	ln -s $(GAMESRVDIR)/$@ $@

/**/# DO NOT DELETE THIS LINE
