
MODNAME	          = cdui
VERSION		  = 40
#VERSION_TYPE      = TEST_VERSION
VERSION_TYPE      = RELEASE_VERSION

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

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

C_COMPILER        = SC
C_COMPILER_OPTS   = RESOPT DATA=FARONLY UCHAR CONSTLIB\
		    STREQ STRMER COMMENTNEST DBG=LINE CPU=68020\
		    ANSI MEMSIZE=HUGE NOSTKCHK NOICONS NOVERSION NOMINC\
		    GST INCLUDE:all.gst DEFINE $(VERSION_TYPE)=1 IGNORE 51,162\
		    OPT OPTPEEP OPTINLOCAL OPTSIZE OPTDEP=3 OPTRDEP=3

ASSEMBLER         = HX68 -a
ASSEMBLER_OPTS    = -csy -D $(VERSION_TYPE)=1 -i include: -o

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

C_SOURCES   = cdui.c utils.c languageselector.c nrameditor.c doanimation.c\
	      credits.c task.c transitions.c playanim.c displayanim.c cycler.c

ASM_SOURCES = cdui_lib.asm animcontrol.asm waveflag.asm ilbm.asm\
	      allocpatch.asm endcode.asm

OBJECTS     = cdui_lib.o cdui.o utils.o languageselector.o nrameditor.o\
	      doanimation.o languageimage.o nramimage.o nramkeys.o cycler.o\
	      credits.o animcontrol.o transitions.o playanim.o displayanim.o\
	      ilbm.o allocpatch.o keysound.o globes.o disc_in.o palette0.o\
	      palette3.o languagenames.o waveflag.o task.o sound.o background.o\
	      fanfare.o amiga32_red.o cd.o cds.o palette1.o palette2.o endcode.o

STARTUP     =
LIBS	    = LIB:amiga.lib LIB:sc.lib LIB:debug.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...
#
cdui_lib.o: cdui_lib.asm cduibase.i $(MODNAME)_rev.rev
cdui.o: cdui.c cdui.h cduibase.h nrameditor.h languageselector.h utils.h
utils.o: utils.c utils.h cduibase.h
languageselector.o: languageselector.c languageselector.h cduibase.h utils.h
nrameditor.o: nrameditor.c nrameditor.h cduibase.h utils.h
credits.o: credits.c credits.h cduibase.h
animcontrol.o: animcontrol.asm
waveflag.o: waveflag.asm
endcode.o: endcode.asm
task.o: task.c cduibase.h
doanimation.o: doanimation.c doanimation.h cduibase.h
transitions.o: transitions.c transitions.h cduibase.h
sound.o: sound.c sound.h cduibase.h
cycler.o: cycler.c cycler.h cduibase.h
playanim.o: playanim.c playanim.h cduibase.h
displayanim.o: displayanim.c cduibase.h playanim.h
ilbm.o: ilbm.asm cduibase.i playanim.i
allocpatch.o: allocpatch.asm allocpatch.h

# SAS 6.2 has an optimizer bug that makes this module not work...
transitions.o: transitions.c transitions.h cduibase.h
	$(C_COMPILER) $(C_COMPILER_OPTS) NOOPT $*.c


languageimage.o: languageimage.pic
        @enforcer OFF >NIL:
        sbox -XPR $>.pic T:dbox.tmp
        d2o T:dbox.tmp _$> $>.o -h "_NOMERGE"
        @Delete T:dbox.tmp quiet
        @RUN >NIL: enforcer ON

languagenames.o: languagenames.pic
        @enforcer OFF >NIL:
        sbox -XPCR $>.pic T:dbox.tmp
        d2o T:dbox.tmp _$> $>.o -h "_NOMERGE"
        @Delete T:dbox.tmp quiet
        @RUN >NIL: enforcer ON

globes.o: globes.pic
        @enforcer OFF >NIL:
        sbox -XPR $>.pic T:dbox.tmp
        d2o T:dbox.tmp _$> $>.o -h "_NOMERGE"
        @Delete T:dbox.tmp quiet
        @RUN >NIL: enforcer ON

nramkeys.o: nramkeys.pic
        @enforcer OFF >NIL:
        sbox -XPR $>.pic T:dbox.tmp
        d2o T:dbox.tmp _$> $>.o -h "_NOMERGE"
        @Delete T:dbox.tmp quiet
        @RUN >NIL: enforcer ON

nramimage.o: nramimage.pic
        @enforcer OFF >NIL:
        sbox -XPCR $>.pic T:dbox.tmp
        d2o T:dbox.tmp _$> $>.o -h "_NOMERGE"
        @Delete T:dbox.tmp quiet
        @RUN >NIL: enforcer ON

keysound.o: key.8svx
        d2o key.8svx _keysound keysound.o -h "_NOMERGE"

background.o: background.pic
	@enforcer OFF >NIL:
	sbox -XPR $>.pic T:dbox.tmp
	d2o T:dbox.tmp _$> $>.o -h "_NOMERGE"
	@Delete T:dbox.tmp quiet
	@RUN Enforcer >NIL: ON

amiga32_red.o: amiga32_red.pic
	@enforcer OFF >NIL:
	sbox -XPRC $>.pic T:dbox.tmp
	d2o T:dbox.tmp _$> $>.o -h "_NOMERGE"
	@Delete T:dbox.tmp quiet
	@RUN Enforcer >NIL: ON

cds.o: cds.pic
	@enforcer OFF >NIL:
	sbox -XPCR $>.pic T:dbox.tmp
	d2o T:dbox.tmp _$> $>.o -h "_NOMERGE"
	@Delete T:dbox.tmp quiet
	@RUN Enforcer >NIL: ON

cd.o: cd.pic
	@enforcer OFF >NIL:
	sbox -XPCR $>.pic T:dbox.tmp
	d2o T:dbox.tmp _$> $>.o -h "_NOMERGE"
	@Delete T:dbox.tmp quiet
	@RUN Enforcer >NIL: ON

disc_in.o: disc_in.raw
	d2o $>.raw _$> $>.o -h "_NOMERGE"

palette0.o: palette0.pic
	@enforcer OFF >NIL:
	sbox -XPR $>.pic T:dbox.tmp
	d2o T:dbox.tmp _$> $>.o -h "_NOMERGE"
	@Delete T:dbox.tmp quiet
	@RUN Enforcer >NIL: ON

palette1.o: palette1.pic
	@enforcer OFF >NIL:
	sbox -XPR $>.pic T:dbox.tmp
	d2o T:dbox.tmp _$> $>.o -h "_NOMERGE"
	@Delete T:dbox.tmp quiet
	@RUN Enforcer >NIL: ON

palette2.o: palette2.pic
	@enforcer OFF >NIL:
	sbox -XPR $>.pic T:dbox.tmp
	d2o T:dbox.tmp _$> $>.o -h "_NOMERGE"
	@Delete T:dbox.tmp quiet
	@RUN Enforcer >NIL: ON

palette3.o: palette3.pic
	@enforcer OFF >NIL:
	sbox -XPR $>.pic T:dbox.tmp
	d2o T:dbox.tmp _$> $>.o -h "_NOMERGE"
	@Delete T:dbox.tmp quiet
	@RUN Enforcer >NIL: ON

fanfare.o: fanfare.8svx
	stripsnd $>.8svx
	@d2o stripsnd.out _$> $>.o -h "_NOMERGE"
	@Delete stripsnd.out quiet
	@RUN Enforcer >NIL: on


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


##############################################################################
# Release stuff that should be...
#
headers:
	@autodoc >$(MODNAME).doc autodocs.asm
#	@copy $(MODNAME).doc V$(VERSION):doc
#	@delete $(MODNAME).doc quiet
	@protect V$(VERSION):include/internal/cdui.[ih] wrd quiet
	@copy cdui.[ih] V$(VERSION):include/internal quiet
	@protect V$(VERSION):lib/sfd/cdui_lib.sfd wrd
	@copy cdui_lib.sfd V$(VERSION):lib/sfd


##############################################################################
# Delete all object files
#
clean:
	@Delete (\#?.o|\#?.o.\#?|$(MODNAME).doc|$(MODNAME).ld\#?|$(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)
