| #!/bin/bash |
| # SPDX-FileCopyrightText: The Eigen Authors |
| # SPDX-License-Identifier: MPL-2.0 |
| |
| # Configures Eigen and runs only the build-system integration tests under |
| # test/buildsystem. |
| # |
| # This job builds and consumes no artifact, unlike the paired build/test jobs: |
| # each scenario drives its own nested configure, build, and install, so the |
| # enclosing build directory holds nothing but the CTest definitions. For the |
| # same reason the job stays off the content-addressed pass cache, which keys on |
| # a test's executable; these tests have none, so a recorded pass would outlive |
| # any change to Eigen's CMake files. |
| |
| set -ex |
| |
| rootdir=$(pwd) |
| mkdir -p "${EIGEN_CI_BUILDDIR}" |
| cd "${EIGEN_CI_BUILDDIR}" |
| |
| # The scenarios configure Eigen themselves with whatever options they need, so |
| # this configure only has to register the tests. |
| # |
| # EIGEN_CI_ADDITIONAL_ARGS carries several -D options in a single variable and |
| # has to word-split; ci/build.linux.gitlab-ci.yml documents that contract for |
| # the jobs that set it. Every other expansion here is a single word. |
| # shellcheck disable=SC2086 |
| cmake -G Ninja \ |
| "-DCMAKE_C_COMPILER=${EIGEN_CI_C_COMPILER}" \ |
| "-DCMAKE_CXX_COMPILER=${EIGEN_CI_CXX_COMPILER}" \ |
| -DEIGEN_BUILD_TESTING=ON \ |
| -DEIGEN_BUILD_DOC=OFF \ |
| -DEIGEN_BUILD_DEMOS=OFF \ |
| -DEIGEN_BUILD_BLAS=OFF \ |
| -DEIGEN_BUILD_LAPACK=OFF \ |
| ${EIGEN_CI_ADDITIONAL_ARGS} "${rootdir}" |
| |
| # --no-tests=error matters more here than in the paired test jobs: everything |
| # that registers these tests is itself CMake, so a guard in |
| # test/buildsystem/CMakeLists.txt that stops matching would otherwise leave |
| # ctest reporting success over an empty selection. |
| ctest -L buildsystem --output-on-failure --no-tests=error "-j${NPROC}" |
| |
| cd "${rootdir}" |
| |
| set +x |