#!/bin/sh
# Remove extranaeous libs from the linking command. Reduces shared-library
# overhead at exec time.
BIN=speedy
TMP1=/tmp/remove_libs$$
TMP2="${TMP1}2"
it_worked() {
test $? -eq 0 && ./$BIN -- -v </dev/null 2>&1 | grep version >/dev/null
}
it_failed() {
if it_worked; then
return 1
else
return 0
fi
}
# Try command without alteration. Exit if it fails.
"$@" >$TMP1 2>$TMP2
status=$?
test $status -eq 0
if it_failed; then
cat $TMP1
cat 1>&2 $TMP2
rm -f $TMP1 $TMP2
exit $status
fi
rm -f $TMP1 $TMP2
mv -f ${BIN} ${BIN}.tmp$$
echo Attempting to remove extraneous libraries from the ${BIN} binary...
while :; do
orig_count=$#
cmd=$1; shift
while test $# -gt 0; do
next=$1; shift;
case $next in
*efence*)
echo keeping $next
;;
-l*|*.a)
# Try to remove it
$cmd "$@" >/dev/null 2>&1
if it_worked; then
echo "removed $next"
continue;
fi
;;
esac
cmd="$cmd $next"
done
set - $cmd
if test $# -eq 0 -o $orig_count -eq $#; then
break
fi
done
echo Final command is $cmd
$cmd
if it_worked; then
rm -f ${BIN}.tmp$$
else
mv -f ${BIN}.tmp$$ ${BIN}
fi
exit 0