 # $Id$

MODNAME     =   PhotoCD
VERSION     =   40

REMOTE      =   Other:PhotoCD/AmigaCD
DISK_IMAGE  =   SoftServe:Public/PhotoCD/AmigaCD

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

C_COMPILER      =   SC
# C_COMPILER_OPTS =    RESOPT UCHAR PARM=REGISTERS CONSTLIB STREQ STRMER COMMENTNEST UTILLIB DEBUG=FULLFLUSH NOICONS NOVERSION NOMINC ERRREXX CPU=68020 DEFINE DEBUG NOSTKCHK DATA=FAR
C_COMPILER_OPTS =    RESOPT UCHAR PARM=REGISTERS CONSTLIB STREQ STRMER COMMENTNEST UTILLIB DEBUG=SYMBOL NOICONS NOVERSION NOMINC ERRREXX CPU=68020 OPTIMIZE OPTPEEP OPTGO OPTINLOCAL OPTTIME OPTDEP=3 OPTRDEP=3 NOSTKCHK DATA=FAR

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

LINKER              =   SLink
LINKER_OPTS         =   ADDSYM SC SD MAP $(MODNAME).map PLAIN SWIDTH 16 VERBOSE BATCH NOICONS
LINKER_OPTS_STRIP   =   ND NOICONS VERBOSE

C_SOURCES       =   main.c error.c display.c interface.c state.c event.c status.c control.c glyphs.c led.c session.c thumbnail.c image.c slide.c manipulate.c slideshow.c quantization.c scaling.c ham8.c zoom.c shimmer.c nvstorage.c task.c memory.c credits.c
ASM_SOURCES     =   bsprintf.a
PIC_SOURCES     =   glyphs/StatusPanel.pic glyphs/NoDisc.pic glyphs/InvalidDisc.pic glyphs/PhotoCDLogo.pic glyphs/Stop.pic glyphs/RepeatOff.pic glyphs/RepeatOn.pic glyphs/ImageFrameHoriz.pic glyphs/ImageFrameVert.pic glyphs/SlideFrameVert.pic glyphs/SlideFrameVert.pic glyphs/Pause.pic glyphs/Normalize.pic glyphs/PrevImage.pic glyphs/NextImage.pic glyphs/Image.pic glyphs/Thumbnail.pic glyphs/PlayOff.pic glyphs/PlayOn.pic glyphs/PlayPuase.pic glyphs/Mirror.pic glyphs/Rotate.pic glyphs/Pan.pic glyphs/ZoomIn.pic glyphs/ZoomOut.pic glyphs/Slide.pic glyphs/Manipulate.pic glyphs/SwapNext.pic glyphs/SwapPrevious.pic glyphs/RemoveSlide.pic glyphs/AddSlide.pic glyphs/Interval.pic glyphs/LEDSeg.pic glyphs/LEDSegNarrow.pic glyphs/LED1Narrow.pic glyphs/LEDDigitDash.pic glyphs/LED0.pic glyphs/LED1.pic glyphs/LED2.pic glyphs/LED3.pic glyphs/LED4.pic glyphs/LED5.pic glyphs/LED6.pic glyphs/LED7.pic glyphs/LED8.pic glyphs/LED9.pic glyphs/LEDSlash.pic glyphs/LEDSlashSeg.pic glyphs/Busy.pic glyphs/RaisedButton.pic glyphs/DepressedButton.pic glyphs/PanelBkgd.pic glyphs/MaskButton.pic glyphs/ZoomCursor.pic glyphs/Save.pic Glyphs/Exit.pic glyphs/BusyThumbnail.pic glyphs/BusyImage.pic glyphs/Credits.pic

PIC_OBJECTS     =   glyphs/StatusPanel.o glyphs/NoDisc.o glyphs/InvalidDisc.o glyphs/PhotoCDLogo.o glyphs/Stop.o glyphs/RepeatOff.o glyphs/RepeatOn.o glyphs/ImageFrameHoriz.o glyphs/ImageFrameVert.o glyphs/SlideFrameHoriz.o glyphs/SlideFrameVert.o glyphs/Pause.o glyphs/Normalize.o glyphs/PrevImage.o glyphs/NextImage.o glyphs/Image.o glyphs/Thumbnail.o glyphs/PlayOff.o glyphs/PlayOn.o glyphs/PlayPause.o glyphs/Mirror.o glyphs/Rotate.o glyphs/Pan.o glyphs/ZoomIn.o glyphs/ZoomOut.o glyphs/Slide.o glyphs/Manipulate.o glyphs/SwapNext.o glyphs/SwapPrevious.o glyphs/RemoveSlide.o glyphs/AddSlide.o glyphs/Interval.o  glyphs/LEDSeg.o glyphs/LEDSegNarrow.o glyphs/LED1Narrow.o glyphs/LEDDigitDash.o glyphs/LED0.o glyphs/LED1.o glyphs/LED2.o glyphs/LED3.o glyphs/LED4.o glyphs/LED5.o glyphs/LED6.o glyphs/LED7.o glyphs/LED8.o glyphs/LED9.o glyphs/LEDSlash.o glyphs/LEDSlashSeg.o glyphs/Busy.o glyphs/RaisedButton.o glyphs/DepressedButton.o glyphs/PanelBkgd.o glyphs/MaskButton.o glyphs/ZoomCursor.o glyphs/Save.o glyphs/Exit.o glyphs/BusyThumbnail.o glyphs/BusyImage.o glyphs/Credits.o
OBJECTS         =   main.o revision.o error.o display.o interface.o state.o event.o status.o control.o glyphs.o led.o session.o thumbnail.o image.o slide.o manipulate.o slideshow.o quantization.o scaling.o ham8.o shimmer.o nvstorage.o zoom.o credits.o task.o memory.o bsprintf.o $(PIC_OBJECTS)

STARTUP         =   LIB:c.o
LIBS            =   LIB:amiga.lib LIB:debug.lib LIB:sc.lib

##############################################################################
#
#   Build stripped load file
#
##############################################################################

$(LD_STRIP):    $(LD_FILE)
                $(LINKER) FROM $(LD_FILE) TO $(LD_STRIP) $(LINKER_OPTS_STRIP)

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

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

.pic.o:
        sbox -x $*.pic ram:$>.x
        d2o ram:$>.x _box$> $*.o -h "_NOMERGE"
        delete ram:$>.x

##############################################################################
#
#   Dependencies
#
##############################################################################

global.h: glyphs.h
    touch global.h

main.o: main.c global.h interface.h image.h
error.o: error.c global.h
display.o: display.c global.h display.h interface.h
interface.o: interface.c global.h interface.h glyphs.h
state.o: state.c global.h
glyphs.o: glyphs.c global.h glyphs.h
event.o: event.c global.h interface.h
status.o: status.c global.h interface.h
control.o: control.c global.h interface.h
glyphs.o: glyphs.c global.h glyphs.h
led.o: led.c global.h interface.h glyphs.h
session.o: session.c global.h image.h
thumbnail.o: thumbnail.c global.h display.h interface.h image.h
image.o: image.c global.h display.h interface.h image.h quantization.h scaling.h
slide.o: slide.c global.h display.h interface.h image.h
manipulate.o: manipulate.c global.h display.h interface.h image.h
slideshow.o: slideshow.c global.h display.h interface.h image.h
quantization.o: quantization.c global.h image.h quantization.h
scaling.o: scaling.c global.h display.h image.h scaling.h
ham8.o: ham8.c global.h display.h image.h quantization.h
zoom.o: zoom.c global.h display.h image.h glyphs.h
shimmer.o: shimmer.c global.h display.h interface.h
nvstorage.o: nvstorage.c global.h image.h
credits.o: credits.c global.h display.h interface.h
task.o: task.c global.h
memory.o: memory.c global.h image.h
bsprintf.o: bsprintf.a
revision.o: revision.c $(MODNAME)_rev.h

##############################################################################
#
#   Bump revision
#
##############################################################################

version:
    @BumpRev $(VERSION) $(MODNAME)_rev

##############################################################################
#
#   Clean-up object files
#
##############################################################################

clean:
    @Delete \#?.o
    @Delete $(LD_FILE) $(LD_STRIP) $(MODNAME).map

##############################################################################
#
#   Release
#
##############################################################################

internal:
# Release source and executable to heartofgold
    delete $(REMOTE)/((\#?.(c|h|a|i|pic|rev|doc|library|ld|ld.strip))|SMakefile)
    protect ((\#?.(c|h|a|i|pic|rev|doc))|SMakefile|$(LD_STRIP)) +r quiet
    copy ((\#?.(c|h|a|i|pic|rev|doc|library|ld|ld.strip))|SMakefile) $(REMOTE)
    copy glyphs/\#?.pic $(REMOTE)/glyphs
    copy $(MODNAME).ld.strip $(REMOTE)

# Update local disk image
    copy LIBS:photocd.library disk/libs
    copy photocd.ld.strip disk/PhotoCD

# Release disk image to SoftServe
    delete $(DISK_IMAGE)/\#? ALL FORCE
    makedir $(DISK_IMAGE)/libs
    copy LIBS:photocd.library $(DISK_IMAGE)/libs
    copy LIBS:commodities.library $(DISK_IMAGE)/libs
    copy LIBS:specialfx.library $(DISK_IMAGE)/libs
    makedir $(DISK_IMAGE)/Tools
    makedir $(DISK_IMAGE)/Tools/Commodities
    copy SYS:Tools/Commodities/Blanker $(DISK_IMAGE)/Tools/Commodities
    makedir $(DISK_IMAGE)/s
    copy disk/s/startup-sequence $(DISK_IMAGE)/s
    makedir $(DISK_IMAGE)/c
    copy c:setpatch $(DISK_IMAGE)/c
    makedir $(DISK_IMAGE)/l
    copy l:port-handler $(DISK_IMAGE)/l
    makedir $(DISK_IMAGE)/devs
    copy devs:serial.device $(DISK_IMAGE)/devs
    copy photocd.ld.strip $(DISK_IMAGE)/PhotoCD
