ltmain.sh revision e1e1713c
1e1e1713cSmrg# ltmain.sh - Provide generalized library-building support services.
2e1e1713cSmrg# NOTE: Changing this file will not affect anything until you rerun configure.
3e1e1713cSmrg#
4e1e1713cSmrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
5e1e1713cSmrg# 2007, 2008  Free Software Foundation, Inc.
6e1e1713cSmrg# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
7e1e1713cSmrg#
8e1e1713cSmrg# This program is free software; you can redistribute it and/or modify
97a84e134Smrg# it under the terms of the GNU General Public License as published by
107a84e134Smrg# the Free Software Foundation; either version 2 of the License, or
117a84e134Smrg# (at your option) any later version.
127a84e134Smrg#
13e1e1713cSmrg# This program is distributed in the hope that it will be useful, but
147a84e134Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
157a84e134Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
167a84e134Smrg# General Public License for more details.
177a84e134Smrg#
187a84e134Smrg# You should have received a copy of the GNU General Public License
19e1e1713cSmrg# along with this program; if not, write to the Free Software
20e1e1713cSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21775e7de9Smrg#
22e1e1713cSmrg# As a special exception to the GNU General Public License, if you
23e1e1713cSmrg# distribute this file as part of a program that contains a
24e1e1713cSmrg# configuration script generated by Autoconf, you may include it under
25e1e1713cSmrg# the same distribution terms that you use for the rest of that program.
26e1e1713cSmrg
27e1e1713cSmrgbasename="s,^.*/,,g"
28e1e1713cSmrg
29e1e1713cSmrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
30e1e1713cSmrg# is ksh but when the shell is invoked as "sh" and the current value of
31e1e1713cSmrg# the _XPG environment variable is not equal to 1 (one), the special
32e1e1713cSmrg# positional parameter $0, within a function call, is the name of the
33e1e1713cSmrg# function.
34e1e1713cSmrgprogpath="$0"
35e1e1713cSmrg
36e1e1713cSmrg# The name of this program:
37e1e1713cSmrgprogname=`echo "$progpath" | $SED $basename`
38e1e1713cSmrgmodename="$progname"
39e1e1713cSmrg
40e1e1713cSmrg# Global variables:
41e1e1713cSmrgEXIT_SUCCESS=0
42e1e1713cSmrgEXIT_FAILURE=1
437a84e134Smrg
447a84e134SmrgPROGRAM=ltmain.sh
457a84e134SmrgPACKAGE=libtool
46e1e1713cSmrgVERSION=1.5.26
47e1e1713cSmrgTIMESTAMP=" (1.1220.2.492 2008/01/30 06:40:56)"
48ab902922Smrg
49e1e1713cSmrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
50ab902922Smrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
51ab902922Smrg  emulate sh
52ab902922Smrg  NULLCMD=:
53ab902922Smrg  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
54ab902922Smrg  # is contrary to our usage.  Disable this feature.
55ab902922Smrg  alias -g '${1+"$@"}'='"$@"'
567a84e134Smrg  setopt NO_GLOB_SUBST
57ab902922Smrgelse
58ab902922Smrg  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
597a84e134Smrgfi
60ab902922SmrgBIN_SH=xpg4; export BIN_SH # for Tru64
61ab902922SmrgDUALCASE=1; export DUALCASE # for MKS sh
627a84e134Smrg
63e1e1713cSmrg# Check that we have a working $echo.
64e1e1713cSmrgif test "X$1" = X--no-reexec; then
65e1e1713cSmrg  # Discard the --no-reexec flag, and continue.
66e1e1713cSmrg  shift
67e1e1713cSmrgelif test "X$1" = X--fallback-echo; then
68e1e1713cSmrg  # Avoid inline document here, it may be left over
69e1e1713cSmrg  :
70e1e1713cSmrgelif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
71e1e1713cSmrg  # Yippee, $echo works!
72e1e1713cSmrg  :
73e1e1713cSmrgelse
74e1e1713cSmrg  # Restart under the correct shell, and then maybe $echo will work.
75e1e1713cSmrg  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
76e1e1713cSmrgfi
77e1e1713cSmrg
78e1e1713cSmrgif test "X$1" = X--fallback-echo; then
79e1e1713cSmrg  # used as fallback echo
80e1e1713cSmrg  shift
81e1e1713cSmrg  cat <<EOF
82e1e1713cSmrg$*
83e1e1713cSmrgEOF
84e1e1713cSmrg  exit $EXIT_SUCCESS
85e1e1713cSmrgfi
86e1e1713cSmrg
87e1e1713cSmrgdefault_mode=
88e1e1713cSmrghelp="Try \`$progname --help' for more information."
89e1e1713cSmrgmagic="%%%MAGIC variable%%%"
90e1e1713cSmrgmkdir="mkdir"
91e1e1713cSmrgmv="mv -f"
92e1e1713cSmrgrm="rm -f"
93e1e1713cSmrg
94e1e1713cSmrg# Sed substitution that helps us do robust quoting.  It backslashifies
95e1e1713cSmrg# metacharacters that are still active within double-quoted strings.
96e1e1713cSmrgXsed="${SED}"' -e 1s/^X//'
97e1e1713cSmrgsed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
98e1e1713cSmrg# test EBCDIC or ASCII
99e1e1713cSmrgcase `echo X|tr X '\101'` in
100e1e1713cSmrg A) # ASCII based system
101e1e1713cSmrg    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
102e1e1713cSmrg  SP2NL='tr \040 \012'
103e1e1713cSmrg  NL2SP='tr \015\012 \040\040'
104e1e1713cSmrg  ;;
105e1e1713cSmrg *) # EBCDIC based system
106e1e1713cSmrg  SP2NL='tr \100 \n'
107e1e1713cSmrg  NL2SP='tr \r\n \100\100'
108e1e1713cSmrg  ;;
109e1e1713cSmrgesac
110e1e1713cSmrg
111e1e1713cSmrg# NLS nuisances.
1127a84e134Smrg# Only set LANG and LC_ALL to C if already set.
1137a84e134Smrg# These must not be set unconditionally because not all systems understand
1147a84e134Smrg# e.g. LANG=C (notably SCO).
115e1e1713cSmrg# We save the old values to restore during execute mode.
116e1e1713cSmrglt_env=
117ab902922Smrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
118ab902922Smrgdo
119ab902922Smrg  eval "if test \"\${$lt_var+set}\" = set; then
120e1e1713cSmrg	  save_$lt_var=\$$lt_var
121e1e1713cSmrg	  lt_env=\"$lt_var=\$$lt_var \$lt_env\"
122e1e1713cSmrg	  $lt_var=C
123ab902922Smrg	  export $lt_var
124ab902922Smrg	fi"
125ab902922Smrgdone
126ab902922Smrg
127e1e1713cSmrgif test -n "$lt_env"; then
128e1e1713cSmrg  lt_env="env $lt_env"
129e1e1713cSmrgfi
1307a84e134Smrg
1317a84e134Smrg# Make sure IFS has a sensible default
1327a84e134Smrglt_nl='
1337a84e134Smrg'
1347a84e134SmrgIFS=" 	$lt_nl"
1357a84e134Smrg
136e1e1713cSmrgif test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
137e1e1713cSmrg  $echo "$modename: not configured to build any kind of library" 1>&2
138e1e1713cSmrg  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
139e1e1713cSmrg  exit $EXIT_FAILURE
140e1e1713cSmrgfi
141775e7de9Smrg
142e1e1713cSmrg# Global variables.
143e1e1713cSmrgmode=$default_mode
144e1e1713cSmrgnonopt=
145e1e1713cSmrgprev=
146e1e1713cSmrgprevopt=
147e1e1713cSmrgrun=
148e1e1713cSmrgshow="$echo"
149e1e1713cSmrgshow_help=
150e1e1713cSmrgexecute_dlfiles=
151e1e1713cSmrgduplicate_deps=no
152e1e1713cSmrgpreserve_args=
153e1e1713cSmrglo2o="s/\\.lo\$/.${objext}/"
154e1e1713cSmrgo2lo="s/\\.${objext}\$/.lo/"
155e1e1713cSmrgextracted_archives=
156e1e1713cSmrgextracted_serial=0
1577a84e134Smrg
158e1e1713cSmrg#####################################
159e1e1713cSmrg# Shell function definitions:
160e1e1713cSmrg# This seems to be the best place for them
1617a84e134Smrg
1627a84e134Smrg# func_mktempdir [string]
1637a84e134Smrg# Make a temporary directory that won't clash with other running
1647a84e134Smrg# libtool processes, and avoids race conditions if possible.  If
1657a84e134Smrg# given, STRING is the basename for that directory.
1667a84e134Smrgfunc_mktempdir ()
1677a84e134Smrg{
1687a84e134Smrg    my_template="${TMPDIR-/tmp}/${1-$progname}"
1697a84e134Smrg
170e1e1713cSmrg    if test "$run" = ":"; then
1717a84e134Smrg      # Return a directory name, but don't create it in dry-run mode
1727a84e134Smrg      my_tmpdir="${my_template}-$$"
1737a84e134Smrg    else
1747a84e134Smrg
1757a84e134Smrg      # If mktemp works, use that first and foremost
1767a84e134Smrg      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
1777a84e134Smrg
1787a84e134Smrg      if test ! -d "$my_tmpdir"; then
179e1e1713cSmrg	# Failing that, at least try and use $RANDOM to avoid a race
180e1e1713cSmrg	my_tmpdir="${my_template}-${RANDOM-0}$$"
1817a84e134Smrg
182e1e1713cSmrg	save_mktempdir_umask=`umask`
183e1e1713cSmrg	umask 0077
184e1e1713cSmrg	$mkdir "$my_tmpdir"
185e1e1713cSmrg	umask $save_mktempdir_umask
1867a84e134Smrg      fi
1877a84e134Smrg
1887a84e134Smrg      # If we're not in dry-run mode, bomb out on failure
189e1e1713cSmrg      test -d "$my_tmpdir" || {
190e1e1713cSmrg        $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
191e1e1713cSmrg	exit $EXIT_FAILURE
192e1e1713cSmrg      }
1937a84e134Smrg    fi
1947a84e134Smrg
195e1e1713cSmrg    $echo "X$my_tmpdir" | $Xsed
1967a84e134Smrg}
1977a84e134Smrg
1987a84e134Smrg
199e1e1713cSmrg# func_win32_libid arg
200e1e1713cSmrg# return the library type of file 'arg'
201e1e1713cSmrg#
202e1e1713cSmrg# Need a lot of goo to handle *both* DLLs and import libs
203e1e1713cSmrg# Has to be a shell function in order to 'eat' the argument
204e1e1713cSmrg# that is supplied when $file_magic_command is called.
205e1e1713cSmrgfunc_win32_libid ()
2067a84e134Smrg{
207e1e1713cSmrg  win32_libid_type="unknown"
208e1e1713cSmrg  win32_fileres=`file -L $1 2>/dev/null`
209e1e1713cSmrg  case $win32_fileres in
210e1e1713cSmrg  *ar\ archive\ import\ library*) # definitely import
211e1e1713cSmrg    win32_libid_type="x86 archive import"
212e1e1713cSmrg    ;;
213e1e1713cSmrg  *ar\ archive*) # could be an import, or static
214e1e1713cSmrg    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
215e1e1713cSmrg      $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
216e1e1713cSmrg      win32_nmres=`eval $NM -f posix -A $1 | \
217e1e1713cSmrg	$SED -n -e '1,100{
218e1e1713cSmrg		/ I /{
219e1e1713cSmrg			s,.*,import,
220e1e1713cSmrg			p
221e1e1713cSmrg			q
222e1e1713cSmrg			}
223e1e1713cSmrg		}'`
224e1e1713cSmrg      case $win32_nmres in
225e1e1713cSmrg      import*)  win32_libid_type="x86 archive import";;
226e1e1713cSmrg      *)        win32_libid_type="x86 archive static";;
227e1e1713cSmrg      esac
228e1e1713cSmrg    fi
229e1e1713cSmrg    ;;
230e1e1713cSmrg  *DLL*)
231e1e1713cSmrg    win32_libid_type="x86 DLL"
232e1e1713cSmrg    ;;
233e1e1713cSmrg  *executable*) # but shell scripts are "executable" too...
234e1e1713cSmrg    case $win32_fileres in
235e1e1713cSmrg    *MS\ Windows\ PE\ Intel*)
236e1e1713cSmrg      win32_libid_type="x86 DLL"
237e1e1713cSmrg      ;;
2387a84e134Smrg    esac
239e1e1713cSmrg    ;;
240e1e1713cSmrg  esac
241e1e1713cSmrg  $echo $win32_libid_type
2427a84e134Smrg}
2437a84e134Smrg
2447a84e134Smrg
245e1e1713cSmrg# func_infer_tag arg
246e1e1713cSmrg# Infer tagged configuration to use if any are available and
247e1e1713cSmrg# if one wasn't chosen via the "--tag" command line option.
248e1e1713cSmrg# Only attempt this if the compiler in the base compile
249e1e1713cSmrg# command doesn't match the default compiler.
250e1e1713cSmrg# arg is usually of the form 'gcc ...'
251e1e1713cSmrgfunc_infer_tag ()
2527a84e134Smrg{
253e1e1713cSmrg    if test -n "$available_tags" && test -z "$tagname"; then
254e1e1713cSmrg      CC_quoted=
255e1e1713cSmrg      for arg in $CC; do
256e1e1713cSmrg	case $arg in
257e1e1713cSmrg	  *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
258e1e1713cSmrg	  arg="\"$arg\""
259e1e1713cSmrg	  ;;
260e1e1713cSmrg	esac
261e1e1713cSmrg	CC_quoted="$CC_quoted $arg"
262e1e1713cSmrg      done
263e1e1713cSmrg      case $@ in
264e1e1713cSmrg      # Blanks in the command may have been stripped by the calling shell,
265e1e1713cSmrg      # but not from the CC environment variable when configure was run.
266e1e1713cSmrg      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
267e1e1713cSmrg      # Blanks at the start of $base_compile will cause this to fail
268e1e1713cSmrg      # if we don't check for them as well.
2697a84e134Smrg      *)
270e1e1713cSmrg	for z in $available_tags; do
271e1e1713cSmrg	  if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
272e1e1713cSmrg	    # Evaluate the configuration.
273e1e1713cSmrg	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
274e1e1713cSmrg	    CC_quoted=
275e1e1713cSmrg	    for arg in $CC; do
276e1e1713cSmrg	    # Double-quote args containing other shell metacharacters.
277e1e1713cSmrg	    case $arg in
278e1e1713cSmrg	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
279e1e1713cSmrg	      arg="\"$arg\""
280e1e1713cSmrg	      ;;
281e1e1713cSmrg	    esac
282e1e1713cSmrg	    CC_quoted="$CC_quoted $arg"
283e1e1713cSmrg	  done
284e1e1713cSmrg	    case "$@ " in
285e1e1713cSmrg	      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
286e1e1713cSmrg	      # The compiler in the base compile command matches
287e1e1713cSmrg	      # the one in the tagged configuration.
288e1e1713cSmrg	      # Assume this is the tagged configuration we want.
289e1e1713cSmrg	      tagname=$z
290e1e1713cSmrg	      break
291e1e1713cSmrg	      ;;
292e1e1713cSmrg	    esac
293e1e1713cSmrg	  fi
294e1e1713cSmrg	done
295e1e1713cSmrg	# If $tagname still isn't set, then no tagged configuration
296e1e1713cSmrg	# was found and let the user know that the "--tag" command
297e1e1713cSmrg	# line option must be used.
298e1e1713cSmrg	if test -z "$tagname"; then
299e1e1713cSmrg	  $echo "$modename: unable to infer tagged configuration"
300e1e1713cSmrg	  $echo "$modename: specify a tag with \`--tag'" 1>&2
301e1e1713cSmrg	  exit $EXIT_FAILURE
302e1e1713cSmrg#        else
303e1e1713cSmrg#          $echo "$modename: using $tagname tagged configuration"
304e1e1713cSmrg	fi
305e1e1713cSmrg	;;
306e1e1713cSmrg      esac
307e1e1713cSmrg    fi
3087a84e134Smrg}
3097a84e134Smrg
3107a84e134Smrg
311e1e1713cSmrg# func_extract_an_archive dir oldlib
312e1e1713cSmrgfunc_extract_an_archive ()
3137a84e134Smrg{
314e1e1713cSmrg    f_ex_an_ar_dir="$1"; shift
315e1e1713cSmrg    f_ex_an_ar_oldlib="$1"
316775e7de9Smrg
317e1e1713cSmrg    $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
318e1e1713cSmrg    $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
319e1e1713cSmrg    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
320e1e1713cSmrg     :
321e1e1713cSmrg    else
322e1e1713cSmrg      $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
323e1e1713cSmrg      exit $EXIT_FAILURE
3247a84e134Smrg    fi
3257a84e134Smrg}
3267a84e134Smrg
327e1e1713cSmrg# func_extract_archives gentop oldlib ...
328e1e1713cSmrgfunc_extract_archives ()
3297a84e134Smrg{
330e1e1713cSmrg    my_gentop="$1"; shift
331e1e1713cSmrg    my_oldlibs=${1+"$@"}
332e1e1713cSmrg    my_oldobjs=""
333e1e1713cSmrg    my_xlib=""
334e1e1713cSmrg    my_xabs=""
335e1e1713cSmrg    my_xdir=""
336e1e1713cSmrg    my_status=""
337e1e1713cSmrg
338e1e1713cSmrg    $show "${rm}r $my_gentop"
339e1e1713cSmrg    $run ${rm}r "$my_gentop"
340e1e1713cSmrg    $show "$mkdir $my_gentop"
341e1e1713cSmrg    $run $mkdir "$my_gentop"
342e1e1713cSmrg    my_status=$?
343e1e1713cSmrg    if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
344e1e1713cSmrg      exit $my_status
3457a84e134Smrg    fi
3467a84e134Smrg
347e1e1713cSmrg    for my_xlib in $my_oldlibs; do
348e1e1713cSmrg      # Extract the objects.
349e1e1713cSmrg      case $my_xlib in
350e1e1713cSmrg	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
351e1e1713cSmrg	*) my_xabs=`pwd`"/$my_xlib" ;;
352e1e1713cSmrg      esac
353e1e1713cSmrg      my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
354e1e1713cSmrg      my_xlib_u=$my_xlib
355e1e1713cSmrg      while :; do
356e1e1713cSmrg        case " $extracted_archives " in
357e1e1713cSmrg	*" $my_xlib_u "*)
358e1e1713cSmrg	  extracted_serial=`expr $extracted_serial + 1`
359e1e1713cSmrg	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
360e1e1713cSmrg	*) break ;;
361e1e1713cSmrg	esac
362e1e1713cSmrg      done
363e1e1713cSmrg      extracted_archives="$extracted_archives $my_xlib_u"
364e1e1713cSmrg      my_xdir="$my_gentop/$my_xlib_u"
365775e7de9Smrg
366e1e1713cSmrg      $show "${rm}r $my_xdir"
367e1e1713cSmrg      $run ${rm}r "$my_xdir"
368e1e1713cSmrg      $show "$mkdir $my_xdir"
369e1e1713cSmrg      $run $mkdir "$my_xdir"
370e1e1713cSmrg      exit_status=$?
371e1e1713cSmrg      if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
372e1e1713cSmrg	exit $exit_status
373e1e1713cSmrg      fi
374e1e1713cSmrg      case $host in
375e1e1713cSmrg      *-darwin*)
376e1e1713cSmrg	$show "Extracting $my_xabs"
377e1e1713cSmrg	# Do not bother doing anything if just a dry run
378e1e1713cSmrg	if test -z "$run"; then
379e1e1713cSmrg	  darwin_orig_dir=`pwd`
380e1e1713cSmrg	  cd $my_xdir || exit $?
381e1e1713cSmrg	  darwin_archive=$my_xabs
382e1e1713cSmrg	  darwin_curdir=`pwd`
383e1e1713cSmrg	  darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
384e1e1713cSmrg	  darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
385e1e1713cSmrg	  if test -n "$darwin_arches"; then 
386e1e1713cSmrg	    darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
387e1e1713cSmrg	    darwin_arch=
388e1e1713cSmrg	    $show "$darwin_base_archive has multiple architectures $darwin_arches"
389e1e1713cSmrg	    for darwin_arch in  $darwin_arches ; do
390e1e1713cSmrg	      mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
391e1e1713cSmrg	      lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
392e1e1713cSmrg	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
393e1e1713cSmrg	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
394e1e1713cSmrg	      cd "$darwin_curdir"
395e1e1713cSmrg	      $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
396e1e1713cSmrg	    done # $darwin_arches
397e1e1713cSmrg      ## Okay now we have a bunch of thin objects, gotta fatten them up :)
398e1e1713cSmrg	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
399e1e1713cSmrg	    darwin_file=
400e1e1713cSmrg	    darwin_files=
401e1e1713cSmrg	    for darwin_file in $darwin_filelist; do
402e1e1713cSmrg	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
403e1e1713cSmrg	      lipo -create -output "$darwin_file" $darwin_files
404e1e1713cSmrg	    done # $darwin_filelist
405e1e1713cSmrg	    ${rm}r unfat-$$
406e1e1713cSmrg	    cd "$darwin_orig_dir"
407e1e1713cSmrg	  else
408e1e1713cSmrg	    cd "$darwin_orig_dir"
409e1e1713cSmrg 	    func_extract_an_archive "$my_xdir" "$my_xabs"
410e1e1713cSmrg	  fi # $darwin_arches
411e1e1713cSmrg	fi # $run
412e1e1713cSmrg	;;
413e1e1713cSmrg      *)
414e1e1713cSmrg        func_extract_an_archive "$my_xdir" "$my_xabs"
415e1e1713cSmrg        ;;
416e1e1713cSmrg      esac
417e1e1713cSmrg      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
418e1e1713cSmrg    done
419e1e1713cSmrg    func_extract_archives_result="$my_oldobjs"
420775e7de9Smrg}
421e1e1713cSmrg# End of Shell function definitions
422e1e1713cSmrg#####################################
423775e7de9Smrg
424e1e1713cSmrg# Darwin sucks
425e1e1713cSmrgeval std_shrext=\"$shrext_cmds\"
426775e7de9Smrg
427e1e1713cSmrgdisable_libs=no
428775e7de9Smrg
429e1e1713cSmrg# Parse our command line options once, thoroughly.
430e1e1713cSmrgwhile test "$#" -gt 0
431e1e1713cSmrgdo
432e1e1713cSmrg  arg="$1"
433775e7de9Smrg  shift
4347a84e134Smrg
435e1e1713cSmrg  case $arg in
436e1e1713cSmrg  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
437e1e1713cSmrg  *) optarg= ;;
438e1e1713cSmrg  esac
4397a84e134Smrg
440e1e1713cSmrg  # If the previous option needs an argument, assign it.
441e1e1713cSmrg  if test -n "$prev"; then
442e1e1713cSmrg    case $prev in
443e1e1713cSmrg    execute_dlfiles)
444e1e1713cSmrg      execute_dlfiles="$execute_dlfiles $arg"
445e1e1713cSmrg      ;;
446e1e1713cSmrg    tag)
447e1e1713cSmrg      tagname="$arg"
448e1e1713cSmrg      preserve_args="${preserve_args}=$arg"
449e1e1713cSmrg
450e1e1713cSmrg      # Check whether tagname contains only valid characters
451e1e1713cSmrg      case $tagname in
452e1e1713cSmrg      *[!-_A-Za-z0-9,/]*)
453e1e1713cSmrg	$echo "$progname: invalid tag name: $tagname" 1>&2
454e1e1713cSmrg	exit $EXIT_FAILURE
455e1e1713cSmrg	;;
456e1e1713cSmrg      esac
4577a84e134Smrg
458e1e1713cSmrg      case $tagname in
459e1e1713cSmrg      CC)
460e1e1713cSmrg	# Don't test for the "default" C tag, as we know, it's there, but
461e1e1713cSmrg	# not specially marked.
462e1e1713cSmrg	;;
463e1e1713cSmrg      *)
464e1e1713cSmrg	if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
465e1e1713cSmrg	  taglist="$taglist $tagname"
466e1e1713cSmrg	  # Evaluate the configuration.
467e1e1713cSmrg	  eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
468e1e1713cSmrg	else
469e1e1713cSmrg	  $echo "$progname: ignoring unknown tag $tagname" 1>&2
470e1e1713cSmrg	fi
471e1e1713cSmrg	;;
472e1e1713cSmrg      esac
473e1e1713cSmrg      ;;
474e1e1713cSmrg    *)
475e1e1713cSmrg      eval "$prev=\$arg"
476e1e1713cSmrg      ;;
477e1e1713cSmrg    esac
478775e7de9Smrg
479e1e1713cSmrg    prev=
480e1e1713cSmrg    prevopt=
481e1e1713cSmrg    continue
482e1e1713cSmrg  fi
4837a84e134Smrg
484e1e1713cSmrg  # Have we seen a non-optional argument yet?
485e1e1713cSmrg  case $arg in
486e1e1713cSmrg  --help)
487e1e1713cSmrg    show_help=yes
488e1e1713cSmrg    ;;
489ab902922Smrg
490e1e1713cSmrg  --version)
491e1e1713cSmrg    echo "\
492e1e1713cSmrg$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP
493775e7de9Smrg
494e1e1713cSmrgCopyright (C) 2008  Free Software Foundation, Inc.
495e1e1713cSmrgThis is free software; see the source for copying conditions.  There is NO
496e1e1713cSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
497e1e1713cSmrg    exit $?
498e1e1713cSmrg    ;;
4997a84e134Smrg
500e1e1713cSmrg  --config)
501e1e1713cSmrg    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
5027a84e134Smrg    # Now print the configurations for the tags.
5037a84e134Smrg    for tagname in $taglist; do
504e1e1713cSmrg      ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
5057a84e134Smrg    done
506775e7de9Smrg    exit $?
507e1e1713cSmrg    ;;
5087a84e134Smrg
509e1e1713cSmrg  --debug)
510e1e1713cSmrg    $echo "$progname: enabling shell trace mode"
511e1e1713cSmrg    set -x
512e1e1713cSmrg    preserve_args="$preserve_args $arg"
513e1e1713cSmrg    ;;
514e1e1713cSmrg
515e1e1713cSmrg  --dry-run | -n)
516e1e1713cSmrg    run=:
517e1e1713cSmrg    ;;
518e1e1713cSmrg
519e1e1713cSmrg  --features)
520e1e1713cSmrg    $echo "host: $host"
5217a84e134Smrg    if test "$build_libtool_libs" = yes; then
522e1e1713cSmrg      $echo "enable shared libraries"
5237a84e134Smrg    else
524e1e1713cSmrg      $echo "disable shared libraries"
5257a84e134Smrg    fi
5267a84e134Smrg    if test "$build_old_libs" = yes; then
527e1e1713cSmrg      $echo "enable static libraries"
5287a84e134Smrg    else
529e1e1713cSmrg      $echo "disable static libraries"
5307a84e134Smrg    fi
5317a84e134Smrg    exit $?
532e1e1713cSmrg    ;;
5337a84e134Smrg
534e1e1713cSmrg  --finish) mode="finish" ;;
5357a84e134Smrg
536e1e1713cSmrg  --mode) prevopt="--mode" prev=mode ;;
537e1e1713cSmrg  --mode=*) mode="$optarg" ;;
538775e7de9Smrg
539e1e1713cSmrg  --preserve-dup-deps) duplicate_deps="yes" ;;
5407a84e134Smrg
541e1e1713cSmrg  --quiet | --silent)
542e1e1713cSmrg    show=:
543e1e1713cSmrg    preserve_args="$preserve_args $arg"
5447a84e134Smrg    ;;
545e1e1713cSmrg
546e1e1713cSmrg  --tag)
547e1e1713cSmrg    prevopt="--tag"
548e1e1713cSmrg    prev=tag
549e1e1713cSmrg    preserve_args="$preserve_args --tag"
5507a84e134Smrg    ;;
551e1e1713cSmrg  --tag=*)
552e1e1713cSmrg    set tag "$optarg" ${1+"$@"}
553e1e1713cSmrg    shift
554e1e1713cSmrg    prev=tag
555e1e1713cSmrg    preserve_args="$preserve_args --tag"
5567a84e134Smrg    ;;
557e1e1713cSmrg
558e1e1713cSmrg  -dlopen)
559e1e1713cSmrg    prevopt="-dlopen"
560e1e1713cSmrg    prev=execute_dlfiles
561775e7de9Smrg    ;;
562e1e1713cSmrg
563e1e1713cSmrg  -*)
564e1e1713cSmrg    $echo "$modename: unrecognized option \`$arg'" 1>&2
565e1e1713cSmrg    $echo "$help" 1>&2
566e1e1713cSmrg    exit $EXIT_FAILURE
567775e7de9Smrg    ;;
568e1e1713cSmrg
569e1e1713cSmrg  *)
570e1e1713cSmrg    nonopt="$arg"
571e1e1713cSmrg    break
5727a84e134Smrg    ;;
5737a84e134Smrg  esac
574e1e1713cSmrgdone
5757a84e134Smrg
576e1e1713cSmrgif test -n "$prevopt"; then
577e1e1713cSmrg  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
578e1e1713cSmrg  $echo "$help" 1>&2
579e1e1713cSmrg  exit $EXIT_FAILURE
580e1e1713cSmrgfi
581775e7de9Smrg
582e1e1713cSmrgcase $disable_libs in
583e1e1713cSmrgno) 
584e1e1713cSmrg  ;;
585e1e1713cSmrgshared)
586e1e1713cSmrg  build_libtool_libs=no
587e1e1713cSmrg  build_old_libs=yes
588e1e1713cSmrg  ;;
589e1e1713cSmrgstatic)
590e1e1713cSmrg  build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
591e1e1713cSmrg  ;;
592e1e1713cSmrgesac
593775e7de9Smrg
594e1e1713cSmrg# If this variable is set in any of the actions, the command in it
595e1e1713cSmrg# will be execed at the end.  This prevents here-documents from being
596e1e1713cSmrg# left over by shells.
597e1e1713cSmrgexec_cmd=
598775e7de9Smrg
599e1e1713cSmrgif test -z "$show_help"; then
600775e7de9Smrg
601e1e1713cSmrg  # Infer the operation mode.
602e1e1713cSmrg  if test -z "$mode"; then
603e1e1713cSmrg    $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
604e1e1713cSmrg    $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
605e1e1713cSmrg    case $nonopt in
606e1e1713cSmrg    *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
607e1e1713cSmrg      mode=link
608e1e1713cSmrg      for arg
609e1e1713cSmrg      do
610e1e1713cSmrg	case $arg in
611e1e1713cSmrg	-c)
612e1e1713cSmrg	   mode=compile
613e1e1713cSmrg	   break
614e1e1713cSmrg	   ;;
615e1e1713cSmrg	esac
616e1e1713cSmrg      done
6177a84e134Smrg      ;;
618e1e1713cSmrg    *db | *dbx | *strace | *truss)
619e1e1713cSmrg      mode=execute
620775e7de9Smrg      ;;
621e1e1713cSmrg    *install*|cp|mv)
622e1e1713cSmrg      mode=install
623e1e1713cSmrg      ;;
624e1e1713cSmrg    *rm)
625e1e1713cSmrg      mode=uninstall
626e1e1713cSmrg      ;;
627e1e1713cSmrg    *)
628e1e1713cSmrg      # If we have no mode, but dlfiles were specified, then do execute mode.
629e1e1713cSmrg      test -n "$execute_dlfiles" && mode=execute
630775e7de9Smrg
631e1e1713cSmrg      # Just use the default operation mode.
632e1e1713cSmrg      if test -z "$mode"; then
633e1e1713cSmrg	if test -n "$nonopt"; then
634e1e1713cSmrg	  $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
635e1e1713cSmrg	else
636e1e1713cSmrg	  $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
637e1e1713cSmrg	fi
6387a84e134Smrg      fi
639e1e1713cSmrg      ;;
640e1e1713cSmrg    esac
641775e7de9Smrg  fi
642775e7de9Smrg
6437a84e134Smrg  # Only execute mode is allowed to have -dlopen flags.
6447a84e134Smrg  if test -n "$execute_dlfiles" && test "$mode" != execute; then
645e1e1713cSmrg    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
646e1e1713cSmrg    $echo "$help" 1>&2
6477a84e134Smrg    exit $EXIT_FAILURE
6487a84e134Smrg  fi
6497a84e134Smrg
6507a84e134Smrg  # Change the help message to a mode-specific one.
6517a84e134Smrg  generic_help="$help"
652e1e1713cSmrg  help="Try \`$modename --help --mode=$mode' for more information."
6537a84e134Smrg
654e1e1713cSmrg  # These modes are in order of execution frequency so that they run quickly.
655e1e1713cSmrg  case $mode in
656e1e1713cSmrg  # libtool compile mode
657e1e1713cSmrg  compile)
658e1e1713cSmrg    modename="$modename: compile"
659e1e1713cSmrg    # Get the compilation command and the source file.
660e1e1713cSmrg    base_compile=
661e1e1713cSmrg    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
662e1e1713cSmrg    suppress_opt=yes
663e1e1713cSmrg    suppress_output=
664e1e1713cSmrg    arg_mode=normal
665e1e1713cSmrg    libobj=
666e1e1713cSmrg    later=
6677a84e134Smrg
668e1e1713cSmrg    for arg
669e1e1713cSmrg    do
670e1e1713cSmrg      case $arg_mode in
671e1e1713cSmrg      arg  )
672e1e1713cSmrg	# do not "continue".  Instead, add this to base_compile
673e1e1713cSmrg	lastarg="$arg"
674e1e1713cSmrg	arg_mode=normal
675e1e1713cSmrg	;;
6767a84e134Smrg
677e1e1713cSmrg      target )
678e1e1713cSmrg	libobj="$arg"
679e1e1713cSmrg	arg_mode=normal
680e1e1713cSmrg	continue
681e1e1713cSmrg	;;
6827a84e134Smrg
683e1e1713cSmrg      normal )
684e1e1713cSmrg	# Accept any command-line options.
685e1e1713cSmrg	case $arg in
686e1e1713cSmrg	-o)
687e1e1713cSmrg	  if test -n "$libobj" ; then
688e1e1713cSmrg	    $echo "$modename: you cannot specify \`-o' more than once" 1>&2
689e1e1713cSmrg	    exit $EXIT_FAILURE
690e1e1713cSmrg	  fi
691e1e1713cSmrg	  arg_mode=target
692e1e1713cSmrg	  continue
693e1e1713cSmrg	  ;;
6947a84e134Smrg
695e1e1713cSmrg	-static | -prefer-pic | -prefer-non-pic)
696e1e1713cSmrg	  later="$later $arg"
697e1e1713cSmrg	  continue
698e1e1713cSmrg	  ;;
6997a84e134Smrg
7007a84e134Smrg	-no-suppress)
7017a84e134Smrg	  suppress_opt=no
7027a84e134Smrg	  continue
7037a84e134Smrg	  ;;
7047a84e134Smrg
7057a84e134Smrg	-Xcompiler)
7067a84e134Smrg	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
7077a84e134Smrg	  continue      #  The current "srcfile" will either be retained or
7087a84e134Smrg	  ;;            #  replaced later.  I would guess that would be a bug.
7097a84e134Smrg
7107a84e134Smrg	-Wc,*)
711e1e1713cSmrg	  args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
7127a84e134Smrg	  lastarg=
7137a84e134Smrg	  save_ifs="$IFS"; IFS=','
714e1e1713cSmrg 	  for arg in $args; do
7157a84e134Smrg	    IFS="$save_ifs"
716e1e1713cSmrg
717e1e1713cSmrg	    # Double-quote args containing other shell metacharacters.
718e1e1713cSmrg	    # Many Bourne shells cannot handle close brackets correctly
719e1e1713cSmrg	    # in scan sets, so we specify it separately.
720e1e1713cSmrg	    case $arg in
721e1e1713cSmrg	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
722e1e1713cSmrg	      arg="\"$arg\""
723e1e1713cSmrg	      ;;
724e1e1713cSmrg	    esac
725e1e1713cSmrg	    lastarg="$lastarg $arg"
7267a84e134Smrg	  done
7277a84e134Smrg	  IFS="$save_ifs"
728e1e1713cSmrg	  lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
7297a84e134Smrg
7307a84e134Smrg	  # Add the arguments to base_compile.
7317a84e134Smrg	  base_compile="$base_compile $lastarg"
7327a84e134Smrg	  continue
7337a84e134Smrg	  ;;
7347a84e134Smrg
735e1e1713cSmrg	* )
7367a84e134Smrg	  # Accept the current argument as the source file.
7377a84e134Smrg	  # The previous "srcfile" becomes the current argument.
7387a84e134Smrg	  #
7397a84e134Smrg	  lastarg="$srcfile"
7407a84e134Smrg	  srcfile="$arg"
7417a84e134Smrg	  ;;
7427a84e134Smrg	esac  #  case $arg
7437a84e134Smrg	;;
7447a84e134Smrg      esac    #  case $arg_mode
7457a84e134Smrg
7467a84e134Smrg      # Aesthetically quote the previous argument.
747e1e1713cSmrg      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
748e1e1713cSmrg
749e1e1713cSmrg      case $lastarg in
750e1e1713cSmrg      # Double-quote args containing other shell metacharacters.
751e1e1713cSmrg      # Many Bourne shells cannot handle close brackets correctly
752e1e1713cSmrg      # in scan sets, and some SunOS ksh mistreat backslash-escaping
753e1e1713cSmrg      # in scan sets (worked around with variable expansion),
754e1e1713cSmrg      # and furthermore cannot handle '|' '&' '(' ')' in scan sets 
755e1e1713cSmrg      # at all, so we specify them separately.
756e1e1713cSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
757e1e1713cSmrg	lastarg="\"$lastarg\""
758e1e1713cSmrg	;;
759e1e1713cSmrg      esac
760e1e1713cSmrg
761e1e1713cSmrg      base_compile="$base_compile $lastarg"
7627a84e134Smrg    done # for arg
7637a84e134Smrg
7647a84e134Smrg    case $arg_mode in
7657a84e134Smrg    arg)
766e1e1713cSmrg      $echo "$modename: you must specify an argument for -Xcompile"
767e1e1713cSmrg      exit $EXIT_FAILURE
7687a84e134Smrg      ;;
7697a84e134Smrg    target)
770e1e1713cSmrg      $echo "$modename: you must specify a target with \`-o'" 1>&2
771e1e1713cSmrg      exit $EXIT_FAILURE
7727a84e134Smrg      ;;
7737a84e134Smrg    *)
7747a84e134Smrg      # Get the name of the library object.
775e1e1713cSmrg      [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
7767a84e134Smrg      ;;
7777a84e134Smrg    esac
7787a84e134Smrg
7797a84e134Smrg    # Recognize several different file suffixes.
7807a84e134Smrg    # If the user specifies -o file.o, it is replaced with file.lo
781e1e1713cSmrg    xform='[cCFSifmso]'
7827a84e134Smrg    case $libobj in
783e1e1713cSmrg    *.ada) xform=ada ;;
784e1e1713cSmrg    *.adb) xform=adb ;;
785e1e1713cSmrg    *.ads) xform=ads ;;
786e1e1713cSmrg    *.asm) xform=asm ;;
787e1e1713cSmrg    *.c++) xform=c++ ;;
788e1e1713cSmrg    *.cc) xform=cc ;;
789e1e1713cSmrg    *.ii) xform=ii ;;
790e1e1713cSmrg    *.class) xform=class ;;
791e1e1713cSmrg    *.cpp) xform=cpp ;;
792e1e1713cSmrg    *.cxx) xform=cxx ;;
793e1e1713cSmrg    *.[fF][09]?) xform=[fF][09]. ;;
794e1e1713cSmrg    *.for) xform=for ;;
795e1e1713cSmrg    *.java) xform=java ;;
796e1e1713cSmrg    *.obj) xform=obj ;;
797e1e1713cSmrg    *.sx) xform=sx ;;
7987a84e134Smrg    esac
7997a84e134Smrg
800e1e1713cSmrg    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
801e1e1713cSmrg
8027a84e134Smrg    case $libobj in
803e1e1713cSmrg    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
8047a84e134Smrg    *)
805e1e1713cSmrg      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
806e1e1713cSmrg      exit $EXIT_FAILURE
8077a84e134Smrg      ;;
8087a84e134Smrg    esac
8097a84e134Smrg
8107a84e134Smrg    func_infer_tag $base_compile
8117a84e134Smrg
8127a84e134Smrg    for arg in $later; do
8137a84e134Smrg      case $arg in
8147a84e134Smrg      -static)
8157a84e134Smrg	build_old_libs=yes
8167a84e134Smrg	continue
8177a84e134Smrg	;;
8187a84e134Smrg
8197a84e134Smrg      -prefer-pic)
8207a84e134Smrg	pic_mode=yes
8217a84e134Smrg	continue
8227a84e134Smrg	;;
8237a84e134Smrg
8247a84e134Smrg      -prefer-non-pic)
8257a84e134Smrg	pic_mode=no
8267a84e134Smrg	continue
8277a84e134Smrg	;;
8287a84e134Smrg      esac
8297a84e134Smrg    done
8307a84e134Smrg
831e1e1713cSmrg    qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
832e1e1713cSmrg    case $qlibobj in
833e1e1713cSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
834e1e1713cSmrg	qlibobj="\"$qlibobj\"" ;;
835e1e1713cSmrg    esac
836e1e1713cSmrg    test "X$libobj" != "X$qlibobj" \
837e1e1713cSmrg	&& $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' 	&()|`$[]' \
838e1e1713cSmrg	&& $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
839e1e1713cSmrg    objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
840e1e1713cSmrg    xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
841e1e1713cSmrg    if test "X$xdir" = "X$obj"; then
842e1e1713cSmrg      xdir=
843e1e1713cSmrg    else
844e1e1713cSmrg      xdir=$xdir/
845e1e1713cSmrg    fi
8467a84e134Smrg    lobj=${xdir}$objdir/$objname
8477a84e134Smrg
848e1e1713cSmrg    if test -z "$base_compile"; then
849e1e1713cSmrg      $echo "$modename: you must specify a compilation command" 1>&2
850e1e1713cSmrg      $echo "$help" 1>&2
851e1e1713cSmrg      exit $EXIT_FAILURE
852e1e1713cSmrg    fi
8537a84e134Smrg
8547a84e134Smrg    # Delete any leftover library objects.
8557a84e134Smrg    if test "$build_old_libs" = yes; then
8567a84e134Smrg      removelist="$obj $lobj $libobj ${libobj}T"
8577a84e134Smrg    else
8587a84e134Smrg      removelist="$lobj $libobj ${libobj}T"
8597a84e134Smrg    fi
8607a84e134Smrg
861e1e1713cSmrg    $run $rm $removelist
862e1e1713cSmrg    trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
863e1e1713cSmrg
8647a84e134Smrg    # On Cygwin there's no "real" PIC flag so we must build both object types
8657a84e134Smrg    case $host_os in
866e1e1713cSmrg    cygwin* | mingw* | pw32* | os2*)
8677a84e134Smrg      pic_mode=default
8687a84e134Smrg      ;;
8697a84e134Smrg    esac
8707a84e134Smrg    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
8717a84e134Smrg      # non-PIC code in shared libraries is not supported
8727a84e134Smrg      pic_mode=default
8737a84e134Smrg    fi
8747a84e134Smrg
8757a84e134Smrg    # Calculate the filename of the output object if compiler does
8767a84e134Smrg    # not support -o with -c
8777a84e134Smrg    if test "$compiler_c_o" = no; then
878e1e1713cSmrg      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
8797a84e134Smrg      lockfile="$output_obj.lock"
880e1e1713cSmrg      removelist="$removelist $output_obj $lockfile"
881e1e1713cSmrg      trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
8827a84e134Smrg    else
8837a84e134Smrg      output_obj=
8847a84e134Smrg      need_locks=no
8857a84e134Smrg      lockfile=
8867a84e134Smrg    fi
8877a84e134Smrg
8887a84e134Smrg    # Lock this critical section if it is needed
8897a84e134Smrg    # We use this script file to make the link, it avoids creating a new file
8907a84e134Smrg    if test "$need_locks" = yes; then
891e1e1713cSmrg      until $run ln "$progpath" "$lockfile" 2>/dev/null; do
892e1e1713cSmrg	$show "Waiting for $lockfile to be removed"
8937a84e134Smrg	sleep 2
8947a84e134Smrg      done
8957a84e134Smrg    elif test "$need_locks" = warn; then
8967a84e134Smrg      if test -f "$lockfile"; then
897e1e1713cSmrg	$echo "\
8987a84e134Smrg*** ERROR, $lockfile exists and contains:
8997a84e134Smrg`cat $lockfile 2>/dev/null`
9007a84e134Smrg
9017a84e134SmrgThis indicates that another process is trying to use the same
9027a84e134Smrgtemporary object file, and libtool could not work around it because
9037a84e134Smrgyour compiler does not support \`-c' and \`-o' together.  If you
9047a84e134Smrgrepeat this compilation, it may succeed, by chance, but you had better
9057a84e134Smrgavoid parallel builds (make -j) in this platform, or get a better
9067a84e134Smrgcompiler."
9077a84e134Smrg
908e1e1713cSmrg	$run $rm $removelist
9097a84e134Smrg	exit $EXIT_FAILURE
9107a84e134Smrg      fi
911e1e1713cSmrg      $echo "$srcfile" > "$lockfile"
9127a84e134Smrg    fi
9137a84e134Smrg
9147a84e134Smrg    if test -n "$fix_srcfile_path"; then
9157a84e134Smrg      eval srcfile=\"$fix_srcfile_path\"
9167a84e134Smrg    fi
917e1e1713cSmrg    qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
918e1e1713cSmrg    case $qsrcfile in
919e1e1713cSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
920e1e1713cSmrg      qsrcfile="\"$qsrcfile\"" ;;
921e1e1713cSmrg    esac
922e1e1713cSmrg
923e1e1713cSmrg    $run $rm "$libobj" "${libobj}T"
924e1e1713cSmrg
925e1e1713cSmrg    # Create a libtool object file (analogous to a ".la" file),
926e1e1713cSmrg    # but don't create it if we're doing a dry run.
927e1e1713cSmrg    test -z "$run" && cat > ${libobj}T <<EOF
928e1e1713cSmrg# $libobj - a libtool object file
929e1e1713cSmrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
930e1e1713cSmrg#
931e1e1713cSmrg# Please DO NOT delete this file!
932e1e1713cSmrg# It is necessary for linking the library.
933e1e1713cSmrg
934e1e1713cSmrg# Name of the PIC object.
935e1e1713cSmrgEOF
9367a84e134Smrg
9377a84e134Smrg    # Only build a PIC object if we are building libtool libraries.
9387a84e134Smrg    if test "$build_libtool_libs" = yes; then
9397a84e134Smrg      # Without this assignment, base_compile gets emptied.
9407a84e134Smrg      fbsd_hideous_sh_bug=$base_compile
9417a84e134Smrg
9427a84e134Smrg      if test "$pic_mode" != no; then
9437a84e134Smrg	command="$base_compile $qsrcfile $pic_flag"
9447a84e134Smrg      else
9457a84e134Smrg	# Don't build PIC code
9467a84e134Smrg	command="$base_compile $qsrcfile"
9477a84e134Smrg      fi
9487a84e134Smrg
949e1e1713cSmrg      if test ! -d "${xdir}$objdir"; then
950e1e1713cSmrg	$show "$mkdir ${xdir}$objdir"
951e1e1713cSmrg	$run $mkdir ${xdir}$objdir
952e1e1713cSmrg	exit_status=$?
953e1e1713cSmrg	if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
954e1e1713cSmrg	  exit $exit_status
955e1e1713cSmrg	fi
956e1e1713cSmrg      fi
9577a84e134Smrg
9587a84e134Smrg      if test -z "$output_obj"; then
9597a84e134Smrg	# Place PIC objects in $objdir
9607a84e134Smrg	command="$command -o $lobj"
9617a84e134Smrg      fi
9627a84e134Smrg
963e1e1713cSmrg      $run $rm "$lobj" "$output_obj"
964e1e1713cSmrg
965e1e1713cSmrg      $show "$command"
966e1e1713cSmrg      if $run eval $lt_env "$command"; then :
967e1e1713cSmrg      else
968e1e1713cSmrg	test -n "$output_obj" && $run $rm $removelist
969e1e1713cSmrg	exit $EXIT_FAILURE
970e1e1713cSmrg      fi
9717a84e134Smrg
9727a84e134Smrg      if test "$need_locks" = warn &&
9737a84e134Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
974e1e1713cSmrg	$echo "\
9757a84e134Smrg*** ERROR, $lockfile contains:
9767a84e134Smrg`cat $lockfile 2>/dev/null`
9777a84e134Smrg
9787a84e134Smrgbut it should contain:
9797a84e134Smrg$srcfile
9807a84e134Smrg
9817a84e134SmrgThis indicates that another process is trying to use the same
9827a84e134Smrgtemporary object file, and libtool could not work around it because
9837a84e134Smrgyour compiler does not support \`-c' and \`-o' together.  If you
9847a84e134Smrgrepeat this compilation, it may succeed, by chance, but you had better
9857a84e134Smrgavoid parallel builds (make -j) in this platform, or get a better
9867a84e134Smrgcompiler."
9877a84e134Smrg
988e1e1713cSmrg	$run $rm $removelist
9897a84e134Smrg	exit $EXIT_FAILURE
9907a84e134Smrg      fi
9917a84e134Smrg
9927a84e134Smrg      # Just move the object if needed, then go on to compile the next one
9937a84e134Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
994e1e1713cSmrg	$show "$mv $output_obj $lobj"
995e1e1713cSmrg	if $run $mv $output_obj $lobj; then :
996e1e1713cSmrg	else
997e1e1713cSmrg	  error=$?
998e1e1713cSmrg	  $run $rm $removelist
999e1e1713cSmrg	  exit $error
1000e1e1713cSmrg	fi
10017a84e134Smrg      fi
10027a84e134Smrg
1003e1e1713cSmrg      # Append the name of the PIC object to the libtool object file.
1004e1e1713cSmrg      test -z "$run" && cat >> ${libobj}T <<EOF
1005e1e1713cSmrgpic_object='$objdir/$objname'
1006e1e1713cSmrg
1007e1e1713cSmrgEOF
1008e1e1713cSmrg
10097a84e134Smrg      # Allow error messages only from the first compilation.
10107a84e134Smrg      if test "$suppress_opt" = yes; then
1011e1e1713cSmrg        suppress_output=' >/dev/null 2>&1'
10127a84e134Smrg      fi
1013e1e1713cSmrg    else
1014e1e1713cSmrg      # No PIC object so indicate it doesn't exist in the libtool
1015e1e1713cSmrg      # object file.
1016e1e1713cSmrg      test -z "$run" && cat >> ${libobj}T <<EOF
1017e1e1713cSmrgpic_object=none
1018e1e1713cSmrg
1019e1e1713cSmrgEOF
10207a84e134Smrg    fi
10217a84e134Smrg
10227a84e134Smrg    # Only build a position-dependent object if we build old libraries.
10237a84e134Smrg    if test "$build_old_libs" = yes; then
10247a84e134Smrg      if test "$pic_mode" != yes; then
10257a84e134Smrg	# Don't build PIC code
1026e1e1713cSmrg	command="$base_compile $qsrcfile"
10277a84e134Smrg      else
10287a84e134Smrg	command="$base_compile $qsrcfile $pic_flag"
10297a84e134Smrg      fi
10307a84e134Smrg      if test "$compiler_c_o" = yes; then
10317a84e134Smrg	command="$command -o $obj"
10327a84e134Smrg      fi
10337a84e134Smrg
10347a84e134Smrg      # Suppress compiler output if we already did a PIC compilation.
10357a84e134Smrg      command="$command$suppress_output"
1036e1e1713cSmrg      $run $rm "$obj" "$output_obj"
1037e1e1713cSmrg      $show "$command"
1038e1e1713cSmrg      if $run eval $lt_env "$command"; then :
1039e1e1713cSmrg      else
1040e1e1713cSmrg	$run $rm $removelist
1041e1e1713cSmrg	exit $EXIT_FAILURE
1042e1e1713cSmrg      fi
10437a84e134Smrg
10447a84e134Smrg      if test "$need_locks" = warn &&
10457a84e134Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1046e1e1713cSmrg	$echo "\
10477a84e134Smrg*** ERROR, $lockfile contains:
10487a84e134Smrg`cat $lockfile 2>/dev/null`
10497a84e134Smrg
10507a84e134Smrgbut it should contain:
10517a84e134Smrg$srcfile
10527a84e134Smrg
10537a84e134SmrgThis indicates that another process is trying to use the same
10547a84e134Smrgtemporary object file, and libtool could not work around it because
10557a84e134Smrgyour compiler does not support \`-c' and \`-o' together.  If you
10567a84e134Smrgrepeat this compilation, it may succeed, by chance, but you had better
10577a84e134Smrgavoid parallel builds (make -j) in this platform, or get a better
10587a84e134Smrgcompiler."
10597a84e134Smrg
1060e1e1713cSmrg	$run $rm $removelist
10617a84e134Smrg	exit $EXIT_FAILURE
10627a84e134Smrg      fi
10637a84e134Smrg
10647a84e134Smrg      # Just move the object if needed
10657a84e134Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
1066e1e1713cSmrg	$show "$mv $output_obj $obj"
1067e1e1713cSmrg	if $run $mv $output_obj $obj; then :
1068e1e1713cSmrg	else
1069e1e1713cSmrg	  error=$?
1070e1e1713cSmrg	  $run $rm $removelist
1071e1e1713cSmrg	  exit $error
1072e1e1713cSmrg	fi
10737a84e134Smrg      fi
1074e1e1713cSmrg
1075e1e1713cSmrg      # Append the name of the non-PIC object the libtool object file.
1076e1e1713cSmrg      # Only append if the libtool object file exists.
1077e1e1713cSmrg      test -z "$run" && cat >> ${libobj}T <<EOF
1078e1e1713cSmrg# Name of the non-PIC object.
1079e1e1713cSmrgnon_pic_object='$objname'
1080e1e1713cSmrg
1081e1e1713cSmrgEOF
1082e1e1713cSmrg    else
1083e1e1713cSmrg      # Append the name of the non-PIC object the libtool object file.
1084e1e1713cSmrg      # Only append if the libtool object file exists.
1085e1e1713cSmrg      test -z "$run" && cat >> ${libobj}T <<EOF
1086e1e1713cSmrg# Name of the non-PIC object.
1087e1e1713cSmrgnon_pic_object=none
1088e1e1713cSmrg
1089e1e1713cSmrgEOF
10907a84e134Smrg    fi
10917a84e134Smrg
1092e1e1713cSmrg    $run $mv "${libobj}T" "${libobj}"
10937a84e134Smrg
1094e1e1713cSmrg    # Unlock the critical section if it was locked
1095e1e1713cSmrg    if test "$need_locks" != no; then
1096e1e1713cSmrg      $run $rm "$lockfile"
1097e1e1713cSmrg    fi
10987a84e134Smrg
10997a84e134Smrg    exit $EXIT_SUCCESS
1100e1e1713cSmrg    ;;
11017a84e134Smrg
1102e1e1713cSmrg  # libtool link mode
1103e1e1713cSmrg  link | relink)
1104e1e1713cSmrg    modename="$modename: link"
1105e1e1713cSmrg    case $host in
1106e1e1713cSmrg    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1107e1e1713cSmrg      # It is impossible to link a dll without this setting, and
1108e1e1713cSmrg      # we shouldn't force the makefile maintainer to figure out
1109e1e1713cSmrg      # which system we are compiling for in order to pass an extra
1110e1e1713cSmrg      # flag for every libtool invocation.
1111e1e1713cSmrg      # allow_undefined=no
11127a84e134Smrg
1113e1e1713cSmrg      # FIXME: Unfortunately, there are problems with the above when trying
1114e1e1713cSmrg      # to make a dll which has undefined symbols, in which case not
1115e1e1713cSmrg      # even a static library is built.  For now, we need to specify
1116e1e1713cSmrg      # -no-undefined on the libtool link line when we can be certain
1117e1e1713cSmrg      # that all symbols are satisfied, otherwise we get a static library.
1118e1e1713cSmrg      allow_undefined=yes
1119e1e1713cSmrg      ;;
1120e1e1713cSmrg    *)
1121e1e1713cSmrg      allow_undefined=yes
1122e1e1713cSmrg      ;;
1123e1e1713cSmrg    esac
1124e1e1713cSmrg    libtool_args="$nonopt"
1125e1e1713cSmrg    base_compile="$nonopt $@"
1126e1e1713cSmrg    compile_command="$nonopt"
1127e1e1713cSmrg    finalize_command="$nonopt"
11287a84e134Smrg
1129e1e1713cSmrg    compile_rpath=
1130e1e1713cSmrg    finalize_rpath=
1131e1e1713cSmrg    compile_shlibpath=
1132e1e1713cSmrg    finalize_shlibpath=
1133e1e1713cSmrg    convenience=
1134e1e1713cSmrg    old_convenience=
1135e1e1713cSmrg    deplibs=
1136e1e1713cSmrg    old_deplibs=
1137e1e1713cSmrg    compiler_flags=
1138e1e1713cSmrg    linker_flags=
1139e1e1713cSmrg    dllsearchpath=
1140e1e1713cSmrg    lib_search_path=`pwd`
1141e1e1713cSmrg    inst_prefix_dir=
11427a84e134Smrg
1143e1e1713cSmrg    avoid_version=no
1144e1e1713cSmrg    dlfiles=
1145e1e1713cSmrg    dlprefiles=
1146e1e1713cSmrg    dlself=no
1147e1e1713cSmrg    export_dynamic=no
1148e1e1713cSmrg    export_symbols=
1149e1e1713cSmrg    export_symbols_regex=
1150e1e1713cSmrg    generated=
1151e1e1713cSmrg    libobjs=
1152e1e1713cSmrg    ltlibs=
1153e1e1713cSmrg    module=no
1154e1e1713cSmrg    no_install=no
1155e1e1713cSmrg    objs=
1156e1e1713cSmrg    non_pic_objects=
1157e1e1713cSmrg    notinst_path= # paths that contain not-installed libtool libraries
1158e1e1713cSmrg    precious_files_regex=
1159e1e1713cSmrg    prefer_static_libs=no
1160e1e1713cSmrg    preload=no
1161e1e1713cSmrg    prev=
1162e1e1713cSmrg    prevarg=
1163e1e1713cSmrg    release=
1164e1e1713cSmrg    rpath=
1165e1e1713cSmrg    xrpath=
1166e1e1713cSmrg    perm_rpath=
1167e1e1713cSmrg    temp_rpath=
1168e1e1713cSmrg    thread_safe=no
1169e1e1713cSmrg    vinfo=
1170e1e1713cSmrg    vinfo_number=no
1171e1e1713cSmrg    single_module="${wl}-single_module"
11727a84e134Smrg
1173e1e1713cSmrg    func_infer_tag $base_compile
11747a84e134Smrg
1175e1e1713cSmrg    # We need to know -static, to get the right output filenames.
1176e1e1713cSmrg    for arg
1177e1e1713cSmrg    do
1178e1e1713cSmrg      case $arg in
1179e1e1713cSmrg      -all-static | -static | -static-libtool-libs)
1180e1e1713cSmrg	case $arg in
1181e1e1713cSmrg	-all-static)
1182e1e1713cSmrg	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
1183e1e1713cSmrg	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
1184e1e1713cSmrg	  fi
1185e1e1713cSmrg	  if test -n "$link_static_flag"; then
1186e1e1713cSmrg	    dlopen_self=$dlopen_self_static
1187e1e1713cSmrg	  fi
1188e1e1713cSmrg	  prefer_static_libs=yes
1189e1e1713cSmrg	  ;;
1190e1e1713cSmrg	-static)
1191e1e1713cSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
1192e1e1713cSmrg	    dlopen_self=$dlopen_self_static
1193e1e1713cSmrg	  fi
1194e1e1713cSmrg	  prefer_static_libs=built
1195e1e1713cSmrg	  ;;
1196e1e1713cSmrg	-static-libtool-libs)
1197e1e1713cSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
1198e1e1713cSmrg	    dlopen_self=$dlopen_self_static
1199e1e1713cSmrg	  fi
1200e1e1713cSmrg	  prefer_static_libs=yes
1201e1e1713cSmrg	  ;;
1202e1e1713cSmrg	esac
1203e1e1713cSmrg	build_libtool_libs=no
1204e1e1713cSmrg	build_old_libs=yes
1205e1e1713cSmrg	break
1206e1e1713cSmrg	;;
1207e1e1713cSmrg      esac
1208e1e1713cSmrg    done
12097a84e134Smrg
1210e1e1713cSmrg    # See if our shared archives depend on static archives.
1211e1e1713cSmrg    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
12127a84e134Smrg
1213e1e1713cSmrg    # Go through the arguments, transforming them on the way.
1214e1e1713cSmrg    while test "$#" -gt 0; do
1215e1e1713cSmrg      arg="$1"
1216e1e1713cSmrg      shift
1217e1e1713cSmrg      case $arg in
1218e1e1713cSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1219e1e1713cSmrg	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
1220e1e1713cSmrg	;;
1221e1e1713cSmrg      *) qarg=$arg ;;
1222e1e1713cSmrg      esac
1223e1e1713cSmrg      libtool_args="$libtool_args $qarg"
12247a84e134Smrg
1225e1e1713cSmrg      # If the previous option needs an argument, assign it.
1226e1e1713cSmrg      if test -n "$prev"; then
1227e1e1713cSmrg	case $prev in
1228e1e1713cSmrg	output)
1229e1e1713cSmrg	  compile_command="$compile_command @OUTPUT@"
1230e1e1713cSmrg	  finalize_command="$finalize_command @OUTPUT@"
1231e1e1713cSmrg	  ;;
1232e1e1713cSmrg	esac
12337a84e134Smrg
1234e1e1713cSmrg	case $prev in
1235e1e1713cSmrg	dlfiles|dlprefiles)
1236e1e1713cSmrg	  if test "$preload" = no; then
1237e1e1713cSmrg	    # Add the symbol object into the linking commands.
1238e1e1713cSmrg	    compile_command="$compile_command @SYMFILE@"
1239e1e1713cSmrg	    finalize_command="$finalize_command @SYMFILE@"
1240e1e1713cSmrg	    preload=yes
1241e1e1713cSmrg	  fi
1242e1e1713cSmrg	  case $arg in
1243e1e1713cSmrg	  *.la | *.lo) ;;  # We handle these cases below.
1244e1e1713cSmrg	  force)
1245e1e1713cSmrg	    if test "$dlself" = no; then
1246e1e1713cSmrg	      dlself=needless
1247e1e1713cSmrg	      export_dynamic=yes
1248e1e1713cSmrg	    fi
1249e1e1713cSmrg	    prev=
1250e1e1713cSmrg	    continue
1251e1e1713cSmrg	    ;;
1252e1e1713cSmrg	  self)
1253e1e1713cSmrg	    if test "$prev" = dlprefiles; then
1254e1e1713cSmrg	      dlself=yes
1255e1e1713cSmrg	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
1256e1e1713cSmrg	      dlself=yes
1257e1e1713cSmrg	    else
1258e1e1713cSmrg	      dlself=needless
1259e1e1713cSmrg	      export_dynamic=yes
1260e1e1713cSmrg	    fi
1261e1e1713cSmrg	    prev=
1262e1e1713cSmrg	    continue
1263e1e1713cSmrg	    ;;
1264e1e1713cSmrg	  *)
1265e1e1713cSmrg	    if test "$prev" = dlfiles; then
1266e1e1713cSmrg	      dlfiles="$dlfiles $arg"
1267e1e1713cSmrg	    else
1268e1e1713cSmrg	      dlprefiles="$dlprefiles $arg"
1269e1e1713cSmrg	    fi
1270e1e1713cSmrg	    prev=
1271e1e1713cSmrg	    continue
1272e1e1713cSmrg	    ;;
1273e1e1713cSmrg	  esac
1274e1e1713cSmrg	  ;;
1275e1e1713cSmrg	expsyms)
1276e1e1713cSmrg	  export_symbols="$arg"
1277e1e1713cSmrg	  if test ! -f "$arg"; then
1278e1e1713cSmrg	    $echo "$modename: symbol file \`$arg' does not exist"
1279e1e1713cSmrg	    exit $EXIT_FAILURE
1280e1e1713cSmrg	  fi
1281e1e1713cSmrg	  prev=
1282e1e1713cSmrg	  continue
1283e1e1713cSmrg	  ;;
1284e1e1713cSmrg	expsyms_regex)
1285e1e1713cSmrg	  export_symbols_regex="$arg"
1286e1e1713cSmrg	  prev=
1287e1e1713cSmrg	  continue
1288e1e1713cSmrg	  ;;
1289e1e1713cSmrg	inst_prefix)
1290e1e1713cSmrg	  inst_prefix_dir="$arg"
1291e1e1713cSmrg	  prev=
1292e1e1713cSmrg	  continue
1293e1e1713cSmrg	  ;;
1294e1e1713cSmrg	precious_regex)
1295e1e1713cSmrg	  precious_files_regex="$arg"
1296e1e1713cSmrg	  prev=
1297e1e1713cSmrg	  continue
1298e1e1713cSmrg	  ;;
1299e1e1713cSmrg	release)
1300e1e1713cSmrg	  release="-$arg"
1301e1e1713cSmrg	  prev=
1302e1e1713cSmrg	  continue
1303e1e1713cSmrg	  ;;
1304e1e1713cSmrg	objectlist)
1305e1e1713cSmrg	  if test -f "$arg"; then
1306e1e1713cSmrg	    save_arg=$arg
1307e1e1713cSmrg	    moreargs=
1308e1e1713cSmrg	    for fil in `cat $save_arg`
1309e1e1713cSmrg	    do
1310e1e1713cSmrg#	      moreargs="$moreargs $fil"
1311e1e1713cSmrg	      arg=$fil
1312e1e1713cSmrg	      # A libtool-controlled object.
13137a84e134Smrg
1314e1e1713cSmrg	      # Check to see that this really is a libtool object.
1315e1e1713cSmrg	      if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1316e1e1713cSmrg		pic_object=
1317e1e1713cSmrg		non_pic_object=
13187a84e134Smrg
1319e1e1713cSmrg		# Read the .lo file
1320e1e1713cSmrg		# If there is no directory component, then add one.
1321e1e1713cSmrg		case $arg in
1322e1e1713cSmrg		*/* | *\\*) . $arg ;;
1323e1e1713cSmrg		*) . ./$arg ;;
1324e1e1713cSmrg		esac
13257a84e134Smrg
1326e1e1713cSmrg		if test -z "$pic_object" || \
1327e1e1713cSmrg		   test -z "$non_pic_object" ||
1328e1e1713cSmrg		   test "$pic_object" = none && \
1329e1e1713cSmrg		   test "$non_pic_object" = none; then
1330e1e1713cSmrg		  $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1331e1e1713cSmrg		  exit $EXIT_FAILURE
1332e1e1713cSmrg		fi
13337a84e134Smrg
1334e1e1713cSmrg		# Extract subdirectory from the argument.
1335e1e1713cSmrg		xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1336e1e1713cSmrg		if test "X$xdir" = "X$arg"; then
1337e1e1713cSmrg		  xdir=
1338e1e1713cSmrg		else
1339e1e1713cSmrg		  xdir="$xdir/"
1340e1e1713cSmrg		fi
13417a84e134Smrg
1342e1e1713cSmrg		if test "$pic_object" != none; then
1343e1e1713cSmrg		  # Prepend the subdirectory the object is found in.
1344e1e1713cSmrg		  pic_object="$xdir$pic_object"
13457a84e134Smrg
1346e1e1713cSmrg		  if test "$prev" = dlfiles; then
1347e1e1713cSmrg		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1348e1e1713cSmrg		      dlfiles="$dlfiles $pic_object"
1349e1e1713cSmrg		      prev=
1350e1e1713cSmrg		      continue
1351e1e1713cSmrg		    else
1352e1e1713cSmrg		      # If libtool objects are unsupported, then we need to preload.
1353e1e1713cSmrg		      prev=dlprefiles
1354e1e1713cSmrg		    fi
1355e1e1713cSmrg		  fi
13567a84e134Smrg
1357e1e1713cSmrg		  # CHECK ME:  I think I busted this.  -Ossama
1358e1e1713cSmrg		  if test "$prev" = dlprefiles; then
1359e1e1713cSmrg		    # Preload the old-style object.
1360e1e1713cSmrg		    dlprefiles="$dlprefiles $pic_object"
1361e1e1713cSmrg		    prev=
1362e1e1713cSmrg		  fi
13637a84e134Smrg
1364e1e1713cSmrg		  # A PIC object.
1365e1e1713cSmrg		  libobjs="$libobjs $pic_object"
1366e1e1713cSmrg		  arg="$pic_object"
1367e1e1713cSmrg		fi
13687a84e134Smrg
1369e1e1713cSmrg		# Non-PIC object.
1370e1e1713cSmrg		if test "$non_pic_object" != none; then
1371e1e1713cSmrg		  # Prepend the subdirectory the object is found in.
1372e1e1713cSmrg		  non_pic_object="$xdir$non_pic_object"
13737a84e134Smrg
1374e1e1713cSmrg		  # A standard non-PIC object
1375e1e1713cSmrg		  non_pic_objects="$non_pic_objects $non_pic_object"
1376e1e1713cSmrg		  if test -z "$pic_object" || test "$pic_object" = none ; then
1377e1e1713cSmrg		    arg="$non_pic_object"
1378e1e1713cSmrg		  fi
1379e1e1713cSmrg		else
1380e1e1713cSmrg		  # If the PIC object exists, use it instead.
1381e1e1713cSmrg		  # $xdir was prepended to $pic_object above.
1382e1e1713cSmrg		  non_pic_object="$pic_object"
1383e1e1713cSmrg		  non_pic_objects="$non_pic_objects $non_pic_object"
1384e1e1713cSmrg		fi
1385e1e1713cSmrg	      else
1386e1e1713cSmrg		# Only an error if not doing a dry-run.
1387e1e1713cSmrg		if test -z "$run"; then
1388e1e1713cSmrg		  $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1389e1e1713cSmrg		  exit $EXIT_FAILURE
1390e1e1713cSmrg		else
1391e1e1713cSmrg		  # Dry-run case.
13927a84e134Smrg
1393e1e1713cSmrg		  # Extract subdirectory from the argument.
1394e1e1713cSmrg		  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1395e1e1713cSmrg		  if test "X$xdir" = "X$arg"; then
1396e1e1713cSmrg		    xdir=
1397e1e1713cSmrg		  else
1398e1e1713cSmrg		    xdir="$xdir/"
1399e1e1713cSmrg		  fi
14007a84e134Smrg
1401e1e1713cSmrg		  pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1402e1e1713cSmrg		  non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1403e1e1713cSmrg		  libobjs="$libobjs $pic_object"
1404e1e1713cSmrg		  non_pic_objects="$non_pic_objects $non_pic_object"
1405e1e1713cSmrg		fi
1406e1e1713cSmrg	      fi
1407e1e1713cSmrg	    done
1408e1e1713cSmrg	  else
1409e1e1713cSmrg	    $echo "$modename: link input file \`$save_arg' does not exist"
1410e1e1713cSmrg	    exit $EXIT_FAILURE
1411e1e1713cSmrg	  fi
1412e1e1713cSmrg	  arg=$save_arg
1413e1e1713cSmrg	  prev=
1414e1e1713cSmrg	  continue
1415e1e1713cSmrg	  ;;
1416e1e1713cSmrg	rpath | xrpath)
1417e1e1713cSmrg	  # We need an absolute path.
1418e1e1713cSmrg	  case $arg in
1419e1e1713cSmrg	  [\\/]* | [A-Za-z]:[\\/]*) ;;
1420e1e1713cSmrg	  *)
1421e1e1713cSmrg	    $echo "$modename: only absolute run-paths are allowed" 1>&2
1422e1e1713cSmrg	    exit $EXIT_FAILURE
1423e1e1713cSmrg	    ;;
1424e1e1713cSmrg	  esac
1425e1e1713cSmrg	  if test "$prev" = rpath; then
1426e1e1713cSmrg	    case "$rpath " in
1427e1e1713cSmrg	    *" $arg "*) ;;
1428e1e1713cSmrg	    *) rpath="$rpath $arg" ;;
1429e1e1713cSmrg	    esac
1430e1e1713cSmrg	  else
1431e1e1713cSmrg	    case "$xrpath " in
1432e1e1713cSmrg	    *" $arg "*) ;;
1433e1e1713cSmrg	    *) xrpath="$xrpath $arg" ;;
1434e1e1713cSmrg	    esac
1435e1e1713cSmrg	  fi
1436e1e1713cSmrg	  prev=
1437e1e1713cSmrg	  continue
1438e1e1713cSmrg	  ;;
1439e1e1713cSmrg	xcompiler)
1440e1e1713cSmrg	  compiler_flags="$compiler_flags $qarg"
1441e1e1713cSmrg	  prev=
1442e1e1713cSmrg	  compile_command="$compile_command $qarg"
1443e1e1713cSmrg	  finalize_command="$finalize_command $qarg"
1444e1e1713cSmrg	  continue
1445e1e1713cSmrg	  ;;
1446e1e1713cSmrg	xlinker)
1447e1e1713cSmrg	  linker_flags="$linker_flags $qarg"
1448e1e1713cSmrg	  compiler_flags="$compiler_flags $wl$qarg"
1449e1e1713cSmrg	  prev=
1450e1e1713cSmrg	  compile_command="$compile_command $wl$qarg"
1451e1e1713cSmrg	  finalize_command="$finalize_command $wl$qarg"
1452e1e1713cSmrg	  continue
1453e1e1713cSmrg	  ;;
1454e1e1713cSmrg	xcclinker)
1455e1e1713cSmrg	  linker_flags="$linker_flags $qarg"
1456e1e1713cSmrg	  compiler_flags="$compiler_flags $qarg"
1457e1e1713cSmrg	  prev=
1458e1e1713cSmrg	  compile_command="$compile_command $qarg"
1459e1e1713cSmrg	  finalize_command="$finalize_command $qarg"
1460e1e1713cSmrg	  continue
1461e1e1713cSmrg	  ;;
1462e1e1713cSmrg	shrext)
1463e1e1713cSmrg  	  shrext_cmds="$arg"
1464e1e1713cSmrg	  prev=
1465e1e1713cSmrg	  continue
1466e1e1713cSmrg	  ;;
1467e1e1713cSmrg	darwin_framework|darwin_framework_skip)
1468e1e1713cSmrg	  test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
1469e1e1713cSmrg	  compile_command="$compile_command $arg"
1470e1e1713cSmrg	  finalize_command="$finalize_command $arg"
1471e1e1713cSmrg	  prev=
1472e1e1713cSmrg	  continue
1473e1e1713cSmrg	  ;;
1474e1e1713cSmrg	*)
1475e1e1713cSmrg	  eval "$prev=\"\$arg\""
1476e1e1713cSmrg	  prev=
1477e1e1713cSmrg	  continue
1478e1e1713cSmrg	  ;;
1479e1e1713cSmrg	esac
1480e1e1713cSmrg      fi # test -n "$prev"
14817a84e134Smrg
1482e1e1713cSmrg      prevarg="$arg"
14837a84e134Smrg
1484e1e1713cSmrg      case $arg in
1485e1e1713cSmrg      -all-static)
1486e1e1713cSmrg	if test -n "$link_static_flag"; then
1487e1e1713cSmrg	  compile_command="$compile_command $link_static_flag"
1488e1e1713cSmrg	  finalize_command="$finalize_command $link_static_flag"
1489e1e1713cSmrg	fi
1490e1e1713cSmrg	continue
1491e1e1713cSmrg	;;
14927a84e134Smrg
1493e1e1713cSmrg      -allow-undefined)
1494e1e1713cSmrg	# FIXME: remove this flag sometime in the future.
1495e1e1713cSmrg	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
1496e1e1713cSmrg	continue
1497e1e1713cSmrg	;;
14987a84e134Smrg
1499e1e1713cSmrg      -avoid-version)
1500e1e1713cSmrg	avoid_version=yes
1501e1e1713cSmrg	continue
1502e1e1713cSmrg	;;
15037a84e134Smrg
1504e1e1713cSmrg      -dlopen)
1505e1e1713cSmrg	prev=dlfiles
1506e1e1713cSmrg	continue
1507e1e1713cSmrg	;;
15087a84e134Smrg
1509e1e1713cSmrg      -dlpreopen)
1510e1e1713cSmrg	prev=dlprefiles
1511e1e1713cSmrg	continue
1512e1e1713cSmrg	;;
15137a84e134Smrg
1514e1e1713cSmrg      -export-dynamic)
1515e1e1713cSmrg	export_dynamic=yes
1516e1e1713cSmrg	continue
1517e1e1713cSmrg	;;
15187a84e134Smrg
1519e1e1713cSmrg      -export-symbols | -export-symbols-regex)
1520e1e1713cSmrg	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
1521e1e1713cSmrg	  $echo "$modename: more than one -exported-symbols argument is not allowed"
1522e1e1713cSmrg	  exit $EXIT_FAILURE
1523e1e1713cSmrg	fi
1524e1e1713cSmrg	if test "X$arg" = "X-export-symbols"; then
1525e1e1713cSmrg	  prev=expsyms
1526e1e1713cSmrg	else
1527e1e1713cSmrg	  prev=expsyms_regex
1528e1e1713cSmrg	fi
1529e1e1713cSmrg	continue
1530e1e1713cSmrg	;;
15317a84e134Smrg
1532e1e1713cSmrg      -framework|-arch|-isysroot)
1533e1e1713cSmrg	case " $CC " in
1534e1e1713cSmrg	  *" ${arg} ${1} "* | *" ${arg}	${1} "*) 
1535e1e1713cSmrg		prev=darwin_framework_skip ;;
1536e1e1713cSmrg	  *) compiler_flags="$compiler_flags $arg"
1537e1e1713cSmrg	     prev=darwin_framework ;;
1538e1e1713cSmrg	esac
1539e1e1713cSmrg	compile_command="$compile_command $arg"
1540e1e1713cSmrg	finalize_command="$finalize_command $arg"
1541e1e1713cSmrg	continue
1542e1e1713cSmrg	;;
15437a84e134Smrg
1544e1e1713cSmrg      -inst-prefix-dir)
1545e1e1713cSmrg	prev=inst_prefix
1546e1e1713cSmrg	continue
1547e1e1713cSmrg	;;
15487a84e134Smrg
1549e1e1713cSmrg      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
1550e1e1713cSmrg      # so, if we see these flags be careful not to treat them like -L
1551e1e1713cSmrg      -L[A-Z][A-Z]*:*)
1552e1e1713cSmrg	case $with_gcc/$host in
1553e1e1713cSmrg	no/*-*-irix* | /*-*-irix*)
1554e1e1713cSmrg	  compile_command="$compile_command $arg"
1555e1e1713cSmrg	  finalize_command="$finalize_command $arg"
1556e1e1713cSmrg	  ;;
1557e1e1713cSmrg	esac
1558e1e1713cSmrg	continue
1559e1e1713cSmrg	;;
15607a84e134Smrg
1561e1e1713cSmrg      -L*)
1562e1e1713cSmrg	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
1563e1e1713cSmrg	# We need an absolute path.
1564e1e1713cSmrg	case $dir in
1565e1e1713cSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
1566e1e1713cSmrg	*)
1567e1e1713cSmrg	  absdir=`cd "$dir" && pwd`
1568e1e1713cSmrg	  if test -z "$absdir"; then
1569e1e1713cSmrg	    $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
1570e1e1713cSmrg	    absdir="$dir"
1571e1e1713cSmrg	    notinst_path="$notinst_path $dir"
1572e1e1713cSmrg	  fi
1573e1e1713cSmrg	  dir="$absdir"
1574e1e1713cSmrg	  ;;
1575e1e1713cSmrg	esac
1576e1e1713cSmrg	case "$deplibs " in
1577e1e1713cSmrg	*" -L$dir "*) ;;
1578e1e1713cSmrg	*)
1579e1e1713cSmrg	  deplibs="$deplibs -L$dir"
1580e1e1713cSmrg	  lib_search_path="$lib_search_path $dir"
1581e1e1713cSmrg	  ;;
1582e1e1713cSmrg	esac
1583e1e1713cSmrg	case $host in
1584e1e1713cSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1585e1e1713cSmrg	  testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
1586e1e1713cSmrg	  case :$dllsearchpath: in
1587e1e1713cSmrg	  *":$dir:"*) ;;
1588e1e1713cSmrg	  *) dllsearchpath="$dllsearchpath:$dir";;
1589e1e1713cSmrg	  esac
1590e1e1713cSmrg	  case :$dllsearchpath: in
1591e1e1713cSmrg	  *":$testbindir:"*) ;;
1592e1e1713cSmrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
1593e1e1713cSmrg	  esac
1594e1e1713cSmrg	  ;;
1595e1e1713cSmrg	esac
1596e1e1713cSmrg	continue
1597e1e1713cSmrg	;;
15987a84e134Smrg
1599e1e1713cSmrg      -l*)
1600e1e1713cSmrg	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
1601e1e1713cSmrg	  case $host in
1602e1e1713cSmrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
1603e1e1713cSmrg	    # These systems don't actually have a C or math library (as such)
1604e1e1713cSmrg	    continue
1605e1e1713cSmrg	    ;;
1606e1e1713cSmrg	  *-*-os2*)
1607e1e1713cSmrg	    # These systems don't actually have a C library (as such)
1608e1e1713cSmrg	    test "X$arg" = "X-lc" && continue
1609e1e1713cSmrg	    ;;
1610e1e1713cSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
1611e1e1713cSmrg	    # Do not include libc due to us having libc/libc_r.
1612e1e1713cSmrg	    test "X$arg" = "X-lc" && continue
1613e1e1713cSmrg	    ;;
1614e1e1713cSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
1615e1e1713cSmrg	    # Rhapsody C and math libraries are in the System framework
1616e1e1713cSmrg	    deplibs="$deplibs -framework System"
1617e1e1713cSmrg	    continue
1618e1e1713cSmrg	    ;;
1619e1e1713cSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
1620e1e1713cSmrg	    # Causes problems with __ctype
1621e1e1713cSmrg	    test "X$arg" = "X-lc" && continue
1622e1e1713cSmrg	    ;;
1623e1e1713cSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
1624e1e1713cSmrg	    # Compiler inserts libc in the correct place for threads to work
1625e1e1713cSmrg	    test "X$arg" = "X-lc" && continue
1626e1e1713cSmrg	    ;;
1627e1e1713cSmrg	  esac
1628e1e1713cSmrg	elif test "X$arg" = "X-lc_r"; then
1629e1e1713cSmrg	 case $host in
1630e1e1713cSmrg	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
1631e1e1713cSmrg	   # Do not include libc_r directly, use -pthread flag.
1632e1e1713cSmrg	   continue
1633e1e1713cSmrg	   ;;
1634e1e1713cSmrg	 esac
1635775e7de9Smrg	fi
1636e1e1713cSmrg	deplibs="$deplibs $arg"
1637e1e1713cSmrg	continue
1638e1e1713cSmrg	;;
16397a84e134Smrg
1640e1e1713cSmrg      # Tru64 UNIX uses -model [arg] to determine the layout of C++
1641e1e1713cSmrg      # classes, name mangling, and exception handling.
1642e1e1713cSmrg      -model)
1643e1e1713cSmrg	compile_command="$compile_command $arg"
1644e1e1713cSmrg	compiler_flags="$compiler_flags $arg"
1645e1e1713cSmrg	finalize_command="$finalize_command $arg"
1646e1e1713cSmrg	prev=xcompiler
1647e1e1713cSmrg	continue
16487a84e134Smrg	;;
16497a84e134Smrg
1650e1e1713cSmrg     -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
1651e1e1713cSmrg	compiler_flags="$compiler_flags $arg"
1652e1e1713cSmrg	compile_command="$compile_command $arg"
1653e1e1713cSmrg	finalize_command="$finalize_command $arg"
1654e1e1713cSmrg	continue
16557a84e134Smrg	;;
16567a84e134Smrg
1657e1e1713cSmrg      -multi_module)
1658e1e1713cSmrg	single_module="${wl}-multi_module"
16597a84e134Smrg	continue
16607a84e134Smrg	;;
16617a84e134Smrg
1662e1e1713cSmrg      -module)
1663e1e1713cSmrg	module=yes
1664e1e1713cSmrg	continue
1665e1e1713cSmrg	;;
16667a84e134Smrg
1667e1e1713cSmrg      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
1668e1e1713cSmrg      # -r[0-9][0-9]* specifies the processor on the SGI compiler
1669e1e1713cSmrg      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
1670e1e1713cSmrg      # +DA*, +DD* enable 64-bit mode on the HP compiler
1671e1e1713cSmrg      # -q* pass through compiler args for the IBM compiler
1672e1e1713cSmrg      # -m* pass through architecture-specific compiler args for GCC
1673e1e1713cSmrg      # -m*, -t[45]*, -txscale* pass through architecture-specific
1674e1e1713cSmrg      # compiler args for GCC
1675e1e1713cSmrg      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
1676e1e1713cSmrg      # -F/path gives path to uninstalled frameworks, gcc on darwin
1677e1e1713cSmrg      # @file GCC response files
1678e1e1713cSmrg      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
1679e1e1713cSmrg      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
16807a84e134Smrg
1681e1e1713cSmrg	# Unknown arguments in both finalize_command and compile_command need
1682e1e1713cSmrg	# to be aesthetically quoted because they are evaled later.
1683e1e1713cSmrg	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1684e1e1713cSmrg	case $arg in
1685e1e1713cSmrg	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1686e1e1713cSmrg	  arg="\"$arg\""
1687e1e1713cSmrg	  ;;
1688e1e1713cSmrg	esac
1689e1e1713cSmrg        compile_command="$compile_command $arg"
1690e1e1713cSmrg        finalize_command="$finalize_command $arg"
1691e1e1713cSmrg        compiler_flags="$compiler_flags $arg"
1692e1e1713cSmrg        continue
1693e1e1713cSmrg        ;;
16947a84e134Smrg
1695e1e1713cSmrg      -shrext)
1696e1e1713cSmrg	prev=shrext
1697e1e1713cSmrg	continue
1698775e7de9Smrg	;;
16997a84e134Smrg
1700e1e1713cSmrg      -no-fast-install)
1701e1e1713cSmrg	fast_install=no
1702e1e1713cSmrg	continue
1703e1e1713cSmrg	;;
17047a84e134Smrg
1705e1e1713cSmrg      -no-install)
1706e1e1713cSmrg	case $host in
1707e1e1713cSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*)
1708e1e1713cSmrg	  # The PATH hackery in wrapper scripts is required on Windows
1709e1e1713cSmrg	  # and Darwin in order for the loader to find any dlls it needs.
1710e1e1713cSmrg	  $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
1711e1e1713cSmrg	  $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
1712e1e1713cSmrg	  fast_install=no
1713e1e1713cSmrg	  ;;
1714e1e1713cSmrg	*) no_install=yes ;;
1715e1e1713cSmrg	esac
1716e1e1713cSmrg	continue
1717e1e1713cSmrg	;;
17187a84e134Smrg
1719e1e1713cSmrg      -no-undefined)
1720e1e1713cSmrg	allow_undefined=no
1721e1e1713cSmrg	continue
1722e1e1713cSmrg	;;
1723775e7de9Smrg
1724e1e1713cSmrg      -objectlist)
1725e1e1713cSmrg	prev=objectlist
1726e1e1713cSmrg	continue
17277a84e134Smrg	;;
17287a84e134Smrg
1729e1e1713cSmrg      -o) prev=output ;;
17307a84e134Smrg
1731e1e1713cSmrg      -precious-files-regex)
1732e1e1713cSmrg	prev=precious_regex
1733e1e1713cSmrg	continue
1734e1e1713cSmrg	;;
1735ab902922Smrg
1736e1e1713cSmrg      -release)
1737e1e1713cSmrg	prev=release
1738e1e1713cSmrg	continue
1739e1e1713cSmrg	;;
17407a84e134Smrg
1741e1e1713cSmrg      -rpath)
1742e1e1713cSmrg	prev=rpath
1743e1e1713cSmrg	continue
1744e1e1713cSmrg	;;
17457a84e134Smrg
1746e1e1713cSmrg      -R)
1747e1e1713cSmrg	prev=xrpath
1748775e7de9Smrg	continue
1749e1e1713cSmrg	;;
17507a84e134Smrg
1751e1e1713cSmrg      -R*)
1752e1e1713cSmrg	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
1753e1e1713cSmrg	# We need an absolute path.
1754e1e1713cSmrg	case $dir in
1755e1e1713cSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
1756e1e1713cSmrg	*)
1757e1e1713cSmrg	  $echo "$modename: only absolute run-paths are allowed" 1>&2
1758e1e1713cSmrg	  exit $EXIT_FAILURE
1759e1e1713cSmrg	  ;;
1760e1e1713cSmrg	esac
1761e1e1713cSmrg	case "$xrpath " in
1762e1e1713cSmrg	*" $dir "*) ;;
1763e1e1713cSmrg	*) xrpath="$xrpath $dir" ;;
1764775e7de9Smrg	esac
1765e1e1713cSmrg	continue
1766775e7de9Smrg	;;
1767e1e1713cSmrg
1768e1e1713cSmrg      -static | -static-libtool-libs)
1769e1e1713cSmrg	# The effects of -static are defined in a previous loop.
1770e1e1713cSmrg	# We used to do the same as -all-static on platforms that
1771e1e1713cSmrg	# didn't have a PIC flag, but the assumption that the effects
1772e1e1713cSmrg	# would be equivalent was wrong.  It would break on at least
1773e1e1713cSmrg	# Digital Unix and AIX.
1774e1e1713cSmrg	continue
1775775e7de9Smrg	;;
1776e1e1713cSmrg
1777e1e1713cSmrg      -thread-safe)
1778e1e1713cSmrg	thread_safe=yes
1779775e7de9Smrg	continue
1780775e7de9Smrg	;;
1781e1e1713cSmrg
1782e1e1713cSmrg      -version-info)
1783e1e1713cSmrg	prev=vinfo
1784e1e1713cSmrg	continue
1785775e7de9Smrg	;;
1786e1e1713cSmrg      -version-number)
1787e1e1713cSmrg	prev=vinfo
1788e1e1713cSmrg	vinfo_number=yes
1789e1e1713cSmrg	continue
1790775e7de9Smrg	;;
1791775e7de9Smrg
1792e1e1713cSmrg      -Wc,*)
1793e1e1713cSmrg	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
1794e1e1713cSmrg	arg=
1795e1e1713cSmrg	save_ifs="$IFS"; IFS=','
1796e1e1713cSmrg	for flag in $args; do
1797e1e1713cSmrg	  IFS="$save_ifs"
1798e1e1713cSmrg	  case $flag in
1799e1e1713cSmrg	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1800e1e1713cSmrg	    flag="\"$flag\""
1801e1e1713cSmrg	    ;;
1802e1e1713cSmrg	  esac
1803e1e1713cSmrg	  arg="$arg $wl$flag"
1804e1e1713cSmrg	  compiler_flags="$compiler_flags $flag"
1805e1e1713cSmrg	done
1806e1e1713cSmrg	IFS="$save_ifs"
1807e1e1713cSmrg	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1808e1e1713cSmrg	;;
1809775e7de9Smrg
1810e1e1713cSmrg      -Wl,*)
1811e1e1713cSmrg	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
1812e1e1713cSmrg	arg=
1813e1e1713cSmrg	save_ifs="$IFS"; IFS=','
1814e1e1713cSmrg	for flag in $args; do
1815e1e1713cSmrg	  IFS="$save_ifs"
1816e1e1713cSmrg	  case $flag in
1817e1e1713cSmrg	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1818e1e1713cSmrg	    flag="\"$flag\""
1819e1e1713cSmrg	    ;;
1820e1e1713cSmrg	  esac
1821e1e1713cSmrg	  arg="$arg $wl$flag"
1822e1e1713cSmrg	  compiler_flags="$compiler_flags $wl$flag"
1823e1e1713cSmrg	  linker_flags="$linker_flags $flag"
1824e1e1713cSmrg	done
1825e1e1713cSmrg	IFS="$save_ifs"
1826e1e1713cSmrg	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1827e1e1713cSmrg	;;
1828775e7de9Smrg
1829e1e1713cSmrg      -Xcompiler)
1830e1e1713cSmrg	prev=xcompiler
1831e1e1713cSmrg	continue
1832e1e1713cSmrg	;;
18337a84e134Smrg
1834e1e1713cSmrg      -Xlinker)
1835e1e1713cSmrg	prev=xlinker
1836e1e1713cSmrg	continue
1837e1e1713cSmrg	;;
18387a84e134Smrg
1839e1e1713cSmrg      -XCClinker)
1840e1e1713cSmrg	prev=xcclinker
1841e1e1713cSmrg	continue
1842e1e1713cSmrg	;;
1843775e7de9Smrg
1844e1e1713cSmrg      # Some other compiler flag.
1845e1e1713cSmrg      -* | +*)
1846e1e1713cSmrg	# Unknown arguments in both finalize_command and compile_command need
1847e1e1713cSmrg	# to be aesthetically quoted because they are evaled later.
1848e1e1713cSmrg	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1849e1e1713cSmrg	case $arg in
1850e1e1713cSmrg	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1851e1e1713cSmrg	  arg="\"$arg\""
1852775e7de9Smrg	  ;;
1853775e7de9Smrg	esac
1854e1e1713cSmrg	;;
18557a84e134Smrg
1856e1e1713cSmrg      *.$objext)
1857e1e1713cSmrg	# A standard object.
1858e1e1713cSmrg	objs="$objs $arg"
1859775e7de9Smrg	;;
1860775e7de9Smrg
1861e1e1713cSmrg      *.lo)
1862e1e1713cSmrg	# A libtool-controlled object.
1863775e7de9Smrg
1864e1e1713cSmrg	# Check to see that this really is a libtool object.
1865e1e1713cSmrg	if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1866e1e1713cSmrg	  pic_object=
1867e1e1713cSmrg	  non_pic_object=
1868775e7de9Smrg
1869e1e1713cSmrg	  # Read the .lo file
1870e1e1713cSmrg	  # If there is no directory component, then add one.
1871e1e1713cSmrg	  case $arg in
1872e1e1713cSmrg	  */* | *\\*) . $arg ;;
1873e1e1713cSmrg	  *) . ./$arg ;;
1874775e7de9Smrg	  esac
1875775e7de9Smrg
1876e1e1713cSmrg	  if test -z "$pic_object" || \
1877e1e1713cSmrg	     test -z "$non_pic_object" ||
1878e1e1713cSmrg	     test "$pic_object" = none && \
1879e1e1713cSmrg	     test "$non_pic_object" = none; then
1880e1e1713cSmrg	    $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1881e1e1713cSmrg	    exit $EXIT_FAILURE
1882e1e1713cSmrg	  fi
1883775e7de9Smrg
1884e1e1713cSmrg	  # Extract subdirectory from the argument.
1885e1e1713cSmrg	  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1886e1e1713cSmrg	  if test "X$xdir" = "X$arg"; then
1887e1e1713cSmrg	    xdir=
1888e1e1713cSmrg 	  else
1889e1e1713cSmrg	    xdir="$xdir/"
1890775e7de9Smrg	  fi
1891775e7de9Smrg
1892e1e1713cSmrg	  if test "$pic_object" != none; then
1893e1e1713cSmrg	    # Prepend the subdirectory the object is found in.
1894e1e1713cSmrg	    pic_object="$xdir$pic_object"
1895775e7de9Smrg
1896e1e1713cSmrg	    if test "$prev" = dlfiles; then
1897e1e1713cSmrg	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1898e1e1713cSmrg		dlfiles="$dlfiles $pic_object"
1899e1e1713cSmrg		prev=
1900e1e1713cSmrg		continue
1901e1e1713cSmrg	      else
1902e1e1713cSmrg		# If libtool objects are unsupported, then we need to preload.
1903e1e1713cSmrg		prev=dlprefiles
1904e1e1713cSmrg	      fi
1905e1e1713cSmrg	    fi
1906775e7de9Smrg
1907e1e1713cSmrg	    # CHECK ME:  I think I busted this.  -Ossama
1908e1e1713cSmrg	    if test "$prev" = dlprefiles; then
1909e1e1713cSmrg	      # Preload the old-style object.
1910e1e1713cSmrg	      dlprefiles="$dlprefiles $pic_object"
1911e1e1713cSmrg	      prev=
1912e1e1713cSmrg	    fi
1913775e7de9Smrg
1914e1e1713cSmrg	    # A PIC object.
1915e1e1713cSmrg	    libobjs="$libobjs $pic_object"
1916e1e1713cSmrg	    arg="$pic_object"
1917ab902922Smrg	  fi
1918775e7de9Smrg
1919e1e1713cSmrg	  # Non-PIC object.
1920e1e1713cSmrg	  if test "$non_pic_object" != none; then
1921e1e1713cSmrg	    # Prepend the subdirectory the object is found in.
1922e1e1713cSmrg	    non_pic_object="$xdir$non_pic_object"
1923e1e1713cSmrg
1924e1e1713cSmrg	    # A standard non-PIC object
1925e1e1713cSmrg	    non_pic_objects="$non_pic_objects $non_pic_object"
1926e1e1713cSmrg	    if test -z "$pic_object" || test "$pic_object" = none ; then
1927e1e1713cSmrg	      arg="$non_pic_object"
1928e1e1713cSmrg	    fi
1929e1e1713cSmrg	  else
1930e1e1713cSmrg	    # If the PIC object exists, use it instead.
1931e1e1713cSmrg	    # $xdir was prepended to $pic_object above.
1932e1e1713cSmrg	    non_pic_object="$pic_object"
1933e1e1713cSmrg	    non_pic_objects="$non_pic_objects $non_pic_object"
19347a84e134Smrg	  fi
1935e1e1713cSmrg	else
1936e1e1713cSmrg	  # Only an error if not doing a dry-run.
1937e1e1713cSmrg	  if test -z "$run"; then
1938e1e1713cSmrg	    $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1939e1e1713cSmrg	    exit $EXIT_FAILURE
1940e1e1713cSmrg	  else
1941e1e1713cSmrg	    # Dry-run case.
19427a84e134Smrg
1943e1e1713cSmrg	    # Extract subdirectory from the argument.
1944e1e1713cSmrg	    xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1945e1e1713cSmrg	    if test "X$xdir" = "X$arg"; then
1946e1e1713cSmrg	      xdir=
1947e1e1713cSmrg	    else
1948e1e1713cSmrg	      xdir="$xdir/"
1949e1e1713cSmrg	    fi
19507a84e134Smrg
1951e1e1713cSmrg	    pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1952e1e1713cSmrg	    non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1953e1e1713cSmrg	    libobjs="$libobjs $pic_object"
1954e1e1713cSmrg	    non_pic_objects="$non_pic_objects $non_pic_object"
1955e1e1713cSmrg	  fi
1956e1e1713cSmrg	fi
1957e1e1713cSmrg	;;
19587a84e134Smrg
1959e1e1713cSmrg      *.$libext)
1960e1e1713cSmrg	# An archive.
1961e1e1713cSmrg	deplibs="$deplibs $arg"
1962e1e1713cSmrg	old_deplibs="$old_deplibs $arg"
1963e1e1713cSmrg	continue
1964775e7de9Smrg	;;
19657a84e134Smrg
1966e1e1713cSmrg      *.la)
1967e1e1713cSmrg	# A libtool-controlled library.
19687a84e134Smrg
1969e1e1713cSmrg	if test "$prev" = dlfiles; then
1970e1e1713cSmrg	  # This library was specified with -dlopen.
1971e1e1713cSmrg	  dlfiles="$dlfiles $arg"
1972e1e1713cSmrg	  prev=
1973e1e1713cSmrg	elif test "$prev" = dlprefiles; then
1974e1e1713cSmrg	  # The library was specified with -dlpreopen.
1975e1e1713cSmrg	  dlprefiles="$dlprefiles $arg"
1976e1e1713cSmrg	  prev=
1977775e7de9Smrg	else
1978e1e1713cSmrg	  deplibs="$deplibs $arg"
1979775e7de9Smrg	fi
1980e1e1713cSmrg	continue
1981e1e1713cSmrg	;;
1982775e7de9Smrg
1983e1e1713cSmrg      # Some other compiler argument.
1984e1e1713cSmrg      *)
1985e1e1713cSmrg	# Unknown arguments in both finalize_command and compile_command need
1986e1e1713cSmrg	# to be aesthetically quoted because they are evaled later.
1987e1e1713cSmrg	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1988e1e1713cSmrg	case $arg in
1989e1e1713cSmrg	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1990e1e1713cSmrg	  arg="\"$arg\""
1991775e7de9Smrg	  ;;
19927a84e134Smrg	esac
1993775e7de9Smrg	;;
1994e1e1713cSmrg      esac # arg
19957a84e134Smrg
1996e1e1713cSmrg      # Now actually substitute the argument into the commands.
1997e1e1713cSmrg      if test -n "$arg"; then
1998e1e1713cSmrg	compile_command="$compile_command $arg"
1999e1e1713cSmrg	finalize_command="$finalize_command $arg"
2000e1e1713cSmrg      fi
2001e1e1713cSmrg    done # argument parsing loop
20027a84e134Smrg
2003e1e1713cSmrg    if test -n "$prev"; then
2004e1e1713cSmrg      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
2005e1e1713cSmrg      $echo "$help" 1>&2
2006e1e1713cSmrg      exit $EXIT_FAILURE
2007e1e1713cSmrg    fi
20087a84e134Smrg
2009e1e1713cSmrg    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
2010e1e1713cSmrg      eval arg=\"$export_dynamic_flag_spec\"
2011e1e1713cSmrg      compile_command="$compile_command $arg"
2012e1e1713cSmrg      finalize_command="$finalize_command $arg"
2013e1e1713cSmrg    fi
20147a84e134Smrg
2015e1e1713cSmrg    oldlibs=
2016e1e1713cSmrg    # calculate the name of the file, without its directory
2017e1e1713cSmrg    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
2018e1e1713cSmrg    libobjs_save="$libobjs"
2019775e7de9Smrg
2020e1e1713cSmrg    if test -n "$shlibpath_var"; then
2021e1e1713cSmrg      # get the directories listed in $shlibpath_var
2022e1e1713cSmrg      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
2023e1e1713cSmrg    else
2024e1e1713cSmrg      shlib_search_path=
2025e1e1713cSmrg    fi
2026e1e1713cSmrg    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
2027e1e1713cSmrg    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
2028775e7de9Smrg
2029e1e1713cSmrg    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
2030e1e1713cSmrg    if test "X$output_objdir" = "X$output"; then
2031e1e1713cSmrg      output_objdir="$objdir"
2032775e7de9Smrg    else
2033e1e1713cSmrg      output_objdir="$output_objdir/$objdir"
2034775e7de9Smrg    fi
2035e1e1713cSmrg    # Create the object directory.
2036e1e1713cSmrg    if test ! -d "$output_objdir"; then
2037e1e1713cSmrg      $show "$mkdir $output_objdir"
2038e1e1713cSmrg      $run $mkdir $output_objdir
2039e1e1713cSmrg      exit_status=$?
2040e1e1713cSmrg      if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
2041e1e1713cSmrg	exit $exit_status
2042775e7de9Smrg      fi
2043775e7de9Smrg    fi
2044775e7de9Smrg
2045e1e1713cSmrg    # Determine the type of output
2046e1e1713cSmrg    case $output in
2047e1e1713cSmrg    "")
2048e1e1713cSmrg      $echo "$modename: you must specify an output file" 1>&2
2049e1e1713cSmrg      $echo "$help" 1>&2
2050e1e1713cSmrg      exit $EXIT_FAILURE
2051e1e1713cSmrg      ;;
2052e1e1713cSmrg    *.$libext) linkmode=oldlib ;;
2053e1e1713cSmrg    *.lo | *.$objext) linkmode=obj ;;
2054e1e1713cSmrg    *.la) linkmode=lib ;;
2055e1e1713cSmrg    *) linkmode=prog ;; # Anything else should be a program.
2056e1e1713cSmrg    esac
20577a84e134Smrg
2058e1e1713cSmrg    case $host in
2059e1e1713cSmrg    *cygwin* | *mingw* | *pw32*)
2060e1e1713cSmrg      # don't eliminate duplications in $postdeps and $predeps
2061e1e1713cSmrg      duplicate_compiler_generated_deps=yes
2062e1e1713cSmrg      ;;
2063e1e1713cSmrg    *)
2064e1e1713cSmrg      duplicate_compiler_generated_deps=$duplicate_deps
2065e1e1713cSmrg      ;;
2066e1e1713cSmrg    esac
2067e1e1713cSmrg    specialdeplibs=
20687a84e134Smrg
2069e1e1713cSmrg    libs=
2070e1e1713cSmrg    # Find all interdependent deplibs by searching for libraries
2071e1e1713cSmrg    # that are linked more than once (e.g. -la -lb -la)
2072e1e1713cSmrg    for deplib in $deplibs; do
2073e1e1713cSmrg      if test "X$duplicate_deps" = "Xyes" ; then
2074e1e1713cSmrg	case "$libs " in
2075e1e1713cSmrg	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2076e1e1713cSmrg	esac
2077e1e1713cSmrg      fi
2078e1e1713cSmrg      libs="$libs $deplib"
2079e1e1713cSmrg    done
20807a84e134Smrg
2081e1e1713cSmrg    if test "$linkmode" = lib; then
2082e1e1713cSmrg      libs="$predeps $libs $compiler_lib_search_path $postdeps"
20837a84e134Smrg
2084e1e1713cSmrg      # Compute libraries that are listed more than once in $predeps
2085e1e1713cSmrg      # $postdeps and mark them as special (i.e., whose duplicates are
2086e1e1713cSmrg      # not to be eliminated).
2087e1e1713cSmrg      pre_post_deps=
2088e1e1713cSmrg      if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
2089e1e1713cSmrg	for pre_post_dep in $predeps $postdeps; do
2090e1e1713cSmrg	  case "$pre_post_deps " in
2091e1e1713cSmrg	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
2092775e7de9Smrg	  esac
2093e1e1713cSmrg	  pre_post_deps="$pre_post_deps $pre_post_dep"
2094e1e1713cSmrg	done
2095e1e1713cSmrg      fi
2096e1e1713cSmrg      pre_post_deps=
2097e1e1713cSmrg    fi
2098775e7de9Smrg
2099e1e1713cSmrg    deplibs=
2100e1e1713cSmrg    newdependency_libs=
2101e1e1713cSmrg    newlib_search_path=
2102e1e1713cSmrg    need_relink=no # whether we're linking any uninstalled libtool libraries
2103e1e1713cSmrg    notinst_deplibs= # not-installed libtool libraries
2104e1e1713cSmrg    case $linkmode in
2105e1e1713cSmrg    lib)
2106e1e1713cSmrg	passes="conv link"
2107e1e1713cSmrg	for file in $dlfiles $dlprefiles; do
2108e1e1713cSmrg	  case $file in
2109e1e1713cSmrg	  *.la) ;;
2110775e7de9Smrg	  *)
2111e1e1713cSmrg	    $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
2112e1e1713cSmrg	    exit $EXIT_FAILURE
2113775e7de9Smrg	    ;;
2114775e7de9Smrg	  esac
2115775e7de9Smrg	done
2116775e7de9Smrg	;;
2117e1e1713cSmrg    prog)
2118e1e1713cSmrg	compile_deplibs=
2119e1e1713cSmrg	finalize_deplibs=
2120e1e1713cSmrg	alldeplibs=no
2121e1e1713cSmrg	newdlfiles=
2122e1e1713cSmrg	newdlprefiles=
2123e1e1713cSmrg	passes="conv scan dlopen dlpreopen link"
2124e1e1713cSmrg	;;
2125e1e1713cSmrg    *)  passes="conv"
2126775e7de9Smrg	;;
2127775e7de9Smrg    esac
2128e1e1713cSmrg    for pass in $passes; do
2129e1e1713cSmrg      if test "$linkmode,$pass" = "lib,link" ||
2130e1e1713cSmrg	 test "$linkmode,$pass" = "prog,scan"; then
2131e1e1713cSmrg	libs="$deplibs"
2132e1e1713cSmrg	deplibs=
2133e1e1713cSmrg      fi
2134e1e1713cSmrg      if test "$linkmode" = prog; then
2135e1e1713cSmrg	case $pass in
2136e1e1713cSmrg	dlopen) libs="$dlfiles" ;;
2137e1e1713cSmrg	dlpreopen) libs="$dlprefiles" ;;
2138e1e1713cSmrg	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
2139e1e1713cSmrg	esac
2140e1e1713cSmrg      fi
2141e1e1713cSmrg      if test "$pass" = dlopen; then
2142e1e1713cSmrg	# Collect dlpreopened libraries
2143e1e1713cSmrg	save_deplibs="$deplibs"
2144e1e1713cSmrg	deplibs=
2145e1e1713cSmrg      fi
2146e1e1713cSmrg      for deplib in $libs; do
2147e1e1713cSmrg	lib=
2148e1e1713cSmrg	found=no
2149e1e1713cSmrg	case $deplib in
2150e1e1713cSmrg	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
2151e1e1713cSmrg	  if test "$linkmode,$pass" = "prog,link"; then
2152e1e1713cSmrg	    compile_deplibs="$deplib $compile_deplibs"
2153e1e1713cSmrg	    finalize_deplibs="$deplib $finalize_deplibs"
2154e1e1713cSmrg	  else
2155e1e1713cSmrg	    compiler_flags="$compiler_flags $deplib"
2156e1e1713cSmrg	  fi
2157e1e1713cSmrg	  continue
2158e1e1713cSmrg	  ;;
2159e1e1713cSmrg	-l*)
2160e1e1713cSmrg	  if test "$linkmode" != lib && test "$linkmode" != prog; then
2161e1e1713cSmrg	    $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
2162e1e1713cSmrg	    continue
2163e1e1713cSmrg	  fi
2164e1e1713cSmrg	  name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
2165e1e1713cSmrg	  if test "$linkmode" = lib; then
2166e1e1713cSmrg	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
2167e1e1713cSmrg	  else
2168e1e1713cSmrg	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
2169e1e1713cSmrg	  fi
2170e1e1713cSmrg	  for searchdir in $searchdirs; do
2171e1e1713cSmrg	    for search_ext in .la $std_shrext .so .a; do
2172e1e1713cSmrg	      # Search the libtool library
2173e1e1713cSmrg	      lib="$searchdir/lib${name}${search_ext}"
2174e1e1713cSmrg	      if test -f "$lib"; then
2175e1e1713cSmrg		if test "$search_ext" = ".la"; then
2176e1e1713cSmrg		  found=yes
2177e1e1713cSmrg		else
2178e1e1713cSmrg		  found=no
2179e1e1713cSmrg		fi
2180e1e1713cSmrg		break 2
2181e1e1713cSmrg	      fi
2182e1e1713cSmrg	    done
2183e1e1713cSmrg	  done
2184e1e1713cSmrg	  if test "$found" != yes; then
2185e1e1713cSmrg	    # deplib doesn't seem to be a libtool library
2186e1e1713cSmrg	    if test "$linkmode,$pass" = "prog,link"; then
2187e1e1713cSmrg	      compile_deplibs="$deplib $compile_deplibs"
2188e1e1713cSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
2189e1e1713cSmrg	    else
2190e1e1713cSmrg	      deplibs="$deplib $deplibs"
2191e1e1713cSmrg	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
2192e1e1713cSmrg	    fi
2193e1e1713cSmrg	    continue
2194e1e1713cSmrg	  else # deplib is a libtool library
2195e1e1713cSmrg	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
2196e1e1713cSmrg	    # We need to do some special things here, and not later.
2197e1e1713cSmrg	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
2198e1e1713cSmrg	      case " $predeps $postdeps " in
2199e1e1713cSmrg	      *" $deplib "*)
2200e1e1713cSmrg		if (${SED} -e '2q' $lib |
2201e1e1713cSmrg                    grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
2202e1e1713cSmrg		  library_names=
2203e1e1713cSmrg		  old_library=
2204e1e1713cSmrg		  case $lib in
2205e1e1713cSmrg		  */* | *\\*) . $lib ;;
2206e1e1713cSmrg		  *) . ./$lib ;;
2207e1e1713cSmrg		  esac
2208e1e1713cSmrg		  for l in $old_library $library_names; do
2209e1e1713cSmrg		    ll="$l"
2210e1e1713cSmrg		  done
2211e1e1713cSmrg		  if test "X$ll" = "X$old_library" ; then # only static version available
2212e1e1713cSmrg		    found=no
2213e1e1713cSmrg		    ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
2214e1e1713cSmrg		    test "X$ladir" = "X$lib" && ladir="."
2215e1e1713cSmrg		    lib=$ladir/$old_library
2216e1e1713cSmrg		    if test "$linkmode,$pass" = "prog,link"; then
2217e1e1713cSmrg		      compile_deplibs="$deplib $compile_deplibs"
2218e1e1713cSmrg		      finalize_deplibs="$deplib $finalize_deplibs"
2219e1e1713cSmrg		    else
2220e1e1713cSmrg		      deplibs="$deplib $deplibs"
2221e1e1713cSmrg		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
2222e1e1713cSmrg		    fi
2223e1e1713cSmrg		    continue
2224e1e1713cSmrg		  fi
2225e1e1713cSmrg		fi
2226e1e1713cSmrg	        ;;
2227e1e1713cSmrg	      *) ;;
2228e1e1713cSmrg	      esac
2229e1e1713cSmrg	    fi
2230e1e1713cSmrg	  fi
2231e1e1713cSmrg	  ;; # -l
2232e1e1713cSmrg	-L*)
2233e1e1713cSmrg	  case $linkmode in
2234e1e1713cSmrg	  lib)
2235e1e1713cSmrg	    deplibs="$deplib $deplibs"
2236e1e1713cSmrg	    test "$pass" = conv && continue
2237e1e1713cSmrg	    newdependency_libs="$deplib $newdependency_libs"
2238e1e1713cSmrg	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
2239e1e1713cSmrg	    ;;
2240e1e1713cSmrg	  prog)
2241e1e1713cSmrg	    if test "$pass" = conv; then
2242e1e1713cSmrg	      deplibs="$deplib $deplibs"
2243e1e1713cSmrg	      continue
2244e1e1713cSmrg	    fi
2245e1e1713cSmrg	    if test "$pass" = scan; then
2246e1e1713cSmrg	      deplibs="$deplib $deplibs"
2247e1e1713cSmrg	    else
2248e1e1713cSmrg	      compile_deplibs="$deplib $compile_deplibs"
2249e1e1713cSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
2250e1e1713cSmrg	    fi
2251e1e1713cSmrg	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
2252e1e1713cSmrg	    ;;
2253e1e1713cSmrg	  *)
2254e1e1713cSmrg	    $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
2255e1e1713cSmrg	    ;;
2256e1e1713cSmrg	  esac # linkmode
2257e1e1713cSmrg	  continue
2258e1e1713cSmrg	  ;; # -L
2259e1e1713cSmrg	-R*)
2260e1e1713cSmrg	  if test "$pass" = link; then
2261e1e1713cSmrg	    dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
2262e1e1713cSmrg	    # Make sure the xrpath contains only unique directories.
2263e1e1713cSmrg	    case "$xrpath " in
2264e1e1713cSmrg	    *" $dir "*) ;;
2265e1e1713cSmrg	    *) xrpath="$xrpath $dir" ;;
2266e1e1713cSmrg	    esac
2267e1e1713cSmrg	  fi
2268e1e1713cSmrg	  deplibs="$deplib $deplibs"
2269e1e1713cSmrg	  continue
2270e1e1713cSmrg	  ;;
2271e1e1713cSmrg	*.la) lib="$deplib" ;;
2272e1e1713cSmrg	*.$libext)
2273e1e1713cSmrg	  if test "$pass" = conv; then
2274e1e1713cSmrg	    deplibs="$deplib $deplibs"
2275e1e1713cSmrg	    continue
2276e1e1713cSmrg	  fi
2277e1e1713cSmrg	  case $linkmode in
2278e1e1713cSmrg	  lib)
2279e1e1713cSmrg	    valid_a_lib=no
2280e1e1713cSmrg	    case $deplibs_check_method in
2281e1e1713cSmrg	      match_pattern*)
2282e1e1713cSmrg		set dummy $deplibs_check_method
2283e1e1713cSmrg	        match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
2284e1e1713cSmrg		if eval $echo \"$deplib\" 2>/dev/null \
2285e1e1713cSmrg		    | $SED 10q \
2286e1e1713cSmrg		    | $EGREP "$match_pattern_regex" > /dev/null; then
2287e1e1713cSmrg		  valid_a_lib=yes
2288e1e1713cSmrg		fi
2289e1e1713cSmrg		;;
2290e1e1713cSmrg	      pass_all)
2291e1e1713cSmrg		valid_a_lib=yes
2292e1e1713cSmrg		;;
2293e1e1713cSmrg            esac
2294e1e1713cSmrg	    if test "$valid_a_lib" != yes; then
2295e1e1713cSmrg	      $echo
2296e1e1713cSmrg	      $echo "*** Warning: Trying to link with static lib archive $deplib."
2297e1e1713cSmrg	      $echo "*** I have the capability to make that library automatically link in when"
2298e1e1713cSmrg	      $echo "*** you link to this library.  But I can only do this if you have a"
2299e1e1713cSmrg	      $echo "*** shared version of the library, which you do not appear to have"
2300e1e1713cSmrg	      $echo "*** because the file extensions .$libext of this argument makes me believe"
2301e1e1713cSmrg	      $echo "*** that it is just a static archive that I should not used here."
2302e1e1713cSmrg	    else
2303e1e1713cSmrg	      $echo
2304e1e1713cSmrg	      $echo "*** Warning: Linking the shared library $output against the"
2305e1e1713cSmrg	      $echo "*** static library $deplib is not portable!"
2306e1e1713cSmrg	      deplibs="$deplib $deplibs"
2307e1e1713cSmrg	    fi
2308e1e1713cSmrg	    continue
2309e1e1713cSmrg	    ;;
2310e1e1713cSmrg	  prog)
2311e1e1713cSmrg	    if test "$pass" != link; then
2312e1e1713cSmrg	      deplibs="$deplib $deplibs"
2313e1e1713cSmrg	    else
2314e1e1713cSmrg	      compile_deplibs="$deplib $compile_deplibs"
2315e1e1713cSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
2316e1e1713cSmrg	    fi
2317e1e1713cSmrg	    continue
2318e1e1713cSmrg	    ;;
2319e1e1713cSmrg	  esac # linkmode
2320e1e1713cSmrg	  ;; # *.$libext
2321e1e1713cSmrg	*.lo | *.$objext)
2322e1e1713cSmrg	  if test "$pass" = conv; then
2323e1e1713cSmrg	    deplibs="$deplib $deplibs"
2324e1e1713cSmrg	  elif test "$linkmode" = prog; then
2325e1e1713cSmrg	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
2326e1e1713cSmrg	      # If there is no dlopen support or we're linking statically,
2327e1e1713cSmrg	      # we need to preload.
2328e1e1713cSmrg	      newdlprefiles="$newdlprefiles $deplib"
2329e1e1713cSmrg	      compile_deplibs="$deplib $compile_deplibs"
2330e1e1713cSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
2331e1e1713cSmrg	    else
2332e1e1713cSmrg	      newdlfiles="$newdlfiles $deplib"
2333e1e1713cSmrg	    fi
2334e1e1713cSmrg	  fi
2335e1e1713cSmrg	  continue
2336e1e1713cSmrg	  ;;
2337e1e1713cSmrg	%DEPLIBS%)
2338e1e1713cSmrg	  alldeplibs=yes
2339e1e1713cSmrg	  continue
2340e1e1713cSmrg	  ;;
2341e1e1713cSmrg	esac # case $deplib
2342e1e1713cSmrg	if test "$found" = yes || test -f "$lib"; then :
2343e1e1713cSmrg	else
2344e1e1713cSmrg	  $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
2345e1e1713cSmrg	  exit $EXIT_FAILURE
2346e1e1713cSmrg	fi
23477a84e134Smrg
2348e1e1713cSmrg	# Check to see that this really is a libtool archive.
2349e1e1713cSmrg	if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
2350e1e1713cSmrg	else
2351e1e1713cSmrg	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
2352e1e1713cSmrg	  exit $EXIT_FAILURE
2353e1e1713cSmrg	fi
23547a84e134Smrg
2355e1e1713cSmrg	ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
2356e1e1713cSmrg	test "X$ladir" = "X$lib" && ladir="."
23577a84e134Smrg
2358e1e1713cSmrg	dlname=
2359e1e1713cSmrg	dlopen=
2360e1e1713cSmrg	dlpreopen=
2361e1e1713cSmrg	libdir=
2362e1e1713cSmrg	library_names=
2363e1e1713cSmrg	old_library=
2364e1e1713cSmrg	# If the library was installed with an old release of libtool,
2365e1e1713cSmrg	# it will not redefine variables installed, or shouldnotlink
2366e1e1713cSmrg	installed=yes
2367e1e1713cSmrg	shouldnotlink=no
2368e1e1713cSmrg	avoidtemprpath=
23697a84e134Smrg
23707a84e134Smrg
2371e1e1713cSmrg	# Read the .la file
2372e1e1713cSmrg	case $lib in
2373e1e1713cSmrg	*/* | *\\*) . $lib ;;
2374e1e1713cSmrg	*) . ./$lib ;;
2375775e7de9Smrg	esac
23767a84e134Smrg
2377e1e1713cSmrg	if test "$linkmode,$pass" = "lib,link" ||
2378e1e1713cSmrg	   test "$linkmode,$pass" = "prog,scan" ||
2379e1e1713cSmrg	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
2380e1e1713cSmrg	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
2381e1e1713cSmrg	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
2382e1e1713cSmrg	fi
23837a84e134Smrg
2384e1e1713cSmrg	if test "$pass" = conv; then
2385e1e1713cSmrg	  # Only check for convenience libraries
2386e1e1713cSmrg	  deplibs="$lib $deplibs"
2387e1e1713cSmrg	  if test -z "$libdir"; then
2388e1e1713cSmrg	    if test -z "$old_library"; then
2389e1e1713cSmrg	      $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2390e1e1713cSmrg	      exit $EXIT_FAILURE
2391e1e1713cSmrg	    fi
2392e1e1713cSmrg	    # It is a libtool convenience library, so add in its objects.
2393e1e1713cSmrg	    convenience="$convenience $ladir/$objdir/$old_library"
2394e1e1713cSmrg	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
2395e1e1713cSmrg	    tmp_libs=
2396e1e1713cSmrg	    for deplib in $dependency_libs; do
2397e1e1713cSmrg	      deplibs="$deplib $deplibs"
2398e1e1713cSmrg              if test "X$duplicate_deps" = "Xyes" ; then
2399e1e1713cSmrg	        case "$tmp_libs " in
2400e1e1713cSmrg	        *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2401e1e1713cSmrg	        esac
2402e1e1713cSmrg              fi
2403e1e1713cSmrg	      tmp_libs="$tmp_libs $deplib"
2404e1e1713cSmrg	    done
2405e1e1713cSmrg	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
2406e1e1713cSmrg	    $echo "$modename: \`$lib' is not a convenience library" 1>&2
2407e1e1713cSmrg	    exit $EXIT_FAILURE
2408e1e1713cSmrg	  fi
2409e1e1713cSmrg	  continue
2410e1e1713cSmrg	fi # $pass = conv
24117a84e134Smrg
24127a84e134Smrg
2413e1e1713cSmrg	# Get the name of the library we link against.
2414e1e1713cSmrg	linklib=
2415e1e1713cSmrg	for l in $old_library $library_names; do
2416e1e1713cSmrg	  linklib="$l"
2417e1e1713cSmrg	done
2418e1e1713cSmrg	if test -z "$linklib"; then
2419e1e1713cSmrg	  $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2420e1e1713cSmrg	  exit $EXIT_FAILURE
24217a84e134Smrg	fi
24227a84e134Smrg
2423e1e1713cSmrg	# This library was specified with -dlopen.
2424e1e1713cSmrg	if test "$pass" = dlopen; then
2425e1e1713cSmrg	  if test -z "$libdir"; then
2426e1e1713cSmrg	    $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
2427e1e1713cSmrg	    exit $EXIT_FAILURE
2428e1e1713cSmrg	  fi
2429e1e1713cSmrg	  if test -z "$dlname" ||
2430e1e1713cSmrg	     test "$dlopen_support" != yes ||
2431e1e1713cSmrg	     test "$build_libtool_libs" = no; then
2432e1e1713cSmrg	    # If there is no dlname, no dlopen support or we're linking
2433e1e1713cSmrg	    # statically, we need to preload.  We also need to preload any
2434e1e1713cSmrg	    # dependent libraries so libltdl's deplib preloader doesn't
2435e1e1713cSmrg	    # bomb out in the load deplibs phase.
2436e1e1713cSmrg	    dlprefiles="$dlprefiles $lib $dependency_libs"
2437e1e1713cSmrg	  else
2438e1e1713cSmrg	    newdlfiles="$newdlfiles $lib"
2439e1e1713cSmrg	  fi
2440e1e1713cSmrg	  continue
2441e1e1713cSmrg	fi # $pass = dlopen
24427a84e134Smrg
2443e1e1713cSmrg	# We need an absolute path.
2444e1e1713cSmrg	case $ladir in
2445e1e1713cSmrg	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
2446e1e1713cSmrg	*)
2447e1e1713cSmrg	  abs_ladir=`cd "$ladir" && pwd`
2448e1e1713cSmrg	  if test -z "$abs_ladir"; then
2449e1e1713cSmrg	    $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
2450e1e1713cSmrg	    $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
2451e1e1713cSmrg	    abs_ladir="$ladir"
2452e1e1713cSmrg	  fi
2453e1e1713cSmrg	  ;;
2454e1e1713cSmrg	esac
2455e1e1713cSmrg	laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
24567a84e134Smrg
2457e1e1713cSmrg	# Find the relevant object directory and library name.
2458e1e1713cSmrg	if test "X$installed" = Xyes; then
2459e1e1713cSmrg	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
2460e1e1713cSmrg	    $echo "$modename: warning: library \`$lib' was moved." 1>&2
2461e1e1713cSmrg	    dir="$ladir"
2462e1e1713cSmrg	    absdir="$abs_ladir"
2463e1e1713cSmrg	    libdir="$abs_ladir"
2464e1e1713cSmrg	  else
2465e1e1713cSmrg	    dir="$libdir"
2466e1e1713cSmrg	    absdir="$libdir"
2467e1e1713cSmrg	  fi
2468e1e1713cSmrg	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
2469e1e1713cSmrg	else
2470e1e1713cSmrg	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
2471e1e1713cSmrg	    dir="$ladir"
2472e1e1713cSmrg	    absdir="$abs_ladir"
2473e1e1713cSmrg	    # Remove this search path later
2474e1e1713cSmrg	    notinst_path="$notinst_path $abs_ladir"
2475e1e1713cSmrg	  else
2476e1e1713cSmrg	    dir="$ladir/$objdir"
2477e1e1713cSmrg	    absdir="$abs_ladir/$objdir"
2478e1e1713cSmrg	    # Remove this search path later
2479e1e1713cSmrg	    notinst_path="$notinst_path $abs_ladir"
2480e1e1713cSmrg	  fi
2481e1e1713cSmrg	fi # $installed = yes
2482e1e1713cSmrg	name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
24837a84e134Smrg
2484e1e1713cSmrg	# This library was specified with -dlpreopen.
2485e1e1713cSmrg	if test "$pass" = dlpreopen; then
2486e1e1713cSmrg	  if test -z "$libdir"; then
2487e1e1713cSmrg	    $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
2488e1e1713cSmrg	    exit $EXIT_FAILURE
2489e1e1713cSmrg	  fi
2490e1e1713cSmrg	  # Prefer using a static library (so that no silly _DYNAMIC symbols
2491e1e1713cSmrg	  # are required to link).
2492e1e1713cSmrg	  if test -n "$old_library"; then
2493e1e1713cSmrg	    newdlprefiles="$newdlprefiles $dir/$old_library"
2494e1e1713cSmrg	  # Otherwise, use the dlname, so that lt_dlopen finds it.
2495e1e1713cSmrg	  elif test -n "$dlname"; then
2496e1e1713cSmrg	    newdlprefiles="$newdlprefiles $dir/$dlname"
2497e1e1713cSmrg	  else
2498e1e1713cSmrg	    newdlprefiles="$newdlprefiles $dir/$linklib"
2499e1e1713cSmrg	  fi
2500e1e1713cSmrg	fi # $pass = dlpreopen
25017a84e134Smrg
2502e1e1713cSmrg	if test -z "$libdir"; then
2503e1e1713cSmrg	  # Link the convenience library
2504e1e1713cSmrg	  if test "$linkmode" = lib; then
2505e1e1713cSmrg	    deplibs="$dir/$old_library $deplibs"
2506e1e1713cSmrg	  elif test "$linkmode,$pass" = "prog,link"; then
2507e1e1713cSmrg	    compile_deplibs="$dir/$old_library $compile_deplibs"
2508e1e1713cSmrg	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
2509e1e1713cSmrg	  else
2510e1e1713cSmrg	    deplibs="$lib $deplibs" # used for prog,scan pass
2511e1e1713cSmrg	  fi
2512e1e1713cSmrg	  continue
2513e1e1713cSmrg	fi
25147a84e134Smrg
25157a84e134Smrg
2516e1e1713cSmrg	if test "$linkmode" = prog && test "$pass" != link; then
2517e1e1713cSmrg	  newlib_search_path="$newlib_search_path $ladir"
2518e1e1713cSmrg	  deplibs="$lib $deplibs"
25197a84e134Smrg
2520e1e1713cSmrg	  linkalldeplibs=no
2521e1e1713cSmrg	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
2522e1e1713cSmrg	     test "$build_libtool_libs" = no; then
2523e1e1713cSmrg	    linkalldeplibs=yes
2524e1e1713cSmrg	  fi
25257a84e134Smrg
2526e1e1713cSmrg	  tmp_libs=
2527e1e1713cSmrg	  for deplib in $dependency_libs; do
2528e1e1713cSmrg	    case $deplib in
2529e1e1713cSmrg	    -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
2530e1e1713cSmrg	    esac
2531e1e1713cSmrg	    # Need to link against all dependency_libs?
2532e1e1713cSmrg	    if test "$linkalldeplibs" = yes; then
2533e1e1713cSmrg	      deplibs="$deplib $deplibs"
2534e1e1713cSmrg	    else
2535e1e1713cSmrg	      # Need to hardcode shared library paths
2536e1e1713cSmrg	      # or/and link against static libraries
2537e1e1713cSmrg	      newdependency_libs="$deplib $newdependency_libs"
2538e1e1713cSmrg	    fi
2539e1e1713cSmrg	    if test "X$duplicate_deps" = "Xyes" ; then
2540e1e1713cSmrg	      case "$tmp_libs " in
2541e1e1713cSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2542e1e1713cSmrg	      esac
2543e1e1713cSmrg	    fi
2544e1e1713cSmrg	    tmp_libs="$tmp_libs $deplib"
2545e1e1713cSmrg	  done # for deplib
2546e1e1713cSmrg	  continue
2547e1e1713cSmrg	fi # $linkmode = prog...
25487a84e134Smrg
2549e1e1713cSmrg	if test "$linkmode,$pass" = "prog,link"; then
2550e1e1713cSmrg	  if test -n "$library_names" &&
2551e1e1713cSmrg	     { { test "$prefer_static_libs" = no ||
2552e1e1713cSmrg		 test "$prefer_static_libs,$installed" = "built,yes"; } ||
2553e1e1713cSmrg	       test -z "$old_library"; }; then
2554e1e1713cSmrg	    # We need to hardcode the library path
2555e1e1713cSmrg	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
2556e1e1713cSmrg	      # Make sure the rpath contains only unique directories.
2557e1e1713cSmrg	      case "$temp_rpath " in
2558e1e1713cSmrg	      *" $dir "*) ;;
2559e1e1713cSmrg	      *" $absdir "*) ;;
2560e1e1713cSmrg	      *) temp_rpath="$temp_rpath $absdir" ;;
2561e1e1713cSmrg	      esac
2562e1e1713cSmrg	    fi
25637a84e134Smrg
2564e1e1713cSmrg	    # Hardcode the library path.
2565e1e1713cSmrg	    # Skip directories that are in the system default run-time
2566e1e1713cSmrg	    # search path.
2567e1e1713cSmrg	    case " $sys_lib_dlsearch_path " in
2568e1e1713cSmrg	    *" $absdir "*) ;;
2569e1e1713cSmrg	    *)
2570e1e1713cSmrg	      case "$compile_rpath " in
2571e1e1713cSmrg	      *" $absdir "*) ;;
2572e1e1713cSmrg	      *) compile_rpath="$compile_rpath $absdir"
2573e1e1713cSmrg	      esac
2574e1e1713cSmrg	      ;;
2575e1e1713cSmrg	    esac
2576e1e1713cSmrg	    case " $sys_lib_dlsearch_path " in
2577e1e1713cSmrg	    *" $libdir "*) ;;
2578e1e1713cSmrg	    *)
2579e1e1713cSmrg	      case "$finalize_rpath " in
2580e1e1713cSmrg	      *" $libdir "*) ;;
2581e1e1713cSmrg	      *) finalize_rpath="$finalize_rpath $libdir"
2582e1e1713cSmrg	      esac
2583e1e1713cSmrg	      ;;
2584e1e1713cSmrg	    esac
2585e1e1713cSmrg	  fi # $linkmode,$pass = prog,link...
2586775e7de9Smrg
2587e1e1713cSmrg	  if test "$alldeplibs" = yes &&
2588e1e1713cSmrg	     { test "$deplibs_check_method" = pass_all ||
2589e1e1713cSmrg	       { test "$build_libtool_libs" = yes &&
2590e1e1713cSmrg		 test -n "$library_names"; }; }; then
2591e1e1713cSmrg	    # We only need to search for static libraries
2592e1e1713cSmrg	    continue
2593e1e1713cSmrg	  fi
25947a84e134Smrg	fi
25957a84e134Smrg
2596e1e1713cSmrg	link_static=no # Whether the deplib will be linked statically
2597e1e1713cSmrg	use_static_libs=$prefer_static_libs
2598e1e1713cSmrg	if test "$use_static_libs" = built && test "$installed" = yes ; then
2599e1e1713cSmrg	  use_static_libs=no
2600e1e1713cSmrg	fi
2601e1e1713cSmrg	if test -n "$library_names" &&
2602e1e1713cSmrg	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
2603e1e1713cSmrg	  if test "$installed" = no; then
2604e1e1713cSmrg	    notinst_deplibs="$notinst_deplibs $lib"
2605e1e1713cSmrg	    need_relink=yes
2606e1e1713cSmrg	  fi
2607e1e1713cSmrg	  # This is a shared library
26087a84e134Smrg
2609e1e1713cSmrg	  # Warn about portability, can't link against -module's on
2610e1e1713cSmrg	  # some systems (darwin)
2611e1e1713cSmrg	  if test "$shouldnotlink" = yes && test "$pass" = link ; then
2612e1e1713cSmrg	    $echo
2613e1e1713cSmrg	    if test "$linkmode" = prog; then
2614e1e1713cSmrg	      $echo "*** Warning: Linking the executable $output against the loadable module"
2615e1e1713cSmrg	    else
2616e1e1713cSmrg	      $echo "*** Warning: Linking the shared library $output against the loadable module"
2617e1e1713cSmrg	    fi
2618e1e1713cSmrg	    $echo "*** $linklib is not portable!"
2619e1e1713cSmrg	  fi
2620e1e1713cSmrg	  if test "$linkmode" = lib &&
2621e1e1713cSmrg	     test "$hardcode_into_libs" = yes; then
2622e1e1713cSmrg	    # Hardcode the library path.
2623e1e1713cSmrg	    # Skip directories that are in the system default run-time
2624e1e1713cSmrg	    # search path.
2625e1e1713cSmrg	    case " $sys_lib_dlsearch_path " in
2626e1e1713cSmrg	    *" $absdir "*) ;;
2627e1e1713cSmrg	    *)
2628e1e1713cSmrg	      case "$compile_rpath " in
2629e1e1713cSmrg	      *" $absdir "*) ;;
2630e1e1713cSmrg	      *) compile_rpath="$compile_rpath $absdir"
2631e1e1713cSmrg	      esac
2632e1e1713cSmrg	      ;;
2633e1e1713cSmrg	    esac
2634e1e1713cSmrg	    case " $sys_lib_dlsearch_path " in
2635e1e1713cSmrg	    *" $libdir "*) ;;
2636e1e1713cSmrg	    *)
2637e1e1713cSmrg	      case "$finalize_rpath " in
2638e1e1713cSmrg	      *" $libdir "*) ;;
2639e1e1713cSmrg	      *) finalize_rpath="$finalize_rpath $libdir"
2640e1e1713cSmrg	      esac
2641e1e1713cSmrg	      ;;
2642e1e1713cSmrg	    esac
2643e1e1713cSmrg	  fi
2644775e7de9Smrg
2645e1e1713cSmrg	  if test -n "$old_archive_from_expsyms_cmds"; then
2646e1e1713cSmrg	    # figure out the soname
2647e1e1713cSmrg	    set dummy $library_names
2648e1e1713cSmrg	    realname="$2"
2649e1e1713cSmrg	    shift; shift
2650e1e1713cSmrg	    libname=`eval \\$echo \"$libname_spec\"`
2651e1e1713cSmrg	    # use dlname if we got it. it's perfectly good, no?
2652e1e1713cSmrg	    if test -n "$dlname"; then
2653e1e1713cSmrg	      soname="$dlname"
2654e1e1713cSmrg	    elif test -n "$soname_spec"; then
2655e1e1713cSmrg	      # bleh windows
2656e1e1713cSmrg	      case $host in
2657e1e1713cSmrg	      *cygwin* | mingw*)
2658e1e1713cSmrg		major=`expr $current - $age`
2659e1e1713cSmrg		versuffix="-$major"
2660e1e1713cSmrg		;;
2661e1e1713cSmrg	      esac
2662e1e1713cSmrg	      eval soname=\"$soname_spec\"
2663e1e1713cSmrg	    else
2664e1e1713cSmrg	      soname="$realname"
2665e1e1713cSmrg	    fi
2666775e7de9Smrg
2667e1e1713cSmrg	    # Make a new name for the extract_expsyms_cmds to use
2668e1e1713cSmrg	    soroot="$soname"
2669e1e1713cSmrg	    soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
2670e1e1713cSmrg	    newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
2671775e7de9Smrg
2672e1e1713cSmrg	    # If the library has no export list, then create one now
2673e1e1713cSmrg	    if test -f "$output_objdir/$soname-def"; then :
2674e1e1713cSmrg	    else
2675e1e1713cSmrg	      $show "extracting exported symbol list from \`$soname'"
2676e1e1713cSmrg	      save_ifs="$IFS"; IFS='~'
2677e1e1713cSmrg	      cmds=$extract_expsyms_cmds
2678e1e1713cSmrg	      for cmd in $cmds; do
2679e1e1713cSmrg		IFS="$save_ifs"
2680e1e1713cSmrg		eval cmd=\"$cmd\"
2681e1e1713cSmrg		$show "$cmd"
2682e1e1713cSmrg		$run eval "$cmd" || exit $?
2683e1e1713cSmrg	      done
2684e1e1713cSmrg	      IFS="$save_ifs"
2685e1e1713cSmrg	    fi
2686775e7de9Smrg
2687e1e1713cSmrg	    # Create $newlib
2688e1e1713cSmrg	    if test -f "$output_objdir/$newlib"; then :; else
2689e1e1713cSmrg	      $show "generating import library for \`$soname'"
2690e1e1713cSmrg	      save_ifs="$IFS"; IFS='~'
2691e1e1713cSmrg	      cmds=$old_archive_from_expsyms_cmds
2692e1e1713cSmrg	      for cmd in $cmds; do
2693e1e1713cSmrg		IFS="$save_ifs"
2694e1e1713cSmrg		eval cmd=\"$cmd\"
2695e1e1713cSmrg		$show "$cmd"
2696e1e1713cSmrg		$run eval "$cmd" || exit $?
2697e1e1713cSmrg	      done
2698e1e1713cSmrg	      IFS="$save_ifs"
2699e1e1713cSmrg	    fi
2700e1e1713cSmrg	    # make sure the library variables are pointing to the new library
2701e1e1713cSmrg	    dir=$output_objdir
2702e1e1713cSmrg	    linklib=$newlib
2703e1e1713cSmrg	  fi # test -n "$old_archive_from_expsyms_cmds"
27047a84e134Smrg
2705e1e1713cSmrg	  if test "$linkmode" = prog || test "$mode" != relink; then
2706e1e1713cSmrg	    add_shlibpath=
2707e1e1713cSmrg	    add_dir=
2708e1e1713cSmrg	    add=
2709e1e1713cSmrg	    lib_linked=yes
2710e1e1713cSmrg	    case $hardcode_action in
2711e1e1713cSmrg	    immediate | unsupported)
2712e1e1713cSmrg	      if test "$hardcode_direct" = no; then
2713e1e1713cSmrg		add="$dir/$linklib"
2714e1e1713cSmrg		case $host in
2715e1e1713cSmrg		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
2716e1e1713cSmrg		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
2717e1e1713cSmrg		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
2718e1e1713cSmrg		    *-*-unixware7*) add_dir="-L$dir" ;;
2719e1e1713cSmrg		  *-*-darwin* )
2720e1e1713cSmrg		    # if the lib is a module then we can not link against
2721e1e1713cSmrg		    # it, someone is ignoring the new warnings I added
2722e1e1713cSmrg		    if /usr/bin/file -L $add 2> /dev/null |
2723e1e1713cSmrg                      $EGREP ": [^:]* bundle" >/dev/null ; then
2724e1e1713cSmrg		      $echo "** Warning, lib $linklib is a module, not a shared library"
2725e1e1713cSmrg		      if test -z "$old_library" ; then
2726e1e1713cSmrg		        $echo
2727e1e1713cSmrg		        $echo "** And there doesn't seem to be a static archive available"
2728e1e1713cSmrg		        $echo "** The link will probably fail, sorry"
2729e1e1713cSmrg		      else
2730e1e1713cSmrg		        add="$dir/$old_library"
2731e1e1713cSmrg		      fi
2732e1e1713cSmrg		    fi
2733e1e1713cSmrg		esac
2734e1e1713cSmrg	      elif test "$hardcode_minus_L" = no; then
2735e1e1713cSmrg		case $host in
2736e1e1713cSmrg		*-*-sunos*) add_shlibpath="$dir" ;;
2737e1e1713cSmrg		esac
2738e1e1713cSmrg		add_dir="-L$dir"
2739e1e1713cSmrg		add="-l$name"
2740e1e1713cSmrg	      elif test "$hardcode_shlibpath_var" = no; then
2741e1e1713cSmrg		add_shlibpath="$dir"
2742e1e1713cSmrg		add="-l$name"
2743e1e1713cSmrg	      else
2744e1e1713cSmrg		lib_linked=no
2745e1e1713cSmrg	      fi
2746e1e1713cSmrg	      ;;
2747e1e1713cSmrg	    relink)
2748e1e1713cSmrg	      if test "$hardcode_direct" = yes; then
2749e1e1713cSmrg		add="$dir/$linklib"
2750e1e1713cSmrg	      elif test "$hardcode_minus_L" = yes; then
2751e1e1713cSmrg		add_dir="-L$dir"
2752e1e1713cSmrg		# Try looking first in the location we're being installed to.
2753e1e1713cSmrg		if test -n "$inst_prefix_dir"; then
2754e1e1713cSmrg		  case $libdir in
2755e1e1713cSmrg		    [\\/]*)
2756e1e1713cSmrg		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
2757e1e1713cSmrg		      ;;
2758e1e1713cSmrg		  esac
2759e1e1713cSmrg		fi
2760e1e1713cSmrg		add="-l$name"
2761e1e1713cSmrg	      elif test "$hardcode_shlibpath_var" = yes; then
2762e1e1713cSmrg		add_shlibpath="$dir"
2763e1e1713cSmrg		add="-l$name"
2764e1e1713cSmrg	      else
2765e1e1713cSmrg		lib_linked=no
2766e1e1713cSmrg	      fi
2767e1e1713cSmrg	      ;;
2768e1e1713cSmrg	    *) lib_linked=no ;;
2769e1e1713cSmrg	    esac
27707a84e134Smrg
2771e1e1713cSmrg	    if test "$lib_linked" != yes; then
2772e1e1713cSmrg	      $echo "$modename: configuration error: unsupported hardcode properties"
2773e1e1713cSmrg	      exit $EXIT_FAILURE
2774e1e1713cSmrg	    fi
27757a84e134Smrg
2776e1e1713cSmrg	    if test -n "$add_shlibpath"; then
2777e1e1713cSmrg	      case :$compile_shlibpath: in
2778e1e1713cSmrg	      *":$add_shlibpath:"*) ;;
2779e1e1713cSmrg	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
2780e1e1713cSmrg	      esac
2781e1e1713cSmrg	    fi
2782e1e1713cSmrg	    if test "$linkmode" = prog; then
2783e1e1713cSmrg	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
2784e1e1713cSmrg	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
2785e1e1713cSmrg	    else
2786e1e1713cSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
2787e1e1713cSmrg	      test -n "$add" && deplibs="$add $deplibs"
2788e1e1713cSmrg	      if test "$hardcode_direct" != yes && \
2789e1e1713cSmrg		 test "$hardcode_minus_L" != yes && \
2790e1e1713cSmrg		 test "$hardcode_shlibpath_var" = yes; then
2791e1e1713cSmrg		case :$finalize_shlibpath: in
2792e1e1713cSmrg		*":$libdir:"*) ;;
2793e1e1713cSmrg		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2794e1e1713cSmrg		esac
2795e1e1713cSmrg	      fi
2796e1e1713cSmrg	    fi
2797e1e1713cSmrg	  fi
27987a84e134Smrg
2799e1e1713cSmrg	  if test "$linkmode" = prog || test "$mode" = relink; then
2800e1e1713cSmrg	    add_shlibpath=
2801e1e1713cSmrg	    add_dir=
2802e1e1713cSmrg	    add=
2803e1e1713cSmrg	    # Finalize command for both is simple: just hardcode it.
2804e1e1713cSmrg	    if test "$hardcode_direct" = yes; then
2805e1e1713cSmrg	      add="$libdir/$linklib"
2806e1e1713cSmrg	    elif test "$hardcode_minus_L" = yes; then
2807e1e1713cSmrg	      add_dir="-L$libdir"
2808e1e1713cSmrg	      add="-l$name"
2809e1e1713cSmrg	    elif test "$hardcode_shlibpath_var" = yes; then
2810e1e1713cSmrg	      case :$finalize_shlibpath: in
2811e1e1713cSmrg	      *":$libdir:"*) ;;
2812e1e1713cSmrg	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2813e1e1713cSmrg	      esac
2814e1e1713cSmrg	      add="-l$name"
2815e1e1713cSmrg	    elif test "$hardcode_automatic" = yes; then
2816e1e1713cSmrg	      if test -n "$inst_prefix_dir" &&
2817e1e1713cSmrg		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
2818e1e1713cSmrg	        add="$inst_prefix_dir$libdir/$linklib"
2819e1e1713cSmrg	      else
2820e1e1713cSmrg	        add="$libdir/$linklib"
2821e1e1713cSmrg	      fi
2822e1e1713cSmrg	    else
2823e1e1713cSmrg	      # We cannot seem to hardcode it, guess we'll fake it.
2824e1e1713cSmrg	      add_dir="-L$libdir"
2825e1e1713cSmrg	      # Try looking first in the location we're being installed to.
2826e1e1713cSmrg	      if test -n "$inst_prefix_dir"; then
2827e1e1713cSmrg		case $libdir in
2828e1e1713cSmrg		  [\\/]*)
2829e1e1713cSmrg		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
2830e1e1713cSmrg		    ;;
2831e1e1713cSmrg		esac
2832e1e1713cSmrg	      fi
2833e1e1713cSmrg	      add="-l$name"
2834e1e1713cSmrg	    fi
28357a84e134Smrg
2836e1e1713cSmrg	    if test "$linkmode" = prog; then
2837e1e1713cSmrg	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
2838e1e1713cSmrg	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
2839e1e1713cSmrg	    else
2840e1e1713cSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
2841e1e1713cSmrg	      test -n "$add" && deplibs="$add $deplibs"
2842e1e1713cSmrg	    fi
2843e1e1713cSmrg	  fi
2844e1e1713cSmrg	elif test "$linkmode" = prog; then
2845e1e1713cSmrg	  # Here we assume that one of hardcode_direct or hardcode_minus_L
2846e1e1713cSmrg	  # is not unsupported.  This is valid on all known static and
2847e1e1713cSmrg	  # shared platforms.
2848e1e1713cSmrg	  if test "$hardcode_direct" != unsupported; then
2849e1e1713cSmrg	    test -n "$old_library" && linklib="$old_library"
2850e1e1713cSmrg	    compile_deplibs="$dir/$linklib $compile_deplibs"
2851e1e1713cSmrg	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
2852e1e1713cSmrg	  else
2853e1e1713cSmrg	    compile_deplibs="-l$name -L$dir $compile_deplibs"
2854e1e1713cSmrg	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
2855e1e1713cSmrg	  fi
2856e1e1713cSmrg	elif test "$build_libtool_libs" = yes; then
2857e1e1713cSmrg	  # Not a shared library
2858e1e1713cSmrg	  if test "$deplibs_check_method" != pass_all; then
2859e1e1713cSmrg	    # We're trying link a shared library against a static one
2860e1e1713cSmrg	    # but the system doesn't support it.
2861775e7de9Smrg
2862e1e1713cSmrg	    # Just print a warning and add the library to dependency_libs so
2863e1e1713cSmrg	    # that the program can be linked against the static library.
2864e1e1713cSmrg	    $echo
2865e1e1713cSmrg	    $echo "*** Warning: This system can not link to static lib archive $lib."
2866e1e1713cSmrg	    $echo "*** I have the capability to make that library automatically link in when"
2867e1e1713cSmrg	    $echo "*** you link to this library.  But I can only do this if you have a"
2868e1e1713cSmrg	    $echo "*** shared version of the library, which you do not appear to have."
2869e1e1713cSmrg	    if test "$module" = yes; then
2870e1e1713cSmrg	      $echo "*** But as you try to build a module library, libtool will still create "
2871e1e1713cSmrg	      $echo "*** a static module, that should work as long as the dlopening application"
2872e1e1713cSmrg	      $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
2873e1e1713cSmrg	      if test -z "$global_symbol_pipe"; then
2874e1e1713cSmrg		$echo
2875e1e1713cSmrg		$echo "*** However, this would only work if libtool was able to extract symbol"
2876e1e1713cSmrg		$echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
2877e1e1713cSmrg		$echo "*** not find such a program.  So, this module is probably useless."
2878e1e1713cSmrg		$echo "*** \`nm' from GNU binutils and a full rebuild may help."
2879e1e1713cSmrg	      fi
2880e1e1713cSmrg	      if test "$build_old_libs" = no; then
2881e1e1713cSmrg		build_libtool_libs=module
2882e1e1713cSmrg		build_old_libs=yes
2883e1e1713cSmrg	      else
2884e1e1713cSmrg		build_libtool_libs=no
2885e1e1713cSmrg	      fi
2886e1e1713cSmrg	    fi
2887e1e1713cSmrg	  else
2888e1e1713cSmrg	    deplibs="$dir/$old_library $deplibs"
2889e1e1713cSmrg	    link_static=yes
2890e1e1713cSmrg	  fi
2891e1e1713cSmrg	fi # link shared/static library?
28927a84e134Smrg
2893e1e1713cSmrg	if test "$linkmode" = lib; then
2894e1e1713cSmrg	  if test -n "$dependency_libs" &&
2895e1e1713cSmrg	     { test "$hardcode_into_libs" != yes ||
2896e1e1713cSmrg	       test "$build_old_libs" = yes ||
2897e1e1713cSmrg	       test "$link_static" = yes; }; then
2898e1e1713cSmrg	    # Extract -R from dependency_libs
2899e1e1713cSmrg	    temp_deplibs=
2900e1e1713cSmrg	    for libdir in $dependency_libs; do
2901e1e1713cSmrg	      case $libdir in
2902e1e1713cSmrg	      -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
2903e1e1713cSmrg		   case " $xrpath " in
2904e1e1713cSmrg		   *" $temp_xrpath "*) ;;
2905e1e1713cSmrg		   *) xrpath="$xrpath $temp_xrpath";;
2906e1e1713cSmrg		   esac;;
2907e1e1713cSmrg	      *) temp_deplibs="$temp_deplibs $libdir";;
2908e1e1713cSmrg	      esac
2909e1e1713cSmrg	    done
2910e1e1713cSmrg	    dependency_libs="$temp_deplibs"
2911e1e1713cSmrg	  fi
29127a84e134Smrg
2913e1e1713cSmrg	  newlib_search_path="$newlib_search_path $absdir"
2914e1e1713cSmrg	  # Link against this library
2915e1e1713cSmrg	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
2916e1e1713cSmrg	  # ... and its dependency_libs
2917e1e1713cSmrg	  tmp_libs=
2918e1e1713cSmrg	  for deplib in $dependency_libs; do
2919e1e1713cSmrg	    newdependency_libs="$deplib $newdependency_libs"
2920e1e1713cSmrg	    if test "X$duplicate_deps" = "Xyes" ; then
2921e1e1713cSmrg	      case "$tmp_libs " in
2922e1e1713cSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2923e1e1713cSmrg	      esac
2924e1e1713cSmrg	    fi
2925e1e1713cSmrg	    tmp_libs="$tmp_libs $deplib"
2926e1e1713cSmrg	  done
29277a84e134Smrg
2928e1e1713cSmrg	  if test "$link_all_deplibs" != no; then
2929e1e1713cSmrg	    # Add the search paths of all dependency libraries
2930e1e1713cSmrg	    for deplib in $dependency_libs; do
2931e1e1713cSmrg	      case $deplib in
2932e1e1713cSmrg	      -L*) path="$deplib" ;;
2933e1e1713cSmrg	      *.la)
2934e1e1713cSmrg		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
2935e1e1713cSmrg		test "X$dir" = "X$deplib" && dir="."
2936e1e1713cSmrg		# We need an absolute path.
2937e1e1713cSmrg		case $dir in
2938e1e1713cSmrg		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
2939e1e1713cSmrg		*)
2940e1e1713cSmrg		  absdir=`cd "$dir" && pwd`
2941e1e1713cSmrg		  if test -z "$absdir"; then
2942e1e1713cSmrg		    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
2943e1e1713cSmrg		    absdir="$dir"
2944e1e1713cSmrg		  fi
2945e1e1713cSmrg		  ;;
2946e1e1713cSmrg		esac
2947e1e1713cSmrg		if grep "^installed=no" $deplib > /dev/null; then
2948e1e1713cSmrg		  path="$absdir/$objdir"
2949e1e1713cSmrg		else
2950e1e1713cSmrg		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
2951e1e1713cSmrg		  if test -z "$libdir"; then
2952e1e1713cSmrg		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
2953e1e1713cSmrg		    exit $EXIT_FAILURE
2954e1e1713cSmrg		  fi
2955e1e1713cSmrg		  if test "$absdir" != "$libdir"; then
2956e1e1713cSmrg		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
2957e1e1713cSmrg		  fi
2958e1e1713cSmrg		  path="$absdir"
2959e1e1713cSmrg		fi
2960e1e1713cSmrg		depdepl=
2961e1e1713cSmrg		case $host in
2962e1e1713cSmrg		*-*-darwin*)
2963e1e1713cSmrg		  # we do not want to link against static libs,
2964e1e1713cSmrg		  # but need to link against shared
2965e1e1713cSmrg		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
2966e1e1713cSmrg		  eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
2967e1e1713cSmrg		  if test -n "$deplibrary_names" ; then
2968e1e1713cSmrg		    for tmp in $deplibrary_names ; do
2969e1e1713cSmrg		      depdepl=$tmp
2970e1e1713cSmrg		    done
2971e1e1713cSmrg		    if test -f "$deplibdir/$depdepl" ; then
2972e1e1713cSmrg		      depdepl="$deplibdir/$depdepl"
2973e1e1713cSmrg	      	    elif test -f "$path/$depdepl" ; then
2974e1e1713cSmrg		      depdepl="$path/$depdepl"
2975e1e1713cSmrg		    else
2976e1e1713cSmrg		      # Can't find it, oh well...
2977e1e1713cSmrg		      depdepl=
2978e1e1713cSmrg		    fi
2979e1e1713cSmrg		    # do not add paths which are already there
2980e1e1713cSmrg		    case " $newlib_search_path " in
2981e1e1713cSmrg		    *" $path "*) ;;
2982e1e1713cSmrg		    *) newlib_search_path="$newlib_search_path $path";;
2983e1e1713cSmrg		    esac
2984e1e1713cSmrg		  fi
2985e1e1713cSmrg		  path=""
2986e1e1713cSmrg		  ;;
2987e1e1713cSmrg		*)
2988e1e1713cSmrg		  path="-L$path"
2989e1e1713cSmrg		  ;;
2990e1e1713cSmrg		esac
2991e1e1713cSmrg		;;
2992e1e1713cSmrg	      -l*)
2993e1e1713cSmrg		case $host in
2994e1e1713cSmrg		*-*-darwin*)
2995e1e1713cSmrg		  # Again, we only want to link against shared libraries
2996e1e1713cSmrg		  eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
2997e1e1713cSmrg		  for tmp in $newlib_search_path ; do
2998e1e1713cSmrg		    if test -f "$tmp/lib$tmp_libs.dylib" ; then
2999e1e1713cSmrg		      eval depdepl="$tmp/lib$tmp_libs.dylib"
3000e1e1713cSmrg		      break
3001e1e1713cSmrg		    fi
3002e1e1713cSmrg		  done
3003e1e1713cSmrg		  path=""
3004e1e1713cSmrg		  ;;
3005e1e1713cSmrg		*) continue ;;
3006e1e1713cSmrg		esac
3007e1e1713cSmrg		;;
3008e1e1713cSmrg	      *) continue ;;
3009e1e1713cSmrg	      esac
3010e1e1713cSmrg	      case " $deplibs " in
3011e1e1713cSmrg	      *" $path "*) ;;
3012e1e1713cSmrg	      *) deplibs="$path $deplibs" ;;
3013e1e1713cSmrg	      esac
3014e1e1713cSmrg	      case " $deplibs " in
3015e1e1713cSmrg	      *" $depdepl "*) ;;
3016e1e1713cSmrg	      *) deplibs="$depdepl $deplibs" ;;
3017e1e1713cSmrg	      esac
3018e1e1713cSmrg	    done
3019e1e1713cSmrg	  fi # link_all_deplibs != no
3020e1e1713cSmrg	fi # linkmode = lib
3021e1e1713cSmrg      done # for deplib in $libs
3022e1e1713cSmrg      dependency_libs="$newdependency_libs"
3023e1e1713cSmrg      if test "$pass" = dlpreopen; then
3024e1e1713cSmrg	# Link the dlpreopened libraries before other libraries
3025e1e1713cSmrg	for deplib in $save_deplibs; do
3026e1e1713cSmrg	  deplibs="$deplib $deplibs"
3027e1e1713cSmrg	done
3028e1e1713cSmrg      fi
3029e1e1713cSmrg      if test "$pass" != dlopen; then
3030e1e1713cSmrg	if test "$pass" != conv; then
3031e1e1713cSmrg	  # Make sure lib_search_path contains only unique directories.
3032e1e1713cSmrg	  lib_search_path=
3033e1e1713cSmrg	  for dir in $newlib_search_path; do
3034e1e1713cSmrg	    case "$lib_search_path " in
3035e1e1713cSmrg	    *" $dir "*) ;;
3036e1e1713cSmrg	    *) lib_search_path="$lib_search_path $dir" ;;
3037e1e1713cSmrg	    esac
3038e1e1713cSmrg	  done
3039e1e1713cSmrg	  newlib_search_path=
3040e1e1713cSmrg	fi
3041e1e1713cSmrg
3042e1e1713cSmrg	if test "$linkmode,$pass" != "prog,link"; then
3043e1e1713cSmrg	  vars="deplibs"
3044e1e1713cSmrg	else
3045e1e1713cSmrg	  vars="compile_deplibs finalize_deplibs"
3046e1e1713cSmrg	fi
3047e1e1713cSmrg	for var in $vars dependency_libs; do
3048e1e1713cSmrg	  # Add libraries to $var in reverse order
3049e1e1713cSmrg	  eval tmp_libs=\"\$$var\"
3050e1e1713cSmrg	  new_libs=
3051e1e1713cSmrg	  for deplib in $tmp_libs; do
3052e1e1713cSmrg	    # FIXME: Pedantically, this is the right thing to do, so
3053e1e1713cSmrg	    #        that some nasty dependency loop isn't accidentally
3054e1e1713cSmrg	    #        broken:
3055e1e1713cSmrg	    #new_libs="$deplib $new_libs"
3056e1e1713cSmrg	    # Pragmatically, this seems to cause very few problems in
3057e1e1713cSmrg	    # practice:
3058e1e1713cSmrg	    case $deplib in
3059e1e1713cSmrg	    -L*) new_libs="$deplib $new_libs" ;;
3060e1e1713cSmrg	    -R*) ;;
3061e1e1713cSmrg	    *)
3062e1e1713cSmrg	      # And here is the reason: when a library appears more
3063e1e1713cSmrg	      # than once as an explicit dependence of a library, or
3064e1e1713cSmrg	      # is implicitly linked in more than once by the
3065e1e1713cSmrg	      # compiler, it is considered special, and multiple
3066e1e1713cSmrg	      # occurrences thereof are not removed.  Compare this
3067e1e1713cSmrg	      # with having the same library being listed as a
3068e1e1713cSmrg	      # dependency of multiple other libraries: in this case,
3069e1e1713cSmrg	      # we know (pedantically, we assume) the library does not
3070e1e1713cSmrg	      # need to be listed more than once, so we keep only the
3071e1e1713cSmrg	      # last copy.  This is not always right, but it is rare
3072e1e1713cSmrg	      # enough that we require users that really mean to play
3073e1e1713cSmrg	      # such unportable linking tricks to link the library
3074e1e1713cSmrg	      # using -Wl,-lname, so that libtool does not consider it
3075e1e1713cSmrg	      # for duplicate removal.
3076e1e1713cSmrg	      case " $specialdeplibs " in
3077e1e1713cSmrg	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
3078e1e1713cSmrg	      *)
3079e1e1713cSmrg		case " $new_libs " in
3080e1e1713cSmrg		*" $deplib "*) ;;
3081e1e1713cSmrg		*) new_libs="$deplib $new_libs" ;;
3082e1e1713cSmrg		esac
3083e1e1713cSmrg		;;
3084e1e1713cSmrg	      esac
3085e1e1713cSmrg	      ;;
3086e1e1713cSmrg	    esac
3087e1e1713cSmrg	  done
3088e1e1713cSmrg	  tmp_libs=
3089e1e1713cSmrg	  for deplib in $new_libs; do
3090e1e1713cSmrg	    case $deplib in
3091e1e1713cSmrg	    -L*)
3092e1e1713cSmrg	      case " $tmp_libs " in
3093e1e1713cSmrg	      *" $deplib "*) ;;
3094e1e1713cSmrg	      *) tmp_libs="$tmp_libs $deplib" ;;
3095e1e1713cSmrg	      esac
3096e1e1713cSmrg	      ;;
3097e1e1713cSmrg	    *) tmp_libs="$tmp_libs $deplib" ;;
3098e1e1713cSmrg	    esac
3099e1e1713cSmrg	  done
3100e1e1713cSmrg	  eval $var=\"$tmp_libs\"
3101e1e1713cSmrg	done # for var
3102e1e1713cSmrg      fi
3103e1e1713cSmrg      # Last step: remove runtime libs from dependency_libs
3104e1e1713cSmrg      # (they stay in deplibs)
3105e1e1713cSmrg      tmp_libs=
3106e1e1713cSmrg      for i in $dependency_libs ; do
3107e1e1713cSmrg	case " $predeps $postdeps $compiler_lib_search_path " in
3108e1e1713cSmrg	*" $i "*)
3109e1e1713cSmrg	  i=""
31107a84e134Smrg	  ;;
31117a84e134Smrg	esac
3112e1e1713cSmrg	if test -n "$i" ; then
3113e1e1713cSmrg	  tmp_libs="$tmp_libs $i"
3114e1e1713cSmrg	fi
3115e1e1713cSmrg      done
3116e1e1713cSmrg      dependency_libs=$tmp_libs
3117e1e1713cSmrg    done # for pass
3118e1e1713cSmrg    if test "$linkmode" = prog; then
3119e1e1713cSmrg      dlfiles="$newdlfiles"
3120e1e1713cSmrg      dlprefiles="$newdlprefiles"
3121775e7de9Smrg    fi
31227a84e134Smrg
3123e1e1713cSmrg    case $linkmode in
3124e1e1713cSmrg    oldlib)
3125e1e1713cSmrg      case " $deplibs" in
3126e1e1713cSmrg      *\ -l* | *\ -L*)
3127e1e1713cSmrg	$echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;;
3128e1e1713cSmrg      esac
31297a84e134Smrg
3130e1e1713cSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3131e1e1713cSmrg	$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
3132e1e1713cSmrg      fi
31337a84e134Smrg
3134e1e1713cSmrg      if test -n "$rpath"; then
3135e1e1713cSmrg	$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
3136e1e1713cSmrg      fi
31377a84e134Smrg
3138e1e1713cSmrg      if test -n "$xrpath"; then
3139e1e1713cSmrg	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
3140e1e1713cSmrg      fi
31417a84e134Smrg
3142e1e1713cSmrg      if test -n "$vinfo"; then
3143e1e1713cSmrg	$echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
3144e1e1713cSmrg      fi
31457a84e134Smrg
3146e1e1713cSmrg      if test -n "$release"; then
3147e1e1713cSmrg	$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
3148e1e1713cSmrg      fi
31497a84e134Smrg
3150e1e1713cSmrg      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
3151e1e1713cSmrg	$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
3152e1e1713cSmrg      fi
31537a84e134Smrg
3154e1e1713cSmrg      # Now set the variables for building old libraries.
3155e1e1713cSmrg      build_libtool_libs=no
3156e1e1713cSmrg      oldlibs="$output"
3157e1e1713cSmrg      objs="$objs$old_deplibs"
3158e1e1713cSmrg      ;;
31597a84e134Smrg
3160e1e1713cSmrg    lib)
3161e1e1713cSmrg      # Make sure we only generate libraries of the form `libNAME.la'.
3162e1e1713cSmrg      case $outputname in
3163e1e1713cSmrg      lib*)
3164e1e1713cSmrg	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
3165e1e1713cSmrg	eval shared_ext=\"$shrext_cmds\"
3166e1e1713cSmrg	eval libname=\"$libname_spec\"
3167e1e1713cSmrg	;;
3168e1e1713cSmrg      *)
3169e1e1713cSmrg	if test "$module" = no; then
3170e1e1713cSmrg	  $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
3171e1e1713cSmrg	  $echo "$help" 1>&2
3172e1e1713cSmrg	  exit $EXIT_FAILURE
3173e1e1713cSmrg	fi
3174e1e1713cSmrg	if test "$need_lib_prefix" != no; then
3175e1e1713cSmrg	  # Add the "lib" prefix for modules if required
3176e1e1713cSmrg	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
3177e1e1713cSmrg	  eval shared_ext=\"$shrext_cmds\"
3178e1e1713cSmrg	  eval libname=\"$libname_spec\"
3179e1e1713cSmrg	else
3180e1e1713cSmrg	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
3181e1e1713cSmrg	fi
3182e1e1713cSmrg	;;
3183e1e1713cSmrg      esac
31847a84e134Smrg
3185e1e1713cSmrg      if test -n "$objs"; then
3186e1e1713cSmrg	if test "$deplibs_check_method" != pass_all; then
3187e1e1713cSmrg	  $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
3188e1e1713cSmrg	  exit $EXIT_FAILURE
3189e1e1713cSmrg	else
3190e1e1713cSmrg	  $echo
3191e1e1713cSmrg	  $echo "*** Warning: Linking the shared library $output against the non-libtool"
3192e1e1713cSmrg	  $echo "*** objects $objs is not portable!"
3193e1e1713cSmrg	  libobjs="$libobjs $objs"
3194e1e1713cSmrg	fi
3195e1e1713cSmrg      fi
31967a84e134Smrg
3197e1e1713cSmrg      if test "$dlself" != no; then
3198e1e1713cSmrg	$echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
3199e1e1713cSmrg      fi
32007a84e134Smrg
3201e1e1713cSmrg      set dummy $rpath
3202e1e1713cSmrg      if test "$#" -gt 2; then
3203e1e1713cSmrg	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
3204e1e1713cSmrg      fi
3205e1e1713cSmrg      install_libdir="$2"
32067a84e134Smrg
3207e1e1713cSmrg      oldlibs=
3208e1e1713cSmrg      if test -z "$rpath"; then
3209e1e1713cSmrg	if test "$build_libtool_libs" = yes; then
3210e1e1713cSmrg	  # Building a libtool convenience library.
3211e1e1713cSmrg	  # Some compilers have problems with a `.al' extension so
3212e1e1713cSmrg	  # convenience libraries should have the same extension an
3213e1e1713cSmrg	  # archive normally would.
3214e1e1713cSmrg	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
3215e1e1713cSmrg	  build_libtool_libs=convenience
3216e1e1713cSmrg	  build_old_libs=yes
3217e1e1713cSmrg	fi
32187a84e134Smrg
3219e1e1713cSmrg	if test -n "$vinfo"; then
3220e1e1713cSmrg	  $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
3221e1e1713cSmrg	fi
32227a84e134Smrg
3223e1e1713cSmrg	if test -n "$release"; then
3224e1e1713cSmrg	  $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
3225e1e1713cSmrg	fi
3226e1e1713cSmrg      else
32277a84e134Smrg
3228e1e1713cSmrg	# Parse the version information argument.
3229e1e1713cSmrg	save_ifs="$IFS"; IFS=':'
3230e1e1713cSmrg	set dummy $vinfo 0 0 0
3231e1e1713cSmrg	IFS="$save_ifs"
32327a84e134Smrg
3233e1e1713cSmrg	if test -n "$8"; then
3234e1e1713cSmrg	  $echo "$modename: too many parameters to \`-version-info'" 1>&2
3235e1e1713cSmrg	  $echo "$help" 1>&2
3236e1e1713cSmrg	  exit $EXIT_FAILURE
3237e1e1713cSmrg	fi
32387a84e134Smrg
3239e1e1713cSmrg	# convert absolute version numbers to libtool ages
3240e1e1713cSmrg	# this retains compatibility with .la files and attempts
3241e1e1713cSmrg	# to make the code below a bit more comprehensible
32427a84e134Smrg
3243e1e1713cSmrg	case $vinfo_number in
3244e1e1713cSmrg	yes)
3245e1e1713cSmrg	  number_major="$2"
3246e1e1713cSmrg	  number_minor="$3"
3247e1e1713cSmrg	  number_revision="$4"
3248e1e1713cSmrg	  #
3249e1e1713cSmrg	  # There are really only two kinds -- those that
3250e1e1713cSmrg	  # use the current revision as the major version
3251e1e1713cSmrg	  # and those that subtract age and use age as
3252e1e1713cSmrg	  # a minor version.  But, then there is irix
3253e1e1713cSmrg	  # which has an extra 1 added just for fun
3254e1e1713cSmrg	  #
3255e1e1713cSmrg	  case $version_type in
3256e1e1713cSmrg	  darwin|linux|osf|windows|none)
3257e1e1713cSmrg	    current=`expr $number_major + $number_minor`
3258e1e1713cSmrg	    age="$number_minor"
3259e1e1713cSmrg	    revision="$number_revision"
3260e1e1713cSmrg	    ;;
3261e1e1713cSmrg	  freebsd-aout|freebsd-elf|sunos)
3262e1e1713cSmrg	    current="$number_major"
3263e1e1713cSmrg	    revision="$number_minor"
3264e1e1713cSmrg	    age="0"
3265e1e1713cSmrg	    ;;
3266e1e1713cSmrg	  irix|nonstopux)
3267e1e1713cSmrg	    current=`expr $number_major + $number_minor`
3268e1e1713cSmrg	    age="$number_minor"
3269e1e1713cSmrg	    revision="$number_minor"
3270e1e1713cSmrg	    lt_irix_increment=no
3271e1e1713cSmrg	    ;;
3272e1e1713cSmrg	  esac
3273e1e1713cSmrg	  ;;
3274e1e1713cSmrg	no)
3275e1e1713cSmrg	  current="$2"
3276e1e1713cSmrg	  revision="$3"
3277e1e1713cSmrg	  age="$4"
3278e1e1713cSmrg	  ;;
3279e1e1713cSmrg	esac
32807a84e134Smrg
3281e1e1713cSmrg	# Check that each of the things are valid numbers.
3282e1e1713cSmrg	case $current in
3283e1e1713cSmrg	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
3284e1e1713cSmrg	*)
3285e1e1713cSmrg	  $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
3286e1e1713cSmrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3287e1e1713cSmrg	  exit $EXIT_FAILURE
3288e1e1713cSmrg	  ;;
3289e1e1713cSmrg	esac
32907a84e134Smrg
3291e1e1713cSmrg	case $revision in
3292e1e1713cSmrg	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
3293e1e1713cSmrg	*)
3294e1e1713cSmrg	  $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
3295e1e1713cSmrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3296e1e1713cSmrg	  exit $EXIT_FAILURE
3297e1e1713cSmrg	  ;;
3298e1e1713cSmrg	esac
32997a84e134Smrg
3300e1e1713cSmrg	case $age in
3301e1e1713cSmrg	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
3302e1e1713cSmrg	*)
3303e1e1713cSmrg	  $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
3304e1e1713cSmrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3305e1e1713cSmrg	  exit $EXIT_FAILURE
3306e1e1713cSmrg	  ;;
3307e1e1713cSmrg	esac
33087a84e134Smrg
3309e1e1713cSmrg	if test "$age" -gt "$current"; then
3310e1e1713cSmrg	  $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
3311e1e1713cSmrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3312e1e1713cSmrg	  exit $EXIT_FAILURE
3313e1e1713cSmrg	fi
33147a84e134Smrg
3315e1e1713cSmrg	# Calculate the version variables.
3316e1e1713cSmrg	major=
3317e1e1713cSmrg	versuffix=
3318e1e1713cSmrg	verstring=
3319e1e1713cSmrg	case $version_type in
3320e1e1713cSmrg	none) ;;
33217a84e134Smrg
3322e1e1713cSmrg	darwin)
3323e1e1713cSmrg	  # Like Linux, but with the current version available in
3324e1e1713cSmrg	  # verstring for coding it into the library header
3325e1e1713cSmrg	  major=.`expr $current - $age`
3326e1e1713cSmrg	  versuffix="$major.$age.$revision"
3327e1e1713cSmrg	  # Darwin ld doesn't like 0 for these options...
3328e1e1713cSmrg	  minor_current=`expr $current + 1`
3329e1e1713cSmrg	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
3330e1e1713cSmrg	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
3331e1e1713cSmrg	  ;;
33327a84e134Smrg
3333e1e1713cSmrg	freebsd-aout)
3334e1e1713cSmrg	  major=".$current"
3335e1e1713cSmrg	  versuffix=".$current.$revision";
3336e1e1713cSmrg	  ;;
33377a84e134Smrg
3338e1e1713cSmrg	freebsd-elf)
3339e1e1713cSmrg	  major=".$current"
3340e1e1713cSmrg	  versuffix=".$current";
3341e1e1713cSmrg	  ;;
3342775e7de9Smrg
3343e1e1713cSmrg	irix | nonstopux)
3344e1e1713cSmrg	  if test "X$lt_irix_increment" = "Xno"; then
3345e1e1713cSmrg	    major=`expr $current - $age`
3346e1e1713cSmrg	  else
3347e1e1713cSmrg	    major=`expr $current - $age + 1`
3348e1e1713cSmrg	  fi
3349e1e1713cSmrg	  case $version_type in
3350e1e1713cSmrg	    nonstopux) verstring_prefix=nonstopux ;;
3351e1e1713cSmrg	    *)         verstring_prefix=sgi ;;
3352e1e1713cSmrg	  esac
3353e1e1713cSmrg	  verstring="$verstring_prefix$major.$revision"
33547a84e134Smrg
3355e1e1713cSmrg	  # Add in all the interfaces that we are compatible with.
3356e1e1713cSmrg	  loop=$revision
3357e1e1713cSmrg	  while test "$loop" -ne 0; do
3358e1e1713cSmrg	    iface=`expr $revision - $loop`
3359e1e1713cSmrg	    loop=`expr $loop - 1`
3360e1e1713cSmrg	    verstring="$verstring_prefix$major.$iface:$verstring"
3361e1e1713cSmrg	  done
33627a84e134Smrg
3363e1e1713cSmrg	  # Before this point, $major must not contain `.'.
3364e1e1713cSmrg	  major=.$major
3365e1e1713cSmrg	  versuffix="$major.$revision"
3366e1e1713cSmrg	  ;;
33677a84e134Smrg
3368e1e1713cSmrg	linux)
3369e1e1713cSmrg	  major=.`expr $current - $age`
3370e1e1713cSmrg	  versuffix="$major.$age.$revision"
3371e1e1713cSmrg	  ;;
33727a84e134Smrg
3373e1e1713cSmrg	osf)
3374e1e1713cSmrg	  major=.`expr $current - $age`
3375e1e1713cSmrg	  versuffix=".$current.$age.$revision"
3376e1e1713cSmrg	  verstring="$current.$age.$revision"
33777a84e134Smrg
3378e1e1713cSmrg	  # Add in all the interfaces that we are compatible with.
3379e1e1713cSmrg	  loop=$age
3380e1e1713cSmrg	  while test "$loop" -ne 0; do
3381e1e1713cSmrg	    iface=`expr $current - $loop`
3382e1e1713cSmrg	    loop=`expr $loop - 1`
3383e1e1713cSmrg	    verstring="$verstring:${iface}.0"
3384e1e1713cSmrg	  done
33857a84e134Smrg
3386e1e1713cSmrg	  # Make executables depend on our current version.
3387e1e1713cSmrg	  verstring="$verstring:${current}.0"
3388e1e1713cSmrg	  ;;
33897a84e134Smrg
3390e1e1713cSmrg	sunos)
3391e1e1713cSmrg	  major=".$current"
3392e1e1713cSmrg	  versuffix=".$current.$revision"
3393e1e1713cSmrg	  ;;
33947a84e134Smrg
3395e1e1713cSmrg	windows)
3396e1e1713cSmrg	  # Use '-' rather than '.', since we only want one
3397e1e1713cSmrg	  # extension on DOS 8.3 filesystems.
3398e1e1713cSmrg	  major=`expr $current - $age`
3399e1e1713cSmrg	  versuffix="-$major"
3400e1e1713cSmrg	  ;;
34017a84e134Smrg
3402e1e1713cSmrg	*)
3403e1e1713cSmrg	  $echo "$modename: unknown library version type \`$version_type'" 1>&2
3404e1e1713cSmrg	  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
3405e1e1713cSmrg	  exit $EXIT_FAILURE
3406e1e1713cSmrg	  ;;
3407e1e1713cSmrg	esac
34087a84e134Smrg
3409e1e1713cSmrg	# Clear the version info if we defaulted, and they specified a release.
3410e1e1713cSmrg	if test -z "$vinfo" && test -n "$release"; then
3411e1e1713cSmrg	  major=
3412e1e1713cSmrg	  case $version_type in
3413e1e1713cSmrg	  darwin)
3414e1e1713cSmrg	    # we can't check for "0.0" in archive_cmds due to quoting
3415e1e1713cSmrg	    # problems, so we reset it completely
3416e1e1713cSmrg	    verstring=
3417775e7de9Smrg	    ;;
3418e1e1713cSmrg	  *)
3419e1e1713cSmrg	    verstring="0.0"
3420e1e1713cSmrg	    ;;
3421e1e1713cSmrg	  esac
3422e1e1713cSmrg	  if test "$need_version" = no; then
3423e1e1713cSmrg	    versuffix=
3424e1e1713cSmrg	  else
3425e1e1713cSmrg	    versuffix=".0.0"
3426e1e1713cSmrg	  fi
3427e1e1713cSmrg	fi
34287a84e134Smrg
3429e1e1713cSmrg	# Remove version info from name if versioning should be avoided
3430e1e1713cSmrg	if test "$avoid_version" = yes && test "$need_version" = no; then
3431e1e1713cSmrg	  major=
3432e1e1713cSmrg	  versuffix=
3433e1e1713cSmrg	  verstring=""
3434e1e1713cSmrg	fi
34357a84e134Smrg
3436e1e1713cSmrg	# Check to see if the archive will have undefined symbols.
3437e1e1713cSmrg	if test "$allow_undefined" = yes; then
3438e1e1713cSmrg	  if test "$allow_undefined_flag" = unsupported; then
3439e1e1713cSmrg	    $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
3440e1e1713cSmrg	    build_libtool_libs=no
3441e1e1713cSmrg	    build_old_libs=yes
3442e1e1713cSmrg	  fi
3443e1e1713cSmrg	else
3444e1e1713cSmrg	  # Don't allow undefined symbols.
3445e1e1713cSmrg	  allow_undefined_flag="$no_undefined_flag"
3446e1e1713cSmrg	fi
3447e1e1713cSmrg      fi
34487a84e134Smrg
3449e1e1713cSmrg      if test "$mode" != relink; then
3450e1e1713cSmrg	# Remove our outputs, but don't remove object files since they
3451e1e1713cSmrg	# may have been created when compiling PIC objects.
3452e1e1713cSmrg	removelist=
3453e1e1713cSmrg	tempremovelist=`$echo "$output_objdir/*"`
3454e1e1713cSmrg	for p in $tempremovelist; do
3455e1e1713cSmrg	  case $p in
3456e1e1713cSmrg	    *.$objext)
3457e1e1713cSmrg	       ;;
3458e1e1713cSmrg	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
3459e1e1713cSmrg	       if test "X$precious_files_regex" != "X"; then
3460e1e1713cSmrg	         if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
3461e1e1713cSmrg	         then
3462e1e1713cSmrg		   continue
3463e1e1713cSmrg		 fi
3464e1e1713cSmrg	       fi
3465e1e1713cSmrg	       removelist="$removelist $p"
3466e1e1713cSmrg	       ;;
3467e1e1713cSmrg	    *) ;;
3468e1e1713cSmrg	  esac
3469e1e1713cSmrg	done
3470e1e1713cSmrg	if test -n "$removelist"; then
3471e1e1713cSmrg	  $show "${rm}r $removelist"
3472e1e1713cSmrg	  $run ${rm}r $removelist
3473e1e1713cSmrg	fi
3474e1e1713cSmrg      fi
34757a84e134Smrg
3476e1e1713cSmrg      # Now set the variables for building old libraries.
3477e1e1713cSmrg      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
3478e1e1713cSmrg	oldlibs="$oldlibs $output_objdir/$libname.$libext"
34797a84e134Smrg
3480e1e1713cSmrg	# Transform .lo files to .o files.
3481e1e1713cSmrg	oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
3482e1e1713cSmrg      fi
34837a84e134Smrg
3484e1e1713cSmrg      # Eliminate all temporary directories.
3485e1e1713cSmrg      #for path in $notinst_path; do
3486e1e1713cSmrg      #	lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
3487e1e1713cSmrg      #	deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
3488e1e1713cSmrg      #	dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
3489e1e1713cSmrg      #done
34907a84e134Smrg
3491e1e1713cSmrg      if test -n "$xrpath"; then
3492e1e1713cSmrg	# If the user specified any rpath flags, then add them.
3493e1e1713cSmrg	temp_xrpath=
3494e1e1713cSmrg	for libdir in $xrpath; do
3495e1e1713cSmrg	  temp_xrpath="$temp_xrpath -R$libdir"
3496e1e1713cSmrg	  case "$finalize_rpath " in
3497e1e1713cSmrg	  *" $libdir "*) ;;
3498e1e1713cSmrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
3499e1e1713cSmrg	  esac
3500e1e1713cSmrg	done
3501e1e1713cSmrg	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
3502e1e1713cSmrg	  dependency_libs="$temp_xrpath $dependency_libs"
3503e1e1713cSmrg	fi
3504e1e1713cSmrg      fi
35057a84e134Smrg
3506e1e1713cSmrg      # Make sure dlfiles contains only unique files that won't be dlpreopened
3507e1e1713cSmrg      old_dlfiles="$dlfiles"
3508e1e1713cSmrg      dlfiles=
3509e1e1713cSmrg      for lib in $old_dlfiles; do
3510e1e1713cSmrg	case " $dlprefiles $dlfiles " in
3511e1e1713cSmrg	*" $lib "*) ;;
3512e1e1713cSmrg	*) dlfiles="$dlfiles $lib" ;;
3513e1e1713cSmrg	esac
3514e1e1713cSmrg      done
35157a84e134Smrg
3516e1e1713cSmrg      # Make sure dlprefiles contains only unique files
3517e1e1713cSmrg      old_dlprefiles="$dlprefiles"
3518e1e1713cSmrg      dlprefiles=
3519e1e1713cSmrg      for lib in $old_dlprefiles; do
3520e1e1713cSmrg	case "$dlprefiles " in
3521e1e1713cSmrg	*" $lib "*) ;;
3522e1e1713cSmrg	*) dlprefiles="$dlprefiles $lib" ;;
3523e1e1713cSmrg	esac
3524e1e1713cSmrg      done
35257a84e134Smrg
3526e1e1713cSmrg      if test "$build_libtool_libs" = yes; then
3527e1e1713cSmrg	if test -n "$rpath"; then
3528e1e1713cSmrg	  case $host in
3529e1e1713cSmrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
3530e1e1713cSmrg	    # these systems don't actually have a c library (as such)!
3531e1e1713cSmrg	    ;;
3532e1e1713cSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
3533e1e1713cSmrg	    # Rhapsody C library is in the System framework
3534e1e1713cSmrg	    deplibs="$deplibs -framework System"
3535e1e1713cSmrg	    ;;
3536e1e1713cSmrg	  *-*-netbsd*)
3537e1e1713cSmrg	    # Don't link with libc until the a.out ld.so is fixed.
3538e1e1713cSmrg	    ;;
3539e1e1713cSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
3540e1e1713cSmrg	    # Do not include libc due to us having libc/libc_r.
3541e1e1713cSmrg	    ;;
3542e1e1713cSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
3543e1e1713cSmrg	    # Causes problems with __ctype
3544e1e1713cSmrg	    ;;
3545e1e1713cSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
3546e1e1713cSmrg	    # Compiler inserts libc in the correct place for threads to work
3547e1e1713cSmrg	    ;;
3548e1e1713cSmrg 	  *)
3549e1e1713cSmrg	    # Add libc to deplibs on all other systems if necessary.
3550e1e1713cSmrg	    if test "$build_libtool_need_lc" = "yes"; then
3551e1e1713cSmrg	      deplibs="$deplibs -lc"
3552e1e1713cSmrg	    fi
3553e1e1713cSmrg	    ;;
3554e1e1713cSmrg	  esac
3555e1e1713cSmrg	fi
35567a84e134Smrg
3557e1e1713cSmrg	# Transform deplibs into only deplibs that can be linked in shared.
3558e1e1713cSmrg	name_save=$name
3559e1e1713cSmrg	libname_save=$libname
3560e1e1713cSmrg	release_save=$release
3561e1e1713cSmrg	versuffix_save=$versuffix
3562e1e1713cSmrg	major_save=$major
3563e1e1713cSmrg	# I'm not sure if I'm treating the release correctly.  I think
3564e1e1713cSmrg	# release should show up in the -l (ie -lgmp5) so we don't want to
3565e1e1713cSmrg	# add it in twice.  Is that correct?
3566e1e1713cSmrg	release=""
3567e1e1713cSmrg	versuffix=""
3568e1e1713cSmrg	major=""
3569e1e1713cSmrg	newdeplibs=
3570e1e1713cSmrg	droppeddeps=no
3571e1e1713cSmrg	case $deplibs_check_method in
3572e1e1713cSmrg	pass_all)
3573e1e1713cSmrg	  # Don't check for shared/static.  Everything works.
3574e1e1713cSmrg	  # This might be a little naive.  We might want to check
3575e1e1713cSmrg	  # whether the library exists or not.  But this is on
3576e1e1713cSmrg	  # osf3 & osf4 and I'm not really sure... Just
3577e1e1713cSmrg	  # implementing what was already the behavior.
3578e1e1713cSmrg	  newdeplibs=$deplibs
3579e1e1713cSmrg	  ;;
3580e1e1713cSmrg	test_compile)
3581e1e1713cSmrg	  # This code stresses the "libraries are programs" paradigm to its
3582e1e1713cSmrg	  # limits. Maybe even breaks it.  We compile a program, linking it
3583e1e1713cSmrg	  # against the deplibs as a proxy for the library.  Then we can check
3584e1e1713cSmrg	  # whether they linked in statically or dynamically with ldd.
3585e1e1713cSmrg	  $rm conftest.c
3586e1e1713cSmrg	  cat > conftest.c <<EOF
3587e1e1713cSmrg	  int main() { return 0; }
3588e1e1713cSmrgEOF
3589e1e1713cSmrg	  $rm conftest
3590e1e1713cSmrg	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
3591e1e1713cSmrg	    ldd_output=`ldd conftest`
3592e1e1713cSmrg	    for i in $deplibs; do
3593e1e1713cSmrg	      name=`expr $i : '-l\(.*\)'`
3594e1e1713cSmrg	      # If $name is empty we are operating on a -L argument.
3595e1e1713cSmrg              if test "$name" != "" && test "$name" != "0"; then
3596e1e1713cSmrg		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3597e1e1713cSmrg		  case " $predeps $postdeps " in
3598e1e1713cSmrg		  *" $i "*)
3599e1e1713cSmrg		    newdeplibs="$newdeplibs $i"
3600e1e1713cSmrg		    i=""
3601e1e1713cSmrg		    ;;
3602e1e1713cSmrg		  esac
3603e1e1713cSmrg	        fi
3604e1e1713cSmrg		if test -n "$i" ; then
3605e1e1713cSmrg		  libname=`eval \\$echo \"$libname_spec\"`
3606e1e1713cSmrg		  deplib_matches=`eval \\$echo \"$library_names_spec\"`
3607e1e1713cSmrg		  set dummy $deplib_matches
3608e1e1713cSmrg		  deplib_match=$2
3609e1e1713cSmrg		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3610e1e1713cSmrg		    newdeplibs="$newdeplibs $i"
3611e1e1713cSmrg		  else
3612e1e1713cSmrg		    droppeddeps=yes
3613e1e1713cSmrg		    $echo
3614e1e1713cSmrg		    $echo "*** Warning: dynamic linker does not accept needed library $i."
3615e1e1713cSmrg		    $echo "*** I have the capability to make that library automatically link in when"
3616e1e1713cSmrg		    $echo "*** you link to this library.  But I can only do this if you have a"
3617e1e1713cSmrg		    $echo "*** shared version of the library, which I believe you do not have"
3618e1e1713cSmrg		    $echo "*** because a test_compile did reveal that the linker did not use it for"
3619e1e1713cSmrg		    $echo "*** its dynamic dependency list that programs get resolved with at runtime."
3620e1e1713cSmrg		  fi
3621e1e1713cSmrg		fi
3622e1e1713cSmrg	      else
3623e1e1713cSmrg		newdeplibs="$newdeplibs $i"
3624e1e1713cSmrg	      fi
3625e1e1713cSmrg	    done
3626e1e1713cSmrg	  else
3627e1e1713cSmrg	    # Error occurred in the first compile.  Let's try to salvage
3628e1e1713cSmrg	    # the situation: Compile a separate program for each library.
3629e1e1713cSmrg	    for i in $deplibs; do
3630e1e1713cSmrg	      name=`expr $i : '-l\(.*\)'`
3631e1e1713cSmrg	      # If $name is empty we are operating on a -L argument.
3632e1e1713cSmrg              if test "$name" != "" && test "$name" != "0"; then
3633e1e1713cSmrg		$rm conftest
3634e1e1713cSmrg		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
3635e1e1713cSmrg		  ldd_output=`ldd conftest`
3636e1e1713cSmrg		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3637e1e1713cSmrg		    case " $predeps $postdeps " in
3638e1e1713cSmrg		    *" $i "*)
3639e1e1713cSmrg		      newdeplibs="$newdeplibs $i"
3640e1e1713cSmrg		      i=""
3641e1e1713cSmrg		      ;;
3642e1e1713cSmrg		    esac
3643e1e1713cSmrg		  fi
3644e1e1713cSmrg		  if test -n "$i" ; then
3645e1e1713cSmrg		    libname=`eval \\$echo \"$libname_spec\"`
3646e1e1713cSmrg		    deplib_matches=`eval \\$echo \"$library_names_spec\"`
3647e1e1713cSmrg		    set dummy $deplib_matches
3648e1e1713cSmrg		    deplib_match=$2
3649e1e1713cSmrg		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3650e1e1713cSmrg		      newdeplibs="$newdeplibs $i"
3651e1e1713cSmrg		    else
3652e1e1713cSmrg		      droppeddeps=yes
3653e1e1713cSmrg		      $echo
3654e1e1713cSmrg		      $echo "*** Warning: dynamic linker does not accept needed library $i."
3655e1e1713cSmrg		      $echo "*** I have the capability to make that library automatically link in when"
3656e1e1713cSmrg		      $echo "*** you link to this library.  But I can only do this if you have a"
3657e1e1713cSmrg		      $echo "*** shared version of the library, which you do not appear to have"
3658e1e1713cSmrg		      $echo "*** because a test_compile did reveal that the linker did not use this one"
3659e1e1713cSmrg		      $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
3660e1e1713cSmrg		    fi
3661e1e1713cSmrg		  fi
3662e1e1713cSmrg		else
3663e1e1713cSmrg		  droppeddeps=yes
3664e1e1713cSmrg		  $echo
3665e1e1713cSmrg		  $echo "*** Warning!  Library $i is needed by this library but I was not able to"
3666e1e1713cSmrg		  $echo "*** make it link in!  You will probably need to install it or some"
3667e1e1713cSmrg		  $echo "*** library that it depends on before this library will be fully"
3668e1e1713cSmrg		  $echo "*** functional.  Installing it before continuing would be even better."
3669e1e1713cSmrg		fi
3670e1e1713cSmrg	      else
3671e1e1713cSmrg		newdeplibs="$newdeplibs $i"
3672e1e1713cSmrg	      fi
3673e1e1713cSmrg	    done
3674e1e1713cSmrg	  fi
3675e1e1713cSmrg	  ;;
3676e1e1713cSmrg	file_magic*)
3677e1e1713cSmrg	  set dummy $deplibs_check_method
3678e1e1713cSmrg	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3679e1e1713cSmrg	  for a_deplib in $deplibs; do
3680e1e1713cSmrg	    name=`expr $a_deplib : '-l\(.*\)'`
3681e1e1713cSmrg	    # If $name is empty we are operating on a -L argument.
3682e1e1713cSmrg            if test "$name" != "" && test  "$name" != "0"; then
3683e1e1713cSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3684e1e1713cSmrg		case " $predeps $postdeps " in
3685e1e1713cSmrg		*" $a_deplib "*)
3686e1e1713cSmrg		  newdeplibs="$newdeplibs $a_deplib"
3687e1e1713cSmrg		  a_deplib=""
3688e1e1713cSmrg		  ;;
3689e1e1713cSmrg		esac
3690e1e1713cSmrg	      fi
3691e1e1713cSmrg	      if test -n "$a_deplib" ; then
3692e1e1713cSmrg		libname=`eval \\$echo \"$libname_spec\"`
3693e1e1713cSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3694e1e1713cSmrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3695e1e1713cSmrg		  for potent_lib in $potential_libs; do
3696e1e1713cSmrg		      # Follow soft links.
3697e1e1713cSmrg		      if ls -lLd "$potent_lib" 2>/dev/null \
3698e1e1713cSmrg			 | grep " -> " >/dev/null; then
3699e1e1713cSmrg			continue
3700e1e1713cSmrg		      fi
3701e1e1713cSmrg		      # The statement above tries to avoid entering an
3702e1e1713cSmrg		      # endless loop below, in case of cyclic links.
3703e1e1713cSmrg		      # We might still enter an endless loop, since a link
3704e1e1713cSmrg		      # loop can be closed while we follow links,
3705e1e1713cSmrg		      # but so what?
3706e1e1713cSmrg		      potlib="$potent_lib"
3707e1e1713cSmrg		      while test -h "$potlib" 2>/dev/null; do
3708e1e1713cSmrg			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
3709e1e1713cSmrg			case $potliblink in
3710e1e1713cSmrg			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
3711e1e1713cSmrg			*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
3712e1e1713cSmrg			esac
3713e1e1713cSmrg		      done
3714e1e1713cSmrg		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
3715e1e1713cSmrg			 | ${SED} 10q \
3716e1e1713cSmrg			 | $EGREP "$file_magic_regex" > /dev/null; then
3717e1e1713cSmrg			newdeplibs="$newdeplibs $a_deplib"
3718e1e1713cSmrg			a_deplib=""
3719e1e1713cSmrg			break 2
3720e1e1713cSmrg		      fi
3721e1e1713cSmrg		  done
3722e1e1713cSmrg		done
3723e1e1713cSmrg	      fi
3724e1e1713cSmrg	      if test -n "$a_deplib" ; then
3725e1e1713cSmrg		droppeddeps=yes
3726e1e1713cSmrg		$echo
3727e1e1713cSmrg		$echo "*** Warning: linker path does not have real file for library $a_deplib."
3728e1e1713cSmrg		$echo "*** I have the capability to make that library automatically link in when"
3729e1e1713cSmrg		$echo "*** you link to this library.  But I can only do this if you have a"
3730e1e1713cSmrg		$echo "*** shared version of the library, which you do not appear to have"
3731e1e1713cSmrg		$echo "*** because I did check the linker path looking for a file starting"
3732e1e1713cSmrg		if test -z "$potlib" ; then
3733e1e1713cSmrg		  $echo "*** with $libname but no candidates were found. (...for file magic test)"
3734e1e1713cSmrg		else
3735e1e1713cSmrg		  $echo "*** with $libname and none of the candidates passed a file format test"
3736e1e1713cSmrg		  $echo "*** using a file magic. Last file checked: $potlib"
3737e1e1713cSmrg		fi
3738e1e1713cSmrg	      fi
3739e1e1713cSmrg	    else
3740e1e1713cSmrg	      # Add a -L argument.
3741e1e1713cSmrg	      newdeplibs="$newdeplibs $a_deplib"
3742e1e1713cSmrg	    fi
3743e1e1713cSmrg	  done # Gone through all deplibs.
3744e1e1713cSmrg	  ;;
3745e1e1713cSmrg	match_pattern*)
3746e1e1713cSmrg	  set dummy $deplibs_check_method
3747e1e1713cSmrg	  match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3748e1e1713cSmrg	  for a_deplib in $deplibs; do
3749e1e1713cSmrg	    name=`expr $a_deplib : '-l\(.*\)'`
3750e1e1713cSmrg	    # If $name is empty we are operating on a -L argument.
3751e1e1713cSmrg	    if test -n "$name" && test "$name" != "0"; then
3752e1e1713cSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3753e1e1713cSmrg		case " $predeps $postdeps " in
3754e1e1713cSmrg		*" $a_deplib "*)
3755e1e1713cSmrg		  newdeplibs="$newdeplibs $a_deplib"
3756e1e1713cSmrg		  a_deplib=""
3757e1e1713cSmrg		  ;;
3758e1e1713cSmrg		esac
3759e1e1713cSmrg	      fi
3760e1e1713cSmrg	      if test -n "$a_deplib" ; then
3761e1e1713cSmrg		libname=`eval \\$echo \"$libname_spec\"`
3762e1e1713cSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3763e1e1713cSmrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3764e1e1713cSmrg		  for potent_lib in $potential_libs; do
3765e1e1713cSmrg		    potlib="$potent_lib" # see symlink-check above in file_magic test
3766e1e1713cSmrg		    if eval $echo \"$potent_lib\" 2>/dev/null \
3767e1e1713cSmrg		        | ${SED} 10q \
3768e1e1713cSmrg		        | $EGREP "$match_pattern_regex" > /dev/null; then
3769e1e1713cSmrg		      newdeplibs="$newdeplibs $a_deplib"
3770e1e1713cSmrg		      a_deplib=""
3771e1e1713cSmrg		      break 2
3772e1e1713cSmrg		    fi
3773e1e1713cSmrg		  done
3774e1e1713cSmrg		done
3775e1e1713cSmrg	      fi
3776e1e1713cSmrg	      if test -n "$a_deplib" ; then
3777e1e1713cSmrg		droppeddeps=yes
3778e1e1713cSmrg		$echo
3779e1e1713cSmrg		$echo "*** Warning: linker path does not have real file for library $a_deplib."
3780e1e1713cSmrg		$echo "*** I have the capability to make that library automatically link in when"
3781e1e1713cSmrg		$echo "*** you link to this library.  But I can only do this if you have a"
3782e1e1713cSmrg		$echo "*** shared version of the library, which you do not appear to have"
3783e1e1713cSmrg		$echo "*** because I did check the linker path looking for a file starting"
3784e1e1713cSmrg		if test -z "$potlib" ; then
3785e1e1713cSmrg		  $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
3786e1e1713cSmrg		else
3787e1e1713cSmrg		  $echo "*** with $libname and none of the candidates passed a file format test"
3788e1e1713cSmrg		  $echo "*** using a regex pattern. Last file checked: $potlib"
3789e1e1713cSmrg		fi
3790e1e1713cSmrg	      fi
3791e1e1713cSmrg	    else
3792e1e1713cSmrg	      # Add a -L argument.
3793e1e1713cSmrg	      newdeplibs="$newdeplibs $a_deplib"
3794e1e1713cSmrg	    fi
3795e1e1713cSmrg	  done # Gone through all deplibs.
3796e1e1713cSmrg	  ;;
3797e1e1713cSmrg	none | unknown | *)
3798e1e1713cSmrg	  newdeplibs=""
3799e1e1713cSmrg	  tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
3800e1e1713cSmrg	    -e 's/ -[LR][^ ]*//g'`
3801e1e1713cSmrg	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3802e1e1713cSmrg	    for i in $predeps $postdeps ; do
3803e1e1713cSmrg	      # can't use Xsed below, because $i might contain '/'
3804e1e1713cSmrg	      tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
3805e1e1713cSmrg	    done
3806e1e1713cSmrg	  fi
3807e1e1713cSmrg	  if $echo "X $tmp_deplibs" | $Xsed -e 's/[ 	]//g' \
3808e1e1713cSmrg	    | grep . >/dev/null; then
3809e1e1713cSmrg	    $echo
3810e1e1713cSmrg	    if test "X$deplibs_check_method" = "Xnone"; then
3811e1e1713cSmrg	      $echo "*** Warning: inter-library dependencies are not supported in this platform."
3812e1e1713cSmrg	    else
3813e1e1713cSmrg	      $echo "*** Warning: inter-library dependencies are not known to be supported."
3814e1e1713cSmrg	    fi
3815e1e1713cSmrg	    $echo "*** All declared inter-library dependencies are being dropped."
3816e1e1713cSmrg	    droppeddeps=yes
3817e1e1713cSmrg	  fi
3818e1e1713cSmrg	  ;;
3819e1e1713cSmrg	esac
3820e1e1713cSmrg	versuffix=$versuffix_save
3821e1e1713cSmrg	major=$major_save
3822e1e1713cSmrg	release=$release_save
3823e1e1713cSmrg	libname=$libname_save
3824e1e1713cSmrg	name=$name_save
38257a84e134Smrg
3826e1e1713cSmrg	case $host in
3827e1e1713cSmrg	*-*-rhapsody* | *-*-darwin1.[012])
3828e1e1713cSmrg	  # On Rhapsody replace the C library is the System framework
3829e1e1713cSmrg	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
3830e1e1713cSmrg	  ;;
3831e1e1713cSmrg	esac
38327a84e134Smrg
3833e1e1713cSmrg	if test "$droppeddeps" = yes; then
3834e1e1713cSmrg	  if test "$module" = yes; then
3835e1e1713cSmrg	    $echo
3836e1e1713cSmrg	    $echo "*** Warning: libtool could not satisfy all declared inter-library"
3837e1e1713cSmrg	    $echo "*** dependencies of module $libname.  Therefore, libtool will create"
3838e1e1713cSmrg	    $echo "*** a static module, that should work as long as the dlopening"
3839e1e1713cSmrg	    $echo "*** application is linked with the -dlopen flag."
3840e1e1713cSmrg	    if test -z "$global_symbol_pipe"; then
3841e1e1713cSmrg	      $echo
3842e1e1713cSmrg	      $echo "*** However, this would only work if libtool was able to extract symbol"
3843e1e1713cSmrg	      $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
3844e1e1713cSmrg	      $echo "*** not find such a program.  So, this module is probably useless."
3845e1e1713cSmrg	      $echo "*** \`nm' from GNU binutils and a full rebuild may help."
3846e1e1713cSmrg	    fi
3847e1e1713cSmrg	    if test "$build_old_libs" = no; then
3848e1e1713cSmrg	      oldlibs="$output_objdir/$libname.$libext"
3849e1e1713cSmrg	      build_libtool_libs=module
3850e1e1713cSmrg	      build_old_libs=yes
3851e1e1713cSmrg	    else
3852e1e1713cSmrg	      build_libtool_libs=no
3853e1e1713cSmrg	    fi
3854e1e1713cSmrg	  else
3855e1e1713cSmrg	    $echo "*** The inter-library dependencies that have been dropped here will be"
3856e1e1713cSmrg	    $echo "*** automatically added whenever a program is linked with this library"
3857e1e1713cSmrg	    $echo "*** or is declared to -dlopen it."
38587a84e134Smrg
3859e1e1713cSmrg	    if test "$allow_undefined" = no; then
3860e1e1713cSmrg	      $echo
3861e1e1713cSmrg	      $echo "*** Since this library must not contain undefined symbols,"
3862e1e1713cSmrg	      $echo "*** because either the platform does not support them or"
3863e1e1713cSmrg	      $echo "*** it was explicitly requested with -no-undefined,"
3864e1e1713cSmrg	      $echo "*** libtool will only create a static version of it."
3865e1e1713cSmrg	      if test "$build_old_libs" = no; then
3866e1e1713cSmrg		oldlibs="$output_objdir/$libname.$libext"
3867e1e1713cSmrg		build_libtool_libs=module
3868e1e1713cSmrg		build_old_libs=yes
3869e1e1713cSmrg	      else
3870e1e1713cSmrg		build_libtool_libs=no
3871e1e1713cSmrg	      fi
3872e1e1713cSmrg	    fi
3873e1e1713cSmrg	  fi
3874e1e1713cSmrg	fi
3875e1e1713cSmrg	# Done checking deplibs!
3876e1e1713cSmrg	deplibs=$newdeplibs
3877e1e1713cSmrg      fi
38787a84e134Smrg
38797a84e134Smrg
3880e1e1713cSmrg      # move library search paths that coincide with paths to not yet
3881e1e1713cSmrg      # installed libraries to the beginning of the library search list
3882e1e1713cSmrg      new_libs=
3883e1e1713cSmrg      for path in $notinst_path; do
3884e1e1713cSmrg	case " $new_libs " in
3885e1e1713cSmrg	*" -L$path/$objdir "*) ;;
3886e1e1713cSmrg	*)
3887e1e1713cSmrg	  case " $deplibs " in
3888e1e1713cSmrg	  *" -L$path/$objdir "*)
3889e1e1713cSmrg	    new_libs="$new_libs -L$path/$objdir" ;;
3890e1e1713cSmrg	  esac
3891e1e1713cSmrg	  ;;
3892e1e1713cSmrg	esac
3893e1e1713cSmrg      done
3894e1e1713cSmrg      for deplib in $deplibs; do
3895e1e1713cSmrg	case $deplib in
3896e1e1713cSmrg	-L*)
3897e1e1713cSmrg	  case " $new_libs " in
3898e1e1713cSmrg	  *" $deplib "*) ;;
3899e1e1713cSmrg	  *) new_libs="$new_libs $deplib" ;;
3900e1e1713cSmrg	  esac
3901e1e1713cSmrg	  ;;
3902e1e1713cSmrg	*) new_libs="$new_libs $deplib" ;;
3903e1e1713cSmrg	esac
3904e1e1713cSmrg      done
3905e1e1713cSmrg      deplibs="$new_libs"
39067a84e134Smrg
39077a84e134Smrg
3908e1e1713cSmrg      # All the library-specific variables (install_libdir is set above).
3909e1e1713cSmrg      library_names=
3910e1e1713cSmrg      old_library=
3911e1e1713cSmrg      dlname=
39127a84e134Smrg
3913e1e1713cSmrg      # Test again, we may have decided not to build it any more
3914e1e1713cSmrg      if test "$build_libtool_libs" = yes; then
3915e1e1713cSmrg	if test "$hardcode_into_libs" = yes; then
3916e1e1713cSmrg	  # Hardcode the library paths
3917e1e1713cSmrg	  hardcode_libdirs=
3918e1e1713cSmrg	  dep_rpath=
3919e1e1713cSmrg	  rpath="$finalize_rpath"
3920e1e1713cSmrg	  test "$mode" != relink && rpath="$compile_rpath$rpath"
3921e1e1713cSmrg	  for libdir in $rpath; do
3922e1e1713cSmrg	    if test -n "$hardcode_libdir_flag_spec"; then
3923e1e1713cSmrg	      if test -n "$hardcode_libdir_separator"; then
3924e1e1713cSmrg		if test -z "$hardcode_libdirs"; then
3925e1e1713cSmrg		  hardcode_libdirs="$libdir"
3926e1e1713cSmrg		else
3927e1e1713cSmrg		  # Just accumulate the unique libdirs.
3928e1e1713cSmrg		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
3929e1e1713cSmrg		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
3930e1e1713cSmrg		    ;;
3931e1e1713cSmrg		  *)
3932e1e1713cSmrg		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
3933e1e1713cSmrg		    ;;
3934e1e1713cSmrg		  esac
3935e1e1713cSmrg		fi
3936e1e1713cSmrg	      else
3937e1e1713cSmrg		eval flag=\"$hardcode_libdir_flag_spec\"
3938e1e1713cSmrg		dep_rpath="$dep_rpath $flag"
3939e1e1713cSmrg	      fi
3940e1e1713cSmrg	    elif test -n "$runpath_var"; then
3941e1e1713cSmrg	      case "$perm_rpath " in
3942e1e1713cSmrg	      *" $libdir "*) ;;
3943e1e1713cSmrg	      *) perm_rpath="$perm_rpath $libdir" ;;
3944e1e1713cSmrg	      esac
3945e1e1713cSmrg	    fi
3946e1e1713cSmrg	  done
3947e1e1713cSmrg	  # Substitute the hardcoded libdirs into the rpath.
3948e1e1713cSmrg	  if test -n "$hardcode_libdir_separator" &&
3949e1e1713cSmrg	     test -n "$hardcode_libdirs"; then
3950e1e1713cSmrg	    libdir="$hardcode_libdirs"
3951e1e1713cSmrg	    if test -n "$hardcode_libdir_flag_spec_ld"; then
3952e1e1713cSmrg	      case $archive_cmds in
3953e1e1713cSmrg	      *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;;
3954e1e1713cSmrg	      *)      eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;;
3955e1e1713cSmrg	      esac
3956e1e1713cSmrg	    else
3957e1e1713cSmrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
3958e1e1713cSmrg	    fi
3959e1e1713cSmrg	  fi
3960e1e1713cSmrg	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
3961e1e1713cSmrg	    # We should set the runpath_var.
3962e1e1713cSmrg	    rpath=
3963e1e1713cSmrg	    for dir in $perm_rpath; do
3964e1e1713cSmrg	      rpath="$rpath$dir:"
3965e1e1713cSmrg	    done
3966e1e1713cSmrg	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
3967e1e1713cSmrg	  fi
3968e1e1713cSmrg	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
3969e1e1713cSmrg	fi
39707a84e134Smrg
3971e1e1713cSmrg	shlibpath="$finalize_shlibpath"
3972e1e1713cSmrg	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
3973e1e1713cSmrg	if test -n "$shlibpath"; then
3974e1e1713cSmrg	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
3975e1e1713cSmrg	fi
39767a84e134Smrg
3977e1e1713cSmrg	# Get the real and link names of the library.
3978e1e1713cSmrg	eval shared_ext=\"$shrext_cmds\"
3979e1e1713cSmrg	eval library_names=\"$library_names_spec\"
3980e1e1713cSmrg	set dummy $library_names
3981e1e1713cSmrg	realname="$2"
3982e1e1713cSmrg	shift; shift
39837a84e134Smrg
3984e1e1713cSmrg	if test -n "$soname_spec"; then
3985e1e1713cSmrg	  eval soname=\"$soname_spec\"
3986e1e1713cSmrg	else
3987e1e1713cSmrg	  soname="$realname"
3988e1e1713cSmrg	fi
3989e1e1713cSmrg	if test -z "$dlname"; then
3990e1e1713cSmrg	  dlname=$soname
3991e1e1713cSmrg	fi
39927a84e134Smrg
3993e1e1713cSmrg	lib="$output_objdir/$realname"
3994e1e1713cSmrg	linknames=
3995e1e1713cSmrg	for link
3996e1e1713cSmrg	do
3997e1e1713cSmrg	  linknames="$linknames $link"
3998e1e1713cSmrg	done
39997a84e134Smrg
4000e1e1713cSmrg	# Use standard objects if they are pic
4001e1e1713cSmrg	test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
40027a84e134Smrg
4003e1e1713cSmrg	# Prepare the list of exported symbols
4004e1e1713cSmrg	if test -z "$export_symbols"; then
4005e1e1713cSmrg	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
4006e1e1713cSmrg	    $show "generating symbol list for \`$libname.la'"
4007e1e1713cSmrg	    export_symbols="$output_objdir/$libname.exp"
4008e1e1713cSmrg	    $run $rm $export_symbols
4009e1e1713cSmrg	    cmds=$export_symbols_cmds
4010e1e1713cSmrg	    save_ifs="$IFS"; IFS='~'
4011e1e1713cSmrg	    for cmd in $cmds; do
4012e1e1713cSmrg	      IFS="$save_ifs"
4013e1e1713cSmrg	      eval cmd=\"$cmd\"
4014e1e1713cSmrg	      if len=`expr "X$cmd" : ".*"` &&
4015e1e1713cSmrg	       test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
4016e1e1713cSmrg	        $show "$cmd"
4017e1e1713cSmrg	        $run eval "$cmd" || exit $?
4018e1e1713cSmrg	        skipped_export=false
4019e1e1713cSmrg	      else
4020e1e1713cSmrg	        # The command line is too long to execute in one step.
4021e1e1713cSmrg	        $show "using reloadable object file for export list..."
4022e1e1713cSmrg	        skipped_export=:
4023e1e1713cSmrg		# Break out early, otherwise skipped_export may be
4024e1e1713cSmrg		# set to false by a later but shorter cmd.
4025e1e1713cSmrg		break
4026e1e1713cSmrg	      fi
4027e1e1713cSmrg	    done
4028e1e1713cSmrg	    IFS="$save_ifs"
4029e1e1713cSmrg	    if test -n "$export_symbols_regex"; then
4030e1e1713cSmrg	      $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
4031e1e1713cSmrg	      $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
4032e1e1713cSmrg	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
4033e1e1713cSmrg	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
4034e1e1713cSmrg	    fi
4035e1e1713cSmrg	  fi
4036e1e1713cSmrg	fi
40377a84e134Smrg
4038e1e1713cSmrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
4039e1e1713cSmrg	  $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
4040e1e1713cSmrg	fi
40417a84e134Smrg
4042e1e1713cSmrg	tmp_deplibs=
4043e1e1713cSmrg	for test_deplib in $deplibs; do
4044e1e1713cSmrg		case " $convenience " in
4045e1e1713cSmrg		*" $test_deplib "*) ;;
4046e1e1713cSmrg		*)
4047e1e1713cSmrg			tmp_deplibs="$tmp_deplibs $test_deplib"
4048e1e1713cSmrg			;;
4049e1e1713cSmrg		esac
4050e1e1713cSmrg	done
4051e1e1713cSmrg	deplibs="$tmp_deplibs"
40527a84e134Smrg
4053e1e1713cSmrg	if test -n "$convenience"; then
4054e1e1713cSmrg	  if test -n "$whole_archive_flag_spec"; then
4055e1e1713cSmrg	    save_libobjs=$libobjs
4056e1e1713cSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
4057e1e1713cSmrg	  else
4058e1e1713cSmrg	    gentop="$output_objdir/${outputname}x"
4059e1e1713cSmrg	    generated="$generated $gentop"
40607a84e134Smrg
4061e1e1713cSmrg	    func_extract_archives $gentop $convenience
4062e1e1713cSmrg	    libobjs="$libobjs $func_extract_archives_result"
4063e1e1713cSmrg	  fi
4064e1e1713cSmrg	fi
4065e1e1713cSmrg	
4066e1e1713cSmrg	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
4067e1e1713cSmrg	  eval flag=\"$thread_safe_flag_spec\"
4068e1e1713cSmrg	  linker_flags="$linker_flags $flag"
4069e1e1713cSmrg	fi
40707a84e134Smrg
4071e1e1713cSmrg	# Make a backup of the uninstalled library when relinking
4072e1e1713cSmrg	if test "$mode" = relink; then
4073e1e1713cSmrg	  $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
4074e1e1713cSmrg	fi
40757a84e134Smrg
4076e1e1713cSmrg	# Do each of the archive commands.
4077e1e1713cSmrg	if test "$module" = yes && test -n "$module_cmds" ; then
4078e1e1713cSmrg	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
4079e1e1713cSmrg	    eval test_cmds=\"$module_expsym_cmds\"
4080e1e1713cSmrg	    cmds=$module_expsym_cmds
4081e1e1713cSmrg	  else
4082e1e1713cSmrg	    eval test_cmds=\"$module_cmds\"
4083e1e1713cSmrg	    cmds=$module_cmds
4084e1e1713cSmrg	  fi
4085e1e1713cSmrg	else
4086e1e1713cSmrg	if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
4087e1e1713cSmrg	  eval test_cmds=\"$archive_expsym_cmds\"
4088e1e1713cSmrg	  cmds=$archive_expsym_cmds
4089e1e1713cSmrg	else
4090e1e1713cSmrg	  eval test_cmds=\"$archive_cmds\"
4091e1e1713cSmrg	  cmds=$archive_cmds
4092e1e1713cSmrg	  fi
4093e1e1713cSmrg	fi
40947a84e134Smrg
4095e1e1713cSmrg	if test "X$skipped_export" != "X:" &&
4096e1e1713cSmrg	   len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
4097e1e1713cSmrg	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
4098e1e1713cSmrg	  :
4099e1e1713cSmrg	else
4100e1e1713cSmrg	  # The command line is too long to link in one step, link piecewise.
4101e1e1713cSmrg	  $echo "creating reloadable object files..."
41027a84e134Smrg
4103e1e1713cSmrg	  # Save the value of $output and $libobjs because we want to
4104e1e1713cSmrg	  # use them later.  If we have whole_archive_flag_spec, we
4105e1e1713cSmrg	  # want to use save_libobjs as it was before
4106e1e1713cSmrg	  # whole_archive_flag_spec was expanded, because we can't
4107e1e1713cSmrg	  # assume the linker understands whole_archive_flag_spec.
4108e1e1713cSmrg	  # This may have to be revisited, in case too many
4109e1e1713cSmrg	  # convenience libraries get linked in and end up exceeding
4110e1e1713cSmrg	  # the spec.
4111e1e1713cSmrg	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
4112e1e1713cSmrg	    save_libobjs=$libobjs
4113e1e1713cSmrg	  fi
4114e1e1713cSmrg	  save_output=$output
4115e1e1713cSmrg	  output_la=`$echo "X$output" | $Xsed -e "$basename"`
41167a84e134Smrg
4117e1e1713cSmrg	  # Clear the reloadable object creation command queue and
4118e1e1713cSmrg	  # initialize k to one.
4119e1e1713cSmrg	  test_cmds=
4120e1e1713cSmrg	  concat_cmds=
4121e1e1713cSmrg	  objlist=
4122e1e1713cSmrg	  delfiles=
4123e1e1713cSmrg	  last_robj=
4124e1e1713cSmrg	  k=1
4125e1e1713cSmrg	  output=$output_objdir/$output_la-${k}.$objext
4126e1e1713cSmrg	  # Loop over the list of objects to be linked.
4127e1e1713cSmrg	  for obj in $save_libobjs
4128e1e1713cSmrg	  do
4129e1e1713cSmrg	    eval test_cmds=\"$reload_cmds $objlist $last_robj\"
4130e1e1713cSmrg	    if test "X$objlist" = X ||
4131e1e1713cSmrg	       { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
4132e1e1713cSmrg		 test "$len" -le "$max_cmd_len"; }; then
4133e1e1713cSmrg	      objlist="$objlist $obj"
4134e1e1713cSmrg	    else
4135e1e1713cSmrg	      # The command $test_cmds is almost too long, add a
4136e1e1713cSmrg	      # command to the queue.
4137e1e1713cSmrg	      if test "$k" -eq 1 ; then
4138e1e1713cSmrg		# The first file doesn't have a previous command to add.
4139e1e1713cSmrg		eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
4140e1e1713cSmrg	      else
4141e1e1713cSmrg		# All subsequent reloadable object files will link in
4142e1e1713cSmrg		# the last one created.
4143e1e1713cSmrg		eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
4144e1e1713cSmrg	      fi
4145e1e1713cSmrg	      last_robj=$output_objdir/$output_la-${k}.$objext
4146e1e1713cSmrg	      k=`expr $k + 1`
4147e1e1713cSmrg	      output=$output_objdir/$output_la-${k}.$objext
4148e1e1713cSmrg	      objlist=$obj
4149e1e1713cSmrg	      len=1
4150e1e1713cSmrg	    fi
4151e1e1713cSmrg	  done
4152e1e1713cSmrg	  # Handle the remaining objects by creating one last
4153e1e1713cSmrg	  # reloadable object file.  All subsequent reloadable object
4154e1e1713cSmrg	  # files will link in the last one created.
4155e1e1713cSmrg	  test -z "$concat_cmds" || concat_cmds=$concat_cmds~
4156e1e1713cSmrg	  eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
4157e1e1713cSmrg
4158e1e1713cSmrg	  if ${skipped_export-false}; then
4159e1e1713cSmrg	    $show "generating symbol list for \`$libname.la'"
4160e1e1713cSmrg	    export_symbols="$output_objdir/$libname.exp"
4161e1e1713cSmrg	    $run $rm $export_symbols
4162e1e1713cSmrg	    libobjs=$output
4163e1e1713cSmrg	    # Append the command to create the export file.
4164e1e1713cSmrg	    eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
4165e1e1713cSmrg          fi
4166e1e1713cSmrg
4167e1e1713cSmrg	  # Set up a command to remove the reloadable object files
4168e1e1713cSmrg	  # after they are used.
4169e1e1713cSmrg	  i=0
4170e1e1713cSmrg	  while test "$i" -lt "$k"
4171e1e1713cSmrg	  do
4172e1e1713cSmrg	    i=`expr $i + 1`
4173e1e1713cSmrg	    delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
4174e1e1713cSmrg	  done
41757a84e134Smrg
4176e1e1713cSmrg	  $echo "creating a temporary reloadable object file: $output"
41777a84e134Smrg
4178e1e1713cSmrg	  # Loop through the commands generated above and execute them.
4179e1e1713cSmrg	  save_ifs="$IFS"; IFS='~'
4180e1e1713cSmrg	  for cmd in $concat_cmds; do
4181e1e1713cSmrg	    IFS="$save_ifs"
4182e1e1713cSmrg	    $show "$cmd"
4183e1e1713cSmrg	    $run eval "$cmd" || exit $?
4184e1e1713cSmrg	  done
4185e1e1713cSmrg	  IFS="$save_ifs"
41867a84e134Smrg
4187e1e1713cSmrg	  libobjs=$output
4188e1e1713cSmrg	  # Restore the value of output.
4189e1e1713cSmrg	  output=$save_output
41907a84e134Smrg
4191e1e1713cSmrg	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
4192e1e1713cSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
4193e1e1713cSmrg	  fi
4194e1e1713cSmrg	  # Expand the library linking commands again to reset the
4195e1e1713cSmrg	  # value of $libobjs for piecewise linking.
41967a84e134Smrg
4197e1e1713cSmrg	  # Do each of the archive commands.
4198e1e1713cSmrg	  if test "$module" = yes && test -n "$module_cmds" ; then
4199e1e1713cSmrg	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
4200e1e1713cSmrg	      cmds=$module_expsym_cmds
4201e1e1713cSmrg	    else
4202e1e1713cSmrg	      cmds=$module_cmds
4203e1e1713cSmrg	    fi
4204e1e1713cSmrg	  else
4205e1e1713cSmrg	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
4206e1e1713cSmrg	    cmds=$archive_expsym_cmds
4207e1e1713cSmrg	  else
4208e1e1713cSmrg	    cmds=$archive_cmds
4209e1e1713cSmrg	    fi
4210e1e1713cSmrg	  fi
42117a84e134Smrg
4212e1e1713cSmrg	  # Append the command to remove the reloadable object files
4213e1e1713cSmrg	  # to the just-reset $cmds.
4214e1e1713cSmrg	  eval cmds=\"\$cmds~\$rm $delfiles\"
4215e1e1713cSmrg	fi
4216e1e1713cSmrg	save_ifs="$IFS"; IFS='~'
4217e1e1713cSmrg	for cmd in $cmds; do
4218e1e1713cSmrg	  IFS="$save_ifs"
4219e1e1713cSmrg	  eval cmd=\"$cmd\"
4220e1e1713cSmrg	  $show "$cmd"
4221e1e1713cSmrg	  $run eval "$cmd" || {
4222e1e1713cSmrg	    lt_exit=$?
42237a84e134Smrg
4224e1e1713cSmrg	    # Restore the uninstalled library and exit
4225e1e1713cSmrg	    if test "$mode" = relink; then
4226e1e1713cSmrg	      $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
4227e1e1713cSmrg	    fi
42287a84e134Smrg
4229e1e1713cSmrg	    exit $lt_exit
4230e1e1713cSmrg	  }
4231e1e1713cSmrg	done
4232e1e1713cSmrg	IFS="$save_ifs"
4233e1e1713cSmrg
4234e1e1713cSmrg	# Restore the uninstalled library and exit
4235e1e1713cSmrg	if test "$mode" = relink; then
4236e1e1713cSmrg	  $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
4237e1e1713cSmrg
4238e1e1713cSmrg	  if test -n "$convenience"; then
4239e1e1713cSmrg	    if test -z "$whole_archive_flag_spec"; then
4240e1e1713cSmrg	      $show "${rm}r $gentop"
4241e1e1713cSmrg	      $run ${rm}r "$gentop"
4242e1e1713cSmrg	    fi
4243e1e1713cSmrg	  fi
4244e1e1713cSmrg
4245e1e1713cSmrg	  exit $EXIT_SUCCESS
4246e1e1713cSmrg	fi
4247e1e1713cSmrg
4248e1e1713cSmrg	# Create links to the real library.
4249e1e1713cSmrg	for linkname in $linknames; do
4250e1e1713cSmrg	  if test "$realname" != "$linkname"; then
4251e1e1713cSmrg	    $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
4252e1e1713cSmrg	    $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
4253e1e1713cSmrg	  fi
4254e1e1713cSmrg	done
4255e1e1713cSmrg
4256e1e1713cSmrg	# If -module or -export-dynamic was specified, set the dlname.
4257e1e1713cSmrg	if test "$module" = yes || test "$export_dynamic" = yes; then
4258e1e1713cSmrg	  # On all known operating systems, these are identical.
4259e1e1713cSmrg	  dlname="$soname"
4260e1e1713cSmrg	fi
4261e1e1713cSmrg      fi
4262775e7de9Smrg      ;;
42637a84e134Smrg
4264e1e1713cSmrg    obj)
4265e1e1713cSmrg      case " $deplibs" in
4266e1e1713cSmrg      *\ -l* | *\ -L*)
4267e1e1713cSmrg	$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;;
4268e1e1713cSmrg      esac
42697a84e134Smrg
4270e1e1713cSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
4271e1e1713cSmrg	$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
4272e1e1713cSmrg      fi
42737a84e134Smrg
4274e1e1713cSmrg      if test -n "$rpath"; then
4275e1e1713cSmrg	$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
4276e1e1713cSmrg      fi
4277e1e1713cSmrg
4278e1e1713cSmrg      if test -n "$xrpath"; then
4279e1e1713cSmrg	$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
4280e1e1713cSmrg      fi
4281e1e1713cSmrg
4282e1e1713cSmrg      if test -n "$vinfo"; then
4283e1e1713cSmrg	$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
4284e1e1713cSmrg      fi
4285e1e1713cSmrg
4286e1e1713cSmrg      if test -n "$release"; then
4287e1e1713cSmrg	$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
4288e1e1713cSmrg      fi
4289e1e1713cSmrg
4290e1e1713cSmrg      case $output in
4291e1e1713cSmrg      *.lo)
4292e1e1713cSmrg	if test -n "$objs$old_deplibs"; then
4293e1e1713cSmrg	  $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
4294e1e1713cSmrg	  exit $EXIT_FAILURE
4295e1e1713cSmrg	fi
4296e1e1713cSmrg	libobj="$output"
4297e1e1713cSmrg	obj=`$echo "X$output" | $Xsed -e "$lo2o"`
4298775e7de9Smrg	;;
4299e1e1713cSmrg      *)
4300e1e1713cSmrg	libobj=
4301e1e1713cSmrg	obj="$output"
4302775e7de9Smrg	;;
4303775e7de9Smrg      esac
43047a84e134Smrg
4305e1e1713cSmrg      # Delete the old objects.
4306e1e1713cSmrg      $run $rm $obj $libobj
43077a84e134Smrg
4308e1e1713cSmrg      # Objects from convenience libraries.  This assumes
4309e1e1713cSmrg      # single-version convenience libraries.  Whenever we create
4310e1e1713cSmrg      # different ones for PIC/non-PIC, this we'll have to duplicate
4311e1e1713cSmrg      # the extraction.
4312e1e1713cSmrg      reload_conv_objs=
4313e1e1713cSmrg      gentop=
4314e1e1713cSmrg      # reload_cmds runs $LD directly, so let us get rid of
4315e1e1713cSmrg      # -Wl from whole_archive_flag_spec and hope we can get by with
4316e1e1713cSmrg      # turning comma into space..
4317e1e1713cSmrg      wl=
43187a84e134Smrg
4319e1e1713cSmrg      if test -n "$convenience"; then
4320e1e1713cSmrg	if test -n "$whole_archive_flag_spec"; then
4321e1e1713cSmrg	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
4322e1e1713cSmrg	  reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
4323e1e1713cSmrg	else
4324e1e1713cSmrg	  gentop="$output_objdir/${obj}x"
4325e1e1713cSmrg	  generated="$generated $gentop"
43267a84e134Smrg
4327e1e1713cSmrg	  func_extract_archives $gentop $convenience
4328e1e1713cSmrg	  reload_conv_objs="$reload_objs $func_extract_archives_result"
4329e1e1713cSmrg	fi
4330e1e1713cSmrg      fi
43317a84e134Smrg
4332e1e1713cSmrg      # Create the old-style object.
4333e1e1713cSmrg      reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
43347a84e134Smrg
4335e1e1713cSmrg      output="$obj"
4336e1e1713cSmrg      cmds=$reload_cmds
4337e1e1713cSmrg      save_ifs="$IFS"; IFS='~'
4338e1e1713cSmrg      for cmd in $cmds; do
4339e1e1713cSmrg	IFS="$save_ifs"
4340e1e1713cSmrg	eval cmd=\"$cmd\"
4341e1e1713cSmrg	$show "$cmd"
4342e1e1713cSmrg	$run eval "$cmd" || exit $?
4343e1e1713cSmrg      done
4344e1e1713cSmrg      IFS="$save_ifs"
43457a84e134Smrg
4346e1e1713cSmrg      # Exit if we aren't doing a library object file.
4347e1e1713cSmrg      if test -z "$libobj"; then
4348e1e1713cSmrg	if test -n "$gentop"; then
4349e1e1713cSmrg	  $show "${rm}r $gentop"
4350e1e1713cSmrg	  $run ${rm}r $gentop
4351e1e1713cSmrg	fi
43527a84e134Smrg
4353e1e1713cSmrg	exit $EXIT_SUCCESS
4354e1e1713cSmrg      fi
43557a84e134Smrg
4356e1e1713cSmrg      if test "$build_libtool_libs" != yes; then
4357e1e1713cSmrg	if test -n "$gentop"; then
4358e1e1713cSmrg	  $show "${rm}r $gentop"
4359e1e1713cSmrg	  $run ${rm}r $gentop
4360e1e1713cSmrg	fi
43617a84e134Smrg
4362e1e1713cSmrg	# Create an invalid libtool object if no PIC, so that we don't
4363e1e1713cSmrg	# accidentally link it into a program.
4364e1e1713cSmrg	# $show "echo timestamp > $libobj"
4365e1e1713cSmrg	# $run eval "echo timestamp > $libobj" || exit $?
4366e1e1713cSmrg	exit $EXIT_SUCCESS
4367e1e1713cSmrg      fi
43687a84e134Smrg
4369e1e1713cSmrg      if test -n "$pic_flag" || test "$pic_mode" != default; then
4370e1e1713cSmrg	# Only do commands if we really have different PIC objects.
4371e1e1713cSmrg	reload_objs="$libobjs $reload_conv_objs"
4372e1e1713cSmrg	output="$libobj"
4373e1e1713cSmrg	cmds=$reload_cmds
4374e1e1713cSmrg	save_ifs="$IFS"; IFS='~'
4375e1e1713cSmrg	for cmd in $cmds; do
4376e1e1713cSmrg	  IFS="$save_ifs"
4377e1e1713cSmrg	  eval cmd=\"$cmd\"
4378e1e1713cSmrg	  $show "$cmd"
4379e1e1713cSmrg	  $run eval "$cmd" || exit $?
4380e1e1713cSmrg	done
4381e1e1713cSmrg	IFS="$save_ifs"
4382e1e1713cSmrg      fi
43837a84e134Smrg
4384e1e1713cSmrg      if test -n "$gentop"; then
4385e1e1713cSmrg	$show "${rm}r $gentop"
4386e1e1713cSmrg	$run ${rm}r $gentop
4387e1e1713cSmrg      fi
43887a84e134Smrg
4389e1e1713cSmrg      exit $EXIT_SUCCESS
4390e1e1713cSmrg      ;;
4391775e7de9Smrg
4392e1e1713cSmrg    prog)
4393e1e1713cSmrg      case $host in
4394e1e1713cSmrg	*cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
4395e1e1713cSmrg      esac
4396e1e1713cSmrg      if test -n "$vinfo"; then
4397e1e1713cSmrg	$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
4398e1e1713cSmrg      fi
43997a84e134Smrg
4400e1e1713cSmrg      if test -n "$release"; then
4401e1e1713cSmrg	$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
4402e1e1713cSmrg      fi
44037a84e134Smrg
4404e1e1713cSmrg      if test "$preload" = yes; then
4405e1e1713cSmrg	if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
4406e1e1713cSmrg	   test "$dlopen_self_static" = unknown; then
4407e1e1713cSmrg	  $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
4408775e7de9Smrg	fi
4409e1e1713cSmrg      fi
44107a84e134Smrg
4411e1e1713cSmrg      case $host in
4412e1e1713cSmrg      *-*-rhapsody* | *-*-darwin1.[012])
4413e1e1713cSmrg	# On Rhapsody replace the C library is the System framework
4414e1e1713cSmrg	compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
4415e1e1713cSmrg	finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
4416775e7de9Smrg	;;
4417e1e1713cSmrg      esac
44187a84e134Smrg
4419e1e1713cSmrg      case $host in
4420e1e1713cSmrg      *darwin*)
4421e1e1713cSmrg        # Don't allow lazy linking, it breaks C++ global constructors
4422e1e1713cSmrg        if test "$tagname" = CXX ; then
4423e1e1713cSmrg        compile_command="$compile_command ${wl}-bind_at_load"
4424e1e1713cSmrg        finalize_command="$finalize_command ${wl}-bind_at_load"
4425e1e1713cSmrg        fi
4426e1e1713cSmrg        ;;
4427e1e1713cSmrg      esac
44287a84e134Smrg
44297a84e134Smrg
4430e1e1713cSmrg      # move library search paths that coincide with paths to not yet
4431e1e1713cSmrg      # installed libraries to the beginning of the library search list
4432e1e1713cSmrg      new_libs=
4433e1e1713cSmrg      for path in $notinst_path; do
4434e1e1713cSmrg	case " $new_libs " in
4435e1e1713cSmrg	*" -L$path/$objdir "*) ;;
4436e1e1713cSmrg	*)
4437e1e1713cSmrg	  case " $compile_deplibs " in
4438e1e1713cSmrg	  *" -L$path/$objdir "*)
4439e1e1713cSmrg	    new_libs="$new_libs -L$path/$objdir" ;;
4440e1e1713cSmrg	  esac
4441e1e1713cSmrg	  ;;
4442e1e1713cSmrg	esac
4443e1e1713cSmrg      done
4444e1e1713cSmrg      for deplib in $compile_deplibs; do
4445e1e1713cSmrg	case $deplib in
4446e1e1713cSmrg	-L*)
4447e1e1713cSmrg	  case " $new_libs " in
4448e1e1713cSmrg	  *" $deplib "*) ;;
4449e1e1713cSmrg	  *) new_libs="$new_libs $deplib" ;;
4450e1e1713cSmrg	  esac
4451e1e1713cSmrg	  ;;
4452e1e1713cSmrg	*) new_libs="$new_libs $deplib" ;;
4453e1e1713cSmrg	esac
4454e1e1713cSmrg      done
4455e1e1713cSmrg      compile_deplibs="$new_libs"
44567a84e134Smrg
44577a84e134Smrg
4458e1e1713cSmrg      compile_command="$compile_command $compile_deplibs"
4459e1e1713cSmrg      finalize_command="$finalize_command $finalize_deplibs"
44607a84e134Smrg
4461e1e1713cSmrg      if test -n "$rpath$xrpath"; then
4462e1e1713cSmrg	# If the user specified any rpath flags, then add them.
4463e1e1713cSmrg	for libdir in $rpath $xrpath; do
4464e1e1713cSmrg	  # This is the magic to use -rpath.
4465e1e1713cSmrg	  case "$finalize_rpath " in
4466e1e1713cSmrg	  *" $libdir "*) ;;
4467e1e1713cSmrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
4468e1e1713cSmrg	  esac
4469e1e1713cSmrg	done
4470e1e1713cSmrg      fi
44717a84e134Smrg
4472e1e1713cSmrg      # Now hardcode the library paths
4473e1e1713cSmrg      rpath=
4474e1e1713cSmrg      hardcode_libdirs=
4475e1e1713cSmrg      for libdir in $compile_rpath $finalize_rpath; do
4476e1e1713cSmrg	if test -n "$hardcode_libdir_flag_spec"; then
4477e1e1713cSmrg	  if test -n "$hardcode_libdir_separator"; then
4478e1e1713cSmrg	    if test -z "$hardcode_libdirs"; then
4479e1e1713cSmrg	      hardcode_libdirs="$libdir"
4480e1e1713cSmrg	    else
4481e1e1713cSmrg	      # Just accumulate the unique libdirs.
4482e1e1713cSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4483e1e1713cSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4484e1e1713cSmrg		;;
4485e1e1713cSmrg	      *)
4486e1e1713cSmrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4487e1e1713cSmrg		;;
4488e1e1713cSmrg	      esac
4489e1e1713cSmrg	    fi
4490775e7de9Smrg	  else
4491e1e1713cSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
4492e1e1713cSmrg	    rpath="$rpath $flag"
4493775e7de9Smrg	  fi
4494e1e1713cSmrg	elif test -n "$runpath_var"; then
4495e1e1713cSmrg	  case "$perm_rpath " in
4496e1e1713cSmrg	  *" $libdir "*) ;;
4497e1e1713cSmrg	  *) perm_rpath="$perm_rpath $libdir" ;;
4498e1e1713cSmrg	  esac
4499775e7de9Smrg	fi
4500775e7de9Smrg	case $host in
4501e1e1713cSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
4502e1e1713cSmrg	  testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
4503775e7de9Smrg	  case :$dllsearchpath: in
4504e1e1713cSmrg	  *":$libdir:"*) ;;
4505e1e1713cSmrg	  *) dllsearchpath="$dllsearchpath:$libdir";;
4506775e7de9Smrg	  esac
4507775e7de9Smrg	  case :$dllsearchpath: in
4508775e7de9Smrg	  *":$testbindir:"*) ;;
4509775e7de9Smrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
4510775e7de9Smrg	  esac
4511775e7de9Smrg	  ;;
4512775e7de9Smrg	esac
4513e1e1713cSmrg      done
4514e1e1713cSmrg      # Substitute the hardcoded libdirs into the rpath.
4515e1e1713cSmrg      if test -n "$hardcode_libdir_separator" &&
4516e1e1713cSmrg	 test -n "$hardcode_libdirs"; then
4517e1e1713cSmrg	libdir="$hardcode_libdirs"
4518e1e1713cSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
4519e1e1713cSmrg      fi
4520e1e1713cSmrg      compile_rpath="$rpath"
45217a84e134Smrg
4522e1e1713cSmrg      rpath=
4523e1e1713cSmrg      hardcode_libdirs=
4524e1e1713cSmrg      for libdir in $finalize_rpath; do
4525e1e1713cSmrg	if test -n "$hardcode_libdir_flag_spec"; then
4526e1e1713cSmrg	  if test -n "$hardcode_libdir_separator"; then
4527e1e1713cSmrg	    if test -z "$hardcode_libdirs"; then
4528e1e1713cSmrg	      hardcode_libdirs="$libdir"
4529e1e1713cSmrg	    else
4530e1e1713cSmrg	      # Just accumulate the unique libdirs.
4531e1e1713cSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4532e1e1713cSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4533e1e1713cSmrg		;;
4534e1e1713cSmrg	      *)
4535e1e1713cSmrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4536e1e1713cSmrg		;;
4537e1e1713cSmrg	      esac
4538e1e1713cSmrg	    fi
4539e1e1713cSmrg	  else
4540e1e1713cSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
4541e1e1713cSmrg	    rpath="$rpath $flag"
4542e1e1713cSmrg	  fi
4543e1e1713cSmrg	elif test -n "$runpath_var"; then
4544e1e1713cSmrg	  case "$finalize_perm_rpath " in
4545e1e1713cSmrg	  *" $libdir "*) ;;
4546e1e1713cSmrg	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
4547775e7de9Smrg	  esac
4548775e7de9Smrg	fi
4549e1e1713cSmrg      done
4550e1e1713cSmrg      # Substitute the hardcoded libdirs into the rpath.
4551e1e1713cSmrg      if test -n "$hardcode_libdir_separator" &&
4552e1e1713cSmrg	 test -n "$hardcode_libdirs"; then
4553e1e1713cSmrg	libdir="$hardcode_libdirs"
4554e1e1713cSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
4555e1e1713cSmrg      fi
4556e1e1713cSmrg      finalize_rpath="$rpath"
45577a84e134Smrg
4558e1e1713cSmrg      if test -n "$libobjs" && test "$build_old_libs" = yes; then
4559e1e1713cSmrg	# Transform all the library objects into standard objects.
4560e1e1713cSmrg	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4561e1e1713cSmrg	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4562e1e1713cSmrg      fi
45637a84e134Smrg
4564e1e1713cSmrg      dlsyms=
4565e1e1713cSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
4566e1e1713cSmrg	if test -n "$NM" && test -n "$global_symbol_pipe"; then
4567e1e1713cSmrg	  dlsyms="${outputname}S.c"
4568e1e1713cSmrg	else
4569e1e1713cSmrg	  $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
4570e1e1713cSmrg	fi
4571e1e1713cSmrg      fi
45727a84e134Smrg
4573e1e1713cSmrg      if test -n "$dlsyms"; then
4574e1e1713cSmrg	case $dlsyms in
4575e1e1713cSmrg	"") ;;
4576e1e1713cSmrg	*.c)
4577e1e1713cSmrg	  # Discover the nlist of each of the dlfiles.
4578e1e1713cSmrg	  nlist="$output_objdir/${outputname}.nm"
45797a84e134Smrg
4580e1e1713cSmrg	  $show "$rm $nlist ${nlist}S ${nlist}T"
4581e1e1713cSmrg	  $run $rm "$nlist" "${nlist}S" "${nlist}T"
45827a84e134Smrg
4583e1e1713cSmrg	  # Parse the name list into a source file.
4584e1e1713cSmrg	  $show "creating $output_objdir/$dlsyms"
45857a84e134Smrg
4586e1e1713cSmrg	  test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
4587e1e1713cSmrg/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
4588e1e1713cSmrg/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
45897a84e134Smrg
4590e1e1713cSmrg#ifdef __cplusplus
4591e1e1713cSmrgextern \"C\" {
4592e1e1713cSmrg#endif
45937a84e134Smrg
4594e1e1713cSmrg/* Prevent the only kind of declaration conflicts we can make. */
4595e1e1713cSmrg#define lt_preloaded_symbols some_other_symbol
45967a84e134Smrg
4597e1e1713cSmrg/* External symbol declarations for the compiler. */\
4598e1e1713cSmrg"
45997a84e134Smrg
4600e1e1713cSmrg	  if test "$dlself" = yes; then
4601e1e1713cSmrg	    $show "generating symbol list for \`$output'"
46027a84e134Smrg
4603e1e1713cSmrg	    test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
46047a84e134Smrg
4605e1e1713cSmrg	    # Add our own program objects to the symbol list.
4606e1e1713cSmrg	    progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4607e1e1713cSmrg	    for arg in $progfiles; do
4608e1e1713cSmrg	      $show "extracting global C symbols from \`$arg'"
4609e1e1713cSmrg	      $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4610e1e1713cSmrg	    done
46117a84e134Smrg
4612e1e1713cSmrg	    if test -n "$exclude_expsyms"; then
4613e1e1713cSmrg	      $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
4614e1e1713cSmrg	      $run eval '$mv "$nlist"T "$nlist"'
4615e1e1713cSmrg	    fi
46167a84e134Smrg
4617e1e1713cSmrg	    if test -n "$export_symbols_regex"; then
4618e1e1713cSmrg	      $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
4619e1e1713cSmrg	      $run eval '$mv "$nlist"T "$nlist"'
4620e1e1713cSmrg	    fi
46217a84e134Smrg
4622e1e1713cSmrg	    # Prepare the list of exported symbols
4623e1e1713cSmrg	    if test -z "$export_symbols"; then
4624e1e1713cSmrg	      export_symbols="$output_objdir/$outputname.exp"
4625e1e1713cSmrg	      $run $rm $export_symbols
4626e1e1713cSmrg	      $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
4627e1e1713cSmrg              case $host in
4628e1e1713cSmrg              *cygwin* | *mingw* )
4629e1e1713cSmrg	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4630e1e1713cSmrg		$run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
4631e1e1713cSmrg                ;;
4632e1e1713cSmrg              esac
4633e1e1713cSmrg	    else
4634e1e1713cSmrg	      $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
4635e1e1713cSmrg	      $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
4636e1e1713cSmrg	      $run eval 'mv "$nlist"T "$nlist"'
4637e1e1713cSmrg              case $host in
4638e1e1713cSmrg              *cygwin* | *mingw* )
4639e1e1713cSmrg	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4640e1e1713cSmrg		$run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
4641e1e1713cSmrg                ;;
4642e1e1713cSmrg              esac
4643e1e1713cSmrg	    fi
4644e1e1713cSmrg	  fi
46457a84e134Smrg
4646e1e1713cSmrg	  for arg in $dlprefiles; do
4647e1e1713cSmrg	    $show "extracting global C symbols from \`$arg'"
4648e1e1713cSmrg	    name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
4649e1e1713cSmrg	    $run eval '$echo ": $name " >> "$nlist"'
4650e1e1713cSmrg	    $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4651e1e1713cSmrg	  done
46527a84e134Smrg
4653e1e1713cSmrg	  if test -z "$run"; then
4654e1e1713cSmrg	    # Make sure we have at least an empty file.
4655e1e1713cSmrg	    test -f "$nlist" || : > "$nlist"
46567a84e134Smrg
4657e1e1713cSmrg	    if test -n "$exclude_expsyms"; then
4658e1e1713cSmrg	      $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
4659e1e1713cSmrg	      $mv "$nlist"T "$nlist"
4660e1e1713cSmrg	    fi
46617a84e134Smrg
4662e1e1713cSmrg	    # Try sorting and uniquifying the output.
4663e1e1713cSmrg	    if grep -v "^: " < "$nlist" |
4664e1e1713cSmrg		if sort -k 3 </dev/null >/dev/null 2>&1; then
4665e1e1713cSmrg		  sort -k 3
4666e1e1713cSmrg		else
4667e1e1713cSmrg		  sort +2
4668e1e1713cSmrg		fi |
4669e1e1713cSmrg		uniq > "$nlist"S; then
4670e1e1713cSmrg	      :
4671e1e1713cSmrg	    else
4672e1e1713cSmrg	      grep -v "^: " < "$nlist" > "$nlist"S
4673e1e1713cSmrg	    fi
46747a84e134Smrg
4675e1e1713cSmrg	    if test -f "$nlist"S; then
4676e1e1713cSmrg	      eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
4677e1e1713cSmrg	    else
4678e1e1713cSmrg	      $echo '/* NONE */' >> "$output_objdir/$dlsyms"
4679e1e1713cSmrg	    fi
46807a84e134Smrg
4681e1e1713cSmrg	    $echo >> "$output_objdir/$dlsyms" "\
46827a84e134Smrg
4683e1e1713cSmrg#undef lt_preloaded_symbols
46847a84e134Smrg
4685e1e1713cSmrg#if defined (__STDC__) && __STDC__
4686e1e1713cSmrg# define lt_ptr void *
4687e1e1713cSmrg#else
4688e1e1713cSmrg# define lt_ptr char *
4689e1e1713cSmrg# define const
4690e1e1713cSmrg#endif
46917a84e134Smrg
4692e1e1713cSmrg/* The mapping between symbol names and symbols. */
4693e1e1713cSmrg"
46947a84e134Smrg
4695e1e1713cSmrg	    case $host in
4696e1e1713cSmrg	    *cygwin* | *mingw* )
4697e1e1713cSmrg	  $echo >> "$output_objdir/$dlsyms" "\
4698e1e1713cSmrg/* DATA imports from DLLs on WIN32 can't be const, because
4699e1e1713cSmrg   runtime relocations are performed -- see ld's documentation
4700e1e1713cSmrg   on pseudo-relocs */
4701e1e1713cSmrgstruct {
4702e1e1713cSmrg"
4703e1e1713cSmrg	      ;;
4704e1e1713cSmrg	    * )
4705e1e1713cSmrg	  $echo >> "$output_objdir/$dlsyms" "\
4706e1e1713cSmrgconst struct {
4707e1e1713cSmrg"
4708e1e1713cSmrg	      ;;
4709e1e1713cSmrg	    esac
47107a84e134Smrg
47117a84e134Smrg
4712e1e1713cSmrg	  $echo >> "$output_objdir/$dlsyms" "\
4713e1e1713cSmrg  const char *name;
4714e1e1713cSmrg  lt_ptr address;
4715e1e1713cSmrg}
4716e1e1713cSmrglt_preloaded_symbols[] =
4717e1e1713cSmrg{\
4718e1e1713cSmrg"
47197a84e134Smrg
4720e1e1713cSmrg	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
47217a84e134Smrg
4722e1e1713cSmrg	    $echo >> "$output_objdir/$dlsyms" "\
4723e1e1713cSmrg  {0, (lt_ptr) 0}
4724e1e1713cSmrg};
47257a84e134Smrg
4726e1e1713cSmrg/* This works around a problem in FreeBSD linker */
4727e1e1713cSmrg#ifdef FREEBSD_WORKAROUND
4728e1e1713cSmrgstatic const void *lt_preloaded_setup() {
4729e1e1713cSmrg  return lt_preloaded_symbols;
4730e1e1713cSmrg}
4731e1e1713cSmrg#endif
47327a84e134Smrg
4733e1e1713cSmrg#ifdef __cplusplus
4734e1e1713cSmrg}
4735e1e1713cSmrg#endif\
4736e1e1713cSmrg"
4737775e7de9Smrg	  fi
4738ab902922Smrg
4739e1e1713cSmrg	  pic_flag_for_symtable=
4740e1e1713cSmrg	  case $host in
4741e1e1713cSmrg	  # compiling the symbol table file with pic_flag works around
4742e1e1713cSmrg	  # a FreeBSD bug that causes programs to crash when -lm is
4743e1e1713cSmrg	  # linked before any other PIC object.  But we must not use
4744e1e1713cSmrg	  # pic_flag when linking with -static.  The problem exists in
4745e1e1713cSmrg	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
4746e1e1713cSmrg	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
4747e1e1713cSmrg	    case "$compile_command " in
4748e1e1713cSmrg	    *" -static "*) ;;
4749e1e1713cSmrg	    *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
4750e1e1713cSmrg	    esac;;
4751e1e1713cSmrg	  *-*-hpux*)
4752e1e1713cSmrg	    case "$compile_command " in
4753e1e1713cSmrg	    *" -static "*) ;;
4754e1e1713cSmrg	    *) pic_flag_for_symtable=" $pic_flag";;
4755e1e1713cSmrg	    esac
4756e1e1713cSmrg	  esac
47577a84e134Smrg
4758e1e1713cSmrg	  # Now compile the dynamic symbol file.
4759e1e1713cSmrg	  $show "(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
4760e1e1713cSmrg	  $run eval '(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
47617a84e134Smrg
4762e1e1713cSmrg	  # Clean up the generated files.
4763e1e1713cSmrg	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
4764e1e1713cSmrg	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
47657a84e134Smrg
4766e1e1713cSmrg	  # Transform the symbol file into the correct name.
4767e1e1713cSmrg          case $host in
4768e1e1713cSmrg          *cygwin* | *mingw* )
4769e1e1713cSmrg            if test -f "$output_objdir/${outputname}.def" ; then
4770e1e1713cSmrg              compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
4771e1e1713cSmrg              finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
4772e1e1713cSmrg            else
4773e1e1713cSmrg              compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4774e1e1713cSmrg              finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4775e1e1713cSmrg             fi
4776e1e1713cSmrg            ;;
4777e1e1713cSmrg          * )
4778e1e1713cSmrg            compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4779e1e1713cSmrg            finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4780e1e1713cSmrg            ;;
4781e1e1713cSmrg          esac
4782e1e1713cSmrg	  ;;
4783e1e1713cSmrg	*)
4784e1e1713cSmrg	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
4785e1e1713cSmrg	  exit $EXIT_FAILURE
4786e1e1713cSmrg	  ;;
4787e1e1713cSmrg	esac
4788e1e1713cSmrg      else
4789e1e1713cSmrg	# We keep going just in case the user didn't refer to
4790e1e1713cSmrg	# lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
4791e1e1713cSmrg	# really was required.
47927a84e134Smrg
4793e1e1713cSmrg	# Nullify the symbol file.
4794e1e1713cSmrg	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
4795e1e1713cSmrg	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
4796e1e1713cSmrg      fi
4797775e7de9Smrg
4798e1e1713cSmrg      if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
4799e1e1713cSmrg	# Replace the output file specification.
4800e1e1713cSmrg	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP`
4801e1e1713cSmrg	link_command="$compile_command$compile_rpath"
4802775e7de9Smrg
4803e1e1713cSmrg	# We have no uninstalled library dependencies, so finalize right now.
4804e1e1713cSmrg	$show "$link_command"
4805e1e1713cSmrg	$run eval "$link_command"
4806e1e1713cSmrg	exit_status=$?
4807775e7de9Smrg
4808e1e1713cSmrg	# Delete the generated files.
4809e1e1713cSmrg	if test -n "$dlsyms"; then
4810e1e1713cSmrg	  $show "$rm $output_objdir/${outputname}S.${objext}"
4811e1e1713cSmrg	  $run $rm "$output_objdir/${outputname}S.${objext}"
4812775e7de9Smrg	fi
4813775e7de9Smrg
4814e1e1713cSmrg	exit $exit_status
4815e1e1713cSmrg      fi
4816775e7de9Smrg
4817e1e1713cSmrg      if test -n "$shlibpath_var"; then
4818e1e1713cSmrg	# We should set the shlibpath_var
4819e1e1713cSmrg	rpath=
4820e1e1713cSmrg	for dir in $temp_rpath; do
4821e1e1713cSmrg	  case $dir in
4822e1e1713cSmrg	  [\\/]* | [A-Za-z]:[\\/]*)
4823e1e1713cSmrg	    # Absolute path.
4824e1e1713cSmrg	    rpath="$rpath$dir:"
4825e1e1713cSmrg	    ;;
4826e1e1713cSmrg	  *)
4827e1e1713cSmrg	    # Relative path: add a thisdir entry.
4828e1e1713cSmrg	    rpath="$rpath\$thisdir/$dir:"
4829e1e1713cSmrg	    ;;
4830e1e1713cSmrg	  esac
4831e1e1713cSmrg	done
4832e1e1713cSmrg	temp_rpath="$rpath"
4833775e7de9Smrg      fi
4834775e7de9Smrg
4835e1e1713cSmrg      if test -n "$compile_shlibpath$finalize_shlibpath"; then
4836e1e1713cSmrg	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
4837e1e1713cSmrg      fi
4838e1e1713cSmrg      if test -n "$finalize_shlibpath"; then
4839e1e1713cSmrg	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
4840e1e1713cSmrg      fi
4841775e7de9Smrg
4842e1e1713cSmrg      compile_var=
4843e1e1713cSmrg      finalize_var=
4844e1e1713cSmrg      if test -n "$runpath_var"; then
4845e1e1713cSmrg	if test -n "$perm_rpath"; then
4846e1e1713cSmrg	  # We should set the runpath_var.
4847e1e1713cSmrg	  rpath=
4848e1e1713cSmrg	  for dir in $perm_rpath; do
4849e1e1713cSmrg	    rpath="$rpath$dir:"
4850e1e1713cSmrg	  done
4851e1e1713cSmrg	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
4852e1e1713cSmrg	fi
4853e1e1713cSmrg	if test -n "$finalize_perm_rpath"; then
4854e1e1713cSmrg	  # We should set the runpath_var.
4855e1e1713cSmrg	  rpath=
4856e1e1713cSmrg	  for dir in $finalize_perm_rpath; do
4857e1e1713cSmrg	    rpath="$rpath$dir:"
4858e1e1713cSmrg	  done
4859e1e1713cSmrg	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
4860e1e1713cSmrg	fi
4861e1e1713cSmrg      fi
4862775e7de9Smrg
4863e1e1713cSmrg      if test "$no_install" = yes; then
4864e1e1713cSmrg	# We don't need to create a wrapper script.
4865e1e1713cSmrg	link_command="$compile_var$compile_command$compile_rpath"
4866e1e1713cSmrg	# Replace the output file specification.
4867e1e1713cSmrg	link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
4868e1e1713cSmrg	# Delete the old output file.
4869e1e1713cSmrg	$run $rm $output
4870e1e1713cSmrg	# Link the executable and exit
4871e1e1713cSmrg	$show "$link_command"
4872e1e1713cSmrg	$run eval "$link_command" || exit $?
4873e1e1713cSmrg	exit $EXIT_SUCCESS
4874e1e1713cSmrg      fi
4875775e7de9Smrg
4876e1e1713cSmrg      if test "$hardcode_action" = relink; then
4877e1e1713cSmrg	# Fast installation is not supported
4878e1e1713cSmrg	link_command="$compile_var$compile_command$compile_rpath"
4879e1e1713cSmrg	relink_command="$finalize_var$finalize_command$finalize_rpath"
4880775e7de9Smrg
4881e1e1713cSmrg	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
4882e1e1713cSmrg	$echo "$modename: \`$output' will be relinked during installation" 1>&2
4883e1e1713cSmrg      else
4884e1e1713cSmrg	if test "$fast_install" != no; then
4885e1e1713cSmrg	  link_command="$finalize_var$compile_command$finalize_rpath"
4886e1e1713cSmrg	  if test "$fast_install" = yes; then
4887e1e1713cSmrg	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP`
4888e1e1713cSmrg	  else
4889e1e1713cSmrg	    # fast_install is set to needless
4890e1e1713cSmrg	    relink_command=
4891e1e1713cSmrg	  fi
4892e1e1713cSmrg	else
4893e1e1713cSmrg	  link_command="$compile_var$compile_command$compile_rpath"
4894e1e1713cSmrg	  relink_command="$finalize_var$finalize_command$finalize_rpath"
4895e1e1713cSmrg	fi
4896775e7de9Smrg      fi
4897775e7de9Smrg
4898e1e1713cSmrg      # Replace the output file specification.
4899e1e1713cSmrg      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
4900775e7de9Smrg
4901e1e1713cSmrg      # Delete the old output files.
4902e1e1713cSmrg      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
4903775e7de9Smrg
4904e1e1713cSmrg      $show "$link_command"
4905e1e1713cSmrg      $run eval "$link_command" || exit $?
4906775e7de9Smrg
4907e1e1713cSmrg      # Now create the wrapper script.
4908e1e1713cSmrg      $show "creating $output"
4909775e7de9Smrg
4910e1e1713cSmrg      # Quote the relink command for shipping.
4911e1e1713cSmrg      if test -n "$relink_command"; then
4912e1e1713cSmrg	# Preserve any variables that may affect compiler behavior
4913e1e1713cSmrg	for var in $variables_saved_for_relink; do
4914e1e1713cSmrg	  if eval test -z \"\${$var+set}\"; then
4915e1e1713cSmrg	    relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
4916e1e1713cSmrg	  elif eval var_value=\$$var; test -z "$var_value"; then
4917e1e1713cSmrg	    relink_command="$var=; export $var; $relink_command"
4918e1e1713cSmrg	  else
4919e1e1713cSmrg	    var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
4920e1e1713cSmrg	    relink_command="$var=\"$var_value\"; export $var; $relink_command"
4921e1e1713cSmrg	  fi
4922775e7de9Smrg	done
4923e1e1713cSmrg	relink_command="(cd `pwd`; $relink_command)"
4924e1e1713cSmrg	relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
4925775e7de9Smrg      fi
4926775e7de9Smrg
4927e1e1713cSmrg      # Quote $echo for shipping.
4928e1e1713cSmrg      if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
4929e1e1713cSmrg	case $progpath in
4930e1e1713cSmrg	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
4931e1e1713cSmrg	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
4932775e7de9Smrg	esac
4933e1e1713cSmrg	qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
4934e1e1713cSmrg      else
4935e1e1713cSmrg	qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
4936775e7de9Smrg      fi
4937775e7de9Smrg
4938e1e1713cSmrg      # Only actually do things if our run command is non-null.
4939e1e1713cSmrg      if test -z "$run"; then
4940e1e1713cSmrg	# win32 will think the script is a binary if it has
4941e1e1713cSmrg	# a .exe suffix, so we strip it off here.
4942e1e1713cSmrg	case $output in
4943e1e1713cSmrg	  *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
4944e1e1713cSmrg	esac
4945e1e1713cSmrg	# test for cygwin because mv fails w/o .exe extensions
4946e1e1713cSmrg	case $host in
4947e1e1713cSmrg	  *cygwin*)
4948e1e1713cSmrg	    exeext=.exe
4949e1e1713cSmrg	    outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
4950e1e1713cSmrg	  *) exeext= ;;
4951e1e1713cSmrg	esac
4952e1e1713cSmrg	case $host in
4953e1e1713cSmrg	  *cygwin* | *mingw* )
4954e1e1713cSmrg            output_name=`basename $output`
4955e1e1713cSmrg            output_path=`dirname $output`
4956e1e1713cSmrg            cwrappersource="$output_path/$objdir/lt-$output_name.c"
4957e1e1713cSmrg            cwrapper="$output_path/$output_name.exe"
4958e1e1713cSmrg            $rm $cwrappersource $cwrapper
4959e1e1713cSmrg            trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
4960775e7de9Smrg
4961e1e1713cSmrg	    cat > $cwrappersource <<EOF
4962775e7de9Smrg
4963e1e1713cSmrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
4964e1e1713cSmrg   Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
4965775e7de9Smrg
4966e1e1713cSmrg   The $output program cannot be directly executed until all the libtool
4967e1e1713cSmrg   libraries that it depends on are installed.
4968775e7de9Smrg
4969e1e1713cSmrg   This wrapper executable should never be moved out of the build directory.
4970e1e1713cSmrg   If it is, it will not operate correctly.
4971775e7de9Smrg
4972e1e1713cSmrg   Currently, it simply execs the wrapper *script* "/bin/sh $output",
4973e1e1713cSmrg   but could eventually absorb all of the scripts functionality and
4974e1e1713cSmrg   exec $objdir/$outputname directly.
4975e1e1713cSmrg*/
4976e1e1713cSmrgEOF
4977e1e1713cSmrg	    cat >> $cwrappersource<<"EOF"
4978e1e1713cSmrg#include <stdio.h>
4979e1e1713cSmrg#include <stdlib.h>
4980e1e1713cSmrg#include <unistd.h>
4981e1e1713cSmrg#include <malloc.h>
4982e1e1713cSmrg#include <stdarg.h>
4983e1e1713cSmrg#include <assert.h>
4984e1e1713cSmrg#include <string.h>
4985e1e1713cSmrg#include <ctype.h>
4986e1e1713cSmrg#include <sys/stat.h>
4987775e7de9Smrg
4988e1e1713cSmrg#if defined(PATH_MAX)
4989e1e1713cSmrg# define LT_PATHMAX PATH_MAX
4990e1e1713cSmrg#elif defined(MAXPATHLEN)
4991e1e1713cSmrg# define LT_PATHMAX MAXPATHLEN
4992e1e1713cSmrg#else
4993e1e1713cSmrg# define LT_PATHMAX 1024
4994e1e1713cSmrg#endif
4995775e7de9Smrg
4996e1e1713cSmrg#ifndef DIR_SEPARATOR
4997e1e1713cSmrg# define DIR_SEPARATOR '/'
4998e1e1713cSmrg# define PATH_SEPARATOR ':'
4999e1e1713cSmrg#endif
5000775e7de9Smrg
5001e1e1713cSmrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
5002e1e1713cSmrg  defined (__OS2__)
5003e1e1713cSmrg# define HAVE_DOS_BASED_FILE_SYSTEM
5004e1e1713cSmrg# ifndef DIR_SEPARATOR_2
5005e1e1713cSmrg#  define DIR_SEPARATOR_2 '\\'
5006e1e1713cSmrg# endif
5007e1e1713cSmrg# ifndef PATH_SEPARATOR_2
5008e1e1713cSmrg#  define PATH_SEPARATOR_2 ';'
5009e1e1713cSmrg# endif
5010e1e1713cSmrg#endif
5011775e7de9Smrg
5012e1e1713cSmrg#ifndef DIR_SEPARATOR_2
5013e1e1713cSmrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
5014e1e1713cSmrg#else /* DIR_SEPARATOR_2 */
5015e1e1713cSmrg# define IS_DIR_SEPARATOR(ch) \
5016e1e1713cSmrg        (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
5017e1e1713cSmrg#endif /* DIR_SEPARATOR_2 */
5018775e7de9Smrg
5019e1e1713cSmrg#ifndef PATH_SEPARATOR_2
5020e1e1713cSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
5021e1e1713cSmrg#else /* PATH_SEPARATOR_2 */
5022e1e1713cSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
5023e1e1713cSmrg#endif /* PATH_SEPARATOR_2 */
5024775e7de9Smrg
5025e1e1713cSmrg#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
5026e1e1713cSmrg#define XFREE(stale) do { \
5027e1e1713cSmrg  if (stale) { free ((void *) stale); stale = 0; } \
5028e1e1713cSmrg} while (0)
5029775e7de9Smrg
5030e1e1713cSmrg/* -DDEBUG is fairly common in CFLAGS.  */
5031e1e1713cSmrg#undef DEBUG
5032e1e1713cSmrg#if defined DEBUGWRAPPER
5033e1e1713cSmrg# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
5034e1e1713cSmrg#else
5035e1e1713cSmrg# define DEBUG(format, ...)
5036e1e1713cSmrg#endif
5037775e7de9Smrg
5038e1e1713cSmrgconst char *program_name = NULL;
5039775e7de9Smrg
5040e1e1713cSmrgvoid * xmalloc (size_t num);
5041e1e1713cSmrgchar * xstrdup (const char *string);
5042e1e1713cSmrgconst char * base_name (const char *name);
5043e1e1713cSmrgchar * find_executable(const char *wrapper);
5044e1e1713cSmrgint    check_executable(const char *path);
5045e1e1713cSmrgchar * strendzap(char *str, const char *pat);
5046e1e1713cSmrgvoid lt_fatal (const char *message, ...);
5047775e7de9Smrg
5048e1e1713cSmrgint
5049e1e1713cSmrgmain (int argc, char *argv[])
5050e1e1713cSmrg{
5051e1e1713cSmrg  char **newargz;
5052e1e1713cSmrg  int i;
5053775e7de9Smrg
5054e1e1713cSmrg  program_name = (char *) xstrdup (base_name (argv[0]));
5055e1e1713cSmrg  DEBUG("(main) argv[0]      : %s\n",argv[0]);
5056e1e1713cSmrg  DEBUG("(main) program_name : %s\n",program_name);
5057e1e1713cSmrg  newargz = XMALLOC(char *, argc+2);
5058e1e1713cSmrgEOF
5059775e7de9Smrg
5060e1e1713cSmrg            cat >> $cwrappersource <<EOF
5061e1e1713cSmrg  newargz[0] = (char *) xstrdup("$SHELL");
5062e1e1713cSmrgEOF
5063775e7de9Smrg
5064e1e1713cSmrg            cat >> $cwrappersource <<"EOF"
5065e1e1713cSmrg  newargz[1] = find_executable(argv[0]);
5066e1e1713cSmrg  if (newargz[1] == NULL)
5067e1e1713cSmrg    lt_fatal("Couldn't find %s", argv[0]);
5068e1e1713cSmrg  DEBUG("(main) found exe at : %s\n",newargz[1]);
5069e1e1713cSmrg  /* we know the script has the same name, without the .exe */
5070e1e1713cSmrg  /* so make sure newargz[1] doesn't end in .exe */
5071e1e1713cSmrg  strendzap(newargz[1],".exe");
5072e1e1713cSmrg  for (i = 1; i < argc; i++)
5073e1e1713cSmrg    newargz[i+1] = xstrdup(argv[i]);
5074e1e1713cSmrg  newargz[argc+1] = NULL;
5075775e7de9Smrg
5076e1e1713cSmrg  for (i=0; i<argc+1; i++)
5077e1e1713cSmrg  {
5078e1e1713cSmrg    DEBUG("(main) newargz[%d]   : %s\n",i,newargz[i]);
5079e1e1713cSmrg    ;
5080e1e1713cSmrg  }
5081775e7de9Smrg
5082e1e1713cSmrgEOF
5083775e7de9Smrg
5084e1e1713cSmrg            case $host_os in
5085e1e1713cSmrg              mingw*)
5086e1e1713cSmrg                cat >> $cwrappersource <<EOF
5087e1e1713cSmrg  execv("$SHELL",(char const **)newargz);
5088e1e1713cSmrgEOF
5089e1e1713cSmrg              ;;
5090e1e1713cSmrg              *)
5091e1e1713cSmrg                cat >> $cwrappersource <<EOF
5092e1e1713cSmrg  execv("$SHELL",newargz);
5093e1e1713cSmrgEOF
5094e1e1713cSmrg              ;;
5095e1e1713cSmrg            esac
5096775e7de9Smrg
5097e1e1713cSmrg            cat >> $cwrappersource <<"EOF"
5098e1e1713cSmrg  return 127;
5099e1e1713cSmrg}
5100775e7de9Smrg
5101e1e1713cSmrgvoid *
5102e1e1713cSmrgxmalloc (size_t num)
5103e1e1713cSmrg{
5104e1e1713cSmrg  void * p = (void *) malloc (num);
5105e1e1713cSmrg  if (!p)
5106e1e1713cSmrg    lt_fatal ("Memory exhausted");
5107775e7de9Smrg
5108e1e1713cSmrg  return p;
5109e1e1713cSmrg}
5110775e7de9Smrg
5111e1e1713cSmrgchar *
5112e1e1713cSmrgxstrdup (const char *string)
5113e1e1713cSmrg{
5114e1e1713cSmrg  return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
5115e1e1713cSmrg;
5116e1e1713cSmrg}
5117775e7de9Smrg
5118e1e1713cSmrgconst char *
5119e1e1713cSmrgbase_name (const char *name)
5120e1e1713cSmrg{
5121e1e1713cSmrg  const char *base;
5122775e7de9Smrg
5123e1e1713cSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5124e1e1713cSmrg  /* Skip over the disk name in MSDOS pathnames. */
5125e1e1713cSmrg  if (isalpha ((unsigned char)name[0]) && name[1] == ':')
5126e1e1713cSmrg    name += 2;
5127e1e1713cSmrg#endif
5128775e7de9Smrg
5129e1e1713cSmrg  for (base = name; *name; name++)
5130e1e1713cSmrg    if (IS_DIR_SEPARATOR (*name))
5131e1e1713cSmrg      base = name + 1;
5132e1e1713cSmrg  return base;
5133e1e1713cSmrg}
5134775e7de9Smrg
5135e1e1713cSmrgint
5136e1e1713cSmrgcheck_executable(const char * path)
5137e1e1713cSmrg{
5138e1e1713cSmrg  struct stat st;
5139775e7de9Smrg
5140e1e1713cSmrg  DEBUG("(check_executable)  : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
5141e1e1713cSmrg  if ((!path) || (!*path))
5142e1e1713cSmrg    return 0;
5143775e7de9Smrg
5144e1e1713cSmrg  if ((stat (path, &st) >= 0) &&
5145e1e1713cSmrg      (
5146e1e1713cSmrg        /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
5147e1e1713cSmrg#if defined (S_IXOTH)
5148e1e1713cSmrg       ((st.st_mode & S_IXOTH) == S_IXOTH) ||
5149e1e1713cSmrg#endif
5150e1e1713cSmrg#if defined (S_IXGRP)
5151e1e1713cSmrg       ((st.st_mode & S_IXGRP) == S_IXGRP) ||
5152e1e1713cSmrg#endif
5153e1e1713cSmrg       ((st.st_mode & S_IXUSR) == S_IXUSR))
5154e1e1713cSmrg      )
5155e1e1713cSmrg    return 1;
5156e1e1713cSmrg  else
5157e1e1713cSmrg    return 0;
5158e1e1713cSmrg}
5159775e7de9Smrg
5160e1e1713cSmrg/* Searches for the full path of the wrapper.  Returns
5161e1e1713cSmrg   newly allocated full path name if found, NULL otherwise */
5162e1e1713cSmrgchar *
5163e1e1713cSmrgfind_executable (const char* wrapper)
5164e1e1713cSmrg{
5165e1e1713cSmrg  int has_slash = 0;
5166e1e1713cSmrg  const char* p;
5167e1e1713cSmrg  const char* p_next;
5168e1e1713cSmrg  /* static buffer for getcwd */
5169e1e1713cSmrg  char tmp[LT_PATHMAX + 1];
5170e1e1713cSmrg  int tmp_len;
5171e1e1713cSmrg  char* concat_name;
5172775e7de9Smrg
5173e1e1713cSmrg  DEBUG("(find_executable)  : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
5174775e7de9Smrg
5175e1e1713cSmrg  if ((wrapper == NULL) || (*wrapper == '\0'))
5176e1e1713cSmrg    return NULL;
51777a84e134Smrg
5178e1e1713cSmrg  /* Absolute path? */
5179e1e1713cSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5180e1e1713cSmrg  if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
5181e1e1713cSmrg  {
5182e1e1713cSmrg    concat_name = xstrdup (wrapper);
5183e1e1713cSmrg    if (check_executable(concat_name))
5184e1e1713cSmrg      return concat_name;
5185e1e1713cSmrg    XFREE(concat_name);
5186e1e1713cSmrg  }
5187e1e1713cSmrg  else
5188e1e1713cSmrg  {
5189e1e1713cSmrg#endif
5190e1e1713cSmrg    if (IS_DIR_SEPARATOR (wrapper[0]))
5191e1e1713cSmrg    {
5192e1e1713cSmrg      concat_name = xstrdup (wrapper);
5193e1e1713cSmrg      if (check_executable(concat_name))
5194e1e1713cSmrg        return concat_name;
5195e1e1713cSmrg      XFREE(concat_name);
5196e1e1713cSmrg    }
5197e1e1713cSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5198e1e1713cSmrg  }
5199e1e1713cSmrg#endif
5200e1e1713cSmrg
5201e1e1713cSmrg  for (p = wrapper; *p; p++)
5202e1e1713cSmrg    if (*p == '/')
5203e1e1713cSmrg    {
5204e1e1713cSmrg      has_slash = 1;
5205e1e1713cSmrg      break;
5206e1e1713cSmrg    }
5207e1e1713cSmrg  if (!has_slash)
5208e1e1713cSmrg  {
5209e1e1713cSmrg    /* no slashes; search PATH */
5210e1e1713cSmrg    const char* path = getenv ("PATH");
5211e1e1713cSmrg    if (path != NULL)
5212e1e1713cSmrg    {
5213e1e1713cSmrg      for (p = path; *p; p = p_next)
5214e1e1713cSmrg      {
5215e1e1713cSmrg        const char* q;
5216e1e1713cSmrg        size_t p_len;
5217e1e1713cSmrg        for (q = p; *q; q++)
5218e1e1713cSmrg          if (IS_PATH_SEPARATOR(*q))
5219e1e1713cSmrg            break;
5220e1e1713cSmrg        p_len = q - p;
5221e1e1713cSmrg        p_next = (*q == '\0' ? q : q + 1);
5222e1e1713cSmrg        if (p_len == 0)
5223e1e1713cSmrg        {
5224e1e1713cSmrg          /* empty path: current directory */
5225e1e1713cSmrg          if (getcwd (tmp, LT_PATHMAX) == NULL)
5226e1e1713cSmrg            lt_fatal ("getcwd failed");
5227e1e1713cSmrg          tmp_len = strlen(tmp);
5228e1e1713cSmrg          concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
5229e1e1713cSmrg          memcpy (concat_name, tmp, tmp_len);
5230e1e1713cSmrg          concat_name[tmp_len] = '/';
5231e1e1713cSmrg          strcpy (concat_name + tmp_len + 1, wrapper);
5232e1e1713cSmrg        }
5233e1e1713cSmrg        else
5234e1e1713cSmrg        {
5235e1e1713cSmrg          concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
5236e1e1713cSmrg          memcpy (concat_name, p, p_len);
5237e1e1713cSmrg          concat_name[p_len] = '/';
5238e1e1713cSmrg          strcpy (concat_name + p_len + 1, wrapper);
5239e1e1713cSmrg        }
5240e1e1713cSmrg        if (check_executable(concat_name))
5241e1e1713cSmrg          return concat_name;
5242e1e1713cSmrg        XFREE(concat_name);
5243e1e1713cSmrg      }
5244e1e1713cSmrg    }
5245e1e1713cSmrg    /* not found in PATH; assume curdir */
5246e1e1713cSmrg  }
5247e1e1713cSmrg  /* Relative path | not found in path: prepend cwd */
5248e1e1713cSmrg  if (getcwd (tmp, LT_PATHMAX) == NULL)
5249e1e1713cSmrg    lt_fatal ("getcwd failed");
5250e1e1713cSmrg  tmp_len = strlen(tmp);
5251e1e1713cSmrg  concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
5252e1e1713cSmrg  memcpy (concat_name, tmp, tmp_len);
5253e1e1713cSmrg  concat_name[tmp_len] = '/';
5254e1e1713cSmrg  strcpy (concat_name + tmp_len + 1, wrapper);
5255e1e1713cSmrg
5256e1e1713cSmrg  if (check_executable(concat_name))
5257e1e1713cSmrg    return concat_name;
5258e1e1713cSmrg  XFREE(concat_name);
5259e1e1713cSmrg  return NULL;
5260e1e1713cSmrg}
5261e1e1713cSmrg
5262e1e1713cSmrgchar *
5263e1e1713cSmrgstrendzap(char *str, const char *pat)
5264e1e1713cSmrg{
5265e1e1713cSmrg  size_t len, patlen;
5266e1e1713cSmrg
5267e1e1713cSmrg  assert(str != NULL);
5268e1e1713cSmrg  assert(pat != NULL);
5269e1e1713cSmrg
5270e1e1713cSmrg  len = strlen(str);
5271e1e1713cSmrg  patlen = strlen(pat);
5272e1e1713cSmrg
5273e1e1713cSmrg  if (patlen <= len)
5274e1e1713cSmrg  {
5275e1e1713cSmrg    str += len - patlen;
5276e1e1713cSmrg    if (strcmp(str, pat) == 0)
5277e1e1713cSmrg      *str = '\0';
5278e1e1713cSmrg  }
5279e1e1713cSmrg  return str;
5280e1e1713cSmrg}
5281e1e1713cSmrg
5282e1e1713cSmrgstatic void
5283e1e1713cSmrglt_error_core (int exit_status, const char * mode,
5284e1e1713cSmrg          const char * message, va_list ap)
5285e1e1713cSmrg{
5286e1e1713cSmrg  fprintf (stderr, "%s: %s: ", program_name, mode);
5287e1e1713cSmrg  vfprintf (stderr, message, ap);
5288e1e1713cSmrg  fprintf (stderr, ".\n");
5289e1e1713cSmrg
5290e1e1713cSmrg  if (exit_status >= 0)
5291e1e1713cSmrg    exit (exit_status);
5292e1e1713cSmrg}
5293e1e1713cSmrg
5294e1e1713cSmrgvoid
5295e1e1713cSmrglt_fatal (const char *message, ...)
5296e1e1713cSmrg{
5297e1e1713cSmrg  va_list ap;
5298e1e1713cSmrg  va_start (ap, message);
5299e1e1713cSmrg  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
5300e1e1713cSmrg  va_end (ap);
5301e1e1713cSmrg}
5302e1e1713cSmrgEOF
5303e1e1713cSmrg          # we should really use a build-platform specific compiler
5304e1e1713cSmrg          # here, but OTOH, the wrappers (shell script and this C one)
5305e1e1713cSmrg          # are only useful if you want to execute the "real" binary.
5306e1e1713cSmrg          # Since the "real" binary is built for $host, then this
5307e1e1713cSmrg          # wrapper might as well be built for $host, too.
5308e1e1713cSmrg          $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
5309e1e1713cSmrg          ;;
5310e1e1713cSmrg        esac
5311e1e1713cSmrg        $rm $output
5312e1e1713cSmrg        trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
5313e1e1713cSmrg
5314e1e1713cSmrg	$echo > $output "\
5315e1e1713cSmrg#! $SHELL
5316e1e1713cSmrg
5317e1e1713cSmrg# $output - temporary wrapper script for $objdir/$outputname
5318e1e1713cSmrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
5319e1e1713cSmrg#
5320e1e1713cSmrg# The $output program cannot be directly executed until all the libtool
5321e1e1713cSmrg# libraries that it depends on are installed.
5322e1e1713cSmrg#
5323e1e1713cSmrg# This wrapper script should never be moved out of the build directory.
5324e1e1713cSmrg# If it is, it will not operate correctly.
5325e1e1713cSmrg
5326e1e1713cSmrg# Sed substitution that helps us do robust quoting.  It backslashifies
5327e1e1713cSmrg# metacharacters that are still active within double-quoted strings.
5328e1e1713cSmrgXsed='${SED} -e 1s/^X//'
5329e1e1713cSmrgsed_quote_subst='$sed_quote_subst'
5330e1e1713cSmrg
5331e1e1713cSmrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
5332e1e1713cSmrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
5333e1e1713cSmrg  emulate sh
5334e1e1713cSmrg  NULLCMD=:
5335e1e1713cSmrg  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
5336e1e1713cSmrg  # is contrary to our usage.  Disable this feature.
5337e1e1713cSmrg  alias -g '\${1+\"\$@\"}'='\"\$@\"'
5338e1e1713cSmrg  setopt NO_GLOB_SUBST
5339e1e1713cSmrgelse
5340e1e1713cSmrg  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
5341e1e1713cSmrgfi
5342e1e1713cSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
5343e1e1713cSmrgDUALCASE=1; export DUALCASE # for MKS sh
5344e1e1713cSmrg
5345e1e1713cSmrg# The HP-UX ksh and POSIX shell print the target directory to stdout
5346e1e1713cSmrg# if CDPATH is set.
5347e1e1713cSmrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
5348e1e1713cSmrg
5349e1e1713cSmrgrelink_command=\"$relink_command\"
5350e1e1713cSmrg
5351e1e1713cSmrg# This environment variable determines our operation mode.
5352e1e1713cSmrgif test \"\$libtool_install_magic\" = \"$magic\"; then
5353e1e1713cSmrg  # install mode needs the following variable:
5354e1e1713cSmrg  notinst_deplibs='$notinst_deplibs'
5355e1e1713cSmrgelse
5356e1e1713cSmrg  # When we are sourced in execute mode, \$file and \$echo are already set.
5357e1e1713cSmrg  if test \"\$libtool_execute_magic\" != \"$magic\"; then
5358e1e1713cSmrg    echo=\"$qecho\"
5359e1e1713cSmrg    file=\"\$0\"
5360e1e1713cSmrg    # Make sure echo works.
5361e1e1713cSmrg    if test \"X\$1\" = X--no-reexec; then
5362e1e1713cSmrg      # Discard the --no-reexec flag, and continue.
5363e1e1713cSmrg      shift
5364e1e1713cSmrg    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
5365e1e1713cSmrg      # Yippee, \$echo works!
5366e1e1713cSmrg      :
5367e1e1713cSmrg    else
5368e1e1713cSmrg      # Restart under the correct shell, and then maybe \$echo will work.
5369e1e1713cSmrg      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
5370e1e1713cSmrg    fi
5371e1e1713cSmrg  fi\
5372e1e1713cSmrg"
5373e1e1713cSmrg	$echo >> $output "\
53747a84e134Smrg
5375e1e1713cSmrg  # Find the directory that this script lives in.
5376e1e1713cSmrg  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
5377e1e1713cSmrg  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
53787a84e134Smrg
5379e1e1713cSmrg  # Follow symbolic links until we get to the real thisdir.
5380e1e1713cSmrg  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
5381e1e1713cSmrg  while test -n \"\$file\"; do
5382e1e1713cSmrg    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
53837a84e134Smrg
5384e1e1713cSmrg    # If there was a directory component, then change thisdir.
5385e1e1713cSmrg    if test \"x\$destdir\" != \"x\$file\"; then
5386e1e1713cSmrg      case \"\$destdir\" in
5387e1e1713cSmrg      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
5388e1e1713cSmrg      *) thisdir=\"\$thisdir/\$destdir\" ;;
5389e1e1713cSmrg      esac
5390e1e1713cSmrg    fi
53917a84e134Smrg
5392e1e1713cSmrg    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
5393e1e1713cSmrg    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
5394e1e1713cSmrg  done
53957a84e134Smrg
5396e1e1713cSmrg  # Try to get the absolute directory name.
5397e1e1713cSmrg  absdir=\`cd \"\$thisdir\" && pwd\`
5398e1e1713cSmrg  test -n \"\$absdir\" && thisdir=\"\$absdir\"
5399e1e1713cSmrg"
54007a84e134Smrg
5401e1e1713cSmrg	if test "$fast_install" = yes; then
5402e1e1713cSmrg	  $echo >> $output "\
5403e1e1713cSmrg  program=lt-'$outputname'$exeext
5404e1e1713cSmrg  progdir=\"\$thisdir/$objdir\"
54057a84e134Smrg
5406e1e1713cSmrg  if test ! -f \"\$progdir/\$program\" || \\
5407e1e1713cSmrg     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
5408e1e1713cSmrg       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
54097a84e134Smrg
5410e1e1713cSmrg    file=\"\$\$-\$program\"
54117a84e134Smrg
5412e1e1713cSmrg    if test ! -d \"\$progdir\"; then
5413e1e1713cSmrg      $mkdir \"\$progdir\"
5414e1e1713cSmrg    else
5415e1e1713cSmrg      $rm \"\$progdir/\$file\"
5416e1e1713cSmrg    fi"
54177a84e134Smrg
5418e1e1713cSmrg	  $echo >> $output "\
54197a84e134Smrg
5420e1e1713cSmrg    # relink executable if necessary
5421e1e1713cSmrg    if test -n \"\$relink_command\"; then
5422e1e1713cSmrg      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
5423e1e1713cSmrg      else
5424e1e1713cSmrg	$echo \"\$relink_command_output\" >&2
5425e1e1713cSmrg	$rm \"\$progdir/\$file\"
5426e1e1713cSmrg	exit $EXIT_FAILURE
5427e1e1713cSmrg      fi
5428e1e1713cSmrg    fi
54297a84e134Smrg
5430e1e1713cSmrg    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
5431e1e1713cSmrg    { $rm \"\$progdir/\$program\";
5432e1e1713cSmrg      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
5433e1e1713cSmrg    $rm \"\$progdir/\$file\"
5434e1e1713cSmrg  fi"
5435e1e1713cSmrg	else
5436e1e1713cSmrg	  $echo >> $output "\
5437e1e1713cSmrg  program='$outputname'
5438e1e1713cSmrg  progdir=\"\$thisdir/$objdir\"
5439e1e1713cSmrg"
54407a84e134Smrg	fi
54417a84e134Smrg
5442e1e1713cSmrg	$echo >> $output "\
54437a84e134Smrg
5444e1e1713cSmrg  if test -f \"\$progdir/\$program\"; then"
54457a84e134Smrg
5446e1e1713cSmrg	# Export our shlibpath_var if we have one.
5447e1e1713cSmrg	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
5448e1e1713cSmrg	  $echo >> $output "\
5449e1e1713cSmrg    # Add our own library path to $shlibpath_var
5450e1e1713cSmrg    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
54517a84e134Smrg
5452e1e1713cSmrg    # Some systems cannot cope with colon-terminated $shlibpath_var
5453e1e1713cSmrg    # The second colon is a workaround for a bug in BeOS R4 sed
5454e1e1713cSmrg    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
54557a84e134Smrg
5456e1e1713cSmrg    export $shlibpath_var
5457e1e1713cSmrg"
5458e1e1713cSmrg	fi
54597a84e134Smrg
5460e1e1713cSmrg	# fixup the dll searchpath if we need to.
5461e1e1713cSmrg	if test -n "$dllsearchpath"; then
5462e1e1713cSmrg	  $echo >> $output "\
5463e1e1713cSmrg    # Add the dll search path components to the executable PATH
5464e1e1713cSmrg    PATH=$dllsearchpath:\$PATH
5465e1e1713cSmrg"
5466e1e1713cSmrg	fi
5467775e7de9Smrg
5468e1e1713cSmrg	$echo >> $output "\
5469e1e1713cSmrg    if test \"\$libtool_execute_magic\" != \"$magic\"; then
5470e1e1713cSmrg      # Run the actual program with our arguments.
5471e1e1713cSmrg"
5472e1e1713cSmrg	case $host in
5473e1e1713cSmrg	# Backslashes separate directories on plain windows
5474e1e1713cSmrg	*-*-mingw | *-*-os2*)
5475e1e1713cSmrg	  $echo >> $output "\
5476e1e1713cSmrg      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
5477e1e1713cSmrg"
5478e1e1713cSmrg	  ;;
54797a84e134Smrg
5480e1e1713cSmrg	*)
5481e1e1713cSmrg	  $echo >> $output "\
5482e1e1713cSmrg      exec \"\$progdir/\$program\" \${1+\"\$@\"}
5483e1e1713cSmrg"
5484e1e1713cSmrg	  ;;
5485e1e1713cSmrg	esac
5486e1e1713cSmrg	$echo >> $output "\
5487e1e1713cSmrg      \$echo \"\$0: cannot exec \$program \$*\"
5488e1e1713cSmrg      exit $EXIT_FAILURE
5489e1e1713cSmrg    fi
5490e1e1713cSmrg  else
5491e1e1713cSmrg    # The program doesn't exist.
5492e1e1713cSmrg    \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
5493e1e1713cSmrg    \$echo \"This script is just a wrapper for \$program.\" 1>&2
5494e1e1713cSmrg    $echo \"See the $PACKAGE documentation for more information.\" 1>&2
5495e1e1713cSmrg    exit $EXIT_FAILURE
5496e1e1713cSmrg  fi
5497e1e1713cSmrgfi\
5498e1e1713cSmrg"
5499e1e1713cSmrg	chmod +x $output
5500e1e1713cSmrg      fi
5501e1e1713cSmrg      exit $EXIT_SUCCESS
5502e1e1713cSmrg      ;;
5503e1e1713cSmrg    esac
55047a84e134Smrg
5505e1e1713cSmrg    # See if we need to build an old-fashioned archive.
5506e1e1713cSmrg    for oldlib in $oldlibs; do
55077a84e134Smrg
5508e1e1713cSmrg      if test "$build_libtool_libs" = convenience; then
5509e1e1713cSmrg	oldobjs="$libobjs_save"
5510e1e1713cSmrg	addlibs="$convenience"
5511e1e1713cSmrg	build_libtool_libs=no
5512e1e1713cSmrg      else
5513e1e1713cSmrg	if test "$build_libtool_libs" = module; then
5514e1e1713cSmrg	  oldobjs="$libobjs_save"
5515e1e1713cSmrg	  build_libtool_libs=no
5516e1e1713cSmrg	else
5517e1e1713cSmrg	  oldobjs="$old_deplibs $non_pic_objects"
5518e1e1713cSmrg	fi
5519e1e1713cSmrg	addlibs="$old_convenience"
5520e1e1713cSmrg      fi
55217a84e134Smrg
5522e1e1713cSmrg      if test -n "$addlibs"; then
5523e1e1713cSmrg	gentop="$output_objdir/${outputname}x"
5524e1e1713cSmrg	generated="$generated $gentop"
55257a84e134Smrg
5526e1e1713cSmrg	func_extract_archives $gentop $addlibs
5527e1e1713cSmrg	oldobjs="$oldobjs $func_extract_archives_result"
5528e1e1713cSmrg      fi
55297a84e134Smrg
5530e1e1713cSmrg      # Do each command in the archive commands.
5531e1e1713cSmrg      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
5532e1e1713cSmrg       cmds=$old_archive_from_new_cmds
5533e1e1713cSmrg      else
5534e1e1713cSmrg	# POSIX demands no paths to be encoded in archives.  We have
5535e1e1713cSmrg	# to avoid creating archives with duplicate basenames if we
5536e1e1713cSmrg	# might have to extract them afterwards, e.g., when creating a
5537e1e1713cSmrg	# static archive out of a convenience library, or when linking
5538e1e1713cSmrg	# the entirety of a libtool archive into another (currently
5539e1e1713cSmrg	# not supported by libtool).
5540e1e1713cSmrg	if (for obj in $oldobjs
5541e1e1713cSmrg	    do
5542e1e1713cSmrg	      $echo "X$obj" | $Xsed -e 's%^.*/%%'
5543e1e1713cSmrg	    done | sort | sort -uc >/dev/null 2>&1); then
5544e1e1713cSmrg	  :
5545e1e1713cSmrg	else
5546e1e1713cSmrg	  $echo "copying selected object files to avoid basename conflicts..."
55477a84e134Smrg
5548e1e1713cSmrg	  if test -z "$gentop"; then
5549e1e1713cSmrg	    gentop="$output_objdir/${outputname}x"
5550e1e1713cSmrg	    generated="$generated $gentop"
55517a84e134Smrg
5552e1e1713cSmrg	    $show "${rm}r $gentop"
5553e1e1713cSmrg	    $run ${rm}r "$gentop"
5554e1e1713cSmrg	    $show "$mkdir $gentop"
5555e1e1713cSmrg	    $run $mkdir "$gentop"
5556e1e1713cSmrg	    exit_status=$?
5557e1e1713cSmrg	    if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
5558e1e1713cSmrg	      exit $exit_status
5559775e7de9Smrg	    fi
5560775e7de9Smrg	  fi
55617a84e134Smrg
5562e1e1713cSmrg	  save_oldobjs=$oldobjs
5563e1e1713cSmrg	  oldobjs=
5564e1e1713cSmrg	  counter=1
5565e1e1713cSmrg	  for obj in $save_oldobjs
5566e1e1713cSmrg	  do
5567e1e1713cSmrg	    objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
5568e1e1713cSmrg	    case " $oldobjs " in
5569e1e1713cSmrg	    " ") oldobjs=$obj ;;
5570e1e1713cSmrg	    *[\ /]"$objbase "*)
5571e1e1713cSmrg	      while :; do
5572e1e1713cSmrg		# Make sure we don't pick an alternate name that also
5573e1e1713cSmrg		# overlaps.
5574e1e1713cSmrg		newobj=lt$counter-$objbase
5575e1e1713cSmrg		counter=`expr $counter + 1`
5576e1e1713cSmrg		case " $oldobjs " in
5577e1e1713cSmrg		*[\ /]"$newobj "*) ;;
5578e1e1713cSmrg		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
5579e1e1713cSmrg		esac
5580e1e1713cSmrg	      done
5581e1e1713cSmrg	      $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
5582e1e1713cSmrg	      $run ln "$obj" "$gentop/$newobj" ||
5583e1e1713cSmrg	      $run cp "$obj" "$gentop/$newobj"
5584e1e1713cSmrg	      oldobjs="$oldobjs $gentop/$newobj"
5585e1e1713cSmrg	      ;;
5586e1e1713cSmrg	    *) oldobjs="$oldobjs $obj" ;;
5587e1e1713cSmrg	    esac
5588e1e1713cSmrg	  done
5589e1e1713cSmrg	fi
55907a84e134Smrg
5591e1e1713cSmrg	eval cmds=\"$old_archive_cmds\"
55927a84e134Smrg
5593e1e1713cSmrg	if len=`expr "X$cmds" : ".*"` &&
5594e1e1713cSmrg	     test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
5595e1e1713cSmrg	  cmds=$old_archive_cmds
5596e1e1713cSmrg	else
5597e1e1713cSmrg	  # the command line is too long to link in one step, link in parts
5598e1e1713cSmrg	  $echo "using piecewise archive linking..."
5599e1e1713cSmrg	  save_RANLIB=$RANLIB
5600e1e1713cSmrg	  RANLIB=:
5601e1e1713cSmrg	  objlist=
5602e1e1713cSmrg	  concat_cmds=
5603e1e1713cSmrg	  save_oldobjs=$oldobjs
5604e1e1713cSmrg
5605e1e1713cSmrg	  # Is there a better way of finding the last object in the list?
5606e1e1713cSmrg	  for obj in $save_oldobjs
5607e1e1713cSmrg	  do
5608e1e1713cSmrg	    last_oldobj=$obj
5609e1e1713cSmrg	  done
5610e1e1713cSmrg	  for obj in $save_oldobjs
5611e1e1713cSmrg	  do
5612e1e1713cSmrg	    oldobjs="$objlist $obj"
5613e1e1713cSmrg	    objlist="$objlist $obj"
5614e1e1713cSmrg	    eval test_cmds=\"$old_archive_cmds\"
5615e1e1713cSmrg	    if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
5616e1e1713cSmrg	       test "$len" -le "$max_cmd_len"; then
5617e1e1713cSmrg	      :
5618775e7de9Smrg	    else
5619e1e1713cSmrg	      # the above command should be used before it gets too long
5620e1e1713cSmrg	      oldobjs=$objlist
5621e1e1713cSmrg	      if test "$obj" = "$last_oldobj" ; then
5622e1e1713cSmrg	        RANLIB=$save_RANLIB
5623e1e1713cSmrg	      fi
5624e1e1713cSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
5625e1e1713cSmrg	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
5626e1e1713cSmrg	      objlist=
56277a84e134Smrg	    fi
5628e1e1713cSmrg	  done
5629e1e1713cSmrg	  RANLIB=$save_RANLIB
5630e1e1713cSmrg	  oldobjs=$objlist
5631e1e1713cSmrg	  if test "X$oldobjs" = "X" ; then
5632e1e1713cSmrg	    eval cmds=\"\$concat_cmds\"
56337a84e134Smrg	  else
5634e1e1713cSmrg	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
56357a84e134Smrg	  fi
5636775e7de9Smrg	fi
5637e1e1713cSmrg      fi
5638e1e1713cSmrg      save_ifs="$IFS"; IFS='~'
5639e1e1713cSmrg      for cmd in $cmds; do
5640e1e1713cSmrg        eval cmd=\"$cmd\"
5641775e7de9Smrg	IFS="$save_ifs"
5642e1e1713cSmrg	$show "$cmd"
5643e1e1713cSmrg	$run eval "$cmd" || exit $?
5644e1e1713cSmrg      done
5645e1e1713cSmrg      IFS="$save_ifs"
5646e1e1713cSmrg    done
56477a84e134Smrg
5648e1e1713cSmrg    if test -n "$generated"; then
5649e1e1713cSmrg      $show "${rm}r$generated"
5650e1e1713cSmrg      $run ${rm}r$generated
5651e1e1713cSmrg    fi
5652775e7de9Smrg
5653e1e1713cSmrg    # Now create the libtool archive.
5654e1e1713cSmrg    case $output in
5655e1e1713cSmrg    *.la)
5656e1e1713cSmrg      old_library=
5657e1e1713cSmrg      test "$build_old_libs" = yes && old_library="$libname.$libext"
5658e1e1713cSmrg      $show "creating $output"
56597a84e134Smrg
5660e1e1713cSmrg      # Preserve any variables that may affect compiler behavior
5661e1e1713cSmrg      for var in $variables_saved_for_relink; do
5662e1e1713cSmrg	if eval test -z \"\${$var+set}\"; then
5663e1e1713cSmrg	  relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
5664e1e1713cSmrg	elif eval var_value=\$$var; test -z "$var_value"; then
5665e1e1713cSmrg	  relink_command="$var=; export $var; $relink_command"
5666e1e1713cSmrg	else
5667e1e1713cSmrg	  var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
5668e1e1713cSmrg	  relink_command="$var=\"$var_value\"; export $var; $relink_command"
5669775e7de9Smrg	fi
5670e1e1713cSmrg      done
5671e1e1713cSmrg      # Quote the link command for shipping.
5672e1e1713cSmrg      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
5673e1e1713cSmrg      relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
5674e1e1713cSmrg      if test "$hardcode_automatic" = yes ; then
5675e1e1713cSmrg	relink_command=
5676775e7de9Smrg      fi
56777a84e134Smrg
56787a84e134Smrg
5679e1e1713cSmrg      # Only create the output if not a dry run.
5680e1e1713cSmrg      if test -z "$run"; then
5681e1e1713cSmrg	for installed in no yes; do
5682e1e1713cSmrg	  if test "$installed" = yes; then
5683e1e1713cSmrg	    if test -z "$install_libdir"; then
5684e1e1713cSmrg	      break
5685e1e1713cSmrg	    fi
5686e1e1713cSmrg	    output="$output_objdir/$outputname"i
5687e1e1713cSmrg	    # Replace all uninstalled libtool libraries with the installed ones
5688e1e1713cSmrg	    newdependency_libs=
5689e1e1713cSmrg	    for deplib in $dependency_libs; do
5690e1e1713cSmrg	      case $deplib in
5691e1e1713cSmrg	      *.la)
5692e1e1713cSmrg		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
5693e1e1713cSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
5694e1e1713cSmrg		if test -z "$libdir"; then
5695e1e1713cSmrg		  $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
5696e1e1713cSmrg		  exit $EXIT_FAILURE
5697e1e1713cSmrg		fi
5698e1e1713cSmrg		newdependency_libs="$newdependency_libs $libdir/$name"
5699e1e1713cSmrg		;;
5700e1e1713cSmrg	      *) newdependency_libs="$newdependency_libs $deplib" ;;
5701e1e1713cSmrg	      esac
5702e1e1713cSmrg	    done
5703e1e1713cSmrg	    dependency_libs="$newdependency_libs"
5704e1e1713cSmrg	    newdlfiles=
5705e1e1713cSmrg	    for lib in $dlfiles; do
5706e1e1713cSmrg	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5707e1e1713cSmrg	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5708e1e1713cSmrg	      if test -z "$libdir"; then
5709e1e1713cSmrg		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5710e1e1713cSmrg		exit $EXIT_FAILURE
5711e1e1713cSmrg	      fi
5712e1e1713cSmrg	      newdlfiles="$newdlfiles $libdir/$name"
5713e1e1713cSmrg	    done
5714e1e1713cSmrg	    dlfiles="$newdlfiles"
5715e1e1713cSmrg	    newdlprefiles=
5716e1e1713cSmrg	    for lib in $dlprefiles; do
5717e1e1713cSmrg	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5718e1e1713cSmrg	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5719e1e1713cSmrg	      if test -z "$libdir"; then
5720e1e1713cSmrg		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5721e1e1713cSmrg		exit $EXIT_FAILURE
5722e1e1713cSmrg	      fi
5723e1e1713cSmrg	      newdlprefiles="$newdlprefiles $libdir/$name"
5724e1e1713cSmrg	    done
5725e1e1713cSmrg	    dlprefiles="$newdlprefiles"
5726e1e1713cSmrg	  else
5727e1e1713cSmrg	    newdlfiles=
5728e1e1713cSmrg	    for lib in $dlfiles; do
5729e1e1713cSmrg	      case $lib in
5730e1e1713cSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5731e1e1713cSmrg		*) abs=`pwd`"/$lib" ;;
5732e1e1713cSmrg	      esac
5733e1e1713cSmrg	      newdlfiles="$newdlfiles $abs"
5734e1e1713cSmrg	    done
5735e1e1713cSmrg	    dlfiles="$newdlfiles"
5736e1e1713cSmrg	    newdlprefiles=
5737e1e1713cSmrg	    for lib in $dlprefiles; do
5738e1e1713cSmrg	      case $lib in
5739e1e1713cSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5740e1e1713cSmrg		*) abs=`pwd`"/$lib" ;;
5741e1e1713cSmrg	      esac
5742e1e1713cSmrg	      newdlprefiles="$newdlprefiles $abs"
5743e1e1713cSmrg	    done
5744e1e1713cSmrg	    dlprefiles="$newdlprefiles"
5745e1e1713cSmrg	  fi
5746e1e1713cSmrg	  $rm $output
5747e1e1713cSmrg	  # place dlname in correct position for cygwin
5748e1e1713cSmrg	  tdlname=$dlname
5749e1e1713cSmrg	  case $host,$output,$installed,$module,$dlname in
5750e1e1713cSmrg	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
5751e1e1713cSmrg	  esac
5752e1e1713cSmrg	  $echo > $output "\
5753e1e1713cSmrg# $outputname - a libtool library file
5754e1e1713cSmrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
5755e1e1713cSmrg#
5756e1e1713cSmrg# Please DO NOT delete this file!
5757e1e1713cSmrg# It is necessary for linking the library.
57587a84e134Smrg
5759e1e1713cSmrg# The name that we can dlopen(3).
5760e1e1713cSmrgdlname='$tdlname'
57617a84e134Smrg
5762e1e1713cSmrg# Names of this library.
5763e1e1713cSmrglibrary_names='$library_names'
57647a84e134Smrg
5765e1e1713cSmrg# The name of the static archive.
5766e1e1713cSmrgold_library='$old_library'
57677a84e134Smrg
5768e1e1713cSmrg# Libraries that this one depends upon.
5769e1e1713cSmrgdependency_libs='$dependency_libs'
5770775e7de9Smrg
5771e1e1713cSmrg# Version information for $libname.
5772e1e1713cSmrgcurrent=$current
5773e1e1713cSmrgage=$age
5774e1e1713cSmrgrevision=$revision
5775775e7de9Smrg
5776e1e1713cSmrg# Is this an already installed library?
5777e1e1713cSmrginstalled=$installed
5778775e7de9Smrg
5779e1e1713cSmrg# Should we warn about portability when linking against -modules?
5780e1e1713cSmrgshouldnotlink=$module
5781775e7de9Smrg
5782e1e1713cSmrg# Files to dlopen/dlpreopen
5783e1e1713cSmrgdlopen='$dlfiles'
5784e1e1713cSmrgdlpreopen='$dlprefiles'
5785775e7de9Smrg
5786e1e1713cSmrg# Directory that this library needs to be installed in:
5787e1e1713cSmrglibdir='$install_libdir'"
5788e1e1713cSmrg	  if test "$installed" = no && test "$need_relink" = yes; then
5789e1e1713cSmrg	    $echo >> $output "\
5790e1e1713cSmrgrelink_command=\"$relink_command\""
5791e1e1713cSmrg	  fi
5792e1e1713cSmrg	done
5793775e7de9Smrg      fi
5794775e7de9Smrg
5795e1e1713cSmrg      # Do a symbolic link so that the libtool archive can be found in
5796e1e1713cSmrg      # LD_LIBRARY_PATH before the program is installed.
5797e1e1713cSmrg      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
5798e1e1713cSmrg      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
57997a84e134Smrg      ;;
5800e1e1713cSmrg    esac
5801e1e1713cSmrg    exit $EXIT_SUCCESS
5802e1e1713cSmrg    ;;
58037a84e134Smrg
5804e1e1713cSmrg  # libtool install mode
5805e1e1713cSmrg  install)
5806e1e1713cSmrg    modename="$modename: install"
5807e1e1713cSmrg
5808e1e1713cSmrg    # There may be an optional sh(1) argument at the beginning of
5809e1e1713cSmrg    # install_prog (especially on Windows NT).
5810e1e1713cSmrg    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
5811e1e1713cSmrg       # Allow the use of GNU shtool's install command.
5812e1e1713cSmrg       $echo "X$nonopt" | grep shtool > /dev/null; then
5813e1e1713cSmrg      # Aesthetically quote it.
5814e1e1713cSmrg      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
5815e1e1713cSmrg      case $arg in
5816e1e1713cSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
5817e1e1713cSmrg	arg="\"$arg\""
5818e1e1713cSmrg	;;
5819775e7de9Smrg      esac
5820e1e1713cSmrg      install_prog="$arg "
5821e1e1713cSmrg      arg="$1"
5822e1e1713cSmrg      shift
5823e1e1713cSmrg    else
5824e1e1713cSmrg      install_prog=
5825e1e1713cSmrg      arg=$nonopt
5826e1e1713cSmrg    fi
58277a84e134Smrg
5828e1e1713cSmrg    # The real first argument should be the name of the installation program.
5829e1e1713cSmrg    # Aesthetically quote it.
5830e1e1713cSmrg    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5831e1e1713cSmrg    case $arg in
5832e1e1713cSmrg    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
5833e1e1713cSmrg      arg="\"$arg\""
5834e1e1713cSmrg      ;;
5835e1e1713cSmrg    esac
5836e1e1713cSmrg    install_prog="$install_prog$arg"
58377a84e134Smrg
5838e1e1713cSmrg    # We need to accept at least all the BSD install flags.
5839e1e1713cSmrg    dest=
5840e1e1713cSmrg    files=
5841e1e1713cSmrg    opts=
5842e1e1713cSmrg    prev=
5843e1e1713cSmrg    install_type=
5844e1e1713cSmrg    isdir=no
5845e1e1713cSmrg    stripme=
5846e1e1713cSmrg    for arg
5847e1e1713cSmrg    do
5848e1e1713cSmrg      if test -n "$dest"; then
5849e1e1713cSmrg	files="$files $dest"
5850e1e1713cSmrg	dest=$arg
5851e1e1713cSmrg	continue
5852e1e1713cSmrg      fi
5853775e7de9Smrg
5854e1e1713cSmrg      case $arg in
5855e1e1713cSmrg      -d) isdir=yes ;;
5856e1e1713cSmrg      -f) 
5857e1e1713cSmrg      	case " $install_prog " in
5858e1e1713cSmrg	*[\\\ /]cp\ *) ;;
5859e1e1713cSmrg	*) prev=$arg ;;
5860e1e1713cSmrg	esac
5861e1e1713cSmrg	;;
5862e1e1713cSmrg      -g | -m | -o) prev=$arg ;;
5863e1e1713cSmrg      -s)
5864e1e1713cSmrg	stripme=" -s"
5865e1e1713cSmrg	continue
5866e1e1713cSmrg	;;
5867e1e1713cSmrg      -*)
5868e1e1713cSmrg	;;
5869e1e1713cSmrg      *)
5870e1e1713cSmrg	# If the previous option needed an argument, then skip it.
5871e1e1713cSmrg	if test -n "$prev"; then
5872e1e1713cSmrg	  prev=
5873e1e1713cSmrg	else
5874e1e1713cSmrg	  dest=$arg
5875e1e1713cSmrg	  continue
5876e1e1713cSmrg	fi
58777a84e134Smrg	;;
5878775e7de9Smrg      esac
58797a84e134Smrg
5880e1e1713cSmrg      # Aesthetically quote the argument.
5881e1e1713cSmrg      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5882e1e1713cSmrg      case $arg in
5883e1e1713cSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
5884e1e1713cSmrg	arg="\"$arg\""
5885775e7de9Smrg	;;
5886775e7de9Smrg      esac
5887e1e1713cSmrg      install_prog="$install_prog $arg"
5888e1e1713cSmrg    done
58897a84e134Smrg
5890e1e1713cSmrg    if test -z "$install_prog"; then
5891e1e1713cSmrg      $echo "$modename: you must specify an install program" 1>&2
5892e1e1713cSmrg      $echo "$help" 1>&2
5893e1e1713cSmrg      exit $EXIT_FAILURE
5894e1e1713cSmrg    fi
58957a84e134Smrg
5896e1e1713cSmrg    if test -n "$prev"; then
5897e1e1713cSmrg      $echo "$modename: the \`$prev' option requires an argument" 1>&2
5898e1e1713cSmrg      $echo "$help" 1>&2
5899e1e1713cSmrg      exit $EXIT_FAILURE
5900e1e1713cSmrg    fi
5901e1e1713cSmrg
5902e1e1713cSmrg    if test -z "$files"; then
5903e1e1713cSmrg      if test -z "$dest"; then
5904e1e1713cSmrg	$echo "$modename: no file or destination specified" 1>&2
5905e1e1713cSmrg      else
5906e1e1713cSmrg	$echo "$modename: you must specify a destination" 1>&2
5907e1e1713cSmrg      fi
5908e1e1713cSmrg      $echo "$help" 1>&2
5909e1e1713cSmrg      exit $EXIT_FAILURE
5910e1e1713cSmrg    fi
5911e1e1713cSmrg
5912e1e1713cSmrg    # Strip any trailing slash from the destination.
5913e1e1713cSmrg    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
5914e1e1713cSmrg
5915e1e1713cSmrg    # Check to see that the destination is a directory.
5916e1e1713cSmrg    test -d "$dest" && isdir=yes
5917e1e1713cSmrg    if test "$isdir" = yes; then
5918e1e1713cSmrg      destdir="$dest"
5919e1e1713cSmrg      destname=
5920e1e1713cSmrg    else
5921e1e1713cSmrg      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
5922e1e1713cSmrg      test "X$destdir" = "X$dest" && destdir=.
5923e1e1713cSmrg      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
5924e1e1713cSmrg
5925e1e1713cSmrg      # Not a directory, so check to see that there is only one file specified.
5926e1e1713cSmrg      set dummy $files
5927e1e1713cSmrg      if test "$#" -gt 2; then
5928e1e1713cSmrg	$echo "$modename: \`$dest' is not a directory" 1>&2
5929e1e1713cSmrg	$echo "$help" 1>&2
5930e1e1713cSmrg	exit $EXIT_FAILURE
5931e1e1713cSmrg      fi
5932e1e1713cSmrg    fi
5933e1e1713cSmrg    case $destdir in
5934e1e1713cSmrg    [\\/]* | [A-Za-z]:[\\/]*) ;;
5935e1e1713cSmrg    *)
5936e1e1713cSmrg      for file in $files; do
5937e1e1713cSmrg	case $file in
5938e1e1713cSmrg	*.lo) ;;
5939775e7de9Smrg	*)
5940e1e1713cSmrg	  $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
5941e1e1713cSmrg	  $echo "$help" 1>&2
5942e1e1713cSmrg	  exit $EXIT_FAILURE
5943775e7de9Smrg	  ;;
5944775e7de9Smrg	esac
5945775e7de9Smrg      done
5946e1e1713cSmrg      ;;
5947e1e1713cSmrg    esac
59487a84e134Smrg
5949e1e1713cSmrg    # This variable tells wrapper scripts just to set variables rather
5950e1e1713cSmrg    # than running their programs.
5951e1e1713cSmrg    libtool_install_magic="$magic"
59527a84e134Smrg
5953e1e1713cSmrg    staticlibs=
5954e1e1713cSmrg    future_libdirs=
5955e1e1713cSmrg    current_libdirs=
5956e1e1713cSmrg    for file in $files; do
59577a84e134Smrg
5958e1e1713cSmrg      # Do each installation.
5959e1e1713cSmrg      case $file in
5960e1e1713cSmrg      *.$libext)
5961e1e1713cSmrg	# Do the static libraries later.
5962e1e1713cSmrg	staticlibs="$staticlibs $file"
5963e1e1713cSmrg	;;
5964e1e1713cSmrg
5965e1e1713cSmrg      *.la)
5966e1e1713cSmrg	# Check to see that this really is a libtool archive.
5967e1e1713cSmrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
5968e1e1713cSmrg	else
5969e1e1713cSmrg	  $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
5970e1e1713cSmrg	  $echo "$help" 1>&2
5971e1e1713cSmrg	  exit $EXIT_FAILURE
5972e1e1713cSmrg	fi
5973e1e1713cSmrg
5974e1e1713cSmrg	library_names=
5975e1e1713cSmrg	old_library=
5976e1e1713cSmrg	relink_command=
5977e1e1713cSmrg	# If there is no directory component, then add one.
5978e1e1713cSmrg	case $file in
5979e1e1713cSmrg	*/* | *\\*) . $file ;;
5980e1e1713cSmrg	*) . ./$file ;;
5981e1e1713cSmrg	esac
5982e1e1713cSmrg
5983e1e1713cSmrg	# Add the libdir to current_libdirs if it is the destination.
5984e1e1713cSmrg	if test "X$destdir" = "X$libdir"; then
5985e1e1713cSmrg	  case "$current_libdirs " in
5986775e7de9Smrg	  *" $libdir "*) ;;
5987e1e1713cSmrg	  *) current_libdirs="$current_libdirs $libdir" ;;
5988775e7de9Smrg	  esac
5989e1e1713cSmrg	else
5990e1e1713cSmrg	  # Note the libdir as a future libdir.
5991e1e1713cSmrg	  case "$future_libdirs " in
5992775e7de9Smrg	  *" $libdir "*) ;;
5993e1e1713cSmrg	  *) future_libdirs="$future_libdirs $libdir" ;;
5994775e7de9Smrg	  esac
5995775e7de9Smrg	fi
59967a84e134Smrg
5997e1e1713cSmrg	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
5998e1e1713cSmrg	test "X$dir" = "X$file/" && dir=
5999e1e1713cSmrg	dir="$dir$objdir"
6000e1e1713cSmrg
6001e1e1713cSmrg	if test -n "$relink_command"; then
6002e1e1713cSmrg	  # Determine the prefix the user has applied to our future dir.
6003e1e1713cSmrg	  inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
6004e1e1713cSmrg
6005e1e1713cSmrg	  # Don't allow the user to place us outside of our expected
6006e1e1713cSmrg	  # location b/c this prevents finding dependent libraries that
6007e1e1713cSmrg	  # are installed to the same prefix.
6008e1e1713cSmrg	  # At present, this check doesn't affect windows .dll's that
6009e1e1713cSmrg	  # are installed into $libdir/../bin (currently, that works fine)
6010e1e1713cSmrg	  # but it's something to keep an eye on.
6011e1e1713cSmrg	  if test "$inst_prefix_dir" = "$destdir"; then
6012e1e1713cSmrg	    $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
6013e1e1713cSmrg	    exit $EXIT_FAILURE
6014e1e1713cSmrg	  fi
6015e1e1713cSmrg
6016e1e1713cSmrg	  if test -n "$inst_prefix_dir"; then
6017e1e1713cSmrg	    # Stick the inst_prefix_dir data into the link command.
6018e1e1713cSmrg	    relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP`
6019e1e1713cSmrg	  else
6020e1e1713cSmrg	    relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP`
6021e1e1713cSmrg	  fi
6022e1e1713cSmrg
6023e1e1713cSmrg	  $echo "$modename: warning: relinking \`$file'" 1>&2
6024e1e1713cSmrg	  $show "$relink_command"
6025e1e1713cSmrg	  if $run eval "$relink_command"; then :
60267a84e134Smrg	  else
6027e1e1713cSmrg	    $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
6028e1e1713cSmrg	    exit $EXIT_FAILURE
60297a84e134Smrg	  fi
60307a84e134Smrg	fi
60317a84e134Smrg
6032e1e1713cSmrg	# See the names of the shared library.
6033e1e1713cSmrg	set dummy $library_names
6034e1e1713cSmrg	if test -n "$2"; then
6035e1e1713cSmrg	  realname="$2"
6036e1e1713cSmrg	  shift
6037e1e1713cSmrg	  shift
60387a84e134Smrg
6039e1e1713cSmrg	  srcname="$realname"
6040e1e1713cSmrg	  test -n "$relink_command" && srcname="$realname"T
60417a84e134Smrg
6042e1e1713cSmrg	  # Install the shared library and build the symlinks.
6043e1e1713cSmrg	  $show "$install_prog $dir/$srcname $destdir/$realname"
6044e1e1713cSmrg	  $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
6045e1e1713cSmrg	  if test -n "$stripme" && test -n "$striplib"; then
6046e1e1713cSmrg	    $show "$striplib $destdir/$realname"
6047e1e1713cSmrg	    $run eval "$striplib $destdir/$realname" || exit $?
6048e1e1713cSmrg	  fi
60497a84e134Smrg
6050e1e1713cSmrg	  if test "$#" -gt 0; then
6051e1e1713cSmrg	    # Delete the old symlinks, and create new ones.
6052e1e1713cSmrg	    # Try `ln -sf' first, because the `ln' binary might depend on
6053e1e1713cSmrg	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
6054e1e1713cSmrg	    # so we also need to try rm && ln -s.
6055e1e1713cSmrg	    for linkname
6056e1e1713cSmrg	    do
6057e1e1713cSmrg	      if test "$linkname" != "$realname"; then
6058e1e1713cSmrg                $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
6059e1e1713cSmrg                $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
6060e1e1713cSmrg	      fi
6061e1e1713cSmrg	    done
6062e1e1713cSmrg	  fi
60637a84e134Smrg
6064e1e1713cSmrg	  # Do each command in the postinstall commands.
6065e1e1713cSmrg	  lib="$destdir/$realname"
6066e1e1713cSmrg	  cmds=$postinstall_cmds
6067e1e1713cSmrg	  save_ifs="$IFS"; IFS='~'
6068e1e1713cSmrg	  for cmd in $cmds; do
6069e1e1713cSmrg	    IFS="$save_ifs"
6070e1e1713cSmrg	    eval cmd=\"$cmd\"
6071e1e1713cSmrg	    $show "$cmd"
6072e1e1713cSmrg	    $run eval "$cmd" || {
6073e1e1713cSmrg	      lt_exit=$?
6074e1e1713cSmrg
6075e1e1713cSmrg	      # Restore the uninstalled library and exit
6076e1e1713cSmrg	      if test "$mode" = relink; then
6077e1e1713cSmrg		$run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
6078e1e1713cSmrg	      fi
60797a84e134Smrg
6080e1e1713cSmrg	      exit $lt_exit
6081e1e1713cSmrg	    }
6082e1e1713cSmrg	  done
6083e1e1713cSmrg	  IFS="$save_ifs"
60847a84e134Smrg	fi
60857a84e134Smrg
6086e1e1713cSmrg	# Install the pseudo-library for information purposes.
6087e1e1713cSmrg	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6088e1e1713cSmrg	instname="$dir/$name"i
6089e1e1713cSmrg	$show "$install_prog $instname $destdir/$name"
6090e1e1713cSmrg	$run eval "$install_prog $instname $destdir/$name" || exit $?
60917a84e134Smrg
6092e1e1713cSmrg	# Maybe install the static library, too.
6093e1e1713cSmrg	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
6094e1e1713cSmrg	;;
60957a84e134Smrg
6096e1e1713cSmrg      *.lo)
6097e1e1713cSmrg	# Install (i.e. copy) a libtool object.
6098e1e1713cSmrg
6099e1e1713cSmrg	# Figure out destination file name, if it wasn't already specified.
6100e1e1713cSmrg	if test -n "$destname"; then
6101e1e1713cSmrg	  destfile="$destdir/$destname"
6102e1e1713cSmrg	else
6103e1e1713cSmrg	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6104e1e1713cSmrg	  destfile="$destdir/$destfile"
61057a84e134Smrg	fi
6106e1e1713cSmrg
6107e1e1713cSmrg	# Deduce the name of the destination old-style object file.
6108e1e1713cSmrg	case $destfile in
6109e1e1713cSmrg	*.lo)
6110e1e1713cSmrg	  staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
6111e1e1713cSmrg	  ;;
6112e1e1713cSmrg	*.$objext)
6113e1e1713cSmrg	  staticdest="$destfile"
6114e1e1713cSmrg	  destfile=
6115e1e1713cSmrg	  ;;
6116e1e1713cSmrg	*)
6117e1e1713cSmrg	  $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
6118e1e1713cSmrg	  $echo "$help" 1>&2
6119e1e1713cSmrg	  exit $EXIT_FAILURE
6120e1e1713cSmrg	  ;;
6121e1e1713cSmrg	esac
6122e1e1713cSmrg
6123e1e1713cSmrg	# Install the libtool object if requested.
6124e1e1713cSmrg	if test -n "$destfile"; then
6125e1e1713cSmrg	  $show "$install_prog $file $destfile"
6126e1e1713cSmrg	  $run eval "$install_prog $file $destfile" || exit $?
61277a84e134Smrg	fi
61287a84e134Smrg
6129e1e1713cSmrg	# Install the old object if enabled.
6130e1e1713cSmrg	if test "$build_old_libs" = yes; then
6131e1e1713cSmrg	  # Deduce the name of the old-style object file.
6132e1e1713cSmrg	  staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
61337a84e134Smrg
6134e1e1713cSmrg	  $show "$install_prog $staticobj $staticdest"
6135e1e1713cSmrg	  $run eval "$install_prog \$staticobj \$staticdest" || exit $?
6136e1e1713cSmrg	fi
6137e1e1713cSmrg	exit $EXIT_SUCCESS
6138e1e1713cSmrg	;;
6139775e7de9Smrg
6140e1e1713cSmrg      *)
6141e1e1713cSmrg	# Figure out destination file name, if it wasn't already specified.
6142e1e1713cSmrg	if test -n "$destname"; then
6143e1e1713cSmrg	  destfile="$destdir/$destname"
61447a84e134Smrg	else
6145e1e1713cSmrg	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6146e1e1713cSmrg	  destfile="$destdir/$destfile"
61477a84e134Smrg	fi
61487a84e134Smrg
6149e1e1713cSmrg	# If the file is missing, and there is a .exe on the end, strip it
6150e1e1713cSmrg	# because it is most likely a libtool script we actually want to
6151e1e1713cSmrg	# install
6152e1e1713cSmrg	stripped_ext=""
6153e1e1713cSmrg	case $file in
6154e1e1713cSmrg	  *.exe)
6155e1e1713cSmrg	    if test ! -f "$file"; then
6156e1e1713cSmrg	      file=`$echo $file|${SED} 's,.exe$,,'`
6157e1e1713cSmrg	      stripped_ext=".exe"
6158e1e1713cSmrg	    fi
6159e1e1713cSmrg	    ;;
6160e1e1713cSmrg	esac
61617a84e134Smrg
6162e1e1713cSmrg	# Do a test to see if this is really a libtool program.
6163e1e1713cSmrg	case $host in
6164e1e1713cSmrg	*cygwin*|*mingw*)
6165e1e1713cSmrg	    wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
6166e1e1713cSmrg	    ;;
6167e1e1713cSmrg	*)
6168e1e1713cSmrg	    wrapper=$file
6169e1e1713cSmrg	    ;;
6170e1e1713cSmrg	esac
6171e1e1713cSmrg	if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
6172e1e1713cSmrg	  notinst_deplibs=
6173e1e1713cSmrg	  relink_command=
61747a84e134Smrg
6175e1e1713cSmrg	  # Note that it is not necessary on cygwin/mingw to append a dot to
6176e1e1713cSmrg	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
6177e1e1713cSmrg	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
6178e1e1713cSmrg	  # `FILE.' does not work on cygwin managed mounts.
6179e1e1713cSmrg	  #
6180e1e1713cSmrg	  # If there is no directory component, then add one.
6181e1e1713cSmrg	  case $wrapper in
6182e1e1713cSmrg	  */* | *\\*) . ${wrapper} ;;
6183e1e1713cSmrg	  *) . ./${wrapper} ;;
6184e1e1713cSmrg	  esac
61857a84e134Smrg
6186e1e1713cSmrg	  # Check the variables that should have been set.
6187e1e1713cSmrg	  if test -z "$notinst_deplibs"; then
6188e1e1713cSmrg	    $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
6189e1e1713cSmrg	    exit $EXIT_FAILURE
6190e1e1713cSmrg	  fi
61917a84e134Smrg
6192e1e1713cSmrg	  finalize=yes
6193e1e1713cSmrg	  for lib in $notinst_deplibs; do
6194e1e1713cSmrg	    # Check to see that each library is installed.
6195e1e1713cSmrg	    libdir=
6196e1e1713cSmrg	    if test -f "$lib"; then
6197e1e1713cSmrg	      # If there is no directory component, then add one.
6198e1e1713cSmrg	      case $lib in
6199e1e1713cSmrg	      */* | *\\*) . $lib ;;
6200e1e1713cSmrg	      *) . ./$lib ;;
6201e1e1713cSmrg	      esac
6202e1e1713cSmrg	    fi
6203e1e1713cSmrg	    libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
6204e1e1713cSmrg	    if test -n "$libdir" && test ! -f "$libfile"; then
6205e1e1713cSmrg	      $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
6206e1e1713cSmrg	      finalize=no
6207e1e1713cSmrg	    fi
6208e1e1713cSmrg	  done
6209e1e1713cSmrg
6210e1e1713cSmrg	  relink_command=
6211e1e1713cSmrg	  # Note that it is not necessary on cygwin/mingw to append a dot to
6212e1e1713cSmrg	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
6213e1e1713cSmrg	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
6214e1e1713cSmrg	  # `FILE.' does not work on cygwin managed mounts.
6215e1e1713cSmrg	  #
6216e1e1713cSmrg	  # If there is no directory component, then add one.
6217e1e1713cSmrg	  case $wrapper in
6218e1e1713cSmrg	  */* | *\\*) . ${wrapper} ;;
6219e1e1713cSmrg	  *) . ./${wrapper} ;;
6220e1e1713cSmrg	  esac
6221e1e1713cSmrg
6222e1e1713cSmrg	  outputname=
6223e1e1713cSmrg	  if test "$fast_install" = no && test -n "$relink_command"; then
6224e1e1713cSmrg	    if test "$finalize" = yes && test -z "$run"; then
6225e1e1713cSmrg	      tmpdir=`func_mktempdir`
6226e1e1713cSmrg	      file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
6227e1e1713cSmrg	      outputname="$tmpdir/$file"
6228e1e1713cSmrg	      # Replace the output file specification.
6229e1e1713cSmrg	      relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP`
6230e1e1713cSmrg
6231e1e1713cSmrg	      $show "$relink_command"
6232e1e1713cSmrg	      if $run eval "$relink_command"; then :
6233e1e1713cSmrg	      else
6234e1e1713cSmrg		$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
6235e1e1713cSmrg		${rm}r "$tmpdir"
6236e1e1713cSmrg		continue
6237e1e1713cSmrg	      fi
6238e1e1713cSmrg	      file="$outputname"
6239e1e1713cSmrg	    else
6240e1e1713cSmrg	      $echo "$modename: warning: cannot relink \`$file'" 1>&2
6241e1e1713cSmrg	    fi
62427a84e134Smrg	  else
6243e1e1713cSmrg	    # Install the binary that we compiled earlier.
6244e1e1713cSmrg	    file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
62457a84e134Smrg	  fi
6246e1e1713cSmrg	fi
6247775e7de9Smrg
6248e1e1713cSmrg	# remove .exe since cygwin /usr/bin/install will append another
6249e1e1713cSmrg	# one anyway 
6250e1e1713cSmrg	case $install_prog,$host in
6251e1e1713cSmrg	*/usr/bin/install*,*cygwin*)
6252e1e1713cSmrg	  case $file:$destfile in
6253e1e1713cSmrg	  *.exe:*.exe)
6254e1e1713cSmrg	    # this is ok
6255e1e1713cSmrg	    ;;
6256e1e1713cSmrg	  *.exe:*)
6257e1e1713cSmrg	    destfile=$destfile.exe
6258e1e1713cSmrg	    ;;
6259e1e1713cSmrg	  *:*.exe)
6260e1e1713cSmrg	    destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
6261e1e1713cSmrg	    ;;
6262e1e1713cSmrg	  esac
6263e1e1713cSmrg	  ;;
62647a84e134Smrg	esac
6265e1e1713cSmrg	$show "$install_prog$stripme $file $destfile"
6266e1e1713cSmrg	$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
6267e1e1713cSmrg	test -n "$outputname" && ${rm}r "$tmpdir"
6268e1e1713cSmrg	;;
6269e1e1713cSmrg      esac
6270e1e1713cSmrg    done
62717a84e134Smrg
6272e1e1713cSmrg    for file in $staticlibs; do
6273e1e1713cSmrg      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
62747a84e134Smrg
6275e1e1713cSmrg      # Set up the ranlib parameters.
6276e1e1713cSmrg      oldlib="$destdir/$name"
62777a84e134Smrg
6278e1e1713cSmrg      $show "$install_prog $file $oldlib"
6279e1e1713cSmrg      $run eval "$install_prog \$file \$oldlib" || exit $?
62807a84e134Smrg
6281e1e1713cSmrg      if test -n "$stripme" && test -n "$old_striplib"; then
6282e1e1713cSmrg	$show "$old_striplib $oldlib"
6283e1e1713cSmrg	$run eval "$old_striplib $oldlib" || exit $?
62847a84e134Smrg      fi
62857a84e134Smrg
6286e1e1713cSmrg      # Do each command in the postinstall commands.
6287e1e1713cSmrg      cmds=$old_postinstall_cmds
6288e1e1713cSmrg      save_ifs="$IFS"; IFS='~'
6289e1e1713cSmrg      for cmd in $cmds; do
6290e1e1713cSmrg	IFS="$save_ifs"
6291e1e1713cSmrg	eval cmd=\"$cmd\"
6292e1e1713cSmrg	$show "$cmd"
6293e1e1713cSmrg	$run eval "$cmd" || exit $?
6294e1e1713cSmrg      done
6295e1e1713cSmrg      IFS="$save_ifs"
6296e1e1713cSmrg    done
62977a84e134Smrg
6298e1e1713cSmrg    if test -n "$future_libdirs"; then
6299e1e1713cSmrg      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
6300e1e1713cSmrg    fi
63017a84e134Smrg
6302e1e1713cSmrg    if test -n "$current_libdirs"; then
6303e1e1713cSmrg      # Maybe just do a dry run.
6304e1e1713cSmrg      test -n "$run" && current_libdirs=" -n$current_libdirs"
6305e1e1713cSmrg      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
6306e1e1713cSmrg    else
6307e1e1713cSmrg      exit $EXIT_SUCCESS
6308e1e1713cSmrg    fi
6309e1e1713cSmrg    ;;
63107a84e134Smrg
6311e1e1713cSmrg  # libtool finish mode
6312e1e1713cSmrg  finish)
6313e1e1713cSmrg    modename="$modename: finish"
6314e1e1713cSmrg    libdirs="$nonopt"
6315e1e1713cSmrg    admincmds=
63167a84e134Smrg
6317e1e1713cSmrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
6318e1e1713cSmrg      for dir
6319e1e1713cSmrg      do
6320e1e1713cSmrg	libdirs="$libdirs $dir"
6321e1e1713cSmrg      done
63227a84e134Smrg
6323e1e1713cSmrg      for libdir in $libdirs; do
6324e1e1713cSmrg	if test -n "$finish_cmds"; then
6325e1e1713cSmrg	  # Do each command in the finish commands.
6326e1e1713cSmrg	  cmds=$finish_cmds
6327e1e1713cSmrg	  save_ifs="$IFS"; IFS='~'
6328e1e1713cSmrg	  for cmd in $cmds; do
6329e1e1713cSmrg	    IFS="$save_ifs"
6330e1e1713cSmrg	    eval cmd=\"$cmd\"
6331e1e1713cSmrg	    $show "$cmd"
6332e1e1713cSmrg	    $run eval "$cmd" || admincmds="$admincmds
6333e1e1713cSmrg       $cmd"
63347a84e134Smrg	  done
6335e1e1713cSmrg	  IFS="$save_ifs"
63367a84e134Smrg	fi
6337e1e1713cSmrg	if test -n "$finish_eval"; then
6338e1e1713cSmrg	  # Do the single finish_eval.
6339e1e1713cSmrg	  eval cmds=\"$finish_eval\"
6340e1e1713cSmrg	  $run eval "$cmds" || admincmds="$admincmds
6341e1e1713cSmrg       $cmds"
6342775e7de9Smrg	fi
6343e1e1713cSmrg      done
6344e1e1713cSmrg    fi
6345e1e1713cSmrg
6346e1e1713cSmrg    # Exit here if they wanted silent mode.
6347e1e1713cSmrg    test "$show" = : && exit $EXIT_SUCCESS
6348e1e1713cSmrg
6349e1e1713cSmrg    $echo "X----------------------------------------------------------------------" | $Xsed
6350e1e1713cSmrg    $echo "Libraries have been installed in:"
6351e1e1713cSmrg    for libdir in $libdirs; do
6352e1e1713cSmrg      $echo "   $libdir"
63537a84e134Smrg    done
6354e1e1713cSmrg    $echo
6355e1e1713cSmrg    $echo "If you ever happen to want to link against installed libraries"
6356e1e1713cSmrg    $echo "in a given directory, LIBDIR, you must either use libtool, and"
6357e1e1713cSmrg    $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
6358e1e1713cSmrg    $echo "flag during linking and do at least one of the following:"
6359e1e1713cSmrg    if test -n "$shlibpath_var"; then
6360e1e1713cSmrg      $echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
6361e1e1713cSmrg      $echo "     during execution"
6362e1e1713cSmrg    fi
6363e1e1713cSmrg    if test -n "$runpath_var"; then
6364e1e1713cSmrg      $echo "   - add LIBDIR to the \`$runpath_var' environment variable"
6365e1e1713cSmrg      $echo "     during linking"
6366e1e1713cSmrg    fi
6367e1e1713cSmrg    if test -n "$hardcode_libdir_flag_spec"; then
6368e1e1713cSmrg      libdir=LIBDIR
6369e1e1713cSmrg      eval flag=\"$hardcode_libdir_flag_spec\"
63707a84e134Smrg
6371e1e1713cSmrg      $echo "   - use the \`$flag' linker flag"
6372e1e1713cSmrg    fi
6373e1e1713cSmrg    if test -n "$admincmds"; then
6374e1e1713cSmrg      $echo "   - have your system administrator run these commands:$admincmds"
6375e1e1713cSmrg    fi
6376e1e1713cSmrg    if test -f /etc/ld.so.conf; then
6377e1e1713cSmrg      $echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
6378e1e1713cSmrg    fi
6379e1e1713cSmrg    $echo
6380e1e1713cSmrg    $echo "See any operating system documentation about shared libraries for"
6381e1e1713cSmrg    $echo "more information, such as the ld(1) and ld.so(8) manual pages."
6382e1e1713cSmrg    $echo "X----------------------------------------------------------------------" | $Xsed
6383e1e1713cSmrg    exit $EXIT_SUCCESS
6384e1e1713cSmrg    ;;
63857a84e134Smrg
6386e1e1713cSmrg  # libtool execute mode
6387e1e1713cSmrg  execute)
6388e1e1713cSmrg    modename="$modename: execute"
63897a84e134Smrg
6390e1e1713cSmrg    # The first argument is the command name.
6391e1e1713cSmrg    cmd="$nonopt"
6392e1e1713cSmrg    if test -z "$cmd"; then
6393e1e1713cSmrg      $echo "$modename: you must specify a COMMAND" 1>&2
6394e1e1713cSmrg      $echo "$help"
6395e1e1713cSmrg      exit $EXIT_FAILURE
6396e1e1713cSmrg    fi
63977a84e134Smrg
6398e1e1713cSmrg    # Handle -dlopen flags immediately.
6399e1e1713cSmrg    for file in $execute_dlfiles; do
6400e1e1713cSmrg      if test ! -f "$file"; then
6401e1e1713cSmrg	$echo "$modename: \`$file' is not a file" 1>&2
6402e1e1713cSmrg	$echo "$help" 1>&2
6403e1e1713cSmrg	exit $EXIT_FAILURE
6404e1e1713cSmrg      fi
6405775e7de9Smrg
6406e1e1713cSmrg      dir=
6407e1e1713cSmrg      case $file in
6408e1e1713cSmrg      *.la)
6409e1e1713cSmrg	# Check to see that this really is a libtool archive.
6410e1e1713cSmrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
6411e1e1713cSmrg	else
6412e1e1713cSmrg	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
6413e1e1713cSmrg	  $echo "$help" 1>&2
6414e1e1713cSmrg	  exit $EXIT_FAILURE
6415e1e1713cSmrg	fi
64167a84e134Smrg
6417e1e1713cSmrg	# Read the libtool library.
6418e1e1713cSmrg	dlname=
6419e1e1713cSmrg	library_names=
64207a84e134Smrg
6421e1e1713cSmrg	# If there is no directory component, then add one.
6422e1e1713cSmrg	case $file in
6423e1e1713cSmrg	*/* | *\\*) . $file ;;
6424e1e1713cSmrg	*) . ./$file ;;
6425e1e1713cSmrg	esac
64267a84e134Smrg
6427e1e1713cSmrg	# Skip this library if it cannot be dlopened.
6428e1e1713cSmrg	if test -z "$dlname"; then
6429e1e1713cSmrg	  # Warn if it was a shared library.
6430e1e1713cSmrg	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
6431e1e1713cSmrg	  continue
6432e1e1713cSmrg	fi
64337a84e134Smrg
6434e1e1713cSmrg	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6435e1e1713cSmrg	test "X$dir" = "X$file" && dir=.
64367a84e134Smrg
6437e1e1713cSmrg	if test -f "$dir/$objdir/$dlname"; then
6438e1e1713cSmrg	  dir="$dir/$objdir"
6439e1e1713cSmrg	else
6440e1e1713cSmrg	  if test ! -f "$dir/$dlname"; then
6441e1e1713cSmrg	    $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
6442e1e1713cSmrg	    exit $EXIT_FAILURE
6443e1e1713cSmrg	  fi
6444e1e1713cSmrg	fi
6445e1e1713cSmrg	;;
64467a84e134Smrg
6447e1e1713cSmrg      *.lo)
6448e1e1713cSmrg	# Just add the directory containing the .lo file.
6449e1e1713cSmrg	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6450e1e1713cSmrg	test "X$dir" = "X$file" && dir=.
6451e1e1713cSmrg	;;
64527a84e134Smrg
6453e1e1713cSmrg      *)
6454e1e1713cSmrg	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
6455e1e1713cSmrg	continue
6456e1e1713cSmrg	;;
6457e1e1713cSmrg      esac
64587a84e134Smrg
6459e1e1713cSmrg      # Get the absolute pathname.
6460e1e1713cSmrg      absdir=`cd "$dir" && pwd`
6461e1e1713cSmrg      test -n "$absdir" && dir="$absdir"
64627a84e134Smrg
6463e1e1713cSmrg      # Now add the directory to shlibpath_var.
6464e1e1713cSmrg      if eval "test -z \"\$$shlibpath_var\""; then
6465e1e1713cSmrg	eval "$shlibpath_var=\"\$dir\""
6466e1e1713cSmrg      else
6467e1e1713cSmrg	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
6468e1e1713cSmrg      fi
6469e1e1713cSmrg    done
64707a84e134Smrg
6471e1e1713cSmrg    # This variable tells wrapper scripts just to set shlibpath_var
6472e1e1713cSmrg    # rather than running their programs.
6473e1e1713cSmrg    libtool_execute_magic="$magic"
64747a84e134Smrg
6475e1e1713cSmrg    # Check if any of the arguments is a wrapper script.
6476e1e1713cSmrg    args=
6477e1e1713cSmrg    for file
6478e1e1713cSmrg    do
6479e1e1713cSmrg      case $file in
6480e1e1713cSmrg      -*) ;;
6481e1e1713cSmrg      *)
6482e1e1713cSmrg	# Do a test to see if this is really a libtool program.
6483e1e1713cSmrg	if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6484e1e1713cSmrg	  # If there is no directory component, then add one.
6485e1e1713cSmrg	  case $file in
6486e1e1713cSmrg	  */* | *\\*) . $file ;;
6487e1e1713cSmrg	  *) . ./$file ;;
6488e1e1713cSmrg	  esac
64897a84e134Smrg
6490e1e1713cSmrg	  # Transform arg to wrapped name.
6491e1e1713cSmrg	  file="$progdir/$program"
6492e1e1713cSmrg	fi
6493e1e1713cSmrg	;;
6494e1e1713cSmrg      esac
6495e1e1713cSmrg      # Quote arguments (to preserve shell metacharacters).
6496e1e1713cSmrg      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
6497e1e1713cSmrg      args="$args \"$file\""
6498e1e1713cSmrg    done
64997a84e134Smrg
6500e1e1713cSmrg    if test -z "$run"; then
6501e1e1713cSmrg      if test -n "$shlibpath_var"; then
6502e1e1713cSmrg	# Export the shlibpath_var.
6503e1e1713cSmrg	eval "export $shlibpath_var"
6504e1e1713cSmrg      fi
6505e1e1713cSmrg
6506e1e1713cSmrg      # Restore saved environment variables
6507e1e1713cSmrg      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
6508e1e1713cSmrg      do
6509e1e1713cSmrg	eval "if test \"\${save_$lt_var+set}\" = set; then
6510e1e1713cSmrg		$lt_var=\$save_$lt_var; export $lt_var
6511e1e1713cSmrg	      fi"
6512e1e1713cSmrg      done
65137a84e134Smrg
6514e1e1713cSmrg      # Now prepare to actually exec the command.
6515e1e1713cSmrg      exec_cmd="\$cmd$args"
6516e1e1713cSmrg    else
6517e1e1713cSmrg      # Display what would be done.
6518e1e1713cSmrg      if test -n "$shlibpath_var"; then
6519e1e1713cSmrg	eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
6520e1e1713cSmrg	$echo "export $shlibpath_var"
6521e1e1713cSmrg      fi
6522e1e1713cSmrg      $echo "$cmd$args"
6523e1e1713cSmrg      exit $EXIT_SUCCESS
6524e1e1713cSmrg    fi
6525e1e1713cSmrg    ;;
65267a84e134Smrg
6527e1e1713cSmrg  # libtool clean and uninstall mode
6528e1e1713cSmrg  clean | uninstall)
6529e1e1713cSmrg    modename="$modename: $mode"
6530e1e1713cSmrg    rm="$nonopt"
65317a84e134Smrg    files=
65327a84e134Smrg    rmforce=
65337a84e134Smrg    exit_status=0
65347a84e134Smrg
65357a84e134Smrg    # This variable tells wrapper scripts just to set variables rather
65367a84e134Smrg    # than running their programs.
65377a84e134Smrg    libtool_install_magic="$magic"
65387a84e134Smrg
65397a84e134Smrg    for arg
65407a84e134Smrg    do
65417a84e134Smrg      case $arg in
6542e1e1713cSmrg      -f) rm="$rm $arg"; rmforce=yes ;;
6543e1e1713cSmrg      -*) rm="$rm $arg" ;;
65447a84e134Smrg      *) files="$files $arg" ;;
65457a84e134Smrg      esac
65467a84e134Smrg    done
65477a84e134Smrg
6548e1e1713cSmrg    if test -z "$rm"; then
6549e1e1713cSmrg      $echo "$modename: you must specify an RM program" 1>&2
6550e1e1713cSmrg      $echo "$help" 1>&2
6551e1e1713cSmrg      exit $EXIT_FAILURE
6552e1e1713cSmrg    fi
65537a84e134Smrg
65547a84e134Smrg    rmdirs=
65557a84e134Smrg
65567a84e134Smrg    origobjdir="$objdir"
65577a84e134Smrg    for file in $files; do
6558e1e1713cSmrg      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6559e1e1713cSmrg      if test "X$dir" = "X$file"; then
6560e1e1713cSmrg	dir=.
65617a84e134Smrg	objdir="$origobjdir"
65627a84e134Smrg      else
65637a84e134Smrg	objdir="$dir/$origobjdir"
65647a84e134Smrg      fi
6565e1e1713cSmrg      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
65667a84e134Smrg      test "$mode" = uninstall && objdir="$dir"
65677a84e134Smrg
65687a84e134Smrg      # Remember objdir for removal later, being careful to avoid duplicates
65697a84e134Smrg      if test "$mode" = clean; then
65707a84e134Smrg	case " $rmdirs " in
65717a84e134Smrg	  *" $objdir "*) ;;
65727a84e134Smrg	  *) rmdirs="$rmdirs $objdir" ;;
65737a84e134Smrg	esac
65747a84e134Smrg      fi
65757a84e134Smrg
65767a84e134Smrg      # Don't error if the file doesn't exist and rm -f was used.
6577e1e1713cSmrg      if (test -L "$file") >/dev/null 2>&1 \
6578e1e1713cSmrg	|| (test -h "$file") >/dev/null 2>&1 \
6579e1e1713cSmrg	|| test -f "$file"; then
65807a84e134Smrg	:
65817a84e134Smrg      elif test -d "$file"; then
65827a84e134Smrg	exit_status=1
65837a84e134Smrg	continue
65847a84e134Smrg      elif test "$rmforce" = yes; then
65857a84e134Smrg	continue
65867a84e134Smrg      fi
65877a84e134Smrg
65887a84e134Smrg      rmfiles="$file"
65897a84e134Smrg
65907a84e134Smrg      case $name in
65917a84e134Smrg      *.la)
65927a84e134Smrg	# Possibly a libtool archive, so verify it.
6593e1e1713cSmrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6594e1e1713cSmrg	  . $dir/$name
65957a84e134Smrg
65967a84e134Smrg	  # Delete the libtool libraries and symlinks.
65977a84e134Smrg	  for n in $library_names; do
65987a84e134Smrg	    rmfiles="$rmfiles $objdir/$n"
65997a84e134Smrg	  done
66007a84e134Smrg	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
66017a84e134Smrg
66027a84e134Smrg	  case "$mode" in
66037a84e134Smrg	  clean)
66047a84e134Smrg	    case "  $library_names " in
66057a84e134Smrg	    # "  " in the beginning catches empty $dlname
66067a84e134Smrg	    *" $dlname "*) ;;
66077a84e134Smrg	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
66087a84e134Smrg	    esac
6609e1e1713cSmrg	     test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
66107a84e134Smrg	    ;;
66117a84e134Smrg	  uninstall)
66127a84e134Smrg	    if test -n "$library_names"; then
66137a84e134Smrg	      # Do each command in the postuninstall commands.
6614e1e1713cSmrg	      cmds=$postuninstall_cmds
6615e1e1713cSmrg	      save_ifs="$IFS"; IFS='~'
6616e1e1713cSmrg	      for cmd in $cmds; do
6617e1e1713cSmrg		IFS="$save_ifs"
6618e1e1713cSmrg		eval cmd=\"$cmd\"
6619e1e1713cSmrg		$show "$cmd"
6620e1e1713cSmrg		$run eval "$cmd"
6621e1e1713cSmrg		if test "$?" -ne 0 && test "$rmforce" != yes; then
6622e1e1713cSmrg		  exit_status=1
6623e1e1713cSmrg		fi
6624e1e1713cSmrg	      done
6625e1e1713cSmrg	      IFS="$save_ifs"
66267a84e134Smrg	    fi
66277a84e134Smrg
66287a84e134Smrg	    if test -n "$old_library"; then
66297a84e134Smrg	      # Do each command in the old_postuninstall commands.
6630e1e1713cSmrg	      cmds=$old_postuninstall_cmds
6631e1e1713cSmrg	      save_ifs="$IFS"; IFS='~'
6632e1e1713cSmrg	      for cmd in $cmds; do
6633e1e1713cSmrg		IFS="$save_ifs"
6634e1e1713cSmrg		eval cmd=\"$cmd\"
6635e1e1713cSmrg		$show "$cmd"
6636e1e1713cSmrg		$run eval "$cmd"
6637e1e1713cSmrg		if test "$?" -ne 0 && test "$rmforce" != yes; then
6638e1e1713cSmrg		  exit_status=1
6639e1e1713cSmrg		fi
6640e1e1713cSmrg	      done
6641e1e1713cSmrg	      IFS="$save_ifs"
66427a84e134Smrg	    fi
66437a84e134Smrg	    # FIXME: should reinstall the best remaining shared library.
66447a84e134Smrg	    ;;
66457a84e134Smrg	  esac
66467a84e134Smrg	fi
66477a84e134Smrg	;;
66487a84e134Smrg
66497a84e134Smrg      *.lo)
66507a84e134Smrg	# Possibly a libtool object, so verify it.
6651e1e1713cSmrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
66527a84e134Smrg
66537a84e134Smrg	  # Read the .lo file
6654e1e1713cSmrg	  . $dir/$name
66557a84e134Smrg
66567a84e134Smrg	  # Add PIC object to the list of files to remove.
6657e1e1713cSmrg	  if test -n "$pic_object" \
6658e1e1713cSmrg	     && test "$pic_object" != none; then
66597a84e134Smrg	    rmfiles="$rmfiles $dir/$pic_object"
66607a84e134Smrg	  fi
66617a84e134Smrg
66627a84e134Smrg	  # Add non-PIC object to the list of files to remove.
6663e1e1713cSmrg	  if test -n "$non_pic_object" \
6664e1e1713cSmrg	     && test "$non_pic_object" != none; then
66657a84e134Smrg	    rmfiles="$rmfiles $dir/$non_pic_object"
66667a84e134Smrg	  fi
66677a84e134Smrg	fi
66687a84e134Smrg	;;
66697a84e134Smrg
66707a84e134Smrg      *)
66717a84e134Smrg	if test "$mode" = clean ; then
66727a84e134Smrg	  noexename=$name
66737a84e134Smrg	  case $file in
66747a84e134Smrg	  *.exe)
6675e1e1713cSmrg	    file=`$echo $file|${SED} 's,.exe$,,'`
6676e1e1713cSmrg	    noexename=`$echo $name|${SED} 's,.exe$,,'`
66777a84e134Smrg	    # $file with .exe has already been added to rmfiles,
66787a84e134Smrg	    # add $file without .exe
66797a84e134Smrg	    rmfiles="$rmfiles $file"
66807a84e134Smrg	    ;;
66817a84e134Smrg	  esac
66827a84e134Smrg	  # Do a test to see if this is a libtool program.
6683e1e1713cSmrg	  if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6684e1e1713cSmrg	    relink_command=
6685e1e1713cSmrg	    . $dir/$noexename
66867a84e134Smrg
66877a84e134Smrg	    # note $name still contains .exe if it was in $file originally
66887a84e134Smrg	    # as does the version of $file that was added into $rmfiles
66897a84e134Smrg	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
66907a84e134Smrg	    if test "$fast_install" = yes && test -n "$relink_command"; then
66917a84e134Smrg	      rmfiles="$rmfiles $objdir/lt-$name"
66927a84e134Smrg	    fi
66937a84e134Smrg	    if test "X$noexename" != "X$name" ; then
66947a84e134Smrg	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
66957a84e134Smrg	    fi
66967a84e134Smrg	  fi
66977a84e134Smrg	fi
66987a84e134Smrg	;;
66997a84e134Smrg      esac
6700e1e1713cSmrg      $show "$rm $rmfiles"
6701e1e1713cSmrg      $run $rm $rmfiles || exit_status=1
67027a84e134Smrg    done
67037a84e134Smrg    objdir="$origobjdir"
67047a84e134Smrg
67057a84e134Smrg    # Try to remove the ${objdir}s in the directories where we deleted files
67067a84e134Smrg    for dir in $rmdirs; do
67077a84e134Smrg      if test -d "$dir"; then
6708e1e1713cSmrg	$show "rmdir $dir"
6709e1e1713cSmrg	$run rmdir $dir >/dev/null 2>&1
67107a84e134Smrg      fi
67117a84e134Smrg    done
67127a84e134Smrg
67137a84e134Smrg    exit $exit_status
6714e1e1713cSmrg    ;;
67157a84e134Smrg
6716e1e1713cSmrg  "")
6717e1e1713cSmrg    $echo "$modename: you must specify a MODE" 1>&2
6718e1e1713cSmrg    $echo "$generic_help" 1>&2
6719e1e1713cSmrg    exit $EXIT_FAILURE
6720e1e1713cSmrg    ;;
6721e1e1713cSmrg  esac
6722775e7de9Smrg
6723e1e1713cSmrg  if test -z "$exec_cmd"; then
6724e1e1713cSmrg    $echo "$modename: invalid operation mode \`$mode'" 1>&2
6725e1e1713cSmrg    $echo "$generic_help" 1>&2
6726e1e1713cSmrg    exit $EXIT_FAILURE
6727e1e1713cSmrg  fi
6728e1e1713cSmrgfi # test -z "$show_help"
67297a84e134Smrg
67307a84e134Smrgif test -n "$exec_cmd"; then
6731e1e1713cSmrg  eval exec $exec_cmd
67327a84e134Smrg  exit $EXIT_FAILURE
67337a84e134Smrgfi
67347a84e134Smrg
6735e1e1713cSmrg# We need to display help for each of the modes.
6736e1e1713cSmrgcase $mode in
6737e1e1713cSmrg"") $echo \
6738e1e1713cSmrg"Usage: $modename [OPTION]... [MODE-ARG]...
6739e1e1713cSmrg
6740e1e1713cSmrgProvide generalized library-building support services.
6741e1e1713cSmrg
6742e1e1713cSmrg    --config          show all configuration variables
6743e1e1713cSmrg    --debug           enable verbose shell tracing
6744e1e1713cSmrg-n, --dry-run         display commands without modifying any files
6745e1e1713cSmrg    --features        display basic configuration information and exit
6746e1e1713cSmrg    --finish          same as \`--mode=finish'
6747e1e1713cSmrg    --help            display this help message and exit
6748e1e1713cSmrg    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
6749e1e1713cSmrg    --quiet           same as \`--silent'
6750e1e1713cSmrg    --silent          don't print informational messages
6751e1e1713cSmrg    --tag=TAG         use configuration variables from tag TAG
6752e1e1713cSmrg    --version         print version information
6753e1e1713cSmrg
6754e1e1713cSmrgMODE must be one of the following:
6755e1e1713cSmrg
6756e1e1713cSmrg      clean           remove files from the build directory
6757e1e1713cSmrg      compile         compile a source file into a libtool object
6758e1e1713cSmrg      execute         automatically set library path, then run a program
6759e1e1713cSmrg      finish          complete the installation of libtool libraries
6760e1e1713cSmrg      install         install libraries or executables
6761e1e1713cSmrg      link            create a library or an executable
6762e1e1713cSmrg      uninstall       remove libraries from an installed directory
6763e1e1713cSmrg
6764e1e1713cSmrgMODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
6765e1e1713cSmrga more detailed description of MODE.
6766e1e1713cSmrg
6767e1e1713cSmrgReport bugs to <bug-libtool@gnu.org>."
6768e1e1713cSmrg  exit $EXIT_SUCCESS
6769e1e1713cSmrg  ;;
6770e1e1713cSmrg
6771e1e1713cSmrgclean)
6772e1e1713cSmrg  $echo \
6773e1e1713cSmrg"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
6774e1e1713cSmrg
6775e1e1713cSmrgRemove files from the build directory.
6776e1e1713cSmrg
6777e1e1713cSmrgRM is the name of the program to use to delete files associated with each FILE
6778e1e1713cSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
6779e1e1713cSmrgto RM.
6780e1e1713cSmrg
6781e1e1713cSmrgIf FILE is a libtool library, object or program, all the files associated
6782e1e1713cSmrgwith it are deleted. Otherwise, only FILE itself is deleted using RM."
6783e1e1713cSmrg  ;;
6784e1e1713cSmrg
6785e1e1713cSmrgcompile)
6786e1e1713cSmrg  $echo \
6787e1e1713cSmrg"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
6788e1e1713cSmrg
6789e1e1713cSmrgCompile a source file into a libtool library object.
6790e1e1713cSmrg
6791e1e1713cSmrgThis mode accepts the following additional options:
6792e1e1713cSmrg
6793e1e1713cSmrg  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
6794e1e1713cSmrg  -prefer-pic       try to building PIC objects only
6795e1e1713cSmrg  -prefer-non-pic   try to building non-PIC objects only
6796e1e1713cSmrg  -static           always build a \`.o' file suitable for static linking
6797e1e1713cSmrg
6798e1e1713cSmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
6799e1e1713cSmrgfrom the given SOURCEFILE.
6800e1e1713cSmrg
6801e1e1713cSmrgThe output file name is determined by removing the directory component from
6802e1e1713cSmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the
6803e1e1713cSmrglibrary object suffix, \`.lo'."
6804e1e1713cSmrg  ;;
6805e1e1713cSmrg
6806e1e1713cSmrgexecute)
6807e1e1713cSmrg  $echo \
6808e1e1713cSmrg"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
6809e1e1713cSmrg
6810e1e1713cSmrgAutomatically set library path, then run a program.
6811e1e1713cSmrg
6812e1e1713cSmrgThis mode accepts the following additional options:
6813e1e1713cSmrg
6814e1e1713cSmrg  -dlopen FILE      add the directory containing FILE to the library path
6815e1e1713cSmrg
6816e1e1713cSmrgThis mode sets the library path environment variable according to \`-dlopen'
6817e1e1713cSmrgflags.
6818e1e1713cSmrg
6819e1e1713cSmrgIf any of the ARGS are libtool executable wrappers, then they are translated
6820e1e1713cSmrginto their corresponding uninstalled binary, and any of their required library
6821e1e1713cSmrgdirectories are added to the library path.
6822e1e1713cSmrg
6823e1e1713cSmrgThen, COMMAND is executed, with ARGS as arguments."
6824e1e1713cSmrg  ;;
6825e1e1713cSmrg
6826e1e1713cSmrgfinish)
6827e1e1713cSmrg  $echo \
6828e1e1713cSmrg"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
6829e1e1713cSmrg
6830e1e1713cSmrgComplete the installation of libtool libraries.
6831e1e1713cSmrg
6832e1e1713cSmrgEach LIBDIR is a directory that contains libtool libraries.
6833e1e1713cSmrg
6834e1e1713cSmrgThe commands that this mode executes may require superuser privileges.  Use
6835e1e1713cSmrgthe \`--dry-run' option if you just want to see what would be executed."
6836e1e1713cSmrg  ;;
6837e1e1713cSmrg
6838e1e1713cSmrginstall)
6839e1e1713cSmrg  $echo \
6840e1e1713cSmrg"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
6841e1e1713cSmrg
6842e1e1713cSmrgInstall executables or libraries.
6843e1e1713cSmrg
6844e1e1713cSmrgINSTALL-COMMAND is the installation command.  The first component should be
6845e1e1713cSmrgeither the \`install' or \`cp' program.
6846e1e1713cSmrg
6847e1e1713cSmrgThe rest of the components are interpreted as arguments to that command (only
6848e1e1713cSmrgBSD-compatible install options are recognized)."
6849e1e1713cSmrg  ;;
6850e1e1713cSmrg
6851e1e1713cSmrglink)
6852e1e1713cSmrg  $echo \
6853e1e1713cSmrg"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
6854e1e1713cSmrg
6855e1e1713cSmrgLink object files or libraries together to form another library, or to
6856e1e1713cSmrgcreate an executable program.
68577a84e134Smrg
6858e1e1713cSmrgLINK-COMMAND is a command using the C compiler that you would use to create
6859e1e1713cSmrga program from several object files.
6860e1e1713cSmrg
6861e1e1713cSmrgThe following components of LINK-COMMAND are treated specially:
6862e1e1713cSmrg
6863e1e1713cSmrg  -all-static       do not do any dynamic linking at all
6864e1e1713cSmrg  -avoid-version    do not add a version suffix if possible
6865e1e1713cSmrg  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
6866e1e1713cSmrg  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
6867e1e1713cSmrg  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
6868e1e1713cSmrg  -export-symbols SYMFILE
6869e1e1713cSmrg                    try to export only the symbols listed in SYMFILE
6870e1e1713cSmrg  -export-symbols-regex REGEX
6871e1e1713cSmrg                    try to export only the symbols matching REGEX
6872e1e1713cSmrg  -LLIBDIR          search LIBDIR for required installed libraries
6873e1e1713cSmrg  -lNAME            OUTPUT-FILE requires the installed library libNAME
6874e1e1713cSmrg  -module           build a library that can dlopened
6875e1e1713cSmrg  -no-fast-install  disable the fast-install mode
6876e1e1713cSmrg  -no-install       link a not-installable executable
6877e1e1713cSmrg  -no-undefined     declare that a library does not refer to external symbols
6878e1e1713cSmrg  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
6879e1e1713cSmrg  -objectlist FILE  Use a list of object files found in FILE to specify objects
6880e1e1713cSmrg  -precious-files-regex REGEX
6881e1e1713cSmrg                    don't remove output files matching REGEX
6882e1e1713cSmrg  -release RELEASE  specify package release information
6883e1e1713cSmrg  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
6884e1e1713cSmrg  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
6885e1e1713cSmrg  -static           do not do any dynamic linking of uninstalled libtool libraries
6886e1e1713cSmrg  -static-libtool-libs
6887e1e1713cSmrg                    do not do any dynamic linking of libtool libraries
6888e1e1713cSmrg  -version-info CURRENT[:REVISION[:AGE]]
6889e1e1713cSmrg                    specify library version info [each variable defaults to 0]
6890e1e1713cSmrg
6891e1e1713cSmrgAll other options (arguments beginning with \`-') are ignored.
6892e1e1713cSmrg
6893e1e1713cSmrgEvery other argument is treated as a filename.  Files ending in \`.la' are
6894e1e1713cSmrgtreated as uninstalled libtool libraries, other files are standard or library
6895e1e1713cSmrgobject files.
6896e1e1713cSmrg
6897e1e1713cSmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
6898e1e1713cSmrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is
6899e1e1713cSmrgrequired, except when creating a convenience library.
6900e1e1713cSmrg
6901e1e1713cSmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
6902e1e1713cSmrgusing \`ar' and \`ranlib', or on Windows using \`lib'.
6903e1e1713cSmrg
6904e1e1713cSmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
6905e1e1713cSmrgis created, otherwise an executable program is created."
6906e1e1713cSmrg  ;;
6907e1e1713cSmrg
6908e1e1713cSmrguninstall)
6909e1e1713cSmrg  $echo \
6910e1e1713cSmrg"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
6911e1e1713cSmrg
6912e1e1713cSmrgRemove libraries from an installation directory.
6913e1e1713cSmrg
6914e1e1713cSmrgRM is the name of the program to use to delete files associated with each FILE
6915e1e1713cSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
6916e1e1713cSmrgto RM.
6917e1e1713cSmrg
6918e1e1713cSmrgIf FILE is a libtool library, all the files associated with it are deleted.
6919e1e1713cSmrgOtherwise, only FILE itself is deleted using RM."
6920e1e1713cSmrg  ;;
6921e1e1713cSmrg
6922e1e1713cSmrg*)
6923e1e1713cSmrg  $echo "$modename: invalid operation mode \`$mode'" 1>&2
6924e1e1713cSmrg  $echo "$help" 1>&2
6925e1e1713cSmrg  exit $EXIT_FAILURE
6926e1e1713cSmrg  ;;
6927e1e1713cSmrgesac
6928e1e1713cSmrg
6929e1e1713cSmrg$echo
6930e1e1713cSmrg$echo "Try \`$modename --help' for more information about other modes."
6931e1e1713cSmrg
6932e1e1713cSmrgexit $?
69337a84e134Smrg
69347a84e134Smrg# The TAGs below are defined such that we never get into a situation
69357a84e134Smrg# in which we disable both kinds of libraries.  Given conflicting
69367a84e134Smrg# choices, we go for a static library, that is the most portable,
69377a84e134Smrg# since we can't tell whether shared libraries were disabled because
69387a84e134Smrg# the user asked for that or because the platform doesn't support
69397a84e134Smrg# them.  This is particularly important on AIX, because we don't
69407a84e134Smrg# support having both static and shared libraries enabled at the same
69417a84e134Smrg# time on that platform, so we default to a shared-only configuration.
69427a84e134Smrg# If a disable-shared tag is given, we'll fallback to a static-only
69437a84e134Smrg# configuration.  But we'll never go from static-only to shared-only.
69447a84e134Smrg
69457a84e134Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
6946e1e1713cSmrgdisable_libs=shared
69477a84e134Smrg# ### END LIBTOOL TAG CONFIG: disable-shared
69487a84e134Smrg
69497a84e134Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static
6950e1e1713cSmrgdisable_libs=static
69517a84e134Smrg# ### END LIBTOOL TAG CONFIG: disable-static
69527a84e134Smrg
69537a84e134Smrg# Local Variables:
69547a84e134Smrg# mode:shell-script
69557a84e134Smrg# sh-indentation:2
69567a84e134Smrg# End:
6957