diff --git a/tests/test-headers.sh b/tests/test-headers.sh
index f7ae014501..ece6194b1f 100644
--- a/tests/test-headers.sh
+++ b/tests/test-headers.sh
@@ -1,56 +1,56 @@
 #!/bin/sh
 #
 # Copyright 2022-2024 the Pacemaker project contributors
 #
 # The version control history for this file may have further details.
 #
 # This source code is licensed under the GNU General Public License version 2
 # or later (GPLv2+) WITHOUT ANY WARRANTY.
 #
 
 #
 # Check public headers for C++ compatibility and consistent protection #ifdefs
 #
 
 : ${SRCDIR:-..}
 
 INCLUDE_FILES="$(find "${SRCDIR}/include/" "${SRCDIR}/lib/" -name \*.h \
                       -a \! -name config.h            \
                       -a \! -name gettext.h)"
 
 TESTFILE="$(mktemp "${TMPDIR:-/tmp}/test-headers-XXXXXXXXXX.c")"
 
 for i in $INCLUDE_FILES
 do
     NAME="$(echo $i | sed -e 's#^.*/include/##' | sed -e 's#^.*/lib/##')"
     PROTECT="PCMK__$(echo "$NAME" | tr '[:lower:]/\-\.' '[:upper:]___' | sed 's/_H$/__H/')"
 
     cat >"$TESTFILE" <<EOF
 #include <$NAME>
 #ifndef $PROTECT
 #error no $PROTECT header protector in file $i
 #endif
 int main(void) {return 0;}
 EOF
 
     # Not including ${CFLAGS} because it seems to break header detection. But we're not really building here
     ${CC} -I "${SRCDIR}/include" -I"${SRCDIR}/lib" \
         -DHAVE_CONFIG_H ${CPPFLAGS} ${LIBS} "$TESTFILE" -o /dev/null
     if [ $? -ne 0 ]
     then
         rm -f "$TESTFILE"
         exit 1
     fi
-    if [ -n "$CXX" ]
+    if [ -n "$CXX" ] && [ command -v "$CXX" >/dev/null 2>&1 ]
     then
         ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LIBS} \
             -I "${SRCDIR}/include" -I"${SRCDIR}/lib" "$TESTFILE" -o /dev/null
         if [ $? -ne 0 ]
         then
             rm -f "$TESTFILE"
             exit 1
         fi
         echo -n
     fi
     rm -f "$TESTFILE"
 done