1*00b67f09SDavid van Moolenbroek# ltmain.sh - Provide generalized library-building support services.
2*00b67f09SDavid van Moolenbroek# NOTE: Changing this file will not affect anything until you rerun ltconfig.
3*00b67f09SDavid van Moolenbroek#
4*00b67f09SDavid van Moolenbroek# Copyright (C) 1996-1999 Free Software Foundation, Inc.
5*00b67f09SDavid van Moolenbroek# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
6*00b67f09SDavid van Moolenbroek#
7*00b67f09SDavid van Moolenbroek# This program is free software; you can redistribute it and/or modify
8*00b67f09SDavid van Moolenbroek# it under the terms of the GNU General Public License as published by
9*00b67f09SDavid van Moolenbroek# the Free Software Foundation; either version 2 of the License, or
10*00b67f09SDavid van Moolenbroek# (at your option) any later version.
11*00b67f09SDavid van Moolenbroek#
12*00b67f09SDavid van Moolenbroek# This program is distributed in the hope that it will be useful, but
13*00b67f09SDavid van Moolenbroek# WITHOUT ANY WARRANTY; without even the implied warranty of
14*00b67f09SDavid van Moolenbroek# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15*00b67f09SDavid van Moolenbroek# General Public License for more details.
16*00b67f09SDavid van Moolenbroek#
17*00b67f09SDavid van Moolenbroek# You should have received a copy of the GNU General Public License
18*00b67f09SDavid van Moolenbroek# along with this program; if not, write to the Free Software
19*00b67f09SDavid van Moolenbroek# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20*00b67f09SDavid van Moolenbroek#
21*00b67f09SDavid van Moolenbroek# As a special exception to the GNU General Public License, if you
22*00b67f09SDavid van Moolenbroek# distribute this file as part of a program that contains a
23*00b67f09SDavid van Moolenbroek# configuration script generated by Autoconf, you may include it under
24*00b67f09SDavid van Moolenbroek# the same distribution terms that you use for the rest of that program.
25*00b67f09SDavid van Moolenbroek
26*00b67f09SDavid van Moolenbroek# Check that we have a working $echo.
27*00b67f09SDavid van Moolenbroekif test "X$1" = X--no-reexec; then
28*00b67f09SDavid van Moolenbroek  # Discard the --no-reexec flag, and continue.
29*00b67f09SDavid van Moolenbroek  shift
30*00b67f09SDavid van Moolenbroekelif test "X$1" = X--fallback-echo; then
31*00b67f09SDavid van Moolenbroek  # Avoid inline document here, it may be left over
32*00b67f09SDavid van Moolenbroek  :
33*00b67f09SDavid van Moolenbroekelif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
34*00b67f09SDavid van Moolenbroek  # Yippee, $echo works!
35*00b67f09SDavid van Moolenbroek  :
36*00b67f09SDavid van Moolenbroekelse
37*00b67f09SDavid van Moolenbroek  # Restart under the correct shell, and then maybe $echo will work.
38*00b67f09SDavid van Moolenbroek  exec $SHELL "$0" --no-reexec ${1+"$@"}
39*00b67f09SDavid van Moolenbroekfi
40*00b67f09SDavid van Moolenbroek
41*00b67f09SDavid van Moolenbroekif test "X$1" = X--fallback-echo; then
42*00b67f09SDavid van Moolenbroek  # used as fallback echo
43*00b67f09SDavid van Moolenbroek  shift
44*00b67f09SDavid van Moolenbroek  cat <<EOF
45*00b67f09SDavid van Moolenbroek$*
46*00b67f09SDavid van MoolenbroekEOF
47*00b67f09SDavid van Moolenbroek  exit 0
48*00b67f09SDavid van Moolenbroekfi
49*00b67f09SDavid van Moolenbroek
50*00b67f09SDavid van Moolenbroek# The name of this program.
51*00b67f09SDavid van Moolenbroekprogname=`$echo "$0" | sed 's%^.*/%%'`
52*00b67f09SDavid van Moolenbroekmodename="$progname"
53*00b67f09SDavid van Moolenbroek
54*00b67f09SDavid van Moolenbroek# Constants.
55*00b67f09SDavid van MoolenbroekPROGRAM=ltmain.sh
56*00b67f09SDavid van MoolenbroekPACKAGE=libtool
57*00b67f09SDavid van MoolenbroekVERSION=1.3.5
58*00b67f09SDavid van MoolenbroekTIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)"
59*00b67f09SDavid van Moolenbroek
60*00b67f09SDavid van Moolenbroekdefault_mode=
61*00b67f09SDavid van Moolenbroekhelp="Try \`$progname --help' for more information."
62*00b67f09SDavid van Moolenbroekmagic="%%%MAGIC variable%%%"
63*00b67f09SDavid van Moolenbroekmkdir="mkdir"
64*00b67f09SDavid van Moolenbroekmv="mv -f"
65*00b67f09SDavid van Moolenbroekrm="rm -f"
66*00b67f09SDavid van Moolenbroek
67*00b67f09SDavid van Moolenbroek# Sed substitution that helps us do robust quoting.  It backslashifies
68*00b67f09SDavid van Moolenbroek# metacharacters that are still active within double-quoted strings.
69*00b67f09SDavid van MoolenbroekXsed='sed -e 1s/^X//'
70*00b67f09SDavid van Moolenbroeksed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
71*00b67f09SDavid van MoolenbroekSP2NL='tr \040 \012'
72*00b67f09SDavid van MoolenbroekNL2SP='tr \015\012 \040\040'
73*00b67f09SDavid van Moolenbroek
74*00b67f09SDavid van Moolenbroek# NLS nuisances.
75*00b67f09SDavid van Moolenbroek# Only set LANG and LC_ALL to C if already set.
76*00b67f09SDavid van Moolenbroek# These must not be set unconditionally because not all systems understand
77*00b67f09SDavid van Moolenbroek# e.g. LANG=C (notably SCO).
78*00b67f09SDavid van Moolenbroek# We save the old values to restore during execute mode.
79*00b67f09SDavid van Moolenbroekif test "${LC_ALL+set}" = set; then
80*00b67f09SDavid van Moolenbroek  save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
81*00b67f09SDavid van Moolenbroekfi
82*00b67f09SDavid van Moolenbroekif test "${LANG+set}" = set; then
83*00b67f09SDavid van Moolenbroek  save_LANG="$LANG"; LANG=C; export LANG
84*00b67f09SDavid van Moolenbroekfi
85*00b67f09SDavid van Moolenbroek
86*00b67f09SDavid van Moolenbroekif test "$LTCONFIG_VERSION" != "$VERSION"; then
87*00b67f09SDavid van Moolenbroek  echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2
88*00b67f09SDavid van Moolenbroek  echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
89*00b67f09SDavid van Moolenbroek  exit 1
90*00b67f09SDavid van Moolenbroekfi
91*00b67f09SDavid van Moolenbroek
92*00b67f09SDavid van Moolenbroekif test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
93*00b67f09SDavid van Moolenbroek  echo "$modename: not configured to build any kind of library" 1>&2
94*00b67f09SDavid van Moolenbroek  echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
95*00b67f09SDavid van Moolenbroek  exit 1
96*00b67f09SDavid van Moolenbroekfi
97*00b67f09SDavid van Moolenbroek
98*00b67f09SDavid van Moolenbroek# Global variables.
99*00b67f09SDavid van Moolenbroekmode=$default_mode
100*00b67f09SDavid van Moolenbroeknonopt=
101*00b67f09SDavid van Moolenbroekprev=
102*00b67f09SDavid van Moolenbroekprevopt=
103*00b67f09SDavid van Moolenbroekrun=
104*00b67f09SDavid van Moolenbroekshow="$echo"
105*00b67f09SDavid van Moolenbroekshow_help=
106*00b67f09SDavid van Moolenbroekexecute_dlfiles=
107*00b67f09SDavid van Moolenbroeklo2o="s/\\.lo\$/.${objext}/"
108*00b67f09SDavid van Moolenbroeko2lo="s/\\.${objext}\$/.lo/"
109*00b67f09SDavid van Moolenbroek
110*00b67f09SDavid van Moolenbroek# Parse our command line options once, thoroughly.
111*00b67f09SDavid van Moolenbroekwhile test $# -gt 0
112*00b67f09SDavid van Moolenbroekdo
113*00b67f09SDavid van Moolenbroek  arg="$1"
114*00b67f09SDavid van Moolenbroek  shift
115*00b67f09SDavid van Moolenbroek
116*00b67f09SDavid van Moolenbroek  case "$arg" in
117*00b67f09SDavid van Moolenbroek  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
118*00b67f09SDavid van Moolenbroek  *) optarg= ;;
119*00b67f09SDavid van Moolenbroek  esac
120*00b67f09SDavid van Moolenbroek
121*00b67f09SDavid van Moolenbroek  # If the previous option needs an argument, assign it.
122*00b67f09SDavid van Moolenbroek  if test -n "$prev"; then
123*00b67f09SDavid van Moolenbroek    case "$prev" in
124*00b67f09SDavid van Moolenbroek    execute_dlfiles)
125*00b67f09SDavid van Moolenbroek      eval "$prev=\"\$$prev \$arg\""
126*00b67f09SDavid van Moolenbroek      ;;
127*00b67f09SDavid van Moolenbroek    *)
128*00b67f09SDavid van Moolenbroek      eval "$prev=\$arg"
129*00b67f09SDavid van Moolenbroek      ;;
130*00b67f09SDavid van Moolenbroek    esac
131*00b67f09SDavid van Moolenbroek
132*00b67f09SDavid van Moolenbroek    prev=
133*00b67f09SDavid van Moolenbroek    prevopt=
134*00b67f09SDavid van Moolenbroek    continue
135*00b67f09SDavid van Moolenbroek  fi
136*00b67f09SDavid van Moolenbroek
137*00b67f09SDavid van Moolenbroek  # Have we seen a non-optional argument yet?
138*00b67f09SDavid van Moolenbroek  case "$arg" in
139*00b67f09SDavid van Moolenbroek  --help)
140*00b67f09SDavid van Moolenbroek    show_help=yes
141*00b67f09SDavid van Moolenbroek    ;;
142*00b67f09SDavid van Moolenbroek
143*00b67f09SDavid van Moolenbroek  --version)
144*00b67f09SDavid van Moolenbroek    echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
145*00b67f09SDavid van Moolenbroek    exit 0
146*00b67f09SDavid van Moolenbroek    ;;
147*00b67f09SDavid van Moolenbroek
148*00b67f09SDavid van Moolenbroek  --config)
149*00b67f09SDavid van Moolenbroek    sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0
150*00b67f09SDavid van Moolenbroek    exit 0
151*00b67f09SDavid van Moolenbroek    ;;
152*00b67f09SDavid van Moolenbroek
153*00b67f09SDavid van Moolenbroek  --debug)
154*00b67f09SDavid van Moolenbroek    echo "$progname: enabling shell trace mode"
155*00b67f09SDavid van Moolenbroek    set -x
156*00b67f09SDavid van Moolenbroek    ;;
157*00b67f09SDavid van Moolenbroek
158*00b67f09SDavid van Moolenbroek  --dry-run | -n)
159*00b67f09SDavid van Moolenbroek    run=:
160*00b67f09SDavid van Moolenbroek    ;;
161*00b67f09SDavid van Moolenbroek
162*00b67f09SDavid van Moolenbroek  --features)
163*00b67f09SDavid van Moolenbroek    echo "host: $host"
164*00b67f09SDavid van Moolenbroek    if test "$build_libtool_libs" = yes; then
165*00b67f09SDavid van Moolenbroek      echo "enable shared libraries"
166*00b67f09SDavid van Moolenbroek    else
167*00b67f09SDavid van Moolenbroek      echo "disable shared libraries"
168*00b67f09SDavid van Moolenbroek    fi
169*00b67f09SDavid van Moolenbroek    if test "$build_old_libs" = yes; then
170*00b67f09SDavid van Moolenbroek      echo "enable static libraries"
171*00b67f09SDavid van Moolenbroek    else
172*00b67f09SDavid van Moolenbroek      echo "disable static libraries"
173*00b67f09SDavid van Moolenbroek    fi
174*00b67f09SDavid van Moolenbroek    exit 0
175*00b67f09SDavid van Moolenbroek    ;;
176*00b67f09SDavid van Moolenbroek
177*00b67f09SDavid van Moolenbroek  --finish) mode="finish" ;;
178*00b67f09SDavid van Moolenbroek
179*00b67f09SDavid van Moolenbroek  --mode) prevopt="--mode" prev=mode ;;
180*00b67f09SDavid van Moolenbroek  --mode=*) mode="$optarg" ;;
181*00b67f09SDavid van Moolenbroek
182*00b67f09SDavid van Moolenbroek  --quiet | --silent)
183*00b67f09SDavid van Moolenbroek    show=:
184*00b67f09SDavid van Moolenbroek    ;;
185*00b67f09SDavid van Moolenbroek
186*00b67f09SDavid van Moolenbroek  -dlopen)
187*00b67f09SDavid van Moolenbroek    prevopt="-dlopen"
188*00b67f09SDavid van Moolenbroek    prev=execute_dlfiles
189*00b67f09SDavid van Moolenbroek    ;;
190*00b67f09SDavid van Moolenbroek
191*00b67f09SDavid van Moolenbroek  -*)
192*00b67f09SDavid van Moolenbroek    $echo "$modename: unrecognized option \`$arg'" 1>&2
193*00b67f09SDavid van Moolenbroek    $echo "$help" 1>&2
194*00b67f09SDavid van Moolenbroek    exit 1
195*00b67f09SDavid van Moolenbroek    ;;
196*00b67f09SDavid van Moolenbroek
197*00b67f09SDavid van Moolenbroek  *)
198*00b67f09SDavid van Moolenbroek    nonopt="$arg"
199*00b67f09SDavid van Moolenbroek    break
200*00b67f09SDavid van Moolenbroek    ;;
201*00b67f09SDavid van Moolenbroek  esac
202*00b67f09SDavid van Moolenbroekdone
203*00b67f09SDavid van Moolenbroek
204*00b67f09SDavid van Moolenbroekif test -n "$prevopt"; then
205*00b67f09SDavid van Moolenbroek  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
206*00b67f09SDavid van Moolenbroek  $echo "$help" 1>&2
207*00b67f09SDavid van Moolenbroek  exit 1
208*00b67f09SDavid van Moolenbroekfi
209*00b67f09SDavid van Moolenbroek
210*00b67f09SDavid van Moolenbroekif test -z "$show_help"; then
211*00b67f09SDavid van Moolenbroek
212*00b67f09SDavid van Moolenbroek  # Infer the operation mode.
213*00b67f09SDavid van Moolenbroek  if test -z "$mode"; then
214*00b67f09SDavid van Moolenbroek    case "$nonopt" in
215*00b67f09SDavid van Moolenbroek    *cc | *++ | gcc* | *-gcc*)
216*00b67f09SDavid van Moolenbroek      mode=link
217*00b67f09SDavid van Moolenbroek      for arg
218*00b67f09SDavid van Moolenbroek      do
219*00b67f09SDavid van Moolenbroek	case "$arg" in
220*00b67f09SDavid van Moolenbroek	-c)
221*00b67f09SDavid van Moolenbroek	   mode=compile
222*00b67f09SDavid van Moolenbroek	   break
223*00b67f09SDavid van Moolenbroek	   ;;
224*00b67f09SDavid van Moolenbroek	esac
225*00b67f09SDavid van Moolenbroek      done
226*00b67f09SDavid van Moolenbroek      ;;
227*00b67f09SDavid van Moolenbroek    *db | *dbx | *strace | *truss)
228*00b67f09SDavid van Moolenbroek      mode=execute
229*00b67f09SDavid van Moolenbroek      ;;
230*00b67f09SDavid van Moolenbroek    *install*|cp|mv)
231*00b67f09SDavid van Moolenbroek      mode=install
232*00b67f09SDavid van Moolenbroek      ;;
233*00b67f09SDavid van Moolenbroek    *rm)
234*00b67f09SDavid van Moolenbroek      mode=uninstall
235*00b67f09SDavid van Moolenbroek      ;;
236*00b67f09SDavid van Moolenbroek    *)
237*00b67f09SDavid van Moolenbroek      # If we have no mode, but dlfiles were specified, then do execute mode.
238*00b67f09SDavid van Moolenbroek      test -n "$execute_dlfiles" && mode=execute
239*00b67f09SDavid van Moolenbroek
240*00b67f09SDavid van Moolenbroek      # Just use the default operation mode.
241*00b67f09SDavid van Moolenbroek      if test -z "$mode"; then
242*00b67f09SDavid van Moolenbroek	if test -n "$nonopt"; then
243*00b67f09SDavid van Moolenbroek	  $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
244*00b67f09SDavid van Moolenbroek	else
245*00b67f09SDavid van Moolenbroek	  $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
246*00b67f09SDavid van Moolenbroek	fi
247*00b67f09SDavid van Moolenbroek      fi
248*00b67f09SDavid van Moolenbroek      ;;
249*00b67f09SDavid van Moolenbroek    esac
250*00b67f09SDavid van Moolenbroek  fi
251*00b67f09SDavid van Moolenbroek
252*00b67f09SDavid van Moolenbroek  # Only execute mode is allowed to have -dlopen flags.
253*00b67f09SDavid van Moolenbroek  if test -n "$execute_dlfiles" && test "$mode" != execute; then
254*00b67f09SDavid van Moolenbroek    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
255*00b67f09SDavid van Moolenbroek    $echo "$help" 1>&2
256*00b67f09SDavid van Moolenbroek    exit 1
257*00b67f09SDavid van Moolenbroek  fi
258*00b67f09SDavid van Moolenbroek
259*00b67f09SDavid van Moolenbroek  # Change the help message to a mode-specific one.
260*00b67f09SDavid van Moolenbroek  generic_help="$help"
261*00b67f09SDavid van Moolenbroek  help="Try \`$modename --help --mode=$mode' for more information."
262*00b67f09SDavid van Moolenbroek
263*00b67f09SDavid van Moolenbroek  # These modes are in order of execution frequency so that they run quickly.
264*00b67f09SDavid van Moolenbroek  case "$mode" in
265*00b67f09SDavid van Moolenbroek  # libtool compile mode
266*00b67f09SDavid van Moolenbroek  compile)
267*00b67f09SDavid van Moolenbroek    modename="$modename: compile"
268*00b67f09SDavid van Moolenbroek    # Get the compilation command and the source file.
269*00b67f09SDavid van Moolenbroek    base_compile=
270*00b67f09SDavid van Moolenbroek    lastarg=
271*00b67f09SDavid van Moolenbroek    srcfile="$nonopt"
272*00b67f09SDavid van Moolenbroek    suppress_output=
273*00b67f09SDavid van Moolenbroek
274*00b67f09SDavid van Moolenbroek    user_target=no
275*00b67f09SDavid van Moolenbroek    for arg
276*00b67f09SDavid van Moolenbroek    do
277*00b67f09SDavid van Moolenbroek      # Accept any command-line options.
278*00b67f09SDavid van Moolenbroek      case "$arg" in
279*00b67f09SDavid van Moolenbroek      -o)
280*00b67f09SDavid van Moolenbroek	if test "$user_target" != "no"; then
281*00b67f09SDavid van Moolenbroek	  $echo "$modename: you cannot specify \`-o' more than once" 1>&2
282*00b67f09SDavid van Moolenbroek	  exit 1
283*00b67f09SDavid van Moolenbroek	fi
284*00b67f09SDavid van Moolenbroek	user_target=next
285*00b67f09SDavid van Moolenbroek	;;
286*00b67f09SDavid van Moolenbroek
287*00b67f09SDavid van Moolenbroek      -static)
288*00b67f09SDavid van Moolenbroek	build_old_libs=yes
289*00b67f09SDavid van Moolenbroek	continue
290*00b67f09SDavid van Moolenbroek	;;
291*00b67f09SDavid van Moolenbroek      esac
292*00b67f09SDavid van Moolenbroek
293*00b67f09SDavid van Moolenbroek      case "$user_target" in
294*00b67f09SDavid van Moolenbroek      next)
295*00b67f09SDavid van Moolenbroek	# The next one is the -o target name
296*00b67f09SDavid van Moolenbroek	user_target=yes
297*00b67f09SDavid van Moolenbroek	continue
298*00b67f09SDavid van Moolenbroek	;;
299*00b67f09SDavid van Moolenbroek      yes)
300*00b67f09SDavid van Moolenbroek	# We got the output file
301*00b67f09SDavid van Moolenbroek	user_target=set
302*00b67f09SDavid van Moolenbroek	libobj="$arg"
303*00b67f09SDavid van Moolenbroek	continue
304*00b67f09SDavid van Moolenbroek	;;
305*00b67f09SDavid van Moolenbroek      esac
306*00b67f09SDavid van Moolenbroek
307*00b67f09SDavid van Moolenbroek      # Accept the current argument as the source file.
308*00b67f09SDavid van Moolenbroek      lastarg="$srcfile"
309*00b67f09SDavid van Moolenbroek      srcfile="$arg"
310*00b67f09SDavid van Moolenbroek
311*00b67f09SDavid van Moolenbroek      # Aesthetically quote the previous argument.
312*00b67f09SDavid van Moolenbroek
313*00b67f09SDavid van Moolenbroek      # Backslashify any backslashes, double quotes, and dollar signs.
314*00b67f09SDavid van Moolenbroek      # These are the only characters that are still specially
315*00b67f09SDavid van Moolenbroek      # interpreted inside of double-quoted scrings.
316*00b67f09SDavid van Moolenbroek      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
317*00b67f09SDavid van Moolenbroek
318*00b67f09SDavid van Moolenbroek      # Double-quote args containing other shell metacharacters.
319*00b67f09SDavid van Moolenbroek      # Many Bourne shells cannot handle close brackets correctly in scan
320*00b67f09SDavid van Moolenbroek      # sets, so we specify it separately.
321*00b67f09SDavid van Moolenbroek      case "$lastarg" in
322*00b67f09SDavid van Moolenbroek      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
323*00b67f09SDavid van Moolenbroek	lastarg="\"$lastarg\""
324*00b67f09SDavid van Moolenbroek	;;
325*00b67f09SDavid van Moolenbroek      esac
326*00b67f09SDavid van Moolenbroek
327*00b67f09SDavid van Moolenbroek      # Add the previous argument to base_compile.
328*00b67f09SDavid van Moolenbroek      if test -z "$base_compile"; then
329*00b67f09SDavid van Moolenbroek	base_compile="$lastarg"
330*00b67f09SDavid van Moolenbroek      else
331*00b67f09SDavid van Moolenbroek	base_compile="$base_compile $lastarg"
332*00b67f09SDavid van Moolenbroek      fi
333*00b67f09SDavid van Moolenbroek    done
334*00b67f09SDavid van Moolenbroek
335*00b67f09SDavid van Moolenbroek    case "$user_target" in
336*00b67f09SDavid van Moolenbroek    set)
337*00b67f09SDavid van Moolenbroek      ;;
338*00b67f09SDavid van Moolenbroek    no)
339*00b67f09SDavid van Moolenbroek      # Get the name of the library object.
340*00b67f09SDavid van Moolenbroek      libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
341*00b67f09SDavid van Moolenbroek      ;;
342*00b67f09SDavid van Moolenbroek    *)
343*00b67f09SDavid van Moolenbroek      $echo "$modename: you must specify a target with \`-o'" 1>&2
344*00b67f09SDavid van Moolenbroek      exit 1
345*00b67f09SDavid van Moolenbroek      ;;
346*00b67f09SDavid van Moolenbroek    esac
347*00b67f09SDavid van Moolenbroek
348*00b67f09SDavid van Moolenbroek    # Recognize several different file suffixes.
349*00b67f09SDavid van Moolenbroek    # If the user specifies -o file.o, it is replaced with file.lo
350*00b67f09SDavid van Moolenbroek    xform='[cCFSfmso]'
351*00b67f09SDavid van Moolenbroek    case "$libobj" in
352*00b67f09SDavid van Moolenbroek    *.ada) xform=ada ;;
353*00b67f09SDavid van Moolenbroek    *.adb) xform=adb ;;
354*00b67f09SDavid van Moolenbroek    *.ads) xform=ads ;;
355*00b67f09SDavid van Moolenbroek    *.asm) xform=asm ;;
356*00b67f09SDavid van Moolenbroek    *.c++) xform=c++ ;;
357*00b67f09SDavid van Moolenbroek    *.cc) xform=cc ;;
358*00b67f09SDavid van Moolenbroek    *.cpp) xform=cpp ;;
359*00b67f09SDavid van Moolenbroek    *.cxx) xform=cxx ;;
360*00b67f09SDavid van Moolenbroek    *.f90) xform=f90 ;;
361*00b67f09SDavid van Moolenbroek    *.for) xform=for ;;
362*00b67f09SDavid van Moolenbroek    esac
363*00b67f09SDavid van Moolenbroek
364*00b67f09SDavid van Moolenbroek    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
365*00b67f09SDavid van Moolenbroek
366*00b67f09SDavid van Moolenbroek    case "$libobj" in
367*00b67f09SDavid van Moolenbroek    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
368*00b67f09SDavid van Moolenbroek    *)
369*00b67f09SDavid van Moolenbroek      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
370*00b67f09SDavid van Moolenbroek      exit 1
371*00b67f09SDavid van Moolenbroek      ;;
372*00b67f09SDavid van Moolenbroek    esac
373*00b67f09SDavid van Moolenbroek
374*00b67f09SDavid van Moolenbroek    if test -z "$base_compile"; then
375*00b67f09SDavid van Moolenbroek      $echo "$modename: you must specify a compilation command" 1>&2
376*00b67f09SDavid van Moolenbroek      $echo "$help" 1>&2
377*00b67f09SDavid van Moolenbroek      exit 1
378*00b67f09SDavid van Moolenbroek    fi
379*00b67f09SDavid van Moolenbroek
380*00b67f09SDavid van Moolenbroek    # Delete any leftover library objects.
381*00b67f09SDavid van Moolenbroek    if test "$build_old_libs" = yes; then
382*00b67f09SDavid van Moolenbroek      removelist="$obj $libobj"
383*00b67f09SDavid van Moolenbroek    else
384*00b67f09SDavid van Moolenbroek      removelist="$libobj"
385*00b67f09SDavid van Moolenbroek    fi
386*00b67f09SDavid van Moolenbroek
387*00b67f09SDavid van Moolenbroek    $run $rm $removelist
388*00b67f09SDavid van Moolenbroek    trap "$run $rm $removelist; exit 1" 1 2 15
389*00b67f09SDavid van Moolenbroek
390*00b67f09SDavid van Moolenbroek    # Calculate the filename of the output object if compiler does
391*00b67f09SDavid van Moolenbroek    # not support -o with -c
392*00b67f09SDavid van Moolenbroek    if test "$compiler_c_o" = no; then
393*00b67f09SDavid van Moolenbroek      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext}
394*00b67f09SDavid van Moolenbroek      lockfile="$output_obj.lock"
395*00b67f09SDavid van Moolenbroek      removelist="$removelist $output_obj $lockfile"
396*00b67f09SDavid van Moolenbroek      trap "$run $rm $removelist; exit 1" 1 2 15
397*00b67f09SDavid van Moolenbroek    else
398*00b67f09SDavid van Moolenbroek      need_locks=no
399*00b67f09SDavid van Moolenbroek      lockfile=
400*00b67f09SDavid van Moolenbroek    fi
401*00b67f09SDavid van Moolenbroek
402*00b67f09SDavid van Moolenbroek    # Lock this critical section if it is needed
403*00b67f09SDavid van Moolenbroek    # We use this script file to make the link, it avoids creating a new file
404*00b67f09SDavid van Moolenbroek    if test "$need_locks" = yes; then
405*00b67f09SDavid van Moolenbroek      until ln "$0" "$lockfile" 2>/dev/null; do
406*00b67f09SDavid van Moolenbroek	$show "Waiting for $lockfile to be removed"
407*00b67f09SDavid van Moolenbroek	sleep 2
408*00b67f09SDavid van Moolenbroek      done
409*00b67f09SDavid van Moolenbroek    elif test "$need_locks" = warn; then
410*00b67f09SDavid van Moolenbroek      if test -f "$lockfile"; then
411*00b67f09SDavid van Moolenbroek	echo "\
412*00b67f09SDavid van Moolenbroek*** ERROR, $lockfile exists and contains:
413*00b67f09SDavid van Moolenbroek`cat $lockfile 2>/dev/null`
414*00b67f09SDavid van Moolenbroek
415*00b67f09SDavid van MoolenbroekThis indicates that another process is trying to use the same
416*00b67f09SDavid van Moolenbroektemporary object file, and libtool could not work around it because
417*00b67f09SDavid van Moolenbroekyour compiler does not support \`-c' and \`-o' together.  If you
418*00b67f09SDavid van Moolenbroekrepeat this compilation, it may succeed, by chance, but you had better
419*00b67f09SDavid van Moolenbroekavoid parallel builds (make -j) in this platform, or get a better
420*00b67f09SDavid van Moolenbroekcompiler."
421*00b67f09SDavid van Moolenbroek
422*00b67f09SDavid van Moolenbroek	$run $rm $removelist
423*00b67f09SDavid van Moolenbroek	exit 1
424*00b67f09SDavid van Moolenbroek      fi
425*00b67f09SDavid van Moolenbroek      echo $srcfile > "$lockfile"
426*00b67f09SDavid van Moolenbroek    fi
427*00b67f09SDavid van Moolenbroek
428*00b67f09SDavid van Moolenbroek    if test -n "$fix_srcfile_path"; then
429*00b67f09SDavid van Moolenbroek      eval srcfile=\"$fix_srcfile_path\"
430*00b67f09SDavid van Moolenbroek    fi
431*00b67f09SDavid van Moolenbroek
432*00b67f09SDavid van Moolenbroek    # Only build a PIC object if we are building libtool libraries.
433*00b67f09SDavid van Moolenbroek    if test "$build_libtool_libs" = yes; then
434*00b67f09SDavid van Moolenbroek      # Without this assignment, base_compile gets emptied.
435*00b67f09SDavid van Moolenbroek      fbsd_hideous_sh_bug=$base_compile
436*00b67f09SDavid van Moolenbroek
437*00b67f09SDavid van Moolenbroek      # All platforms use -DPIC, to notify preprocessed assembler code.
438*00b67f09SDavid van Moolenbroek      command="$base_compile $srcfile $pic_flag -DPIC"
439*00b67f09SDavid van Moolenbroek      if test "$build_old_libs" = yes; then
440*00b67f09SDavid van Moolenbroek	lo_libobj="$libobj"
441*00b67f09SDavid van Moolenbroek	dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
442*00b67f09SDavid van Moolenbroek	if test "X$dir" = "X$libobj"; then
443*00b67f09SDavid van Moolenbroek	  dir="$objdir"
444*00b67f09SDavid van Moolenbroek	else
445*00b67f09SDavid van Moolenbroek	  dir="$dir/$objdir"
446*00b67f09SDavid van Moolenbroek	fi
447*00b67f09SDavid van Moolenbroek	libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
448*00b67f09SDavid van Moolenbroek
449*00b67f09SDavid van Moolenbroek	if test -d "$dir"; then
450*00b67f09SDavid van Moolenbroek	  $show "$rm $libobj"
451*00b67f09SDavid van Moolenbroek	  $run $rm $libobj
452*00b67f09SDavid van Moolenbroek	else
453*00b67f09SDavid van Moolenbroek	  $show "$mkdir $dir"
454*00b67f09SDavid van Moolenbroek	  $run $mkdir $dir
455*00b67f09SDavid van Moolenbroek	  status=$?
456*00b67f09SDavid van Moolenbroek	  if test $status -ne 0 && test ! -d $dir; then
457*00b67f09SDavid van Moolenbroek	    exit $status
458*00b67f09SDavid van Moolenbroek	  fi
459*00b67f09SDavid van Moolenbroek	fi
460*00b67f09SDavid van Moolenbroek      fi
461*00b67f09SDavid van Moolenbroek      if test "$compiler_o_lo" = yes; then
462*00b67f09SDavid van Moolenbroek	output_obj="$libobj"
463*00b67f09SDavid van Moolenbroek	command="$command -o $output_obj"
464*00b67f09SDavid van Moolenbroek      elif test "$compiler_c_o" = yes; then
465*00b67f09SDavid van Moolenbroek	output_obj="$obj"
466*00b67f09SDavid van Moolenbroek	command="$command -o $output_obj"
467*00b67f09SDavid van Moolenbroek      fi
468*00b67f09SDavid van Moolenbroek
469*00b67f09SDavid van Moolenbroek      $run $rm "$output_obj"
470*00b67f09SDavid van Moolenbroek      $show "$command"
471*00b67f09SDavid van Moolenbroek      if $run eval "$command"; then :
472*00b67f09SDavid van Moolenbroek      else
473*00b67f09SDavid van Moolenbroek	test -n "$output_obj" && $run $rm $removelist
474*00b67f09SDavid van Moolenbroek	exit 1
475*00b67f09SDavid van Moolenbroek      fi
476*00b67f09SDavid van Moolenbroek
477*00b67f09SDavid van Moolenbroek      if test "$need_locks" = warn &&
478*00b67f09SDavid van Moolenbroek	 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
479*00b67f09SDavid van Moolenbroek	echo "\
480*00b67f09SDavid van Moolenbroek*** ERROR, $lockfile contains:
481*00b67f09SDavid van Moolenbroek`cat $lockfile 2>/dev/null`
482*00b67f09SDavid van Moolenbroek
483*00b67f09SDavid van Moolenbroekbut it should contain:
484*00b67f09SDavid van Moolenbroek$srcfile
485*00b67f09SDavid van Moolenbroek
486*00b67f09SDavid van MoolenbroekThis indicates that another process is trying to use the same
487*00b67f09SDavid van Moolenbroektemporary object file, and libtool could not work around it because
488*00b67f09SDavid van Moolenbroekyour compiler does not support \`-c' and \`-o' together.  If you
489*00b67f09SDavid van Moolenbroekrepeat this compilation, it may succeed, by chance, but you had better
490*00b67f09SDavid van Moolenbroekavoid parallel builds (make -j) in this platform, or get a better
491*00b67f09SDavid van Moolenbroekcompiler."
492*00b67f09SDavid van Moolenbroek
493*00b67f09SDavid van Moolenbroek	$run $rm $removelist
494*00b67f09SDavid van Moolenbroek	exit 1
495*00b67f09SDavid van Moolenbroek      fi
496*00b67f09SDavid van Moolenbroek
497*00b67f09SDavid van Moolenbroek      # Just move the object if needed, then go on to compile the next one
498*00b67f09SDavid van Moolenbroek      if test x"$output_obj" != x"$libobj"; then
499*00b67f09SDavid van Moolenbroek	$show "$mv $output_obj $libobj"
500*00b67f09SDavid van Moolenbroek	if $run $mv $output_obj $libobj; then :
501*00b67f09SDavid van Moolenbroek	else
502*00b67f09SDavid van Moolenbroek	  error=$?
503*00b67f09SDavid van Moolenbroek	  $run $rm $removelist
504*00b67f09SDavid van Moolenbroek	  exit $error
505*00b67f09SDavid van Moolenbroek	fi
506*00b67f09SDavid van Moolenbroek      fi
507*00b67f09SDavid van Moolenbroek
508*00b67f09SDavid van Moolenbroek      # If we have no pic_flag, then copy the object into place and finish.
509*00b67f09SDavid van Moolenbroek      if test -z "$pic_flag" && test "$build_old_libs" = yes; then
510*00b67f09SDavid van Moolenbroek	# Rename the .lo from within objdir to obj
511*00b67f09SDavid van Moolenbroek	if test -f $obj; then
512*00b67f09SDavid van Moolenbroek	  $show $rm $obj
513*00b67f09SDavid van Moolenbroek	  $run $rm $obj
514*00b67f09SDavid van Moolenbroek	fi
515*00b67f09SDavid van Moolenbroek
516*00b67f09SDavid van Moolenbroek	$show "$mv $libobj $obj"
517*00b67f09SDavid van Moolenbroek	if $run $mv $libobj $obj; then :
518*00b67f09SDavid van Moolenbroek	else
519*00b67f09SDavid van Moolenbroek	  error=$?
520*00b67f09SDavid van Moolenbroek	  $run $rm $removelist
521*00b67f09SDavid van Moolenbroek	  exit $error
522*00b67f09SDavid van Moolenbroek	fi
523*00b67f09SDavid van Moolenbroek
524*00b67f09SDavid van Moolenbroek	xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
525*00b67f09SDavid van Moolenbroek	if test "X$xdir" = "X$obj"; then
526*00b67f09SDavid van Moolenbroek	  xdir="."
527*00b67f09SDavid van Moolenbroek	else
528*00b67f09SDavid van Moolenbroek	  xdir="$xdir"
529*00b67f09SDavid van Moolenbroek	fi
530*00b67f09SDavid van Moolenbroek	baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"`
531*00b67f09SDavid van Moolenbroek	libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
532*00b67f09SDavid van Moolenbroek	# Now arrange that obj and lo_libobj become the same file
533*00b67f09SDavid van Moolenbroek	$show "(cd $xdir && $LN_S $baseobj $libobj)"
534*00b67f09SDavid van Moolenbroek	if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then
535*00b67f09SDavid van Moolenbroek	  exit 0
536*00b67f09SDavid van Moolenbroek	else
537*00b67f09SDavid van Moolenbroek	  error=$?
538*00b67f09SDavid van Moolenbroek	  $run $rm $removelist
539*00b67f09SDavid van Moolenbroek	  exit $error
540*00b67f09SDavid van Moolenbroek	fi
541*00b67f09SDavid van Moolenbroek      fi
542*00b67f09SDavid van Moolenbroek
543*00b67f09SDavid van Moolenbroek      # Allow error messages only from the first compilation.
544*00b67f09SDavid van Moolenbroek      suppress_output=' >/dev/null 2>&1'
545*00b67f09SDavid van Moolenbroek    fi
546*00b67f09SDavid van Moolenbroek
547*00b67f09SDavid van Moolenbroek    # Only build a position-dependent object if we build old libraries.
548*00b67f09SDavid van Moolenbroek    if test "$build_old_libs" = yes; then
549*00b67f09SDavid van Moolenbroek      command="$base_compile $srcfile"
550*00b67f09SDavid van Moolenbroek      if test "$compiler_c_o" = yes; then
551*00b67f09SDavid van Moolenbroek	command="$command -o $obj"
552*00b67f09SDavid van Moolenbroek	output_obj="$obj"
553*00b67f09SDavid van Moolenbroek      fi
554*00b67f09SDavid van Moolenbroek
555*00b67f09SDavid van Moolenbroek      # Suppress compiler output if we already did a PIC compilation.
556*00b67f09SDavid van Moolenbroek      command="$command$suppress_output"
557*00b67f09SDavid van Moolenbroek      $run $rm "$output_obj"
558*00b67f09SDavid van Moolenbroek      $show "$command"
559*00b67f09SDavid van Moolenbroek      if $run eval "$command"; then :
560*00b67f09SDavid van Moolenbroek      else
561*00b67f09SDavid van Moolenbroek	$run $rm $removelist
562*00b67f09SDavid van Moolenbroek	exit 1
563*00b67f09SDavid van Moolenbroek      fi
564*00b67f09SDavid van Moolenbroek
565*00b67f09SDavid van Moolenbroek      if test "$need_locks" = warn &&
566*00b67f09SDavid van Moolenbroek	 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
567*00b67f09SDavid van Moolenbroek	echo "\
568*00b67f09SDavid van Moolenbroek*** ERROR, $lockfile contains:
569*00b67f09SDavid van Moolenbroek`cat $lockfile 2>/dev/null`
570*00b67f09SDavid van Moolenbroek
571*00b67f09SDavid van Moolenbroekbut it should contain:
572*00b67f09SDavid van Moolenbroek$srcfile
573*00b67f09SDavid van Moolenbroek
574*00b67f09SDavid van MoolenbroekThis indicates that another process is trying to use the same
575*00b67f09SDavid van Moolenbroektemporary object file, and libtool could not work around it because
576*00b67f09SDavid van Moolenbroekyour compiler does not support \`-c' and \`-o' together.  If you
577*00b67f09SDavid van Moolenbroekrepeat this compilation, it may succeed, by chance, but you had better
578*00b67f09SDavid van Moolenbroekavoid parallel builds (make -j) in this platform, or get a better
579*00b67f09SDavid van Moolenbroekcompiler."
580*00b67f09SDavid van Moolenbroek
581*00b67f09SDavid van Moolenbroek	$run $rm $removelist
582*00b67f09SDavid van Moolenbroek	exit 1
583*00b67f09SDavid van Moolenbroek      fi
584*00b67f09SDavid van Moolenbroek
585*00b67f09SDavid van Moolenbroek      # Just move the object if needed
586*00b67f09SDavid van Moolenbroek      if test x"$output_obj" != x"$obj"; then
587*00b67f09SDavid van Moolenbroek	$show "$mv $output_obj $obj"
588*00b67f09SDavid van Moolenbroek	if $run $mv $output_obj $obj; then :
589*00b67f09SDavid van Moolenbroek	else
590*00b67f09SDavid van Moolenbroek	  error=$?
591*00b67f09SDavid van Moolenbroek	  $run $rm $removelist
592*00b67f09SDavid van Moolenbroek	  exit $error
593*00b67f09SDavid van Moolenbroek	fi
594*00b67f09SDavid van Moolenbroek      fi
595*00b67f09SDavid van Moolenbroek
596*00b67f09SDavid van Moolenbroek      # Create an invalid libtool object if no PIC, so that we do not
597*00b67f09SDavid van Moolenbroek      # accidentally link it into a program.
598*00b67f09SDavid van Moolenbroek      if test "$build_libtool_libs" != yes; then
599*00b67f09SDavid van Moolenbroek	$show "echo timestamp > $libobj"
600*00b67f09SDavid van Moolenbroek	$run eval "echo timestamp > \$libobj" || exit $?
601*00b67f09SDavid van Moolenbroek      else
602*00b67f09SDavid van Moolenbroek	# Move the .lo from within objdir
603*00b67f09SDavid van Moolenbroek	$show "$mv $libobj $lo_libobj"
604*00b67f09SDavid van Moolenbroek	if $run $mv $libobj $lo_libobj; then :
605*00b67f09SDavid van Moolenbroek	else
606*00b67f09SDavid van Moolenbroek	  error=$?
607*00b67f09SDavid van Moolenbroek	  $run $rm $removelist
608*00b67f09SDavid van Moolenbroek	  exit $error
609*00b67f09SDavid van Moolenbroek	fi
610*00b67f09SDavid van Moolenbroek      fi
611*00b67f09SDavid van Moolenbroek    fi
612*00b67f09SDavid van Moolenbroek
613*00b67f09SDavid van Moolenbroek    # Unlock the critical section if it was locked
614*00b67f09SDavid van Moolenbroek    if test "$need_locks" != no; then
615*00b67f09SDavid van Moolenbroek      $rm "$lockfile"
616*00b67f09SDavid van Moolenbroek    fi
617*00b67f09SDavid van Moolenbroek
618*00b67f09SDavid van Moolenbroek    exit 0
619*00b67f09SDavid van Moolenbroek    ;;
620*00b67f09SDavid van Moolenbroek
621*00b67f09SDavid van Moolenbroek  # libtool link mode
622*00b67f09SDavid van Moolenbroek  link)
623*00b67f09SDavid van Moolenbroek    modename="$modename: link"
624*00b67f09SDavid van Moolenbroek    case "$host" in
625*00b67f09SDavid van Moolenbroek    *-*-cygwin* | *-*-mingw* | *-*-os2*)
626*00b67f09SDavid van Moolenbroek      # It is impossible to link a dll without this setting, and
627*00b67f09SDavid van Moolenbroek      # we shouldn't force the makefile maintainer to figure out
628*00b67f09SDavid van Moolenbroek      # which system we are compiling for in order to pass an extra
629*00b67f09SDavid van Moolenbroek      # flag for every libtool invokation.
630*00b67f09SDavid van Moolenbroek      # allow_undefined=no
631*00b67f09SDavid van Moolenbroek
632*00b67f09SDavid van Moolenbroek      # FIXME: Unfortunately, there are problems with the above when trying
633*00b67f09SDavid van Moolenbroek      # to make a dll which has undefined symbols, in which case not
634*00b67f09SDavid van Moolenbroek      # even a static library is built.  For now, we need to specify
635*00b67f09SDavid van Moolenbroek      # -no-undefined on the libtool link line when we can be certain
636*00b67f09SDavid van Moolenbroek      # that all symbols are satisfied, otherwise we get a static library.
637*00b67f09SDavid van Moolenbroek      allow_undefined=yes
638*00b67f09SDavid van Moolenbroek
639*00b67f09SDavid van Moolenbroek      # This is a source program that is used to create dlls on Windows
640*00b67f09SDavid van Moolenbroek      # Don't remove nor modify the starting and closing comments
641*00b67f09SDavid van Moolenbroek# /* ltdll.c starts here */
642*00b67f09SDavid van Moolenbroek# #define WIN32_LEAN_AND_MEAN
643*00b67f09SDavid van Moolenbroek# #include <windows.h>
644*00b67f09SDavid van Moolenbroek# #undef WIN32_LEAN_AND_MEAN
645*00b67f09SDavid van Moolenbroek# #include <stdio.h>
646*00b67f09SDavid van Moolenbroek#
647*00b67f09SDavid van Moolenbroek# #ifndef __CYGWIN__
648*00b67f09SDavid van Moolenbroek# #  ifdef __CYGWIN32__
649*00b67f09SDavid van Moolenbroek# #    define __CYGWIN__ __CYGWIN32__
650*00b67f09SDavid van Moolenbroek# #  endif
651*00b67f09SDavid van Moolenbroek# #endif
652*00b67f09SDavid van Moolenbroek#
653*00b67f09SDavid van Moolenbroek# #ifdef __cplusplus
654*00b67f09SDavid van Moolenbroek# extern "C" {
655*00b67f09SDavid van Moolenbroek# #endif
656*00b67f09SDavid van Moolenbroek# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
657*00b67f09SDavid van Moolenbroek# #ifdef __cplusplus
658*00b67f09SDavid van Moolenbroek# }
659*00b67f09SDavid van Moolenbroek# #endif
660*00b67f09SDavid van Moolenbroek#
661*00b67f09SDavid van Moolenbroek# #ifdef __CYGWIN__
662*00b67f09SDavid van Moolenbroek# #include <cygwin/cygwin_dll.h>
663*00b67f09SDavid van Moolenbroek# DECLARE_CYGWIN_DLL( DllMain );
664*00b67f09SDavid van Moolenbroek# #endif
665*00b67f09SDavid van Moolenbroek# HINSTANCE __hDllInstance_base;
666*00b67f09SDavid van Moolenbroek#
667*00b67f09SDavid van Moolenbroek# BOOL APIENTRY
668*00b67f09SDavid van Moolenbroek# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
669*00b67f09SDavid van Moolenbroek# {
670*00b67f09SDavid van Moolenbroek#   __hDllInstance_base = hInst;
671*00b67f09SDavid van Moolenbroek#   return TRUE;
672*00b67f09SDavid van Moolenbroek# }
673*00b67f09SDavid van Moolenbroek# /* ltdll.c ends here */
674*00b67f09SDavid van Moolenbroek      # This is a source program that is used to create import libraries
675*00b67f09SDavid van Moolenbroek      # on Windows for dlls which lack them. Don't remove nor modify the
676*00b67f09SDavid van Moolenbroek      # starting and closing comments
677*00b67f09SDavid van Moolenbroek# /* impgen.c starts here */
678*00b67f09SDavid van Moolenbroek# /*   Copyright (C) 1999 Free Software Foundation, Inc.
679*00b67f09SDavid van Moolenbroek#
680*00b67f09SDavid van Moolenbroek#  This file is part of GNU libtool.
681*00b67f09SDavid van Moolenbroek#
682*00b67f09SDavid van Moolenbroek#  This program is free software; you can redistribute it and/or modify
683*00b67f09SDavid van Moolenbroek#  it under the terms of the GNU General Public License as published by
684*00b67f09SDavid van Moolenbroek#  the Free Software Foundation; either version 2 of the License, or
685*00b67f09SDavid van Moolenbroek#  (at your option) any later version.
686*00b67f09SDavid van Moolenbroek#
687*00b67f09SDavid van Moolenbroek#  This program is distributed in the hope that it will be useful,
688*00b67f09SDavid van Moolenbroek#  but WITHOUT ANY WARRANTY; without even the implied warranty of
689*00b67f09SDavid van Moolenbroek#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
690*00b67f09SDavid van Moolenbroek#  GNU General Public License for more details.
691*00b67f09SDavid van Moolenbroek#
692*00b67f09SDavid van Moolenbroek#  You should have received a copy of the GNU General Public License
693*00b67f09SDavid van Moolenbroek#  along with this program; if not, write to the Free Software
694*00b67f09SDavid van Moolenbroek#  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
695*00b67f09SDavid van Moolenbroek#  */
696*00b67f09SDavid van Moolenbroek#
697*00b67f09SDavid van Moolenbroek#  #include <stdio.h>		/* for printf() */
698*00b67f09SDavid van Moolenbroek#  #include <unistd.h>		/* for open(), lseek(), read() */
699*00b67f09SDavid van Moolenbroek#  #include <fcntl.h>		/* for O_RDONLY, O_BINARY */
700*00b67f09SDavid van Moolenbroek#  #include <string.h>		/* for strdup() */
701*00b67f09SDavid van Moolenbroek#
702*00b67f09SDavid van Moolenbroek#  static unsigned int
703*00b67f09SDavid van Moolenbroek#  pe_get16 (fd, offset)
704*00b67f09SDavid van Moolenbroek#       int fd;
705*00b67f09SDavid van Moolenbroek#       int offset;
706*00b67f09SDavid van Moolenbroek#  {
707*00b67f09SDavid van Moolenbroek#    unsigned char b[2];
708*00b67f09SDavid van Moolenbroek#    lseek (fd, offset, SEEK_SET);
709*00b67f09SDavid van Moolenbroek#    read (fd, b, 2);
710*00b67f09SDavid van Moolenbroek#    return b[0] + (b[1]<<8);
711*00b67f09SDavid van Moolenbroek#  }
712*00b67f09SDavid van Moolenbroek#
713*00b67f09SDavid van Moolenbroek#  static unsigned int
714*00b67f09SDavid van Moolenbroek#  pe_get32 (fd, offset)
715*00b67f09SDavid van Moolenbroek#      int fd;
716*00b67f09SDavid van Moolenbroek#      int offset;
717*00b67f09SDavid van Moolenbroek#  {
718*00b67f09SDavid van Moolenbroek#    unsigned char b[4];
719*00b67f09SDavid van Moolenbroek#    lseek (fd, offset, SEEK_SET);
720*00b67f09SDavid van Moolenbroek#    read (fd, b, 4);
721*00b67f09SDavid van Moolenbroek#    return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
722*00b67f09SDavid van Moolenbroek#  }
723*00b67f09SDavid van Moolenbroek#
724*00b67f09SDavid van Moolenbroek#  static unsigned int
725*00b67f09SDavid van Moolenbroek#  pe_as32 (ptr)
726*00b67f09SDavid van Moolenbroek#       void *ptr;
727*00b67f09SDavid van Moolenbroek#  {
728*00b67f09SDavid van Moolenbroek#    unsigned char *b = ptr;
729*00b67f09SDavid van Moolenbroek#    return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
730*00b67f09SDavid van Moolenbroek#  }
731*00b67f09SDavid van Moolenbroek#
732*00b67f09SDavid van Moolenbroek#  int
733*00b67f09SDavid van Moolenbroek#  main (argc, argv)
734*00b67f09SDavid van Moolenbroek#      int argc;
735*00b67f09SDavid van Moolenbroek#      char *argv[];
736*00b67f09SDavid van Moolenbroek#  {
737*00b67f09SDavid van Moolenbroek#      int dll;
738*00b67f09SDavid van Moolenbroek#      unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
739*00b67f09SDavid van Moolenbroek#      unsigned long export_rva, export_size, nsections, secptr, expptr;
740*00b67f09SDavid van Moolenbroek#      unsigned long name_rvas, nexp;
741*00b67f09SDavid van Moolenbroek#      unsigned char *expdata, *erva;
742*00b67f09SDavid van Moolenbroek#      char *filename, *dll_name;
743*00b67f09SDavid van Moolenbroek#
744*00b67f09SDavid van Moolenbroek#      filename = argv[1];
745*00b67f09SDavid van Moolenbroek#
746*00b67f09SDavid van Moolenbroek#      dll = open(filename, O_RDONLY|O_BINARY);
747*00b67f09SDavid van Moolenbroek#      if (!dll)
748*00b67f09SDavid van Moolenbroek#  	return 1;
749*00b67f09SDavid van Moolenbroek#
750*00b67f09SDavid van Moolenbroek#      dll_name = filename;
751*00b67f09SDavid van Moolenbroek#
752*00b67f09SDavid van Moolenbroek#      for (i=0; filename[i]; i++)
753*00b67f09SDavid van Moolenbroek#  	if (filename[i] == '/' || filename[i] == '\\'  || filename[i] == ':')
754*00b67f09SDavid van Moolenbroek#  	    dll_name = filename + i +1;
755*00b67f09SDavid van Moolenbroek#
756*00b67f09SDavid van Moolenbroek#      pe_header_offset = pe_get32 (dll, 0x3c);
757*00b67f09SDavid van Moolenbroek#      opthdr_ofs = pe_header_offset + 4 + 20;
758*00b67f09SDavid van Moolenbroek#      num_entries = pe_get32 (dll, opthdr_ofs + 92);
759*00b67f09SDavid van Moolenbroek#
760*00b67f09SDavid van Moolenbroek#      if (num_entries < 1) /* no exports */
761*00b67f09SDavid van Moolenbroek#  	return 1;
762*00b67f09SDavid van Moolenbroek#
763*00b67f09SDavid van Moolenbroek#      export_rva = pe_get32 (dll, opthdr_ofs + 96);
764*00b67f09SDavid van Moolenbroek#      export_size = pe_get32 (dll, opthdr_ofs + 100);
765*00b67f09SDavid van Moolenbroek#      nsections = pe_get16 (dll, pe_header_offset + 4 +2);
766*00b67f09SDavid van Moolenbroek#      secptr = (pe_header_offset + 4 + 20 +
767*00b67f09SDavid van Moolenbroek#  	      pe_get16 (dll, pe_header_offset + 4 + 16));
768*00b67f09SDavid van Moolenbroek#
769*00b67f09SDavid van Moolenbroek#      expptr = 0;
770*00b67f09SDavid van Moolenbroek#      for (i = 0; i < nsections; i++)
771*00b67f09SDavid van Moolenbroek#      {
772*00b67f09SDavid van Moolenbroek#  	char sname[8];
773*00b67f09SDavid van Moolenbroek#  	unsigned long secptr1 = secptr + 40 * i;
774*00b67f09SDavid van Moolenbroek#  	unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
775*00b67f09SDavid van Moolenbroek#  	unsigned long vsize = pe_get32 (dll, secptr1 + 16);
776*00b67f09SDavid van Moolenbroek#  	unsigned long fptr = pe_get32 (dll, secptr1 + 20);
777*00b67f09SDavid van Moolenbroek#  	lseek(dll, secptr1, SEEK_SET);
778*00b67f09SDavid van Moolenbroek#  	read(dll, sname, 8);
779*00b67f09SDavid van Moolenbroek#  	if (vaddr <= export_rva && vaddr+vsize > export_rva)
780*00b67f09SDavid van Moolenbroek#  	{
781*00b67f09SDavid van Moolenbroek#  	    expptr = fptr + (export_rva - vaddr);
782*00b67f09SDavid van Moolenbroek#  	    if (export_rva + export_size > vaddr + vsize)
783*00b67f09SDavid van Moolenbroek#  		export_size = vsize - (export_rva - vaddr);
784*00b67f09SDavid van Moolenbroek#  	    break;
785*00b67f09SDavid van Moolenbroek#  	}
786*00b67f09SDavid van Moolenbroek#      }
787*00b67f09SDavid van Moolenbroek#
788*00b67f09SDavid van Moolenbroek#      expdata = (unsigned char*)malloc(export_size);
789*00b67f09SDavid van Moolenbroek#      lseek (dll, expptr, SEEK_SET);
790*00b67f09SDavid van Moolenbroek#      read (dll, expdata, export_size);
791*00b67f09SDavid van Moolenbroek#      erva = expdata - export_rva;
792*00b67f09SDavid van Moolenbroek#
793*00b67f09SDavid van Moolenbroek#      nexp = pe_as32 (expdata+24);
794*00b67f09SDavid van Moolenbroek#      name_rvas = pe_as32 (expdata+32);
795*00b67f09SDavid van Moolenbroek#
796*00b67f09SDavid van Moolenbroek#      printf ("EXPORTS\n");
797*00b67f09SDavid van Moolenbroek#      for (i = 0; i<nexp; i++)
798*00b67f09SDavid van Moolenbroek#      {
799*00b67f09SDavid van Moolenbroek#  	unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
800*00b67f09SDavid van Moolenbroek#  	printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
801*00b67f09SDavid van Moolenbroek#      }
802*00b67f09SDavid van Moolenbroek#
803*00b67f09SDavid van Moolenbroek#      return 0;
804*00b67f09SDavid van Moolenbroek#  }
805*00b67f09SDavid van Moolenbroek# /* impgen.c ends here */
806*00b67f09SDavid van Moolenbroek      ;;
807*00b67f09SDavid van Moolenbroek    *)
808*00b67f09SDavid van Moolenbroek      allow_undefined=yes
809*00b67f09SDavid van Moolenbroek      ;;
810*00b67f09SDavid van Moolenbroek    esac
811*00b67f09SDavid van Moolenbroek    compile_command="$nonopt"
812*00b67f09SDavid van Moolenbroek    finalize_command="$nonopt"
813*00b67f09SDavid van Moolenbroek
814*00b67f09SDavid van Moolenbroek    compile_rpath=
815*00b67f09SDavid van Moolenbroek    finalize_rpath=
816*00b67f09SDavid van Moolenbroek    compile_shlibpath=
817*00b67f09SDavid van Moolenbroek    finalize_shlibpath=
818*00b67f09SDavid van Moolenbroek    convenience=
819*00b67f09SDavid van Moolenbroek    old_convenience=
820*00b67f09SDavid van Moolenbroek    deplibs=
821*00b67f09SDavid van Moolenbroek    linkopts=
822*00b67f09SDavid van Moolenbroek
823*00b67f09SDavid van Moolenbroek    if test -n "$shlibpath_var"; then
824*00b67f09SDavid van Moolenbroek      # get the directories listed in $shlibpath_var
825*00b67f09SDavid van Moolenbroek      eval lib_search_path=\`\$echo \"X \${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
826*00b67f09SDavid van Moolenbroek    else
827*00b67f09SDavid van Moolenbroek      lib_search_path=
828*00b67f09SDavid van Moolenbroek    fi
829*00b67f09SDavid van Moolenbroek    # now prepend the system-specific ones
830*00b67f09SDavid van Moolenbroek    eval lib_search_path=\"$sys_lib_search_path_spec\$lib_search_path\"
831*00b67f09SDavid van Moolenbroek    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
832*00b67f09SDavid van Moolenbroek
833*00b67f09SDavid van Moolenbroek    avoid_version=no
834*00b67f09SDavid van Moolenbroek    dlfiles=
835*00b67f09SDavid van Moolenbroek    dlprefiles=
836*00b67f09SDavid van Moolenbroek    dlself=no
837*00b67f09SDavid van Moolenbroek    export_dynamic=no
838*00b67f09SDavid van Moolenbroek    export_symbols=
839*00b67f09SDavid van Moolenbroek    export_symbols_regex=
840*00b67f09SDavid van Moolenbroek    generated=
841*00b67f09SDavid van Moolenbroek    libobjs=
842*00b67f09SDavid van Moolenbroek    link_against_libtool_libs=
843*00b67f09SDavid van Moolenbroek    ltlibs=
844*00b67f09SDavid van Moolenbroek    module=no
845*00b67f09SDavid van Moolenbroek    objs=
846*00b67f09SDavid van Moolenbroek    prefer_static_libs=no
847*00b67f09SDavid van Moolenbroek    preload=no
848*00b67f09SDavid van Moolenbroek    prev=
849*00b67f09SDavid van Moolenbroek    prevarg=
850*00b67f09SDavid van Moolenbroek    release=
851*00b67f09SDavid van Moolenbroek    rpath=
852*00b67f09SDavid van Moolenbroek    xrpath=
853*00b67f09SDavid van Moolenbroek    perm_rpath=
854*00b67f09SDavid van Moolenbroek    temp_rpath=
855*00b67f09SDavid van Moolenbroek    thread_safe=no
856*00b67f09SDavid van Moolenbroek    vinfo=
857*00b67f09SDavid van Moolenbroek
858*00b67f09SDavid van Moolenbroek    # We need to know -static, to get the right output filenames.
859*00b67f09SDavid van Moolenbroek    for arg
860*00b67f09SDavid van Moolenbroek    do
861*00b67f09SDavid van Moolenbroek      case "$arg" in
862*00b67f09SDavid van Moolenbroek      -all-static | -static)
863*00b67f09SDavid van Moolenbroek	if test "X$arg" = "X-all-static"; then
864*00b67f09SDavid van Moolenbroek	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
865*00b67f09SDavid van Moolenbroek	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
866*00b67f09SDavid van Moolenbroek	  fi
867*00b67f09SDavid van Moolenbroek	  if test -n "$link_static_flag"; then
868*00b67f09SDavid van Moolenbroek	    dlopen_self=$dlopen_self_static
869*00b67f09SDavid van Moolenbroek	  fi
870*00b67f09SDavid van Moolenbroek	else
871*00b67f09SDavid van Moolenbroek	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
872*00b67f09SDavid van Moolenbroek	    dlopen_self=$dlopen_self_static
873*00b67f09SDavid van Moolenbroek	  fi
874*00b67f09SDavid van Moolenbroek	fi
875*00b67f09SDavid van Moolenbroek	build_libtool_libs=no
876*00b67f09SDavid van Moolenbroek	build_old_libs=yes
877*00b67f09SDavid van Moolenbroek	prefer_static_libs=yes
878*00b67f09SDavid van Moolenbroek	break
879*00b67f09SDavid van Moolenbroek	;;
880*00b67f09SDavid van Moolenbroek      esac
881*00b67f09SDavid van Moolenbroek    done
882*00b67f09SDavid van Moolenbroek
883*00b67f09SDavid van Moolenbroek    # See if our shared archives depend on static archives.
884*00b67f09SDavid van Moolenbroek    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
885*00b67f09SDavid van Moolenbroek
886*00b67f09SDavid van Moolenbroek    # Go through the arguments, transforming them on the way.
887*00b67f09SDavid van Moolenbroek    while test $# -gt 0; do
888*00b67f09SDavid van Moolenbroek      arg="$1"
889*00b67f09SDavid van Moolenbroek      shift
890*00b67f09SDavid van Moolenbroek
891*00b67f09SDavid van Moolenbroek      # If the previous option needs an argument, assign it.
892*00b67f09SDavid van Moolenbroek      if test -n "$prev"; then
893*00b67f09SDavid van Moolenbroek	case "$prev" in
894*00b67f09SDavid van Moolenbroek	output)
895*00b67f09SDavid van Moolenbroek	  compile_command="$compile_command @OUTPUT@"
896*00b67f09SDavid van Moolenbroek	  finalize_command="$finalize_command @OUTPUT@"
897*00b67f09SDavid van Moolenbroek	  ;;
898*00b67f09SDavid van Moolenbroek	esac
899*00b67f09SDavid van Moolenbroek
900*00b67f09SDavid van Moolenbroek	case "$prev" in
901*00b67f09SDavid van Moolenbroek	dlfiles|dlprefiles)
902*00b67f09SDavid van Moolenbroek	  if test "$preload" = no; then
903*00b67f09SDavid van Moolenbroek	    # Add the symbol object into the linking commands.
904*00b67f09SDavid van Moolenbroek	    compile_command="$compile_command @SYMFILE@"
905*00b67f09SDavid van Moolenbroek	    finalize_command="$finalize_command @SYMFILE@"
906*00b67f09SDavid van Moolenbroek	    preload=yes
907*00b67f09SDavid van Moolenbroek	  fi
908*00b67f09SDavid van Moolenbroek	  case "$arg" in
909*00b67f09SDavid van Moolenbroek	  *.la | *.lo) ;;  # We handle these cases below.
910*00b67f09SDavid van Moolenbroek	  force)
911*00b67f09SDavid van Moolenbroek	    if test "$dlself" = no; then
912*00b67f09SDavid van Moolenbroek	      dlself=needless
913*00b67f09SDavid van Moolenbroek	      export_dynamic=yes
914*00b67f09SDavid van Moolenbroek	    fi
915*00b67f09SDavid van Moolenbroek	    prev=
916*00b67f09SDavid van Moolenbroek	    continue
917*00b67f09SDavid van Moolenbroek	    ;;
918*00b67f09SDavid van Moolenbroek	  self)
919*00b67f09SDavid van Moolenbroek	    if test "$prev" = dlprefiles; then
920*00b67f09SDavid van Moolenbroek	      dlself=yes
921*00b67f09SDavid van Moolenbroek	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
922*00b67f09SDavid van Moolenbroek	      dlself=yes
923*00b67f09SDavid van Moolenbroek	    else
924*00b67f09SDavid van Moolenbroek	      dlself=needless
925*00b67f09SDavid van Moolenbroek	      export_dynamic=yes
926*00b67f09SDavid van Moolenbroek	    fi
927*00b67f09SDavid van Moolenbroek	    prev=
928*00b67f09SDavid van Moolenbroek	    continue
929*00b67f09SDavid van Moolenbroek	    ;;
930*00b67f09SDavid van Moolenbroek	  *)
931*00b67f09SDavid van Moolenbroek	    if test "$prev" = dlfiles; then
932*00b67f09SDavid van Moolenbroek	      dlfiles="$dlfiles $arg"
933*00b67f09SDavid van Moolenbroek	    else
934*00b67f09SDavid van Moolenbroek	      dlprefiles="$dlprefiles $arg"
935*00b67f09SDavid van Moolenbroek	    fi
936*00b67f09SDavid van Moolenbroek	    prev=
937*00b67f09SDavid van Moolenbroek	    ;;
938*00b67f09SDavid van Moolenbroek	  esac
939*00b67f09SDavid van Moolenbroek	  ;;
940*00b67f09SDavid van Moolenbroek	expsyms)
941*00b67f09SDavid van Moolenbroek	  export_symbols="$arg"
942*00b67f09SDavid van Moolenbroek	  if test ! -f "$arg"; then
943*00b67f09SDavid van Moolenbroek	    $echo "$modename: symbol file \`$arg' does not exist"
944*00b67f09SDavid van Moolenbroek	    exit 1
945*00b67f09SDavid van Moolenbroek	  fi
946*00b67f09SDavid van Moolenbroek	  prev=
947*00b67f09SDavid van Moolenbroek	  continue
948*00b67f09SDavid van Moolenbroek	  ;;
949*00b67f09SDavid van Moolenbroek	expsyms_regex)
950*00b67f09SDavid van Moolenbroek	  export_symbols_regex="$arg"
951*00b67f09SDavid van Moolenbroek	  prev=
952*00b67f09SDavid van Moolenbroek	  continue
953*00b67f09SDavid van Moolenbroek	  ;;
954*00b67f09SDavid van Moolenbroek	release)
955*00b67f09SDavid van Moolenbroek	  release="-$arg"
956*00b67f09SDavid van Moolenbroek	  prev=
957*00b67f09SDavid van Moolenbroek	  continue
958*00b67f09SDavid van Moolenbroek	  ;;
959*00b67f09SDavid van Moolenbroek	rpath | xrpath)
960*00b67f09SDavid van Moolenbroek	  # We need an absolute path.
961*00b67f09SDavid van Moolenbroek	  case "$arg" in
962*00b67f09SDavid van Moolenbroek	  [\\/]* | [A-Za-z]:[\\/]*) ;;
963*00b67f09SDavid van Moolenbroek	  *)
964*00b67f09SDavid van Moolenbroek	    $echo "$modename: only absolute run-paths are allowed" 1>&2
965*00b67f09SDavid van Moolenbroek	    exit 1
966*00b67f09SDavid van Moolenbroek	    ;;
967*00b67f09SDavid van Moolenbroek	  esac
968*00b67f09SDavid van Moolenbroek	  if test "$prev" = rpath; then
969*00b67f09SDavid van Moolenbroek	    case "$rpath " in
970*00b67f09SDavid van Moolenbroek	    *" $arg "*) ;;
971*00b67f09SDavid van Moolenbroek	    *) rpath="$rpath $arg" ;;
972*00b67f09SDavid van Moolenbroek	    esac
973*00b67f09SDavid van Moolenbroek	  else
974*00b67f09SDavid van Moolenbroek	    case "$xrpath " in
975*00b67f09SDavid van Moolenbroek	    *" $arg "*) ;;
976*00b67f09SDavid van Moolenbroek	    *) xrpath="$xrpath $arg" ;;
977*00b67f09SDavid van Moolenbroek	    esac
978*00b67f09SDavid van Moolenbroek	  fi
979*00b67f09SDavid van Moolenbroek	  prev=
980*00b67f09SDavid van Moolenbroek	  continue
981*00b67f09SDavid van Moolenbroek	  ;;
982*00b67f09SDavid van Moolenbroek	*)
983*00b67f09SDavid van Moolenbroek	  eval "$prev=\"\$arg\""
984*00b67f09SDavid van Moolenbroek	  prev=
985*00b67f09SDavid van Moolenbroek	  continue
986*00b67f09SDavid van Moolenbroek	  ;;
987*00b67f09SDavid van Moolenbroek	esac
988*00b67f09SDavid van Moolenbroek      fi
989*00b67f09SDavid van Moolenbroek
990*00b67f09SDavid van Moolenbroek      prevarg="$arg"
991*00b67f09SDavid van Moolenbroek
992*00b67f09SDavid van Moolenbroek      case "$arg" in
993*00b67f09SDavid van Moolenbroek      -all-static)
994*00b67f09SDavid van Moolenbroek	if test -n "$link_static_flag"; then
995*00b67f09SDavid van Moolenbroek	  compile_command="$compile_command $link_static_flag"
996*00b67f09SDavid van Moolenbroek	  finalize_command="$finalize_command $link_static_flag"
997*00b67f09SDavid van Moolenbroek	fi
998*00b67f09SDavid van Moolenbroek	continue
999*00b67f09SDavid van Moolenbroek	;;
1000*00b67f09SDavid van Moolenbroek
1001*00b67f09SDavid van Moolenbroek      -allow-undefined)
1002*00b67f09SDavid van Moolenbroek	# FIXME: remove this flag sometime in the future.
1003*00b67f09SDavid van Moolenbroek	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
1004*00b67f09SDavid van Moolenbroek	continue
1005*00b67f09SDavid van Moolenbroek	;;
1006*00b67f09SDavid van Moolenbroek
1007*00b67f09SDavid van Moolenbroek      -avoid-version)
1008*00b67f09SDavid van Moolenbroek	avoid_version=yes
1009*00b67f09SDavid van Moolenbroek	continue
1010*00b67f09SDavid van Moolenbroek	;;
1011*00b67f09SDavid van Moolenbroek
1012*00b67f09SDavid van Moolenbroek      -dlopen)
1013*00b67f09SDavid van Moolenbroek	prev=dlfiles
1014*00b67f09SDavid van Moolenbroek	continue
1015*00b67f09SDavid van Moolenbroek	;;
1016*00b67f09SDavid van Moolenbroek
1017*00b67f09SDavid van Moolenbroek      -dlpreopen)
1018*00b67f09SDavid van Moolenbroek	prev=dlprefiles
1019*00b67f09SDavid van Moolenbroek	continue
1020*00b67f09SDavid van Moolenbroek	;;
1021*00b67f09SDavid van Moolenbroek
1022*00b67f09SDavid van Moolenbroek      -export-dynamic)
1023*00b67f09SDavid van Moolenbroek	export_dynamic=yes
1024*00b67f09SDavid van Moolenbroek	continue
1025*00b67f09SDavid van Moolenbroek	;;
1026*00b67f09SDavid van Moolenbroek
1027*00b67f09SDavid van Moolenbroek      -export-symbols | -export-symbols-regex)
1028*00b67f09SDavid van Moolenbroek	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
1029*00b67f09SDavid van Moolenbroek	  $echo "$modename: not more than one -exported-symbols argument allowed"
1030*00b67f09SDavid van Moolenbroek	  exit 1
1031*00b67f09SDavid van Moolenbroek	fi
1032*00b67f09SDavid van Moolenbroek	if test "X$arg" = "X-export-symbols"; then
1033*00b67f09SDavid van Moolenbroek	  prev=expsyms
1034*00b67f09SDavid van Moolenbroek	else
1035*00b67f09SDavid van Moolenbroek	  prev=expsyms_regex
1036*00b67f09SDavid van Moolenbroek	fi
1037*00b67f09SDavid van Moolenbroek	continue
1038*00b67f09SDavid van Moolenbroek	;;
1039*00b67f09SDavid van Moolenbroek
1040*00b67f09SDavid van Moolenbroek      -L*)
1041*00b67f09SDavid van Moolenbroek	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
1042*00b67f09SDavid van Moolenbroek	# We need an absolute path.
1043*00b67f09SDavid van Moolenbroek	case "$dir" in
1044*00b67f09SDavid van Moolenbroek	[\\/]* | [A-Za-z]:[\\/]*) ;;
1045*00b67f09SDavid van Moolenbroek	*)
1046*00b67f09SDavid van Moolenbroek	  absdir=`cd "$dir" && pwd`
1047*00b67f09SDavid van Moolenbroek	  if test -z "$absdir"; then
1048*00b67f09SDavid van Moolenbroek	    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
1049*00b67f09SDavid van Moolenbroek	    $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
1050*00b67f09SDavid van Moolenbroek	    absdir="$dir"
1051*00b67f09SDavid van Moolenbroek	  fi
1052*00b67f09SDavid van Moolenbroek	  dir="$absdir"
1053*00b67f09SDavid van Moolenbroek	  ;;
1054*00b67f09SDavid van Moolenbroek	esac
1055*00b67f09SDavid van Moolenbroek	case " $deplibs " in
1056*00b67f09SDavid van Moolenbroek	*" $arg "*) ;;
1057*00b67f09SDavid van Moolenbroek	*) deplibs="$deplibs $arg";;
1058*00b67f09SDavid van Moolenbroek	esac
1059*00b67f09SDavid van Moolenbroek	case " $lib_search_path " in
1060*00b67f09SDavid van Moolenbroek	*" $dir "*) ;;
1061*00b67f09SDavid van Moolenbroek	*) lib_search_path="$lib_search_path $dir";;
1062*00b67f09SDavid van Moolenbroek	esac
1063*00b67f09SDavid van Moolenbroek	case "$host" in
1064*00b67f09SDavid van Moolenbroek	*-*-cygwin* | *-*-mingw* | *-*-os2*)
1065*00b67f09SDavid van Moolenbroek	  dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
1066*00b67f09SDavid van Moolenbroek	  case ":$dllsearchpath:" in
1067*00b67f09SDavid van Moolenbroek	  ::) dllsearchpath="$dllsearchdir";;
1068*00b67f09SDavid van Moolenbroek	  *":$dllsearchdir:"*) ;;
1069*00b67f09SDavid van Moolenbroek	  *) dllsearchpath="$dllsearchpath:$dllsearchdir";;
1070*00b67f09SDavid van Moolenbroek	  esac
1071*00b67f09SDavid van Moolenbroek	  ;;
1072*00b67f09SDavid van Moolenbroek	esac
1073*00b67f09SDavid van Moolenbroek	;;
1074*00b67f09SDavid van Moolenbroek
1075*00b67f09SDavid van Moolenbroek      -l*)
1076*00b67f09SDavid van Moolenbroek	if test "$arg" = "-lc"; then
1077*00b67f09SDavid van Moolenbroek	  case "$host" in
1078*00b67f09SDavid van Moolenbroek	  *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
1079*00b67f09SDavid van Moolenbroek	    # These systems don't actually have c library (as such)
1080*00b67f09SDavid van Moolenbroek	    continue
1081*00b67f09SDavid van Moolenbroek	    ;;
1082*00b67f09SDavid van Moolenbroek	  esac
1083*00b67f09SDavid van Moolenbroek	elif test "$arg" = "-lm"; then
1084*00b67f09SDavid van Moolenbroek	  case "$host" in
1085*00b67f09SDavid van Moolenbroek	  *-*-cygwin* | *-*-beos*)
1086*00b67f09SDavid van Moolenbroek	    # These systems don't actually have math library (as such)
1087*00b67f09SDavid van Moolenbroek	    continue
1088*00b67f09SDavid van Moolenbroek	    ;;
1089*00b67f09SDavid van Moolenbroek	  esac
1090*00b67f09SDavid van Moolenbroek	fi
1091*00b67f09SDavid van Moolenbroek	deplibs="$deplibs $arg"
1092*00b67f09SDavid van Moolenbroek	;;
1093*00b67f09SDavid van Moolenbroek
1094*00b67f09SDavid van Moolenbroek      -module)
1095*00b67f09SDavid van Moolenbroek	module=yes
1096*00b67f09SDavid van Moolenbroek	continue
1097*00b67f09SDavid van Moolenbroek	;;
1098*00b67f09SDavid van Moolenbroek
1099*00b67f09SDavid van Moolenbroek      -no-undefined)
1100*00b67f09SDavid van Moolenbroek	allow_undefined=no
1101*00b67f09SDavid van Moolenbroek	continue
1102*00b67f09SDavid van Moolenbroek	;;
1103*00b67f09SDavid van Moolenbroek
1104*00b67f09SDavid van Moolenbroek      -o) prev=output ;;
1105*00b67f09SDavid van Moolenbroek
1106*00b67f09SDavid van Moolenbroek      -release)
1107*00b67f09SDavid van Moolenbroek	prev=release
1108*00b67f09SDavid van Moolenbroek	continue
1109*00b67f09SDavid van Moolenbroek	;;
1110*00b67f09SDavid van Moolenbroek
1111*00b67f09SDavid van Moolenbroek      -rpath)
1112*00b67f09SDavid van Moolenbroek	prev=rpath
1113*00b67f09SDavid van Moolenbroek	continue
1114*00b67f09SDavid van Moolenbroek	;;
1115*00b67f09SDavid van Moolenbroek
1116*00b67f09SDavid van Moolenbroek      -R)
1117*00b67f09SDavid van Moolenbroek	prev=xrpath
1118*00b67f09SDavid van Moolenbroek	continue
1119*00b67f09SDavid van Moolenbroek	;;
1120*00b67f09SDavid van Moolenbroek
1121*00b67f09SDavid van Moolenbroek      -R*)
1122*00b67f09SDavid van Moolenbroek	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
1123*00b67f09SDavid van Moolenbroek	# We need an absolute path.
1124*00b67f09SDavid van Moolenbroek	case "$dir" in
1125*00b67f09SDavid van Moolenbroek	[\\/]* | [A-Za-z]:[\\/]*) ;;
1126*00b67f09SDavid van Moolenbroek	*)
1127*00b67f09SDavid van Moolenbroek	  $echo "$modename: only absolute run-paths are allowed" 1>&2
1128*00b67f09SDavid van Moolenbroek	  exit 1
1129*00b67f09SDavid van Moolenbroek	  ;;
1130*00b67f09SDavid van Moolenbroek	esac
1131*00b67f09SDavid van Moolenbroek	case "$xrpath " in
1132*00b67f09SDavid van Moolenbroek	*" $dir "*) ;;
1133*00b67f09SDavid van Moolenbroek	*) xrpath="$xrpath $dir" ;;
1134*00b67f09SDavid van Moolenbroek	esac
1135*00b67f09SDavid van Moolenbroek	continue
1136*00b67f09SDavid van Moolenbroek	;;
1137*00b67f09SDavid van Moolenbroek
1138*00b67f09SDavid van Moolenbroek      -static)
1139*00b67f09SDavid van Moolenbroek	# If we have no pic_flag, then this is the same as -all-static.
1140*00b67f09SDavid van Moolenbroek	if test -z "$pic_flag" && test -n "$link_static_flag"; then
1141*00b67f09SDavid van Moolenbroek	  compile_command="$compile_command $link_static_flag"
1142*00b67f09SDavid van Moolenbroek	  finalize_command="$finalize_command $link_static_flag"
1143*00b67f09SDavid van Moolenbroek	fi
1144*00b67f09SDavid van Moolenbroek	continue
1145*00b67f09SDavid van Moolenbroek	;;
1146*00b67f09SDavid van Moolenbroek
1147*00b67f09SDavid van Moolenbroek      -thread-safe)
1148*00b67f09SDavid van Moolenbroek	thread_safe=yes
1149*00b67f09SDavid van Moolenbroek	continue
1150*00b67f09SDavid van Moolenbroek	;;
1151*00b67f09SDavid van Moolenbroek
1152*00b67f09SDavid van Moolenbroek      -version-info)
1153*00b67f09SDavid van Moolenbroek	prev=vinfo
1154*00b67f09SDavid van Moolenbroek	continue
1155*00b67f09SDavid van Moolenbroek	;;
1156*00b67f09SDavid van Moolenbroek
1157*00b67f09SDavid van Moolenbroek      # Some other compiler flag.
1158*00b67f09SDavid van Moolenbroek      -* | +*)
1159*00b67f09SDavid van Moolenbroek	# Unknown arguments in both finalize_command and compile_command need
1160*00b67f09SDavid van Moolenbroek	# to be aesthetically quoted because they are evaled later.
1161*00b67f09SDavid van Moolenbroek	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1162*00b67f09SDavid van Moolenbroek	case "$arg" in
1163*00b67f09SDavid van Moolenbroek	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
1164*00b67f09SDavid van Moolenbroek	  arg="\"$arg\""
1165*00b67f09SDavid van Moolenbroek	  ;;
1166*00b67f09SDavid van Moolenbroek	esac
1167*00b67f09SDavid van Moolenbroek	;;
1168*00b67f09SDavid van Moolenbroek
1169*00b67f09SDavid van Moolenbroek      *.o | *.obj | *.a | *.lib)
1170*00b67f09SDavid van Moolenbroek	# A standard object.
1171*00b67f09SDavid van Moolenbroek	objs="$objs $arg"
1172*00b67f09SDavid van Moolenbroek	;;
1173*00b67f09SDavid van Moolenbroek
1174*00b67f09SDavid van Moolenbroek      *.lo)
1175*00b67f09SDavid van Moolenbroek	# A library object.
1176*00b67f09SDavid van Moolenbroek	if test "$prev" = dlfiles; then
1177*00b67f09SDavid van Moolenbroek	  dlfiles="$dlfiles $arg"
1178*00b67f09SDavid van Moolenbroek	  if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then
1179*00b67f09SDavid van Moolenbroek	    prev=
1180*00b67f09SDavid van Moolenbroek	    continue
1181*00b67f09SDavid van Moolenbroek	  else
1182*00b67f09SDavid van Moolenbroek	    # If libtool objects are unsupported, then we need to preload.
1183*00b67f09SDavid van Moolenbroek	    prev=dlprefiles
1184*00b67f09SDavid van Moolenbroek	  fi
1185*00b67f09SDavid van Moolenbroek	fi
1186*00b67f09SDavid van Moolenbroek
1187*00b67f09SDavid van Moolenbroek	if test "$prev" = dlprefiles; then
1188*00b67f09SDavid van Moolenbroek	  # Preload the old-style object.
1189*00b67f09SDavid van Moolenbroek	  dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"`
1190*00b67f09SDavid van Moolenbroek	  prev=
1191*00b67f09SDavid van Moolenbroek	fi
1192*00b67f09SDavid van Moolenbroek	libobjs="$libobjs $arg"
1193*00b67f09SDavid van Moolenbroek	;;
1194*00b67f09SDavid van Moolenbroek
1195*00b67f09SDavid van Moolenbroek      *.la)
1196*00b67f09SDavid van Moolenbroek	# A libtool-controlled library.
1197*00b67f09SDavid van Moolenbroek
1198*00b67f09SDavid van Moolenbroek	dlname=
1199*00b67f09SDavid van Moolenbroek	libdir=
1200*00b67f09SDavid van Moolenbroek	library_names=
1201*00b67f09SDavid van Moolenbroek	old_library=
1202*00b67f09SDavid van Moolenbroek
1203*00b67f09SDavid van Moolenbroek	# Check to see that this really is a libtool archive.
1204*00b67f09SDavid van Moolenbroek	if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
1205*00b67f09SDavid van Moolenbroek	else
1206*00b67f09SDavid van Moolenbroek	  $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
1207*00b67f09SDavid van Moolenbroek	  exit 1
1208*00b67f09SDavid van Moolenbroek	fi
1209*00b67f09SDavid van Moolenbroek
1210*00b67f09SDavid van Moolenbroek	# If the library was installed with an old release of libtool,
1211*00b67f09SDavid van Moolenbroek	# it will not redefine variable installed.
1212*00b67f09SDavid van Moolenbroek	installed=yes
1213*00b67f09SDavid van Moolenbroek
1214*00b67f09SDavid van Moolenbroek	# Read the .la file
1215*00b67f09SDavid van Moolenbroek	# If there is no directory component, then add one.
1216*00b67f09SDavid van Moolenbroek	case "$arg" in
1217*00b67f09SDavid van Moolenbroek	*/* | *\\*) . $arg ;;
1218*00b67f09SDavid van Moolenbroek	*) . ./$arg ;;
1219*00b67f09SDavid van Moolenbroek	esac
1220*00b67f09SDavid van Moolenbroek
1221*00b67f09SDavid van Moolenbroek	# Get the name of the library we link against.
1222*00b67f09SDavid van Moolenbroek	linklib=
1223*00b67f09SDavid van Moolenbroek	for l in $old_library $library_names; do
1224*00b67f09SDavid van Moolenbroek	  linklib="$l"
1225*00b67f09SDavid van Moolenbroek	done
1226*00b67f09SDavid van Moolenbroek
1227*00b67f09SDavid van Moolenbroek	if test -z "$linklib"; then
1228*00b67f09SDavid van Moolenbroek	  $echo "$modename: cannot find name of link library for \`$arg'" 1>&2
1229*00b67f09SDavid van Moolenbroek	  exit 1
1230*00b67f09SDavid van Moolenbroek	fi
1231*00b67f09SDavid van Moolenbroek
1232*00b67f09SDavid van Moolenbroek	# Find the relevant object directory and library name.
1233*00b67f09SDavid van Moolenbroek	name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
1234*00b67f09SDavid van Moolenbroek
1235*00b67f09SDavid van Moolenbroek	if test "X$installed" = Xyes; then
1236*00b67f09SDavid van Moolenbroek	  dir="$libdir"
1237*00b67f09SDavid van Moolenbroek	else
1238*00b67f09SDavid van Moolenbroek	  dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1239*00b67f09SDavid van Moolenbroek	  if test "X$dir" = "X$arg"; then
1240*00b67f09SDavid van Moolenbroek	    dir="$objdir"
1241*00b67f09SDavid van Moolenbroek	  else
1242*00b67f09SDavid van Moolenbroek	    dir="$dir/$objdir"
1243*00b67f09SDavid van Moolenbroek	  fi
1244*00b67f09SDavid van Moolenbroek	fi
1245*00b67f09SDavid van Moolenbroek
1246*00b67f09SDavid van Moolenbroek	if test -n "$dependency_libs"; then
1247*00b67f09SDavid van Moolenbroek	  # Extract -R and -L from dependency_libs
1248*00b67f09SDavid van Moolenbroek	  temp_deplibs=
1249*00b67f09SDavid van Moolenbroek	  for deplib in $dependency_libs; do
1250*00b67f09SDavid van Moolenbroek	    case "$deplib" in
1251*00b67f09SDavid van Moolenbroek	    -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
1252*00b67f09SDavid van Moolenbroek		 case " $rpath $xrpath " in
1253*00b67f09SDavid van Moolenbroek		 *" $temp_xrpath "*) ;;
1254*00b67f09SDavid van Moolenbroek		 *) xrpath="$xrpath $temp_xrpath";;
1255*00b67f09SDavid van Moolenbroek		 esac;;
1256*00b67f09SDavid van Moolenbroek	    -L*) case "$compile_command $temp_deplibs " in
1257*00b67f09SDavid van Moolenbroek		 *" $deplib "*) ;;
1258*00b67f09SDavid van Moolenbroek		 *) temp_deplibs="$temp_deplibs $deplib";;
1259*00b67f09SDavid van Moolenbroek		 esac
1260*00b67f09SDavid van Moolenbroek		 temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'`
1261*00b67f09SDavid van Moolenbroek		 case " $lib_search_path " in
1262*00b67f09SDavid van Moolenbroek		 *" $temp_dir "*) ;;
1263*00b67f09SDavid van Moolenbroek		 *) lib_search_path="$lib_search_path $temp_dir";;
1264*00b67f09SDavid van Moolenbroek		 esac
1265*00b67f09SDavid van Moolenbroek		 ;;
1266*00b67f09SDavid van Moolenbroek	    *) temp_deplibs="$temp_deplibs $deplib";;
1267*00b67f09SDavid van Moolenbroek	    esac
1268*00b67f09SDavid van Moolenbroek	  done
1269*00b67f09SDavid van Moolenbroek	  dependency_libs="$temp_deplibs"
1270*00b67f09SDavid van Moolenbroek	fi
1271*00b67f09SDavid van Moolenbroek
1272*00b67f09SDavid van Moolenbroek	if test -z "$libdir"; then
1273*00b67f09SDavid van Moolenbroek	  # It is a libtool convenience library, so add in its objects.
1274*00b67f09SDavid van Moolenbroek	  convenience="$convenience $dir/$old_library"
1275*00b67f09SDavid van Moolenbroek	  old_convenience="$old_convenience $dir/$old_library"
1276*00b67f09SDavid van Moolenbroek	  deplibs="$deplibs$dependency_libs"
1277*00b67f09SDavid van Moolenbroek	  compile_command="$compile_command $dir/$old_library$dependency_libs"
1278*00b67f09SDavid van Moolenbroek	  finalize_command="$finalize_command $dir/$old_library$dependency_libs"
1279*00b67f09SDavid van Moolenbroek	  continue
1280*00b67f09SDavid van Moolenbroek	fi
1281*00b67f09SDavid van Moolenbroek
1282*00b67f09SDavid van Moolenbroek	# This library was specified with -dlopen.
1283*00b67f09SDavid van Moolenbroek	if test "$prev" = dlfiles; then
1284*00b67f09SDavid van Moolenbroek	  dlfiles="$dlfiles $arg"
1285*00b67f09SDavid van Moolenbroek	  if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then
1286*00b67f09SDavid van Moolenbroek	    # If there is no dlname, no dlopen support or we're linking statically,
1287*00b67f09SDavid van Moolenbroek	    # we need to preload.
1288*00b67f09SDavid van Moolenbroek	    prev=dlprefiles
1289*00b67f09SDavid van Moolenbroek	  else
1290*00b67f09SDavid van Moolenbroek	    # We should not create a dependency on this library, but we
1291*00b67f09SDavid van Moolenbroek	    # may need any libraries it requires.
1292*00b67f09SDavid van Moolenbroek	    compile_command="$compile_command$dependency_libs"
1293*00b67f09SDavid van Moolenbroek	    finalize_command="$finalize_command$dependency_libs"
1294*00b67f09SDavid van Moolenbroek	    prev=
1295*00b67f09SDavid van Moolenbroek	    continue
1296*00b67f09SDavid van Moolenbroek	  fi
1297*00b67f09SDavid van Moolenbroek	fi
1298*00b67f09SDavid van Moolenbroek
1299*00b67f09SDavid van Moolenbroek	# The library was specified with -dlpreopen.
1300*00b67f09SDavid van Moolenbroek	if test "$prev" = dlprefiles; then
1301*00b67f09SDavid van Moolenbroek	  # Prefer using a static library (so that no silly _DYNAMIC symbols
1302*00b67f09SDavid van Moolenbroek	  # are required to link).
1303*00b67f09SDavid van Moolenbroek	  if test -n "$old_library"; then
1304*00b67f09SDavid van Moolenbroek	    dlprefiles="$dlprefiles $dir/$old_library"
1305*00b67f09SDavid van Moolenbroek	  else
1306*00b67f09SDavid van Moolenbroek	    dlprefiles="$dlprefiles $dir/$linklib"
1307*00b67f09SDavid van Moolenbroek	  fi
1308*00b67f09SDavid van Moolenbroek	  prev=
1309*00b67f09SDavid van Moolenbroek	fi
1310*00b67f09SDavid van Moolenbroek
1311*00b67f09SDavid van Moolenbroek	if test -n "$library_names" &&
1312*00b67f09SDavid van Moolenbroek	   { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
1313*00b67f09SDavid van Moolenbroek	  link_against_libtool_libs="$link_against_libtool_libs $arg"
1314*00b67f09SDavid van Moolenbroek	  if test -n "$shlibpath_var"; then
1315*00b67f09SDavid van Moolenbroek	    # Make sure the rpath contains only unique directories.
1316*00b67f09SDavid van Moolenbroek	    case "$temp_rpath " in
1317*00b67f09SDavid van Moolenbroek	    *" $dir "*) ;;
1318*00b67f09SDavid van Moolenbroek	    *) temp_rpath="$temp_rpath $dir" ;;
1319*00b67f09SDavid van Moolenbroek	    esac
1320*00b67f09SDavid van Moolenbroek	  fi
1321*00b67f09SDavid van Moolenbroek
1322*00b67f09SDavid van Moolenbroek	  # We need an absolute path.
1323*00b67f09SDavid van Moolenbroek	  case "$dir" in
1324*00b67f09SDavid van Moolenbroek	  [\\/] | [A-Za-z]:[\\/]*) absdir="$dir" ;;
1325*00b67f09SDavid van Moolenbroek	  *)
1326*00b67f09SDavid van Moolenbroek	    absdir=`cd "$dir" && pwd`
1327*00b67f09SDavid van Moolenbroek	    if test -z "$absdir"; then
1328*00b67f09SDavid van Moolenbroek	      $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
1329*00b67f09SDavid van Moolenbroek	      $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
1330*00b67f09SDavid van Moolenbroek	      absdir="$dir"
1331*00b67f09SDavid van Moolenbroek	    fi
1332*00b67f09SDavid van Moolenbroek	    ;;
1333*00b67f09SDavid van Moolenbroek	  esac
1334*00b67f09SDavid van Moolenbroek
1335*00b67f09SDavid van Moolenbroek	  # This is the magic to use -rpath.
1336*00b67f09SDavid van Moolenbroek	  # Skip directories that are in the system default run-time
1337*00b67f09SDavid van Moolenbroek	  # search path, unless they have been requested with -R.
1338*00b67f09SDavid van Moolenbroek	  case " $sys_lib_dlsearch_path " in
1339*00b67f09SDavid van Moolenbroek	  *" $absdir "*) ;;
1340*00b67f09SDavid van Moolenbroek	  *)
1341*00b67f09SDavid van Moolenbroek	    case "$compile_rpath " in
1342*00b67f09SDavid van Moolenbroek	    *" $absdir "*) ;;
1343*00b67f09SDavid van Moolenbroek	    *) compile_rpath="$compile_rpath $absdir"
1344*00b67f09SDavid van Moolenbroek	    esac
1345*00b67f09SDavid van Moolenbroek	    ;;
1346*00b67f09SDavid van Moolenbroek	  esac
1347*00b67f09SDavid van Moolenbroek
1348*00b67f09SDavid van Moolenbroek	  case " $sys_lib_dlsearch_path " in
1349*00b67f09SDavid van Moolenbroek	  *" $libdir "*) ;;
1350*00b67f09SDavid van Moolenbroek	  *)
1351*00b67f09SDavid van Moolenbroek	    case "$finalize_rpath " in
1352*00b67f09SDavid van Moolenbroek	    *" $libdir "*) ;;
1353*00b67f09SDavid van Moolenbroek	    *) finalize_rpath="$finalize_rpath $libdir"
1354*00b67f09SDavid van Moolenbroek	    esac
1355*00b67f09SDavid van Moolenbroek	    ;;
1356*00b67f09SDavid van Moolenbroek	  esac
1357*00b67f09SDavid van Moolenbroek
1358*00b67f09SDavid van Moolenbroek	  lib_linked=yes
1359*00b67f09SDavid van Moolenbroek	  case "$hardcode_action" in
1360*00b67f09SDavid van Moolenbroek	  immediate | unsupported)
1361*00b67f09SDavid van Moolenbroek	    if test "$hardcode_direct" = no; then
1362*00b67f09SDavid van Moolenbroek	      compile_command="$compile_command $dir/$linklib"
1363*00b67f09SDavid van Moolenbroek	      deplibs="$deplibs $dir/$linklib"
1364*00b67f09SDavid van Moolenbroek	      case "$host" in
1365*00b67f09SDavid van Moolenbroek	      *-*-cygwin* | *-*-mingw* | *-*-os2*)
1366*00b67f09SDavid van Moolenbroek		dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
1367*00b67f09SDavid van Moolenbroek		if test -n "$dllsearchpath"; then
1368*00b67f09SDavid van Moolenbroek		  dllsearchpath="$dllsearchpath:$dllsearchdir"
1369*00b67f09SDavid van Moolenbroek		else
1370*00b67f09SDavid van Moolenbroek		  dllsearchpath="$dllsearchdir"
1371*00b67f09SDavid van Moolenbroek		fi
1372*00b67f09SDavid van Moolenbroek		;;
1373*00b67f09SDavid van Moolenbroek	      esac
1374*00b67f09SDavid van Moolenbroek	    elif test "$hardcode_minus_L" = no; then
1375*00b67f09SDavid van Moolenbroek	      case "$host" in
1376*00b67f09SDavid van Moolenbroek	      *-*-sunos*)
1377*00b67f09SDavid van Moolenbroek		compile_shlibpath="$compile_shlibpath$dir:"
1378*00b67f09SDavid van Moolenbroek		;;
1379*00b67f09SDavid van Moolenbroek	      esac
1380*00b67f09SDavid van Moolenbroek	      case "$compile_command " in
1381*00b67f09SDavid van Moolenbroek	      *" -L$dir "*) ;;
1382*00b67f09SDavid van Moolenbroek	      *) compile_command="$compile_command -L$dir";;
1383*00b67f09SDavid van Moolenbroek	      esac
1384*00b67f09SDavid van Moolenbroek	      compile_command="$compile_command -l$name"
1385*00b67f09SDavid van Moolenbroek	      deplibs="$deplibs -L$dir -l$name"
1386*00b67f09SDavid van Moolenbroek	    elif test "$hardcode_shlibpath_var" = no; then
1387*00b67f09SDavid van Moolenbroek	      case ":$compile_shlibpath:" in
1388*00b67f09SDavid van Moolenbroek	      *":$dir:"*) ;;
1389*00b67f09SDavid van Moolenbroek	      *) compile_shlibpath="$compile_shlibpath$dir:";;
1390*00b67f09SDavid van Moolenbroek	      esac
1391*00b67f09SDavid van Moolenbroek	      compile_command="$compile_command -l$name"
1392*00b67f09SDavid van Moolenbroek	      deplibs="$deplibs -l$name"
1393*00b67f09SDavid van Moolenbroek	    else
1394*00b67f09SDavid van Moolenbroek	      lib_linked=no
1395*00b67f09SDavid van Moolenbroek	    fi
1396*00b67f09SDavid van Moolenbroek	    ;;
1397*00b67f09SDavid van Moolenbroek
1398*00b67f09SDavid van Moolenbroek	  relink)
1399*00b67f09SDavid van Moolenbroek	    if test "$hardcode_direct" = yes; then
1400*00b67f09SDavid van Moolenbroek	      compile_command="$compile_command $absdir/$linklib"
1401*00b67f09SDavid van Moolenbroek	      deplibs="$deplibs $absdir/$linklib"
1402*00b67f09SDavid van Moolenbroek	    elif test "$hardcode_minus_L" = yes; then
1403*00b67f09SDavid van Moolenbroek	      case "$compile_command " in
1404*00b67f09SDavid van Moolenbroek	      *" -L$absdir "*) ;;
1405*00b67f09SDavid van Moolenbroek	      *) compile_command="$compile_command -L$absdir";;
1406*00b67f09SDavid van Moolenbroek	      esac
1407*00b67f09SDavid van Moolenbroek	      compile_command="$compile_command -l$name"
1408*00b67f09SDavid van Moolenbroek	      deplibs="$deplibs -L$absdir -l$name"
1409*00b67f09SDavid van Moolenbroek	    elif test "$hardcode_shlibpath_var" = yes; then
1410*00b67f09SDavid van Moolenbroek	      case ":$compile_shlibpath:" in
1411*00b67f09SDavid van Moolenbroek	      *":$absdir:"*) ;;
1412*00b67f09SDavid van Moolenbroek	      *) compile_shlibpath="$compile_shlibpath$absdir:";;
1413*00b67f09SDavid van Moolenbroek	      esac
1414*00b67f09SDavid van Moolenbroek	      compile_command="$compile_command -l$name"
1415*00b67f09SDavid van Moolenbroek	      deplibs="$deplibs -l$name"
1416*00b67f09SDavid van Moolenbroek	    else
1417*00b67f09SDavid van Moolenbroek	      lib_linked=no
1418*00b67f09SDavid van Moolenbroek	    fi
1419*00b67f09SDavid van Moolenbroek	    ;;
1420*00b67f09SDavid van Moolenbroek
1421*00b67f09SDavid van Moolenbroek	  *)
1422*00b67f09SDavid van Moolenbroek	    lib_linked=no
1423*00b67f09SDavid van Moolenbroek	    ;;
1424*00b67f09SDavid van Moolenbroek	  esac
1425*00b67f09SDavid van Moolenbroek
1426*00b67f09SDavid van Moolenbroek	  if test "$lib_linked" != yes; then
1427*00b67f09SDavid van Moolenbroek	    $echo "$modename: configuration error: unsupported hardcode properties"
1428*00b67f09SDavid van Moolenbroek	    exit 1
1429*00b67f09SDavid van Moolenbroek	  fi
1430*00b67f09SDavid van Moolenbroek
1431*00b67f09SDavid van Moolenbroek	  # Finalize command for both is simple: just hardcode it.
1432*00b67f09SDavid van Moolenbroek	  if test "$hardcode_direct" = yes; then
1433*00b67f09SDavid van Moolenbroek	    finalize_command="$finalize_command $libdir/$linklib"
1434*00b67f09SDavid van Moolenbroek	  elif test "$hardcode_minus_L" = yes; then
1435*00b67f09SDavid van Moolenbroek	    case "$finalize_command " in
1436*00b67f09SDavid van Moolenbroek	    *" -L$libdir "*) ;;
1437*00b67f09SDavid van Moolenbroek	    *) finalize_command="$finalize_command -L$libdir";;
1438*00b67f09SDavid van Moolenbroek	    esac
1439*00b67f09SDavid van Moolenbroek	    finalize_command="$finalize_command -l$name"
1440*00b67f09SDavid van Moolenbroek	  elif test "$hardcode_shlibpath_var" = yes; then
1441*00b67f09SDavid van Moolenbroek	    case ":$finalize_shlibpath:" in
1442*00b67f09SDavid van Moolenbroek	    *":$libdir:"*) ;;
1443*00b67f09SDavid van Moolenbroek	    *) finalize_shlibpath="$finalize_shlibpath$libdir:";;
1444*00b67f09SDavid van Moolenbroek	    esac
1445*00b67f09SDavid van Moolenbroek	    finalize_command="$finalize_command -l$name"
1446*00b67f09SDavid van Moolenbroek	  else
1447*00b67f09SDavid van Moolenbroek	    # We cannot seem to hardcode it, guess we'll fake it.
1448*00b67f09SDavid van Moolenbroek	    case "$finalize_command " in
1449*00b67f09SDavid van Moolenbroek	    *" -L$dir "*) ;;
1450*00b67f09SDavid van Moolenbroek	    *) finalize_command="$finalize_command -L$libdir";;
1451*00b67f09SDavid van Moolenbroek	    esac
1452*00b67f09SDavid van Moolenbroek	    finalize_command="$finalize_command -l$name"
1453*00b67f09SDavid van Moolenbroek	  fi
1454*00b67f09SDavid van Moolenbroek	else
1455*00b67f09SDavid van Moolenbroek	  # Transform directly to old archives if we don't build new libraries.
1456*00b67f09SDavid van Moolenbroek	  if test -n "$pic_flag" && test -z "$old_library"; then
1457*00b67f09SDavid van Moolenbroek	    $echo "$modename: cannot find static library for \`$arg'" 1>&2
1458*00b67f09SDavid van Moolenbroek	    exit 1
1459*00b67f09SDavid van Moolenbroek	  fi
1460*00b67f09SDavid van Moolenbroek
1461*00b67f09SDavid van Moolenbroek	  # Here we assume that one of hardcode_direct or hardcode_minus_L
1462*00b67f09SDavid van Moolenbroek	  # is not unsupported.  This is valid on all known static and
1463*00b67f09SDavid van Moolenbroek	  # shared platforms.
1464*00b67f09SDavid van Moolenbroek	  if test "$hardcode_direct" != unsupported; then
1465*00b67f09SDavid van Moolenbroek	    test -n "$old_library" && linklib="$old_library"
1466*00b67f09SDavid van Moolenbroek	    compile_command="$compile_command $dir/$linklib"
1467*00b67f09SDavid van Moolenbroek	    finalize_command="$finalize_command $dir/$linklib"
1468*00b67f09SDavid van Moolenbroek	  else
1469*00b67f09SDavid van Moolenbroek	    case "$compile_command " in
1470*00b67f09SDavid van Moolenbroek	    *" -L$dir "*) ;;
1471*00b67f09SDavid van Moolenbroek	    *) compile_command="$compile_command -L$dir";;
1472*00b67f09SDavid van Moolenbroek	    esac
1473*00b67f09SDavid van Moolenbroek	    compile_command="$compile_command -l$name"
1474*00b67f09SDavid van Moolenbroek	    case "$finalize_command " in
1475*00b67f09SDavid van Moolenbroek	    *" -L$dir "*) ;;
1476*00b67f09SDavid van Moolenbroek	    *) finalize_command="$finalize_command -L$dir";;
1477*00b67f09SDavid van Moolenbroek	    esac
1478*00b67f09SDavid van Moolenbroek	    finalize_command="$finalize_command -l$name"
1479*00b67f09SDavid van Moolenbroek	  fi
1480*00b67f09SDavid van Moolenbroek	fi
1481*00b67f09SDavid van Moolenbroek
1482*00b67f09SDavid van Moolenbroek	# Add in any libraries that this one depends upon.
1483*00b67f09SDavid van Moolenbroek	compile_command="$compile_command$dependency_libs"
1484*00b67f09SDavid van Moolenbroek	finalize_command="$finalize_command$dependency_libs"
1485*00b67f09SDavid van Moolenbroek	continue
1486*00b67f09SDavid van Moolenbroek	;;
1487*00b67f09SDavid van Moolenbroek
1488*00b67f09SDavid van Moolenbroek      # Some other compiler argument.
1489*00b67f09SDavid van Moolenbroek      *)
1490*00b67f09SDavid van Moolenbroek	# Unknown arguments in both finalize_command and compile_command need
1491*00b67f09SDavid van Moolenbroek	# to be aesthetically quoted because they are evaled later.
1492*00b67f09SDavid van Moolenbroek	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1493*00b67f09SDavid van Moolenbroek	case "$arg" in
1494*00b67f09SDavid van Moolenbroek	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
1495*00b67f09SDavid van Moolenbroek	  arg="\"$arg\""
1496*00b67f09SDavid van Moolenbroek	  ;;
1497*00b67f09SDavid van Moolenbroek	esac
1498*00b67f09SDavid van Moolenbroek	;;
1499*00b67f09SDavid van Moolenbroek      esac
1500*00b67f09SDavid van Moolenbroek
1501*00b67f09SDavid van Moolenbroek      # Now actually substitute the argument into the commands.
1502*00b67f09SDavid van Moolenbroek      if test -n "$arg"; then
1503*00b67f09SDavid van Moolenbroek	compile_command="$compile_command $arg"
1504*00b67f09SDavid van Moolenbroek	finalize_command="$finalize_command $arg"
1505*00b67f09SDavid van Moolenbroek      fi
1506*00b67f09SDavid van Moolenbroek    done
1507*00b67f09SDavid van Moolenbroek
1508*00b67f09SDavid van Moolenbroek    if test -n "$prev"; then
1509*00b67f09SDavid van Moolenbroek      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
1510*00b67f09SDavid van Moolenbroek      $echo "$help" 1>&2
1511*00b67f09SDavid van Moolenbroek      exit 1
1512*00b67f09SDavid van Moolenbroek    fi
1513*00b67f09SDavid van Moolenbroek
1514*00b67f09SDavid van Moolenbroek    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
1515*00b67f09SDavid van Moolenbroek      eval arg=\"$export_dynamic_flag_spec\"
1516*00b67f09SDavid van Moolenbroek      compile_command="$compile_command $arg"
1517*00b67f09SDavid van Moolenbroek      finalize_command="$finalize_command $arg"
1518*00b67f09SDavid van Moolenbroek    fi
1519*00b67f09SDavid van Moolenbroek
1520*00b67f09SDavid van Moolenbroek    oldlibs=
1521*00b67f09SDavid van Moolenbroek    # calculate the name of the file, without its directory
1522*00b67f09SDavid van Moolenbroek    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
1523*00b67f09SDavid van Moolenbroek    libobjs_save="$libobjs"
1524*00b67f09SDavid van Moolenbroek
1525*00b67f09SDavid van Moolenbroek    case "$output" in
1526*00b67f09SDavid van Moolenbroek    "")
1527*00b67f09SDavid van Moolenbroek      $echo "$modename: you must specify an output file" 1>&2
1528*00b67f09SDavid van Moolenbroek      $echo "$help" 1>&2
1529*00b67f09SDavid van Moolenbroek      exit 1
1530*00b67f09SDavid van Moolenbroek      ;;
1531*00b67f09SDavid van Moolenbroek
1532*00b67f09SDavid van Moolenbroek    *.a | *.lib)
1533*00b67f09SDavid van Moolenbroek      if test -n "$link_against_libtool_libs"; then
1534*00b67f09SDavid van Moolenbroek	$echo "$modename: error: cannot link libtool libraries into archives" 1>&2
1535*00b67f09SDavid van Moolenbroek	exit 1
1536*00b67f09SDavid van Moolenbroek      fi
1537*00b67f09SDavid van Moolenbroek
1538*00b67f09SDavid van Moolenbroek      if test -n "$deplibs"; then
1539*00b67f09SDavid van Moolenbroek	$echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
1540*00b67f09SDavid van Moolenbroek      fi
1541*00b67f09SDavid van Moolenbroek
1542*00b67f09SDavid van Moolenbroek      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
1543*00b67f09SDavid van Moolenbroek	$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
1544*00b67f09SDavid van Moolenbroek      fi
1545*00b67f09SDavid van Moolenbroek
1546*00b67f09SDavid van Moolenbroek      if test -n "$rpath"; then
1547*00b67f09SDavid van Moolenbroek	$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
1548*00b67f09SDavid van Moolenbroek      fi
1549*00b67f09SDavid van Moolenbroek
1550*00b67f09SDavid van Moolenbroek      if test -n "$xrpath"; then
1551*00b67f09SDavid van Moolenbroek	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
1552*00b67f09SDavid van Moolenbroek      fi
1553*00b67f09SDavid van Moolenbroek
1554*00b67f09SDavid van Moolenbroek      if test -n "$vinfo"; then
1555*00b67f09SDavid van Moolenbroek	$echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2
1556*00b67f09SDavid van Moolenbroek      fi
1557*00b67f09SDavid van Moolenbroek
1558*00b67f09SDavid van Moolenbroek      if test -n "$release"; then
1559*00b67f09SDavid van Moolenbroek	$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
1560*00b67f09SDavid van Moolenbroek      fi
1561*00b67f09SDavid van Moolenbroek
1562*00b67f09SDavid van Moolenbroek      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
1563*00b67f09SDavid van Moolenbroek	$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
1564*00b67f09SDavid van Moolenbroek      fi
1565*00b67f09SDavid van Moolenbroek
1566*00b67f09SDavid van Moolenbroek      # Now set the variables for building old libraries.
1567*00b67f09SDavid van Moolenbroek      build_libtool_libs=no
1568*00b67f09SDavid van Moolenbroek      oldlibs="$output"
1569*00b67f09SDavid van Moolenbroek      ;;
1570*00b67f09SDavid van Moolenbroek
1571*00b67f09SDavid van Moolenbroek    *.la)
1572*00b67f09SDavid van Moolenbroek      # Make sure we only generate libraries of the form `libNAME.la'.
1573*00b67f09SDavid van Moolenbroek      case "$outputname" in
1574*00b67f09SDavid van Moolenbroek      lib*)
1575*00b67f09SDavid van Moolenbroek	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
1576*00b67f09SDavid van Moolenbroek	eval libname=\"$libname_spec\"
1577*00b67f09SDavid van Moolenbroek	;;
1578*00b67f09SDavid van Moolenbroek      *)
1579*00b67f09SDavid van Moolenbroek	if test "$module" = no; then
1580*00b67f09SDavid van Moolenbroek	  $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
1581*00b67f09SDavid van Moolenbroek	  $echo "$help" 1>&2
1582*00b67f09SDavid van Moolenbroek	  exit 1
1583*00b67f09SDavid van Moolenbroek	fi
1584*00b67f09SDavid van Moolenbroek	if test "$need_lib_prefix" != no; then
1585*00b67f09SDavid van Moolenbroek	  # Add the "lib" prefix for modules if required
1586*00b67f09SDavid van Moolenbroek	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
1587*00b67f09SDavid van Moolenbroek	  eval libname=\"$libname_spec\"
1588*00b67f09SDavid van Moolenbroek	else
1589*00b67f09SDavid van Moolenbroek	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
1590*00b67f09SDavid van Moolenbroek	fi
1591*00b67f09SDavid van Moolenbroek	;;
1592*00b67f09SDavid van Moolenbroek      esac
1593*00b67f09SDavid van Moolenbroek
1594*00b67f09SDavid van Moolenbroek      output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
1595*00b67f09SDavid van Moolenbroek      if test "X$output_objdir" = "X$output"; then
1596*00b67f09SDavid van Moolenbroek	output_objdir="$objdir"
1597*00b67f09SDavid van Moolenbroek      else
1598*00b67f09SDavid van Moolenbroek	output_objdir="$output_objdir/$objdir"
1599*00b67f09SDavid van Moolenbroek      fi
1600*00b67f09SDavid van Moolenbroek
1601*00b67f09SDavid van Moolenbroek      if test -n "$objs"; then
1602*00b67f09SDavid van Moolenbroek	$echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1
1603*00b67f09SDavid van Moolenbroek	exit 1
1604*00b67f09SDavid van Moolenbroek      fi
1605*00b67f09SDavid van Moolenbroek
1606*00b67f09SDavid van Moolenbroek      # How the heck are we supposed to write a wrapper for a shared library?
1607*00b67f09SDavid van Moolenbroek      if test -n "$link_against_libtool_libs"; then
1608*00b67f09SDavid van Moolenbroek	 $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2
1609*00b67f09SDavid van Moolenbroek	 exit 1
1610*00b67f09SDavid van Moolenbroek      fi
1611*00b67f09SDavid van Moolenbroek
1612*00b67f09SDavid van Moolenbroek      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
1613*00b67f09SDavid van Moolenbroek	$echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2
1614*00b67f09SDavid van Moolenbroek      fi
1615*00b67f09SDavid van Moolenbroek
1616*00b67f09SDavid van Moolenbroek      set dummy $rpath
1617*00b67f09SDavid van Moolenbroek      if test $# -gt 2; then
1618*00b67f09SDavid van Moolenbroek	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
1619*00b67f09SDavid van Moolenbroek      fi
1620*00b67f09SDavid van Moolenbroek      install_libdir="$2"
1621*00b67f09SDavid van Moolenbroek
1622*00b67f09SDavid van Moolenbroek      oldlibs=
1623*00b67f09SDavid van Moolenbroek      if test -z "$rpath"; then
1624*00b67f09SDavid van Moolenbroek	if test "$build_libtool_libs" = yes; then
1625*00b67f09SDavid van Moolenbroek	  # Building a libtool convenience library.
1626*00b67f09SDavid van Moolenbroek	  libext=al
1627*00b67f09SDavid van Moolenbroek	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
1628*00b67f09SDavid van Moolenbroek	  build_libtool_libs=convenience
1629*00b67f09SDavid van Moolenbroek	  build_old_libs=yes
1630*00b67f09SDavid van Moolenbroek	fi
1631*00b67f09SDavid van Moolenbroek	dependency_libs="$deplibs"
1632*00b67f09SDavid van Moolenbroek
1633*00b67f09SDavid van Moolenbroek	if test -n "$vinfo"; then
1634*00b67f09SDavid van Moolenbroek	  $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
1635*00b67f09SDavid van Moolenbroek	fi
1636*00b67f09SDavid van Moolenbroek
1637*00b67f09SDavid van Moolenbroek	if test -n "$release"; then
1638*00b67f09SDavid van Moolenbroek	  $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
1639*00b67f09SDavid van Moolenbroek	fi
1640*00b67f09SDavid van Moolenbroek      else
1641*00b67f09SDavid van Moolenbroek
1642*00b67f09SDavid van Moolenbroek	# Parse the version information argument.
1643*00b67f09SDavid van Moolenbroek	IFS="${IFS= 	}"; save_ifs="$IFS"; IFS=':'
1644*00b67f09SDavid van Moolenbroek	set dummy $vinfo 0 0 0
1645*00b67f09SDavid van Moolenbroek	IFS="$save_ifs"
1646*00b67f09SDavid van Moolenbroek
1647*00b67f09SDavid van Moolenbroek	if test -n "$8"; then
1648*00b67f09SDavid van Moolenbroek	  $echo "$modename: too many parameters to \`-version-info'" 1>&2
1649*00b67f09SDavid van Moolenbroek	  $echo "$help" 1>&2
1650*00b67f09SDavid van Moolenbroek	  exit 1
1651*00b67f09SDavid van Moolenbroek	fi
1652*00b67f09SDavid van Moolenbroek
1653*00b67f09SDavid van Moolenbroek	current="$2"
1654*00b67f09SDavid van Moolenbroek	revision="$3"
1655*00b67f09SDavid van Moolenbroek	age="$4"
1656*00b67f09SDavid van Moolenbroek
1657*00b67f09SDavid van Moolenbroek	# Check that each of the things are valid numbers.
1658*00b67f09SDavid van Moolenbroek	case "$current" in
1659*00b67f09SDavid van Moolenbroek	0 | [1-9] | [1-9][0-9]*) ;;
1660*00b67f09SDavid van Moolenbroek	*)
1661*00b67f09SDavid van Moolenbroek	  $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
1662*00b67f09SDavid van Moolenbroek	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1663*00b67f09SDavid van Moolenbroek	  exit 1
1664*00b67f09SDavid van Moolenbroek	  ;;
1665*00b67f09SDavid van Moolenbroek	esac
1666*00b67f09SDavid van Moolenbroek
1667*00b67f09SDavid van Moolenbroek	case "$revision" in
1668*00b67f09SDavid van Moolenbroek	0 | [1-9] | [1-9][0-9]*) ;;
1669*00b67f09SDavid van Moolenbroek	*)
1670*00b67f09SDavid van Moolenbroek	  $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
1671*00b67f09SDavid van Moolenbroek	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1672*00b67f09SDavid van Moolenbroek	  exit 1
1673*00b67f09SDavid van Moolenbroek	  ;;
1674*00b67f09SDavid van Moolenbroek	esac
1675*00b67f09SDavid van Moolenbroek
1676*00b67f09SDavid van Moolenbroek	case "$age" in
1677*00b67f09SDavid van Moolenbroek	0 | [1-9] | [1-9][0-9]*) ;;
1678*00b67f09SDavid van Moolenbroek	*)
1679*00b67f09SDavid van Moolenbroek	  $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
1680*00b67f09SDavid van Moolenbroek	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1681*00b67f09SDavid van Moolenbroek	  exit 1
1682*00b67f09SDavid van Moolenbroek	  ;;
1683*00b67f09SDavid van Moolenbroek	esac
1684*00b67f09SDavid van Moolenbroek
1685*00b67f09SDavid van Moolenbroek	if test $age -gt $current; then
1686*00b67f09SDavid van Moolenbroek	  $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
1687*00b67f09SDavid van Moolenbroek	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
1688*00b67f09SDavid van Moolenbroek	  exit 1
1689*00b67f09SDavid van Moolenbroek	fi
1690*00b67f09SDavid van Moolenbroek
1691*00b67f09SDavid van Moolenbroek	# Calculate the version variables.
1692*00b67f09SDavid van Moolenbroek	major=
1693*00b67f09SDavid van Moolenbroek	versuffix=
1694*00b67f09SDavid van Moolenbroek	verstring=
1695*00b67f09SDavid van Moolenbroek	case "$version_type" in
1696*00b67f09SDavid van Moolenbroek	none) ;;
1697*00b67f09SDavid van Moolenbroek
1698*00b67f09SDavid van Moolenbroek	irix)
1699*00b67f09SDavid van Moolenbroek	  major=`expr $current - $age + 1`
1700*00b67f09SDavid van Moolenbroek	  versuffix="$major.$revision"
1701*00b67f09SDavid van Moolenbroek	  verstring="sgi$major.$revision"
1702*00b67f09SDavid van Moolenbroek
1703*00b67f09SDavid van Moolenbroek	  # Add in all the interfaces that we are compatible with.
1704*00b67f09SDavid van Moolenbroek	  loop=$revision
1705*00b67f09SDavid van Moolenbroek	  while test $loop != 0; do
1706*00b67f09SDavid van Moolenbroek	    iface=`expr $revision - $loop`
1707*00b67f09SDavid van Moolenbroek	    loop=`expr $loop - 1`
1708*00b67f09SDavid van Moolenbroek	    verstring="sgi$major.$iface:$verstring"
1709*00b67f09SDavid van Moolenbroek	  done
1710*00b67f09SDavid van Moolenbroek	  ;;
1711*00b67f09SDavid van Moolenbroek
1712*00b67f09SDavid van Moolenbroek	linux)
1713*00b67f09SDavid van Moolenbroek	  major=.`expr $current - $age`
1714*00b67f09SDavid van Moolenbroek	  versuffix="$major.$age.$revision"
1715*00b67f09SDavid van Moolenbroek	  ;;
1716*00b67f09SDavid van Moolenbroek
1717*00b67f09SDavid van Moolenbroek	osf)
1718*00b67f09SDavid van Moolenbroek	  major=`expr $current - $age`
1719*00b67f09SDavid van Moolenbroek	  versuffix=".$current.$age.$revision"
1720*00b67f09SDavid van Moolenbroek	  verstring="$current.$age.$revision"
1721*00b67f09SDavid van Moolenbroek
1722*00b67f09SDavid van Moolenbroek	  # Add in all the interfaces that we are compatible with.
1723*00b67f09SDavid van Moolenbroek	  loop=$age
1724*00b67f09SDavid van Moolenbroek	  while test $loop != 0; do
1725*00b67f09SDavid van Moolenbroek	    iface=`expr $current - $loop`
1726*00b67f09SDavid van Moolenbroek	    loop=`expr $loop - 1`
1727*00b67f09SDavid van Moolenbroek	    verstring="$verstring:${iface}.0"
1728*00b67f09SDavid van Moolenbroek	  done
1729*00b67f09SDavid van Moolenbroek
1730*00b67f09SDavid van Moolenbroek	  # Make executables depend on our current version.
1731*00b67f09SDavid van Moolenbroek	  verstring="$verstring:${current}.0"
1732*00b67f09SDavid van Moolenbroek	  ;;
1733*00b67f09SDavid van Moolenbroek
1734*00b67f09SDavid van Moolenbroek	sunos)
1735*00b67f09SDavid van Moolenbroek	  major=".$current"
1736*00b67f09SDavid van Moolenbroek	  versuffix=".$current.$revision"
1737*00b67f09SDavid van Moolenbroek	  ;;
1738*00b67f09SDavid van Moolenbroek
1739*00b67f09SDavid van Moolenbroek	freebsd-aout)
1740*00b67f09SDavid van Moolenbroek	  major=".$current"
1741*00b67f09SDavid van Moolenbroek	  versuffix=".$current.$revision";
1742*00b67f09SDavid van Moolenbroek	  ;;
1743*00b67f09SDavid van Moolenbroek
1744*00b67f09SDavid van Moolenbroek	freebsd-elf)
1745*00b67f09SDavid van Moolenbroek	  major=".$current"
1746*00b67f09SDavid van Moolenbroek	  versuffix=".$current";
1747*00b67f09SDavid van Moolenbroek	  ;;
1748*00b67f09SDavid van Moolenbroek
1749*00b67f09SDavid van Moolenbroek	windows)
1750*00b67f09SDavid van Moolenbroek	  # Like Linux, but with '-' rather than '.', since we only
1751*00b67f09SDavid van Moolenbroek	  # want one extension on Windows 95.
1752*00b67f09SDavid van Moolenbroek	  major=`expr $current - $age`
1753*00b67f09SDavid van Moolenbroek	  versuffix="-$major-$age-$revision"
1754*00b67f09SDavid van Moolenbroek	  ;;
1755*00b67f09SDavid van Moolenbroek
1756*00b67f09SDavid van Moolenbroek	*)
1757*00b67f09SDavid van Moolenbroek	  $echo "$modename: unknown library version type \`$version_type'" 1>&2
1758*00b67f09SDavid van Moolenbroek	  echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
1759*00b67f09SDavid van Moolenbroek	  exit 1
1760*00b67f09SDavid van Moolenbroek	  ;;
1761*00b67f09SDavid van Moolenbroek	esac
1762*00b67f09SDavid van Moolenbroek
1763*00b67f09SDavid van Moolenbroek	# Clear the version info if we defaulted, and they specified a release.
1764*00b67f09SDavid van Moolenbroek	if test -z "$vinfo" && test -n "$release"; then
1765*00b67f09SDavid van Moolenbroek	  major=
1766*00b67f09SDavid van Moolenbroek	  verstring="0.0"
1767*00b67f09SDavid van Moolenbroek	  if test "$need_version" = no; then
1768*00b67f09SDavid van Moolenbroek	    versuffix=
1769*00b67f09SDavid van Moolenbroek	  else
1770*00b67f09SDavid van Moolenbroek	    versuffix=".0.0"
1771*00b67f09SDavid van Moolenbroek	  fi
1772*00b67f09SDavid van Moolenbroek	fi
1773*00b67f09SDavid van Moolenbroek
1774*00b67f09SDavid van Moolenbroek	# Remove version info from name if versioning should be avoided
1775*00b67f09SDavid van Moolenbroek	if test "$avoid_version" = yes && test "$need_version" = no; then
1776*00b67f09SDavid van Moolenbroek	  major=
1777*00b67f09SDavid van Moolenbroek	  versuffix=
1778*00b67f09SDavid van Moolenbroek	  verstring=""
1779*00b67f09SDavid van Moolenbroek	fi
1780*00b67f09SDavid van Moolenbroek
1781*00b67f09SDavid van Moolenbroek	# Check to see if the archive will have undefined symbols.
1782*00b67f09SDavid van Moolenbroek	if test "$allow_undefined" = yes; then
1783*00b67f09SDavid van Moolenbroek	  if test "$allow_undefined_flag" = unsupported; then
1784*00b67f09SDavid van Moolenbroek	    $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
1785*00b67f09SDavid van Moolenbroek	    build_libtool_libs=no
1786*00b67f09SDavid van Moolenbroek	    build_old_libs=yes
1787*00b67f09SDavid van Moolenbroek	  fi
1788*00b67f09SDavid van Moolenbroek	else
1789*00b67f09SDavid van Moolenbroek	  # Don't allow undefined symbols.
1790*00b67f09SDavid van Moolenbroek	  allow_undefined_flag="$no_undefined_flag"
1791*00b67f09SDavid van Moolenbroek	fi
1792*00b67f09SDavid van Moolenbroek
1793*00b67f09SDavid van Moolenbroek	dependency_libs="$deplibs"
1794*00b67f09SDavid van Moolenbroek	case "$host" in
1795*00b67f09SDavid van Moolenbroek	*-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
1796*00b67f09SDavid van Moolenbroek	  # these systems don't actually have a c library (as such)!
1797*00b67f09SDavid van Moolenbroek	  ;;
1798*00b67f09SDavid van Moolenbroek        *-*-rhapsody*)
1799*00b67f09SDavid van Moolenbroek	  # rhapsody is a little odd...
1800*00b67f09SDavid van Moolenbroek	  deplibs="$deplibs -framework System"
1801*00b67f09SDavid van Moolenbroek	  ;;
1802*00b67f09SDavid van Moolenbroek	*)
1803*00b67f09SDavid van Moolenbroek	  # Add libc to deplibs on all other systems.
1804*00b67f09SDavid van Moolenbroek	  deplibs="$deplibs -lc"
1805*00b67f09SDavid van Moolenbroek	  ;;
1806*00b67f09SDavid van Moolenbroek	esac
1807*00b67f09SDavid van Moolenbroek      fi
1808*00b67f09SDavid van Moolenbroek
1809*00b67f09SDavid van Moolenbroek      # Create the output directory, or remove our outputs if we need to.
1810*00b67f09SDavid van Moolenbroek      if test -d $output_objdir; then
1811*00b67f09SDavid van Moolenbroek	$show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*"
1812*00b67f09SDavid van Moolenbroek	$run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*
1813*00b67f09SDavid van Moolenbroek      else
1814*00b67f09SDavid van Moolenbroek	$show "$mkdir $output_objdir"
1815*00b67f09SDavid van Moolenbroek	$run $mkdir $output_objdir
1816*00b67f09SDavid van Moolenbroek	status=$?
1817*00b67f09SDavid van Moolenbroek	if test $status -ne 0 && test ! -d $output_objdir; then
1818*00b67f09SDavid van Moolenbroek	  exit $status
1819*00b67f09SDavid van Moolenbroek	fi
1820*00b67f09SDavid van Moolenbroek      fi
1821*00b67f09SDavid van Moolenbroek
1822*00b67f09SDavid van Moolenbroek      # Now set the variables for building old libraries.
1823*00b67f09SDavid van Moolenbroek      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
1824*00b67f09SDavid van Moolenbroek	oldlibs="$oldlibs $output_objdir/$libname.$libext"
1825*00b67f09SDavid van Moolenbroek
1826*00b67f09SDavid van Moolenbroek	# Transform .lo files to .o files.
1827*00b67f09SDavid van Moolenbroek	oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
1828*00b67f09SDavid van Moolenbroek      fi
1829*00b67f09SDavid van Moolenbroek
1830*00b67f09SDavid van Moolenbroek      if test "$build_libtool_libs" = yes; then
1831*00b67f09SDavid van Moolenbroek	# Transform deplibs into only deplibs that can be linked in shared.
1832*00b67f09SDavid van Moolenbroek	name_save=$name
1833*00b67f09SDavid van Moolenbroek	libname_save=$libname
1834*00b67f09SDavid van Moolenbroek	release_save=$release
1835*00b67f09SDavid van Moolenbroek	versuffix_save=$versuffix
1836*00b67f09SDavid van Moolenbroek	major_save=$major
1837*00b67f09SDavid van Moolenbroek	# I'm not sure if I'm treating the release correctly.  I think
1838*00b67f09SDavid van Moolenbroek	# release should show up in the -l (ie -lgmp5) so we don't want to
1839*00b67f09SDavid van Moolenbroek	# add it in twice.  Is that correct?
1840*00b67f09SDavid van Moolenbroek	release=""
1841*00b67f09SDavid van Moolenbroek	versuffix=""
1842*00b67f09SDavid van Moolenbroek	major=""
1843*00b67f09SDavid van Moolenbroek	newdeplibs=
1844*00b67f09SDavid van Moolenbroek	droppeddeps=no
1845*00b67f09SDavid van Moolenbroek	case "$deplibs_check_method" in
1846*00b67f09SDavid van Moolenbroek	pass_all)
1847*00b67f09SDavid van Moolenbroek	  # Don't check for shared/static.  Everything works.
1848*00b67f09SDavid van Moolenbroek	  # This might be a little naive.  We might want to check
1849*00b67f09SDavid van Moolenbroek	  # whether the library exists or not.  But this is on
1850*00b67f09SDavid van Moolenbroek	  # osf3 & osf4 and I'm not really sure... Just
1851*00b67f09SDavid van Moolenbroek	  # implementing what was already the behaviour.
1852*00b67f09SDavid van Moolenbroek	  newdeplibs=$deplibs
1853*00b67f09SDavid van Moolenbroek	  ;;
1854*00b67f09SDavid van Moolenbroek	test_compile)
1855*00b67f09SDavid van Moolenbroek	  # This code stresses the "libraries are programs" paradigm to its
1856*00b67f09SDavid van Moolenbroek	  # limits. Maybe even breaks it.  We compile a program, linking it
1857*00b67f09SDavid van Moolenbroek	  # against the deplibs as a proxy for the library.  Then we can check
1858*00b67f09SDavid van Moolenbroek	  # whether they linked in statically or dynamically with ldd.
1859*00b67f09SDavid van Moolenbroek	  $rm conftest.c
1860*00b67f09SDavid van Moolenbroek	  cat > conftest.c <<EOF
1861*00b67f09SDavid van Moolenbroek	  int main() { return 0; }
1862*00b67f09SDavid van MoolenbroekEOF
1863*00b67f09SDavid van Moolenbroek	  $rm conftest
1864*00b67f09SDavid van Moolenbroek	  $CC -o conftest conftest.c $deplibs
1865*00b67f09SDavid van Moolenbroek	  if test $? -eq 0 ; then
1866*00b67f09SDavid van Moolenbroek	    ldd_output=`ldd conftest`
1867*00b67f09SDavid van Moolenbroek	    for i in $deplibs; do
1868*00b67f09SDavid van Moolenbroek	      name="`expr $i : '-l\(.*\)'`"
1869*00b67f09SDavid van Moolenbroek	      # If $name is empty we are operating on a -L argument.
1870*00b67f09SDavid van Moolenbroek	      if test "$name" != "" ; then
1871*00b67f09SDavid van Moolenbroek		libname=`eval \\$echo \"$libname_spec\"`
1872*00b67f09SDavid van Moolenbroek		deplib_matches=`eval \\$echo \"$library_names_spec\"`
1873*00b67f09SDavid van Moolenbroek		set dummy $deplib_matches
1874*00b67f09SDavid van Moolenbroek		deplib_match=$2
1875*00b67f09SDavid van Moolenbroek		if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
1876*00b67f09SDavid van Moolenbroek		  newdeplibs="$newdeplibs $i"
1877*00b67f09SDavid van Moolenbroek		else
1878*00b67f09SDavid van Moolenbroek		  droppeddeps=yes
1879*00b67f09SDavid van Moolenbroek		  echo
1880*00b67f09SDavid van Moolenbroek		  echo "*** Warning: This library needs some functionality provided by $i."
1881*00b67f09SDavid van Moolenbroek		  echo "*** I have the capability to make that library automatically link in when"
1882*00b67f09SDavid van Moolenbroek		  echo "*** you link to this library.  But I can only do this if you have a"
1883*00b67f09SDavid van Moolenbroek		  echo "*** shared version of the library, which you do not appear to have."
1884*00b67f09SDavid van Moolenbroek		fi
1885*00b67f09SDavid van Moolenbroek	      else
1886*00b67f09SDavid van Moolenbroek		newdeplibs="$newdeplibs $i"
1887*00b67f09SDavid van Moolenbroek	      fi
1888*00b67f09SDavid van Moolenbroek	    done
1889*00b67f09SDavid van Moolenbroek	  else
1890*00b67f09SDavid van Moolenbroek	    # Error occured in the first compile.  Let's try to salvage the situation:
1891*00b67f09SDavid van Moolenbroek	    # Compile a seperate program for each library.
1892*00b67f09SDavid van Moolenbroek	    for i in $deplibs; do
1893*00b67f09SDavid van Moolenbroek	      name="`expr $i : '-l\(.*\)'`"
1894*00b67f09SDavid van Moolenbroek	     # If $name is empty we are operating on a -L argument.
1895*00b67f09SDavid van Moolenbroek	      if test "$name" != "" ; then
1896*00b67f09SDavid van Moolenbroek		$rm conftest
1897*00b67f09SDavid van Moolenbroek		$CC -o conftest conftest.c $i
1898*00b67f09SDavid van Moolenbroek		# Did it work?
1899*00b67f09SDavid van Moolenbroek		if test $? -eq 0 ; then
1900*00b67f09SDavid van Moolenbroek		  ldd_output=`ldd conftest`
1901*00b67f09SDavid van Moolenbroek		  libname=`eval \\$echo \"$libname_spec\"`
1902*00b67f09SDavid van Moolenbroek		  deplib_matches=`eval \\$echo \"$library_names_spec\"`
1903*00b67f09SDavid van Moolenbroek		  set dummy $deplib_matches
1904*00b67f09SDavid van Moolenbroek		  deplib_match=$2
1905*00b67f09SDavid van Moolenbroek		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
1906*00b67f09SDavid van Moolenbroek		    newdeplibs="$newdeplibs $i"
1907*00b67f09SDavid van Moolenbroek		  else
1908*00b67f09SDavid van Moolenbroek		    droppeddeps=yes
1909*00b67f09SDavid van Moolenbroek		    echo
1910*00b67f09SDavid van Moolenbroek		    echo "*** Warning: This library needs some functionality provided by $i."
1911*00b67f09SDavid van Moolenbroek		    echo "*** I have the capability to make that library automatically link in when"
1912*00b67f09SDavid van Moolenbroek		    echo "*** you link to this library.  But I can only do this if you have a"
1913*00b67f09SDavid van Moolenbroek		    echo "*** shared version of the library, which you do not appear to have."
1914*00b67f09SDavid van Moolenbroek		  fi
1915*00b67f09SDavid van Moolenbroek		else
1916*00b67f09SDavid van Moolenbroek		  droppeddeps=yes
1917*00b67f09SDavid van Moolenbroek		  echo
1918*00b67f09SDavid van Moolenbroek		  echo "*** Warning!  Library $i is needed by this library but I was not able to"
1919*00b67f09SDavid van Moolenbroek		  echo "***  make it link in!  You will probably need to install it or some"
1920*00b67f09SDavid van Moolenbroek		  echo "*** library that it depends on before this library will be fully"
1921*00b67f09SDavid van Moolenbroek		  echo "*** functional.  Installing it before continuing would be even better."
1922*00b67f09SDavid van Moolenbroek		fi
1923*00b67f09SDavid van Moolenbroek	      else
1924*00b67f09SDavid van Moolenbroek		newdeplibs="$newdeplibs $i"
1925*00b67f09SDavid van Moolenbroek	      fi
1926*00b67f09SDavid van Moolenbroek	    done
1927*00b67f09SDavid van Moolenbroek	  fi
1928*00b67f09SDavid van Moolenbroek	  ;;
1929*00b67f09SDavid van Moolenbroek	file_magic*)
1930*00b67f09SDavid van Moolenbroek	  set dummy $deplibs_check_method
1931*00b67f09SDavid van Moolenbroek	  file_magic_regex="`expr \"$deplibs_check_method\" : \"$2 \(.*\)\"`"
1932*00b67f09SDavid van Moolenbroek	  for a_deplib in $deplibs; do
1933*00b67f09SDavid van Moolenbroek	    name="`expr $a_deplib : '-l\(.*\)'`"
1934*00b67f09SDavid van Moolenbroek	    # If $name is empty we are operating on a -L argument.
1935*00b67f09SDavid van Moolenbroek	    if test "$name" != "" ; then
1936*00b67f09SDavid van Moolenbroek	      libname=`eval \\$echo \"$libname_spec\"`
1937*00b67f09SDavid van Moolenbroek	      for i in $lib_search_path; do
1938*00b67f09SDavid van Moolenbroek		    potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
1939*00b67f09SDavid van Moolenbroek		    for potent_lib in $potential_libs; do
1940*00b67f09SDavid van Moolenbroek		      # Follow soft links.
1941*00b67f09SDavid van Moolenbroek		      if ls -lLd "$potent_lib" 2>/dev/null \
1942*00b67f09SDavid van Moolenbroek			 | grep " -> " >/dev/null; then
1943*00b67f09SDavid van Moolenbroek			continue
1944*00b67f09SDavid van Moolenbroek		      fi
1945*00b67f09SDavid van Moolenbroek		      # The statement above tries to avoid entering an
1946*00b67f09SDavid van Moolenbroek		      # endless loop below, in case of cyclic links.
1947*00b67f09SDavid van Moolenbroek		      # We might still enter an endless loop, since a link
1948*00b67f09SDavid van Moolenbroek		      # loop can be closed while we follow links,
1949*00b67f09SDavid van Moolenbroek		      # but so what?
1950*00b67f09SDavid van Moolenbroek		      potlib="$potent_lib"
1951*00b67f09SDavid van Moolenbroek		      while test -h "$potlib" 2>/dev/null; do
1952*00b67f09SDavid van Moolenbroek			potliblink=`ls -ld $potlib | sed 's/.* -> //'`
1953*00b67f09SDavid van Moolenbroek			case "$potliblink" in
1954*00b67f09SDavid van Moolenbroek			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
1955*00b67f09SDavid van Moolenbroek			*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
1956*00b67f09SDavid van Moolenbroek			esac
1957*00b67f09SDavid van Moolenbroek		      done
1958*00b67f09SDavid van Moolenbroek		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
1959*00b67f09SDavid van Moolenbroek			 | sed 10q \
1960*00b67f09SDavid van Moolenbroek			 | egrep "$file_magic_regex" > /dev/null; then
1961*00b67f09SDavid van Moolenbroek			newdeplibs="$newdeplibs $a_deplib"
1962*00b67f09SDavid van Moolenbroek			a_deplib=""
1963*00b67f09SDavid van Moolenbroek			break 2
1964*00b67f09SDavid van Moolenbroek		      fi
1965*00b67f09SDavid van Moolenbroek		    done
1966*00b67f09SDavid van Moolenbroek	      done
1967*00b67f09SDavid van Moolenbroek	      if test -n "$a_deplib" ; then
1968*00b67f09SDavid van Moolenbroek		droppeddeps=yes
1969*00b67f09SDavid van Moolenbroek		echo
1970*00b67f09SDavid van Moolenbroek		echo "*** Warning: This library needs some functionality provided by $a_deplib."
1971*00b67f09SDavid van Moolenbroek		echo "*** I have the capability to make that library automatically link in when"
1972*00b67f09SDavid van Moolenbroek		echo "*** you link to this library.  But I can only do this if you have a"
1973*00b67f09SDavid van Moolenbroek		echo "*** shared version of the library, which you do not appear to have."
1974*00b67f09SDavid van Moolenbroek	      fi
1975*00b67f09SDavid van Moolenbroek	    else
1976*00b67f09SDavid van Moolenbroek	      # Add a -L argument.
1977*00b67f09SDavid van Moolenbroek	      newdeplibs="$newdeplibs $a_deplib"
1978*00b67f09SDavid van Moolenbroek	    fi
1979*00b67f09SDavid van Moolenbroek	  done # Gone through all deplibs.
1980*00b67f09SDavid van Moolenbroek	  ;;
1981*00b67f09SDavid van Moolenbroek	none | unknown | *)
1982*00b67f09SDavid van Moolenbroek	  newdeplibs=""
1983*00b67f09SDavid van Moolenbroek	  if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
1984*00b67f09SDavid van Moolenbroek	       -e 's/ -[LR][^ ]*//g' -e 's/[ 	]//g' |
1985*00b67f09SDavid van Moolenbroek	     grep . >/dev/null; then
1986*00b67f09SDavid van Moolenbroek	    echo
1987*00b67f09SDavid van Moolenbroek	    if test "X$deplibs_check_method" = "Xnone"; then
1988*00b67f09SDavid van Moolenbroek	      echo "*** Warning: inter-library dependencies are not supported in this platform."
1989*00b67f09SDavid van Moolenbroek	    else
1990*00b67f09SDavid van Moolenbroek	      echo "*** Warning: inter-library dependencies are not known to be supported."
1991*00b67f09SDavid van Moolenbroek	    fi
1992*00b67f09SDavid van Moolenbroek	    echo "*** All declared inter-library dependencies are being dropped."
1993*00b67f09SDavid van Moolenbroek	    droppeddeps=yes
1994*00b67f09SDavid van Moolenbroek	  fi
1995*00b67f09SDavid van Moolenbroek	  ;;
1996*00b67f09SDavid van Moolenbroek	esac
1997*00b67f09SDavid van Moolenbroek	versuffix=$versuffix_save
1998*00b67f09SDavid van Moolenbroek	major=$major_save
1999*00b67f09SDavid van Moolenbroek	release=$release_save
2000*00b67f09SDavid van Moolenbroek	libname=$libname_save
2001*00b67f09SDavid van Moolenbroek	name=$name_save
2002*00b67f09SDavid van Moolenbroek
2003*00b67f09SDavid van Moolenbroek	if test "$droppeddeps" = yes; then
2004*00b67f09SDavid van Moolenbroek	  if test "$module" = yes; then
2005*00b67f09SDavid van Moolenbroek	    echo
2006*00b67f09SDavid van Moolenbroek	    echo "*** Warning: libtool could not satisfy all declared inter-library"
2007*00b67f09SDavid van Moolenbroek	    echo "*** dependencies of module $libname.  Therefore, libtool will create"
2008*00b67f09SDavid van Moolenbroek	    echo "*** a static module, that should work as long as the dlopening"
2009*00b67f09SDavid van Moolenbroek	    echo "*** application is linked with the -dlopen flag."
2010*00b67f09SDavid van Moolenbroek	    if test -z "$global_symbol_pipe"; then
2011*00b67f09SDavid van Moolenbroek	      echo
2012*00b67f09SDavid van Moolenbroek	      echo "*** However, this would only work if libtool was able to extract symbol"
2013*00b67f09SDavid van Moolenbroek	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
2014*00b67f09SDavid van Moolenbroek	      echo "*** not find such a program.  So, this module is probably useless."
2015*00b67f09SDavid van Moolenbroek	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
2016*00b67f09SDavid van Moolenbroek	    fi
2017*00b67f09SDavid van Moolenbroek	    if test "$build_old_libs" = no; then
2018*00b67f09SDavid van Moolenbroek	      oldlibs="$output_objdir/$libname.$libext"
2019*00b67f09SDavid van Moolenbroek	      build_libtool_libs=module
2020*00b67f09SDavid van Moolenbroek	      build_old_libs=yes
2021*00b67f09SDavid van Moolenbroek	    else
2022*00b67f09SDavid van Moolenbroek	      build_libtool_libs=no
2023*00b67f09SDavid van Moolenbroek	    fi
2024*00b67f09SDavid van Moolenbroek	  else
2025*00b67f09SDavid van Moolenbroek	    echo "*** The inter-library dependencies that have been dropped here will be"
2026*00b67f09SDavid van Moolenbroek	    echo "*** automatically added whenever a program is linked with this library"
2027*00b67f09SDavid van Moolenbroek	    echo "*** or is declared to -dlopen it."
2028*00b67f09SDavid van Moolenbroek	  fi
2029*00b67f09SDavid van Moolenbroek	fi
2030*00b67f09SDavid van Moolenbroek	# Done checking deplibs!
2031*00b67f09SDavid van Moolenbroek	deplibs=$newdeplibs
2032*00b67f09SDavid van Moolenbroek      fi
2033*00b67f09SDavid van Moolenbroek
2034*00b67f09SDavid van Moolenbroek      # All the library-specific variables (install_libdir is set above).
2035*00b67f09SDavid van Moolenbroek      library_names=
2036*00b67f09SDavid van Moolenbroek      old_library=
2037*00b67f09SDavid van Moolenbroek      dlname=
2038*00b67f09SDavid van Moolenbroek
2039*00b67f09SDavid van Moolenbroek      # Test again, we may have decided not to build it any more
2040*00b67f09SDavid van Moolenbroek      if test "$build_libtool_libs" = yes; then
2041*00b67f09SDavid van Moolenbroek	# Get the real and link names of the library.
2042*00b67f09SDavid van Moolenbroek	eval library_names=\"$library_names_spec\"
2043*00b67f09SDavid van Moolenbroek	set dummy $library_names
2044*00b67f09SDavid van Moolenbroek	realname="$2"
2045*00b67f09SDavid van Moolenbroek	shift; shift
2046*00b67f09SDavid van Moolenbroek
2047*00b67f09SDavid van Moolenbroek	if test -n "$soname_spec"; then
2048*00b67f09SDavid van Moolenbroek	  eval soname=\"$soname_spec\"
2049*00b67f09SDavid van Moolenbroek	else
2050*00b67f09SDavid van Moolenbroek	  soname="$realname"
2051*00b67f09SDavid van Moolenbroek	fi
2052*00b67f09SDavid van Moolenbroek
2053*00b67f09SDavid van Moolenbroek	lib="$output_objdir/$realname"
2054*00b67f09SDavid van Moolenbroek	for link
2055*00b67f09SDavid van Moolenbroek	do
2056*00b67f09SDavid van Moolenbroek	  linknames="$linknames $link"
2057*00b67f09SDavid van Moolenbroek	done
2058*00b67f09SDavid van Moolenbroek
2059*00b67f09SDavid van Moolenbroek	# Ensure that we have .o objects for linkers which dislike .lo
2060*00b67f09SDavid van Moolenbroek	# (e.g. aix) in case we are running --disable-static
2061*00b67f09SDavid van Moolenbroek	for obj in $libobjs; do
2062*00b67f09SDavid van Moolenbroek	  xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
2063*00b67f09SDavid van Moolenbroek	  if test "X$xdir" = "X$obj"; then
2064*00b67f09SDavid van Moolenbroek	    xdir="."
2065*00b67f09SDavid van Moolenbroek	  else
2066*00b67f09SDavid van Moolenbroek	    xdir="$xdir"
2067*00b67f09SDavid van Moolenbroek	  fi
2068*00b67f09SDavid van Moolenbroek	  baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
2069*00b67f09SDavid van Moolenbroek	  oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
2070*00b67f09SDavid van Moolenbroek	  if test ! -f $xdir/$oldobj; then
2071*00b67f09SDavid van Moolenbroek	    $show "(cd $xdir && ${LN_S} $baseobj $oldobj)"
2072*00b67f09SDavid van Moolenbroek	    $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $?
2073*00b67f09SDavid van Moolenbroek	  fi
2074*00b67f09SDavid van Moolenbroek	done
2075*00b67f09SDavid van Moolenbroek
2076*00b67f09SDavid van Moolenbroek	# Use standard objects if they are pic
2077*00b67f09SDavid van Moolenbroek	test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2078*00b67f09SDavid van Moolenbroek
2079*00b67f09SDavid van Moolenbroek	# Prepare the list of exported symbols
2080*00b67f09SDavid van Moolenbroek	if test -z "$export_symbols"; then
2081*00b67f09SDavid van Moolenbroek	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
2082*00b67f09SDavid van Moolenbroek	    $show "generating symbol list for \`$libname.la'"
2083*00b67f09SDavid van Moolenbroek	    export_symbols="$output_objdir/$libname.exp"
2084*00b67f09SDavid van Moolenbroek	    $run $rm $export_symbols
2085*00b67f09SDavid van Moolenbroek	    eval cmds=\"$export_symbols_cmds\"
2086*00b67f09SDavid van Moolenbroek	    IFS="${IFS= 	}"; save_ifs="$IFS"; IFS='~'
2087*00b67f09SDavid van Moolenbroek	    for cmd in $cmds; do
2088*00b67f09SDavid van Moolenbroek	      IFS="$save_ifs"
2089*00b67f09SDavid van Moolenbroek	      $show "$cmd"
2090*00b67f09SDavid van Moolenbroek	      $run eval "$cmd" || exit $?
2091*00b67f09SDavid van Moolenbroek	    done
2092*00b67f09SDavid van Moolenbroek	    IFS="$save_ifs"
2093*00b67f09SDavid van Moolenbroek	    if test -n "$export_symbols_regex"; then
2094*00b67f09SDavid van Moolenbroek	      $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
2095*00b67f09SDavid van Moolenbroek	      $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
2096*00b67f09SDavid van Moolenbroek	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
2097*00b67f09SDavid van Moolenbroek	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
2098*00b67f09SDavid van Moolenbroek	    fi
2099*00b67f09SDavid van Moolenbroek	  fi
2100*00b67f09SDavid van Moolenbroek	fi
2101*00b67f09SDavid van Moolenbroek
2102*00b67f09SDavid van Moolenbroek	if test -n "$export_symbols" && test -n "$include_expsyms"; then
2103*00b67f09SDavid van Moolenbroek	  $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
2104*00b67f09SDavid van Moolenbroek	fi
2105*00b67f09SDavid van Moolenbroek
2106*00b67f09SDavid van Moolenbroek	if test -n "$convenience"; then
2107*00b67f09SDavid van Moolenbroek	  if test -n "$whole_archive_flag_spec"; then
2108*00b67f09SDavid van Moolenbroek	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
2109*00b67f09SDavid van Moolenbroek	  else
2110*00b67f09SDavid van Moolenbroek	    gentop="$output_objdir/${outputname}x"
2111*00b67f09SDavid van Moolenbroek	    $show "${rm}r $gentop"
2112*00b67f09SDavid van Moolenbroek	    $run ${rm}r "$gentop"
2113*00b67f09SDavid van Moolenbroek	    $show "mkdir $gentop"
2114*00b67f09SDavid van Moolenbroek	    $run mkdir "$gentop"
2115*00b67f09SDavid van Moolenbroek	    status=$?
2116*00b67f09SDavid van Moolenbroek	    if test $status -ne 0 && test ! -d "$gentop"; then
2117*00b67f09SDavid van Moolenbroek	      exit $status
2118*00b67f09SDavid van Moolenbroek	    fi
2119*00b67f09SDavid van Moolenbroek	    generated="$generated $gentop"
2120*00b67f09SDavid van Moolenbroek
2121*00b67f09SDavid van Moolenbroek	    for xlib in $convenience; do
2122*00b67f09SDavid van Moolenbroek	      # Extract the objects.
2123*00b67f09SDavid van Moolenbroek	      case "$xlib" in
2124*00b67f09SDavid van Moolenbroek	      [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
2125*00b67f09SDavid van Moolenbroek	      *) xabs=`pwd`"/$xlib" ;;
2126*00b67f09SDavid van Moolenbroek	      esac
2127*00b67f09SDavid van Moolenbroek	      xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
2128*00b67f09SDavid van Moolenbroek	      xdir="$gentop/$xlib"
2129*00b67f09SDavid van Moolenbroek
2130*00b67f09SDavid van Moolenbroek	      $show "${rm}r $xdir"
2131*00b67f09SDavid van Moolenbroek	      $run ${rm}r "$xdir"
2132*00b67f09SDavid van Moolenbroek	      $show "mkdir $xdir"
2133*00b67f09SDavid van Moolenbroek	      $run mkdir "$xdir"
2134*00b67f09SDavid van Moolenbroek	      status=$?
2135*00b67f09SDavid van Moolenbroek	      if test $status -ne 0 && test ! -d "$xdir"; then
2136*00b67f09SDavid van Moolenbroek		exit $status
2137*00b67f09SDavid van Moolenbroek	      fi
2138*00b67f09SDavid van Moolenbroek	      $show "(cd $xdir && $AR x $xabs)"
2139*00b67f09SDavid van Moolenbroek	      $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
2140*00b67f09SDavid van Moolenbroek
2141*00b67f09SDavid van Moolenbroek	      libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
2142*00b67f09SDavid van Moolenbroek	    done
2143*00b67f09SDavid van Moolenbroek	  fi
2144*00b67f09SDavid van Moolenbroek	fi
2145*00b67f09SDavid van Moolenbroek
2146*00b67f09SDavid van Moolenbroek	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
2147*00b67f09SDavid van Moolenbroek	  eval flag=\"$thread_safe_flag_spec\"
2148*00b67f09SDavid van Moolenbroek	  linkopts="$linkopts $flag"
2149*00b67f09SDavid van Moolenbroek	fi
2150*00b67f09SDavid van Moolenbroek
2151*00b67f09SDavid van Moolenbroek	# Do each of the archive commands.
2152*00b67f09SDavid van Moolenbroek	if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
2153*00b67f09SDavid van Moolenbroek	  eval cmds=\"$archive_expsym_cmds\"
2154*00b67f09SDavid van Moolenbroek	else
2155*00b67f09SDavid van Moolenbroek	  eval cmds=\"$archive_cmds\"
2156*00b67f09SDavid van Moolenbroek	fi
2157*00b67f09SDavid van Moolenbroek	IFS="${IFS= 	}"; save_ifs="$IFS"; IFS='~'
2158*00b67f09SDavid van Moolenbroek	for cmd in $cmds; do
2159*00b67f09SDavid van Moolenbroek	  IFS="$save_ifs"
2160*00b67f09SDavid van Moolenbroek	  $show "$cmd"
2161*00b67f09SDavid van Moolenbroek	  $run eval "$cmd" || exit $?
2162*00b67f09SDavid van Moolenbroek	done
2163*00b67f09SDavid van Moolenbroek	IFS="$save_ifs"
2164*00b67f09SDavid van Moolenbroek
2165*00b67f09SDavid van Moolenbroek	# Create links to the real library.
2166*00b67f09SDavid van Moolenbroek	for linkname in $linknames; do
2167*00b67f09SDavid van Moolenbroek	  if test "$realname" != "$linkname"; then
2168*00b67f09SDavid van Moolenbroek	    $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
2169*00b67f09SDavid van Moolenbroek	    $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
2170*00b67f09SDavid van Moolenbroek	  fi
2171*00b67f09SDavid van Moolenbroek	done
2172*00b67f09SDavid van Moolenbroek
2173*00b67f09SDavid van Moolenbroek	# If -module or -export-dynamic was specified, set the dlname.
2174*00b67f09SDavid van Moolenbroek	if test "$module" = yes || test "$export_dynamic" = yes; then
2175*00b67f09SDavid van Moolenbroek	  # On all known operating systems, these are identical.
2176*00b67f09SDavid van Moolenbroek	  dlname="$soname"
2177*00b67f09SDavid van Moolenbroek	fi
2178*00b67f09SDavid van Moolenbroek      fi
2179*00b67f09SDavid van Moolenbroek      ;;
2180*00b67f09SDavid van Moolenbroek
2181*00b67f09SDavid van Moolenbroek    *.lo | *.o | *.obj)
2182*00b67f09SDavid van Moolenbroek      if test -n "$link_against_libtool_libs"; then
2183*00b67f09SDavid van Moolenbroek	$echo "$modename: error: cannot link libtool libraries into objects" 1>&2
2184*00b67f09SDavid van Moolenbroek	exit 1
2185*00b67f09SDavid van Moolenbroek      fi
2186*00b67f09SDavid van Moolenbroek
2187*00b67f09SDavid van Moolenbroek      if test -n "$deplibs"; then
2188*00b67f09SDavid van Moolenbroek	$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
2189*00b67f09SDavid van Moolenbroek      fi
2190*00b67f09SDavid van Moolenbroek
2191*00b67f09SDavid van Moolenbroek      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2192*00b67f09SDavid van Moolenbroek	$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
2193*00b67f09SDavid van Moolenbroek      fi
2194*00b67f09SDavid van Moolenbroek
2195*00b67f09SDavid van Moolenbroek      if test -n "$rpath"; then
2196*00b67f09SDavid van Moolenbroek	$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
2197*00b67f09SDavid van Moolenbroek      fi
2198*00b67f09SDavid van Moolenbroek
2199*00b67f09SDavid van Moolenbroek      if test -n "$xrpath"; then
2200*00b67f09SDavid van Moolenbroek	$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
2201*00b67f09SDavid van Moolenbroek      fi
2202*00b67f09SDavid van Moolenbroek
2203*00b67f09SDavid van Moolenbroek      if test -n "$vinfo"; then
2204*00b67f09SDavid van Moolenbroek	$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
2205*00b67f09SDavid van Moolenbroek      fi
2206*00b67f09SDavid van Moolenbroek
2207*00b67f09SDavid van Moolenbroek      if test -n "$release"; then
2208*00b67f09SDavid van Moolenbroek	$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
2209*00b67f09SDavid van Moolenbroek      fi
2210*00b67f09SDavid van Moolenbroek
2211*00b67f09SDavid van Moolenbroek      case "$output" in
2212*00b67f09SDavid van Moolenbroek      *.lo)
2213*00b67f09SDavid van Moolenbroek	if test -n "$objs"; then
2214*00b67f09SDavid van Moolenbroek	  $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
2215*00b67f09SDavid van Moolenbroek	  exit 1
2216*00b67f09SDavid van Moolenbroek	fi
2217*00b67f09SDavid van Moolenbroek	libobj="$output"
2218*00b67f09SDavid van Moolenbroek	obj=`$echo "X$output" | $Xsed -e "$lo2o"`
2219*00b67f09SDavid van Moolenbroek	;;
2220*00b67f09SDavid van Moolenbroek      *)
2221*00b67f09SDavid van Moolenbroek	libobj=
2222*00b67f09SDavid van Moolenbroek	obj="$output"
2223*00b67f09SDavid van Moolenbroek	;;
2224*00b67f09SDavid van Moolenbroek      esac
2225*00b67f09SDavid van Moolenbroek
2226*00b67f09SDavid van Moolenbroek      # Delete the old objects.
2227*00b67f09SDavid van Moolenbroek      $run $rm $obj $libobj
2228*00b67f09SDavid van Moolenbroek
2229*00b67f09SDavid van Moolenbroek      # Objects from convenience libraries.  This assumes
2230*00b67f09SDavid van Moolenbroek      # single-version convenience libraries.  Whenever we create
2231*00b67f09SDavid van Moolenbroek      # different ones for PIC/non-PIC, this we'll have to duplicate
2232*00b67f09SDavid van Moolenbroek      # the extraction.
2233*00b67f09SDavid van Moolenbroek      reload_conv_objs=
2234*00b67f09SDavid van Moolenbroek      gentop=
2235*00b67f09SDavid van Moolenbroek      # reload_cmds runs $LD directly, so let us get rid of
2236*00b67f09SDavid van Moolenbroek      # -Wl from whole_archive_flag_spec
2237*00b67f09SDavid van Moolenbroek      wl=
2238*00b67f09SDavid van Moolenbroek
2239*00b67f09SDavid van Moolenbroek      if test -n "$convenience"; then
2240*00b67f09SDavid van Moolenbroek	if test -n "$whole_archive_flag_spec"; then
2241*00b67f09SDavid van Moolenbroek	  eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
2242*00b67f09SDavid van Moolenbroek	else
2243*00b67f09SDavid van Moolenbroek	  gentop="$output_objdir/${obj}x"
2244*00b67f09SDavid van Moolenbroek	  $show "${rm}r $gentop"
2245*00b67f09SDavid van Moolenbroek	  $run ${rm}r "$gentop"
2246*00b67f09SDavid van Moolenbroek	  $show "mkdir $gentop"
2247*00b67f09SDavid van Moolenbroek	  $run mkdir "$gentop"
2248*00b67f09SDavid van Moolenbroek	  status=$?
2249*00b67f09SDavid van Moolenbroek	  if test $status -ne 0 && test ! -d "$gentop"; then
2250*00b67f09SDavid van Moolenbroek	    exit $status
2251*00b67f09SDavid van Moolenbroek	  fi
2252*00b67f09SDavid van Moolenbroek	  generated="$generated $gentop"
2253*00b67f09SDavid van Moolenbroek
2254*00b67f09SDavid van Moolenbroek	  for xlib in $convenience; do
2255*00b67f09SDavid van Moolenbroek	    # Extract the objects.
2256*00b67f09SDavid van Moolenbroek	    case "$xlib" in
2257*00b67f09SDavid van Moolenbroek	    [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
2258*00b67f09SDavid van Moolenbroek	    *) xabs=`pwd`"/$xlib" ;;
2259*00b67f09SDavid van Moolenbroek	    esac
2260*00b67f09SDavid van Moolenbroek	    xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
2261*00b67f09SDavid van Moolenbroek	    xdir="$gentop/$xlib"
2262*00b67f09SDavid van Moolenbroek
2263*00b67f09SDavid van Moolenbroek	    $show "${rm}r $xdir"
2264*00b67f09SDavid van Moolenbroek	    $run ${rm}r "$xdir"
2265*00b67f09SDavid van Moolenbroek	    $show "mkdir $xdir"
2266*00b67f09SDavid van Moolenbroek	    $run mkdir "$xdir"
2267*00b67f09SDavid van Moolenbroek	    status=$?
2268*00b67f09SDavid van Moolenbroek	    if test $status -ne 0 && test ! -d "$xdir"; then
2269*00b67f09SDavid van Moolenbroek	      exit $status
2270*00b67f09SDavid van Moolenbroek	    fi
2271*00b67f09SDavid van Moolenbroek	    $show "(cd $xdir && $AR x $xabs)"
2272*00b67f09SDavid van Moolenbroek	    $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
2273*00b67f09SDavid van Moolenbroek
2274*00b67f09SDavid van Moolenbroek	    reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
2275*00b67f09SDavid van Moolenbroek	  done
2276*00b67f09SDavid van Moolenbroek	fi
2277*00b67f09SDavid van Moolenbroek      fi
2278*00b67f09SDavid van Moolenbroek
2279*00b67f09SDavid van Moolenbroek      # Create the old-style object.
2280*00b67f09SDavid van Moolenbroek      reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs"
2281*00b67f09SDavid van Moolenbroek
2282*00b67f09SDavid van Moolenbroek      output="$obj"
2283*00b67f09SDavid van Moolenbroek      eval cmds=\"$reload_cmds\"
2284*00b67f09SDavid van Moolenbroek      IFS="${IFS= 	}"; save_ifs="$IFS"; IFS='~'
2285*00b67f09SDavid van Moolenbroek      for cmd in $cmds; do
2286*00b67f09SDavid van Moolenbroek	IFS="$save_ifs"
2287*00b67f09SDavid van Moolenbroek	$show "$cmd"
2288*00b67f09SDavid van Moolenbroek	$run eval "$cmd" || exit $?
2289*00b67f09SDavid van Moolenbroek      done
2290*00b67f09SDavid van Moolenbroek      IFS="$save_ifs"
2291*00b67f09SDavid van Moolenbroek
2292*00b67f09SDavid van Moolenbroek      # Exit if we aren't doing a library object file.
2293*00b67f09SDavid van Moolenbroek      if test -z "$libobj"; then
2294*00b67f09SDavid van Moolenbroek	if test -n "$gentop"; then
2295*00b67f09SDavid van Moolenbroek	  $show "${rm}r $gentop"
2296*00b67f09SDavid van Moolenbroek	  $run ${rm}r $gentop
2297*00b67f09SDavid van Moolenbroek	fi
2298*00b67f09SDavid van Moolenbroek
2299*00b67f09SDavid van Moolenbroek	exit 0
2300*00b67f09SDavid van Moolenbroek      fi
2301*00b67f09SDavid van Moolenbroek
2302*00b67f09SDavid van Moolenbroek      if test "$build_libtool_libs" != yes; then
2303*00b67f09SDavid van Moolenbroek	if test -n "$gentop"; then
2304*00b67f09SDavid van Moolenbroek	  $show "${rm}r $gentop"
2305*00b67f09SDavid van Moolenbroek	  $run ${rm}r $gentop
2306*00b67f09SDavid van Moolenbroek	fi
2307*00b67f09SDavid van Moolenbroek
2308*00b67f09SDavid van Moolenbroek	# Create an invalid libtool object if no PIC, so that we don't
2309*00b67f09SDavid van Moolenbroek	# accidentally link it into a program.
2310*00b67f09SDavid van Moolenbroek	$show "echo timestamp > $libobj"
2311*00b67f09SDavid van Moolenbroek	$run eval "echo timestamp > $libobj" || exit $?
2312*00b67f09SDavid van Moolenbroek	exit 0
2313*00b67f09SDavid van Moolenbroek      fi
2314*00b67f09SDavid van Moolenbroek
2315*00b67f09SDavid van Moolenbroek      if test -n "$pic_flag"; then
2316*00b67f09SDavid van Moolenbroek	# Only do commands if we really have different PIC objects.
2317*00b67f09SDavid van Moolenbroek	reload_objs="$libobjs $reload_conv_objs"
2318*00b67f09SDavid van Moolenbroek	output="$libobj"
2319*00b67f09SDavid van Moolenbroek	eval cmds=\"$reload_cmds\"
2320*00b67f09SDavid van Moolenbroek	IFS="${IFS= 	}"; save_ifs="$IFS"; IFS='~'
2321*00b67f09SDavid van Moolenbroek	for cmd in $cmds; do
2322*00b67f09SDavid van Moolenbroek	  IFS="$save_ifs"
2323*00b67f09SDavid van Moolenbroek	  $show "$cmd"
2324*00b67f09SDavid van Moolenbroek	  $run eval "$cmd" || exit $?
2325*00b67f09SDavid van Moolenbroek	done
2326*00b67f09SDavid van Moolenbroek	IFS="$save_ifs"
2327*00b67f09SDavid van Moolenbroek      else
2328*00b67f09SDavid van Moolenbroek	# Just create a symlink.
2329*00b67f09SDavid van Moolenbroek	$show $rm $libobj
2330*00b67f09SDavid van Moolenbroek	$run $rm $libobj
2331*00b67f09SDavid van Moolenbroek	xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
2332*00b67f09SDavid van Moolenbroek	if test "X$xdir" = "X$libobj"; then
2333*00b67f09SDavid van Moolenbroek	  xdir="."
2334*00b67f09SDavid van Moolenbroek	else
2335*00b67f09SDavid van Moolenbroek	  xdir="$xdir"
2336*00b67f09SDavid van Moolenbroek	fi
2337*00b67f09SDavid van Moolenbroek	baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
2338*00b67f09SDavid van Moolenbroek	oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
2339*00b67f09SDavid van Moolenbroek	$show "(cd $xdir && $LN_S $oldobj $baseobj)"
2340*00b67f09SDavid van Moolenbroek	$run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $?
2341*00b67f09SDavid van Moolenbroek      fi
2342*00b67f09SDavid van Moolenbroek
2343*00b67f09SDavid van Moolenbroek      if test -n "$gentop"; then
2344*00b67f09SDavid van Moolenbroek	$show "${rm}r $gentop"
2345*00b67f09SDavid van Moolenbroek	$run ${rm}r $gentop
2346*00b67f09SDavid van Moolenbroek      fi
2347*00b67f09SDavid van Moolenbroek
2348*00b67f09SDavid van Moolenbroek      exit 0
2349*00b67f09SDavid van Moolenbroek      ;;
2350*00b67f09SDavid van Moolenbroek
2351*00b67f09SDavid van Moolenbroek    # Anything else should be a program.
2352*00b67f09SDavid van Moolenbroek    *)
2353*00b67f09SDavid van Moolenbroek      if test -n "$vinfo"; then
2354*00b67f09SDavid van Moolenbroek	$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
2355*00b67f09SDavid van Moolenbroek      fi
2356*00b67f09SDavid van Moolenbroek
2357*00b67f09SDavid van Moolenbroek      if test -n "$release"; then
2358*00b67f09SDavid van Moolenbroek	$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
2359*00b67f09SDavid van Moolenbroek      fi
2360*00b67f09SDavid van Moolenbroek
2361*00b67f09SDavid van Moolenbroek      if test "$preload" = yes; then
2362*00b67f09SDavid van Moolenbroek	if test "$dlopen" = unknown && test "$dlopen_self" = unknown &&
2363*00b67f09SDavid van Moolenbroek	   test "$dlopen_self_static" = unknown; then
2364*00b67f09SDavid van Moolenbroek	  $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
2365*00b67f09SDavid van Moolenbroek	fi
2366*00b67f09SDavid van Moolenbroek      fi
2367*00b67f09SDavid van Moolenbroek
2368*00b67f09SDavid van Moolenbroek      if test -n "$rpath$xrpath"; then
2369*00b67f09SDavid van Moolenbroek	# If the user specified any rpath flags, then add them.
2370*00b67f09SDavid van Moolenbroek	for libdir in $rpath $xrpath; do
2371*00b67f09SDavid van Moolenbroek	  # This is the magic to use -rpath.
2372*00b67f09SDavid van Moolenbroek	  case "$compile_rpath " in
2373*00b67f09SDavid van Moolenbroek	  *" $libdir "*) ;;
2374*00b67f09SDavid van Moolenbroek	  *) compile_rpath="$compile_rpath $libdir" ;;
2375*00b67f09SDavid van Moolenbroek	  esac
2376*00b67f09SDavid van Moolenbroek	  case "$finalize_rpath " in
2377*00b67f09SDavid van Moolenbroek	  *" $libdir "*) ;;
2378*00b67f09SDavid van Moolenbroek	  *) finalize_rpath="$finalize_rpath $libdir" ;;
2379*00b67f09SDavid van Moolenbroek	  esac
2380*00b67f09SDavid van Moolenbroek	done
2381*00b67f09SDavid van Moolenbroek      fi
2382*00b67f09SDavid van Moolenbroek
2383*00b67f09SDavid van Moolenbroek      # Now hardcode the library paths
2384*00b67f09SDavid van Moolenbroek      rpath=
2385*00b67f09SDavid van Moolenbroek      hardcode_libdirs=
2386*00b67f09SDavid van Moolenbroek      for libdir in $compile_rpath $finalize_rpath; do
2387*00b67f09SDavid van Moolenbroek	if test -n "$hardcode_libdir_flag_spec"; then
2388*00b67f09SDavid van Moolenbroek	  if test -n "$hardcode_libdir_separator"; then
2389*00b67f09SDavid van Moolenbroek	    if test -z "$hardcode_libdirs"; then
2390*00b67f09SDavid van Moolenbroek	      hardcode_libdirs="$libdir"
2391*00b67f09SDavid van Moolenbroek	    else
2392*00b67f09SDavid van Moolenbroek	      # Just accumulate the unique libdirs.
2393*00b67f09SDavid van Moolenbroek	      case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
2394*00b67f09SDavid van Moolenbroek	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
2395*00b67f09SDavid van Moolenbroek		;;
2396*00b67f09SDavid van Moolenbroek	      *)
2397*00b67f09SDavid van Moolenbroek		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
2398*00b67f09SDavid van Moolenbroek		;;
2399*00b67f09SDavid van Moolenbroek	      esac
2400*00b67f09SDavid van Moolenbroek	    fi
2401*00b67f09SDavid van Moolenbroek	  else
2402*00b67f09SDavid van Moolenbroek	    eval flag=\"$hardcode_libdir_flag_spec\"
2403*00b67f09SDavid van Moolenbroek	    rpath="$rpath $flag"
2404*00b67f09SDavid van Moolenbroek	  fi
2405*00b67f09SDavid van Moolenbroek	elif test -n "$runpath_var"; then
2406*00b67f09SDavid van Moolenbroek	  case "$perm_rpath " in
2407*00b67f09SDavid van Moolenbroek	  *" $libdir "*) ;;
2408*00b67f09SDavid van Moolenbroek	  *) perm_rpath="$perm_rpath $libdir" ;;
2409*00b67f09SDavid van Moolenbroek	  esac
2410*00b67f09SDavid van Moolenbroek	fi
2411*00b67f09SDavid van Moolenbroek      done
2412*00b67f09SDavid van Moolenbroek      # Substitute the hardcoded libdirs into the rpath.
2413*00b67f09SDavid van Moolenbroek      if test -n "$hardcode_libdir_separator" &&
2414*00b67f09SDavid van Moolenbroek	 test -n "$hardcode_libdirs"; then
2415*00b67f09SDavid van Moolenbroek	libdir="$hardcode_libdirs"
2416*00b67f09SDavid van Moolenbroek	eval rpath=\" $hardcode_libdir_flag_spec\"
2417*00b67f09SDavid van Moolenbroek      fi
2418*00b67f09SDavid van Moolenbroek      compile_rpath="$rpath"
2419*00b67f09SDavid van Moolenbroek
2420*00b67f09SDavid van Moolenbroek      rpath=
2421*00b67f09SDavid van Moolenbroek      hardcode_libdirs=
2422*00b67f09SDavid van Moolenbroek      for libdir in $finalize_rpath; do
2423*00b67f09SDavid van Moolenbroek	if test -n "$hardcode_libdir_flag_spec"; then
2424*00b67f09SDavid van Moolenbroek	  if test -n "$hardcode_libdir_separator"; then
2425*00b67f09SDavid van Moolenbroek	    if test -z "$hardcode_libdirs"; then
2426*00b67f09SDavid van Moolenbroek	      hardcode_libdirs="$libdir"
2427*00b67f09SDavid van Moolenbroek	    else
2428*00b67f09SDavid van Moolenbroek	      # Just accumulate the unique libdirs.
2429*00b67f09SDavid van Moolenbroek	      case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
2430*00b67f09SDavid van Moolenbroek	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
2431*00b67f09SDavid van Moolenbroek		;;
2432*00b67f09SDavid van Moolenbroek	      *)
2433*00b67f09SDavid van Moolenbroek		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
2434*00b67f09SDavid van Moolenbroek		;;
2435*00b67f09SDavid van Moolenbroek	      esac
2436*00b67f09SDavid van Moolenbroek	    fi
2437*00b67f09SDavid van Moolenbroek	  else
2438*00b67f09SDavid van Moolenbroek	    eval flag=\"$hardcode_libdir_flag_spec\"
2439*00b67f09SDavid van Moolenbroek	    rpath="$rpath $flag"
2440*00b67f09SDavid van Moolenbroek	  fi
2441*00b67f09SDavid van Moolenbroek	elif test -n "$runpath_var"; then
2442*00b67f09SDavid van Moolenbroek	  case "$finalize_perm_rpath " in
2443*00b67f09SDavid van Moolenbroek	  *" $libdir "*) ;;
2444*00b67f09SDavid van Moolenbroek	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
2445*00b67f09SDavid van Moolenbroek	  esac
2446*00b67f09SDavid van Moolenbroek	fi
2447*00b67f09SDavid van Moolenbroek      done
2448*00b67f09SDavid van Moolenbroek      # Substitute the hardcoded libdirs into the rpath.
2449*00b67f09SDavid van Moolenbroek      if test -n "$hardcode_libdir_separator" &&
2450*00b67f09SDavid van Moolenbroek	 test -n "$hardcode_libdirs"; then
2451*00b67f09SDavid van Moolenbroek	libdir="$hardcode_libdirs"
2452*00b67f09SDavid van Moolenbroek	eval rpath=\" $hardcode_libdir_flag_spec\"
2453*00b67f09SDavid van Moolenbroek      fi
2454*00b67f09SDavid van Moolenbroek      finalize_rpath="$rpath"
2455*00b67f09SDavid van Moolenbroek
2456*00b67f09SDavid van Moolenbroek      output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
2457*00b67f09SDavid van Moolenbroek      if test "X$output_objdir" = "X$output"; then
2458*00b67f09SDavid van Moolenbroek	output_objdir="$objdir"
2459*00b67f09SDavid van Moolenbroek      else
2460*00b67f09SDavid van Moolenbroek	output_objdir="$output_objdir/$objdir"
2461*00b67f09SDavid van Moolenbroek      fi
2462*00b67f09SDavid van Moolenbroek
2463*00b67f09SDavid van Moolenbroek      # Create the binary in the object directory, then wrap it.
2464*00b67f09SDavid van Moolenbroek      if test ! -d $output_objdir; then
2465*00b67f09SDavid van Moolenbroek	$show "$mkdir $output_objdir"
2466*00b67f09SDavid van Moolenbroek	$run $mkdir $output_objdir
2467*00b67f09SDavid van Moolenbroek	status=$?
2468*00b67f09SDavid van Moolenbroek	if test $status -ne 0 && test ! -d $output_objdir; then
2469*00b67f09SDavid van Moolenbroek	  exit $status
2470*00b67f09SDavid van Moolenbroek	fi
2471*00b67f09SDavid van Moolenbroek      fi
2472*00b67f09SDavid van Moolenbroek
2473*00b67f09SDavid van Moolenbroek      if test -n "$libobjs" && test "$build_old_libs" = yes; then
2474*00b67f09SDavid van Moolenbroek	# Transform all the library objects into standard objects.
2475*00b67f09SDavid van Moolenbroek	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2476*00b67f09SDavid van Moolenbroek	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2477*00b67f09SDavid van Moolenbroek      fi
2478*00b67f09SDavid van Moolenbroek
2479*00b67f09SDavid van Moolenbroek      dlsyms=
2480*00b67f09SDavid van Moolenbroek      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2481*00b67f09SDavid van Moolenbroek	if test -n "$NM" && test -n "$global_symbol_pipe"; then
2482*00b67f09SDavid van Moolenbroek	  dlsyms="${outputname}S.c"
2483*00b67f09SDavid van Moolenbroek	else
2484*00b67f09SDavid van Moolenbroek	  $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
2485*00b67f09SDavid van Moolenbroek	fi
2486*00b67f09SDavid van Moolenbroek      fi
2487*00b67f09SDavid van Moolenbroek
2488*00b67f09SDavid van Moolenbroek      if test -n "$dlsyms"; then
2489*00b67f09SDavid van Moolenbroek	case "$dlsyms" in
2490*00b67f09SDavid van Moolenbroek	"") ;;
2491*00b67f09SDavid van Moolenbroek	*.c)
2492*00b67f09SDavid van Moolenbroek	  # Discover the nlist of each of the dlfiles.
2493*00b67f09SDavid van Moolenbroek	  nlist="$output_objdir/${outputname}.nm"
2494*00b67f09SDavid van Moolenbroek
2495*00b67f09SDavid van Moolenbroek	  $show "$rm $nlist ${nlist}S ${nlist}T"
2496*00b67f09SDavid van Moolenbroek	  $run $rm "$nlist" "${nlist}S" "${nlist}T"
2497*00b67f09SDavid van Moolenbroek
2498*00b67f09SDavid van Moolenbroek	  # Parse the name list into a source file.
2499*00b67f09SDavid van Moolenbroek	  $show "creating $output_objdir/$dlsyms"
2500*00b67f09SDavid van Moolenbroek
2501*00b67f09SDavid van Moolenbroek	  test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
2502*00b67f09SDavid van Moolenbroek/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
2503*00b67f09SDavid van Moolenbroek/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
2504*00b67f09SDavid van Moolenbroek
2505*00b67f09SDavid van Moolenbroek#ifdef __cplusplus
2506*00b67f09SDavid van Moolenbroekextern \"C\" {
2507*00b67f09SDavid van Moolenbroek#endif
2508*00b67f09SDavid van Moolenbroek
2509*00b67f09SDavid van Moolenbroek/* Prevent the only kind of declaration conflicts we can make. */
2510*00b67f09SDavid van Moolenbroek#define lt_preloaded_symbols some_other_symbol
2511*00b67f09SDavid van Moolenbroek
2512*00b67f09SDavid van Moolenbroek/* External symbol declarations for the compiler. */\
2513*00b67f09SDavid van Moolenbroek"
2514*00b67f09SDavid van Moolenbroek
2515*00b67f09SDavid van Moolenbroek	  if test "$dlself" = yes; then
2516*00b67f09SDavid van Moolenbroek	    $show "generating symbol list for \`$output'"
2517*00b67f09SDavid van Moolenbroek
2518*00b67f09SDavid van Moolenbroek	    test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
2519*00b67f09SDavid van Moolenbroek
2520*00b67f09SDavid van Moolenbroek	    # Add our own program objects to the symbol list.
2521*00b67f09SDavid van Moolenbroek	    progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2522*00b67f09SDavid van Moolenbroek	    for arg in $progfiles; do
2523*00b67f09SDavid van Moolenbroek	      $show "extracting global C symbols from \`$arg'"
2524*00b67f09SDavid van Moolenbroek	      $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
2525*00b67f09SDavid van Moolenbroek	    done
2526*00b67f09SDavid van Moolenbroek
2527*00b67f09SDavid van Moolenbroek	    if test -n "$exclude_expsyms"; then
2528*00b67f09SDavid van Moolenbroek	      $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
2529*00b67f09SDavid van Moolenbroek	      $run eval '$mv "$nlist"T "$nlist"'
2530*00b67f09SDavid van Moolenbroek	    fi
2531*00b67f09SDavid van Moolenbroek
2532*00b67f09SDavid van Moolenbroek	    if test -n "$export_symbols_regex"; then
2533*00b67f09SDavid van Moolenbroek	      $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T'
2534*00b67f09SDavid van Moolenbroek	      $run eval '$mv "$nlist"T "$nlist"'
2535*00b67f09SDavid van Moolenbroek	    fi
2536*00b67f09SDavid van Moolenbroek
2537*00b67f09SDavid van Moolenbroek	    # Prepare the list of exported symbols
2538*00b67f09SDavid van Moolenbroek	    if test -z "$export_symbols"; then
2539*00b67f09SDavid van Moolenbroek	      export_symbols="$output_objdir/$output.exp"
2540*00b67f09SDavid van Moolenbroek	      $run $rm $export_symbols
2541*00b67f09SDavid van Moolenbroek	      $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
2542*00b67f09SDavid van Moolenbroek	    else
2543*00b67f09SDavid van Moolenbroek	      $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
2544*00b67f09SDavid van Moolenbroek	      $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
2545*00b67f09SDavid van Moolenbroek	      $run eval 'mv "$nlist"T "$nlist"'
2546*00b67f09SDavid van Moolenbroek	    fi
2547*00b67f09SDavid van Moolenbroek	  fi
2548*00b67f09SDavid van Moolenbroek
2549*00b67f09SDavid van Moolenbroek	  for arg in $dlprefiles; do
2550*00b67f09SDavid van Moolenbroek	    $show "extracting global C symbols from \`$arg'"
2551*00b67f09SDavid van Moolenbroek	    name=`echo "$arg" | sed -e 's%^.*/%%'`
2552*00b67f09SDavid van Moolenbroek	    $run eval 'echo ": $name " >> "$nlist"'
2553*00b67f09SDavid van Moolenbroek	    $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
2554*00b67f09SDavid van Moolenbroek	  done
2555*00b67f09SDavid van Moolenbroek
2556*00b67f09SDavid van Moolenbroek	  if test -z "$run"; then
2557*00b67f09SDavid van Moolenbroek	    # Make sure we have at least an empty file.
2558*00b67f09SDavid van Moolenbroek	    test -f "$nlist" || : > "$nlist"
2559*00b67f09SDavid van Moolenbroek
2560*00b67f09SDavid van Moolenbroek	    if test -n "$exclude_expsyms"; then
2561*00b67f09SDavid van Moolenbroek	      egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
2562*00b67f09SDavid van Moolenbroek	      $mv "$nlist"T "$nlist"
2563*00b67f09SDavid van Moolenbroek	    fi
2564*00b67f09SDavid van Moolenbroek
2565*00b67f09SDavid van Moolenbroek	    # Try sorting and uniquifying the output.
2566*00b67f09SDavid van Moolenbroek	    if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then
2567*00b67f09SDavid van Moolenbroek	      :
2568*00b67f09SDavid van Moolenbroek	    else
2569*00b67f09SDavid van Moolenbroek	      grep -v "^: " < "$nlist" > "$nlist"S
2570*00b67f09SDavid van Moolenbroek	    fi
2571*00b67f09SDavid van Moolenbroek
2572*00b67f09SDavid van Moolenbroek	    if test -f "$nlist"S; then
2573*00b67f09SDavid van Moolenbroek	      eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
2574*00b67f09SDavid van Moolenbroek	    else
2575*00b67f09SDavid van Moolenbroek	      echo '/* NONE */' >> "$output_objdir/$dlsyms"
2576*00b67f09SDavid van Moolenbroek	    fi
2577*00b67f09SDavid van Moolenbroek
2578*00b67f09SDavid van Moolenbroek	    $echo >> "$output_objdir/$dlsyms" "\
2579*00b67f09SDavid van Moolenbroek
2580*00b67f09SDavid van Moolenbroek#undef lt_preloaded_symbols
2581*00b67f09SDavid van Moolenbroek
2582*00b67f09SDavid van Moolenbroek#if defined (__STDC__) && __STDC__
2583*00b67f09SDavid van Moolenbroek# define lt_ptr_t void *
2584*00b67f09SDavid van Moolenbroek#else
2585*00b67f09SDavid van Moolenbroek# define lt_ptr_t char *
2586*00b67f09SDavid van Moolenbroek# define const
2587*00b67f09SDavid van Moolenbroek#endif
2588*00b67f09SDavid van Moolenbroek
2589*00b67f09SDavid van Moolenbroek/* The mapping between symbol names and symbols. */
2590*00b67f09SDavid van Moolenbroekconst struct {
2591*00b67f09SDavid van Moolenbroek  const char *name;
2592*00b67f09SDavid van Moolenbroek  lt_ptr_t address;
2593*00b67f09SDavid van Moolenbroek}
2594*00b67f09SDavid van Moolenbroeklt_preloaded_symbols[] =
2595*00b67f09SDavid van Moolenbroek{\
2596*00b67f09SDavid van Moolenbroek"
2597*00b67f09SDavid van Moolenbroek
2598*00b67f09SDavid van Moolenbroek	    sed -n -e 's/^: \([^ ]*\) $/  {\"\1\", (lt_ptr_t) 0},/p' \
2599*00b67f09SDavid van Moolenbroek		-e 's/^. \([^ ]*\) \([^ ]*\)$/  {"\2", (lt_ptr_t) \&\2},/p' \
2600*00b67f09SDavid van Moolenbroek		  < "$nlist" >> "$output_objdir/$dlsyms"
2601*00b67f09SDavid van Moolenbroek
2602*00b67f09SDavid van Moolenbroek	    $echo >> "$output_objdir/$dlsyms" "\
2603*00b67f09SDavid van Moolenbroek  {0, (lt_ptr_t) 0}
2604*00b67f09SDavid van Moolenbroek};
2605*00b67f09SDavid van Moolenbroek
2606*00b67f09SDavid van Moolenbroek/* This works around a problem in FreeBSD linker */
2607*00b67f09SDavid van Moolenbroek#ifdef FREEBSD_WORKAROUND
2608*00b67f09SDavid van Moolenbroekstatic const void *lt_preloaded_setup() {
2609*00b67f09SDavid van Moolenbroek  return lt_preloaded_symbols;
2610*00b67f09SDavid van Moolenbroek}
2611*00b67f09SDavid van Moolenbroek#endif
2612*00b67f09SDavid van Moolenbroek
2613*00b67f09SDavid van Moolenbroek#ifdef __cplusplus
2614*00b67f09SDavid van Moolenbroek}
2615*00b67f09SDavid van Moolenbroek#endif\
2616*00b67f09SDavid van Moolenbroek"
2617*00b67f09SDavid van Moolenbroek	  fi
2618*00b67f09SDavid van Moolenbroek
2619*00b67f09SDavid van Moolenbroek	  pic_flag_for_symtable=
2620*00b67f09SDavid van Moolenbroek	  case "$host" in
2621*00b67f09SDavid van Moolenbroek	  # compiling the symbol table file with pic_flag works around
2622*00b67f09SDavid van Moolenbroek	  # a FreeBSD bug that causes programs to crash when -lm is
2623*00b67f09SDavid van Moolenbroek	  # linked before any other PIC object.  But we must not use
2624*00b67f09SDavid van Moolenbroek	  # pic_flag when linking with -static.  The problem exists in
2625*00b67f09SDavid van Moolenbroek	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
2626*00b67f09SDavid van Moolenbroek	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
2627*00b67f09SDavid van Moolenbroek	    case "$compile_command " in
2628*00b67f09SDavid van Moolenbroek	    *" -static "*) ;;
2629*00b67f09SDavid van Moolenbroek	    *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";;
2630*00b67f09SDavid van Moolenbroek	    esac;;
2631*00b67f09SDavid van Moolenbroek	  *-*-hpux*)
2632*00b67f09SDavid van Moolenbroek	    case "$compile_command " in
2633*00b67f09SDavid van Moolenbroek	    *" -static "*) ;;
2634*00b67f09SDavid van Moolenbroek	    *) pic_flag_for_symtable=" $pic_flag -DPIC";;
2635*00b67f09SDavid van Moolenbroek	    esac
2636*00b67f09SDavid van Moolenbroek	  esac
2637*00b67f09SDavid van Moolenbroek
2638*00b67f09SDavid van Moolenbroek	  # Now compile the dynamic symbol file.
2639*00b67f09SDavid van Moolenbroek	  $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
2640*00b67f09SDavid van Moolenbroek	  $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
2641*00b67f09SDavid van Moolenbroek
2642*00b67f09SDavid van Moolenbroek	  # Clean up the generated files.
2643*00b67f09SDavid van Moolenbroek	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
2644*00b67f09SDavid van Moolenbroek	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
2645*00b67f09SDavid van Moolenbroek
2646*00b67f09SDavid van Moolenbroek	  # Transform the symbol file into the correct name.
2647*00b67f09SDavid van Moolenbroek	  compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
2648*00b67f09SDavid van Moolenbroek	  finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
2649*00b67f09SDavid van Moolenbroek	  ;;
2650*00b67f09SDavid van Moolenbroek	*)
2651*00b67f09SDavid van Moolenbroek	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
2652*00b67f09SDavid van Moolenbroek	  exit 1
2653*00b67f09SDavid van Moolenbroek	  ;;
2654*00b67f09SDavid van Moolenbroek	esac
2655*00b67f09SDavid van Moolenbroek      else
2656*00b67f09SDavid van Moolenbroek	# We keep going just in case the user didn't refer to
2657*00b67f09SDavid van Moolenbroek	# lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
2658*00b67f09SDavid van Moolenbroek	# really was required.
2659*00b67f09SDavid van Moolenbroek
2660*00b67f09SDavid van Moolenbroek	# Nullify the symbol file.
2661*00b67f09SDavid van Moolenbroek	compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
2662*00b67f09SDavid van Moolenbroek	finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
2663*00b67f09SDavid van Moolenbroek      fi
2664*00b67f09SDavid van Moolenbroek
2665*00b67f09SDavid van Moolenbroek      if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then
2666*00b67f09SDavid van Moolenbroek	# Replace the output file specification.
2667*00b67f09SDavid van Moolenbroek	compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
2668*00b67f09SDavid van Moolenbroek	link_command="$compile_command$compile_rpath"
2669*00b67f09SDavid van Moolenbroek
2670*00b67f09SDavid van Moolenbroek	# We have no uninstalled library dependencies, so finalize right now.
2671*00b67f09SDavid van Moolenbroek	$show "$link_command"
2672*00b67f09SDavid van Moolenbroek	$run eval "$link_command"
2673*00b67f09SDavid van Moolenbroek	status=$?
2674*00b67f09SDavid van Moolenbroek
2675*00b67f09SDavid van Moolenbroek	# Delete the generated files.
2676*00b67f09SDavid van Moolenbroek	if test -n "$dlsyms"; then
2677*00b67f09SDavid van Moolenbroek	  $show "$rm $output_objdir/${outputname}S.${objext}"
2678*00b67f09SDavid van Moolenbroek	  $run $rm "$output_objdir/${outputname}S.${objext}"
2679*00b67f09SDavid van Moolenbroek	fi
2680*00b67f09SDavid van Moolenbroek
2681*00b67f09SDavid van Moolenbroek	exit $status
2682*00b67f09SDavid van Moolenbroek      fi
2683*00b67f09SDavid van Moolenbroek
2684*00b67f09SDavid van Moolenbroek      if test -n "$shlibpath_var"; then
2685*00b67f09SDavid van Moolenbroek	# We should set the shlibpath_var
2686*00b67f09SDavid van Moolenbroek	rpath=
2687*00b67f09SDavid van Moolenbroek	for dir in $temp_rpath; do
2688*00b67f09SDavid van Moolenbroek	  case "$dir" in
2689*00b67f09SDavid van Moolenbroek	  [\\/]* | [A-Za-z]:[\\/]*)
2690*00b67f09SDavid van Moolenbroek	    # Absolute path.
2691*00b67f09SDavid van Moolenbroek	    rpath="$rpath$dir:"
2692*00b67f09SDavid van Moolenbroek	    ;;
2693*00b67f09SDavid van Moolenbroek	  *)
2694*00b67f09SDavid van Moolenbroek	    # Relative path: add a thisdir entry.
2695*00b67f09SDavid van Moolenbroek	    rpath="$rpath\$thisdir/$dir:"
2696*00b67f09SDavid van Moolenbroek	    ;;
2697*00b67f09SDavid van Moolenbroek	  esac
2698*00b67f09SDavid van Moolenbroek	done
2699*00b67f09SDavid van Moolenbroek	temp_rpath="$rpath"
2700*00b67f09SDavid van Moolenbroek      fi
2701*00b67f09SDavid van Moolenbroek
2702*00b67f09SDavid van Moolenbroek      if test -n "$compile_shlibpath$finalize_shlibpath"; then
2703*00b67f09SDavid van Moolenbroek	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
2704*00b67f09SDavid van Moolenbroek      fi
2705*00b67f09SDavid van Moolenbroek      if test -n "$finalize_shlibpath"; then
2706*00b67f09SDavid van Moolenbroek	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
2707*00b67f09SDavid van Moolenbroek      fi
2708*00b67f09SDavid van Moolenbroek
2709*00b67f09SDavid van Moolenbroek      compile_var=
2710*00b67f09SDavid van Moolenbroek      finalize_var=
2711*00b67f09SDavid van Moolenbroek      if test -n "$runpath_var"; then
2712*00b67f09SDavid van Moolenbroek	if test -n "$perm_rpath"; then
2713*00b67f09SDavid van Moolenbroek	  # We should set the runpath_var.
2714*00b67f09SDavid van Moolenbroek	  rpath=
2715*00b67f09SDavid van Moolenbroek	  for dir in $perm_rpath; do
2716*00b67f09SDavid van Moolenbroek	    rpath="$rpath$dir:"
2717*00b67f09SDavid van Moolenbroek	  done
2718*00b67f09SDavid van Moolenbroek	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
2719*00b67f09SDavid van Moolenbroek	fi
2720*00b67f09SDavid van Moolenbroek	if test -n "$finalize_perm_rpath"; then
2721*00b67f09SDavid van Moolenbroek	  # We should set the runpath_var.
2722*00b67f09SDavid van Moolenbroek	  rpath=
2723*00b67f09SDavid van Moolenbroek	  for dir in $finalize_perm_rpath; do
2724*00b67f09SDavid van Moolenbroek	    rpath="$rpath$dir:"
2725*00b67f09SDavid van Moolenbroek	  done
2726*00b67f09SDavid van Moolenbroek	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
2727*00b67f09SDavid van Moolenbroek	fi
2728*00b67f09SDavid van Moolenbroek      fi
2729*00b67f09SDavid van Moolenbroek
2730*00b67f09SDavid van Moolenbroek      if test "$hardcode_action" = relink; then
2731*00b67f09SDavid van Moolenbroek	# Fast installation is not supported
2732*00b67f09SDavid van Moolenbroek	link_command="$compile_var$compile_command$compile_rpath"
2733*00b67f09SDavid van Moolenbroek	relink_command="$finalize_var$finalize_command$finalize_rpath"
2734*00b67f09SDavid van Moolenbroek
2735*00b67f09SDavid van Moolenbroek	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
2736*00b67f09SDavid van Moolenbroek	$echo "$modename: \`$output' will be relinked during installation" 1>&2
2737*00b67f09SDavid van Moolenbroek      else
2738*00b67f09SDavid van Moolenbroek	if test "$fast_install" != no; then
2739*00b67f09SDavid van Moolenbroek	  link_command="$finalize_var$compile_command$finalize_rpath"
2740*00b67f09SDavid van Moolenbroek	  if test "$fast_install" = yes; then
2741*00b67f09SDavid van Moolenbroek	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
2742*00b67f09SDavid van Moolenbroek	  else
2743*00b67f09SDavid van Moolenbroek	    # fast_install is set to needless
2744*00b67f09SDavid van Moolenbroek	    relink_command=
2745*00b67f09SDavid van Moolenbroek	  fi
2746*00b67f09SDavid van Moolenbroek	else
2747*00b67f09SDavid van Moolenbroek	  link_command="$compile_var$compile_command$compile_rpath"
2748*00b67f09SDavid van Moolenbroek	  relink_command="$finalize_var$finalize_command$finalize_rpath"
2749*00b67f09SDavid van Moolenbroek	fi
2750*00b67f09SDavid van Moolenbroek      fi
2751*00b67f09SDavid van Moolenbroek
2752*00b67f09SDavid van Moolenbroek      # Replace the output file specification.
2753*00b67f09SDavid van Moolenbroek      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
2754*00b67f09SDavid van Moolenbroek
2755*00b67f09SDavid van Moolenbroek      # Delete the old output files.
2756*00b67f09SDavid van Moolenbroek      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
2757*00b67f09SDavid van Moolenbroek
2758*00b67f09SDavid van Moolenbroek      $show "$link_command"
2759*00b67f09SDavid van Moolenbroek      $run eval "$link_command" || exit $?
2760*00b67f09SDavid van Moolenbroek
2761*00b67f09SDavid van Moolenbroek      # Now create the wrapper script.
2762*00b67f09SDavid van Moolenbroek      $show "creating $output"
2763*00b67f09SDavid van Moolenbroek
2764*00b67f09SDavid van Moolenbroek      # Quote the relink command for shipping.
2765*00b67f09SDavid van Moolenbroek      if test -n "$relink_command"; then
2766*00b67f09SDavid van Moolenbroek	relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
2767*00b67f09SDavid van Moolenbroek      fi
2768*00b67f09SDavid van Moolenbroek
2769*00b67f09SDavid van Moolenbroek      # Quote $echo for shipping.
2770*00b67f09SDavid van Moolenbroek      if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
2771*00b67f09SDavid van Moolenbroek	case "$0" in
2772*00b67f09SDavid van Moolenbroek	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
2773*00b67f09SDavid van Moolenbroek	*) qecho="$SHELL `pwd`/$0 --fallback-echo";;
2774*00b67f09SDavid van Moolenbroek	esac
2775*00b67f09SDavid van Moolenbroek	qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
2776*00b67f09SDavid van Moolenbroek      else
2777*00b67f09SDavid van Moolenbroek	qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
2778*00b67f09SDavid van Moolenbroek      fi
2779*00b67f09SDavid van Moolenbroek
2780*00b67f09SDavid van Moolenbroek      # Only actually do things if our run command is non-null.
2781*00b67f09SDavid van Moolenbroek      if test -z "$run"; then
2782*00b67f09SDavid van Moolenbroek	# win32 will think the script is a binary if it has
2783*00b67f09SDavid van Moolenbroek	# a .exe suffix, so we strip it off here.
2784*00b67f09SDavid van Moolenbroek	case $output in
2785*00b67f09SDavid van Moolenbroek	  *.exe) output=`echo $output|sed 's,.exe$,,'` ;;
2786*00b67f09SDavid van Moolenbroek	esac
2787*00b67f09SDavid van Moolenbroek	$rm $output
2788*00b67f09SDavid van Moolenbroek	trap "$rm $output; exit 1" 1 2 15
2789*00b67f09SDavid van Moolenbroek
2790*00b67f09SDavid van Moolenbroek	$echo > $output "\
2791*00b67f09SDavid van Moolenbroek#! $SHELL
2792*00b67f09SDavid van Moolenbroek
2793*00b67f09SDavid van Moolenbroek# $output - temporary wrapper script for $objdir/$outputname
2794*00b67f09SDavid van Moolenbroek# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
2795*00b67f09SDavid van Moolenbroek#
2796*00b67f09SDavid van Moolenbroek# The $output program cannot be directly executed until all the libtool
2797*00b67f09SDavid van Moolenbroek# libraries that it depends on are installed.
2798*00b67f09SDavid van Moolenbroek#
2799*00b67f09SDavid van Moolenbroek# This wrapper script should never be moved out of the build directory.
2800*00b67f09SDavid van Moolenbroek# If it is, it will not operate correctly.
2801*00b67f09SDavid van Moolenbroek
2802*00b67f09SDavid van Moolenbroek# Sed substitution that helps us do robust quoting.  It backslashifies
2803*00b67f09SDavid van Moolenbroek# metacharacters that are still active within double-quoted strings.
2804*00b67f09SDavid van MoolenbroekXsed='sed -e 1s/^X//'
2805*00b67f09SDavid van Moolenbroeksed_quote_subst='$sed_quote_subst'
2806*00b67f09SDavid van Moolenbroek
2807*00b67f09SDavid van Moolenbroek# The HP-UX ksh and POSIX shell print the target directory to stdout
2808*00b67f09SDavid van Moolenbroek# if CDPATH is set.
2809*00b67f09SDavid van Moolenbroekif test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
2810*00b67f09SDavid van Moolenbroek
2811*00b67f09SDavid van Moolenbroekrelink_command=\"$relink_command\"
2812*00b67f09SDavid van Moolenbroek
2813*00b67f09SDavid van Moolenbroek# This environment variable determines our operation mode.
2814*00b67f09SDavid van Moolenbroekif test \"\$libtool_install_magic\" = \"$magic\"; then
2815*00b67f09SDavid van Moolenbroek  # install mode needs the following variable:
2816*00b67f09SDavid van Moolenbroek  link_against_libtool_libs='$link_against_libtool_libs'
2817*00b67f09SDavid van Moolenbroekelse
2818*00b67f09SDavid van Moolenbroek  # When we are sourced in execute mode, \$file and \$echo are already set.
2819*00b67f09SDavid van Moolenbroek  if test \"\$libtool_execute_magic\" != \"$magic\"; then
2820*00b67f09SDavid van Moolenbroek    echo=\"$qecho\"
2821*00b67f09SDavid van Moolenbroek    file=\"\$0\"
2822*00b67f09SDavid van Moolenbroek    # Make sure echo works.
2823*00b67f09SDavid van Moolenbroek    if test \"X\$1\" = X--no-reexec; then
2824*00b67f09SDavid van Moolenbroek      # Discard the --no-reexec flag, and continue.
2825*00b67f09SDavid van Moolenbroek      shift
2826*00b67f09SDavid van Moolenbroek    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
2827*00b67f09SDavid van Moolenbroek      # Yippee, \$echo works!
2828*00b67f09SDavid van Moolenbroek      :
2829*00b67f09SDavid van Moolenbroek    else
2830*00b67f09SDavid van Moolenbroek      # Restart under the correct shell, and then maybe \$echo will work.
2831*00b67f09SDavid van Moolenbroek      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
2832*00b67f09SDavid van Moolenbroek    fi
2833*00b67f09SDavid van Moolenbroek  fi\
2834*00b67f09SDavid van Moolenbroek"
2835*00b67f09SDavid van Moolenbroek	$echo >> $output "\
2836*00b67f09SDavid van Moolenbroek
2837*00b67f09SDavid van Moolenbroek  # Find the directory that this script lives in.
2838*00b67f09SDavid van Moolenbroek  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
2839*00b67f09SDavid van Moolenbroek  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
2840*00b67f09SDavid van Moolenbroek
2841*00b67f09SDavid van Moolenbroek  # Follow symbolic links until we get to the real thisdir.
2842*00b67f09SDavid van Moolenbroek  file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
2843*00b67f09SDavid van Moolenbroek  while test -n \"\$file\"; do
2844*00b67f09SDavid van Moolenbroek    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
2845*00b67f09SDavid van Moolenbroek
2846*00b67f09SDavid van Moolenbroek    # If there was a directory component, then change thisdir.
2847*00b67f09SDavid van Moolenbroek    if test \"x\$destdir\" != \"x\$file\"; then
2848*00b67f09SDavid van Moolenbroek      case \"\$destdir\" in
2849*00b67f09SDavid van Moolenbroek      [\\/]* | [A-Za-z]:[\\/]*) thisdir=\"\$destdir\" ;;
2850*00b67f09SDavid van Moolenbroek      *) thisdir=\"\$thisdir/\$destdir\" ;;
2851*00b67f09SDavid van Moolenbroek      esac
2852*00b67f09SDavid van Moolenbroek    fi
2853*00b67f09SDavid van Moolenbroek
2854*00b67f09SDavid van Moolenbroek    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
2855*00b67f09SDavid van Moolenbroek    file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
2856*00b67f09SDavid van Moolenbroek  done
2857*00b67f09SDavid van Moolenbroek
2858*00b67f09SDavid van Moolenbroek  # Try to get the absolute directory name.
2859*00b67f09SDavid van Moolenbroek  absdir=\`cd \"\$thisdir\" && pwd\`
2860*00b67f09SDavid van Moolenbroek  test -n \"\$absdir\" && thisdir=\"\$absdir\"
2861*00b67f09SDavid van Moolenbroek"
2862*00b67f09SDavid van Moolenbroek
2863*00b67f09SDavid van Moolenbroek	if test "$fast_install" = yes; then
2864*00b67f09SDavid van Moolenbroek	  echo >> $output "\
2865*00b67f09SDavid van Moolenbroek  program=lt-'$outputname'
2866*00b67f09SDavid van Moolenbroek  progdir=\"\$thisdir/$objdir\"
2867*00b67f09SDavid van Moolenbroek
2868*00b67f09SDavid van Moolenbroek  if test ! -f \"\$progdir/\$program\" || \\
2869*00b67f09SDavid van Moolenbroek     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\
2870*00b67f09SDavid van Moolenbroek       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
2871*00b67f09SDavid van Moolenbroek
2872*00b67f09SDavid van Moolenbroek    file=\"\$\$-\$program\"
2873*00b67f09SDavid van Moolenbroek
2874*00b67f09SDavid van Moolenbroek    if test ! -d \"\$progdir\"; then
2875*00b67f09SDavid van Moolenbroek      $mkdir \"\$progdir\"
2876*00b67f09SDavid van Moolenbroek    else
2877*00b67f09SDavid van Moolenbroek      $rm \"\$progdir/\$file\"
2878*00b67f09SDavid van Moolenbroek    fi"
2879*00b67f09SDavid van Moolenbroek
2880*00b67f09SDavid van Moolenbroek	  echo >> $output "\
2881*00b67f09SDavid van Moolenbroek
2882*00b67f09SDavid van Moolenbroek    # relink executable if necessary
2883*00b67f09SDavid van Moolenbroek    if test -n \"\$relink_command\"; then
2884*00b67f09SDavid van Moolenbroek      if (cd \"\$thisdir\" && eval \$relink_command); then :
2885*00b67f09SDavid van Moolenbroek      else
2886*00b67f09SDavid van Moolenbroek	$rm \"\$progdir/\$file\"
2887*00b67f09SDavid van Moolenbroek	exit 1
2888*00b67f09SDavid van Moolenbroek      fi
2889*00b67f09SDavid van Moolenbroek    fi
2890*00b67f09SDavid van Moolenbroek
2891*00b67f09SDavid van Moolenbroek    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
2892*00b67f09SDavid van Moolenbroek    { $rm \"\$progdir/\$program\";
2893*00b67f09SDavid van Moolenbroek      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
2894*00b67f09SDavid van Moolenbroek    $rm \"\$progdir/\$file\"
2895*00b67f09SDavid van Moolenbroek  fi"
2896*00b67f09SDavid van Moolenbroek	else
2897*00b67f09SDavid van Moolenbroek	  echo >> $output "\
2898*00b67f09SDavid van Moolenbroek  program='$outputname'
2899*00b67f09SDavid van Moolenbroek  progdir=\"\$thisdir/$objdir\"
2900*00b67f09SDavid van Moolenbroek"
2901*00b67f09SDavid van Moolenbroek	fi
2902*00b67f09SDavid van Moolenbroek
2903*00b67f09SDavid van Moolenbroek	echo >> $output "\
2904*00b67f09SDavid van Moolenbroek
2905*00b67f09SDavid van Moolenbroek  if test -f \"\$progdir/\$program\"; then"
2906*00b67f09SDavid van Moolenbroek
2907*00b67f09SDavid van Moolenbroek	# Export our shlibpath_var if we have one.
2908*00b67f09SDavid van Moolenbroek	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
2909*00b67f09SDavid van Moolenbroek	  $echo >> $output "\
2910*00b67f09SDavid van Moolenbroek    # Add our own library path to $shlibpath_var
2911*00b67f09SDavid van Moolenbroek    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
2912*00b67f09SDavid van Moolenbroek
2913*00b67f09SDavid van Moolenbroek    # Some systems cannot cope with colon-terminated $shlibpath_var
2914*00b67f09SDavid van Moolenbroek    # The second colon is a workaround for a bug in BeOS R4 sed
2915*00b67f09SDavid van Moolenbroek    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
2916*00b67f09SDavid van Moolenbroek
2917*00b67f09SDavid van Moolenbroek    export $shlibpath_var
2918*00b67f09SDavid van Moolenbroek"
2919*00b67f09SDavid van Moolenbroek	fi
2920*00b67f09SDavid van Moolenbroek
2921*00b67f09SDavid van Moolenbroek	# fixup the dll searchpath if we need to.
2922*00b67f09SDavid van Moolenbroek	if test -n "$dllsearchpath"; then
2923*00b67f09SDavid van Moolenbroek	  $echo >> $output "\
2924*00b67f09SDavid van Moolenbroek    # Add the dll search path components to the executable PATH
2925*00b67f09SDavid van Moolenbroek    PATH=$dllsearchpath:\$PATH
2926*00b67f09SDavid van Moolenbroek"
2927*00b67f09SDavid van Moolenbroek	fi
2928*00b67f09SDavid van Moolenbroek
2929*00b67f09SDavid van Moolenbroek	$echo >> $output "\
2930*00b67f09SDavid van Moolenbroek    if test \"\$libtool_execute_magic\" != \"$magic\"; then
2931*00b67f09SDavid van Moolenbroek      # Run the actual program with our arguments.
2932*00b67f09SDavid van Moolenbroek"
2933*00b67f09SDavid van Moolenbroek	case $host in
2934*00b67f09SDavid van Moolenbroek	  # win32 systems need to use the prog path for dll
2935*00b67f09SDavid van Moolenbroek	  # lookup to work
2936*00b67f09SDavid van Moolenbroek	*-*-cygwin*)
2937*00b67f09SDavid van Moolenbroek	  $echo >> $output "\
2938*00b67f09SDavid van Moolenbroek      exec \$progdir/\$program \${1+\"\$@\"}
2939*00b67f09SDavid van Moolenbroek"
2940*00b67f09SDavid van Moolenbroek	  ;;
2941*00b67f09SDavid van Moolenbroek
2942*00b67f09SDavid van Moolenbroek	# Backslashes separate directories on plain windows
2943*00b67f09SDavid van Moolenbroek	*-*-mingw | *-*-os2*)
2944*00b67f09SDavid van Moolenbroek	  $echo >> $output "\
2945*00b67f09SDavid van Moolenbroek      exec \$progdir\\\\\$program \${1+\"\$@\"}
2946*00b67f09SDavid van Moolenbroek"
2947*00b67f09SDavid van Moolenbroek	  ;;
2948*00b67f09SDavid van Moolenbroek
2949*00b67f09SDavid van Moolenbroek	*)
2950*00b67f09SDavid van Moolenbroek	  $echo >> $output "\
2951*00b67f09SDavid van Moolenbroek      # Export the path to the program.
2952*00b67f09SDavid van Moolenbroek      PATH=\"\$progdir:\$PATH\"
2953*00b67f09SDavid van Moolenbroek      export PATH
2954*00b67f09SDavid van Moolenbroek
2955*00b67f09SDavid van Moolenbroek      exec \$program \${1+\"\$@\"}
2956*00b67f09SDavid van Moolenbroek"
2957*00b67f09SDavid van Moolenbroek	  ;;
2958*00b67f09SDavid van Moolenbroek	esac
2959*00b67f09SDavid van Moolenbroek	$echo >> $output "\
2960*00b67f09SDavid van Moolenbroek      \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
2961*00b67f09SDavid van Moolenbroek      exit 1
2962*00b67f09SDavid van Moolenbroek    fi
2963*00b67f09SDavid van Moolenbroek  else
2964*00b67f09SDavid van Moolenbroek    # The program doesn't exist.
2965*00b67f09SDavid van Moolenbroek    \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
2966*00b67f09SDavid van Moolenbroek    \$echo \"This script is just a wrapper for \$program.\" 1>&2
2967*00b67f09SDavid van Moolenbroek    echo \"See the $PACKAGE documentation for more information.\" 1>&2
2968*00b67f09SDavid van Moolenbroek    exit 1
2969*00b67f09SDavid van Moolenbroek  fi
2970*00b67f09SDavid van Moolenbroekfi\
2971*00b67f09SDavid van Moolenbroek"
2972*00b67f09SDavid van Moolenbroek	chmod +x $output
2973*00b67f09SDavid van Moolenbroek      fi
2974*00b67f09SDavid van Moolenbroek      exit 0
2975*00b67f09SDavid van Moolenbroek      ;;
2976*00b67f09SDavid van Moolenbroek    esac
2977*00b67f09SDavid van Moolenbroek
2978*00b67f09SDavid van Moolenbroek    # See if we need to build an old-fashioned archive.
2979*00b67f09SDavid van Moolenbroek    for oldlib in $oldlibs; do
2980*00b67f09SDavid van Moolenbroek
2981*00b67f09SDavid van Moolenbroek      if test "$build_libtool_libs" = convenience; then
2982*00b67f09SDavid van Moolenbroek	oldobjs="$libobjs_save"
2983*00b67f09SDavid van Moolenbroek	addlibs="$convenience"
2984*00b67f09SDavid van Moolenbroek	build_libtool_libs=no
2985*00b67f09SDavid van Moolenbroek      else
2986*00b67f09SDavid van Moolenbroek	if test "$build_libtool_libs" = module; then
2987*00b67f09SDavid van Moolenbroek	  oldobjs="$libobjs_save"
2988*00b67f09SDavid van Moolenbroek	  build_libtool_libs=no
2989*00b67f09SDavid van Moolenbroek	else
2990*00b67f09SDavid van Moolenbroek	  oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
2991*00b67f09SDavid van Moolenbroek	fi
2992*00b67f09SDavid van Moolenbroek	addlibs="$old_convenience"
2993*00b67f09SDavid van Moolenbroek      fi
2994*00b67f09SDavid van Moolenbroek
2995*00b67f09SDavid van Moolenbroek      if test -n "$addlibs"; then
2996*00b67f09SDavid van Moolenbroek	gentop="$output_objdir/${outputname}x"
2997*00b67f09SDavid van Moolenbroek	$show "${rm}r $gentop"
2998*00b67f09SDavid van Moolenbroek	$run ${rm}r "$gentop"
2999*00b67f09SDavid van Moolenbroek	$show "mkdir $gentop"
3000*00b67f09SDavid van Moolenbroek	$run mkdir "$gentop"
3001*00b67f09SDavid van Moolenbroek	status=$?
3002*00b67f09SDavid van Moolenbroek	if test $status -ne 0 && test ! -d "$gentop"; then
3003*00b67f09SDavid van Moolenbroek	  exit $status
3004*00b67f09SDavid van Moolenbroek	fi
3005*00b67f09SDavid van Moolenbroek	generated="$generated $gentop"
3006*00b67f09SDavid van Moolenbroek
3007*00b67f09SDavid van Moolenbroek	# Add in members from convenience archives.
3008*00b67f09SDavid van Moolenbroek	for xlib in $addlibs; do
3009*00b67f09SDavid van Moolenbroek	  # Extract the objects.
3010*00b67f09SDavid van Moolenbroek	  case "$xlib" in
3011*00b67f09SDavid van Moolenbroek	  [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
3012*00b67f09SDavid van Moolenbroek	  *) xabs=`pwd`"/$xlib" ;;
3013*00b67f09SDavid van Moolenbroek	  esac
3014*00b67f09SDavid van Moolenbroek	  xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
3015*00b67f09SDavid van Moolenbroek	  xdir="$gentop/$xlib"
3016*00b67f09SDavid van Moolenbroek
3017*00b67f09SDavid van Moolenbroek	  $show "${rm}r $xdir"
3018*00b67f09SDavid van Moolenbroek	  $run ${rm}r "$xdir"
3019*00b67f09SDavid van Moolenbroek	  $show "mkdir $xdir"
3020*00b67f09SDavid van Moolenbroek	  $run mkdir "$xdir"
3021*00b67f09SDavid van Moolenbroek	  status=$?
3022*00b67f09SDavid van Moolenbroek	  if test $status -ne 0 && test ! -d "$xdir"; then
3023*00b67f09SDavid van Moolenbroek	    exit $status
3024*00b67f09SDavid van Moolenbroek	  fi
3025*00b67f09SDavid van Moolenbroek	  $show "(cd $xdir && $AR x $xabs)"
3026*00b67f09SDavid van Moolenbroek	  $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
3027*00b67f09SDavid van Moolenbroek
3028*00b67f09SDavid van Moolenbroek	  oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
3029*00b67f09SDavid van Moolenbroek	done
3030*00b67f09SDavid van Moolenbroek      fi
3031*00b67f09SDavid van Moolenbroek
3032*00b67f09SDavid van Moolenbroek      # Do each command in the archive commands.
3033*00b67f09SDavid van Moolenbroek      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
3034*00b67f09SDavid van Moolenbroek	eval cmds=\"$old_archive_from_new_cmds\"
3035*00b67f09SDavid van Moolenbroek      else
3036*00b67f09SDavid van Moolenbroek	# Ensure that we have .o objects in place in case we decided
3037*00b67f09SDavid van Moolenbroek	# not to build a shared library, and have fallen back to building
3038*00b67f09SDavid van Moolenbroek	# static libs even though --disable-static was passed!
3039*00b67f09SDavid van Moolenbroek	for oldobj in $oldobjs; do
3040*00b67f09SDavid van Moolenbroek	  if test ! -f $oldobj; then
3041*00b67f09SDavid van Moolenbroek	    xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'`
3042*00b67f09SDavid van Moolenbroek	    if test "X$xdir" = "X$oldobj"; then
3043*00b67f09SDavid van Moolenbroek	      xdir="."
3044*00b67f09SDavid van Moolenbroek	    else
3045*00b67f09SDavid van Moolenbroek	      xdir="$xdir"
3046*00b67f09SDavid van Moolenbroek	    fi
3047*00b67f09SDavid van Moolenbroek	    baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'`
3048*00b67f09SDavid van Moolenbroek	    obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
3049*00b67f09SDavid van Moolenbroek	    $show "(cd $xdir && ${LN_S} $obj $baseobj)"
3050*00b67f09SDavid van Moolenbroek	    $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $?
3051*00b67f09SDavid van Moolenbroek	  fi
3052*00b67f09SDavid van Moolenbroek	done
3053*00b67f09SDavid van Moolenbroek
3054*00b67f09SDavid van Moolenbroek	eval cmds=\"$old_archive_cmds\"
3055*00b67f09SDavid van Moolenbroek      fi
3056*00b67f09SDavid van Moolenbroek      IFS="${IFS= 	}"; save_ifs="$IFS"; IFS='~'
3057*00b67f09SDavid van Moolenbroek      for cmd in $cmds; do
3058*00b67f09SDavid van Moolenbroek	IFS="$save_ifs"
3059*00b67f09SDavid van Moolenbroek	$show "$cmd"
3060*00b67f09SDavid van Moolenbroek	$run eval "$cmd" || exit $?
3061*00b67f09SDavid van Moolenbroek      done
3062*00b67f09SDavid van Moolenbroek      IFS="$save_ifs"
3063*00b67f09SDavid van Moolenbroek    done
3064*00b67f09SDavid van Moolenbroek
3065*00b67f09SDavid van Moolenbroek    if test -n "$generated"; then
3066*00b67f09SDavid van Moolenbroek      $show "${rm}r$generated"
3067*00b67f09SDavid van Moolenbroek      $run ${rm}r$generated
3068*00b67f09SDavid van Moolenbroek    fi
3069*00b67f09SDavid van Moolenbroek
3070*00b67f09SDavid van Moolenbroek    # Now create the libtool archive.
3071*00b67f09SDavid van Moolenbroek    case "$output" in
3072*00b67f09SDavid van Moolenbroek    *.la)
3073*00b67f09SDavid van Moolenbroek      old_library=
3074*00b67f09SDavid van Moolenbroek      test "$build_old_libs" = yes && old_library="$libname.$libext"
3075*00b67f09SDavid van Moolenbroek      $show "creating $output"
3076*00b67f09SDavid van Moolenbroek
3077*00b67f09SDavid van Moolenbroek      if test -n "$xrpath"; then
3078*00b67f09SDavid van Moolenbroek	temp_xrpath=
3079*00b67f09SDavid van Moolenbroek	for libdir in $xrpath; do
3080*00b67f09SDavid van Moolenbroek	  temp_xrpath="$temp_xrpath -R$libdir"
3081*00b67f09SDavid van Moolenbroek	done
3082*00b67f09SDavid van Moolenbroek	dependency_libs="$temp_xrpath $dependency_libs"
3083*00b67f09SDavid van Moolenbroek      fi
3084*00b67f09SDavid van Moolenbroek
3085*00b67f09SDavid van Moolenbroek      # Only create the output if not a dry run.
3086*00b67f09SDavid van Moolenbroek      if test -z "$run"; then
3087*00b67f09SDavid van Moolenbroek	for installed in no yes; do
3088*00b67f09SDavid van Moolenbroek	  if test "$installed" = yes; then
3089*00b67f09SDavid van Moolenbroek	    if test -z "$install_libdir"; then
3090*00b67f09SDavid van Moolenbroek	      break
3091*00b67f09SDavid van Moolenbroek	    fi
3092*00b67f09SDavid van Moolenbroek	    output="$output_objdir/$outputname"i
3093*00b67f09SDavid van Moolenbroek	  fi
3094*00b67f09SDavid van Moolenbroek	  $rm $output
3095*00b67f09SDavid van Moolenbroek	  $echo > $output "\
3096*00b67f09SDavid van Moolenbroek# $outputname - a libtool library file
3097*00b67f09SDavid van Moolenbroek# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
3098*00b67f09SDavid van Moolenbroek#
3099*00b67f09SDavid van Moolenbroek# Please DO NOT delete this file!
3100*00b67f09SDavid van Moolenbroek# It is necessary for linking the library.
3101*00b67f09SDavid van Moolenbroek
3102*00b67f09SDavid van Moolenbroek# The name that we can dlopen(3).
3103*00b67f09SDavid van Moolenbroekdlname='$dlname'
3104*00b67f09SDavid van Moolenbroek
3105*00b67f09SDavid van Moolenbroek# Names of this library.
3106*00b67f09SDavid van Moolenbroeklibrary_names='$library_names'
3107*00b67f09SDavid van Moolenbroek
3108*00b67f09SDavid van Moolenbroek# The name of the static archive.
3109*00b67f09SDavid van Moolenbroekold_library='$old_library'
3110*00b67f09SDavid van Moolenbroek
3111*00b67f09SDavid van Moolenbroek# Libraries that this one depends upon.
3112*00b67f09SDavid van Moolenbroekdependency_libs='$dependency_libs'
3113*00b67f09SDavid van Moolenbroek
3114*00b67f09SDavid van Moolenbroek# Version information for $libname.
3115*00b67f09SDavid van Moolenbroekcurrent=$current
3116*00b67f09SDavid van Moolenbroekage=$age
3117*00b67f09SDavid van Moolenbroekrevision=$revision
3118*00b67f09SDavid van Moolenbroek
3119*00b67f09SDavid van Moolenbroek# Is this an already installed library?
3120*00b67f09SDavid van Moolenbroekinstalled=$installed
3121*00b67f09SDavid van Moolenbroek
3122*00b67f09SDavid van Moolenbroek# Directory that this library needs to be installed in:
3123*00b67f09SDavid van Moolenbroeklibdir='$install_libdir'\
3124*00b67f09SDavid van Moolenbroek"
3125*00b67f09SDavid van Moolenbroek	done
3126*00b67f09SDavid van Moolenbroek      fi
3127*00b67f09SDavid van Moolenbroek
3128*00b67f09SDavid van Moolenbroek      # Do a symbolic link so that the libtool archive can be found in
3129*00b67f09SDavid van Moolenbroek      # LD_LIBRARY_PATH before the program is installed.
3130*00b67f09SDavid van Moolenbroek      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
3131*00b67f09SDavid van Moolenbroek      $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $?
3132*00b67f09SDavid van Moolenbroek      ;;
3133*00b67f09SDavid van Moolenbroek    esac
3134*00b67f09SDavid van Moolenbroek    exit 0
3135*00b67f09SDavid van Moolenbroek    ;;
3136*00b67f09SDavid van Moolenbroek
3137*00b67f09SDavid van Moolenbroek  # libtool install mode
3138*00b67f09SDavid van Moolenbroek  install)
3139*00b67f09SDavid van Moolenbroek    modename="$modename: install"
3140*00b67f09SDavid van Moolenbroek
3141*00b67f09SDavid van Moolenbroek    # There may be an optional sh(1) argument at the beginning of
3142*00b67f09SDavid van Moolenbroek    # install_prog (especially on Windows NT).
3143*00b67f09SDavid van Moolenbroek    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then
3144*00b67f09SDavid van Moolenbroek      # Aesthetically quote it.
3145*00b67f09SDavid van Moolenbroek      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
3146*00b67f09SDavid van Moolenbroek      case "$arg" in
3147*00b67f09SDavid van Moolenbroek      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
3148*00b67f09SDavid van Moolenbroek	arg="\"$arg\""
3149*00b67f09SDavid van Moolenbroek	;;
3150*00b67f09SDavid van Moolenbroek      esac
3151*00b67f09SDavid van Moolenbroek      install_prog="$arg "
3152*00b67f09SDavid van Moolenbroek      arg="$1"
3153*00b67f09SDavid van Moolenbroek      shift
3154*00b67f09SDavid van Moolenbroek    else
3155*00b67f09SDavid van Moolenbroek      install_prog=
3156*00b67f09SDavid van Moolenbroek      arg="$nonopt"
3157*00b67f09SDavid van Moolenbroek    fi
3158*00b67f09SDavid van Moolenbroek
3159*00b67f09SDavid van Moolenbroek    # The real first argument should be the name of the installation program.
3160*00b67f09SDavid van Moolenbroek    # Aesthetically quote it.
3161*00b67f09SDavid van Moolenbroek    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
3162*00b67f09SDavid van Moolenbroek    case "$arg" in
3163*00b67f09SDavid van Moolenbroek    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
3164*00b67f09SDavid van Moolenbroek      arg="\"$arg\""
3165*00b67f09SDavid van Moolenbroek      ;;
3166*00b67f09SDavid van Moolenbroek    esac
3167*00b67f09SDavid van Moolenbroek    install_prog="$install_prog$arg"
3168*00b67f09SDavid van Moolenbroek
3169*00b67f09SDavid van Moolenbroek    # We need to accept at least all the BSD install flags.
3170*00b67f09SDavid van Moolenbroek    dest=
3171*00b67f09SDavid van Moolenbroek    files=
3172*00b67f09SDavid van Moolenbroek    opts=
3173*00b67f09SDavid van Moolenbroek    prev=
3174*00b67f09SDavid van Moolenbroek    install_type=
3175*00b67f09SDavid van Moolenbroek    isdir=no
3176*00b67f09SDavid van Moolenbroek    stripme=
3177*00b67f09SDavid van Moolenbroek    for arg
3178*00b67f09SDavid van Moolenbroek    do
3179*00b67f09SDavid van Moolenbroek      if test -n "$dest"; then
3180*00b67f09SDavid van Moolenbroek	files="$files $dest"
3181*00b67f09SDavid van Moolenbroek	dest="$arg"
3182*00b67f09SDavid van Moolenbroek	continue
3183*00b67f09SDavid van Moolenbroek      fi
3184*00b67f09SDavid van Moolenbroek
3185*00b67f09SDavid van Moolenbroek      case "$arg" in
3186*00b67f09SDavid van Moolenbroek      -d) isdir=yes ;;
3187*00b67f09SDavid van Moolenbroek      -f) prev="-f" ;;
3188*00b67f09SDavid van Moolenbroek      -g) prev="-g" ;;
3189*00b67f09SDavid van Moolenbroek      -m) prev="-m" ;;
3190*00b67f09SDavid van Moolenbroek      -o) prev="-o" ;;
3191*00b67f09SDavid van Moolenbroek      -s)
3192*00b67f09SDavid van Moolenbroek	stripme=" -s"
3193*00b67f09SDavid van Moolenbroek	continue
3194*00b67f09SDavid van Moolenbroek	;;
3195*00b67f09SDavid van Moolenbroek      -*) ;;
3196*00b67f09SDavid van Moolenbroek
3197*00b67f09SDavid van Moolenbroek      *)
3198*00b67f09SDavid van Moolenbroek	# If the previous option needed an argument, then skip it.
3199*00b67f09SDavid van Moolenbroek	if test -n "$prev"; then
3200*00b67f09SDavid van Moolenbroek	  prev=
3201*00b67f09SDavid van Moolenbroek	else
3202*00b67f09SDavid van Moolenbroek	  dest="$arg"
3203*00b67f09SDavid van Moolenbroek	  continue
3204*00b67f09SDavid van Moolenbroek	fi
3205*00b67f09SDavid van Moolenbroek	;;
3206*00b67f09SDavid van Moolenbroek      esac
3207*00b67f09SDavid van Moolenbroek
3208*00b67f09SDavid van Moolenbroek      # Aesthetically quote the argument.
3209*00b67f09SDavid van Moolenbroek      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
3210*00b67f09SDavid van Moolenbroek      case "$arg" in
3211*00b67f09SDavid van Moolenbroek      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
3212*00b67f09SDavid van Moolenbroek	arg="\"$arg\""
3213*00b67f09SDavid van Moolenbroek	;;
3214*00b67f09SDavid van Moolenbroek      esac
3215*00b67f09SDavid van Moolenbroek      install_prog="$install_prog $arg"
3216*00b67f09SDavid van Moolenbroek    done
3217*00b67f09SDavid van Moolenbroek
3218*00b67f09SDavid van Moolenbroek    if test -z "$install_prog"; then
3219*00b67f09SDavid van Moolenbroek      $echo "$modename: you must specify an install program" 1>&2
3220*00b67f09SDavid van Moolenbroek      $echo "$help" 1>&2
3221*00b67f09SDavid van Moolenbroek      exit 1
3222*00b67f09SDavid van Moolenbroek    fi
3223*00b67f09SDavid van Moolenbroek
3224*00b67f09SDavid van Moolenbroek    if test -n "$prev"; then
3225*00b67f09SDavid van Moolenbroek      $echo "$modename: the \`$prev' option requires an argument" 1>&2
3226*00b67f09SDavid van Moolenbroek      $echo "$help" 1>&2
3227*00b67f09SDavid van Moolenbroek      exit 1
3228*00b67f09SDavid van Moolenbroek    fi
3229*00b67f09SDavid van Moolenbroek
3230*00b67f09SDavid van Moolenbroek    if test -z "$files"; then
3231*00b67f09SDavid van Moolenbroek      if test -z "$dest"; then
3232*00b67f09SDavid van Moolenbroek	$echo "$modename: no file or destination specified" 1>&2
3233*00b67f09SDavid van Moolenbroek      else
3234*00b67f09SDavid van Moolenbroek	$echo "$modename: you must specify a destination" 1>&2
3235*00b67f09SDavid van Moolenbroek      fi
3236*00b67f09SDavid van Moolenbroek      $echo "$help" 1>&2
3237*00b67f09SDavid van Moolenbroek      exit 1
3238*00b67f09SDavid van Moolenbroek    fi
3239*00b67f09SDavid van Moolenbroek
3240*00b67f09SDavid van Moolenbroek    # Strip any trailing slash from the destination.
3241*00b67f09SDavid van Moolenbroek    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
3242*00b67f09SDavid van Moolenbroek
3243*00b67f09SDavid van Moolenbroek    # Check to see that the destination is a directory.
3244*00b67f09SDavid van Moolenbroek    test -d "$dest" && isdir=yes
3245*00b67f09SDavid van Moolenbroek    if test "$isdir" = yes; then
3246*00b67f09SDavid van Moolenbroek      destdir="$dest"
3247*00b67f09SDavid van Moolenbroek      destname=
3248*00b67f09SDavid van Moolenbroek    else
3249*00b67f09SDavid van Moolenbroek      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
3250*00b67f09SDavid van Moolenbroek      test "X$destdir" = "X$dest" && destdir=.
3251*00b67f09SDavid van Moolenbroek      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
3252*00b67f09SDavid van Moolenbroek
3253*00b67f09SDavid van Moolenbroek      # Not a directory, so check to see that there is only one file specified.
3254*00b67f09SDavid van Moolenbroek      set dummy $files
3255*00b67f09SDavid van Moolenbroek      if test $# -gt 2; then
3256*00b67f09SDavid van Moolenbroek	$echo "$modename: \`$dest' is not a directory" 1>&2
3257*00b67f09SDavid van Moolenbroek	$echo "$help" 1>&2
3258*00b67f09SDavid van Moolenbroek	exit 1
3259*00b67f09SDavid van Moolenbroek      fi
3260*00b67f09SDavid van Moolenbroek    fi
3261*00b67f09SDavid van Moolenbroek    case "$destdir" in
3262*00b67f09SDavid van Moolenbroek    [\\/]* | [A-Za-z]:[\\/]*) ;;
3263*00b67f09SDavid van Moolenbroek    *)
3264*00b67f09SDavid van Moolenbroek      for file in $files; do
3265*00b67f09SDavid van Moolenbroek	case "$file" in
3266*00b67f09SDavid van Moolenbroek	*.lo) ;;
3267*00b67f09SDavid van Moolenbroek	*)
3268*00b67f09SDavid van Moolenbroek	  $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
3269*00b67f09SDavid van Moolenbroek	  $echo "$help" 1>&2
3270*00b67f09SDavid van Moolenbroek	  exit 1
3271*00b67f09SDavid van Moolenbroek	  ;;
3272*00b67f09SDavid van Moolenbroek	esac
3273*00b67f09SDavid van Moolenbroek      done
3274*00b67f09SDavid van Moolenbroek      ;;
3275*00b67f09SDavid van Moolenbroek    esac
3276*00b67f09SDavid van Moolenbroek
3277*00b67f09SDavid van Moolenbroek    # This variable tells wrapper scripts just to set variables rather
3278*00b67f09SDavid van Moolenbroek    # than running their programs.
3279*00b67f09SDavid van Moolenbroek    libtool_install_magic="$magic"
3280*00b67f09SDavid van Moolenbroek
3281*00b67f09SDavid van Moolenbroek    staticlibs=
3282*00b67f09SDavid van Moolenbroek    future_libdirs=
3283*00b67f09SDavid van Moolenbroek    current_libdirs=
3284*00b67f09SDavid van Moolenbroek    for file in $files; do
3285*00b67f09SDavid van Moolenbroek
3286*00b67f09SDavid van Moolenbroek      # Do each installation.
3287*00b67f09SDavid van Moolenbroek      case "$file" in
3288*00b67f09SDavid van Moolenbroek      *.a | *.lib)
3289*00b67f09SDavid van Moolenbroek	# Do the static libraries later.
3290*00b67f09SDavid van Moolenbroek	staticlibs="$staticlibs $file"
3291*00b67f09SDavid van Moolenbroek	;;
3292*00b67f09SDavid van Moolenbroek
3293*00b67f09SDavid van Moolenbroek      *.la)
3294*00b67f09SDavid van Moolenbroek	# Check to see that this really is a libtool archive.
3295*00b67f09SDavid van Moolenbroek	if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
3296*00b67f09SDavid van Moolenbroek	else
3297*00b67f09SDavid van Moolenbroek	  $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
3298*00b67f09SDavid van Moolenbroek	  $echo "$help" 1>&2
3299*00b67f09SDavid van Moolenbroek	  exit 1
3300*00b67f09SDavid van Moolenbroek	fi
3301*00b67f09SDavid van Moolenbroek
3302*00b67f09SDavid van Moolenbroek	library_names=
3303*00b67f09SDavid van Moolenbroek	old_library=
3304*00b67f09SDavid van Moolenbroek	# If there is no directory component, then add one.
3305*00b67f09SDavid van Moolenbroek	case "$file" in
3306*00b67f09SDavid van Moolenbroek	*/* | *\\*) . $file ;;
3307*00b67f09SDavid van Moolenbroek	*) . ./$file ;;
3308*00b67f09SDavid van Moolenbroek	esac
3309*00b67f09SDavid van Moolenbroek
3310*00b67f09SDavid van Moolenbroek	# Add the libdir to current_libdirs if it is the destination.
3311*00b67f09SDavid van Moolenbroek	if test "X$destdir" = "X$libdir"; then
3312*00b67f09SDavid van Moolenbroek	  case "$current_libdirs " in
3313*00b67f09SDavid van Moolenbroek	  *" $libdir "*) ;;
3314*00b67f09SDavid van Moolenbroek	  *) current_libdirs="$current_libdirs $libdir" ;;
3315*00b67f09SDavid van Moolenbroek	  esac
3316*00b67f09SDavid van Moolenbroek	else
3317*00b67f09SDavid van Moolenbroek	  # Note the libdir as a future libdir.
3318*00b67f09SDavid van Moolenbroek	  case "$future_libdirs " in
3319*00b67f09SDavid van Moolenbroek	  *" $libdir "*) ;;
3320*00b67f09SDavid van Moolenbroek	  *) future_libdirs="$future_libdirs $libdir" ;;
3321*00b67f09SDavid van Moolenbroek	  esac
3322*00b67f09SDavid van Moolenbroek	fi
3323*00b67f09SDavid van Moolenbroek
3324*00b67f09SDavid van Moolenbroek	dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/"
3325*00b67f09SDavid van Moolenbroek	test "X$dir" = "X$file/" && dir=
3326*00b67f09SDavid van Moolenbroek	dir="$dir$objdir"
3327*00b67f09SDavid van Moolenbroek
3328*00b67f09SDavid van Moolenbroek	# See the names of the shared library.
3329*00b67f09SDavid van Moolenbroek	set dummy $library_names
3330*00b67f09SDavid van Moolenbroek	if test -n "$2"; then
3331*00b67f09SDavid van Moolenbroek	  realname="$2"
3332*00b67f09SDavid van Moolenbroek	  shift
3333*00b67f09SDavid van Moolenbroek	  shift
3334*00b67f09SDavid van Moolenbroek
3335*00b67f09SDavid van Moolenbroek	  # Install the shared library and build the symlinks.
3336*00b67f09SDavid van Moolenbroek	  $show "$install_prog $dir/$realname $destdir/$realname"
3337*00b67f09SDavid van Moolenbroek	  $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $?
3338*00b67f09SDavid van Moolenbroek
3339*00b67f09SDavid van Moolenbroek	  if test $# -gt 0; then
3340*00b67f09SDavid van Moolenbroek	    # Delete the old symlinks, and create new ones.
3341*00b67f09SDavid van Moolenbroek	    for linkname
3342*00b67f09SDavid van Moolenbroek	    do
3343*00b67f09SDavid van Moolenbroek	      if test "$linkname" != "$realname"; then
3344*00b67f09SDavid van Moolenbroek		$show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
3345*00b67f09SDavid van Moolenbroek		$run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
3346*00b67f09SDavid van Moolenbroek	      fi
3347*00b67f09SDavid van Moolenbroek	    done
3348*00b67f09SDavid van Moolenbroek	  fi
3349*00b67f09SDavid van Moolenbroek
3350*00b67f09SDavid van Moolenbroek	  # Do each command in the postinstall commands.
3351*00b67f09SDavid van Moolenbroek	  lib="$destdir/$realname"
3352*00b67f09SDavid van Moolenbroek	  eval cmds=\"$postinstall_cmds\"
3353*00b67f09SDavid van Moolenbroek	  IFS="${IFS= 	}"; save_ifs="$IFS"; IFS='~'
3354*00b67f09SDavid van Moolenbroek	  for cmd in $cmds; do
3355*00b67f09SDavid van Moolenbroek	    IFS="$save_ifs"
3356*00b67f09SDavid van Moolenbroek	    $show "$cmd"
3357*00b67f09SDavid van Moolenbroek	    $run eval "$cmd" || exit $?
3358*00b67f09SDavid van Moolenbroek	  done
3359*00b67f09SDavid van Moolenbroek	  IFS="$save_ifs"
3360*00b67f09SDavid van Moolenbroek	fi
3361*00b67f09SDavid van Moolenbroek
3362*00b67f09SDavid van Moolenbroek	# Install the pseudo-library for information purposes.
3363*00b67f09SDavid van Moolenbroek	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3364*00b67f09SDavid van Moolenbroek	instname="$dir/$name"i
3365*00b67f09SDavid van Moolenbroek	$show "$install_prog $instname $destdir/$name"
3366*00b67f09SDavid van Moolenbroek	$run eval "$install_prog $instname $destdir/$name" || exit $?
3367*00b67f09SDavid van Moolenbroek
3368*00b67f09SDavid van Moolenbroek	# Maybe install the static library, too.
3369*00b67f09SDavid van Moolenbroek	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
3370*00b67f09SDavid van Moolenbroek	;;
3371*00b67f09SDavid van Moolenbroek
3372*00b67f09SDavid van Moolenbroek      *.lo)
3373*00b67f09SDavid van Moolenbroek	# Install (i.e. copy) a libtool object.
3374*00b67f09SDavid van Moolenbroek
3375*00b67f09SDavid van Moolenbroek	# Figure out destination file name, if it wasn't already specified.
3376*00b67f09SDavid van Moolenbroek	if test -n "$destname"; then
3377*00b67f09SDavid van Moolenbroek	  destfile="$destdir/$destname"
3378*00b67f09SDavid van Moolenbroek	else
3379*00b67f09SDavid van Moolenbroek	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3380*00b67f09SDavid van Moolenbroek	  destfile="$destdir/$destfile"
3381*00b67f09SDavid van Moolenbroek	fi
3382*00b67f09SDavid van Moolenbroek
3383*00b67f09SDavid van Moolenbroek	# Deduce the name of the destination old-style object file.
3384*00b67f09SDavid van Moolenbroek	case "$destfile" in
3385*00b67f09SDavid van Moolenbroek	*.lo)
3386*00b67f09SDavid van Moolenbroek	  staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
3387*00b67f09SDavid van Moolenbroek	  ;;
3388*00b67f09SDavid van Moolenbroek	*.o | *.obj)
3389*00b67f09SDavid van Moolenbroek	  staticdest="$destfile"
3390*00b67f09SDavid van Moolenbroek	  destfile=
3391*00b67f09SDavid van Moolenbroek	  ;;
3392*00b67f09SDavid van Moolenbroek	*)
3393*00b67f09SDavid van Moolenbroek	  $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
3394*00b67f09SDavid van Moolenbroek	  $echo "$help" 1>&2
3395*00b67f09SDavid van Moolenbroek	  exit 1
3396*00b67f09SDavid van Moolenbroek	  ;;
3397*00b67f09SDavid van Moolenbroek	esac
3398*00b67f09SDavid van Moolenbroek
3399*00b67f09SDavid van Moolenbroek	# Install the libtool object if requested.
3400*00b67f09SDavid van Moolenbroek	if test -n "$destfile"; then
3401*00b67f09SDavid van Moolenbroek	  $show "$install_prog $file $destfile"
3402*00b67f09SDavid van Moolenbroek	  $run eval "$install_prog $file $destfile" || exit $?
3403*00b67f09SDavid van Moolenbroek	fi
3404*00b67f09SDavid van Moolenbroek
3405*00b67f09SDavid van Moolenbroek	# Install the old object if enabled.
3406*00b67f09SDavid van Moolenbroek	if test "$build_old_libs" = yes; then
3407*00b67f09SDavid van Moolenbroek	  # Deduce the name of the old-style object file.
3408*00b67f09SDavid van Moolenbroek	  staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
3409*00b67f09SDavid van Moolenbroek
3410*00b67f09SDavid van Moolenbroek	  $show "$install_prog $staticobj $staticdest"
3411*00b67f09SDavid van Moolenbroek	  $run eval "$install_prog \$staticobj \$staticdest" || exit $?
3412*00b67f09SDavid van Moolenbroek	fi
3413*00b67f09SDavid van Moolenbroek	exit 0
3414*00b67f09SDavid van Moolenbroek	;;
3415*00b67f09SDavid van Moolenbroek
3416*00b67f09SDavid van Moolenbroek      *)
3417*00b67f09SDavid van Moolenbroek	# Figure out destination file name, if it wasn't already specified.
3418*00b67f09SDavid van Moolenbroek	if test -n "$destname"; then
3419*00b67f09SDavid van Moolenbroek	  destfile="$destdir/$destname"
3420*00b67f09SDavid van Moolenbroek	else
3421*00b67f09SDavid van Moolenbroek	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3422*00b67f09SDavid van Moolenbroek	  destfile="$destdir/$destfile"
3423*00b67f09SDavid van Moolenbroek	fi
3424*00b67f09SDavid van Moolenbroek
3425*00b67f09SDavid van Moolenbroek	# Do a test to see if this is really a libtool program.
3426*00b67f09SDavid van Moolenbroek	if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
3427*00b67f09SDavid van Moolenbroek	  link_against_libtool_libs=
3428*00b67f09SDavid van Moolenbroek	  relink_command=
3429*00b67f09SDavid van Moolenbroek
3430*00b67f09SDavid van Moolenbroek	  # If there is no directory component, then add one.
3431*00b67f09SDavid van Moolenbroek	  case "$file" in
3432*00b67f09SDavid van Moolenbroek	  */* | *\\*) . $file ;;
3433*00b67f09SDavid van Moolenbroek	  *) . ./$file ;;
3434*00b67f09SDavid van Moolenbroek	  esac
3435*00b67f09SDavid van Moolenbroek
3436*00b67f09SDavid van Moolenbroek	  # Check the variables that should have been set.
3437*00b67f09SDavid van Moolenbroek	  if test -z "$link_against_libtool_libs"; then
3438*00b67f09SDavid van Moolenbroek	    $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
3439*00b67f09SDavid van Moolenbroek	    exit 1
3440*00b67f09SDavid van Moolenbroek	  fi
3441*00b67f09SDavid van Moolenbroek
3442*00b67f09SDavid van Moolenbroek	  finalize=yes
3443*00b67f09SDavid van Moolenbroek	  for lib in $link_against_libtool_libs; do
3444*00b67f09SDavid van Moolenbroek	    # Check to see that each library is installed.
3445*00b67f09SDavid van Moolenbroek	    libdir=
3446*00b67f09SDavid van Moolenbroek	    if test -f "$lib"; then
3447*00b67f09SDavid van Moolenbroek	      # If there is no directory component, then add one.
3448*00b67f09SDavid van Moolenbroek	      case "$lib" in
3449*00b67f09SDavid van Moolenbroek	      */* | *\\*) . $lib ;;
3450*00b67f09SDavid van Moolenbroek	      *) . ./$lib ;;
3451*00b67f09SDavid van Moolenbroek	      esac
3452*00b67f09SDavid van Moolenbroek	    fi
3453*00b67f09SDavid van Moolenbroek	    libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`"
3454*00b67f09SDavid van Moolenbroek	    if test -n "$libdir" && test ! -f "$libfile"; then
3455*00b67f09SDavid van Moolenbroek	      $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
3456*00b67f09SDavid van Moolenbroek	      finalize=no
3457*00b67f09SDavid van Moolenbroek	    fi
3458*00b67f09SDavid van Moolenbroek	  done
3459*00b67f09SDavid van Moolenbroek
3460*00b67f09SDavid van Moolenbroek	  outputname=
3461*00b67f09SDavid van Moolenbroek	  if test "$fast_install" = no && test -n "$relink_command"; then
3462*00b67f09SDavid van Moolenbroek	    if test "$finalize" = yes && test -z "$run"; then
3463*00b67f09SDavid van Moolenbroek	      tmpdir="/tmp"
3464*00b67f09SDavid van Moolenbroek	      test -n "$TMPDIR" && tmpdir="$TMPDIR"
3465*00b67f09SDavid van Moolenbroek	      tmpdir="$tmpdir/libtool-$$"
3466*00b67f09SDavid van Moolenbroek	      if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
3467*00b67f09SDavid van Moolenbroek	      else
3468*00b67f09SDavid van Moolenbroek		$echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
3469*00b67f09SDavid van Moolenbroek		continue
3470*00b67f09SDavid van Moolenbroek	      fi
3471*00b67f09SDavid van Moolenbroek	      outputname="$tmpdir/$file"
3472*00b67f09SDavid van Moolenbroek	      # Replace the output file specification.
3473*00b67f09SDavid van Moolenbroek	      relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
3474*00b67f09SDavid van Moolenbroek
3475*00b67f09SDavid van Moolenbroek	      $show "$relink_command"
3476*00b67f09SDavid van Moolenbroek	      if $run eval "$relink_command"; then :
3477*00b67f09SDavid van Moolenbroek	      else
3478*00b67f09SDavid van Moolenbroek		$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
3479*00b67f09SDavid van Moolenbroek		${rm}r "$tmpdir"
3480*00b67f09SDavid van Moolenbroek		continue
3481*00b67f09SDavid van Moolenbroek	      fi
3482*00b67f09SDavid van Moolenbroek	      file="$outputname"
3483*00b67f09SDavid van Moolenbroek	    else
3484*00b67f09SDavid van Moolenbroek	      $echo "$modename: warning: cannot relink \`$file'" 1>&2
3485*00b67f09SDavid van Moolenbroek	    fi
3486*00b67f09SDavid van Moolenbroek	  else
3487*00b67f09SDavid van Moolenbroek	    # Install the binary that we compiled earlier.
3488*00b67f09SDavid van Moolenbroek	    file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
3489*00b67f09SDavid van Moolenbroek	  fi
3490*00b67f09SDavid van Moolenbroek	fi
3491*00b67f09SDavid van Moolenbroek
3492*00b67f09SDavid van Moolenbroek	$show "$install_prog$stripme $file $destfile"
3493*00b67f09SDavid van Moolenbroek	$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
3494*00b67f09SDavid van Moolenbroek	test -n "$outputname" && ${rm}r "$tmpdir"
3495*00b67f09SDavid van Moolenbroek	;;
3496*00b67f09SDavid van Moolenbroek      esac
3497*00b67f09SDavid van Moolenbroek    done
3498*00b67f09SDavid van Moolenbroek
3499*00b67f09SDavid van Moolenbroek    for file in $staticlibs; do
3500*00b67f09SDavid van Moolenbroek      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3501*00b67f09SDavid van Moolenbroek
3502*00b67f09SDavid van Moolenbroek      # Set up the ranlib parameters.
3503*00b67f09SDavid van Moolenbroek      oldlib="$destdir/$name"
3504*00b67f09SDavid van Moolenbroek
3505*00b67f09SDavid van Moolenbroek      $show "$install_prog $file $oldlib"
3506*00b67f09SDavid van Moolenbroek      $run eval "$install_prog \$file \$oldlib" || exit $?
3507*00b67f09SDavid van Moolenbroek
3508*00b67f09SDavid van Moolenbroek      # Do each command in the postinstall commands.
3509*00b67f09SDavid van Moolenbroek      eval cmds=\"$old_postinstall_cmds\"
3510*00b67f09SDavid van Moolenbroek      IFS="${IFS= 	}"; save_ifs="$IFS"; IFS='~'
3511*00b67f09SDavid van Moolenbroek      for cmd in $cmds; do
3512*00b67f09SDavid van Moolenbroek	IFS="$save_ifs"
3513*00b67f09SDavid van Moolenbroek	$show "$cmd"
3514*00b67f09SDavid van Moolenbroek	$run eval "$cmd" || exit $?
3515*00b67f09SDavid van Moolenbroek      done
3516*00b67f09SDavid van Moolenbroek      IFS="$save_ifs"
3517*00b67f09SDavid van Moolenbroek    done
3518*00b67f09SDavid van Moolenbroek
3519*00b67f09SDavid van Moolenbroek    if test -n "$future_libdirs"; then
3520*00b67f09SDavid van Moolenbroek      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
3521*00b67f09SDavid van Moolenbroek    fi
3522*00b67f09SDavid van Moolenbroek
3523*00b67f09SDavid van Moolenbroek    if test -n "$current_libdirs"; then
3524*00b67f09SDavid van Moolenbroek      # Maybe just do a dry run.
3525*00b67f09SDavid van Moolenbroek      test -n "$run" && current_libdirs=" -n$current_libdirs"
3526*00b67f09SDavid van Moolenbroek      exec $SHELL $0 --finish$current_libdirs
3527*00b67f09SDavid van Moolenbroek      exit 1
3528*00b67f09SDavid van Moolenbroek    fi
3529*00b67f09SDavid van Moolenbroek
3530*00b67f09SDavid van Moolenbroek    exit 0
3531*00b67f09SDavid van Moolenbroek    ;;
3532*00b67f09SDavid van Moolenbroek
3533*00b67f09SDavid van Moolenbroek  # libtool finish mode
3534*00b67f09SDavid van Moolenbroek  finish)
3535*00b67f09SDavid van Moolenbroek    modename="$modename: finish"
3536*00b67f09SDavid van Moolenbroek    libdirs="$nonopt"
3537*00b67f09SDavid van Moolenbroek    admincmds=
3538*00b67f09SDavid van Moolenbroek
3539*00b67f09SDavid van Moolenbroek    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
3540*00b67f09SDavid van Moolenbroek      for dir
3541*00b67f09SDavid van Moolenbroek      do
3542*00b67f09SDavid van Moolenbroek	libdirs="$libdirs $dir"
3543*00b67f09SDavid van Moolenbroek      done
3544*00b67f09SDavid van Moolenbroek
3545*00b67f09SDavid van Moolenbroek      for libdir in $libdirs; do
3546*00b67f09SDavid van Moolenbroek	if test -n "$finish_cmds"; then
3547*00b67f09SDavid van Moolenbroek	  # Do each command in the finish commands.
3548*00b67f09SDavid van Moolenbroek	  eval cmds=\"$finish_cmds\"
3549*00b67f09SDavid van Moolenbroek	  IFS="${IFS= 	}"; save_ifs="$IFS"; IFS='~'
3550*00b67f09SDavid van Moolenbroek	  for cmd in $cmds; do
3551*00b67f09SDavid van Moolenbroek	    IFS="$save_ifs"
3552*00b67f09SDavid van Moolenbroek	    $show "$cmd"
3553*00b67f09SDavid van Moolenbroek	    $run eval "$cmd" || admincmds="$admincmds
3554*00b67f09SDavid van Moolenbroek       $cmd"
3555*00b67f09SDavid van Moolenbroek	  done
3556*00b67f09SDavid van Moolenbroek	  IFS="$save_ifs"
3557*00b67f09SDavid van Moolenbroek	fi
3558*00b67f09SDavid van Moolenbroek	if test -n "$finish_eval"; then
3559*00b67f09SDavid van Moolenbroek	  # Do the single finish_eval.
3560*00b67f09SDavid van Moolenbroek	  eval cmds=\"$finish_eval\"
3561*00b67f09SDavid van Moolenbroek	  $run eval "$cmds" || admincmds="$admincmds
3562*00b67f09SDavid van Moolenbroek       $cmds"
3563*00b67f09SDavid van Moolenbroek	fi
3564*00b67f09SDavid van Moolenbroek      done
3565*00b67f09SDavid van Moolenbroek    fi
3566*00b67f09SDavid van Moolenbroek
3567*00b67f09SDavid van Moolenbroek    # Exit here if they wanted silent mode.
3568*00b67f09SDavid van Moolenbroek    test "$show" = : && exit 0
3569*00b67f09SDavid van Moolenbroek
3570*00b67f09SDavid van Moolenbroek    echo "----------------------------------------------------------------------"
3571*00b67f09SDavid van Moolenbroek    echo "Libraries have been installed in:"
3572*00b67f09SDavid van Moolenbroek    for libdir in $libdirs; do
3573*00b67f09SDavid van Moolenbroek      echo "   $libdir"
3574*00b67f09SDavid van Moolenbroek    done
3575*00b67f09SDavid van Moolenbroek    echo
3576*00b67f09SDavid van Moolenbroek    echo "If you ever happen to want to link against installed libraries"
3577*00b67f09SDavid van Moolenbroek    echo "in a given directory, LIBDIR, you must either use libtool, and"
3578*00b67f09SDavid van Moolenbroek    echo "specify the full pathname of the library, or use \`-LLIBDIR'"
3579*00b67f09SDavid van Moolenbroek    echo "flag during linking and do at least one of the following:"
3580*00b67f09SDavid van Moolenbroek    if test -n "$shlibpath_var"; then
3581*00b67f09SDavid van Moolenbroek      echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
3582*00b67f09SDavid van Moolenbroek      echo "     during execution"
3583*00b67f09SDavid van Moolenbroek    fi
3584*00b67f09SDavid van Moolenbroek    if test -n "$runpath_var"; then
3585*00b67f09SDavid van Moolenbroek      echo "   - add LIBDIR to the \`$runpath_var' environment variable"
3586*00b67f09SDavid van Moolenbroek      echo "     during linking"
3587*00b67f09SDavid van Moolenbroek    fi
3588*00b67f09SDavid van Moolenbroek    if test -n "$hardcode_libdir_flag_spec"; then
3589*00b67f09SDavid van Moolenbroek      libdir=LIBDIR
3590*00b67f09SDavid van Moolenbroek      eval flag=\"$hardcode_libdir_flag_spec\"
3591*00b67f09SDavid van Moolenbroek
3592*00b67f09SDavid van Moolenbroek      echo "   - use the \`$flag' linker flag"
3593*00b67f09SDavid van Moolenbroek    fi
3594*00b67f09SDavid van Moolenbroek    if test -n "$admincmds"; then
3595*00b67f09SDavid van Moolenbroek      echo "   - have your system administrator run these commands:$admincmds"
3596*00b67f09SDavid van Moolenbroek    fi
3597*00b67f09SDavid van Moolenbroek    if test -f /etc/ld.so.conf; then
3598*00b67f09SDavid van Moolenbroek      echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
3599*00b67f09SDavid van Moolenbroek    fi
3600*00b67f09SDavid van Moolenbroek    echo
3601*00b67f09SDavid van Moolenbroek    echo "See any operating system documentation about shared libraries for"
3602*00b67f09SDavid van Moolenbroek    echo "more information, such as the ld(1) and ld.so(8) manual pages."
3603*00b67f09SDavid van Moolenbroek    echo "----------------------------------------------------------------------"
3604*00b67f09SDavid van Moolenbroek    exit 0
3605*00b67f09SDavid van Moolenbroek    ;;
3606*00b67f09SDavid van Moolenbroek
3607*00b67f09SDavid van Moolenbroek  # libtool execute mode
3608*00b67f09SDavid van Moolenbroek  execute)
3609*00b67f09SDavid van Moolenbroek    modename="$modename: execute"
3610*00b67f09SDavid van Moolenbroek
3611*00b67f09SDavid van Moolenbroek    # The first argument is the command name.
3612*00b67f09SDavid van Moolenbroek    cmd="$nonopt"
3613*00b67f09SDavid van Moolenbroek    if test -z "$cmd"; then
3614*00b67f09SDavid van Moolenbroek      $echo "$modename: you must specify a COMMAND" 1>&2
3615*00b67f09SDavid van Moolenbroek      $echo "$help"
3616*00b67f09SDavid van Moolenbroek      exit 1
3617*00b67f09SDavid van Moolenbroek    fi
3618*00b67f09SDavid van Moolenbroek
3619*00b67f09SDavid van Moolenbroek    # Handle -dlopen flags immediately.
3620*00b67f09SDavid van Moolenbroek    for file in $execute_dlfiles; do
3621*00b67f09SDavid van Moolenbroek      if test ! -f "$file"; then
3622*00b67f09SDavid van Moolenbroek	$echo "$modename: \`$file' is not a file" 1>&2
3623*00b67f09SDavid van Moolenbroek	$echo "$help" 1>&2
3624*00b67f09SDavid van Moolenbroek	exit 1
3625*00b67f09SDavid van Moolenbroek      fi
3626*00b67f09SDavid van Moolenbroek
3627*00b67f09SDavid van Moolenbroek      dir=
3628*00b67f09SDavid van Moolenbroek      case "$file" in
3629*00b67f09SDavid van Moolenbroek      *.la)
3630*00b67f09SDavid van Moolenbroek	# Check to see that this really is a libtool archive.
3631*00b67f09SDavid van Moolenbroek	if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
3632*00b67f09SDavid van Moolenbroek	else
3633*00b67f09SDavid van Moolenbroek	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
3634*00b67f09SDavid van Moolenbroek	  $echo "$help" 1>&2
3635*00b67f09SDavid van Moolenbroek	  exit 1
3636*00b67f09SDavid van Moolenbroek	fi
3637*00b67f09SDavid van Moolenbroek
3638*00b67f09SDavid van Moolenbroek	# Read the libtool library.
3639*00b67f09SDavid van Moolenbroek	dlname=
3640*00b67f09SDavid van Moolenbroek	library_names=
3641*00b67f09SDavid van Moolenbroek
3642*00b67f09SDavid van Moolenbroek	# If there is no directory component, then add one.
3643*00b67f09SDavid van Moolenbroek	case "$file" in
3644*00b67f09SDavid van Moolenbroek	*/* | *\\*) . $file ;;
3645*00b67f09SDavid van Moolenbroek	*) . ./$file ;;
3646*00b67f09SDavid van Moolenbroek	esac
3647*00b67f09SDavid van Moolenbroek
3648*00b67f09SDavid van Moolenbroek	# Skip this library if it cannot be dlopened.
3649*00b67f09SDavid van Moolenbroek	if test -z "$dlname"; then
3650*00b67f09SDavid van Moolenbroek	  # Warn if it was a shared library.
3651*00b67f09SDavid van Moolenbroek	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
3652*00b67f09SDavid van Moolenbroek	  continue
3653*00b67f09SDavid van Moolenbroek	fi
3654*00b67f09SDavid van Moolenbroek
3655*00b67f09SDavid van Moolenbroek	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
3656*00b67f09SDavid van Moolenbroek	test "X$dir" = "X$file" && dir=.
3657*00b67f09SDavid van Moolenbroek
3658*00b67f09SDavid van Moolenbroek	if test -f "$dir/$objdir/$dlname"; then
3659*00b67f09SDavid van Moolenbroek	  dir="$dir/$objdir"
3660*00b67f09SDavid van Moolenbroek	else
3661*00b67f09SDavid van Moolenbroek	  $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
3662*00b67f09SDavid van Moolenbroek	  exit 1
3663*00b67f09SDavid van Moolenbroek	fi
3664*00b67f09SDavid van Moolenbroek	;;
3665*00b67f09SDavid van Moolenbroek
3666*00b67f09SDavid van Moolenbroek      *.lo)
3667*00b67f09SDavid van Moolenbroek	# Just add the directory containing the .lo file.
3668*00b67f09SDavid van Moolenbroek	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
3669*00b67f09SDavid van Moolenbroek	test "X$dir" = "X$file" && dir=.
3670*00b67f09SDavid van Moolenbroek	;;
3671*00b67f09SDavid van Moolenbroek
3672*00b67f09SDavid van Moolenbroek      *)
3673*00b67f09SDavid van Moolenbroek	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
3674*00b67f09SDavid van Moolenbroek	continue
3675*00b67f09SDavid van Moolenbroek	;;
3676*00b67f09SDavid van Moolenbroek      esac
3677*00b67f09SDavid van Moolenbroek
3678*00b67f09SDavid van Moolenbroek      # Get the absolute pathname.
3679*00b67f09SDavid van Moolenbroek      absdir=`cd "$dir" && pwd`
3680*00b67f09SDavid van Moolenbroek      test -n "$absdir" && dir="$absdir"
3681*00b67f09SDavid van Moolenbroek
3682*00b67f09SDavid van Moolenbroek      # Now add the directory to shlibpath_var.
3683*00b67f09SDavid van Moolenbroek      if eval "test -z \"\$$shlibpath_var\""; then
3684*00b67f09SDavid van Moolenbroek	eval "$shlibpath_var=\"\$dir\""
3685*00b67f09SDavid van Moolenbroek      else
3686*00b67f09SDavid van Moolenbroek	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
3687*00b67f09SDavid van Moolenbroek      fi
3688*00b67f09SDavid van Moolenbroek    done
3689*00b67f09SDavid van Moolenbroek
3690*00b67f09SDavid van Moolenbroek    # This variable tells wrapper scripts just to set shlibpath_var
3691*00b67f09SDavid van Moolenbroek    # rather than running their programs.
3692*00b67f09SDavid van Moolenbroek    libtool_execute_magic="$magic"
3693*00b67f09SDavid van Moolenbroek
3694*00b67f09SDavid van Moolenbroek    # Check if any of the arguments is a wrapper script.
3695*00b67f09SDavid van Moolenbroek    args=
3696*00b67f09SDavid van Moolenbroek    for file
3697*00b67f09SDavid van Moolenbroek    do
3698*00b67f09SDavid van Moolenbroek      case "$file" in
3699*00b67f09SDavid van Moolenbroek      -*) ;;
3700*00b67f09SDavid van Moolenbroek      *)
3701*00b67f09SDavid van Moolenbroek	# Do a test to see if this is really a libtool program.
3702*00b67f09SDavid van Moolenbroek	if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
3703*00b67f09SDavid van Moolenbroek	  # If there is no directory component, then add one.
3704*00b67f09SDavid van Moolenbroek	  case "$file" in
3705*00b67f09SDavid van Moolenbroek	  */* | *\\*) . $file ;;
3706*00b67f09SDavid van Moolenbroek	  *) . ./$file ;;
3707*00b67f09SDavid van Moolenbroek	  esac
3708*00b67f09SDavid van Moolenbroek
3709*00b67f09SDavid van Moolenbroek	  # Transform arg to wrapped name.
3710*00b67f09SDavid van Moolenbroek	  file="$progdir/$program"
3711*00b67f09SDavid van Moolenbroek	fi
3712*00b67f09SDavid van Moolenbroek	;;
3713*00b67f09SDavid van Moolenbroek      esac
3714*00b67f09SDavid van Moolenbroek      # Quote arguments (to preserve shell metacharacters).
3715*00b67f09SDavid van Moolenbroek      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
3716*00b67f09SDavid van Moolenbroek      args="$args \"$file\""
3717*00b67f09SDavid van Moolenbroek    done
3718*00b67f09SDavid van Moolenbroek
3719*00b67f09SDavid van Moolenbroek    if test -z "$run"; then
3720*00b67f09SDavid van Moolenbroek      if test -n "$shlibpath_var"; then
3721*00b67f09SDavid van Moolenbroek        # Export the shlibpath_var.
3722*00b67f09SDavid van Moolenbroek        eval "export $shlibpath_var"
3723*00b67f09SDavid van Moolenbroek      fi
3724*00b67f09SDavid van Moolenbroek
3725*00b67f09SDavid van Moolenbroek      # Restore saved enviroment variables
3726*00b67f09SDavid van Moolenbroek      if test "${save_LC_ALL+set}" = set; then
3727*00b67f09SDavid van Moolenbroek	LC_ALL="$save_LC_ALL"; export LC_ALL
3728*00b67f09SDavid van Moolenbroek      fi
3729*00b67f09SDavid van Moolenbroek      if test "${save_LANG+set}" = set; then
3730*00b67f09SDavid van Moolenbroek	LANG="$save_LANG"; export LANG
3731*00b67f09SDavid van Moolenbroek      fi
3732*00b67f09SDavid van Moolenbroek
3733*00b67f09SDavid van Moolenbroek      # Now actually exec the command.
3734*00b67f09SDavid van Moolenbroek      eval "exec \$cmd$args"
3735*00b67f09SDavid van Moolenbroek
3736*00b67f09SDavid van Moolenbroek      $echo "$modename: cannot exec \$cmd$args"
3737*00b67f09SDavid van Moolenbroek      exit 1
3738*00b67f09SDavid van Moolenbroek    else
3739*00b67f09SDavid van Moolenbroek      # Display what would be done.
3740*00b67f09SDavid van Moolenbroek      if test -n "$shlibpath_var"; then
3741*00b67f09SDavid van Moolenbroek        eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
3742*00b67f09SDavid van Moolenbroek        $echo "export $shlibpath_var"
3743*00b67f09SDavid van Moolenbroek      fi
3744*00b67f09SDavid van Moolenbroek      $echo "$cmd$args"
3745*00b67f09SDavid van Moolenbroek      exit 0
3746*00b67f09SDavid van Moolenbroek    fi
3747*00b67f09SDavid van Moolenbroek    ;;
3748*00b67f09SDavid van Moolenbroek
3749*00b67f09SDavid van Moolenbroek  # libtool uninstall mode
3750*00b67f09SDavid van Moolenbroek  uninstall)
3751*00b67f09SDavid van Moolenbroek    modename="$modename: uninstall"
3752*00b67f09SDavid van Moolenbroek    rm="$nonopt"
3753*00b67f09SDavid van Moolenbroek    files=
3754*00b67f09SDavid van Moolenbroek
3755*00b67f09SDavid van Moolenbroek    for arg
3756*00b67f09SDavid van Moolenbroek    do
3757*00b67f09SDavid van Moolenbroek      case "$arg" in
3758*00b67f09SDavid van Moolenbroek      -*) rm="$rm $arg" ;;
3759*00b67f09SDavid van Moolenbroek      *) files="$files $arg" ;;
3760*00b67f09SDavid van Moolenbroek      esac
3761*00b67f09SDavid van Moolenbroek    done
3762*00b67f09SDavid van Moolenbroek
3763*00b67f09SDavid van Moolenbroek    if test -z "$rm"; then
3764*00b67f09SDavid van Moolenbroek      $echo "$modename: you must specify an RM program" 1>&2
3765*00b67f09SDavid van Moolenbroek      $echo "$help" 1>&2
3766*00b67f09SDavid van Moolenbroek      exit 1
3767*00b67f09SDavid van Moolenbroek    fi
3768*00b67f09SDavid van Moolenbroek
3769*00b67f09SDavid van Moolenbroek    for file in $files; do
3770*00b67f09SDavid van Moolenbroek      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
3771*00b67f09SDavid van Moolenbroek      test "X$dir" = "X$file" && dir=.
3772*00b67f09SDavid van Moolenbroek      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
3773*00b67f09SDavid van Moolenbroek
3774*00b67f09SDavid van Moolenbroek      rmfiles="$file"
3775*00b67f09SDavid van Moolenbroek
3776*00b67f09SDavid van Moolenbroek      case "$name" in
3777*00b67f09SDavid van Moolenbroek      *.la)
3778*00b67f09SDavid van Moolenbroek	# Possibly a libtool archive, so verify it.
3779*00b67f09SDavid van Moolenbroek	if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
3780*00b67f09SDavid van Moolenbroek	  . $dir/$name
3781*00b67f09SDavid van Moolenbroek
3782*00b67f09SDavid van Moolenbroek	  # Delete the libtool libraries and symlinks.
3783*00b67f09SDavid van Moolenbroek	  for n in $library_names; do
3784*00b67f09SDavid van Moolenbroek	    rmfiles="$rmfiles $dir/$n"
3785*00b67f09SDavid van Moolenbroek	  done
3786*00b67f09SDavid van Moolenbroek	  test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library"
3787*00b67f09SDavid van Moolenbroek
3788*00b67f09SDavid van Moolenbroek	  $show "$rm $rmfiles"
3789*00b67f09SDavid van Moolenbroek	  $run $rm $rmfiles
3790*00b67f09SDavid van Moolenbroek
3791*00b67f09SDavid van Moolenbroek	  if test -n "$library_names"; then
3792*00b67f09SDavid van Moolenbroek	    # Do each command in the postuninstall commands.
3793*00b67f09SDavid van Moolenbroek	    eval cmds=\"$postuninstall_cmds\"
3794*00b67f09SDavid van Moolenbroek	    IFS="${IFS= 	}"; save_ifs="$IFS"; IFS='~'
3795*00b67f09SDavid van Moolenbroek	    for cmd in $cmds; do
3796*00b67f09SDavid van Moolenbroek	      IFS="$save_ifs"
3797*00b67f09SDavid van Moolenbroek	      $show "$cmd"
3798*00b67f09SDavid van Moolenbroek	      $run eval "$cmd"
3799*00b67f09SDavid van Moolenbroek	    done
3800*00b67f09SDavid van Moolenbroek	    IFS="$save_ifs"
3801*00b67f09SDavid van Moolenbroek	  fi
3802*00b67f09SDavid van Moolenbroek
3803*00b67f09SDavid van Moolenbroek	  if test -n "$old_library"; then
3804*00b67f09SDavid van Moolenbroek	    # Do each command in the old_postuninstall commands.
3805*00b67f09SDavid van Moolenbroek	    eval cmds=\"$old_postuninstall_cmds\"
3806*00b67f09SDavid van Moolenbroek	    IFS="${IFS= 	}"; save_ifs="$IFS"; IFS='~'
3807*00b67f09SDavid van Moolenbroek	    for cmd in $cmds; do
3808*00b67f09SDavid van Moolenbroek	      IFS="$save_ifs"
3809*00b67f09SDavid van Moolenbroek	      $show "$cmd"
3810*00b67f09SDavid van Moolenbroek	      $run eval "$cmd"
3811*00b67f09SDavid van Moolenbroek	    done
3812*00b67f09SDavid van Moolenbroek	    IFS="$save_ifs"
3813*00b67f09SDavid van Moolenbroek	  fi
3814*00b67f09SDavid van Moolenbroek
3815*00b67f09SDavid van Moolenbroek	  # FIXME: should reinstall the best remaining shared library.
3816*00b67f09SDavid van Moolenbroek	fi
3817*00b67f09SDavid van Moolenbroek	;;
3818*00b67f09SDavid van Moolenbroek
3819*00b67f09SDavid van Moolenbroek      *.lo)
3820*00b67f09SDavid van Moolenbroek	if test "$build_old_libs" = yes; then
3821*00b67f09SDavid van Moolenbroek	  oldobj=`$echo "X$name" | $Xsed -e "$lo2o"`
3822*00b67f09SDavid van Moolenbroek	  rmfiles="$rmfiles $dir/$oldobj"
3823*00b67f09SDavid van Moolenbroek	fi
3824*00b67f09SDavid van Moolenbroek	$show "$rm $rmfiles"
3825*00b67f09SDavid van Moolenbroek	$run $rm $rmfiles
3826*00b67f09SDavid van Moolenbroek	;;
3827*00b67f09SDavid van Moolenbroek
3828*00b67f09SDavid van Moolenbroek      *)
3829*00b67f09SDavid van Moolenbroek	$show "$rm $rmfiles"
3830*00b67f09SDavid van Moolenbroek	$run $rm $rmfiles
3831*00b67f09SDavid van Moolenbroek	;;
3832*00b67f09SDavid van Moolenbroek      esac
3833*00b67f09SDavid van Moolenbroek    done
3834*00b67f09SDavid van Moolenbroek    exit 0
3835*00b67f09SDavid van Moolenbroek    ;;
3836*00b67f09SDavid van Moolenbroek
3837*00b67f09SDavid van Moolenbroek  "")
3838*00b67f09SDavid van Moolenbroek    $echo "$modename: you must specify a MODE" 1>&2
3839*00b67f09SDavid van Moolenbroek    $echo "$generic_help" 1>&2
3840*00b67f09SDavid van Moolenbroek    exit 1
3841*00b67f09SDavid van Moolenbroek    ;;
3842*00b67f09SDavid van Moolenbroek  esac
3843*00b67f09SDavid van Moolenbroek
3844*00b67f09SDavid van Moolenbroek  $echo "$modename: invalid operation mode \`$mode'" 1>&2
3845*00b67f09SDavid van Moolenbroek  $echo "$generic_help" 1>&2
3846*00b67f09SDavid van Moolenbroek  exit 1
3847*00b67f09SDavid van Moolenbroekfi # test -z "$show_help"
3848*00b67f09SDavid van Moolenbroek
3849*00b67f09SDavid van Moolenbroek# We need to display help for each of the modes.
3850*00b67f09SDavid van Moolenbroekcase "$mode" in
3851*00b67f09SDavid van Moolenbroek"") $echo \
3852*00b67f09SDavid van Moolenbroek"Usage: $modename [OPTION]... [MODE-ARG]...
3853*00b67f09SDavid van Moolenbroek
3854*00b67f09SDavid van MoolenbroekProvide generalized library-building support services.
3855*00b67f09SDavid van Moolenbroek
3856*00b67f09SDavid van Moolenbroek    --config          show all configuration variables
3857*00b67f09SDavid van Moolenbroek    --debug           enable verbose shell tracing
3858*00b67f09SDavid van Moolenbroek-n, --dry-run         display commands without modifying any files
3859*00b67f09SDavid van Moolenbroek    --features        display basic configuration information and exit
3860*00b67f09SDavid van Moolenbroek    --finish          same as \`--mode=finish'
3861*00b67f09SDavid van Moolenbroek    --help            display this help message and exit
3862*00b67f09SDavid van Moolenbroek    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
3863*00b67f09SDavid van Moolenbroek    --quiet           same as \`--silent'
3864*00b67f09SDavid van Moolenbroek    --silent          don't print informational messages
3865*00b67f09SDavid van Moolenbroek    --version         print version information
3866*00b67f09SDavid van Moolenbroek
3867*00b67f09SDavid van MoolenbroekMODE must be one of the following:
3868*00b67f09SDavid van Moolenbroek
3869*00b67f09SDavid van Moolenbroek      compile         compile a source file into a libtool object
3870*00b67f09SDavid van Moolenbroek      execute         automatically set library path, then run a program
3871*00b67f09SDavid van Moolenbroek      finish          complete the installation of libtool libraries
3872*00b67f09SDavid van Moolenbroek      install         install libraries or executables
3873*00b67f09SDavid van Moolenbroek      link            create a library or an executable
3874*00b67f09SDavid van Moolenbroek      uninstall       remove libraries from an installed directory
3875*00b67f09SDavid van Moolenbroek
3876*00b67f09SDavid van MoolenbroekMODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
3877*00b67f09SDavid van Moolenbroeka more detailed description of MODE."
3878*00b67f09SDavid van Moolenbroek  exit 0
3879*00b67f09SDavid van Moolenbroek  ;;
3880*00b67f09SDavid van Moolenbroek
3881*00b67f09SDavid van Moolenbroekcompile)
3882*00b67f09SDavid van Moolenbroek  $echo \
3883*00b67f09SDavid van Moolenbroek"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
3884*00b67f09SDavid van Moolenbroek
3885*00b67f09SDavid van MoolenbroekCompile a source file into a libtool library object.
3886*00b67f09SDavid van Moolenbroek
3887*00b67f09SDavid van MoolenbroekThis mode accepts the following additional options:
3888*00b67f09SDavid van Moolenbroek
3889*00b67f09SDavid van Moolenbroek  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
3890*00b67f09SDavid van Moolenbroek  -static           always build a \`.o' file suitable for static linking
3891*00b67f09SDavid van Moolenbroek
3892*00b67f09SDavid van MoolenbroekCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
3893*00b67f09SDavid van Moolenbroekfrom the given SOURCEFILE.
3894*00b67f09SDavid van Moolenbroek
3895*00b67f09SDavid van MoolenbroekThe output file name is determined by removing the directory component from
3896*00b67f09SDavid van MoolenbroekSOURCEFILE, then substituting the C source code suffix \`.c' with the
3897*00b67f09SDavid van Moolenbroeklibrary object suffix, \`.lo'."
3898*00b67f09SDavid van Moolenbroek  ;;
3899*00b67f09SDavid van Moolenbroek
3900*00b67f09SDavid van Moolenbroekexecute)
3901*00b67f09SDavid van Moolenbroek  $echo \
3902*00b67f09SDavid van Moolenbroek"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
3903*00b67f09SDavid van Moolenbroek
3904*00b67f09SDavid van MoolenbroekAutomatically set library path, then run a program.
3905*00b67f09SDavid van Moolenbroek
3906*00b67f09SDavid van MoolenbroekThis mode accepts the following additional options:
3907*00b67f09SDavid van Moolenbroek
3908*00b67f09SDavid van Moolenbroek  -dlopen FILE      add the directory containing FILE to the library path
3909*00b67f09SDavid van Moolenbroek
3910*00b67f09SDavid van MoolenbroekThis mode sets the library path environment variable according to \`-dlopen'
3911*00b67f09SDavid van Moolenbroekflags.
3912*00b67f09SDavid van Moolenbroek
3913*00b67f09SDavid van MoolenbroekIf any of the ARGS are libtool executable wrappers, then they are translated
3914*00b67f09SDavid van Moolenbroekinto their corresponding uninstalled binary, and any of their required library
3915*00b67f09SDavid van Moolenbroekdirectories are added to the library path.
3916*00b67f09SDavid van Moolenbroek
3917*00b67f09SDavid van MoolenbroekThen, COMMAND is executed, with ARGS as arguments."
3918*00b67f09SDavid van Moolenbroek  ;;
3919*00b67f09SDavid van Moolenbroek
3920*00b67f09SDavid van Moolenbroekfinish)
3921*00b67f09SDavid van Moolenbroek  $echo \
3922*00b67f09SDavid van Moolenbroek"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
3923*00b67f09SDavid van Moolenbroek
3924*00b67f09SDavid van MoolenbroekComplete the installation of libtool libraries.
3925*00b67f09SDavid van Moolenbroek
3926*00b67f09SDavid van MoolenbroekEach LIBDIR is a directory that contains libtool libraries.
3927*00b67f09SDavid van Moolenbroek
3928*00b67f09SDavid van MoolenbroekThe commands that this mode executes may require superuser privileges.  Use
3929*00b67f09SDavid van Moolenbroekthe \`--dry-run' option if you just want to see what would be executed."
3930*00b67f09SDavid van Moolenbroek  ;;
3931*00b67f09SDavid van Moolenbroek
3932*00b67f09SDavid van Moolenbroekinstall)
3933*00b67f09SDavid van Moolenbroek  $echo \
3934*00b67f09SDavid van Moolenbroek"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
3935*00b67f09SDavid van Moolenbroek
3936*00b67f09SDavid van MoolenbroekInstall executables or libraries.
3937*00b67f09SDavid van Moolenbroek
3938*00b67f09SDavid van MoolenbroekINSTALL-COMMAND is the installation command.  The first component should be
3939*00b67f09SDavid van Moolenbroekeither the \`install' or \`cp' program.
3940*00b67f09SDavid van Moolenbroek
3941*00b67f09SDavid van MoolenbroekThe rest of the components are interpreted as arguments to that command (only
3942*00b67f09SDavid van MoolenbroekBSD-compatible install options are recognized)."
3943*00b67f09SDavid van Moolenbroek  ;;
3944*00b67f09SDavid van Moolenbroek
3945*00b67f09SDavid van Moolenbroeklink)
3946*00b67f09SDavid van Moolenbroek  $echo \
3947*00b67f09SDavid van Moolenbroek"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
3948*00b67f09SDavid van Moolenbroek
3949*00b67f09SDavid van MoolenbroekLink object files or libraries together to form another library, or to
3950*00b67f09SDavid van Moolenbroekcreate an executable program.
3951*00b67f09SDavid van Moolenbroek
3952*00b67f09SDavid van MoolenbroekLINK-COMMAND is a command using the C compiler that you would use to create
3953*00b67f09SDavid van Moolenbroeka program from several object files.
3954*00b67f09SDavid van Moolenbroek
3955*00b67f09SDavid van MoolenbroekThe following components of LINK-COMMAND are treated specially:
3956*00b67f09SDavid van Moolenbroek
3957*00b67f09SDavid van Moolenbroek  -all-static       do not do any dynamic linking at all
3958*00b67f09SDavid van Moolenbroek  -avoid-version    do not add a version suffix if possible
3959*00b67f09SDavid van Moolenbroek  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
3960*00b67f09SDavid van Moolenbroek  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
3961*00b67f09SDavid van Moolenbroek  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
3962*00b67f09SDavid van Moolenbroek  -export-symbols SYMFILE
3963*00b67f09SDavid van Moolenbroek		    try to export only the symbols listed in SYMFILE
3964*00b67f09SDavid van Moolenbroek  -export-symbols-regex REGEX
3965*00b67f09SDavid van Moolenbroek		    try to export only the symbols matching REGEX
3966*00b67f09SDavid van Moolenbroek  -LLIBDIR          search LIBDIR for required installed libraries
3967*00b67f09SDavid van Moolenbroek  -lNAME            OUTPUT-FILE requires the installed library libNAME
3968*00b67f09SDavid van Moolenbroek  -module           build a library that can dlopened
3969*00b67f09SDavid van Moolenbroek  -no-undefined     declare that a library does not refer to external symbols
3970*00b67f09SDavid van Moolenbroek  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
3971*00b67f09SDavid van Moolenbroek  -release RELEASE  specify package release information
3972*00b67f09SDavid van Moolenbroek  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
3973*00b67f09SDavid van Moolenbroek  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
3974*00b67f09SDavid van Moolenbroek  -static           do not do any dynamic linking of libtool libraries
3975*00b67f09SDavid van Moolenbroek  -version-info CURRENT[:REVISION[:AGE]]
3976*00b67f09SDavid van Moolenbroek		    specify library version info [each variable defaults to 0]
3977*00b67f09SDavid van Moolenbroek
3978*00b67f09SDavid van MoolenbroekAll other options (arguments beginning with \`-') are ignored.
3979*00b67f09SDavid van Moolenbroek
3980*00b67f09SDavid van MoolenbroekEvery other argument is treated as a filename.  Files ending in \`.la' are
3981*00b67f09SDavid van Moolenbroektreated as uninstalled libtool libraries, other files are standard or library
3982*00b67f09SDavid van Moolenbroekobject files.
3983*00b67f09SDavid van Moolenbroek
3984*00b67f09SDavid van MoolenbroekIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
3985*00b67f09SDavid van Moolenbroekonly library objects (\`.lo' files) may be specified, and \`-rpath' is
3986*00b67f09SDavid van Moolenbroekrequired, except when creating a convenience library.
3987*00b67f09SDavid van Moolenbroek
3988*00b67f09SDavid van MoolenbroekIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
3989*00b67f09SDavid van Moolenbroekusing \`ar' and \`ranlib', or on Windows using \`lib'.
3990*00b67f09SDavid van Moolenbroek
3991*00b67f09SDavid van MoolenbroekIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
3992*00b67f09SDavid van Moolenbroekis created, otherwise an executable program is created."
3993*00b67f09SDavid van Moolenbroek  ;;
3994*00b67f09SDavid van Moolenbroek
3995*00b67f09SDavid van Moolenbroekuninstall)
3996*00b67f09SDavid van Moolenbroek  $echo \
3997*00b67f09SDavid van Moolenbroek"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
3998*00b67f09SDavid van Moolenbroek
3999*00b67f09SDavid van MoolenbroekRemove libraries from an installation directory.
4000*00b67f09SDavid van Moolenbroek
4001*00b67f09SDavid van MoolenbroekRM is the name of the program to use to delete files associated with each FILE
4002*00b67f09SDavid van Moolenbroek(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
4003*00b67f09SDavid van Moolenbroekto RM.
4004*00b67f09SDavid van Moolenbroek
4005*00b67f09SDavid van MoolenbroekIf FILE is a libtool library, all the files associated with it are deleted.
4006*00b67f09SDavid van MoolenbroekOtherwise, only FILE itself is deleted using RM."
4007*00b67f09SDavid van Moolenbroek  ;;
4008*00b67f09SDavid van Moolenbroek
4009*00b67f09SDavid van Moolenbroek*)
4010*00b67f09SDavid van Moolenbroek  $echo "$modename: invalid operation mode \`$mode'" 1>&2
4011*00b67f09SDavid van Moolenbroek  $echo "$help" 1>&2
4012*00b67f09SDavid van Moolenbroek  exit 1
4013*00b67f09SDavid van Moolenbroek  ;;
4014*00b67f09SDavid van Moolenbroekesac
4015*00b67f09SDavid van Moolenbroek
4016*00b67f09SDavid van Moolenbroekecho
4017*00b67f09SDavid van Moolenbroek$echo "Try \`$modename --help' for more information about other modes."
4018*00b67f09SDavid van Moolenbroek
4019*00b67f09SDavid van Moolenbroekexit 0
4020*00b67f09SDavid van Moolenbroek
4021*00b67f09SDavid van Moolenbroek# Local Variables:
4022*00b67f09SDavid van Moolenbroek# mode:shell-script
4023*00b67f09SDavid van Moolenbroek# sh-indentation:2
4024*00b67f09SDavid van Moolenbroek# End:
4025