From 455c91bf295d95765b07be630802ffb54af43274 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Tue, 2 Jun 2026 21:53:17 +0200 Subject: [PATCH] Split retained legacy engine target --- CMakeLists.txt | 42 ++++++++++++++++++++++++--- cmake/PanoPainterSources.cmake | 25 +++++++++------- docs/modernization/build-inventory.md | 6 +++- docs/modernization/roadmap.md | 3 ++ 4 files changed, 60 insertions(+), 16 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 133a1c4..625b42a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -221,12 +221,48 @@ endif() if(PP_BUILD_APP) if(WIN32) - add_library(pp_legacy_app STATIC - ${PP_LEGACY_APP_SOURCES} + add_library(pp_legacy_engine STATIC + ${PP_LEGACY_ENGINE_SOURCES} ${PP_VENDOR_SOURCES}) + target_link_libraries(pp_legacy_engine + PUBLIC + pp_project_options + PRIVATE + pp_renderer_api + pp_project_warnings) + if(TARGET pp_renderer_gl) + target_link_libraries(pp_legacy_engine PRIVATE pp_renderer_gl) + endif() + + target_include_directories(pp_legacy_engine + PUBLIC + ${PP_LEGACY_INCLUDE_DIRS}) + + target_compile_definitions(pp_legacy_engine + PUBLIC + ENUM_BITFIELDS_NOT_SUPPORTED + UNICODE + _UNICODE + _CRT_SECURE_NO_WARNINGS + _SCL_SECURE_NO_WARNINGS + _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING + _SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING + _CONSOLE + WITH_CURL=1) + set_target_properties(pp_legacy_engine PROPERTIES + VS_GLOBAL_CharacterSet "Unicode") + + target_precompile_headers(pp_legacy_engine PRIVATE src/pch.h) + set_source_files_properties(${PP_VENDOR_SOURCES} + PROPERTIES SKIP_PRECOMPILE_HEADERS ON) + + add_library(pp_legacy_app STATIC + ${PP_LEGACY_APP_SOURCES}) + target_link_libraries(pp_legacy_app PUBLIC + pp_legacy_engine pp_project_options PRIVATE pp_renderer_api @@ -254,8 +290,6 @@ if(PP_BUILD_APP) VS_GLOBAL_CharacterSet "Unicode") target_precompile_headers(pp_legacy_app PRIVATE src/pch.h) - set_source_files_properties(${PP_VENDOR_SOURCES} - PROPERTIES SKIP_PRECOMPILE_HEADERS ON) add_library(pp_panopainter_ui STATIC ${PP_PANOPAINTER_UI_SOURCES}) diff --git a/cmake/PanoPainterSources.cmake b/cmake/PanoPainterSources.cmake index 8c9ef12..59d19f6 100644 --- a/cmake/PanoPainterSources.cmake +++ b/cmake/PanoPainterSources.cmake @@ -1,4 +1,4 @@ -set(PP_LEGACY_APP_SOURCES +set(PP_LEGACY_ENGINE_SOURCES src/abr.cpp src/action.cpp src/asset.cpp @@ -8,14 +8,25 @@ set(PP_LEGACY_APP_SOURCES src/canvas.cpp src/canvas_actions.cpp src/canvas_layer.cpp - src/canvas_modes.cpp src/event.cpp src/font.cpp src/hmd.cpp src/image.cpp - src/layout.cpp src/log.cpp src/mp4enc.cpp + src/rtt.cpp + src/serializer.cpp + src/settings.cpp + src/shader.cpp + src/shape.cpp + src/texture.cpp + src/util.cpp + src/wacom.cpp +) + +set(PP_LEGACY_APP_SOURCES + src/canvas_modes.cpp + src/layout.cpp src/node.cpp src/node_border.cpp src/node_button.cpp @@ -36,14 +47,6 @@ set(PP_LEGACY_APP_SOURCES src/node_text.cpp src/node_text_input.cpp src/pch.cpp - src/rtt.cpp - src/serializer.cpp - src/settings.cpp - src/shader.cpp - src/shape.cpp - src/texture.cpp - src/util.cpp - src/wacom.cpp ) set(PP_PANOPAINTER_APP_SOURCES diff --git a/docs/modernization/build-inventory.md b/docs/modernization/build-inventory.md index 69642f3..3be6b46 100644 --- a/docs/modernization/build-inventory.md +++ b/docs/modernization/build-inventory.md @@ -10,7 +10,7 @@ Keep it updated as platform paths move to shared CMake targets. | 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; `PanoPainter` now links through `pp_platform_windows` and `panopainter_app`, with Windows/vendor link dependencies owned by the platform shell, runtime payload deployment in `cmake/PanoPainterRuntime.cmake`, app orchestration/version metadata owned by `panopainter_app`, and app-specific modal/dialog/panel/canvas workflow nodes owned by `pp_panopainter_ui` | +| 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; `PanoPainter` now links through `pp_platform_windows` and `panopainter_app`, with Windows/vendor link dependencies owned by the platform shell, runtime payload deployment in `cmake/PanoPainterRuntime.cmake`, legacy rendering/canvas/asset/runtime sources contained by `pp_legacy_engine`, app orchestration/version metadata owned by `panopainter_app`, and app-specific modal/dialog/panel/canvas workflow nodes owned by `pp_panopainter_ui` | | 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 | @@ -398,6 +398,10 @@ Known local toolchain state: Known warnings after the current CMake app build: - Legacy code/vendor warnings under `/W4`. +- `pp_legacy_engine` intentionally contains retained vendor and legacy + runtime sources for now, so it concentrates existing JPEG, SQLite, Yoga, + poly2tri, Wacom, GLM/base64, and legacy canvas/render warnings until those + dependencies move to cleaner component or vcpkg ownership. - `pp_panopainter_ui` currently surfaces existing legacy `Node`/`Serializer` header and static-analysis warnings while it still depends on `pp_legacy_app`; these should be reduced as the UI core/app UI boundary is diff --git a/docs/modernization/roadmap.md b/docs/modernization/roadmap.md index 62a9860..379d54b 100644 --- a/docs/modernization/roadmap.md +++ b/docs/modernization/roadmap.md @@ -147,6 +147,9 @@ option targets exist. The Windows desktop app builds through CMake as `PanoPainter` is only the executable/resource wrapper; Windows and vendor link dependencies now belong to the platform shell target, and Windows runtime payload deployment lives behind `cmake/PanoPainterRuntime.cmake`. +`pp_legacy_engine` now contains the retained legacy rendering, canvas, +asset/file, brush, tablet, video, serialization, and low-level runtime sources +as an interim containment boundary while pure replacement components take over. `panopainter_app` is now a real static target that owns app orchestration sources, app version metadata, and version-header generation. `pp_panopainter_ui` now owns app-specific modal, dialog, panel, canvas,