### Makefile --- 
## 
## Filename: Makefile
## Author: Jules <archjules>
## Created: Mon Jan 23 19:19:36 2017 (+0100)
## Last-Updated: Thu Apr 20 11:47:28 2017 (+0200)
##           By: Jules <archjules>
######################################################################
# Variables definition
NAME=POLFIGHT
TARGET=sh3eb-elf-
CC=$(TARGET)gcc
AS=$(TARGET)as
LD=$(TARGET)ld
OBJCOPY=$(TARGET)objcopy
WRAPPER=g1a-wrapper
CFLAGS=$(shell fxsdk --cflags) -Iinclude
LIBS  =$(shell fxsdk --libs) -lgint

OBJECTS=obj/main.o obj/utils.o obj/test.o \
	obj/modern.o obj/banner.o obj/game.o obj/tuto.o obj/menu.o \
	obj/ia.o

# Function definition
define cmd
@printf "\033[1;""32""m>\033[0m \033[1m%s\033[0m %s\n" "$1" "$2";$3
endef

# Actual targets
all: $(NAME).g1a

send: $(NAME).g1a
	$(call cmd,p7,$<,p7 send -f $(NAME).g1a)

clean:
	rm -rf obj $(NAME)*

obj:
	$(call cmd,mkdir,$@,mkdir -p $@)

obj/modern.o: modern.bmp obj
	$(call cmd,fxconv,$<,fxconv $< -o $@ --font -n __modern_font)

obj/banner.o: banner.bmp obj
	$(call cmd,fxconv,$<,fxconv $< -o $@ -n __banner_img)

obj/%.o: src/%.c obj
	$(call cmd,gcc,$@,$(CC) $(CFLAGS) -c -o $@ $<)

obj/%.o: src/%.s obj
	$(call cmd,as,$@,$(AS) -c -o $@ $<)

$(NAME).elf: $(OBJECTS)
	$(call cmd,ld,$@,$(CC) $(OBJECTS) -o $@ $(LIBS) $(CFLAGS))

$(NAME).bin: $(NAME).elf
	$(call cmd,objcopy,$@,$(OBJCOPY) -R .comment -R .bss -O binary $< $@)

$(NAME).g1a: $(NAME).bin icon.bmp
	$(call cmd,g1awrapper,$@,$(WRAPPER) $< -o $@ \
				            --version=00.01.0000 -i icon.bmp \
					    -n $(NAME) --internal=@PLFGHT)

.PHONY: all clean send
