# Base configuration for linux builds and tests.
# SPDX-FileCopyrightText: The Eigen Authors
# SPDX-License-Identifier: MPL-2.0
.common:linux:cross:
  image: ubuntu:24.04
  variables:
    EIGEN_CI_TARGET_ARCH: ""
    EIGEN_CI_ADDITIONAL_ARGS: ""
    # If host matches target, use the following:
    EIGEN_CI_C_COMPILER: ""
    EIGEN_CI_CXX_COMPILER: ""
    EIGEN_CI_INSTALL: "${EIGEN_CI_C_COMPILER} ${EIGEN_CI_CXX_COMPILER}"
    # If host does not match the target, use the following:
    EIGEN_CI_CROSS_TARGET_TRIPLE: ""
    EIGEN_CI_CROSS_C_COMPILER: ${EIGEN_CI_C_COMPILER}
    EIGEN_CI_CROSS_CXX_COMPILER: ${EIGEN_CI_CXX_COMPILER}
    EIGEN_CI_CROSS_INSTALL: "${EIGEN_CI_CROSS_C_COMPILER} ${EIGEN_CI_CROSS_CXX_COMPILER}"
  before_script:
    # Call script in current shell - it sets up some environment variables.
    - . ci/scripts/common.linux.before_script.sh
  artifacts:
    when: always
    name: "$CI_JOB_NAME_SLUG-$CI_COMMIT_REF_SLUG"
    paths:
      - ${EIGEN_CI_BUILDDIR}/
    exclude:
      - ${EIGEN_CI_BUILDDIR}/**/*.o
      - ${EIGEN_CI_BUILDDIR}/**/.ninja_log
      - ${EIGEN_CI_BUILDDIR}/**/.ninja_deps
    expire_in: 2 days

# Base configuration for Windows builds and tests.
.common:windows:
  variables:
    EIGEN_CI_MSVC_ARCH: x64
    EIGEN_CI_MSVC_VER: "14.29"
    EIGEN_CI_ADDITIONAL_ARGS: ""
    EIGEN_CI_BEFORE_SCRIPT: ""
  before_script:
     - . ci/scripts/common.windows.before_script.ps1
  artifacts:
    when: always
    name: "$CI_JOB_NAME_SLUG-$CI_COMMIT_REF_NAME"
    paths:
      - ${EIGEN_CI_BUILDDIR}/
    exclude:
      - ${EIGEN_CI_BUILDDIR}/**/*.obj
      - ${EIGEN_CI_BUILDDIR}/**/.ninja_log
      - ${EIGEN_CI_BUILDDIR}/**/.ninja_deps
    expire_in: 2 days
