Files
libsodium/builds/msvc/build/buildbase.bat
T

124 lines
4.5 KiB
Batchfile

@ECHO OFF
REM Usage: [buildbase.bat ..\vs2026\mysolution.sln 18]
SETLOCAL enabledelayedexpansion
SET solution=%1
SET version=%2
SET log=build_%version%.log
SET environment=
SET vswhere="%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"
IF NOT EXIST !vswhere! SET vswhere="%ProgramFiles%\Microsoft Visual Studio\Installer\vswhere.exe"
SET /A next_version=version + 1
SET version_range=[%version%.0,!next_version!.0)
SET required_components=Microsoft.VisualStudio.Component.VC.Tools.x86.x64
IF %version% GEQ 17 SET required_components=!required_components! Microsoft.VisualStudio.Component.VC.Tools.ARM64
IF %version% GEQ 15 (
IF EXIST !vswhere! (
FOR /F "usebackq tokens=*" %%I IN (`!vswhere! -latest -prerelease -products * -version !version_range! -requires !required_components! -property installationPath`) DO (
SET environment="%%I\VC\Auxiliary\Build\vcvarsall.bat"
)
)
) ELSE (
SET tools=Microsoft Visual Studio %version%.0\VC\vcvarsall.bat
SET environment="%ProgramFiles%\!tools!"
IF NOT EXIST !environment! SET environment="%ProgramFiles(x86)%\!tools!"
)
IF NOT DEFINED environment GOTO no_tools
IF NOT EXIST !environment! GOTO no_tools
ECHO Environment: !environment!
ECHO Building: %solution%
CALL !environment! x86 > nul 2>&1
ECHO Platform=x86
ECHO Configuration=DynDebug
msbuild /m /v:n /p:Configuration=DynDebug /p:Platform=Win32 %solution% >> %log%
IF errorlevel 1 GOTO error
ECHO Configuration=DynRelease
msbuild /m /v:n /p:Configuration=DynRelease /p:Platform=Win32 %solution% >> %log%
IF errorlevel 1 GOTO error
ECHO Configuration=LtcgDebug
msbuild /m /v:n /p:Configuration=LtcgDebug /p:Platform=Win32 %solution% >> %log%
IF errorlevel 1 GOTO error
ECHO Configuration=LtcgRelease
msbuild /m /v:n /p:Configuration=LtcgRelease /p:Platform=Win32 %solution% >> %log%
IF errorlevel 1 GOTO error
ECHO Configuration=StaticDebug
msbuild /m /v:n /p:Configuration=StaticDebug /p:Platform=Win32 %solution% >> %log%
IF errorlevel 1 GOTO error
ECHO Configuration=StaticRelease
msbuild /m /v:n /p:Configuration=StaticRelease /p:Platform=Win32 %solution% >> %log%
IF errorlevel 1 GOTO error
ENDLOCAL & SET solution=%solution% & SET version=%version% & SET log=%log% & SET environment=%environment%
SETLOCAL enabledelayedexpansion
CALL !environment! x86_amd64 > nul 2>&1
ECHO Platform=x64
ECHO Configuration=DynDebug
msbuild /m /v:n /p:Configuration=DynDebug /p:Platform=x64 %solution% >> %log%
IF errorlevel 1 GOTO error
ECHO Configuration=DynRelease
msbuild /m /v:n /p:Configuration=DynRelease /p:Platform=x64 %solution% >> %log%
IF errorlevel 1 GOTO error
ECHO Configuration=LtcgDebug
msbuild /m /v:n /p:Configuration=LtcgDebug /p:Platform=x64 %solution% >> %log%
IF errorlevel 1 GOTO error
ECHO Configuration=LtcgRelease
msbuild /m /v:n /p:Configuration=LtcgRelease /p:Platform=x64 %solution% >> %log%
IF errorlevel 1 GOTO error
ECHO Configuration=StaticDebug
msbuild /m /v:n /p:Configuration=StaticDebug /p:Platform=x64 %solution% >> %log%
IF errorlevel 1 GOTO error
ECHO Configuration=StaticRelease
msbuild /m /v:n /p:Configuration=StaticRelease /p:Platform=x64 %solution% >> %log%
IF errorlevel 1 GOTO error
@REM Build ARM64 packages only for Visual Studio 2022 and later
IF %version% GEQ 17 (
ENDLOCAL & SET solution=%solution% & SET version=%version% & SET log=%log% & SET environment=%environment%
SETLOCAL enabledelayedexpansion
CALL !environment! amd64_arm64 > nul 2>&1
ECHO Platform=ARM64
ECHO Configuration=DynDebug
msbuild /m /v:n /p:Configuration=DynDebug /p:Platform=ARM64 %solution% >> %log%
IF errorlevel 1 GOTO error
ECHO Configuration=DynRelease
msbuild /m /v:n /p:Configuration=DynRelease /p:Platform=ARM64 %solution% >> %log%
IF errorlevel 1 GOTO error
ECHO Configuration=LtcgDebug
msbuild /m /v:n /p:Configuration=LtcgDebug /p:Platform=ARM64 %solution% >> %log%
IF errorlevel 1 GOTO error
ECHO Configuration=LtcgRelease
msbuild /m /v:n /p:Configuration=LtcgRelease /p:Platform=ARM64 %solution% >> %log%
IF errorlevel 1 GOTO error
ECHO Configuration=StaticDebug
msbuild /m /v:n /p:Configuration=StaticDebug /p:Platform=ARM64 %solution% >> %log%
IF errorlevel 1 GOTO error
ECHO Configuration=StaticRelease
msbuild /m /v:n /p:Configuration=StaticRelease /p:Platform=ARM64 %solution% >> %log%
IF errorlevel 1 GOTO error
)
ECHO Complete: %solution%
EXIT /B 0
:error
ECHO *** ERROR, build terminated early, see: %log%
ECHO.
ECHO === Last errors from %log% ===
findstr /i /c:"error " /c:"error:" /c:"fatal error" %log%
ECHO.
EXIT /B 1
:no_tools
ECHO *** ERROR, Visual Studio %version% C++ build tools not found
EXIT /B 1