Files
goldeneye-pc-port/assets/obseg/Makefile.chr
T

55 lines
2.0 KiB
Makefile

# chr
# Pattern rules for building .rz files from .bin files
$(BUILD_DIR)/$(OBSEG_DIR)/chr/%.rz: $(BUILD_DIR)/$(OBSEG_DIR)/chr/%.bin
$(RZ_COMP) $< $@
# Build .bin from .elf
$(BUILD_DIR)/$(OBSEG_DIR)/chr/%.bin: $(BUILD_DIR)/$(OBSEG_DIR)/chr/%.elf
$(OBJCOPY) $< $@ -O binary
# Build .elf from Model.o (and Switches.o if it exists)
# The pattern C%Z.elf extracts the chr name from the target
$(BUILD_DIR)/$(OBSEG_DIR)/chr/C%Z.elf: $(BUILD_DIR)/$(OBSEG_DIR)/chr/%/Model.o
@mkdir -p $(@D)
@if [ -f $(BUILD_DIR)/$(OBSEG_DIR)/chr/$*/Switches.o ]; then \
$(LD) -T assets/obseg/chr/Cname.ld -o $@ $(BUILD_DIR)/$(OBSEG_DIR)/chr/$*/Switches.o $(BUILD_DIR)/$(OBSEG_DIR)/chr/$*/Model.o; \
else \
$(LD) -T assets/obseg/chr/Cname.ld -o $@ $(BUILD_DIR)/$(OBSEG_DIR)/chr/$*/Model.o; \
fi
# Build Model.o from Model.c
# If Model.c doesn't exist but CnameZ.bin does, convert it first
$(BUILD_DIR)/$(OBSEG_DIR)/chr/%/Model.o: $(OBSEG_DIR)/chr/%/Model.c
@mkdir -p $(@D)
$(CC) -c $(CFLAGS) -Wab,-r4300_mul -non_shared -G 0 -Xcpluscomm -O2 -mips2 \
-woff 609,649,712,807,838 -DTARGET_N64 -I$(IRIX_ROOT)/usr/include \
-Iinclude -Isrc -I. -o $@ $<
# Generate Model.c from binary if needed
$(OBSEG_DIR)/chr/%/Model.c:
@if [ -f $(OBSEG_DIR)/chr/C$*Z.bin ]; then \
echo "Converting C$*Z.bin to Model.c..."; \
python3 scripts/generate_chr_c.py --cleanup $* || exit 1; \
else \
echo "Error: Neither $(OBSEG_DIR)/chr/$*/Model.c nor $(OBSEG_DIR)/chr/C$*Z.bin exists"; \
exit 1; \
fi
# Build Switches.o from Switches.c (if it exists)
$(BUILD_DIR)/$(OBSEG_DIR)/chr/%/Switches.o: $(OBSEG_DIR)/chr/%/Switches.c
@mkdir -p $(@D)
$(CC) -c $(CFLAGS) -Wab,-r4300_mul -non_shared -G 0 -Xcpluscomm -O2 -mips2 \
-woff 609,649,712,807,838 -DTARGET_N64 -I$(IRIX_ROOT)/usr/include \
-Iinclude -Isrc -I. -o $@ $<
# Build CHR_RZ_NAMES from CHRNAMELIST
CHR_RZ_NAMES = $(foreach chr,$(CHRNAMELIST),C$(chr)Z)
# Use CHR_RZ_NAMES to generate the list of .rz files
CHR_RZ_FILES = $(addprefix $(BUILD_DIR)/$(OBSEG_DIR)/chr/, $(addsuffix .rz, $(CHR_RZ_NAMES)))
# Default target
all: $(CHR_RZ_FILES)
.PHONY: all