Files
UniversalContainer/build.bat
T
Efim Beshmenev aea6e330e3 Realisation v1
2026-08-11 22:19:34 +03:00

91 lines
2.7 KiB
Batchfile

@echo off
setlocal EnableExtensions
cd /d "%~dp0"
set "UC_PROFILE=%~1"
if not defined UC_PROFILE set "UC_PROFILE=baseline"
set "UC_RUN_TESTS=%~2"
call :find_cmake
if errorlevel 1 exit /b 1
if /I "%UC_PROFILE%"=="all" (
call :build_one scalar
if errorlevel 1 exit /b 1
call :build_one baseline
if errorlevel 1 exit /b 1
call :build_one avx2
if errorlevel 1 exit /b 1
) else if /I "%UC_PROFILE%"=="scalar" (
call :build_one scalar
) else if /I "%UC_PROFILE%"=="baseline" (
call :build_one baseline
) else if /I "%UC_PROFILE%"=="avx2" (
call :build_one avx2
) else (
echo Unknown profile "%UC_PROFILE%".
echo Usage: build.bat [scalar^|baseline^|avx2^|all] [test]
exit /b 2
)
if errorlevel 1 exit /b 1
echo.
echo Build completed. Executables are under out\bin\PROFILE\Release\
exit /b 0
:build_one
set "UC_ONE_PROFILE=%~1"
echo.
echo === Configuring %UC_ONE_PROFILE% Release ===
"%UC_CMAKE%" --preset "msvc-%UC_ONE_PROFILE%"
if errorlevel 1 exit /b 1
echo === Building %UC_ONE_PROFILE% Release ===
"%UC_CMAKE%" --build --preset "build-%UC_ONE_PROFILE%-release"
if errorlevel 1 exit /b 1
echo === Auditing %UC_ONE_PROFILE% compiler flags ===
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "tools\audit_build_flags.ps1" -Profile "%UC_ONE_PROFILE%"
if errorlevel 1 exit /b 1
if /I "%UC_RUN_TESTS%"=="test" (
if /I "%UC_ONE_PROFILE%"=="avx2" (
echo === Checking AVX2 support before running avx2 tests ===
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "tools\test_avx2.ps1"
if errorlevel 1 (
echo AVX2 tests skipped because this CPU/OS does not report AVX2 support.
exit /b 0
)
)
echo === Testing %UC_ONE_PROFILE% Release ===
"%UC_CMAKE%" --build "out\build\msvc-%UC_ONE_PROFILE%" --config Release --target RUN_TESTS
if errorlevel 1 exit /b 1
)
exit /b 0
:find_cmake
for /f "delims=" %%I in ('where cmake.exe 2^>nul') do (
if not defined UC_CMAKE set "UC_CMAKE=%%I"
)
if defined UC_CMAKE exit /b 0
set "UC_VSWHERE=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"
if not exist "%UC_VSWHERE%" (
echo Could not find cmake.exe or Visual Studio Installer's vswhere.exe.
exit /b 1
)
for /f "usebackq delims=" %%I in (`"%UC_VSWHERE%" -latest -products * -requires Microsoft.Component.MSBuild -property installationPath`) do set "UC_VSROOT=%%I"
if not defined UC_VSROOT (
echo No Visual Studio installation with MSBuild was found.
exit /b 1
)
set "UC_CMAKE=%UC_VSROOT%\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe"
if not exist "%UC_CMAKE%" (
echo Visual Studio was found, but its bundled CMake is missing:
echo %UC_CMAKE%
exit /b 1
)
exit /b 0