5836a818ec
This reverts commit b558ff043d41ba8d17a82f5f9ae5f9dade66160e. This reverts commit 4a11f2065906976675808364ddbd1c0f77eea41f. The initial import commit failed to retain local changes made to readline's configure.in (and the commit message erroneously stated that there were no local changes that needed to be reapplied). Also the import caused a couple of build errors and a scattering of testsuite regressions throughout many arches. It's probably better to start over with this import, hopefully more carefully next time.
206 lines
4.9 KiB
Bash
Executable File
206 lines
4.9 KiB
Bash
Executable File
#! /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 [-V host_vendor] -d installation-dir [-b bin-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 [-V host_vendor] -d installation-dir [-b bin-dir] -i install-prog [-U] library"
|
|
|
|
# process options
|
|
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
-O) shift; host_os="$1"; shift ;;
|
|
-V) shift; host_vendor="$1"; shift ;;
|
|
-d) shift; INSTALLDIR="$1"; shift ;;
|
|
-b) shift; BINDIR="$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 and Darwin/MacOS X require that a shared library have execute permission
|
|
# Linux does, too, and ldd warns about it
|
|
# Cygwin installs both a dll (which must go in $BINDIR) and an implicit
|
|
# link library (in $libdir)
|
|
case "$host_os" in
|
|
hpux*|darwin*|macosx*|linux*)
|
|
if [ -z "$uninstall" ]; then
|
|
chmod 555 ${INSTALLDIR}/${LIBNAME}
|
|
fi ;;
|
|
cygwin*|mingw*)
|
|
IMPLIBNAME=`echo ${LIBNAME} \
|
|
| sed -e 's,^cyg,lib,' -e 's,[0-9]*.dll$,.dll.a,'`
|
|
if [ -z "$uninstall" ]; then
|
|
${echo} $RM ${BINDIR}/${LIBNAME}.${OLDSUFF}
|
|
if [ -f "$BINDIR/$LIBNAME" ]; then
|
|
${echo} $MV $BINDIR/$LIBNAME $BINDIR/$LIBNAME.$OLDSUFF
|
|
fi
|
|
${echo} $MV ${INSTALLDIR}/${LIBNAME} ${BINDIR}/${LIBNAME}
|
|
${echo} chmod a+x ${BINDIR}/${LIBNAME}
|
|
${echo} eval ${INSTALLPROG} ${LIBNAME}.a \
|
|
${INSTALLDIR}/${IMPLIBNAME}
|
|
else
|
|
${echo} ${RM} ${BINDIR}/${LIBNAME}
|
|
${echo} ${RM} ${INSTALLDIR}/${IMPLIBNAME}
|
|
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
|
|
;;
|
|
*.[0-9].[0-9].dylib) # libname.M.N.dylib
|
|
LINK2=`echo $LIBNAME | sed 's:\(.*\.[0-9]\)\.[0-9]:\1:'` # libname.M.dylib
|
|
LINK1=`echo $LIBNAME | sed 's:\(.*\)\.[0-9]\.[0-9]:\1:'` # libname.dylib
|
|
esac
|
|
|
|
INSTALL_LINK1='${echo} cd $INSTALLDIR && ${echo} ${LN} $LIBNAME $LINK1'
|
|
INSTALL_LINK2='${echo} cd $INSTALLDIR && ${echo} ${LN} $LIBNAME $LINK2'
|
|
|
|
#
|
|
# Create symlinks to the installed library. This section is incomplete.
|
|
#
|
|
case "$host_os-$host_vendor" in
|
|
*linux*|freebsd*-gentoo)
|
|
# libname.so.M -> libname.so.M.N
|
|
${echo} ${RM} ${INSTALLDIR}/$LINK2
|
|
if [ -z "$uninstall" ]; then
|
|
eval $INSTALL_LINK2
|
|
fi
|
|
|
|
# libname.so -> libname.so.M
|
|
${echo} ${RM} ${INSTALLDIR}/$LINK1
|
|
if [ -z "$uninstall" ]; then
|
|
${echo} cd $INSTALLDIR && ${echo} ${LN} $LINK2 $LINK1
|
|
fi
|
|
;;
|
|
|
|
bsdi4*|*gnu*|darwin*|macosx*|netbsd*)
|
|
# libname.so.M -> libname.so.M.N
|
|
${echo} ${RM} ${INSTALLDIR}/$LINK2
|
|
if [ -z "$uninstall" ]; then
|
|
eval $INSTALL_LINK2
|
|
fi
|
|
|
|
# libname.so -> libname.so.M.N
|
|
${echo} ${RM} ${INSTALLDIR}/$LINK1
|
|
if [ -z "$uninstall" ]; then
|
|
eval $INSTALL_LINK1
|
|
fi
|
|
;;
|
|
|
|
solaris2*|aix4.[2-9]*|aix[5-9]*|osf*|irix[56]*|sysv[45]*|dgux*|interix*)
|
|
# libname.so -> libname.so.M
|
|
${echo} ${RM} ${INSTALLDIR}/$LINK1
|
|
if [ -z "$uninstall" ]; then
|
|
eval $INSTALL_LINK1
|
|
fi
|
|
;;
|
|
|
|
|
|
# FreeBSD 3.x and above can have either a.out or ELF shared libraries
|
|
freebsd3*|freebsdaout*)
|
|
if [ -x /usr/bin/objformat ] && [ "`/usr/bin/objformat`" = "elf" ]; then
|
|
# libname.so -> libname.so.M
|
|
${echo} ${RM} ${INSTALLDIR}/$LINK1
|
|
if [ -z "$uninstall" ]; then
|
|
eval $INSTALL_LINK1
|
|
fi
|
|
else
|
|
# libname.so.M -> libname.so.M.N
|
|
${echo} ${RM} ${INSTALLDIR}/$LINK2
|
|
if [ -z "$uninstall" ]; then
|
|
eval $INSTALL_LINK2
|
|
fi
|
|
|
|
# libname.so -> libname.so.M.N
|
|
${echo} ${RM} ${INSTALLDIR}/$LINK1
|
|
if [ -z "$uninstall" ]; then
|
|
eval $INSTALL_LINK1
|
|
fi
|
|
fi
|
|
;;
|
|
|
|
freebsd[4-9]*|freebsdelf*|dragonfly*)
|
|
# libname.so -> libname.so.M
|
|
${echo} ${RM} ${INSTALLDIR}/$LINK1
|
|
if [ -z "$uninstall" ]; then
|
|
eval $INSTALL_LINK1
|
|
fi
|
|
;;
|
|
|
|
hpux1*)
|
|
# libname.sl -> libname.M
|
|
${echo} ${RM} ${INSTALLDIR}/$LINK1.sl
|
|
if [ -z "$uninstall" ]; then
|
|
eval $INSTALL_LINK1
|
|
fi
|
|
;;
|
|
|
|
cygwin*|mingw*)
|
|
# Links to .dlls don't work. Hence shobj-conf used DLLVERSION.dll
|
|
# instead of so.SHLIB_MAJOR.SHLIB_MINOR. The postinstall above
|
|
# took care of everything else.
|
|
;;
|
|
|
|
*) ;;
|
|
esac
|
|
|
|
exit 0
|