Ported from sacredK with module-relative addresses, hooks by exported name and a SHA-256 check of the six game modules (Community Patch 2.65.1). Borderless windowed at monitor size replaces exclusive fullscreen, whose focus loss during loading made the game quit and crash on exit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
22 lines
1.3 KiB
PowerShell
22 lines
1.3 KiB
PowerShell
# Configure + build from any shell: enters the x86 MSVC environment first.
|
|
# .\build.ps1 # x86-debug
|
|
# .\build.ps1 x86-release
|
|
param([string]$Preset = "x86-debug")
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
|
|
$vs = & $vswhere -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath
|
|
if (-not $vs) { throw "MSVC x86 tools not found (install VS Build Tools with 'Desktop development with C++')." }
|
|
$vcvars = Join-Path $vs "VC\Auxiliary\Build\vcvarsall.bat"
|
|
# vcvarsall itself calls vswhere and expects it on PATH.
|
|
$env:PATH = "$(Split-Path $vswhere);$env:PATH"
|
|
|
|
# Configure only once: the build re-runs CMake itself when needed, and
|
|
# re-configuring here would clash with VS Code's CMake Tools, which caches
|
|
# the full path of cl.exe instead of the preset's plain "cl".
|
|
$configure = if (Test-Path "build\$Preset\CMakeCache.txt") { "" } else { "cmake --preset $Preset && " }
|
|
# 2>&1 inside cmd: Windows PowerShell turns any native stderr line (e.g. CMake's
|
|
# download progress) into a terminating error under ErrorActionPreference=Stop.
|
|
cmd /c "`"$vcvars`" x86 >nul && $configure cmake --build --preset $Preset 2>&1"
|
|
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|