MODNAME=		button
VERSION=		42

REMOTE=			V$(VERSION):src/workbench/classes/gadgets/button

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

C_COMPILER=		SC
C_COMPILER_OPTS=	NOVERSION DATA=FAR OPTSIZE OPTIMIZE OPTGLOBAL NOSTKCHK PARMS=REG \
			OPTIMIZE NMINC STRMERGE STREQ MCCONS COMNEST UNSCHAR DEBUG=L

ASSEMBLER=		hx68 FROM
ASSEMBLER_OPTS=		ADDSYM DEBUG INCDIR include: TO

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

C_SOURCES=		classbase.c dispatch.c
ASM_SOURCES=		classinit.asm utils.asm endcode.asm
OBJECTS=		classinit.o classbase.o dispatch.o utils.o endcode.o

STARTUP=
LIBS=			LIB:debug.lib LIB:amiga.lib LIB:sc.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

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


##############################################################################
# All dependencies...
#
classinit.o:	classinit.asm $(MODNAME)_rev.rev classbase.i
classbase.o:	classbase.c classbase.h classdata.h
endcode.o:	endcode.asm
utils.o:	utils.asm
dispatch.o:	dispatch.c classbase.h classdata.h


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


##############################################################################
# Delete all object files
#
clean:
	-delete $(OBJECTS)
	-delete $(LD_FILE) $(MODNAME).map


##############################################################################
# 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)
	-@copy $(MODNAME).h V$(VERSION):include/gadgets
	-@copy $(MODNAME).i V$(VERSION):include/gadgets
	-@copy $(MODNAME)_gc.doc V$(VERSION):doc
	-@copy test.c V$(VERSION):src/examples/gadgets/$(MODNAME)_test.c
	-@copy test V$(VERSION):src/examples/gadgets/$(MODNAME)_test

install:
	-copy $(LD_STRIP) sys:classes/gadgets/$(MODNAME).gadget
	-flushlibs

headers:
	@copy $(MODNAME).h include:gadgets clone
	@copy $(MODNAME).i include:gadgets clone


##############################################################################
# Build autodoc
#
doc:
	AD $(C_SOURCES) TO $(MODNAME)_gc.doc INDEX
	ad2ag $(MODNAME)_gc.doc TO T:
	copy T:$(MODNAME)_gc $(MODNAME)_gc
	copy T:$(MODNAME)_gc.info $(MODNAME)_gc.info
	delete T:$(MODNAME)_gc


##############################################################################
# Build archive
#
archive:
	-@makedir DNJ:dist/agdoc
	copy $(MODNAME).(h|i) DNJ:dist/include/gadgets
	copy $(LD_STRIP) DNJ:dist/classes/gadgets/$(MODNAME).gadget
	copy $(MODNAME)_gc.doc DNJ:dist/doc
	copy $(MODNAME)_gc DNJ:dist/agdoc
	copy $(MODNAME)_gc.info DNJ:dist/agdoc
	-@copy test.c DNJ:dist/src/examples/gadgets/$(MODNAME)_test.c
	-@copy test DNJ:dist/src/examples/gadgets/$(MODNAME)_test
