#######################################################################
# Makefile
# %w% %u% %g% Computone
#
# Porting information:
# There is some attempt to making the source code modular:
# isysinc.h	Contains system-dependent includes for standard header
#		files, and other general-purpose macro definitions.
# iservcat.c	Source for iservcat: so simple it is only one file.
# iservd.c	Main for iservd. 
# iservopt.[ch]	All about parsing command-line and config-file options.
# iservlog.[ch]	All about handling log files and syslogging
# iservlok.[ch]	All about handling the lock (pid) file
# iservcon.[ch]	All about network connection/disconnection
# iservpsu.[ch] All about pseudo-tty's
# iservtel.[ch] All about decoding/encoding telnet protocols
#
# If you want to port to an O/S not included here, you will need to learn
# how they handle their pseudo-tty's, which is the most likely to change
# from one OS to another.  This determines which defines you need for the
# iservpsu.c module. Read the comments in iservpsu.c to understand the
# significance of -DPUSH_X, -DCLONUS, and so on. If your system has
# /dev/ptmx and /dev/sad/admin it is probably an svr4 CLONUS/PUSH_A.
# Many systems support the streams/clone pseudos as well as the old type.
#
# You will also probably have to juggle the header-file includes in
# isysinc.c to get a clean compile on your system.
# 
# -DCLONUS means that we open a clone pty device instead of looping
#	thru all the pty devices to find one that is unused. Some
#	unixes support both.
#
# -DPUSH_A means that the unix supports the auto push concept
# -DPUSH_M means that we must manually push modules onto the pty
# -DPUSH_X means we do not push modules onto the pty (non-streams)
#
# -DFOREVER in iservopt.c causes the timeout for temporary connections
#	to default to "forever", or "none".  If you want the default
#	(when no -t option is used) to be 60 seconds, omit -DFOREVER .
#
# -DMAKE_NODE causes iservd to make device nodes identical to the
#	pty node rather than creating a link to the pty device. This
#	will sometimes circumvent the ttyname() problem. You can almost
#	always circumvent said problem by reordering your dev directoy.
#	Not a procedure for the inexperienced - contact engineering.
#
# -DGETPTY is for irix as they want you to use their library routine.
#
# -DSIGCHLD_EXIT causes the parent iservd to exit if the child dies
#	for some reason. This is useful if you are running iservd from
#	inittab, since after the parent exits, init will restart him.
#######################################################################


CFILES =	iservd.c iservcon.c iservlog.c iservlok.c \
		iservopt.c iservpsu.c iservtel.c iservcat.c

HFILES =        iservcon.h iservlog.h iservlok.h iservopt.h \
		iservpsu.h iservtel.h isysinc.h


all:
	@echo "syntax:\tmake [MIPS | AIX32 | ISC | SCO | SUN | SVR4 | HP | M88 | DGUX | NCR | SGI | IRIX]"
	@echo "\tWill create iservd and iservcat"
	@echo "\tmake help (for more information)"

help:
	@echo "Type	Tested on:"
	@echo "----	----------"
	@echo "MIPS:	MIPS RS3330 running 4.52B2"
	@echo "SUN:	SUN 4 running SunOS 4.1.2"
	@echo "HP:	HP 9000/827 running HP-UX A.09.04 B"
	@echo "SVR4:	386/486 running UNIXWARE 4.2 1.1 "
	@echo "AIX32:	RS6000 running AIX 3.2"
	@echo "SCO:	i486 running SCO UNIX 3.2 r 4.0"
	@echo "M88:	Motorola 88K running R40V4.2 m88k mc88110"
	@echo "ISC:	i486 running ISC UNIX 3.2 r 4.1"
	@echo "DGUX:	dgux running on aviion system"
	@echo "NCR:	ncr/att running on intel system"
	@echo "SGI:	silicon graphics system"
	@echo "IRIX:	sgi/tandem irix sytems 5.3 and 6.2

clean:
	@rm iservd iservd.o iservcon.o iservlog.o iservlok.o \
		iservopt.o iservpsu.o iservtel.o iservcat

tags:	FRC
	ctags $(CFILES)

FRC:


# clone device is only on series 800 not 700

HPC:	$(CFILES) $(HFILES)
	cc -c -DHP -DHPC -DRELEASE=\"`date +%y%m%d`\"	iservd.c
	cc -c -DHP -DFOREVER				iservopt.c
	cc -c -DHP					iservlok.c
	cc -c -DHP -DSYSLOG				iservlog.c
	cc -c -DHP -DCLONUS -DPUSH_X			iservpsu.c
	cc -c -DHP					iservtel.c
	cc -c -DHP					iservcon.c
	cc -o iservd.hpc iservd.o iservlok.o iservopt.o \
		iservlog.o iservpsu.o iservcon.o iservtel.o
	cc -o iservcat.hpc -DHP iservcat.c


HP:	$(CFILES) $(HFILES)
	cc -c -DHP -DRELEASE=\"`date +%y%m%d`\"		iservd.c
	cc -c -DHP -DFOREVER				iservopt.c
	cc -c -DHP					iservlok.c
	cc -c -DHP -DSYSLOG				iservlog.c
	cc -c -DHP -DPUSH_X				iservpsu.c
	cc -c -DHP					iservtel.c
	cc -c -DHP					iservcon.c
	cc -o iservd.hp iservd.o iservlok.o iservopt.o \
		iservlog.o iservpsu.o iservcon.o iservtel.o
	cc -o iservcat.hp -DHP iservcat.c


NCR:	$(CFILES) $(HFILES)
	cc -c -DSVR4 -DRELEASE=\"`date +%y%m%d`\"	iservd.c
	cc -c -DSVR4 -DFOREVER				iservopt.c
	cc -c -DSVR4					iservlok.c
	cc -c -DSVR4 -DSYSLOG				iservlog.c
	cc -c -DSVR4 -DCLONUS -DIS_GRANT -DPUSH_A -DMAKE_NODE iservpsu.c
	cc -c -DSVR4					iservtel.c
	cc -c -DSVR4					iservcon.c
	cc -o iservd.ncr iservd.o iservlok.o iservopt.o \
		iservlog.o iservpsu.o iservcon.o iservtel.o
	cc -o iservcat.ncr -DSVR4 iservcat.c


MIPS:	$(CFILES) $(HFILES)
	cc -c -DMIPS -DRELEASE=\"`date +%y%m%d`\"	iservd.c
	cc -c -DMIPS -DFOREVER				iservopt.c
	cc -c -DMIPS					iservlok.c
	cc -c -DMIPS -DSYSLOG				iservlog.c
#	cc -c -DMIPS -DPUSH_X				iservpsu.c
	cc -c -DMIPS -DPUSH_X -DMAKE_NODE		iservpsu.c
	cc -c -DMIPS					iservtel.c
#	cc -c -DMIPS					iservcon.c
	cc -c -DMIPS -DSIGCHLD_EXIT			iservcon.c
	cc -o iservd.mip iservd.o iservlok.o iservopt.o \
		iservlog.o iservpsu.o iservcon.o iservtel.o -lbsd
	cc -o iservcat.mip -DMIPS iservcat.c -lbsd


SUN:	$(CFILES) $(HFILES)
	cc -c -DSUN -DRELEASE=\"`date +%y%m%d`\"	iservd.c
	cc -c -DSUN -DFOREVER				iservopt.c
	cc -c -DSUN					iservlok.c
	cc -c -DSUN -DSYSLOG				iservlog.c
	cc -c -DSUN -DPUSH_X				iservpsu.c
	cc -c -DSUN					iservtel.c
	cc -c -DSUN					iservcon.c
	cc -o iservd.sun iservd.o iservlok.o iservopt.o \
		iservlog.o iservpsu.o iservcon.o iservtel.o -ldl
	cc -o iservcat.sun -DSUN iservcat.c -ldl


SVR4:	$(CFILES) $(HFILES)
	cc -c -DSVR4 -DRELEASE=\"`date +%y%m%d`\"	iservd.c
	cc -c -DSVR4 -DFOREVER				iservopt.c
	cc -c -DSVR4					iservlok.c
	cc -c -DSVR4 -DSYSLOG				iservlog.c
	cc -c -DSVR4 -DCLONUS -DIS_GRANT -DPUSH_A	iservpsu.c
	cc -c -DSVR4					iservtel.c
	cc -c -DSVR4					iservcon.c
	cc -o iservd.sv4 iservd.o iservlok.o iservopt.o \
		iservlog.o iservpsu.o iservcon.o iservtel.o -lsocket -lnsl
	cc -o iservcat.sv4 -DSVR4 iservcat.c -lsocket -lnsl


# this has been compile on aix 4.1 also

AIX32:	$(CFILES) $(HFILES)
	cc -c -DAIX32 -DRELEASE=\"`date +%y%m%d`\"	iservd.c
	cc -c -DAIX32 -DFOREVER				iservopt.c
	cc -c -DAIX32					iservlok.c
	cc -c -DAIX32 -DSYSLOG				iservlog.c
	cc -c -DAIX32 -DCLONUS -DPUSH_X			iservpsu.c
	cc -c -DAIX32					iservtel.c
	cc -c -DAIX32					iservcon.c
	cc -o iservd.aix iservd.o iservlok.o iservopt.o \
		iservlog.o iservpsu.o iservcon.o iservtel.o
	cc -o iservcat.aix -DAIX32 iservcat.c


# According to SCO documentation, should have supported clone
# open and autopush like ISC and others. However their implementation
# of clone opens has limitations that prevent many interactive apps
# (like kermit) from working properly. We can't seem to open more than
# 16 using the clone device even after rebuilding the kernel.

SCO:	$(CFILES) $(HFILES)
	cc -c -DIS_SCO -DRELEASE=\"`date +%y%m%d`\"	iservd.c
	cc -c -DIS_SCO -DFOREVER			iservopt.c
	cc -c -DIS_SCO					iservlok.c
	cc -c -DIS_SCO -DSYSLOG				iservlog.c
#	cc -c -DIS_SCO -DCLONUS -DIS_GRANT -DPUSH_M	iservpsu.c
	cc -c -DIS_SCO -DMAKE_NODE -DPUSH_X		iservpsu.c
	cc -c -DIS_SCO					iservtel.c
	cc -c -DIS_SCO					iservcon.c
	cc -o iservd.sco iservd.o iservlok.o iservopt.o \
		iservlog.o iservpsu.o iservcon.o iservtel.o -lsocket -lpt
	cc -o iservcat.sco -DIS_SCO iservcat.c -lsocket


M88:    $(CFILES) $(HFILES)
	cc -c -DSVR4 -DRELEASE=\"`date +%y%m%d`\"	iservd.c
	cc -c -DSVR4 -DFOREVER				iservopt.c
	cc -c -DSVR4					iservlok.c
	cc -c -DSVR4 -DSYSLOG				iservlog.c
	cc -c -DSVR4 -DCLONUS -DIS_GRANT -DPUSH_A	iservpsu.c
	cc -c -DSVR4					iservtel.c
	cc -c -DSVR4					iservcon.c
	cc -o iservd.m88 iservd.o iservlok.o iservopt.o \
		iservlog.o iservpsu.o iservcon.o iservtel.o -lsocket -lnsl
	cc -o iservcat.m88 -DSVR4 iservcat.c -lsocket -lnsl


ISC:	$(CFILES) $(HFILES)
	cc -c -DIS_ISC -Xp -DRELEASE=\"`date +%y%m%d`\"	iservd.c
	cc -c -DIS_ISC -Xp -DFOREVER			iservopt.c
	cc -c -DIS_ISC -Xp				iservlok.c
	cc -c -DIS_ISC -Xp -DSYSLOG			iservlog.c
	cc -c -DIS_ISC -Xp -DCLONUS -DIS_GRANT -DPUSH_M iservpsu.c
	cc -c -DIS_ISC -Xp				iservtel.c
	cc -c -DIS_ISC -Xp				iservcon.c
	cc -o iservd.isc iservd.o iservlok.o iservopt.o \
		iservlog.o iservpsu.o iservcon.o iservtel.o -Xp -linet -lpt
	cc -o iservcat.isc -DIS_ISC iservcat.c -Xp -linet -lpt

# this is pretty old now, it came from one of our customers
# this did not work on the irix 5.3 and 6.2 that i tried, see below

SGI:    $(CFILES) $(HFILES)
	cc $(CFLAGS) -c -DSVR4 -DSGI -DRELEASE=\"`date +%y%m%d`\" iservd.c
	cc $(CFLAGS) -c -DSVR4 -DSGI -DFOREVER		iservopt.c
	cc $(CFLAGS) -c -DSVR4 -DSGI			iservlok.c
	cc $(CFLAGS) -c -DSVR4 -DSGI -DSYSLOG		iservlog.c
	cc $(CFLAGS) -c -DSVR4 -DSGI -DCLONUS -DPUSH_A	iservpsu.c
	cc $(CFLAGS) -c -DSVR4 -DSGI			iservtel.c
	cc $(CFLAGS) -c -DSVR4 -DSGI			iservcon.c
	cc $(CFLAGS) -o iservd.sgi iservd.o iservlok.o iservopt.o \
		iservlog.o iservpsu.o iservcon.o iservtel.o
	cc $(CFLAGS) -o iservcat.sgi -DSVR4 iservcat.c -lsocket -lnsl

# this was compiled on irix 6.2 and irix 5.3
# irix uses the getpty routine to find psuedo ttys

IRIX:    $(CFILES) $(HFILES)
	cc $(CFLAGS) -c -DSVR4 -DRELEASE=\"`date +%y%m%d`\" iservd.c
	cc $(CFLAGS) -c -DSVR4 -DFOREVER		iservopt.c
	cc $(CFLAGS) -c -DSVR4				iservlok.c
	cc $(CFLAGS) -c -DSVR4 -DSYSLOG			iservlog.c
	cc $(CFLAGS) -c -DSVR4 -DGETPTY -DMAKE_NODE -DPUSH_X iservpsu.c
	cc $(CFLAGS) -c -DSVR4				iservtel.c
	cc $(CFLAGS) -c -DSVR4				iservcon.c
	cc $(CFLAGS) -o iservd.sgi iservd.o iservlok.o iservopt.o \
		iservlog.o iservpsu.o iservcon.o iservtel.o
	cc $(CFLAGS) -o iservcat.sgi -DSVR4 iservcat.c -lnsl

# this was built on two differnet aviion machines

DGUX:	$(CFILES) $(HFILES)
	cc -c -DDGUX					iservd.c
	cc -c -DDGUX -DFOREVER				iservopt.c
	cc -c -DDGUX					iservlok.c
	cc -c -DDGUX -DSYSLOG				iservlog.c
#	cc -c -DDGUX -DCLONUS -DPUSH_A			iservpsu.c
	cc -c -DDGUX -DCLONUS -DIS_GRANT -DPUSH_A -DMAKE_NODE iservpsu.c
	cc -c -DDGUX					iservtel.c
	cc -c -DDGUX					iservcon.c
	cc -o iservd.dg iservd.o iservlok.o iservopt.o \
		iservlog.o iservpsu.o iservcon.o iservtel.o -lnsl
	cc -o iservcat.dg -DDGUX iservcat.c -lnsl


LINUX:	$(CFILES) $(HFILES)
	cc -c -DLINUX -DRELEASE=\"`date +%y%m%d`\"	iservd.c
	cc -c -DLINUX -DFOREVER				iservopt.c
	cc -c -DLINUX -DUSE_FLOCK			iservlok.c
	cc -c -DLINUX -DSYSLOG				iservlog.c
	cc -c -DLINUX -DPUSH_X				iservpsu.c
	cc -c -DLINUX					iservtel.c
	cc -c -DLINUX					iservcon.c
	cc -o iservd.lin iservd.o iservlok.o iservopt.o \
		iservlog.o iservpsu.o iservcon.o iservtel.o -lbsd
	cc -o iservcat.lin -DHP iservcat.c -lbsd

