# Makefile written by Paul Pomes, University of Illinois,
# Computing Services Office
#
# Copyright (C) 1988 by Paul Pomes and the University of Illinois Board
# of Trustees
#
# Written by Paul Pomes, University of Illinois, Computing Services Office
# Copyright (C) 1989 by Paul Pomes and the University of Illinois Board
# of Trustees
# 
# This Makefile is distributed in the hope that it will be useful, but without
# any warranty.  No author or distributor accepts responsibility to anyone
# for the consequences of using it, no matter how awful, or for whether it
# serves any particular purpose or works at all, unless s/he says so in
# writing.
# 
# Everyone is granted permission to copy, modify and redistribute this
# Makefile under the following conditions:
# 
#    Permission is granted to anyone to make or distribute copies of Makefile
#    source code, either as received or modified, in any medium, provided
#    that all copyright notices, permission and nonwarranty notices are
#    preserved, and that the distributor grants the recipient permission for
#    further redistribution as permitted by this document, and gives him and
#    points out to him an exact copy of this document to inform him of his
#    rights.
# 
#    Permission is granted to distribute this Makefile in compiled or
#    executable form under the same conditions applying for source code,
#    provided that either
# 
#    A. it is accompanied by the corresponding machine-readable source code,
#       or
#    B. it is accompanied by a written offer, with no time limit, to give
#       anyone a machine-readable copy of the corresponding source code in
#       return for reimbursement of the cost of distribution.  This written
#       offer must permit verbatim duplication by anyone.
#    C. it is distributed by someone who received only the executable form,
#       and is accompanied by a copy of the written offer of source code
#       which he received along with it.
# 
# In other words, you are welcome to use, share and improve this Makefile.
# You are forbidden to forbid anyone else to use, share and improve what
# you give them.   Help stamp out software-hoarding!
# 
# UUCP:     {att,iuvax,uunet}!uiucuxc!paul     ICBM: 40 06 47 N / 88 13 35 W
# Internet, BITNET: paul@uxc.cso.uiuc.edu      Phone: 217 333 6262
# US Mail:  UofIllinois, CSO, 1304 W Springfield Ave, Urbana, IL  61801-2987

.SUFFIXES:	.c,v .h,v .y,v

CC     = gcc
CO     = co
RM     = /bin/rm -f

# How the program is to be installed.  At UIUC, use oed2, otherwise ox2
OED2=oed2
#
COMMON_DEFS = -DOED2LIB=\"${LIB}\"
# Use the following with local data files
DEFS   = -UREMOTE ${COMMON_DEFS}
# Use the following when operating with a remote server
#DEFS   = -DREMOTE -DPAT_HOST=\"oed2.cso.uiuc.edu\" ${COMMON_DEFS}
# Add -systype bsd43 when installing on MIPS/RISC machines
CFLAGS = ${DEFS} -O
FFLAGS = ${DEFS}
PFLAGS = ${DEFS}
LFLAGS = 
YFLAGS = 
LDFLAGS= 
LIBS   = 

BIN= /usr/local/bin
ETC= /usr/local/etc
LIB= /usr/local/lib/${OED2}
# 4.3 BSD-Tahoe and 4.4 store local man pages here
MAN= /usr/local/src/man
# The rest of the world uses this
#MAN= /usr/man/manl
DOCDIR = /usr/local/doc

HDRS   = oed2.h
# Include OSRCS and OOBJS if needed on your system
#OSRCS  = Extras/strtok.c Extras/strcasecmp.c Extras/getopt.c
#OOBJS  = strtok.o strcasecmp.o getopt.o
SRCS   = main.c ContactPat.c FindSymbol.c FindTag.c FmtEntry.c LoadMatch.c \
	ModeCmd.c PatCapture.c PipeExec.c PrtCmd.c ScanArgs.c SetMode.c \
	trace.c misc.c Version.c ${OSRCS}
OBJS   = main.o ContactPat.o FindSymbol.o FindTag.o FmtEntry.o LoadMatch.o \
	ModeCmd.o PatCapture.o PipeExec.o PrtCmd.o ScanArgs.o SetMode.o \
	trace.o misc.o Version.o ${OOBJS}
SRCS2  = patd.c # Extras/getenv.c Extras/setenv.c Extras/strcasecmp.c
OBJS2  = patd.o # getenv.o setenv.o strcasecmp.o
OTHERS = Copying Makefile README oed2.1 patd.8 Extras/* Scripts/* \
	Lib/agreement Lib/help Lib/motd Lib/license
VERS   = 

.c,v.o:
	${CO} -q $*.c
	${CC} ${CFLAGS} -c $*.c
	${RM} $*.c

.c,v.c:
	${CO} -q $*.c

.h,v.h:
	${CO} -q $*.h

.y,v.y:
	${CO} -q $*.y

all:	${OED2}

${OED2}:	${OBJS}
	${CC} -o ${OED2} ${CFLAGS} ${LDFLAGS} ${OBJS} ${LIBS}

patd:	${OBJS2}
	${CC} -o patd ${CFLAGS} ${LDFLAGS} ${OBJS2} ${LIBS}

man:	${OED2}.0 patd.0

${OED2}.0:	${OED2}.1
	nroff -man ${OED2}.1 > ${OED2}.0

ox2.1:	oed2.1
	sed '/nr Z 1/s//nr Z 0/' oed2.1 > ox2.1

patd.0:	patd.8
	nroff -man patd.8 > patd.0

getenv.o:	Extras/getenv.c
	${CC} -c ${CFLAGS} Extras/getenv.c
getopt.o:	Extras/getopt.c
	${CC} -c ${CFLAGS} Extras/getopt.c
setenv.o:	Extras/setenv.c
	${CC} -c ${CFLAGS} Extras/setenv.c
strcasecmp.o:	Extras/strcasecmp.c
	${CC} -c ${CFLAGS} Extras/strcasecmp.c
strtok.o:	Extras/strtok.c
	${CC} -c ${CFLAGS} Extras/strtok.c

install:	${OED2} ${OED2}.0
	install -s ${OED2} ${BIN}
	-if [ ! -d ${LIB} ]; then mkdir ${LIB} ; fi
	install -c -m 444 ${OED2}.0 ${LIB}
	cd Lib; sed "/%prog/s//${OED2}/" help > ${LIB}/help
	chmod 444 ${LIB}/help
	cd Lib; install -c -m 444 agreement ${LIB}
	cd Lib; install -c -m 444 license ${LIB}
	cd Lib; sed "/%prog/s/%prog/${OED2}/" motd > ${LIB}/motd
	chmod 444 ${LIB}/motd
	-if [ "${MAN}" = "/usr/man/manl" ]; then \
		cp ${OED2}.1 ${OED2}.l; install -m 444 ${OED2}.l ${MAN}; \
	else \
		install -c -m 444 ${OED2}.1 ${MAN}/man1 ; fi
	-if [ "${MAN}" = "/usr/man/manl" ]; then \
		cp patd.8 patd.l; install -m 444 patd.l ${MAN}; \
	else \
		install -c -m 444 patd.8 ${MAN}/man8 ; fi
	@echo "Don't forget to add the pat entry to /etc/services, example:"
	@echo "pat		619/tcp"

install-server:	patd
	install -s patd ${ETC}
	@echo "Don't forget to add the pat entry to /etc/services, example:"
	@echo "pat		619/tcp"
	@echo "Ditto for /etc/inetd.conf, example:"
	@echo "pat	stream	tcp	nowait	root	/usr/local/etc/patd	patd"

print:
	pr -b README Makefile ${HDRS} ${SRCS} ${SRCS2} Lib/agreement \
	Lib/help Lib/motd Lib/license | ibmprint -d 3800 -b 38 -p l66 -ft gt12

lint:	${HDRS} ${SRCS} ${SRCS2}
	lint -habx ${DEFS} ${SRCS}
	lint -habx ${DEFS} ${SRCS2}

tar:	${OED2}.0 patd.0
	rm -f ${OED2}.tar
	tar rcf ${OED2}.tar Copying Makefile README *.c oed2.[h1] patd.8 *.0 \
		Lib/agreement Lib/help Lib/motd Lib/license Extras Scripts

shar:	${HDRS} ${SRCS} ${SRCS2} ${OTHERS}
	shar ${HDRS} ${SRCS} ${SRCS2} ${OTHERS} > ${OED2}.shar

tags:	${HDRS} ${SRCS} ${SRCS2}
	ctags ${HDRS} ${SRCS} ${SRCS2}

clean:
	@echo "Removing object and junk files."
	rm -f ${OED2} ox2.1 patd *.0 *.o core a.out make.log lint.out \
		Makefile.bak ${OED2}.shar ${OED2}.tar

clobber:
	@echo "Removing read-only source files that have RCS parents."
	@echo "Error code 1 indicates last file in SRCS list was not removed."
	@echo "(Which is OK)"
	make clean
	-if [ `whoami` != root ]; then \
	   for i in ${HDRS} ${SRCS} ${SRCS2}; do \
	      if [ ! -w $$i ]; then \
	         ( if   [ -f $$i,v ];     then rm -f $$i; \
	           elif [ -f RCS/$$i,v ]; then rm -f $$i; \
	         fi ); \
	      else echo $$i "writeable, not removed"; \
	      fi; \
	   done; \
	else echo "Running \"make clobber\" as root will zap ALL SRCS,\
		RCS'ed or not (not done)."; \
	fi

compress:
	make clean
	@echo "Compressing source and RCS files."
	find . -size +2 \( -name \*.h -o -name \*.c -o -name \*.f \
		-o -name \*.p -o -name \*.l -o -name \*.y -o -name \*,v \) \
		-exec compress {} \;

uncompress:
	uncompressdir .

# RCS stuff

ci:		${HDRS} ${SRCS} ${SRCS2}
		-ci $?
		@touch ci

coall:
		co -l ${HDRS} ${SRCS} ${SRCS2}

update:
		ci -sDist -u -f${VERS} ${HDRS} ${SRCS} ${SRCS2}
		@touch ci

depend:
	mkdep ${DEFS} ${SRCS} ${SRCS2}

# These all make use of compile-time defines in CFLAGS
ContactPat.o:	Makefile
PipeExec.o:	Makefile
PrtCmd.o:	Makefile
ScanArgs.o:	Makefile
main.o:		Makefile
misc.o:		Makefile

# DO NOT DELETE THIS LINE -- mkdep uses it.
# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.

main.o: main.c oed2.h /usr/include/stdio.h /usr/include/ctype.h
main.o: /usr/include/strings.h /usr/include/syslog.h /usr/include/signal.h
main.o: /usr/include/machine/trap.h /usr/include/fcntl.h
main.o: /usr/include/sys/errno.h /usr/include/sys/wait.h
main.o: /usr/include/machine/endian.h /usr/include/sys/types.h
main.o: /usr/include/sys/file.h /usr/include/sys/time.h /usr/include/time.h
main.o: /usr/include/sys/resource.h
ContactPat.o: ContactPat.c
FindSymbol.o: FindSymbol.c oed2.h /usr/include/stdio.h /usr/include/ctype.h
FindSymbol.o: /usr/include/strings.h /usr/include/syslog.h
FindSymbol.o: /usr/include/signal.h /usr/include/machine/trap.h
FindSymbol.o: /usr/include/fcntl.h /usr/include/sys/errno.h
FindSymbol.o: /usr/include/sys/wait.h /usr/include/machine/endian.h
FindSymbol.o: /usr/include/sys/types.h /usr/include/sys/file.h
FindSymbol.o: /usr/include/sys/time.h /usr/include/time.h
FindSymbol.o: /usr/include/sys/resource.h
FindTag.o: FindTag.c oed2.h /usr/include/stdio.h /usr/include/ctype.h
FindTag.o: /usr/include/strings.h /usr/include/syslog.h /usr/include/signal.h
FindTag.o: /usr/include/machine/trap.h /usr/include/fcntl.h
FindTag.o: /usr/include/sys/errno.h /usr/include/sys/wait.h
FindTag.o: /usr/include/machine/endian.h /usr/include/sys/types.h
FindTag.o: /usr/include/sys/file.h /usr/include/sys/time.h /usr/include/time.h
FindTag.o: /usr/include/sys/resource.h
FmtEntry.o: FmtEntry.c oed2.h /usr/include/stdio.h /usr/include/ctype.h
FmtEntry.o: /usr/include/strings.h /usr/include/syslog.h /usr/include/signal.h
FmtEntry.o: /usr/include/machine/trap.h /usr/include/fcntl.h
FmtEntry.o: /usr/include/sys/errno.h /usr/include/sys/wait.h
FmtEntry.o: /usr/include/machine/endian.h /usr/include/sys/types.h
FmtEntry.o: /usr/include/sys/file.h /usr/include/sys/time.h /usr/include/time.h
FmtEntry.o: /usr/include/sys/resource.h
LoadMatch.o: LoadMatch.c oed2.h /usr/include/stdio.h /usr/include/ctype.h
LoadMatch.o: /usr/include/strings.h /usr/include/syslog.h /usr/include/signal.h
LoadMatch.o: /usr/include/machine/trap.h /usr/include/fcntl.h
LoadMatch.o: /usr/include/sys/errno.h /usr/include/sys/wait.h
LoadMatch.o: /usr/include/machine/endian.h /usr/include/sys/types.h
LoadMatch.o: /usr/include/sys/file.h /usr/include/sys/time.h
LoadMatch.o: /usr/include/time.h /usr/include/sys/resource.h
ModeCmd.o: ModeCmd.c oed2.h /usr/include/stdio.h /usr/include/ctype.h
ModeCmd.o: /usr/include/strings.h /usr/include/syslog.h /usr/include/signal.h
ModeCmd.o: /usr/include/machine/trap.h /usr/include/fcntl.h
ModeCmd.o: /usr/include/sys/errno.h /usr/include/sys/wait.h
ModeCmd.o: /usr/include/machine/endian.h /usr/include/sys/types.h
ModeCmd.o: /usr/include/sys/file.h /usr/include/sys/time.h /usr/include/time.h
ModeCmd.o: /usr/include/sys/resource.h
PatCapture.o: PatCapture.c oed2.h /usr/include/stdio.h /usr/include/ctype.h
PatCapture.o: /usr/include/strings.h /usr/include/syslog.h
PatCapture.o: /usr/include/signal.h /usr/include/machine/trap.h
PatCapture.o: /usr/include/fcntl.h /usr/include/sys/errno.h
PatCapture.o: /usr/include/sys/wait.h /usr/include/machine/endian.h
PatCapture.o: /usr/include/sys/types.h /usr/include/sys/file.h
PatCapture.o: /usr/include/sys/time.h /usr/include/time.h
PatCapture.o: /usr/include/sys/resource.h /usr/include/setjmp.h
PipeExec.o: PipeExec.c oed2.h /usr/include/stdio.h /usr/include/ctype.h
PipeExec.o: /usr/include/strings.h /usr/include/syslog.h /usr/include/signal.h
PipeExec.o: /usr/include/machine/trap.h /usr/include/fcntl.h
PipeExec.o: /usr/include/sys/errno.h /usr/include/sys/wait.h
PipeExec.o: /usr/include/machine/endian.h /usr/include/sys/types.h
PipeExec.o: /usr/include/sys/file.h /usr/include/sys/time.h /usr/include/time.h
PipeExec.o: /usr/include/sys/resource.h
PrtCmd.o: PrtCmd.c oed2.h /usr/include/stdio.h /usr/include/ctype.h
PrtCmd.o: /usr/include/strings.h /usr/include/syslog.h /usr/include/signal.h
PrtCmd.o: /usr/include/machine/trap.h /usr/include/fcntl.h
PrtCmd.o: /usr/include/sys/errno.h /usr/include/sys/wait.h
PrtCmd.o: /usr/include/machine/endian.h /usr/include/sys/types.h
PrtCmd.o: /usr/include/sys/file.h /usr/include/sys/time.h /usr/include/time.h
PrtCmd.o: /usr/include/sys/resource.h /usr/include/setjmp.h
ScanArgs.o: ScanArgs.c oed2.h /usr/include/stdio.h /usr/include/ctype.h
ScanArgs.o: /usr/include/strings.h /usr/include/syslog.h /usr/include/signal.h
ScanArgs.o: /usr/include/machine/trap.h /usr/include/fcntl.h
ScanArgs.o: /usr/include/sys/errno.h /usr/include/sys/wait.h
ScanArgs.o: /usr/include/machine/endian.h /usr/include/sys/types.h
ScanArgs.o: /usr/include/sys/file.h /usr/include/sys/time.h /usr/include/time.h
ScanArgs.o: /usr/include/sys/resource.h
SetMode.o: SetMode.c oed2.h /usr/include/stdio.h /usr/include/ctype.h
SetMode.o: /usr/include/strings.h /usr/include/syslog.h /usr/include/signal.h
SetMode.o: /usr/include/machine/trap.h /usr/include/fcntl.h
SetMode.o: /usr/include/sys/errno.h /usr/include/sys/wait.h
SetMode.o: /usr/include/machine/endian.h /usr/include/sys/types.h
SetMode.o: /usr/include/sys/file.h /usr/include/sys/time.h /usr/include/time.h
SetMode.o: /usr/include/sys/resource.h
trace.o: trace.c oed2.h /usr/include/stdio.h /usr/include/ctype.h
trace.o: /usr/include/strings.h /usr/include/syslog.h /usr/include/signal.h
trace.o: /usr/include/machine/trap.h /usr/include/fcntl.h
trace.o: /usr/include/sys/errno.h /usr/include/sys/wait.h
trace.o: /usr/include/machine/endian.h /usr/include/sys/types.h
trace.o: /usr/include/sys/file.h /usr/include/sys/time.h /usr/include/time.h
trace.o: /usr/include/sys/resource.h
misc.o: misc.c oed2.h /usr/include/stdio.h /usr/include/ctype.h
misc.o: /usr/include/strings.h /usr/include/syslog.h /usr/include/signal.h
misc.o: /usr/include/machine/trap.h /usr/include/fcntl.h
misc.o: /usr/include/sys/errno.h /usr/include/sys/wait.h
misc.o: /usr/include/machine/endian.h /usr/include/sys/types.h
misc.o: /usr/include/sys/file.h /usr/include/sys/time.h /usr/include/time.h
misc.o: /usr/include/sys/resource.h
Version.o: Version.c
patd.o: patd.c /usr/include/pwd.h /usr/include/syslog.h
patd.o: /usr/include/sys/types.h /usr/include/sys/uio.h
patd.o: /usr/include/sys/socket.h /usr/include/sys/wait.h
patd.o: /usr/include/machine/endian.h /usr/include/sys/time.h
patd.o: /usr/include/time.h /usr/include/sys/resource.h
patd.o: /usr/include/netinet/in.h /usr/include/netdb.h /usr/include/stdio.h
patd.o: /usr/include/ctype.h

# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
