Skip to content

Add support for Visual Studio 2026#242

Open
hwangsihu wants to merge 1 commit intoDOCGroup:masterfrom
hwangsihu:master
Open

Add support for Visual Studio 2026#242
hwangsihu wants to merge 1 commit intoDOCGroup:masterfrom
hwangsihu:master

Conversation

@hwangsihu
Copy link

@hwangsihu hwangsihu commented Feb 27, 2026

Summary by CodeRabbit

  • New Features

    • Adds Visual Studio 2026 (vs2026) support across project types, platforms (x64, x86/Win32, ARM, ARM64), and templates for executables, libraries and DLLs.
    • CI workflows updated to include automated Windows builds for Visual Studio 2026 configurations.
  • Documentation

    • Usage and reference docs updated to list vs2026 and its numeric/toolchain mapping.

@coderabbitai
Copy link

coderabbitai bot commented Feb 27, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b64828c2-b955-4bd8-ba96-bd31a6054917

📥 Commits

Reviewing files that changed from the base of the PR and between 05a5b40 and c1f8752.

📒 Files selected for processing (13)
  • .github/workflows/cmake.yml
  • .github/workflows/windows.yml
  • config/wireshark.mpb
  • docs/USAGE
  • docs/html/MakeProjectCreator.html
  • modules/VS2026ProjectCreator.pm
  • modules/VS2026WorkspaceCreator.pm
  • registry.pl
  • templates/vs2026dll.mpt
  • templates/vs2026exe.mpt
  • templates/vs2026lib.mpt
  • templates/vs2026libexe.mpt
  • templates/vs2026platforms.mpt
🚧 Files skipped from review as they are similar to previous changes (9)
  • .github/workflows/cmake.yml
  • docs/USAGE
  • modules/VS2026WorkspaceCreator.pm
  • docs/html/MakeProjectCreator.html
  • templates/vs2026lib.mpt
  • .github/workflows/windows.yml
  • templates/vs2026libexe.mpt
  • templates/vs2026exe.mpt
  • config/wireshark.mpb

Walkthrough

Adds Visual Studio 2026 support: CI matrix entries, registry/config updates, new Perl project/workspace creators, multiple VS2026 MPC templates and platform definitions, and documentation updates enumerating vs2026 and its numeric mapping.

Changes

Cohort / File(s) Summary
CI/CD Workflows
.github/workflows/cmake.yml, .github/workflows/windows.yml
Added vs2026 entries to CI matrices (cmake.yml: vs2026 VM; windows.yml: VS2026Debug64 and VS2026Release32 matrix rows).
Registry & Config
registry.pl, config/wireshark.mpb
Registered vs2026 in registry.pl; added specific(vs2026) block with MSC_VER_REQUIRED=1950 under project : glib.
Documentation
docs/USAGE, docs/html/MakeProjectCreator.html
Added vs2026 to supported types and MPC Types docs; updated exclusion list and numeric mapping (14.5) and added table entries for vs2026.
Perl Modules
modules/VS2026ProjectCreator.pm, modules/VS2026WorkspaceCreator.pm
New modules: VS2026ProjectCreator (inherits VC12, overrides get_info_hash/get_configurable) and VS2026WorkspaceCreator (inherits VC12, adds pre_workspace).
Project Templates
templates/vs2026platforms.mpt, templates/vs2026dll.mpt, templates/vs2026exe.mpt, templates/vs2026lib.mpt, templates/vs2026libexe.mpt
Added VS2026 templates and platform definitions (Win32, x64, ARM, ARM64), default platform/toolset and conditional includes for various project types.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰 I hopped in code with nimble paws,
Crafted templates and CI laws,
VS2026 blooms in build and doc,
Solutions hum and projects rock,
A carrot for every successful cause!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Add support for Visual Studio 2026' directly and accurately describes the primary change across all modified files - adding comprehensive VS2026 support to the MPC build system.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
templates/vs2026platforms.mpt (1)

12-14: Consider adding explicit settings for Win32 platform.

The Win32 platform block only defines output_subdir, while other platforms (x64, ARM, ARM64) also include cpu_defines, platform_defines, TargetMachine, and link_options. This may be intentional if Win32 defaults are handled elsewhere, but for consistency you might consider adding explicit values:

Suggested enhancement for Win32 platform block
 Win32 {
   output_subdir    = I386
+  cpu_defines      = _X86_
+  platform_defines = WIN32
+  TargetMachine    = "0"             // We let VC++ figure it out for us.
+  link_options     = /machine:X86
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@templates/vs2026platforms.mpt` around lines 12 - 14, The Win32 platform block
currently only sets output_subdir = I386; update the Win32 block (symbol: Win32)
to explicitly include the same platform settings used for other platforms: add
cpu_defines, platform_defines, TargetMachine, and link_options entries (matching
the style/values used for x64/ARM/ARM64) so the configuration is consistent
rather than relying on implicit defaults; ensure names match existing keys
(cpu_defines, platform_defines, TargetMachine, link_options) and values are
appropriate for 32-bit Win32.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@templates/vs2026platforms.mpt`:
- Around line 12-14: The Win32 platform block currently only sets output_subdir
= I386; update the Win32 block (symbol: Win32) to explicitly include the same
platform settings used for other platforms: add cpu_defines, platform_defines,
TargetMachine, and link_options entries (matching the style/values used for
x64/ARM/ARM64) so the configuration is consistent rather than relying on
implicit defaults; ensure names match existing keys (cpu_defines,
platform_defines, TargetMachine, link_options) and values are appropriate for
32-bit Win32.

ℹ️ Review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 58a6fbe and 05a5b40.

📒 Files selected for processing (13)
  • .github/workflows/cmake.yml
  • .github/workflows/windows.yml
  • config/wireshark.mpb
  • docs/USAGE
  • docs/html/MakeProjectCreator.html
  • modules/VS2026ProjectCreator.pm
  • modules/VS2026WorkspaceCreator.pm
  • registry.pl
  • templates/vs2026dll.mpt
  • templates/vs2026exe.mpt
  • templates/vs2026lib.mpt
  • templates/vs2026libexe.mpt
  • templates/vs2026platforms.mpt

@hwangsihu hwangsihu marked this pull request as draft March 4, 2026 10:42
@hwangsihu hwangsihu marked this pull request as ready for review March 4, 2026 15:25
},
);

my %config = ('vcversion' => '16.00',
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this correct, vs2026 mentions version 18 on several places, is this 16 here?

my $crlf = $self->crlf();

print $fh '', $crlf,
'Microsoft Visual Studio Solution File, Format Version 12.00', $crlf;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

format version 12?

@hwangsihu
Copy link
Author

Yes, that's right. I made a typo. I'll fix it later. Thank you for pointing it out.

@hwangsihu
Copy link
Author

I left the two items unmarked as resolved for now, as they were used in VS2022. Should I proceed?

VS 2022 is v17, but here it's v16.

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

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants