HDRS = blib_protos.h klib_protos.h cli_protos.h libhdr.h cli_init.h \
       dos/dosextens.h
AHDRS = libhdr.i dos/dosextens.i
OBJ = obj/
LC = lc
V = 40
REMOTEDIR = /usr/commodore/amiga/V$(V)/src/kickstart/dos

# optimise, use pc-relative addressing
AFLAGS = -iinclude: -cqry

# add -ml option to below?
#LCFLAGS = -. -cfimsq -v -O -ms -b0 -o$(OBJ)
LCFLAGS = -. -cfimsq -v -O -ms -b0 -d -o$(OBJ)

dos.ld.strip: dos.ld
	blink from dos.ld to dos.ld.strip nodebug

dos.ld:	$(OBJ)klib.o $(OBJ)blib.o $(OBJ)cli_init.o $(OBJ)request.o \
	$(OBJ)support.o \
	$(OBJ)support2.o $(OBJ)device.o $(OBJ)loadseg.o $(OBJ)bstr.o \
	$(OBJ)sendpkt.o $(OBJ)cli.o \
	$(OBJ)fakeblib.o $(OBJ)fakecli.o $(OBJ)bcplio.o $(OBJ)rdargs.o \
	$(OBJ)path.o \
	$(OBJ)jumptab.o $(OBJ)notify.o $(OBJ)fault.o $(OBJ)record.o \
	$(OBJ)pattern.o $(OBJ)env.o $(OBJ)date.o $(OBJ)execute.o \
	$(OBJ)createproc.o $(OBJ)patternhack.o $(OBJ)io.o $(OBJ)exall.o \
	$(OBJ)strings.o $(OBJ)end.o
#	$(OBJ)downc.o $(OBJ)mlib.o $(OBJ)rdargshack.o
	blink with dos.lnk

.c.o:
	$(LC) $(LCFLAGS) $*

$(OBJ)blib.o: blib.c $(HDRS) device_protos.h crp_protos.h dos/dostags.h \
	      dos/exall.h fault.h
	
$(OBJ)bcplio.o: bcplio.c $(HDRS)
	
$(OBJ)cli_init.o: cli_init.c $(HDRS) fault.h

$(OBJ)cli.o: cli.c $(HDRS)
	
$(OBJ)execute.o: execute.c $(HDRS) crp_protos.h dos/dostags.h cli_init.h fault.h

$(OBJ)device.o: device.c $(HDRS) device_protos.h

#$(OBJ)rdargs.o: rdargs.c $(HDRS)
	
$(OBJ)path.o: path.c $(HDRS) path_protos.h cli_init.h

$(OBJ)record.o: record.c $(HDRS) dos/record.h record_protos.h

$(OBJ)notify.o: notify.c $(HDRS) notify_protos.h

$(OBJ)env.o: env.c $(HDRS) env_protos.h

$(OBJ)createproc.o: createproc.c $(HDRS) crp_protos.h env_protos.h \
	      cli_init.h path_protos.h cli_protos.h dos/dostags.h

$(OBJ)fault.o: fault.c dos/dosextens.h fault.h

$(OBJ)patternhack.o: patternhack.c $(HDRS) dos/dosasl.h

$(OBJ)exall.o: exall.c $(HDRS) dos/exall.h

# now for asm files....

$(OBJ)klib.o: doslib.asm $(AHDRS) downc.asm mlib.asm dos_rev.i dos/dostags.i \
	calldos.i fault.i
	casm -a doslib.asm -o$(OBJ)klib.o $(AFLAGS)

#$(OBJ)mlib.o: mlib.asm $(AHDRS)
#	casm -a mlib.asm -o$(OBJ)mlib.o $(AFLAGS)
#
#$(OBJ)downc.o: downc.asm $(AHDRS)
#	casm -a downc.asm -o$(OBJ)downc.o $(AFLAGS)

$(OBJ)request.o: request.asm $(AHDRS) fault.i
	casm -a request.asm -o$(OBJ)request.o $(AFLAGS)

$(OBJ)support.o: support.asm $(AHDRS) fault.i
	casm -a support.asm -o$(OBJ)support.o $(AFLAGS)

$(OBJ)support2.o: support2.asm $(AHDRS)
	casm -a support2.asm -o$(OBJ)support2.o $(AFLAGS)

$(OBJ)loadseg.o: loadseg.asm $(AHDRS) dos/doshunks.i
	casm -a loadseg.asm -o$(OBJ)loadseg.o $(AFLAGS)

$(OBJ)strings.o: strings.asm
	casm -a strings.asm -o$(OBJ)strings.o $(AFLAGS)

$(OBJ)bstr.o: bstr.asm cli_init.i $(AHDRS)
	casm -a bstr.asm -o$(OBJ)bstr.o $(AFLAGS)

$(OBJ)sendpkt.o: sendpkt.asm $(AHDRS)
	casm -a sendpkt.asm -o$(OBJ)sendpkt.o $(AFLAGS)

$(OBJ)fakeblib.o: fakeblib.asm $(AHDRS) calldos.i
	casm -a fakeblib.asm -o$(OBJ)fakeblib.o $(AFLAGS)

$(OBJ)fakecli.o: fakecli.asm $(AHDRS) calldos.i
	casm -a fakecli.asm -o$(OBJ)fakecli.o $(AFLAGS)

$(OBJ)jumptab.o: jumptab.asm $(AHDRS)
	casm -a jumptab.asm -o$(OBJ)jumptab.o $(AFLAGS)

$(OBJ)rdargs.o: rdargs.asm $(AHDRS) dos/rdargs.i
	casm -a rdargs.asm -o$(OBJ)rdargs.o $(AFLAGS)

$(OBJ)date.o: date.asm $(AHDRS) dos/datetime.i
	casm -a date.asm -o$(OBJ)date.o $(AFLAGS)

$(OBJ)pattern.o: pattern.asm $(AHDRS) dos/dosasl.i
	casm -a pattern.asm -o$(OBJ)pattern.o $(AFLAGS)

$(OBJ)io.o: io.asm $(AHDRS)
	casm -a io.asm -o$(OBJ)io.o $(AFLAGS)

$(OBJ)end.o: end.asm
	casm -a end.asm -o$(OBJ)end.o $(AFLAGS)

#$(OBJ)rdargshack.o: rdargshack.c $(HDRS) cli_protos.h dos/rdargs.h
#
#
$(OBJ)bprintf.o: bprintf.c dos/dos_pragmas.h dos/dos_protos.h

dos/dos_pragmas.h: dos_lib.fd
	fd2pragma dos_lib.fd dos/dos_pragmas.h

dos/dos_private_pragmas.h: dos_lib_private.fd
	fd2pragma dos_lib_private.fd dos/dos_private_pragmas.h

test/dos.h: dos/dos_pragmas.h dos/dos_protos.h
	join dos/dos_protos.h dos/dos_pragmas.h to test/dos.h

#

all:	dos.ld.strip dos/dos_private_pragmas.h test/dos.h $(OBJ)bprintf.o

clean:
	delete $(OBJ)\#?.o

dos.doc: newcalls.autodocs oldcalls.autodocs
	autodoc >dos.doc -C -c -FRAM:adoctemp newcalls.autodocs oldcalls.autodocs

dos_lib.sfd.mark: dos_lib.sfd
	rsh heartofgold "cd $(REMOTEDIR); co dos_lib.sfd; cp dos_lib.sfd ../../../lib/sfd"
	echo >dos_lib.sfd.mark mark

internal: dos_lib.sfd.mark dos.doc
	bumprev $(V) dos_rev
	lmk dos.ld.strip
	copy dos.ld\#? dos.map dos_rev\#? ks:dos
	copy dos.doc V:doc nopro
	rsh heartofgold "cd $(REMOTEDIR); co RCS/**"

backup:
	copy "" vax:dos nopro
	copy libraries vax:dos/libraries nopro
	copy dos vax:dos/dos nopro
	copy devices vax:dos/devices nopro
#	copy test vax:dos/test nopro

localbackup:
	copy "" tmp:dos nopro
	copy libraries tmp:dos/libraries nopro
	copy dos tmp:dos/dos nopro
	copy devices tmp:dos/devices nopro
#	copy test tmp:dos/test nopro
