#---------------------------------------------------------------------
# Labsound : Makefile
# par Laurent arnaud (lauren_r@epita.fr) et Karoubi vincent (karoub_v@epita.fr)
#---------------------------------------------------------------------

GCC_EXEC_PREFIX	= $(GBA_ARM7BASE)

#---------------------------------------------------------------------
# Options
#---------------------------------------------------------------------

# Output directory
OD			= objs

# Map file
MAPFILE		= map.txt

# Compiler Flags
CFLAGS		= -O2 -Wall
# CFLAGS	= -ggdb -Wall

# Preprocessor Flags
CPPFLAGS    =

LIBS		= -L./LIBS/. -limage -lsound -lbizz -ldjumbee -lhiphop -lhouse -ltechno



# Linker Flags
LDFLAGS		= -Wl,-Map,$(MAPFILE)

#---------------------------------------------------------------------
# Files
#---------------------------------------------------------------------

TARGET	    = 	labsound.gba


TARGET_ELF	= 	${TARGET:.gba=.elf}

OBJS 		= 	$(OD)/labsound.o\
			$(OD)/interface.o\
			$(OD)/print.o\
			$(OD)/melo_keypad.o\
			$(OD)/update_melo_interface.o\
			$(OD)/init_melo.o\
			$(OD)/init_drumbass.o\
			$(OD)/drumbass_keypad.o\
			$(OD)/update_drum_bass_interface.o\
			$(OD)/init.o\
			$(OD)/grid.o\
			$(OD)/dma.o\
			$(OD)/update.o\
			$(OD)/keypad.o\
			$(OD)/wave.o\
			$(OD)/song.o\
			$(OD)/credits.o\
			$(OD)/menu.o\
			$(OD)/save.o\
			$(OD)/modify.o\

#---------------------------------------------------------------------
# Declare Phony Targets
#---------------------------------------------------------------------

.PHONY :		all

#---------------------------------------------------------------------
# Default Rule
#---------------------------------------------------------------------

all : 			$(TARGET)

#---------------------------------------------------------------------
# Link
#---------------------------------------------------------------------

$(TARGET) :		$(TARGET_ELF)
				@echo --- EXTRACTING RAW .GBA FILE
				$(GBA_ARM7OBJCOPY) -v -O binary $(TARGET_ELF) $(TARGET)
				@echo --- DONE

$(TARGET_ELF) :	$(OBJS)
				@echo --- LINKING PROJECT
				$(GBA_ARM7CC) $(CFLAGS) $(OBJS) $(LIBS) $(LDFLAGS) -o $(TARGET_ELF)

#---------------------------------------------------------------------
# Compilation Rules
#---------------------------------------------------------------------

$(OD)/%.o : 	%.c %.h
				$(GBA_ARM7CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@

$(OD)/%.o : 	%.c
				$(GBA_ARM7CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@

$(OD)/%.o : 	%.cpp
				$(GBA_ARM7CPLUSPLUS) $(CFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@

$(OD)/%.o : 	%.s
				$(GBA_ARM7AS) $(AFLAGS) $< -o $@

#---------------------------------------------------------------------
# Miscellaneous
#---------------------------------------------------------------------

dir :
				-mkdir $(OD)

clean :
				-rm -f *~
				-rm -f $(OBJS)
				-rm -f $(TARGET_ELF)
				-rm -f $(MAPFILE)

fclean :		clean
				-rm -f $(TARGET)

re : fclean all

run :
	/z/Tools/VisualBoyAdvance_1.5.exe $(TARGET)

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