# Copyright 1996 Acorn Computers Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Makefile for SprExtend
#
# ***********************************
# ***    C h a n g e   L i s t    ***
# ***********************************
# Date       Name    Description
# ----       ----    -----------
# 25-May-94  AMcC    Created.
# 12-Aug-94  AMcC    Updated for modified SpriteExtend (JPEG support)
# 29-Oct-94  AMcC    Exports hdr.SprExtend (SWI defs)
#                    Data file now called CFSIjpeg (was CFSI-jpeg)
#                    - exported to ChangeFSI at install time
# 01-Feb-95  GPS     Now compiles with cc505
# 13-Feb-95  GPS     CFSIjpeg now compiles with cc505
# 15-May-01  SNB     Re-engineered to use objasm throughout, not aasm
#

#
# Paths
#
EXP_HDR = <export$dir>

# To switch between making debugging and non-debugging versions of SprExtend:
#   change the #define of DEBUG at the top of c.PutScaled
#   change the SETL of 'debug' in sources.SprExtend.

ASFLAGS  = -APCS 3/32bit/nofp -cpu 4
TFLAGS   = -APCS 3/32bit/nofp
CDEFINES = -DRISCOS -DASMHUFF
#CDEFINES += -DDEBUG
CINCLUDES = -IC:

#
# Generic options:
#
include StdTools

#
# Libraries
#
CLIB = CLIB:o.stubs

#
# Program specific options:
#
COMPONENT = SpriteExtend
TARGET    = SprExtend
ROM_SOURCE= sources.${TARGET}
ROM_TARGET= rm.${TARGET}
LOCALMSG  = rm.${TARGET}M
EXPORTS   = ${EXP_HDR}.SprExtend

SFILES =\
 s.jhdr\
 s.putscaled\
 s.stdpalette\
 s.yuvtabs

# Extra utilites (generate assembler code)
MAKEJHDR   = utils.makejhdr
GENPALETTE = utils.genpalette
GENYUVTABS = utils.genyuvtabs

# Needed for ChangeFSI
CFSI-JPEG  = data.CFSIjpeg

#
# Rule patterns
#
.SUFFIXES: .o .oh .c .sources

.c.o:;       ${CC} -c ${CFLAGS} ${TFLAGS} -o $@ $<
.c.oh:;      ${CC} -c ${CFLAGS} -o $@ $<
.sources.o:; ${AS} ${ASFLAGS} -from $< -to $@

#
# Rules:
#
all: ${CFSI-JPEG} ${LOCALMSG}
        @echo ${COMPONENT}: all built

install: ${CFSI-JPEG}
        ${CP} ${CFSI-JPEG} ${INSTDIR}.CFSIjpeg ${CPFLAGS}
        Access ${INSTDIR}.CFSIjpeg lr/r
        @echo ${COMPONENT}: CFSIjpeg file installed

cfsi-jpeg: ${CFSI-JPEG}
        @echo ${COMPONENT}: CFSIjpeg file generated

#
# Generic rules:
#
rom: ${ROM_TARGET}
        @echo ${COMPONENT}: rom module built

export: ${EXPORTS}
        @echo ${COMPONENT}: export complete

install_rom: ${ROM_TARGET}
        ${CP} ${ROM_TARGET} ${INSTDIR}.${TARGET} ${CPFLAGS}
        @echo ${COMPONENT}: rom module installed

clean:
        ${RM} ${ROM_TARGET}
        ${RM} ${LOCALMSG}
        ${RM} ${GENPALETTE}
        ${RM} ${GENYUVTABS}
        ${RM} ${MAKEJHDR}
        ${RM} ${CFSI-JPEG}
        ${WIPE} o.* ${WFLAGS}
        ${WIPE} oh.* ${WFLAGS}
        ${WIPE} s.* ${WFLAGS}
        @echo ${COMPONENT}: cleaned

resources:
        ${MKDIR} ${RESDIR}.${TARGET}
        TokenCheck LocalRes:Messages
        ${CP} LocalRes:Messages  ${RESDIR}.${TARGET}.Messages  ${CPFLAGS}
        @echo ${COMPONENT}: resource files copied


ROM_OBJECT  = ${TARGET}.o
${ROM_OBJECT}: ${ROM_SOURCE} ${SFILES}
        do mkdir -p o
        ${AS} ${ASFLAGS} -o $@ ${ROM_SOURCE}
${ROM_TARGET}: ${ROM_OBJECT}
        ${LD} -o $@ -rmf ${ROM_OBJECT}

# Get the Messages from somewhere other than Resources:$.Resources.SprExtend
LCL_OBJECT = ${TARGET}M.o
${LOCALMSG}: ${LCL_OBJECT}
        ${LD} -rmf -o $@ ${LCL_OBJECT}
${LCL_OBJECT}: ${ROM_SOURCE} ${SFILES}
        ${AS} ${ASFLAGS} -o $@ ${ROM_SOURCE} -PD "localmessages SETL {TRUE}"

# Export the SWI definitions to Hdr:
${EXP_HDR}.SprExtend: hdr.SprExtend
        ${CP} hdr.SprExtend $@ ${CPFLAGS}
#
# Generate the SFILES
#
.c.s:;  ${CC} -S ${CFLAGS} ${TFLAGS} -ff -zps1 -DEMBED -DSOURCE_IS_$* $*.c
        ${SED} -e /IMPORT/d -e /dataseg/d -e /codeseg/d -e /AREA/d < s.$* > s.temp
        ${CP} s.temp s.$* ${CPFLAGS}d
        
s.yuvtabs: ${GENYUVTABS}
        ${GENYUVTABS} > $@

s.stdpalette: ${GENPALETTE}
        ${GENPALETTE} > $@

s.jhdr: ${MAKEJHDR}
        ${MAKEJHDR} > $@

${GENPALETTE}: oh.genpalette ${CLIB}
        ${LD} -o $@ oh.genpalette ${CLIB}

${GENYUVTABS}: oh.genyuvtabs ${CLIB}
        ${LD} -o $@ oh.genyuvtabs ${CLIB}

${MAKEJHDR}: oh.makejhdr ${CLIB}
        ${LD} -o $@ oh.makejhdr ${CLIB}
#
# For ChangeFSI:
#
${CFSI-JPEG}: Sources.cfsi-jpeg s.jhdr s.rojpeg s.stdpalette
        ${AS} ${ASFLAGS} -o o.cfsi-jpeg Sources.cfsi-jpeg
        ${LD} -bin -o $@ o.cfsi-jpeg

#
# Other bits:
#
j2s: o.j2s o.jdhuff o.jrevdct o.jcconv o.diffuse
        ${LD} -o $@ o.j2s o.jdhuff o.jrevdct o.jcconv o.diffuse ${CLIB}

o.diffuse: sources.diffuseo s.stdpalette
        ${AS} ${ASFLAGS} -from sources.diffuseo -to $@

o.jcconv: sources.jcconvo s.yuvtabs
        ${AS} ${ASFLAGS} -from sources.jcconvo -to $@

o.jdhuff: sources.jdhuffo s.jhdr
        ${AS} ${ASFLAGS} -from sources.jdhuffo -to $@

o.jrevdct: sources.jrevdcto
        ${AS} ${ASFLAGS} -from sources.jrevdcto -to $@

put: o.put
        ${LD} -o $@ o.put ${CLIB}

jput: o.jput
        ${LD} -o $@ o.jput ${CLIB}

tdct: o.testdct o.idcto
        ${LD} -o $@ o.testdct o.idcto ${CLIB}

# Dynamic dependencies: