diff options
-rw-r--r-- | arm7/Makefile | 48 | ||||
-rw-r--r-- | arm7/asm/OS_init.s | 21 | ||||
-rw-r--r-- | arm7/lib/include/OS_init.h | 6 | ||||
-rw-r--r-- | arm7/lib/src/OS_init.c | 25 |
4 files changed, 69 insertions, 31 deletions
diff --git a/arm7/Makefile b/arm7/Makefile index 08f8d64c..d898e7bd 100644 --- a/arm7/Makefile +++ b/arm7/Makefile @@ -46,15 +46,21 @@ LD_SPEC := $(TARGET).lsf LD_TEMPLATE := ARM7-TS.lcf.template # Directories containing source files -SRC_DIRS := src +SRC_DIRS := src lib lib/src ASM_DIRS := asm data files C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c)) S_FILES := $(foreach dir,$(ASM_DIRS),$(wildcard $(dir)/*.s)) +C_OBJS = $(C_FILES:%.c=$(BUILD_DIR)/%.o) +S_OBJS = $(S_FILES:%.s=$(BUILD_DIR)/%.o) + # Object files -O_FILES := $(foreach file,$(C_FILES),$(BUILD_DIR)/$(file:.c=.o)) \ - $(foreach file,$(S_FILES),$(BUILD_DIR)/$(file:.s=.o)) \ +O_FILES := $(C_OBJS) $(S_OBJS) + +.SECONDARY: +.DELETE_ON_ERROR: +.SECONDEXPANSION: ##################### Compiler Options ####################### @@ -83,7 +89,7 @@ OBJCOPY := $(CROSS)objcopy # ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm7_thumb.s -o arm7.o ASFLAGS = -proc arm4t -i .. -CFLAGS = -O4,p -proc v4t -fp soft -lang c99 -Cpp_exceptions off -ir ../include -ir ../include-mw -ir ../arm9/lib/include -W all # temporary fix while arm7 libos hasn't been decomped +CFLAGS = -O4,p -proc arm7tdmi -fp soft -lang c99 -Cpp_exceptions off -ir ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int -W all LDFLAGS = -map -nodead -w off -proc v4t -interworking -map -symtab -m _start ####################### Other Tools ######################### @@ -92,6 +98,7 @@ LDFLAGS = -map -nodead -w off -proc v4t -interworking -map -symtab -m _start SHA1SUM = sha1sum JSONPROC = $(TOOLS_DIR)/jsonproc/jsonproc GFX = $(TOOLS_DIR)/nitrogfx/nitrogfx +SCANINC = $(TOOLS_DIR)/scaninc/scaninc$(EXE) MWASMARM_PATCHER = $(TOOLS_DIR)/mwasmarm_patcher/mwasmarm_patcher$(EXE) -q TOOLDIRS = $(filter-out $(TOOLS_DIR)/mwccarm $(TOOLS_DIR)/bin,$(wildcard $(TOOLS_DIR)/*)) @@ -99,6 +106,7 @@ TOOLBASE = $(TOOLDIRS:$(TOOLS_DIR)/%=%) TOOLS = $(foreach tool,$(TOOLBASE),$(TOOLS_DIR)/$(tool)/$(tool)$(EXE)) export LM_LICENSE_FILE := $(TOOLS_DIR)/mwccarm/license.dat +export MWCIncludes := lib/include ######################### Targets ########################### @@ -112,6 +120,7 @@ else NODEP := 1 endif +.PRECIOUS: $(ROM) .PHONY: all clean mostlyclean tidy tools $(TOOLDIRS) patch_mwasmarm MAKEFLAGS += --no-print-directory @@ -142,17 +151,31 @@ patch_mwasmarm: ALL_DIRS := $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) $(ASM_DIRS)) -$(BUILD_DIR)/%.o: %.c +######################## Special Rules ######################## + +# TODO: Move out to lib/Makefile +build/lib/src/%.o: MWCCVERSION = 1.2/sp2p3 + +####################### Everything Else ###################### + +ifeq (,$(NODEP)) +$(BUILD_DIR)/%.o: dep = $(shell $(SCANINC) -I ../include -I ../include-mw -I lib/include $(filter $*.c,$(C_FILES)) $(filter $*.s,$(S_FILES))) +else +$(BUILD_DIR)/%.o: dep := +endif + +$(C_OBJS): $(BUILD_DIR)/%.o: %.c $$(dep) $(CC) -c $(CFLAGS) -o $@ $< -$(BUILD_DIR)/%.o: %.s - $(AS) $(ASFLAGS) $< -o $@ +$(S_OBJS): $(BUILD_DIR)/%.o: %.s $$(dep) + $(AS) $(ASFLAGS) -o $@ $< $(BUILD_DIR)/$(LD_SCRIPT): $(LD_SPEC) $(LD_TEMPLATE) $(MAKELSF) $< $(LD_TEMPLATE) $@ -$(ROM): $(O_FILES) $(BUILD_DIR)/$(LD_SCRIPT) - $(LD) $(LDFLAGS) $(BUILD_DIR)/$(LD_SCRIPT) -o $(ELF) $(O_FILES) +$(ROM): $(O_FILES) $(BUILD_DIR)/$(LD_SCRIPT) $(BIN_FILES) + $(LD) $(LDFLAGS) $(BUILD_DIR)/$(LD_SCRIPT) -o $(ELF) $(O_FILES) $(BIN_FILES) + $(OBJCOPY) --update-section arm7=$@ -j arm7 $(foreach ov,$(OVERLAYS),--update-section $(ov)=$(BUILD_DIR)/$(ov).sbin -j $(ov)) $(ELF) 2>/dev/null # Make sure build directory exists before compiling anything DUMMY != mkdir -p $(ALL_DIRS) @@ -172,7 +195,12 @@ DUMMY != mkdir -p $(ALL_DIRS) %.png: ; %.pal: ; -$(BUILD_DIR)/data/icon.o: graphics/icon.4bpp graphics/icon.gbapal +# Included files +baserom.%: ; +%.h: ; +%.inc: ; + +$(BIN_FILES): ; ### Debug Print ### diff --git a/arm7/asm/OS_init.s b/arm7/asm/OS_init.s deleted file mode 100644 index d0e471bb..00000000 --- a/arm7/asm/OS_init.s +++ /dev/null @@ -1,21 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - arm_func_start OS_Init -OS_Init: ; 0x037F9B84 - stmfd sp!, {lr} - sub sp, sp, #4 - bl OS_InitArena - bl PXI_Init - bl OS_InitLock - bl OS_InitIrqTable - bl OS_InitTick - bl OS_InitAlarm - bl OS_InitThread - bl OS_InitReset - bl CTRDG_Init - add sp, sp, #4 - ldmia sp!, {lr} - bx lr diff --git a/arm7/lib/include/OS_init.h b/arm7/lib/include/OS_init.h new file mode 100644 index 00000000..5b3dfcc1 --- /dev/null +++ b/arm7/lib/include/OS_init.h @@ -0,0 +1,6 @@ +#ifndef POKEDIAMOND_OS_INIT_H +#define POKEDIAMOND_OS_INIT_H + +void OS_Init(void); + +#endif //POKEDIAMOND_OS_INIT_H diff --git a/arm7/lib/src/OS_init.c b/arm7/lib/src/OS_init.c new file mode 100644 index 00000000..082b3e70 --- /dev/null +++ b/arm7/lib/src/OS_init.c @@ -0,0 +1,25 @@ +#include "function_target.h" +#include "OS_init.h" + +extern void OS_InitArena(void); +extern void PXI_Init(void); +extern void OS_InitLock(void); +extern void OS_InitIrqTable(void); +extern void OS_InitTick(void); +extern void OS_InitAlarm(void); +extern void OS_InitThread(void); +extern void OS_InitReset(void); +extern void CTRDG_Init(void); + +ARM_FUNC void OS_Init(void) +{ + OS_InitArena(); + PXI_Init(); + OS_InitLock(); + OS_InitIrqTable(); + OS_InitTick(); + OS_InitAlarm(); + OS_InitThread(); + OS_InitReset(); + CTRDG_Init(); +} |