89 lines
3.5 KiB
PowerShell
89 lines
3.5 KiB
PowerShell
param(
|
|
[string]$DatovizBuildDirectory,
|
|
[string]$CTestExecutable = 'ctest'
|
|
)
|
|
|
|
$ErrorActionPreference = 'Stop'
|
|
|
|
$render3DRoot = $PSScriptRoot
|
|
$workspaceRoot = Split-Path -Parent $render3DRoot
|
|
$aeRoot = Split-Path -Parent (Split-Path -Parent $workspaceRoot)
|
|
|
|
$runtimeDirectories = @(
|
|
(Join-Path $aeRoot 'cached_external_library\vs2022_Debug_render_3D\install\PThreads4W\x86_64\Debug\bin')
|
|
'C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64'
|
|
)
|
|
|
|
$vulkanSdkRoot = if ($env:VULKAN_SDK) {
|
|
$env:VULKAN_SDK
|
|
} else {
|
|
'C:\VulkanSDK\1.4.357.0'
|
|
}
|
|
$runtimeDirectories += Join-Path $vulkanSdkRoot 'Bin'
|
|
$runtimeLibraries = @(
|
|
(Join-Path $runtimeDirectories[0] 'pthreadVC3d.dll')
|
|
(Join-Path $vulkanSdkRoot 'Bin\shaderc_shared.dll')
|
|
)
|
|
$linkDirectories = @(
|
|
'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.44.35207\lib\x64'
|
|
'C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\ucrt\x64'
|
|
'C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\um\x64'
|
|
)
|
|
|
|
$missingDirectories = @($runtimeDirectories | Where-Object { -not (Test-Path -LiteralPath $_ -PathType Container) })
|
|
if ($missingDirectories.Count -ne 0) {
|
|
throw "Renderive 3D runtime directories are missing: $($missingDirectories -join ', ')"
|
|
}
|
|
$missingLibraries = @($runtimeLibraries | Where-Object { -not (Test-Path -LiteralPath $_ -PathType Leaf) })
|
|
if ($missingLibraries.Count -ne 0) {
|
|
throw "Renderive 3D runtime libraries are missing: $($missingLibraries -join ', ')"
|
|
}
|
|
$missingLinkDirectories = @($linkDirectories | Where-Object { -not (Test-Path -LiteralPath $_ -PathType Container) })
|
|
if ($missingLinkDirectories.Count -ne 0) {
|
|
throw "Renderive 3D link directories are missing: $($missingLinkDirectories -join ', ')"
|
|
}
|
|
|
|
$pathEntries = @($env:PATH -split ';' | Where-Object { $_ })
|
|
foreach ($runtimeDirectory in $runtimeDirectories) {
|
|
if ($pathEntries -notcontains $runtimeDirectory) {
|
|
$pathEntries = @($runtimeDirectory) + $pathEntries
|
|
}
|
|
}
|
|
$env:PATH = $pathEntries -join ';'
|
|
|
|
$libEntries = @($env:LIB -split ';' | Where-Object { $_ })
|
|
foreach ($linkDirectory in $linkDirectories) {
|
|
if ($libEntries -notcontains $linkDirectory) {
|
|
$libEntries = @($linkDirectory) + $libEntries
|
|
}
|
|
}
|
|
$env:LIB = $libEntries -join ';'
|
|
|
|
$env:VULKAN_SDK = $vulkanSdkRoot
|
|
$env:DVZ_SHADERC_RUNTIME_LIBRARY = $runtimeLibraries[1]
|
|
$env:DVZ_WHEEL_RUNTIME_DIRS = Join-Path $vulkanSdkRoot 'Bin'
|
|
|
|
# Datoviz's upstream tests use POSIX-style absolute /tmp paths. On Windows those paths resolve
|
|
# against the current drive root, so prepare the equivalent directory on the workspace drive.
|
|
$windowsTempDirectory = Join-Path ([System.IO.Path]::GetPathRoot($workspaceRoot)) 'tmp'
|
|
New-Item -ItemType Directory -Path $windowsTempDirectory -Force | Out-Null
|
|
$env:TMPDIR = $windowsTempDirectory
|
|
$env:TEMP = $windowsTempDirectory
|
|
$env:TMP = $windowsTempDirectory
|
|
|
|
Write-Host 'Renderive render_3D runtime environment is ready.'
|
|
Write-Host " PThreads4W: $($runtimeDirectories[0])"
|
|
Write-Host " Windows SDK: $($runtimeDirectories[1])"
|
|
Write-Host " Link roots: $($linkDirectories -join '; ')"
|
|
Write-Host " Vulkan SDK: $vulkanSdkRoot"
|
|
Write-Host " shaderc: $env:DVZ_SHADERC_RUNTIME_LIBRARY"
|
|
Write-Host " TEMP: $windowsTempDirectory"
|
|
|
|
if ($DatovizBuildDirectory) {
|
|
$resolvedBuildDirectory = (Resolve-Path -LiteralPath $DatovizBuildDirectory).Path
|
|
& $CTestExecutable --test-dir $resolvedBuildDirectory -L datoviz --output-on-failure -j 1
|
|
if ($LASTEXITCODE -ne 0) {
|
|
exit $LASTEXITCODE
|
|
}
|
|
}
|