X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fliblustre%2Fgenlib.sh;h=50598926bc7c7e9f5f4d634a8778b1ca550385cb;hb=a0b83ae3120e79fc6ea6eba7e6bff7e3720209d5;hp=1324cf93b78e47bcc565947bdc4f81ef85e832f3;hpb=3ceca52b2e172450818c6c5a6770f2093e8c46a9;p=fs%2Flustre-release.git diff --git a/lustre/liblustre/genlib.sh b/lustre/liblustre/genlib.sh index 1324cf9..5059892 100755 --- a/lustre/liblustre/genlib.sh +++ b/lustre/liblustre/genlib.sh @@ -1,5 +1,6 @@ #!/bin/bash #set -xv +set -e # # This script is to generate lib lustre library as a whole. It will leave @@ -11,13 +12,23 @@ # 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 -CRAY_PORTALS_PATH=$2 +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" @@ -36,13 +47,6 @@ build_obj_list() { done; } -prepend_obj_list() { - _objs=`$AR -t $1/$2` - for _lib in $_objs; do - ALL_OBJS="$1/$_lib "$ALL_OBJS; - done; -} - # # special treatment for libsysio # @@ -59,52 +63,41 @@ build_sysio_obj_list() { done } -# -# special treatment for libportals.a -# -cray_tmp=$CWD/cray_tmp_`date +%s` -rm -rf $cray_tmp -build_cray_portals_obj_list() { - _objs=`$AR -t $1` - mkdir -p $cray_tmp - cd $cray_tmp - $AR -x $1 - cd .. - for _lib in $_objs; do - ALL_OBJS=$ALL_OBJS"$cray_tmp/$_lib "; - done -} - # lustre components libs -build_obj_list . liblutils.a +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 - -if [ "x$CRAY_PORTALS_PATH" = "x" ]; then - build_obj_list ../../portals/unals libtcpnal.a - build_obj_list ../../portals/portals libportals.a -else - build_cray_portals_obj_list $CRAY_PORTALS_PATH/lib_TV/snos64/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 -# libllite should be at the beginning of obj list -prepend_obj_list . libllite.a - -# libsysio -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 @@ -113,8 +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 -lcap -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 $cray_tmp