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