@echo off setlocal :: --- 1. Handle Config Choice --- :: Default to debug config, but allow override set "CONFIG_ARG=%~1" if /I "%CONFIG_ARG%"=="" set "CONFIG_ARG=debug" if /I "%CONFIG_ARG%"=="clang" set "CONFIG_ARG=debug" if /I "%CONFIG_ARG%"=="msvc" set "CONFIG_ARG=debug" set "CONFIG=Debug" if /I "%CONFIG_ARG%"=="profile" set "CONFIG=Profile" if /I "%CONFIG_ARG%"=="release" set "CONFIG=Release" :: --- 2. Generate Random ID & Setup Paths --- set "GAME_BUILD_ID=%RANDOM%" set "OUT_DIR=%~dp0..\bin\x64-%CONFIG%" echo --- Building Game (ID: %GAME_BUILD_ID%) [%CONFIG%] --- :: --- 3. Manage Lock File --- if not exist "%OUT_DIR%" mkdir "%OUT_DIR%" pushd "%OUT_DIR%" :: Clean up old DLLs/PDBs in this folder to prevent clutter del Game-*.dll Game-*.pdb Game-*.ilk Game-*.exp Game-*.lib > NUL 2> NUL echo %GAME_BUILD_ID% > lock.tmp popd :: --- 4. Run Build System --- :: Pass GAME_BUILD_ID environment variable so build.bat can use it set "GAME_BUILD_ID=%GAME_BUILD_ID%" call "%~dp0build.bat" %CONFIG_ARG% game if %ERRORLEVEL% NEQ 0 ( echo. echo BUILD FAILED! goto :cleanup ) :: Copy output to Game.dll for the engine to load copy /y "%OUT_DIR%\Game-%GAME_BUILD_ID%.dll" "%OUT_DIR%\Game.dll" > NUL echo. echo SUCCESS: Generated %OUT_DIR%\Game-%GAME_BUILD_ID%.dll :cleanup if exist "%OUT_DIR%\lock.tmp" del "%OUT_DIR%\lock.tmp"