###############################################################################
#
# lmkfile for mathieeesingbas.library
#
###############################################################################

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

#
# Name of the module
#
MODNAME	= mathieeesingbas

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

#
# Magic loop-back to do the various versions
#
# $(TYPE)   = The type extention of the file.
# $(MACHINE)= The CPU type compiled for
#
ALL:
	lmk -s TYPE=       MACHINE=CPU_68000 $(LD_STRIP)
	lmk -s TYPE=.68020 MACHINE=CPU_68020 $(LD_STRIP).68020
	lmk -s TYPE=.FPU   MACHINE=CPU_FPU   $(LD_STRIP).FPU
	lmk -s TYPE=.DISK  MACHINE=CPU_68000 $(LD_STRIP).DISK  "ONDISK=-D ON_DISK=1"

#
# Compiler, assembler, and linker
#
CC = lc
AS = hx68 -a
LN = blink

#
# Compiler flags...
#
CFLAGS	= -b0 -v -me -ms -cfistqm -d1 -O

#
# Assembler flags...  NOTE how they are used below...
#
AFLAGS	= -cqs -i include: $(ONDISK) -o

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

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

#
# Linker flags
#
LFLAGS		= SMALLCODE SMALLDATA QUIET
LFLAGS_STRIP	= ND

#
# System libraries
#
LIBS= LIB:small.lib

#
# My headers...
#
PUBLIC_HDR =	mathieeesp.h

MY_HDR	=	macros.i \
		float.i \
		nulca.i \
		mathresource.i \
		mathlibrary.i \
		privatemathlibrary.i

#
# My C source...
#
MY_C	=

#
# My Assebly source...
#
MY_A	=	residenttag.asm \
		library.asm \
		vec_table.asm \
		ffloorceil.asm \
		midb.asm \
		fabs.asm \
		fneg.asm \
		fdiv.asm \
		fcmp.asm \
		fmul.asm \
		fmul020.asm \
		fdiv020.asm \
		ftst.asm \
		faddsub.asm \
		cxren4.asm \
		cxnrm4dale.asm \
		cxadj4.asm \
		float.asm \
		fix.asm \
		cxspc4.asm \
		traps.asm\
		ieee68881.asm \
		endmodule.asm

#
# My object files...
#
MY_OBJS=	residenttag.o \
		ieee68881.o \
		ffloorceil.o \
		fabs.o \
		fneg.o \
		fcmp.o \
		ftst.o \
		library.o$(TYPE) \
		vec_table.o$(TYPE) \
		midb.o$(TYPE) \
		fmul.o$(TYPE) \
		fmul020.o$(TYPE) \
		fdiv.o$(TYPE) \
		fdiv020.o$(TYPE) \
		faddsub.o$(TYPE) \
		cxren4.o$(TYPE) \
		cxadj4.o$(TYPE) \
		cxnrm4dale.o$(TYPE) \
		float.o$(TYPE) \
		fix.o$(TYPE) \
		cxspc4.o$(TYPE) \
		traps.o$(TYPE) \
		endmodule.o

#
# My library objects...
#
MY_LIB_OBJS =

#
# My library files...
#
MY_LIBS	=

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

#
# Build the various versions
#
$(LD_FILE):	$(MY_OBJS)
	$(LN) <with <
FROM $(MY_OBJS)
TO $(LD_FILE)
LIB $(MY_LIBS) $(LIBS)
MAP $(MAP_FILE) HLSXF PLAIN SWIDTH 16
$(LFLAGS)
<

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

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

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

#
# The following files need to be made for each of the ROM versions
#
residenttag.o:		residenttag.asm	$(MODNAME)_rev.i

library.o$(TYPE):	library.asm	$(MODNAME)_rev.i
	$(AS) $*.asm $(AFLAGS) $*.o$(TYPE) -D $(MACHINE)=1

vec_table.o$(TYPE):	vec_table.asm
	$(AS) $*.asm $(AFLAGS) $*.o$(TYPE) -D $(MACHINE)=1

midb.o$(TYPE):		midb.asm
	$(AS) $*.asm $(AFLAGS) $*.o$(TYPE) -D $(MACHINE)=1

fmul.o$(TYPE):		fmul.asm
	$(AS) $*.asm $(AFLAGS) $*.o$(TYPE) -D $(MACHINE)=1

fmul020.o$(TYPE):	fmul020.asm
	$(AS) $*.asm $(AFLAGS) $*.o$(TYPE) -D $(MACHINE)=1

fdiv.o$(TYPE):		fdiv.asm
	$(AS) $*.asm $(AFLAGS) $*.o$(TYPE) -D $(MACHINE)=1

fdiv020.o$(TYPE):	fdiv020.asm
	$(AS) $*.asm $(AFLAGS) $*.o$(TYPE) -D $(MACHINE)=1

faddsub.o$(TYPE):	faddsub.asm
	$(AS) $*.asm $(AFLAGS) $*.o$(TYPE) -D $(MACHINE)=1

cxren4.o$(TYPE):	cxren4.asm
	$(AS) $*.asm $(AFLAGS) $*.o$(TYPE) -D $(MACHINE)=1

cxadj4.o$(TYPE):	cxadj4.asm
	$(AS) $*.asm $(AFLAGS) $*.o$(TYPE) -D $(MACHINE)=1

cxnrm4dale.o$(TYPE):	cxnrm4dale.asm
	$(AS) $*.asm $(AFLAGS) $*.o$(TYPE) -D $(MACHINE)=1

float.o$(TYPE):		float.asm
	$(AS) $*.asm $(AFLAGS) $*.o$(TYPE) -D $(MACHINE)=1

fix.o$(TYPE):		fix.asm
	$(AS) $*.asm $(AFLAGS) $*.o$(TYPE) -D $(MACHINE)=1

cxspc4.o$(TYPE):	cxspc4.asm
	$(AS) $*.asm $(AFLAGS) $*.o$(TYPE) -D $(MACHINE)=1

traps.o$(TYPE):		traps.asm
	$(AS) $*.asm $(AFLAGS) $*.o$(TYPE) -D $(MACHINE)=1


#
# Release just the headers
#
headers:	$(PUBLIC_HDR)
	copy $(PUBLIC_HDR) V:include/exec NOPRO

#
# Release the current build to the server
#
internal:
	@delete $(REMOTE)/((\#?.(c|h|asm|i|rev|doc|sfd|ld|ld.\#?))|makefile|lmkfile)
	@protect ((\#?.(c|h|asm|i|ld|rev|doc|sfd))|makefile|lmkfile) +r quiet
	@copy ((\#?.(c|h|asm|i|rev|doc|sfd|ld|ld.\#?))|makefile|lmkfile) $(REMOTE)
	@copy \#?.doc V:doc NOPRO
	@copy \#?.sfd V:lib/sfd NOPRO

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

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

$(MODNAME).doc:	$(MY_C) $(MY_A)
	@Echo "Making $(MODNAME).doc"
	@Join $(MY_C) $(MY_A) as RAM:$(MODNAME).tmp.doc
	@AutoDoc >$(MODNAME).doc RAM:$(MODNAME).tmp.doc
	@Delete RAM:$(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 headers
	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..."
