Annotation of embedaddon/readline/support/shlib-install, revision 1.1
1.1 ! misho 1: #! /bin/sh
! 2: #
! 3: # shlib-install - install a shared library and do any necessary host-specific
! 4: # post-installation configuration (like ldconfig)
! 5: #
! 6: # usage: shlib-install [-D] -O host_os [-V host_vendor] -d installation-dir [-b bin-dir] -i install-prog [-U] library
! 7: #
! 8: # Chet Ramey
! 9: # chet@po.cwru.edu
! 10:
! 11: #
! 12: # defaults
! 13: #
! 14: INSTALLDIR=/usr/local/lib
! 15: LDCONFIG=ldconfig
! 16:
! 17: PROGNAME=`basename $0`
! 18: USAGE="$PROGNAME [-D] -O host_os [-V host_vendor] -d installation-dir [-b bin-dir] -i install-prog [-U] library"
! 19:
! 20: # process options
! 21:
! 22: while [ $# -gt 0 ]; do
! 23: case "$1" in
! 24: -O) shift; host_os="$1"; shift ;;
! 25: -V) shift; host_vendor="$1"; shift ;;
! 26: -d) shift; INSTALLDIR="$1"; shift ;;
! 27: -b) shift; BINDIR="$1" ; shift ;;
! 28: -i) shift; INSTALLPROG="$1" ; shift ;;
! 29: -D) echo=echo ; shift ;;
! 30: -U) uninstall=true ; shift ;;
! 31: -*) echo "$USAGE" >&2 ; exit 2;;
! 32: *) break ;;
! 33: esac
! 34: done
! 35:
! 36: # set install target name
! 37: LIBNAME="$1"
! 38:
! 39: if [ -z "$LIBNAME" ]; then
! 40: echo "$USAGE" >&2
! 41: exit 2
! 42: fi
! 43:
! 44: OLDSUFF=old
! 45: MV=mv
! 46: RM="rm -f"
! 47: LN="ln -s"
! 48:
! 49: # pre-install
! 50:
! 51: if [ -z "$uninstall" ]; then
! 52: ${echo} $RM ${INSTALLDIR}/${LIBNAME}.${OLDSUFF}
! 53: if [ -f "$INSTALLDIR/$LIBNAME" ]; then
! 54: ${echo} $MV $INSTALLDIR/$LIBNAME ${INSTALLDIR}/${LIBNAME}.${OLDSUFF}
! 55: fi
! 56: fi
! 57:
! 58: # install/uninstall
! 59:
! 60: if [ -z "$uninstall" ] ; then
! 61: ${echo} eval ${INSTALLPROG} $LIBNAME ${INSTALLDIR}/${LIBNAME}
! 62: else
! 63: ${echo} ${RM} ${INSTALLDIR}/${LIBNAME}
! 64: fi
! 65:
! 66: # post-install/uninstall
! 67:
! 68: # HP-UX and Darwin/MacOS X require that a shared library have execute permission
! 69: # Linux does, too, and ldd warns about it. Solaris doesn't seem to mind,
! 70: # but ldd still warns about it.
! 71: # Cygwin installs both a dll (which must go in $BINDIR) and an implicit
! 72: # link library (in $libdir)
! 73: case "$host_os" in
! 74: hpux*|darwin*|macosx*|linux*|solaris2*)
! 75: if [ -z "$uninstall" ]; then
! 76: chmod 555 ${INSTALLDIR}/${LIBNAME}
! 77: fi ;;
! 78: cygwin*|mingw*)
! 79: IMPLIBNAME=`echo ${LIBNAME} \
! 80: | sed -e 's,^cyg,lib,' -e 's,[0-9]*.dll$,.dll.a,'`
! 81: if [ -z "$uninstall" ]; then
! 82: ${echo} $RM ${BINDIR}/${LIBNAME}.${OLDSUFF}
! 83: if [ -f "$BINDIR/$LIBNAME" ]; then
! 84: ${echo} $MV $BINDIR/$LIBNAME $BINDIR/$LIBNAME.$OLDSUFF
! 85: fi
! 86: ${echo} $MV ${INSTALLDIR}/${LIBNAME} ${BINDIR}/${LIBNAME}
! 87: ${echo} chmod a+x ${BINDIR}/${LIBNAME}
! 88: ${echo} eval ${INSTALLPROG} ${LIBNAME}.a \
! 89: ${INSTALLDIR}/${IMPLIBNAME}
! 90: else
! 91: ${echo} ${RM} ${BINDIR}/${LIBNAME}
! 92: ${echo} ${RM} ${INSTALLDIR}/${IMPLIBNAME}
! 93: fi ;;
! 94:
! 95: *) ;;
! 96: esac
! 97:
! 98: case "$LIBNAME" in
! 99: *.*.[0-9].[0-9]) # libname.so.M.N
! 100: LINK2=`echo $LIBNAME | sed 's:\(.*\..*\.[0-9]\)\.[0-9]:\1:'` # libname.so.M
! 101: LINK1=`echo $LIBNAME | sed 's:\(.*\..*\)\.[0-9]\.[0-9]:\1:'` # libname.so
! 102: ;;
! 103: *.*.[0-9]) # libname.so.M
! 104: LINK1=`echo $LIBNAME | sed 's:\(.*\..*\)\.[0-9]:\1:'` # libname.so
! 105: ;;
! 106: *.[0-9]) # libname.M
! 107: LINK1=`echo $LIBNAME | sed 's:\(.*\)\.[0-9]:\1:'` # libname
! 108: ;;
! 109: *.[0-9].[0-9].dylib) # libname.M.N.dylib
! 110: LINK2=`echo $LIBNAME | sed 's:\(.*\.[0-9]\)\.[0-9]:\1:'` # libname.M.dylib
! 111: LINK1=`echo $LIBNAME | sed 's:\(.*\)\.[0-9]\.[0-9]:\1:'` # libname.dylib
! 112: esac
! 113:
! 114: INSTALL_LINK1='${echo} cd $INSTALLDIR && ${echo} ${LN} $LIBNAME $LINK1'
! 115: INSTALL_LINK2='${echo} cd $INSTALLDIR && ${echo} ${LN} $LIBNAME $LINK2'
! 116:
! 117: #
! 118: # Create symlinks to the installed library. This section is incomplete.
! 119: #
! 120: case "$host_os-$host_vendor" in
! 121: *linux*|freebsd*-gentoo)
! 122: # libname.so.M -> libname.so.M.N
! 123: ${echo} ${RM} ${INSTALLDIR}/$LINK2
! 124: if [ -z "$uninstall" ]; then
! 125: eval $INSTALL_LINK2
! 126: fi
! 127:
! 128: # libname.so -> libname.so.M
! 129: ${echo} ${RM} ${INSTALLDIR}/$LINK1
! 130: if [ -z "$uninstall" ]; then
! 131: ${echo} cd $INSTALLDIR && ${echo} ${LN} $LINK2 $LINK1
! 132: fi
! 133: ;;
! 134:
! 135: bsdi4*|*gnu*|darwin*|macosx*|netbsd*|mirbsd*)
! 136: # libname.so.M -> libname.so.M.N
! 137: ${echo} ${RM} ${INSTALLDIR}/$LINK2
! 138: if [ -z "$uninstall" ]; then
! 139: eval $INSTALL_LINK2
! 140: fi
! 141:
! 142: # libname.so -> libname.so.M.N
! 143: ${echo} ${RM} ${INSTALLDIR}/$LINK1
! 144: if [ -z "$uninstall" ]; then
! 145: eval $INSTALL_LINK1
! 146: fi
! 147: ;;
! 148:
! 149: solaris2*|aix4.[2-9]*|aix[5-9]*|osf*|irix[56]*|sysv[45]*|dgux*|interix*)
! 150: # libname.so -> libname.so.M
! 151: ${echo} ${RM} ${INSTALLDIR}/$LINK1
! 152: if [ -z "$uninstall" ]; then
! 153: eval $INSTALL_LINK1
! 154: fi
! 155: ;;
! 156:
! 157:
! 158: # FreeBSD 3.x and above can have either a.out or ELF shared libraries
! 159: freebsd3*|freebsdaout*)
! 160: if [ -x /usr/bin/objformat ] && [ "`/usr/bin/objformat`" = "elf" ]; then
! 161: # libname.so -> libname.so.M
! 162: ${echo} ${RM} ${INSTALLDIR}/$LINK1
! 163: if [ -z "$uninstall" ]; then
! 164: eval $INSTALL_LINK1
! 165: fi
! 166: else
! 167: # libname.so.M -> libname.so.M.N
! 168: ${echo} ${RM} ${INSTALLDIR}/$LINK2
! 169: if [ -z "$uninstall" ]; then
! 170: eval $INSTALL_LINK2
! 171: fi
! 172:
! 173: # libname.so -> libname.so.M.N
! 174: ${echo} ${RM} ${INSTALLDIR}/$LINK1
! 175: if [ -z "$uninstall" ]; then
! 176: eval $INSTALL_LINK1
! 177: fi
! 178: fi
! 179: ;;
! 180:
! 181: freebsd[4-9]*|freebsd1[0-9]*|freebsdelf*|dragonfly*)
! 182: # libname.so -> libname.so.M
! 183: ${echo} ${RM} ${INSTALLDIR}/$LINK1
! 184: if [ -z "$uninstall" ]; then
! 185: eval $INSTALL_LINK1
! 186: fi
! 187: ;;
! 188:
! 189: hpux1*)
! 190: # libname.sl -> libname.M
! 191: ${echo} ${RM} ${INSTALLDIR}/$LINK1.sl
! 192: if [ -z "$uninstall" ]; then
! 193: eval $INSTALL_LINK1
! 194: fi
! 195: ;;
! 196:
! 197: cygwin*|mingw*)
! 198: # Links to .dlls don't work. Hence shobj-conf used DLLVERSION.dll
! 199: # instead of so.SHLIB_MAJOR.SHLIB_MINOR. The postinstall above
! 200: # took care of everything else.
! 201: ;;
! 202:
! 203: *) ;;
! 204: esac
! 205:
! 206: exit 0
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>