os-linux.yml 20 KB

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