mirror of https://github.com/n64decomp/007.git
206 lines
8.4 KiB
XML
206 lines
8.4 KiB
XML
all: $(APPROM)
|
|
@if [ -f ge007.$(OUTCODE).sha1 ]; then \
|
|
$(SHA1SUM) -c ge007.$(OUTCODE).sha1 && echo "\n MATCH!\n\n" || (echo "\n ERROR!\n\n\n NOT MATCH!\n\n" && exit 1); \
|
|
fi
|
|
@echo "\nRom File Generated in Build Directory. \n\n"
|
|
|
|
.SECONDARY:
|
|
$(APPELF) $(APPROM) $(APPBIN) $(ULTRAOBJECTS) $(BUILD_DIR)/ge007.$(OUTCODE).map \
|
|
$(HEADEROBJECTS) $(BOOTOBJECTS) $(CODEOBJECTS) $(GAMEOBJECTS) $(RZOBJECTS) \
|
|
$(OBSEG_OBJECTS) $(OBSEG_RZ) $(ROMOBJECTS) $(RAMROM_OBJECTS) $(FONTOBJECTS) $(MUSIC_OBJECTS) $(IMAGE_OBJS) $(MUSIC_RZ_FILES)
|
|
|
|
ifeq ($(filter clean nuke dataclean help codeclean context cmdbuilder test stanclean setupclean,$(MAKECMDGOALS)),)
|
|
# Dont print version on "default" since it will be spat out twice
|
|
ifneq ($(filter $(VERSION),$(ALLOWED_VERSIONS)),)
|
|
#$(info VERSION=$(VERSION))
|
|
else
|
|
$(error VERSION "$(VERSION)" not supported")
|
|
endif
|
|
# Make tools if out of date
|
|
$(info Building tools...)
|
|
DUMMY != make -s -C tools >&2 || echo FAIL
|
|
ifeq ($(DUMMY),FAIL)
|
|
$(error Failed to build tools)
|
|
endif
|
|
$(info Building $(VERSION) ROM...)
|
|
|
|
endif
|
|
|
|
# Build RSP
|
|
$(BUILD_DIR)/rsp/%.bin: rsp/*.s
|
|
$(ARMIPS) -sym $@.sym -strequ CODE_FILE $(BUILD_DIR)/rsp/$*.bin -strequ DATA_FILE $(BUILD_DIR)/rsp/$*_data.bin $<
|
|
|
|
$(BUILD_DIR)/src/rspboot.o: $(BUILD_DIR)/rsp/rspboot.bin
|
|
|
|
#Build asm files in root
|
|
$(BUILD_DIR)/%.o: src/%.s
|
|
$(AS) $(ASFLAGS) -o $@ $<
|
|
|
|
#Build asm files in src/
|
|
$(BUILD_DIR)/src/%.o: src/%.s
|
|
$(AS) $(ASFLAGS) -o $@ $<
|
|
|
|
#Build Images
|
|
$(BUILD_DIR)/assets/images/split/%.o: assets/images/split/%.bin
|
|
$(LD) -r -b binary $< -o $@
|
|
|
|
#Compress Obseg
|
|
$(BUILD_DIR)/$(OBSEGMENT): $(OBSEG_RZ) $(IMAGE_OBJS)
|
|
|
|
|
|
#Build C files in src/
|
|
$(BUILD_DIR)/src/%.o: src/%.c
|
|
@if grep -q 'GLOBAL_ASM(' $<; then \
|
|
$(ASM_PREPROC) $(OPTIMIZATION) $< | $(CC) -c $(CFLAGS) tools/asm-processor/include-stdin.c -o $@ $(OPTIMIZATION); \
|
|
$(ASM_PREPROC) $(OPTIMIZATION) $< --post-process $@ --assembler "$(AS) $(ASFLAGS)" --asm-prelude tools/asm-processor/prelude.s; \
|
|
else \
|
|
$(CC) -c $(CFLAGS) -o $@ $(OPTIMIZATION) $<; \
|
|
fi
|
|
|
|
|
|
#Build RamRom
|
|
$(BUILD_DIR)/assets/ramrom/%.o: assets/ramrom/%.s
|
|
$(AS) $(ASFLAGS) -o $@ $<
|
|
|
|
#Build fonts
|
|
$(BUILD_DIR)/assets/font/%.o: assets/font/%.c
|
|
$(CC) -c $(CFLAGS) -o $@ $(OPTIMIZATION) $<
|
|
|
|
#Build asm files in assets/
|
|
$(BUILD_DIR)/assets/%.o: assets/%.s
|
|
$(AS) $(ASFLAGS) -o $@ $<
|
|
|
|
#Build Obseg
|
|
$(BUILD_DIR)/assets/obseg/%.o: assets/obseg/%.s $(OBSEG_RZ)
|
|
$(AS) $(ASFLAGS) -o $@ $<
|
|
|
|
#Build C files in assets/
|
|
$(BUILD_DIR)/assets/%.o: assets/%.c
|
|
$(CC) -c $(CFLAGS) -o $@ $(OPTIMIZATION) $<
|
|
|
|
#$(BUILD_DIR)/src/random.o: OPTIMIZATION := -O3
|
|
#$(BUILD_DIR)/src/random.o: INCLUDE := -I . -I include -I include/PR
|
|
#$(BUILD_DIR)/src/random.o: MIPSISET := -mips3 -o32
|
|
#$(BUILD_DIR)/src/random.o: src/random.c
|
|
# $(CC) -c -Wab,-r4300_mul -non_shared -G 0 -Xcpluscomm $(CFLAGWARNING) -woff 819,820,852,821,838,649 -signed $(INCLUDE) $(MIPSISET) $(LCDEFS) -DTARGET_N64 $(OPTIMIZATION) -o $@ $<
|
|
|
|
#Link Files
|
|
$(APPELF): $(RSPOBJECTS) $(ULTRAOBJECTS) $(HEADEROBJECTS) $(OBSEG_RZ) $(BUILD_DIR)/$(OBSEGMENT) $(MUSIC_RZ_FILES) $(BOOTOBJECTS) $(CODEOBJECTS) $(GAMEOBJECTS) $(RZOBJECTS) $(ROMOBJECTS) $(ASSET_DATAOBJECTS) $(ROMOBJECTS2) $(RAMROM_OBJECTS) $(FONTOBJECTS) $(MUSIC_OBJECTS) $(OBSEG_OBJECTS) ge007.ld
|
|
cpp $(LDFILEOPTS) -P ge007.ld -o build/ge007.$(OUTCODE).ld
|
|
@echo "Linking Files into ELF"
|
|
$(LD) $(LDFLAGS) -o $@
|
|
|
|
$(APPBIN): $(APPELF)
|
|
@echo "Building ROM"
|
|
$(OBJCOPY) $< $@ -O binary --gap-fill=0xff
|
|
|
|
$(APPROM): $(APPBIN)
|
|
@echo "Compressing ROM"
|
|
$(DATASEG_COMP) $< $(OUTCODE)
|
|
@echo "Finalizing ROM"
|
|
$(N64CKSUM) $< $@
|
|
|
|
.PRECIOUS: %.bin %.o
|
|
|
|
## Phony Recipies - Get Make to do something ##
|
|
|
|
|
|
.PHONY: all default codeclean dataclean clean cmdbuilder test help
|
|
|
|
setupclean:
|
|
rm -f $(APPELF) $(APPROM) $(APPBIN) $(BUILD_DIR)/ge007.$(OUTCODE).map \
|
|
$(SETUP_BUILD_FILES)
|
|
|
|
stanclean:
|
|
rm -f $(APPELF) $(APPROM) $(APPBIN) $(BUILD_DIR)/ge007.$(OUTCODE).map \
|
|
$(STAN_BUILD_FILES)
|
|
|
|
libultraclean:
|
|
rm -f $(APPELF) $(APPROM) $(APPBIN) $(BUILD_DIR)/ge007.$(OUTCODE).map \
|
|
$(ULTRAOBJECTS)
|
|
|
|
codeclean:
|
|
rm -f $(APPELF) $(APPROM) $(APPBIN) $(ULTRAOBJECTS) $(BUILD_DIR)/ge007.$(OUTCODE).map \
|
|
$(HEADEROBJECTS) $(BOOTOBJECTS) $(CODEOBJECTS) $(GAMEOBJECTS) $(RZOBJECTS) $(RSPOBJECTS)
|
|
|
|
dataclean:
|
|
rm -f $(APPELF) $(APPROM) $(APPBIN) $(ULTRAOBJECTS) $(BUILD_DIR)/ge007.$(OUTCODE).map \
|
|
$(OBSEG_OBJECTS) $(OBSEG_RZ) $(ROMOBJECTS) $(RAMROM_OBJECTS) $(FONTOBJECTS) $(MUSIC_OBJECTS) $(IMAGE_OBJS) $(MUSIC_RZ_FILES) \
|
|
$(STAN_BUILD_FILES) $(SETUP_BUILD_FILES)
|
|
|
|
clean::
|
|
# if this command is modified, make sure to update this in the `nuke` recipe.
|
|
rm -f $(APPELF) $(APPROM) $(APPBIN) $(ULTRAOBJECTS) $(BUILD_DIR)/ge007.$(OUTCODE).map \
|
|
$(HEADEROBJECTS) $(BOOTOBJECTS) $(CODEOBJECTS) $(GAMEOBJECTS) $(RZOBJECTS) \
|
|
$(OBSEG_OBJECTS) $(OBSEG_RZ) $(ROMOBJECTS) $(RAMROM_OBJECTS) $(FONTOBJECTS) $(MUSIC_OBJECTS) $(IMAGE_OBJS) $(MUSIC_RZ_FILES) $(RSPOBJECTS) \
|
|
$(STAN_BUILD_FILES) $(SETUP_BUILD_FILES)
|
|
|
|
nuke:
|
|
@echo deleting files specified from make clean ...
|
|
@# if this command is modified, update the `clean` recipe above.
|
|
rm -f $(APPELF) $(APPROM) $(APPBIN) $(ULTRAOBJECTS) $(BUILD_DIR)/ge007.$(OUTCODE).map \
|
|
$(HEADEROBJECTS) $(BOOTOBJECTS) $(CODEOBJECTS) $(GAMEOBJECTS) $(RZOBJECTS) \
|
|
$(OBSEG_OBJECTS) $(OBSEG_RZ) $(ROMOBJECTS) $(RAMROM_OBJECTS) $(FONTOBJECTS) $(MUSIC_OBJECTS) $(IMAGE_OBJS) $(MUSIC_RZ_FILES) $(RSPOBJECTS) \
|
|
$(STAN_BUILD_FILES) $(SETUP_BUILD_FILES)
|
|
@echo
|
|
@echo make: deleting build folders and files
|
|
$(foreach x,$(ALLOWED_COUNTRYCODE),rm -r -f -d "$(BUILD_DIR_BASE)/$(x)/"${\n})
|
|
@echo
|
|
@echo make: deleting bin / rsp / asp
|
|
rm -r -f -d "bin/"
|
|
@echo
|
|
@echo make: deleting assets
|
|
rm -r -f -d "assets/images/split/"
|
|
rm -r -f "assets/music/*.bin" "assets/obseg/bg/*.bin" "assets/obseg/brief/*.bin" "assets/obseg/chr/*.bin" "assets/obseg/gun/*.bin" "assets/obseg/prop/*.bin" "assets/obseg/setup/*.bin" "assets/obseg/setup/e/*.bin" "assets/obseg/setup/u/*.bin" "assets/obseg/setup/j/*.bin" "assets/obseg/stan/*.bin" "assets/obseg/text/*.bin" "assets/obseg/text/e/*.bin" "assets/obseg/text/u/*.bin" "assets/obseg/text/j/*.bin" "assets/ramrom/*.bin" "assets/ramrom/e/*.bin" "assets/ramrom/u/*.bin" "assets/ramrom/j/*.bin"
|
|
|
|
help:
|
|
@echo "mmakefile help"
|
|
@echo ""
|
|
@echo " supported targets:"
|
|
@echo ""
|
|
@echo " all Build all (default)"
|
|
@echo " clean Delete all known build artifacts"
|
|
@echo " nuke Delete all files explicitly listed in Makefile (same as make clean),"
|
|
@echo " all build output for all versions, any .bin file in assets folders,"
|
|
@echo " and asp/rsp bin."
|
|
@echo " dataclean Delete only asset build artifacts"
|
|
@echo " codeclean Delete only code (asm, .c) build artifacts"
|
|
@echo " libultraclean Delete only code (asm, .c) build artifacts "
|
|
@echo " from Rare's libultra files"
|
|
@echo " stanclean Delete only stan build artifacts"
|
|
@echo " setupclean Delete only setup build artifacts"
|
|
@echo " cmdbuilder BuildAI Commands"
|
|
@echo " context [file] BuildContext File from [file]"
|
|
@echo " eg make context src/game/chrai.c"
|
|
@echo " test Re-Run Data Verification "
|
|
@echo ""
|
|
@echo ""
|
|
@echo " options:"
|
|
@echo ""
|
|
@echo " VERSION=v Region version. (US is default)"
|
|
@echo " Supported values: ${ALLOWED_VERSIONS}\n"
|
|
|
|
test:
|
|
@$(SHA1SUM) --quiet -c checksums.txt
|
|
|
|
ifneq ($(filter-out context,$(MAKECMDGOALS)),)
|
|
CONTEXTFILE := $(filter-out context ,$(MAKECMDGOALS))
|
|
else
|
|
CONTEXTFILE := build/ctx.c
|
|
endif
|
|
context:
|
|
@clear
|
|
@echo Building Context File [ctx.h] from $(CONTEXTFILE)
|
|
@echo "#define TRUE 1" > build/ctx.h
|
|
@echo "#define FALSE 0" >> build/ctx.h
|
|
ifeq ($(CONTEXTFILE),build/ctx.c)
|
|
@echo "#include <bondtypes.h>" > build/ctx.c
|
|
endif
|
|
@sed -n -E ':x /\\$$/ { N; s/\\\n//g ; bx };''/(^\s*#define)|(\\$$)/p; /(\\$$)/p;' src/bondconstants.h src/bondtypes.h $(CONTEXTFILE) >> build/ctx.h
|
|
@$(CC) -c $(CFLAGS) $(CONTEXTFILE) -E > build/ctx2.h 2> /dev/null || (rm build/ctx2.h && exit 1)
|
|
@sed -E '/^\s*$$/d' build/ctx2.h >> build/ctx.h
|
|
@rm build/ctx.c build/ctx2.h || exit 0
|
|
@echo You can find it in Build [build/ctx.h].
|
|
|
|
textures:
|
|
$(foreach x,$(IMAGE_BINS),tools/mktex/build/tex2png $(x) assets/images/out ${\n}) |