GNUmakefile 6.12 KB
#!smake
#
#
#	Makefile for Disk Drive IPL4
#
#		Made by nishida@ead
#		Modified to check into the source tree by has@rd3
#
#		Directories:
#			PROD		For prod type with bulk address
#			PROD.G		For prod type with cart address
#			PRODUSA		For prod(USA) type with bulk address
#			PRODUSA.G	For prod(USA) type with cart address
#			DEV		For dev type with bulk address
#			DEV.G		For dev type with cart address
#


include $(ROOT)/usr/include/make/PRdefs

SUBDIRS = PROD PRODUSA DEV PROD.G PRODUSA.G DEV.G		# .G stands for "gload" version (e-board version)

EXPORTS_SUBDIRS = PROD.G PRODUSA.G DEV.G

COMMONPREF = ipl4

APP =           execute
FINTARG	  = ipl4

MKDEPOPT  = -MDupdate $(MKDEPFILE)
MKDEPFILE = Makedepend

CCFLAGS   = $(MKDEPOPT) -Wab,-r4300_mul -O2 -float -mips2 -xansi -signed -fullwarn -prototypes -Xcpluscomm -non_shared -DF3DEX_GBI -nostdinc -I$(ROOT)/usr/include -I$(ROOT)/usr/include/PR -G 0 -c $(LCDEFS)
LDFLAGS   = $(MKDEPOPT) -nostdlib -L$(ROOT)/usr/lib -L$(ROOT)/usr/lib/PR


#################################################################################
#																				#
#	Compile switchs																#
#																				#
#	Language switch		JAPANESE / ENGLISH										#
#	IPL ROM Switch		DISKROM  / CARTROM										#
#	Disk ID Switch		DEVELOP_ID / JAPAN_ID / USA_ID							#
#																				#
#################################################################################

SWITCHS    = 
IPLFLAGS   = -v -j


#################################################################################
#																				#
#	C source files																#
#																				#
#################################################################################

CODEFILES = \
grphmain.c \
bootdisk.c \
drawmain.c \
drawmark.c \
drawcube.c \
drawwave.c \
drawskel.c \
drawleaf.c \
sequence.c \
mathfunc.c \
setclock.c \
seqmario.c

# diskmain.c and ipl4main.c and drawmesg.c were moved to "no shared files" by has@rd3

#################################################################################
#																				#
#	Assember source files														#
#																				#
#################################################################################

ASMBFILES = \
bootstrap.s \
kanread.s


#################################################################################
#																				#
#	Data files																	#
#																				#
#################################################################################

DATAFILES = \
buffer.c \
ncube.c \
mario.c

# static.c was moved by has@rd3

#################################################################################
#																				#
#	Nosh files																	#
#																				#
#################################################################################

NOSHFILES = \
diskmain.c	\
drawmesg.c 	\
ipl4main.c


#################################################################################
#																				#
#	Object files																#
#																				#
#################################################################################

OBJFILES = \
AUDIO/cpuaudio.o \
BUMPMAP/bumpmap.o \
BUMPMAP/bumpmath.o

OBJDIRS = AUDIO BUMPMAP FONT


#################################################################################
#																				#
#	Make rom																	#
#																				#
#################################################################################


IPL4MASK = mask
IPL4FILE = ipl4

ROMFILE	 = rom
ROMMAP	 = rom.map

LINKOUT	 = code.out
LINKMAP  = link.map

#default: $(ROMFILE)


sinclude $(MKDEPFILE)

.SUFFIXES: .o .s .c

.c.o:
	cc $(CCFLAGS) $(SWITCHS) $<

.s.o:
	cc $(CCFLAGS) $(SWITCHS) $<


CODEOBJECTS = $(CODEFILES:.c=.o)
ASMBOBJECTS = $(ASMBFILES:.s=.o)
DATAOBJECTS = $(DATAFILES:.c=.o)

NOSHOBJECTS = $(NOSHFILES:.c=.o)
SHOBJECTS   = $(CODEOBJECTS) $(ASMBOBJECTS) $(DATAOBJECTS)

LDIRT       = $(ROMMAP) $(LINKOUT) $(LINKMAP) $(OBJDIRS) execute  \
		makeipl	$(FINTARG) ipl3

.PATH: ..

.NOTPARALLEL:

sinclude locdefs

default: $(_FORCE)
	@for i in $(SUBDIRS) ; do \
	    echo "\t=== $$i ==="; \
	    cd $$i ; \
	    $(MAKE) -f ../GNUmakefile loc_$@ ; \
	    cd .. ; \
	done

$(OBJDIRS):
	uudecode $*.tar.uu
	tar xf $*.tar
	rm $*.tar

recompile: $(OBJDIRS) $(SHOBJECTS) makeipl
	@for i in $(SUBDIRS) ; do \
	    echo "\t=== $$i ==="; \
	    cd $$i ; \
	    for j in $(SHOBJECTS) $(OBJDIRS) makeipl; do \
		ln -sf ../$$j . ; \
	    done ; \
	    $(MAKE) -f ../GNUmakefile loc_$@ ; \
	    cd .. ; \
	done

clean clobber: $(_FORCE)
	rm -fr $(MKDEPFILE) *.o makeipl
	for i in $(OBJDIRS) ; do \
	    rm -rf $$i $$i.tar ; \
	done
	for i in $(SUBDIRS) ; do \
	    echo "\t=== $$i ==="; \
	    cd $$i ; \
	    $(MAKE) -f ../GNUmakefile loc_$@ ; \
	    cd .. ; \
	done

install exports: $(_FORCE)
	@for i in $(EXPORTS_SUBDIRS) ; do \
	    echo "\t=== $$i ==="; \
	    cd $$i ; \
	    $(MAKE) -f ../GNUmakefile loc_$@ ; \
	    cd .. ; \
	done


include $(COMMONRULES)

$(LINKOUT):	$(CODEOBJECTS) $(ASMBOBJECTS) $(OBJFILES) $(NOSHOBJECTS)
		ld  -m -o $(LINKOUT) -r $(CODEOBJECTS) $(ASMBOBJECTS) $(OBJFILES) $(NOSHOBJECTS) $(LDFLAGS) > $(LINKMAP)

$(NOSHOBJECTS):	$(NOSHFILES)

$(ROMFILE) $(APP): $(LINKOUT) $(DATAOBJECTS) static.o ../spec $(NOSHOBJECTS)
		if test "$(NAME)" = "PROD_G" -o "$(NAME)" = "PRODUSA_G" -o "$(NAME)" = "DEV_G";  \
		then \
			makerom -m -r $(ROMFILE) ../spec > $(ROMMAP);  \
		else \
			uudecode ipl3.uu;  \
			makerom -m -b ipl3 -h ../romheader -r $(ROMFILE) ../spec > $(ROMMAP);  \
		fi

$(FINTARG): makeipl $(ROMFILE)
		makeipl
$(IPL4MASK): $(IPL4FILE)
		cp $(IPL4FILE) $(IPL4MASK)
		makemask $(IPL4MASK)


#################################################################################
#																				#
#	Make makeipl																#
#																				#
#################################################################################

makeipl: makeipl.c
	cc -O -o makeipl makeipl.c


#################################################################################
#																				#
#	Clean																		#
#																				#
#################################################################################

#clean:
#	rm $(CODEOBJECTS) $(ASMBOBJECTS) $(DATAOBJECTS) $(LINKOUT) $(LINKMAP) $(ROMFILE) $(ROMMAP)