|  | # Base configuration for linux cross-compilation. | 
|  | .build:linux:cross: | 
|  | extends: .common:linux:cross | 
|  | stage: build | 
|  | variables: | 
|  | EIGEN_CI_BUILD_TARGET: buildtests | 
|  | script: | 
|  | - . ci/scripts/build.linux.script.sh | 
|  | tags: | 
|  | - linux | 
|  | - eigen-runner | 
|  | - cross-compiler | 
|  | rules: | 
|  | - if: $CI_PIPELINE_SOURCE == "schedule" && $CI_PROJECT_NAMESPACE == "libeigen" | 
|  | - if: $CI_PIPELINE_SOURCE == "web" && $CI_PROJECT_NAMESPACE == "libeigen" | 
|  | - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_PROJECT_NAMESPACE == "libeigen" && $CI_MERGE_REQUEST_LABELS =~ "/all-tests/" | 
|  | cache: | 
|  | key: "$CI_JOB_NAME_SLUG-$CI_COMMIT_REF_SLUG-BUILD" | 
|  | paths: | 
|  | - ${EIGEN_CI_BUILDDIR}/ | 
|  |  | 
|  | ######## x86-64 ################################################################ | 
|  |  | 
|  | .build:linux:cross:x86-64: | 
|  | extends: .build:linux:cross | 
|  | variables: | 
|  | EIGEN_CI_TARGET_ARCH: x86_64 | 
|  | EIGEN_CI_CROSS_TARGET_TRIPLE: x86_64-linux-gnu | 
|  |  | 
|  | # GCC-6 (minimum on Ubuntu 18.04) | 
|  | build:linux:cross:x86-64:gcc-6:default: | 
|  | extends: .build:linux:cross:x86-64 | 
|  | image: ubuntu:18.04 | 
|  | variables: | 
|  | EIGEN_CI_C_COMPILER: gcc-6 | 
|  | EIGEN_CI_CXX_COMPILER: g++-6 | 
|  | EIGEN_CI_CROSS_INSTALL: g++-6-x86-64-linux-gnu | 
|  | EIGEN_CI_CROSS_C_COMPILER: x86_64-linux-gnu-gcc-6 | 
|  | EIGEN_CI_CROSS_CXX_COMPILER: x86_64-linux-gnu-g++-6 | 
|  |  | 
|  | # GCC-10 (stable recent version) | 
|  | build:linux:cross:x86-64:gcc-10:default: | 
|  | extends: .build:linux:cross:x86-64 | 
|  | variables: | 
|  | EIGEN_CI_C_COMPILER: gcc-10 | 
|  | EIGEN_CI_CXX_COMPILER: g++-10 | 
|  | EIGEN_CI_CROSS_INSTALL: g++-10-x86-64-linux-gnu | 
|  | EIGEN_CI_CROSS_C_COMPILER: x86_64-linux-gnu-gcc-10 | 
|  | EIGEN_CI_CROSS_CXX_COMPILER: x86_64-linux-gnu-g++-10 | 
|  |  | 
|  | build:linux:cross:x86-64:gcc-10:avx: | 
|  | extends: build:linux:cross:x86-64:gcc-10:default | 
|  | variables: | 
|  | EIGEN_CI_ADDITIONAL_ARGS: "-DEIGEN_TEST_AVX=on" | 
|  |  | 
|  | build:linux:cross:x86-64:gcc-10:avx2: | 
|  | extends: build:linux:cross:x86-64:gcc-10:default | 
|  | variables: | 
|  | EIGEN_CI_ADDITIONAL_ARGS: "-DEIGEN_TEST_AVX2=on" | 
|  |  | 
|  | build:linux:cross:x86-64:gcc-10:avx512dq: | 
|  | extends: build:linux:cross:x86-64:gcc-10:default | 
|  | variables: | 
|  | EIGEN_CI_ADDITIONAL_ARGS: "-DEIGEN_TEST_AVX512DQ=on" | 
|  |  | 
|  | # Clang-6 (minimum on Ubuntu 20.04) | 
|  | build:linux:cross:x86-64:clang-6:default: | 
|  | extends: .build:linux:cross:x86-64 | 
|  | image: ubuntu:20.04 | 
|  | variables: | 
|  | EIGEN_CI_INSTALL: g++-8 clang-6.0 lld-6.0 | 
|  | EIGEN_CI_C_COMPILER: clang-6.0 | 
|  | EIGEN_CI_CXX_COMPILER: clang++-6.0 | 
|  | EIGEN_CI_CROSS_INSTALL: g++-8-x86-64-linux-gnu clang-6.0 lld-6.0 | 
|  | EIGEN_CI_ADDITIONAL_ARGS: -DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld-6.0 | 
|  |  | 
|  | # Clang-12 (stable recent version) | 
|  | build:linux:cross:x86-64:clang-12:default: | 
|  | extends: .build:linux:cross:x86-64 | 
|  | variables: | 
|  | EIGEN_CI_INSTALL: clang-12 | 
|  | EIGEN_CI_C_COMPILER: clang-12 | 
|  | EIGEN_CI_CXX_COMPILER: clang++-12 | 
|  | EIGEN_CI_CROSS_INSTALL: g++-10-x86-64-linux-gnu clang-12 | 
|  |  | 
|  | build:linux:cross:x86-64:clang-12:avx: | 
|  | extends: build:linux:cross:x86-64:clang-12:default | 
|  | variables: | 
|  | EIGEN_CI_ADDITIONAL_ARGS: "-DEIGEN_TEST_AVX=on" | 
|  |  | 
|  | build:linux:cross:x86-64:clang-12:avx2: | 
|  | extends: build:linux:cross:x86-64:clang-12:default | 
|  | variables: | 
|  | EIGEN_CI_ADDITIONAL_ARGS: "-DEIGEN_TEST_AVX2=on" | 
|  |  | 
|  | build:linux:cross:x86-64:clang-12:avx512dq: | 
|  | extends: build:linux:cross:x86-64:clang-12:default | 
|  | variables: | 
|  | EIGEN_CI_ADDITIONAL_ARGS: "-DEIGEN_TEST_AVX512DQ=on" | 
|  |  | 
|  | build:linux:docs: | 
|  | extends: .build:linux:cross | 
|  | variables: | 
|  | EIGEN_CI_TARGET_ARCH: any | 
|  | EIGEN_CI_BUILD_TARGET: doc | 
|  | EIGEN_CI_INSTALL: ca-certificates clang flex python3 bison graphviz | 
|  | EIGEN_CI_C_COMPILER: clang | 
|  | EIGEN_CI_CXX_COMPILER: clang++ | 
|  | EIGEN_CI_BEFORE_SCRIPT: ". ci/scripts/build_and_install_doxygen.sh Release_1_13_2" | 
|  | rules: | 
|  | - if: $CI_PIPELINE_SOURCE == "schedule" && $CI_PROJECT_NAMESPACE == "libeigen" | 
|  | - if: $CI_PIPELINE_SOURCE == "web" && $CI_PROJECT_NAMESPACE == "libeigen" | 
|  | - if: $CI_PIPELINE_SOURCE == "push" && $CI_PROJECT_NAMESPACE == "libeigen" | 
|  | - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_PROJECT_NAMESPACE == "libeigen" && $CI_MERGE_REQUEST_LABELS =~ "/all-tests/" | 
|  |  | 
|  |  | 
|  | # # Sanitizers (Disabled because ASAN hangs and MSAN requires instrumented libc++) | 
|  | # build:linux:cross:x86-64:clang-12:default:asan: | 
|  | #   extends: build:linux:cross:x86-64:clang-12:default | 
|  | #   variables: | 
|  | #     EIGEN_CI_ADDITIONAL_ARGS: | 
|  | #       -DEIGEN_TEST_CUSTOM_CXX_FLAGS=-fsanitize=address,undefined | 
|  | #       -DEIGEN_TEST_CUSTOM_LINKER_FLAGS=-fsanitize=address,undefined | 
|  |  | 
|  | # build:linux:cross:x86-64:clang-12:default:msan: | 
|  | #   extends: build:linux:cross:x86-64:clang-12:default | 
|  | #   variables: | 
|  | #     EIGEN_CI_ADDITIONAL_ARGS: | 
|  | #       -DEIGEN_TEST_CUSTOM_CXX_FLAGS=-fsanitize=memory | 
|  | #       -DEIGEN_TEST_CUSTOM_LINKER_FLAGS=-fsanitize=memory | 
|  |  | 
|  | ######## CUDA ################################################################## | 
|  |  | 
|  | .build:linux:cuda: | 
|  | extends: .build:linux:cross:x86-64 | 
|  | variables: | 
|  | # Additional flags passed to the cuda compiler. | 
|  | EIGEN_CI_CUDA_CXX_FLAGS: "" | 
|  | # Compute architectures present in the GitLab CI runners. | 
|  | EIGEN_CI_CUDA_COMPUTE_ARCH: "50;75" | 
|  | EIGEN_CI_BUILD_TARGET: buildtests_gpu | 
|  | EIGEN_CI_TEST_CUDA_CLANG: "off" | 
|  | EIGEN_CI_ADDITIONAL_ARGS: | 
|  | -DEIGEN_TEST_CUDA=on | 
|  | -DEIGEN_CUDA_CXX_FLAGS=${EIGEN_CI_CUDA_CXX_FLAGS} | 
|  | -DEIGEN_CUDA_COMPUTE_ARCH=${EIGEN_CI_CUDA_COMPUTE_ARCH} | 
|  | -DEIGEN_TEST_CUDA_CLANG=${EIGEN_CI_TEST_CUDA_CLANG} | 
|  | tags: | 
|  | - eigen-runner | 
|  | - linux | 
|  | # Requires intel runner for cuda docker image support. | 
|  | - x86-64 | 
|  |  | 
|  | # NVidia no longer provides docker images < CUDA 11.0.3. | 
|  | # # GCC-7, CUDA-9.2 | 
|  | # build:linux:cuda-9.2:gcc-7: | 
|  | #   extends: .build:linux:cuda | 
|  | #   image: nvidia/cuda:9.2-devel-ubuntu18.04 | 
|  | #   variables: | 
|  | #     # cuda 9.2 doesn't support sm_75, so lower to 70. | 
|  | #     EIGEN_CI_CUDA_COMPUTE_ARCH: "50;70" | 
|  | #     EIGEN_CI_C_COMPILER: gcc-7 | 
|  | #     EIGEN_CI_CXX_COMPILER: g++-7 | 
|  |  | 
|  | # # Clang-10, CUDA-9.2 | 
|  | # build:linux:cuda-9.2:clang-10: | 
|  | #   extends: build:linux:cuda-9.2:gcc-7 | 
|  | #   variables: | 
|  | #     EIGEN_CI_C_COMPILER: clang-10 | 
|  | #     EIGEN_CI_CXX_COMPILER: clang++-10 | 
|  | #     EIGEN_CI_TEST_CUDA_CLANG: "on" | 
|  |  | 
|  | # # GCC-8, CUDA-10.2 | 
|  | # build:linux:cuda-10.2:gcc-8: | 
|  | #   extends: .build:linux:cuda | 
|  | #   image: nvidia/cuda:10.2-devel-ubuntu18.04 | 
|  | #   variables: | 
|  | #     EIGEN_CI_C_COMPILER: gcc-8 | 
|  | #     EIGEN_CI_CXX_COMPILER: g++-8 | 
|  |  | 
|  | # # Clang-10, CUDA-10.2 | 
|  | # build:linux:cuda-10.2:clang-10: | 
|  | #   extends: build:linux:cuda-10.2:gcc-8 | 
|  | #   variables: | 
|  | #     EIGEN_CI_C_COMPILER: clang-10 | 
|  | #     EIGEN_CI_CXX_COMPILER: clang++-10 | 
|  | #     EIGEN_CI_TEST_CUDA_CLANG: "on" | 
|  |  | 
|  | # GCC-10, CUDA-11.4 | 
|  | build:linux:cuda-11.4:gcc-10: | 
|  | extends: .build:linux:cuda | 
|  | image: nvidia/cuda:11.4.3-devel-ubuntu20.04 | 
|  | variables: | 
|  | EIGEN_CI_C_COMPILER: gcc-10 | 
|  | EIGEN_CI_CXX_COMPILER: g++-10 | 
|  |  | 
|  | # Clang-12, CUDA-11.4 | 
|  | build:linux:cuda-11.4:clang-12: | 
|  | extends: build:linux:cuda-11.4:gcc-10 | 
|  | variables: | 
|  | EIGEN_CI_C_COMPILER: clang-12 | 
|  | EIGEN_CI_CXX_COMPILER: clang++-12 | 
|  | EIGEN_CI_TEST_CUDA_CLANG: "on" | 
|  |  | 
|  | # GCC-10, CUDA-12.2 | 
|  | build:linux:cuda-12.2:gcc-10: | 
|  | extends: .build:linux:cuda | 
|  | image: nvidia/cuda:12.2.0-devel-ubuntu20.04 | 
|  | variables: | 
|  | EIGEN_CI_C_COMPILER: gcc-10 | 
|  | EIGEN_CI_CXX_COMPILER: g++-10 | 
|  |  | 
|  | # Clang-12, CUDA-12.2 | 
|  | build:linux:cuda-12.2:clang-12: | 
|  | extends: build:linux:cuda-12.2:gcc-10 | 
|  | variables: | 
|  | EIGEN_CI_C_COMPILER: clang-12 | 
|  | EIGEN_CI_CXX_COMPILER: clang++-12 | 
|  | EIGEN_CI_TEST_CUDA_CLANG: "on" | 
|  |  | 
|  | # ######## HIP ################################################################### | 
|  | # Note: these are currently build-only, until we get an AMD-supported runner. | 
|  |  | 
|  | # ROCm HIP | 
|  | build:linux:rocm-latest:gcc-10: | 
|  | extends: .build:linux:cross | 
|  | image: rocm/dev-ubuntu-24.04:latest | 
|  | variables: | 
|  | EIGEN_CI_C_COMPILER: gcc-10 | 
|  | EIGEN_CI_CXX_COMPILER: g++-10 | 
|  | EIGEN_CI_BUILD_TARGET: buildtests_gpu | 
|  | EIGEN_CI_ADDITIONAL_ARGS: -DEIGEN_TEST_HIP=on | 
|  | tags: | 
|  | - eigen-runner | 
|  | - linux | 
|  | - x86-64 | 
|  |  | 
|  | ######## Arm ################################################################### | 
|  |  | 
|  | .build:linux:cross:arm: | 
|  | extends: .build:linux:cross | 
|  | variables: | 
|  | EIGEN_CI_TARGET_ARCH: arm | 
|  | EIGEN_CI_CROSS_TARGET_TRIPLE: arm-linux-gnueabihf | 
|  | EIGEN_CI_ADDITIONAL_ARGS: > | 
|  | -DEIGEN_TEST_CUSTOM_CXX_FLAGS=-march=armv7-a;-mfpu=neon-vfpv4 | 
|  |  | 
|  | build:linux:cross:arm:gcc-10:default: | 
|  | extends: .build:linux:cross:arm | 
|  | variables: | 
|  | EIGEN_CI_CROSS_INSTALL: g++-10-arm-linux-gnueabihf | 
|  | EIGEN_CI_CROSS_C_COMPILER: arm-linux-gnueabihf-gcc-10 | 
|  | EIGEN_CI_CROSS_CXX_COMPILER: arm-linux-gnueabihf-g++-10 | 
|  |  | 
|  | build:linux:cross:arm:clang-12:default: | 
|  | extends: .build:linux:cross:arm | 
|  | variables: | 
|  | EIGEN_CI_INSTALL: clang-12 | 
|  | EIGEN_CI_C_COMPILER: clang-12 | 
|  | EIGEN_CI_CXX_COMPILER: clang++-12 | 
|  | EIGEN_CI_CROSS_INSTALL: g++-10-arm-linux-gnueabihf clang-12 | 
|  |  | 
|  | ######## aarch64 ############################################################### | 
|  |  | 
|  | .build:linux:cross:aarch64: | 
|  | extends: .build:linux:cross | 
|  | variables: | 
|  | EIGEN_CI_TARGET_ARCH: aarch64 | 
|  | EIGEN_CI_CROSS_TARGET_TRIPLE: aarch64-linux-gnu | 
|  | EIGEN_CI_ADDITIONAL_ARGS: -DEIGEN_TEST_CUSTOM_CXX_FLAGS=-march=armv8.2-a+fp16 | 
|  |  | 
|  | build:linux:cross:aarch64:gcc-10:default: | 
|  | extends: .build:linux:cross:aarch64 | 
|  | variables: | 
|  | EIGEN_CI_C_COMPILER: gcc-10 | 
|  | EIGEN_CI_CXX_COMPILER: g++-10 | 
|  | EIGEN_CI_CROSS_INSTALL: g++-10-aarch64-linux-gnu | 
|  | EIGEN_CI_CROSS_C_COMPILER: aarch64-linux-gnu-gcc-10 | 
|  | EIGEN_CI_CROSS_CXX_COMPILER: aarch64-linux-gnu-g++-10 | 
|  |  | 
|  | build:linux:cross:aarch64:clang-12:default: | 
|  | extends: .build:linux:cross:aarch64 | 
|  | variables: | 
|  | EIGEN_CI_INSTALL: clang-12 | 
|  | EIGEN_CI_C_COMPILER: clang-12 | 
|  | EIGEN_CI_CXX_COMPILER: clang++-12 | 
|  | EIGEN_CI_CROSS_INSTALL: g++-10-aarch64-linux-gnu clang-12 | 
|  |  | 
|  | ######## ppc64le ############################################################### | 
|  |  | 
|  | .build:linux:cross:ppc64le: | 
|  | extends: .build:linux:cross | 
|  | variables: | 
|  | EIGEN_CI_TARGET_ARCH: ppc64le | 
|  | EIGEN_CI_CROSS_TARGET_TRIPLE: powerpc64le-linux-gnu | 
|  |  | 
|  | build:linux:cross:ppc64le:gcc-10:default: | 
|  | extends: .build:linux:cross:ppc64le | 
|  | variables: | 
|  | EIGEN_CI_C_COMPILER: gcc-10 | 
|  | EIGEN_CI_CXX_COMPILER: g++-10 | 
|  | EIGEN_CI_CROSS_INSTALL: g++-10-powerpc64le-linux-gnu | 
|  | EIGEN_CI_CROSS_C_COMPILER: powerpc64le-linux-gnu-gcc-10 | 
|  | EIGEN_CI_CROSS_CXX_COMPILER: powerpc64le-linux-gnu-g++-10 | 
|  | # Temporarily disable MMA until #2457 is resolved. | 
|  | EIGEN_CI_ADDITIONAL_ARGS: "-DEIGEN_ALTIVEC_DISABLE_MMA=1" | 
|  |  | 
|  | build:linux:cross:ppc64le:clang-12:default: | 
|  | extends: .build:linux:cross:ppc64le | 
|  | variables: | 
|  | EIGEN_CI_INSTALL: clang-12 | 
|  | EIGEN_CI_C_COMPILER: clang-12 | 
|  | EIGEN_CI_CXX_COMPILER: clang++-12 | 
|  | EIGEN_CI_CROSS_INSTALL: g++-10-powerpc64le-linux-gnu clang-12 | 
|  |  | 
|  | ######## loongarch64 ################################################# | 
|  |  | 
|  | .build:linux:cross:loongarch64: | 
|  | extends: .build:linux:cross | 
|  | variables: | 
|  | EIGEN_CI_TARGET_ARCH: loongarch64 | 
|  | EIGEN_CI_CROSS_TARGET_TRIPLE: loongarch64-linux-gnu | 
|  | tags: | 
|  | - eigen-runner | 
|  | - linux | 
|  | - cross-compiler | 
|  |  | 
|  | # GCC-14 (minimum on Ubuntu 24) | 
|  | build:linux:cross:loongarch64:gcc-14:default: | 
|  | extends: .build:linux:cross:loongarch64 | 
|  | image: ubuntu:24.04 | 
|  | variables: | 
|  | EIGEN_CI_CROSS_INSTALL: g++-14-loongarch64-linux-gnu | 
|  | EIGEN_CI_CROSS_C_COMPILER: loongarch64-linux-gnu-gcc-14 | 
|  | EIGEN_CI_CROSS_CXX_COMPILER: loongarch64-linux-gnu-g++-14 | 
|  | EIGEN_CI_ADDITIONAL_ARGS: >- | 
|  | -DCMAKE_SYSTEM_NAME=Linux | 
|  | -DCMAKE_CROSSCOMPILING_EMULATOR=qemu-loongarch64-static;-L;/usr/loongarch64-linux-gnu | 
|  | -DEIGEN_TEST_LSX=on | 
|  |  | 
|  | ######## MR Smoke Tests ######################################################## | 
|  |  | 
|  | build:linux:cross:x86-64:gcc-10:default:smoketest: | 
|  | extends: build:linux:cross:x86-64:gcc-10:default | 
|  | variables: | 
|  | EIGEN_CI_BUILD_TARGET: buildsmoketests | 
|  | rules: | 
|  | - if: $CI_PIPELINE_SOURCE == "merge_request_event" | 
|  |  | 
|  | build:linux:cross:x86-64:clang-12:default:smoketest: | 
|  | extends: build:linux:cross:x86-64:clang-12:default | 
|  | variables: | 
|  | EIGEN_CI_BUILD_TARGET: buildsmoketests | 
|  | rules: | 
|  | - if: $CI_PIPELINE_SOURCE == "merge_request_event" |