summaryrefslogtreecommitdiffstats
path: root/src/tools/pginclude/pgcompinclude
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/pginclude/pgcompinclude')
-rwxr-xr-xsrc/tools/pginclude/pgcompinclude47
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