| 
									
										
										
										
											2024-02-19 19:20:37 +01:00
										 |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | .SUFFIXES: | 
					
						
							|  |  |  | #nicetest
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ifeq ($(strip $(DEVKITARM)),) | 
					
						
							|  |  |  | $(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM") | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | TOPDIR ?= $(CURDIR) | 
					
						
							|  |  |  | include $(DEVKITARM)/3ds_rules | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | # TARGET is the name of the output
 | 
					
						
							|  |  |  | # BUILD is the directory where object files & intermediate files will be placed
 | 
					
						
							|  |  |  | # SOURCES is a list of directories containing source code
 | 
					
						
							|  |  |  | # DATA is a list of directories containing data files
 | 
					
						
							|  |  |  | # INCLUDES is a list of directories containing header files
 | 
					
						
							|  |  |  | # GRAPHICS is a list of directories containing graphics files
 | 
					
						
							|  |  |  | # GFXBUILD is the directory where converted graphics files will be placed
 | 
					
						
							|  |  |  | #   If set to $(BUILD), it will statically link in the converted
 | 
					
						
							|  |  |  | #   files as if they were data files.
 | 
					
						
							|  |  |  | #
 | 
					
						
							|  |  |  | # NO_SMDH: if set to anything, no SMDH file is generated.
 | 
					
						
							|  |  |  | # ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional)
 | 
					
						
							|  |  |  | # APP_TITLE is the name of the app stored in the SMDH file (Optional)
 | 
					
						
							|  |  |  | # APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional)
 | 
					
						
							|  |  |  | # APP_AUTHOR is the author of the app stored in the SMDH file (Optional)
 | 
					
						
							|  |  |  | # ICON is the filename of the icon (.png), relative to the project folder.
 | 
					
						
							|  |  |  | #   If not set, it attempts to use one of the following (in this order):
 | 
					
						
							|  |  |  | #     - <Project name>.png
 | 
					
						
							|  |  |  | #     - icon.png
 | 
					
						
							|  |  |  | #     - <libctru folder>/default_icon.png
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | # External tools
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | ifeq ($(OS),Windows_NT) | 
					
						
							|  |  |  | MAKEROM 	?= C:/devkitpro/tools/bin/makerom.exe | 
					
						
							|  |  |  | BANNERTOOL 	?= C:/devkitpro/tools/bin/bannertool.exe | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  | MAKEROM 	?= makerom | 
					
						
							|  |  |  | BANNERTOOL 	?= bannertool | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # If on a tagged commit, use the tag instead of the commit
 | 
					
						
							|  |  |  | ifneq ($(shell echo $(shell git tag -l --points-at HEAD) | head -c 1),) | 
					
						
							|  |  |  | GIT_VER := $(shell git tag -l --points-at HEAD) | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  | GIT_VER := $(shell git rev-parse --short HEAD) | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | TIME_TIME := unk | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | # Version number
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | VERSION_MAJOR := 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | VERSION_MINOR := 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | VERSION_MICRO := 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | # Make Sure to Change this paths if your Submodule
 | 
					
						
							|  |  |  | # is located somewhere else
 | 
					
						
							|  |  |  | # Using ../ cause rd7tf is shipped with the RenderD7
 | 
					
						
							|  |  |  | # Repository!
 | 
					
						
							|  |  |  | RENDERD7_SRC := ../source ../external | 
					
						
							|  |  |  | RENDERD7_INC := ../include | 
					
						
							|  |  |  | # Libraries used for RenderD7
 | 
					
						
							|  |  |  | # if you already use -lm, -lctru etc place a # before -lm
 | 
					
						
							| 
									
										
										
										
											2024-05-24 15:51:39 +02:00
										 |  |  | RENDERD7_LIBS :=  -lcurl -lmbedtls -lmbedx509 -lmbedcrypto -lz -lm -lcitro2dd -lcitro3d -lctru | 
					
						
							| 
									
										
										
										
											2024-02-19 19:20:37 +01:00
										 |  |  | RENDERD7_FLAGS := -DRENDERD7_MEMTRACK=1 | 
					
						
							|  |  |  | TARGET		:=	rd7tf | 
					
						
							|  |  |  | BUILD		:=	build | 
					
						
							|  |  |  | SOURCES		:=	source $(RENDERD7_SRC) | 
					
						
							|  |  |  | DATA		:=	data | 
					
						
							|  |  |  | INCLUDES	:=	source $(RENDERD7_INC) | 
					
						
							|  |  |  | GRAPHICS	:=	gfx | 
					
						
							|  |  |  | #GFXBUILD	:=	$(BUILD)
 | 
					
						
							|  |  |  | ROMFS		:=	romfs | 
					
						
							|  |  |  | GFXBUILD	:=	$(ROMFS)/gfx | 
					
						
							|  |  |  | APP_AUTHOR	:=	NPI-D7 | 
					
						
							|  |  |  | APP_DESCRIPTION := RenderD7 Test Framework | 
					
						
							|  |  |  | ICON		:=	app/icon.png | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | # options for code generation
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | ARCH	:=	-march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CFLAGS	:=	-g -Wall -Wno-psabi -O2 -mword-relocations \
 | 
					
						
							|  |  |  | 			-DV_STRING=\"$(GIT_VER)\" \
 | 
					
						
							|  |  |  | 			-DV_TIME=\"$(TIME_TIME)\" \
 | 
					
						
							|  |  |  | 			-ffunction-sections \
 | 
					
						
							|  |  |  | 			$(ARCH) $(RENDERD7_FLAGS) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CFLAGS	+=	$(INCLUDE) -D__3DS__ -D_GNU_SOURCE=1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CXXFLAGS	:= $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++20  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ASFLAGS	:=	-g $(ARCH) | 
					
						
							|  |  |  | LDFLAGS	=	-specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | LIBS	:= -lstdc++ $(RENDERD7_LIBS)  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | # list of directories containing libraries, this must be the top level containing
 | 
					
						
							|  |  |  | # include and lib
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | LIBDIRS	:= $(PORTLIBS) $(CTRULIB) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | # no real need to edit anything past this point unless you need to add additional
 | 
					
						
							|  |  |  | # rules for different file extensions
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | ifneq ($(BUILD),$(notdir $(CURDIR))) | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export OUTPUT	:=	$(CURDIR)/$(TARGET) | 
					
						
							|  |  |  | export TOPDIR	:=	$(CURDIR) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export VPATH	:=	$(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
 | 
					
						
							|  |  |  | 			$(foreach dir,$(GRAPHICS),$(CURDIR)/$(dir)) \
 | 
					
						
							|  |  |  | 			$(foreach dir,$(DATA),$(CURDIR)/$(dir)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export DEPSDIR	:=	$(CURDIR)/$(BUILD) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) | 
					
						
							|  |  |  | CPPFILES	:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) | 
					
						
							|  |  |  | SFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) | 
					
						
							|  |  |  | PICAFILES	:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) | 
					
						
							|  |  |  | SHLISTFILES	:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) | 
					
						
							|  |  |  | GFXFILES	:=	$(foreach dir,$(GRAPHICS),$(notdir $(wildcard $(dir)/*.t3s))) | 
					
						
							|  |  |  | BINFILES	:=	$(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | # use CXX for linking C++ projects, CC for standard C
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | ifeq ($(strip $(CPPFILES)),) | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | 	export LD	:=	$(CC) | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | 	export LD	:=	$(CXX) | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | ifeq ($(GFXBUILD),$(BUILD)) | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | export T3XFILES :=  $(GFXFILES:.t3s=.t3x) | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | export ROMFS_T3XFILES	:=	$(patsubst %.t3s, $(GFXBUILD)/%.t3x, $(GFXFILES)) | 
					
						
							|  |  |  | export T3XHFILES		:=	$(patsubst %.t3s, $(BUILD)/%.h, $(GFXFILES)) | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export OFILES_SOURCES 	:=	$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export OFILES_BIN	:=	$(addsuffix .o,$(BINFILES)) \
 | 
					
						
							|  |  |  | 			$(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export OFILES := $(OFILES_BIN) $(OFILES_SOURCES) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export HFILES	:=	$(PICAFILES:.v.pica=_shbin.h) $(SHLISTFILES:.shlist=_shbin.h) \
 | 
					
						
							|  |  |  | 			$(addsuffix .h,$(subst .,_,$(BINFILES))) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export INCLUDE	:=	$(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
 | 
					
						
							|  |  |  | 			$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
 | 
					
						
							|  |  |  | 			-I$(CURDIR)/$(BUILD) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export LIBPATHS	:=	$(foreach dir,$(LIBDIRS),-L$(dir)/lib) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export _3DSXDEPS	:=	$(if $(NO_SMDH),,$(OUTPUT).smdh) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ifeq ($(strip $(ICON)),) | 
					
						
							|  |  |  | 	icons := $(wildcard *.png) | 
					
						
							|  |  |  | 	ifneq (,$(findstring $(TARGET).png,$(icons))) | 
					
						
							|  |  |  | 		export APP_ICON := $(TOPDIR)/$(TARGET).png | 
					
						
							|  |  |  | 	else | 
					
						
							|  |  |  | 		ifneq (,$(findstring icon.png,$(icons))) | 
					
						
							|  |  |  | 			export APP_ICON := $(TOPDIR)/icon.png | 
					
						
							|  |  |  | 		endif | 
					
						
							|  |  |  | 	endif | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  | 	export APP_ICON := $(TOPDIR)/$(ICON) | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ifeq ($(strip $(NO_SMDH)),) | 
					
						
							|  |  |  | 	export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ifneq ($(ROMFS),) | 
					
						
							|  |  |  | 	export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .PHONY: all clean | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | all: $(BUILD) $(GFXBUILD) $(DEPSDIR) $(ROMFS_T3XFILES) $(T3XHFILES) | 
					
						
							|  |  |  | 	@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | clean: | 
					
						
							|  |  |  | 	@echo clean ... | 
					
						
							|  |  |  | 	@rm -fr $(BUILD) $(TARGET).elf $(TARGET).3dsx $(TARGET).cia $(TARGET).smdh app/*.bin  | 
					
						
							|  |  |  | 	@rm -fr $(OUTDIR) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | send: | 
					
						
							|  |  |  | 	@3dslink -a $(IP) $(TARGET).3dsx | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | run: | 
					
						
							|  |  |  | 	@flatpak run org.citra_emu.citra $(TARGET).3dsx | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | 3dsx: $(BUILD) | 
					
						
							|  |  |  | 	@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile 3dsx | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | $(GFXBUILD)/%.t3x	$(BUILD)/%.h	:	%.t3s | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | 	@echo $(notdir $<) | 
					
						
							|  |  |  | 	$(DEVKITPRO)/tools/bin/tex3ds -i $< -H $(BUILD)/$*.h -d $(DEPSDIR)/$*.d -o $(GFXBUILD)/$*.t3x | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | $(BUILD): | 
					
						
							|  |  |  | 	@[ -d $@ ] || mkdir -p $@ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | # main targets
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | all: $(OUTPUT).elf $(OUTPUT).3dsx | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $(OUTPUT).elf	:	$(OFILES) | 
					
						
							|  |  |  | $(OUTPUT).3dsx	:   $(_3DSXDEPS) | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | # you need a rule like this for each extension you use as binary data
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | %.bin.o	%_bin.h :	%.bin | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | 	@echo $(notdir $<) | 
					
						
							|  |  |  | 	@$(bin2o) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | .PRECIOUS	:	%.t3x %.shbin | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | %.t3x.o	%_t3x.h :	%.t3x | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | 	$(SILENTMSG) $(notdir $<) | 
					
						
							|  |  |  | 	$(bin2o) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | %.shbin.o %_shbin.h : %.shbin | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | 	$(SILENTMSG) $(notdir $<) | 
					
						
							|  |  |  | 	$(bin2o) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | -include $(DEPSDIR)/*.d | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------------
 | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | #---------------------------------------------------------------------------------------
 |