Shiftability fix and documentation (#723)

* Shiftability fix and documentation

* Allow setting `AVOID_UB=1` directly while building
* Set `AVOID_UB` when building with DEBUG.
* Document options for enabling shiftability
* Document `make clean`

* Delete HTML file

* Update compiling.md

---------

Co-authored-by: MegaMech <MegaMech@users.noreply.github.com>
This commit is contained in:
Jed Grabman 2025-06-21 14:50:57 -04:00 committed by GitHub
parent 3288752b47
commit 184f5939f2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 30 additions and 0 deletions

View File

@ -32,6 +32,9 @@ $(eval $(call validate-option,COMPILER,ido gcc))
# Run make clean first
DEBUG ?= 0
# Avoid undefined behavior. Enables shiftability when making changes
AVOID_UB ?= 0
# Compile with GCC
GCC ?= 0
@ -55,9 +58,14 @@ endif
ifeq ($(DEBUG),1)
DEFINES += DEBUG=1
DEFINES += AVOID_UB=1
COMPARE ?= 0
endif
ifeq ($(AVOID_UB),1)
DEFINES += AVOID_UB=1
endif
TARGET := mk64.$(VERSION)
BASEROM := baserom.$(VERSION).z64

View File

@ -105,3 +105,25 @@ First-diff/diff commands for EU
python3 first-diff.py --eu
./diff <function> -eu
```
# Handling Changes
Certain changes may result in unexpected behaviour (frequently related to physics) due to the games obnoxious linker setup. This is resolved by compiling with the AVOID_UB flag.
This will require a rebuild, run
```bash
make clean
```
Then compile like so
``
make -j AVOID_UB=1
or
make -j DEBUG=1 // Enables debug mode and avoid_ub
``
Recompiling `.inc.c` files requires saving the root `.c` file for makefile to recognize that the file requires a rebuild. This is because at compile time a `inc.c` file is essentially copy/pasted into its associated `.c` file. Therefore makefile does not recognize changes to `.inc.c` files, only `.c` files. This may be resolved in the following ways:
1) Search for `#include "my_file.inc.c` to find the root file and then save it with ctrl+s.
2) `make clean` and rebuild
3) `make my_file.c`
4) Find help in the Discord