X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fliblustre%2Fgenlib.sh;h=406c235dc07000d53ef8445440e90a0757f9f3ad;hb=adde80ffefe375e113c0e4a2a5f8e37519205b5c;hp=efbae700a8bd4078970fd7e2b224c09578a6566c;hpb=191061ee668400324f4505cf498f1ee2d57e4962;p=fs%2Flustre-release.git diff --git a/lustre/liblustre/genlib.sh b/lustre/liblustre/genlib.sh index efbae70..406c235 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,19 @@ # AR=/usr/bin/ar -LD=/usr/bin/ld +# see http://osdir.com/ml/gmane.comp.gnu.binutils.bugs/2006-01/msg00016.php +LD=gcc RANLIB=/usr/bin/ranlib CWD=`pwd` SYSIO=$1 -CRAY_PORTALS_PATH=$2 +LIBS=$2 +LND_LIBS=$3 +PTHREAD_LIBS=$4 +QUOTA_LIBS=$5 +CAP_LIBS=$6 +ZLIB=$7 if [ ! -f $SYSIO/lib/libsysio.a ]; then echo "ERROR: $SYSIO/lib/libsysio.a dosen't exist" @@ -36,13 +43,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,40 +59,34 @@ 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 +# 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 -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 +if [ "x$QUOTA_LIBS" != "x" ]; then + build_obj_list ../quota libquota.a fi # create static lib lsupport @@ -100,11 +94,10 @@ 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,11 @@ $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 +$LD -shared -nostdlib -o $CWD/liblustre.so $ALL_OBJS $CAP_LIBS $PTHREAD_LIBS $ZLIB +fi rm -rf $sysio_tmp -rm -rf $cray_tmp