Merged revisions 43450 via svnmerge from
authorKevin P. Fleming <kpfleming@digium.com>
Thu, 21 Sep 2006 21:22:34 +0000 (21:22 +0000)
committerKevin P. Fleming <kpfleming@digium.com>
Thu, 21 Sep 2006 21:22:34 +0000 (21:22 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r43450 | kpfleming | 2006-09-21 16:21:29 -0500 (Thu, 21 Sep 2006) | 2 lines

add another attempt to strip non-API symbols from the final binary... script will need to be extended to work on non-Linux systems

........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@43451 65c4cc65-6c06-0410-ace0-fbb531ad65f3

build_tools/strip_nonapi [new file with mode: 0755]
main/Makefile

diff --git a/build_tools/strip_nonapi b/build_tools/strip_nonapi
new file mode 100755 (executable)
index 0000000..99d21f6
--- /dev/null
@@ -0,0 +1,28 @@
+#!/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_
+
+FILTER="grep -v -e ^ast_ -e ^_ast_ -e ^__ast_ -e ^astman_ -e ^pbx_"
+
+case "${OSARCH}" in
+    linux-gnu)
+       nm ${1} | grep -e " T " | cut -d" " -f3 | ${FILTER} > striplist
+       sed -e "s/^/-N /" striplist | xargs strip ${1}
+       rm -f striplist
+       ;;
+    *)
+       ;;
+esac
index da2197f..b615c3b 100644 (file)
@@ -130,7 +130,8 @@ asterisk: $(OBJS) editline/libedit.a db1-ast/libdb1.a $(AST_EMBED_LDSCRIPTS)
        @rm -f $(ASTTOPDIR)/include/asterisk/build.h.tmp
        @$(CC) -c -o buildinfo.o $(CFLAGS) buildinfo.c
        $(ECHO_PREFIX) echo "   [LD] $^ -> $@"
-       $(CMD_PREFIX) $(CXX) $(STATIC_BUILD) -o asterisk $(ASTLINK) $(AST_EMBED_LDFLAGS) $(LDFLAGS) $(H323LDFLAGS) $^ buildinfo.o $(AST_LIBS) $(AST_EMBED_LIBS) $(H323LDLIBS)
+       $(CMD_PREFIX) $(CXX) $(STATIC_BUILD) -o $@ $(ASTLINK) $(AST_EMBED_LDFLAGS) $(LDFLAGS) $(H323LDFLAGS) $^ buildinfo.o $(AST_LIBS) $(AST_EMBED_LIBS) $(H323LDLIBS)
+       @$(ASTTOPDIR)/build_tools/strip_nonapi $@
 
 clean::
        rm -f asterisk