Refresh retained Android package CMake

This commit is contained in:
2026-06-05 12:17:04 +02:00
parent e17463bf5a
commit ac4fef8346
13 changed files with 264 additions and 32 deletions

View File

@@ -14,9 +14,9 @@ Keep it updated as platform paths move to shared CMake targets.
| 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 |
| Android standard | `android/android/build.gradle`, `android/android/CMakeLists.txt` | Retained native library target `native-lib`; CMake 3.10/C++23 baseline now links the standard arm64 package path with modern component/service sources and the generated `nanort` overlay helper |
| Android Quest | `android/quest/build.gradle`, `android/quest/CMakeLists.txt` | OVR SDK imported libraries; CMake 3.10/C++23 baseline and current Yoga source list configure with the shared Android package compatibility helper |
| Android Focus/Wave | `android/focus/build.gradle`, `android/focus/CMakeLists.txt` | Wave SDK imported libraries; CMake 3.10/C++23 baseline and current Yoga source list configure with the shared Android package compatibility helper |
| Linux | `linux/CMakeLists.txt` | Old CMake 3.4, C++14 flag |
| WebGL/Emscripten | `webgl/CMakeLists.txt` | Old CMake 3.4, WebGL2 flags |
@@ -73,6 +73,10 @@ powershell -ExecutionPolicy Bypass -File scripts\automation\platform-build.ps1 -
ctest --preset desktop-fast-vcpkg --build-config Debug
cmake --preset android-arm64
powershell -ExecutionPolicy Bypass -File scripts\automation\platform-build.ps1 -Presets android-arm64
cmake -S android/android -B out/build/android-legacy-standard-arm64 -G Ninja -DCMAKE_TOOLCHAIN_FILE="$env:ANDROID_NDK_HOME\build\cmake\android.toolchain.cmake" -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-23
cmake --build out/build/android-legacy-standard-arm64 --target native-lib
cmake -S android/quest -B out/build/android-legacy-quest-arm64 -G Ninja -DCMAKE_TOOLCHAIN_FILE="$env:ANDROID_NDK_HOME\build\cmake\android.toolchain.cmake" -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-23
cmake -S android/focus -B out/build/android-legacy-focus-arm64 -G Ninja -DCMAKE_TOOLCHAIN_FILE="$env:ANDROID_NDK_HOME\build\cmake\android.toolchain.cmake" -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-23
powershell -ExecutionPolicy Bypass -File scripts\automation\package-smoke.ps1 -Preset windows-msvc-default -Configuration Debug
powershell -ExecutionPolicy Bypass -File scripts\automation\package-smoke.ps1 -ReadinessOnly
cmake --fresh --preset windows-clangcl-asan
@@ -1032,10 +1036,10 @@ Known warnings after the current CMake app build:
handles instead of public mutable Android asset-manager state or SDK forward
declarations; concrete Android asset-manager headers remain in `asset.cpp`
and the retained Android entrypoint while DEBT-0056 tracks replacing the
static Android asset bridge with injected asset storage. A focused legacy
Android object build validates `src/asset.cpp`; the full old Android
`native-lib` target still fails later on unrelated C++ standard/header
modernization issues.
static Android asset bridge with injected asset storage. The retained Android
standard package now links `native-lib` for arm64 through the refreshed C++23
package CMake path; DEBT-0060 tracks the generated `nanort` overlay that keeps
that package gate clean without modifying the vendor submodule.
- `pp_legacy_paint_document` is an object-library containment boundary for
retained action, bezier, brush, canvas, canvas-layer, and event code. It
should shrink as app painting and document behavior consume `pp_paint` and

File diff suppressed because one or more lines are too long

View File

@@ -1410,6 +1410,14 @@ layout XML file mtime reload policy, recording cleanup policy, default canvas
resolution, and canvas tip visibility. Platform SDK calls and filesystem probes
remain in the platform shells or thin runtime wrappers while those decisions are
headless-testable.
The retained Android standard/Quest/Focus package CMake files now use CMake
3.10, request C++23 through target compile features, include the extracted
modern component/service source set that the legacy package still links
monolithically, and share a generated `nanort` compatibility overlay from
`android/cmake/PanoPainterAndroidLegacyCompat.cmake` instead of dirtying the
vendor submodule. The standard package `native-lib` arm64 target now compiles
and links with the current NDK; Quest and Focus configure with the aligned Yoga
source list and their SDK imported-library paths.
Implementation tasks:
@@ -2359,7 +2367,10 @@ Results:
through the platform-build wrapper by default. Focused validation compiled
representative headless component/tool targets across all four presets, and
the full refreshed component/test matrix remains the default gate for local
platform sweeps.
platform sweeps. The retained Android standard package CMake path also now
configures/builds `native-lib` directly for arm64 using C++23 and the shared
modern component source set, while Quest and Focus package CMake paths
configure with the same compatibility helper and current Yoga source list.
- Desktop VR drawing now routes generic OpenGL scissor/depth/blend state,
blend/depth state snapshots and restores, depth clears, active texture units,
and fallback 2D texture unbinds through tested renderer GL backend dispatch;