diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000000..87ee563883 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,56 @@ +name: Build + +on: + push: + pull_request: + +jobs: + build: + container: ghcr.io/hackern64/hackerbuild:main + runs-on: ubuntu-22.04 + strategy: + matrix: + include: + - name: "Debug, No F3DEX3" + args: RELEASE=0 CPP_DEFINES=-DENABLE_F3DEX3=0 + - name: "Debug, F3DEX3" + args: RELEASE=0 CPP_DEFINES=-DENABLE_F3DEX3=1 + - name: "Release, No F3DEX3" + args: RELEASE=1 CPP_DEFINES=-DENABLE_F3DEX3=0 + - name: "Release, F3DEX3" + args: RELEASE=1 CPP_DEFINES=-DENABLE_F3DEX3=1 + defaults: + run: + shell: bash + + name: ${{ matrix.name }} + + steps: + # Checkout the repository (shallow clone) + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + submodules: recursive + + # Set Git config + - name: Git config + run: git config --global --add safe.directory "$GITHUB_WORKSPACE" + + # Copy the original files to the workspace + - name: Prepare + run: cp -R /HackerOoT/baseroms . + + # Install the required pip packages + - name: Setup Python + run: | + python3 -m pip install --user colorama ansiwrap attrs watchdog python-Levenshtein "mapfile-parser>=1.2.1,<2.0.0" "rabbitizer>=1.0.0,<2.0.0" + python3 -m pip install --upgrade attrs pycparser + + # Setup the project + - name: Setup + run: make setup -j$(nproc) + + # Build the project + - name: Build + run: ${{ matrix.args }} make -j$(nproc) diff --git a/Makefile b/Makefile index 90e354fc10..879272cf69 100644 --- a/Makefile +++ b/Makefile @@ -29,7 +29,7 @@ ARES_GDB := 1 # Toggle release or debug mode. 1=Release, 0=Debug # Note: currently only used for HackerOoT -RELEASE := 0 +RELEASE ?= 0 # Valid compression algorithms are 'yaz', 'lzo' and 'aplib' COMPRESSION ?= yaz diff --git a/include/config/config_graphics.h b/include/config/config_graphics.h index 89f3c1836e..a4d5bffb77 100644 --- a/include/config/config_graphics.h +++ b/include/config/config_graphics.h @@ -9,8 +9,11 @@ * F3DEX3 options * This only works on real console or LLE emulators like ares or ParaLLEl. It * will not work on legacy HLE emulators such as Project64. + * Note: you can define this with `CPP_DEFINES=-DENABLE_F3DEX3=0 make -j$(nproc)` */ +#ifndef ENABLE_F3DEX3 #define ENABLE_F3DEX3 true +#endif // Remove usually-unnecessary syncs from texture loading commands. Only matters // for vanilla display lists--new ones exported from fast64 already have the // syncs removed. This is buggy (graphical issues / crashes) as some vanilla DLs