gfx/harfbuzz/src/check-symbols.sh

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/gfx/harfbuzz/src/check-symbols.sh	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,37 @@
     1.4 +#!/bin/sh
     1.5 +
     1.6 +LC_ALL=C
     1.7 +export LC_ALL
     1.8 +
     1.9 +test -z "$srcdir" && srcdir=.
    1.10 +stat=0
    1.11 +
    1.12 +
    1.13 +if which nm 2>/dev/null >/dev/null; then
    1.14 +	:
    1.15 +else
    1.16 +	echo "check-symbols.sh: 'nm' not found; skipping test"
    1.17 +	exit 77
    1.18 +fi
    1.19 +
    1.20 +echo "Checking that we are not exposing internal symbols"
    1.21 +tested=false
    1.22 +for so in `ls .libs/lib*.so .libs/lib*.dylib 2>/dev/null` ; do
    1.23 +	
    1.24 +	EXPORTED_SYMBOLS="`nm "$so" | grep ' [BCDGINRSTVW] ' | grep -v ' _fini\>\| _init\>\| _fdata\>\| _ftext\>\| __bss_start\>\| __bss_start__\>\| __bss_end__\>\| _edata\>\| _end\>\| _bss_end__\>\| __end__\>' | cut -d' ' -f3`"
    1.25 +	prefix=`basename "$so" | sed 's/libharfbuzz/hb/; s/-/_/g; s/[.].*//'`
    1.26 +
    1.27 +	echo "Processing $so"
    1.28 +	if echo "$EXPORTED_SYMBOLS" | grep -v "^${prefix}_"; then
    1.29 +		echo "Ouch, internal symbols exposed"
    1.30 +		stat=1
    1.31 +	fi
    1.32 +
    1.33 +	tested=true
    1.34 +done
    1.35 +if ! $tested; then
    1.36 +	echo "check-symbols.sh: no shared library found; skipping test"
    1.37 +	exit 77
    1.38 +fi
    1.39 +
    1.40 +exit $stat

mercurial