Files
dolphin/Tools/PerformanceTrace/Build-P1.ps1
T
Yaya48 c230971f07 IOS LLE: checkpoint NAND conformance and diagnostic tooling
Preserve formatted NAND boot and Wii Remote pairing, add DMA/SRAM conformance tests and a Wii comparison probe. Keep P1 profiling tools and native update A/B evidence; reject the unhelpful targeted SRAM shortcut.
2026-09-23 13:30:17 +02:00

49 lines
2.8 KiB
PowerShell

param([switch]$ConfigureOnly, [switch]$CleanBeforeBuild)
$ErrorActionPreference = 'Stop'
$p1Repo = [IO.Path]::GetFullPath((Join-Path $PSScriptRoot '../..'))
$p1Build = Join-Path $p1Repo '.starlet_diag_p1'
$p1VS = 'C:\Program Files\Microsoft Visual Studio\18\Community'
$p1CMake = Join-Path $p1VS 'Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe'
$p1Ninja = Join-Path $p1VS 'Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja\ninja.exe'
$p1Setup = 'set VSLANG=1033&& call "' + (Join-Path $p1VS 'Common7\Tools\VsDevCmd.bat') + '" -arch=x64 -host_arch=x64 >nul'
$p1Configure = $p1Setup + ' && "' + $p1CMake + '" -S "' + $p1Repo + '" -B "' + $p1Build + '" -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM="' + $p1Ninja + '" -DENABLE_QT=OFF -DENABLE_NOGUI=ON -DENABLE_TESTS=ON -DENABLE_VULKAN=OFF -DENABLE_LTO=OFF -DENABLE_LLVM=OFF -DUSE_SYSTEM_LIBS=OFF'
cmd.exe /d /s /c $p1Configure
if ($LASTEXITCODE) { throw 'P1 configuration failed.' }
# CMake can decode French MSVC /showIncludes through the OEM code page even though
# cl prints UTF-8 nonbreaking spaces. Then Ninja silently records no header deps.
$p1PrefixFixed = $false
foreach ($p1Info in Get-ChildItem -LiteralPath (Join-Path $p1Build 'CMakeFiles') -Recurse -File -Filter 'CMake*Compiler.cmake') {
$p1Text = [IO.File]::ReadAllText($p1Info.FullName)
$p1Corrected = $p1Text.Replace('Remarque : inclusion du fichier : ',
'Remarque' + [char]0xa0 + ': inclusion du fichier' + [char]0xa0 + ': ')
if ($p1Corrected -cne $p1Text) {
[IO.File]::WriteAllText($p1Info.FullName, $p1Corrected, [Text.UTF8Encoding]::new($false))
$p1PrefixFixed = $true
}
}
if ($p1PrefixFixed) {
cmd.exe /d /s /c $p1Configure
if ($LASTEXITCODE) { throw 'P1 dependency prefix repair failed.' }
}
if ($ConfigureOnly) { return }
if ($CleanBeforeBuild -and [IO.Path]::GetFullPath($p1Build) -cne
[IO.Path]::GetFullPath((Join-Path $p1Repo '.starlet_diag_p1'))) {
throw 'Unexpected build target: refusing clean.'
}
$p1Clean = if ($CleanBeforeBuild) { ' --clean-first' } else { '' }
$p1Compile = $p1Setup + ' && "' + $p1CMake + '" --build "' + $p1Build + '"' + $p1Clean + ' --target dolphin-nogui tests TraceProbeP1 -j 6'
cmd.exe /d /s /c $p1Compile
if ($LASTEXITCODE) { throw 'P1 build failed.' }
$p1NetworkTarget = Join-Path $p1Build 'Binaries/Network'
if (-not (Test-Path -LiteralPath $p1NetworkTarget)) {
$p1NetworkSource = Join-Path $p1Repo '.starlet_msvc2/Binaries/Network'
if (-not (Test-Path -LiteralPath $p1NetworkSource)) {
throw 'Local libslirp runtime absent; the network probe cannot run.'
}
New-Item -ItemType Directory -Path $p1NetworkTarget | Out-Null
Get-ChildItem -LiteralPath $p1NetworkSource -File | Copy-Item -Destination $p1NetworkTarget
}
& $p1Ninja -C $p1Build -t deps 'Source/Core/Common/CMakeFiles/common.dir/PerformanceTrace.cpp.obj' |
Select-Object -First 8