diff options
| author | Marcus Huderle <huderlem@gmail.com> | 2018-10-10 12:22:40 -0500 |
|---|---|---|
| committer | Marcus Huderle <huderlem@gmail.com> | 2018-10-10 12:22:40 -0500 |
| commit | 69484fa8da6d4c1917375a1e3ce5bbe49565408b (patch) | |
| tree | 9d5efc45126b2ece6d8251ac032058df1d9e2baa /Makefile | |
Initial commit
Diffstat (limited to 'Makefile')
| -rwxr-xr-x | Makefile | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100755 index 0000000..48bafa3 --- /dev/null +++ b/Makefile @@ -0,0 +1,118 @@ +include $(DEVKITARM)/base_tools +export CPP := $(PREFIX)cpp +export LD := $(PREFIX)ld + +ifeq ($(OS),Windows_NT) +EXE := .exe +else +EXE := +endif + +TITLE := POKEPIN R/S +GAME_CODE := BPPE +MAKER_CODE := 01 +REVISION := 0 + +SHELL := /bin/bash -o pipefail + +ROM := pokepinballrs.gba +OBJ_DIR := build/pokepinballrs + +ELF = $(ROM:.gba=.elf) +MAP = $(ROM:.gba=.map) + +ASM_SUBDIR = asm +DATA_ASM_SUBDIR = data + +ASM_BUILDDIR = $(OBJ_DIR)/$(ASM_SUBDIR) +DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR) + +ASFLAGS := -mcpu=arm7tdmi + +CC1 := tools/agbcc/bin/agbcc$(EXE) +override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm + +CPPFLAGS := -I tools/agbcc/include -I tools/agbcc -iquote include -nostdinc -undef + +LDFLAGS = -Map ../../$(MAP) + +SHA1 := $(shell { command -v sha1sum || command -v shasum; } 2>/dev/null) -c +SCANINC := tools/scaninc/scaninc$(EXE) +FIX := tools/gbafix/gbafix$(EXE) + +# Clear the default suffixes +.SUFFIXES: +# Don't delete intermediate files +.SECONDARY: +# Delete files that weren't built properly +.DELETE_ON_ERROR: + +# Secondary expansion is required for dependency variables in object rules. +.SECONDEXPANSION: + +.PHONY: rom clean compare tidy + +$(shell mkdir -p $(ASM_BUILDDIR) $(DATA_ASM_BUILDDIR)) + +ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s) +ASM_OBJS := $(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o,$(ASM_SRCS)) + +DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s) +DATA_ASM_OBJS := $(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o,$(DATA_ASM_SRCS)) + +OBJS := $(ASM_OBJS) $(DATA_ASM_OBJS) +OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS)) + +rom: $(ROM) + +# For contributors to make sure a change didn't affect the contents of the ROM. +compare: $(ROM) + @$(SHA1) pokepinballrs.sha1 + +clean: tidy + find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + + +tidy: + rm -f $(ROM) $(ELF) $(MAP) + rm -r build/* + +%.s: ; +%.png: ; +%.pal: ; +%.aif: ; + +%.1bpp: %.png ; $(GFX) $< $@ +%.4bpp: %.png ; $(GFX) $< $@ +%.8bpp: %.png ; $(GFX) $< $@ +%.gbapal: %.pal ; $(GFX) $< $@ +%.gbapal: %.png ; $(GFX) $< $@ +%.lz: % ; $(GFX) $< $@ +%.rl: % ; $(GFX) $< $@ + +ifeq ($(NODEP),) +$(ASM_BUILDDIR)/%.o: asm_dep = $(shell $(SCANINC) $(ASM_SUBDIR)/$*.s) +else +$(ASM_BUILDDIR)/%.o: asm_dep := +endif + +$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s $$(asm_dep) + $(AS) $(ASFLAGS) -o $@ $< + +ifeq ($(NODEP),) +$(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) $(DATA_ASM_SUBDIR)/$*.s) +else +$(DATA_ASM_BUILDDIR)/%.o: data_dep := +endif + +$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep) + $(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@ + +$(OBJ_DIR)/ld_script.ld: ld_script.ld + cp $< $@ + +$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) + cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(OBJS_REL) + +$(ROM): $(ELF) + $(OBJCOPY) -O binary $< $@ + $(FIX) $@ -p -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent |
