From 19d8861d27d5e793eed04b2a2701469ca360cda8 Mon Sep 17 00:00:00 2001 From: Aurora Date: Tue, 19 Apr 2016 20:51:00 +0200 Subject: [PATCH] Give 3ds_injector a sane makefile --- Makefile | 4 +- injector/Makefile | 111 +++++++++++---------------------------- injector/source/loader.c | 6 +-- loader/Makefile | 4 +- screeninit/Makefile | 4 +- 5 files changed, 39 insertions(+), 90 deletions(-) mode change 100644 => 100755 injector/Makefile diff --git a/Makefile b/Makefile index faccc2e..8e312f5 100644 --- a/Makefile +++ b/Makefile @@ -24,7 +24,7 @@ dir_ninjhax := CakeBrah dir_build := build dir_out := out -ASFLAGS := -mlittle-endian -mcpu=arm946e-s -march=armv5te +ASFLAGS := -mcpu=arm946e-s CFLAGS := -Wall -Wextra -MMD -MP -marm $(ASFLAGS) -fno-builtin -fshort-wchar -std=c11 -Wno-main -O2 -flto -ffast-math LDFLAGS := -nostartfiles FLAGS := name=$(name).dat dir_out=$(abspath $(dir_out)) ICON=$(abspath icon.png) APP_DESCRIPTION="Noob-friendly 3DS CFW." APP_AUTHOR="Reisyukaku/Aurora Wright" --no-print-directory @@ -87,7 +87,7 @@ $(dir_build)/main.bin: $(dir_build)/main.elf $(OC) -S -O binary $< $@ $(dir_build)/main.elf: $(objects) - $(CC) $(LDFLAGS) -T linker.ld $(OUTPUT_OPTION) $^ + $(LINK.o) -T linker.ld $(OUTPUT_OPTION) $^ $(dir_build)/patches.h: $(dir_patches)/emunand.s $(dir_patches)/reboot.s $(dir_injector)/Makefile @mkdir -p "$(@D)" diff --git a/injector/Makefile b/injector/Makefile old mode 100644 new mode 100755 index 62744a2..c33e3d8 --- a/injector/Makefile +++ b/injector/Makefile @@ -1,102 +1,51 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- +rwildcard = $(foreach d, $(wildcard $1*), $(filter $(subst *, %, $2), $d) $(call rwildcard, $d/, $2)) ifeq ($(strip $(DEVKITARM)),) $(error "Please set DEVKITARM in your environment. export DEVKITARM=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 -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source +CC := arm-none-eabi-gcc +AS := arm-none-eabi-as +LD := arm-none-eabi-ld +OC := arm-none-eabi-objcopy -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft +name := $(shell basename $(CURDIR)) -CFLAGS := -flto -Wall -O2 -mword-relocations \ - -ffast-math -fno-builtin -ffunction-sections -fdata-sections \ - $(ARCH) $(INCLUDE) -DARM11 -D_3DS +dir_source := source +dir_build := build -LDFLAGS = -flto -Xlinker --defsym="__start__=0x14000000" -specs=3dsx.specs $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- +LIBS := -lctru LIBDIRS := $(CTRULIB) +LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) +INCLUDE := $(foreach dir,$(LIBDIRS),-I$(dir)/include) -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- +ARCH := -mcpu=mpcore -mfloat-abi=hard -mtp=soft +CFLAGS := -Wall -Wextra -MMD -MP -marm $(ARCH) -fno-builtin -std=c11 -O2 -flto -ffast-math -mword-relocations \ + -ffunction-sections -fdata-sections $(INCLUDE) -DARM11 -D_3DS +LDFLAGS := -Xlinker --defsym="__start__=0x14000000" -specs=3dsx.specs $(ARCH) -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) +objects = $(patsubst $(dir_source)/%.c, $(dir_build)/%.o, \ + $(call rwildcard, $(dir_source), *.c)) -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) +.PHONY: all +all: $(name).cxi -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) - -export LD := $(CC) - -export OFILES := $(CFILES:.c=.o) - -export INCLUDE := $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- +.PHONY: clean clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).elf + @rm -rf $(dir_build) +$(name).cxi: $(dir_build)/$(name).elf + @makerom -f ncch -rsf loader.rsf -nocodepadding -o $@ -elf $< -#--------------------------------------------------------------------------------- -else +$(dir_build)/$(name).elf: $(objects) + $(LINK.o) $(OUTPUT_OPTION) $^ $(LIBPATHS) $(LIBS) -DEPENDS := $(OFILES:.o=.d) +$(dir_build)/memory.o : CFLAGS += -O3 -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -$(OUTPUT).cxi : $(OUTPUT).elf - @makerom -f ncch -rsf ../loader.rsf -nocodepadding -o $@ -elf $< - -memory.o : CFLAGS += -O3 - -$(OUTPUT).elf : $(OFILES) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- +$(dir_build)/%.o: $(dir_source)/%.c + @mkdir -p "$(@D)" + $(COMPILE.c) $(OUTPUT_OPTION) $< +include $(call rwildcard, $(dir_build), *.d) diff --git a/injector/source/loader.c b/injector/source/loader.c index bf663a7..9698b8d 100644 --- a/injector/source/loader.c +++ b/injector/source/loader.c @@ -461,14 +461,14 @@ void __sync_init(); void __sync_fini(); void __system_initSyscalls(); -void __ctru_exit(int rc) +void __ctru_exit() { __appExit(); __sync_fini(); svcExitProcess(); } -void initSystem(void (*retAddr)(void)) +void initSystem() { __sync_init(); __system_initSyscalls(); @@ -520,7 +520,7 @@ int main() if (R_FAILED(ret)) { // check if any handle has been closed - if (ret == 0xC920181A) + if (ret == (int)0xC920181A) { if (index == -1) { diff --git a/loader/Makefile b/loader/Makefile index 55a5c71..2de7b88 100644 --- a/loader/Makefile +++ b/loader/Makefile @@ -16,7 +16,7 @@ name := $(shell basename $(CURDIR)) dir_source := source dir_build := build -ASFLAGS := -mlittle-endian -mcpu=arm946e-s -march=armv5te +ASFLAGS := -mcpu=arm946e-s CFLAGS := -Wall -Wextra -MMD -MP -marm $(ASFLAGS) -fno-builtin -std=c11 -Wno-main -O2 -flto -ffast-math -mthumb -mthumb-interwork LDFLAGS := -nostartfiles @@ -35,7 +35,7 @@ $(name).bin: $(dir_build)/$(name).elf $(OC) -S -O binary $< $@ $(dir_build)/$(name).elf: $(objects) - $(CC) $(LDFLAGS) -T linker.ld $(OUTPUT_OPTION) $^ + $(LINK.o) -T linker.ld $(OUTPUT_OPTION) $^ $(dir_build)/%.o: $(dir_source)/%.c @mkdir -p "$(@D)" diff --git a/screeninit/Makefile b/screeninit/Makefile index c20af74..eadc4bc 100755 --- a/screeninit/Makefile +++ b/screeninit/Makefile @@ -16,7 +16,7 @@ name := $(shell basename $(CURDIR)) dir_source := source dir_build := build -ASFLAGS := -mlittle-endian -mcpu=mpcore +ASFLAGS := -mcpu=mpcore -mfloat-abi=hard CFLAGS := -Wall -Wextra -MMD -MP -marm $(ASFLAGS) -fno-builtin -std=c11 -Wno-main -O2 -flto -ffast-math -mthumb -mthumb-interwork LDFLAGS := -nostdlib @@ -35,7 +35,7 @@ $(name).bin: $(dir_build)/$(name).elf $(OC) -S -O binary $< $@ $(dir_build)/$(name).elf: $(objects) - $(CC) $(LDFLAGS) -T linker.ld $(OUTPUT_OPTION) $^ + $(LINK.o) -T linker.ld $(OUTPUT_OPTION) $^ $(dir_build)/%.o: $(dir_source)/%.c @mkdir -p "$(@D)"