os-linux.yml 20 KB

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