1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync.SUFFIXES:
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncifeq ($(strip $(DEVKITARM)),)
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM")
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncendif
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncinclude $(DEVKITARM)/ds_rules
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync# TARGET is the name of the output
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync# BUILD is the directory where object files & intermediate files will be placed
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync# SOURCES is a list of directories containing source code
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync# DATA is a list of directories containing data files
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync# INCLUDES is a list of directories containing header files
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncTARGET := $(shell basename $(CURDIR))
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncBUILD := build
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncSOURCES := ../../
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncDATA := data
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncINCLUDES := include
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync# options for code generation
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncARCH := -mthumb -mthumb-interwork
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncCFLAGS := -Wall -O2\
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync -march=armv5te -mtune=arm946e-s \
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync -fomit-frame-pointer -ffast-math \
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync $(ARCH)
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncCFLAGS += $(INCLUDE) -DARM9
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncCXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncASFLAGS := $(ARCH) -march=armv5te -mtune=arm946e-s
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncLDFLAGS = -specs=ds_arm9.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync# list of directories containing libraries, this must be the top level containing
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync# include and lib
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncLIBDIRS := $(LIBNDS)
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync# no real need to edit anything past this point unless you need to add additional
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync# rules for different file extensions
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncifneq ($(BUILD),$(notdir $(CURDIR)))
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncexport OUTPUT := $(CURDIR)/lib/libz.a
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncexport VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync $(foreach dir,$(DATA),$(CURDIR)/$(dir))
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncexport DEPSDIR := $(CURDIR)/$(BUILD)
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncCFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncCPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncSFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncBINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync# use CXX for linking C++ projects, CC for standard C
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncifeq ($(strip $(CPPFILES)),)
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync export LD := $(CC)
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncelse
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync export LD := $(CXX)
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncendif
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncexport OFILES := $(addsuffix .o,$(BINFILES)) \
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncexport INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync $(foreach dir,$(LIBDIRS),-I$(dir)/include) \
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync -I$(CURDIR)/$(BUILD)
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync.PHONY: $(BUILD) clean all
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncall: $(BUILD)
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync @[ -d $@ ] || mkdir -p include
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync @cp ../../*.h include
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsynclib:
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync @[ -d $@ ] || mkdir -p $@
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync$(BUILD): lib
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync @[ -d $@ ] || mkdir -p $@
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncclean:
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync @echo clean ...
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync @rm -fr $(BUILD) lib
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncelse
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncDEPENDS := $(OFILES:.o=.d)
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync# main targets
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync$(OUTPUT) : $(OFILES)
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync%.bin.o : %.bin
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync @echo $(notdir $<)
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync @$(bin2o)
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync-include $(DEPENDS)
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------------
1b33c96954667ba382fa595baf7b31290bfdd517vboxsyncendif
1b33c96954667ba382fa595baf7b31290bfdd517vboxsync#---------------------------------------------------------------------------------------