1#!/bin/sh
2# Run this from the TOP of the source tree!
3M4=gm4
4configs=`find $1 -name configure.ac -print|sort|sed -e 's@/configure.ac@@'`
5for dir in $configs; do
6	syms=""
7	libs=""
8	headers=""
9	types=""
10	funcs=""
11	AC_MACRODIR=./util/autoconf
12	# The following bits shamelessly stolen from autoheader.sh
13	eval "`$M4 -I$AC_MACRODIR autoheader.m4 $dir/configure.ac|
14		sed -n -e '
15		: again
16		/^@@@.*@@@$/s/^@@@\(.*\)@@@$/\1/p
17		/^@@@/{
18			s/^@@@//p
19			n
20			s/^/@@@/
21			b again
22		}'`"
23	allsyms="`for sym in $syms; do echo $sym; done | sort | uniq`"
24	if test -n "$funcs"; then
25		funcs="`for func in $funcs; do echo $func; done | sort | uniq`"
26		funcs="`for func in $funcs; do echo $func
27			done | sed 's/[^a-zA-Z0-9_]/_/g' | tr '[a-z]' '[A-Z]' | sed 's/^/HAVE_/'`"
28	allsyms="$allsyms $funcs"
29	fi
30	if test -n "$headers"; then
31		headers="`for header in $headers; do echo $header
32			done | sort | uniq`"
33		headers="`for header in $headers; do echo $header
34			done | sed 's/[^a-zA-Z0-9_]/_/g' | tr '[a-z]' '[A-Z]' | sed 's/^/HAVE_/'`"
35	allsyms="$allsyms $headers"
36	fi
37	if test -n "$libs"; then
38		libs="`for lib in $libs; do echo $lib
39			done | sort | uniq`"
40		libs="`for lib in $libs; do echo $lib
41			done | sed 's/[^a-zA-Z0-9_]/_/g' | tr '[a-z]' '[A-Z]' | sed 's/^/HAVE_LIB/'`"
42	allsyms="$allsyms $libs"
43	fi
44	echo $dir/configure.ac: $allsyms
45	allsyms="`echo $allsyms|tr ' ' '|'`"
46	files="$dir/*.[ch]"
47	if test ! "`echo $files`" = "$dir/"'*.[ch]'; then
48	for file in $files; do
49		badsyms=""
50		fsyms=`sed -f ./util/getsyms.sed $file`
51		fsyms="`for sym in $fsyms; do echo $sym; done | sort | uniq`"
52		for sym in $fsyms; do
53			if echo $sym|egrep -s "$allsyms">/dev/null; then :
54			else
55				badsyms="$badsyms $sym"
56			fi
57		done
58		if test -n "$badsyms"; then
59			echo $file:$badsyms
60		fi
61	done
62	fi
63done
64