# Usage: # $1 : Destination merged, stripped, small shared library # $2 : lib*_pic.a files from which to produce the final small library # ${3:$} : executables and shared libraries whos dependencies we care about MERGED_SO="$1"; shift PIC_LIBS="$1"; shift GCC=${GCC-i386-gnu-gcc} LD=${LD-i386-gnu-ld} OBJDUMP=${OBJDUMP-i386-gnu-objdump} OBJCOPY=${OBJCOPY-i386-gnu-objcopy} DEP_FLAGS_FILE=/tmp/,depflags.$$ MERGED_PIC_LIB=/tmp/,libmerged_pic.a.$$ #trap "rm -f $DEP_FLAGS_FILE $MERGED_PIC_LIB" 0 $OBJDUMP --dynamic-syms "$@" 2>/dev/null|sed -n 's/^.*\*UND\*.* \([^ ]*\)$/-u\1/p'|sort -u > $DEP_FLAGS_FILE $LD -o $MERGED_PIC_LIB `cat $DEP_FLAGS_FILE` -r $PIC_LIBS \ && $GCC -nostdlib -shared -Wl,-soname=`basename $MERGED_SO` \ -o $MERGED_SO.uns $MERGED_PIC_LIB \ && $OBJCOPY --strip-debug $MERGED_SO.uns $MERGED_SO \ && rm -f $MERGED_SO.uns