diff options
Diffstat (limited to 'src/tools/pginclude/pgcompinclude')
-rwxr-xr-x | src/tools/pginclude/pgcompinclude | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/tools/pginclude/pgcompinclude b/src/tools/pginclude/pgcompinclude new file mode 100755 index 0000000..12169db --- /dev/null +++ b/src/tools/pginclude/pgcompinclude @@ -0,0 +1,47 @@ +: +# report which #include files can not compile on their own +# takes -v option to display compile failure message and line numbers +# src/tools/pginclude/pgcompinclude + +: ${CC:=cc} +: ${PGSRC:=src} + +if ! pgdefine +then echo "pgdefine must be in your PATH" 1>&2 + exit 1 +fi + +trap "rm -f /tmp/$$.c /tmp/$$.o /tmp/$$ /tmp/$$a" 0 1 2 3 15 +find . \( -name .git -a -prune \) -o -name '*.h' -type f -print | while read FILE +do + sed 's/->[a-zA-Z0-9_\.]*//g' "$FILE" >/tmp/$$a + echo "#include \"postgres.h\"" >/tmp/$$.c + + # suppress fcinfo errors + echo "struct {Datum arg[1];} *fcinfo;" >>/tmp/$$.c + + echo "#include \"/tmp/$$a\"" >>/tmp/$$.c + + echo "Datum include_test(void);" >>/tmp/$$.c + echo "Datum include_test() {" >>/tmp/$$.c + + pgdefine "$FILE" >>/tmp/$$.c + + echo "return (Datum)0;" >>/tmp/$$.c + echo "}" >>/tmp/$$.c + + # Use -O1 to get warnings only generated by optimization, + # but -O2 is too slow. + $CC -fsyntax-only -Werror -Wall -Wmissing-prototypes \ + -Wmissing-declarations -I$PGSRC/include -I$PGSRC/backend \ + -I$PGSRC/interfaces/libpq -I`dirname $FILE` $CFLAGS -O1 -c /tmp/$$.c \ + -o /tmp/$$.o >/tmp/$$ 2>&1 + if [ "$?" -ne 0 ] + then echo "$FILE" + if [ "$1" = "-v" ] + then cat /tmp/$$ + nl /tmp/$$.c + echo + fi + fi +done |