Files
reilua-enhanced/scripts/build_release.bat
Indrajith K L d9d1a8a51e Add flexible module loading and complete file embedding
- Support any folder structure (no hard-coded folders)
 - Embed all file types recursively from any folder
 - Fix require() dot-to-slash conversion for embedded modules
 - Clean build folder for fresh builds every time
 - Generate empty headers for Lua-only projects

 Backward compatible with existing projects.
2025-11-10 01:58:25 +05:30

174 lines
4.3 KiB
Batchfile

@echo off
REM ReiLua Release Build Script
REM Run this from w64devkit shell or CMD with MinGW in PATH
echo ================================
echo ReiLua - Release Build
echo ================================
echo.
REM Get script directory and navigate to project root
cd /d "%~dp0.."
REM Check if we're in the right directory
if not exist "CMakeLists.txt" (
echo ERROR: Cannot find CMakeLists.txt in project root
exit /b 1
)
REM Create and navigate to build directory
if not exist "build" mkdir build
cd build
if errorlevel 1 (
echo ERROR: Cannot access build directory
exit /b 1
)
REM ALWAYS clean build folder for fresh build
echo Cleaning build directory for fresh build...
del /Q /S * >nul 2>&1
for /d %%p in (*) do rmdir "%%p" /s /q >nul 2>&1
echo * Build directory cleaned
echo.
REM Clean old embedded files
echo Ready for fresh build...
del /Q embedded_main.h embedded_assets.h 2>nul
REM Auto-copy from game folder if it exists
echo.
if exist "..\game" (
echo Found game/ folder - auto-copying ALL contents to build...
REM Copy all files from game folder recursively, excluding LSP files
xcopy /E /I /Y /EXCLUDE:..\game\ReiLua_API.lua+..\game\.luarc.json "..\game\*" . >nul 2>&1
if exist "..\game\ReiLua_API.lua" del /Q "ReiLua_API.lua" 2>nul
if exist "..\game\.luarc.json" del /Q ".luarc.json" 2>nul
echo * Copied ALL game files and folders
echo * All folder structures preserved ^(user-created folders included^)
echo.
)
REM Check for Lua files
echo Checking for Lua files...
dir /b *.lua >nul 2>&1
if errorlevel 1 (
echo.
echo WARNING: No Lua files found in build directory!
echo.
if exist "..\game" (
echo No Lua files found in game/ folder.
echo Add your main.lua to game/ folder and try again.
) else (
echo Tip: Create a game/ folder in project root and add main.lua there.
echo Or manually copy files:
echo cd build
echo copy ..\your_game\*.lua .
)
echo.
set /p CONTINUE="Do you want to continue anyway? (y/N): "
if /i not "%CONTINUE%"=="y" exit /b 1
) else (
echo Found Lua files:
dir /b *.lua
)
REM Check for non-Lua data files (any folder, any file type)
echo.
echo Checking for data files to embed...
set DATA_COUNT=0
for /r %%f in (*) do (
echo %%~nxf | findstr /i /v ".lua .exe .o .a CMake Makefile" >nul
if not errorlevel 1 set /a DATA_COUNT+=1
)
if %DATA_COUNT% GTR 0 (
echo Found data files to embed
echo ^(includes: images, sounds, config, data, and any other files^)
set EMBED_ASSETS=ON
) else (
echo No non-Lua files found ^(only Lua code will be embedded^)
set EMBED_ASSETS=OFF
)
echo.
echo ================================
echo Build Configuration
echo ================================
echo Lua Embedding: ON
echo Data Embedding: %EMBED_ASSETS%
echo Build Type: Release
echo ================================
echo.
pause
REM Clean CMake cache
echo.
echo Cleaning CMake cache...
del /Q CMakeCache.txt 2>nul
rmdir /S /Q CMakeFiles 2>nul
REM Configure with embedding enabled
echo.
echo Configuring CMake for release...
cmake -G "MinGW Makefiles" .. -DEMBED_MAIN=ON -DEMBED_ASSETS=%EMBED_ASSETS% -DCMAKE_BUILD_TYPE=Release
if errorlevel 1 (
echo.
echo ERROR: CMake configuration failed!
pause
exit /b 1
)
REM Build
echo.
echo Building ReiLua Release...
mingw32-make
if errorlevel 1 (
echo.
echo ERROR: Build failed!
pause
exit /b 1
)
REM Show summary
echo.
echo ================================
echo Embedded Files Summary
echo ================================
if exist "embedded_main.h" (
echo.
echo Embedded Lua files:
findstr /C:"Embedded file:" embedded_main.h
)
if exist "embedded_assets.h" (
echo.
echo Embedded assets:
findstr /C:"Embedded asset:" embedded_assets.h
)
echo.
echo ================================
echo Build Complete!
echo ================================
echo.
echo Executable: ReiLua.exe
echo Location: %CD%\ReiLua.exe
echo.
echo Your game is ready for distribution!
echo.
echo To test the release build:
echo ReiLua.exe --log (with console)
echo ReiLua.exe (production mode)
echo.
echo To distribute:
echo - Copy ReiLua.exe to your distribution folder
echo - Rename it to your game name (optional)
echo - That's it! Single file distribution!
echo.
pause