3 # shlib-install - install a shared library and do any necessary host-specific
4 # post-installation configuration (like ldconfig)
6 # usage: shlib-install [-D] -O host_os [-V host_vendor] -d installation-dir [-b bin-dir] -i install-prog [-U] library
14 INSTALLDIR
=/usr
/local
/lib
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"
22 while [ $# -gt 0 ]; do
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;;
36 # set install target name
39 if [ -z "$LIBNAME" ]; then
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}
60 if [ -z "$uninstall" ] ; then
61 ${echo} eval ${INSTALLPROG} $LIBNAME ${INSTALLDIR}/${LIBNAME}
63 ${echo} ${RM} ${INSTALLDIR}/${LIBNAME}
66 # post-install/uninstall
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)
74 hpux
*|darwin
*|macosx
*|linux
*|solaris2
*)
75 if [ -z "$uninstall" ]; then
76 chmod 755 ${INSTALLDIR}/${LIBNAME}
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
86 ${echo} $MV ${INSTALLDIR}/${LIBNAME} ${BINDIR}/${LIBNAME}
87 ${echo} chmod a+x ${BINDIR}/${LIBNAME}
88 ${echo} eval ${INSTALLPROG} ${LIBNAME}.a \
89 ${INSTALLDIR}/${IMPLIBNAME}
91 ${echo} ${RM} ${BINDIR}/${LIBNAME}
92 ${echo} ${RM} ${INSTALLDIR}/${IMPLIBNAME}
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
103 *.
*.
[0-9]) # libname.so.M
104 LINK1
=`echo $LIBNAME | sed 's:\(.*\..*\)\.[0-9]:\1:'` # libname.so
107 LINK1
=`echo $LIBNAME | sed 's:\(.*\)\.[0-9]:\1:'` # libname
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
114 INSTALL_LINK1
='${echo} cd $INSTALLDIR && ${echo} ${LN} $LIBNAME $LINK1'
115 INSTALL_LINK2
='${echo} cd $INSTALLDIR && ${echo} ${LN} $LIBNAME $LINK2'
118 # Create symlinks to the installed library. This section is incomplete.
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
128 # libname.so -> libname.so.M
129 ${echo} ${RM} ${INSTALLDIR}/$LINK1
130 if [ -z "$uninstall" ]; then
131 ${echo} cd $INSTALLDIR && ${echo} ${LN} $LINK2 $LINK1
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
142 # libname.so -> libname.so.M.N
143 ${echo} ${RM} ${INSTALLDIR}/$LINK1
144 if [ -z "$uninstall" ]; then
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
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
167 # libname.so.M -> libname.so.M.N
168 ${echo} ${RM} ${INSTALLDIR}/$LINK2
169 if [ -z "$uninstall" ]; then
173 # libname.so -> libname.so.M.N
174 ${echo} ${RM} ${INSTALLDIR}/$LINK1
175 if [ -z "$uninstall" ]; then
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
190 # libname.sl -> libname.M
191 ${echo} ${RM} ${INSTALLDIR}/$LINK1.sl
192 if [ -z "$uninstall" ]; then
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.
This page took 0.055824 seconds and 4 git commands to generate.