| #! /bin/sh |
| # |
| # shlib-install - install a shared library and do any necessary host-specific |
| # post-installation configuration (like ldconfig) |
| # |
| # usage: shlib-install [-D] -O host_os -d installation-dir -i install-prog [-U] library |
| # |
| # Chet Ramey |
| # chet@po.cwru.edu |
| |
| # |
| # defaults |
| # |
| INSTALLDIR=/usr/local/lib |
| LDCONFIG=ldconfig |
| |
| PROGNAME=`basename $0` |
| USAGE="$PROGNAME [-D] -O host_os -d installation-dir -i install-prog [-U] library" |
| |
| # process options |
| |
| while [ $# -gt 0 ]; do |
| case "$1" in |
| -O) shift; host_os="$1"; shift ;; |
| -d) shift; INSTALLDIR="$1"; shift ;; |
| -i) shift; INSTALLPROG="$1" ; shift ;; |
| -D) echo=echo ; shift ;; |
| -U) uninstall=true ; shift ;; |
| -*) echo "$USAGE" >&2 ; exit 2;; |
| *) break ;; |
| esac |
| done |
| |
| # set install target name |
| LIBNAME="$1" |
| |
| if [ -z "$LIBNAME" ]; then |
| echo "$USAGE" >&2 |
| exit 2 |
| fi |
| |
| OLDSUFF=old |
| MV=mv |
| RM="rm -f" |
| LN="ln -s" |
| |
| # pre-install |
| |
| if [ -z "$uninstall" ]; then |
| ${echo} $RM ${INSTALLDIR}/${LIBNAME}.${OLDSUFF} |
| if [ -f "$INSTALLDIR/$LIBNAME" ]; then |
| ${echo} $MV $INSTALLDIR/$LIBNAME ${INSTALLDIR}/${LIBNAME}.${OLDSUFF} |
| fi |
| fi |
| |
| # install/uninstall |
| |
| if [ -z "$uninstall" ] ; then |
| ${echo} eval ${INSTALLPROG} $LIBNAME ${INSTALLDIR}/${LIBNAME} |
| else |
| ${echo} ${RM} ${INSTALLDIR}/${LIBNAME} |
| fi |
| |
| # post-install/uninstall |
| |
| # HP-UX requires that a shared library have execute permission |
| case "$host_os" in |
| hpux*) if [ -z "$uninstall" ]; then |
| chmod 755 ${INSTALLDIR}/${LIBNAME} |
| fi ;; |
| *) ;; |
| esac |
| |
| case "$LIBNAME" in |
| *.*.[0-9].[0-9]) # libname.so.M.N |
| LINK2=`echo $LIBNAME | sed 's:\(.*\..*\.[0-9]\)\.[0-9]:\1:'` # libname.so.M |
| LINK1=`echo $LIBNAME | sed 's:\(.*\..*\)\.[0-9]\.[0-9]:\1:'` # libname.so |
| ;; |
| *.*.[0-9]) # libname.so.M |
| LINK1=`echo $LIBNAME | sed 's:\(.*\..*\)\.[0-9]:\1:'` # libname.so |
| ;; |
| *.[0-9]) # libname.M |
| LINK1=`echo $LIBNAME | sed 's:\(.*\)\.[0-9]:\1:'` # libname |
| ;; |
| esac |
| |
| # |
| # Create symlinks to the installed library. This section is incomplete. |
| # |
| case "$host_os" in |
| *linux*|bsdi4*) |
| # libname.so.M -> libname.so.M.N |
| ${echo} ${RM} ${INSTALLDIR}/$LINK2 |
| if [ -z "$uninstall" ]; then |
| ${echo} ln -s $INSTALLDIR/$LIBNAME ${INSTALLDIR}/$LINK2 |
| fi |
| |
| # libname.so -> libname.so.M.N |
| ${echo} ${RM} ${INSTALLDIR}/$LINK1 |
| if [ -z "$uninstall" ]; then |
| ${echo} ln -s $INSTALLDIR/$LIBNAME ${INSTALLDIR}/$LINK1 |
| fi |
| ;; |
| |
| solaris2*|aix4.[2-9]*|osf*|irix[56]*) |
| # libname.so -> libname.so.M |
| ${echo} ${RM} ${INSTALLDIR}/$LINK1 |
| if [ -z "$uninstall" ]; then |
| ${echo} ln -s $INSTALLDIR/$LIBNAME ${INSTALLDIR}/$LINK1 |
| fi |
| ;; |
| |
| |
| # FreeBSD 3.x can have either a.out or ELF shared libraries |
| freebsd3*) |
| if [ -x /usr/bin/objformat ] && [ "`/usr/bin/objformat`" = "elf" ]; then |
| # libname.so -> libname.so.M |
| ${echo} ${RM} ${INSTALLDIR}/$LINK1 |
| if [ -z "$uninstall" ]; then |
| ${echo} ln -s $INSTALLDIR/$LIBNAME ${INSTALLDIR}/$LINK1 |
| fi |
| else |
| # libname.so.M -> libname.so.M.N |
| ${echo} ${RM} ${INSTALLDIR}/$LINK2 |
| if [ -z "$uninstall" ]; then |
| ${echo} ln -s $INSTALLDIR/$LIBNAME ${INSTALLDIR}/$LINK2 |
| fi |
| |
| # libname.so -> libname.so.M.N |
| ${echo} ${RM} ${INSTALLDIR}/$LINK1 |
| if [ -z "$uninstall" ]; then |
| ${echo} ln -s $INSTALLDIR/$LIBNAME ${INSTALLDIR}/$LINK1 |
| fi |
| fi |
| ;; |
| |
| hpux1*) |
| # libname.sl -> libname.M |
| ${echo} ${RM} ${INSTALLDIR}/$LINK1.sl |
| if [ -z "$uninstall" ]; then |
| ${echo} ln -s $INSTALLDIR/$LIBNAME ${INSTALLDIR}/${LINK1}.sl |
| fi |
| ;; |
| |
| *) ;; |
| esac |
| |
| exit 0 |