#  *** PocketMotus GBA ***
# Franois PESSAUX June 2004
# This program is freeware.
# Use its sources as you whant provided that you leave this copyright unchanged
# and that you drop a small word telling that I'm the author of these sources.
# Thank's a lot.
#   --Francois

# Makefile pour utiliser avec devKitARM.
CROSS = /usr/local/devkitARM_r6/bin/arm-elf-
ARCH = -mthumb -mthumb-interwork
# gba_mb.specs pour le multiboot
SPECS = -specs=gba.specs
CFLAGS	= -I.. \
	 -Wall -fno-common \
	-mcpu=arm7tdmi -mtune=arm7tdmi \
	-fomit-frame-pointer\
	-ffast-math \
	$(ARCH) $(SPECS)


GCC = $(CROSS)gcc
AS = $(CROSS)as
OBJCOPY = $(CROSS)objcopy
LD = $(CROSS)ld

MAP = map.out
LIBS = /usr/local/devkitARM_r6/arm-elf/lib/interwork/libc.a \
	/usr/local/devkitARM_r6/lib/gcc/arm-elf/3.4.0/interwork/libgcc.a
LDFLAGS = -marmelf -Map $(MAP) -nostartfiles -Tlnkscript

CFILES = motus_play_fonts.c intro.c global.c loaddic.c choose.c exist.c \
	background.c cursor.c stdfonts.c pause_gfx.c utils.c requesters.c \
	graphics.c pause.c game.c motus.c char_table.c messages.c \
	requester_gfx.c starter_gfx.c starter.c ints.c wav_whistle.c \
	wav_ready.c wav_insert.c wav_tick.c wav_inexists.c wav_delete.c \
	wav_elapsed.c
OBJS = $(CFILES:.c=.o)

.SUFFIXES:
.SUFFIXES: .c .o

all : motus_advance.bin


crt0.o: crt0.S
	$(AS) -o $@ $<


# ELF to GBA conversion.
motus_advance.bin : motus_advance.elf
	$(OBJCOPY) -O binary motus_advance.elf $@

# Final link.
motus_advance.elf : crt0.o $(OBJS)
	$(LD) $(LDFLAGS) -o $@ crt0.o $(OBJS) $(LIBS)


.c.o:
	$(GCC) $(CFLAGS) -O3 -c $<


# Rgles normales en -O3
requesters.o: requesters.c ../gba.h motus_play_fonts.h global.h \
	../screen_mode.h utils.h requesters.h char_table.h
pause.o: pause.c ../gba.h ../screen_mode.h global.h game.h pause_gfx.h \
	requesters.h messages.h cursor.h graphics.h utils.h
graphics.o: graphics.c graphics.h ../gba.h ../screen_mode.h global.h \
	motus_play_fonts.h game.h background.h cursor.h stdfonts.h utils.h \
	intro.h requesters.h requester_gfx.h messages.h
utils.o: utils.c utils.h global.h game.h ../timer.h cursor.h ../gba.h
starter.o: starter.c starter.h ../gba.h ../screen_mode.h global.h game.h \
	starter_gfx.h requesters.h messages.h cursor.h graphics.h utils.h
requester_gfx.o: requester_gfx.c requester_gfx.h ../gba.h
messages.o: messages.c messages.h
char_table.o: char_table.c char_table.h ../gba.h
intro.o: intro.c intro.h
stdfonts.o: stdfonts.c stdfonts.h
motus_play_fonts.o: motus_play_fonts.c
choose.o: choose.c global.h ../gba.h game.h
global.o: global.c ../gba.h ../screen_mode.h global.h game.h \
	data/raw_french_dic_data data/raw_english_dic_data \
	data/raw_italiano_dic_data
loaddic.o: loaddic.c loaddic.h global.h ../gba.h
exist.o: exist.c exist.h ../gba.h global.h
motus.o: motus.c global.h ../gba.h ../timer.h loaddic.h game.h graphics.h \
	utils.h requesters.h messages.h starter.h
background.o: background.c background.h ../gba.h
cursor.o: cursor.c cursor.h ../gba.h

game.o: game.c game.h ../gba.h ../screen_mode.h global.h choose.h exist.h \
	requesters.h graphics.h utils.h messages.h pause.h
pause_gfx.o: pause_gfx.c pause_gfx.h ../gba.h
starter_gfx.o: starter_gfx.c starter_gfx.h
ints.o: ints.c ints.h ../gba.h ../interrupt.h
wav_ready.o: wav_ready.c wav_ready.h ../gba.h
wav_whistle.o: wav_whistle.c wav_whistle.h  ../gba.h
wav_elapsed.o: wav_elapsed.c wav_elapsed.h  ../gba.h
wav_insert.o: wav_insert.c wav_insert.h  ../gba.h
wav_tick.o: wav_tick.c wav_tick.h  ../gba.h
wav_delete.o: wav_delete.c wav_delete.h  ../gba.h
wav_inexists.o: wav_inexists.c wav_inexists.h  ../gba.h


data/raw_french_dic_data: data/French6.bin
	hexdump -v -e '"0x%x, \n"' data/French6.bin > data/raw_french_dic_data

data/raw_english_dic_data: data/English6.bin
	hexdump -v -e '"0x%x, \n"' data/English6.bin > data/raw_english_dic_data
data/raw_italiano_dic_data: data/Italiano6.bin
	hexdump -v -e '"0x%x, \n"' data/Italiano6.bin > data/raw_italiano_dic_data



clean:
	rm -f *.elf *.bin $(OBJS) crt0.o map.out *~
