summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-02-13 15:28:35 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2020-02-13 15:28:35 -0500
commite23ea964389bc2032f02fb4e625431be08f88481 (patch)
tree8ea5b12d21ad0cba368cb4822f87839a51515a0a /Makefile
parent3b2eaeedbc4c658389c7fceb93e6bbd07e8a6283 (diff)
Wildcard sections in ld script
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile11
1 files changed, 8 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index fd753b982..dc5129729 100644
--- a/Makefile
+++ b/Makefile
@@ -68,6 +68,7 @@ ASM_SOURCES := $(wildcard src/*.s src/*/*.s asm/*.s data/*.s sound/*.s sound/*/
C_OBJECTS := $(addprefix $(BUILD_DIR)/, $(C_SOURCES:%.c=%.o))
ASM_OBJECTS := $(addprefix $(BUILD_DIR)/, $(ASM_SOURCES:%.s=%.o))
ALL_OBJECTS := $(C_OBJECTS) $(ASM_OBJECTS)
+OBJS_REL := $(ALL_OBJECTS:$(BUILD_DIR)/%=%)
SUBDIRS := $(sort $(dir $(ALL_OBJECTS)))
DATA_SRC_SUBDIR = src/data
@@ -83,7 +84,11 @@ LIBDIRS := \
endif
LDFLAGS := $(LIBDIRS:%=-L %) -lgcc -lc
+ifeq ($(MODERN),0)
LD_SCRIPT := $(BUILD_DIR)/ld_script.ld
+else
+LD_SCRIPT := $(BUILD_DIR)/ld_script_modern.ld
+endif
# Special configurations required for lib files
ifeq ($(MODERN),0)
@@ -189,11 +194,11 @@ $(ROM): %.gba: %.elf
$(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@
%.elf: $(LD_SCRIPT) $(ALL_OBJECTS)
- cd $(BUILD_DIR) && $(LD) -T ld_script.ld -Map ../../$(MAP) -o ../../$@ $(LDFLAGS)
+ cd $(BUILD_DIR) && $(LD) -T $(LD_SCRIPT:$(BUILD_DIR)/%=%) -Map ../../$(MAP) -o ../../$@ $(OBJS_REL) $(LDFLAGS)
$(GBAFIX) $@ -p -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(GAME_REVISION) --silent
-$(LD_SCRIPT): ld_script.txt $(BUILD_DIR)/sym_common.ld $(BUILD_DIR)/sym_ewram.ld $(BUILD_DIR)/sym_bss.ld
- cd $(BUILD_DIR) && sed -e "s#tools/#../../tools/#g" ../../ld_script.txt >ld_script.ld
+$(LD_SCRIPT): $(LD_SCRIPT:$(BUILD_DIR)/%.ld=%.txt) $(BUILD_DIR)/sym_common.ld $(BUILD_DIR)/sym_ewram.ld $(BUILD_DIR)/sym_bss.ld
+ sed -e "s#tools/#../../tools/#g" $< >$@
$(BUILD_DIR)/sym_%.ld: sym_%.txt
$(CPP) -P $(CPPFLAGS) $< | sed -e "s#tools/#../../tools/#g" > $@