diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 15 |
1 files changed, 14 insertions, 1 deletions
@@ -20,6 +20,7 @@ endif PREFIX := arm-none-eabi- OBJCOPY := $(PREFIX)objcopy +OBJDUMP := $(PREFIX)objdump AS := $(PREFIX)as LD := $(PREFIX)ld @@ -75,6 +76,7 @@ SHELL := /bin/bash -o pipefail ELF = $(ROM:.gba=.elf) MAP = $(ROM:.gba=.map) +SYM = $(ROM:.gba=.sym) C_SUBDIR = src GFLIB_SUBDIR = gflib @@ -129,6 +131,8 @@ FIX := tools/gbafix/gbafix$(EXE) MAPJSON := tools/mapjson/mapjson$(EXE) JSONPROC := tools/jsonproc/jsonproc$(EXE) +PERL := perl + TOOLDIRS := $(filter-out tools/agbcc tools/binutils,$(wildcard tools/*)) TOOLBASE = $(TOOLDIRS:tools/%=%) TOOLS = $(foreach tool,$(TOOLBASE),tools/$(tool)/$(tool)$(EXE)) @@ -153,7 +157,7 @@ infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst # Disable dependency scanning for clean/tidy/tools # Use a separate minimal makefile for speed # Since we don't need to reload most of this makefile -ifeq (,$(filter-out all rom compare modern berry_fix libagbsyscall,$(MAKECMDGOALS))) +ifeq (,$(filter-out all rom compare modern berry_fix libagbsyscall syms,$(MAKECMDGOALS))) $(call infoshell, $(MAKE) -f make_tools.mk) else NODEP ?= 1 @@ -211,6 +215,8 @@ all: rom tools: $(TOOLDIRS) +syms: $(SYM) + $(TOOLDIRS): @$(MAKE) -C $@ @@ -428,3 +434,10 @@ berry_fix: libagbsyscall: @$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN) MODERN=$(MODERN) + +################### +### Symbol file ### +################### + +$(SYM): $(ELF) + $(OBJDUMP) -t $< | sort -u | grep -E "^0[2389]" | $(PERL) -p -e 's/^(\w{8}) (\w).{6} \S+\t(\w{8}) (\S+)$$/\1 \2 \3 \4/g' > $@ |