MODNAME=		led
VERSION=		42

REMOTE=			V$(VERSION):src/workbench/classes/images/led

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

C_COMPILER=		SC
C_COMPILER_OPTS=	NOVERSION DATA=FAR OPTSIZE OPTIMIZE OPTGLOBAL NOSTKCHK PARMS=REG \
			OPTIMIZE NMINC STRMERGE STREQ MCCONS COMNEST UNSCHAR DEBUG=L \
			NOICONS INCDIR=include/ INCDIR=INCLUDE:

ASSEMBLER=              asm
ASSEMBLER_OPTS=         -iinclude/ -iINCLUDE:

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

C_SOURCES=		classbase.c dispatch.c
ASM_SOURCES=		classinit.asm endcode.asm
OBJECTS=		classinit.o classbase.o dispatch.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) $(ASSEMBLER_OPTS) $*.asm


##############################################################################
# All dependencies...
#
classinit.o:	classinit.asm $(MODNAME)_rev.rev classbase.i
classbase.o:	classbase.c classbase.h classdata.h
endcode.o:	endcode.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/images
	-@copy $(MODNAME).i V$(VERSION):include/images
	-@copy $(MODNAME)_ic.doc V$(VERSION):doc
	-@copy test.c V$(VERSION):src/examples/images/$(MODNAME)_test.c
	-@copy test V$(VERSION):src/examples/images/$(MODNAME)_test

install:
	-copy $(LD_STRIP) sys:classes/images/$(MODNAME).image
	-flushlibs

headers:
	-@makedir include:images
	copy led.h include:images clone
	copy led.i include:images clone


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


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