$ErrorActionPreference = "Stop" $out = Join-Path $env:TEMP "test_ds18b20_copy_delay.exe" $test = Join-Path $PSScriptRoot "test_ds18b20_copy_delay.c" $core = Join-Path $PSScriptRoot "..\Src\ds18b20.c" $inc = Join-Path $PSScriptRoot "..\Inc" $gcc = Get-Command gcc -ErrorAction SilentlyContinue if ($gcc) { & $gcc.Source -std=c99 -Wall -Wextra -Werror -I $inc $test $core -o $out } else { $vcvars = "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" if (-not (Test-Path $vcvars)) { throw "Neither gcc nor MSVC was found" } $command = "call `"$vcvars`" >nul && pushd `"$env:TEMP`" && cl /nologo /std:c11 /W4 /WX /I `"$inc`" `"$test`" `"$core`" /Fe:`"$out`"" & cmd.exe /d /c $command } if ($LASTEXITCODE -ne 0) { throw "DS18B20 regression compilation failed" } & $out if ($LASTEXITCODE -ne 0) { throw "DS18B20 regression failed" } Remove-Item -LiteralPath $out -Force $searchOut = Join-Path $env:TEMP "test_ds18b20_incremental_search.exe" $searchTest = Join-Path $PSScriptRoot "test_ds18b20_incremental_search.c" if ($gcc) { & $gcc.Source -std=c99 -Wall -Wextra -Werror -I $inc $searchTest $core -o $searchOut } else { $command = "call `"$vcvars`" >nul && pushd `"$env:TEMP`" && cl /nologo /std:c11 /W4 /WX /I `"$inc`" `"$searchTest`" `"$core`" /Fe:`"$searchOut`"" & cmd.exe /d /c $command } if ($LASTEXITCODE -ne 0) { throw "DS18B20 incremental search compilation failed" } & $searchOut if ($LASTEXITCODE -ne 0) { throw "DS18B20 incremental search failed" } Remove-Item -LiteralPath $searchOut -Force