Bläddra i källkod

ci: Update Windows jobs to VS 2026

Convert most VS 2022 jobs to VS 2026.  Do not convert the IntelLLVM
and Clang jobs that need a VS 2022 command-line environment.
Do not convert jobs covering the `Visual Studio 17 2022` generator.
Add new ones for `Visual Studio 18 2026` instead.
Brad King 1 månad sedan
förälder
incheckning
ffa010e32d

+ 93 - 69
.gitlab-ci.yml

@@ -1272,80 +1272,92 @@ u:macos10.10-package:
 
 # Windows x86_64 jobs
 
-b:windows-vs2022-x64-ninja:
+b:windows-vs2026-x64-ninja:
     extends:
-        - .windows_vs2022_x64_ninja
+        - .windows_vs2026_x64_ninja
         - .cmake_build_windows
         - .cmake_build_artifacts
-        - .windows_x86_64_tags_nonconcurrent_vs2022
+        - .windows_x86_64_tags_nonconcurrent_vs2026
         - .run_manually
     variables:
         CMAKE_CI_JOB_CONTINUOUS: "true"
 
-b:windows-vs2022-x64-pch:
+b:windows-vs2026-x64-pch:
     extends:
-        - .windows_vs2022_x64_pch
+        - .windows_vs2026_x64_pch
         - .cmake_build_windows
-        - .windows_x86_64_tags_nonconcurrent_vs2022
+        - .windows_x86_64_tags_nonconcurrent_vs2026
         - .run_manually
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
-t:windows-vs2022-x64-ninja:
+t:windows-vs2026-x64-ninja:
     extends:
-        - .windows_vs2022_x64_ninja
+        - .windows_vs2026_x64_ninja
         - .cmake_test_windows
-        - .windows_x86_64_tags_nonconcurrent_vs2022
+        - .windows_x86_64_tags_nonconcurrent_vs2026
         - .cmake_test_artifacts
         - .run_dependent
     needs:
-        - b:windows-vs2022-x64-ninja
+        - b:windows-vs2026-x64-ninja
     variables:
         CMAKE_CI_JOB_CONTINUOUS: "true"
         CMAKE_CI_JOB_NIGHTLY_NINJA: "true"
 
-t:windows-vs2022-x64-ninja-multi:
+t:windows-vs2026-x64-ninja-multi:
     extends:
-        - .windows_vs2022_x64_ninja_multi
+        - .windows_vs2026_x64_ninja_multi
         - .cmake_test_windows_external
-        - .windows_x86_64_tags_concurrent_vs2022
+        - .windows_x86_64_tags_concurrent_vs2026
         - .cmake_junit_artifacts
         - .run_dependent
     needs:
-        - t:windows-vs2022-x64-ninja
+        - t:windows-vs2026-x64-ninja
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
-.t:windows-vs2022-x64:
+.t:windows-vs2026-x64:
     extends:
-        - .windows_vs2022_x64
+        - .windows_vs2026_x64
         - .cmake_test_windows_external
         - .cmake_junit_artifacts
         - .run_dependent
     needs:
-        - t:windows-vs2022-x64-ninja
+        - t:windows-vs2026-x64-ninja
 
-t:windows-vs2022-x64:
+t:windows-vs2026-x64:
     extends:
-        - .t:windows-vs2022-x64
-        - .windows_x86_64_tags_concurrent_vs2022
+        - .t:windows-vs2026-x64
+        - .windows_x86_64_tags_concurrent_vs2026
     variables:
         CMAKE_CI_JOB_NIGHTLY: "false"
 
-t:windows-vs2022-x64-nightly:
+t:windows-vs2026-x64-nightly:
     extends:
-        - .t:windows-vs2022-x64
-        - .windows_x86_64_tags_concurrent_vs2022_android
+        - .t:windows-vs2026-x64
+        - .windows_x86_64_tags_concurrent_vs2026_android
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
-t:windows-vs2022-x64-i18n:
+t:windows-vs2026-x64-i18n:
     extends:
-        - .t:windows-vs2022-x64
-        - .windows_x86_64_tags_concurrent_vs2022_android
+        - .t:windows-vs2026-x64
+        - .windows_x86_64_tags_concurrent_vs2026_android
     variables:
         GIT_CLONE_PATH: "$CI_BUILDS_DIR\\cmake i18n cï\\$CI_CONCURRENT_ID"
-        CMAKE_CONFIGURATION: windows_vs2022_x64_i18n
+        CMAKE_CONFIGURATION: windows_vs2026_x64_i18n
+        CMAKE_CI_JOB_NIGHTLY: "true"
+
+t:windows-vs2022-x64:
+    extends:
+        - .windows_vs2022_x64
+        - .cmake_test_windows_external
+        - .windows_x86_64_tags_concurrent_vs2022_android
+        - .cmake_junit_artifacts
+        - .run_dependent
+    needs:
+        - t:windows-vs2026-x64-ninja
+    variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
 t:windows-vs2019-x64:
@@ -1356,43 +1368,43 @@ t:windows-vs2019-x64:
         - .cmake_junit_artifacts
         - .run_dependent
     needs:
-        - t:windows-vs2022-x64-ninja
+        - t:windows-vs2026-x64-ninja
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
-t:windows-vs2022-x64-nmake:
+t:windows-vs2026-x64-nmake:
     extends:
-        - .windows_vs2022_x64_nmake
+        - .windows_vs2026_x64_nmake
         - .cmake_test_windows_external
-        - .windows_x86_64_tags_concurrent_vs2022
+        - .windows_x86_64_tags_concurrent_vs2026
         - .cmake_junit_artifacts
         - .run_dependent
     needs:
-        - t:windows-vs2022-x64-ninja
+        - t:windows-vs2026-x64-ninja
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
-t:windows-vs2022-x64-jom:
+t:windows-vs2026-x64-jom:
     extends:
-        - .windows_vs2022_x64_jom
+        - .windows_vs2026_x64_jom
         - .cmake_test_windows_external
-        - .windows_x86_64_tags_concurrent_vs2022
+        - .windows_x86_64_tags_concurrent_vs2026
         - .cmake_junit_artifacts
         - .run_dependent
     needs:
-        - t:windows-vs2022-x64-ninja
+        - t:windows-vs2026-x64-ninja
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
-t:windows-vs2022-x64-fastbuild:
+t:windows-vs2026-x64-fastbuild:
     extends:
-        - .windows_vs2022_x64_fastbuild
+        - .windows_vs2026_x64_fastbuild
         - .cmake_test_windows_external
-        - .windows_x86_64_tags_concurrent_vs2022
+        - .windows_x86_64_tags_concurrent_vs2026
         - .cmake_junit_artifacts
         - .run_dependent
     needs:
-        - t:windows-vs2022-x64-ninja
+        - t:windows-vs2026-x64-ninja
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
@@ -1404,7 +1416,7 @@ t:windows-borland5.5:
         - .cmake_junit_artifacts
         - .run_dependent
     needs:
-        - t:windows-vs2022-x64-ninja
+        - t:windows-vs2026-x64-ninja
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
@@ -1416,7 +1428,7 @@ t:windows-borland5.8:
         - .cmake_junit_artifacts
         - .run_dependent
     needs:
-        - t:windows-vs2022-x64-ninja
+        - t:windows-vs2026-x64-ninja
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
@@ -1424,11 +1436,11 @@ t:windows-clang19.1-cl-ninja:
     extends:
         - .windows_clang_ninja
         - .cmake_test_windows_external
-        - .windows_x86_64_tags_concurrent_vs2022
+        - .windows_x86_64_tags_concurrent_vs2022_msvc14.44
         - .cmake_junit_artifacts
         - .run_dependent
     needs:
-        - t:windows-vs2022-x64-ninja
+        - t:windows-vs2026-x64-ninja
     variables:
         CMAKE_CI_BUILD_NAME: windows_clang19.1_cl_ninja
         CMAKE_CI_JOB_NIGHTLY: "true"
@@ -1437,11 +1449,11 @@ t:windows-clang19.1-cl-nmake:
     extends:
         - .windows_clang_nmake
         - .cmake_test_windows_external
-        - .windows_x86_64_tags_concurrent_vs2022
+        - .windows_x86_64_tags_concurrent_vs2022_msvc14.44
         - .cmake_junit_artifacts
         - .run_dependent
     needs:
-        - t:windows-vs2022-x64-ninja
+        - t:windows-vs2026-x64-ninja
     variables:
         CMAKE_CI_BUILD_NAME: windows_clang19.1_cl_nmake
         CMAKE_CI_JOB_NIGHTLY: "true"
@@ -1450,11 +1462,11 @@ t:windows-clang19.1-gnu-ninja:
     extends:
         - .windows_clang_ninja
         - .cmake_test_windows_external
-        - .windows_x86_64_tags_concurrent_vs2022
+        - .windows_x86_64_tags_concurrent_vs2022_msvc14.44
         - .cmake_junit_artifacts
         - .run_dependent
     needs:
-        - t:windows-vs2022-x64-ninja
+        - t:windows-vs2026-x64-ninja
     variables:
         CMAKE_CI_BUILD_NAME: windows_clang19.1_gnu_ninja
         CMAKE_CI_JOB_NIGHTLY: "true"
@@ -1463,11 +1475,11 @@ t:windows-clang19.1-gnu-nmake:
     extends:
         - .windows_clang_nmake
         - .cmake_test_windows_external
-        - .windows_x86_64_tags_concurrent_vs2022
+        - .windows_x86_64_tags_concurrent_vs2022_msvc14.44
         - .cmake_junit_artifacts
         - .run_dependent
     needs:
-        - t:windows-vs2022-x64-ninja
+        - t:windows-vs2026-x64-ninja
     variables:
         CMAKE_CI_BUILD_NAME: windows_clang19.1_gnu_nmake
         CMAKE_CI_JOB_NIGHTLY: "true"
@@ -1480,7 +1492,7 @@ t:windows-intel2021.9-ninja:
         - .cmake_junit_artifacts
         - .run_dependent
     needs:
-        - t:windows-vs2022-x64-ninja
+        - t:windows-vs2026-x64-ninja
     variables:
         CMAKE_CI_BUILD_NAME: windows_intel2021.9_ninja
         CMAKE_CI_JOB_NIGHTLY: "true"
@@ -1489,11 +1501,11 @@ t:windows-oneapi2025.1-ninja:
     extends:
         - .windows_inteloneapi_ninja
         - .cmake_test_windows_external
-        - .windows_x86_64_tags_concurrent_vs2022
+        - .windows_x86_64_tags_concurrent_vs2022_msvc14.44
         - .cmake_junit_artifacts
         - .run_dependent
     needs:
-        - t:windows-vs2022-x64-ninja
+        - t:windows-vs2026-x64-ninja
     variables:
         CMAKE_CI_BUILD_NAME: windows_oneapi2025.1_ninja
         CMAKE_CI_JOB_NIGHTLY: "true"
@@ -1506,7 +1518,7 @@ t:mingw_osdn_io-mingw_makefiles:
         - .cmake_junit_artifacts
         - .run_dependent
     needs:
-        - t:windows-vs2022-x64-ninja
+        - t:windows-vs2026-x64-ninja
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
@@ -1518,7 +1530,7 @@ t:mingw_osdn_io-msys_makefiles:
         - .cmake_junit_artifacts
         - .run_dependent
     needs:
-        - t:windows-vs2022-x64-ninja
+        - t:windows-vs2026-x64-ninja
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
@@ -1530,7 +1542,7 @@ t:windows-msvc-v71-nmake:
         - .cmake_junit_artifacts
         - .run_dependent
     needs:
-        - t:windows-vs2022-x64-ninja
+        - t:windows-vs2026-x64-ninja
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
@@ -1542,7 +1554,7 @@ t:windows-openwatcom1.9:
         - .cmake_junit_artifacts
         - .run_dependent
     needs:
-        - t:windows-vs2022-x64-ninja
+        - t:windows-vs2026-x64-ninja
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
@@ -1554,31 +1566,43 @@ t:windows-orangec6.73.1:
         - .cmake_junit_artifacts
         - .run_dependent
     needs:
-        - t:windows-vs2022-x64-ninja
+        - t:windows-vs2026-x64-ninja
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
 # Windows arm64 jobs
 
-b:windows-arm64-vs2022-ninja:
+b:windows-arm64-vs2026-ninja:
     extends:
-        - .windows_arm64_vs2022_ninja
+        - .windows_arm64_vs2026_ninja
         - .cmake_build_windows
         - .cmake_build_artifacts
-        - .windows_arm64_tags_nonconcurrent_vs2022
+        - .windows_arm64_tags_nonconcurrent_vs2026
         - .run_manually
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
-t:windows-arm64-vs2022-ninja:
+t:windows-arm64-vs2026-ninja:
     extends:
-        - .windows_arm64_vs2022_ninja
+        - .windows_arm64_vs2026_ninja
         - .cmake_test_windows
-        - .windows_arm64_tags_nonconcurrent_vs2022
+        - .windows_arm64_tags_nonconcurrent_vs2026
         - .cmake_test_artifacts
         - .run_dependent
     needs:
-        - b:windows-arm64-vs2022-ninja
+        - b:windows-arm64-vs2026-ninja
+    variables:
+        CMAKE_CI_JOB_NIGHTLY: "true"
+
+t:windows-arm64-vs2026:
+    extends:
+        - .windows_arm64_vs2026
+        - .cmake_test_windows_external
+        - .windows_arm64_tags_concurrent_vs2026
+        - .cmake_junit_artifacts
+        - .run_dependent
+    needs:
+        - t:windows-arm64-vs2026-ninja
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
@@ -1590,7 +1614,7 @@ t:windows-arm64-vs2022:
         - .cmake_junit_artifacts
         - .run_dependent
     needs:
-        - t:windows-arm64-vs2022-ninja
+        - t:windows-arm64-vs2026-ninja
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
@@ -1601,7 +1625,7 @@ b:windows-x86_64-package:
         - .windows_x86_64_package
         - .cmake_build_windows
         - .cmake_build_package_artifacts
-        - .windows_x86_64_tags_nonconcurrent_vs2022
+        - .windows_x86_64_tags_nonconcurrent_vs2026
         - .run_only_for_package
     needs:
         - p:doc-package
@@ -1632,7 +1656,7 @@ b:windows-i386-package:
         - .windows_i386_package
         - .cmake_build_windows
         - .cmake_build_package_artifacts
-        - .windows_x86_64_tags_nonconcurrent_vs2022
+        - .windows_x86_64_tags_nonconcurrent_vs2026
         - .run_only_for_package
     needs:
         - p:doc-package
@@ -1663,7 +1687,7 @@ b:windows-arm64-package:
         - .windows_arm64_package
         - .cmake_build_windows
         - .cmake_build_package_artifacts
-        - .windows_x86_64_tags_nonconcurrent_vs2022_arm64
+        - .windows_x86_64_tags_nonconcurrent_vs2026_arm64
         - .run_only_for_package
     needs:
         - p:doc-package

+ 4 - 0
.gitlab/ci/configure_windows_arm64_vs2026.cmake

@@ -0,0 +1,4 @@
+set(CMake_TEST_MODULE_COMPILATION "named,partitions,internal_partitions,shared" CACHE STRING "")
+
+include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_msvc_cxx_modules_common.cmake")
+include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_vs_common.cmake")

+ 0 - 0
.gitlab/ci/configure_windows_arm64_vs2022_ninja.cmake → .gitlab/ci/configure_windows_arm64_vs2026_ninja.cmake


+ 0 - 1
.gitlab/ci/configure_windows_vs2022_x64_i18n.cmake

@@ -1 +0,0 @@
-include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_vs2022_x64.cmake")

+ 8 - 0
.gitlab/ci/configure_windows_vs2026_x64.cmake

@@ -0,0 +1,8 @@
+if (NOT "$ENV{CMAKE_CI_NIGHTLY}" STREQUAL "")
+  set(CMake_TEST_ANDROID_VS18 ON CACHE BOOL "")
+endif()
+
+set(CMake_TEST_MODULE_COMPILATION "named,partitions,internal_partitions,shared" CACHE STRING "")
+
+include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_msvc_cxx_modules_common.cmake")
+include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_vs_common.cmake")

+ 0 - 0
.gitlab/ci/configure_windows_vs2022_x64_fastbuild.cmake → .gitlab/ci/configure_windows_vs2026_x64_fastbuild.cmake


+ 1 - 0
.gitlab/ci/configure_windows_vs2026_x64_i18n.cmake

@@ -0,0 +1 @@
+include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_vs2026_x64.cmake")

+ 0 - 0
.gitlab/ci/configure_windows_vs2022_x64_jom.cmake → .gitlab/ci/configure_windows_vs2026_x64_jom.cmake


+ 0 - 0
.gitlab/ci/configure_windows_vs2022_x64_ninja.cmake → .gitlab/ci/configure_windows_vs2026_x64_ninja.cmake


+ 0 - 0
.gitlab/ci/configure_windows_vs2022_x64_ninja_multi.cmake → .gitlab/ci/configure_windows_vs2026_x64_ninja_multi.cmake


+ 0 - 0
.gitlab/ci/configure_windows_vs2022_x64_nmake.cmake → .gitlab/ci/configure_windows_vs2026_x64_nmake.cmake


+ 0 - 0
.gitlab/ci/configure_windows_vs2022_x64_pch.cmake → .gitlab/ci/configure_windows_vs2026_x64_pch.cmake


+ 2 - 1
.gitlab/ci/download_qt.cmake

@@ -36,7 +36,8 @@ elseif ("$ENV{CMAKE_CONFIGURATION}" MATCHES "windows")
     set(qt_abi "win64_msvc${msvc_year}_64")
   elseif ("$ENV{CMAKE_CONFIGURATION}" MATCHES "vs2017" OR
           "$ENV{CMAKE_CONFIGURATION}" MATCHES "vs2019" OR
-          "$ENV{CMAKE_CONFIGURATION}" MATCHES "vs2022")
+          "$ENV{CMAKE_CONFIGURATION}" MATCHES "vs2022" OR
+          "$ENV{CMAKE_CONFIGURATION}" MATCHES "vs2026")
     set(qt_platform "windows_x86")
     set(msvc_year "2019")
     set(qt_abi "win64_msvc${msvc_year}_64")

+ 0 - 0
.gitlab/ci/env_windows_arm64_vs2022_ninja.ps1 → .gitlab/ci/env_windows_arm64_vs2026_ninja.ps1


+ 4 - 0
.gitlab/ci/env_windows_vs2026_x64.ps1

@@ -0,0 +1,4 @@
+if ("$env:CMAKE_CI_NIGHTLY" -eq "true") {
+  $cmake = "build\install\bin\cmake"
+  . ".gitlab/ci/qt-env.ps1"
+}

+ 0 - 0
.gitlab/ci/env_windows_vs2022_x64_fastbuild.ps1 → .gitlab/ci/env_windows_vs2026_x64_fastbuild.ps1


+ 0 - 0
.gitlab/ci/env_windows_vs2022_x64_jom.ps1 → .gitlab/ci/env_windows_vs2026_x64_jom.ps1


+ 0 - 0
.gitlab/ci/env_windows_vs2022_x64_ninja.ps1 → .gitlab/ci/env_windows_vs2026_x64_ninja.ps1


+ 0 - 0
.gitlab/ci/env_windows_vs2022_x64_ninja_multi.ps1 → .gitlab/ci/env_windows_vs2026_x64_ninja_multi.ps1


+ 0 - 0
.gitlab/ci/env_windows_vs2022_x64_nmake.ps1 → .gitlab/ci/env_windows_vs2026_x64_nmake.ps1


+ 101 - 47
.gitlab/os-windows.yml

@@ -37,52 +37,58 @@
         VCVARSPLATFORM: "x64"
         VCVARSVERSION: "14.43.34808"
 
-.windows_vcvarsall_vs2022_x64:
+.windows_vcvarsall_vs2022_x64_msvc14.44:
     variables:
         VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
         VCVARSPLATFORM: "x64"
         VCVARSVERSION: "14.44.35207"
 
-.windows_vcvarsall_vs2022_x86:
+.windows_vcvarsall_vs2026_x64:
     variables:
-        VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
+        VCVARSALL: "${VS180COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
+        VCVARSPLATFORM: "x64"
+        VCVARSVERSION: "14.50.35717"
+
+.windows_vcvarsall_vs2026_x86:
+    variables:
+        VCVARSALL: "${VS180COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
         VCVARSPLATFORM: "x86"
-        VCVARSVERSION: "14.44.35207"
+        VCVARSVERSION: "14.50.35717"
 
-.windows_vcvarsall_vs2022_x64_arm64:
+.windows_vcvarsall_vs2026_x64_arm64:
     variables:
-        VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
+        VCVARSALL: "${VS180COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
         VCVARSPLATFORM: "x64_arm64"
-        VCVARSVERSION: "14.44.35207"
+        VCVARSVERSION: "14.50.35717"
 
-.windows_arm64_vcvarsall_vs2022:
+.windows_arm64_vcvarsall_vs2026:
     variables:
-        VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
+        VCVARSALL: "${VS180COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
         VCVARSPLATFORM: "arm64"
-        VCVARSVERSION: "14.44.35207"
+        VCVARSVERSION: "14.50.35717"
 
-.windows_vs2022_x64_pch:
+.windows_vs2026_x64_pch:
     extends:
-        - .windows_vs2022_x64_ninja
+        - .windows_vs2026_x64_ninja
 
     variables:
-        CMAKE_CONFIGURATION: windows_vs2022_x64_pch
+        CMAKE_CONFIGURATION: windows_vs2026_x64_pch
 
-.windows_vs2022_x64_ninja:
+.windows_vs2026_x64_ninja:
     extends:
         - .windows_build_ninja
-        - .windows_vcvarsall_vs2022_x64
+        - .windows_vcvarsall_vs2026_x64
 
     variables:
-        CMAKE_CONFIGURATION: windows_vs2022_x64_ninja
+        CMAKE_CONFIGURATION: windows_vs2026_x64_ninja
 
-.windows_arm64_vs2022_ninja:
+.windows_arm64_vs2026_ninja:
     extends:
         - .windows_build_ninja
-        - .windows_arm64_vcvarsall_vs2022
+        - .windows_arm64_vcvarsall_vs2026
 
     variables:
-        CMAKE_CONFIGURATION: windows_arm64_vs2022_ninja
+        CMAKE_CONFIGURATION: windows_arm64_vs2026_ninja
 
 .windows_package:
     extends:
@@ -95,7 +101,7 @@
 .windows_x86_64_package:
     extends:
         - .windows_package
-        - .windows_vcvarsall_vs2022_x64
+        - .windows_vcvarsall_vs2026_x64
 
     variables:
         CMAKE_CONFIGURATION: windows_x86_64_package
@@ -103,7 +109,7 @@
 .windows_i386_package:
     extends:
         - .windows_package
-        - .windows_vcvarsall_vs2022_x86
+        - .windows_vcvarsall_vs2026_x86
 
     variables:
         CMAKE_CONFIGURATION: windows_i386_package
@@ -111,13 +117,23 @@
 .windows_arm64_package:
     extends:
         - .windows_package
-        - .windows_vcvarsall_vs2022_x64_arm64
+        - .windows_vcvarsall_vs2026_x64_arm64
 
     variables:
         CMAKE_CONFIGURATION: windows_arm64_package
 
 ### External testing
 
+.windows_vs2026_x64:
+    extends: .windows
+
+    variables:
+        CMAKE_CONFIGURATION: windows_vs2026_x64
+        CMAKE_GENERATOR: "Visual Studio 18 2026"
+        CMAKE_GENERATOR_PLATFORM: "x64"
+        CMAKE_GENERATOR_TOOLSET: "v145,version=14.50.35717"
+        CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
+
 .windows_vs2022_x64:
     extends: .windows
 
@@ -197,42 +213,42 @@
         CMAKE_CI_BUILD_TYPE: Release
         CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
 
-.windows_vs2022_x64_nmake:
+.windows_vs2026_x64_nmake:
     extends:
         - .windows_nmake
-        - .windows_vcvarsall_vs2022_x64
+        - .windows_vcvarsall_vs2026_x64
 
     variables:
-        CMAKE_CONFIGURATION: windows_vs2022_x64_nmake
+        CMAKE_CONFIGURATION: windows_vs2026_x64_nmake
 
-.windows_vs2022_x64_jom:
+.windows_vs2026_x64_jom:
     extends:
         - .windows_jom
-        - .windows_vcvarsall_vs2022_x64
+        - .windows_vcvarsall_vs2026_x64
 
     variables:
-        CMAKE_CONFIGURATION: windows_vs2022_x64_jom
+        CMAKE_CONFIGURATION: windows_vs2026_x64_jom
 
-.windows_vs2022_x64_ninja_multi:
+.windows_vs2026_x64_ninja_multi:
     extends:
         - .windows_ninja_multi
-        - .windows_vcvarsall_vs2022_x64
+        - .windows_vcvarsall_vs2026_x64
 
     variables:
-        CMAKE_CONFIGURATION: windows_vs2022_x64_ninja_multi
+        CMAKE_CONFIGURATION: windows_vs2026_x64_ninja_multi
 
-.windows_vs2022_x64_fastbuild:
+.windows_vs2026_x64_fastbuild:
     extends:
         - .windows_fastbuild
-        - .windows_vcvarsall_vs2022_x64
+        - .windows_vcvarsall_vs2026_x64
 
     variables:
-        CMAKE_CONFIGURATION: windows_vs2022_x64_fastbuild
+        CMAKE_CONFIGURATION: windows_vs2026_x64_fastbuild
 
 .windows_clang_ninja:
     extends:
         - .windows_ninja
-        - .windows_vcvarsall_vs2022_x64
+        - .windows_vcvarsall_vs2022_x64_msvc14.44
 
     variables:
         CMAKE_CONFIGURATION: windows_clang_ninja
@@ -240,7 +256,7 @@
 .windows_clang_nmake:
     extends:
         - .windows_nmake
-        - .windows_vcvarsall_vs2022_x64
+        - .windows_vcvarsall_vs2022_x64_msvc14.44
 
     variables:
         CMAKE_CONFIGURATION: windows_clang_nmake
@@ -262,7 +278,7 @@
 .windows_inteloneapi_ninja:
     extends:
         - .windows_ninja
-        - .windows_vcvarsall_vs2022_x64
+        - .windows_vcvarsall_vs2022_x64_msvc14.44
 
     variables:
         CMAKE_CONFIGURATION: windows_inteloneapi_ninja
@@ -297,6 +313,16 @@
     variables:
         CMAKE_CONFIGURATION: windows_orangec6.73.1
 
+.windows_arm64_vs2026:
+    extends: .windows
+
+    variables:
+        CMAKE_CONFIGURATION: windows_arm64_vs2026
+        CMAKE_GENERATOR: "Visual Studio 18 2026"
+        CMAKE_GENERATOR_PLATFORM: "ARM64"
+        CMAKE_GENERATOR_TOOLSET: "v145,version=14.50.35717"
+        CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
+
 .windows_arm64_vs2022:
     extends: .windows
 
@@ -340,25 +366,44 @@
         - sign-windows-v1
         - nonconcurrent
 
-.windows_x86_64_tags_nonconcurrent_vs2022:
+.windows_x86_64_tags_nonconcurrent_vs2026:
     tags:
         - cmake # Since this is a bare runner, pin to a project.
         - windows-x86_64
         - shell
-        - vs2022
-        - msvc-14.44
+        - vs2026
+        - msvc-14.50
         - nonconcurrent
 
-.windows_x86_64_tags_nonconcurrent_vs2022_arm64:
+.windows_x86_64_tags_nonconcurrent_vs2026_arm64:
     tags:
         - cmake # Since this is a bare runner, pin to a project.
         - windows-x86_64
         - shell
-        - vs2022
-        - msvc-14.44-arm64
+        - vs2026
+        - msvc-14.50-arm64
         - nonconcurrent
 
-.windows_x86_64_tags_concurrent_vs2022:
+.windows_x86_64_tags_concurrent_vs2026:
+    tags:
+        - cmake # Since this is a bare runner, pin to a project.
+        - windows-x86_64
+        - shell
+        - vs2026
+        - msvc-14.50
+        - concurrent
+
+.windows_x86_64_tags_concurrent_vs2026_android:
+    tags:
+        - cmake # Since this is a bare runner, pin to a project.
+        - windows-x86_64
+        - shell
+        - vs2026
+        - vs18-android
+        - msvc-14.50
+        - concurrent
+
+.windows_x86_64_tags_concurrent_vs2022_msvc14.44:
     tags:
         - cmake # Since this is a bare runner, pin to a project.
         - windows-x86_64
@@ -403,15 +448,24 @@
         - shell
         - concurrent
 
-.windows_arm64_tags_nonconcurrent_vs2022:
+.windows_arm64_tags_nonconcurrent_vs2026:
     tags:
         - cmake # Since this is a bare runner, pin to a project.
         - windows-arm64
         - shell
-        - vs2022
-        - msvc-14.44
+        - vs2026
+        - msvc-14.50
         - nonconcurrent
 
+.windows_arm64_tags_concurrent_vs2026:
+    tags:
+        - cmake # Since this is a bare runner, pin to a project.
+        - windows-arm64
+        - shell
+        - vs2026
+        - msvc-14.50
+        - concurrent
+
 .windows_arm64_tags_concurrent_vs2022:
     tags:
         - cmake # Since this is a bare runner, pin to a project.