aboutsummaryrefslogtreecommitdiffstats
path: root/1.6.1/build_tools/strip_nonapi
diff options
context:
space:
mode:
authortilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2008-12-01 22:55:59 +0000
committertilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2008-12-01 22:55:59 +0000
commit5066802c18012df31ea69d1addad55c074ab38aa (patch)
tree7e2218ccfb3847b2c63a69998b1a113a19de30dd /1.6.1/build_tools/strip_nonapi
parent137f9ba1975c41d5de4fe4370177c82328f99df3 (diff)
Creating tag for the release of asterisk-1.6.1-beta3
git-svn-id: http://svn.digium.com/svn/asterisk/tags/1.6.1-beta3@160162 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to '1.6.1/build_tools/strip_nonapi')
-rwxr-xr-x1.6.1/build_tools/strip_nonapi38
1 files changed, 38 insertions, 0 deletions
diff --git a/1.6.1/build_tools/strip_nonapi b/1.6.1/build_tools/strip_nonapi
new file mode 100755
index 000000000..17492e6f8
--- /dev/null
+++ b/1.6.1/build_tools/strip_nonapi
@@ -0,0 +1,38 @@
+#!/bin/sh -e
+
+# This script is designed to remove all non-API global symbols from an object
+# file. The only global symbols that should be retained are those that belong
+# to the official namespace. Unfortunately doing this is platform-specific, as
+# the object file manipulation tools are not consistent across platforms.
+#
+# On platforms where this script does not know what to do, the object file
+# will retain non-API global symbols, and this may have unpleasant side effects.
+#
+# Prefixes that belong to the official namespace are:
+# ast_
+# _ast_
+# __ast_
+# astman_
+# pbx_
+# resample_
+
+FILTER="${GREP} -v -e ^ast_ -e ^_ast_ -e ^__ast_ -e ^astman_ -e ^pbx_ -e ^resample_"
+
+case "${PROC}" in
+ powerpc64)
+ TEXTSYM=" D "
+ ;;
+ *)
+ TEXTSYM=" T "
+ ;;
+esac
+
+case "${OSARCH}" in
+ linux-gnu|FreeBSD)
+ nm ${1} | ${GREP} -e "$TEXTSYM" | cut -d" " -f3 | ${FILTER} > striplist
+ sed -e "s/^/-N /" striplist | xargs -n 40 ${STRIP} ${1}
+ rm -f striplist
+ ;;
+ *)
+ ;;
+esac