mzm/Makefile

96 lines
1.8 KiB
Makefile
Raw Normal View History

2022-01-20 17:46:10 +00:00
TARGET = mzm_us.gba
BASEROM = baserom_us.gba
SHA1FILE = mzm.sha1
2022-01-21 09:08:58 +00:00
ELF = $(TARGET:.gba=.elf)
MAP = $(TARGET:.gba=.map)
DUMPS = $(TARGET:.gba=.dump) $(BASEROM:.gba=.dump)
2022-01-20 17:46:10 +00:00
# Binaries
2022-01-21 09:08:58 +00:00
TOOLCHAIN ?= arm-none-eabi-
AS = $(TOOLCHAIN)as
LD = $(TOOLCHAIN)ld
OBJCOPY = $(TOOLCHAIN)objcopy
OBJDUMP = $(TOOLCHAIN)objdump
DIFF = diff -u
2022-01-20 17:46:10 +00:00
RM = rm -f
SHA1SUM = sha1sum
2022-01-21 09:08:58 +00:00
TAIL = tail
# Flags
ASFLAGS = -mcpu=arm7tdmi
# Objects
ASM = \
asm/blob_0x00000000-0x000000c0.s \
asm/crt0.s \
asm/blob_0x00000104-0x00800000.s
OBJ = $(ASM:.s=.o) $(BLOBS)
2022-01-20 17:46:10 +00:00
# Enable verbose output
ifeq ($(V),1)
Q =
MSG = @:
else
Q = @
MSG = @echo " "
endif
.PHONY: all
all: $(TARGET)
.PHONY: check
check: all
$(MSG) SHA1SUM $(SHA1FILE)
$Q$(SHA1SUM) -c $(SHA1FILE)
2022-01-21 09:08:58 +00:00
.PHONY: dump
dump: $(DUMPS)
.PHONY: diff
diff: $(DUMPS)
$(MSG) DIFF $^
$Q$(DIFF) $^
2022-01-20 17:46:10 +00:00
.PHONY: clean
clean:
$(MSG) RM $(TARGET)
2022-01-21 09:08:58 +00:00
$Q$(RM) $(TARGET) $(ELF) $(MAP)
$(MSG) RM $(DUMPS)
$Q$(RM) $(DUMPS)
$(MSG) RM $(OBJ)
$Q$(RM) $(OBJ)
.PHONY: help
help:
@echo 'Targets:'
@echo ' all: build the ROM'
@echo ' check: checksum the ROM'
@echo ' dump: dump the ROMs'
@echo ' diff: compare the ROM with the original'
@echo ' clean: remove the ROM and intermediate files'
@echo ' help: show this message'
@echo ''
@echo 'Flags:'
@echo ' V=1: enable verbose output'
$(TARGET): $(ELF)
$(MSG) OBJCOPY $@
$Q$(OBJCOPY) -O binary --gap-fill 0xff --pad-to 0x08800000 $< $@
# TODO: gbafix
$(ELF): $(OBJ) linker.ld
$(MSG) LD $@
$Q$(LD) $(LDFLAGS) -n -T linker.ld -Map=$(MAP) -o $@ $(OBJ)
2022-01-20 17:46:10 +00:00
2022-01-21 09:08:58 +00:00
%.dump: %.gba
$(MSG) OBJDUMP $@
$Q$(OBJDUMP) -D -bbinary -marm7tdmi $< | $(TAIL) -n+3 > $@
2022-01-20 17:46:10 +00:00
2022-01-21 09:08:58 +00:00
%.o: %.s
$(MSG) AS $@
$Q$(AS) $(ASFLAGS) $< -o $@