os-linux.yml 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948
  1. # Linux-specific builder configurations and build commands
  2. ## Base images
  3. ### Release
  4. .linux_prep_source:
  5. image: "fedora:43"
  6. variables:
  7. GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
  8. .linux_release_x86_64:
  9. image: "kitware/cmake:build-linux-x86_64-deps-2023-08-16@sha256:aa0ebdbd90a51cc83d31f393c5c48ec4599a28f7ccdc288558522c6265b24fae"
  10. variables:
  11. GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
  12. LAUNCHER: "scl enable devtoolset-7 --"
  13. CMAKE_ARCH: x86_64
  14. .linux_release_aarch64:
  15. image: "kitware/cmake:build-linux-aarch64-deps-2020-12-21@sha256:0bd7dfe4e45593b04e39cd21e44011034610cfd376900558c5ef959bb1af15af"
  16. variables:
  17. GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
  18. LAUNCHER: "scl enable devtoolset-7 --"
  19. CMAKE_ARCH: aarch64
  20. .linux_package:
  21. variables:
  22. BOOTSTRAP_ARGS: '-- "-DCMake_DOC_ARTIFACT_PREFIX=$CI_PROJECT_DIR/build/install-doc"'
  23. .sunos_release_x86_64:
  24. image: "kitware/cmake:build-sunos-x86_64-deps-2025-02-27"
  25. variables:
  26. GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
  27. CMAKE_ARCH: x86_64
  28. .sunos_release_sparc64:
  29. image: "kitware/cmake:build-sunos-sparc64-deps-2025-02-27"
  30. variables:
  31. GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
  32. CMAKE_ARCH: sparc64
  33. .sunos_package:
  34. variables:
  35. CMake_DOC_ARTIFACT_PREFIX: "$CI_PROJECT_DIR/build/install-doc"
  36. .needs_centos7_x86_64:
  37. needs:
  38. - b:centos7-x86_64
  39. .needs_centos7_aarch64:
  40. needs:
  41. - b:centos7-aarch64
  42. ### Debian
  43. .debian13:
  44. image: "kitware/cmake:ci-debian13-x86_64-2025-11-11"
  45. variables:
  46. GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
  47. CMAKE_ARCH: x86_64
  48. .debian13_iwyu:
  49. extends: .debian13
  50. variables:
  51. CMAKE_CONFIGURATION: debian13_iwyu
  52. CTEST_NO_WARNINGS_ALLOWED: 1
  53. CMAKE_CI_NO_INSTALL: 1
  54. .debian13_aarch64:
  55. image: "kitware/cmake:ci-debian13-aarch64-2025-11-11"
  56. variables:
  57. GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
  58. CMAKE_ARCH: aarch64
  59. ### Fedora
  60. .fedora43:
  61. image: "kitware/cmake:ci-fedora43-x86_64-2025-11-06"
  62. variables:
  63. GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci/long file name for testing purposes"
  64. CMAKE_ARCH: x86_64
  65. .fedora43_hip:
  66. image: "kitware/cmake:ci-fedora43-hip-x86_64-2025-10-29"
  67. variables:
  68. # FIXME(rocclr): device modules fail loading from binaries in paths with spaces
  69. GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake-ci"
  70. CMAKE_ARCH: x86_64
  71. #### Coverage builds
  72. .fedora43_gcc_gcov:
  73. extends: .fedora43
  74. variables:
  75. # See issue #20001
  76. CMAKE_GENERATOR: "Unix Makefiles"
  77. CMAKE_CONFIGURATION: fedora43_gcc_gcov
  78. CTEST_NO_WARNINGS_ALLOWED: 1
  79. CMAKE_CI_BUILD_TYPE: Debug
  80. CMAKE_CI_TEST_TIMEOUT: "1500"
  81. CMAKE_CI_NO_INSTALL: 1
  82. .fedora43_bullseye_coverage:
  83. extends: .fedora43
  84. environment:
  85. name: bullseye-coverage
  86. variables:
  87. # See issue #20001
  88. CMAKE_GENERATOR: "Unix Makefiles"
  89. CMAKE_CONFIGURATION: fedora43_bullseye_coverage
  90. CTEST_NO_WARNINGS_ALLOWED: 1
  91. CMAKE_CI_BUILD_TYPE: Debug
  92. CMAKE_CI_TEST_TIMEOUT: "1500"
  93. CMAKE_CI_NO_INSTALL: 1
  94. #### Lint builds
  95. .fedora43_tidy:
  96. extends: .fedora43
  97. variables:
  98. CMAKE_CONFIGURATION: fedora43_tidy
  99. CMAKE_CI_NO_INSTALL: 1
  100. .fedora43_clang_analyzer:
  101. extends: .fedora43
  102. variables:
  103. CMAKE_CONFIGURATION: fedora43_clang_analyzer
  104. CMAKE_CI_BUILD_TYPE: Debug
  105. CTEST_NO_WARNINGS_ALLOWED: 1
  106. CMAKE_CI_NO_INSTALL: 1
  107. .fedora43_clazy:
  108. extends: .fedora43
  109. variables:
  110. CMAKE_CONFIGURATION: fedora43_clazy
  111. CMAKE_CI_BUILD_TYPE: Debug
  112. CTEST_NO_WARNINGS_ALLOWED: 1
  113. CMAKE_CI_NO_INSTALL: 1
  114. .fedora43_sphinx:
  115. extends: .fedora43
  116. variables:
  117. CMAKE_CONFIGURATION: fedora43_sphinx
  118. CTEST_NO_WARNINGS_ALLOWED: 1
  119. CTEST_SOURCE_SUBDIRECTORY: "Utilities/Sphinx"
  120. CMAKE_CI_NO_INSTALL: 1
  121. .fedora43_sphinx_package:
  122. extends: .fedora43
  123. variables:
  124. CMAKE_CONFIGURATION: fedora43_sphinx_package
  125. CTEST_SOURCE_SUBDIRECTORY: "Utilities/Sphinx"
  126. #### Build and test
  127. .debian13_ninja:
  128. extends: .debian13
  129. variables:
  130. CMAKE_CONFIGURATION: debian13_ninja
  131. CTEST_NO_WARNINGS_ALLOWED: 1
  132. .debian13_aarch64_ninja:
  133. extends: .debian13_aarch64
  134. variables:
  135. CMAKE_CONFIGURATION: debian13_aarch64_ninja
  136. CTEST_NO_WARNINGS_ALLOWED: 1
  137. .debian13_makefiles_inplace:
  138. extends: .debian13
  139. variables:
  140. CMAKE_CONFIGURATION: debian13_makefiles_inplace
  141. CMAKE_GENERATOR: "Unix Makefiles"
  142. CMAKE_CI_BOOTSTRAP: 1
  143. CMAKE_CI_INPLACE: 1
  144. CMAKE_CI_NO_INSTALL: 1
  145. CTEST_NO_WARNINGS_ALLOWED: 1
  146. .debian13_ninja_multi_symlinked:
  147. extends: .debian13
  148. variables:
  149. CMAKE_CONFIGURATION: debian13_ninja_multi_symlinked
  150. CMAKE_GENERATOR: "Ninja Multi-Config"
  151. CTEST_NO_WARNINGS_ALLOWED: 1
  152. CMAKE_CI_IN_SYMLINK_TREE: 1
  153. CMAKE_CI_BUILD_DIR: "real_work/work/build"
  154. .debian13_extdeps:
  155. extends: .debian13
  156. variables:
  157. CMAKE_CONFIGURATION: debian13_extdeps
  158. CMAKE_CI_BUILD_TYPE: Release
  159. CTEST_NO_WARNINGS_ALLOWED: 1
  160. .debian13_aarch64_extdeps:
  161. extends: .debian13_aarch64
  162. variables:
  163. CMAKE_CONFIGURATION: debian13_aarch64_extdeps
  164. CMAKE_CI_BUILD_TYPE: Release
  165. CTEST_NO_WARNINGS_ALLOWED: 1
  166. .fedora43_extdeps:
  167. extends: .fedora43
  168. variables:
  169. CMAKE_CONFIGURATION: fedora43_extdeps
  170. CMAKE_CI_BUILD_TYPE: Release
  171. CTEST_NO_WARNINGS_ALLOWED: 1
  172. .fedora43_ninja:
  173. extends: .fedora43
  174. variables:
  175. CMAKE_CONFIGURATION: fedora43_ninja
  176. CMAKE_CI_BUILD_TYPE: Release
  177. CTEST_NO_WARNINGS_ALLOWED: 1
  178. .fedora43_ninja_multi:
  179. extends: .fedora43
  180. variables:
  181. CMAKE_CONFIGURATION: fedora43_ninja_multi
  182. CTEST_NO_WARNINGS_ALLOWED: 1
  183. CMAKE_GENERATOR: "Ninja Multi-Config"
  184. .fedora43_makefiles:
  185. extends: .fedora43
  186. variables:
  187. CMAKE_CONFIGURATION: fedora43_makefiles
  188. CTEST_NO_WARNINGS_ALLOWED: 1
  189. CMAKE_GENERATOR: "Unix Makefiles"
  190. .fedora43_makefiles_symlinked:
  191. extends: .fedora43
  192. variables:
  193. CMAKE_CONFIGURATION: fedora43_makefiles_symlinked
  194. CTEST_NO_WARNINGS_ALLOWED: 1
  195. CMAKE_GENERATOR: "Unix Makefiles"
  196. CMAKE_CI_IN_SYMLINK_TREE: 1
  197. CMAKE_CI_BUILD_DIR: "real_work/work/build"
  198. .fedora43_fastbuild:
  199. extends: .fedora43
  200. variables:
  201. CMAKE_CONFIGURATION: fedora43_fastbuild
  202. CTEST_NO_WARNINGS_ALLOWED: 1
  203. CMAKE_GENERATOR: "FASTBuild"
  204. ### Clang Compiler
  205. .debian13_makefiles_clang:
  206. extends: .debian13
  207. variables:
  208. CMAKE_CONFIGURATION: debian13_makefiles_clang
  209. CMAKE_GENERATOR: "Unix Makefiles"
  210. .debian13_ninja_clang:
  211. extends: .debian13
  212. variables:
  213. CMAKE_CONFIGURATION: debian13_ninja_clang
  214. .fedora43_makefiles_clang:
  215. extends: .fedora43
  216. variables:
  217. CMAKE_CONFIGURATION: fedora43_makefiles_clang
  218. CMAKE_GENERATOR: "Unix Makefiles"
  219. .fedora43_makefiles_lfortran:
  220. extends: .fedora43
  221. variables:
  222. # FIXME(lfortran): -rpath flags with spaces not forwarded
  223. GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake-ci"
  224. CMAKE_CONFIGURATION: fedora43_makefiles_lfortran
  225. CMAKE_GENERATOR: "Unix Makefiles"
  226. CTEST_LABELS: "Fortran"
  227. .fedora43_ninja_lfortran:
  228. extends: .fedora43
  229. variables:
  230. # FIXME(lfortran): -rpath flags with spaces not forwarded
  231. GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake-ci"
  232. CMAKE_CONFIGURATION: fedora43_ninja_lfortran
  233. CTEST_LABELS: "Fortran"
  234. .fedora43_ninja_clang:
  235. extends: .fedora43
  236. variables:
  237. CMAKE_CONFIGURATION: fedora43_ninja_clang
  238. .fedora43_ninja_multi_clang:
  239. extends: .fedora43
  240. variables:
  241. CMAKE_CONFIGURATION: fedora43_ninja_multi_clang
  242. CMAKE_GENERATOR: "Ninja Multi-Config"
  243. ### Sanitizers
  244. .fedora_memcheck:
  245. variables:
  246. CMAKE_CI_BUILD_TYPE: RelWithDebInfo
  247. .fedora_asan_addon:
  248. extends: .fedora_memcheck
  249. variables:
  250. CTEST_MEMORYCHECK_TYPE: AddressSanitizer
  251. CTEST_MEMORYCHECK_SANITIZER_OPTIONS: ""
  252. .fedora_valgrind_addon:
  253. extends: .fedora_memcheck
  254. variables:
  255. CTEST_MEMORYCHECK_TYPE: Valgrind
  256. CMAKE_CI_RUN_MEMCHECK: "true"
  257. CMAKE_CI_TEST_TIMEOUT: "1500"
  258. CMAKE_VALGRIND_CONFIGURATION: fedora43
  259. .fedora43_asan:
  260. extends:
  261. - .fedora43
  262. - .fedora_asan_addon
  263. variables:
  264. CMAKE_CONFIGURATION: fedora43_asan
  265. .fedora43_ninja_valgrind:
  266. extends:
  267. - .fedora43
  268. - .fedora_valgrind_addon
  269. variables:
  270. CMAKE_CONFIGURATION: fedora43_ninja_valgrind
  271. ### Intel Compiler
  272. .intelcompiler:
  273. image: "kitware/intelcompiler:$CMAKE_CI_INTELCOMPILER_IMAGE_TAG"
  274. environment:
  275. name: intel-compiler
  276. variables:
  277. CMAKE_ARCH: x86_64
  278. .intelclassic_makefiles:
  279. extends: .intelcompiler
  280. variables:
  281. CMAKE_CONFIGURATION: intelclassic_makefiles
  282. CMAKE_GENERATOR: "Unix Makefiles"
  283. .inteloneapi_makefiles:
  284. extends: .intelcompiler
  285. variables:
  286. CMAKE_CONFIGURATION: inteloneapi_makefiles
  287. CMAKE_GENERATOR: "Unix Makefiles"
  288. ### NVHPC Compiler
  289. .nvhpc:
  290. image: "kitware/cmake:ci-nvhpc24.9-x86_64-2024-09-27"
  291. variables:
  292. CMAKE_ARCH: x86_64
  293. CMAKE_CUDA_ARCHITECTURES_NATIVE_CLAMP: 1
  294. .nvhpc_ninja:
  295. extends: .nvhpc
  296. variables:
  297. CMAKE_CONFIGURATION: nvhpc_ninja
  298. ### CUDA builds
  299. .cuda:
  300. variables:
  301. GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
  302. CTEST_LABELS: "CUDA"
  303. CMAKE_CUDA_ARCHITECTURES_NATIVE_CLAMP: 1
  304. .cuda9.2:
  305. extends: .cuda
  306. image: "kitware/cmake:ci-cuda9.2-x86_64-2021-10-01"
  307. variables:
  308. CMAKE_ARCH: x86_64
  309. .cuda9.2_nvidia:
  310. extends: .cuda9.2
  311. variables:
  312. CMAKE_CONFIGURATION: cuda9.2_nvidia
  313. CMAKE_GENERATOR: "Ninja Multi-Config"
  314. .cuda10.2:
  315. extends: .cuda
  316. image: "kitware/cmake:ci-cuda10.2-x86_64-2021-06-16"
  317. variables:
  318. CMAKE_ARCH: x86_64
  319. .cuda10.2_nvidia:
  320. extends: .cuda10.2
  321. variables:
  322. CMAKE_CONFIGURATION: cuda10.2_nvidia
  323. CTEST_NO_WARNINGS_ALLOWED: 1
  324. .cuda10.2_clang:
  325. extends: .cuda10.2
  326. variables:
  327. CMAKE_CONFIGURATION: cuda10.2_clang
  328. CTEST_NO_WARNINGS_ALLOWED: 1
  329. .cuda11.6:
  330. extends: .cuda
  331. image: "kitware/cmake:ci-cuda11.6-x86_64-2022-02-28"
  332. variables:
  333. CMAKE_ARCH: x86_64
  334. .cuda11.6_nvidia:
  335. extends: .cuda11.6
  336. variables:
  337. CMAKE_CONFIGURATION: cuda11.6_nvidia
  338. CTEST_NO_WARNINGS_ALLOWED: 1
  339. .cuda11.6_clang:
  340. extends: .cuda11.6
  341. variables:
  342. CMAKE_CONFIGURATION: cuda11.6_clang
  343. CTEST_NO_WARNINGS_ALLOWED: 1
  344. .cuda11.8_minimal:
  345. extends: .cuda
  346. image: "kitware/cmake:ci-cuda11.8-minimal-x86_64-2022-12-06"
  347. variables:
  348. CMAKE_ARCH: x86_64
  349. .cuda11.8_minimal_nvidia:
  350. extends: .cuda11.8_minimal
  351. variables:
  352. CMAKE_CONFIGURATION: cuda11.8_minimal_nvidia
  353. CTEST_NO_WARNINGS_ALLOWED: 1
  354. .cuda11.8_splayed_nvidia:
  355. extends: .cuda11.8_minimal
  356. variables:
  357. CMAKE_CONFIGURATION: cuda11.8_splayed_nvidia
  358. CTEST_NO_WARNINGS_ALLOWED: 1
  359. .cuda12.2:
  360. extends: .cuda
  361. image: "kitware/cmake:ci-cuda12.2-x86_64-2024-09-25"
  362. variables:
  363. CMAKE_ARCH: x86_64
  364. .cuda12.2_nvidia:
  365. extends: .cuda12.2
  366. variables:
  367. CMAKE_CONFIGURATION: cuda12.2_nvidia
  368. CTEST_NO_WARNINGS_ALLOWED: 1
  369. .cuda12.2_clang:
  370. extends: .cuda12.2
  371. variables:
  372. CMAKE_CONFIGURATION: cuda12.2_clang
  373. CTEST_NO_WARNINGS_ALLOWED: 1
  374. .cuda12.6:
  375. extends: .cuda
  376. image: "kitware/cmake:ci-cuda12.6-x86_64-2025-01-30"
  377. variables:
  378. CMAKE_ARCH: x86_64
  379. .cuda12.6_nvidia:
  380. extends: .cuda12.6
  381. variables:
  382. CMAKE_CONFIGURATION: cuda12.6_nvidia
  383. CTEST_NO_WARNINGS_ALLOWED: 1
  384. .cuda12.6_nvidia_clang:
  385. extends: .cuda12.6
  386. variables:
  387. CMAKE_CONFIGURATION: cuda12.6_nvidia_clang
  388. CTEST_NO_WARNINGS_ALLOWED: 1
  389. .cuda12.6_clang:
  390. extends: .cuda12.6
  391. variables:
  392. CMAKE_CONFIGURATION: cuda12.6_clang
  393. CTEST_NO_WARNINGS_ALLOWED: 1
  394. .cuda13.0:
  395. extends: .cuda
  396. image: "kitware/cmake:ci-cuda13.0-x86_64-2025-10-20"
  397. variables:
  398. CMAKE_ARCH: x86_64
  399. .cuda13.0_nvidia:
  400. extends: .cuda13.0
  401. variables:
  402. CMAKE_CONFIGURATION: cuda13.0_nvidia
  403. CTEST_NO_WARNINGS_ALLOWED: 1
  404. .cuda13.0_nvidia_fastbuild:
  405. extends: .cuda13.0
  406. variables:
  407. CMAKE_CONFIGURATION: cuda13.0_nvidia_fastbuild
  408. CTEST_NO_WARNINGS_ALLOWED: 1
  409. CMAKE_GENERATOR: "FASTBuild"
  410. ### HIP builds
  411. .hip6.3:
  412. image: "kitware/cmake:ci-hip6.3-x86_64-2025-02-14"
  413. variables:
  414. GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
  415. CMAKE_ARCH: x86_64
  416. CTEST_LABELS: "HIP"
  417. .hip6.3_radeon:
  418. extends: .hip6.3
  419. variables:
  420. # FIXME(rocclr): device modules fail loading from binaries in paths with spaces
  421. GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake-ci"
  422. CMAKE_CONFIGURATION: hip6.3_radeon
  423. CMAKE_GENERATOR: "Ninja Multi-Config"
  424. .debian13_hip_radeon:
  425. extends: .debian13
  426. variables:
  427. CMAKE_CONFIGURATION: debian13_hip_radeon
  428. CTEST_LABELS: "HIP"
  429. .fedora43_hip_radeon:
  430. extends: .fedora43_hip
  431. variables:
  432. CMAKE_CONFIGURATION: fedora43_hip_radeon
  433. CTEST_LABELS: "HIP"
  434. .hip6.3_nvidia:
  435. extends: .hip6.3
  436. variables:
  437. CMAKE_CONFIGURATION: hip6.3_nvidia
  438. CTEST_LABELS: "HIP"
  439. ### C++ modules
  440. .gcc_cxx_modules_x86_64:
  441. image: "kitware/cmake:ci-gcc_cxx_modules-x86_64-2024-12-23"
  442. variables:
  443. GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
  444. CMAKE_ARCH: x86_64
  445. CC: "/opt/gcc-importstd/bin/gcc"
  446. CXX: "/opt/gcc-importstd/bin/g++"
  447. .gcc_cxx_modules_ninja:
  448. extends: .gcc_cxx_modules_x86_64
  449. variables:
  450. CMAKE_CONFIGURATION: linux_gcc_cxx_modules_ninja
  451. .gcc_cxx_modules_reloc_ninja:
  452. extends: .gcc_cxx_modules_x86_64
  453. variables:
  454. CMAKE_CONFIGURATION: linux_gcc_cxx_modules_reloc_ninja
  455. CTEST_LABELS: "CXXModules"
  456. .gcc_cxx_modules_ninja_multi:
  457. extends: .gcc_cxx_modules_x86_64
  458. variables:
  459. CMAKE_CONFIGURATION: linux_gcc_cxx_modules_ninja_multi
  460. CMAKE_GENERATOR: "Ninja Multi-Config"
  461. ### Debian 10 legacy packages
  462. .debian10:
  463. image: "kitware/cmake:ci-debian10-x86_64-2023-07-31"
  464. variables:
  465. GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
  466. CMAKE_ARCH: x86_64
  467. .debian10_legacy:
  468. extends: .debian10
  469. variables:
  470. CMAKE_CONFIGURATION: debian10_legacy
  471. CTEST_LABELS: "Python2"
  472. ## Tags
  473. .linux_x86_64_tags:
  474. tags:
  475. - cmake
  476. - build
  477. - docker
  478. - linux-x86_64
  479. .linux_x86_64_v3_tags:
  480. tags:
  481. - cmake
  482. - build
  483. - docker
  484. - linux-x86_64-v3
  485. .linux_x86_64_tags_x11:
  486. tags:
  487. - cmake
  488. - docker
  489. - linux-x86_64
  490. - x11
  491. .linux_x86_64_tags_fast_x11:
  492. tags:
  493. - cmake
  494. - docker
  495. - linux-x86_64-v4
  496. - x11
  497. .linux_x86_64_tags_cuda_arch_30:
  498. tags:
  499. - cmake
  500. - cuda-arch-30
  501. - docker
  502. - linux-x86_64
  503. .linux_x86_64_tags_cuda_arch_52:
  504. tags:
  505. - cmake
  506. - cuda-arch-52
  507. - docker
  508. - linux-x86_64
  509. .linux_x86_64_v3_tags_cuda_arch_52:
  510. tags:
  511. - cmake
  512. - cuda-arch-52
  513. - docker
  514. - linux-x86_64-v3
  515. .linux_x86_64_tags_cuda_arch_75:
  516. tags:
  517. - cmake
  518. - cuda-arch-75
  519. - docker
  520. - linux-x86_64
  521. .linux_x86_64_tags_rocm5.7:
  522. tags:
  523. - cmake
  524. - radeon
  525. - rocm-5.7
  526. - docker
  527. - linux-x86_64
  528. .linux_x86_64_tags_rocm6.2:
  529. tags:
  530. - cmake
  531. - radeon
  532. - rocm-6.2
  533. - docker
  534. - linux-x86_64
  535. .linux_x86_64_tags_rocm6.3:
  536. tags:
  537. - cmake
  538. - radeon
  539. - rocm-6.3
  540. - docker
  541. - linux-x86_64
  542. .linux_aarch64_tags:
  543. tags:
  544. - cmake
  545. - build
  546. - docker
  547. - linux-aarch64
  548. ## Linux-specific scripts
  549. .before_script_linux: &before_script_linux
  550. - source .gitlab/ci/env.sh
  551. - source .gitlab/ci/cmake-env.sh
  552. - source .gitlab/ci/ninja-env.sh
  553. .cmake_prep_source_linux:
  554. stage: prep
  555. script:
  556. - *before_script_linux
  557. - dnf install --setopt=install_weak_deps=False -y git-core
  558. - v="$(.gitlab/ci/cmake_version.sh)"
  559. - mkdir -p build/
  560. - git archive --format=tgz --prefix="cmake-$v/" -o "build/cmake-$v.tar.gz" HEAD
  561. - git archive --format=zip --prefix="cmake-$v/" -o "build/cmake-$v.zip" HEAD
  562. interruptible: true
  563. .cmake_prep_doc_linux:
  564. stage: prep
  565. script:
  566. - *before_script_linux
  567. - "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_configure.cmake"
  568. - "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_build.cmake"
  569. interruptible: true
  570. .cmake_version_update_linux:
  571. stage: build
  572. extends: .fedora43
  573. script:
  574. - .gitlab/ci/cmake_version_update.sh
  575. interruptible: false # The job internally fetches and retries.
  576. .cmake_spellcheck_linux:
  577. stage: build
  578. extends: .fedora43
  579. script:
  580. - .gitlab/ci/codespell.bash
  581. - .gitlab/ci/typos.bash
  582. interruptible: true
  583. .cmake_build_linux:
  584. stage: build
  585. script:
  586. - *before_script_linux
  587. - .gitlab/ci/sccache.sh
  588. - sccache --start-server
  589. - sccache --show-stats
  590. - .gitlab/ci/pre_configure.sh
  591. - "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_configure.cmake"
  592. - .gitlab/ci/pre_build.sh
  593. - "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_build.cmake"
  594. - .gitlab/ci/post_build.sh
  595. - sccache --show-stats
  596. interruptible: true
  597. .cmake_test_linux:
  598. stage: test
  599. script:
  600. - *before_script_linux
  601. - .gitlab/ci/pre_test.sh
  602. - "$LAUNCHER ctest --output-on-failure -V -S .gitlab/ci/ctest_test.cmake"
  603. interruptible: true
  604. .cmake_memcheck_linux:
  605. stage: test
  606. script:
  607. - *before_script_linux
  608. - "$LAUNCHER ctest --output-on-failure -V -S .gitlab/ci/ctest_memcheck.cmake"
  609. interruptible: true
  610. .cmake_coverage_linux:
  611. stage: test
  612. script:
  613. - *before_script_linux
  614. - "$LAUNCHER ctest --output-on-failure -V -S .gitlab/ci/ctest_coverage.cmake"
  615. coverage: '/Percentage Coverage: \d+.\d+%/'
  616. interruptible: true
  617. .cmake_build_linux_release:
  618. stage: build
  619. script:
  620. - source .gitlab/ci/env.sh
  621. # Bootstrap.
  622. - mkdir -p build/
  623. - cp Utilities/Release/linux/$CMAKE_ARCH/cache.txt build/CMakeCache.txt
  624. # Make sccache available.
  625. - source .gitlab/ci/sccache-env.sh
  626. # Append sccache settings to the cache.
  627. - echo "CMAKE_C_COMPILER_LAUNCHER:STRING=sccache" >> build/CMakeCache.txt
  628. - echo "CMAKE_CXX_COMPILER_LAUNCHER:STRING=sccache" >> build/CMakeCache.txt
  629. # CI settings.
  630. - echo "CMake_TEST_INSTALL:BOOL=OFF" >> build/CMakeCache.txt
  631. - echo "CMAKE_INSTALL_PREFIX:PATH=$PWD/build/install" >> build/CMakeCache.txt
  632. - echo "CMAKE_SKIP_INSTALL_ALL_DEPENDENCY:BOOL=ON" >> build/CMakeCache.txt
  633. # Appease Git. The Git in this container is old (1.7) and doesn't
  634. # understand some things. But, it doesn't need to, so make it blind.
  635. - mkdir -p .git/info
  636. - echo "* -crlf" >> .git/info/attributes
  637. - git reset --hard
  638. # Bootstrap
  639. - cd build/
  640. - '$LAUNCHER ../bootstrap --parallel=$(nproc) --docdir=doc/cmake $BOOTSTRAP_ARGS'
  641. # FIXME: When CTest can drive an external CMake for the build as well,
  642. # use the scripts here.
  643. - "$LAUNCHER make -j$(nproc)"
  644. # NOTE: This regex matches that used in the release build.
  645. - "$LAUNCHER bin/ctest --output-on-failure -j$(nproc) -R '^(CMake\\.|CMakeLib\\.|RunCMake\\.ctest_memcheck)'"
  646. # Make a package.
  647. - bin/cpack -G TGZ
  648. - bin/cpack -G STGZ
  649. - sccache --show-stats
  650. interruptible: true
  651. .cmake_build_linux_standalone:
  652. stage: build
  653. script:
  654. - *before_script_linux
  655. - .gitlab/ci/sccache.sh
  656. - sccache --start-server
  657. - sccache --show-stats
  658. - "$LAUNCHER ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake"
  659. - sccache --show-stats
  660. interruptible: true
  661. .cmake_test_linux_release:
  662. stage: test-ext
  663. script:
  664. - *before_script_linux
  665. # Make the CMake package available.
  666. - mkdir -p build/install
  667. - tar -C build/install --strip-components=1 -xzf build/cmake-*-linux-$CMAKE_ARCH.tar.gz
  668. - .gitlab/ci/sccache.sh
  669. - sccache --start-server
  670. - sccache --show-stats
  671. - "$LAUNCHER build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake"
  672. - sccache --show-stats
  673. interruptible: true
  674. .cmake_test_linux_external:
  675. stage: test-ext
  676. script:
  677. - *before_script_linux
  678. - .gitlab/ci/sccache.sh
  679. - sccache --start-server
  680. - sccache --show-stats
  681. - "$LAUNCHER build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake"
  682. - sccache --show-stats
  683. interruptible: true
  684. .cmake_test_linux_intelclassic_makefiles:
  685. extends:
  686. - .intelclassic_makefiles
  687. - .cmake_test_linux_release
  688. - .linux_x86_64_tags
  689. - .run_manually
  690. - .needs_centos7_x86_64
  691. variables:
  692. CMAKE_CI_JOB_NIGHTLY: "true"
  693. CMAKE_CI_NO_MR: "true"
  694. .cmake_test_linux_inteloneapi_makefiles:
  695. extends:
  696. - .inteloneapi_makefiles
  697. - .cmake_test_linux_release
  698. - .linux_x86_64_tags
  699. - .run_manually
  700. - .needs_centos7_x86_64
  701. variables:
  702. CMAKE_CI_JOB_NIGHTLY: "true"
  703. .cmake_build_sunos_release:
  704. stage: build
  705. script:
  706. - *before_script_linux
  707. # SunOS sysroot
  708. - Utilities/Release/sunos/docker/sysroot.bash $CMAKE_ARCH
  709. # Initial cache
  710. - mkdir -p build/
  711. - cp Utilities/Release/sunos/$CMAKE_ARCH/cache.txt build/CMakeCache.txt
  712. # Make sccache available.
  713. - source .gitlab/ci/sccache-env.sh
  714. - echo "CMAKE_C_COMPILER_LAUNCHER:STRING=sccache" >> build/CMakeCache.txt
  715. - echo "CMAKE_CXX_COMPILER_LAUNCHER:STRING=sccache" >> build/CMakeCache.txt
  716. # Build
  717. - cd build/
  718. - cmake .. -GNinja
  719. -DCMAKE_DOC_DIR=doc/cmake
  720. -DCMake_DOC_ARTIFACT_PREFIX="$CMake_DOC_ARTIFACT_PREFIX"
  721. -DCMAKE_TOOLCHAIN_FILE="$CI_PROJECT_DIR/Utilities/Release/sunos/$CMAKE_ARCH/toolchain.cmake"
  722. - ninja
  723. # Package
  724. - cpack -G "TGZ;STGZ"
  725. - sccache --show-stats
  726. interruptible: true
  727. ### Documentation
  728. .cmake_org_help:
  729. stage: build
  730. extends:
  731. - .fedora43
  732. - .linux_x86_64_tags
  733. - .cmake_org_help_artifacts
  734. script:
  735. - *before_script_linux
  736. - mkdir -p build/
  737. - cd build/
  738. - cmake ../Utilities/Sphinx -GNinja
  739. -DSPHINX_HTML=ON
  740. -DSPHINX_QTHELP=$CMAKE_CI_SPHINX_QTHELP
  741. -DCMake_SPHINX_CMAKE_ORG=ON
  742. -DCMake_SPHINX_CMAKE_ORG_OUTDATED=$CMAKE_CI_SPHINX_OUTDATED
  743. -DCMake_VERSION_NO_GIT=$CMAKE_CI_VERSION_NO_GIT
  744. - ninja