# Build And Platform Inventory Status: live Last updated: 2026-05-31 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. ```powershell 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 --preset android-arm64 powershell -ExecutionPolicy Bypass -File scripts\automation\platform-build.ps1 -Presets android-arm64 ``` Known local toolchain state: - CMake: 4.0.0-rc4 - Local Visual Studio generator selected by CMake: Visual Studio 17 2022 - 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 `platform-build` automation wrapper for `pp_foundation`, `pp_assets`, `pano_cli`, and their current headless test binaries. - `vcpkg` is not on PATH yet; see DEBT-0007. 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. - `LNK4099` missing `yuv.pdb` for retained libyuv binaries. - `LNK4098` runtime library conflict from retained vendor binaries. Platform-specific commands should be added here when verified locally.