mirror of https://github.com/pmret/papermario.git
82 lines
2.0 KiB
Makefile
82 lines
2.0 KiB
Makefile
# Makefile to rebuild SM64 split image
|
|
|
|
################ Target Executable and Sources ###############
|
|
|
|
# BUILD_DIR is location where all build artifacts are placed
|
|
BUILD_DIR = build
|
|
|
|
##################### Compiler Options #######################
|
|
CROSS = mips-linux-gnu-
|
|
AS = $(CROSS)as
|
|
CC = $(CROSS)gcc
|
|
LD = $(CROSS)ld
|
|
OBJDUMP = $(CROSS)objdump
|
|
OBJCOPY = $(CROSS)objcopy
|
|
|
|
ASFLAGS = -EB -mtune=vr4300 -march=vr4300
|
|
CFLAGS = -Wall -O2 -mtune=vr4300 -march=vr4300 -G 0 -c
|
|
LDFLAGS = -T $(LD_SCRIPT) -Map $(BUILD_DIR)/sm64.map
|
|
|
|
####################### Other Tools #########################
|
|
|
|
# N64 tools
|
|
TOOLS_DIR = ../tools
|
|
MIO0TOOL = $(TOOLS_DIR)/mio0
|
|
N64CKSUM = $(TOOLS_DIR)/n64cksum
|
|
N64GRAPHICS = $(TOOLS_DIR)/n64graphics
|
|
EMULATOR = mupen64plus
|
|
EMU_FLAGS = --noosd
|
|
LOADER = loader64
|
|
LOADER_FLAGS = -vwf
|
|
|
|
FixPath = $(subst /,\,$1)
|
|
|
|
######################## Targets #############################
|
|
|
|
default: all
|
|
|
|
# file dependencies generated by splitter
|
|
MAKEFILE_SPLIT = Makefile.split
|
|
include $(MAKEFILE_SPLIT)
|
|
|
|
all: $(TARGET).z64
|
|
|
|
clean:
|
|
del /Q $(call FixPath,$(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).o $(BUILD_DIR)/$(TARGET).bin $(BUILD_DIR)/$(TARGET).map $(TARGET).z64)
|
|
|
|
$(MIO0_DIR)/%.mio0: $(MIO0_DIR)/%.bin
|
|
$(MIO0TOOL) $< $@
|
|
|
|
$(BUILD_DIR):
|
|
mkdir $(BUILD_DIR)
|
|
|
|
$(BUILD_DIR)/$(TARGET).o: $(TARGET).s Makefile $(MAKEFILE_SPLIT) $(MIO0_FILES) $(LEVEL_FILES) $(MUSIC_FILES) | $(BUILD_DIR)
|
|
$(AS) $(ASFLAGS) -o $@ $<
|
|
|
|
$(BUILD_DIR)/%.o: %.c Makefile.as | $(BUILD_DIR)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BUILD_DIR)/$(TARGET).elf: $(BUILD_DIR)/$(TARGET).o $(LD_SCRIPT)
|
|
$(LD) $(LDFLAGS) -o $@ $< $(LIBS)
|
|
|
|
$(BUILD_DIR)/$(TARGET).bin: $(BUILD_DIR)/$(TARGET).elf
|
|
$(OBJCOPY) $< $@ -O binary
|
|
|
|
# final z64 updates checksum
|
|
$(TARGET).z64: $(BUILD_DIR)/$(TARGET).bin
|
|
$(N64CKSUM) $< $@
|
|
|
|
$(BUILD_DIR)/$(TARGET).hex: $(TARGET).z64
|
|
xxd $< > $@
|
|
|
|
$(BUILD_DIR)/$(TARGET).objdump: $(BUILD_DIR)/$(TARGET).elf
|
|
$(OBJDUMP) -D $< > $@
|
|
|
|
test: $(TARGET).z64
|
|
$(EMULATOR) $(EMU_FLAGS) $<
|
|
|
|
load: $(TARGET).z64
|
|
$(LOADER) $(LOADER_FLAGS) $<
|
|
|
|
.PHONY: all clean default diff test
|