Whamcloud - gitweb
b=22976 fix bash syntax error
[fs/lustre-release.git] / lustre / liblustre / genlib.sh
index 04e27fe..2c644d5 100755 (executable)
@@ -1,5 +1,6 @@
 #!/bin/bash
 #set -xv
+set -e
 
 #
 # This script is to generate lib lustre library as a whole. It will leave
 #
 
 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
+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 +48,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,41 +64,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 ../sec libptlrpcs.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
@@ -101,11 +99,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
@@ -114,8 +111,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