--- util/makesharedlib.orig	Wed Jul  1 13:56:20 1998
+++ util/makesharedlib	Sat Oct 17 07:26:06 1998
@@ -10,6 +10,9 @@
 	;;
 	-kind=*) kind=`echo A$arg | sed -e 's/A-kind=//g'`
 	;;
+	-suffix=*) slsuffix=`echo A$arg | sed -e 's/A-suffix=//g'`
+	;;
+	-echo) set -x ;;
 	*)
 	echo "Unrecognized option $arg"
 	exit 1
@@ -17,42 +20,70 @@
     esac
 done
 
+if [ "$SHELL_ECHO" = "on" ] ; then 
+    set -x 
+fi
 #
 # This is the default
-if test "$kind" = "ignore" ; then
+if [ "$kind" = "ignore" ] ; then
     exit 0
 fi
 
-if test -z "$slsuffix" ; then
+if [ -z "$slsuffix" ] ; then
     slsuffix=so.1.0
+    req_slsuffix=so
+fi
+if [ -z "$req_slsuffix" ] ; then
+    req_slsuffix=$slsuffix
 fi
-if test -z "$AR" ; then
+if [ -z "$AR" ] ; then
     AR=ar
 fi
-if test -z "$LD" ; then
+if [ -z "$LD" ] ; then
     LD=ld
 fi
-if test -z "$CLINKER" ; then
-    if test -n "$CC" ; then
+if [ -z "$CLINKER" ] ; then
+    if [ -n "$CC" ] ; then
         CLINKER=$CC
     else
 	echo "No C linker or C compiler specified!"
 	exit 1
     fi
 fi
-if test -z "$SHLIBS" ; then
+if [ -z "$SHLIBS" ] ; then
     echo "No libraries specified!"
     exit 1
 fi
+#
+# Check that there are libraries 
+foundlib=0
+for libname in $SHLIBS ; do
+   libnamelocal=`basename $libname`
+   if [ -s $libnamelocal ] ; then 
+       foundlib=1
+       break
+   fi
+done
+if [ $foundlib = 0 ] ; then
+    echo "Could not find $SHLIBS"
+    exit 1
+fi
+if [ ! -d shared ] ; then 
+    mkdir shared
+fi
 case $kind in
     gcc)
     for libname in $SHLIBS ; do
         mkdir .tmp
         cd .tmp
         $AR x ../$libname
-        $CLINKER -shared -Wl,-soname,$libname.$slsuffix \
-		-o ../$libname.$slsuffix *.o
+	libbase=`basename $libname .a`
+        $CLINKER -shared -Wl,-soname,$libbase.$slsuffix \
+		-o ../shared/$libbase.$slsuffix *.o
         cd ..
+	if [ $slsuffix != $req_slsuffix ] ; then
+	    (cd shared ; ln -s $libbase.$slsuffix $libbase.$req_slsuffix )
+        fi
         rm -rf .tmp
     done
     ;;
@@ -61,8 +92,12 @@
         mkdir .tmp
         cd .tmp
         $AR x ../$libname
-        $LD -G -h $libname.$slsuffix -o ../$libname.$slsuffix *.o
+	libbase=`basename $libname .a`
+        $LD -G -h $libbase.$slsuffix -o ../shared/$libbase.$slsuffix *.o
         cd ..
+	if [ $slsuffix != $req_slsuffix ] ; then
+	    ( cd shared ; ln -s $libbase.$slsuffix $libbase.$req_slsuffix )
+        fi
         rm -rf .tmp
     done
     ;;
@@ -73,20 +108,22 @@
         mkdir .tmp
         cd .tmp
         ar x ../$libname
+	libbase=`basename $libname .a`
         nm -g -p *.o | awk '{ if ($2 == "T") { print $1 ; }}' | \
-	    sed -e 's/^\.//g' >  $libname.exp
+	    sed -e 's/^\.//g' >  $libbase.exp
         # xlC doesn't work with this!
         # cc misses the iargc/getarg libraries
-        xlf -o ../$libname.so *.o -bE:$libname.exp -bM:SRE -bnoentry
+        xlf -o ../shared/$libbase.so *.o -bE:$libbase.exp -bM:SRE -bnoentry
         # create new shared file name
-        newfile=`basename $libname`
-        newfile="${newfile}shared.a"
+        newfile="${libbase}shared.a"
         /bin/rm -f $newfile
-        ar qv $newfile ../$libname.so
+        ar qv $newfile ../shared/$libbase.so
         /bin/rm -f *.o
         cd ..
         /bin/rm -rf .tmp
     done
+    ;;
+
     *)
     echo "Unknown shared library type $kind"
     exit 1
