Skip to content

Commit 7969699

Browse files
authored
Visual Studio 2026 Support (#432)
This includes the vs2026 enum and all the changes in relevant places.
1 parent e9741bc commit 7969699

File tree

15 files changed

+110
-1
lines changed

15 files changed

+110
-1
lines changed

Sharpmake.Generators/FastBuild/Bff.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1775,6 +1775,8 @@ internal static string DetectMscVerForClang(DevEnv devenv, Options.Vc.General.Pl
17751775
return "1920";
17761776
case Options.Vc.General.PlatformToolset.v143:
17771777
return "1930";
1778+
case Options.Vc.General.PlatformToolset.v145:
1779+
return "1950";
17781780
default:
17791781
throw new Error("LLVMVcPlatformToolset! Platform toolset override '{0}' not supported", overridenPlatformToolset);
17801782
}
@@ -1789,6 +1791,8 @@ internal static string DetectMscVerForClang(DevEnv devenv, Options.Vc.General.Pl
17891791
return "1920";
17901792
case DevEnv.vs2022:
17911793
return "1930";
1794+
case DevEnv.vs2026:
1795+
return "1950";
17921796
default:
17931797
throw new Error("Clang-cl used with unsupported DevEnv: " + devenv.ToString());
17941798
}

Sharpmake.Generators/GeneratorManager.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ public void Generate(Builder builder,
9999
case DevEnv.vs2017:
100100
case DevEnv.vs2019:
101101
case DevEnv.vs2022:
102+
case DevEnv.vs2026:
102103
{
103104
VcxprojGenerator.Generate(builder, project, configurations, projectFile, generatedFiles, skipFiles);
104105
BffGenerator.Generate(builder, project, configurations, projectFile, generatedFiles, skipFiles);
@@ -155,6 +156,7 @@ public void Generate(Builder builder,
155156
case DevEnv.vs2017:
156157
case DevEnv.vs2019:
157158
case DevEnv.vs2022:
159+
case DevEnv.vs2026:
158160
{
159161
if (UtilityMethods.HasFastBuildConfig(configurations))
160162
{

Sharpmake.Generators/VisualStudio/Csproj.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1254,6 +1254,7 @@ List<string> skipFiles
12541254
case DevEnv.vs2017:
12551255
case DevEnv.vs2019:
12561256
case DevEnv.vs2022:
1257+
case DevEnv.vs2026:
12571258
Write(Template.Project.ProjectBeginVs2017, writer, resolver);
12581259
break;
12591260
default:

Sharpmake.Generators/VisualStudio/Sln.Template.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@ public static class Solution
4848
public static string HeaderBeginVs2022 =
4949
@"Microsoft Visual Studio Solution File, Format Version 12.00
5050
# Visual Studio Version 17
51+
";
52+
53+
public static string HeaderBeginVs2026 =
54+
@"Microsoft Visual Studio Solution File, Format Version 12.00
55+
# Visual Studio Version 18
5156
";
5257

5358
public static string ProjectBegin =

Sharpmake.Generators/VisualStudio/Sln.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,10 @@ out bool updated
296296
case DevEnv.vs2022:
297297
fileGenerator.Write(Template.Solution.HeaderBeginVs2022);
298298
break;
299+
case DevEnv.vs2026:
300+
fileGenerator.Write(Template.Solution.HeaderBeginVs2026);
301+
break;
302+
299303
default:
300304
throw new Error($"Unsupported DevEnv {devEnv} for solution {solution.Name}");
301305
}

Sharpmake.Generators/VisualStudio/Vcxproj.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ private static string GetVCTargetsPathOverride(DevEnv devEnv)
221221
case DevEnv.vs2017:
222222
case DevEnv.vs2019:
223223
case DevEnv.vs2022:
224+
case DevEnv.vs2026:
224225
return devEnv.GetVCTargetsPath();
225226
default:
226227
throw new NotImplementedException("VCTargetsPath redirection for " + devEnv);
@@ -234,6 +235,7 @@ private static string GetMSBuildExtensionsPathOverride(DevEnv devEnv)
234235
case DevEnv.vs2017:
235236
case DevEnv.vs2019:
236237
case DevEnv.vs2022:
238+
case DevEnv.vs2026:
237239
return Path.Combine(devEnv.GetVisualStudioDir(), @"MSBuild\");
238240
default:
239241
throw new NotImplementedException("MSBuildExtensionsPath redirection for " + devEnv);

Sharpmake.Platforms/Sharpmake.CommonPlatforms/Android/AndroidAgdePlatform.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ public override void GeneratePlatformSpecificProjectDescription(IVcxprojGenerati
132132
case DevEnv.vs2017:
133133
case DevEnv.vs2019:
134134
case DevEnv.vs2022:
135+
case DevEnv.vs2026:
135136
{
136137
// _PlatformFolder override is not enough for android, we need to know the AdditionalVCTargetsPath
137138
// Note that AdditionalVCTargetsPath is not officially supported by vs2017, but we use the variable anyway for convenience and consistency

Sharpmake.Platforms/Sharpmake.CommonPlatforms/Android/AndroidPlatform.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ public override void GeneratePlatformSpecificProjectDescription(IVcxprojGenerati
118118
case DevEnv.vs2017:
119119
case DevEnv.vs2019:
120120
case DevEnv.vs2022:
121+
case DevEnv.vs2026:
121122
{
122123
// _PlatformFolder override is not enough for android, we need to know the AdditionalVCTargetsPath
123124
// Note that AdditionalVCTargetsPath is not officially supported by vs2017, but we use the variable anyway for convenience and consistency

Sharpmake.Platforms/Sharpmake.CommonPlatforms/Windows/Win64Platform.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,7 @@ public override void GeneratePlatformSpecificProjectDescription(IVcxprojGenerati
449449
break;
450450
case DevEnv.vs2019:
451451
case DevEnv.vs2022:
452+
case DevEnv.vs2026:
452453
{
453454
// Note1: _PlatformFolder override is deprecated starting with vs2019, so we write AdditionalVCTargetsPath instead
454455
// Note2: MSBuildGlobalSettings.SetCppPlatformFolder for vs2019 and above is no more the valid way to handle it.

Sharpmake.UnitTests/GeneratorsBffTests.cs

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,12 @@ public void HasVS2019orVS2022Compiler(Platform platform)
4646
[TestCase(DevEnv.vs2022, Platform._reserved7, Options.Vc.General.PlatformToolset.Default)]
4747
[TestCase(DevEnv.vs2022, Platform._reserved7, Options.Vc.General.PlatformToolset.ClangCL)]
4848
[TestCase(DevEnv.vs2022, Platform._reserved7, Options.Vc.General.PlatformToolset.v143)]
49+
[TestCase(DevEnv.vs2026, Platform.win64, Options.Vc.General.PlatformToolset.Default)]
50+
[TestCase(DevEnv.vs2026, Platform.win64, Options.Vc.General.PlatformToolset.ClangCL)]
51+
[TestCase(DevEnv.vs2026, Platform.win64, Options.Vc.General.PlatformToolset.v145)]
52+
[TestCase(DevEnv.vs2026, Platform._reserved7, Options.Vc.General.PlatformToolset.Default)]
53+
[TestCase(DevEnv.vs2026, Platform._reserved7, Options.Vc.General.PlatformToolset.ClangCL)]
54+
[TestCase(DevEnv.vs2026, Platform._reserved7, Options.Vc.General.PlatformToolset.v145)]
4955
public void DetectCompilerVersionForClangCl_FullVersionOverrideToolset(DevEnv devenv, Platform platform, Options.Vc.General.PlatformToolset overridenPlatformToolset)
5056
{
5157
if (!HasVSCompiler(devenv, platform))
@@ -66,6 +72,8 @@ public void DetectCompilerVersionForClangCl_FullVersionOverrideToolset(DevEnv de
6672
Assert.That(result, Is.EqualTo(expected));
6773
}
6874

75+
[TestCase(DevEnv.vs2026, Platform.win64)]
76+
[TestCase(DevEnv.vs2026, Platform._reserved7)]
6977
[TestCase(DevEnv.vs2022, Platform.win64)]
7078
[TestCase(DevEnv.vs2022, Platform._reserved7)]
7179
[TestCase(DevEnv.vs2019, Platform.win64)]
@@ -80,6 +88,8 @@ public void DetectCompilerVersionForClangCl_FullVersionOverrideMscVer(DevEnv dev
8088
var result = Assert.Throws<Error>(() => Bff.DetectCompilerVersionForClangCl(detectionType, overridenMscVer, overridenPlatformToolset, devenv, platform));
8189
}
8290

91+
[TestCase(DevEnv.vs2026, Platform.win64)]
92+
[TestCase(DevEnv.vs2026, Platform._reserved7)]
8393
[TestCase(DevEnv.vs2022, Platform.win64)]
8494
[TestCase(DevEnv.vs2022, Platform._reserved7)]
8595
[TestCase(DevEnv.vs2019, Platform.win64)]
@@ -98,6 +108,8 @@ public void DetectCompilerVersionForClangCl_FullVersionOverrideMscVerZero(DevEnv
98108
[TestCase(DevEnv.vs2019, Platform._reserved7)]
99109
[TestCase(DevEnv.vs2022, Platform.win64)]
100110
[TestCase(DevEnv.vs2022, Platform._reserved7)]
111+
[TestCase(DevEnv.vs2026, Platform.win64)]
112+
[TestCase(DevEnv.vs2026, Platform._reserved7)]
101113
public void DetectCompilerVersionForClangCl_MajorVersionNoOverride(DevEnv devenv, Platform platform)
102114
{
103115
var detectionType = Project.Configuration.FastBuildClangMscVersionDetectionType.MajorVersion;
@@ -119,6 +131,10 @@ public void DetectCompilerVersionForClangCl_MajorVersionNoOverride(DevEnv devenv
119131
[TestCase(DevEnv.vs2022, Platform.win64, Options.Vc.General.PlatformToolset.v143, "1930")]
120132
[TestCase(DevEnv.vs2022, Platform._reserved7, Options.Vc.General.PlatformToolset.v142, "1920")]
121133
[TestCase(DevEnv.vs2022, Platform._reserved7, Options.Vc.General.PlatformToolset.v143, "1930")]
134+
[TestCase(DevEnv.vs2026, Platform.win64, Options.Vc.General.PlatformToolset.v143, "1930")]
135+
[TestCase(DevEnv.vs2026, Platform.win64, Options.Vc.General.PlatformToolset.v145, "1950")]
136+
[TestCase(DevEnv.vs2026, Platform._reserved7, Options.Vc.General.PlatformToolset.v143, "1930")]
137+
[TestCase(DevEnv.vs2026, Platform._reserved7, Options.Vc.General.PlatformToolset.v145, "1950")]
122138
public void DetectCompilerVersionForClangCl_MajorVersionOverrideToolsetSupported(DevEnv devenv, Platform platform, Options.Vc.General.PlatformToolset overridenPlatformToolset, string exepctedVersion)
123139
{
124140
var detectionType = Project.Configuration.FastBuildClangMscVersionDetectionType.MajorVersion;
@@ -140,6 +156,10 @@ public void DetectCompilerVersionForClangCl_MajorVersionOverrideToolsetSupported
140156
[TestCase(DevEnv.vs2022, Platform.win64, Options.Vc.General.PlatformToolset.v140)]
141157
[TestCase(DevEnv.vs2022, Platform._reserved7, Options.Vc.General.PlatformToolset.ClangCL)]
142158
[TestCase(DevEnv.vs2022, Platform._reserved7, Options.Vc.General.PlatformToolset.v140)]
159+
[TestCase(DevEnv.vs2026, Platform.win64, Options.Vc.General.PlatformToolset.ClangCL)]
160+
[TestCase(DevEnv.vs2026, Platform.win64, Options.Vc.General.PlatformToolset.v140)]
161+
[TestCase(DevEnv.vs2026, Platform._reserved7, Options.Vc.General.PlatformToolset.ClangCL)]
162+
[TestCase(DevEnv.vs2026, Platform._reserved7, Options.Vc.General.PlatformToolset.v140)]
143163
public void DetectCompilerVersionForClangCl_MajorVersionOverrideToolsetNotSupported(DevEnv devenv, Platform platform, Options.Vc.General.PlatformToolset overridenPlatformToolset)
144164
{
145165
var detectionType = Project.Configuration.FastBuildClangMscVersionDetectionType.MajorVersion;
@@ -153,6 +173,8 @@ public void DetectCompilerVersionForClangCl_MajorVersionOverrideToolsetNotSuppor
153173
[TestCase(DevEnv.vs2019, Platform._reserved7)]
154174
[TestCase(DevEnv.vs2022, Platform.win64)]
155175
[TestCase(DevEnv.vs2022, Platform._reserved7)]
176+
[TestCase(DevEnv.vs2026, Platform.win64)]
177+
[TestCase(DevEnv.vs2026, Platform._reserved7)]
156178
public void DetectCompilerVersionForClangCl_MajorVersionOverrideMscVer(DevEnv devenv, Platform platform)
157179
{
158180
var detectionType = Project.Configuration.FastBuildClangMscVersionDetectionType.MajorVersion;
@@ -174,6 +196,10 @@ public void DetectCompilerVersionForClangCl_MajorVersionOverrideMscVer(DevEnv de
174196
[TestCase(DevEnv.vs2022, Platform.win64, Options.Vc.General.PlatformToolset.v143)]
175197
[TestCase(DevEnv.vs2022, Platform._reserved7, Options.Vc.General.PlatformToolset.v142)]
176198
[TestCase(DevEnv.vs2022, Platform._reserved7, Options.Vc.General.PlatformToolset.v143)]
199+
[TestCase(DevEnv.vs2026, Platform.win64, Options.Vc.General.PlatformToolset.v143)]
200+
[TestCase(DevEnv.vs2026, Platform.win64, Options.Vc.General.PlatformToolset.v145)]
201+
[TestCase(DevEnv.vs2026, Platform._reserved7, Options.Vc.General.PlatformToolset.v143)]
202+
[TestCase(DevEnv.vs2026, Platform._reserved7, Options.Vc.General.PlatformToolset.v145)]
177203
public void DetectCompilerVersionForClangCl_MajorVersionOverrideToolsetSupportedAndMscVer(DevEnv devenv, Platform platform, Options.Vc.General.PlatformToolset overridenPlatformToolset)
178204
{
179205
var detectionType = Project.Configuration.FastBuildClangMscVersionDetectionType.MajorVersion;
@@ -194,6 +220,10 @@ public void DetectCompilerVersionForClangCl_MajorVersionOverrideToolsetSupported
194220
[TestCase(DevEnv.vs2022, Platform.win64, Options.Vc.General.PlatformToolset.v140)]
195221
[TestCase(DevEnv.vs2022, Platform._reserved7, Options.Vc.General.PlatformToolset.ClangCL)]
196222
[TestCase(DevEnv.vs2022, Platform._reserved7, Options.Vc.General.PlatformToolset.v140)]
223+
[TestCase(DevEnv.vs2026, Platform.win64, Options.Vc.General.PlatformToolset.ClangCL)]
224+
[TestCase(DevEnv.vs2026, Platform.win64, Options.Vc.General.PlatformToolset.v145)]
225+
[TestCase(DevEnv.vs2026, Platform._reserved7, Options.Vc.General.PlatformToolset.ClangCL)]
226+
[TestCase(DevEnv.vs2026, Platform._reserved7, Options.Vc.General.PlatformToolset.v145)]
197227
public void DetectCompilerVersionForClangCl_MajorVersionOverrideToolsetNotSupportedAndMscVer(DevEnv devenv, Platform platform, Options.Vc.General.PlatformToolset overridenPlatformToolset)
198228
{
199229
var detectionType = Project.Configuration.FastBuildClangMscVersionDetectionType.MajorVersion;
@@ -210,6 +240,8 @@ public void DetectCompilerVersionForClangCl_MajorVersionOverrideToolsetNotSuppor
210240
[TestCase(DevEnv.vs2019, Platform._reserved7)]
211241
[TestCase(DevEnv.vs2022, Platform.win64)]
212242
[TestCase(DevEnv.vs2022, Platform._reserved7)]
243+
[TestCase(DevEnv.vs2026, Platform.win64)]
244+
[TestCase(DevEnv.vs2026, Platform._reserved7)]
213245
public void DetectCompilerVersionForClangCl_MajorVersionOverrideMscVerZero(DevEnv devenv, Platform platform)
214246
{
215247
var detectionType = Project.Configuration.FastBuildClangMscVersionDetectionType.MajorVersion;
@@ -231,6 +263,10 @@ public void DetectCompilerVersionForClangCl_MajorVersionOverrideMscVerZero(DevEn
231263
[TestCase(DevEnv.vs2022, Platform.win64, Options.Vc.General.PlatformToolset.v143)]
232264
[TestCase(DevEnv.vs2022, Platform._reserved7, Options.Vc.General.PlatformToolset.v142)]
233265
[TestCase(DevEnv.vs2022, Platform._reserved7, Options.Vc.General.PlatformToolset.v143)]
266+
[TestCase(DevEnv.vs2026, Platform.win64, Options.Vc.General.PlatformToolset.v143)]
267+
[TestCase(DevEnv.vs2026, Platform.win64, Options.Vc.General.PlatformToolset.v145)]
268+
[TestCase(DevEnv.vs2026, Platform._reserved7, Options.Vc.General.PlatformToolset.v143)]
269+
[TestCase(DevEnv.vs2026, Platform._reserved7, Options.Vc.General.PlatformToolset.v145)]
234270
public void DetectCompilerVersionForClangCl_MajorVersionOverrideToolsetSupportedAndMscVerZero(DevEnv devenv, Platform platform, Options.Vc.General.PlatformToolset overridenPlatformToolset)
235271
{
236272
var detectionType = Project.Configuration.FastBuildClangMscVersionDetectionType.MajorVersion;
@@ -251,6 +287,10 @@ public void DetectCompilerVersionForClangCl_MajorVersionOverrideToolsetSupported
251287
[TestCase(DevEnv.vs2022, Platform.win64, Options.Vc.General.PlatformToolset.v140)]
252288
[TestCase(DevEnv.vs2022, Platform._reserved7, Options.Vc.General.PlatformToolset.ClangCL)]
253289
[TestCase(DevEnv.vs2022, Platform._reserved7, Options.Vc.General.PlatformToolset.v140)]
290+
[TestCase(DevEnv.vs2026, Platform.win64, Options.Vc.General.PlatformToolset.ClangCL)]
291+
[TestCase(DevEnv.vs2026, Platform.win64, Options.Vc.General.PlatformToolset.v145)]
292+
[TestCase(DevEnv.vs2026, Platform._reserved7, Options.Vc.General.PlatformToolset.ClangCL)]
293+
[TestCase(DevEnv.vs2026, Platform._reserved7, Options.Vc.General.PlatformToolset.v145)]
254294
public void DetectCompilerVersionForClangCl_MajorVersionOverrideToolsetNotSupportedAndMscVerZero(DevEnv devenv, Platform platform, Options.Vc.General.PlatformToolset overridenPlatformToolset)
255295
{
256296
var detectionType = Project.Configuration.FastBuildClangMscVersionDetectionType.MajorVersion;
@@ -263,6 +303,8 @@ public void DetectCompilerVersionForClangCl_MajorVersionOverrideToolsetNotSuppor
263303
Assert.That(result, Is.EqualTo(expected));
264304
}
265305

306+
[TestCase(DevEnv.vs2026, Platform.win64)]
307+
[TestCase(DevEnv.vs2026, Platform._reserved7)]
266308
[TestCase(DevEnv.vs2022, Platform.win64)]
267309
[TestCase(DevEnv.vs2022, Platform._reserved7)]
268310
[TestCase(DevEnv.vs2019, Platform.win64)]
@@ -292,6 +334,12 @@ public void DetectCompilerVersionForClangCl_DisabledNoOverride(DevEnv devenv, Pl
292334
[TestCase(DevEnv.vs2022, Platform._reserved7, Options.Vc.General.PlatformToolset.Default)]
293335
[TestCase(DevEnv.vs2022, Platform._reserved7, Options.Vc.General.PlatformToolset.ClangCL)]
294336
[TestCase(DevEnv.vs2022, Platform._reserved7, Options.Vc.General.PlatformToolset.v143)]
337+
[TestCase(DevEnv.vs2026, Platform.win64, Options.Vc.General.PlatformToolset.Default)]
338+
[TestCase(DevEnv.vs2026, Platform.win64, Options.Vc.General.PlatformToolset.ClangCL)]
339+
[TestCase(DevEnv.vs2026, Platform.win64, Options.Vc.General.PlatformToolset.v145)]
340+
[TestCase(DevEnv.vs2026, Platform._reserved7, Options.Vc.General.PlatformToolset.Default)]
341+
[TestCase(DevEnv.vs2026, Platform._reserved7, Options.Vc.General.PlatformToolset.ClangCL)]
342+
[TestCase(DevEnv.vs2026, Platform._reserved7, Options.Vc.General.PlatformToolset.v145)]
295343
public void DetectCompilerVersionForClangCl_DisabledOverrideMscVer(DevEnv devenv, Platform platform, Options.Vc.General.PlatformToolset overridenPlatformToolset)
296344
{
297345
var detectionType = Project.Configuration.FastBuildClangMscVersionDetectionType.Disabled;
@@ -316,6 +364,12 @@ public void DetectCompilerVersionForClangCl_DisabledOverrideMscVer(DevEnv devenv
316364
[TestCase(DevEnv.vs2022, Platform._reserved7, Options.Vc.General.PlatformToolset.Default)]
317365
[TestCase(DevEnv.vs2022, Platform._reserved7, Options.Vc.General.PlatformToolset.ClangCL)]
318366
[TestCase(DevEnv.vs2022, Platform._reserved7, Options.Vc.General.PlatformToolset.v143)]
367+
[TestCase(DevEnv.vs2026, Platform.win64, Options.Vc.General.PlatformToolset.Default)]
368+
[TestCase(DevEnv.vs2026, Platform.win64, Options.Vc.General.PlatformToolset.ClangCL)]
369+
[TestCase(DevEnv.vs2026, Platform.win64, Options.Vc.General.PlatformToolset.v145)]
370+
[TestCase(DevEnv.vs2026, Platform._reserved7, Options.Vc.General.PlatformToolset.Default)]
371+
[TestCase(DevEnv.vs2026, Platform._reserved7, Options.Vc.General.PlatformToolset.ClangCL)]
372+
[TestCase(DevEnv.vs2026, Platform._reserved7, Options.Vc.General.PlatformToolset.v145)]
319373
public void DetectCompilerVersionForClangCl_DisabledOverrideMscVerZero(DevEnv devenv, Platform platform, Options.Vc.General.PlatformToolset overridenPlatformToolset)
320374
{
321375
var detectionType = Project.Configuration.FastBuildClangMscVersionDetectionType.Disabled;

0 commit comments

Comments
 (0)