diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 70 |
1 files changed, 58 insertions, 12 deletions
@@ -64,7 +64,6 @@ PYTHON ?= $(VENV)/$(VENV_BIN_DIR)/python3 # Emulator w/ flags N64_EMULATOR ?= - #### Setup #### # Ensure the map file being created using English localization @@ -166,6 +165,9 @@ SBC := tools/audio/sbc SFC := tools/audio/sfc SFPATCH := tools/audio/sfpatch ATBLGEN := tools/audio/atblgen +# We want linemarkers in sequence assembly files for better assembler error messages +SEQ_CPP := $(CPP) -x assembler-with-cpp -fno-dollars-in-identifiers +SEQ_CPPFLAGS := -D_LANGUAGE_ASEQ -DMML_VERSION=MML_VERSION_MM -I include -I include/audio -I include/tables/sfx -I $(BUILD_DIR)/assets/audio/soundfonts SBCFLAGS := --matching SFCFLAGS := --matching @@ -225,10 +227,12 @@ ifneq ($(wildcard $(EXTRACTED_DIR)/assets/audio),) SAMPLE_EXTRACT_DIRS := $(shell find $(EXTRACTED_DIR)/assets/audio/samples -type d) SAMPLEBANK_EXTRACT_DIRS := $(shell find $(EXTRACTED_DIR)/assets/audio/samplebanks -type d) SOUNDFONT_EXTRACT_DIRS := $(shell find $(EXTRACTED_DIR)/assets/audio/soundfonts -type d) + SEQUENCE_EXTRACT_DIRS := $(shell find $(EXTRACTED_DIR)/assets/audio/sequences -type d) else SAMPLE_EXTRACT_DIRS := SAMPLEBANK_EXTRACT_DIRS := SOUNDFONT_EXTRACT_DIRS := + SEQUENCE_EXTRACT_DIRS := endif ifneq ($(wildcard assets/audio/samples),) @@ -249,6 +253,12 @@ else SOUNDFONT_DIRS := endif +ifneq ($(wildcard assets/audio/sequences),) + SEQUENCE_DIRS := $(shell find assets/audio/sequences -type d) +else + SEQUENCE_DIRS := +endif + SAMPLE_FILES := $(foreach dir,$(SAMPLE_DIRS),$(wildcard $(dir)/*.wav)) SAMPLE_EXTRACT_FILES := $(foreach dir,$(SAMPLE_EXTRACT_DIRS),$(wildcard $(dir)/*.wav)) AIFC_FILES := $(foreach f,$(SAMPLE_FILES),$(BUILD_DIR)/$(f:.wav=.aifc)) $(foreach f,$(SAMPLE_EXTRACT_FILES:.wav=.aifc),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%)) @@ -268,8 +278,15 @@ SOUNDFONT_O_FILES := $(foreach f,$(SOUNDFONT_BUILD_XMLS),$(f:.xml=.o)) SOUNDFONT_HEADERS := $(foreach f,$(SOUNDFONT_BUILD_XMLS),$(f:.xml=.h)) SOUNDFONT_DEP_FILES := $(foreach f,$(SOUNDFONT_O_FILES),$(f:.o=.d)) +SEQUENCE_FILES := $(foreach dir,$(SEQUENCE_DIRS),$(wildcard $(dir)/*.seq)) +SEQUENCE_EXTRACT_FILES := $(foreach dir,$(SEQUENCE_EXTRACT_DIRS),$(wildcard $(dir)/*.seq)) +SEQUENCE_O_FILES := $(foreach f,$(SEQUENCE_FILES),$(BUILD_DIR)/$(f:.seq=.o)) $(foreach f,$(SEQUENCE_EXTRACT_FILES:.seq=.o),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%)) +SEQUENCE_DEP_FILES := $(foreach f,$(SEQUENCE_O_FILES),$(f:.o=.d)) + +SEQUENCE_TABLE := include/tables/sequence_table.h + ## Assets binaries (PNGs, JPGs, etc) -ASSET_BIN_DIRS := $(shell find assets/* -type d -not -path "assets/xml*" -not -path "assets/c/*" -not -name "c" -not -path "assets/text") +ASSET_BIN_DIRS := $(shell find assets/* -type d -not -path "assets/xml*" -not -path "assets/audio*" -not -path "assets/c/*" -not -name "c" -not -path "assets/text") # Prevents building C files that will be #include'd ASSET_BIN_DIRS_C_FILES := $(shell find assets/* -type d -not -path "assets/xml*" -not -path "assets/code*" -not -path "assets/overlays*") @@ -318,13 +335,15 @@ $(shell mkdir -p $(foreach dir, \ $(ASSET_BIN_DIRS_C_FILES) \ $(SAMPLE_DIRS) \ $(SAMPLEBANK_DIRS) \ - $(SOUNDFONT_DIRS), \ + $(SOUNDFONT_DIRS) \ + $(SEQUENCE_DIRS), \ $(BUILD_DIR)/$(dir))) ifneq ($(wildcard $(EXTRACTED_DIR)/assets),) $(shell mkdir -p $(foreach dir, \ $(SAMPLE_EXTRACT_DIRS) \ $(SAMPLEBANK_EXTRACT_DIRS) \ - $(SOUNDFONT_EXTRACT_DIRS), \ + $(SOUNDFONT_EXTRACT_DIRS) \ + $(SEQUENCE_EXTRACT_DIRS), \ $(dir:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%))) endif @@ -404,7 +423,8 @@ $(ROMC): $(ROM) $(ELF) $(BUILD_DIR)/dmadata/compress_ranges.txt $(PYTHON) -m ipl3checksum sum --cic 6105 --update $@ $(ELF): $(TEXTURE_FILES_OUT) $(ASSET_FILES_OUT) $(O_FILES) $(OVL_RELOC_FILES) $(LDSCRIPT) $(LD_FINAL_FILES) \ - $(SAMPLEBANK_O_FILES) $(SOUNDFONT_O_FILES) + $(SAMPLEBANK_O_FILES) $(SOUNDFONT_O_FILES) $(SEQUENCE_O_FILES) \ + $(BUILD_DIR)/assets/audio/sequence_font_table.o $(LD) -T $(LDSCRIPT) -T $(LD_FINAL_FILES) --no-check-sections --accept-unknown-input-arch --emit-relocs -Map $(MAP) -o $@ ## Order-only prerequisites @@ -650,7 +670,7 @@ $(BUILD_DIR)/assets/audio/soundfonts/%.c $(BUILD_DIR)/assets/audio/soundfonts/%. -include $(SOUNDFONT_DEP_FILES) -$(BUILD_DIR)/assets/audio/soundfonts/%.o: $(BUILD_DIR)/assets/audio/soundfonts/%.c $(BUILD_DIR)/assets/audio/soundfonts/%.name #$(SAMPLEBANK_O_FILES) # (for debugging only) +$(BUILD_DIR)/assets/audio/soundfonts/%.o: $(BUILD_DIR)/assets/audio/soundfonts/%.c $(BUILD_DIR)/assets/audio/soundfonts/%.name # compile c to unlinked object $(CC) -c $(CFLAGS) $(IINC) $(WARNINGS) $(C_DEFINES) $(MIPS_VERSION) $(ENDIAN) $(OPTFLAGS) -I include/audio -o $(@:.o=.tmp) $< # partial link @@ -668,6 +688,22 @@ ifeq ($(AUDIO_BUILD_DEBUG),1) @(cmp $(@:.o=.bin) $(patsubst $(BUILD_DIR)/assets/audio/soundfonts/%,$(EXTRACTED_DIR)/baserom_audiotest/audiobank_files/%,$(@:.o=.bin)) && echo "$(<F) OK" || (mkdir -p NONMATCHINGS/soundfonts && cp $(@:.o=.bin) NONMATCHINGS/soundfonts/$(@F:.o=.bin))) endif +# then assemble the sequences... + +$(BUILD_DIR)/assets/audio/sequences/%.o: assets/audio/sequences/%.seq include/audio/aseq.h $(SEQUENCE_TABLE) | $(SOUNDFONT_HEADERS) + $(SEQ_CPP) $(SEQ_CPPFLAGS) $< -o $(@:.o=.s) -MMD -MT $@ + $(AS) $(ASFLAGS) -I $(BUILD_DIR)/assets/audio/soundfonts -I include/audio -I $(dir $<) $(@:.o=.s) -o $@ + +$(BUILD_DIR)/assets/audio/sequences/%.o: $(EXTRACTED_DIR)/assets/audio/sequences/%.seq include/audio/aseq.h $(SEQUENCE_TABLE) | $(SOUNDFONT_HEADERS) + $(SEQ_CPP) $(SEQ_CPPFLAGS) $< -o $(@:.o=.s) -MMD -MT $@ + $(AS) $(ASFLAGS) -I $(BUILD_DIR)/assets/audio/soundfonts -I include/audio -I $(dir $<) $(@:.o=.s) -o $@ +ifeq ($(AUDIO_BUILD_DEBUG),1) + $(OBJCOPY) -O binary -j.data $@ $(@:.o=.aseq) + @(cmp $(@:.o=.aseq) $(patsubst $(BUILD_DIR)/assets/audio/sequences/%,$(EXTRACTED_DIR)/baserom_audiotest/audioseq_files/%,$(@:.o=.aseq)) && echo "$(<F) OK" || (mkdir -p NONMATCHINGS/sequences && cp $(@:.o=.aseq) NONMATCHINGS/sequences/$(@F:.o=.aseq))) +endif + +-include $(SEQUENCE_DEP_FILES) + # put together the tables $(BUILD_DIR)/assets/audio/samplebank_table.h: $(SAMPLEBANK_BUILD_XMLS) @@ -676,22 +712,32 @@ $(BUILD_DIR)/assets/audio/samplebank_table.h: $(SAMPLEBANK_BUILD_XMLS) $(BUILD_DIR)/assets/audio/soundfont_table.h: $(SOUNDFONT_BUILD_XMLS) $(SAMPLEBANK_BUILD_XMLS) $(ATBLGEN) --fonts $@ $(SOUNDFONT_BUILD_XMLS) +SEQ_ORDER_DEFS := -DDEFINE_SEQUENCE_PTR\(name,seqId,_2,_3,_4\)=*\(name,seqId\) \ + -DDEFINE_SEQUENCE\(name,seqId,_2,_3,_4\)=\(name,seqId\) +$(BUILD_DIR)/assets/audio/sequence_order.in: $(SEQUENCE_TABLE) + $(CPP) $(CPPFLAGS) $< $(SEQ_ORDER_DEFS) -o $@ + +$(BUILD_DIR)/assets/audio/sequence_font_table.s: $(BUILD_DIR)/assets/audio/sequence_order.in $(SEQUENCE_O_FILES) + $(ATBLGEN) --sequences $@ $^ + # build the tables into objects, move data -> rodata $(BUILD_DIR)/src/audio/tables/samplebank_table.o: src/audio/tables/samplebank_table.c $(BUILD_DIR)/assets/audio/samplebank_table.h - $(CC_CHECK_COMP) $(CC_CHECK_FLAGS) $(IINC) $(CC_CHECK_WARNINGS) $(C_DEFINES) $(MIPS_BUILTIN_DEFS) -o $(@:.o=.tmp) $< - $(CC) -c $(CFLAGS) $(IINC) $(WARNINGS) $(C_DEFINES) $(MIPS_VERSION) $(ENDIAN) $(OPTFLAGS) -o $(@:.o=.tmp) $< - $(LD) -r -T linker_scripts/audio_table_rodata.ld $(@:.o=.tmp) -o $@ - @$(RM) $(@:.o=.tmp) - $(RM_MDEBUG) - $(BUILD_DIR)/src/audio/tables/soundfont_table.o: src/audio/tables/soundfont_table.c $(BUILD_DIR)/assets/audio/soundfont_table.h $(SOUNDFONT_HEADERS) +$(BUILD_DIR)/src/audio/tables/sequence_table.o: src/audio/tables/sequence_table.c $(SEQUENCE_TABLE) + +$(BUILD_DIR)/src/audio/tables/sequence_table.o: CFLAGS += -I include/tables + +$(BUILD_DIR)/src/audio/tables/%.o: src/audio/tables/%.c $(CC_CHECK_COMP) $(CC_CHECK_FLAGS) $(IINC) $(CC_CHECK_WARNINGS) $(C_DEFINES) $(MIPS_BUILTIN_DEFS) -o $(@:.o=.tmp) $< $(CC) -c $(CFLAGS) $(IINC) $(WARNINGS) $(C_DEFINES) $(MIPS_VERSION) $(ENDIAN) $(OPTFLAGS) -o $(@:.o=.tmp) $< $(LD) -r -T linker_scripts/audio_table_rodata.ld $(@:.o=.tmp) -o $@ @$(RM) $(@:.o=.tmp) $(RM_MDEBUG) +$(BUILD_DIR)/assets/audio/sequence_font_table.o: $(BUILD_DIR)/assets/audio/sequence_font_table.s + $(AS) $(ASFLAGS) $< -o $@ + -include $(DEP_FILES) # Print target for debugging |
