|  | #!/bin/bash | 
|  |  | 
|  | set -x | 
|  |  | 
|  | # Create and enter build directory. | 
|  | rootdir=`pwd` | 
|  | mkdir -p ${EIGEN_CI_BUILDDIR} | 
|  | cd ${EIGEN_CI_BUILDDIR} | 
|  |  | 
|  | # Configure build. | 
|  | cmake -G Ninja                                                   \ | 
|  | -DCMAKE_CXX_COMPILER=${EIGEN_CI_CXX_COMPILER}                  \ | 
|  | -DCMAKE_C_COMPILER=${EIGEN_CI_C_COMPILER}                      \ | 
|  | -DCMAKE_CXX_COMPILER_TARGET=${EIGEN_CI_CXX_COMPILER_TARGET}    \ | 
|  | ${EIGEN_CI_ADDITIONAL_ARGS} ${rootdir} | 
|  |  | 
|  | target="" | 
|  | if [[ ${EIGEN_CI_BUILD_TARGET} ]]; then | 
|  | target="--target ${EIGEN_CI_BUILD_TARGET}" | 
|  | fi | 
|  |  | 
|  | # Builds (particularly gcc) sometimes get killed, potentially when running | 
|  | # out of resources.  In that case, keep trying to build the remaining | 
|  | # targets (k0), then try to build again with a single thread (j1) to minimize | 
|  | # resource use. | 
|  | cmake --build . ${target} -- -k0 || cmake --build . ${target} -- -k0 -j1 | 
|  |  | 
|  | # Return to root directory. | 
|  | cd ${rootdir} | 
|  |  | 
|  | set +x |