# 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 rules: - if: $CI_PIPELINE_SOURCE == "schedule" && $CI_PROJECT_NAMESPACE == "libeigen" - if: $CI_PIPELINE_SOURCE == "web" && $CI_PROJECT_NAMESPACE == "libeigen" cache: key: "$CI_JOB_NAME-$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: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: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" # # 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: # Addtional 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-18.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 ######## 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"