From ce3f7c8b3fa2e61f6e9af479aac37887bbe8c11b Mon Sep 17 00:00:00 2001 From: Connor O'Connor Date: Sun, 5 Oct 2025 15:37:49 -0400 Subject: [PATCH] msys_compile.bat --- compiling.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++++ msys_compile.bat | 13 ++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 compiling.md create mode 100644 msys_compile.bat diff --git a/compiling.md b/compiling.md new file mode 100644 index 0000000..3d3fa93 --- /dev/null +++ b/compiling.md @@ -0,0 +1,52 @@ +## 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 +msys_compile.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`). diff --git a/msys_compile.bat b/msys_compile.bat new file mode 100644 index 0000000..2d3243b --- /dev/null +++ b/msys_compile.bat @@ -0,0 +1,13 @@ +@echo off +cd /d %~dp0 + +set "PATH=C:\msys64\mingw32\bin;%PATH%" + +if not exist build mkdir build + +set buildargs=-Wall -Werror -m32 -shared -Isrc -Iinc/tsfuncs -Iinc/lua -lpsapi -L. -llua5.1 -static-libgcc -static-libstdc++ + +echo on +g++ src/bllua4.cpp %buildargs% -o build\BlockLua.dll +g++ -DBLLUA_UNSAFE src/bllua4.cpp %buildargs% -o build\BlockLua-Unsafe.dll +@echo off