1#!/bin/bash 2 3set -e 4set -o xtrace 5 6CROSS_FILE=/cross_file-"$CROSS".txt 7 8# We need to control the version of llvm-config we're using, so we'll 9# tweak the cross file or generate a native file to do so. 10if test -n "$LLVM_VERSION"; then 11 LLVM_CONFIG="llvm-config-${LLVM_VERSION}" 12 echo -e "[binaries]\nllvm-config = '`which $LLVM_CONFIG`'" > native.file 13 if [ -n "$CROSS" ]; then 14 sed -i -e '/\[binaries\]/a\' -e "llvm-config = '`which $LLVM_CONFIG`'" $CROSS_FILE 15 fi 16 $LLVM_CONFIG --version 17else 18 rm -f native.file 19 touch native.file 20fi 21 22# cross-xfail-$CROSS, if it exists, contains a list of tests that are expected 23# to fail for the $CROSS configuration, one per line. you can then mark those 24# tests in their meson.build with: 25# 26# test(..., 27# should_fail: meson.get_cross_property('xfail', '').contains(t), 28# ) 29# 30# where t is the name of the test, and the '' is the string to search when 31# not cross-compiling (which is empty, because for amd64 everything is 32# expected to pass). 33if [ -n "$CROSS" ]; then 34 CROSS_XFAIL=.gitlab-ci/cross-xfail-"$CROSS" 35 if [ -s "$CROSS_XFAIL" ]; then 36 sed -i \ 37 -e '/\[properties\]/a\' \ 38 -e "xfail = '$(tr '\n' , < $CROSS_XFAIL)'" \ 39 "$CROSS_FILE" 40 fi 41fi 42 43# Only use GNU time if available, not any shell built-in command 44case $CI_JOB_NAME in 45 # strace and wine don't seem to mix well 46 # ASAN leak detection is incompatible with strace 47 debian-mingw32-x86_64|*-asan*) 48 if test -f /usr/bin/time; then 49 MESON_TEST_ARGS+=--wrapper=$PWD/.gitlab-ci/meson/time.sh 50 fi 51 ;; 52 *) 53 if test -f /usr/bin/time -a -f /usr/bin/strace; then 54 MESON_TEST_ARGS+=--wrapper=$PWD/.gitlab-ci/meson/time-strace.sh 55 fi 56 ;; 57esac 58 59rm -rf _build 60meson _build --native-file=native.file \ 61 --wrap-mode=nofallback \ 62 ${CROSS+--cross "$CROSS_FILE"} \ 63 -D prefix=`pwd`/install \ 64 -D libdir=lib \ 65 -D buildtype=${BUILDTYPE:-debug} \ 66 -D build-tests=true \ 67 -D c_args="$(echo -n $C_ARGS)" \ 68 -D cpp_args="$(echo -n $CPP_ARGS)" \ 69 -D libunwind=${UNWIND} \ 70 ${DRI_LOADERS} \ 71 -D dri-drivers=${DRI_DRIVERS:-[]} \ 72 ${GALLIUM_ST} \ 73 -D gallium-drivers=${GALLIUM_DRIVERS:-[]} \ 74 -D vulkan-drivers=${VULKAN_DRIVERS:-[]} \ 75 -D werror=true \ 76 ${EXTRA_OPTION} 77cd _build 78meson configure 79ninja 80LC_ALL=C.UTF-8 meson test --num-processes ${FDO_CI_CONCURRENT:-4} ${MESON_TEST_ARGS} 81ninja install 82cd .. 83