
_FINAL = 1

ifndef LOCAL
LOCAL=JAPAN
endif

##############################################################################

LIB = $(ROOT)/usr/lib
LPR = $(LIB)/PR
INC = $(ROOT)/usr/include

CC = gcc
LD = ld

MAKEROM  = mild
MAKEMASK = makemask

COMP  = $(DM64ROOT)\tool\comp
COMP2 = $(DM64ROOT)\tool\compress -c9
NMSYM = $(DM64ROOT)\tool\nmsym
MKDEP = $(DM64ROOT)\tool\mkdep

SEGSIZE = $(DM64ROOT)\tool\segsize

APP     = data.out
TARGETS = data.n64

##############################################################################

CFLAGS  = $(LCDEFS) $(LCINCS) $(LCOPTS) $(GCCFLAG) $(OPTIMIZER)
AFLAGS  = -mcpu=vr4300 $(CFLAGS)
GCCFLAG = -c -D_MIPS_SZLONG=32 -D_MIPS_SZINT=32 -mno-mips-tfile

#HW_FLAGS = -DPTN64

ifdef _FINAL
LCDEFS = $(HW_FLAGS) -DLOCAL=$(LOCAL) -DF3DEX_GBI_2 -DNDEBUG -D_FINALROM
LCOPTS = -G 0
else
LCDEFS = $(HW_FLAGS) -DLOCAL=$(LOCAL) -DF3DEX_GBI_2 -DDEBUG
LCOPTS = -G 0 -g
endif

LCINCS = -I. -I$(INC)/PR -I$(INC) -I$(GCCDIR)/mipse/include -I$(DM64ROOT)

OPTIMIZER = -O9

##############################################################################

LDFLAGS = $(MKDEPOPT) -L$(LIB) $(N64LIB) -L$(GCCDIR)/mipse/lib -lkmc

ifdef _FINAL
N64LIB = -lgultra_rom
else
N64LIB = -lgultra_d
endif

##############################################################################

ifdef _FINAL
MILDFLAGS   = -I$(DM64ROOT) -DLOCAL=$(LOCAL) -s 9
DO_MAKEMASK = $(MAKEMASK) $(TARGETS)
else
MILDFLAGS   = -I$(DM64ROOT) -DLOCAL=$(LOCAL) -m
DO_MAKEMASK = rem $(MAKEMASK) $(TARGETS)
endif

##############################################################################

.SUFFIXES: .seg .cmp .zzz

.c.o:
	$(CC) $(CFLAGS) $<

.s.o:
	$(CC) $(AFLAGS) $<

.seg.cmp:
	$(COMP) $<>>map.txt

.seg.zzz:
	$(COMP2) $<>>map.txt
	copy $@ $(LOCAL)

##############################################################################

ASMFILES = 

ASMOBJECTS = $(ASMFILES:.s=.o)

##############################################################################

CODEFILES = 

CODEOBJECTS = $(CODEFILES:.c=.o)

##############################################################################

DATAFILES = \
	anime_a.c \
	anime_b.c \
	anime_c.c \
	anime_d.c \
	anime_e.c \
	anime_f.c \
	anime_g.c \
	anime_h.c \
	anime_i.c \
	anime_j.c \
	anime_k.c \
	anime_l.c \
	anime_m.c \
	anime_n.c \
	anime_o.c \
	anime_mario.c \
	anime_virus_b.c \
	anime_virus_r.c \
	anime_virus_y.c \
	anime_smog.c \

DATAOBJECTS = $(DATAFILES:.c=.o)

##############################################################################

CODESEGMENT = $(DM64ROOT)\tool\codesegment.o
OBJECTS     = $(CODEOBJECTS) $(DATAOBJECTS)
SEGFILES    = $(OBJECTS:.o=.seg)
CMPFILES    = $(OBJECTS:.o=.cmp)
ZZZFILES    = $(OBJECTS:.o=.zzz)
SEGMENTSIZE = $(LOCAL)/segsize.h

##############################################################################

default: $(ZZZFILES)
#$(CODESEGMENT): $(CODEOBJECTS) $(ASMOBJECTS)
#	$(LD) -o $(CODESEGMENT) -r $(CODEOBJECTS) $(ASMOBJECTS) $(LDFLAGS)

$(TARGETS) $(APP): spec $(CODESEGMENT) $(OBJECTS)
	$(MAKEROM) spec -r $(TARGETS) -e $(APP) $(MILDFLAGS)>map.txt
	$(DO_MAKEMASK)

$(SEGFILES): $(TARGETS) $(APP)
	nm $(APP)|$(NMSYM) $(TARGETS)
	del code.seg

$(SEGMENTSIZE): $(SEGFILES)
	dir /b *.seg|sort>segment.txt
	$(SEGSIZE)<segment.txt>$(SEGMENTSIZE)
	del segment.txt

$(CMPFILES): $(SEGFILES) $(SEGMENTSIZE)

$(ZZZFILES): $(SEGFILES) $(SEGMENTSIZE)

##############################################################################

rom:
	del codesegment.o
	$(MAKE) _FINAL=1

dep:
	$(MKDEP) $(LCINCS) $(CODEFILES) $(DATAFILES)>con

clean:
	del *.o
	del *.seg
	del *.zzz
	del $(APP)
	del $(TARGETS)

##############################################################################

