Files
Perfectium/build.bat

132 lines
3.8 KiB
Batchfile

@echo off
setlocal EnableDelayedExpansion
set CONFIG=%1
if "%CONFIG%"=="" set CONFIG=Release
if "%CONFIG:~0,1%"=="/" set CONFIG=%CONFIG:~1%
if "%CONFIG:~0,1%"=="-" set CONFIG=%CONFIG:~1%
if defined VCINSTALLDIR goto :env_ready
set "VSWHERE=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"
if not exist "%VSWHERE%" set "VSWHERE=%ProgramFiles%\Microsoft Visual Studio\Installer\vswhere.exe"
if not exist "%VSWHERE%" (
echo ERROR: vswhere.exe not found..
exit /b 1
)
for /f "usebackq delims=" %%P in (`"%VSWHERE%" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do set "VS_PATH=%%P"
if not defined VS_PATH (
echo ERROR: No Visual Studio installation with VC tools found.
exit /b 1
)
call "%VS_PATH%\VC\Auxiliary\Build\vcvarsall.bat" x64 >nul 2>&1
if errorlevel 1 (
echo ERROR: vcvarsall.bat failed.
exit /b 1
)
:env_ready
set OUTDIR=.\output\bin\%CONFIG%
set OBJDIR=.\output\obj\%CONFIG%
if not exist "%OUTDIR%" mkdir "%OUTDIR%"
if not exist "%OBJDIR%" mkdir "%OBJDIR%"
set ML_FLAGS=/nologo /W3 /WX /c /Cx /Zi /Fo"%OBJDIR%\\" /I .
if /I "%CONFIG%"=="Debug" (
set ML_FLAGS=%ML_FLAGS% /DDEBUG
) else (
set ML_FLAGS=%ML_FLAGS% /DNDEBUG
)
set LINK_FLAGS=/nologo /DLL /SUBSYSTEM:WINDOWS /MACHINE:X64 /DEBUG
set LINK_FLAGS=%LINK_FLAGS% /DEF:raider.def
set LINK_FLAGS=%LINK_FLAGS% /OUT:"%OUTDIR%\raider.dll"
set LINK_FLAGS=%LINK_FLAGS% /PDB:"%OUTDIR%\raider.pdb"
set LINK_FLAGS=%LINK_FLAGS% /IMPLIB:"%OUTDIR%\raider.lib"
set "DETOURS_LIBPATH="
if exist ".\lib\detours.lib" set "DETOURS_LIBPATH=.\lib"
if not defined DETOURS_LIBPATH if exist "%VCPKG_ROOT%\packages\detours_x64-windows\lib\detours.lib" set "DETOURS_LIBPATH=%VCPKG_ROOT%\packages\detours_x64-windows\lib"
if not defined DETOURS_LIBPATH if exist "%VCPKG_ROOT%\packages\detours_x64-windows-static\lib\detours.lib" set "DETOURS_LIBPATH=%VCPKG_ROOT%\packages\detours_x64-windows-static\lib"
if not defined DETOURS_LIBPATH if exist "%VCPKG_INSTALLED_DIR%\x64-windows\lib\detours.lib" set "DETOURS_LIBPATH=%VCPKG_INSTALLED_DIR%\x64-windows\lib"
if not defined DETOURS_LIBPATH (
echo.
echo ERROR: detours.lib not found. Are you stupid?
echo.
exit /b 1
)
set LINK_FLAGS=%LINK_FLAGS% /LIBPATH:"%DETOURS_LIBPATH%"
set LIBS=kernel32.lib user32.lib msvcrt.lib ucrt.lib vcruntime.lib legacy_stdio_definitions.lib detours.lib
set ASM_FILES=^
raider.asm ^
sdk_globals.asm ^
patterns.asm ^
native.asm ^
util.asm ^
logger.asm ^
hooks.asm ^
ufunctionhooks.asm ^
gui.asm ^
zerogui.asm ^
zeroinput.asm ^
logic\game.asm ^
logic\inventory.asm ^
logic\abilities.asm ^
logic\spawners.asm ^
logic\teams.asm ^
gamemodes\gamemode_base.asm ^
gamemodes\gamemode_solos.asm ^
gamemodes\gamemode_duos.asm ^
gamemodes\gamemode_50v50.asm ^
gamemodes\gamemode_playground.asm ^
gamemodes\gamemode_lategame.asm ^
sdk\sdk_structs.asm ^
sdk\sdk_classes.asm ^
sdk\sdk_fort.asm
set OBJ_LIST=
set ERRORS=0
for %%F in (%ASM_FILES%) do (
set SRC=%%F
set FNAME=%%~nF
set FDIR=%%~dpF
set OBJNAME=!FDIR:logic\=logic_!
set OBJNAME=!OBJNAME:gamemodes\=gm_!
set OBJNAME=!OBJNAME:sdk\=sdk_!
set OBJNAME=!OBJNAME:\=_!
set OBJ=%OBJDIR%\!OBJNAME!!FNAME!.obj
echo [ML64] %%F
ml64.exe %ML_FLAGS% /Fo"!OBJ!" "%%F"
if errorlevel 1 (
echo ERROR: failed to assemble %%F
set /A ERRORS=!ERRORS!+1
) else (
set OBJ_LIST=!OBJ_LIST! "!OBJ!"
)
)
if !ERRORS! GTR 0 (
echo.
echo BUILD FAILED: !ERRORS! files failed to assemble.
exit /b 1
)
echo.
echo [LINK] raider.dll
link.exe %LINK_FLAGS% %OBJ_LIST% %LIBS%
if errorlevel 1 (
echo ERROR: link failed.
exit /b 1
)
echo.
echo BUILD SUCCEEDED: %OUTDIR%\raider.dll
exit /b 0