#
#       Makefile for KA9Q TCP/IP package for PC clones with Turbo C
#       For WG7J's JNOS v1.08
#
# 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
#
.autodepend
# for all Borland (tc and bcc) compilers
TMPNAM=tmpnam

#
# CFLAGS for typical IBM-PC installation
#
#for Turbo C
#PATH=\tc
#CC=$(PATH)\tcc +bcc.cfg
#
#for Borland C
PATH=\borlandc
CC=$(PATH)\bin\bcc +bcc.cfg
#
ASM=$(PATH)\bin\tasm
LIB=$(PATH)\bin\tlib
RM=del
PACK=echo
AR=zip

#NOTE: For Turbo C2.0, see ALSO the notes in the README.NOW file !!!
#Also modify the .c.obj: rule line below !!!!
#for 8086 class, TURBO C 2.0
#CFLAGS= -a -d -f- -w-par -w-aus -w-use -G -O -Z -DMSDOS
#AFLAGS=-mx -t -DMEMMOD=LARGE

#for 186 and up, TURBO C 2.0
#CFLAGS= -1 -a -d -f- -w-par -w-aus -w-use -G -O -Z -DMSDOS
#AFLAGS= -j.186 -mx -t -DMEMMOD=LARGE

#for 8086 class, BORLAND C++ 2.0
CFLAGS= -a -d -f- -Ff=1023 -w-ias -w-par -w-aus -w-use -G- -O -Z- -DMSDOS
AFLAGS=-mx -t -DMEMMOD=LARGE

#for 186 and up, BORLAND C++ 2.0
#CFLAGS= -1 -a -d -f- -Ff=1023 -w-ias -w-par -w-aus -w-use -G- -O -Z- -DMSDOS
#AFLAGS= -j.186 -mx -t -DMEMMOD=LARGE

#for 8086 class, BORLAND C++ 3.x
#CFLAGS= -a -d -f- -Ff=1023 -w-ias -w-par -w-aus -w-use -O1 -Z  -DMSDOS
#AFLAGS=-mx -t -DMEMMOD=LARGE

#for 186 and up, BORLAND C++ 3.x
#CFLAGS= -1 -a -d -f- -Ff=1023 -w-ias -w-par -w-aus -w-use -O1 -Z  -DMSDOS
#AFLAGS= -j.186 -mx -t -DMEMMOD=LARGE

#for 386/486, BORLAND C++ 3.x
# 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- -DMSDOS -I. -DCPU386 -3 -O1 -Z -w-par -w-aus -w-use
#AFLAGS=-mx -t -j.386

Tdebug=  -y -v
MODEL=-ml

all:    bcc.cfg nos.exe
	$(PACK) nos.exe
#       $(RM) nos.old

#make the configuration file for the compiler
bcc.cfg: makefile
  copy &&|
$(MODEL) $(CFLAGS)
-I$(PATH)\INCLUDE
-L$(PATH)\LIB
| bcc.cfg

# Define PC-specific include file
hardware.h: pc.h
	copy pc.h hardware.h

#for Turbo C 2.0
#.c.obj:
#    $(CC) -c $<

#for BC++ 2 & 3
.c.obj:
    $(CC) -c {$< }

.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 -zC_TEXT $*.c
!else
mkname.obj: mkname.c global.h
	$(CC) -c $*.c
!endif

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 timed.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

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

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

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 \
	gracilis.obj twin_at.obj twin_dr.obj twinvec.obj stktrace.obj \
        xmodem.obj bpq.obj bpqcmd.obj

#XSPAWN= XSPAWN.OBJ XSPAWNVP.OBJ XSPWNVPE.OBJ XSPAWNVE.OBJ

mkdep.exe: mkdep.c
	$(CC) mkdep.c
	$(RM) mkdep.obj

makelist.exe:   makelist.obj getopt.obj
	$(CC) makelist.obj getopt.obj

nos.exe: main.obj config.obj session.obj clients.lib servers.lib internet.lib \
    net.lib netrom.lib ax25.lib pc.lib dump.lib ppp.lib bootp.lib
#xspawn.lib
    $(CC) -c version.c
    $(CC) -M -f- -enos main.obj config.obj version.obj session.obj *.lib

xref.out: main.obj config.obj version.obj session.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 *.lib \usr\tc\lib\cl.lib

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

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

pc.lib: $(PCOBJS) pc.tl
	$(RM) pc.lib
	$(LIB) /c pc.lib @pc.tl

#xspawn.lib: $(XSPAWN) xspawn.tl
#        $(RM) xspawn.lib
#        $(LIB) /c xspawn.lib @xspawn.tl

zip:    nul
    $(AR) -z -u nossrc.zip makefile history readme.now mboxcmds.txt cc*.bat \
		update.bat *.asm *.c *.h *.tl xspawn.zip nos.cfg < comment.c
#    $(AR) -u nosobj.zip *.obj

dist:   nul
    arj a -je jnos107 nos.exe nos.cfg nos.map readme.now

