]> Chaos Git - corbenik/corbenik.git/commitdiff
Future proofing - anti-root clutter.
authorchaoskagami <chaos.kagami@gmail.com>
Sat, 2 Jul 2016 13:48:12 +0000 (09:48 -0400)
committerchaoskagami <chaos.kagami@gmail.com>
Sat, 2 Jul 2016 13:48:12 +0000 (09:48 -0400)
Since nobody has decided what the hell to use yet, there's three types of paths supported here:
 * root=clusterfuck (default) - What you're used to. Clutter on the root.
 * root=shadowhand - @RShadowhand style paths - jailed in /homebrew/3ds.
 * root=cruel - @Cruel style paths - CFW relevant data in /3ds/apps folder and transient and user-supplied data in /3ds/appdata

Makefile
external/Makefile
external/loader/Makefile
source/patch_format.h

index b7e539b7968376b646ba549cedbee5f510ad22c7..6605d0143cc135ccc42aa407c837a52ff09826ea 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -18,6 +18,22 @@ fw_name ?= Corbenik
 # If unset, the primary folder is /corbenik.
 fw_folder ?= corbenik
 
+# Other valid options:
+#  shadowhand
+#  cruel
+root ?= clusterfuck
+
+ifeq "$(root)" "clusterfuck"
+  PATHARGS := -DPATH_ROOT=\"\"
+  PATHARGS += -DPATH_DATA=\"/$(fw_folder)\"
+else ifeq "$(root)" "cruel"
+  PATHARGS := -DPATH_ROOT=\"/3ds/apps\"
+  PATHARGS += -DPATH_DATA=\"/3ds/appdata/$(fw_folder)\"
+else ifeq "$(root)" "shadowhand"
+  PATHARGS := -DPATH_ROOT=\"/homebrew/3ds\"
+  PATHARGS += -DPATH_DATA=\"/homebrew/3ds/$(fw_folder)\"
+endif
+
 dir_source := source
 dir_data   := data
 dir_build  := build
@@ -30,7 +46,7 @@ REL ?= master
 CHAINLOADER ?= 1
 
 CROSS_ASFLAGS := -mlittle-endian -mcpu=arm946e-s -march=armv5te
-CROSS_CFLAGS  := -MMD -MP -Wall -Wextra -Werror -fomit-frame-pointer -Os $(ASFLAGS) -fshort-wchar -fno-builtin -std=gnu11 -DVERSION=\"$(REVISION)\" -DREL=\"$(REL)\" -DCHAINLOADER=$(CHAINLOADER) -DPATH_CFW=\"/$(fw_folder)\" -DFW_NAME=\"$(fw_name)\"
+CROSS_CFLAGS  := -MMD -MP -Wall -Wextra -Werror -fomit-frame-pointer -Os $(ASFLAGS) -fshort-wchar -fno-builtin -std=gnu11 -DVERSION=\"$(REVISION)\" -DREL=\"$(REL)\" -DCHAINLOADER=$(CHAINLOADER) -DPATH_CFW=\"/$(fw_folder)\" -DFW_NAME=\"$(fw_name)\" $(PATHARGS)
 CROSS_FLAGS   := dir_out=$(abspath $(dir_out)) --no-print-directory
 CROSS_LDFLAGS := -nostdlib -Wl,-z,defs -lgcc -Wl,-Map,$(dir_build)/link.map
 
@@ -55,7 +71,7 @@ release:
 
 .PHONY: hosttools
 hosttools:
-       make -C host/bdfe dir_out=$(dir_out) fw_folder=$(fw_folder)
+       make -C host/bdfe dir_out=$(dir_out) fw_folder=$(fw_folder) root=$(root)
 
 .PHONY: font
 font: hosttools
@@ -71,15 +87,15 @@ full: all contrib $(dir_out)/$(fw_folder)/locale
 
 .PHONY: contrib
 contrib:
-       make -C contrib dir_out=$(dir_out) fw_name=$(fw_name) fw_folder=$(fw_folder)
+       make -C contrib dir_out=$(dir_out) fw_name=$(fw_name) fw_folder=$(fw_folder) root=$(root)
 
 .PHONY: external
 external:
-       make -C external dir_out=$(dir_out) fw_name=$(fw_name) fw_folder=$(fw_folder) CHAINLOADER=$(CHAINLOADER)
+       make -C external dir_out=$(dir_out) fw_name=$(fw_name) fw_folder=$(fw_folder) CHAINLOADER=$(CHAINLOADER) root=$(root)
 
 .PHONY: patch
 patch:
-       make -C patch dir_out=$(dir_out) fw_name=$(fw_name) fw_folder=$(fw_folder)
+       make -C patch dir_out=$(dir_out) fw_name=$(fw_name) fw_folder=$(fw_folder) root=$(root)
 
 .PHONY: a9lh
 a9lh: $(dir_out)/arm9loaderhax.bin
@@ -96,9 +112,9 @@ $(dir_out)/$(fw_folder)/locale: all
 .PHONY: clean
 clean:
        rm -f host/{font-emit,font.h,font_prop.h,termfont.bin}
-       make -C external dir_out=$(dir_out) fw_folder=$(fw_folder) clean
-       make -C patch dir_out=$(dir_out) fw_folder=$(fw_folder) clean
-       make -C host/bdfe dir_out=$(dir_out) fw_folder=$(fw_folder) clean
+       make -C external dir_out=$(dir_out) fw_folder=$(fw_folder) root=$(root) clean
+       make -C patch dir_out=$(dir_out) fw_folder=$(fw_folder) root=$(root) clean
+       make -C host/bdfe dir_out=$(dir_out) fw_folder=$(fw_folder) root=$(root) clean
        rm -rf $(dir_out) $(dir_build)
 
 .PHONY: $(dir_out)/arm9loaderhax.bin
index e421fe3fa0dafe35fcd27edd8cf2c29da3a205db..5cac09eca05b43df5286925c8c962830ed0bd046 100644 (file)
@@ -21,24 +21,24 @@ clean: clean_loader clean_bits clean_screeninit
 
 .PHONY: loader
 loader:
-       make -C loader
+       make -C loader dir_out=$(dir_out) fw_folder=$(fw_folder) root=$(root)
 
 .PHONY: bits
 bits:
-       make -C bits
+       make -C bits dir_out=$(dir_out) fw_folder=$(fw_folder) root=$(root)
 
 .PHONY: screeninit
 screeninit:
-       make -C screeninit
+       make -C screeninit dir_out=$(dir_out) fw_folder=$(fw_folder) root=$(root)
 
 .PHONY: clean_loader
 clean_loader:
-       make -C loader clean
+       make -C loader dir_out=$(dir_out) fw_folder=$(fw_folder) root=$(root) clean
 
 .PHONY: clean_bits
 clean_bits:
-       make -C bits clean
+       make -C bits dir_out=$(dir_out) fw_folder=$(fw_folder) root=$(root) clean
 
 .PHONY: clean_screeninit
 screeninit_clean:
-       make -C screeninit clean
+       make -C screeninit dir_out=$(dir_out) fw_folder=$(fw_folder) root=$(root) clean
index b40f7feee0776803f3dfda8de58ab1afe5c74f88..c014baf3b94ae37a77693851c482b317e245e7d0 100644 (file)
@@ -10,9 +10,20 @@ endif
 
 TOPDIR ?= $(CURDIR)
 MAKEROM ?= makerom
-PYTHON ?= python3
+PYTHON ?= python2
 include $(DEVKITARM)/3ds_rules
 
+ifeq "$(root)" "clusterfuck"
+  PATHARGS := -DPATH_ROOT=\"\"
+  PATHARGS += -DPATH_DATA=\"/$(fw_folder)\"
+else ifeq "$(root)" "cruel"
+  PATHARGS := -DPATH_ROOT=\"/3ds/apps\"
+  PATHARGS += -DPATH_DATA=\"/3ds/appdata/$(fw_folder)\"
+else ifeq "$(root)" "shadowhand"
+  PATHARGS := -DPATH_ROOT=\"/homebrew/3ds\"
+  PATHARGS += -DPATH_DATA=\"/homebrew/3ds/$(fw_folder)\"
+endif
+
 #---------------------------------------------------------------------------------
 # TARGET is the name of the output
 # BUILD is the directory where object files & intermediate files will be placed
@@ -36,7 +47,7 @@ CFLAGS        := -flto -Wall -Os -mword-relocations $(ERROR) \
                        -fomit-frame-pointer -ffunction-sections -fdata-sections -fshort-wchar \
                        $(ARCH)
 
-CFLAGS +=      $(INCLUDE) -DARM11 -D_3DS -DLOADER=1 -DPATH_CFW=\"/$(fw_folder)\"
+CFLAGS +=      $(INCLUDE) -DARM11 -D_3DS -DLOADER=1 -DPATH_CFW=\"/$(fw_folder)\" $(PATHARGS)
 
 CXXFLAGS       := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu99
 
index 3a912828b4a941498c556d6ea41047b8850df1d8..76b26e00fb77e3059b955f82b47361535515334c 100644 (file)
 #define PATCH_DISABLED (1 << 2)   // Do not allow changing this patch's status. With PATCH_MANDATORY,
                                   // this prevents disabling it.
 
+#ifndef PATH_ROOT
+#define PATH_ROOT "" // Root "storage" directory. Nothing by default (e.g. root clutter mode)
+#endif
+
 // You can redefine this in the Makefile, if you'd like.
 // Recommended names for being silly:
 //   Windows
 //   system
-#ifndef PATH_CFW
-#define PATH_CFW "/corbenik" // CFW root directory.
-#endif
 
-#define PATH_CONFIG_DIR PATH_CFW "/config"       // Config file directory.
-#define PATH_CONFIG PATH_CONFIG_DIR "/main.conf" // Config file.
-#define PATH_CPU_CFG PATH_CONFIG_DIR "/cpu.conf" // CPU settings config
+//#ifndef PATH_CFW
+//#define PATH_CFW "/corbenik" // CFW root directory.
+//#endif
+
+//#ifndef PATH_DATA
+//#define PATH_DATA PATH_ROOT PATH_CFW // Data "storage" directory. Nothing by default (e.g. root clutter mode)
+//#endif
 
-#define PATH_LOCEMU PATH_CFW "/locale"    // Locale emulation config
+#define PATH_MODULES PATH_ROOT PATH_CFW "/module"     // Sysmodule location
+#define PATH_PATCHES PATH_ROOT PATH_CFW "/patch"      // Patch binary folder.
 
-#define PATH_PATCHES PATH_CFW "/patch"      // Patch binary folder.
-#define PATH_FIRMWARES PATH_CFW "/firmware" // Firmware folder.
-#define PATH_MODULES PATH_CFW "/module"     // Sysmodule location
+#define PATH_BITS PATH_ROOT PATH_CFW "/bits" // Path to misc bits we need (emunand code, reboot code, etc)
+
+#define PATH_EMUNAND_CODE PATH_BITS "/emunand.bin"       // Emunand hook.
+#define PATH_SCREENINIT_CODE PATH_BITS "/screeninit.bin" // Screeninit code (ARM11)
+#define PATH_BACKDOOR PATH_BITS "/backdoor.bin"   // svcBackdoor
+#define PATH_REBOOT_HOOK PATH_BITS "/reboot_hook.bin"   // Reboot hook
+#define PATH_REBOOT_CODE PATH_BITS "/reboot_code.bin"   // Reboot entry code
 
-#define PATH_CHAINS PATH_CFW "/chain"
+#define PATH_CHAINS PATH_DATA "/chain"
 
-#define PATH_TEMP PATH_CFW "/cache"           // Files that are transient and used to speed operation
+#define PATH_TEMP PATH_DATA "/cache"           // Files that are transient and used to speed operation
 #define PATH_LOADER_CACHE PATH_TEMP "/loader" // Cached patch bytecode for loader.
 
+#define PATH_LOCEMU PATH_DATA "/locale"    // Locale emulation config
+#define PATH_FIRMWARES PATH_DATA "/firmware" // Firmware folder.
+
+#define PATH_CONFIG_DIR PATH_DATA "/config"       // Config file directory.
+#define PATH_CONFIG PATH_CONFIG_DIR "/main.conf" // Config file.
+#define PATH_CPU_CFG PATH_CONFIG_DIR "/cpu.conf" // CPU settings config
+
 #define PATH_NATIVE_P PATH_TEMP "/p_native"
 #define PATH_AGB_P PATH_TEMP "/p_agb"
 #define PATH_TWL_P PATH_TEMP "/p_twl"
 
-#define PATH_KEYS PATH_CFW "/keys" // Keyfiles will be loaded from this dir, and
+#define PATH_KEYS PATH_DATA "/keys" // Keyfiles will be loaded from this dir, and
                                    // additionally the root if not found.
 
-#define PATH_EXEFS PATH_CFW "/exe"         // ExeFS overrides/dumps, named by titleid
+#define PATH_EXEFS PATH_DATA "/exe"         // ExeFS overrides/dumps, named by titleid
 #define PATH_EXEFS_TEXT PATH_EXEFS "/text" // Text segment overrides/dumps, named by titleid
 #define PATH_EXEFS_RO PATH_EXEFS "/ro"     // RO segment overrides/dumps, named by titleid
 #define PATH_EXEFS_DATA PATH_EXEFS "/data" // Data segment overrides/dumps, named by titleid
 
-#define PATH_BITS PATH_CFW "/bits" // Path to misc bits we need (emunand code, reboot code, etc)
-
-#define PATH_EMUNAND_CODE PATH_BITS "/emunand.bin"       // Emunand hook.
-#define PATH_SCREENINIT_CODE PATH_BITS "/screeninit.bin" // Screeninit code (ARM11)
-#define PATH_BACKDOOR PATH_BITS "/backdoor.bin"   // svcBackdoor
-#define PATH_REBOOT_HOOK PATH_BITS "/reboot_hook.bin"   // Reboot hook
-#define PATH_REBOOT_CODE PATH_BITS "/reboot_code.bin"   // Reboot entry code
-
 #define PATH_NATIVE_F PATH_FIRMWARES "/native"
 #define PATH_AGB_F PATH_FIRMWARES "/agb"
 #define PATH_TWL_F PATH_FIRMWARES "/twl"