4.4BSD/usr/src/contrib/hunt/Makefile

#
#  Hunt
#  Copyright (c) 1985 Conrad C. Huang, Gregory S. Couch, Kenneth C.R.C. Arnold
#  San Francisco, California
#
SHELL=		/bin/sh
HDR=		hunt.h bsd.h talk_ctl.h
DSRC1=		answer.c driver.c draw.c execute.c expl.c makemaze.c
DSRC2=		shots.c terminal.c extern.c \
		faketalk.c ctl.c ctl_transact.c get_names.c
DSRC=		${DSRC1} ${DSRC2}
DOBJ=		answer.o driver.o draw.o execute.o expl.o makemaze.o \
		shots.o terminal.o extern.o \
		faketalk.o ctl.o ctl_transact.o get_names.o
PSRC=		hunt.c connect.c playit.c pathname.c otto.c
POBJ=		hunt.o connect.o playit.o otto.o

#
# Installation destinations
BINDIR=		/usr/games
LIBDIR=		/usr/libexec
MANDIR=		/usr/contrib/man/cat6

#
# Game parameter flags are:
#	RANDOM	Include doors which disperse shots randomly
#	REFLECT	Include diagonal walls that reflect shots
#	MONITOR	Include code for watching the game from the sidelines
#	OOZE	Include slime shots
#	FLY	Make people fly when walls regenerate under them
#	VOLCANO	Include occasional large slime explosions
#	DRONE	Include occasional drone shots
#	BOOTS	Include boots (which makes you immune to slime)
#	OTTO	Reserved for CGL automatic player
#
GAME_PARAM=	-DRANDOM -DREFLECT -DMONITOR -DOOZE -DFLY -DVOLCANO -DBOOTS \
		-DOTTO

#
# System parameter flags are:
#	DEBUG		Don't trust everything in the code
#	INTERNET	Use the Internet domain IPC instead of UNIX domain
#	LOG		Use syslog error-logging in driver (needs SYSLOG_42 or
#			or SYSLOG_43)
#	OLDIPC		Use 4.1a internet system calls (must also define
#			INTERNET)
#	TERMINFO	Use terminfo instead of termcap
#	SYSLOG_42	Use 4.2 BSD syslog(3)
#	SYSLOG_43	Use 4.2 BSD syslog(3)
#	LOG		Use syslog(3) for logging errors
#	BSD_RELEASE	Which version of BSD distribution
#			42 is 4.2BSD (implies SYSLOG_42)
#			43 is 4.3BSD (implies BROADCAST, SYSLOG_43)
#	USE_CURSES	Use curses for everything (automatic w/TERMINFO)
#	SIGNAL_TYPE	void or int
#	HPUX		do special HPUX only hacks
#
# NOTE: if you change the domain (INTERNET vs UNIX) then "make newdomain"
#
DEFS_BSD43=	-DINTERNET -DLOG -DBSD_RELEASE=43 -DSIGNAL_TYPE=int
DEFS_BSD44=	-DINTERNET -DLOG -DBSD_RELEASE=44 -DSIGNAL_TYPE=void
DEFS_SUN=	-DINTERNET -DLOG -DBSD_RELEASE=42 -DBROADCAST -DSIGNAL_TYPE=int
DEFS_SUN4_0=	-DINTERNET -DLOG -DSYSLOG_43 -DBROADCAST -DSIGNAL_TYPE=void
DEFS_ULTRIX=	-DINTERNET -DLOG -DBSD_RELEASE=42 -DSIGNAL_TYPE=void
DEFS_HPUX=	-DHPUX -DINTERNET -DLOG -DSYSLOG_43 -DBROADCAST -DTERMINFO -DSIGNAL_TYPE=void
DEFS_SGI=	-DINTERNET -DLOG -DBSD_RELEASE=43 -DTERMINFO -DSIGNAL_TYPE=void
DEFS_NEXT=	$(DEFS_43) -bsd -traditional -Dconst= -DSIGNAL_TYPE=int
DEFS_OSF1=	-DINTERNET -DLOG -DBSD_RELEASE=43 -DSIGNAL_TYPE=void -D_BSD

#
# The following flags are used for system specific compilation arguments.
# Change them to include the appropriate arguments.  For example, on SGI
# machines, they should look like
# SYSCFLAGS=	-I/usr/include/bsd
# SYSLIBS=	-lbsd
#
SYSCFLAGS=
SYSLIBS=

#
# Generic definitions
#
DEFS=		$(GAME_PARAM) $(DEFS_BSD44)
CFLAGS=		-O2 $(SYSCFLAGS) $(DEFS)

#
# Normal targets
#
all:	hunt huntd

hunt:	$(POBJ) pathname.o
	$(CC) -o hunt $(POBJ) pathname.o -lcurses -ltermcap $(SYSLIBS)

huntd:	$(DOBJ) pathname.o
	$(CC) -o huntd $(DOBJ) pathname.o $(SYSLIBS)

debug:	hunt.dbg huntd.dbg

hunt.dbg:	$(POBJ) pathname.dbg.o
	$(CC) -o hunt.dbg $(POBJ) pathname.dbg.o -lcurses -ltermcap $(SYSLIBS)

huntd.dbg: $(DOBJ) pathname.dbg.o
	$(CC) -o huntd.dbg $(DOBJ) pathname.dbg.o $(SYSLIBS)

#
# Source distribution in three files to a particular person
#
mail.msg:
	-@if test x${MAIL} = x ; then\
		/bin/echo MAIL not set ;\
	fi
mail.quit:
	@test x$mail != x
mail:	mail.msg mail.quit
	shar -a README hunt.6 huntd.6 Makefile ${HDR} ${PSRC} |\
	Mail -s "Hunt (part 1 of 3)" ${MAIL}
	shar -a ${DSRC1} | Mail -s "Hunt (part 2 of 3)" ${MAIL}
	shar -a ${DSRC2} | Mail -s "Hunt (part 3 of 3)" ${MAIL}

mail.part2:	mail.msg mail.quit
	shar -a ${DSRC1} | Mail -s "Hunt (part 2 of 3)" ${MAIL}

#
# Single file source distribution
#
shar:
	shar README hunt.6 huntd.6 Makefile ${HDR} ${PSRC} ${DSRC1} \
	${DSRC2} | compress -c > hunt.shar.Z

#
# System installation
#
install:
	install -s -o bin -g bin -m 555 huntd ${LIBDIR}/huntd
	install -s -o bin -g bin -m 555 hunt ${BINDIR}/hunt
	nroff -man hunt.6 > ${MANDIR}/hunt.0
	nroff -man huntd.6 > ${MANDIR}/huntd.0
	chown bin.bin ${MANDIR}/hunt.0 ${MANDIR}/huntd.0
	chmod 444 ${MANDIR}/hunt.0 ${MANDIR}/huntd.0

#
# Object file dependencies
#
$(POBJ): $(HDR)

$(DOBJ): $(HDR)
	$(CC) $(CFLAGS) -c $*.c

pathname.o: pathname.c Makefile
	$(CC) $(CFLAGS) -DHUNTD=\"${LIBDIR}/huntd\" -c pathname.c

pathname.dbg.o: pathname.c
	@echo $(CC) $(CFLAGS) -DDEBUG -c pathname.c -o pathname.dbg.o
	@rm -f x.c
	@ln pathname.c x.c
	@$(CC) $(CFLAGS) -DDEBUG -c x.c
	@mv x.o pathname.dbg.o
	@rm -f x.c

#
# Miscellaneous functions
#
lint:	driver.lint hunt.lint

driver.lint: $(DSRC)
	lint $(DEFS) $(DSRC) 2>&1 > driver.lint

hunt.lint: $(PSRC)
	lint $(DEFS) $(PSRC) -lcurses 2>&1 > hunt.lint

tags:	$(DSRC) $(PSRC)
	ctags $(DSRC) $(PSRC)

clean:
	rm -f $(POBJ) $(DOBJ) pathname.o pathname.dbg.o errs hunt.dbg \
	huntd.dbg hunt huntd hunt.lint driver.lint hunt.shar.Z

newdomain:
	rm hunt.o extern.o driver.o