
MODNAME	          = utility
VERSION		  = 40

REMOTE		  = V$(VERSION):src/kickstart/utility

LD_FILE	          = $(MODNAME).ld$(EXTENSION)
LD_STRIP          = $(MODNAME).ld.strip$(EXTENSION)
MAP_FILE          = $(MODNAME).map$(EXTENSION)

C_COMPILER        = LC
C_COMPILER_OPTS   = -b0 -ms -v -me -rr -O -cfistqmcu -d1

ASSEMBLER         = HX68 -a
ASSEMBLER_OPTS    = -csy -i include: -o

LINKER            = Slink
LINKER_OPTS	  = ADDSYM SC SD MAP $(MAP_FILE) HLSXF PLAIN SWIDTH 16
LINKER_OPTS_STRIP = ND

C_SOURCES   =
ASM_SOURCES = utility_lib.asm hooks.asm date.asm endcode.asm math.asm \
	      stricmp.asm tagitem.asm pack.asm name.asm

OBJECTS     = utility_lib$(TYPE).o tagitem.o hooks.o date.o math$(TYPE).o \
              stricmp.o pack.o name.o endcode.o

STARTUP     =
LIBS	    = LIB:debug.lib LIB:amiga.lib LIB:lcr.lib


##############################################################################
#
# This compiles all different versions of utility.library
#
# $(TYPE)      = The type of the file
# $(CPU)       = The cpu type definition.
# $(EXTENSION) = The type extension of the file.
ALL:
	smake -s TYPE=       CPU=MC68000 EXTENSION=       $(LD_STRIP)
	smake -s TYPE=68020  CPU=MC68020 EXTENSION=.68020 $(LD_STRIP).68020


##############################################################################
# Build the stripped load file...
#
$(LD_STRIP):	$(LD_FILE)
		$(LINKER) FROM $(LD_FILE) TO $(LD_STRIP) $(LINKER_OPTS_STRIP)


##############################################################################
# Build the load file...
#
$(LD_FILE):	$(OBJECTS) $(LIBS)

		$(LINKER) <with <
FROM $(STARTUP) $(OBJECTS) TO $(LD_FILE) LIB $(LIBS) $(LINKER_OPTS)
<


##############################################################################
# Default rules...
#
.c.o:
	$(C_COMPILER) $(C_COMPILER_OPTS) -d $(CPU)=1 -o $*$(TYPE).o $*.c

.asm.o:
	$(ASSEMBLER) $*.asm -D $(CPU)=1 $(ASSEMBLER_OPTS) $*$(TYPE).o


##############################################################################
# All dependencies...
#
utility_lib$(TYPE).o: utility_lib.asm $(MODNAME)_rev.rev utilitybase.i
tagitem.o: tagitem.asm
pack.o: pack.asm
name.o: name.asm
math$(TYPE).o: math.asm



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


##############################################################################
# Delete all object files
#
clean:
	@Delete $(OBJECTS)
	@Delete $(LD_FILE) $(LD_STRIP) $(MODNAME).map


##############################################################################
# Release stuff that should be...
#
headers:
	@autodoc >$(MODNAME).doc autodocs.asm pack.asm name.asm utility_lib.asm
	@copy $(MODNAME).doc V$(VERSION):doc
	@delete $(MODNAME).doc quiet
	@protect V$(VERSION):include/utility/\#? wrd quiet
	@copy utility.[hi] V$(VERSION):include/utility quiet
	@copy tagitem.[hi] V$(VERSION):include/utility quiet
	@copy pack.[hi] V$(VERSION):include/utility quiet
	@copy name.[hi] V$(VERSION):include/utility quiet
	@copy date.[hi] V$(VERSION):include/utility quiet
	@copy hooks.[hi] V$(VERSION):include/utility quiet
	@protect V$(VERSION):lib/sfd/utility_lib.sfd wrd
	@copy utility_lib.sfd V$(VERSION):lib/sfd


##############################################################################
# Build autodoc
#
$(MODNAME).doc:	autodocs.asm pack.asm name.asm
		@Autodoc >$(MODNAME).doc autodocs.asm name.asm pack.asm



##############################################################################
# Release the current build to the server...
#
internal:
	@Delete $(REMOTE)/((\#?.(c|h|asm|i|ld|rev|doc|library))|lmkfile)
	@protect ((\#?.(c|h|asm|i|ld|rev|doc))|lmkfile|$(LD_STRIP)) +r quiet
	@copy \#?.(strip|ld|doc|library) \#?_rev.\#? $(REMOTE)
