os-linux.yml 20 KB

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