9.0 KiB
9.0 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_renderer_gl,pp_paint_renderer,pp_ui_core,pano_cli, and their current headless test binaries, including foundation event/logging/task queue coverage, PNG metadata and decode, PPI header/layout, settings document, document snapshot/per-layer-frame/move/duration/face-pixel coverage, paint brush/stroke/stroke-script coverage, renderer shader descriptor and OpenGL capability 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 inspect-projectreports validated PPI thumbnail/body byte layout, body summary fields, layer/frame descriptors, and dirty-face PNG payload metadata, and is covered bypano_cli_inspect_project_layout_smokewith a minimal PPI fixture.pp_assets_image_pixels_testsdecodes PNG payloads to RGBA8 and rejects corrupt image payloads.pp_document_ppi_import_testsattaches decoded PPI dirty-face payloads topp_documentlayer/frame storage and rejects payloads outside document layers.pano_cli load-projectcreates app_documentprojection with per-layer frame counts, durations, and decoded face-pixel payloads when present; the metadata-only minimal fixture remains covered bypano_cli_load_project_metadata_smoke.pano_cli create-documentsupports--framesand--frame-duration-msand is covered bypano_cli_create_animation_document_smoke.pano_cli simulate-strokeexposes the pure stroke sampler for scripted automation and is covered bypano_cli_simulate_stroke_smoke.pano_cli simulate-stroke-scriptloads a text stroke script fixture and is covered bypano_cli_simulate_stroke_script_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.pp_renderer_apiowns the canonical PanoPainter shader catalog consumed by the legacy OpenGL app initialization path;pp_renderer_api_testsvalidates catalog size, key entries, duplicate rejection, and bad path rejection.pp_renderer_glowns headless OpenGL runtime capability detection consumed by the legacy app initialization path;pp_renderer_gl_capabilities_testsvalidates framebuffer fetch, map-buffer alignment, desktop GL float support, GLES float/half-float extensions, WebGL exclusion behavior, and the upload-type mapping used by legacyTexture2DandRTTcreation. It also validates image channel-count to OpenGL texture format mapping, including invalid channel counts rejected byTexture2D::create(Image), and framebuffer status naming used byRTTdiagnostics. It also owns and validates the default linear clamp-to-edge render-target texture parameters used byRTT::create. It also validates Shape index-type and fill/stroke primitive-mode mapping used by the legacy mesh draw path, plus the PanoPainter cube-face to OpenGL texture-target mapping used byTextureCube. It also owns and validates sampler wrap S/T/R plus min/mag filter parameter ordering used by legacySampler. The PanoPainter shader attribute binding catalog used by legacyShadercreation also lives here. It also owns the PanoPainter shader uniform catalog and legacy hash mapping used byShaderactive-uniform discovery and the uniform uniqueness check.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.