#-------------------------------------------------------------------------------
# Slaanesh Makefile for gpSpout
#-------------------------------------------------------------------------------

PROG		= gpSpout
AUTHOR		= "Slaanesh"
PROGNAME	= "gpSpout v1.2"
ICON		= "icon.bmp"

WARNINGS	= -Wall
DEVKITARM	= $(HOME)/devkitARM
GP32SDK		= ../LIBMIRKO
INCLUDES	= -I$(DEVKITARM)/arm-eabi/include -I$(GP32SDK)/include
LIBPATH		= -L$(GP32SDK)/lib
LIBS		= -lmirkoSDK -lm

OBJS		= sys_gp32.o \
		  spout.o \
		  enablecache.o

#-------------------------------------------------------------------------------
#todo: switch to march				   
CFLAGS	= $(INCLUDES) ${WARNINGS} -mcpu=arm920 -O3 \
	-mno-thumb-interwork -mstructure-size-boundary=8 \
	-msoft-float -ffast-math -freciprocal-math -fsingle-precision-constant \
	-falign-functions=16 -falign-loops -falign-labels -falign-jumps

LFLAGS	= ${LIBPATH} ${WARNINGS} -specs=gp32.specs   
CPPFLAGS= ${CFLAGS}

CROSS	= $(DEVKITARM)/bin/arm-eabi-
CC	= $(CROSS)gcc
CXX	= $(CROSS)g++
AS	= $(CROSS)gcc -c
CPP	= $(CROSS)gcc -E -P
LD	= $(CROSS)gcc
OBJCOPY	= $(CROSS)objcopy
B2FXE	= $(DEVKITARM)/bin/b2fxec

#-------------------------------------------------------------------------------

.PHONY : all clean

all: $(PROG).fxe

$(PROG).fxe: $(PROG).bin
	$(B2FXE) -f -t ${PROGNAME} -a ${AUTHOR} -b ${ICON} $< $@

$(PROG).bin: $(PROG).elf
	$(OBJCOPY) -O binary $< $@

$(PROG).elf: $(OBJS)
	$(LD) $(LFLAGS) -o $(PROG).elf $(OBJS) ${LIBS}

%.o: %.bin
	$(OBJCOPY) -I binary -O elf32-little $< $@ 

%.o: %.c
	$(CC) -c $(CFLAGS) -o $@ $<

%.o: %.cpp
	$(CXX) -c $(CFLAGS) -o $@ $<

%.o: %.S
	$(CPP) "-DIN_ASM" $(CPPFLAGS) $< > temp.s
	$(CC) -c $(CFLAGS) -o $@ temp.s 
	-rm temp.s

%.o: %.s
	$(CC) -c $(CFLAGS) -o $@ $<

clean:
	rm -rf $(OBJS) $(PROG).elf $(PROG).bin *.map *~
