# Build Scripts Documentation ReiLua includes automated build scripts for easy development and release builds. ## Available Scripts ### Development Build Scripts - **Windows**: `build_dev.bat` - **Linux/Unix**: `build_dev.sh` ### Release Build Scripts - **Windows**: `build_release.bat` - **Linux/Unix**: `build_release.sh` ## Development Build ### Purpose Fast iteration during game development with external Lua files and assets. ### Usage **Windows:** ```cmd build_dev.bat ``` **Linux/Unix:** ```bash chmod +x build_dev.sh ./build_dev.sh ``` ### Features - ✅ No embedding - loads Lua and assets from file system - ✅ Fast build times - ✅ Edit code and assets without rebuilding - ✅ Automatic cleanup of embedded files - ✅ Warns if Lua files or assets are in build directory - ✅ Optional clean build: `build_dev.bat clean` or `./build_dev.sh clean` ### Output - Development executable: `build/ReiLua.exe` - Run your game: `cd your_game && path/to/build/ReiLua.exe` - Debug mode: `path/to/build/ReiLua.exe --log` ## Release Build ### Purpose Create a single-file executable for distribution with all code and assets embedded. ### Preparation Before running the release build, prepare your files: ```bash cd build # Copy all Lua files copy ..\your_game\*.lua . # Or: cp ../your_game/*.lua . # Copy assets mkdir assets copy ..\your_game\assets\* assets\ # Or: cp -r ../your_game/assets/* assets/ ``` ### Usage **Windows:** ```cmd build_release.bat ``` **Linux/Unix:** ```bash chmod +x build_release.sh ./build_release.sh ``` ### Features - ✅ Embeds all Lua files from `build/` directory - ✅ Embeds all assets from `build/assets/` folder - ✅ Creates single-file executable - ✅ Release optimization enabled - ✅ Verifies Lua files and assets before building - ✅ Shows summary of embedded files after build - ✅ Interactive confirmation before building ### Output - Release executable: `build/ReiLua.exe` - Ready for distribution - no external dependencies - Can be renamed to your game name ### Build Configuration The release build automatically configures: - `EMBED_MAIN=ON` - Embeds all Lua files - `EMBED_ASSETS=ON` - Embeds all assets (if assets folder exists) - `CMAKE_BUILD_TYPE=Release` - Optimized build ## Customizing Your Executable ### Adding Custom Icon 1. Replace `icon.ico` with your own icon file 2. Keep the same filename or update `resources.rc` 3. Rebuild ### Changing Executable Properties Edit `resources.rc` to customize: ```rc VALUE "CompanyName", "Your Studio Name" VALUE "FileDescription", "Your Game Description" VALUE "ProductName", "Your Game Name" VALUE "LegalCopyright", "Copyright (C) Your Name, 2025" ``` ### Renaming the Executable Edit `CMakeLists.txt`: ```cmake project( YourGameName ) # Line 6 ``` After building, the executable will be named `YourGameName.exe`. ## Workflow Examples ### Development Workflow ```bash # Initial setup build_dev.bat # Edit your Lua files in your game directory # ... make changes ... # Just run - no rebuild needed! cd your_game path\to\build\ReiLua.exe # If you modify C code, rebuild build_dev.bat ``` ### Release Workflow ```bash # 1. Prepare files cd build copy ..\your_game\*.lua . mkdir assets copy ..\your_game\assets\* assets\ # 2. Build release cd .. build_release.bat # 3. Test cd build ReiLua.exe --log # 4. Distribute # Copy build\ReiLua.exe to your distribution folder ``` ## Troubleshooting ### "CMake configuration failed" - Ensure CMake is installed and in PATH - Ensure MinGW is installed and in PATH - Check `CMakeLists.txt` exists in parent directory ### "No Lua files found" - Copy your Lua files to `build/` directory before release build - Ensure `main.lua` exists (required entry point) ### "Build failed" - Check compiler errors in output - Ensure all dependencies are installed - Try clean build: `build_dev.bat clean` ### Development build embedding warning - The dev build script warns if it finds Lua files or assets in build/ - These should be removed for development builds - The script offers to remove them automatically ## Script Features ### Safety Features - Checks for correct directory before running - Validates required files exist - Warns about potential issues - Interactive confirmations for release builds - Automatic cleanup of old embedded files ### User Friendly - Clear progress messages - Colored output (where supported) - Helpful error messages - Pause at end to review results - Quick reference commands shown after build ## Notes - Development builds are **much faster** than release builds - Release builds may take longer due to embedding and optimization - Always test your release build before distribution - The scripts work on both Windows (CMD/PowerShell) and Unix shells - On Unix, make scripts executable: `chmod +x build_*.sh`