forked from Ports/goldeneye-pc-port
55 lines
2.0 KiB
Makefile
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 |