xref: /netbsd-src/external/gpl3/gdb/dist/readline/readline/support/shlib-install (revision 4b169a6ba595ae283ca507b26b15fdff40495b1c)
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#
14INSTALLDIR=/usr/local/lib
15LDCONFIG=ldconfig
16
17PROGNAME=`basename $0`
18USAGE="$PROGNAME [-D] -O host_os [-V host_vendor] -d installation-dir [-b bin-dir] -i install-prog [-U] library"
19
20# process options - should use getopts
21
22while [ $# -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
34done
35
36# set install target name
37LIBNAME="$1"
38
39if [ -z "$LIBNAME" ]; then
40	echo "$USAGE" >&2
41	exit 2
42fi
43
44OLDSUFF=old
45MV=mv
46RM="rm -f"
47LN="ln -s"
48
49# pre-install
50
51if [ -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
56fi
57
58# install/uninstall
59
60if [ -z "$uninstall" ] ; then
61	${echo} eval ${INSTALLPROG} $LIBNAME ${INSTALLDIR}/${LIBNAME}
62else
63	${echo} ${RM} ${INSTALLDIR}/${LIBNAME}
64fi
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)
73case "$host_os" in
74hpux*|darwin*|macosx*|linux*|solaris2*)
75	if [ -z "$uninstall" ]; then
76		chmod 755 ${INSTALLDIR}/${LIBNAME}
77	fi ;;
78cygwin*|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*)	;;
96esac
97
98case "$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
112esac
113
114INSTALL_LINK1='${echo} cd $INSTALLDIR && ${echo} ${LN} $LIBNAME $LINK1'
115INSTALL_LINK2='${echo} cd $INSTALLDIR && ${echo} ${LN} $LIBNAME $LINK2'
116
117#
118# Create symlinks to the installed library.  This section is incomplete.
119#
120case "$host_os-$host_vendor" in
121*linux*|freebsd*|dragonfly*)
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
135bsdi4*|*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
149solaris2*|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
157hpux1*)
158	# libname.sl -> libname.M
159	${echo} ${RM} ${INSTALLDIR}/$LINK1.sl
160	if [ -z "$uninstall" ]; then
161		eval $INSTALL_LINK1
162	fi
163	;;
164
165cygwin*|mingw*)
166	# Links to .dlls don't work.  Hence shobj-conf used DLLVERSION.dll
167	# instead of so.SHLIB_MAJOR.SHLIB_MINOR.  The postinstall above
168	# took care of everything else.
169	;;
170
171*)	;;
172esac
173
174exit 0
175