Browse Source

ci: add jobs to test GCC 15-to-be with `import std`

Ben Boeckel 10 months ago
parent
commit
2a0ca6a26d

+ 20 - 0
.gitlab-ci.yml

@@ -438,6 +438,26 @@ t:hip5.5-radeon:
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
 
+t:linux-gcc-cxx-modules-ninja:
+    extends:
+        - .gcc_cxx_modules_ninja
+        - .cmake_test_linux_release
+        - .linux_x86_64_tags
+        - .run_dependent
+        - .needs_centos7_x86_64
+    variables:
+        CMAKE_CI_JOB_NIGHTLY: "true"
+
+t:linux-gcc-cxx-modules-ninja-multi:
+    extends:
+        - .gcc_cxx_modules_ninja_multi
+        - .cmake_test_linux_release
+        - .linux_x86_64_tags
+        - .run_dependent
+        - .needs_centos7_x86_64
+    variables:
+        CMAKE_CI_JOB_NIGHTLY: "true"
+
 t:debian10-legacy:
     extends:
         - .debian10_legacy

+ 3 - 0
.gitlab/ci/configure_linux_gcc_cxx_modules_ninja.cmake

@@ -0,0 +1,3 @@
+set(CMake_TEST_MODULE_COMPILATION "named,compile_commands,collation,partitions,internal_partitions,export_bmi,install_bmi,bmionly,build_database,import_std23" CACHE STRING "")
+
+include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

+ 3 - 0
.gitlab/ci/configure_linux_gcc_cxx_modules_ninja_multi.cmake

@@ -0,0 +1,3 @@
+set(CMake_TEST_MODULE_COMPILATION "named,compile_commands,collation,partitions,internal_partitions,export_bmi,install_bmi,bmionly,build_database,import_std23" CACHE STRING "")
+
+include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

+ 9 - 0
.gitlab/ci/docker/gcc_cxx_modules/Dockerfile

@@ -0,0 +1,9 @@
+FROM fedora:41
+MAINTAINER Ben Boeckel <[email protected]>
+
+# Install build dependencies for packages.
+COPY install_deps.sh /root/install_deps.sh
+RUN sh /root/install_deps.sh
+
+COPY install_gcc.sh /root/install_gcc.sh
+RUN sh /root/install_gcc.sh

+ 7 - 0
.gitlab/ci/docker/gcc_cxx_modules/install_deps.sh

@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+
+dnf install -y --setopt=install_weak_deps=False \
+    gcc-c++ mpfr-devel libmpc-devel isl-devel flex bison file findutils diffutils git-core
+dnf clean all

+ 25 - 0
.gitlab/ci/docker/gcc_cxx_modules/install_gcc.sh

@@ -0,0 +1,25 @@
+#!/bin/sh
+
+set -e
+
+readonly revision="10e702789eeabcc88451e34c2a5c7dccb96190a5" # master as of 21 Nov 2024
+readonly tarball="git://gcc.gnu.org/git/gcc.git"
+
+readonly workdir="$HOME/gcc"
+readonly srcdir="$workdir/gcc"
+readonly builddir="$workdir/build"
+readonly njobs="$( nproc )"
+
+mkdir -p "$workdir"
+cd "$workdir"
+git clone "$tarball" "$srcdir"
+git -C "$srcdir" checkout "$revision"
+mkdir -p "$builddir"
+cd "$builddir"
+"$srcdir/configure" \
+    --disable-multilib \
+    --enable-languages=c,c++ \
+    --prefix="/opt/gcc-importstd"
+make "-j$njobs"
+make "-j$njobs" install-strip
+rm -rf "$workdir"

+ 24 - 0
.gitlab/os-linux.yml

@@ -452,6 +452,30 @@
         CMAKE_CONFIGURATION: hip5.5_nvidia
         CTEST_LABELS: "HIP"
 
+### C++ modules
+
+.gcc_cxx_modules_x86_64:
+    image: "kitware/cmake:ci-gcc_cxx_modules-x86_64-2024-12-23"
+
+    variables:
+        GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
+        CMAKE_ARCH: x86_64
+        CC: "/opt/gcc-importstd/bin/gcc"
+        CXX: "/opt/gcc-importstd/bin/g++"
+
+.gcc_cxx_modules_ninja:
+    extends: .gcc_cxx_modules_x86_64
+
+    variables:
+        CMAKE_CONFIGURATION: linux_gcc_cxx_modules_ninja
+
+.gcc_cxx_modules_ninja_multi:
+    extends: .gcc_cxx_modules_x86_64
+
+    variables:
+        CMAKE_CONFIGURATION: linux_gcc_cxx_modules_ninja_multi
+        CMAKE_GENERATOR: "Ninja Multi-Config"
+
 ### Debian 10 legacy packages
 
 .debian10: