# Base configuration for linux cross-compilation.
.build:linux:cross:
  needs: []
  extends: .common:linux:cross
  stage: build
  variables:
    EIGEN_CI_BUILD_TARGET: buildtests
  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
  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: "70;80"
    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

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

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"
  tags:
    - saas-linux-medium-amd64

build:linux:cross:x86-64:clang-14:default:smoketest:
  extends: build:linux:cross:x86-64:clang-14:default
  variables:
    EIGEN_CI_BUILD_TARGET: buildsmoketests
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
  tags:
    - saas-linux-medium-amd64

build:linux:aarch64:gcc-10:default:smoketest:
  extends: build:linux:cross:aarch64:gcc-10:default
  variables:
    EIGEN_CI_BUILD_TARGET: buildsmoketests
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
  tags:
    - saas-linux-medium-arm64

