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