Use vcpkg tinyxml2 in headless preset
This commit is contained in:
@@ -46,14 +46,23 @@ target_compile_features(pp_project_options INTERFACE cxx_std_23)
|
|||||||
add_library(pp_project_warnings INTERFACE)
|
add_library(pp_project_warnings INTERFACE)
|
||||||
pp_configure_project_warnings(pp_project_warnings)
|
pp_configure_project_warnings(pp_project_warnings)
|
||||||
|
|
||||||
add_library(pp_vendor_tinyxml2 STATIC
|
if(PP_USE_VCPKG_TINYXML2)
|
||||||
|
find_package(tinyxml2 CONFIG REQUIRED)
|
||||||
|
add_library(pp_xml_tinyxml2 INTERFACE)
|
||||||
|
target_link_libraries(pp_xml_tinyxml2
|
||||||
|
INTERFACE
|
||||||
|
tinyxml2::tinyxml2)
|
||||||
|
else()
|
||||||
|
add_library(pp_vendor_tinyxml2 STATIC
|
||||||
libs/tinyxml2/tinyxml2.cpp)
|
libs/tinyxml2/tinyxml2.cpp)
|
||||||
target_include_directories(pp_vendor_tinyxml2
|
target_include_directories(pp_vendor_tinyxml2
|
||||||
SYSTEM PUBLIC
|
SYSTEM PUBLIC
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/libs/tinyxml2")
|
"${CMAKE_CURRENT_SOURCE_DIR}/libs/tinyxml2")
|
||||||
target_link_libraries(pp_vendor_tinyxml2
|
target_link_libraries(pp_vendor_tinyxml2
|
||||||
PUBLIC
|
PUBLIC
|
||||||
pp_project_options)
|
pp_project_options)
|
||||||
|
add_library(pp_xml_tinyxml2 ALIAS pp_vendor_tinyxml2)
|
||||||
|
endif()
|
||||||
|
|
||||||
add_custom_target(panopainter_modernization_status
|
add_custom_target(panopainter_modernization_status
|
||||||
COMMAND "${CMAKE_COMMAND}" -E echo "PanoPainter modernization scaffold configured."
|
COMMAND "${CMAKE_COMMAND}" -E echo "PanoPainter modernization scaffold configured."
|
||||||
@@ -162,7 +171,7 @@ target_link_libraries(pp_ui_core
|
|||||||
pp_foundation
|
pp_foundation
|
||||||
pp_project_options
|
pp_project_options
|
||||||
PRIVATE
|
PRIVATE
|
||||||
pp_vendor_tinyxml2
|
pp_xml_tinyxml2
|
||||||
pp_project_warnings)
|
pp_project_warnings)
|
||||||
|
|
||||||
if(PP_BUILD_TOOLS)
|
if(PP_BUILD_TOOLS)
|
||||||
|
|||||||
@@ -50,7 +50,10 @@
|
|||||||
"inherits": "platform-headless-base",
|
"inherits": "platform-headless-base",
|
||||||
"displayName": "Windows MSVC vcpkg headless",
|
"displayName": "Windows MSVC vcpkg headless",
|
||||||
"architecture": "x64",
|
"architecture": "x64",
|
||||||
"toolchainFile": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
|
"toolchainFile": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
|
||||||
|
"cacheVariables": {
|
||||||
|
"PP_USE_VCPKG_TINYXML2": "ON"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "windows-clangcl-asan",
|
"name": "windows-clangcl-asan",
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ option(PP_ENABLE_TSAN "Enable ThreadSanitizer for headless targets where support
|
|||||||
option(PP_ENABLE_MSVC_ANALYZE "Enable MSVC static analysis." OFF)
|
option(PP_ENABLE_MSVC_ANALYZE "Enable MSVC static analysis." OFF)
|
||||||
option(PP_ENABLE_CLANG_TIDY "Enable clang-tidy integration." OFF)
|
option(PP_ENABLE_CLANG_TIDY "Enable clang-tidy integration." OFF)
|
||||||
option(PP_ENABLE_CPPCHECK "Enable cppcheck integration." OFF)
|
option(PP_ENABLE_CPPCHECK "Enable cppcheck integration." OFF)
|
||||||
|
option(PP_USE_VCPKG_TINYXML2 "Use the vcpkg tinyxml2 package for component targets." OFF)
|
||||||
|
|
||||||
set(PP_ANDROID_FLAVOR "standard" CACHE STRING "Android package flavor: standard, quest, or focus.")
|
set(PP_ANDROID_FLAVOR "standard" CACHE STRING "Android package flavor: standard, quest, or focus.")
|
||||||
set_property(CACHE PP_ANDROID_FLAVOR PROPERTY STRINGS standard quest focus)
|
set_property(CACHE PP_ANDROID_FLAVOR PROPERTY STRINGS standard quest focus)
|
||||||
|
|||||||
@@ -95,6 +95,9 @@ Known local toolchain state:
|
|||||||
- `windows-msvc-vcpkg-headless` validates manifest install/configure/build/test
|
- `windows-msvc-vcpkg-headless` validates manifest install/configure/build/test
|
||||||
for the current headless component matrix; see DEBT-0007 for remaining app
|
for the current headless component matrix; see DEBT-0007 for remaining app
|
||||||
and platform triplet migration.
|
and platform triplet migration.
|
||||||
|
- `pp_ui_core` consumes vcpkg tinyxml2 only when `PP_USE_VCPKG_TINYXML2=ON`
|
||||||
|
through 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:
|
Known warnings after the current CMake app build:
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ agent or engineer to remove them without reconstructing context from chat.
|
|||||||
| 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-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 |
|
| 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 |
|
||||||
| DEBT-0011 | Open | Modernization | `package-smoke` validates the Windows CMake app artifact only, not AppX/APK/Apple/WebGL package outputs | Platform package targets are not migrated to root CMake yet | `powershell -ExecutionPolicy Bypass -File scripts\automation\package-smoke.ps1 -Preset windows-msvc-default -Configuration Debug` | Package-smoke covers Windows AppX, Android APK variants, Apple bundles, and WebGL output where local toolchains are present |
|
| DEBT-0011 | Open | Modernization | `package-smoke` validates the Windows CMake app artifact only, not AppX/APK/Apple/WebGL package outputs | Platform package targets are not migrated to root CMake yet | `powershell -ExecutionPolicy Bypass -File scripts\automation\package-smoke.ps1 -Preset windows-msvc-default -Configuration Debug` | Package-smoke covers Windows AppX, Android APK variants, Apple bundles, and WebGL output where local toolchains are present |
|
||||||
| DEBT-0012 | Open | Modernization | `pp_vendor_tinyxml2` compiles the retained vendored tinyxml2 copy for `pp_ui_core` layout parsing | vcpkg is not validated yet, but layout parsing needs a structured XML parser now | `ctest --preset desktop-fast --build-config Debug`; `powershell -ExecutionPolicy Bypass -File scripts\automation\platform-build.ps1 -Presets android-arm64` | Replace with vcpkg tinyxml2 target once desktop and mobile triplets are validated |
|
| DEBT-0012 | Open | Modernization | `pp_ui_core` uses vcpkg tinyxml2 on `windows-msvc-vcpkg-headless`, but retains `pp_vendor_tinyxml2` for default and unproven platform presets | Mobile/AppX/Apple triplets and app packaging still need validation before removing the vendored fallback | `ctest --preset desktop-fast-vcpkg --build-config Debug`; `ctest --preset desktop-fast --build-config Debug`; `powershell -ExecutionPolicy Bypass -File scripts\automation\platform-build.ps1 -Presets android-arm64` | All supported presets consume vcpkg tinyxml2 or document a permanent vendored exception |
|
||||||
| DEBT-0013 | Open | Modernization | `pp_assets` and `pano_cli inspect-project` recognize only the fixed PPI header, not thumbnail bytes or the project body | Full PPI parsing requires staged extraction of legacy `Canvas` serialization and image/layer payload handling | `ctest --preset desktop-fast --build-config Debug`; `pp_assets_ppi_header_tests` | Full PPI load/save fixtures cover thumbnail, layers, frames, metadata, corrupt payloads, and round-trip compatibility |
|
| DEBT-0013 | Open | Modernization | `pp_assets` and `pano_cli inspect-project` recognize only the fixed PPI header, not thumbnail bytes or the project body | Full PPI parsing requires staged extraction of legacy `Canvas` serialization and image/layer payload handling | `ctest --preset desktop-fast --build-config Debug`; `pp_assets_ppi_header_tests` | Full PPI load/save fixtures cover thumbnail, layers, frames, metadata, corrupt payloads, and round-trip compatibility |
|
||||||
|
|
||||||
## Closed Debt
|
## Closed Debt
|
||||||
|
|||||||
@@ -189,10 +189,10 @@ Gate:
|
|||||||
Goal: turn the build into an error-finding system before deep refactors.
|
Goal: turn the build into an error-finding system before deep refactors.
|
||||||
|
|
||||||
Status: in progress. Initial warning/sanitizer option targets, `vcpkg.json`,
|
Status: in progress. Initial warning/sanitizer option targets, `vcpkg.json`,
|
||||||
a validated Windows headless vcpkg preset, and a headless
|
a validated Windows headless vcpkg preset, `pp_ui_core` support for vcpkg
|
||||||
`panopainter_validate_shaders` target exist. Dependency migration is not
|
tinyxml2 on that preset, and a headless `panopainter_validate_shaders` target
|
||||||
complete until component targets consume vcpkg packages and mobile/Apple
|
exist. Dependency migration is not complete until remaining component
|
||||||
triplets are validated.
|
dependencies and mobile/Apple triplets are validated.
|
||||||
|
|
||||||
Implementation tasks:
|
Implementation tasks:
|
||||||
|
|
||||||
@@ -574,6 +574,9 @@ Results:
|
|||||||
- `windows-msvc-vcpkg-headless` configured through the Visual Studio bundled
|
- `windows-msvc-vcpkg-headless` configured through the Visual Studio bundled
|
||||||
vcpkg root, installed the manifest dependencies, built the headless component
|
vcpkg root, installed the manifest dependencies, built the headless component
|
||||||
matrix, and passed `desktop-fast-vcpkg`.
|
matrix, and passed `desktop-fast-vcpkg`.
|
||||||
|
- `pp_ui_core` built and tested against vcpkg tinyxml2 on
|
||||||
|
`windows-msvc-vcpkg-headless` and against the vendored fallback on
|
||||||
|
`windows-msvc-default` and `android-arm64`.
|
||||||
- `PanoPainter.exe` built through CMake at
|
- `PanoPainter.exe` built through CMake at
|
||||||
`out/build/windows-msvc-default/Debug/PanoPainter.exe`.
|
`out/build/windows-msvc-default/Debug/PanoPainter.exe`.
|
||||||
- PowerShell build/test automation wrappers return JSON summaries and passed
|
- PowerShell build/test automation wrappers return JSON summaries and passed
|
||||||
|
|||||||
Reference in New Issue
Block a user