mirror of
https://github.com/archr-linux/Arch-R.git
synced 2026-03-31 14:41:55 -07:00
52 lines
1.2 KiB
Bash
Executable File
52 lines
1.2 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
. config/options
|
|
|
|
REAL_ARCH=$TARGET_ARCH
|
|
[ $TARGET_ARCH = "powerpc" ] && REAL_ARCH=ppc
|
|
|
|
LIB=$1
|
|
LIBA=$2
|
|
PROG=$3
|
|
SO=$4
|
|
PROG_SYMS=$5
|
|
LDSCRIPT=`ls $ROOT/$TOOLCHAIN/lib/ldscripts/elf*$REAL_ARCH.xs`
|
|
|
|
if [ ! -f $LIBA ]; then
|
|
echo "ERROR $LIBA doesn't exists."
|
|
exit 1
|
|
fi
|
|
|
|
if [ -f $LIB -a $LIB -nt $LIBA ]; then
|
|
for i in $PROG $LDSCRIPT $0; do
|
|
[ $i -nt $LIB ] && NEED_TO_STRIP=yes && break
|
|
done
|
|
[ "$NEED_TO_STRIP" = yes ] || exit 0
|
|
fi
|
|
|
|
echo -n "stripping $LIB ..."
|
|
|
|
for i in $SO; do
|
|
SO_SYMS="$SO_SYMS `$TARGET_NM --dynamic $i | sed -n 's/^........ [ABDGTW] \(..*\)/\1/p'`"
|
|
done
|
|
|
|
for i in $PROG; do
|
|
if [ -f $i ]; then
|
|
for j in `$TARGET_NM --dynamic $i | sed -n 's/^........ [BUV] \(..*\)/\1/p'`; do
|
|
(echo "$SO_SYMS" | grep $j >/dev/null) || (echo "$PROG_SYMS" | grep $j >/dev/null) || PROG_SYMS="$PROG_SYMS $j"
|
|
done
|
|
fi
|
|
done
|
|
|
|
echo "INCLUDE $LDSCRIPT" > /tmp/ldscript
|
|
for i in $PROG_SYMS; do
|
|
[ $i != "BD" -a $i != "DD" ] && echo "EXTERN($i)" >> /tmp/ldscript
|
|
done
|
|
|
|
[ "$DEBUG" != yes ] && SFLAG=-s
|
|
$TARGET_CC $SFLAG -Wl,-warn-common -shared -o $LIB -Wl,-soname,`basename $LIB` -Wl,--script=/tmp/ldscript $LIBA
|
|
|
|
echo " done"
|
|
|
|
rm -f /tmp/ldscript
|