#
# Makefile for Tampa Network Operating System (TNOS) release 1.10
#

# Executable command names
# Borland C compiler
CC=bcc
# Turbo C compiler
#CC=tcc
ASM=tasm
LIB=tlib
RM=del
PACK=c:\misc\pklite\pklite
AR=zip
MKDIR=md


#
# switches:
#	define the ones you want in the CFLAGS definition...
#
#	TRACE		- turn on tracing/debugging code
#
#	AMIGA		- include Amiga specific code
#	MSDOS		- include Messy-Dos specific code
#	UNIX		- Use UNIX file format conventions
#	CPM		- Use CP/M file format conventions
#
# extra define for turbo C 2.0 and turbo C++
TMPNAM=tmpnam

# Specific compiler flags - uncomment only ONE set
#
# for Borland C++ 3.x
#for 8086 class
#CFLAGS= -a -d -f- -Ff=127 -w-ias -w-par -w-aus -w-use -O1 -Z -DMSDOS
#AFLAGS=-mx -t -DMEMMOD=LARGE

#for 186 and up
#CFLAGS= -1 -a -d -f- -Ff=127 -w-par -w-aus -w-use -I. -O1 -Z -DMSDOS -DCPU286
#AFLAGS= -j.186 -mx -t -DMEMMOD=LARGE

#for 286 and up
CFLAGS= -2 -a -d -f- -Ff=127 -w-par -w-aus -w-use -O1 -DMSDOS
AFLAGS= -j.286 -mx -t -DMEMMOD=LARGE

#for 386/486, BORLAND C++ 3.1
# Use -Ff=x only if needed to avoid DGROUP link error and then
# make X only as small as needed - true for all above compile versions
#CFLAGS= -a -d -f- -Ff=127 -DMSDOS -I. -DCPU386 -3 -O1 -Z -w-par -w-aus -w-use
#AFLAGS=-mx -t -j.386 -DMEMMOD=LARGE


MODEL=-ml


# This is for use in testing.  Don't worry about it unless you want to be
# able to build custom versions.
NOS=tnos

# This defines the root directory that you want TNOS installed into.
NOSDIR=c:\nos

#Tdebug=  -y -v
Tdebug=


all:    ctlcheck.exe buildctl.exe mkvers.exe deldep.exe $(NOS).exe
	mkvers $(NOSDIR)
	$(PACK) $(NOS).exe

doeverything: clean dep all install

mkvers.exe: mkvers.c version.c config.h
	$(CC) mkvers.c

ctlcheck.exe: ctlcheck.c

buildctl.exe: buildctl.c


# Define PC-specific include file
hardware.h: pc.h
	copy pc.h hardware.h

.c.obj:
    $(CC) -c $(MODEL) $(Tdebug) $(CFLAGS) {$< }

.cpp.obj:
    $(CC) -c $(MODEL) $(CFLAGS) {$< }

.asm.obj:
	$(ASM) $(AFLAGS) $<;

sccvec.obj: sccvec.asm
	$(ASM) $(AFLAGS) sccvec.asm;

xspawn.obj: xspawn.asm
        tasm xspawn.asm /mx /dLCODE /dLDATA

!if ($(TMPNAM) == tmpnam)
mkname.obj: mkname.c global.h
	$(CC) -c $(MODEL) $(CFLAGS) -zC_TEXT $*.c
!else
mkname.obj: mkname.c global.h
	$(CC) -c $(MODEL) $(CFLAGS) $*.c
!endif

REQUIRED= main.obj color.obj config.obj version.obj session.obj tnosdos.obj

LIBS=	clients.lib servers.lib bootp.lib internet.lib ax25.lib netrom.lib \
	ppp.lib vms.lib net.lib dump.lib gps.lib misc.lib pc.lib xspawn.lib

CLIENTS= telnet.obj ftpcli.obj finger.obj smtpcli.obj hop.obj \
        tip.obj nntpcli.obj popcli.obj dialer.obj rlogin.obj callcli.obj \
        mailcli.obj pop2cli.obj pop3cli.obj rdate.obj

SERVERS= ttylink.obj ftpserv.obj smisc.obj smtpserv.obj convers.obj \
        nntpserv.obj fingerd.obj mboxcmd.obj mailbox.obj mailbox2.obj \
	mailfor.obj bmutil.obj popserv.obj forward.obj tipmail.obj \
	mailutil.obj expire.obj calldbd.obj buckbook.obj pop2serv.obj \
	pop3serv.obj tutor.obj reqsvr.obj sam.obj samlib.obj delegate.obj

BOOTP=	bootp.obj bootpd.obj bootpcmd.obj bootpdip.obj

INTERNET= tcpcmd.obj tcpuser.obj tcptimer.obj tcpout.obj tcpin.obj \
	tcpsubr.obj tcphdr.obj udpcmd.obj udp.obj udphdr.obj \
	domain.obj domhdr.obj ripcmd.obj rip.obj \
	ipcmd.obj ip.obj iproute.obj iphdr.obj \
	icmpcmd.obj icmp.obj icmpmsg.obj icmphdr.obj \
	arpcmd.obj arp.obj arphdr.obj rarp.obj \
	netuser.obj rspf.obj rspfcmd.obj rspfhdr.obj

AX25=   ax25cmd.obj ax25user.obj ax25.obj axheard.obj ax25aar.obj \
	lapbtime.obj lapb.obj kiss.obj ax25subr.obj ax25hdr.obj ax25mail.obj

NETROM=	nrcmd.obj nr4user.obj nr4timer.obj nr4.obj nr4subr.obj nr4hdr.obj \
	nr3.obj nrs.obj nrhdr.obj nr4mail.obj

PPP=	asy.obj ppp.obj pppcmd.obj pppfsm.obj ppplcp.obj \
	ppppap.obj pppipcp.obj pppdump.obj \
	slhc.obj slhcdump.obj slip.obj

VMS=	vmsmgr.obj dmsmgr.obj xmsmgr.obj

NET=	ftpsubr.obj sockcmd.obj sockuser.obj socket.obj sockutil.obj  \
	iface.obj timer.obj ttydriv.obj cmdparse.obj \
	mbuf.obj misc.obj pathname.obj audit.obj files.obj  \
	kernel.obj ksubr.obj alloc.obj getopt.obj wildmat.obj lzw.obj \
	getline.obj  devparam.obj  md5.obj view.obj pool.obj

DUMP= 	trace.obj enetdump.obj arcdump.obj rspfdump.obj  \
	kissdump.obj ax25dump.obj arpdump.obj nrdump.obj rwhodump.obj \
	ipdump.obj icmpdump.obj udpdump.obj tcpdump.obj ripdump.obj

GPS=	position.obj gps.obj

MISC=	at.obj xmodem.obj help.obj ssaver.obj merge.obj sort.obj \
	search.obj color.obj translat.obj

PCOBJS= pc.obj dirutil.obj eccmd.obj ec.obj pktdrvr.obj enet.obj hapn.obj \
	hs.obj pc100.obj eagle.obj drsi.obj drsivec.obj pi.obj mkname.obj \
        z8530.obj i8250.obj ecvec.obj pkvec.obj asyvec.obj hsvec.obj \
	pc100vec.obj eaglevec.obj hapnvec.obj command.obj pivec.obj \
        scc.obj sccvec.obj pcgen.obj sw.obj stopwatch.obj arcnet.obj at.obj \
	stktrace.obj help.obj ssaver.obj xmodem.obj merge.obj sort.obj \
	search.obj

XSPAWN= XSPAWN.OBJ XSPAWNVP.OBJ XSPWNVPE.OBJ XSPAWNVE.OBJ

mkdep.exe: mkdep.c
	$(CC) mkdep.c c:\borlandc\lib\wildargs.obj
	$(RM) mkdep.obj

deldep.exe: deldep.c
	$(CC) deldep.c c:\borlandc\lib\wildargs.obj
	$(RM) deldep.obj

makelist.exe:	makelist.obj getopt.obj
	$(CC) $(MODEL) makelist.obj getopt.obj

tnos.exe: $(REQUIRED) $(LIBS)
    $(CC) -c $(MODEL) $(CFLAGS) version.c
    $(CC) $(MODEL) -ls -M -f- $(Tdebug) -e$(NOS) $(REQUIRED) *.lib

xref.out: main.obj config.obj version.obj session.obj tnos.obj clients.lib servers.lib internet.lib \
	net.lib netrom.lib ax25.lib pc.lib dump.lib ppp.lib
        objxref /Oxref.out \tc\lib\c0l.obj main.obj config.obj version.obj session.obj tnos.obj *.lib \usr\tc\lib\cl.lib

clean:
	$(RM) *.obj
	$(RM) *.lib
	$(RM) hardware.h
	$(RM) depend
	touch depend


clients.lib: $(CLIENTS) clients.tl
	$(RM) clients.lib
	$(LIB) /c clients.lib @clients.tl

servers.lib: $(SERVERS) servers.tl
	$(RM) servers.lib
	$(LIB) /c servers.lib @servers.tl

vms.lib: $(VMS) vms.tl
	$(RM) vms.lib
	$(LIB) /c vms.lib @vms.tl

ppp.lib: $(PPP) ppp.tl
	$(RM) ppp.lib
	$(LIB) /c ppp.lib @ppp.tl

bootp.lib: $(BOOTP) bootp.tl
	$(RM) bootp.lib
	$(LIB) /c bootp.lib @bootp.tl

internet.lib: $(INTERNET) internet.tl
	$(RM) internet.lib
	$(LIB) /c internet.lib @internet.tl

ax25.lib: $(AX25) ax25.tl
	$(RM) ax25.lib
	$(LIB) /c ax25.lib @ax25.tl

netrom.lib: $(NETROM) netrom.tl
	$(RM) netrom.lib
	$(LIB) /c netrom.lib @netrom.tl

net.lib: $(NET) net.tl
	$(RM) net.lib
	$(LIB) /c net.lib @net.tl

dump.lib: $(DUMP) dump.tl
	$(RM) dump.lib
	$(LIB) /c dump.lib @dump.tl

gps.lib: $(GPS) gps.tl
	$(RM) gps.lib
	$(LIB) /c gps.lib @gps.tl

pc.lib: $(PCOBJS) pc.tl
	$(RM) pc.lib
	$(LIB) /c pc.lib @pc.tl

misc.lib: $(MISC) misc.tl
	$(RM) misc.lib
	$(LIB) /c misc.lib @misc.tl

xspawn.lib: $(XSPAWN) xspawn.tl
        $(RM) xspawn.lib
        $(LIB) /c xspawn.lib @xspawn.tl


depend dep: hardware.h mkdep.exe
	mkdep *.c *.cpp >depend

install:
	$(MKDIR) $(NOSDIR)
	$(MKDIR) $(NOSDIR)\spool
	$(MKDIR) $(NOSDIR)\public
	$(MKDIR) $(NOSDIR)\finger
	$(MKDIR) $(NOSDIR)\spool\mail
	$(MKDIR) $(NOSDIR)\spool\mail\control
	$(MKDIR) $(NOSDIR)\spool\mail\users
	$(MKDIR) $(NOSDIR)\spool\mqueue
	$(MKDIR) $(NOSDIR)\spool\help
	$(MKDIR) $(NOSDIR)\spool\info
	$(MKDIR) $(NOSDIR)\spool\news
	$(MKDIR) $(NOSDIR)\spool\signatur
	$(MKDIR) $(NOSDIR)\spool\cmds
	copy $(NOS).exe $(NOSDIR)
	copy ctlcheck.exe $(NOSDIR)
	copy buildctl.exe $(NOSDIR)



zip:    nul
    $(AR) -u nossrc.zip makefile history readme.now mboxcmds.txt cc*.bat \
                *.asm *.c *.h *.tl
    $(AR) -u nosobj.zip *.obj


!include depend

