libsndfile compiling.
[Faustine.git] / interpretor / lib / src / libsndfile-1.0.25 / src / make-static-lib-hidden-privates.sh
diff --git a/interpretor/lib/src/libsndfile-1.0.25/src/make-static-lib-hidden-privates.sh b/interpretor/lib/src/libsndfile-1.0.25/src/make-static-lib-hidden-privates.sh
new file mode 100755 (executable)
index 0000000..5bfd485
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/bash -e
+
+# This script takes a static library and removes all non-public symbols.
+# Ie, it makes a static lib whose symbols are far less likely to clash with
+# the symbols of another shared or static library.
+
+grep sf_ Symbols.gnu-binutils | sed -e "s/[ ;]//g" > Symbols.static
+
+ld -r --whole-archive .libs/libsndfile.a -o libsndfile_a.o
+
+objcopy --keep-global-symbols=Symbols.static libsndfile_a.o libsndfile.o
+
+rm -f libsndfile.a
+ar cru libsndfile.a libsndfile.o