ci: add linker wrapper for clang
authorEric Engestrom <eric@igalia.com>
Fri, 17 Mar 2023 20:48:32 +0000 (20:48 +0000)
committerMarge Bot <emma+marge@anholt.net>
Wed, 22 Mar 2023 17:28:07 +0000 (17:28 +0000)
Signed-off-by: Eric Engestrom <eric@igalia.com>
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21997>

.gitlab-ci/build/clang++-link-werror.sh [new file with mode: 0755]
.gitlab-ci/build/clang-link-werror.sh [new file with mode: 0755]

diff --git a/.gitlab-ci/build/clang++-link-werror.sh b/.gitlab-ci/build/clang++-link-werror.sh
new file mode 100755 (executable)
index 0000000..938327a
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/sh -e
+
+if command -V ccache >/dev/null 2>/dev/null; then
+  CCACHE=ccache
+else
+  CCACHE=
+fi
+
+if [ "$(ps -p $(ps -p $PPID -o ppid --no-headers) -o comm --no-headers)" != ninja ]; then
+    # Not invoked by ninja (e.g. for a meson feature check)
+    exec $CCACHE clang++ "$@"
+fi
+
+if [ "$(eval printf "'%s'" "\"\${$(($#-1))}\"")" = "-c" ]; then
+    # Not invoked for linking
+    exec $CCACHE clang++ "$@"
+fi
+
+# Compiler invoked by ninja for linking. Add -Werror to turn compiler warnings into errors
+# with LTO. (meson's werror should arguably do this, but meanwhile we need to)
+exec $CCACHE clang++ "$@" -Werror
diff --git a/.gitlab-ci/build/clang-link-werror.sh b/.gitlab-ci/build/clang-link-werror.sh
new file mode 100755 (executable)
index 0000000..0486782
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/sh -e
+
+if command -V ccache >/dev/null 2>/dev/null; then
+  CCACHE=ccache
+else
+  CCACHE=
+fi
+
+if [ "$(ps -p $(ps -p $PPID -o ppid --no-headers) -o comm --no-headers)" != ninja ]; then
+    # Not invoked by ninja (e.g. for a meson feature check)
+    exec $CCACHE clang "$@"
+fi
+
+if [ "$(eval printf "'%s'" "\"\${$(($#-1))}\"")" = "-c" ]; then
+    # Not invoked for linking
+    exec $CCACHE clang "$@"
+fi
+
+# Compiler invoked by ninja for linking. Add -Werror to turn compiler warnings into errors
+# with LTO. (meson's werror should arguably do this, but meanwhile we need to)
+exec $CCACHE clang "$@" -Werror