- 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.
174 lines
4.3 KiB
Batchfile
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
|