os-windows.yml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554
  1. # Windows-specific builder configurations and build commands
  2. ## Base configurations
  3. .windows:
  4. variables:
  5. GIT_CLONE_PATH: "$CI_BUILDS_DIR\\cmake ci ext\\$CI_CONCURRENT_ID"
  6. ### Build and test
  7. .windows_build:
  8. extends: .windows
  9. variables:
  10. # Note that shell runners only support runners with a single
  11. # concurrency level. We can't use `$CI_CONCURRENCY_ID` because this may
  12. # change between the build and test stages which CMake doesn't support.
  13. # Even if we could, it could change if other runners on the machine
  14. # could run at the same time, so we drop it.
  15. GIT_CLONE_PATH: "$CI_BUILDS_DIR\\cmake ci"
  16. .windows_build_ninja:
  17. extends: .windows_build
  18. variables:
  19. # Debug and RelWithDebinfo build types use the `/Zi` which results in
  20. # uncacheable compilations.
  21. # https://github.com/mozilla/sccache/issues/242
  22. CMAKE_CI_BUILD_TYPE: Release
  23. CTEST_NO_WARNINGS_ALLOWED: 1
  24. .windows_vcvarsall_vs2022_x64_msvc14.43:
  25. variables:
  26. VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
  27. VCVARSPLATFORM: "x64"
  28. VCVARSVERSION: "14.43.34808"
  29. .windows_vcvarsall_vs2022_x64_msvc14.44:
  30. variables:
  31. VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
  32. VCVARSPLATFORM: "x64"
  33. VCVARSVERSION: "14.44.35207"
  34. .windows_vcvarsall_vs2022_x86_msvc14.44:
  35. variables:
  36. VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
  37. VCVARSPLATFORM: "x86"
  38. VCVARSVERSION: "14.44.35207"
  39. .windows_vcvarsall_vs2026_x64:
  40. variables:
  41. VCVARSALL: "${VS180COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
  42. VCVARSPLATFORM: "x64"
  43. VCVARSVERSION: "14.50.35717"
  44. .windows_vcvarsall_vs2026_x86:
  45. variables:
  46. VCVARSALL: "${VS180COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
  47. VCVARSPLATFORM: "x86"
  48. VCVARSVERSION: "14.50.35717"
  49. .windows_vcvarsall_vs2026_x64_arm64:
  50. variables:
  51. VCVARSALL: "${VS180COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
  52. VCVARSPLATFORM: "x64_arm64"
  53. VCVARSVERSION: "14.50.35717"
  54. .windows_arm64_vcvarsall_vs2026:
  55. variables:
  56. VCVARSALL: "${VS180COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
  57. VCVARSPLATFORM: "arm64"
  58. VCVARSVERSION: "14.50.35717"
  59. .windows_vs2026_x64_pch:
  60. extends:
  61. - .windows_vs2026_x64_ninja
  62. variables:
  63. CMAKE_CONFIGURATION: windows_vs2026_x64_pch
  64. .windows_vs2026_x64_ninja:
  65. extends:
  66. - .windows_build_ninja
  67. - .windows_vcvarsall_vs2026_x64
  68. variables:
  69. CMAKE_CONFIGURATION: windows_vs2026_x64_ninja
  70. .windows_arm64_vs2026_ninja:
  71. extends:
  72. - .windows_build_ninja
  73. - .windows_arm64_vcvarsall_vs2026
  74. variables:
  75. CMAKE_CONFIGURATION: windows_arm64_vs2026_ninja
  76. .windows_package:
  77. extends:
  78. - .windows_build_ninja
  79. variables:
  80. CMAKE_CI_BUILD_TYPE: Release
  81. CMAKE_CI_NO_INSTALL: 1
  82. .windows_x86_64_package:
  83. extends:
  84. - .windows_package
  85. - .windows_vcvarsall_vs2022_x64_msvc14.44
  86. variables:
  87. CMAKE_CONFIGURATION: windows_x86_64_package
  88. .windows_i386_package:
  89. extends:
  90. - .windows_package
  91. - .windows_vcvarsall_vs2022_x86_msvc14.44
  92. variables:
  93. CMAKE_CONFIGURATION: windows_i386_package
  94. .windows_arm64_package:
  95. extends:
  96. - .windows_package
  97. - .windows_vcvarsall_vs2026_x64_arm64
  98. variables:
  99. CMAKE_CONFIGURATION: windows_arm64_package
  100. ### External testing
  101. .windows_vs2026_x64:
  102. extends: .windows
  103. variables:
  104. CMAKE_CONFIGURATION: windows_vs2026_x64
  105. CMAKE_GENERATOR: "Visual Studio 18 2026"
  106. CMAKE_GENERATOR_PLATFORM: "x64"
  107. CMAKE_GENERATOR_TOOLSET: "v145,version=14.50.35717"
  108. CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
  109. .windows_vs2022_x64:
  110. extends: .windows
  111. variables:
  112. CMAKE_CONFIGURATION: windows_vs2022_x64
  113. CMAKE_GENERATOR: "Visual Studio 17 2022"
  114. CMAKE_GENERATOR_PLATFORM: "x64"
  115. CMAKE_GENERATOR_TOOLSET: "v143,version=14.44.35207"
  116. CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
  117. .windows_vs2019_x64:
  118. extends: .windows
  119. variables:
  120. CMAKE_CONFIGURATION: windows_vs2019_x64
  121. CMAKE_GENERATOR: "Visual Studio 16 2019"
  122. CMAKE_GENERATOR_PLATFORM: "x64"
  123. CMAKE_GENERATOR_TOOLSET: "v142,version=14.29.30133"
  124. CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
  125. .windows_borland:
  126. extends: .windows
  127. variables:
  128. CMAKE_GENERATOR: "Borland Makefiles"
  129. CMAKE_CI_BUILD_TYPE: Release
  130. CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
  131. .windows_borland5.5:
  132. extends: .windows_borland
  133. variables:
  134. CMAKE_CONFIGURATION: windows_borland5.5
  135. .windows_borland5.8:
  136. extends: .windows_borland
  137. variables:
  138. CMAKE_CONFIGURATION: windows_borland5.8
  139. .windows_ninja:
  140. extends: .windows
  141. variables:
  142. CMAKE_GENERATOR: "Ninja"
  143. CMAKE_CI_BUILD_TYPE: Release
  144. CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
  145. .windows_ninja_multi:
  146. extends: .windows
  147. variables:
  148. CMAKE_GENERATOR: "Ninja Multi-Config"
  149. CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
  150. .windows_nmake:
  151. extends: .windows
  152. variables:
  153. CMAKE_GENERATOR: "NMake Makefiles"
  154. CMAKE_CI_BUILD_TYPE: Release
  155. CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
  156. .windows_jom:
  157. extends: .windows
  158. variables:
  159. CMAKE_GENERATOR: "NMake Makefiles JOM"
  160. CMAKE_CI_BUILD_TYPE: Release
  161. CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
  162. .windows_fastbuild:
  163. extends: .windows
  164. variables:
  165. CMAKE_GENERATOR: "FASTBuild"
  166. CMAKE_CI_BUILD_TYPE: Release
  167. CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
  168. .windows_vs2026_x64_nmake:
  169. extends:
  170. - .windows_nmake
  171. - .windows_vcvarsall_vs2026_x64
  172. variables:
  173. CMAKE_CONFIGURATION: windows_vs2026_x64_nmake
  174. .windows_vs2026_x64_jom:
  175. extends:
  176. - .windows_jom
  177. - .windows_vcvarsall_vs2026_x64
  178. variables:
  179. CMAKE_CONFIGURATION: windows_vs2026_x64_jom
  180. .windows_vs2026_x64_ninja_multi:
  181. extends:
  182. - .windows_ninja_multi
  183. - .windows_vcvarsall_vs2026_x64
  184. variables:
  185. CMAKE_CONFIGURATION: windows_vs2026_x64_ninja_multi
  186. .windows_vs2026_x64_fastbuild:
  187. extends:
  188. - .windows_fastbuild
  189. - .windows_vcvarsall_vs2026_x64
  190. variables:
  191. CMAKE_CONFIGURATION: windows_vs2026_x64_fastbuild
  192. .windows_clang_ninja:
  193. extends:
  194. - .windows_ninja
  195. - .windows_vcvarsall_vs2022_x64_msvc14.44
  196. variables:
  197. CMAKE_CONFIGURATION: windows_clang_ninja
  198. .windows_clang_nmake:
  199. extends:
  200. - .windows_nmake
  201. - .windows_vcvarsall_vs2022_x64_msvc14.44
  202. variables:
  203. CMAKE_CONFIGURATION: windows_clang_nmake
  204. .windows_msvc_v71_nmake:
  205. extends: .windows_nmake
  206. variables:
  207. CMAKE_CONFIGURATION: windows_msvc_v71_nmake
  208. .windows_intelclassic_ninja:
  209. extends:
  210. - .windows_ninja
  211. - .windows_vcvarsall_vs2022_x64_msvc14.43
  212. variables:
  213. CMAKE_CONFIGURATION: windows_intelclassic_ninja
  214. .windows_inteloneapi_ninja:
  215. extends:
  216. - .windows_ninja
  217. - .windows_vcvarsall_vs2022_x64_msvc14.44
  218. variables:
  219. CMAKE_CONFIGURATION: windows_inteloneapi_ninja
  220. .windows_openwatcom:
  221. extends: .windows
  222. variables:
  223. # Watcom does not support spaces in the path.
  224. GIT_CLONE_PATH: "$CI_BUILDS_DIR\\cmake-ci-ext\\$CI_CONCURRENT_ID"
  225. CMAKE_GENERATOR: "Watcom WMake"
  226. CMAKE_CI_BUILD_TYPE: Release
  227. CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
  228. .windows_openwatcom1.9:
  229. extends: .windows_openwatcom
  230. variables:
  231. CMAKE_CONFIGURATION: windows_openwatcom1.9
  232. .windows_orangec:
  233. extends: .windows
  234. variables:
  235. CMAKE_GENERATOR: "Ninja"
  236. CMAKE_CI_BUILD_TYPE: Release
  237. CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
  238. .windows_orangec6.73.1:
  239. extends: .windows_orangec
  240. variables:
  241. CMAKE_CONFIGURATION: windows_orangec6.73.1
  242. .windows_arm64_vs2026:
  243. extends: .windows
  244. variables:
  245. CMAKE_CONFIGURATION: windows_arm64_vs2026
  246. CMAKE_GENERATOR: "Visual Studio 18 2026"
  247. CMAKE_GENERATOR_PLATFORM: "ARM64"
  248. CMAKE_GENERATOR_TOOLSET: "v145,version=14.50.35717"
  249. CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
  250. .windows_arm64_vs2022:
  251. extends: .windows
  252. variables:
  253. CMAKE_CONFIGURATION: windows_arm64_vs2022
  254. CMAKE_GENERATOR: "Visual Studio 17 2022"
  255. CMAKE_GENERATOR_PLATFORM: "ARM64"
  256. CMAKE_GENERATOR_TOOLSET: "v143,version=14.44.35207"
  257. CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
  258. .mingw_osdn_io:
  259. extends: .windows
  260. variables:
  261. # Place MinGW environment in a path without spaces.
  262. GIT_CLONE_PATH: "$CI_BUILDS_DIR\\cmake-ci-ext\\$CI_CONCURRENT_ID"
  263. CMAKE_CI_BUILD_TYPE: Debug
  264. CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
  265. .mingw_osdn_io_mingw_makefiles:
  266. extends: .mingw_osdn_io
  267. variables:
  268. CMAKE_CONFIGURATION: mingw_osdn_io_mingw_makefiles
  269. CMAKE_GENERATOR: "MinGW Makefiles"
  270. .mingw_osdn_io_msys_makefiles:
  271. extends: .mingw_osdn_io
  272. variables:
  273. CMAKE_CONFIGURATION: mingw_osdn_io_msys_makefiles
  274. CMAKE_GENERATOR: "MSYS Makefiles"
  275. ## Tags
  276. .windows_x86_64_tags_nonconcurrent_sign:
  277. tags:
  278. - cmake # Since this is a bare runner, pin to a project.
  279. - windows-x86_64
  280. - shell
  281. - sign-windows-v1
  282. - nonconcurrent
  283. .windows_x86_64_tags_nonconcurrent_vs2026:
  284. tags:
  285. - cmake # Since this is a bare runner, pin to a project.
  286. - windows-x86_64
  287. - shell
  288. - vs2026
  289. - msvc-14.50
  290. - nonconcurrent
  291. .windows_x86_64_tags_nonconcurrent_vs2026_arm64:
  292. tags:
  293. - cmake # Since this is a bare runner, pin to a project.
  294. - windows-x86_64
  295. - shell
  296. - vs2026
  297. - msvc-14.50-arm64
  298. - nonconcurrent
  299. .windows_x86_64_tags_concurrent_vs2026:
  300. tags:
  301. - cmake # Since this is a bare runner, pin to a project.
  302. - windows-x86_64
  303. - shell
  304. - vs2026
  305. - msvc-14.50
  306. - concurrent
  307. .windows_x86_64_tags_concurrent_vs2026_android:
  308. tags:
  309. - cmake # Since this is a bare runner, pin to a project.
  310. - windows-x86_64
  311. - shell
  312. - vs2026
  313. - vs18-android
  314. - msvc-14.50
  315. - concurrent
  316. .windows_x86_64_tags_nonconcurrent_vs2022_msvc14.44:
  317. tags:
  318. - cmake # Since this is a bare runner, pin to a project.
  319. - windows-x86_64
  320. - shell
  321. - vs2022
  322. - msvc-14.44
  323. - nonconcurrent
  324. .windows_x86_64_tags_concurrent_vs2022_msvc14.44:
  325. tags:
  326. - cmake # Since this is a bare runner, pin to a project.
  327. - windows-x86_64
  328. - shell
  329. - vs2022
  330. - msvc-14.44
  331. - concurrent
  332. .windows_x86_64_tags_concurrent_vs2022_msvc14.43:
  333. tags:
  334. - cmake # Since this is a bare runner, pin to a project.
  335. - windows-x86_64
  336. - shell
  337. - vs2022
  338. - msvc-14.43
  339. - concurrent
  340. .windows_x86_64_tags_concurrent_vs2022_android:
  341. tags:
  342. - cmake # Since this is a bare runner, pin to a project.
  343. - windows-x86_64
  344. - shell
  345. - vs2022
  346. - vs17-android
  347. - msvc-14.44
  348. - concurrent
  349. .windows_x86_64_tags_concurrent_vs2019_android:
  350. tags:
  351. - cmake # Since this is a bare runner, pin to a project.
  352. - windows-x86_64
  353. - shell
  354. - vs2019
  355. - vs16-android
  356. - msvc-19.29-16.11
  357. - concurrent
  358. .windows_x86_64_tags_concurrent:
  359. tags:
  360. - cmake # Since this is a bare runner, pin to a project.
  361. - windows-x86_64
  362. - shell
  363. - concurrent
  364. .windows_arm64_tags_nonconcurrent_vs2026:
  365. tags:
  366. - cmake # Since this is a bare runner, pin to a project.
  367. - windows-arm64
  368. - shell
  369. - vs2026
  370. - msvc-14.50
  371. - nonconcurrent
  372. .windows_arm64_tags_concurrent_vs2026:
  373. tags:
  374. - cmake # Since this is a bare runner, pin to a project.
  375. - windows-arm64
  376. - shell
  377. - vs2026
  378. - msvc-14.50
  379. - concurrent
  380. .windows_arm64_tags_concurrent_vs2022:
  381. tags:
  382. - cmake # Since this is a bare runner, pin to a project.
  383. - windows-arm64
  384. - shell
  385. - vs2022
  386. - msvc-14.44
  387. - concurrent
  388. ## Windows-specific scripts
  389. .before_script_windows: &before_script_windows
  390. - . .gitlab/ci/env.ps1
  391. - . .gitlab/ci/cmake-env.ps1
  392. - . .gitlab/ci/ninja-env.ps1
  393. - . .gitlab/ci/qt-env.ps1
  394. - . .gitlab/ci/python-env.ps1
  395. .before_script_windows_external: &before_script_windows_external
  396. - . .gitlab/ci/env.ps1
  397. - . .gitlab/ci/python-env.ps1
  398. .cmake_build_windows:
  399. stage: build
  400. script:
  401. - *before_script_windows
  402. - . .gitlab/ci/sccache-env.ps1
  403. - Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1
  404. - sccache --start-server
  405. - sccache --show-stats
  406. - (& "$pwsh" -File ".gitlab/ci/pre_configure.ps1")
  407. - ctest -VV -S .gitlab/ci/ctest_configure.cmake
  408. - (& "$pwsh" -File ".gitlab/ci/pre_build.ps1")
  409. - ctest -VV -S .gitlab/ci/ctest_build.cmake
  410. - (& "$pwsh" -File ".gitlab/ci/post_build.ps1")
  411. - sccache --show-stats
  412. # Tolerate already-stopped server.
  413. - (sccache --stop-server)
  414. interruptible: true
  415. .cmake_package_windows:
  416. stage: package
  417. environment:
  418. name: sign-windows
  419. script:
  420. - . .gitlab/ci/env.ps1
  421. - . .gitlab/ci/signtool-env.ps1
  422. - . .gitlab/ci/cmake-env.ps1
  423. - . .gitlab/ci/wix4-env.ps1
  424. - . .gitlab/ci/package_windows.ps1
  425. interruptible: true
  426. .cmake_test_windows:
  427. stage: test
  428. script:
  429. - *before_script_windows
  430. - Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1
  431. - (& "$pwsh" -File ".gitlab/ci/pre_test.ps1")
  432. - ctest --output-on-failure -V -S .gitlab/ci/ctest_test.cmake
  433. interruptible: true
  434. .cmake_test_windows_external:
  435. stage: test-ext
  436. script:
  437. - *before_script_windows_external
  438. - build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake
  439. interruptible: true