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
