test_build.sh: Re-run tests with `clang` if available

If ${CC} ends with `cc', doesn't look like Clang, and `clang` is
executable, repeat the test run with Clang.

Change-Id: Ib2afe759af9d2077bbacdd98a6a553668f6db5e5
Signed-off-by: Nico Huber <nico.h@gmx.de>
Reviewed-on: https://review.sourcearcade.org/c/flashprog/+/356
diff --git a/test_build.sh b/test_build.sh
index 74118fb..396ee9d 100755
--- a/test_build.sh
+++ b/test_build.sh
@@ -26,20 +26,37 @@
 	"${prog}" -p dummy:emulate=M25P10.RES,image="${TEMP_DIR}/image" -c M25P10 -v "${TEMP_DIR}/empty"
 }
 
-if [ "${MAKECMD=make}" ]; then
-	${MAKECMD} clean
-	eval ${MAKECMD} -j${CPUS:-$(nproc)} CC="\"${CC:-ccache cc}\"" ${MAKEARGS-CONFIG_EVERYTHING=yes}
-	test_prog ./flashprog
-fi
-
-if [ "${MESONCMD=meson}" ]; then
-	eval ${MESONCMD} setup ${MESONARGS--D programmer=all --buildtype release} "${TEMP_DIR}/build"
-	ninja ${CPUS:+-j${CPUS}} -C "${TEMP_DIR}/build"
-	test_prog "${TEMP_DIR}/build/flashprog"
-
-	if [ "${MAKECMD}" -a ! "${CROSS_COMPILE}" ]; then
-		./flashprog -L >"${TEMP_DIR}/flashprog.supported"
-		"${TEMP_DIR}/build/flashprog" -L >"${TEMP_DIR}/mashprog.supported"
-		diff -u "${TEMP_DIR}/flashprog.supported" "${TEMP_DIR}/mashprog.supported"
+build_and_test() {
+	if [ "${MAKECMD=make}" ]; then
+		${MAKECMD} clean
+		eval ${MAKECMD} -j${CPUS:-$(nproc)} CC="\"${CC}\"" ${MAKEARGS-CONFIG_EVERYTHING=yes}
+		test_prog ./flashprog
 	fi
+
+	if [ "${MESONCMD=meson}" ]; then
+		eval CC="\"${CC}\"" ${MESONCMD} setup ${MESONARGS--D programmer=all --buildtype release} "${TEMP_DIR}/build"
+		ninja ${CPUS:+-j${CPUS}} -C "${TEMP_DIR}/build"
+		test_prog "${TEMP_DIR}/build/flashprog"
+
+		if [ "${MAKECMD}" -a ! "${CROSS_COMPILE}" ]; then
+			./flashprog -L >"${TEMP_DIR}/flashprog.supported"
+			"${TEMP_DIR}/build/flashprog" -L >"${TEMP_DIR}/mashprog.supported"
+			diff -u "${TEMP_DIR}/flashprog.supported" "${TEMP_DIR}/mashprog.supported"
+		fi
+	fi
+}
+
+CC="${CC:-ccache cc}"
+
+build_and_test
+if [ "${CC%%*cc}" = "" ] && \
+   [ -x "$(command -v clang 2>&1)" ] && \
+   ! "${CC}" --version 2>&1 | grep -iq clang 2>&1; then
+	if [ "${CC% *cc}" != "${CC}" ]; then
+		CC="${CC% *cc} clang"
+	else
+		CC="clang"
+	fi
+	rm -rf "${TEMP_DIR}/build"
+	build_and_test
 fi