Makefile 2.6 KB
##########################################################################
#
# Makefile for RSP line graphics microcode
#
##########################################################################

PRDEPTH=../../../../
include $(PRDEPTH)/PRdefs

#
UCODE = gspL3DPEX
GMAIN = ../../gmain.s

# local defs
LCDEFS = $(HW_FLAGS) -DLINE3D -DSMARTDLCOUNT -DSMARTINP -DMTXNOLMT \
	-DMOREDLLNK -DF3DEX_GBI -DBRANCH_Z -DSWITCH_UCODE -DFORCE_MMTX_LOAD

# local includes
LCINCS = -I. -I../.. -I$(ROOT)/usr/include -I$(ROOT)/usr/include/PR

LDIRT  = *.dat *.lst *.sym *.dbg *.elf *.tvd *~			\
		gfillnops.s gfillnops.dram.s gfillnops.fifo.s

GDIRT  = *.u $(UCODE).fifo

GFX_INCL = 	../../gdmem.h ../../gfx_regs.h

#
# this is the subset of the "common" graphics code we use here:
#
COMMON_GFX_CODE =	$(GMAIN) ../../gyield.s ../../gdone.s		\
			../../ginit.s ../../gboot.s ../../newt.s	\
			../../goutfifo.s ../../gdma.s ../../gimm.s	\
			../../grdp.s ../../gmtx.s ../../gvtx.s		\
			../../gflight.s ../../goverlays.s ../../gloaduc.s

LINE_CODE = 	gline.s gclipl.s

INST_LIB_TARGETS = 	$(UCODE).fifo.o

TARGETS =	$(UCODE).fifo				\
		$(UCODE).fifo.tvd			\
		${INST_LIB_TARGETS}

default: ${TARGETS} checksize

install exports: ${TARGETS} checksize
	$(INSTALL) -m 555 -F /usr/lib/PR $(INST_LIB_TARGETS)

include $(PRDEPTH)/PRrules

##########################################################################
#
# use the RSP linker 'buildtask' to construct the tasks from the objects.
# use the rsp2elf program to construct the debug executables and library
# executables.
#
# 'dd' is used to chop the data section to the minimum required, in
# order to save ROM/RAM space.
#

#
# the 3D line ucode with output to circular DRAM fifo:
#
$(UCODE).fifo:	$(UCODE).fifo.u newt.u
	${BUILDTASK} -f 1 -o $@ $(UCODE).fifo.u newt.u
	dd if=$@.dat of=tmp3.dat bs=1 count=2048
	mv tmp3.dat $@.dat

$(UCODE).fifo.o:	$(UCODE).fifo
	${RSP2ELF} -p -r $?

$(UCODE).fifo.tvd:	$(UCODE).fifo
	${RSP2ELF} -p $?

#
# Ensure IMEM size does not overflow
#
checksize:	${INST_LIB_TARGETS}
	../../sizecheck ${INST_LIB_TARGETS}
	../../labeltest


#############################################################################
#
# build the individual objects.
#

newt.u:	$(UCODE).fifo.u ../../newt.s ${COMMON_GFX_CODE}
	@echo "****"
	@echo "**** Building $@:"
	@echo "****"
	${RSPASM} ${LCINCS} ${LCDEFS} -DNEWT_ALONE -S $(UCODE).fifo.u -o $@ ../../newt.s

$(UCODE).fifo.u:	${COMMON_GFX_CODE} ${LINE_CODE} ${GFX_INCL}
	@echo "****"
	@echo "**** Building $@:"
	@echo "****"
	${RSPASM} ${LCINCS} ${LCDEFS} -DOUTPUT_FIFO -o $@ ../../gmain.s
	@echo " "

# DO NOT DELETE THIS LINE -- make depend depends on it.