3ds: Makefile improvements

rockbox-gerrit-noreply--- via rockbox-cvs <[email protected]>
Newsgroups gmane.comp.systems.archos.rockbox.cvs
Message-ID <[email protected]>
commit 72969fee7ec7427e643b831290a91be62d219d7f
Author: Vencislav Atanasov <[email protected]>
Date:   Fri Mar 13 00:00:24 2026 +0200

    3ds: Makefile improvements
    
    - Allow overriding of the smdhtool and 3dsxtool programs
    - Introduce dependencies in ctru.make for 3dsx and cia packages
    - Build these packages when the binary is built
    - Copy instead of moving the cia package when building a zip
    - Properly clean all build artifacts when make clean is used
    
    Change-Id: I2069bcc44d6ab6031ef61ed9980f92ff9a913bc9

diff --git a/packaging/ctru/ctru.make b/packaging/ctru/ctru.make
index 90dd6be959..2bcd7bd50c 100644
--- a/packaging/ctru/ctru.make
+++ b/packaging/ctru/ctru.make
@@ -56,16 +56,15 @@ ENABLE_L2_CACHE := false
 
 .SECONDEXPANSION: # $$(OBJ) is not populated until after this
 
-MAKEROM      ?= makerom
-MAKEROM_ARGS := -elf "$(BINARY).elf" -rsf "$(RSF_PATH)" -banner "$(BUILDDIR)/banner.bnr" -icon "$(BUILDDIR)/icon.icn" -DAPP_TITLE="$(APP_TITLE)" -DAPP_PRODUCT_CODE="$(PRODUCT_CODE)" -DAPP_UNIQUE_ID="$(UNIQUE_ID)" -DAPP_ENCRYPTED="$(APP_ENCRYPTED)" -DAPP_SYSTEM_MODE="$(SYSTEM_MODE)" -DAPP_SYSTEM_MODE_EXT="$(SYSTEM_MODE_EXT)" -DAPP_CATEGORY="$(CATEGORY)" -DAPP_USE_ON_SD="$(USE_ON_SD)" -DAPP_MEMORY_TYPE="$(MEMORY_TYPE)" -DAPP_CPU_SPEED="$(CPU_SPEED)" -DAPP_ENABLE_L2_CACHE="$(ENABLE_L2_CACHE)"
-MAKEROM_ARGS += -major $(VERSION_MAJOR) -minor $(VERSION_MINOR) -micro $(VERSION_MICRO)
+SMDH_PATH   := $(BUILDDIR)/rockbox.smdh
+3DSX_PATH   := $(BUILDDIR)/rockbox.3dsx
 
-ifneq ($(strip $(LOGO)),)
-	MAKEROM_ARGS	+= -logo "$(LOGO)"
-endif
-ifneq ($(strip $(ROMFS)),)
-	MAKEROM_ARGS	+= -DAPP_ROMFS="$(ROMFS)"
-endif
+BANNER_PATH := $(BUILDDIR)/rockbox.bnr
+ICON_PATH   := $(BUILDDIR)/rockbox.icn
+CIA_PATH    := $(BUILDDIR)/rockbox.cia
+
+SMDHTOOL ?= smdhtool
+3DSXTOOL ?= 3dsxtool
 
 BANNERTOOL   ?= bannertool
 
@@ -81,17 +80,47 @@ else
 	BANNER_AUDIO_ARG := -a
 endif
 
-# main binary
+MAKEROM      ?= makerom
+MAKEROM_ARGS := -DAPP_TITLE="$(APP_TITLE)" -DAPP_PRODUCT_CODE="$(PRODUCT_CODE)" -DAPP_UNIQUE_ID="$(UNIQUE_ID)" \
+                -DAPP_ENCRYPTED="$(APP_ENCRYPTED)" -DAPP_SYSTEM_MODE="$(SYSTEM_MODE)" \
+                -DAPP_SYSTEM_MODE_EXT="$(SYSTEM_MODE_EXT)" -DAPP_CATEGORY="$(CATEGORY)" -DAPP_USE_ON_SD="$(USE_ON_SD)" \
+                -DAPP_MEMORY_TYPE="$(MEMORY_TYPE)" -DAPP_CPU_SPEED="$(CPU_SPEED)" \
+                -DAPP_ENABLE_L2_CACHE="$(ENABLE_L2_CACHE)" \
+                -major $(VERSION_MAJOR) -minor $(VERSION_MINOR) -micro $(VERSION_MICRO)
+
+ifneq ($(strip $(LOGO)),)
+	MAKEROM_ARGS	+= -logo "$(LOGO)"
+endif
+ifneq ($(strip $(ROMFS)),)
+	MAKEROM_ARGS	+= -DAPP_ROMFS="$(ROMFS)"
+endif
+
 $(BUILDDIR)/$(BINARY): $$(OBJ) $(FIRMLIB) $(VOICESPEEXLIB) $(CORE_LIBS)
 ifeq ($(UNAME), Darwin)
-	$(call PRINTS,LD $(BINARY))$(CC) -o $@ $^ $(LDOPTS) $(GLOBAL_LDOPTS) -Wl,$(LDMAP_OPT),$(BUILDDIR)/rockbox.map
+	$(call PRINTS,LD $(@F))$(CC) -o $@ $^ $(LDOPTS) $(GLOBAL_LDOPTS) -Wl,$(LDMAP_OPT),$(BUILDDIR)/rockbox.map
 else
-	$(call PRINTS,LD $(BINARY))$(CC) -o $@ -Wl,--start-group $^ -Wl,--end-group $(LDOPTS) $(GLOBAL_LDOPTS) \
+	$(call PRINTS,LD $(@F))$(CC) -o $@ -Wl,--start-group $^ -Wl,--end-group $(LDOPTS) $(GLOBAL_LDOPTS) \
 	-Wl,$(LDMAP_OPT),$(BUILDDIR)/rockbox.map
 endif
-	@mv $(BINARY) $(BINARY).elf
-	smdhtool --create "$(APP_TITLE)" "$(APP_DESCRIPTION)" "$(APP_AUTHOR)" $(APP_ICON) "rockbox.smdh"
-	3dsxtool $(BINARY).elf $(BINARY).3dsx --smdh="rockbox.smdh"
-	$(BANNERTOOL) makebanner $(BANNER_IMAGE_ARG) "$(BANNER_IMAGE)" $(BANNER_AUDIO_ARG) "$(BANNER_AUDIO)" -o "$(BUILDDIR)/banner.bnr"
-	$(BANNERTOOL) makesmdh -s "$(APP_TITLE)" -l "$(APP_DESCRIPTION)" -p "$(APP_AUTHOR)" -i "$(APP_ICON)" -f "$(ICON_FLAGS)" -o "$(BUILDDIR)/icon.icn"
-	$(MAKEROM) -f cia -o "$(BINARY).cia" -target t -exefslogo $(MAKEROM_ARGS)
+
+$(SMDH_PATH): $(APP_ICON)
+	$(SMDHTOOL) --create "$(APP_TITLE)" "$(APP_DESCRIPTION)" "$(APP_AUTHOR)" $< $@
+
+$(3DSX_PATH): $(BUILDDIR)/$(BINARY) $(SMDH_PATH)
+	$(3DSXTOOL) $< $@ --smdh=$(SMDH_PATH)
+
+$(BANNER_PATH): $(BANNER_IMAGE) $(BANNER_AUDIO)
+	$(BANNERTOOL) makebanner $(BANNER_IMAGE_ARG) $(BANNER_IMAGE) $(BANNER_AUDIO_ARG) $(BANNER_AUDIO) -o $@
+
+$(ICON_PATH): $(APP_ICON)
+	$(BANNERTOOL) makesmdh -s "$(APP_TITLE)" -l "$(APP_DESCRIPTION)" -p "$(APP_AUTHOR)" -i $< -f $(ICON_FLAGS) -o $@
+
+$(CIA_PATH): $(BUILDDIR)/$(BINARY) $(RSF_PATH) $(BANNER_PATH) $(ICON_PATH)
+	$(MAKEROM) -f cia -o $@ -target t -exefslogo -elf $< -rsf $(RSF_PATH) -banner $(BANNER_PATH) \
+	-icon $(ICON_PATH) $(MAKEROM_ARGS)
+
+# add dependencies to build the packages
+CTRU_PACKAGES := $(3DSX_PATH) $(CIA_PATH)
+
+build: $(CTRU_PACKAGES)
+bin: $(CTRU_PACKAGES)
diff --git a/tools/buildzip.pl b/tools/buildzip.pl
index cdb1f43c32..13808ec20a 100755
--- a/tools/buildzip.pl
+++ b/tools/buildzip.pl
@@ -750,7 +750,7 @@ sub runone {
 
         # add hbmenu shortcut and cia file to zip file
         if ($modelname =~ /ctru/) {
-            move("rockbox.cia", "3ds");
+            copy("rockbox.cia", "3ds");
             copy("$ROOT/packaging/ctru/rockbox.xml", "3ds");
 
             system("$ziptool -u $output 3ds/rockbox.xml $target >/dev/null");
diff --git a/tools/configure b/tools/configure
index f67058e44f..4e6439a0c1 100755
--- a/tools/configure
+++ b/tools/configure
@@ -4159,7 +4159,7 @@ fi
     boottool="cp "
     bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
     bmp2rb_native="$rootdir/tools/bmp2rb -f 4"
-    output="rockbox"
+    output="rockbox.elf"
     bootoutput="rockbox"
     appextra="recorder:gui"
     plugins="yes"
diff --git a/tools/root.make b/tools/root.make
index 4423d21359..869b46c794 100644
--- a/tools/root.make
+++ b/tools/root.make
@@ -234,7 +234,8 @@ clean::
 		$(LINKRAM) $(LINKROM) rockbox.elf rockbox.map rockbox.bin \
 		make.dep rombox.elf rombox.map rombox.bin romstart.txt \
 		$(BINARY) $(FLASHFILE) uisimulator bootloader flash $(BOOTLINK) \
-		rockbox.apk lang_enum.h rbversion.h fontbundle.h
+		rockbox.apk lang_enum.h rbversion.h fontbundle.h 3ds rockbox.3dsx \
+		rockbox.bnr rockbox.cia rockbox.icn rockbox.smdh
 
 #### linking the binaries: ####
 
-- 
rockbox-cvs mailing list
[email protected]
https://lists.haxx.se/mailman/listinfo/rockbox-cvs
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.