diff --git a/CMakeLists.txt b/CMakeLists.txt index 78041eb..3f0e6d6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -221,6 +221,30 @@ endif() if(PP_BUILD_APP) if(WIN32) + add_library(pp_legacy_vendor OBJECT + ${PP_VENDOR_SOURCES}) + target_link_libraries(pp_legacy_vendor + PUBLIC + pp_project_options + PRIVATE + pp_project_warnings) + target_include_directories(pp_legacy_vendor + PUBLIC + ${PP_LEGACY_INCLUDE_DIRS}) + target_compile_definitions(pp_legacy_vendor + 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_vendor PROPERTIES + VS_GLOBAL_CharacterSet "Unicode") + add_library(pp_legacy_renderer_gl OBJECT ${PP_LEGACY_RENDERER_GL_SOURCES}) target_link_libraries(pp_legacy_renderer_gl @@ -253,7 +277,7 @@ if(PP_BUILD_APP) add_library(pp_legacy_engine STATIC ${PP_LEGACY_ENGINE_SOURCES} $ - ${PP_VENDOR_SOURCES}) + $) target_link_libraries(pp_legacy_engine PUBLIC @@ -284,9 +308,6 @@ if(PP_BUILD_APP) 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}) diff --git a/docs/modernization/build-inventory.md b/docs/modernization/build-inventory.md index 9f829c9..ae1d07d 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`, retained OpenGL runtime sources contained by `pp_legacy_renderer_gl` and folded into `pp_legacy_engine`, legacy 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 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`, retained third-party source dependencies contained by `pp_legacy_vendor`, retained OpenGL runtime sources contained by `pp_legacy_renderer_gl` and folded into `pp_legacy_engine`, legacy 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,10 +398,14 @@ 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_legacy_vendor` intentionally owns retained third-party source builds for + now, including JPEG, SQLite, Yoga, poly2tri, GLAD, fmt, Wacom utilities, and + other patched/embedded sources. Each dependency should either move to vcpkg, + an SDK import target, or a documented permanent vendored target. +- `pp_legacy_engine` intentionally contains retained legacy runtime sources for + now, so it concentrates existing legacy canvas, asset, brush, tablet, video, + serialization, and low-level runtime warnings until those paths move to + cleaner component ownership. - `pp_legacy_renderer_gl` is an object-library containment boundary because the retained OpenGL runtime classes still include legacy app/engine headers and are still consumed directly by canvas and UI classes. It should become a diff --git a/docs/modernization/roadmap.md b/docs/modernization/roadmap.md index 659aff7..9182f7b 100644 --- a/docs/modernization/roadmap.md +++ b/docs/modernization/roadmap.md @@ -147,9 +147,12 @@ 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 canvas, asset/file, brush, -tablet, video, serialization, and low-level runtime sources as an interim -containment boundary while pure replacement components take over. +`pp_legacy_vendor` now owns the retained third-party source bundle as an +interim containment boundary until vcpkg, SDK imports, or documented permanent +vendoring decisions replace each dependency. `pp_legacy_engine` now contains +the retained legacy canvas, asset/file, brush, tablet, video, serialization, +and low-level runtime sources as an interim containment boundary while pure +replacement components take over. `pp_legacy_renderer_gl` now owns the retained OpenGL runtime implementations for `Font`, `RTT`, `Shader`, `Shape`, `Texture2D`, `TextureCube`, `Sampler`, and `TextureManager` as an object-library boundary folded into the retained