SFILES			= apuasm.s font.s dspmixerasm.s
CFILES			= main.c apu.c sprintf.c dsp.c debug.c apumem.c
CIWRAMFILES		= isr.c dspmixer.c
OBJFILES		= 
OFILES			= $(SFILES:.s=.o) $(CFILES:.c=.o) $(CIWRAMFILES:.c=.iwram.o) $(OBJFILES)

AS = arm-elf-as
CC = arm-elf-gcc
OC = arm-elf-objcopy

MAKEDEPEND = $(CC) -M $(CFLAGS) -c $< -o $*.d

CFLAGS=-Wall -std=c99 -mtune=arm7tdmi -mcpu=arm7tdmi -mthumb-interwork -fverbose-asm
ASFLAGS=-mcpu=arm7tdmi -mthumb-interwork -D
OCFLAGS=-I binary -O elf32-littlearm -B arm7tdmi --rename-section .data=.rodata
LDFLAGS=-nostdlib

.PHONY: release debug clean

TARGET_ELF =   gbaspc.elf
TARGET_BIN =   gbaspc.gba

release:	CFLAGS += -O3 -g
release:    $(TARGET_BIN)

debug:		CFLAGS += -g
debug:		$(TARGET_BIN)

$(TARGET_BIN): $(TARGET_ELF)
	@echo "Creating rom..."
	@$(OC) -O binary $< $@
	@./GbaSPCBuilder.exe -add *.spc
#	gbafix -v -p -t'gbaspc' $@

$(TARGET_ELF): $(OFILES) Makefile
	@echo "Linking..."
	@$(CC) $(CFLAGS) -o $@ $(OFILES) -specs=gba.specs -Wl,$(LDFLAGS)

#zelda3s4.o: zelda3s4.spc
#	@echo "Creating data: $<"
#	@$(OC) $(OCFLAGS) $^ $@

%.o : %.s
	@echo "Assembling $<"
	@$(AS) $(ASFLAGS) -o $@ $<

%.o : %.c
	@echo "Compiling $<"
	@$(MAKEDEPEND)
	@$(CC) $(CFLAGS) -mthumb -c $< -o $@
	
%.iwram.o : %.c
	@echo "Compiling to IWRAM $<"
	@$(MAKEDEPEND)
	@$(CC) $(CFLAGS) -marm -c $< -o $@

clean:
	@echo "Cleaning..."
	@-rm -f $(OFILES) $(TARGET_ELF) $(TARGET_BIN) *.d

-include $(CFILES:.c=.d) $(CIWRAMFILES:.c=.d)