* Comma-separated languages can be specified using the AUDIO_LANGUAGES
CMake cache variable (defaults to just English)
* Multi-language builds can include any combination of supported languages
* Single-language builds can use any supported language
As part of this, I refactored the sound lookup tables to not store
information about non-localized sounds (which previously occupied most
of the table).
* Use preprocessor directives to pass microcode object file paths
* Add build directory to include path when preprocessing, so directory
name is not needed when including generated linker script fragments
* Pass required files on the command line so wildcard matching can be used
* Also remove special case for creating object file for boot code (use
incbin in asm file instead)
* Assemble through `gcc` instead of `as` directly, so source files are
preprocessed (i.e., `#include`)
* `gcc` does not pass `-I` include directories to `as`. This can
supposedly be fixed by recompiling `gcc` with `--with-gnu-as`. Popular
N64 toolchain binary distributions don't do this, and to lower the
barrier to entry I don't want to force users to have to compile their
own. Work around it by passing `-Wa,-I`.
* CMake only finds assembly dependencies when preprocessing, not when
assembling. Use `#include` instead of `.include` to work around this.
The `.incbin`s used by `sound_data.s` are covered by the
sound_data_tables target dependency.
* Refactor entry point
* Remove unused code
* Reformat level header to be more clear, and add more comments
Looks like assembling with CMake will require some changes to the
assembler flags, and possibly some manual dependency specification.