

CC = arm-elf-gcc
AS = arm-elf-as
LD = 	arm-elf-ld
OBJCOPY = arm-elf-objcopy

DEPENDFILE	=	Makedepend
MAPFILE		=	dcircus.map
TARGET_ELF	=	dcircus.elf
TARGET_BLU_ELF	=	dcircus+.elf
TARGET_BIN	=	dcircus.gxb
TARGET_BLU_BIN	=	dcircus+.gxb
TARGET_FXE	=	dcircus.fxe
TARGET_BLU_FXE	=	dcircus+.fxe
LDSCRIPT	=	lnkscript
X_LDSCRIPT	= 	arm-gp32bin.x


.SFILES =	crt0x_gp32.s 

.CFILES	=	\
	src/dcircus.c \
	src/game.c \
	src/gameover.c \
	src/gpdata.c \
	src/highscore.c \
	src/rand.c \
	src/setup.c \
	src/title.c \

.OFILES	=	$(.SFILES:.s=.o) $(.CFILES:.c=.o)


OPTFLAGS =	-mtune=arm920 -march=armv4t -marm -mno-thumb-interwork \
		-msoft-float -ffast-math -nostdlib -fno-common \
		-ffreestanding -fno-builtin -fno-exceptions \
		-mstructure-size-boundary=8 -fomit-frame-pointer \
		-fstrict-aliasing -O6 \


CFLAGS	=	-I$(GP32PATH)/include/SDL -I$(GP32PATH)/include \
		$(OPTFLAGS) -DGFXST -DGP32 -DGP32_LIBC \
		-Wall -Wno-switch -DUSE_FIXED_POINT \

CFLAGS += -DDATA_PREFIX=\"/gpmm/dcircus/\" -DSOUND -DDIVISOR=2 -DMUSIC -DJOY_YES

LDFLAGS	=	-Map $(MAPFILE) -nostartfiles --script $(X_LDSCRIPT) \
		-L$(GP32PATH)/lib
		
SYSTEMLIBS =	-lSDL_mixer -lSDL_image -lSDL \
		-lpng -ljpeg -lz -lc -lm -lgcc

DOLINK =	$(LD) $(LDFLAGS) $(.OFILES) $(SYSTEMLIBS) -o $(TARGET_ELF)

SYSTEMLIBS_BLU = -lSDL_mixer -lSDL_image -lSDL \
		-lpng -ljpeg -lz -lc_bluplus -lm -lgcc

DOLINK_BLU =	$(LD) $(LDFLAGS) $(.OFILES) $(SYSTEMLIBS_BLU) -o $(TARGET_BLU_ELF)


all:    clean depend $(TARGET_FXE) $(TARGET_BLU_FXE)


$(TARGET_FXE): $(TARGET_BIN)
	b2fxec -b icon.bmp $< $@

$(TARGET_BIN): $(TARGET_ELF)
	$(OBJCOPY) -O binary $< $@

$(TARGET_ELF): $(.OFILES) $(DEPENDFILE)
	$(DOLINK)

$(TARGET_BLU_FXE): $(TARGET_BLU_BIN)
	b2fxec -b icon.bmp $< $@

$(TARGET_BLU_BIN): $(TARGET_BLU_ELF)
	$(OBJCOPY) -O binary $< $@

$(TARGET_BLU_ELF): $(.OFILES) $(DEPENDFILE)
	$(DOLINK_BLU)


.PHONY: all clean depend


tags:	$(DEPENDFILE)
	ctags -e *.c *.s *.h *.S

clean:
	-rm -f $(.OFILES) $(DEPENDFILE) $(MAPFILE) $(TARGET_ELF) $(TARGET_BIN) $(TARGET_FXE) TAGS $(TARGET_BLU_ELF) $(TARGET_BLU_BIN) $(TARGET_BLU_FXE)

send: $(TARGET_FXE)
	gplink -c -x put $(TARGET_FXE) /GPMM

depend:
	$(CC) $(CFLAGS) -M $(.CFILES) > $(DEPENDFILE)

$(DEPENDFILE):
	$(CC) $(CFLAGS) -M $(.CFILES) > $(DEPENDFILE)

include $(DEPENDFILE)
