# rcsid = "$Header: /Nfs/blyth/glob/src/usr.bin/spad/src/RCS/Makefile,v 1.27 1993/11/13 14:45:19 pb Exp $"
# Makefile for server pad programme.
#
RCSsymbNAME=RFC931errlog
RCSmessage =RFC 931 support added. Lof file for failures
RCSbase	= 1
#
LOGFN	= #-DACCNTFILE=\"/usr/adm/Padlogx25\"
PROFFILE= #-DPROF_FILE=\"/etc/x29profile\" -DPRIV_FILE=\".x29profile\"
#
TPADMSG	= #'-DTPADMSG="tpad to (<hostname>, \"old\" or RETURN): "'
TPADOPTS= #'-DTPADOPTS="^80e8001[5-9a-c]:phx,^80e800d[67acd]:phx:,^80e8:,^:FORBID"'
#
BREAKIN	= #-DBREAKINCHAR=0x1d	# if not DLE == ^P, then ^]
GATEWAY	= x29-serv,ipgate
SERVNUM	= 1127
SERVNAM	= spad
SERVERN	= #"-DSERVERNAME=\"$(GATEWAY)\0<------------- Patch SERVERNAME >\"" \
	  "-DSERVICE=\"$(SERVNUM)\0<------------- Patch SERVICE >\"" \
	  "-DSERVICEFIRST=\"$(SERVNAM)\0<------------- Patch SERVICEFIRST >\"" \
	  -DNO_SERVERCODE -DIGNORE_MISSING_SERVERS
PBFORMAT= #'-DPBFORMAT="=N=%s=M=08-00-39-00-30-C2"'
#
NRSDBM	= -DNRSDBM
NRSSRC	= ../niftp
IPATH	= -I$(NRSSRC)/h
LPATH	= $(NRSSRC)/lib/gen/libgen.a
RFC931D	= -DUSE_RFC931 -DTIMEOUT_RFC931=30
RFC931L	= -lauthuser
ERRFILE	= -DERRFILE=\"/usr/adm/spad.fail\"
X29OUT	= x29out#nlp-t mail-t
X25BO	= x25b.o
X25BOS	= $(NRSSRC)/lib/x25b/x25b.o
LNS	= ln -s

#
CALLING	= #-DCALLING=\"TS29\"
#
IDLETIME= #-DIDLE_TIMEOUT=0 -DIDLE_GRACE="(2*60)"
#
ALIASES	= #-DALIAS1_PREFIX=\"uk.ac.cam.cl.\" \
	  -DALIAS2_PREFIX=\"uk.ac.cambridge.computer-lab.\" \
	  -DALIAS3_PREFIX=\"uk.ac.cam.\" \
	  -DALIAS4_PREFIX=\"uk.ac.cambridge.\" \
	  -DALIAS5_PREFIX=\"uk.ac.\" \
	  -DALIAS6_PREFIX=\"uk.\"
#
#
ADDRSP	= #-DADDR_SPACES=3 -DADDR_SPACE=\"janet\",\ \"pss\",\ \"\"
#
CMDNAME	= #-DCOMMANDNAME=\"spad\"
PROMPT	= #-DPROMPT=\"%s\ Pad\>\"
#
SECURITY = -DSECURITY
AUTHFILE = #-DAUTHFILE=\"/etc/spad-auth\"
LOCALAUTH= #-DLOCAL_AUTH
SPADAUTHO= #spadauth.o		# use this if the above is defined
#
X25IOVER= #-DX25IO_VER=6
#
TELNETP1= #-DTELNETD1=\"/usr/etc/in.Telnetd\" -DTELNETN1=\"in.telnetd\"
TELNETP2= #-DTELNETD2=\"/usr/etc/in.telnetd\" -DTELNETN2=\"in.telnetd\"
TELNETN	= #-DIP_NET=0x80e80000 -DIP_NET_MASK=0xffff0000
TELNET	= -DTELNETD $(TELNETN) $(TELNETP1) $(TELNETP2) -DNATIVE_TELNET=1
#
SERVFORM= #-DSERVICEFORM=\"spad%02d\" -DSERVICEGFORM=\"spadg%02d\"


# SYSV sets things up for various SYSV systems:
# -- BSD:
SYSV	=
SYSVL	=
# -- HPUX
# SYSV	= -DSTRCHR -DMEMCPY -DMEMSET -DNOSGTTY -DNOSYSTIME
# SYSVL	=
# -- SunOS 5.1
# SYSV	= -DMLEN -DSIG_VOIDSTAR -DSTRCHR -DMEMCPY -DMEMSET
# SYSVL	= -lsocket -lnsl
# -- ICL SYSV as used at BNR
# SYSV	= -DMLEN -DSIG_VOIDSTAR
# SYSVL	=


DESTDIR	= /usr/bin
INETDB	= /usr/etc/in.spadd
SPADD	= $(INETDB)	# or $(DESTDIR)/spadd
#
SERVICES = /etc/services
SERVERS = /etc/servers
#
INSTALL	= cp # or install or install -s or ....
#
COPTS	= # -DDEXPAND_DTE=\"000008013177\" -DDEXPAND_CHANS=\"BA\"# local bits
LOPTS	= $(SYSVL)# -lcci # For local bits
CFLAGS	= -O $(IDLETIME) $(LOGFN) $(BREAKIN) $(SERVERN) $(NRSDBM) $(IPATH) \
	  $(CALLING) $(CMDNAME) $(SECURITY) $(AUTHFILE) $(TELNET) $(ALIASES) \
	  $(TPADMSG) $(TPADOPTS) $(PROMPT) $(SYSV) $(SERVFORM) $(ADDRSP) \
	  $(X25IOVER) $(LOCALAUTH) $(COPTS) $(PBFORMAT) $(RFC931D) $(ERRFILE)
LFLAGS	= $(LPATH) $(LOPTS) $(RFC931L)
TARVER	= #v # No verification ...
LNOPT	= -s # or could be hard links !
LNDEP	= # $(DESTDIR)/spad # if hard links ...
COFLAGS	= -q
CIFLAGS	= -k	# or -r3.2 ...

DEVOBJ	= spadsun.o spaddex.o
DEVSRC	= spadsun.c spaddex.c
ASRCS	= spadauthcam.c spadauthnull.c
CSRCS	= spad.c spadmain.c spadparam.c spadserv.c spadtelnet.c spadefs.c $(DEVSRC) $(ASRCS)
COBJ	= spad.o spadmain.o spadparam.o spadserv.o spadtelnet.o spadefs.o $(DEVOBJ) $(SPADAUTHO)

SRCS	= README README.binary $(CSRCS) spad.h x25b.h Makefile spad.1l spad-auth x29out.c
ESRC	= make.patch.*
MANIFEST= MANIFEST
RCS	= $(SRCS)
BINDIST	= spad spad.1l

#- make options are:
#- all		do a standard make
#- install	install the binary & generate links
#- client-install install the binary only (no links)
#- links	install links to spadd and x25log
#- services	install lines in /etc/services (check for yp)
#- servers	install lines in /etc/servers (server only)
#- help		list the make options (i.e. this)
#- tar		make a tar file of the sources
#- bintar	make a tar file of a binary distribution (binary + man page)
#- cpio		make a cpio file of the sources
#- shar		make a shar file of the sources
#- clean	do a std "make clean"
#- lint		do a std "make lint"
#- co		check out all files
#- ci		check in all files (CIFLAGS=-r3.2)

all: spad $(X29OUT)

spad: $(COBJ)
	$(CC) -O -o spad $(COBJ) $(LFLAGS)

x29out: x29out.o $(X25BO)
	$(CC) -o x29out x29out.o $(X25BO)

$(X25BO):
	$(LNS) $(X25BOS) $@

tar:	spad.tar
spad.tar:	$(SRCS) $(ESRC) $(MANIFEST)
	tar c$(TARVER)f $@-t $(SRCS) $(ESRC) $(MANIFEST) && mv $@-t $@

bintar: spad.bin.tar
spad.bin.tar: $(BINDIST)
	tar c$(TARVER)f $@-t $(BINDIST) && mv $@-t $@

cpio:	spad.cpio
spad.cpio:	$(SRCS) $(ESRC) $(MANIFEST)
	cpio -oc$(TARVER) $(SRCS) $(ESRC) $(MANIFEST) > $@-t && mv $@-t $@

shar:	spad.shar
spad.shar:	$(SRCS) $(ESRC) $(MANIFEST)
	shar $(SRCS) $(ESRC) $(MANIFEST) > $@-t && mv $@-t $@

$(MANIFEST): $(SRCS) $(ESRC)
	echo $(SRCS) $(ESRC) $(MANIFEST) | tr ' ' '\012' > $@-t && mv $@-t $@

help:	ALWAYS
	@-egrep '^#- ' Makefile

install: $(DESTDIR)/spad links
client-install: $(DESTDIR)/spad
links: $(DESTDIR)/x25log $(SPADD)
services: ALWAYS
	@-if egrep '^spad' /etc/services > /dev/null; \
	 then : ; \
	 elif ypcat services > /tmp/.$$; \
	 then if egrep '^spad' /tmp/.$$ > /dev/null; \
	      then : ; \
	      else echo "Please put spad 1127/tcp and spadg 1128/tcp in yp under services"; \
	      fi; \
	 else echo adding entries to /etc/services; \
	      echo "spad 1127/tcp # sun remote x.29 pad" >> /etc/services; \
	      echo "spadg 1128/tcp # spad debugging" >> /etc/services; \
	 fi

servers: ALWAYS
	@-if egrep '^spad' /etc/servers > /dev/null; \
	 then : ; \
	 else echo adding entry to /etc/servers; \
	      echo "spad tcp /usr/etc/in.spadd" >> /etc/servers; \
	 fi

$(DESTDIR)/spad: spad
	$(INSTALL) spad $(DESTDIR)/spad

$(DESTDIR)/spadd: $(LNDEP)
	cd $(DESTDIR); ln $(LNOPT) spad spadd

$(DESTDIR)/x25log: $(LNDEP)
	cd $(DESTDIR); ln $(LNOPT) spad x25log

$(INETDB) dummy: $(LNDEP)
	ln $(LNOPT) $(DESTDIR)/spad $(INETDB)



co	: ALWAYS
	co -r$(RCSbase) $(COFLAGS) $(RCS)

ci	: ALWAYS
	@echo ci -r$(RCSbase) -m\"Distribution of $(RCSsymbNAME): $(RCSmessage)\"\
	 $(CIFLAGS) -N\"$(RCSsymbNAME)\" $(RCS) ... well almost ...
	@-for target in $(RCS) ; do \
	  rc=true; \
	  if [ -r "$$target" ]; \
	  then	if co -p$(RCSbase) -q "$$target" | cmp -s - "$$target"; \
		then 	rm -f "$$target"; \
		else	rcs -l$(RCSbase) "$$target"; \
			ci -r$(RCSbase) -m"Distribution of $(RCSsymbNAME): $(RCSmessage)" $(CIFLAGS) -N"$(RCSsymbNAME)" "$$target"; \
			rc=false; \
		fi; \
	  fi; \
	  if $$rc; \
	  then	eval `rlog -h $$target | awk '{ if ($$1 == "head:") print "vers=\"" $$2 "\""}'`; \
		rcs -N$(RCSsymbNAME):$$vers -sRel "$$target"; \
	  fi; \
	done
clean: ALWAYS
	rm -f *.o *.bak *.CKP *-t

lint: ALWAYS
	lint $(CSRCS)

ALWAYS:

$(COBJ): x25b.h spad.h
x29out.o: x25b.h
