1 #!/bin/sh 2 3 LC_ALL=C 4 export LC_ALL 5 6 test -z "$srcdir" && srcdir=. 7 test -z "$MAKE" && MAKE=make 8 stat=0 9 10 if which nm 2>/dev/null >/dev/null; then 11 : 12 else 13 echo "check-symbols.sh: 'nm' not found; skipping test" 14 exit 77 15 fi 16 17 defs="harfbuzz.def" 18 $MAKE $defs > /dev/null 19 tested=false 20 for def in $defs; do 21 lib=`echo "$def" | sed 's/[.]def$//;s@.*/@@'` 22 so=.libs/lib${lib}.so 23 24 EXPORTED_SYMBOLS="`nm "$so" | grep ' [BCDGINRSTVW] ' | grep -v ' T _fini\>\| T _init\>\| _fdata\>\| _ftext\>\| __bss_start\>\| __bss_start__\>\| __bss_end__\>\| _edata\>\| _end\>\| _bss_end__\>\| __end__\>' | cut -d' ' -f3`" 25 26 if test -f "$so"; then 27 28 echo "Checking that $so has the same symbol list as $def" 29 { 30 echo EXPORTS 31 echo "$EXPORTED_SYMBOLS" 32 # cheat: copy the last line from the def file! 33 tail -n1 "$def" 34 } | diff "$def" - >&2 || stat=1 35 36 echo "Checking that we are not exposing internal symbols" 37 if echo "$EXPORTED_SYMBOLS" | grep -v 'hb_'; then 38 echo "Ouch, internal symbols exposed" 39 stat=1 40 fi 41 42 tested=true 43 fi 44 done 45 if ! $tested; then 46 echo "check-exported-symbols.sh: libharfbuzz shared library not found; skipping test" 47 exit 77 48 fi 49 50 exit $stat 51