SMS-GCI-Loader/Makefile

71 lines
1.9 KiB
Makefile
Raw Normal View History

2022-11-27 06:38:23 +09:00
CC := powerpc-eabi-gcc
CFLAGS := -O3 -I. -Wa,-mregnames,-mgekko -Wall -fno-asynchronous-unwind-tables -fno-unwind-tables -fverbose-asm -gdwarf
2022-11-27 06:38:23 +09:00
AS := powerpc-eabi-as
ASFLAGS := -mregnames -mgekko
OD := powerpc-eabi-objdump
2022-12-11 08:14:07 +09:00
ODFLAGS := -EB -D -b binary -m powerpc:750 -M gekko -a -p -h -F --full-content
ODASMFLAGS := -EB -D -b binary -m powerpc:750 -M gekko --no-show-raw-insn --no-addresses
2022-11-27 06:38:23 +09:00
LD := powerpc-eabi-ld
LDFLAGS := --unresolved-symbols=ignore-in-object-files --enable-non-contiguous-regions -EB --nmagic
2022-11-27 06:38:23 +09:00
OBJCOPY := powerpc-eabi-objcopy
2022-12-11 09:02:56 +09:00
OBJCOPYFLAGS := -O binary --add-gnu-debuglink=sms.ld --gap-fill 0x00 --pad-to 0x81800000
2022-11-27 06:38:23 +09:00
SRC_DIR := source
INC_DIR := include
OUT_DIR := out
OBJ_DIR := obj
LD_FILE := sms.ld
OUT_MAP := main.map
OUT_MAIN := main.out
OUT_BIN := main.bin
OUT_LST := main.lst
2022-12-11 08:14:07 +09:00
OUT_ASM := main.asm
2022-11-27 06:38:23 +09:00
2022-11-27 12:57:16 +09:00
GMSE01 := 1
GMSJ01 := 2
GMSP01 := 3
GMSJ0A := 4
TARGET_VERSION = $($(GAME_VERSION))
2022-11-27 06:38:23 +09:00
SRC_FILES := $(wildcard source/*.c)
OBJ_FILES := $(SRC_FILES:.c=.o)
OBJS := main.o card.o
blockCount := 7
2022-12-11 08:14:07 +09:00
all: $(OUT_DIR)/$(OUT_BIN) $(OUT_DIR)/$(OUT_LST) $(OUT_DIR)/$(OUT_ASM)
$(OUT_DIR)/$(OUT_ASM): $(OUT_DIR)/$(OUT_BIN)
$(OD) $(ODASMFLAGS) $(OUT_DIR)/$(OUT_BIN) | grep -Pe "^\t(?!Address)" | sed 's/^\t//' > $(OUT_DIR)/$(OUT_ASM)
2022-11-27 06:38:23 +09:00
$(OUT_DIR)/$(OUT_LST): $(OUT_DIR)/$(OUT_BIN)
$(OD) $(ODFLAGS) $(OUT_DIR)/$(OUT_BIN) > $(OUT_DIR)/$(OUT_LST)
2022-11-27 06:38:23 +09:00
$(OUT_DIR)/$(OUT_BIN): $(OUT_DIR)/$(OUT_MAIN)
2022-12-11 09:02:56 +09:00
$(OBJCOPY) $(OBJCOPYFLAGS) $< $@
2022-11-27 06:38:23 +09:00
$(OUT_DIR)/$(OUT_MAIN): $(OBJ_FILES) $(LD_FILE) $(OUT_DIR)
$(LD) $(LDFLAGS) -o $@ -T $(LD_FILE) -Map $(OUT_DIR)/$(OUT_MAP) $(OBJ_FILES)
2022-11-27 06:38:23 +09:00
2022-11-27 12:57:16 +09:00
$(OBJ_FILES): $(SRC_FILES) check-set-TARGET_VERSION
$(CC) $(CFLAGS) -D VERSION=$(TARGET_VERSION) -I $(INC_DIR) -o $@ -c $(@:.o=.c)
2022-11-27 06:38:23 +09:00
$(OUT_DIR):
mkdir -p $@
2022-11-27 12:57:16 +09:00
check-set-%:
@ if [ "${${*}}" = "" ]; then \
echo "Variable $* not set"; \
exit 1; \
fi
2022-11-27 06:38:23 +09:00
.PHONY: clean
clean:
$(RM) -rv $(OUT_DIR) $(OBJ_FILES)