Blame src/util/getsyms

Packit fd8b60
#!/bin/sh
Packit fd8b60
# Run this from the TOP of the source tree!
Packit fd8b60
M4=gm4
Packit fd8b60
configs=`find $1 -name configure.ac -print|sort|sed -e 's@/configure.ac@@'`
Packit fd8b60
for dir in $configs; do
Packit fd8b60
	syms=""
Packit fd8b60
	libs=""
Packit fd8b60
	headers=""
Packit fd8b60
	types=""
Packit fd8b60
	funcs=""
Packit fd8b60
	AC_MACRODIR=./util/autoconf
Packit fd8b60
	# The following bits shamelessly stolen from autoheader.sh
Packit fd8b60
	eval "`$M4 -I$AC_MACRODIR autoheader.m4 $dir/configure.ac|
Packit fd8b60
		sed -n -e '
Packit fd8b60
		: again
Packit fd8b60
		/^@@@.*@@@$/s/^@@@\(.*\)@@@$/\1/p
Packit fd8b60
		/^@@@/{
Packit fd8b60
			s/^@@@//p
Packit fd8b60
			n
Packit fd8b60
			s/^/@@@/
Packit fd8b60
			b again
Packit fd8b60
		}'`"
Packit fd8b60
	allsyms="`for sym in $syms; do echo $sym; done | sort | uniq`"
Packit fd8b60
	if test -n "$funcs"; then
Packit fd8b60
		funcs="`for func in $funcs; do echo $func; done | sort | uniq`"
Packit fd8b60
		funcs="`for func in $funcs; do echo $func
Packit fd8b60
			done | sed 's/[^a-zA-Z0-9_]/_/g' | tr '[a-z]' '[A-Z]' | sed 's/^/HAVE_/'`"
Packit fd8b60
	allsyms="$allsyms $funcs"
Packit fd8b60
	fi
Packit fd8b60
	if test -n "$headers"; then
Packit fd8b60
		headers="`for header in $headers; do echo $header
Packit fd8b60
			done | sort | uniq`"
Packit fd8b60
		headers="`for header in $headers; do echo $header
Packit fd8b60
			done | sed 's/[^a-zA-Z0-9_]/_/g' | tr '[a-z]' '[A-Z]' | sed 's/^/HAVE_/'`"
Packit fd8b60
	allsyms="$allsyms $headers"
Packit fd8b60
	fi
Packit fd8b60
	if test -n "$libs"; then
Packit fd8b60
		libs="`for lib in $libs; do echo $lib
Packit fd8b60
			done | sort | uniq`"
Packit fd8b60
		libs="`for lib in $libs; do echo $lib
Packit fd8b60
			done | sed 's/[^a-zA-Z0-9_]/_/g' | tr '[a-z]' '[A-Z]' | sed 's/^/HAVE_LIB/'`"
Packit fd8b60
	allsyms="$allsyms $libs"
Packit fd8b60
	fi
Packit fd8b60
	echo $dir/configure.ac: $allsyms
Packit fd8b60
	allsyms="`echo $allsyms|tr ' ' '|'`"
Packit fd8b60
	files="$dir/*.[ch]"
Packit fd8b60
	if test ! "`echo $files`" = "$dir/"'*.[ch]'; then
Packit fd8b60
	for file in $files; do
Packit fd8b60
		badsyms=""
Packit fd8b60
		fsyms=`sed -f ./util/getsyms.sed $file`
Packit fd8b60
		fsyms="`for sym in $fsyms; do echo $sym; done | sort | uniq`"
Packit fd8b60
		for sym in $fsyms; do
Packit fd8b60
			if echo $sym|egrep -s "$allsyms">/dev/null; then :
Packit fd8b60
			else
Packit fd8b60
				badsyms="$badsyms $sym"
Packit fd8b60
			fi
Packit fd8b60
		done
Packit fd8b60
		if test -n "$badsyms"; then
Packit fd8b60
			echo $file:$badsyms
Packit fd8b60
		fi
Packit fd8b60
	done
Packit fd8b60
	fi
Packit fd8b60
done