From e5d98c2dc3e79cccb29915f531030b1381db7f81 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Mon, 1 Jun 2026 08:49:37 +0200 Subject: [PATCH] Validate headless vcpkg preset --- CMakePresets.json | 23 +++++++++++++++++++++++ docs/modernization/build-inventory.md | 10 +++++++++- docs/modernization/debt.md | 2 +- docs/modernization/roadmap.md | 14 +++++++++++--- vcpkg.json | 2 +- 5 files changed, 45 insertions(+), 6 deletions(-) diff --git a/CMakePresets.json b/CMakePresets.json index 1da1b13..bb7dedc 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -45,6 +45,13 @@ "displayName": "Windows MSVC default generator", "architecture": "x64" }, + { + "name": "windows-msvc-vcpkg-headless", + "inherits": "platform-headless-base", + "displayName": "Windows MSVC vcpkg headless", + "architecture": "x64", + "toolchainFile": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" + }, { "name": "windows-clangcl-asan", "inherits": "base", @@ -163,6 +170,10 @@ "name": "windows-msvc-default", "configurePreset": "windows-msvc-default" }, + { + "name": "windows-msvc-vcpkg-headless", + "configurePreset": "windows-msvc-vcpkg-headless" + }, { "name": "windows-clangcl-asan", "configurePreset": "windows-clangcl-asan" @@ -213,6 +224,18 @@ } } }, + { + "name": "desktop-fast-vcpkg", + "configurePreset": "windows-msvc-vcpkg-headless", + "output": { + "outputOnFailure": true + }, + "filter": { + "exclude": { + "label": "gpu|slow|platform" + } + } + }, { "name": "desktop-gpu", "configurePreset": "windows-msvc-default", diff --git a/docs/modernization/build-inventory.md b/docs/modernization/build-inventory.md index 9cfe704..9ff688f 100644 --- a/docs/modernization/build-inventory.md +++ b/docs/modernization/build-inventory.md @@ -65,6 +65,10 @@ powershell -ExecutionPolicy Bypass -File scripts\automation\test.ps1 -Preset des powershell -ExecutionPolicy Bypass -File scripts\automation\build.ps1 -Preset windows-msvc-default -Configuration Debug -Target pano_cli cmake --build --preset windows-msvc-default --target panopainter_validate_shaders powershell -ExecutionPolicy Bypass -File scripts\automation\analyze.ps1 -Preset windows-msvc-default -NoApp +$env:VCPKG_ROOT = "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\vcpkg" +cmake --preset windows-msvc-vcpkg-headless +powershell -ExecutionPolicy Bypass -File scripts\automation\platform-build.ps1 -Presets windows-msvc-vcpkg-headless +ctest --preset desktop-fast-vcpkg --build-config Debug cmake --preset android-arm64 powershell -ExecutionPolicy Bypass -File scripts\automation\platform-build.ps1 -Presets android-arm64 powershell -ExecutionPolicy Bypass -File scripts\automation\package-smoke.ps1 -Preset windows-msvc-default -Configuration Debug @@ -74,6 +78,8 @@ Known local toolchain state: - CMake: 4.0.0-rc4 - Local Visual Studio generator selected by CMake: Visual Studio 17 2022 +- Bundled vcpkg: `C:\Program Files\Microsoft Visual Studio\2022\Community\VC\vcpkg` + (`vcpkg version` reports 2025-11-19) - Android SDK: `C:\Users\omara\AppData\Local\Android\Sdk` - Android NDK: `C:\Users\omara\AppData\Local\Android\Sdk\ndk\29.0.14206865` - Android arm64 headless configure/build passes through root CMake and the @@ -86,7 +92,9 @@ Known local toolchain state: - `panopainter_validate_shaders` validates the current combined GLSL shader files for one vertex stage marker, one fragment stage marker, valid marker order, and existing relative includes. -- `vcpkg` is not on PATH yet; see DEBT-0007. +- `windows-msvc-vcpkg-headless` validates manifest install/configure/build/test + for the current headless component matrix; see DEBT-0007 for remaining app + and platform triplet migration. Known warnings after the current CMake app build: diff --git a/docs/modernization/debt.md b/docs/modernization/debt.md index a04a923..2f42b3c 100644 --- a/docs/modernization/debt.md +++ b/docs/modernization/debt.md @@ -25,7 +25,7 @@ agent or engineer to remove them without reconstructing context from chat. | DEBT-0003 | Open | Modernization | Existing singletons remain during initial split | Avoid behavior changes while introducing component boundaries | App launch and component tests | Replace singleton reaches with context/service injection at component boundaries | | DEBT-0004 | Open | Modernization | Android, Linux, WebGL, Apple, and AppX build files remain platform-specific until root CMake alignment reaches them | Prevent platform regressions during incremental migration; raw Windows `.sln/.vcxproj` files were removed on 2026-05-31 by user decision | `cmake --preset windows-msvc-default`; platform-specific configure/build smoke checks as each platform is migrated | Root CMake owns every platform source list and package path | | DEBT-0005 | Open | Modernization | Temporary local CTest harness is used before Catch2 is wired through vcpkg | `vcpkg` is not currently on PATH, but headless tests need to run now | `ctest --preset desktop-fast --build-config Debug` | Replace `tests/test_harness.h` tests with Catch2 tests once vcpkg toolchain/presets are validated | -| DEBT-0007 | Open | Modernization | `vcpkg.json` exists but CMake is not yet using a validated vcpkg toolchain on this machine | `vcpkg` is not available on PATH and Visual Studio reports manifest mode is disabled | `cmake --preset windows-msvc-default` currently configures with vendored dependencies | Add validated vcpkg toolchain/preset integration for desktop, Android, and Apple triplets | +| DEBT-0007 | Open | Modernization | `vcpkg.json` and `windows-msvc-vcpkg-headless` are validated for the headless Windows component matrix, but app targets still use vendored libraries and Android/Apple triplets are not proven | Dependency migration must stay incremental while SDK/patched/vendor dependencies remain in use | `$env:VCPKG_ROOT="C:\Program Files\Microsoft Visual Studio\2022\Community\VC\vcpkg"; cmake --preset windows-msvc-vcpkg-headless`; `ctest --preset desktop-fast-vcpkg --build-config Debug` | Component targets consume vcpkg packages where reliable and desktop app, Android, and Apple triplets are validated or explicitly documented as permanent vendor exceptions | | DEBT-0008 | Open | Modernization | `windows-msvc-default` preset is used for local validation because the VS 2026 generator is not installed here | The target VS 2026 preset must remain, but this machine configures with Visual Studio 17 2022 | `cmake --preset windows-msvc-default`; `ctest --preset desktop-fast --build-config Debug` | Validate `windows-vs2026-x64` on a machine with Visual Studio 2026 installed and make it the default Windows validation preset | | DEBT-0009 | Open | Modernization | Android root CMake validation currently builds headless targets only, not APK/package variants | Platform app entrypoints still live in legacy Gradle/CMake projects and need Phase 6 alignment | `powershell -ExecutionPolicy Bypass -File scripts\automation\platform-build.ps1 -Presets android-arm64` | Android standard, Quest, and Focus/Wave package targets consume shared component targets and have package smoke commands | | DEBT-0010 | Open | Modernization | `pp_document` is a pure layer/frame/document/undo-history model but is not yet wired to legacy `Canvas`, PPI load/save, selection masks, or legacy action commands | Keep extraction incremental while preserving app behavior | `ctest --preset desktop-fast --build-config Debug`; `pano_cli create-document --width 64 --height 32 --layers 2` | Legacy document behavior is represented by `pp_document` tests and the app consumes it through a boundary/facade | diff --git a/docs/modernization/roadmap.md b/docs/modernization/roadmap.md index 97ce155..5e42889 100644 --- a/docs/modernization/roadmap.md +++ b/docs/modernization/roadmap.md @@ -189,9 +189,10 @@ Gate: Goal: turn the build into an error-finding system before deep refactors. Status: in progress. Initial warning/sanitizer option targets, `vcpkg.json`, -and a headless `panopainter_validate_shaders` target exist. Dependency -migration is not complete until component targets consume vcpkg packages and -platform triplets are validated. +a validated Windows headless vcpkg preset, and a headless +`panopainter_validate_shaders` target exist. Dependency migration is not +complete until component targets consume vcpkg packages and mobile/Apple +triplets are validated. Implementation tasks: @@ -533,6 +534,10 @@ powershell -ExecutionPolicy Bypass -File scripts\automation\test.ps1 -Preset des powershell -ExecutionPolicy Bypass -File scripts\automation\build.ps1 -Preset windows-msvc-default -Configuration Debug -Target pano_cli cmake --build --preset windows-msvc-default --target panopainter_validate_shaders powershell -ExecutionPolicy Bypass -File scripts\automation\analyze.ps1 -Preset windows-msvc-default -NoApp +set VCPKG_ROOT=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\vcpkg +cmake --preset windows-msvc-vcpkg-headless +powershell -ExecutionPolicy Bypass -File scripts\automation\platform-build.ps1 -Presets windows-msvc-vcpkg-headless +ctest --preset desktop-fast-vcpkg --build-config Debug cmake --preset android-arm64 powershell -ExecutionPolicy Bypass -File scripts\automation\platform-build.ps1 -Presets android-arm64 powershell -ExecutionPolicy Bypass -File scripts\automation\package-smoke.ps1 -Preset windows-msvc-default -Configuration Debug @@ -566,6 +571,9 @@ Results: shader includes for stage markers and include graph integrity. - PowerShell analyze automation returns JSON summaries and includes the shader validation target. +- `windows-msvc-vcpkg-headless` configured through the Visual Studio bundled + vcpkg root, installed the manifest dependencies, built the headless component + matrix, and passed `desktop-fast-vcpkg`. - `PanoPainter.exe` built through CMake at `out/build/windows-msvc-default/Debug/PanoPainter.exe`. - PowerShell build/test automation wrappers return JSON summaries and passed diff --git a/vcpkg.json b/vcpkg.json index cb3b8d3..39ff33a 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -2,6 +2,7 @@ "name": "panopainter", "version-string": "0.0.0-modernization", "description": "PanoPainter modernization dependency manifest.", + "builtin-baseline": "f9ffbaa46ad8e284b2b74919f7e0ba259564d424", "dependencies": [ "catch2", "curl", @@ -13,4 +14,3 @@ "tinyxml2" ] } -