Check for missing and extraneous config.h includes.
authorEmil Mikulic <emikulic@gmail.com>
Sat, 4 Jun 2011 07:59:33 +0000 (17:59 +1000)
committerEmil Mikulic <emikulic@gmail.com>
Sat, 4 Jun 2011 14:00:31 +0000 (00:00 +1000)
test_headers.sh

index 3c14309..3c05a79 100755 (executable)
@@ -4,6 +4,7 @@
 a="\033[31;1m"
 z="\033[m"
 
+echo checking header dependencies...
 # Except for the c-ify output, every header should bring in all of its
 # dependencies, and be able to be included multiple times.
 src=_test_hdr.c
@@ -32,3 +33,25 @@ EOF
 done
 
 rm $src $obj
+
+echo checking config.h users...
+# Make list of possible defines from config.h
+defines=`grep \# config.h | cut -d# -f2 | cut -d' ' -f2`
+defines=`echo $defines | tr ' ' '|'`
+
+files=`ls *.[ch] | fgrep -v config.h`
+
+# Check that files expecting defines from config.h include it.
+for file in `egrep -l $defines $files`; do
+ if ! fgrep -q '#include "config.h"' $file; then
+  echo "${a}===> $file should include config.h${z}"
+  egrep $defines $file
+ fi
+done
+
+# And that others don't.
+for file in `fgrep -l '#include "config.h"' *.[ch]`; do
+ if ! egrep -q $defines $file; then
+  echo "${a}===> $file should not include config.h${z}"
+ fi
+done