| # Base configuration for linux cross-compilation. |
| # SPDX-FileCopyrightText: The Eigen Authors |
| # SPDX-License-Identifier: MPL-2.0 |
| .build:linux:cross: |
| needs: [] |
| extends: .common:linux:cross |
| stage: build |
| variables: |
| EIGEN_CI_BUILD_TARGET: buildtests |
| EIGEN_CI_SKIP_APT: "false" |
| script: |
| - . ci/scripts/build.linux.script.sh |
| tags: |
| - saas-linux-2xlarge-amd64 |
| 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-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 |
| |
| # GCC-13 for AVX512-FP16 (_Float16 support). |
| build:linux:cross:x86-64:gcc-13:default: |
| extends: .build:linux:cross:x86-64 |
| variables: |
| EIGEN_CI_C_COMPILER: gcc-13 |
| EIGEN_CI_CXX_COMPILER: g++-13 |
| EIGEN_CI_CROSS_INSTALL: g++-13-x86-64-linux-gnu |
| EIGEN_CI_CROSS_C_COMPILER: x86_64-linux-gnu-gcc-13 |
| EIGEN_CI_CROSS_CXX_COMPILER: x86_64-linux-gnu-g++-13 |
| |
| 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" |
| |
| # AVX512-FP16 builds are split into official/unsupported because building all |
| # tests exceeds the 3-hour GitLab SaaS shared-runner timeout. |
| .build:linux:cross:x86-64:gcc-13:avx512fp16: |
| extends: build:linux:cross:x86-64:gcc-13:default |
| # Disable cache: uploading the build directory takes ~35 minutes and the |
| # savings from cache hits do not compensate for the upload cost. |
| cache: [] |
| variables: |
| # Force -O2 via EIGEN_TEST_CUSTOM_CXX_FLAGS (appended after the default |
| # Release -O3 -DNDEBUG; last -O wins). GCC bug at -O3 generates invalid |
| # masked vmovsh with {z} on memory stores for _Float16 operations |
| # (zero-masking on memory destinations is architecturally illegal in |
| # AVX-512). |
| EIGEN_CI_ADDITIONAL_ARGS: "-DEIGEN_TEST_AVX512FP16=on -DEIGEN_TEST_AVX512DQ=on -DEIGEN_TEST_F16C=on -DEIGEN_TEST_CUSTOM_CXX_FLAGS=-O2" |
| |
| build:linux:cross:x86-64:gcc-13:avx512fp16:official: |
| extends: .build:linux:cross:x86-64:gcc-13:avx512fp16 |
| variables: |
| EIGEN_CI_BUILD_TARGET: BuildOfficial |
| |
| build:linux:cross:x86-64:gcc-13:avx512fp16:unsupported: |
| extends: .build:linux:cross:x86-64:gcc-13:avx512fp16 |
| variables: |
| EIGEN_CI_BUILD_TARGET: BuildUnsupported |
| |
| # Clang-14 (stable recent version) |
| build:linux:cross:x86-64:clang-14:default: |
| extends: .build:linux:cross:x86-64 |
| variables: |
| EIGEN_CI_INSTALL: clang-14 |
| EIGEN_CI_C_COMPILER: clang-14 |
| EIGEN_CI_CXX_COMPILER: clang++-14 |
| EIGEN_CI_CROSS_INSTALL: g++-10-x86-64-linux-gnu clang-14 |
| |
| build:linux:cross:x86-64:clang-14:avx2: |
| extends: build:linux:cross:x86-64:clang-14:default |
| variables: |
| EIGEN_CI_ADDITIONAL_ARGS: "-DEIGEN_TEST_AVX2=on" |
| |
| build:linux:cross:x86-64:clang-14:avx512dq: |
| extends: build:linux:cross:x86-64:clang-14:default |
| variables: |
| EIGEN_CI_ADDITIONAL_ARGS: "-DEIGEN_TEST_AVX512DQ=on" |
| |
| # Generic vector extension backend. |
| build:linux:cross:x86-64:clang-19:generic:avx512dq: |
| extends: build:linux:cross:x86-64:clang-14:default |
| variables: |
| EIGEN_CI_INSTALL: clang-19 |
| EIGEN_CI_C_COMPILER: clang-19 |
| EIGEN_CI_CXX_COMPILER: clang++-19 |
| EIGEN_CI_CROSS_INSTALL: g++-14-x86-64-linux-gnu clang-19 |
| EIGEN_CI_ADDITIONAL_ARGS: > |
| -DEIGEN_TEST_CUSTOM_CXX_FLAGS=-mfma;-mavx512dq;-DEIGEN_VECTORIZE_GENERIC=1 |
| |
| # Nightly and all-tests full test suite in C++20 mode. |
| build:linux:cross:x86-64:clang-19:cxx20:nightly: |
| extends: .build:linux:cross:x86-64 |
| variables: |
| EIGEN_CI_INSTALL: clang-19 |
| EIGEN_CI_C_COMPILER: clang-19 |
| EIGEN_CI_CXX_COMPILER: clang++-19 |
| EIGEN_CI_CROSS_INSTALL: g++-14-x86-64-linux-gnu clang-19 |
| EIGEN_CI_ADDITIONAL_ARGS: >- |
| -DCMAKE_CXX_STANDARD=20 |
| rules: |
| - if: $CI_PIPELINE_SOURCE == "schedule" && $CI_PROJECT_NAMESPACE == "libeigen" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH |
| - 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/" |
| |
| 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" |
| tags: |
| - saas-linux-medium-amd64 |
| 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" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH |
| - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_PROJECT_NAMESPACE == "libeigen" && $CI_MERGE_REQUEST_LABELS =~ "/all-tests/" |
| |
| |
| ######## Sanitizers ############################################################ |
| |
| # ASAN/UBSAN builds are split into official/unsupported because the |
| # instrumented executables are too large to upload as a single artifact. |
| .build:linux:cross:x86-64:clang-19:default:asan-ubsan: |
| extends: .build:linux:cross:x86-64 |
| # Disable cache for ASAN builds: instrumented .o files are so large that |
| # downloading the cache can take longer than a clean build from scratch. |
| cache: [] |
| timeout: 2h |
| variables: |
| EIGEN_CI_INSTALL: clang-19 libclang-rt-19-dev |
| EIGEN_CI_C_COMPILER: clang-19 |
| EIGEN_CI_CXX_COMPILER: clang++-19 |
| EIGEN_CI_CROSS_INSTALL: g++-14-x86-64-linux-gnu clang-19 libclang-rt-19-dev |
| EIGEN_CI_ADDITIONAL_ARGS: >- |
| -DEIGEN_TEST_CUSTOM_CXX_FLAGS=-fsanitize=address,undefined;-fno-omit-frame-pointer;-fno-sanitize-recover=undefined |
| -DEIGEN_TEST_CUSTOM_LINKER_FLAGS=-fsanitize=address,undefined |
| |
| build:linux:cross:x86-64:clang-19:default:asan-ubsan:official: |
| extends: .build:linux:cross:x86-64:clang-19:default:asan-ubsan |
| variables: |
| EIGEN_CI_BUILD_TARGET: BuildOfficial |
| |
| build:linux:cross:x86-64:clang-19:default:asan-ubsan:unsupported: |
| extends: .build:linux:cross:x86-64:clang-19:default:asan-ubsan |
| variables: |
| EIGEN_CI_BUILD_TARGET: BuildUnsupported |
| |
| ######## NVHPC ################################################################# |
| |
| # NVHPC (nvc++) uses NVIDIA's HPC SDK container image with the compilers |
| # pre-installed. We override EIGEN_CI_INSTALL to avoid trying to apt-get |
| # install the compiler. |
| # Split into official/unsupported because nvc++ is so slow that the full |
| # build exceeds the 3-hour GitLab SaaS shared-runner timeout. |
| .build:linux:x86-64:nvhpc-26.1: |
| extends: .build:linux:cross:x86-64 |
| image: nvcr.io/nvidia/nvhpc:26.1-devel-cuda13.1-ubuntu24.04 |
| variables: |
| EIGEN_CI_C_COMPILER: nvc |
| EIGEN_CI_CXX_COMPILER: nvc++ |
| EIGEN_CI_INSTALL: "" |
| EIGEN_CI_CROSS_INSTALL: "" |
| # NVHPC's compiler frontend is very memory-hungry with template-heavy code. |
| # The 2xlarge runner has 128 GB, so 16 jobs gives ~8 GB per process. |
| # The shuffled-batch build strategy spreads memory-hungry targets across |
| # batches, preventing simultaneous OOM-prone compilations. |
| EIGEN_CI_BUILD_JOBS: "16" |
| EIGEN_CI_FALLBACK_JOBS: "4" |
| |
| build:linux:x86-64:nvhpc-26.1:default:official: |
| extends: .build:linux:x86-64:nvhpc-26.1 |
| variables: |
| EIGEN_CI_BUILD_TARGET: BuildOfficial |
| |
| build:linux:x86-64:nvhpc-26.1:default:unsupported: |
| extends: .build:linux:x86-64:nvhpc-26.1 |
| variables: |
| EIGEN_CI_BUILD_TARGET: BuildUnsupported |
| |
| ######## CUDA ################################################################## |
| |
| .build:linux:cuda: |
| extends: .build:linux:cross:x86-64 |
| # CUDA images and compiler packages vary enough that a cached CMake build |
| # directory can retain stale compiler-feature detection across pipeline runs. |
| cache: [] |
| variables: |
| # Additional flags passed to the cuda compiler. |
| EIGEN_CI_CUDA_CXX_FLAGS: "" |
| # Compute architectures present in the GitLab CI runners. |
| # SaaS GPU runners have Tesla T4 (sm_75). |
| EIGEN_CI_CUDA_COMPUTE_ARCH: "75" |
| EIGEN_CI_BUILD_TARGET: buildtests_gpu |
| EIGEN_CI_TEST_CUDA_CLANG: "off" |
| EIGEN_CI_TEST_CUDA_NVC: "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} |
| -DEIGEN_TEST_CUDA_NVC=${EIGEN_CI_TEST_CUDA_NVC} |
| 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/" |
| - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_PROJECT_NAMESPACE == "libeigen" && $CI_MERGE_REQUEST_LABELS =~ "/gpu-tests/" |
| tags: |
| # Build on regular linux to limit GPU cost. |
| - saas-linux-2xlarge-amd64 |
| |
| # ---- CUDA 11.5 + oldest supported compilers --------------------------------- |
| # clang-14 fully supports up to CUDA 11.5. CUDA 11.5 images are Ubuntu 20.04 |
| # only, which lacks clang-14 and cmake >= 3.17. EIGEN_CI_BEFORE_SCRIPT adds |
| # the LLVM apt repo (for clang-14) and installs cmake via pip. |
| |
| build:linux:cuda-11.5:gcc-10: |
| extends: .build:linux:cuda |
| image: nvidia/cuda:11.5.2-devel-ubuntu20.04 |
| before_script: |
| # Ubuntu 20.04 has cmake 3.16; Eigen requires 3.17+. Pull a newer |
| # cmake from Kitware's official apt repo for focal. |
| - apt-get update -y > /dev/null |
| - apt-get install -y --no-install-recommends wget gnupg ca-certificates > /dev/null |
| - wget -qO - https://apt.kitware.com/keys/kitware-archive-latest.asc |
| | gpg --dearmor -o /usr/share/keyrings/kitware-archive-keyring.gpg |
| - echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal main' |
| > /etc/apt/sources.list.d/kitware.list |
| - apt-get update -y > /dev/null |
| - . ci/scripts/common.linux.before_script.sh |
| variables: |
| EIGEN_CI_INSTALL: gcc-10 g++-10 |
| EIGEN_CI_C_COMPILER: gcc-10 |
| EIGEN_CI_CXX_COMPILER: g++-10 |
| |
| build:linux:cuda-11.5:clang-14: |
| extends: build:linux:cuda-11.5:gcc-10 |
| before_script: |
| # Ubuntu 20.04 lacks clang-14 and has cmake 3.16. Add both the LLVM |
| # apt repo (for clang-14) and Kitware's apt repo (for cmake >= 3.17) |
| # before running common.linux.before_script.sh, which apt-installs |
| # cmake + the requested compiler. |
| - apt-get update -y > /dev/null |
| - apt-get install -y --no-install-recommends wget gnupg ca-certificates > /dev/null |
| - wget -qO - https://apt.llvm.org/llvm-snapshot.gpg.key |
| | gpg --dearmor -o /usr/share/keyrings/llvm-archive-keyring.gpg |
| - echo 'deb [signed-by=/usr/share/keyrings/llvm-archive-keyring.gpg] http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main' |
| > /etc/apt/sources.list.d/llvm-14.list |
| - wget -qO - https://apt.kitware.com/keys/kitware-archive-latest.asc |
| | gpg --dearmor -o /usr/share/keyrings/kitware-archive-keyring.gpg |
| - echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal main' |
| > /etc/apt/sources.list.d/kitware.list |
| - apt-get update -y > /dev/null |
| - . ci/scripts/common.linux.before_script.sh |
| variables: |
| EIGEN_CI_INSTALL: clang-14 |
| EIGEN_CI_C_COMPILER: clang-14 |
| EIGEN_CI_CXX_COMPILER: clang++-14 |
| EIGEN_CI_TEST_CUDA_CLANG: "on" |
| |
| # ---- New: latest CUDA + newest compilers, sm_75;sm_90 ---------------------- |
| # sm_75 (T4) coverage comes from every job; sm_90 only from newer CUDA. |
| |
| # GCC-13, CUDA-12.6 (nvcc) |
| # CUDA 12.6 nvcc only supports gcc up to 13. |
| build:linux:cuda-12.6:gcc-13: |
| extends: .build:linux:cuda |
| image: nvidia/cuda:12.6.3-devel-ubuntu24.04 |
| variables: |
| EIGEN_CI_C_COMPILER: gcc-13 |
| EIGEN_CI_CXX_COMPILER: g++-13 |
| EIGEN_CI_CUDA_COMPUTE_ARCH: "75;90" |
| |
| # Clang-19, CUDA-12.6 (clang as CUDA compiler) |
| # Clang CUDA support lags behind nvcc; clang-19 supports up to CUDA 12.x. |
| build:linux:cuda-12.6:clang-19: |
| extends: .build:linux:cuda |
| image: nvidia/cuda:12.6.3-devel-ubuntu24.04 |
| variables: |
| EIGEN_CI_INSTALL: clang-19 |
| EIGEN_CI_C_COMPILER: clang-19 |
| EIGEN_CI_CXX_COMPILER: clang++-19 |
| EIGEN_CI_TEST_CUDA_CLANG: "on" |
| EIGEN_CI_CUDA_COMPUTE_ARCH: "75;90" |
| |
| |
| ######### HIP ################################################################## |
| # Note: these are currently build-only, until we get an AMD-supported runner. |
| |
| # ROCm HIP |
| build:linux:rocm-latest:gcc-11: |
| extends: .build:linux:cross |
| image: rocm/dev-ubuntu-24.04:6.3.1 |
| variables: |
| EIGEN_CI_C_COMPILER: gcc-11 |
| EIGEN_CI_CXX_COMPILER: g++-11 |
| EIGEN_CI_BUILD_TARGET: buildtests_gpu |
| EIGEN_CI_ADDITIONAL_ARGS: -DEIGEN_TEST_HIP=on |
| 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/" |
| - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_PROJECT_NAMESPACE == "libeigen" && $CI_MERGE_REQUEST_LABELS =~ "/gpu-tests/" |
| cache: [] # Disable cache for ROCm, since it fails whenever the image updates. |
| |
| |
| ######## 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 |
| -DCMAKE_SYSTEM_NAME=Linux |
| -DCMAKE_CROSSCOMPILING_EMULATOR=qemu-arm-static;-L;/usr/arm-linux-gnueabihf |
| |
| build:linux:cross:arm:gcc-10:default: |
| extends: .build:linux:cross:arm |
| variables: |
| EIGEN_CI_CROSS_INSTALL: g++-10-arm-linux-gnueabihf qemu-user-static |
| 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-14:default: |
| extends: .build:linux:cross:arm |
| variables: |
| EIGEN_CI_INSTALL: clang-14 |
| EIGEN_CI_C_COMPILER: clang-14 |
| EIGEN_CI_CXX_COMPILER: clang++-14 |
| EIGEN_CI_CROSS_INSTALL: g++-10-arm-linux-gnueabihf clang-14 qemu-user-static |
| |
| ######## 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 |
| tags: |
| - saas-linux-large-arm64 |
| |
| 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-14:default: |
| extends: .build:linux:cross:aarch64 |
| variables: |
| EIGEN_CI_INSTALL: clang-14 |
| EIGEN_CI_C_COMPILER: clang-14 |
| EIGEN_CI_CXX_COMPILER: clang++-14 |
| EIGEN_CI_CROSS_INSTALL: g++-10-aarch64-linux-gnu clang-14 |
| |
| ######## ppc64le ############################################################### |
| |
| .build:linux:cross:ppc64le: |
| extends: .build:linux:cross |
| variables: |
| EIGEN_CI_TARGET_ARCH: ppc64le |
| EIGEN_CI_CROSS_TARGET_TRIPLE: powerpc64le-linux-gnu |
| EIGEN_CI_ADDITIONAL_ARGS: >- |
| -DCMAKE_SYSTEM_NAME=Linux |
| -DCMAKE_CROSSCOMPILING_EMULATOR=qemu-ppc64le-static;-L;/usr/powerpc64le-linux-gnu |
| |
| build:linux:cross:ppc64le:gcc-14:default: |
| extends: .build:linux:cross:ppc64le |
| variables: |
| EIGEN_CI_CROSS_INSTALL: g++-14-powerpc64le-linux-gnu qemu-user-static |
| EIGEN_CI_CROSS_C_COMPILER: powerpc64le-linux-gnu-gcc-14 |
| EIGEN_CI_CROSS_CXX_COMPILER: powerpc64le-linux-gnu-g++-14 |
| |
| build:linux:cross:ppc64le:clang-16:default: |
| extends: .build:linux:cross:ppc64le |
| variables: |
| EIGEN_CI_C_COMPILER: clang-16 |
| EIGEN_CI_CXX_COMPILER: clang++-16 |
| EIGEN_CI_CROSS_INSTALL: g++-14-powerpc64le-linux-gnu clang-16 qemu-user-static |
| |
| ######## loongarch64 ################################################# |
| |
| .build:linux:cross:loongarch64: |
| extends: .build:linux:cross |
| variables: |
| EIGEN_CI_TARGET_ARCH: loongarch64 |
| EIGEN_CI_CROSS_TARGET_TRIPLE: loongarch64-linux-gnu |
| |
| # GCC-14 (minimum on Ubuntu 24) |
| build:linux:cross:loongarch64:gcc-14:default: |
| extends: .build:linux:cross:loongarch64 |
| variables: |
| EIGEN_CI_CROSS_INSTALL: g++-14-loongarch64-linux-gnu qemu-user-static |
| 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 ######################################################## |
| # All builds run on arm64 runners using the slim arm64 smoketest image. |
| # x86-64 targets are cross-compiled via g++-10-x86-64-linux-gnu / clang-14. |
| # Tests run on their respective native runners (see test.linux.gitlab-ci.yml). |
| |
| build:linux:cross:x86-64:gcc-10:default:smoketest: |
| extends: build:linux:cross:x86-64:gcc-10:default |
| image: ${EIGEN_CI_IMAGE_LINUX_ARM64_SMOKETEST_BUILD} |
| variables: |
| EIGEN_CI_SKIP_APT: "true" |
| EIGEN_CI_BUILD_TARGET: buildsmoketests |
| rules: |
| - if: $CI_PIPELINE_SOURCE == "merge_request_event" |
| tags: |
| - saas-linux-medium-arm64 |
| |
| build:linux:cross:x86-64:clang-14:default:smoketest: |
| extends: build:linux:cross:x86-64:clang-14:default |
| image: ${EIGEN_CI_IMAGE_LINUX_ARM64_SMOKETEST_BUILD} |
| variables: |
| EIGEN_CI_SKIP_APT: "true" |
| EIGEN_CI_BUILD_TARGET: buildsmoketests |
| rules: |
| - if: $CI_PIPELINE_SOURCE == "merge_request_event" |
| tags: |
| - saas-linux-medium-arm64 |
| |
| build:linux:aarch64:gcc-10:default:smoketest: |
| extends: build:linux:cross:aarch64:gcc-10:default |
| image: ${EIGEN_CI_IMAGE_LINUX_ARM64_SMOKETEST_BUILD} |
| variables: |
| EIGEN_CI_SKIP_APT: "true" |
| EIGEN_CI_BUILD_TARGET: buildsmoketests |
| rules: |
| - if: $CI_PIPELINE_SOURCE == "merge_request_event" |
| tags: |
| - saas-linux-medium-arm64 |
| |
| build:linux:aarch64:clang-14:default:smoketest: |
| extends: build:linux:cross:aarch64:clang-14:default |
| image: ${EIGEN_CI_IMAGE_LINUX_ARM64_SMOKETEST_BUILD} |
| variables: |
| EIGEN_CI_SKIP_APT: "true" |
| EIGEN_CI_BUILD_TARGET: buildsmoketests |
| rules: |
| - if: $CI_PIPELINE_SOURCE == "merge_request_event" |
| tags: |
| - saas-linux-medium-arm64 |