Skip to content

Commit e05db7a

Browse files
committed
Add VS2026 toolset-aware packaging support
1 parent c09e45f commit e05db7a

41 files changed

Lines changed: 1564 additions & 234 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/cmake.yml

Lines changed: 204 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@ permissions:
1818

1919
env:
2020
CRTSYS_WINDOWS_SDK_VERSION: 10.0.22621.0
21+
CRTSYS_VS2026_WINDOWS_SDK_VERSION: 10.0.26100.0
2122

2223
jobs:
23-
build:
24-
name: Build ${{ matrix.project }} ${{ matrix.arch }} ${{ matrix.config }}
24+
build-vs2022:
25+
name: VS2022/v143 ${{ matrix.project }} ${{ matrix.arch }} ${{ matrix.config }}
2526
runs-on: windows-2022
2627
strategy:
2728
fail-fast: false
@@ -33,12 +34,21 @@ jobs:
3334
- project: app
3435
arch: x64
3536
config: Debug
37+
- project: app
38+
arch: ARM
39+
config: Debug
3640
- project: app
3741
arch: ARM64
3842
config: Debug
43+
- project: driver
44+
arch: x86
45+
config: Debug
3946
- project: driver
4047
arch: x64
4148
config: Debug
49+
- project: driver
50+
arch: ARM
51+
config: Debug
4252
- project: driver
4353
arch: ARM64
4454
config: Debug
@@ -48,20 +58,29 @@ jobs:
4858
- project: app
4959
arch: x64
5060
config: Release
61+
- project: app
62+
arch: ARM
63+
config: Release
5164
- project: app
5265
arch: ARM64
5366
config: Release
67+
- project: driver
68+
arch: x86
69+
config: Release
5470
- project: driver
5571
arch: x64
5672
config: Release
73+
- project: driver
74+
arch: ARM
75+
config: Release
5776
- project: driver
5877
arch: ARM64
5978
config: Release
6079

6180
steps:
6281
- uses: actions/checkout@v4
6382

64-
- name: Show toolchain
83+
- name: Show VS2022 toolchain
6584
shell: pwsh
6685
run: |
6786
cmake --version
@@ -72,7 +91,17 @@ jobs:
7291
Get-ChildItem "${env:ProgramFiles(x86)}\Windows Kits\10\Include" -Directory |
7392
Select-Object -ExpandProperty Name
7493
75-
- name: Build
94+
- name: Ensure WDK for x86 driver build
95+
if: matrix.project == 'driver' && matrix.arch == 'x86'
96+
shell: pwsh
97+
run: ./scripts/nuget/Ensure-CrtSysWdk.ps1 -WindowsSdkVersion '${{ env.CRTSYS_WINDOWS_SDK_VERSION }}' -RequiredPlatforms x86
98+
99+
- name: Ensure WDK for ARM32 driver build
100+
if: matrix.project == 'driver' && matrix.arch == 'ARM'
101+
shell: pwsh
102+
run: ./scripts/nuget/Ensure-CrtSysWdk.ps1 -WindowsSdkVersion '${{ env.CRTSYS_WINDOWS_SDK_VERSION }}' -RequiredPlatforms ARM
103+
104+
- name: Build v143
76105
shell: pwsh
77106
run: |
78107
$parameters = @{
@@ -111,13 +140,61 @@ jobs:
111140
test/cmake/app/build_x64/Debug/crtsys_test_app.exe
112141
test/cmake/app/build_x64/Debug/crtsys_test_app.pdb
113142
114-
build-v142:
115-
name: Build v142 driver ${{ matrix.arch }} Debug
143+
build-vs2019:
144+
name: VS2019/v142 ${{ matrix.project }} ${{ matrix.arch }} ${{ matrix.config }}
116145
runs-on: windows-2022
117146
strategy:
118147
fail-fast: false
119148
matrix:
120-
arch: [x64, ARM64]
149+
include:
150+
- project: app
151+
arch: x86
152+
config: Debug
153+
- project: app
154+
arch: x64
155+
config: Debug
156+
- project: app
157+
arch: ARM
158+
config: Debug
159+
- project: app
160+
arch: ARM64
161+
config: Debug
162+
- project: driver
163+
arch: x86
164+
config: Debug
165+
- project: driver
166+
arch: x64
167+
config: Debug
168+
- project: driver
169+
arch: ARM
170+
config: Debug
171+
- project: driver
172+
arch: ARM64
173+
config: Debug
174+
- project: app
175+
arch: x86
176+
config: Release
177+
- project: app
178+
arch: x64
179+
config: Release
180+
- project: app
181+
arch: ARM
182+
config: Release
183+
- project: app
184+
arch: ARM64
185+
config: Release
186+
- project: driver
187+
arch: x86
188+
config: Release
189+
- project: driver
190+
arch: x64
191+
config: Release
192+
- project: driver
193+
arch: ARM
194+
config: Release
195+
- project: driver
196+
arch: ARM64
197+
config: Release
121198

122199
steps:
123200
- uses: actions/checkout@v4
@@ -134,16 +211,127 @@ jobs:
134211
Get-ChildItem (Join-Path $installationPath 'VC\Tools\MSVC') -Directory |
135212
Select-Object -ExpandProperty Name
136213
137-
- name: Build v142 driver
214+
- name: Ensure WDK for x86 driver build
215+
if: matrix.project == 'driver' && matrix.arch == 'x86'
216+
shell: pwsh
217+
run: ./scripts/nuget/Ensure-CrtSysWdk.ps1 -WindowsSdkVersion '${{ env.CRTSYS_WINDOWS_SDK_VERSION }}' -RequiredPlatforms x86
218+
219+
- name: Ensure WDK for ARM32 driver build
220+
if: matrix.project == 'driver' && matrix.arch == 'ARM'
221+
shell: pwsh
222+
run: ./scripts/nuget/Ensure-CrtSysWdk.ps1 -WindowsSdkVersion '${{ env.CRTSYS_WINDOWS_SDK_VERSION }}' -RequiredPlatforms ARM
223+
224+
- name: Build v142
225+
shell: pwsh
226+
run: |
227+
$parameters = @{
228+
Project = '${{ matrix.project }}'
229+
Architecture = '${{ matrix.arch }}'
230+
Configuration = '${{ matrix.config }}'
231+
WindowsSdkVersion = '${{ env.CRTSYS_WINDOWS_SDK_VERSION }}'
232+
PlatformToolset = 'v142'
233+
}
234+
235+
if ($parameters.Project -eq 'driver') {
236+
$parameters.NoBreakpoint = $true
237+
}
238+
239+
./scripts/ci/Build-CrtSys.ps1 @parameters
240+
241+
build-vs2026:
242+
name: VS2026/v145 ${{ matrix.project }} ${{ matrix.arch }} ${{ matrix.config }}
243+
runs-on: windows-2025-vs2026
244+
strategy:
245+
fail-fast: false
246+
matrix:
247+
include:
248+
- project: app
249+
arch: x86
250+
config: Debug
251+
- project: app
252+
arch: x64
253+
config: Debug
254+
- project: app
255+
arch: ARM64
256+
config: Debug
257+
- project: driver
258+
arch: x86
259+
config: Debug
260+
- project: driver
261+
arch: x64
262+
config: Debug
263+
- project: driver
264+
arch: ARM64
265+
config: Debug
266+
- project: app
267+
arch: x86
268+
config: Release
269+
- project: app
270+
arch: x64
271+
config: Release
272+
- project: app
273+
arch: ARM64
274+
config: Release
275+
- project: driver
276+
arch: x86
277+
config: Release
278+
- project: driver
279+
arch: x64
280+
config: Release
281+
- project: driver
282+
arch: ARM64
283+
config: Release
284+
285+
steps:
286+
- uses: actions/checkout@v4
287+
288+
- name: Show VS2026 toolchain
289+
shell: pwsh
290+
run: |
291+
cmake --version
292+
293+
$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
294+
$installationPath = & $vswhere -latest -products * -property installationPath
295+
Write-Host "Visual Studio installation: $installationPath"
296+
297+
Get-ChildItem (Join-Path $installationPath 'VC\Tools\MSVC') -Directory |
298+
Select-Object -ExpandProperty Name
299+
300+
- name: Ensure WDK for VS2026 image
301+
shell: pwsh
302+
run: ./scripts/nuget/Ensure-CrtSysWdk.ps1 -WindowsSdkVersion '${{ env.CRTSYS_VS2026_WINDOWS_SDK_VERSION }}'
303+
304+
- name: Ensure WDK for VS2026 x86 driver build
305+
if: matrix.project == 'driver' && matrix.arch == 'x86'
306+
shell: pwsh
307+
run: ./scripts/nuget/Ensure-CrtSysWdk.ps1 -WindowsSdkVersion '${{ env.CRTSYS_WINDOWS_SDK_VERSION }}' -RequiredPlatforms x86
308+
309+
- name: Build v145
138310
shell: pwsh
139311
run: |
140-
./scripts/ci/Build-CrtSys.ps1 `
141-
-Project driver `
142-
-Architecture '${{ matrix.arch }}' `
143-
-Configuration Debug `
144-
-WindowsSdkVersion '${{ env.CRTSYS_WINDOWS_SDK_VERSION }}' `
145-
-PlatformToolset v142 `
146-
-NoBreakpoint
312+
$windowsSdkVersion = '${{ env.CRTSYS_VS2026_WINDOWS_SDK_VERSION }}'
313+
$wdkVersion = ''
314+
if ('${{ matrix.project }}' -eq 'driver' -and '${{ matrix.arch }}' -eq 'x86') {
315+
$wdkVersion = '${{ env.CRTSYS_WINDOWS_SDK_VERSION }}'
316+
}
317+
318+
$parameters = @{
319+
Project = '${{ matrix.project }}'
320+
Architecture = '${{ matrix.arch }}'
321+
Configuration = '${{ matrix.config }}'
322+
WindowsSdkVersion = $windowsSdkVersion
323+
PlatformToolset = 'v145'
324+
}
325+
326+
if (-not [string]::IsNullOrWhiteSpace($wdkVersion)) {
327+
$parameters.WdkVersion = $wdkVersion
328+
}
329+
330+
if ($parameters.Project -eq 'driver') {
331+
$parameters.NoBreakpoint = $true
332+
}
333+
334+
./scripts/ci/Build-CrtSys.ps1 @parameters
147335
148336
driver-load-test-preflight:
149337
name: Driver load test preflight
@@ -193,7 +381,7 @@ jobs:
193381
name: Driver load test x64
194382
if: github.event_name == 'workflow_dispatch' && inputs.run_driver_load_tests
195383
needs:
196-
- build
384+
- build-vs2022
197385
- driver-load-test-preflight
198386
# Add the crtsys-driver-test label only to a self-hosted Windows x64 runner
199387
# that has TESTSIGNING enabled before boot.

0 commit comments

Comments
 (0)