#
# lmkfile for ROM disk
#

#
# Server directory for the data...
#
REMOTE = V:src/kickstart/romdisk
VERSION= 40

#
# Name of the module
#
MODNAME	= romdisk

#
# The ".LD" file we want to produce.
#
LD_FILE	= $(MODNAME).ld
LD_STRIP= $(MODNAME).ld.strip

#
# Compiler, assembler, and linker
#
CC = sc
AS = hx68 -a
LN = slink

#
# Compiler flags...
#
CFLAGS	= MEMORYSIZE=HUGE PARAMETERS=REGISTER NOSTACKCHECK NOMULTIPLEINCLUDES STRINGMERGE STRUCTUREEQUIVALENCE MULTIPLECHARACTERCONSTANTS DEBUG=LINE NOVERSION OPTIMIZE OPTIMIZERSIZE OPTIMIZERINLINE OPTIMIZERINLOCAL NOICONS

#
# Assembler flags...  NOTE how they are used below...
#
AFLAGS	= -csq -i include: -o

#
# Linker flags
#
LFLAGS		= ADDSYM SMALLCODE SMALLDATA MAP $(MODNAME).map HLSXF PLAIN SWIDTH 16 NOICONS QUIET
LFLAGS_STRIP	= ND NOICONS

#
# System libraries
#
LIBS= LIB:small.lib LIB:debug.lib SC:lib/sc.lib

#
# My headers...
#
MY_HDR	=

#
# My C source...
#
MY_C	=

#
# My Assebly source...
#
MY_A	=

#
# My object files...
#
MY_OBJS	=	ram_c.o \
		start.o \
		checkname.o \
		diskinfo.o \
		exall.o \
		file.o \
		finddir.o \
		findentry.o \
		locate.o \
		lock.o \
		mygetvec.o \
		parent.o \
		seek.o \
		transfer.o \
		global.o \
		support.o \
		rom.o \
		end.o

#
# ROMFILES are the files that are to be included in the ROM disk
# Disk.info should always be included...
#
ROMFILES =	Disk.info

#
# Build the stripped LD file...
#
$(LD_STRIP):	$(LD_FILE)
	$(LN) FROM $(LD_FILE) TO $(LD_STRIP) $(LFLAGS_STRIP)

#
# Build the LD file...
#
$(LD_FILE):	$(MY_OBJS)
	$(LN) <with <
FROM $(MY_OBJS)
TO $(LD_FILE)
LIB $(LIBS)
$(LFLAGS)
<

#
# Default rules...
#
.c.o:
	$(CC) $(CFLAGS) $*.c

.asm.o:
	$(AS) $*.asm $(AFLAGS) $*.o

#
# Specific dependancies...
#
ram_c.o:	ram_c.asm $(MODNAME)_rev.i

rom.o:	MakeROMImage	$(ROMFILES)	smakefile
	MakeROMImage FILES $(ROMFILES) TO rom.o

#
# Bump the version...
#
version:
	@bumprev $(VERSION) $(MODNAME)_rev

$(MODNAME)_rev.i:
	@bumprev $(VERSION) $(MODNAME)_rev

$(MODNAME)_rev.h:
	@bumprev $(VERSION) $(MODNAME)_rev

MakeROMImage:	MakeROMImage.c
	BumpRev 40 $*_rev
	SC NMINC STRMERGE MCCONS STREQ DEBUG=L OPTIMIZE PARMS=REG NOSTKCHK DATA=FAR NOICONS $*.c
	slink <with <
FROM $*.o
TO $*
LIB LIB:amiga.lib
BATCH SMALLCODE SMALLDATA NOICONS ND
<
	Protect $* +p


#
# Release the current build to the server
#
internal:
	@delete $(REMOTE)/((\#?.(c|h|asm|i|ld|ld.strip|rev))|smakefile|Disk.info)
	@protect ((\#?.(c|h|asm|i|ld|ld.strip|rev))|smakefile|Disk.info) +r quiet
	@copy ((\#?.(c|h|asm|i|ld|ld.strip|rev))|smakefile|Disk.info) $(REMOTE)

#
# Blow away all files that would need to be rebuilt
#
clean:
	@delete \#?.(o|ld|doc|ld.strip|map)

#
# Make the AutoDocs
#
doc:	$(MODNAME).doc

$(MODNAME).doc:	$(MY_C) $(MY_A)
	@Echo "Making $(MODNAME).doc"
	@Join $(MY_C) $(MY_A) as T:$(MODNAME).tmp.doc
	@AutoDoc >$(MODNAME).doc T:$(MODNAME).tmp.doc
	@Delete T:$(MODNAME).tmp.doc QUIET
	@Protect $(MODNAME).doc rwd

#
# Make a complete new release (This still is in testing...)
#
release:
	lmk clean
	lmk version
	lmk doc
	lmk $(LD_FILE)
	lmk $(LD_STRIP)
	lmk internal

#
# The following rule is to bring the source down to the local directory
# To do the following you should copy this LMKfile to the local directory
# and make sure it is readable.  Then type MAKE ToLocal to have the
# code copied down...
#
tolocal:
	@protect \#? rwed QUIET
	@copy $(REMOTE)/\#? ""
	@protect \#? +r QUIET
	@protect \#?_rev\#? rwd QUIET
	@Echo "Local is updated..."
