# 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, .artifacts:linux:builddir ]
  stage: build
  variables:
    EIGEN_CI_BUILD_TARGET: buildtests
    EIGEN_CI_SKIP_APT: "false"
    # "off" disables the ccache compiler launchers (see build.linux.script.sh);
    # the jobs that set it explain why. Images without ccache build exactly as
    # before regardless of this setting.
    EIGEN_CI_CCACHE: "on"
    # The ccache pool's cache:policy.  An affected build takes select:tests'
    # value instead (a dotenv variable outranks a job variable): `push` for a
    # NONE selection, which compiles nothing and so skips the download.
    EIGEN_CI_CCACHE_POLICY: pull-push
    EIGEN_CI_CCACHE_DIR: ${CI_PROJECT_DIR}/.ccache
    # A full buildtests job stores ~4-6 GB of compressed objects; at 2G every
    # nightly build filled the cache (149 LRU cleanups, 0.4% hits) and evicted
    # what the previous run had stored, so nothing was ever reused. 4G is the
    # largest safe cap: hosted runners reject cache archives over 5 GB, and
    # the archive is about the size of the (already zstd-compressed) ccache
    # directory. The raised compression level packs more of the working set
    # under that cap; 5 is the ccache manual's recommended ceiling for live
    # (compile-time) compression, and captures most of the density gain.
    EIGEN_CI_CCACHE_MAXSIZE: 4G
    EIGEN_CI_CCACHE_COMPRESSLEVEL: 5
    # Hash compile paths relative to the project directory: absolute -I/source
    # paths are part of ccache's hash, so without this a checkout-path change
    # (runner layout, concurrent build slots) turns every compile into a miss.
    EIGEN_CI_CCACHE_BASEDIR: ${CI_PROJECT_DIR}
    # The ccache payload is already zstd-compressed, so re-compressing it into
    # cache.zip at the default level burns CPU for no size gain: a fully warm
    # build spent 87s archiving+uploading a 2 GB cache it compiled in 71s.
    # Fastzip at "fastest" effectively stores the archive instead, and also
    # speeds up cache extraction on restore.
    FF_USE_FASTZIP: "true"
    CACHE_COMPRESSION_LEVEL: "fastest"
    # ccache pool name, minus the `-ccache` suffix the cache stanza appends:
    # the job's own slug by default. A job that compiles a subset of another
    # job's targets with the same flags names that job's slug instead (see the
    # affected-tests section), so it draws on a pool the full builds fill.
    EIGEN_CI_CCACHE_POOL: $CI_JOB_NAME_SLUG
  script:
    - . ci/scripts/build.linux.script.sh
  tags:
    - saas-linux-2xlarge-amd64
  rules: !reference [.rules:libeigen:all-tests, rules]
  # Cache the ccache directory, not ${EIGEN_CI_BUILDDIR}: each job starts from
  # a fresh clone whose checkout mtimes are newer than any restored build
  # output, so ninja rebuilt every target despite a successfully restored
  # cache. ccache keys on file content and compiler, which survives the
  # re-clone.
  #
  # Restoring a cache replaces .ccache/ rather than merging into it, so an
  # unscoped pool is last-writer-wins: merge requests on different bases
  # overwrite each other's objects. Job 16273375875 restored a full 4 GB pool
  # and still missed 1431 of 1436 compiles, with no direct-mode hits at all.
  # EIGEN_CI_CCACHE_SCOPE gives each merge request its own pool; the fallback
  # key is the shared pool the default-branch builds fill, which is what a
  # first build draws on.
  #
  # GitLab splits every pool by a suffix -- `-protected` for a pipeline on a
  # protected ref or started by a Maintainer or Owner, `-non_protected`
  # otherwise -- and appends the same suffix to the fallback key. A
  # Developer-started merge request pipeline therefore cannot read the pool the
  # scheduled builds fill; a maintainer starting that pipeline can.
  cache:
    # Dedicated small cache for pinned tool binaries (sccache, ccache); shared across
    # all build jobs so runners download the static binary once.
    - key: "linux-ccache-bin"
      paths:
        - .ccache-bin/
        - .sccache-bin/
      when: always
    # Compiler object cache pool holding .ccache/ and .sccache/.
    - key: "$EIGEN_CI_CCACHE_POOL$EIGEN_CI_CCACHE_SCOPE-ccache"
      fallback_keys:
        - "$EIGEN_CI_CCACHE_POOL-ccache"
      paths:
        - .ccache/
        - .sccache/
      policy: $EIGEN_CI_CCACHE_POLICY
      # Push the cache even when the build fails: the retry pipeline after a
      # compile error is exactly where cache hits matter most.
      when: always

######## 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.
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"

# 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"

# AVX512-FP16 builds are split into official/contrib because building all
# tests exceeds the 3-hour GitLab SaaS shared-runner timeout. Clang, because
# GCC 12.1-14.3 and 15.1-15.2 emit a zero-masked vmovsh store for _Float16
# selects (see EIGEN_TEST_AVX512FP16 in CMakeLists.txt). Clang 18 crashes in
# its backend on packetmath, array_cwise, matrix_cwise and half_float here.
.build:linux:cross:x86-64:clang-19:avx512fp16:
  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: "-DEIGEN_TEST_AVX512FP16=on -DEIGEN_TEST_AVX512DQ=on -DEIGEN_TEST_F16C=on"

build:linux:cross:x86-64:clang-19:avx512fp16:official:
  extends: .build:linux:cross:x86-64:clang-19:avx512fp16
  variables:
    EIGEN_CI_BUILD_TARGET: BuildOfficial

build:linux:cross:x86-64:clang-19:avx512fp16:contrib:
  extends: .build:linux:cross:x86-64:clang-19:avx512fp16
  variables:
    EIGEN_CI_BUILD_TARGET: BuildContrib

# 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
  # Nightly job restricted to the default branch on schedule.
  rules:
    - !reference [.rules:libeigen:gpu-schedule-guard, 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:
    - !reference [.rules:libeigen:gpu-schedule-guard, 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/"
    # Stands alone and leaves the test tier unchanged, so it composes with the
    # smoke and affected tiers.
    - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_PROJECT_NAMESPACE == "libeigen" && $CI_MERGE_REQUEST_LABELS =~ "/docs-build/"


######## Sanitizers ############################################################

# ASAN/UBSAN builds are split into official/contrib 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 caching for ASAN builds: instrumented .o files are so large that
  # moving them through the cache can take longer than a clean build from
  # scratch.  Both settings below are needed and do different things:
  # cache: [] drops the archive round trip, and without it a pool populated
  # before ccache was turned off here would keep being restored under the same
  # $CI_JOB_NAME_SLUG-ccache key; EIGEN_CI_CCACHE: "off" drops the compiler
  # launchers, so nothing is written to the runner's disk either.
  cache: []
  timeout: 2h
  variables:
    EIGEN_CI_CCACHE: "off"
    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
    # Statically linked sanitizer runtimes make the test artifacts exceed GitLab's 1 GB upload limit.
    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;-shared-libsan

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:contrib:
  extends: .build:linux:cross:x86-64:clang-19:default:asan-ubsan
  variables:
    EIGEN_CI_BUILD_TARGET: BuildContrib

######## 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/contrib 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
  # ccache has no dedicated nvc++ support -- the name falls through its
  # compiler-type guess to "other" -- but that is a generic handling path, not a
  # refusal: the calls are cacheable and hit. Which matters most here, given the
  # frontend cost the section comment above describes.
  variables:
    EIGEN_CI_C_COMPILER: nvc
    EIGEN_CI_CXX_COMPILER: nvc++
    EIGEN_CI_INSTALL: ""
    EIGEN_CI_CROSS_INSTALL: ""
    # Override CMake's NVHPC -fast default at both compilation and linking.
    EIGEN_CI_ADDITIONAL_ARGS: >-
      -DEIGEN_TEST_CUSTOM_CXX_FLAGS=-Kieee
      -DEIGEN_TEST_CUSTOM_LINKER_FLAGS=-Kieee
    # 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"
  # Schedules, web pipelines and the `nvhpc-tests` label, not the `all-tests`
  # label the rest of the matrix inherits from .build:linux:cross. That slow
  # frontend makes this the single most expensive pair of jobs in the tree --
  # together about a quarter of the project's hosted-runner minutes -- while
  # covering one compiler that few merge requests are likely to break in
  # isolation. Label a merge request that touches something nvc++ is known to
  # be fussy about rather than waiting for the scheduled run to find it; a web
  # pipeline is no substitute, since it cannot run a fork's branch.
  rules: !reference [.rules:libeigen:nvhpc, rules]
  # Both builds have failed in every scheduled pipeline since at least
  # 2026-09-13: at -j16 nvc++ runs the runner out of memory and ninja then
  # stalls for hours, while at a -j low enough to avoid that the official build
  # cannot fit its 719 targets in the 3 h limit. Report them as warnings until
  # the build fits.
  allow_failure: true

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:contrib:
  extends: .build:linux:x86-64:nvhpc-26.1
  variables:
    EIGEN_CI_BUILD_TARGET: BuildContrib

######## CUDA ##################################################################

.build:linux:cuda:
  extends: .build:linux:cross:x86-64
  # ccache and the inherited cache stanza apply here: the .cu compiles that
  # dominate these builds reach the launcher through CMAKE_CUDA_COMPILER_LAUNCHER,
  # which ei_gpu_testing_enable() copies from CMAKE_CXX_COMPILER_LAUNCHER. A new
  # image costs one cold build rather than serving stale objects, since ccache
  # hashes the nvcc it runs and the preprocessed source. nvcc's -M dependency and
  # -dlink passes are not cacheable and appear as misses in the statistics.
  variables:
    # Additional flags passed to the cuda compiler.
    EIGEN_CI_CUDA_CXX_FLAGS: ""
    # Default architecture coverage spans the minimum supported architecture
    # (sm_60) and the GPUs used by CI: GitLab's SaaS runners are Tesla T4
    # (sm_75), and eigen-gpu-testing-001.gcloud is an L4 (sm_89). Jobs tied to
    # one runner pool may override this set below.
    EIGEN_CI_CUDA_COMPUTE_ARCH: "60;75;89"
    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: !reference [.rules:libeigen:gpu, rules]
  tags:
    # Build on regular linux to limit GPU cost.
    - saas-linux-2xlarge-amd64

# ---- CUDA 11.8 + oldest supported compilers ---------------------------------
# 11.8 is the oldest toolkit that knows sm_89, so gcc can cover the default
# T4/L4 architecture set. CUDA 11.x images are Ubuntu 20.04 only, which lacks
# clang-14 and cmake >= 3.17; the before_scripts add the Kitware and LLVM apt
# repos.

build:linux:cuda-11.8:gcc-10:
  extends: .build:linux:cuda
  image: nvidia/cuda:11.8.0-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.8:clang-14:
  extends: build:linux:cuda-11.8: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"
    # clang-14 predates sm_89 (LLVM 16 added it), so this pair targets sm_75.
    # The 11.8 toolkit is newer than clang-14 knows; it treats it as 11.5,
    # which is what the suppressed warning says.
    EIGEN_CI_CUDA_COMPUTE_ARCH: "75"
    EIGEN_CI_CUDA_CXX_FLAGS: "-Wno-unknown-cuda-version"

# ---- Latest CUDA + newest compilers, sm_89;sm_90 ---------------------------
# These jobs run natively on the L4 at sm_89 and retain compile-only coverage
# for sm_90.

# 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: "89;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: "89;90"

# ---- CUDA 13 ----------------------------------------------------------------
# CUDA 13 dropped offline compilation for sm_70, relocated the CCCL headers and
# ships an nvcc that rejects code every 12.x toolkit accepted (issue #3139 was
# found on a laptop because no job here compiled with it).  This pair runs on
# the L4 at sm_89, built through CMake's CUDA language like the other Linux
# CUDA jobs.

# GCC-13, CUDA-13.3 (nvcc)
build:linux:cuda-13.3:gcc-13:
  extends: .build:linux:cuda
  image: nvidia/cuda:13.3.1-devel-ubuntu24.04
  variables:
    EIGEN_CI_C_COMPILER: gcc-13
    EIGEN_CI_CXX_COMPILER: g++-13
    EIGEN_CI_CUDA_COMPUTE_ARCH: "89"


######### 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_CCACHE: "off"
    EIGEN_CI_C_COMPILER: gcc-11
    EIGEN_CI_CXX_COMPILER: g++-11
    EIGEN_CI_BUILD_TARGET: buildtests_gpu
    # HIP Clang reports each `#pragma unroll` loop in TensorConvolution.h whose
    # trip count is not constant ("loop not unrolled") once per kernel
    # instantiation: over half of this job's log, which overran GitLab's 4 MB
    # log limit and so cut off the end of the build.
    EIGEN_CI_ADDITIONAL_ARGS: -DEIGEN_TEST_HIP=on -DCMAKE_HIP_FLAGS=-Wno-pass-failed
  rules: !reference [.rules:libeigen:gpu, rules]
  # Disable cache for ROCm, since it fails whenever the image updates.  As with
  # the ASAN build above, this and EIGEN_CI_CCACHE: "off" are both needed: one
  # drops the archive round trip, the other the compiler launchers.
  cache: []


######## 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 ###############################################################

# Cross-compiled on amd64, as the smoke tier has always built it; the paired
# test jobs run the artifact on a native arm64 runner.  On the arm64 pool host
# and target match, so common.linux.before_script.sh picks the native compiler
# and the build gets the 8 vCPU that pool tops out at rather than 32.  The
# open-source cost factor is flat per minute rather than per runner size, so
# that was also the dearer runner: 102-115 min for a full-suite build against
# 20-34 for the same selection on the x86-64 jobs over 2026-09.
.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-2xlarge-amd64

######## SME ###################################################################

# Emulation via QEMU for SME (Streaming Matrix Extension)
.build:linux:cross:sme:
  extends: .build:linux:cross
  variables:
    EIGEN_CI_TARGET_ARCH: aarch64-sme
    EIGEN_CI_CROSS_TARGET_TRIPLE: aarch64-linux-gnu
    # The emulator baked in here deliberately has no -cpu argument: each test job
    # selects its streaming SVL via qemu-user's QEMU_CPU environment variable
    # instead (a command-line -cpu would silently override it).
    #
    # EIGEN_CI_ADDITIONAL_ARGS is expanded *unquoted* into the cmake command
    # line (ci/scripts/build.linux.script.sh), so each -D value must be a single
    # shell word: multi-token flags use CMake's ';' list separator, with no
    # spaces or embedded quotes (cf. the arm / generic-vector jobs).
    # +sme-f64f64 (FEAT_SME_F64F64) enables the double-precision GEMM kernel:
    # GCC refuses to compile its fp64 FMOPA without it, and qemu's `max` CPU
    # implements the extension, so the test jobs below exercise that kernel.
    # The -march goes in CMAKE_CXX_FLAGS, not EIGEN_TEST_CUSTOM_CXX_FLAGS:
    # EIGEN_TEST_SME adds -DEIGEN_ARM64_USE_SME to CMAKE_CXX_FLAGS, so every
    # target needs the SME2 -march, not only those ei_add_test registers --
    # e.g. blas_ilp64 and the ILP64 BLAS library it links.
    EIGEN_CI_ADDITIONAL_ARGS: >-
      -DEIGEN_TEST_SME=ON
      -DCMAKE_CXX_FLAGS=-march=armv9.2-a+sme2+sme-f64f64
      -DCMAKE_CROSSCOMPILING_EMULATOR=qemu-aarch64;-L;/usr/aarch64-linux-gnu
    # SME ACLE (arm_sme.h, __arm_streaming, +sme2) requires GCC >= 14.
    # The build stage only cross-compiles and never invokes the emulator, so
    # no qemu here -- the test stage installs qemu-user.
    EIGEN_CI_CROSS_INSTALL: g++-14-aarch64-linux-gnu
    # product_symm/product_trsolve/product_trmm/product_syrk/product_mmtr/
    # mixingtypes exercise the SME packers through their non-dense-GEMM consumers
    # (selfadjoint, triangular-solve, triangular-product, rank-update,
    # triangular-result product, mixed-scalar) that product_sme can't reach; each
    # has double and complex subtests, so they cover all four SME scalar types.
    # product_mmtr additionally covers tribb_kernel's lcm(mr, nr) block, which is
    # only larger than mr for complex<float>. Explicit list, not `buildtests`:
    # cross-building every test under the SME flags overruns the runner timeout.
    EIGEN_CI_BUILD_TARGET: product_sme product_symm product_trsolve product_trmm product_syrk product_mmtr mixingtypes
  # Inherit the 2xlarge runner from .build:linux:cross: GitLab's open-source
  # program bills small and large runners the same, so don't downsize.

build:linux:cross:sme:gcc-14:default:
  extends: .build:linux:cross:sme
  variables:
    EIGEN_CI_C_COMPILER: gcc-14
    EIGEN_CI_CXX_COMPILER: g++-14
    EIGEN_CI_CROSS_C_COMPILER: aarch64-linux-gnu-gcc-14
    EIGEN_CI_CROSS_CXX_COMPILER: aarch64-linux-gnu-g++-14

# Full nightly SME coverage: compile the *entire* test suite (buildtests, both
# Official and Contrib) under +sme2, not just the SME-relevant targets. This
# is what treats SME "as any other platform": it catches any compile breakage
# under the streaming-mode flags across the whole codebase -- e.g. the tensor-
# contraction packer path that only surfaces once TensorContraction is built
# with the SME backend active. Runs on the nightly schedule and on all-tests
# MRs via the inherited .rules:libeigen:all-tests; the per-SVL subset build
# above stays as the fast, cheap signal. A cold build takes 31-63 min on the
# hosted 2xlarge runners but 95-96 min on the 16-vCPU group runner, where one
# run hit the former 2h limit (job 16054590852); 3h is the hosted runners'
# ceiling. Split into BuildOfficial/BuildContrib builds if that overruns.
build:linux:cross:sme:gcc-14:full:
  extends: .build:linux:cross:sme
  variables:
    EIGEN_CI_C_COMPILER: gcc-14
    EIGEN_CI_CXX_COMPILER: g++-14
    EIGEN_CI_CROSS_C_COMPILER: aarch64-linux-gnu-gcc-14
    EIGEN_CI_CROSS_CXX_COMPILER: aarch64-linux-gnu-g++-14
    EIGEN_CI_BUILD_TARGET: buildtests
  timeout: 3h

# FEAT_SME_F64F64 is optional, and every job above builds with it, so nothing
# else compiles the configuration where it is absent: the #else static_asserts
# that keep double and complex<double> off the GEMM driver, and both on the
# generic kernel inside an SME build. GCC hard-errors on the fp64 FMOPA without
# the feature, so this is also what catches an fp64 SME intrinsic escaping the
# EIGEN_VECTORIZE_SME_F64F64 gate. The EIGEN_ARM64_NO_SME_F64F64 opt-out reaches
# the same branch, so one job covers both ways in. product_sme alone: its double
# and complex<double> subtests are written to run in either configuration, and
# one target keeps the job cheap.
build:linux:cross:sme:gcc-14:no-f64f64:
  extends: .build:linux:cross:sme
  variables:
    EIGEN_CI_C_COMPILER: gcc-14
    EIGEN_CI_CXX_COMPILER: g++-14
    EIGEN_CI_CROSS_C_COMPILER: aarch64-linux-gnu-gcc-14
    EIGEN_CI_CROSS_CXX_COMPILER: aarch64-linux-gnu-g++-14
    # The anchor's arguments, less +sme-f64f64.
    EIGEN_CI_ADDITIONAL_ARGS: >-
      -DEIGEN_TEST_SME=ON
      -DCMAKE_CXX_FLAGS=-march=armv9.2-a+sme2
      -DCMAKE_CROSSCOMPILING_EMULATOR=qemu-aarch64;-L;/usr/aarch64-linux-gnu
    EIGEN_CI_BUILD_TARGET: product_sme


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

######## SVE ###################################################################

# The SVE backend is selected only by -DEIGEN_ARM64_USE_SVE, so none of the
# aarch64 or SME jobs above compile a line of Eigen/src/Core/arch/SVE: the SME
# jobs deliberately take the NEON headers (Eigen/Core). These jobs are the only
# coverage it has.
#
# Eigen needs a compile-time vector length (EIGEN_ARM64_SVE_VL comes from
# __ARM_FEATURE_SVE_BITS, which only -msve-vector-bits sets), so each length is
# a separate build. That is also what makes the sweep worth having: the packet
# code has VL-dependent fold counts and transpose networks that a single length
# cannot exercise.
#
# No compiler here: common.linux.before_script.sh overwrites
# EIGEN_CI_CXX_COMPILER with EIGEN_CI_CROSS_CXX_COMPILER whenever host and
# target differ, so a cross compiler named in this anchor would override the one
# a job sets for itself. Left unset it defaults to the job's own choice
# (.common:linux:cross), which is what the clang job below needs.
.build:linux:cross:sve:
  extends: .build:linux:cross
  variables:
    EIGEN_CI_TARGET_ARCH: aarch64-sve
    EIGEN_CI_CROSS_TARGET_TRIPLE: aarch64-linux-gnu
    # As for SME, the emulator here carries no -cpu: the test jobs select their
    # vector length through qemu-user's QEMU_CPU instead.
    #
    # EIGEN_CI_ADDITIONAL_ARGS is expanded *unquoted* into the cmake command
    # line (ci/scripts/build.linux.script.sh), so each -D value must be a single
    # shell word: multi-token flags use CMake's ';' list separator.
    #
    # EIGEN_TEST_SVE_VL is spelled out per job rather than interpolated from a
    # variable: a mis-expansion would silently fall back to the CMake default of
    # 128 and every job in the sweep would build the same length while still
    # passing.
    #
    # Keep the -march at armv8.2-a+sve, which is what the backend actually
    # needs -- it uses only base SVE intrinsics. Do NOT "upgrade" it to +sve2:
    # with SVE2 enabled, GCC 13 through 15 emit `whilewr p0.b, wzr, wzr` for the
    # autovectorizer's alias checks, using 32-bit W registers where the
    # instruction takes X registers, and the assembler rejects it. It reproduces
    # at every vector length from 256 up (contrib/test/tensor_block_eval.cpp
    # is one trigger) and is a GCC bug, not an Eigen one; clang is unaffected.
    EIGEN_CI_ADDITIONAL_ARGS: >-
      -DEIGEN_TEST_SVE=ON
      -DEIGEN_TEST_CUSTOM_CXX_FLAGS=-march=armv8.2-a+sve
      -DCMAKE_CROSSCOMPILING_EMULATOR=qemu-aarch64;-L;/usr/aarch64-linux-gnu

# One compiler for all three widths. gcc-14 is not usable above 128 bits: at -O3
# with -msve-vector-bits=256 or above, gcc-14.2 miscompiles
# redux_commutative<double> in test/redux.cpp, summing a 16x16 block of a 17x17
# matrix to 660 instead of 1022, deterministically. That is a compiler bug and
# not an Eigen one -- it reproduces with EIGEN_ARM64_USE_SVE unset, with GCC
# autovectorizing to fixed-length SVE while Eigen is on NEON -- and not an
# emulation artifact, since QEMU 8.2 and 10.0 produce the same wrong value. It
# goes away at -O2, with -fno-tree-slp-vectorize, and at 128 bits.
#
# gcc-13.3 is clean at 128, 256 and 512, and SVE ACLE needs only gcc-10, so
# nothing here depends on 14 the way SME's ACLE does. Naming one compiler is
# what lets the test jobs install the compiler their artifacts were built with,
# which the failtest and buildsystem tests require -- see .test:linux:sve.
.build:linux:cross:sve:gcc-13:
  extends: .build:linux:cross:sve
  variables:
    EIGEN_CI_CROSS_INSTALL: g++-13-aarch64-linux-gnu
    EIGEN_CI_C_COMPILER: gcc-13
    EIGEN_CI_CXX_COMPILER: g++-13
    EIGEN_CI_CROSS_C_COMPILER: aarch64-linux-gnu-gcc-13
    EIGEN_CI_CROSS_CXX_COMPILER: aarch64-linux-gnu-g++-13

# One build per vector length that SVE hardware actually implements: 128 for
# Neoverse V2 and Grace, 256 for Neoverse V1 and Graviton3, 512 for A64FX. Each
# feeds a test job, so each builds the full suite. Lengths above 512 are
# architecturally legal but unimplemented, and compile-only coverage of them
# bought two latent compile fixes at the cost of running nothing -- if a wider
# part ships, add it here with a test job rather than as a build on its own.
# 128-bit SVE matches native ARMv9 hardware (Neoverse V2 / Axion) and runs natively
# on our ARM runner without QEMU emulation.
build:linux:cross:sve:gcc-13:vl128:
  extends: .build:linux:cross:sve:gcc-13
  variables:
    EIGEN_CI_ADDITIONAL_ARGS: >-
      -DEIGEN_TEST_SVE=ON
      -DEIGEN_TEST_SVE_VL=128
      -DEIGEN_TEST_CUSTOM_CXX_FLAGS=-march=armv8.2-a+sve

build:linux:cross:sve:gcc-13:vl512:
  extends: .build:linux:cross:sve:gcc-13
  variables:
    EIGEN_CI_ADDITIONAL_ARGS: >-
      -DEIGEN_TEST_SVE=ON
      -DEIGEN_TEST_SVE_VL=512
      -DEIGEN_TEST_CUSTOM_CXX_FLAGS=-march=armv8.2-a+sve
      -DCMAKE_CROSSCOMPILING_EMULATOR=qemu-aarch64;-L;/usr/aarch64-linux-gnu

build:linux:cross:sve:gcc-13:vl256:
  extends: .build:linux:cross:sve:gcc-13
  variables:
    EIGEN_CI_ADDITIONAL_ARGS: >-
      -DEIGEN_TEST_SVE=ON
      -DEIGEN_TEST_SVE_VL=256
      -DEIGEN_TEST_CUSTOM_CXX_FLAGS=-march=armv8.2-a+sve
      -DCMAKE_CROSSCOMPILING_EMULATOR=qemu-aarch64;-L;/usr/aarch64-linux-gnu

# clang diagnoses different things here than GCC -- MR 2928 shipped three
# -Wsign-compare warnings that no job caught, and clang is stricter about
# fixed-length SVE vector types. It extends the compiler-free anchor so that
# EIGEN_CI_CROSS_CXX_COMPILER defaults to clang++-14 rather than a cross GCC;
# the cross g++ is still installed, for the aarch64 headers and libraries clang
# links against.
build:linux:cross:sve:clang-14:vl128:
  extends: .build:linux:cross:sve
  variables:
    EIGEN_CI_INSTALL: clang-14
    EIGEN_CI_C_COMPILER: clang-14
    EIGEN_CI_CXX_COMPILER: clang++-14
    EIGEN_CI_CROSS_INSTALL: g++-13-aarch64-linux-gnu clang-14
    EIGEN_CI_ADDITIONAL_ARGS: >-
      -DEIGEN_TEST_SVE=ON
      -DEIGEN_TEST_SVE_VL=128
      -DEIGEN_TEST_CUSTOM_CXX_FLAGS=-march=armv8.2-a+sve
      -DCMAKE_CROSSCOMPILING_EMULATOR=qemu-aarch64;-L;/usr/aarch64-linux-gnu
    EIGEN_CI_BUILD_TARGET: sve_vector_length packetmath vectorization_logic

######## 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

######## riscv64 ###############################################################
# Builds cross-compile on amd64; tests run natively on the riscv runner
# (SpacemiT K3, RVA23, RVV 1.0, VLEN=256).  Jobs are allowed to fail while
# the runner is being brought up.

# Eigen's RVV backend requires a compile-time-fixed vector length, so pin it to
# the runner's 256-bit VLEN with zvl256b and -mrvv-vector-bits=zvl (gcc-15 rejects
# a numeric -mrvv-vector-bits=256, accepting only "zvl"/"scalable"; "zvl" takes the
# length from the Zvl*b march extension).  Zvfh enables half-precision
# vectorization.  Set here so every riscv64 build below -- full builds and smoke
# tests, gcc and clang -- is actually vectorized.
.build:linux:riscv64:
  extends: .build:linux:cross
  # Cross-compiles to riscv64 on an amd64 runner using the prebuilt image, which
  # carries the riscv64 cross toolchain (g++-15-riscv64-linux-gnu / clang-21)
  # plus cmake/ninja/git -- so apt is skipped entirely.
  image: ${EIGEN_CI_IMAGE_LINUX_RISCV64_SMOKETEST_BUILD}
  variables:
    EIGEN_CI_TARGET_ARCH: riscv64
    EIGEN_CI_SKIP_APT: "true"
    EIGEN_CI_CROSS_TARGET_TRIPLE: riscv64-linux-gnu
    EIGEN_CI_ADDITIONAL_ARGS: >-
      -DEIGEN_TEST_CUSTOM_CXX_FLAGS=-march=rv64gc_v_zvl256b_zfh_zvfh;-mrvv-vector-bits=zvl;-DEIGEN_RISCV64_USE_RVV10
  allow_failure: true

build:linux:riscv64:gcc-15:default:
  extends: .build:linux:riscv64
  variables:
    EIGEN_CI_C_COMPILER: gcc-15
    EIGEN_CI_CXX_COMPILER: g++-15
    EIGEN_CI_CROSS_INSTALL: g++-15-riscv64-linux-gnu
    EIGEN_CI_CROSS_C_COMPILER: riscv64-linux-gnu-gcc-15
    EIGEN_CI_CROSS_CXX_COMPILER: riscv64-linux-gnu-g++-15
    # Zvfbfmin+Zvfbfwma additionally enable the bfloat16 packets
    # (PacketMathBF16.h), which are otherwise never compiled by CI.  gcc-only:
    # clang 21 crashes mangling any function signature containing a
    # fixed-length (riscv_rvv_vector_bits) RVV bfloat16 vector type; fixed in
    # clang 22.
    EIGEN_CI_ADDITIONAL_ARGS: >-
      -DEIGEN_TEST_CUSTOM_CXX_FLAGS=-march=rv64gc_v_zvl256b_zfh_zvfh_zvfbfmin_zvfbfwma;-mrvv-vector-bits=zvl;-DEIGEN_RISCV64_USE_RVV10

build:linux:riscv64:clang-21:default:
  extends: .build:linux:riscv64
  variables:
    EIGEN_CI_INSTALL: clang-21
    EIGEN_CI_C_COMPILER: clang-21
    EIGEN_CI_CXX_COMPILER: clang++-21
    EIGEN_CI_CROSS_INSTALL: g++-15-riscv64-linux-gnu clang-21

# Namespace-guarded, unlike the other smoke builds: their consumers are the
# riscv64 smoke tests, which need a self-hosted runner no fork has.  See
# test.linux.gitlab-ci.yml.
build:linux:riscv64:gcc-15:default:smoketest:
  extends: [ build:linux:riscv64:gcc-15:default, .smoketest:build ]
  variables:
    EIGEN_CI_BUILD_TARGET: buildsmoketests
  rules: !reference [.rules:libeigen:smoketest:upstream-runner, rules]
  tags:
    - saas-linux-large-amd64

build:linux:riscv64:clang-21:default:smoketest:
  extends: [ build:linux:riscv64:clang-21:default, .smoketest:build ]
  variables:
    EIGEN_CI_BUILD_TARGET: buildsmoketests
  rules: !reference [.rules:libeigen:smoketest:upstream-runner, rules]
  tags:
    - saas-linux-large-amd64

######## MR Smoke Tests ########################################################
# aarch64 targets are cross-compiled via g++-10-aarch64-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, .smoketest:build ]
  image: ${EIGEN_CI_IMAGE_LINUX_AMD64_SMOKETEST_BUILD}
  variables:
    EIGEN_CI_SKIP_APT: "true"
    EIGEN_CI_BUILD_TARGET: buildsmoketests
  rules: !reference [.rules:libeigen:smoketest, rules]
  tags:
    - saas-linux-medium-amd64

build:linux:cross:x86-64:clang-14:default:smoketest:
  extends: [ build:linux:cross:x86-64:clang-14:default, .smoketest:build ]
  image: ${EIGEN_CI_IMAGE_LINUX_AMD64_SMOKETEST_BUILD}
  variables:
    EIGEN_CI_SKIP_APT: "true"
    EIGEN_CI_BUILD_TARGET: buildsmoketests
  rules: !reference [.rules:libeigen:smoketest, rules]
  tags:
    - saas-linux-medium-amd64

build:linux:aarch64:gcc-10:default:smoketest:
  extends: [ build:linux:cross:aarch64:gcc-10:default, .smoketest:build ]
  image: ${EIGEN_CI_IMAGE_LINUX_AMD64_SMOKETEST_BUILD}
  variables:
    EIGEN_CI_SKIP_APT: "true"
    EIGEN_CI_BUILD_TARGET: buildsmoketests
  rules: !reference [.rules:libeigen:smoketest, rules]
  tags:
    - saas-linux-medium-amd64

build:linux:aarch64:clang-14:default:smoketest:
  extends: [ build:linux:cross:aarch64:clang-14:default, .smoketest:build ]
  image: ${EIGEN_CI_IMAGE_LINUX_AMD64_SMOKETEST_BUILD}
  variables:
    EIGEN_CI_SKIP_APT: "true"
    EIGEN_CI_BUILD_TARGET: buildsmoketests
  rules: !reference [.rules:libeigen:smoketest, rules]
  tags:
    - saas-linux-medium-amd64

######## MR Affected Tests #####################################################
# Opt-in via the `affected-tests` label: build every test the merge request diff
# can reach.  The target list comes from the select:tests job; see
# scripts/affected_tests.py.
#
# The four jobs below always run under the label; the rest are gated on the
# platform they target.  Trigger rules are shared with the paired test jobs; see
# .rules:libeigen:affected-tests:* in ci/common.gitlab-ci.yml, and .agents/ci.md
# for which label selects what and how this tier relates to the smoke matrix it
# suppresses.
#
# Every job here names its parent's ccache pool (EIGEN_CI_CCACHE_POOL): the
# selection is a subset of the parent's targets compiled with the same flags,
# so it hits in, and feeds, the pool the parent's full builds fill. Under the
# default `$CI_JOB_NAME_SLUG` pool it would have an `-affected` pool of its own
# that no full build ever warms.

##### Always, under the label ##################################################

build:linux:cross:x86-64:gcc-10:avx2:affected:
  extends: [ build:linux:cross:x86-64:gcc-10:avx2, .affected:build ]
  variables:
    EIGEN_CI_CCACHE_POOL: build-linux-cross-x86-64-gcc-10-avx2
  rules: !reference [.rules:libeigen:affected-tests, rules]

build:linux:cross:x86-64:clang-14:default:affected:
  extends: [ build:linux:cross:x86-64:clang-14:default, .affected:build ]
  variables:
    EIGEN_CI_CCACHE_POOL: build-linux-cross-x86-64-clang-14-default
  rules: !reference [.rules:libeigen:affected-tests, rules]

build:linux:cross:aarch64:gcc-10:default:affected:
  extends: [ build:linux:cross:aarch64:gcc-10:default, .affected:build ]
  variables:
    EIGEN_CI_CCACHE_POOL: build-linux-cross-aarch64-gcc-10-default
  rules: !reference [.rules:libeigen:affected-tests, rules]

build:linux:cross:aarch64:clang-14:default:affected:
  extends: [ build:linux:cross:aarch64:clang-14:default, .affected:build ]
  variables:
    EIGEN_CI_CCACHE_POOL: build-linux-cross-aarch64-clang-14-default
  rules: !reference [.rules:libeigen:affected-tests, rules]

##### Platform-triggered #######################################################

build:linux:cross:x86-64:gcc-10:default:affected:
  extends: [ build:linux:cross:x86-64:gcc-10:default, .affected:build ]
  variables:
    EIGEN_CI_CCACHE_POOL: build-linux-cross-x86-64-gcc-10-default
  rules: !reference [.rules:libeigen:affected-tests:sse, rules]

build:linux:cross:x86-64:gcc-10:avx:affected:
  extends: [ build:linux:cross:x86-64:gcc-10:avx, .affected:build ]
  variables:
    EIGEN_CI_CCACHE_POOL: build-linux-cross-x86-64-gcc-10-avx
  rules: !reference [.rules:libeigen:affected-tests:avx, rules]

build:linux:cross:x86-64:gcc-10:avx512dq:affected:
  extends: [ build:linux:cross:x86-64:gcc-10:avx512dq, .affected:build ]
  variables:
    EIGEN_CI_CCACHE_POOL: build-linux-cross-x86-64-gcc-10-avx512dq
  rules: !reference [.rules:libeigen:affected-tests:avx512, rules]

# The FP16 builds reuse the existing split compile-only jobs; there is no runner
# with AVX512-FP16 hardware for a paired test job.
build:linux:cross:x86-64:clang-19:avx512fp16:official:affected:
  extends: build:linux:cross:x86-64:clang-19:avx512fp16:official
  variables:
    EIGEN_CI_CCACHE_POOL: build-linux-cross-x86-64-clang-19-avx512fp16-official
  rules: !reference [.rules:libeigen:affected-tests:avx512fp16, rules]

build:linux:cross:x86-64:clang-19:avx512fp16:contrib:affected:
  extends: build:linux:cross:x86-64:clang-19:avx512fp16:contrib
  variables:
    EIGEN_CI_CCACHE_POOL: build-linux-cross-x86-64-clang-19-avx512fp16-contrib
  rules: !reference [.rules:libeigen:affected-tests:avx512fp16, rules]

# 32-bit arm: a distinct NEON code path from the aarch64 job above.
build:linux:cross:arm:gcc-10:default:affected:
  extends: [ build:linux:cross:arm:gcc-10:default, .affected:build ]
  variables:
    EIGEN_CI_CCACHE_POOL: build-linux-cross-arm-gcc-10-default
  rules: !reference [.rules:libeigen:affected-tests:neon, rules]

build:linux:cross:ppc64le:gcc-14:default:affected:
  extends: [ build:linux:cross:ppc64le:gcc-14:default, .affected:build ]
  variables:
    EIGEN_CI_CCACHE_POOL: build-linux-cross-ppc64le-gcc-14-default
  rules: !reference [.rules:libeigen:affected-tests:altivec, rules]

build:linux:cross:loongarch64:gcc-14:default:affected:
  extends: [ build:linux:cross:loongarch64:gcc-14:default, .affected:build ]
  variables:
    EIGEN_CI_CCACHE_POOL: build-linux-cross-loongarch64-gcc-14-default
  rules: !reference [.rules:libeigen:affected-tests:lsx, rules]

build:linux:riscv64:gcc-15:default:affected:
  extends: [ build:linux:riscv64:gcc-15:default, .affected:build ]
  variables:
    EIGEN_CI_CCACHE_POOL: build-linux-riscv64-gcc-15-default
  rules: !reference [.rules:libeigen:affected-tests:rvv10, rules]

# SME gets compile coverage of the whole suite under the streaming-mode flags
# rather than a selection: the per-SVL test jobs run a curated target subset
# through EIGEN_CI_CTEST_REGEX, which a selection would conflict with.
build:linux:cross:sme:gcc-14:full:affected:
  extends: build:linux:cross:sme:gcc-14:full
  variables:
    EIGEN_CI_CCACHE_POOL: build-linux-cross-sme-gcc-14-full
  rules: !reference [.rules:libeigen:affected-tests:sme, rules]

# One product_sme build, so a change to the gate is caught by the affected tier
# rather than only by the nightly run.
build:linux:cross:sme:gcc-14:no-f64f64:affected:
  extends: build:linux:cross:sme:gcc-14:no-f64f64
  variables:
    EIGEN_CI_CCACHE_POOL: build-linux-cross-sme-gcc-14-no-f64f64
  rules: !reference [.rules:libeigen:affected-tests:sme, rules]

# The VL sweep is the point of the affected tier for SVE: a change to the packet
# code is exactly what breaks at one vector length and not another.
build:linux:cross:sve:gcc-13:vl128:affected:
  extends: [ build:linux:cross:sve:gcc-13:vl128, .affected:build ]
  variables:
    EIGEN_CI_CCACHE_POOL: build-linux-cross-sve-gcc-13-vl128
  rules: !reference [.rules:libeigen:affected-tests:sve, rules]

build:linux:cross:sve:gcc-13:vl512:affected:
  extends: [ build:linux:cross:sve:gcc-13:vl512, .affected:build ]
  variables:
    EIGEN_CI_CCACHE_POOL: build-linux-cross-sve-gcc-13-vl512
  rules: !reference [.rules:libeigen:affected-tests:sve, rules]

build:linux:cross:sve:gcc-13:vl256:affected:
  extends: [ build:linux:cross:sve:gcc-13:vl256, .affected:build ]
  variables:
    EIGEN_CI_CCACHE_POOL: build-linux-cross-sve-gcc-13-vl256
  rules: !reference [.rules:libeigen:affected-tests:sve, rules]
