diff --git a/dist/tools/doccheck/check.sh b/dist/tools/doccheck/check.sh
index b709cd7fcaaf958e0184f3a2f1bd08213b685db5..f5fa0e27ef8b1a3468f2e2ea3242cb3d3ea9a0aa 100755
--- a/dist/tools/doccheck/check.sh
+++ b/dist/tools/doccheck/check.sh
@@ -20,15 +20,20 @@ else
     CRESET=
 fi
 
-ERRORS=$(make -C "${RIOTBASE}" doc 2>&1 | \
-            grep '.*warning' | \
-            sed "s#${PWD}/\([^:]*\)#\1#g")
+DOXY_OUTPUT=$(make -C "${RIOTBASE}" doc 2>&1)
+DOXY_ERRCODE=$?
 
-if [ -n "${ERRORS}" ]
-then
-    echo -e "${CERROR}ERROR: Doxygen generates the following warnings:${CRESET}"
-    echo "${ERRORS}"
+if [ "${DOXY_ERRCODE}" -ne 0 ] ; then
+    echo "'make doc' exited with non-zero code (${DOXY_ERRCODE})"
+    echo "${DOXY_OUTPUT}"
     exit 2
+else
+    ERRORS=$(echo "${DOXY_OUTPUT}" | grep '.*warning' | sed "s#${PWD}/\([^:]*\)#\1#g")
+    if [ -n "${ERRORS}" ] ; then
+        echo -e "${CERROR}ERROR: Doxygen generates the following warnings:${CRESET}"
+        echo "${ERRORS}"
+        exit 2
+    fi
 fi
 
 exclude_filter() {