diff options
Diffstat (limited to 'tests/test-headers.sh')
-rw-r--r-- | tests/test-headers.sh | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/test-headers.sh b/tests/test-headers.sh new file mode 100644 index 0000000..b120434 --- /dev/null +++ b/tests/test-headers.sh @@ -0,0 +1,47 @@ +#!/bin/sh +# +# Check public headers for c++ compatibility and consistent protection #ifdefs +# +# + +: ${SRCDIR:-..} + +INCLUDE_FILES="$(find "${SRCDIR}/include/" -name \*.h \ + -a \! -name \*internal.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/##')" + PROTECT="PCMK__$(echo "$NAME" | tr '[:lower:]/\-\.' '[:upper:]___' | sed 's/_H$/__H/')" + + cat >"$TESTFILE" <<EOF +#include <$NAME> +#ifndef $PROTECT +#error no 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" -DHAVE_CONFIG_H ${CPPFLAGS} ${LIBS} "$TESTFILE" -o /dev/null + if [ $? -ne 0 ] + then + rm -f "$TESTFILE" + exit 1 + fi + if [ "$CXX" ] && [ command -v "$CXX" >/dev/null 2>&1 ] + then + ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LIBS} -I "${SRCDIR}/include" "$TESTFILE" -o /dev/null + if [ $? -ne 0 ] + then + rm -f "$TESTFILE" + exit 1 + fi + echo -n + fi + rm -f "$TESTFILE" +done |