#---------------------------------------------------------------------------------
.SUFFIXES:
#---------------------------------------------------------------------------------


ifeq ($(strip $(DEVKITARM)),)
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM")
endif




#---------------------------------------------------------------------------------
# Options
#---------------------------------------------------------------------------------
PROJECT_NAME      := $(notdir $(CURDIR))
KEEP_DEBUG_ELF    := 1
BUILD_CCI         := 0
BUILD_CIA         := 1
RESOURCE          := $(CURDIR)/app
MAKEROM           := $(DEVKITARM)/bin/makerom
_3DS_BANNER_MAKER := $(DEVKITPRO)/3DSBannerMaker
MAKEFLAGS         += --no-print-directory




#---------------------------------------------------------------------------------
# Targets
#---------------------------------------------------------------------------------
ifeq ($(strip $(KEEP_DEBUG_ELF)),1)
TARGETS += $(PROJECT_NAME)_debug.elf
endif


ifeq ($(strip $(BUILD_CCI)),1)
TARGETS += $(PROJECT_NAME).3ds
endif


ifeq ($(strip $(BUILD_CIA)),1)
TARGETS += $(PROJECT_NAME).cia
endif



.PHONY: clean_all clean all

all : $(TARGETS)

#---------------------------------------------------------------------------------
.PRECIOUS: %.3ds
%.3ds : %.elf $(RESOURCE)/build-cci.rsf $(RESOURCE)/icon.icn
#---------------------------------------------------------------------------------
	@$(DEVKITARM)/bin/arm-none-eabi-strip --strip-all $(PROJECT_NAME).elf
	@$(MAKEROM) -f cci -o $(PROJECT_NAME).3ds -elf $(PROJECT_NAME).elf -rsf $(RESOURCE)/build-cci.rsf -icon $(RESOURCE)/icon.icn -banner $(RESOURCE)/banner.bnr -exefslogo -target d

#---------------------------------------------------------------------------------
.PRECIOUS: %.cia
%.cia : %.elf $(RESOURCE)/build-cia.rsf $(RESOURCE)/icon.icn
#---------------------------------------------------------------------------------
	@$(DEVKITARM)/bin/arm-none-eabi-strip --strip-all $(PROJECT_NAME).elf
	@$(MAKEROM) -f cia -o $(PROJECT_NAME).cia -elf $(PROJECT_NAME).elf -rsf $(RESOURCE)/build-cia.rsf -icon $(RESOURCE)/icon.icn -banner $(RESOURCE)/banner.bnr -exefslogo -target t

#---------------------------------------------------------------------------------
.PRECIOUS: $(RESOURCE)/%.icn
$(RESOURCE)/%.icn : $(RESOURCE)/banner.png $(RESOURCE)/icon24x24.png $(RESOURCE)/icon48x48.png $(RESOURCE)/BannerAudio.bcwav $(RESOURCE)/IcnSettings.txt
#---------------------------------------------------------------------------------
	@cp $(RESOURCE)/banner.png $(_3DS_BANNER_MAKER)/cbmd_bannerImage/256x128.png
	@cp $(RESOURCE)/icon24x24.png $(_3DS_BANNER_MAKER)/ctpk_24x24icon/icon.png
	@cp $(RESOURCE)/icon48x48.png $(_3DS_BANNER_MAKER)/ctpk_48x48icon/icon.png
	@cp $(RESOURCE)/BannerAudio.bcwav $(_3DS_BANNER_MAKER)/bcwav_audio/example.bcwav
	@cp $(RESOURCE)/IcnSettings.txt $(_3DS_BANNER_MAKER)/AppData.txt
	@make -C $(_3DS_BANNER_MAKER)
	@cp $(_3DS_BANNER_MAKER)/icon.icn $(RESOURCE)/icon.icn
	@cp $(_3DS_BANNER_MAKER)/banner.bnr $(RESOURCE)/banner.bnr
	@rm -rf $(_3DS_BANNER_MAKER)/*.icn $(_3DS_BANNER_MAKER)/*.bnr

#---------------------------------------------------------------------------------
.PRECIOUS: $(PROJECT_NAME)_debug.elf
$(PROJECT_NAME)_debug.elf : Makefile
#---------------------------------------------------------------------------------
	@make -j4
	@cp $(PROJECT_NAME).elf $(PROJECT_NAME)_debug.elf

#---------------------------------------------------------------------------------
.PRECIOUS: %.elf
%.elf : Makefile
#---------------------------------------------------------------------------------
	@make -j4


clean :
	@make clean
	@rm -rf $(CURDIR)/*.3ds $(CURDIR)/*.cia $(CURDIR)/$(PROJECT_NAME)_debug.elf


clean_all : clean
	@rm -rf $(RESOURCE)/*.icn $(RESOURCE)/*.bnr
