Use this file to discover all available pages before exploring further.
The SM64 build system is driven by GNU make. Every configurable option is set by passing VARIABLE=value on the make command line. You can combine multiple variables in a single invocation, and running make clean first is recommended when switching between settings that affect compiled output.The Makefile prints a summary of active options at the start of every build:
1997 Japanese Shindou release (rumble pak support)
f3d_new
cn
2003 Chinese iQue Player release
f3d_new
The selected version determines which baserom.<VERSION>.z64 file is used for asset extraction. A matching baserom must be present before building.ROM output names and known SHA-1 hashes:
Selects the C compiler used to build the game code.
Value
Description
ido
SGI IRIS Development Option compiler (default) — required for a bit-exact matching ROM
gcc
GNU C Compiler — faster to set up; implies NON_MATCHING=1
When COMPILER=ido, the Makefile uses a statically recompiled IDO binary included in the repository’s tools directory (tools/ido-static-recomp). Alternatively, set USE_QEMU_IRIX=1 to run the original IRIX binaries under QEMU.When COMPILER=gcc, NON_MATCHING is forced to 1 and optimization flags are adjusted accordingly.
Controls whether functionally equivalent but non-identical C implementations are used in place of sections that require precise compiler behaviour to match.
Value
Description
0
Build a matching, byte-identical ROM (default)
1
Allow non-matching implementations; also avoids undefined behaviour
Setting NON_MATCHING=1 automatically sets COMPARE=0. This is useful when porting the game or when compiling with GCC, which cannot reproduce the exact code the original IDO compiler generated.
Controls whether the Makefile verifies the SHA-1 hash of the built ROM against the known-good hash for the selected version.
Value
Description
1
Verify SHA-1 hash after building (default)
0
Skip hash verification
Hash verification is automatically disabled when you choose a non-default GRUCODE for a version, or when NON_MATCHING=1. A hash mismatch is expected when modifying the codebase and is not treated as a build failure unless COMPARE=1.
Only relevant when COMPILER=ido. Selects how the IRIX compiler binaries are emulated.
Value
Description
0
Use statically recompiled IRIX binaries (default)
1
Use qemu-irix to run original IRIX binaries
When USE_QEMU_IRIX=1, the QEMU_IRIX environment variable must point to the qemu-irix binary, or the qemu-irix package must be installed and on your PATH.