diff --git a/README.md b/README.md index e4b10c1..4d3c7f1 100644 --- a/README.md +++ b/README.md @@ -19,8 +19,9 @@ Before compiling, you'll need to dump registry data from a vanilla Minecraft ser - To compile on Linux, install `gcc` and run `./build.sh`. - For compiling on Windows, there are a few options: - - To compile a native Windows binary: install [MSYS2](https://www.msys2.org/) and open the "MSYS2 MINGW64" shell. From there, run `pacman -Sy mingw-w64-x86_64-gcc`, navigate to this project's directory, and run `./build.sh`. - - To compile a MSYS2-linked binary: install [MSYS2](https://www.msys2.org/), and open the "MSYS2 MSYS" shell. From there, install `gcc` (run `pacman -Sy gcc`), navigate to this project's directory and run `./build.sh`. + - To compile a native Windows binary: install [MSYS2](https://www.msys2.org/) and open the "MSYS2 MINGW64" shell. From there, run `pacman -Sy mingw-w64-x86_64-gcc`, navigate to this project's directory, and run `./build.sh`. + - To compile a native 32-bit binary (compatible with Windows 95/98, but why would you ever want that), use the same steps above, except with `pacman -Sy mingw-w64-cross-gcc` and `./build.sh --9x`. + - To compile a MSYS2-linked binary: install [MSYS2](https://www.msys2.org/), and open the "MSYS2 MSYS" shell. From there, install `gcc` (run `pacman -Sy gcc`), navigate to this project's directory and run `./build.sh`. - To compile and run a Linux binary from Windows: install WSL, and from there install `gcc` and run `./build.sh` in this project's directory. - To target an ESP variant, set up a PlatformIO project (select the ESP-IDF framework, **not Arduino**) and clone this repository on top of it. See **Configuration** below for further steps. For better performance, consider changing the clock speed and enabling compiler optimizations. If you don't know how to do this, there are plenty of resources online. diff --git a/build.sh b/build.sh index 601c190..2fad5db 100755 --- a/build.sh +++ b/build.sh @@ -22,6 +22,24 @@ case "$unameOut" in ;; esac +# Default compiler +compiler="gcc" + +# Handle arguments for windows 9x build +for arg in "$@"; do + case $arg in + --9x) + if [[ "$unameOut" == MINGW64_NT* ]]; then + compiler="/opt/bin/i686-w64-mingw32-gcc" + windows_linker="$windows_linker -Wl,--subsystem,console:4" + else + echo "Error: Compiling for Windows 9x is only supported when running under the MinGW64 shell." + exit 1 + fi + ;; + esac +done + rm -f "bareiron$exe" -gcc src/*.c -O3 -Iinclude -o "bareiron$exe" $windows_linker +$compiler src/*.c -O3 -Iinclude -o "bareiron$exe" $windows_linker "./bareiron$exe"