6.4 KiB
6.4 KiB
Build And Platform Inventory
Status: live Last updated: 2026-06-01
This inventory records the known build surfaces during the CMake migration. Keep it updated as platform paths move to shared CMake targets.
Existing Build Entrypoints
| Platform/Target | Current Entrypoint | Notes |
|---|---|---|
| Windows desktop | Root CMakeLists.txt, preset windows-msvc-default; target preset windows-vs2026-x64 retained for VS 2026 |
Raw .sln/.vcxproj files removed on 2026-05-31; local machine currently uses Visual Studio 17 2022 |
| Windows AppX | PanoPainterPackage/Package.appxmanifest, .wapproj referenced by solution |
Distribution packaging |
| macOS | PanoPainter-OSX/ project files and Info.plist |
Uses NSOpenGLView today |
| iOS | PanoPainter/Info.plist, related Apple sources |
Uses OpenGL ES today |
| Android standard | android/android/build.gradle, android/android/CMakeLists.txt |
Native library target native-lib |
| Android Quest | android/quest/build.gradle, android/quest/CMakeLists.txt |
OVR SDK imported libraries |
| Android Focus/Wave | android/focus/build.gradle, android/focus/CMakeLists.txt |
Wave SDK imported libraries |
| Linux | linux/CMakeLists.txt |
Old CMake 3.4, C++14 flag |
| WebGL/Emscripten | webgl/CMakeLists.txt |
Old CMake 3.4, WebGL2 flags |
Existing Version Generation
- Script:
scripts/pre-build.py - Output:
src/version.gen.h - Current behavior: derives version from git branch, latest tag, short hash, commit count, and configuration argument.
- Migration requirement: root CMake should call this script through a custom command and avoid unnecessary tracked-file churn where possible.
Existing Dependency Sources
Hybrid policy: migrate reliable packages to vcpkg and retain SDK/patched dependencies until each platform triplet is proven.
| Dependency | Current Source | Initial Policy |
|---|---|---|
| fmt | libs/fmt |
Move to vcpkg |
| GLM | libs/glm |
Move to vcpkg |
| tinyxml2 | libs/tinyxml2 |
Move to vcpkg |
| stb | libs/stb |
Move to vcpkg or interface target if package friction |
| CURL | libs/curl-win, libs/curl-android-ios |
Move to vcpkg where triplets work |
| SQLite | libs/sqlite3 |
Move to vcpkg |
| GLAD | libs/glad |
Move to vcpkg or generated backend target |
| Catch2 | none yet | Add through vcpkg |
| OpenVR | libs/openvr |
Retain initially |
| OVR Platform/Mobile | libs/ovr_platform, libs/ovr_mobile |
Retain initially |
| Wave SDK | libs/wave_sdk |
Retain initially |
| Wacom WinTab | libs/wacom |
Retain initially |
| AppCenter Apple | libs/appcenter-apple |
Retain initially |
| openh264/mp4v2/libyuv | libs/openh264, libs/mp4v2, libs/libyuv |
Retain initially |
| jpeg helpers | libs/jpeg |
Evaluate after image tests exist |
| poly2tri/nanort/base64/hash-library | libs/* |
Evaluate after component split |
Current Validation Commands
These commands are the current local baseline.
cmake --preset windows-msvc-default
cmake --build --preset windows-msvc-default --config Debug --target PanoPainter
ctest --preset desktop-fast --build-config Debug
powershell -ExecutionPolicy Bypass -File scripts\automation\test.ps1 -Preset desktop-fast -Configuration Debug
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
cmake --fresh --preset windows-clangcl-asan
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 versionreports 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 - clang-cl:
C:\Program Files\LLVM\bin\clang-cl.exereports 18.1.8, but the selected VS 2026-preview STL expects Clang 20 or newer; see DEBT-0014 before treatingwindows-clangcl-asanas a passing sanitizer gate. - Android arm64 headless configure/build passes through root CMake and the
platform-buildautomation wrapper forpp_foundation,pp_assets,pp_paint,pp_document,pp_renderer_api,pp_paint_renderer,pp_ui_core,pano_cli, and their current headless test binaries, including foundation event/logging/task queue coverage, PNG metadata, PPI header, settings document, document frame move/duration coverage, paint brush/stroke coverage, renderer shader descriptor coverage, UI color parsing, and layout XML parse coverage. pano_cli inspect-imagereports PNG IHDR metadata as JSON and is covered bypano_cli_inspect_png_metadata_smokewith a tiny IHDR fixture.pano_cli create-documentsupports--framesand--frame-duration-msand is covered bypano_cli_create_animation_document_smoke.panopainter_validate_shadersvalidates the current combined GLSL shader files for one vertex stage marker, one fragment stage marker, valid marker order, and existing relative includes.windows-msvc-vcpkg-headlessvalidates manifest install/configure/build/test for the current headless component matrix; see DEBT-0007 for remaining app and platform triplet migration.pp_ui_coreconsumes vcpkg tinyxml2 only whenPP_USE_VCPKG_TINYXML2=ONthrough the vcpkg preset; default and Android validation still use the retained vendored fallback tracked by DEBT-0012.
Known warnings after the current CMake app build:
- Legacy code/vendor warnings under
/W4. - Visual Studio vcpkg manifest warning because manifest mode is not enabled.
LNK4099missingyuv.pdbfor retained libyuv binaries.LNK4098runtime library conflict from retained vendor binaries.
Platform-specific commands should be added here when verified locally.