#
#	Makefile for KA9Q TCP/IP package for Commodore-Amiga with Lattice C
#
# switches:
#	define the ones you want in the CFLAGS definition...
#
#	AMIGA		- include Amiga specific code


MCH=amiga

#
# CFLAGS for Amiga installation
#
INC=-iamiga
DEBUG=-d1

# Flags to be passed to pass one of the C compiler
#       note: I know that Lattice C 5.04 defines __STDC__ implicitly.
#	This is real important
CFLAGS1=$(DEBUG) -ctf $(INC)

# Flags to be passed to pass two of the C compiler
CFLAGS2=-v -ma

all:	before net after

before:
	@echo "Start make at " NOLINE
	@date

after:
	@echo "Done make at " NOLINE
	@date
		
.c.o:
	LC:LC1 -. $(CFLAGS1) -oQUAD:$>.Q $<
	LC:GO  -. QUAD:$>.Q
	LC:LC2 -. $(CFLAGS2) -o$@  QUAD:$>.Q 

.asm.o:
	LC:ASM -. -o$@ $<

CLIENTS= telnet.o ftpcli.o finger.o smtpcli.o hop.o
CLIENTSSRC= telnet.c ftpcli.c finger.c smtpcli.c hop.c

SERVERS=  ax_mbx.o ttylink.o ftpserv.o smisc.o smtpserv.o fingerd.o
SERVERSSRC=  ax_mbx.c ttylink.c ftpserv.c smisc.c smtpserv.c fingerd.c

INTERNET1=tcpcmd.o tcpuser.o tcptimer.o tcpout.o tcpin.o \
	tcpsubr.o tcphdr.o \
	udpcmd.o udp.o udphdr.o \
	domain.o domhdr.o \
	ripcmd.o rip.o

INTERNET1SRC=tcpcmd.c tcpuser.c tcptimer.c tcpout.c tcpin.c \
	tcpsubr.c tcphdr.c \
	udpcmd.c udp.c udphdr.c \
	domain.c domhdr.c \
	ripcmd.c rip.c

INTERNET2=ipcmd.o ip.o iproute.o iphdr.o \
	icmpcmd.o icmp.o icmpmsg.o icmphdr.o \
	arpcmd.o arp.o arphdr.o \
	enet.o \
	netuser.o

INTERNET2SRC=ipcmd.c ip.c iproute.c iphdr.c \
	icmpcmd.c icmp.c icmpmsg.c icmphdr.c \
	arpcmd.c arp.c arphdr.c \
	enet.c \
	netuser.c

AX25=	ax25cmd.o ax25user.o ax25.o axlink.o bmutil.o lapbtime.o \
	lapb.o kiss.o ax25subr.o ax25hdr.o

AX25SRC= ax25cmd.c ax25user.c ax25.c axlink.c bmutil.c lapbtime.c \
	lapb.c kiss.c ax25subr.c ax25hdr.c

NETROM=	nrcmd.o nr4user.o nr4timer.o nr4.o nr4subr.o nr4hdr.o \
	nr3.o nrs.o nrhdr.o

NETROMSRC= nrcmd.c nr4user.c nr4timer.c nr4.c nr4subr.c nr4hdr.c \
	nr3.c nrs.c nrhdr.c

NET=	ftpsubr.o sockcmd.o sockuser.o socket.o sockutil.o \
	slip.o iface.o timer.o ttydriv.o cmdparse.o mbuf.o \
	misc.o audit.o files.o \
	kernel.o getopt.o wildmat.o

NETSRC=	ftpsubr.c sockcmd.c sockuser.c socket.c sockutil.c \
	slip.c iface.c timer.c ttydriv.c cmdparse.c mbuf.c \
	misc.c audit.c files.c \
	kernel.c getopt.c wildmat.c

DUMP= 	trace.o enetdump.o \
	kissdump.o ax25dump.o arpdump.o nrdump.o \
	ipdump.o icmpdump.o udpdump.o tcpdump.o ripdump.o

DUMPSRC= trace.c enetdump.c \
	kissdump.c ax25dump.c arpdump.c nrdump.c \
	ipdump.c icmpdump.c udpdump.c tcpdump.c ripdump.c

HDRS1= arp.h ax25.h ax_mbx.h bm.h cmdparse.h commands.h config.h daemon.h \
	dirutil.h domain.h enet.h files.h ftp.h ftpcli.h ftpserv.h global.h \
	icmp.h iface.h pktdrvr.h

HDRS2= internet.h ip.h kiss.h lapb.h mbuf.h netrom.h netuser.h nr4.h nrs.h \
	proc.h remote.h rip.h session.h slip.h smtp.h socket.h tcp.h telnet.h \
	timer.h trace.h tty.h udp.h usock.h

AMIGAOBJS= $(MCH)/amiga.o $(MCH)/ksubr.o $(MCH)/dirutil.o \
	$(MCH)/pathname.o $(MCH)/amiga_gen.o asy.o \
	$(MCH)/serdev.o $(MCH)/alloc.o $(MCH)/windows.o
#	$(MCH)/vsprintf.o $(MCH)/vfprintf.o

AMIGASRC= $(MCH)/amiga.c $(MCH)/ksubr.c $(MCH)/dirutil.c \
	$(MCH)/pathname.c $(MCH)/amiga_gen.asm asy.c \
	$(MCH)/serdev.c $(MCH)/alloc.c $(MCH)/windows.c \
	$(MCH)/vsprintf.c $(MCH)/vfprintf.c

AMIGAHDRS= $(MCH)/amiga.h $(MCH)/windows.h $(MCH)/stat.h $(MCH)/asy.h \
	$(MCH)/config.h $(MCH)/serdev.h

AMIGAMISCSRC=$(MCH)/mkdep.c $(MCH)/net.with $(MCH)/netc.with \
	$(MCH)/makefilelist.rexx $(MCH)/xargs.rexx $(MCH)/makefile.base \
	Makefile $(MCH)/makefile.depend

MAINSRC= main.c config.c version.c session.c

$(MCH)/mkdep:	$(MCH)/mkdep.c
	cd $(MCH)
	lc -L mkdep.c
	cd /

net: main.o config.o  version.o session.o clients.lib servers.lib \
    internet.lib net.lib netrom.lib ax25.lib mchdep.lib dump.lib $(MCH)/net.with
	BLINK TO net WITH $(MCH)/net.with NODEBUG

net.debug: main.o config.o  version.o session.o clients.lib servers.lib \
    internet.lib net.lib netrom.lib ax25.lib mchdep.lib dump.lib $(MCH)/net.with
	BLINK TO net.debug WITH $(MCH)/net.with ADDSYM

clients.lib: $(CLIENTS)
	oml clients.lib r $?

servers.lib: $(SERVERS)
	oml servers.lib r $?

internet.lib: $(INTERNET2) $(INTERNET1)
	echo >t:internet.lib.oml "$(INTERNET1)"
	echo >>t:internet.lib.oml "$(INTERNET2)"
	oml internet.lib r @t:internet.lib.oml
	delete t:internet.lib.oml

ax25.lib: $(AX25)
	oml ax25.lib r $?

netrom.lib: $(NETROM)
	oml netrom.lib r $?

net.lib: $(NET)
	oml net.lib r $?

dump.lib: $(DUMP)
	oml dump.lib r $?

mchdep.lib: $(AMIGAOBJS)
	oml mchdep.lib r $?

#
#  kernel.c gets special don't defer stack clean up option
#
kernel.o: kernel.c
	LC:LC1 $(CFLAGS1) -. -oQUAD:kernel.o.Q kernel.c
	LC:LC2 -mc $(CFLAGS2) -. -okernel.o QUAD:kernel.o.Q 

clean:
	-protect hardware.h add wd
	-delete hardware.h
	-delete \#?.lib
	-delete \#?.o
	-delete \#?.lnk

hardware.h: $(MCH)/$(MCH).h
	-protect hardware.h rwd
	copy $(MCH)/$(MCH).h hardware.h
	protect hardware.h r

$(MCH)/files:	$(MCH)/Makefile.base
	@echo "You must have AREXX and WShell installed to create a file list"
	@rx "say 'If this worked, then you have ARexx installed.'"
	@echo  >t:files.tmp "$(CLIENTSSRC)"
	@echo >>t:files.tmp "$(SERVERSSRC)"
	@echo >>t:files.tmp "$(INTERNET1SRC)"
	@echo >>t:files.tmp "$(INTERNET2SRC)"
	@echo >>t:files.tmp "$(AX25SRC)"
	@echo >>t:files.tmp "$(NETROMSRC)"
	@echo >>t:files.tmp "$(NETSRC)"
	@echo >>t:files.tmp "$(DUMPSRC)"
	@echo >>t:files.tmp "$(HDRS1)"
	@echo >>t:files.tmp "$(HDRS2)"
	@echo >>t:files.tmp "$(MAINSRC)"
	@echo >>t:files.tmp "$(AMIGASRC)"
	@echo >>t:files.tmp "$(AMIGAHDRS)"
	@echo >>t:files.tmp "$(AMIGAMISCSRC)"
	-protect $@ add w
	rx  <t:files.tmp >$@ amiga/makefilelist
	delete t:files.tmp

dist:	$(MCH)/files makefile
	-delete t:amiganos.zoo
	zoo <$(MCH)/files aI t:amiganos

distall: net $(MCH)/files makefile
	-delete t:amiganos.zoo
	echo >t:tmp.net "Net"
	echo >>t:tmp.net "amiga/Read-Me"
	join t:tmp.net $(MCH)/files as t:tmp.net1
	zoo <t:tmp.net1 aI t:amiganos 
	delete t:tmp.net t:tmp.net1

depend:	$(MCH)/files
	-delete t:makedepend.out
	lc:grep >t:c-files -q \.c $(MCH)/files
	@echo "Hang on, this takes a while to perform..."
	$(MCH)/xargs $(MCH)/mkdep $(INC) <t:c-files >t:makedepend.out
	-protect amiga/makefile.depend add wd
	copy t:makedepend.out amiga/makefile.depend
	protect amiga/makefile.depend r
	delete t:makedepend.out t:c-files

Makefile:	makefile

makefile:	$(MCH)/makefile.base $(MCH)/makefile.depend
	-protect Makefile add wd
	@echo  >t:mkmessage "\# Makefile created on " NOLINE
	@date >>t:mkmessage
	@echo >>t:mkmessage "\#"
	@echo >>t:mkmessage "\# WARNING: DO NOT EDIT THIS FILE"
	@echo >>t:mkmessage "\# It is created from $(MCH)/makefile.base file"
	@echo >>t:mkmessage "\# by typing:"                                  
	@echo >>t:mkmessage "\#         lmk -f amiga/makefile.base Makefile" 
	@echo >>t:mkmessage "\#"
	@echo >>t:mkmessage "\#"
	-delete Makefile.old
	-rename Makefile Makefile.old
	join t:mkmessage $(MCH)/makefile.base $(MCH)/makefile.depend as Makefile
	protect Makefile r
	delete t:mkmessage

#make begin says to start from the beginning.
begin: clean

amiga/amiga_gen.o:	amiga/amiga_gen.asm

############################################################################

