mirror of
https://github.com/zeldaret/oot
synced 2026-05-22 22:44:26 -04:00
bc6d153a21
The present changes are a direct copy-paste from https://github.com/zeldaret/mm/pull/1850 This fixes building on macos due to a kinda specific issue with Apple clang. When trying to build on Macos (specifically MacOS 12, Monteray with Apple clang 13.0.0 (clang-1300.0.29.30), idk if other versions have this issue too) `make` stops with the following error from `atblgen`: ``` Failed to match line 1: "" regexec error: "regexec() failed to match" Error: Malformed build/n64-us/assets/audio/sequence_order.in? ``` `atblgen` makes the assumption that the `sequence_order.in` file has no extra data, spaces, empty lines, etc. but the file somehow ends up having empty lines between each line on macos. This file is created by using the C preprocessor to process `include/tables/sequence_table.h`. In normal circumstances this file should look like this snip, ``` (Sequence_0,NA_BGM_GENERAL_SFX) (Sequence_1,NA_BGM_AMBIENCE) (Sequence_2,NA_BGM_TERMINA_FIELD) (Sequence_3,NA_BGM_CHASE) (Sequence_4,NA_BGM_MAJORAS_THEME) ``` but it ends up looking like this instead ``` (Sequence_0,NA_BGM_GENERAL_SFX) (Sequence_1,NA_BGM_AMBIENCE) (Sequence_2,NA_BGM_TERMINA_FIELD) (Sequence_3,NA_BGM_CHASE) (Sequence_4,NA_BGM_MAJORAS_THEME) ``` which `atblgen` doesn't like. I believe this happens because there are lines with comments between each macro in [`sequence_table.h`](https://github.com/zeldaret/mm/blob/0877ce4adf28a8e73e05c3c58682273b8bf28749/include/tables/sequence_table.h) and for some reason this Apple clang version decided to preserve those empty lines The fix just makes `atblgen` skip empty lines. I threw `atblgen` to valgrind to check the fix was working as intended and noted a bunch of memory that was being free before exit, so I fixed them. I also noted the tools/audio makefile was not using `OPTFLAGS` when building those tools, so I fixed that too.
53 lines
1.3 KiB
Makefile
53 lines
1.3 KiB
Makefile
PROGRAMS := afile_sizes atblgen sbc sfc sfpatch
|
|
|
|
ifeq ($(shell which xml2-config),)
|
|
$(error xml2-config not found. Did you install libxml2-dev?)
|
|
endif
|
|
|
|
CLANG_FORMAT := clang-format-14
|
|
FORMAT_ARGS := -i -style=file
|
|
|
|
CC := gcc
|
|
CFLAGS := -Wall -Wextra -pedantic
|
|
OPTFLAGS := -O2
|
|
|
|
XML_CFLAGS := $(shell xml2-config --cflags)
|
|
XML_LDFLAGS := $(shell xml2-config --libs)
|
|
|
|
.PHONY: all clean distclean format
|
|
|
|
all: $(PROGRAMS)
|
|
$(MAKE) -C sampleconv
|
|
|
|
clean:
|
|
$(RM) $(PROGRAMS)
|
|
$(MAKE) -C sampleconv clean
|
|
|
|
distclean: clean
|
|
$(MAKE) -C sampleconv distclean
|
|
|
|
format:
|
|
$(CLANG_FORMAT) $(FORMAT_ARGS) $(shell find . -maxdepth 1 -type f -name "*.[ch]")
|
|
$(MAKE) -C sampleconv format
|
|
|
|
afile_sizes_SOURCES := afile_sizes.c util.c
|
|
atblgen_SOURCES := audio_tablegen.c samplebank.c soundfont.c xml.c util.c
|
|
sbc_SOURCES := samplebank_compiler.c samplebank.c aifc.c xml.c util.c
|
|
sfc_SOURCES := soundfont_compiler.c samplebank.c soundfont.c aifc.c xml.c util.c
|
|
sfpatch_SOURCES := sfpatch.c util.c
|
|
|
|
atblgen_CFLAGS := $(XML_CFLAGS)
|
|
sbc_CFLAGS := $(XML_CFLAGS)
|
|
sfc_CFLAGS := $(XML_CFLAGS)
|
|
|
|
atblgen_LDFLAGS := $(XML_LDFLAGS)
|
|
sbc_LDFLAGS := $(XML_LDFLAGS)
|
|
sfc_LDFLAGS := $(XML_LDFLAGS)
|
|
|
|
define COMPILE =
|
|
$(1): $($1_SOURCES)
|
|
$(CC) $(CFLAGS) $(OPTFLAGS) $($1_CFLAGS) $$^ $($1_LDFLAGS) -o $$@
|
|
endef
|
|
|
|
$(foreach p,$(PROGRAMS),$(eval $(call COMPILE,$(p))))
|