anv: Avoid emitting UBO surface states that won't be used
[mesa.git] / .gitlab-ci / meson-build.sh
index c7fef6fc3157f805fceb64e180c5a804ba3e56c7..d56e526ef207c86708e390814f426d3351291ba2 100755 (executable)
@@ -3,22 +3,50 @@
 set -e
 set -o xtrace
 
+CROSS_FILE=/cross_file-"$CROSS".txt
+
 # We need to control the version of llvm-config we're using, so we'll
-# generate a native file to do so. This requires meson >=0.49
+# tweak the cross file or generate a native file to do so.
 if test -n "$LLVM_VERSION"; then
     LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
     echo -e "[binaries]\nllvm-config = '`which $LLVM_CONFIG`'" > native.file
+    if [ -n "$CROSS" ]; then
+        sed -i -e '/\[binaries\]/a\' -e "llvm-config = '`which $LLVM_CONFIG`'" $CROSS_FILE
+    fi
     $LLVM_CONFIG --version
 else
     rm -f native.file
     touch native.file
 fi
 
+# cross-xfail-$CROSS, if it exists, contains a list of tests that are expected
+# to fail for the $CROSS configuration, one per line. you can then mark those
+# tests in their meson.build with:
+#
+# test(...,
+#      should_fail: meson.get_cross_property('xfail', '').contains(t),
+#     )
+#
+# where t is the name of the test, and the '' is the string to search when
+# not cross-compiling (which is empty, because for amd64 everything is
+# expected to pass).
+if [ -n "$CROSS" ]; then
+    CROSS_XFAIL=.gitlab-ci/cross-xfail-"$CROSS"
+    if [ -s "$CROSS_XFAIL" ]; then
+        sed -i \
+            -e '/\[properties\]/a\' \
+            -e "xfail = '$(tr '\n' , < $CROSS_XFAIL)'" \
+            "$CROSS_FILE"
+    fi
+fi
+
 rm -rf _build
 meson _build --native-file=native.file \
-      ${CROSS} \
+      --wrap-mode=nofallback \
+      ${CROSS+--cross "$CROSS_FILE"} \
+      -D prefix=`pwd`/install \
       -D libdir=lib \
-      -D buildtype=debug \
+      -D buildtype=${BUILDTYPE:-debug} \
       -D build-tests=true \
       -D libunwind=${UNWIND} \
       ${DRI_LOADERS} \
@@ -32,9 +60,30 @@ cd _build
 meson configure
 ninja -j4
 LC_ALL=C.UTF-8 ninja test
-DESTDIR=$PWD/../install ninja install
+ninja install
 cd ..
 
 if test -n "$MESON_SHADERDB"; then
     ./.gitlab-ci/run-shader-db.sh;
 fi
+
+# Delete 2MB of includes from artifacts.
+rm -rf install/include
+
+# Strip the drivers in the artifacts to cut 80% of the artifacts size.
+if [ -n "$CROSS" ]; then
+    STRIP=`sed -n -E "s/strip\s*=\s*'(.*)'/\1/p" "$CROSS_FILE"`
+    if [ -z "$STRIP" ]; then
+        echo "Failed to find strip command in cross file"
+        exit 1
+    fi
+else
+    STRIP="strip"
+fi
+find install -name \*.so -exec $STRIP {} \;
+
+# Test runs don't pull down the git tree, so put the dEQP helper
+# script and associated bits there.
+mkdir -p artifacts/
+cp -Rp .gitlab-ci/deqp* artifacts/
+# cp -Rp src/freedreno/ci/expected* artifacts/