11.1Schristos#--------------------------------------------------------------------------------- 21.1Schristos.SUFFIXES: 31.1Schristos#--------------------------------------------------------------------------------- 41.1Schristos 51.1Schristosifeq ($(strip $(DEVKITARM)),) 61.1Schristos$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM") 71.1Schristosendif 81.1Schristos 91.1Schristosinclude $(DEVKITARM)/ds_rules 101.1Schristos 111.1Schristos#--------------------------------------------------------------------------------- 121.1Schristos# TARGET is the name of the output 131.1Schristos# BUILD is the directory where object files & intermediate files will be placed 141.1Schristos# SOURCES is a list of directories containing source code 151.1Schristos# DATA is a list of directories containing data files 161.1Schristos# INCLUDES is a list of directories containing header files 171.1Schristos#--------------------------------------------------------------------------------- 181.1SchristosTARGET := $(shell basename $(CURDIR)) 191.1SchristosBUILD := build 201.1SchristosSOURCES := ../../ 211.1SchristosDATA := data 221.1SchristosINCLUDES := include 231.1Schristos 241.1Schristos#--------------------------------------------------------------------------------- 251.1Schristos# options for code generation 261.1Schristos#--------------------------------------------------------------------------------- 271.1SchristosARCH := -mthumb -mthumb-interwork 281.1Schristos 291.1SchristosCFLAGS := -Wall -O2\ 301.1Schristos -march=armv5te -mtune=arm946e-s \ 311.1Schristos -fomit-frame-pointer -ffast-math \ 321.1Schristos $(ARCH) 331.1Schristos 341.1SchristosCFLAGS += $(INCLUDE) -DARM9 351.1SchristosCXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions 361.1Schristos 371.1SchristosASFLAGS := $(ARCH) -march=armv5te -mtune=arm946e-s 381.1SchristosLDFLAGS = -specs=ds_arm9.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) 391.1Schristos 401.1Schristos#--------------------------------------------------------------------------------- 411.1Schristos# list of directories containing libraries, this must be the top level containing 421.1Schristos# include and lib 431.1Schristos#--------------------------------------------------------------------------------- 441.1SchristosLIBDIRS := $(LIBNDS) 451.1Schristos 461.1Schristos#--------------------------------------------------------------------------------- 471.1Schristos# no real need to edit anything past this point unless you need to add additional 481.1Schristos# rules for different file extensions 491.1Schristos#--------------------------------------------------------------------------------- 501.1Schristosifneq ($(BUILD),$(notdir $(CURDIR))) 511.1Schristos#--------------------------------------------------------------------------------- 521.1Schristos 531.1Schristosexport OUTPUT := $(CURDIR)/lib/libz.a 541.1Schristos 551.1Schristosexport VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ 561.1Schristos $(foreach dir,$(DATA),$(CURDIR)/$(dir)) 571.1Schristos 581.1Schristosexport DEPSDIR := $(CURDIR)/$(BUILD) 591.1Schristos 601.1SchristosCFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) 611.1SchristosCPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) 621.1SchristosSFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) 631.1SchristosBINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) 641.1Schristos 651.1Schristos#--------------------------------------------------------------------------------- 661.1Schristos# use CXX for linking C++ projects, CC for standard C 671.1Schristos#--------------------------------------------------------------------------------- 681.1Schristosifeq ($(strip $(CPPFILES)),) 691.1Schristos#--------------------------------------------------------------------------------- 701.1Schristos export LD := $(CC) 711.1Schristos#--------------------------------------------------------------------------------- 721.1Schristoselse 731.1Schristos#--------------------------------------------------------------------------------- 741.1Schristos export LD := $(CXX) 751.1Schristos#--------------------------------------------------------------------------------- 761.1Schristosendif 771.1Schristos#--------------------------------------------------------------------------------- 781.1Schristos 791.1Schristosexport OFILES := $(addsuffix .o,$(BINFILES)) \ 801.1Schristos $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) 811.1Schristos 821.1Schristosexport INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ 831.1Schristos $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ 841.1Schristos -I$(CURDIR)/$(BUILD) 851.1Schristos 861.1Schristos.PHONY: $(BUILD) clean all 871.1Schristos 881.1Schristos#--------------------------------------------------------------------------------- 891.1Schristosall: $(BUILD) 901.1Schristos @[ -d $@ ] || mkdir -p include 911.1Schristos @cp ../../*.h include 921.1Schristos 931.1Schristoslib: 941.1Schristos @[ -d $@ ] || mkdir -p $@ 951.1Schristos 961.1Schristos$(BUILD): lib 971.1Schristos @[ -d $@ ] || mkdir -p $@ 981.1Schristos @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile 991.1Schristos 1001.1Schristos#--------------------------------------------------------------------------------- 1011.1Schristosclean: 1021.1Schristos @echo clean ... 1031.1Schristos @rm -fr $(BUILD) lib 1041.1Schristos 1051.1Schristos#--------------------------------------------------------------------------------- 1061.1Schristoselse 1071.1Schristos 1081.1SchristosDEPENDS := $(OFILES:.o=.d) 1091.1Schristos 1101.1Schristos#--------------------------------------------------------------------------------- 1111.1Schristos# main targets 1121.1Schristos#--------------------------------------------------------------------------------- 1131.1Schristos$(OUTPUT) : $(OFILES) 1141.1Schristos 1151.1Schristos#--------------------------------------------------------------------------------- 1161.1Schristos%.bin.o : %.bin 1171.1Schristos#--------------------------------------------------------------------------------- 1181.1Schristos @echo $(notdir $<) 1191.1Schristos @$(bin2o) 1201.1Schristos 1211.1Schristos 1221.1Schristos-include $(DEPENDS) 1231.1Schristos 1241.1Schristos#--------------------------------------------------------------------------------------- 1251.1Schristosendif 1261.1Schristos#--------------------------------------------------------------------------------------- 127