#
# IP30prom Makerules
#   - This file is a wrapper which extends the standalone tree's commonrules
#     with rules peculiar to saio.
#   - the prom is now for the 40pin 512KB EEPROM part which will be the
#     external socketed prom part, and the prom firmware must be compiled
#     without graphics to come under 512KB and must use $(DEFINES) to compile
#   - The .d extension is used for object files for the download/debug 
#     test prom (dprom)
#   - The .g extension is used for object files for the download/debug 
#     test prom with symmon (dprom.DBG)
#   - The .x extension is used for object files for the fprom
#     flash prom is just like rprom but TEXTADDR starts higher
#   - The .z extension is used for object files for the rprom
#     recovery prom, is to allow recovery of fprom in case flash failure

# the "prom" image is now for the 512KB "dip" prom
ODEFINES=-DNOGFX

# FOBJECTS must be in this order to get loaded properly
FOBJECTS= ${ASFILES:.s=.x} ${CFILES:.c=.x}
ROBJECTS= ${RASFILES:.s=.z} ${RCFILES:.c=.z}
RDEFINES=-DFTEXTADDR=0x${FTEXTADDR}

# DROBJECTS must be in this order to get loaded properly
DROBJECTS= ${RASFILES:.s=.u} ${RCFILES:.c=.u}
DRDEFINES=-DFTEXTADDR=0x${FTEXTADDR} -DENETBOOT

# DOBJECTS must be in this order to get loaded properly
DOBJECTS= ${ASFILES:.s=.d} ${CFILES:.c=.d}
DDEFINES=-DENETBOOT 

# GOBJECTS must be in this order to get loaded properly
GOBJECTS= ${ASFILES:.s=.g} ${CFILES:.c=.g}
GDEFINES=-DENETBOOT -DSYMMON

.SUFFIXES: .d .g .x .z .u

.c.o:
	@if test ! -d ${TARGETDIR}; then mkdir ${TARGETDIR}; fi
	$(CCF) ${ODEFINES} $< -c -o $(TARGETDIR)/$(@F)
.s.o:
	@if test ! -d ${TARGETDIR}; then mkdir ${TARGETDIR}; fi
	$(ASF) $< -c -o $(TARGETDIR)/$@
.c.d:
	@if test ! -d ${TARGETDIR}; then mkdir ${TARGETDIR}; fi
	$(CCF) ${DDEFINES} $< -c -o $(TARGETDIR)/$(@F)
.s.d:
	@if test ! -d ${TARGETDIR}; then mkdir ${TARGETDIR}; fi
	$(ASF) ${DDEFINES} $< -c -o $(TARGETDIR)/$(@F)
.c.g:
	@if test ! -d ${TARGETDIR}; then mkdir ${TARGETDIR}; fi
	$(CCF) ${GDEFINES} $< -c -o $(TARGETDIR)/$@
.s.g:
	@if test ! -d ${TARGETDIR}; then mkdir ${TARGETDIR}; fi
	$(ASF) ${GDEFINES} $< -c -o $(TARGETDIR)/$(@F)
.c.x:
	@if test ! -d ${TARGETDIR}; then mkdir ${TARGETDIR}; fi
	$(CCF) $< -c -o $(TARGETDIR)/$(@F)
.s.x:
	@if test ! -d ${TARGETDIR}; then mkdir ${TARGETDIR}; fi
	$(ASF) $< -c -o $(TARGETDIR)/$@
.c.z:
	@if test ! -d ${TARGETDIR}; then mkdir ${TARGETDIR}; fi
	$(CCF) ${RDEFINES} $< -c -o $(TARGETDIR)/$(@F)
.s.z:
	@if test ! -d ${TARGETDIR}; then mkdir ${TARGETDIR}; fi
	$(ASF) ${RDEFINES} $< -c -o $(TARGETDIR)/$@
.c.u:
	@if test ! -d ${TARGETDIR}; then mkdir ${TARGETDIR}; fi
	$(CCF) ${DRDEFINES} $< -c -o $(TARGETDIR)/$(@F)
.s.u:
	@if test ! -d ${TARGETDIR}; then mkdir ${TARGETDIR}; fi
	$(ASF) ${DRDEFINES} $< -c -o $(TARGETDIR)/$@
