The exact command used to migrate source files was:
git ls-files | grep 'src/.*\.[ch]$' | xargs grep -l INCBIN | xargs python3 migrate_incgfx.py
The Makefile rules were cleaned up manually by looking for graphics
rules and keeping only those ending with '\' (what the migration script
calls a "Multi-line rule"). You may think some of wallpaper rules could
be removed, but they're inputs for the '@cat $^ >$@' rules which are
currently unable to be migrated to 'INCGFX'.
'INCGFX' is like 'INCBIN' except that it specifies the arguments to pass
to 'gbagfx' which alleviates the user-unfriendliness caused by catch-all
rules.
Specifically, users frequently forget to add to 'spritesheet_rules.mk'
when adding object event graphics, and then the built '.4bpp' file is
not invalidated when the add their rule so they have to 'touch' the
source file or similar.
The built artifacts are placed in 'build/assets'.
Previously, 'data/maps.o' and 'data/map_events.o' were not rebuilt if
any of the header files they '#include' are modified. You can verify
this via 'make' with something like:
$ make -n -W include/constants/songs.h | grep maps.o
which shows that 'data/maps.o' is not rebuilt. Or by modifying a header
included in 'data/maps.s' in a way that should break assembling it (e.g.
by removing a '#define' that is only used in 'data/maps.s').
Additionally, fixes a bug in Expansion from an interaction between
'preproc -e' generating (global) symbols and those symbols being
generated for multiple object files, and thus falling out of sync
between (e.g.) 'data/map_events.o' and 'data/event_scripts.o', resulting
in an unhelpful multiple definition error from the linker like:
arm-none-eabi-ld: data/map_events.o: in function `ITEM_TM01':
(*ABS*+0x247): multiple definition of `ITEM_TM01'
* Convert uncompress samples to .wav files, and introduce wav2agb with matching capabilities
Convert cries
Remove aif2pcm and cleanup wav2agb
* Add --no-pad option to support hq mixer
* Update wav2agb README
* Include the alignment padding in wav2agb
* cleanup
When prepending something to PATH, we should use PATH=/foo/bar:$PATH
and not PATH=/foo/bar:PATH. Because your shell won't certainly find
something under the literal name PATH.
If one is not using devkitarm, TOOLCHAIN will resolve to an empty
string. If TOOLCHAIN is an empty string the only search path for the
modern gcc will be /bin which may work on some installations but is
probably not what was originally intended with this line. So let's just
search the standard search path if nothing can be found under $(TOOLCHAIN).
Either way, PATH is already set up previously, so we can make sure
MODERNCC is invoked properly by calling MODERNCC with PATH=$(PATH).
KEEP_TEMPS=1 not working was due to the pattern substitution in the old makefile rules for compiling C files ($*) not working with the explicit generation of dependencies. NODEP=1 not working was due to the NODEP rule for src/%.s not being updated to use preproc and cpp.
Merge C_ASM_DEP and DATA_ASM_DEP, NODEP and SCAN_DEPS can be overridden, add --no-print-directory to MAKEFLAGS in make_tools.mk (also removed some unused variables), add newline to help message in preproc.