spot/src/sanity/includes.test
2012-10-02 18:21:57 +02:00

56 lines
1.3 KiB
Bash
Executable file

#! /bin/sh
# Check that each header is self contained and generates no warning.
set -e
rm -f failures
# Remove any trailing slash
INCDIR=${INCDIR%/}
for file in `find "$INCDIR" \( -name "${1-*}.hh" \
-o -name "${1-*}.hxx" \) \
-a -type f -a -print | sed "s,$INCDIR/,,g"`; do
b=`echo "$file" | tr '[/.a-z]' '[__A-Z]'`
if grep "[ ]*#.*def.* SPOT_$b\$" "$INCDIR/$file" >/dev/null; then
:
elif grep 'GNU Bison 2\.6' "$INCDIR/$file" >/dev/null; then
# Bison 2.6, 2.6.1, 2.6.2 have a bug where position.hh
# include <iosfwd> instead of <iostream>.
continue
elif grep 'GNU Bison' "$INCDIR/$file" >/dev/null; then
:
else
echo "Missing, or incorrect include guard." >&2
echo "FAIL: $file"
echo " $file" >> failures
continue
fi
cat >incltest.cc <<EOF
// Include the file twice, so we detect missing inclusion guards.
#include <$file>
#include <$file>
EOF
case $file in
*bin/*) MOREFLAGS="-I $TOPBUILD/lib/ -I $INCDIR/../lib/ -I $TOPBUILD";;
*) MOREFLAGS=;;
esac
if $CXX $MOREFLAGS $CPPFLAGS -DSKIP_DEPRECATED_WARNING $CXXFLAGS -c incltest.cc; then
echo "PASS: $file"
else
echo "FAIL: $file"
echo " $file" >> failures
fi
done
if test -f failures; then
echo "Failed files:"
cat failures
rm failures
exit 1;
fi