X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fliblustre%2Fgenlib.sh;h=50598926bc7c7e9f5f4d634a8778b1ca550385cb;hb=a0b83ae3120e79fc6ea6eba7e6bff7e3720209d5;hp=f371650331be3d91847503182645e8cf753ace69;hpb=e0576be940d7af30b2ba6e219891a4413670325d;p=fs%2Flustre-release.git diff --git a/lustre/liblustre/genlib.sh b/lustre/liblustre/genlib.sh index f371650..5059892 100755 --- a/lustre/liblustre/genlib.sh +++ b/lustre/liblustre/genlib.sh @@ -1,27 +1,42 @@ #!/bin/bash #set -xv +set -e # # This script is to generate lib lustre library as a whole. It will leave # two files on current directory: liblustre.a and liblustre.so. -# Integrate them into Makefile.am later +# +# Most concern here is the libraries linking order +# +# FIXME: How to do this cleanly use makefile? # AR=/usr/bin/ar -LD=/usr/bin/ld +# see http://osdir.com/ml/gmane.comp.gnu.binutils.bugs/2006-01/msg00016.php +ppc64_CPU=`uname -p` +if [ "x${ppc64_CPU}" = "xppc64" ]; then + LD="gcc -m64" +else + LD="gcc" +fi RANLIB=/usr/bin/ranlib CWD=`pwd` SYSIO=$1 +LIBS=$2 +LND_LIBS=$3 +PTHREAD_LIBS=$4 +CAP_LIBS=$5 +ZLIB=$6 + +if [ ! -f $SYSIO/lib/libsysio.a ]; then + echo "ERROR: $SYSIO/lib/libsysio.a dosen't exist" + exit 1 +fi -#if [ ! -f $SYSIO/lib/libsysio.a ]; then -# echo "ERROR: $SYSIO/lib/libsysio.a dosen't exist" -# exit 1 -#fi -# # do cleanup at first -#rm -f liblustre.so +rm -f liblustre.so ALL_OBJS= @@ -35,45 +50,54 @@ build_obj_list() { # # special treatment for libsysio # -#sysio_tmp=$CWD/sysio_tmp_`date +%s` -#build_sysio_obj_list() { -# _objs=`$AR -t $1` -# mkdir -p $sysio_tmp -# $AR -x $1 -# mv $_objs $sysio_tmp -# for _lib in $_objs; do -# ALL_OBJS=$ALL_OBJS"$sysio_tmp/$_lib "; -# done -#} +sysio_tmp=$CWD/sysio_tmp_`date +%s` +rm -rf $sysio_tmp +build_sysio_obj_list() { + _objs=`$AR -t $1` + mkdir -p $sysio_tmp + cd $sysio_tmp + $AR -x $1 + cd .. + for _lib in $_objs; do + ALL_OBJS=$ALL_OBJS"$sysio_tmp/$_lib "; + done +} # lustre components libs build_obj_list . libllite.a build_obj_list ../lov liblov.a build_obj_list ../obdecho libobdecho.a build_obj_list ../osc libosc.a +build_obj_list ../lmv liblmv.a build_obj_list ../mdc libmdc.a +build_obj_list ../fid libfid.a +build_obj_list ../fld libfld.a +build_obj_list ../mgc libmgc.a build_obj_list ../ptlrpc libptlrpc.a build_obj_list ../obdclass liblustreclass.a build_obj_list ../lvfs liblvfs.a -# portals components libs -build_obj_list ../portals/utils libuptlctl.a -build_obj_list ../portals/unals libtcpnal.a -build_obj_list ../portals/portals libportals.a +# lnet components libs +build_obj_list ../../lnet/utils libuptlctl.a +build_obj_list ../../libcfs/libcfs libcfs.a +build_obj_list ../../libcfs/libcfs libcfsutil.a +if $(echo "$LND_LIBS" | grep "socklnd" >/dev/null) ; then + build_obj_list ../../lnet/ulnds/socklnd libsocklnd.a +fi +if $(echo "$LND_LIBS" | grep "ptllnd" >/dev/null) ; then + build_obj_list ../../lnet/ulnds/ptllnd libptllnd.a +fi +build_obj_list ../../lnet/lnet liblnet.a # create static lib lsupport rm -f $CWD/liblsupport.a $AR -cru $CWD/liblsupport.a $ALL_OBJS $RANLIB $CWD/liblsupport.a -# libsysio components libs -build_obj_list $SYSIO/drivers/native libsysio_native.a -build_obj_list $SYSIO/drivers/sockets libsysio_sockets.a -build_obj_list $SYSIO/src libsysio.a -build_obj_list $SYSIO/dev/stdfd libsysio_stdfd.a -# -#build_sysio_obj_list $SYSIO/lib/libsysio.a -# +# if libsysio is already in our LIBS we don't need to link against it here +if $(echo "$LIBS" | grep -v -- "-lsysio" >/dev/null) ; then + build_sysio_obj_list $SYSIO/lib/libsysio.a +fi # create static lib lustre rm -f $CWD/liblustre.a @@ -82,7 +106,16 @@ $RANLIB $CWD/liblustre.a # create shared lib lustre rm -f $CWD/liblustre.so -$LD -shared -o $CWD/liblustre.so -init __liblustre_setup_ -fini __liblustre_cleanup_ \ - $ALL_OBJS -lpthread +OS=`uname` +if test x$OS = xAIX; then +$LD -shared -o $CWD/liblustre.so $ALL_OBJS -lpthread -Xlinker -bnoipath ../../libsyscall.so +else +# using -nostdlib on Ubuntu causes errors such as: +#./llite_lib.o: In function `liblustre_process_log': +#/home/brian/rpm/BUILD/lustre-1.8.2.50/lustre/liblustre/llite_lib.c:234: undefined reference to `__stack_chk_fail_local' +# due to the use of SSP +#$LD -shared -nostdlib -o $CWD/liblustre.so $ALL_OBJS $CAP_LIBS $PTHREAD_LIBS $ZLIB +$LD -shared -o $CWD/liblustre.so $ALL_OBJS $CAP_LIBS $PTHREAD_LIBS $ZLIB +fi -#rm -rf $sysio_tmp +rm -rf $sysio_tmp