
MODNAME	          = gadtools
VERSION		  = 40

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

LD_FILE	          = $(MODNAME).ld
LD_STRIP          = $(MODNAME).ld.strip

C_COMPILER        = SC
C_COMPILER_OPTS   = RESOPT DATA=FARONLY PARM=REGISTERS UCHAR CONSTLIB LIBCODE\
		    STREQ STRMER COMMENTNEST DBG=SYMBOL GST=INCLUDE:all.gst\
		    MEMSIZE=HUGE NOSTKCHK NOICONS NOVERSION NOMINC\
		    OPT OPTPEEP OPTINLOCAL OPTSIZE OPTDEP=3 OPTRDEP=3

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

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

C_SOURCES   = dispatch.c render.c generic.c button.c string.c checkbox.c mx.c\
	      scroller.c slider.c nway.c listview.c palette.c text.c\
	      textsupp.c menu.c misc.c visual.c create.c

ASM_SOURCES = gadtools_lib.asm stubs.asm sprintf.asm classface.asm extent.asm

OBJECTS     = gadtools_lib.o dispatch.o render.o generic.o button.o string.o\
	      checkbox.o mx.o scroller.o slider.o nway.o listview.o palette.o\
	      text.o textsupp.o menu.o misc.o visual.o create.o\
	      stubs.o sprintf.o classface.o extent.o

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


##############################################################################
# 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) $*.c #DISASM $*.dasm

.asm.o:
	$(ASSEMBLER) $*.asm $(ASSEMBLER_OPTS) $*.o


##############################################################################
# All dependencies...
#
gadtools_lib.o: gadtools_lib.asm gtinternal.i $(MODNAME)_rev.rev endtag.lib gadtools_lib.fd

endtag.lib: endtag.asm
	@echo "*NAssembling $*.asm"
	$(ASSEMBLER) $*.asm $(ASSEMBLER_OPTS) $*.lib

gadtools_lib.fd: gadtools_lib.sfd
	sfd -h gadtools_lib.sfd
	@copy PRAGMAS/gadtools_pragmas.h ""
	@copy PROTOS/gadtools_protos.h ""
	@copy FD/gadtools_lib.fd ""
	@delete PRAGMAS PROTOS FD LVO HDR ALL QUIET


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


##############################################################################
# Delete all object files
#
clean:
	@Delete \#?.o
	@Delete $(LD_FILE) $(LD_STRIP) $(MODNAME).map
	@Delete gadtools_protos.h gadtools_pragmas.h gadtools_lib.fd endtag.lib


##############################################################################
# Release stuff that should be...
#
headers:
	# Can't use this because the line's too long for lmk.
	#	autodoc >gadtools.doc -FRAM:adoctemp $(CFILES)

	# Here's a rule that works because execute can tolerate longer lines.
	# Note the ingenious use of the semicolon, because lmk insists on adding
	# a ^M to the end of the line, which would otherwise cause autodoc to puke.
	execute <<
autodoc >gadtools.doc $(C_SOURCES) ;
<
	@copy $(MODNAME).doc V$(VERSION):doc
	@delete $(MODNAME).doc quiet
	@protect V$(VERSION):include/libraries/gadtools.? wrd quiet
	@copy gadtools.? V$(VERSION):include/libraries quiet
	@protect V$(VERSION):lib/sfd/gadtools_lib.sfd wrd
	@copy gadtools_lib.sfd V$(VERSION):lib/sfd


##############################################################################
# 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)
