## Compiling on Windows with MSYS2 (32-bit) Follow these steps to build `BlockLua.dll` for 32-bit Windows using MSYS2's MinGW-w64 i686 toolchain. ### 1) Install MSYS2 - Download and install MSYS2 from `https://www.msys2.org/`. - After installing, open the "MSYS2 MSYS" terminal once and update the package database if prompted. ### 2) Install required packages (i686 / 32-bit) Run this in the "MSYS2 MSYS" or "MSYS2 MinGW 32-bit" terminal: ```bash pacman -Sy --needed mingw-w64-i686-toolchain mingw-w64-i686-binutils mingw-w64-i686-lua51 ``` What these packages are for: - mingw-w64-i686-toolchain: 32-bit C/C++ compiler suite (g++, libstdc++, runtime libs) to build Windows binaries. - mingw-w64-i686-binutils: Linker and binary utilities (ld, as, objdump) used by the compiler and for optional inspection. - mingw-w64-i686-lua51: Lua 5.1 development files for 32-bit (import library). We use its import library to link; at runtime you can use the provided `lua5.1.dll`. ### 3) Build (PowerShell, recommended) - Open PowerShell in the repo root. - Run the script: ```powershell build.bat ``` What the script does: - Temporarily prepends `C:\\msys64\\mingw32\\bin` to PATH so the 32-bit toolchain is used. - Compiles the project with `-m32` and links against `lua5.1`. - Produces `build\BlockLua.dll` and `build\BlockLua-Unsafe.dll`. ### 4) Optional: Verify 32-bit output If you installed binutils, you can check the architecture: ```powershell objdump -f build\BlockLua.dll | Select-String i386 ``` You should see `architecture: i386` in the output. ### Notes - Ensure you installed the i686 (32-bit) variants of the packages; x86_64 packages won't work for a 32-bit build. - If the linker cannot find `-llua5.1`, confirm `mingw-w64-i686-lua51` is installed and you are using the `mingw32` toolchain (not `x86_64`).