blob: cec1d8f2f6b11e6a34619e82e02422e8f142bf30 [file] [log] [blame] [edit]
@echo off
if "%1"=="/?" goto :showhelp
if "%1"=="-?" goto :showhelp
if "%1"=="-help" goto :showhelp
if "%1"=="--help" goto :showhelp
setlocal ENABLEDELAYEDEXPANSION
set X86_DBG=1
set X86_REL=1
set X86_TST=1
set X64_DBG=1
set X64_REL=1
set X64_TST=1
set ARM64_DBG=1
set ARM64_REL=1
set ARM64_TST=0
set ANALYZE=-analyze
set FV_FLAG=
set CV_FLAG=
if "%1"=="-short" (
echo Building / testing fewer versions.
set X86_DBG=0
set X86_REL=1
set X86_TST=0
set X64_DBG=1
set X64_REL=0
set X64_TST=1
set ARM64_DBG=1
set ARM64_REL=0
set ARM64_TST=0
set ANALYZE=
shift /1
)
if "%1"=="-fv" (
echo Fixed version flag set for lab verification.
set FV_FLAG=-fv
shift /1
)
if "%1"=="-cv" (
echo Setting the CLANG_VENDOR value.
set CV_FLAG=-cv %2
shift /1
shift /1
)
if "%HLSL_SRC_DIR%"=="" (
echo Missing source directory.
if exist %~dp0..\..\LLVMBuild.txt (
set HLSL_SRC_DIR=%~dp0..\..
echo Source directory deduced to be %~dp0..\..
) else (
exit /b 1
)
)
if "%1"=="-buildoutdir" (
echo Build output directory set to %2
set HLSL_BLD_DIR=%2
shift /1
shift /1
)
rem Build all supported architectures (x86, x64, ARM64)
call :verify_arch x86 %X86_TST% %X86_DBG% %X86_REL%
if errorlevel 1 (
echo Failed to verify for x86.
exit /b 1
)
call :verify_arch x64 %X64_TST% %X64_DBG% %X64_REL%
if errorlevel 1 (
echo Failed to verify for x64.
exit /b 1
)
rem Set path to x86 tblgen tools for the ARM64 build
if "%BUILD_TBLGEN_PATH%" == "" (
set BUILD_TBLGEN_PATH=%HLSL_BLD_DIR%\x86\Release\bin
)
call :verify_arch arm64 %ARM64_TST% %ARM64_DBG% %ARM64_REL%
if errorlevel 1 (
echo Failed to verify for arm64.
exit /b 1
)
endlocal
exit /b 0
:showhelp
echo Runs the verification steps for a lab configuration.
echo.
echo Usage:
echo hctlabverify [-short] [-fv] [-buildOutDir dir]
echo.
echo Options:
echo -short builds fewer components
echo -fv fixes version information
echo -buildOutDir sets the base output directory
echo.
goto :eof
:verify_arch
rem Performs a per-architecture build and test.
rem 1 - architecture
rem 2 - '1' to run tests, 0 otherwise
rem 3 - '1' to build debug, 0 to skip
rem 4 - '1' to build release, 0 to skip
setlocal
set HLSL_BLD_DIR=%HLSL_BLD_DIR%\%1
mkdir %HLSL_BLD_DIR%
rem Build the solution.
call :announce Building solution files for %1
call %HLSL_SRC_DIR%\utils\hct\hctbuild.cmd -s %FV_FLAG% %CV_FLAG% -%1
if errorlevel 1 (
echo Failed to create solution for architecture %1
exit /b 1
)
rem Build debug.
if "%3"=="1" (
call :announce Debug build - %1
call %HLSL_SRC_DIR%\utils\hct\hctbuild.cmd -b -%1
if errorlevel 1 (
echo Failed to build for architecture %1
exit /b 1
)
);
rem Build retail.
if "%4"=="1" (
call :announce Retail build - %1
call %HLSL_SRC_DIR%\utils\hct\hctbuild.cmd -b %ANALYZE% -rel -%1
if errorlevel 1 (
echo Failed to build for architecture %1 in release
exit /b 1
)
)
rem Run tests.
if "%2"=="1" (
call :announce Starting tests
rem Pick Debug if available, retail otherwise.
if "%3"=="1" (
call %HLSL_SRC_DIR%\utils\hct\hcttest.cmd
) else (
call %HLSL_SRC_DIR%\utils\hct\hcttest.cmd -rel
)
) else (
echo Skipping tests.
)
endlocal
exit /b 0
:announce
echo -------------------------------------------------------------------------
echo.
echo %*
echo.
echo -------------------------------------------------------------------------
exit /b 0