mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-21 04:42:53 +08:00
5836a818ec
This reverts commitb558ff043d
. This reverts commit4a11f20659
. 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
|