Skip to content

Add Visual Studio 2026 v143 Windows build route - #593

Draft
Dozi3 wants to merge 5 commits into
CrealityOfficial:masterfrom
Dozi3:pr1/windows-vs2026-v143-build-route
Draft

Add Visual Studio 2026 v143 Windows build route#593
Dozi3 wants to merge 5 commits into
CrealityOfficial:masterfrom
Dozi3:pr1/windows-vs2026-v143-build-route

Conversation

@Dozi3

@Dozi3 Dozi3 commented Aug 7, 2026

Copy link
Copy Markdown

Description

Summary

Add an explicit Windows x64 Release build route for Visual Studio 2026 while
retaining the v143 compatibility toolset. The route includes matching
application and dependency presets, propagates the selected generator
instance/platform/toolset into nested dependency builds, adds a guarded clean
build wrapper, and documents the exact toolchain and limitations.

This is additive. Existing VS2019, VS2022, Ninja, ARM64, and CI routes remain
present and are not redirected to the new preset.

Problem and root cause

The existing Windows dependency logic derives a child Visual Studio generator
from the compiler version. That coupling cannot represent selecting v143 from a
Visual Studio 2026 installation, and custom dependency steps such as OpenSSL
also depend on the active developer-shell toolchain and executable paths.

The public tree also contains a stale tracked src/libslic3r/buildinfo.h even
though the configured build generates the authoritative build-information
header in the binary tree. The tracked copy embeds obsolete data and a local
source path.

What changed

  • Add windows-vs2026-v143-x64-release configure/build presets for the
    application and dependencies.
  • Propagate the actual parent CMake generator, generator instance, platform,
    and toolset to nested CMake dependency projects.
  • Select the requested MSVC v143 tools, Windows SDK, native Strawberry Perl,
    and repository gettext tools explicitly for the new route.
  • Bound application and nested dependency parallelism to the requested job
    count.
  • Pin wxWidgets to an immutable superproject commit and its required gitlinks;
    enable long paths only for that generated clone.
  • Add scripts/build_windows_vs2026.ps1, including generated-output markers,
    containment/reparse-point checks, toolchain validation, and a self-test mode.
  • Consume the generated build-information header and remove the stale tracked
    header.
  • Add the Windows VS2026 build guide and link it from the README.
  • Keep the historical missing-offline-WebView2 behavior on existing routes.
    The new public-source preset explicitly opts out of requiring the untracked
    offline payload, retains the online bootstrap, and emits a warning about the
    missing offline recovery path.

Commit and review map

The branch is intentionally split into four reviewable commits:

  1. 38dade136437 — consume generated build information and remove the stale
    tracked header.
  2. 649a36bb4b75 — make Windows dependencies accept explicit parent
    toolchains and authoritative Perl/gettext paths.
  3. ffedc602777b — add the normal VS2026/v143 presets, wrapper, and
    documentation.
  4. a618da97f215 — preserve legacy behavior by limiting CL_MPCount to Visual
    Studio generators, avoiding recursive wx submodule initialization, and
    retaining the existing WebView2 install-time contract outside the new
    preset.

Compatibility and dependencies

The new route expects:

  • Visual Studio 2026 with Desktop development with C++;
  • MSVC v143 14.44.35207 x64 tools;
  • Windows SDK 10.0.26100.0;
  • the CMake bundled with the selected Visual Studio instance;
  • Git;
  • native Windows Strawberry Perl; and
  • the repository gettext tools.

The wxWidgets pin and dependency-generator propagation are shared build code,
so the repository's hosted legacy/cross-platform checks are important even
though the new preset itself is Windows-only.

Non-goals

  • Reproducible compiler/linker controls or SOURCE_DATE_EPOCH handling.
  • A two-run reproducibility verifier.
  • Visual Studio's v145 toolset.
  • Debug or ARM64 support for the new preset.
  • CI workflow changes.
  • Packaging, signing, installer execution, or GUI/runtime validation.
  • Proving offline WebView2 recovery without the offline installer payload.

Risks and rollback

The main shared risk is the wxWidgets source pin/submodule declaration and the
generator propagation used by dependency children. The branch deliberately
retains the existing named presets and legacy scripts so the hosted build can
exercise those paths. Rollback is a normal revert of this PR; no existing
preset name or workflow is redirected.

Follow-up series

This is the first and smallest slice of a planned series:

  1. Normal VS2026/v143 Release route — this PR.
  2. Opt-in deterministic controls — not submitted.
  3. Guarded two-run proof and reproducibility documentation — not submitted.

Later slices will be rebased onto the actual merged result and revalidated;
they are not required to review or use this normal build route.

Screenshots/Recordings/Graphs

Not applicable — build-system and documentation changes only.

Tests

Fresh checks on the exact submitted head

Source: clean native Windows checkout at
a618da97f21558be3f698efea2a1f334d90c3b3e, based directly on upstream
24b9395c131a9849724c5bf098cba140a207e877.

Tooling used for the preset checks: Visual Studio Community 2026 18.8,
VS-bundled CMake 4.3.1-msvc1, PowerShell 7.6.3, and native Strawberry Perl.

Check Result
PowerShell AST parse of scripts/build_windows_vs2026.ps1 Pass; zero parser errors
pwsh -NoProfile -File scripts/build_windows_vs2026.ps1 -SelfTest Pass
Parse root and dependency CMakePresets.json Pass; schema version 3
VS2026 CMake --list-presets for the root Pass; existing presets retained and windows-vs2026-v143-x64-release listed
VS2026 CMake --list-presets for deps/ Pass; matching dependency preset listed
git diff --check 24b9395c131a9849724c5bf098cba140a207e877 a618da97f21558be3f698efea2a1f334d90c3b3e Pass
Redacted added-line credential/private-path scan Pass; zero matches in 1,850 added lines

Build evidence boundary

A clean full VS2026/v143 Release build previously completed on the same Windows
machine from a later combined development snapshot containing this normal route
plus unsubmitted reproducibility work: 28 dependency targets and the
application/install completed successfully, producing 8,499 installed files.
That run is supporting integration evidence only; it is not represented as
an exact-head build pass for this four-commit PR.

An exact-head -Target All -Fresh product build, installer/runtime testing,
signing, Debug/ARM64/v145 coverage, and another-host build have not been run for
this submitted head. This PR is therefore opened as a draft so hosted checks
and maintainer feedback can run before it is marked ready for review.

Expected hosted checks

This diff touches deps/**, src/**, and CMake project files, so the current
upstream Build all pull-request path filter should select it. That workflow
uses the repository's existing Windows/legacy build route, providing an
important regression check independent of the new local wrapper. No workflow
or repository setting is changed by this PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant