#******************************************************************************
#*
#*  $VER: SMakefile 1.11 (7.11.97)
#*  mpegvideo.datatype 1.11
#*
#*  SAS/C makefile for mpegvideo.datatype
#*
#*  Written 1996/1997 by Roland 'Gizzy' Mainz
#*  Original example source from David N. Junod
#*
#******************************************************************************

MODNAME                = mpegvideo.datatype
VERSION                = 1

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

C_COMPILER             = SC
C_COMPILER_OPTS        = ANSI STRICT INCDIR=Development:CGraphX/C/Include/ INCDIR=datatypes_library:Development/ INCDIR=animation_datatype: \
  PARM=REGISTER UCHAR NOSTACKCHECK NOMINC STRINGMERGE NOICONS MEMORYSIZE=HUGE ERRORREXX
C_COMPILER_DEBUG       = DEBUG=LINE IGNORE=165 DEFINE=FLOATDCT DEFINE=NDEBUG
C_COMPILER_OPTIMIZE    = OPTIMIZE OPTIMIZERINLINELOCAL OPTIMIZERDEPTH=6 OPTIMIZERRECURDEPTH=6 OPTIMIZERCOMPLEXITY=6 OPTIMIZERSCHEDULER OPTIMIZETIME

ASSEMBLER              = a68k
ASSEMBLER_OPTS         = -iinclude31: -o

LINKER                 = SLINK
LINKER_OPTS            = ADDSYM SMALLCODE SMALLDATA MAP "$(DEST)$(MODNAME).map" HLSXF PLAIN SWIDTH 16 VERBOSE
LINKER_OPTS_STRIP      = STRIPDEBUG VERBOSE NOICONS

C_SOURCES              = classbase.c stackswap.c dispatch.c mpeg16bit.c mpegamiga.c mpegdecoders.c mpeggdith.c mpeggray.c mpegjrevdct.c mpegfloatdct.c mpegmain.c mpegmotionvector.c mpegordered.c mpegparseblock.c mpegutil.c mpegvideo.c
ASM_SOURCES            = classinit.asm CreateHAMLine.asm endcode.asm

OBJECTS = $(DEST)classinit.o $(DEST)classbase.o $(DEST)stackswap.o $(DEST)dispatch.o \
    $(DEST)mpeg16bit.o $(DEST)mpegamiga.o $(DEST)mpegdecoders.o \
    $(DEST)mpeggdith.o $(DEST)mpeggray.o  $(DEST)mpegjrevdct.o  \
    $(DEST)mpegfloatdct.o $(DEST)mpegmain.o       $(DEST)mpegmotionvector.o \
    $(DEST)mpegordered.o  $(DEST)mpegparseblock.o $(DEST)mpegutil.o  \
    $(DEST)mpegvideo.o $(DEST)CreateHAMLine.o     $(DEST)endcode.o

STARTUP                =
LIBS                   = dlib:amiga31s.lib SC:lib/sc.lib ${LIBS2}


############################################################################################################################################################
# Rebuild the project...
#
all: do000ieee do020ieee do020881 do040881 do060881 $(MODNAME).doc


do000ieee:
	smake "DEST=000ieee/" \
    "C_COMPILER_SPECIALCPU=MATH=IEEE" \
    "C_COMPILER_SPECIALFLAGS=DEFINE USEIEEELIB" \
    "LIBS2=SC:lib/scmieee.lib" _app

do020ieee:
	smake "DEST=020ieee/" \
    "C_COMPILER_SPECIALCPU=CPU=68020 MATH=IEEE" \
    "C_COMPILER_SPECIALFLAGS=DEFINE USEIEEELIB DEFINE REQUIREDAFF=AFF_68020" \
    "LIBS2=SC:lib/scmieee.lib" _app

do020881:
	smake "DEST=020881/" \
    "C_COMPILER_SPECIALCPU=CPU=68020 MATH=68881" \
    "C_COMPILER_SPECIALFLAGS=DEFINE REQUIREDAFF=(AFF_68020|AFF_68881)" \
    "LIBS2=SC:lib/scm881.lib" _app

do040881:
	smake "DEST=040881/" \
    "C_COMPILER_SPECIALCPU=CPU=68040 MATH=68881" \
    "C_COMPILER_SPECIALFLAGS=DEFINE REQUIREDAFF=(AFF_68040|AFF_68881)" \
    "LIBS2=SC:lib/scm881.lib" _app

do060881:
	smake "DEST=060881/" \
    "C_COMPILER_SPECIALCPU=CPU=68060 MATH=68881" \
    "C_COMPILER_SPECIALFLAGS=DEFINE REQUIREDAFF=(AFF_68060|AFF_68881)" \
    "LIBS2=SC:lib/scm881.lib" _app

# entry for recusive make calls (internal target)
_app: $(LD_STRIP)


############################################################################################################################################################
# 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_COMPILER_DEBUG) $(C_COMPILER_OPTIMIZE) $(C_COMPILER_SPECIALFLAGS) $(C_COMPILER_SPECIALCPU) "$*.c" OBJECTNAME="$@"

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

############################################################################################################################################################
# All dependencies...
#
# BUG: The mpeg#?.c dependencies are not listed here completely...
#
$(DEST)CreateHAMLine.o:    CreateHAMLine.asm
$(DEST)classinit.o:        classinit.asm $(MODNAME)_rev.rev classbase.i
$(DEST)classbase.o:        classbase.c classbase.h
	$(C_COMPILER) $(C_COMPILER_OPTS) $(C_COMPILER_DEBUG) $(C_COMPILER_OPTIMIZE) $(C_COMPILER_SPECIALFLAGS) "$*.c" OBJECTNAME="$@"
$(DEST)stackswap.o:        stackswap.c classbase.h
$(DEST)dispatch.o:         dispatch.c classbase.h
$(DEST)endcode.o:          endcode.asm
$(DEST)mpeg16bit.o:        mpeg16bit.c
$(DEST)mpegamiga.o:        mpegamiga.c
$(DEST)mpegdecoders.o:     mpegdecoders.c
$(DEST)mpeggdith.o:        mpeggdith.c
$(DEST)mpeggray.o:         mpeggray.c
$(DEST)mpegjrevdct.o:      mpegjrevdct.c
$(DEST)mpegfloatdct.o:     mpegfloatdct.c
$(DEST)mpegmain.o:         mpegmain.c
$(DEST)mpegmotionvector.o: mpegmotionvector.c
$(DEST)mpegordered.o:      mpegordered.c
$(DEST)mpegparseblock.o:   mpegparseblock.c
$(DEST)mpegutil.o:         mpegutil.c
$(DEST)mpegvideo.o:        mpegvideo.c
$(DEST)CreateHAMLine.o:    CreateHAMLine.asm

############################################################################################################################################################
# Make protos
#
protos:
	MKProto $(C_SOURCES) TO class_iprotos.h

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


############################################################################################################################################################
# Delete all object files
#
clean: 000ieee/clean 020ieee/clean 020881/clean 040881/clean 060881/clean

000ieee/clean:
	smake "DEST=000ieee/" _clean

020ieee/clean:
	smake "DEST=020ieee/" _clean

020881/clean:
	smake "DEST=020881/" _clean

040881/clean:
	smake "DEST=040881/" _clean

060881/clean:
	smake "DEST=060881/" _clean

_clean: # smakefile internal target
	-Delete $(OBJECTS)
	-Delete $(LD_FILE) $(LD_STRIP) $(DEST)$(MODNAME).map(%|info) \#?.BAK


############################################################################################################################################################
# Build autodoc
#
$(MODNAME).doc:    $(C_SOURCES)
	Autodoc -I -C >$(MODNAME).doc $(C_SOURCES)


############################################################################################################################################################
# Install the current build locally
#
install:
	Copy CLONE FROM $(LD_STRIP) TO SYS:Classes/DataTypes/$(MODNAME)
	Avail FLUSH

