--- /dev/null
+#!/bin/sh -e
+
+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 g++ "$@"
+fi
+
+if [ "$(eval printf "'%s'" "\"\${$(($#-1))}\"")" = "-c" ]; then
+ # Not invoked for linking
+ exec g++ "$@"
+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 g++ "$@" -Werror
--- /dev/null
+#!/bin/sh -e
+
+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 gcc "$@"
+fi
+
+if [ "$(eval printf "'%s'" "\"\${$(($#-1))}\"")" = "-c" ]; then
+ # Not invoked for linking
+ exec gcc "$@"
+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 gcc "$@" -Werror
- |
export PATH="/usr/lib/ccache:$PATH"
export CCACHE_BASEDIR="$PWD"
- section_start ccache_before "ccache stats before build"
- ccache --show-stats
- section_end ccache_before
+ if test -x /usr/bin/ccache; then
+ section_start ccache_before "ccache stats before build"
+ ccache --show-stats
+ section_end ccache_before
+ fi
after_script:
- - ccache --show-stats | grep "cache hit rate"
+ - if test -x /usr/bin/ccache; then ccache --show-stats | grep "cache hit rate"; fi
- !reference [default, after_script]
.build-windows:
GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,d3d12,asahi,crocus"
VULKAN_DRIVERS: swrast
EXTRA_OPTION: >
- --native-file .gitlab-ci/build/meson-native-lto-wrappers.txt
+ --native-file .gitlab-ci/build/meson-native-lto-wrappers-ccache.txt
-D spirv-to-dxil=true
-D osmesa=true
-D tools=drm-shim,etnaviv,freedreno,glsl,intel,intel-ui,nir,nouveau,lima,panfrost,asahi
--- /dev/null
+[binaries]
+c = 'ccache-gcc-link-werror.sh'
+cpp = 'ccache-g++-link-werror.sh'
[binaries]
-c = 'ccache-gcc-link-werror.sh'
-cpp = 'ccache-g++-link-werror.sh'
+c = 'gcc-link-werror.sh'
+cpp = 'g++-link-werror.sh'
# Clean up any build cache for rust.
rm -rf /.cargo
-ccache --show-stats
+if test -x /usr/bin/ccache; then
+ ccache --show-stats
+fi
#!/bin/sh
-if test -f /etc/debian_version; then
- CCACHE_PATH=/usr/lib/ccache
-elif test -f /etc/alpine-release; then
- CCACHE_PATH=/usr/lib/ccache/bin
-else
- CCACHE_PATH=/usr/lib64/ccache
+if test -x /usr/bin/ccache; then
+ if test -f /etc/debian_version; then
+ CCACHE_PATH=/usr/lib/ccache
+ elif test -f /etc/alpine-release; then
+ CCACHE_PATH=/usr/lib/ccache/bin
+ else
+ CCACHE_PATH=/usr/lib64/ccache
+ fi
+
+ # Common setup among container builds before we get to building code.
+
+ export CCACHE_COMPILERCHECK=content
+ export CCACHE_COMPRESS=true
+ export CCACHE_DIR=/cache/$CI_PROJECT_NAME/ccache
+ export PATH=$CCACHE_PATH:$PATH
+
+ # CMake ignores $PATH, so we have to force CC/GCC to the ccache versions.
+ export CC="${CCACHE_PATH}/gcc"
+ export CXX="${CCACHE_PATH}/g++"
+
+ ccache --show-stats
fi
-# Common setup among container builds before we get to building code.
-
-export CCACHE_COMPILERCHECK=content
-export CCACHE_COMPRESS=true
-export CCACHE_DIR=/cache/$CI_PROJECT_NAME/ccache
-export PATH=$CCACHE_PATH:$PATH
-
-# CMake ignores $PATH, so we have to force CC/GCC to the ccache versions.
-export CC="${CCACHE_PATH}/gcc"
-export CXX="${CCACHE_PATH}/g++"
-
# When not using the mold linker (e.g. unsupported architecture), force
# linkers to gold, since it's so much faster for building. We can't use
# lld because we're on old debian and it's buggy. ming fails meson builds
grep -v mingw | \
xargs -n 1 -I '{}' ln -sf '{}.gold' '{}'
-ccache --show-stats
-
# Make a wrapper script for ninja to always include the -j flags
{
echo '#!/bin/sh -x'