ltmain.sh revision e6f085ba
1e6f085baSmrg# ltmain.sh - Provide generalized library-building support services.
2e6f085baSmrg# NOTE: Changing this file will not affect anything until you rerun configure.
3e6f085baSmrg#
4e6f085baSmrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
5e6f085baSmrg# 2007, 2008  Free Software Foundation, Inc.
6e6f085baSmrg# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
7e6f085baSmrg#
8e6f085baSmrg# This program is free software; you can redistribute it and/or modify
995b296d0Smrg# it under the terms of the GNU General Public License as published by
1095b296d0Smrg# the Free Software Foundation; either version 2 of the License, or
1195b296d0Smrg# (at your option) any later version.
1295b296d0Smrg#
13e6f085baSmrg# This program is distributed in the hope that it will be useful, but
1495b296d0Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
1595b296d0Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1695b296d0Smrg# General Public License for more details.
1795b296d0Smrg#
1895b296d0Smrg# You should have received a copy of the GNU General Public License
19e6f085baSmrg# along with this program; if not, write to the Free Software
20e6f085baSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
2139713583Smrg#
22e6f085baSmrg# As a special exception to the GNU General Public License, if you
23e6f085baSmrg# distribute this file as part of a program that contains a
24e6f085baSmrg# configuration script generated by Autoconf, you may include it under
25e6f085baSmrg# the same distribution terms that you use for the rest of that program.
26e6f085baSmrg
27e6f085baSmrgbasename="s,^.*/,,g"
28e6f085baSmrg
29e6f085baSmrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
30e6f085baSmrg# is ksh but when the shell is invoked as "sh" and the current value of
31e6f085baSmrg# the _XPG environment variable is not equal to 1 (one), the special
32e6f085baSmrg# positional parameter $0, within a function call, is the name of the
33e6f085baSmrg# function.
34e6f085baSmrgprogpath="$0"
35e6f085baSmrg
36e6f085baSmrg# The name of this program:
37e6f085baSmrgprogname=`echo "$progpath" | $SED $basename`
38e6f085baSmrgmodename="$progname"
39e6f085baSmrg
40e6f085baSmrg# Global variables:
41e6f085baSmrgEXIT_SUCCESS=0
42e6f085baSmrgEXIT_FAILURE=1
4395b296d0Smrg
4495b296d0SmrgPROGRAM=ltmain.sh
4595b296d0SmrgPACKAGE=libtool
46e6f085baSmrgVERSION=1.5.26
47e6f085baSmrgTIMESTAMP=" (1.1220.2.493 2008/02/01 16:58:18)"
48ff89ac2bSmrg
49e6f085baSmrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
50ff89ac2bSmrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
51ff89ac2bSmrg  emulate sh
52ff89ac2bSmrg  NULLCMD=:
53ff89ac2bSmrg  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
54ff89ac2bSmrg  # is contrary to our usage.  Disable this feature.
55ff89ac2bSmrg  alias -g '${1+"$@"}'='"$@"'
5695b296d0Smrg  setopt NO_GLOB_SUBST
57ff89ac2bSmrgelse
58ff89ac2bSmrg  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
5995b296d0Smrgfi
60ff89ac2bSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
61ff89ac2bSmrgDUALCASE=1; export DUALCASE # for MKS sh
6295b296d0Smrg
63e6f085baSmrg# Check that we have a working $echo.
64e6f085baSmrgif test "X$1" = X--no-reexec; then
65e6f085baSmrg  # Discard the --no-reexec flag, and continue.
66e6f085baSmrg  shift
67e6f085baSmrgelif test "X$1" = X--fallback-echo; then
68e6f085baSmrg  # Avoid inline document here, it may be left over
69e6f085baSmrg  :
70e6f085baSmrgelif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
71e6f085baSmrg  # Yippee, $echo works!
72e6f085baSmrg  :
73e6f085baSmrgelse
74e6f085baSmrg  # Restart under the correct shell, and then maybe $echo will work.
75e6f085baSmrg  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
76e6f085baSmrgfi
77e6f085baSmrg
78e6f085baSmrgif test "X$1" = X--fallback-echo; then
79e6f085baSmrg  # used as fallback echo
80e6f085baSmrg  shift
81e6f085baSmrg  cat <<EOF
82e6f085baSmrg$*
83e6f085baSmrgEOF
84e6f085baSmrg  exit $EXIT_SUCCESS
85e6f085baSmrgfi
86e6f085baSmrg
87e6f085baSmrgdefault_mode=
88e6f085baSmrghelp="Try \`$progname --help' for more information."
89e6f085baSmrgmagic="%%%MAGIC variable%%%"
90e6f085baSmrgmkdir="mkdir"
91e6f085baSmrgmv="mv -f"
92e6f085baSmrgrm="rm -f"
93e6f085baSmrg
94e6f085baSmrg# Sed substitution that helps us do robust quoting.  It backslashifies
95e6f085baSmrg# metacharacters that are still active within double-quoted strings.
96e6f085baSmrgXsed="${SED}"' -e 1s/^X//'
97e6f085baSmrgsed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
98e6f085baSmrg# test EBCDIC or ASCII
99e6f085baSmrgcase `echo X|tr X '\101'` in
100e6f085baSmrg A) # ASCII based system
101e6f085baSmrg    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
102e6f085baSmrg  SP2NL='tr \040 \012'
103e6f085baSmrg  NL2SP='tr \015\012 \040\040'
104e6f085baSmrg  ;;
105e6f085baSmrg *) # EBCDIC based system
106e6f085baSmrg  SP2NL='tr \100 \n'
107e6f085baSmrg  NL2SP='tr \r\n \100\100'
108e6f085baSmrg  ;;
109e6f085baSmrgesac
110e6f085baSmrg
111e6f085baSmrg# NLS nuisances.
11295b296d0Smrg# Only set LANG and LC_ALL to C if already set.
11395b296d0Smrg# These must not be set unconditionally because not all systems understand
11495b296d0Smrg# e.g. LANG=C (notably SCO).
115e6f085baSmrg# We save the old values to restore during execute mode.
116e6f085baSmrglt_env=
117ff89ac2bSmrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
118ff89ac2bSmrgdo
119ff89ac2bSmrg  eval "if test \"\${$lt_var+set}\" = set; then
120e6f085baSmrg	  save_$lt_var=\$$lt_var
121e6f085baSmrg	  lt_env=\"$lt_var=\$$lt_var \$lt_env\"
122e6f085baSmrg	  $lt_var=C
123ff89ac2bSmrg	  export $lt_var
124ff89ac2bSmrg	fi"
125ff89ac2bSmrgdone
126ff89ac2bSmrg
127e6f085baSmrgif test -n "$lt_env"; then
128e6f085baSmrg  lt_env="env $lt_env"
129e6f085baSmrgfi
13095b296d0Smrg
13195b296d0Smrg# Make sure IFS has a sensible default
13295b296d0Smrglt_nl='
13395b296d0Smrg'
13495b296d0SmrgIFS=" 	$lt_nl"
13595b296d0Smrg
136e6f085baSmrgif test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
137e6f085baSmrg  $echo "$modename: not configured to build any kind of library" 1>&2
138e6f085baSmrg  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
139e6f085baSmrg  exit $EXIT_FAILURE
140e6f085baSmrgfi
14139713583Smrg
142e6f085baSmrg# Global variables.
143e6f085baSmrgmode=$default_mode
144e6f085baSmrgnonopt=
145e6f085baSmrgprev=
146e6f085baSmrgprevopt=
147e6f085baSmrgrun=
148e6f085baSmrgshow="$echo"
149e6f085baSmrgshow_help=
150e6f085baSmrgexecute_dlfiles=
151e6f085baSmrgduplicate_deps=no
152e6f085baSmrgpreserve_args=
153e6f085baSmrglo2o="s/\\.lo\$/.${objext}/"
154e6f085baSmrgo2lo="s/\\.${objext}\$/.lo/"
155e6f085baSmrgextracted_archives=
156e6f085baSmrgextracted_serial=0
15795b296d0Smrg
158e6f085baSmrg#####################################
159e6f085baSmrg# Shell function definitions:
160e6f085baSmrg# This seems to be the best place for them
16195b296d0Smrg
16295b296d0Smrg# func_mktempdir [string]
16395b296d0Smrg# Make a temporary directory that won't clash with other running
16495b296d0Smrg# libtool processes, and avoids race conditions if possible.  If
16595b296d0Smrg# given, STRING is the basename for that directory.
16695b296d0Smrgfunc_mktempdir ()
16795b296d0Smrg{
16895b296d0Smrg    my_template="${TMPDIR-/tmp}/${1-$progname}"
16995b296d0Smrg
170e6f085baSmrg    if test "$run" = ":"; then
17195b296d0Smrg      # Return a directory name, but don't create it in dry-run mode
17295b296d0Smrg      my_tmpdir="${my_template}-$$"
17395b296d0Smrg    else
17495b296d0Smrg
17595b296d0Smrg      # If mktemp works, use that first and foremost
17695b296d0Smrg      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
17795b296d0Smrg
17895b296d0Smrg      if test ! -d "$my_tmpdir"; then
179e6f085baSmrg	# Failing that, at least try and use $RANDOM to avoid a race
180e6f085baSmrg	my_tmpdir="${my_template}-${RANDOM-0}$$"
18195b296d0Smrg
182e6f085baSmrg	save_mktempdir_umask=`umask`
183e6f085baSmrg	umask 0077
184e6f085baSmrg	$mkdir "$my_tmpdir"
185e6f085baSmrg	umask $save_mktempdir_umask
18695b296d0Smrg      fi
18795b296d0Smrg
18895b296d0Smrg      # If we're not in dry-run mode, bomb out on failure
189e6f085baSmrg      test -d "$my_tmpdir" || {
190e6f085baSmrg        $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
191e6f085baSmrg	exit $EXIT_FAILURE
192e6f085baSmrg      }
19395b296d0Smrg    fi
19495b296d0Smrg
195e6f085baSmrg    $echo "X$my_tmpdir" | $Xsed
19695b296d0Smrg}
19795b296d0Smrg
19895b296d0Smrg
199e6f085baSmrg# func_win32_libid arg
200e6f085baSmrg# return the library type of file 'arg'
201e6f085baSmrg#
202e6f085baSmrg# Need a lot of goo to handle *both* DLLs and import libs
203e6f085baSmrg# Has to be a shell function in order to 'eat' the argument
204e6f085baSmrg# that is supplied when $file_magic_command is called.
205e6f085baSmrgfunc_win32_libid ()
20695b296d0Smrg{
207e6f085baSmrg  win32_libid_type="unknown"
208e6f085baSmrg  win32_fileres=`file -L $1 2>/dev/null`
209e6f085baSmrg  case $win32_fileres in
210e6f085baSmrg  *ar\ archive\ import\ library*) # definitely import
211e6f085baSmrg    win32_libid_type="x86 archive import"
212e6f085baSmrg    ;;
213e6f085baSmrg  *ar\ archive*) # could be an import, or static
214e6f085baSmrg    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
215e6f085baSmrg      $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
216e6f085baSmrg      win32_nmres=`eval $NM -f posix -A $1 | \
217e6f085baSmrg	$SED -n -e '1,100{
218e6f085baSmrg		/ I /{
219e6f085baSmrg			s,.*,import,
220e6f085baSmrg			p
221e6f085baSmrg			q
222e6f085baSmrg			}
223e6f085baSmrg		}'`
224e6f085baSmrg      case $win32_nmres in
225e6f085baSmrg      import*)  win32_libid_type="x86 archive import";;
226e6f085baSmrg      *)        win32_libid_type="x86 archive static";;
227e6f085baSmrg      esac
228e6f085baSmrg    fi
229e6f085baSmrg    ;;
230e6f085baSmrg  *DLL*)
231e6f085baSmrg    win32_libid_type="x86 DLL"
232e6f085baSmrg    ;;
233e6f085baSmrg  *executable*) # but shell scripts are "executable" too...
234e6f085baSmrg    case $win32_fileres in
235e6f085baSmrg    *MS\ Windows\ PE\ Intel*)
236e6f085baSmrg      win32_libid_type="x86 DLL"
237e6f085baSmrg      ;;
23895b296d0Smrg    esac
239e6f085baSmrg    ;;
240e6f085baSmrg  esac
241e6f085baSmrg  $echo $win32_libid_type
24295b296d0Smrg}
24395b296d0Smrg
24495b296d0Smrg
245e6f085baSmrg# func_infer_tag arg
246e6f085baSmrg# Infer tagged configuration to use if any are available and
247e6f085baSmrg# if one wasn't chosen via the "--tag" command line option.
248e6f085baSmrg# Only attempt this if the compiler in the base compile
249e6f085baSmrg# command doesn't match the default compiler.
250e6f085baSmrg# arg is usually of the form 'gcc ...'
251e6f085baSmrgfunc_infer_tag ()
25295b296d0Smrg{
253e6f085baSmrg    if test -n "$available_tags" && test -z "$tagname"; then
254e6f085baSmrg      CC_quoted=
255e6f085baSmrg      for arg in $CC; do
256e6f085baSmrg	case $arg in
257e6f085baSmrg	  *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
258e6f085baSmrg	  arg="\"$arg\""
259e6f085baSmrg	  ;;
260e6f085baSmrg	esac
261e6f085baSmrg	CC_quoted="$CC_quoted $arg"
262e6f085baSmrg      done
263e6f085baSmrg      case $@ in
264e6f085baSmrg      # Blanks in the command may have been stripped by the calling shell,
265e6f085baSmrg      # but not from the CC environment variable when configure was run.
266e6f085baSmrg      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
267e6f085baSmrg      # Blanks at the start of $base_compile will cause this to fail
268e6f085baSmrg      # if we don't check for them as well.
26995b296d0Smrg      *)
270e6f085baSmrg	for z in $available_tags; do
271e6f085baSmrg	  if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
272e6f085baSmrg	    # Evaluate the configuration.
273e6f085baSmrg	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
274e6f085baSmrg	    CC_quoted=
275e6f085baSmrg	    for arg in $CC; do
276e6f085baSmrg	    # Double-quote args containing other shell metacharacters.
277e6f085baSmrg	    case $arg in
278e6f085baSmrg	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
279e6f085baSmrg	      arg="\"$arg\""
280e6f085baSmrg	      ;;
281e6f085baSmrg	    esac
282e6f085baSmrg	    CC_quoted="$CC_quoted $arg"
283e6f085baSmrg	  done
284e6f085baSmrg	    case "$@ " in
285e6f085baSmrg	      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
286e6f085baSmrg	      # The compiler in the base compile command matches
287e6f085baSmrg	      # the one in the tagged configuration.
288e6f085baSmrg	      # Assume this is the tagged configuration we want.
289e6f085baSmrg	      tagname=$z
290e6f085baSmrg	      break
291e6f085baSmrg	      ;;
292e6f085baSmrg	    esac
293e6f085baSmrg	  fi
294e6f085baSmrg	done
295e6f085baSmrg	# If $tagname still isn't set, then no tagged configuration
296e6f085baSmrg	# was found and let the user know that the "--tag" command
297e6f085baSmrg	# line option must be used.
298e6f085baSmrg	if test -z "$tagname"; then
299e6f085baSmrg	  $echo "$modename: unable to infer tagged configuration"
300e6f085baSmrg	  $echo "$modename: specify a tag with \`--tag'" 1>&2
301e6f085baSmrg	  exit $EXIT_FAILURE
302e6f085baSmrg#        else
303e6f085baSmrg#          $echo "$modename: using $tagname tagged configuration"
304e6f085baSmrg	fi
305e6f085baSmrg	;;
306e6f085baSmrg      esac
307e6f085baSmrg    fi
30895b296d0Smrg}
30995b296d0Smrg
31095b296d0Smrg
311e6f085baSmrg# func_extract_an_archive dir oldlib
312e6f085baSmrgfunc_extract_an_archive ()
31395b296d0Smrg{
314e6f085baSmrg    f_ex_an_ar_dir="$1"; shift
315e6f085baSmrg    f_ex_an_ar_oldlib="$1"
31639713583Smrg
317e6f085baSmrg    $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
318e6f085baSmrg    $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
319e6f085baSmrg    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
320e6f085baSmrg     :
321e6f085baSmrg    else
322e6f085baSmrg      $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
323e6f085baSmrg      exit $EXIT_FAILURE
32495b296d0Smrg    fi
32595b296d0Smrg}
32695b296d0Smrg
327e6f085baSmrg# func_extract_archives gentop oldlib ...
328e6f085baSmrgfunc_extract_archives ()
32995b296d0Smrg{
330e6f085baSmrg    my_gentop="$1"; shift
331e6f085baSmrg    my_oldlibs=${1+"$@"}
332e6f085baSmrg    my_oldobjs=""
333e6f085baSmrg    my_xlib=""
334e6f085baSmrg    my_xabs=""
335e6f085baSmrg    my_xdir=""
336e6f085baSmrg    my_status=""
337e6f085baSmrg
338e6f085baSmrg    $show "${rm}r $my_gentop"
339e6f085baSmrg    $run ${rm}r "$my_gentop"
340e6f085baSmrg    $show "$mkdir $my_gentop"
341e6f085baSmrg    $run $mkdir "$my_gentop"
342e6f085baSmrg    my_status=$?
343e6f085baSmrg    if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
344e6f085baSmrg      exit $my_status
34595b296d0Smrg    fi
34695b296d0Smrg
347e6f085baSmrg    for my_xlib in $my_oldlibs; do
348e6f085baSmrg      # Extract the objects.
349e6f085baSmrg      case $my_xlib in
350e6f085baSmrg	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
351e6f085baSmrg	*) my_xabs=`pwd`"/$my_xlib" ;;
352e6f085baSmrg      esac
353e6f085baSmrg      my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
354e6f085baSmrg      my_xlib_u=$my_xlib
355e6f085baSmrg      while :; do
356e6f085baSmrg        case " $extracted_archives " in
357e6f085baSmrg	*" $my_xlib_u "*)
358e6f085baSmrg	  extracted_serial=`expr $extracted_serial + 1`
359e6f085baSmrg	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
360e6f085baSmrg	*) break ;;
361e6f085baSmrg	esac
362e6f085baSmrg      done
363e6f085baSmrg      extracted_archives="$extracted_archives $my_xlib_u"
364e6f085baSmrg      my_xdir="$my_gentop/$my_xlib_u"
36539713583Smrg
366e6f085baSmrg      $show "${rm}r $my_xdir"
367e6f085baSmrg      $run ${rm}r "$my_xdir"
368e6f085baSmrg      $show "$mkdir $my_xdir"
369e6f085baSmrg      $run $mkdir "$my_xdir"
370e6f085baSmrg      exit_status=$?
371e6f085baSmrg      if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
372e6f085baSmrg	exit $exit_status
373e6f085baSmrg      fi
374e6f085baSmrg      case $host in
375e6f085baSmrg      *-darwin*)
376e6f085baSmrg	$show "Extracting $my_xabs"
377e6f085baSmrg	# Do not bother doing anything if just a dry run
378e6f085baSmrg	if test -z "$run"; then
379e6f085baSmrg	  darwin_orig_dir=`pwd`
380e6f085baSmrg	  cd $my_xdir || exit $?
381e6f085baSmrg	  darwin_archive=$my_xabs
382e6f085baSmrg	  darwin_curdir=`pwd`
383e6f085baSmrg	  darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
384e6f085baSmrg	  darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
385e6f085baSmrg	  if test -n "$darwin_arches"; then 
386e6f085baSmrg	    darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
387e6f085baSmrg	    darwin_arch=
388e6f085baSmrg	    $show "$darwin_base_archive has multiple architectures $darwin_arches"
389e6f085baSmrg	    for darwin_arch in  $darwin_arches ; do
390e6f085baSmrg	      mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
391e6f085baSmrg	      lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
392e6f085baSmrg	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
393e6f085baSmrg	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
394e6f085baSmrg	      cd "$darwin_curdir"
395e6f085baSmrg	      $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
396e6f085baSmrg	    done # $darwin_arches
397e6f085baSmrg      ## Okay now we have a bunch of thin objects, gotta fatten them up :)
398e6f085baSmrg	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
399e6f085baSmrg	    darwin_file=
400e6f085baSmrg	    darwin_files=
401e6f085baSmrg	    for darwin_file in $darwin_filelist; do
402e6f085baSmrg	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
403e6f085baSmrg	      lipo -create -output "$darwin_file" $darwin_files
404e6f085baSmrg	    done # $darwin_filelist
405e6f085baSmrg	    ${rm}r unfat-$$
406e6f085baSmrg	    cd "$darwin_orig_dir"
407e6f085baSmrg	  else
408e6f085baSmrg	    cd "$darwin_orig_dir"
409e6f085baSmrg 	    func_extract_an_archive "$my_xdir" "$my_xabs"
410e6f085baSmrg	  fi # $darwin_arches
411e6f085baSmrg	fi # $run
412e6f085baSmrg	;;
413e6f085baSmrg      *)
414e6f085baSmrg        func_extract_an_archive "$my_xdir" "$my_xabs"
415e6f085baSmrg        ;;
416e6f085baSmrg      esac
417e6f085baSmrg      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
418e6f085baSmrg    done
419e6f085baSmrg    func_extract_archives_result="$my_oldobjs"
42095b296d0Smrg}
421e6f085baSmrg# End of Shell function definitions
422e6f085baSmrg#####################################
42395b296d0Smrg
424e6f085baSmrg# Darwin sucks
425e6f085baSmrgeval std_shrext=\"$shrext_cmds\"
42639713583Smrg
427e6f085baSmrgdisable_libs=no
42839713583Smrg
429e6f085baSmrg# Parse our command line options once, thoroughly.
430e6f085baSmrgwhile test "$#" -gt 0
431e6f085baSmrgdo
432e6f085baSmrg  arg="$1"
43339713583Smrg  shift
43495b296d0Smrg
435e6f085baSmrg  case $arg in
436e6f085baSmrg  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
437e6f085baSmrg  *) optarg= ;;
438e6f085baSmrg  esac
43995b296d0Smrg
440e6f085baSmrg  # If the previous option needs an argument, assign it.
441e6f085baSmrg  if test -n "$prev"; then
442e6f085baSmrg    case $prev in
443e6f085baSmrg    execute_dlfiles)
444e6f085baSmrg      execute_dlfiles="$execute_dlfiles $arg"
445e6f085baSmrg      ;;
446e6f085baSmrg    tag)
447e6f085baSmrg      tagname="$arg"
448e6f085baSmrg      preserve_args="${preserve_args}=$arg"
449e6f085baSmrg
450e6f085baSmrg      # Check whether tagname contains only valid characters
451e6f085baSmrg      case $tagname in
452e6f085baSmrg      *[!-_A-Za-z0-9,/]*)
453e6f085baSmrg	$echo "$progname: invalid tag name: $tagname" 1>&2
454e6f085baSmrg	exit $EXIT_FAILURE
455e6f085baSmrg	;;
456e6f085baSmrg      esac
45795b296d0Smrg
458e6f085baSmrg      case $tagname in
459e6f085baSmrg      CC)
460e6f085baSmrg	# Don't test for the "default" C tag, as we know, it's there, but
461e6f085baSmrg	# not specially marked.
462e6f085baSmrg	;;
463e6f085baSmrg      *)
464e6f085baSmrg	if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
465e6f085baSmrg	  taglist="$taglist $tagname"
466e6f085baSmrg	  # Evaluate the configuration.
467e6f085baSmrg	  eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
468e6f085baSmrg	else
469e6f085baSmrg	  $echo "$progname: ignoring unknown tag $tagname" 1>&2
470e6f085baSmrg	fi
471e6f085baSmrg	;;
472e6f085baSmrg      esac
473e6f085baSmrg      ;;
474e6f085baSmrg    *)
475e6f085baSmrg      eval "$prev=\$arg"
476e6f085baSmrg      ;;
477e6f085baSmrg    esac
47839713583Smrg
479e6f085baSmrg    prev=
480e6f085baSmrg    prevopt=
481e6f085baSmrg    continue
482e6f085baSmrg  fi
48395b296d0Smrg
484e6f085baSmrg  # Have we seen a non-optional argument yet?
485e6f085baSmrg  case $arg in
486e6f085baSmrg  --help)
487e6f085baSmrg    show_help=yes
488e6f085baSmrg    ;;
489ff89ac2bSmrg
490e6f085baSmrg  --version)
491e6f085baSmrg    echo "\
492e6f085baSmrg$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP
49339713583Smrg
494e6f085baSmrgCopyright (C) 2008  Free Software Foundation, Inc.
495e6f085baSmrgThis is free software; see the source for copying conditions.  There is NO
496e6f085baSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
497e6f085baSmrg    exit $?
498e6f085baSmrg    ;;
49995b296d0Smrg
500e6f085baSmrg  --config)
501e6f085baSmrg    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
50295b296d0Smrg    # Now print the configurations for the tags.
50395b296d0Smrg    for tagname in $taglist; do
504e6f085baSmrg      ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
50595b296d0Smrg    done
50639713583Smrg    exit $?
507e6f085baSmrg    ;;
50895b296d0Smrg
509e6f085baSmrg  --debug)
510e6f085baSmrg    $echo "$progname: enabling shell trace mode"
511e6f085baSmrg    set -x
512e6f085baSmrg    preserve_args="$preserve_args $arg"
513e6f085baSmrg    ;;
514e6f085baSmrg
515e6f085baSmrg  --dry-run | -n)
516e6f085baSmrg    run=:
517e6f085baSmrg    ;;
518e6f085baSmrg
519e6f085baSmrg  --features)
520e6f085baSmrg    $echo "host: $host"
52195b296d0Smrg    if test "$build_libtool_libs" = yes; then
522e6f085baSmrg      $echo "enable shared libraries"
52395b296d0Smrg    else
524e6f085baSmrg      $echo "disable shared libraries"
52595b296d0Smrg    fi
52695b296d0Smrg    if test "$build_old_libs" = yes; then
527e6f085baSmrg      $echo "enable static libraries"
52895b296d0Smrg    else
529e6f085baSmrg      $echo "disable static libraries"
53095b296d0Smrg    fi
53195b296d0Smrg    exit $?
532e6f085baSmrg    ;;
53395b296d0Smrg
534e6f085baSmrg  --finish) mode="finish" ;;
53595b296d0Smrg
536e6f085baSmrg  --mode) prevopt="--mode" prev=mode ;;
537e6f085baSmrg  --mode=*) mode="$optarg" ;;
53839713583Smrg
539e6f085baSmrg  --preserve-dup-deps) duplicate_deps="yes" ;;
54095b296d0Smrg
541e6f085baSmrg  --quiet | --silent)
542e6f085baSmrg    show=:
543e6f085baSmrg    preserve_args="$preserve_args $arg"
54495b296d0Smrg    ;;
545e6f085baSmrg
546e6f085baSmrg  --tag)
547e6f085baSmrg    prevopt="--tag"
548e6f085baSmrg    prev=tag
549e6f085baSmrg    preserve_args="$preserve_args --tag"
55095b296d0Smrg    ;;
551e6f085baSmrg  --tag=*)
552e6f085baSmrg    set tag "$optarg" ${1+"$@"}
553e6f085baSmrg    shift
554e6f085baSmrg    prev=tag
555e6f085baSmrg    preserve_args="$preserve_args --tag"
55695b296d0Smrg    ;;
557e6f085baSmrg
558e6f085baSmrg  -dlopen)
559e6f085baSmrg    prevopt="-dlopen"
560e6f085baSmrg    prev=execute_dlfiles
56139713583Smrg    ;;
562e6f085baSmrg
563e6f085baSmrg  -*)
564e6f085baSmrg    $echo "$modename: unrecognized option \`$arg'" 1>&2
565e6f085baSmrg    $echo "$help" 1>&2
566e6f085baSmrg    exit $EXIT_FAILURE
56739713583Smrg    ;;
568e6f085baSmrg
569e6f085baSmrg  *)
570e6f085baSmrg    nonopt="$arg"
571e6f085baSmrg    break
57295b296d0Smrg    ;;
57395b296d0Smrg  esac
574e6f085baSmrgdone
57595b296d0Smrg
576e6f085baSmrgif test -n "$prevopt"; then
577e6f085baSmrg  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
578e6f085baSmrg  $echo "$help" 1>&2
579e6f085baSmrg  exit $EXIT_FAILURE
580e6f085baSmrgfi
58139713583Smrg
582e6f085baSmrgcase $disable_libs in
583e6f085baSmrgno) 
584e6f085baSmrg  ;;
585e6f085baSmrgshared)
586e6f085baSmrg  build_libtool_libs=no
587e6f085baSmrg  build_old_libs=yes
588e6f085baSmrg  ;;
589e6f085baSmrgstatic)
590e6f085baSmrg  build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
591e6f085baSmrg  ;;
592e6f085baSmrgesac
59339713583Smrg
594e6f085baSmrg# If this variable is set in any of the actions, the command in it
595e6f085baSmrg# will be execed at the end.  This prevents here-documents from being
596e6f085baSmrg# left over by shells.
597e6f085baSmrgexec_cmd=
59839713583Smrg
599e6f085baSmrgif test -z "$show_help"; then
60039713583Smrg
601e6f085baSmrg  # Infer the operation mode.
602e6f085baSmrg  if test -z "$mode"; then
603e6f085baSmrg    $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
604e6f085baSmrg    $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
605e6f085baSmrg    case $nonopt in
606e6f085baSmrg    *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
607e6f085baSmrg      mode=link
608e6f085baSmrg      for arg
609e6f085baSmrg      do
610e6f085baSmrg	case $arg in
611e6f085baSmrg	-c)
612e6f085baSmrg	   mode=compile
613e6f085baSmrg	   break
614e6f085baSmrg	   ;;
615e6f085baSmrg	esac
616e6f085baSmrg      done
61795b296d0Smrg      ;;
618e6f085baSmrg    *db | *dbx | *strace | *truss)
619e6f085baSmrg      mode=execute
62039713583Smrg      ;;
621e6f085baSmrg    *install*|cp|mv)
622e6f085baSmrg      mode=install
623e6f085baSmrg      ;;
624e6f085baSmrg    *rm)
625e6f085baSmrg      mode=uninstall
626e6f085baSmrg      ;;
627e6f085baSmrg    *)
628e6f085baSmrg      # If we have no mode, but dlfiles were specified, then do execute mode.
629e6f085baSmrg      test -n "$execute_dlfiles" && mode=execute
63039713583Smrg
631e6f085baSmrg      # Just use the default operation mode.
632e6f085baSmrg      if test -z "$mode"; then
633e6f085baSmrg	if test -n "$nonopt"; then
634e6f085baSmrg	  $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
635e6f085baSmrg	else
636e6f085baSmrg	  $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
637e6f085baSmrg	fi
63895b296d0Smrg      fi
639e6f085baSmrg      ;;
640e6f085baSmrg    esac
64195b296d0Smrg  fi
64295b296d0Smrg
64395b296d0Smrg  # Only execute mode is allowed to have -dlopen flags.
64495b296d0Smrg  if test -n "$execute_dlfiles" && test "$mode" != execute; then
645e6f085baSmrg    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
646e6f085baSmrg    $echo "$help" 1>&2
64795b296d0Smrg    exit $EXIT_FAILURE
64895b296d0Smrg  fi
64995b296d0Smrg
65095b296d0Smrg  # Change the help message to a mode-specific one.
65195b296d0Smrg  generic_help="$help"
652e6f085baSmrg  help="Try \`$modename --help --mode=$mode' for more information."
65395b296d0Smrg
654e6f085baSmrg  # These modes are in order of execution frequency so that they run quickly.
655e6f085baSmrg  case $mode in
656e6f085baSmrg  # libtool compile mode
657e6f085baSmrg  compile)
658e6f085baSmrg    modename="$modename: compile"
659e6f085baSmrg    # Get the compilation command and the source file.
660e6f085baSmrg    base_compile=
661e6f085baSmrg    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
662e6f085baSmrg    suppress_opt=yes
663e6f085baSmrg    suppress_output=
664e6f085baSmrg    arg_mode=normal
665e6f085baSmrg    libobj=
666e6f085baSmrg    later=
66795b296d0Smrg
668e6f085baSmrg    for arg
669e6f085baSmrg    do
670e6f085baSmrg      case $arg_mode in
671e6f085baSmrg      arg  )
672e6f085baSmrg	# do not "continue".  Instead, add this to base_compile
673e6f085baSmrg	lastarg="$arg"
674e6f085baSmrg	arg_mode=normal
675e6f085baSmrg	;;
67695b296d0Smrg
677e6f085baSmrg      target )
678e6f085baSmrg	libobj="$arg"
679e6f085baSmrg	arg_mode=normal
680e6f085baSmrg	continue
681e6f085baSmrg	;;
68295b296d0Smrg
683e6f085baSmrg      normal )
684e6f085baSmrg	# Accept any command-line options.
685e6f085baSmrg	case $arg in
686e6f085baSmrg	-o)
687e6f085baSmrg	  if test -n "$libobj" ; then
688e6f085baSmrg	    $echo "$modename: you cannot specify \`-o' more than once" 1>&2
689e6f085baSmrg	    exit $EXIT_FAILURE
690e6f085baSmrg	  fi
691e6f085baSmrg	  arg_mode=target
692e6f085baSmrg	  continue
693e6f085baSmrg	  ;;
69495b296d0Smrg
695e6f085baSmrg	-static | -prefer-pic | -prefer-non-pic)
696e6f085baSmrg	  later="$later $arg"
697e6f085baSmrg	  continue
698e6f085baSmrg	  ;;
69939713583Smrg
70039713583Smrg	-no-suppress)
70195b296d0Smrg	  suppress_opt=no
70295b296d0Smrg	  continue
70395b296d0Smrg	  ;;
70495b296d0Smrg
70595b296d0Smrg	-Xcompiler)
70695b296d0Smrg	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
70795b296d0Smrg	  continue      #  The current "srcfile" will either be retained or
70895b296d0Smrg	  ;;            #  replaced later.  I would guess that would be a bug.
70995b296d0Smrg
71095b296d0Smrg	-Wc,*)
711e6f085baSmrg	  args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
71295b296d0Smrg	  lastarg=
71395b296d0Smrg	  save_ifs="$IFS"; IFS=','
714e6f085baSmrg 	  for arg in $args; do
71595b296d0Smrg	    IFS="$save_ifs"
716e6f085baSmrg
717e6f085baSmrg	    # Double-quote args containing other shell metacharacters.
718e6f085baSmrg	    # Many Bourne shells cannot handle close brackets correctly
719e6f085baSmrg	    # in scan sets, so we specify it separately.
720e6f085baSmrg	    case $arg in
721e6f085baSmrg	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
722e6f085baSmrg	      arg="\"$arg\""
723e6f085baSmrg	      ;;
724e6f085baSmrg	    esac
725e6f085baSmrg	    lastarg="$lastarg $arg"
72695b296d0Smrg	  done
72795b296d0Smrg	  IFS="$save_ifs"
728e6f085baSmrg	  lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
72995b296d0Smrg
73095b296d0Smrg	  # Add the arguments to base_compile.
73195b296d0Smrg	  base_compile="$base_compile $lastarg"
73295b296d0Smrg	  continue
73395b296d0Smrg	  ;;
73495b296d0Smrg
735e6f085baSmrg	* )
73695b296d0Smrg	  # Accept the current argument as the source file.
73795b296d0Smrg	  # The previous "srcfile" becomes the current argument.
73895b296d0Smrg	  #
73995b296d0Smrg	  lastarg="$srcfile"
74095b296d0Smrg	  srcfile="$arg"
74195b296d0Smrg	  ;;
74295b296d0Smrg	esac  #  case $arg
74395b296d0Smrg	;;
74495b296d0Smrg      esac    #  case $arg_mode
74595b296d0Smrg
74695b296d0Smrg      # Aesthetically quote the previous argument.
747e6f085baSmrg      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
748e6f085baSmrg
749e6f085baSmrg      case $lastarg in
750e6f085baSmrg      # Double-quote args containing other shell metacharacters.
751e6f085baSmrg      # Many Bourne shells cannot handle close brackets correctly
752e6f085baSmrg      # in scan sets, and some SunOS ksh mistreat backslash-escaping
753e6f085baSmrg      # in scan sets (worked around with variable expansion),
754e6f085baSmrg      # and furthermore cannot handle '|' '&' '(' ')' in scan sets 
755e6f085baSmrg      # at all, so we specify them separately.
756e6f085baSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
757e6f085baSmrg	lastarg="\"$lastarg\""
758e6f085baSmrg	;;
759e6f085baSmrg      esac
760e6f085baSmrg
761e6f085baSmrg      base_compile="$base_compile $lastarg"
76295b296d0Smrg    done # for arg
76395b296d0Smrg
76495b296d0Smrg    case $arg_mode in
76595b296d0Smrg    arg)
766e6f085baSmrg      $echo "$modename: you must specify an argument for -Xcompile"
767e6f085baSmrg      exit $EXIT_FAILURE
76895b296d0Smrg      ;;
76995b296d0Smrg    target)
770e6f085baSmrg      $echo "$modename: you must specify a target with \`-o'" 1>&2
771e6f085baSmrg      exit $EXIT_FAILURE
77295b296d0Smrg      ;;
77395b296d0Smrg    *)
77495b296d0Smrg      # Get the name of the library object.
775e6f085baSmrg      [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
77695b296d0Smrg      ;;
77795b296d0Smrg    esac
77895b296d0Smrg
77995b296d0Smrg    # Recognize several different file suffixes.
78095b296d0Smrg    # If the user specifies -o file.o, it is replaced with file.lo
781e6f085baSmrg    xform='[cCFSifmso]'
78295b296d0Smrg    case $libobj in
783e6f085baSmrg    *.ada) xform=ada ;;
784e6f085baSmrg    *.adb) xform=adb ;;
785e6f085baSmrg    *.ads) xform=ads ;;
786e6f085baSmrg    *.asm) xform=asm ;;
787e6f085baSmrg    *.c++) xform=c++ ;;
788e6f085baSmrg    *.cc) xform=cc ;;
789e6f085baSmrg    *.ii) xform=ii ;;
790e6f085baSmrg    *.class) xform=class ;;
791e6f085baSmrg    *.cpp) xform=cpp ;;
792e6f085baSmrg    *.cxx) xform=cxx ;;
793e6f085baSmrg    *.[fF][09]?) xform=[fF][09]. ;;
794e6f085baSmrg    *.for) xform=for ;;
795e6f085baSmrg    *.java) xform=java ;;
796e6f085baSmrg    *.obj) xform=obj ;;
797e6f085baSmrg    *.sx) xform=sx ;;
79895b296d0Smrg    esac
79995b296d0Smrg
800e6f085baSmrg    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
801e6f085baSmrg
80295b296d0Smrg    case $libobj in
803e6f085baSmrg    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
80495b296d0Smrg    *)
805e6f085baSmrg      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
806e6f085baSmrg      exit $EXIT_FAILURE
80795b296d0Smrg      ;;
80895b296d0Smrg    esac
80995b296d0Smrg
81095b296d0Smrg    func_infer_tag $base_compile
81195b296d0Smrg
81295b296d0Smrg    for arg in $later; do
81395b296d0Smrg      case $arg in
81495b296d0Smrg      -static)
81595b296d0Smrg	build_old_libs=yes
81695b296d0Smrg	continue
81795b296d0Smrg	;;
81895b296d0Smrg
81995b296d0Smrg      -prefer-pic)
82095b296d0Smrg	pic_mode=yes
82195b296d0Smrg	continue
82295b296d0Smrg	;;
82395b296d0Smrg
82495b296d0Smrg      -prefer-non-pic)
82595b296d0Smrg	pic_mode=no
82695b296d0Smrg	continue
82795b296d0Smrg	;;
82895b296d0Smrg      esac
82995b296d0Smrg    done
83095b296d0Smrg
831e6f085baSmrg    qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
832e6f085baSmrg    case $qlibobj in
833e6f085baSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
834e6f085baSmrg	qlibobj="\"$qlibobj\"" ;;
835e6f085baSmrg    esac
836e6f085baSmrg    test "X$libobj" != "X$qlibobj" \
837e6f085baSmrg	&& $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' 	&()|`$[]' \
838e6f085baSmrg	&& $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
839e6f085baSmrg    objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
840e6f085baSmrg    xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
841e6f085baSmrg    if test "X$xdir" = "X$obj"; then
842e6f085baSmrg      xdir=
843e6f085baSmrg    else
844e6f085baSmrg      xdir=$xdir/
845e6f085baSmrg    fi
84695b296d0Smrg    lobj=${xdir}$objdir/$objname
84795b296d0Smrg
848e6f085baSmrg    if test -z "$base_compile"; then
849e6f085baSmrg      $echo "$modename: you must specify a compilation command" 1>&2
850e6f085baSmrg      $echo "$help" 1>&2
851e6f085baSmrg      exit $EXIT_FAILURE
852e6f085baSmrg    fi
85395b296d0Smrg
85495b296d0Smrg    # Delete any leftover library objects.
85595b296d0Smrg    if test "$build_old_libs" = yes; then
85695b296d0Smrg      removelist="$obj $lobj $libobj ${libobj}T"
85795b296d0Smrg    else
85895b296d0Smrg      removelist="$lobj $libobj ${libobj}T"
85995b296d0Smrg    fi
86095b296d0Smrg
861e6f085baSmrg    $run $rm $removelist
862e6f085baSmrg    trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
863e6f085baSmrg
86495b296d0Smrg    # On Cygwin there's no "real" PIC flag so we must build both object types
86595b296d0Smrg    case $host_os in
866e6f085baSmrg    cygwin* | mingw* | pw32* | os2*)
86795b296d0Smrg      pic_mode=default
86895b296d0Smrg      ;;
86995b296d0Smrg    esac
87095b296d0Smrg    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
87195b296d0Smrg      # non-PIC code in shared libraries is not supported
87295b296d0Smrg      pic_mode=default
87395b296d0Smrg    fi
87495b296d0Smrg
87595b296d0Smrg    # Calculate the filename of the output object if compiler does
87695b296d0Smrg    # not support -o with -c
87795b296d0Smrg    if test "$compiler_c_o" = no; then
878e6f085baSmrg      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
87995b296d0Smrg      lockfile="$output_obj.lock"
880e6f085baSmrg      removelist="$removelist $output_obj $lockfile"
881e6f085baSmrg      trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
88295b296d0Smrg    else
88395b296d0Smrg      output_obj=
88495b296d0Smrg      need_locks=no
88595b296d0Smrg      lockfile=
88695b296d0Smrg    fi
88795b296d0Smrg
88895b296d0Smrg    # Lock this critical section if it is needed
88995b296d0Smrg    # We use this script file to make the link, it avoids creating a new file
89095b296d0Smrg    if test "$need_locks" = yes; then
891e6f085baSmrg      until $run ln "$progpath" "$lockfile" 2>/dev/null; do
892e6f085baSmrg	$show "Waiting for $lockfile to be removed"
89395b296d0Smrg	sleep 2
89495b296d0Smrg      done
89595b296d0Smrg    elif test "$need_locks" = warn; then
89695b296d0Smrg      if test -f "$lockfile"; then
897e6f085baSmrg	$echo "\
89895b296d0Smrg*** ERROR, $lockfile exists and contains:
89995b296d0Smrg`cat $lockfile 2>/dev/null`
90095b296d0Smrg
90195b296d0SmrgThis indicates that another process is trying to use the same
90295b296d0Smrgtemporary object file, and libtool could not work around it because
90395b296d0Smrgyour compiler does not support \`-c' and \`-o' together.  If you
90495b296d0Smrgrepeat this compilation, it may succeed, by chance, but you had better
90595b296d0Smrgavoid parallel builds (make -j) in this platform, or get a better
90695b296d0Smrgcompiler."
90795b296d0Smrg
908e6f085baSmrg	$run $rm $removelist
90995b296d0Smrg	exit $EXIT_FAILURE
91095b296d0Smrg      fi
911e6f085baSmrg      $echo "$srcfile" > "$lockfile"
91295b296d0Smrg    fi
91395b296d0Smrg
91495b296d0Smrg    if test -n "$fix_srcfile_path"; then
91595b296d0Smrg      eval srcfile=\"$fix_srcfile_path\"
91695b296d0Smrg    fi
917e6f085baSmrg    qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
918e6f085baSmrg    case $qsrcfile in
919e6f085baSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
920e6f085baSmrg      qsrcfile="\"$qsrcfile\"" ;;
921e6f085baSmrg    esac
922e6f085baSmrg
923e6f085baSmrg    $run $rm "$libobj" "${libobj}T"
924e6f085baSmrg
925e6f085baSmrg    # Create a libtool object file (analogous to a ".la" file),
926e6f085baSmrg    # but don't create it if we're doing a dry run.
927e6f085baSmrg    test -z "$run" && cat > ${libobj}T <<EOF
928e6f085baSmrg# $libobj - a libtool object file
929e6f085baSmrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
930e6f085baSmrg#
931e6f085baSmrg# Please DO NOT delete this file!
932e6f085baSmrg# It is necessary for linking the library.
933e6f085baSmrg
934e6f085baSmrg# Name of the PIC object.
935e6f085baSmrgEOF
93695b296d0Smrg
93795b296d0Smrg    # Only build a PIC object if we are building libtool libraries.
93895b296d0Smrg    if test "$build_libtool_libs" = yes; then
93995b296d0Smrg      # Without this assignment, base_compile gets emptied.
94095b296d0Smrg      fbsd_hideous_sh_bug=$base_compile
94195b296d0Smrg
94295b296d0Smrg      if test "$pic_mode" != no; then
94395b296d0Smrg	command="$base_compile $qsrcfile $pic_flag"
94495b296d0Smrg      else
94595b296d0Smrg	# Don't build PIC code
94695b296d0Smrg	command="$base_compile $qsrcfile"
94795b296d0Smrg      fi
94895b296d0Smrg
949e6f085baSmrg      if test ! -d "${xdir}$objdir"; then
950e6f085baSmrg	$show "$mkdir ${xdir}$objdir"
951e6f085baSmrg	$run $mkdir ${xdir}$objdir
952e6f085baSmrg	exit_status=$?
953e6f085baSmrg	if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
954e6f085baSmrg	  exit $exit_status
955e6f085baSmrg	fi
956e6f085baSmrg      fi
95795b296d0Smrg
95895b296d0Smrg      if test -z "$output_obj"; then
95995b296d0Smrg	# Place PIC objects in $objdir
96095b296d0Smrg	command="$command -o $lobj"
96195b296d0Smrg      fi
96295b296d0Smrg
963e6f085baSmrg      $run $rm "$lobj" "$output_obj"
964e6f085baSmrg
965e6f085baSmrg      $show "$command"
966e6f085baSmrg      if $run eval $lt_env "$command"; then :
967e6f085baSmrg      else
968e6f085baSmrg	test -n "$output_obj" && $run $rm $removelist
969e6f085baSmrg	exit $EXIT_FAILURE
970e6f085baSmrg      fi
97195b296d0Smrg
97295b296d0Smrg      if test "$need_locks" = warn &&
97395b296d0Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
974e6f085baSmrg	$echo "\
97595b296d0Smrg*** ERROR, $lockfile contains:
97695b296d0Smrg`cat $lockfile 2>/dev/null`
97795b296d0Smrg
97895b296d0Smrgbut it should contain:
97995b296d0Smrg$srcfile
98095b296d0Smrg
98195b296d0SmrgThis indicates that another process is trying to use the same
98295b296d0Smrgtemporary object file, and libtool could not work around it because
98395b296d0Smrgyour compiler does not support \`-c' and \`-o' together.  If you
98495b296d0Smrgrepeat this compilation, it may succeed, by chance, but you had better
98595b296d0Smrgavoid parallel builds (make -j) in this platform, or get a better
98695b296d0Smrgcompiler."
98795b296d0Smrg
988e6f085baSmrg	$run $rm $removelist
98995b296d0Smrg	exit $EXIT_FAILURE
99095b296d0Smrg      fi
99195b296d0Smrg
99295b296d0Smrg      # Just move the object if needed, then go on to compile the next one
99395b296d0Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
994e6f085baSmrg	$show "$mv $output_obj $lobj"
995e6f085baSmrg	if $run $mv $output_obj $lobj; then :
996e6f085baSmrg	else
997e6f085baSmrg	  error=$?
998e6f085baSmrg	  $run $rm $removelist
999e6f085baSmrg	  exit $error
1000e6f085baSmrg	fi
100195b296d0Smrg      fi
100295b296d0Smrg
1003e6f085baSmrg      # Append the name of the PIC object to the libtool object file.
1004e6f085baSmrg      test -z "$run" && cat >> ${libobj}T <<EOF
1005e6f085baSmrgpic_object='$objdir/$objname'
1006e6f085baSmrg
1007e6f085baSmrgEOF
1008e6f085baSmrg
100995b296d0Smrg      # Allow error messages only from the first compilation.
101095b296d0Smrg      if test "$suppress_opt" = yes; then
1011e6f085baSmrg        suppress_output=' >/dev/null 2>&1'
101295b296d0Smrg      fi
1013e6f085baSmrg    else
1014e6f085baSmrg      # No PIC object so indicate it doesn't exist in the libtool
1015e6f085baSmrg      # object file.
1016e6f085baSmrg      test -z "$run" && cat >> ${libobj}T <<EOF
1017e6f085baSmrgpic_object=none
1018e6f085baSmrg
1019e6f085baSmrgEOF
102095b296d0Smrg    fi
102195b296d0Smrg
102295b296d0Smrg    # Only build a position-dependent object if we build old libraries.
102395b296d0Smrg    if test "$build_old_libs" = yes; then
102495b296d0Smrg      if test "$pic_mode" != yes; then
102595b296d0Smrg	# Don't build PIC code
1026e6f085baSmrg	command="$base_compile $qsrcfile"
102795b296d0Smrg      else
102895b296d0Smrg	command="$base_compile $qsrcfile $pic_flag"
102995b296d0Smrg      fi
103095b296d0Smrg      if test "$compiler_c_o" = yes; then
103195b296d0Smrg	command="$command -o $obj"
103295b296d0Smrg      fi
103395b296d0Smrg
103495b296d0Smrg      # Suppress compiler output if we already did a PIC compilation.
103595b296d0Smrg      command="$command$suppress_output"
1036e6f085baSmrg      $run $rm "$obj" "$output_obj"
1037e6f085baSmrg      $show "$command"
1038e6f085baSmrg      if $run eval $lt_env "$command"; then :
1039e6f085baSmrg      else
1040e6f085baSmrg	$run $rm $removelist
1041e6f085baSmrg	exit $EXIT_FAILURE
1042e6f085baSmrg      fi
104395b296d0Smrg
104495b296d0Smrg      if test "$need_locks" = warn &&
104595b296d0Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1046e6f085baSmrg	$echo "\
104795b296d0Smrg*** ERROR, $lockfile contains:
104895b296d0Smrg`cat $lockfile 2>/dev/null`
104995b296d0Smrg
105095b296d0Smrgbut it should contain:
105195b296d0Smrg$srcfile
105295b296d0Smrg
105395b296d0SmrgThis indicates that another process is trying to use the same
105495b296d0Smrgtemporary object file, and libtool could not work around it because
105595b296d0Smrgyour compiler does not support \`-c' and \`-o' together.  If you
105695b296d0Smrgrepeat this compilation, it may succeed, by chance, but you had better
105795b296d0Smrgavoid parallel builds (make -j) in this platform, or get a better
105895b296d0Smrgcompiler."
105995b296d0Smrg
1060e6f085baSmrg	$run $rm $removelist
106195b296d0Smrg	exit $EXIT_FAILURE
106295b296d0Smrg      fi
106395b296d0Smrg
106495b296d0Smrg      # Just move the object if needed
106595b296d0Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
1066e6f085baSmrg	$show "$mv $output_obj $obj"
1067e6f085baSmrg	if $run $mv $output_obj $obj; then :
1068e6f085baSmrg	else
1069e6f085baSmrg	  error=$?
1070e6f085baSmrg	  $run $rm $removelist
1071e6f085baSmrg	  exit $error
1072e6f085baSmrg	fi
107395b296d0Smrg      fi
1074e6f085baSmrg
1075e6f085baSmrg      # Append the name of the non-PIC object the libtool object file.
1076e6f085baSmrg      # Only append if the libtool object file exists.
1077e6f085baSmrg      test -z "$run" && cat >> ${libobj}T <<EOF
1078e6f085baSmrg# Name of the non-PIC object.
1079e6f085baSmrgnon_pic_object='$objname'
1080e6f085baSmrg
1081e6f085baSmrgEOF
1082e6f085baSmrg    else
1083e6f085baSmrg      # Append the name of the non-PIC object the libtool object file.
1084e6f085baSmrg      # Only append if the libtool object file exists.
1085e6f085baSmrg      test -z "$run" && cat >> ${libobj}T <<EOF
1086e6f085baSmrg# Name of the non-PIC object.
1087e6f085baSmrgnon_pic_object=none
1088e6f085baSmrg
1089e6f085baSmrgEOF
109095b296d0Smrg    fi
109195b296d0Smrg
1092e6f085baSmrg    $run $mv "${libobj}T" "${libobj}"
109395b296d0Smrg
1094e6f085baSmrg    # Unlock the critical section if it was locked
1095e6f085baSmrg    if test "$need_locks" != no; then
1096e6f085baSmrg      $run $rm "$lockfile"
1097e6f085baSmrg    fi
109895b296d0Smrg
109995b296d0Smrg    exit $EXIT_SUCCESS
1100e6f085baSmrg    ;;
110195b296d0Smrg
1102e6f085baSmrg  # libtool link mode
1103e6f085baSmrg  link | relink)
1104e6f085baSmrg    modename="$modename: link"
1105e6f085baSmrg    case $host in
1106e6f085baSmrg    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1107e6f085baSmrg      # It is impossible to link a dll without this setting, and
1108e6f085baSmrg      # we shouldn't force the makefile maintainer to figure out
1109e6f085baSmrg      # which system we are compiling for in order to pass an extra
1110e6f085baSmrg      # flag for every libtool invocation.
1111e6f085baSmrg      # allow_undefined=no
111295b296d0Smrg
1113e6f085baSmrg      # FIXME: Unfortunately, there are problems with the above when trying
1114e6f085baSmrg      # to make a dll which has undefined symbols, in which case not
1115e6f085baSmrg      # even a static library is built.  For now, we need to specify
1116e6f085baSmrg      # -no-undefined on the libtool link line when we can be certain
1117e6f085baSmrg      # that all symbols are satisfied, otherwise we get a static library.
1118e6f085baSmrg      allow_undefined=yes
1119e6f085baSmrg      ;;
1120e6f085baSmrg    *)
1121e6f085baSmrg      allow_undefined=yes
1122e6f085baSmrg      ;;
1123e6f085baSmrg    esac
1124e6f085baSmrg    libtool_args="$nonopt"
1125e6f085baSmrg    base_compile="$nonopt $@"
1126e6f085baSmrg    compile_command="$nonopt"
1127e6f085baSmrg    finalize_command="$nonopt"
112895b296d0Smrg
1129e6f085baSmrg    compile_rpath=
1130e6f085baSmrg    finalize_rpath=
1131e6f085baSmrg    compile_shlibpath=
1132e6f085baSmrg    finalize_shlibpath=
1133e6f085baSmrg    convenience=
1134e6f085baSmrg    old_convenience=
1135e6f085baSmrg    deplibs=
1136e6f085baSmrg    old_deplibs=
1137e6f085baSmrg    compiler_flags=
1138e6f085baSmrg    linker_flags=
1139e6f085baSmrg    dllsearchpath=
1140e6f085baSmrg    lib_search_path=`pwd`
1141e6f085baSmrg    inst_prefix_dir=
114295b296d0Smrg
1143e6f085baSmrg    avoid_version=no
1144e6f085baSmrg    dlfiles=
1145e6f085baSmrg    dlprefiles=
1146e6f085baSmrg    dlself=no
1147e6f085baSmrg    export_dynamic=no
1148e6f085baSmrg    export_symbols=
1149e6f085baSmrg    export_symbols_regex=
1150e6f085baSmrg    generated=
1151e6f085baSmrg    libobjs=
1152e6f085baSmrg    ltlibs=
1153e6f085baSmrg    module=no
1154e6f085baSmrg    no_install=no
1155e6f085baSmrg    objs=
1156e6f085baSmrg    non_pic_objects=
1157e6f085baSmrg    notinst_path= # paths that contain not-installed libtool libraries
1158e6f085baSmrg    precious_files_regex=
1159e6f085baSmrg    prefer_static_libs=no
1160e6f085baSmrg    preload=no
1161e6f085baSmrg    prev=
1162e6f085baSmrg    prevarg=
1163e6f085baSmrg    release=
1164e6f085baSmrg    rpath=
1165e6f085baSmrg    xrpath=
1166e6f085baSmrg    perm_rpath=
1167e6f085baSmrg    temp_rpath=
1168e6f085baSmrg    thread_safe=no
1169e6f085baSmrg    vinfo=
1170e6f085baSmrg    vinfo_number=no
1171e6f085baSmrg    single_module="${wl}-single_module"
117295b296d0Smrg
1173e6f085baSmrg    func_infer_tag $base_compile
117495b296d0Smrg
1175e6f085baSmrg    # We need to know -static, to get the right output filenames.
1176e6f085baSmrg    for arg
1177e6f085baSmrg    do
1178e6f085baSmrg      case $arg in
1179e6f085baSmrg      -all-static | -static | -static-libtool-libs)
1180e6f085baSmrg	case $arg in
1181e6f085baSmrg	-all-static)
1182e6f085baSmrg	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
1183e6f085baSmrg	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
1184e6f085baSmrg	  fi
1185e6f085baSmrg	  if test -n "$link_static_flag"; then
1186e6f085baSmrg	    dlopen_self=$dlopen_self_static
1187e6f085baSmrg	  fi
1188e6f085baSmrg	  prefer_static_libs=yes
1189e6f085baSmrg	  ;;
1190e6f085baSmrg	-static)
1191e6f085baSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
1192e6f085baSmrg	    dlopen_self=$dlopen_self_static
1193e6f085baSmrg	  fi
1194e6f085baSmrg	  prefer_static_libs=built
1195e6f085baSmrg	  ;;
1196e6f085baSmrg	-static-libtool-libs)
1197e6f085baSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
1198e6f085baSmrg	    dlopen_self=$dlopen_self_static
1199e6f085baSmrg	  fi
1200e6f085baSmrg	  prefer_static_libs=yes
1201e6f085baSmrg	  ;;
1202e6f085baSmrg	esac
1203e6f085baSmrg	build_libtool_libs=no
1204e6f085baSmrg	build_old_libs=yes
1205e6f085baSmrg	break
1206e6f085baSmrg	;;
1207e6f085baSmrg      esac
1208e6f085baSmrg    done
120995b296d0Smrg
1210e6f085baSmrg    # See if our shared archives depend on static archives.
1211e6f085baSmrg    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
121295b296d0Smrg
1213e6f085baSmrg    # Go through the arguments, transforming them on the way.
1214e6f085baSmrg    while test "$#" -gt 0; do
1215e6f085baSmrg      arg="$1"
1216e6f085baSmrg      shift
1217e6f085baSmrg      case $arg in
1218e6f085baSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1219e6f085baSmrg	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
1220e6f085baSmrg	;;
1221e6f085baSmrg      *) qarg=$arg ;;
1222e6f085baSmrg      esac
1223e6f085baSmrg      libtool_args="$libtool_args $qarg"
122495b296d0Smrg
1225e6f085baSmrg      # If the previous option needs an argument, assign it.
1226e6f085baSmrg      if test -n "$prev"; then
1227e6f085baSmrg	case $prev in
1228e6f085baSmrg	output)
1229e6f085baSmrg	  compile_command="$compile_command @OUTPUT@"
1230e6f085baSmrg	  finalize_command="$finalize_command @OUTPUT@"
1231e6f085baSmrg	  ;;
1232e6f085baSmrg	esac
123395b296d0Smrg
1234e6f085baSmrg	case $prev in
1235e6f085baSmrg	dlfiles|dlprefiles)
1236e6f085baSmrg	  if test "$preload" = no; then
1237e6f085baSmrg	    # Add the symbol object into the linking commands.
1238e6f085baSmrg	    compile_command="$compile_command @SYMFILE@"
1239e6f085baSmrg	    finalize_command="$finalize_command @SYMFILE@"
1240e6f085baSmrg	    preload=yes
1241e6f085baSmrg	  fi
1242e6f085baSmrg	  case $arg in
1243e6f085baSmrg	  *.la | *.lo) ;;  # We handle these cases below.
1244e6f085baSmrg	  force)
1245e6f085baSmrg	    if test "$dlself" = no; then
1246e6f085baSmrg	      dlself=needless
1247e6f085baSmrg	      export_dynamic=yes
1248e6f085baSmrg	    fi
1249e6f085baSmrg	    prev=
1250e6f085baSmrg	    continue
1251e6f085baSmrg	    ;;
1252e6f085baSmrg	  self)
1253e6f085baSmrg	    if test "$prev" = dlprefiles; then
1254e6f085baSmrg	      dlself=yes
1255e6f085baSmrg	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
1256e6f085baSmrg	      dlself=yes
1257e6f085baSmrg	    else
1258e6f085baSmrg	      dlself=needless
1259e6f085baSmrg	      export_dynamic=yes
1260e6f085baSmrg	    fi
1261e6f085baSmrg	    prev=
1262e6f085baSmrg	    continue
1263e6f085baSmrg	    ;;
1264e6f085baSmrg	  *)
1265e6f085baSmrg	    if test "$prev" = dlfiles; then
1266e6f085baSmrg	      dlfiles="$dlfiles $arg"
1267e6f085baSmrg	    else
1268e6f085baSmrg	      dlprefiles="$dlprefiles $arg"
1269e6f085baSmrg	    fi
1270e6f085baSmrg	    prev=
1271e6f085baSmrg	    continue
1272e6f085baSmrg	    ;;
1273e6f085baSmrg	  esac
1274e6f085baSmrg	  ;;
1275e6f085baSmrg	expsyms)
1276e6f085baSmrg	  export_symbols="$arg"
1277e6f085baSmrg	  if test ! -f "$arg"; then
1278e6f085baSmrg	    $echo "$modename: symbol file \`$arg' does not exist"
1279e6f085baSmrg	    exit $EXIT_FAILURE
1280e6f085baSmrg	  fi
1281e6f085baSmrg	  prev=
1282e6f085baSmrg	  continue
1283e6f085baSmrg	  ;;
1284e6f085baSmrg	expsyms_regex)
1285e6f085baSmrg	  export_symbols_regex="$arg"
1286e6f085baSmrg	  prev=
1287e6f085baSmrg	  continue
1288e6f085baSmrg	  ;;
1289e6f085baSmrg	inst_prefix)
1290e6f085baSmrg	  inst_prefix_dir="$arg"
1291e6f085baSmrg	  prev=
1292e6f085baSmrg	  continue
1293e6f085baSmrg	  ;;
1294e6f085baSmrg	precious_regex)
1295e6f085baSmrg	  precious_files_regex="$arg"
1296e6f085baSmrg	  prev=
1297e6f085baSmrg	  continue
1298e6f085baSmrg	  ;;
1299e6f085baSmrg	release)
1300e6f085baSmrg	  release="-$arg"
1301e6f085baSmrg	  prev=
1302e6f085baSmrg	  continue
1303e6f085baSmrg	  ;;
1304e6f085baSmrg	objectlist)
1305e6f085baSmrg	  if test -f "$arg"; then
1306e6f085baSmrg	    save_arg=$arg
1307e6f085baSmrg	    moreargs=
1308e6f085baSmrg	    for fil in `cat $save_arg`
1309e6f085baSmrg	    do
1310e6f085baSmrg#	      moreargs="$moreargs $fil"
1311e6f085baSmrg	      arg=$fil
1312e6f085baSmrg	      # A libtool-controlled object.
131395b296d0Smrg
1314e6f085baSmrg	      # Check to see that this really is a libtool object.
1315e6f085baSmrg	      if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1316e6f085baSmrg		pic_object=
1317e6f085baSmrg		non_pic_object=
131895b296d0Smrg
1319e6f085baSmrg		# Read the .lo file
1320e6f085baSmrg		# If there is no directory component, then add one.
1321e6f085baSmrg		case $arg in
1322e6f085baSmrg		*/* | *\\*) . $arg ;;
1323e6f085baSmrg		*) . ./$arg ;;
1324e6f085baSmrg		esac
132595b296d0Smrg
1326e6f085baSmrg		if test -z "$pic_object" || \
1327e6f085baSmrg		   test -z "$non_pic_object" ||
1328e6f085baSmrg		   test "$pic_object" = none && \
1329e6f085baSmrg		   test "$non_pic_object" = none; then
1330e6f085baSmrg		  $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1331e6f085baSmrg		  exit $EXIT_FAILURE
1332e6f085baSmrg		fi
133395b296d0Smrg
1334e6f085baSmrg		# Extract subdirectory from the argument.
1335e6f085baSmrg		xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1336e6f085baSmrg		if test "X$xdir" = "X$arg"; then
1337e6f085baSmrg		  xdir=
1338e6f085baSmrg		else
1339e6f085baSmrg		  xdir="$xdir/"
1340e6f085baSmrg		fi
134195b296d0Smrg
1342e6f085baSmrg		if test "$pic_object" != none; then
1343e6f085baSmrg		  # Prepend the subdirectory the object is found in.
1344e6f085baSmrg		  pic_object="$xdir$pic_object"
134595b296d0Smrg
1346e6f085baSmrg		  if test "$prev" = dlfiles; then
1347e6f085baSmrg		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1348e6f085baSmrg		      dlfiles="$dlfiles $pic_object"
1349e6f085baSmrg		      prev=
1350e6f085baSmrg		      continue
1351e6f085baSmrg		    else
1352e6f085baSmrg		      # If libtool objects are unsupported, then we need to preload.
1353e6f085baSmrg		      prev=dlprefiles
1354e6f085baSmrg		    fi
1355e6f085baSmrg		  fi
135695b296d0Smrg
1357e6f085baSmrg		  # CHECK ME:  I think I busted this.  -Ossama
1358e6f085baSmrg		  if test "$prev" = dlprefiles; then
1359e6f085baSmrg		    # Preload the old-style object.
1360e6f085baSmrg		    dlprefiles="$dlprefiles $pic_object"
1361e6f085baSmrg		    prev=
1362e6f085baSmrg		  fi
136395b296d0Smrg
1364e6f085baSmrg		  # A PIC object.
1365e6f085baSmrg		  libobjs="$libobjs $pic_object"
1366e6f085baSmrg		  arg="$pic_object"
1367e6f085baSmrg		fi
136895b296d0Smrg
1369e6f085baSmrg		# Non-PIC object.
1370e6f085baSmrg		if test "$non_pic_object" != none; then
1371e6f085baSmrg		  # Prepend the subdirectory the object is found in.
1372e6f085baSmrg		  non_pic_object="$xdir$non_pic_object"
137395b296d0Smrg
1374e6f085baSmrg		  # A standard non-PIC object
1375e6f085baSmrg		  non_pic_objects="$non_pic_objects $non_pic_object"
1376e6f085baSmrg		  if test -z "$pic_object" || test "$pic_object" = none ; then
1377e6f085baSmrg		    arg="$non_pic_object"
1378e6f085baSmrg		  fi
1379e6f085baSmrg		else
1380e6f085baSmrg		  # If the PIC object exists, use it instead.
1381e6f085baSmrg		  # $xdir was prepended to $pic_object above.
1382e6f085baSmrg		  non_pic_object="$pic_object"
1383e6f085baSmrg		  non_pic_objects="$non_pic_objects $non_pic_object"
1384e6f085baSmrg		fi
1385e6f085baSmrg	      else
1386e6f085baSmrg		# Only an error if not doing a dry-run.
1387e6f085baSmrg		if test -z "$run"; then
1388e6f085baSmrg		  $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1389e6f085baSmrg		  exit $EXIT_FAILURE
1390e6f085baSmrg		else
1391e6f085baSmrg		  # Dry-run case.
139295b296d0Smrg
1393e6f085baSmrg		  # Extract subdirectory from the argument.
1394e6f085baSmrg		  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1395e6f085baSmrg		  if test "X$xdir" = "X$arg"; then
1396e6f085baSmrg		    xdir=
1397e6f085baSmrg		  else
1398e6f085baSmrg		    xdir="$xdir/"
1399e6f085baSmrg		  fi
140095b296d0Smrg
1401e6f085baSmrg		  pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1402e6f085baSmrg		  non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1403e6f085baSmrg		  libobjs="$libobjs $pic_object"
1404e6f085baSmrg		  non_pic_objects="$non_pic_objects $non_pic_object"
1405e6f085baSmrg		fi
1406e6f085baSmrg	      fi
1407e6f085baSmrg	    done
1408e6f085baSmrg	  else
1409e6f085baSmrg	    $echo "$modename: link input file \`$save_arg' does not exist"
1410e6f085baSmrg	    exit $EXIT_FAILURE
1411e6f085baSmrg	  fi
1412e6f085baSmrg	  arg=$save_arg
1413e6f085baSmrg	  prev=
1414e6f085baSmrg	  continue
1415e6f085baSmrg	  ;;
1416e6f085baSmrg	rpath | xrpath)
1417e6f085baSmrg	  # We need an absolute path.
1418e6f085baSmrg	  case $arg in
1419e6f085baSmrg	  [\\/]* | [A-Za-z]:[\\/]*) ;;
1420e6f085baSmrg	  *)
1421e6f085baSmrg	    $echo "$modename: only absolute run-paths are allowed" 1>&2
1422e6f085baSmrg	    exit $EXIT_FAILURE
1423e6f085baSmrg	    ;;
1424e6f085baSmrg	  esac
1425e6f085baSmrg	  if test "$prev" = rpath; then
1426e6f085baSmrg	    case "$rpath " in
1427e6f085baSmrg	    *" $arg "*) ;;
1428e6f085baSmrg	    *) rpath="$rpath $arg" ;;
1429e6f085baSmrg	    esac
1430e6f085baSmrg	  else
1431e6f085baSmrg	    case "$xrpath " in
1432e6f085baSmrg	    *" $arg "*) ;;
1433e6f085baSmrg	    *) xrpath="$xrpath $arg" ;;
1434e6f085baSmrg	    esac
1435e6f085baSmrg	  fi
1436e6f085baSmrg	  prev=
1437e6f085baSmrg	  continue
1438e6f085baSmrg	  ;;
1439e6f085baSmrg	xcompiler)
1440e6f085baSmrg	  compiler_flags="$compiler_flags $qarg"
1441e6f085baSmrg	  prev=
1442e6f085baSmrg	  compile_command="$compile_command $qarg"
1443e6f085baSmrg	  finalize_command="$finalize_command $qarg"
1444e6f085baSmrg	  continue
1445e6f085baSmrg	  ;;
1446e6f085baSmrg	xlinker)
1447e6f085baSmrg	  linker_flags="$linker_flags $qarg"
1448e6f085baSmrg	  compiler_flags="$compiler_flags $wl$qarg"
1449e6f085baSmrg	  prev=
1450e6f085baSmrg	  compile_command="$compile_command $wl$qarg"
1451e6f085baSmrg	  finalize_command="$finalize_command $wl$qarg"
1452e6f085baSmrg	  continue
1453e6f085baSmrg	  ;;
1454e6f085baSmrg	xcclinker)
1455e6f085baSmrg	  linker_flags="$linker_flags $qarg"
1456e6f085baSmrg	  compiler_flags="$compiler_flags $qarg"
1457e6f085baSmrg	  prev=
1458e6f085baSmrg	  compile_command="$compile_command $qarg"
1459e6f085baSmrg	  finalize_command="$finalize_command $qarg"
1460e6f085baSmrg	  continue
1461e6f085baSmrg	  ;;
1462e6f085baSmrg	shrext)
1463e6f085baSmrg  	  shrext_cmds="$arg"
1464e6f085baSmrg	  prev=
1465e6f085baSmrg	  continue
1466e6f085baSmrg	  ;;
1467e6f085baSmrg	darwin_framework|darwin_framework_skip)
1468e6f085baSmrg	  test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
1469e6f085baSmrg	  compile_command="$compile_command $arg"
1470e6f085baSmrg	  finalize_command="$finalize_command $arg"
1471e6f085baSmrg	  prev=
1472e6f085baSmrg	  continue
1473e6f085baSmrg	  ;;
1474e6f085baSmrg	*)
1475e6f085baSmrg	  eval "$prev=\"\$arg\""
1476e6f085baSmrg	  prev=
1477e6f085baSmrg	  continue
1478e6f085baSmrg	  ;;
1479e6f085baSmrg	esac
1480e6f085baSmrg      fi # test -n "$prev"
148195b296d0Smrg
1482e6f085baSmrg      prevarg="$arg"
148395b296d0Smrg
1484e6f085baSmrg      case $arg in
1485e6f085baSmrg      -all-static)
1486e6f085baSmrg	if test -n "$link_static_flag"; then
1487e6f085baSmrg	  compile_command="$compile_command $link_static_flag"
1488e6f085baSmrg	  finalize_command="$finalize_command $link_static_flag"
1489e6f085baSmrg	fi
1490e6f085baSmrg	continue
1491e6f085baSmrg	;;
149295b296d0Smrg
1493e6f085baSmrg      -allow-undefined)
1494e6f085baSmrg	# FIXME: remove this flag sometime in the future.
1495e6f085baSmrg	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
1496e6f085baSmrg	continue
1497e6f085baSmrg	;;
149895b296d0Smrg
1499e6f085baSmrg      -avoid-version)
1500e6f085baSmrg	avoid_version=yes
1501e6f085baSmrg	continue
1502e6f085baSmrg	;;
150395b296d0Smrg
1504e6f085baSmrg      -dlopen)
1505e6f085baSmrg	prev=dlfiles
1506e6f085baSmrg	continue
1507e6f085baSmrg	;;
150895b296d0Smrg
1509e6f085baSmrg      -dlpreopen)
1510e6f085baSmrg	prev=dlprefiles
1511e6f085baSmrg	continue
1512e6f085baSmrg	;;
151395b296d0Smrg
1514e6f085baSmrg      -export-dynamic)
1515e6f085baSmrg	export_dynamic=yes
1516e6f085baSmrg	continue
1517e6f085baSmrg	;;
151895b296d0Smrg
1519e6f085baSmrg      -export-symbols | -export-symbols-regex)
1520e6f085baSmrg	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
1521e6f085baSmrg	  $echo "$modename: more than one -exported-symbols argument is not allowed"
1522e6f085baSmrg	  exit $EXIT_FAILURE
1523e6f085baSmrg	fi
1524e6f085baSmrg	if test "X$arg" = "X-export-symbols"; then
1525e6f085baSmrg	  prev=expsyms
1526e6f085baSmrg	else
1527e6f085baSmrg	  prev=expsyms_regex
1528e6f085baSmrg	fi
1529e6f085baSmrg	continue
1530e6f085baSmrg	;;
153195b296d0Smrg
1532e6f085baSmrg      -framework|-arch|-isysroot)
1533e6f085baSmrg	case " $CC " in
1534e6f085baSmrg	  *" ${arg} ${1} "* | *" ${arg}	${1} "*) 
1535e6f085baSmrg		prev=darwin_framework_skip ;;
1536e6f085baSmrg	  *) compiler_flags="$compiler_flags $arg"
1537e6f085baSmrg	     prev=darwin_framework ;;
1538e6f085baSmrg	esac
1539e6f085baSmrg	compile_command="$compile_command $arg"
1540e6f085baSmrg	finalize_command="$finalize_command $arg"
1541e6f085baSmrg	continue
1542e6f085baSmrg	;;
154395b296d0Smrg
1544e6f085baSmrg      -inst-prefix-dir)
1545e6f085baSmrg	prev=inst_prefix
1546e6f085baSmrg	continue
1547e6f085baSmrg	;;
154895b296d0Smrg
1549e6f085baSmrg      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
1550e6f085baSmrg      # so, if we see these flags be careful not to treat them like -L
1551e6f085baSmrg      -L[A-Z][A-Z]*:*)
1552e6f085baSmrg	case $with_gcc/$host in
1553e6f085baSmrg	no/*-*-irix* | /*-*-irix*)
1554e6f085baSmrg	  compile_command="$compile_command $arg"
1555e6f085baSmrg	  finalize_command="$finalize_command $arg"
1556e6f085baSmrg	  ;;
1557e6f085baSmrg	esac
1558e6f085baSmrg	continue
1559e6f085baSmrg	;;
156095b296d0Smrg
1561e6f085baSmrg      -L*)
1562e6f085baSmrg	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
1563e6f085baSmrg	# We need an absolute path.
1564e6f085baSmrg	case $dir in
1565e6f085baSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
1566e6f085baSmrg	*)
1567e6f085baSmrg	  absdir=`cd "$dir" && pwd`
1568e6f085baSmrg	  if test -z "$absdir"; then
1569e6f085baSmrg	    $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
1570e6f085baSmrg	    absdir="$dir"
1571e6f085baSmrg	    notinst_path="$notinst_path $dir"
1572e6f085baSmrg	  fi
1573e6f085baSmrg	  dir="$absdir"
1574e6f085baSmrg	  ;;
1575e6f085baSmrg	esac
1576e6f085baSmrg	case "$deplibs " in
1577e6f085baSmrg	*" -L$dir "*) ;;
1578e6f085baSmrg	*)
1579e6f085baSmrg	  deplibs="$deplibs -L$dir"
1580e6f085baSmrg	  lib_search_path="$lib_search_path $dir"
1581e6f085baSmrg	  ;;
1582e6f085baSmrg	esac
1583e6f085baSmrg	case $host in
1584e6f085baSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1585e6f085baSmrg	  testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
1586e6f085baSmrg	  case :$dllsearchpath: in
1587e6f085baSmrg	  *":$dir:"*) ;;
1588e6f085baSmrg	  *) dllsearchpath="$dllsearchpath:$dir";;
1589e6f085baSmrg	  esac
1590e6f085baSmrg	  case :$dllsearchpath: in
1591e6f085baSmrg	  *":$testbindir:"*) ;;
1592e6f085baSmrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
1593e6f085baSmrg	  esac
1594e6f085baSmrg	  ;;
1595e6f085baSmrg	esac
1596e6f085baSmrg	continue
1597e6f085baSmrg	;;
159895b296d0Smrg
1599e6f085baSmrg      -l*)
1600e6f085baSmrg	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
1601e6f085baSmrg	  case $host in
1602e6f085baSmrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
1603e6f085baSmrg	    # These systems don't actually have a C or math library (as such)
1604e6f085baSmrg	    continue
1605e6f085baSmrg	    ;;
1606e6f085baSmrg	  *-*-os2*)
1607e6f085baSmrg	    # These systems don't actually have a C library (as such)
1608e6f085baSmrg	    test "X$arg" = "X-lc" && continue
1609e6f085baSmrg	    ;;
1610e6f085baSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
1611e6f085baSmrg	    # Do not include libc due to us having libc/libc_r.
1612e6f085baSmrg	    test "X$arg" = "X-lc" && continue
1613e6f085baSmrg	    ;;
1614e6f085baSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
1615e6f085baSmrg	    # Rhapsody C and math libraries are in the System framework
1616e6f085baSmrg	    deplibs="$deplibs -framework System"
1617e6f085baSmrg	    continue
1618e6f085baSmrg	    ;;
1619e6f085baSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
1620e6f085baSmrg	    # Causes problems with __ctype
1621e6f085baSmrg	    test "X$arg" = "X-lc" && continue
1622e6f085baSmrg	    ;;
1623e6f085baSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
1624e6f085baSmrg	    # Compiler inserts libc in the correct place for threads to work
1625e6f085baSmrg	    test "X$arg" = "X-lc" && continue
1626e6f085baSmrg	    ;;
1627e6f085baSmrg	  esac
1628e6f085baSmrg	elif test "X$arg" = "X-lc_r"; then
1629e6f085baSmrg	 case $host in
1630e6f085baSmrg	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
1631e6f085baSmrg	   # Do not include libc_r directly, use -pthread flag.
1632e6f085baSmrg	   continue
1633e6f085baSmrg	   ;;
1634e6f085baSmrg	 esac
163539713583Smrg	fi
1636e6f085baSmrg	deplibs="$deplibs $arg"
1637e6f085baSmrg	continue
1638e6f085baSmrg	;;
163995b296d0Smrg
1640e6f085baSmrg      # Tru64 UNIX uses -model [arg] to determine the layout of C++
1641e6f085baSmrg      # classes, name mangling, and exception handling.
1642e6f085baSmrg      -model)
1643e6f085baSmrg	compile_command="$compile_command $arg"
1644e6f085baSmrg	compiler_flags="$compiler_flags $arg"
1645e6f085baSmrg	finalize_command="$finalize_command $arg"
1646e6f085baSmrg	prev=xcompiler
1647e6f085baSmrg	continue
164895b296d0Smrg	;;
164995b296d0Smrg
1650e6f085baSmrg     -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
1651e6f085baSmrg	compiler_flags="$compiler_flags $arg"
1652e6f085baSmrg	compile_command="$compile_command $arg"
1653e6f085baSmrg	finalize_command="$finalize_command $arg"
1654e6f085baSmrg	continue
165595b296d0Smrg	;;
165695b296d0Smrg
1657e6f085baSmrg      -multi_module)
1658e6f085baSmrg	single_module="${wl}-multi_module"
165995b296d0Smrg	continue
166095b296d0Smrg	;;
166195b296d0Smrg
1662e6f085baSmrg      -module)
1663e6f085baSmrg	module=yes
1664e6f085baSmrg	continue
1665e6f085baSmrg	;;
166695b296d0Smrg
1667e6f085baSmrg      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
1668e6f085baSmrg      # -r[0-9][0-9]* specifies the processor on the SGI compiler
1669e6f085baSmrg      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
1670e6f085baSmrg      # +DA*, +DD* enable 64-bit mode on the HP compiler
1671e6f085baSmrg      # -q* pass through compiler args for the IBM compiler
1672e6f085baSmrg      # -m* pass through architecture-specific compiler args for GCC
1673e6f085baSmrg      # -m*, -t[45]*, -txscale* pass through architecture-specific
1674e6f085baSmrg      # compiler args for GCC
1675e6f085baSmrg      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
1676e6f085baSmrg      # -F/path gives path to uninstalled frameworks, gcc on darwin
1677e6f085baSmrg      # @file GCC response files
1678e6f085baSmrg      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
1679e6f085baSmrg      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
168095b296d0Smrg
1681e6f085baSmrg	# Unknown arguments in both finalize_command and compile_command need
1682e6f085baSmrg	# to be aesthetically quoted because they are evaled later.
1683e6f085baSmrg	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1684e6f085baSmrg	case $arg in
1685e6f085baSmrg	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1686e6f085baSmrg	  arg="\"$arg\""
1687e6f085baSmrg	  ;;
1688e6f085baSmrg	esac
1689e6f085baSmrg        compile_command="$compile_command $arg"
1690e6f085baSmrg        finalize_command="$finalize_command $arg"
1691e6f085baSmrg        compiler_flags="$compiler_flags $arg"
1692e6f085baSmrg        continue
1693e6f085baSmrg        ;;
169495b296d0Smrg
1695e6f085baSmrg      -shrext)
1696e6f085baSmrg	prev=shrext
1697e6f085baSmrg	continue
169839713583Smrg	;;
169995b296d0Smrg
1700e6f085baSmrg      -no-fast-install)
1701e6f085baSmrg	fast_install=no
1702e6f085baSmrg	continue
1703e6f085baSmrg	;;
170495b296d0Smrg
1705e6f085baSmrg      -no-install)
1706e6f085baSmrg	case $host in
1707e6f085baSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*)
1708e6f085baSmrg	  # The PATH hackery in wrapper scripts is required on Windows
1709e6f085baSmrg	  # and Darwin in order for the loader to find any dlls it needs.
1710e6f085baSmrg	  $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
1711e6f085baSmrg	  $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
1712e6f085baSmrg	  fast_install=no
1713e6f085baSmrg	  ;;
1714e6f085baSmrg	*) no_install=yes ;;
1715e6f085baSmrg	esac
1716e6f085baSmrg	continue
1717e6f085baSmrg	;;
171839713583Smrg
1719e6f085baSmrg      -no-undefined)
1720e6f085baSmrg	allow_undefined=no
1721e6f085baSmrg	continue
1722e6f085baSmrg	;;
172339713583Smrg
1724e6f085baSmrg      -objectlist)
1725e6f085baSmrg	prev=objectlist
1726e6f085baSmrg	continue
172739713583Smrg	;;
172839713583Smrg
1729e6f085baSmrg      -o) prev=output ;;
173039713583Smrg
1731e6f085baSmrg      -precious-files-regex)
1732e6f085baSmrg	prev=precious_regex
1733e6f085baSmrg	continue
1734e6f085baSmrg	;;
173539713583Smrg
1736e6f085baSmrg      -release)
1737e6f085baSmrg	prev=release
1738e6f085baSmrg	continue
1739e6f085baSmrg	;;
174039713583Smrg
1741e6f085baSmrg      -rpath)
1742e6f085baSmrg	prev=rpath
1743e6f085baSmrg	continue
1744e6f085baSmrg	;;
174539713583Smrg
1746e6f085baSmrg      -R)
1747e6f085baSmrg	prev=xrpath
174839713583Smrg	continue
1749e6f085baSmrg	;;
175039713583Smrg
1751e6f085baSmrg      -R*)
1752e6f085baSmrg	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
1753e6f085baSmrg	# We need an absolute path.
1754e6f085baSmrg	case $dir in
1755e6f085baSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
1756e6f085baSmrg	*)
1757e6f085baSmrg	  $echo "$modename: only absolute run-paths are allowed" 1>&2
1758e6f085baSmrg	  exit $EXIT_FAILURE
1759e6f085baSmrg	  ;;
1760e6f085baSmrg	esac
1761e6f085baSmrg	case "$xrpath " in
1762e6f085baSmrg	*" $dir "*) ;;
1763e6f085baSmrg	*) xrpath="$xrpath $dir" ;;
176439713583Smrg	esac
1765e6f085baSmrg	continue
176639713583Smrg	;;
1767e6f085baSmrg
1768e6f085baSmrg      -static | -static-libtool-libs)
1769e6f085baSmrg	# The effects of -static are defined in a previous loop.
1770e6f085baSmrg	# We used to do the same as -all-static on platforms that
1771e6f085baSmrg	# didn't have a PIC flag, but the assumption that the effects
1772e6f085baSmrg	# would be equivalent was wrong.  It would break on at least
1773e6f085baSmrg	# Digital Unix and AIX.
1774e6f085baSmrg	continue
177539713583Smrg	;;
1776e6f085baSmrg
1777e6f085baSmrg      -thread-safe)
1778e6f085baSmrg	thread_safe=yes
177939713583Smrg	continue
178039713583Smrg	;;
1781e6f085baSmrg
1782e6f085baSmrg      -version-info)
1783e6f085baSmrg	prev=vinfo
1784e6f085baSmrg	continue
178539713583Smrg	;;
1786e6f085baSmrg      -version-number)
1787e6f085baSmrg	prev=vinfo
1788e6f085baSmrg	vinfo_number=yes
1789e6f085baSmrg	continue
179095b296d0Smrg	;;
179195b296d0Smrg
1792e6f085baSmrg      -Wc,*)
1793e6f085baSmrg	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
1794e6f085baSmrg	arg=
1795e6f085baSmrg	save_ifs="$IFS"; IFS=','
1796e6f085baSmrg	for flag in $args; do
1797e6f085baSmrg	  IFS="$save_ifs"
1798e6f085baSmrg	  case $flag in
1799e6f085baSmrg	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1800e6f085baSmrg	    flag="\"$flag\""
1801e6f085baSmrg	    ;;
1802e6f085baSmrg	  esac
1803e6f085baSmrg	  arg="$arg $wl$flag"
1804e6f085baSmrg	  compiler_flags="$compiler_flags $flag"
1805e6f085baSmrg	done
1806e6f085baSmrg	IFS="$save_ifs"
1807e6f085baSmrg	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1808e6f085baSmrg	;;
180995b296d0Smrg
1810e6f085baSmrg      -Wl,*)
1811e6f085baSmrg	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
1812e6f085baSmrg	arg=
1813e6f085baSmrg	save_ifs="$IFS"; IFS=','
1814e6f085baSmrg	for flag in $args; do
1815e6f085baSmrg	  IFS="$save_ifs"
1816e6f085baSmrg	  case $flag in
1817e6f085baSmrg	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1818e6f085baSmrg	    flag="\"$flag\""
1819e6f085baSmrg	    ;;
1820e6f085baSmrg	  esac
1821e6f085baSmrg	  arg="$arg $wl$flag"
1822e6f085baSmrg	  compiler_flags="$compiler_flags $wl$flag"
1823e6f085baSmrg	  linker_flags="$linker_flags $flag"
1824e6f085baSmrg	done
1825e6f085baSmrg	IFS="$save_ifs"
1826e6f085baSmrg	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1827e6f085baSmrg	;;
182895b296d0Smrg
1829e6f085baSmrg      -Xcompiler)
1830e6f085baSmrg	prev=xcompiler
1831e6f085baSmrg	continue
1832e6f085baSmrg	;;
183395b296d0Smrg
1834e6f085baSmrg      -Xlinker)
1835e6f085baSmrg	prev=xlinker
1836e6f085baSmrg	continue
1837e6f085baSmrg	;;
183895b296d0Smrg
1839e6f085baSmrg      -XCClinker)
1840e6f085baSmrg	prev=xcclinker
1841e6f085baSmrg	continue
1842e6f085baSmrg	;;
184395b296d0Smrg
1844e6f085baSmrg      # Some other compiler flag.
1845e6f085baSmrg      -* | +*)
1846e6f085baSmrg	# Unknown arguments in both finalize_command and compile_command need
1847e6f085baSmrg	# to be aesthetically quoted because they are evaled later.
1848e6f085baSmrg	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1849e6f085baSmrg	case $arg in
1850e6f085baSmrg	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1851e6f085baSmrg	  arg="\"$arg\""
185239713583Smrg	  ;;
185339713583Smrg	esac
1854e6f085baSmrg	;;
185595b296d0Smrg
1856e6f085baSmrg      *.$objext)
1857e6f085baSmrg	# A standard object.
1858e6f085baSmrg	objs="$objs $arg"
185939713583Smrg	;;
186039713583Smrg
1861e6f085baSmrg      *.lo)
1862e6f085baSmrg	# A libtool-controlled object.
186339713583Smrg
1864e6f085baSmrg	# Check to see that this really is a libtool object.
1865e6f085baSmrg	if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1866e6f085baSmrg	  pic_object=
1867e6f085baSmrg	  non_pic_object=
186839713583Smrg
1869e6f085baSmrg	  # Read the .lo file
1870e6f085baSmrg	  # If there is no directory component, then add one.
1871e6f085baSmrg	  case $arg in
1872e6f085baSmrg	  */* | *\\*) . $arg ;;
1873e6f085baSmrg	  *) . ./$arg ;;
187439713583Smrg	  esac
187539713583Smrg
1876e6f085baSmrg	  if test -z "$pic_object" || \
1877e6f085baSmrg	     test -z "$non_pic_object" ||
1878e6f085baSmrg	     test "$pic_object" = none && \
1879e6f085baSmrg	     test "$non_pic_object" = none; then
1880e6f085baSmrg	    $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1881e6f085baSmrg	    exit $EXIT_FAILURE
1882e6f085baSmrg	  fi
188339713583Smrg
1884e6f085baSmrg	  # Extract subdirectory from the argument.
1885e6f085baSmrg	  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1886e6f085baSmrg	  if test "X$xdir" = "X$arg"; then
1887e6f085baSmrg	    xdir=
1888e6f085baSmrg 	  else
1889e6f085baSmrg	    xdir="$xdir/"
189039713583Smrg	  fi
189139713583Smrg
1892e6f085baSmrg	  if test "$pic_object" != none; then
1893e6f085baSmrg	    # Prepend the subdirectory the object is found in.
1894e6f085baSmrg	    pic_object="$xdir$pic_object"
189539713583Smrg
1896e6f085baSmrg	    if test "$prev" = dlfiles; then
1897e6f085baSmrg	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1898e6f085baSmrg		dlfiles="$dlfiles $pic_object"
1899e6f085baSmrg		prev=
1900e6f085baSmrg		continue
1901e6f085baSmrg	      else
1902e6f085baSmrg		# If libtool objects are unsupported, then we need to preload.
1903e6f085baSmrg		prev=dlprefiles
1904e6f085baSmrg	      fi
1905e6f085baSmrg	    fi
190639713583Smrg
1907e6f085baSmrg	    # CHECK ME:  I think I busted this.  -Ossama
1908e6f085baSmrg	    if test "$prev" = dlprefiles; then
1909e6f085baSmrg	      # Preload the old-style object.
1910e6f085baSmrg	      dlprefiles="$dlprefiles $pic_object"
1911e6f085baSmrg	      prev=
1912e6f085baSmrg	    fi
191339713583Smrg
1914e6f085baSmrg	    # A PIC object.
1915e6f085baSmrg	    libobjs="$libobjs $pic_object"
1916e6f085baSmrg	    arg="$pic_object"
191795b296d0Smrg	  fi
191839713583Smrg
1919e6f085baSmrg	  # Non-PIC object.
1920e6f085baSmrg	  if test "$non_pic_object" != none; then
1921e6f085baSmrg	    # Prepend the subdirectory the object is found in.
1922e6f085baSmrg	    non_pic_object="$xdir$non_pic_object"
1923e6f085baSmrg
1924e6f085baSmrg	    # A standard non-PIC object
1925e6f085baSmrg	    non_pic_objects="$non_pic_objects $non_pic_object"
1926e6f085baSmrg	    if test -z "$pic_object" || test "$pic_object" = none ; then
1927e6f085baSmrg	      arg="$non_pic_object"
1928e6f085baSmrg	    fi
1929e6f085baSmrg	  else
1930e6f085baSmrg	    # If the PIC object exists, use it instead.
1931e6f085baSmrg	    # $xdir was prepended to $pic_object above.
1932e6f085baSmrg	    non_pic_object="$pic_object"
1933e6f085baSmrg	    non_pic_objects="$non_pic_objects $non_pic_object"
193495b296d0Smrg	  fi
1935e6f085baSmrg	else
1936e6f085baSmrg	  # Only an error if not doing a dry-run.
1937e6f085baSmrg	  if test -z "$run"; then
1938e6f085baSmrg	    $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1939e6f085baSmrg	    exit $EXIT_FAILURE
1940e6f085baSmrg	  else
1941e6f085baSmrg	    # Dry-run case.
194295b296d0Smrg
1943e6f085baSmrg	    # Extract subdirectory from the argument.
1944e6f085baSmrg	    xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1945e6f085baSmrg	    if test "X$xdir" = "X$arg"; then
1946e6f085baSmrg	      xdir=
1947e6f085baSmrg	    else
1948e6f085baSmrg	      xdir="$xdir/"
1949e6f085baSmrg	    fi
195095b296d0Smrg
1951e6f085baSmrg	    pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1952e6f085baSmrg	    non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1953e6f085baSmrg	    libobjs="$libobjs $pic_object"
1954e6f085baSmrg	    non_pic_objects="$non_pic_objects $non_pic_object"
1955e6f085baSmrg	  fi
1956e6f085baSmrg	fi
1957e6f085baSmrg	;;
195895b296d0Smrg
1959e6f085baSmrg      *.$libext)
1960e6f085baSmrg	# An archive.
1961e6f085baSmrg	deplibs="$deplibs $arg"
1962e6f085baSmrg	old_deplibs="$old_deplibs $arg"
1963e6f085baSmrg	continue
196439713583Smrg	;;
196595b296d0Smrg
1966e6f085baSmrg      *.la)
1967e6f085baSmrg	# A libtool-controlled library.
196895b296d0Smrg
1969e6f085baSmrg	if test "$prev" = dlfiles; then
1970e6f085baSmrg	  # This library was specified with -dlopen.
1971e6f085baSmrg	  dlfiles="$dlfiles $arg"
1972e6f085baSmrg	  prev=
1973e6f085baSmrg	elif test "$prev" = dlprefiles; then
1974e6f085baSmrg	  # The library was specified with -dlpreopen.
1975e6f085baSmrg	  dlprefiles="$dlprefiles $arg"
1976e6f085baSmrg	  prev=
197739713583Smrg	else
1978e6f085baSmrg	  deplibs="$deplibs $arg"
197995b296d0Smrg	fi
1980e6f085baSmrg	continue
1981e6f085baSmrg	;;
198295b296d0Smrg
1983e6f085baSmrg      # Some other compiler argument.
1984e6f085baSmrg      *)
1985e6f085baSmrg	# Unknown arguments in both finalize_command and compile_command need
1986e6f085baSmrg	# to be aesthetically quoted because they are evaled later.
1987e6f085baSmrg	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1988e6f085baSmrg	case $arg in
1989e6f085baSmrg	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1990e6f085baSmrg	  arg="\"$arg\""
199139713583Smrg	  ;;
199239713583Smrg	esac
199339713583Smrg	;;
1994e6f085baSmrg      esac # arg
199595b296d0Smrg
1996e6f085baSmrg      # Now actually substitute the argument into the commands.
1997e6f085baSmrg      if test -n "$arg"; then
1998e6f085baSmrg	compile_command="$compile_command $arg"
1999e6f085baSmrg	finalize_command="$finalize_command $arg"
2000e6f085baSmrg      fi
2001e6f085baSmrg    done # argument parsing loop
200295b296d0Smrg
2003e6f085baSmrg    if test -n "$prev"; then
2004e6f085baSmrg      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
2005e6f085baSmrg      $echo "$help" 1>&2
2006e6f085baSmrg      exit $EXIT_FAILURE
2007e6f085baSmrg    fi
200839713583Smrg
2009e6f085baSmrg    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
2010e6f085baSmrg      eval arg=\"$export_dynamic_flag_spec\"
2011e6f085baSmrg      compile_command="$compile_command $arg"
2012e6f085baSmrg      finalize_command="$finalize_command $arg"
2013e6f085baSmrg    fi
201439713583Smrg
2015e6f085baSmrg    oldlibs=
2016e6f085baSmrg    # calculate the name of the file, without its directory
2017e6f085baSmrg    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
2018e6f085baSmrg    libobjs_save="$libobjs"
201939713583Smrg
2020e6f085baSmrg    if test -n "$shlibpath_var"; then
2021e6f085baSmrg      # get the directories listed in $shlibpath_var
2022e6f085baSmrg      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
2023e6f085baSmrg    else
2024e6f085baSmrg      shlib_search_path=
2025e6f085baSmrg    fi
2026e6f085baSmrg    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
2027e6f085baSmrg    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
202839713583Smrg
2029e6f085baSmrg    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
2030e6f085baSmrg    if test "X$output_objdir" = "X$output"; then
2031e6f085baSmrg      output_objdir="$objdir"
203239713583Smrg    else
2033e6f085baSmrg      output_objdir="$output_objdir/$objdir"
203439713583Smrg    fi
2035e6f085baSmrg    # Create the object directory.
2036e6f085baSmrg    if test ! -d "$output_objdir"; then
2037e6f085baSmrg      $show "$mkdir $output_objdir"
2038e6f085baSmrg      $run $mkdir $output_objdir
2039e6f085baSmrg      exit_status=$?
2040e6f085baSmrg      if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
2041e6f085baSmrg	exit $exit_status
204239713583Smrg      fi
204339713583Smrg    fi
204439713583Smrg
2045e6f085baSmrg    # Determine the type of output
2046e6f085baSmrg    case $output in
2047e6f085baSmrg    "")
2048e6f085baSmrg      $echo "$modename: you must specify an output file" 1>&2
2049e6f085baSmrg      $echo "$help" 1>&2
2050e6f085baSmrg      exit $EXIT_FAILURE
2051e6f085baSmrg      ;;
2052e6f085baSmrg    *.$libext) linkmode=oldlib ;;
2053e6f085baSmrg    *.lo | *.$objext) linkmode=obj ;;
2054e6f085baSmrg    *.la) linkmode=lib ;;
2055e6f085baSmrg    *) linkmode=prog ;; # Anything else should be a program.
2056e6f085baSmrg    esac
205795b296d0Smrg
2058e6f085baSmrg    case $host in
2059e6f085baSmrg    *cygwin* | *mingw* | *pw32*)
2060e6f085baSmrg      # don't eliminate duplications in $postdeps and $predeps
2061e6f085baSmrg      duplicate_compiler_generated_deps=yes
2062e6f085baSmrg      ;;
2063e6f085baSmrg    *)
2064e6f085baSmrg      duplicate_compiler_generated_deps=$duplicate_deps
2065e6f085baSmrg      ;;
2066e6f085baSmrg    esac
2067e6f085baSmrg    specialdeplibs=
206895b296d0Smrg
2069e6f085baSmrg    libs=
2070e6f085baSmrg    # Find all interdependent deplibs by searching for libraries
2071e6f085baSmrg    # that are linked more than once (e.g. -la -lb -la)
2072e6f085baSmrg    for deplib in $deplibs; do
2073e6f085baSmrg      if test "X$duplicate_deps" = "Xyes" ; then
2074e6f085baSmrg	case "$libs " in
2075e6f085baSmrg	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2076e6f085baSmrg	esac
2077e6f085baSmrg      fi
2078e6f085baSmrg      libs="$libs $deplib"
2079e6f085baSmrg    done
208095b296d0Smrg
2081e6f085baSmrg    if test "$linkmode" = lib; then
2082e6f085baSmrg      libs="$predeps $libs $compiler_lib_search_path $postdeps"
208395b296d0Smrg
2084e6f085baSmrg      # Compute libraries that are listed more than once in $predeps
2085e6f085baSmrg      # $postdeps and mark them as special (i.e., whose duplicates are
2086e6f085baSmrg      # not to be eliminated).
2087e6f085baSmrg      pre_post_deps=
2088e6f085baSmrg      if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
2089e6f085baSmrg	for pre_post_dep in $predeps $postdeps; do
2090e6f085baSmrg	  case "$pre_post_deps " in
2091e6f085baSmrg	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
209239713583Smrg	  esac
2093e6f085baSmrg	  pre_post_deps="$pre_post_deps $pre_post_dep"
2094e6f085baSmrg	done
2095e6f085baSmrg      fi
2096e6f085baSmrg      pre_post_deps=
2097e6f085baSmrg    fi
209839713583Smrg
2099e6f085baSmrg    deplibs=
2100e6f085baSmrg    newdependency_libs=
2101e6f085baSmrg    newlib_search_path=
2102e6f085baSmrg    need_relink=no # whether we're linking any uninstalled libtool libraries
2103e6f085baSmrg    notinst_deplibs= # not-installed libtool libraries
2104e6f085baSmrg    case $linkmode in
2105e6f085baSmrg    lib)
2106e6f085baSmrg	passes="conv link"
2107e6f085baSmrg	for file in $dlfiles $dlprefiles; do
2108e6f085baSmrg	  case $file in
2109e6f085baSmrg	  *.la) ;;
211039713583Smrg	  *)
2111e6f085baSmrg	    $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
2112e6f085baSmrg	    exit $EXIT_FAILURE
211339713583Smrg	    ;;
211439713583Smrg	  esac
211539713583Smrg	done
211639713583Smrg	;;
2117e6f085baSmrg    prog)
2118e6f085baSmrg	compile_deplibs=
2119e6f085baSmrg	finalize_deplibs=
2120e6f085baSmrg	alldeplibs=no
2121e6f085baSmrg	newdlfiles=
2122e6f085baSmrg	newdlprefiles=
2123e6f085baSmrg	passes="conv scan dlopen dlpreopen link"
2124e6f085baSmrg	;;
2125e6f085baSmrg    *)  passes="conv"
212639713583Smrg	;;
212739713583Smrg    esac
2128e6f085baSmrg    for pass in $passes; do
2129e6f085baSmrg      if test "$linkmode,$pass" = "lib,link" ||
2130e6f085baSmrg	 test "$linkmode,$pass" = "prog,scan"; then
2131e6f085baSmrg	libs="$deplibs"
2132e6f085baSmrg	deplibs=
2133e6f085baSmrg      fi
2134e6f085baSmrg      if test "$linkmode" = prog; then
2135e6f085baSmrg	case $pass in
2136e6f085baSmrg	dlopen) libs="$dlfiles" ;;
2137e6f085baSmrg	dlpreopen) libs="$dlprefiles" ;;
2138e6f085baSmrg	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
2139e6f085baSmrg	esac
2140e6f085baSmrg      fi
2141e6f085baSmrg      if test "$pass" = dlopen; then
2142e6f085baSmrg	# Collect dlpreopened libraries
2143e6f085baSmrg	save_deplibs="$deplibs"
2144e6f085baSmrg	deplibs=
2145e6f085baSmrg      fi
2146e6f085baSmrg      for deplib in $libs; do
2147e6f085baSmrg	lib=
2148e6f085baSmrg	found=no
2149e6f085baSmrg	case $deplib in
2150e6f085baSmrg	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
2151e6f085baSmrg	  if test "$linkmode,$pass" = "prog,link"; then
2152e6f085baSmrg	    compile_deplibs="$deplib $compile_deplibs"
2153e6f085baSmrg	    finalize_deplibs="$deplib $finalize_deplibs"
2154e6f085baSmrg	  else
2155e6f085baSmrg	    compiler_flags="$compiler_flags $deplib"
2156e6f085baSmrg	  fi
2157e6f085baSmrg	  continue
2158e6f085baSmrg	  ;;
2159e6f085baSmrg	-l*)
2160e6f085baSmrg	  if test "$linkmode" != lib && test "$linkmode" != prog; then
2161e6f085baSmrg	    $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
2162e6f085baSmrg	    continue
2163e6f085baSmrg	  fi
2164e6f085baSmrg	  name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
2165e6f085baSmrg	  if test "$linkmode" = lib; then
2166e6f085baSmrg	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
2167e6f085baSmrg	  else
2168e6f085baSmrg	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
2169e6f085baSmrg	  fi
2170e6f085baSmrg	  for searchdir in $searchdirs; do
2171e6f085baSmrg	    for search_ext in .la $std_shrext .so .a; do
2172e6f085baSmrg	      # Search the libtool library
2173e6f085baSmrg	      lib="$searchdir/lib${name}${search_ext}"
2174e6f085baSmrg	      if test -f "$lib"; then
2175e6f085baSmrg		if test "$search_ext" = ".la"; then
2176e6f085baSmrg		  found=yes
2177e6f085baSmrg		else
2178e6f085baSmrg		  found=no
2179e6f085baSmrg		fi
2180e6f085baSmrg		break 2
2181e6f085baSmrg	      fi
2182e6f085baSmrg	    done
2183e6f085baSmrg	  done
2184e6f085baSmrg	  if test "$found" != yes; then
2185e6f085baSmrg	    # deplib doesn't seem to be a libtool library
2186e6f085baSmrg	    if test "$linkmode,$pass" = "prog,link"; then
2187e6f085baSmrg	      compile_deplibs="$deplib $compile_deplibs"
2188e6f085baSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
2189e6f085baSmrg	    else
2190e6f085baSmrg	      deplibs="$deplib $deplibs"
2191e6f085baSmrg	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
2192e6f085baSmrg	    fi
2193e6f085baSmrg	    continue
2194e6f085baSmrg	  else # deplib is a libtool library
2195e6f085baSmrg	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
2196e6f085baSmrg	    # We need to do some special things here, and not later.
2197e6f085baSmrg	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
2198e6f085baSmrg	      case " $predeps $postdeps " in
2199e6f085baSmrg	      *" $deplib "*)
2200e6f085baSmrg		if (${SED} -e '2q' $lib |
2201e6f085baSmrg                    grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
2202e6f085baSmrg		  library_names=
2203e6f085baSmrg		  old_library=
2204e6f085baSmrg		  case $lib in
2205e6f085baSmrg		  */* | *\\*) . $lib ;;
2206e6f085baSmrg		  *) . ./$lib ;;
2207e6f085baSmrg		  esac
2208e6f085baSmrg		  for l in $old_library $library_names; do
2209e6f085baSmrg		    ll="$l"
2210e6f085baSmrg		  done
2211e6f085baSmrg		  if test "X$ll" = "X$old_library" ; then # only static version available
2212e6f085baSmrg		    found=no
2213e6f085baSmrg		    ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
2214e6f085baSmrg		    test "X$ladir" = "X$lib" && ladir="."
2215e6f085baSmrg		    lib=$ladir/$old_library
2216e6f085baSmrg		    if test "$linkmode,$pass" = "prog,link"; then
2217e6f085baSmrg		      compile_deplibs="$deplib $compile_deplibs"
2218e6f085baSmrg		      finalize_deplibs="$deplib $finalize_deplibs"
2219e6f085baSmrg		    else
2220e6f085baSmrg		      deplibs="$deplib $deplibs"
2221e6f085baSmrg		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
2222e6f085baSmrg		    fi
2223e6f085baSmrg		    continue
2224e6f085baSmrg		  fi
2225e6f085baSmrg		fi
2226e6f085baSmrg	        ;;
2227e6f085baSmrg	      *) ;;
2228e6f085baSmrg	      esac
2229e6f085baSmrg	    fi
2230e6f085baSmrg	  fi
2231e6f085baSmrg	  ;; # -l
2232e6f085baSmrg	-L*)
2233e6f085baSmrg	  case $linkmode in
2234e6f085baSmrg	  lib)
2235e6f085baSmrg	    deplibs="$deplib $deplibs"
2236e6f085baSmrg	    test "$pass" = conv && continue
2237e6f085baSmrg	    newdependency_libs="$deplib $newdependency_libs"
2238e6f085baSmrg	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
2239e6f085baSmrg	    ;;
2240e6f085baSmrg	  prog)
2241e6f085baSmrg	    if test "$pass" = conv; then
2242e6f085baSmrg	      deplibs="$deplib $deplibs"
2243e6f085baSmrg	      continue
2244e6f085baSmrg	    fi
2245e6f085baSmrg	    if test "$pass" = scan; then
2246e6f085baSmrg	      deplibs="$deplib $deplibs"
2247e6f085baSmrg	    else
2248e6f085baSmrg	      compile_deplibs="$deplib $compile_deplibs"
2249e6f085baSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
2250e6f085baSmrg	    fi
2251e6f085baSmrg	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
2252e6f085baSmrg	    ;;
2253e6f085baSmrg	  *)
2254e6f085baSmrg	    $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
2255e6f085baSmrg	    ;;
2256e6f085baSmrg	  esac # linkmode
2257e6f085baSmrg	  continue
2258e6f085baSmrg	  ;; # -L
2259e6f085baSmrg	-R*)
2260e6f085baSmrg	  if test "$pass" = link; then
2261e6f085baSmrg	    dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
2262e6f085baSmrg	    # Make sure the xrpath contains only unique directories.
2263e6f085baSmrg	    case "$xrpath " in
2264e6f085baSmrg	    *" $dir "*) ;;
2265e6f085baSmrg	    *) xrpath="$xrpath $dir" ;;
2266e6f085baSmrg	    esac
2267e6f085baSmrg	  fi
2268e6f085baSmrg	  deplibs="$deplib $deplibs"
2269e6f085baSmrg	  continue
2270e6f085baSmrg	  ;;
2271e6f085baSmrg	*.la) lib="$deplib" ;;
2272e6f085baSmrg	*.$libext)
2273e6f085baSmrg	  if test "$pass" = conv; then
2274e6f085baSmrg	    deplibs="$deplib $deplibs"
2275e6f085baSmrg	    continue
2276e6f085baSmrg	  fi
2277e6f085baSmrg	  case $linkmode in
2278e6f085baSmrg	  lib)
2279e6f085baSmrg	    valid_a_lib=no
2280e6f085baSmrg	    case $deplibs_check_method in
2281e6f085baSmrg	      match_pattern*)
2282e6f085baSmrg		set dummy $deplibs_check_method
2283e6f085baSmrg	        match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
2284e6f085baSmrg		if eval $echo \"$deplib\" 2>/dev/null \
2285e6f085baSmrg		    | $SED 10q \
2286e6f085baSmrg		    | $EGREP "$match_pattern_regex" > /dev/null; then
2287e6f085baSmrg		  valid_a_lib=yes
2288e6f085baSmrg		fi
2289e6f085baSmrg		;;
2290e6f085baSmrg	      pass_all)
2291e6f085baSmrg		valid_a_lib=yes
2292e6f085baSmrg		;;
2293e6f085baSmrg            esac
2294e6f085baSmrg	    if test "$valid_a_lib" != yes; then
2295e6f085baSmrg	      $echo
2296e6f085baSmrg	      $echo "*** Warning: Trying to link with static lib archive $deplib."
2297e6f085baSmrg	      $echo "*** I have the capability to make that library automatically link in when"
2298e6f085baSmrg	      $echo "*** you link to this library.  But I can only do this if you have a"
2299e6f085baSmrg	      $echo "*** shared version of the library, which you do not appear to have"
2300e6f085baSmrg	      $echo "*** because the file extensions .$libext of this argument makes me believe"
2301e6f085baSmrg	      $echo "*** that it is just a static archive that I should not used here."
2302e6f085baSmrg	    else
2303e6f085baSmrg	      $echo
2304e6f085baSmrg	      $echo "*** Warning: Linking the shared library $output against the"
2305e6f085baSmrg	      $echo "*** static library $deplib is not portable!"
2306e6f085baSmrg	      deplibs="$deplib $deplibs"
2307e6f085baSmrg	    fi
2308e6f085baSmrg	    continue
2309e6f085baSmrg	    ;;
2310e6f085baSmrg	  prog)
2311e6f085baSmrg	    if test "$pass" != link; then
2312e6f085baSmrg	      deplibs="$deplib $deplibs"
2313e6f085baSmrg	    else
2314e6f085baSmrg	      compile_deplibs="$deplib $compile_deplibs"
2315e6f085baSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
2316e6f085baSmrg	    fi
2317e6f085baSmrg	    continue
2318e6f085baSmrg	    ;;
2319e6f085baSmrg	  esac # linkmode
2320e6f085baSmrg	  ;; # *.$libext
2321e6f085baSmrg	*.lo | *.$objext)
2322e6f085baSmrg	  if test "$pass" = conv; then
2323e6f085baSmrg	    deplibs="$deplib $deplibs"
2324e6f085baSmrg	  elif test "$linkmode" = prog; then
2325e6f085baSmrg	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
2326e6f085baSmrg	      # If there is no dlopen support or we're linking statically,
2327e6f085baSmrg	      # we need to preload.
2328e6f085baSmrg	      newdlprefiles="$newdlprefiles $deplib"
2329e6f085baSmrg	      compile_deplibs="$deplib $compile_deplibs"
2330e6f085baSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
2331e6f085baSmrg	    else
2332e6f085baSmrg	      newdlfiles="$newdlfiles $deplib"
2333e6f085baSmrg	    fi
2334e6f085baSmrg	  fi
2335e6f085baSmrg	  continue
2336e6f085baSmrg	  ;;
2337e6f085baSmrg	%DEPLIBS%)
2338e6f085baSmrg	  alldeplibs=yes
2339e6f085baSmrg	  continue
2340e6f085baSmrg	  ;;
2341e6f085baSmrg	esac # case $deplib
2342e6f085baSmrg	if test "$found" = yes || test -f "$lib"; then :
2343e6f085baSmrg	else
2344e6f085baSmrg	  $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
2345e6f085baSmrg	  exit $EXIT_FAILURE
2346e6f085baSmrg	fi
234795b296d0Smrg
2348e6f085baSmrg	# Check to see that this really is a libtool archive.
2349e6f085baSmrg	if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
2350e6f085baSmrg	else
2351e6f085baSmrg	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
2352e6f085baSmrg	  exit $EXIT_FAILURE
2353e6f085baSmrg	fi
235495b296d0Smrg
2355e6f085baSmrg	ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
2356e6f085baSmrg	test "X$ladir" = "X$lib" && ladir="."
235795b296d0Smrg
2358e6f085baSmrg	dlname=
2359e6f085baSmrg	dlopen=
2360e6f085baSmrg	dlpreopen=
2361e6f085baSmrg	libdir=
2362e6f085baSmrg	library_names=
2363e6f085baSmrg	old_library=
2364e6f085baSmrg	# If the library was installed with an old release of libtool,
2365e6f085baSmrg	# it will not redefine variables installed, or shouldnotlink
2366e6f085baSmrg	installed=yes
2367e6f085baSmrg	shouldnotlink=no
2368e6f085baSmrg	avoidtemprpath=
236995b296d0Smrg
237095b296d0Smrg
2371e6f085baSmrg	# Read the .la file
2372e6f085baSmrg	case $lib in
2373e6f085baSmrg	*/* | *\\*) . $lib ;;
2374e6f085baSmrg	*) . ./$lib ;;
237539713583Smrg	esac
237695b296d0Smrg
2377e6f085baSmrg	if test "$linkmode,$pass" = "lib,link" ||
2378e6f085baSmrg	   test "$linkmode,$pass" = "prog,scan" ||
2379e6f085baSmrg	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
2380e6f085baSmrg	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
2381e6f085baSmrg	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
2382e6f085baSmrg	fi
238395b296d0Smrg
2384e6f085baSmrg	if test "$pass" = conv; then
2385e6f085baSmrg	  # Only check for convenience libraries
2386e6f085baSmrg	  deplibs="$lib $deplibs"
2387e6f085baSmrg	  if test -z "$libdir"; then
2388e6f085baSmrg	    if test -z "$old_library"; then
2389e6f085baSmrg	      $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2390e6f085baSmrg	      exit $EXIT_FAILURE
2391e6f085baSmrg	    fi
2392e6f085baSmrg	    # It is a libtool convenience library, so add in its objects.
2393e6f085baSmrg	    convenience="$convenience $ladir/$objdir/$old_library"
2394e6f085baSmrg	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
2395e6f085baSmrg	    tmp_libs=
2396e6f085baSmrg	    for deplib in $dependency_libs; do
2397e6f085baSmrg	      deplibs="$deplib $deplibs"
2398e6f085baSmrg              if test "X$duplicate_deps" = "Xyes" ; then
2399e6f085baSmrg	        case "$tmp_libs " in
2400e6f085baSmrg	        *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2401e6f085baSmrg	        esac
2402e6f085baSmrg              fi
2403e6f085baSmrg	      tmp_libs="$tmp_libs $deplib"
2404e6f085baSmrg	    done
2405e6f085baSmrg	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
2406e6f085baSmrg	    $echo "$modename: \`$lib' is not a convenience library" 1>&2
2407e6f085baSmrg	    exit $EXIT_FAILURE
2408e6f085baSmrg	  fi
2409e6f085baSmrg	  continue
2410e6f085baSmrg	fi # $pass = conv
241195b296d0Smrg
241295b296d0Smrg
2413e6f085baSmrg	# Get the name of the library we link against.
2414e6f085baSmrg	linklib=
2415e6f085baSmrg	for l in $old_library $library_names; do
2416e6f085baSmrg	  linklib="$l"
2417e6f085baSmrg	done
2418e6f085baSmrg	if test -z "$linklib"; then
2419e6f085baSmrg	  $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2420e6f085baSmrg	  exit $EXIT_FAILURE
242195b296d0Smrg	fi
242295b296d0Smrg
2423e6f085baSmrg	# This library was specified with -dlopen.
2424e6f085baSmrg	if test "$pass" = dlopen; then
2425e6f085baSmrg	  if test -z "$libdir"; then
2426e6f085baSmrg	    $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
2427e6f085baSmrg	    exit $EXIT_FAILURE
2428e6f085baSmrg	  fi
2429e6f085baSmrg	  if test -z "$dlname" ||
2430e6f085baSmrg	     test "$dlopen_support" != yes ||
2431e6f085baSmrg	     test "$build_libtool_libs" = no; then
2432e6f085baSmrg	    # If there is no dlname, no dlopen support or we're linking
2433e6f085baSmrg	    # statically, we need to preload.  We also need to preload any
2434e6f085baSmrg	    # dependent libraries so libltdl's deplib preloader doesn't
2435e6f085baSmrg	    # bomb out in the load deplibs phase.
2436e6f085baSmrg	    dlprefiles="$dlprefiles $lib $dependency_libs"
2437e6f085baSmrg	  else
2438e6f085baSmrg	    newdlfiles="$newdlfiles $lib"
2439e6f085baSmrg	  fi
2440e6f085baSmrg	  continue
2441e6f085baSmrg	fi # $pass = dlopen
244295b296d0Smrg
2443e6f085baSmrg	# We need an absolute path.
2444e6f085baSmrg	case $ladir in
2445e6f085baSmrg	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
2446e6f085baSmrg	*)
2447e6f085baSmrg	  abs_ladir=`cd "$ladir" && pwd`
2448e6f085baSmrg	  if test -z "$abs_ladir"; then
2449e6f085baSmrg	    $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
2450e6f085baSmrg	    $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
2451e6f085baSmrg	    abs_ladir="$ladir"
2452e6f085baSmrg	  fi
2453e6f085baSmrg	  ;;
2454e6f085baSmrg	esac
2455e6f085baSmrg	laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
245695b296d0Smrg
2457e6f085baSmrg	# Find the relevant object directory and library name.
2458e6f085baSmrg	if test "X$installed" = Xyes; then
2459e6f085baSmrg	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
2460e6f085baSmrg	    $echo "$modename: warning: library \`$lib' was moved." 1>&2
2461e6f085baSmrg	    dir="$ladir"
2462e6f085baSmrg	    absdir="$abs_ladir"
2463e6f085baSmrg	    libdir="$abs_ladir"
2464e6f085baSmrg	  else
2465e6f085baSmrg	    dir="$libdir"
2466e6f085baSmrg	    absdir="$libdir"
2467e6f085baSmrg	  fi
2468e6f085baSmrg	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
2469e6f085baSmrg	else
2470e6f085baSmrg	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
2471e6f085baSmrg	    dir="$ladir"
2472e6f085baSmrg	    absdir="$abs_ladir"
2473e6f085baSmrg	    # Remove this search path later
2474e6f085baSmrg	    notinst_path="$notinst_path $abs_ladir"
2475e6f085baSmrg	  else
2476e6f085baSmrg	    dir="$ladir/$objdir"
2477e6f085baSmrg	    absdir="$abs_ladir/$objdir"
2478e6f085baSmrg	    # Remove this search path later
2479e6f085baSmrg	    notinst_path="$notinst_path $abs_ladir"
2480e6f085baSmrg	  fi
2481e6f085baSmrg	fi # $installed = yes
2482e6f085baSmrg	name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
248395b296d0Smrg
2484e6f085baSmrg	# This library was specified with -dlpreopen.
2485e6f085baSmrg	if test "$pass" = dlpreopen; then
2486e6f085baSmrg	  if test -z "$libdir"; then
2487e6f085baSmrg	    $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
2488e6f085baSmrg	    exit $EXIT_FAILURE
2489e6f085baSmrg	  fi
2490e6f085baSmrg	  # Prefer using a static library (so that no silly _DYNAMIC symbols
2491e6f085baSmrg	  # are required to link).
2492e6f085baSmrg	  if test -n "$old_library"; then
2493e6f085baSmrg	    newdlprefiles="$newdlprefiles $dir/$old_library"
2494e6f085baSmrg	  # Otherwise, use the dlname, so that lt_dlopen finds it.
2495e6f085baSmrg	  elif test -n "$dlname"; then
2496e6f085baSmrg	    newdlprefiles="$newdlprefiles $dir/$dlname"
2497e6f085baSmrg	  else
2498e6f085baSmrg	    newdlprefiles="$newdlprefiles $dir/$linklib"
2499e6f085baSmrg	  fi
2500e6f085baSmrg	fi # $pass = dlpreopen
250195b296d0Smrg
2502e6f085baSmrg	if test -z "$libdir"; then
2503e6f085baSmrg	  # Link the convenience library
2504e6f085baSmrg	  if test "$linkmode" = lib; then
2505e6f085baSmrg	    deplibs="$dir/$old_library $deplibs"
2506e6f085baSmrg	  elif test "$linkmode,$pass" = "prog,link"; then
2507e6f085baSmrg	    compile_deplibs="$dir/$old_library $compile_deplibs"
2508e6f085baSmrg	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
2509e6f085baSmrg	  else
2510e6f085baSmrg	    deplibs="$lib $deplibs" # used for prog,scan pass
2511e6f085baSmrg	  fi
2512e6f085baSmrg	  continue
2513e6f085baSmrg	fi
251495b296d0Smrg
251595b296d0Smrg
2516e6f085baSmrg	if test "$linkmode" = prog && test "$pass" != link; then
2517e6f085baSmrg	  newlib_search_path="$newlib_search_path $ladir"
2518e6f085baSmrg	  deplibs="$lib $deplibs"
251995b296d0Smrg
2520e6f085baSmrg	  linkalldeplibs=no
2521e6f085baSmrg	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
2522e6f085baSmrg	     test "$build_libtool_libs" = no; then
2523e6f085baSmrg	    linkalldeplibs=yes
2524e6f085baSmrg	  fi
252595b296d0Smrg
2526e6f085baSmrg	  tmp_libs=
2527e6f085baSmrg	  for deplib in $dependency_libs; do
2528e6f085baSmrg	    case $deplib in
2529e6f085baSmrg	    -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
2530e6f085baSmrg	    esac
2531e6f085baSmrg	    # Need to link against all dependency_libs?
2532e6f085baSmrg	    if test "$linkalldeplibs" = yes; then
2533e6f085baSmrg	      deplibs="$deplib $deplibs"
2534e6f085baSmrg	    else
2535e6f085baSmrg	      # Need to hardcode shared library paths
2536e6f085baSmrg	      # or/and link against static libraries
2537e6f085baSmrg	      newdependency_libs="$deplib $newdependency_libs"
2538e6f085baSmrg	    fi
2539e6f085baSmrg	    if test "X$duplicate_deps" = "Xyes" ; then
2540e6f085baSmrg	      case "$tmp_libs " in
2541e6f085baSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2542e6f085baSmrg	      esac
2543e6f085baSmrg	    fi
2544e6f085baSmrg	    tmp_libs="$tmp_libs $deplib"
2545e6f085baSmrg	  done # for deplib
2546e6f085baSmrg	  continue
2547e6f085baSmrg	fi # $linkmode = prog...
254895b296d0Smrg
2549e6f085baSmrg	if test "$linkmode,$pass" = "prog,link"; then
2550e6f085baSmrg	  if test -n "$library_names" &&
2551e6f085baSmrg	     { { test "$prefer_static_libs" = no ||
2552e6f085baSmrg		 test "$prefer_static_libs,$installed" = "built,yes"; } ||
2553e6f085baSmrg	       test -z "$old_library"; }; then
2554e6f085baSmrg	    # We need to hardcode the library path
2555e6f085baSmrg	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
2556e6f085baSmrg	      # Make sure the rpath contains only unique directories.
2557e6f085baSmrg	      case "$temp_rpath " in
2558e6f085baSmrg	      *" $dir "*) ;;
2559e6f085baSmrg	      *" $absdir "*) ;;
2560e6f085baSmrg	      *) temp_rpath="$temp_rpath $absdir" ;;
2561e6f085baSmrg	      esac
2562e6f085baSmrg	    fi
256395b296d0Smrg
2564e6f085baSmrg	    # Hardcode the library path.
2565e6f085baSmrg	    # Skip directories that are in the system default run-time
2566e6f085baSmrg	    # search path.
2567e6f085baSmrg	    case " $sys_lib_dlsearch_path " in
2568e6f085baSmrg	    *" $absdir "*) ;;
2569e6f085baSmrg	    *)
2570e6f085baSmrg	      case "$compile_rpath " in
2571e6f085baSmrg	      *" $absdir "*) ;;
2572e6f085baSmrg	      *) compile_rpath="$compile_rpath $absdir"
2573e6f085baSmrg	      esac
2574e6f085baSmrg	      ;;
2575e6f085baSmrg	    esac
2576e6f085baSmrg	    case " $sys_lib_dlsearch_path " in
2577e6f085baSmrg	    *" $libdir "*) ;;
2578e6f085baSmrg	    *)
2579e6f085baSmrg	      case "$finalize_rpath " in
2580e6f085baSmrg	      *" $libdir "*) ;;
2581e6f085baSmrg	      *) finalize_rpath="$finalize_rpath $libdir"
2582e6f085baSmrg	      esac
2583e6f085baSmrg	      ;;
2584e6f085baSmrg	    esac
2585e6f085baSmrg	  fi # $linkmode,$pass = prog,link...
258639713583Smrg
2587e6f085baSmrg	  if test "$alldeplibs" = yes &&
2588e6f085baSmrg	     { test "$deplibs_check_method" = pass_all ||
2589e6f085baSmrg	       { test "$build_libtool_libs" = yes &&
2590e6f085baSmrg		 test -n "$library_names"; }; }; then
2591e6f085baSmrg	    # We only need to search for static libraries
2592e6f085baSmrg	    continue
2593e6f085baSmrg	  fi
259495b296d0Smrg	fi
259595b296d0Smrg
2596e6f085baSmrg	link_static=no # Whether the deplib will be linked statically
2597e6f085baSmrg	use_static_libs=$prefer_static_libs
2598e6f085baSmrg	if test "$use_static_libs" = built && test "$installed" = yes ; then
2599e6f085baSmrg	  use_static_libs=no
2600e6f085baSmrg	fi
2601e6f085baSmrg	if test -n "$library_names" &&
2602e6f085baSmrg	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
2603e6f085baSmrg	  if test "$installed" = no; then
2604e6f085baSmrg	    notinst_deplibs="$notinst_deplibs $lib"
2605e6f085baSmrg	    need_relink=yes
2606e6f085baSmrg	  fi
2607e6f085baSmrg	  # This is a shared library
260895b296d0Smrg
2609e6f085baSmrg	  # Warn about portability, can't link against -module's on
2610e6f085baSmrg	  # some systems (darwin)
2611e6f085baSmrg	  if test "$shouldnotlink" = yes && test "$pass" = link ; then
2612e6f085baSmrg	    $echo
2613e6f085baSmrg	    if test "$linkmode" = prog; then
2614e6f085baSmrg	      $echo "*** Warning: Linking the executable $output against the loadable module"
2615e6f085baSmrg	    else
2616e6f085baSmrg	      $echo "*** Warning: Linking the shared library $output against the loadable module"
2617e6f085baSmrg	    fi
2618e6f085baSmrg	    $echo "*** $linklib is not portable!"
2619e6f085baSmrg	  fi
2620e6f085baSmrg	  if test "$linkmode" = lib &&
2621e6f085baSmrg	     test "$hardcode_into_libs" = yes; then
2622e6f085baSmrg	    # Hardcode the library path.
2623e6f085baSmrg	    # Skip directories that are in the system default run-time
2624e6f085baSmrg	    # search path.
2625e6f085baSmrg	    case " $sys_lib_dlsearch_path " in
2626e6f085baSmrg	    *" $absdir "*) ;;
2627e6f085baSmrg	    *)
2628e6f085baSmrg	      case "$compile_rpath " in
2629e6f085baSmrg	      *" $absdir "*) ;;
2630e6f085baSmrg	      *) compile_rpath="$compile_rpath $absdir"
2631e6f085baSmrg	      esac
2632e6f085baSmrg	      ;;
2633e6f085baSmrg	    esac
2634e6f085baSmrg	    case " $sys_lib_dlsearch_path " in
2635e6f085baSmrg	    *" $libdir "*) ;;
2636e6f085baSmrg	    *)
2637e6f085baSmrg	      case "$finalize_rpath " in
2638e6f085baSmrg	      *" $libdir "*) ;;
2639e6f085baSmrg	      *) finalize_rpath="$finalize_rpath $libdir"
2640e6f085baSmrg	      esac
2641e6f085baSmrg	      ;;
2642e6f085baSmrg	    esac
2643e6f085baSmrg	  fi
264439713583Smrg
2645e6f085baSmrg	  if test -n "$old_archive_from_expsyms_cmds"; then
2646e6f085baSmrg	    # figure out the soname
2647e6f085baSmrg	    set dummy $library_names
2648e6f085baSmrg	    realname="$2"
2649e6f085baSmrg	    shift; shift
2650e6f085baSmrg	    libname=`eval \\$echo \"$libname_spec\"`
2651e6f085baSmrg	    # use dlname if we got it. it's perfectly good, no?
2652e6f085baSmrg	    if test -n "$dlname"; then
2653e6f085baSmrg	      soname="$dlname"
2654e6f085baSmrg	    elif test -n "$soname_spec"; then
2655e6f085baSmrg	      # bleh windows
2656e6f085baSmrg	      case $host in
2657e6f085baSmrg	      *cygwin* | mingw*)
2658e6f085baSmrg		major=`expr $current - $age`
2659e6f085baSmrg		versuffix="-$major"
2660e6f085baSmrg		;;
2661e6f085baSmrg	      esac
2662e6f085baSmrg	      eval soname=\"$soname_spec\"
2663e6f085baSmrg	    else
2664e6f085baSmrg	      soname="$realname"
2665e6f085baSmrg	    fi
266639713583Smrg
2667e6f085baSmrg	    # Make a new name for the extract_expsyms_cmds to use
2668e6f085baSmrg	    soroot="$soname"
2669e6f085baSmrg	    soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
2670e6f085baSmrg	    newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
267139713583Smrg
2672e6f085baSmrg	    # If the library has no export list, then create one now
2673e6f085baSmrg	    if test -f "$output_objdir/$soname-def"; then :
2674e6f085baSmrg	    else
2675e6f085baSmrg	      $show "extracting exported symbol list from \`$soname'"
2676e6f085baSmrg	      save_ifs="$IFS"; IFS='~'
2677e6f085baSmrg	      cmds=$extract_expsyms_cmds
2678e6f085baSmrg	      for cmd in $cmds; do
2679e6f085baSmrg		IFS="$save_ifs"
2680e6f085baSmrg		eval cmd=\"$cmd\"
2681e6f085baSmrg		$show "$cmd"
2682e6f085baSmrg		$run eval "$cmd" || exit $?
2683e6f085baSmrg	      done
2684e6f085baSmrg	      IFS="$save_ifs"
2685e6f085baSmrg	    fi
268639713583Smrg
2687e6f085baSmrg	    # Create $newlib
2688e6f085baSmrg	    if test -f "$output_objdir/$newlib"; then :; else
2689e6f085baSmrg	      $show "generating import library for \`$soname'"
2690e6f085baSmrg	      save_ifs="$IFS"; IFS='~'
2691e6f085baSmrg	      cmds=$old_archive_from_expsyms_cmds
2692e6f085baSmrg	      for cmd in $cmds; do
2693e6f085baSmrg		IFS="$save_ifs"
2694e6f085baSmrg		eval cmd=\"$cmd\"
2695e6f085baSmrg		$show "$cmd"
2696e6f085baSmrg		$run eval "$cmd" || exit $?
2697e6f085baSmrg	      done
2698e6f085baSmrg	      IFS="$save_ifs"
2699e6f085baSmrg	    fi
2700e6f085baSmrg	    # make sure the library variables are pointing to the new library
2701e6f085baSmrg	    dir=$output_objdir
2702e6f085baSmrg	    linklib=$newlib
2703e6f085baSmrg	  fi # test -n "$old_archive_from_expsyms_cmds"
270495b296d0Smrg
2705e6f085baSmrg	  if test "$linkmode" = prog || test "$mode" != relink; then
2706e6f085baSmrg	    add_shlibpath=
2707e6f085baSmrg	    add_dir=
2708e6f085baSmrg	    add=
2709e6f085baSmrg	    lib_linked=yes
2710e6f085baSmrg	    case $hardcode_action in
2711e6f085baSmrg	    immediate | unsupported)
2712e6f085baSmrg	      if test "$hardcode_direct" = no; then
2713e6f085baSmrg		add="$dir/$linklib"
2714e6f085baSmrg		case $host in
2715e6f085baSmrg		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
2716e6f085baSmrg		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
2717e6f085baSmrg		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
2718e6f085baSmrg		    *-*-unixware7*) add_dir="-L$dir" ;;
2719e6f085baSmrg		  *-*-darwin* )
2720e6f085baSmrg		    # if the lib is a module then we can not link against
2721e6f085baSmrg		    # it, someone is ignoring the new warnings I added
2722e6f085baSmrg		    if /usr/bin/file -L $add 2> /dev/null |
2723e6f085baSmrg                      $EGREP ": [^:]* bundle" >/dev/null ; then
2724e6f085baSmrg		      $echo "** Warning, lib $linklib is a module, not a shared library"
2725e6f085baSmrg		      if test -z "$old_library" ; then
2726e6f085baSmrg		        $echo
2727e6f085baSmrg		        $echo "** And there doesn't seem to be a static archive available"
2728e6f085baSmrg		        $echo "** The link will probably fail, sorry"
2729e6f085baSmrg		      else
2730e6f085baSmrg		        add="$dir/$old_library"
2731e6f085baSmrg		      fi
2732e6f085baSmrg		    fi
2733e6f085baSmrg		esac
2734e6f085baSmrg	      elif test "$hardcode_minus_L" = no; then
2735e6f085baSmrg		case $host in
2736e6f085baSmrg		*-*-sunos*) add_shlibpath="$dir" ;;
2737e6f085baSmrg		esac
2738e6f085baSmrg		add_dir="-L$dir"
2739e6f085baSmrg		add="-l$name"
2740e6f085baSmrg	      elif test "$hardcode_shlibpath_var" = no; then
2741e6f085baSmrg		add_shlibpath="$dir"
2742e6f085baSmrg		add="-l$name"
2743e6f085baSmrg	      else
2744e6f085baSmrg		lib_linked=no
2745e6f085baSmrg	      fi
2746e6f085baSmrg	      ;;
2747e6f085baSmrg	    relink)
2748e6f085baSmrg	      if test "$hardcode_direct" = yes; then
2749e6f085baSmrg		add="$dir/$linklib"
2750e6f085baSmrg	      elif test "$hardcode_minus_L" = yes; then
2751e6f085baSmrg		add_dir="-L$dir"
2752e6f085baSmrg		# Try looking first in the location we're being installed to.
2753e6f085baSmrg		if test -n "$inst_prefix_dir"; then
2754e6f085baSmrg		  case $libdir in
2755e6f085baSmrg		    [\\/]*)
2756e6f085baSmrg		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
2757e6f085baSmrg		      ;;
2758e6f085baSmrg		  esac
2759e6f085baSmrg		fi
2760e6f085baSmrg		add="-l$name"
2761e6f085baSmrg	      elif test "$hardcode_shlibpath_var" = yes; then
2762e6f085baSmrg		add_shlibpath="$dir"
2763e6f085baSmrg		add="-l$name"
2764e6f085baSmrg	      else
2765e6f085baSmrg		lib_linked=no
2766e6f085baSmrg	      fi
2767e6f085baSmrg	      ;;
2768e6f085baSmrg	    *) lib_linked=no ;;
2769e6f085baSmrg	    esac
277095b296d0Smrg
2771e6f085baSmrg	    if test "$lib_linked" != yes; then
2772e6f085baSmrg	      $echo "$modename: configuration error: unsupported hardcode properties"
2773e6f085baSmrg	      exit $EXIT_FAILURE
2774e6f085baSmrg	    fi
277595b296d0Smrg
2776e6f085baSmrg	    if test -n "$add_shlibpath"; then
2777e6f085baSmrg	      case :$compile_shlibpath: in
2778e6f085baSmrg	      *":$add_shlibpath:"*) ;;
2779e6f085baSmrg	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
2780e6f085baSmrg	      esac
2781e6f085baSmrg	    fi
2782e6f085baSmrg	    if test "$linkmode" = prog; then
2783e6f085baSmrg	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
2784e6f085baSmrg	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
2785e6f085baSmrg	    else
2786e6f085baSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
2787e6f085baSmrg	      test -n "$add" && deplibs="$add $deplibs"
2788e6f085baSmrg	      if test "$hardcode_direct" != yes && \
2789e6f085baSmrg		 test "$hardcode_minus_L" != yes && \
2790e6f085baSmrg		 test "$hardcode_shlibpath_var" = yes; then
2791e6f085baSmrg		case :$finalize_shlibpath: in
2792e6f085baSmrg		*":$libdir:"*) ;;
2793e6f085baSmrg		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2794e6f085baSmrg		esac
2795e6f085baSmrg	      fi
2796e6f085baSmrg	    fi
2797e6f085baSmrg	  fi
279895b296d0Smrg
2799e6f085baSmrg	  if test "$linkmode" = prog || test "$mode" = relink; then
2800e6f085baSmrg	    add_shlibpath=
2801e6f085baSmrg	    add_dir=
2802e6f085baSmrg	    add=
2803e6f085baSmrg	    # Finalize command for both is simple: just hardcode it.
2804e6f085baSmrg	    if test "$hardcode_direct" = yes; then
2805e6f085baSmrg	      add="$libdir/$linklib"
2806e6f085baSmrg	    elif test "$hardcode_minus_L" = yes; then
2807e6f085baSmrg	      add_dir="-L$libdir"
2808e6f085baSmrg	      add="-l$name"
2809e6f085baSmrg	    elif test "$hardcode_shlibpath_var" = yes; then
2810e6f085baSmrg	      case :$finalize_shlibpath: in
2811e6f085baSmrg	      *":$libdir:"*) ;;
2812e6f085baSmrg	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2813e6f085baSmrg	      esac
2814e6f085baSmrg	      add="-l$name"
2815e6f085baSmrg	    elif test "$hardcode_automatic" = yes; then
2816e6f085baSmrg	      if test -n "$inst_prefix_dir" &&
2817e6f085baSmrg		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
2818e6f085baSmrg	        add="$inst_prefix_dir$libdir/$linklib"
2819e6f085baSmrg	      else
2820e6f085baSmrg	        add="$libdir/$linklib"
2821e6f085baSmrg	      fi
2822e6f085baSmrg	    else
2823e6f085baSmrg	      # We cannot seem to hardcode it, guess we'll fake it.
2824e6f085baSmrg	      add_dir="-L$libdir"
2825e6f085baSmrg	      # Try looking first in the location we're being installed to.
2826e6f085baSmrg	      if test -n "$inst_prefix_dir"; then
2827e6f085baSmrg		case $libdir in
2828e6f085baSmrg		  [\\/]*)
2829e6f085baSmrg		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
2830e6f085baSmrg		    ;;
2831e6f085baSmrg		esac
2832e6f085baSmrg	      fi
2833e6f085baSmrg	      add="-l$name"
2834e6f085baSmrg	    fi
283539713583Smrg
2836e6f085baSmrg	    if test "$linkmode" = prog; then
2837e6f085baSmrg	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
2838e6f085baSmrg	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
2839e6f085baSmrg	    else
2840e6f085baSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
2841e6f085baSmrg	      test -n "$add" && deplibs="$add $deplibs"
2842e6f085baSmrg	    fi
2843e6f085baSmrg	  fi
2844e6f085baSmrg	elif test "$linkmode" = prog; then
2845e6f085baSmrg	  # Here we assume that one of hardcode_direct or hardcode_minus_L
2846e6f085baSmrg	  # is not unsupported.  This is valid on all known static and
2847e6f085baSmrg	  # shared platforms.
2848e6f085baSmrg	  if test "$hardcode_direct" != unsupported; then
2849e6f085baSmrg	    test -n "$old_library" && linklib="$old_library"
2850e6f085baSmrg	    compile_deplibs="$dir/$linklib $compile_deplibs"
2851e6f085baSmrg	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
2852e6f085baSmrg	  else
2853e6f085baSmrg	    compile_deplibs="-l$name -L$dir $compile_deplibs"
2854e6f085baSmrg	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
2855e6f085baSmrg	  fi
2856e6f085baSmrg	elif test "$build_libtool_libs" = yes; then
2857e6f085baSmrg	  # Not a shared library
2858e6f085baSmrg	  if test "$deplibs_check_method" != pass_all; then
2859e6f085baSmrg	    # We're trying link a shared library against a static one
2860e6f085baSmrg	    # but the system doesn't support it.
286195b296d0Smrg
2862e6f085baSmrg	    # Just print a warning and add the library to dependency_libs so
2863e6f085baSmrg	    # that the program can be linked against the static library.
2864e6f085baSmrg	    $echo
2865e6f085baSmrg	    $echo "*** Warning: This system can not link to static lib archive $lib."
2866e6f085baSmrg	    $echo "*** I have the capability to make that library automatically link in when"
2867e6f085baSmrg	    $echo "*** you link to this library.  But I can only do this if you have a"
2868e6f085baSmrg	    $echo "*** shared version of the library, which you do not appear to have."
2869e6f085baSmrg	    if test "$module" = yes; then
2870e6f085baSmrg	      $echo "*** But as you try to build a module library, libtool will still create "
2871e6f085baSmrg	      $echo "*** a static module, that should work as long as the dlopening application"
2872e6f085baSmrg	      $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
2873e6f085baSmrg	      if test -z "$global_symbol_pipe"; then
2874e6f085baSmrg		$echo
2875e6f085baSmrg		$echo "*** However, this would only work if libtool was able to extract symbol"
2876e6f085baSmrg		$echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
2877e6f085baSmrg		$echo "*** not find such a program.  So, this module is probably useless."
2878e6f085baSmrg		$echo "*** \`nm' from GNU binutils and a full rebuild may help."
2879e6f085baSmrg	      fi
2880e6f085baSmrg	      if test "$build_old_libs" = no; then
2881e6f085baSmrg		build_libtool_libs=module
2882e6f085baSmrg		build_old_libs=yes
2883e6f085baSmrg	      else
2884e6f085baSmrg		build_libtool_libs=no
2885e6f085baSmrg	      fi
2886e6f085baSmrg	    fi
2887e6f085baSmrg	  else
2888e6f085baSmrg	    deplibs="$dir/$old_library $deplibs"
2889e6f085baSmrg	    link_static=yes
2890e6f085baSmrg	  fi
2891e6f085baSmrg	fi # link shared/static library?
289295b296d0Smrg
2893e6f085baSmrg	if test "$linkmode" = lib; then
2894e6f085baSmrg	  if test -n "$dependency_libs" &&
2895e6f085baSmrg	     { test "$hardcode_into_libs" != yes ||
2896e6f085baSmrg	       test "$build_old_libs" = yes ||
2897e6f085baSmrg	       test "$link_static" = yes; }; then
2898e6f085baSmrg	    # Extract -R from dependency_libs
2899e6f085baSmrg	    temp_deplibs=
2900e6f085baSmrg	    for libdir in $dependency_libs; do
2901e6f085baSmrg	      case $libdir in
2902e6f085baSmrg	      -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
2903e6f085baSmrg		   case " $xrpath " in
2904e6f085baSmrg		   *" $temp_xrpath "*) ;;
2905e6f085baSmrg		   *) xrpath="$xrpath $temp_xrpath";;
2906e6f085baSmrg		   esac;;
2907e6f085baSmrg	      *) temp_deplibs="$temp_deplibs $libdir";;
2908e6f085baSmrg	      esac
2909e6f085baSmrg	    done
2910e6f085baSmrg	    dependency_libs="$temp_deplibs"
2911e6f085baSmrg	  fi
291295b296d0Smrg
2913e6f085baSmrg	  newlib_search_path="$newlib_search_path $absdir"
2914e6f085baSmrg	  # Link against this library
2915e6f085baSmrg	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
2916e6f085baSmrg	  # ... and its dependency_libs
2917e6f085baSmrg	  tmp_libs=
2918e6f085baSmrg	  for deplib in $dependency_libs; do
2919e6f085baSmrg	    newdependency_libs="$deplib $newdependency_libs"
2920e6f085baSmrg	    if test "X$duplicate_deps" = "Xyes" ; then
2921e6f085baSmrg	      case "$tmp_libs " in
2922e6f085baSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2923e6f085baSmrg	      esac
2924e6f085baSmrg	    fi
2925e6f085baSmrg	    tmp_libs="$tmp_libs $deplib"
2926e6f085baSmrg	  done
292795b296d0Smrg
2928e6f085baSmrg	  if test "$link_all_deplibs" != no; then
2929e6f085baSmrg	    # Add the search paths of all dependency libraries
2930e6f085baSmrg	    for deplib in $dependency_libs; do
2931e6f085baSmrg	      case $deplib in
2932e6f085baSmrg	      -L*) path="$deplib" ;;
2933e6f085baSmrg	      *.la)
2934e6f085baSmrg		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
2935e6f085baSmrg		test "X$dir" = "X$deplib" && dir="."
2936e6f085baSmrg		# We need an absolute path.
2937e6f085baSmrg		case $dir in
2938e6f085baSmrg		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
2939e6f085baSmrg		*)
2940e6f085baSmrg		  absdir=`cd "$dir" && pwd`
2941e6f085baSmrg		  if test -z "$absdir"; then
2942e6f085baSmrg		    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
2943e6f085baSmrg		    absdir="$dir"
2944e6f085baSmrg		  fi
2945e6f085baSmrg		  ;;
2946e6f085baSmrg		esac
2947e6f085baSmrg		if grep "^installed=no" $deplib > /dev/null; then
2948e6f085baSmrg		  path="$absdir/$objdir"
2949e6f085baSmrg		else
2950e6f085baSmrg		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
2951e6f085baSmrg		  if test -z "$libdir"; then
2952e6f085baSmrg		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
2953e6f085baSmrg		    exit $EXIT_FAILURE
2954e6f085baSmrg		  fi
2955e6f085baSmrg		  if test "$absdir" != "$libdir"; then
2956e6f085baSmrg		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
2957e6f085baSmrg		  fi
2958e6f085baSmrg		  path="$absdir"
2959e6f085baSmrg		fi
2960e6f085baSmrg		depdepl=
2961e6f085baSmrg		case $host in
2962e6f085baSmrg		*-*-darwin*)
2963e6f085baSmrg		  # we do not want to link against static libs,
2964e6f085baSmrg		  # but need to link against shared
2965e6f085baSmrg		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
2966e6f085baSmrg		  eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
2967e6f085baSmrg		  if test -n "$deplibrary_names" ; then
2968e6f085baSmrg		    for tmp in $deplibrary_names ; do
2969e6f085baSmrg		      depdepl=$tmp
2970e6f085baSmrg		    done
2971e6f085baSmrg		    if test -f "$deplibdir/$depdepl" ; then
2972e6f085baSmrg		      depdepl="$deplibdir/$depdepl"
2973e6f085baSmrg	      	    elif test -f "$path/$depdepl" ; then
2974e6f085baSmrg		      depdepl="$path/$depdepl"
2975e6f085baSmrg		    else
2976e6f085baSmrg		      # Can't find it, oh well...
2977e6f085baSmrg		      depdepl=
2978e6f085baSmrg		    fi
2979e6f085baSmrg		    # do not add paths which are already there
2980e6f085baSmrg		    case " $newlib_search_path " in
2981e6f085baSmrg		    *" $path "*) ;;
2982e6f085baSmrg		    *) newlib_search_path="$newlib_search_path $path";;
2983e6f085baSmrg		    esac
2984e6f085baSmrg		  fi
2985e6f085baSmrg		  path=""
2986e6f085baSmrg		  ;;
2987e6f085baSmrg		*)
2988e6f085baSmrg		  path="-L$path"
2989e6f085baSmrg		  ;;
2990e6f085baSmrg		esac
2991e6f085baSmrg		;;
2992e6f085baSmrg	      -l*)
2993e6f085baSmrg		case $host in
2994e6f085baSmrg		*-*-darwin*)
2995e6f085baSmrg		  # Again, we only want to link against shared libraries
2996e6f085baSmrg		  eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
2997e6f085baSmrg		  for tmp in $newlib_search_path ; do
2998e6f085baSmrg		    if test -f "$tmp/lib$tmp_libs.dylib" ; then
2999e6f085baSmrg		      eval depdepl="$tmp/lib$tmp_libs.dylib"
3000e6f085baSmrg		      break
3001e6f085baSmrg		    fi
3002e6f085baSmrg		  done
3003e6f085baSmrg		  path=""
3004e6f085baSmrg		  ;;
3005e6f085baSmrg		*) continue ;;
3006e6f085baSmrg		esac
3007e6f085baSmrg		;;
3008e6f085baSmrg	      *) continue ;;
3009e6f085baSmrg	      esac
3010e6f085baSmrg	      case " $deplibs " in
3011e6f085baSmrg	      *" $path "*) ;;
3012e6f085baSmrg	      *) deplibs="$path $deplibs" ;;
3013e6f085baSmrg	      esac
3014e6f085baSmrg	      case " $deplibs " in
3015e6f085baSmrg	      *" $depdepl "*) ;;
3016e6f085baSmrg	      *) deplibs="$depdepl $deplibs" ;;
3017e6f085baSmrg	      esac
3018e6f085baSmrg	    done
3019e6f085baSmrg	  fi # link_all_deplibs != no
3020e6f085baSmrg	fi # linkmode = lib
3021e6f085baSmrg      done # for deplib in $libs
3022e6f085baSmrg      dependency_libs="$newdependency_libs"
3023e6f085baSmrg      if test "$pass" = dlpreopen; then
3024e6f085baSmrg	# Link the dlpreopened libraries before other libraries
3025e6f085baSmrg	for deplib in $save_deplibs; do
3026e6f085baSmrg	  deplibs="$deplib $deplibs"
3027e6f085baSmrg	done
3028e6f085baSmrg      fi
3029e6f085baSmrg      if test "$pass" != dlopen; then
3030e6f085baSmrg	if test "$pass" != conv; then
3031e6f085baSmrg	  # Make sure lib_search_path contains only unique directories.
3032e6f085baSmrg	  lib_search_path=
3033e6f085baSmrg	  for dir in $newlib_search_path; do
3034e6f085baSmrg	    case "$lib_search_path " in
3035e6f085baSmrg	    *" $dir "*) ;;
3036e6f085baSmrg	    *) lib_search_path="$lib_search_path $dir" ;;
3037e6f085baSmrg	    esac
3038e6f085baSmrg	  done
3039e6f085baSmrg	  newlib_search_path=
3040e6f085baSmrg	fi
3041e6f085baSmrg
3042e6f085baSmrg	if test "$linkmode,$pass" != "prog,link"; then
3043e6f085baSmrg	  vars="deplibs"
3044e6f085baSmrg	else
3045e6f085baSmrg	  vars="compile_deplibs finalize_deplibs"
3046e6f085baSmrg	fi
3047e6f085baSmrg	for var in $vars dependency_libs; do
3048e6f085baSmrg	  # Add libraries to $var in reverse order
3049e6f085baSmrg	  eval tmp_libs=\"\$$var\"
3050e6f085baSmrg	  new_libs=
3051e6f085baSmrg	  for deplib in $tmp_libs; do
3052e6f085baSmrg	    # FIXME: Pedantically, this is the right thing to do, so
3053e6f085baSmrg	    #        that some nasty dependency loop isn't accidentally
3054e6f085baSmrg	    #        broken:
3055e6f085baSmrg	    #new_libs="$deplib $new_libs"
3056e6f085baSmrg	    # Pragmatically, this seems to cause very few problems in
3057e6f085baSmrg	    # practice:
3058e6f085baSmrg	    case $deplib in
3059e6f085baSmrg	    -L*) new_libs="$deplib $new_libs" ;;
3060e6f085baSmrg	    -R*) ;;
3061e6f085baSmrg	    *)
3062e6f085baSmrg	      # And here is the reason: when a library appears more
3063e6f085baSmrg	      # than once as an explicit dependence of a library, or
3064e6f085baSmrg	      # is implicitly linked in more than once by the
3065e6f085baSmrg	      # compiler, it is considered special, and multiple
3066e6f085baSmrg	      # occurrences thereof are not removed.  Compare this
3067e6f085baSmrg	      # with having the same library being listed as a
3068e6f085baSmrg	      # dependency of multiple other libraries: in this case,
3069e6f085baSmrg	      # we know (pedantically, we assume) the library does not
3070e6f085baSmrg	      # need to be listed more than once, so we keep only the
3071e6f085baSmrg	      # last copy.  This is not always right, but it is rare
3072e6f085baSmrg	      # enough that we require users that really mean to play
3073e6f085baSmrg	      # such unportable linking tricks to link the library
3074e6f085baSmrg	      # using -Wl,-lname, so that libtool does not consider it
3075e6f085baSmrg	      # for duplicate removal.
3076e6f085baSmrg	      case " $specialdeplibs " in
3077e6f085baSmrg	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
3078e6f085baSmrg	      *)
3079e6f085baSmrg		case " $new_libs " in
3080e6f085baSmrg		*" $deplib "*) ;;
3081e6f085baSmrg		*) new_libs="$deplib $new_libs" ;;
3082e6f085baSmrg		esac
3083e6f085baSmrg		;;
3084e6f085baSmrg	      esac
3085e6f085baSmrg	      ;;
3086e6f085baSmrg	    esac
3087e6f085baSmrg	  done
3088e6f085baSmrg	  tmp_libs=
3089e6f085baSmrg	  for deplib in $new_libs; do
3090e6f085baSmrg	    case $deplib in
3091e6f085baSmrg	    -L*)
3092e6f085baSmrg	      case " $tmp_libs " in
3093e6f085baSmrg	      *" $deplib "*) ;;
3094e6f085baSmrg	      *) tmp_libs="$tmp_libs $deplib" ;;
3095e6f085baSmrg	      esac
3096e6f085baSmrg	      ;;
3097e6f085baSmrg	    *) tmp_libs="$tmp_libs $deplib" ;;
3098e6f085baSmrg	    esac
3099e6f085baSmrg	  done
3100e6f085baSmrg	  eval $var=\"$tmp_libs\"
3101e6f085baSmrg	done # for var
3102e6f085baSmrg      fi
3103e6f085baSmrg      # Last step: remove runtime libs from dependency_libs
3104e6f085baSmrg      # (they stay in deplibs)
3105e6f085baSmrg      tmp_libs=
3106e6f085baSmrg      for i in $dependency_libs ; do
3107e6f085baSmrg	case " $predeps $postdeps $compiler_lib_search_path " in
3108e6f085baSmrg	*" $i "*)
3109e6f085baSmrg	  i=""
311095b296d0Smrg	  ;;
311195b296d0Smrg	esac
3112e6f085baSmrg	if test -n "$i" ; then
3113e6f085baSmrg	  tmp_libs="$tmp_libs $i"
3114e6f085baSmrg	fi
3115e6f085baSmrg      done
3116e6f085baSmrg      dependency_libs=$tmp_libs
3117e6f085baSmrg    done # for pass
3118e6f085baSmrg    if test "$linkmode" = prog; then
3119e6f085baSmrg      dlfiles="$newdlfiles"
3120e6f085baSmrg      dlprefiles="$newdlprefiles"
312139713583Smrg    fi
312295b296d0Smrg
3123e6f085baSmrg    case $linkmode in
3124e6f085baSmrg    oldlib)
3125e6f085baSmrg      case " $deplibs" in
3126e6f085baSmrg      *\ -l* | *\ -L*)
3127e6f085baSmrg	$echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;;
3128e6f085baSmrg      esac
312995b296d0Smrg
3130e6f085baSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3131e6f085baSmrg	$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
3132e6f085baSmrg      fi
313395b296d0Smrg
3134e6f085baSmrg      if test -n "$rpath"; then
3135e6f085baSmrg	$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
3136e6f085baSmrg      fi
313795b296d0Smrg
3138e6f085baSmrg      if test -n "$xrpath"; then
3139e6f085baSmrg	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
3140e6f085baSmrg      fi
314195b296d0Smrg
3142e6f085baSmrg      if test -n "$vinfo"; then
3143e6f085baSmrg	$echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
3144e6f085baSmrg      fi
314595b296d0Smrg
3146e6f085baSmrg      if test -n "$release"; then
3147e6f085baSmrg	$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
3148e6f085baSmrg      fi
314995b296d0Smrg
3150e6f085baSmrg      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
3151e6f085baSmrg	$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
3152e6f085baSmrg      fi
315395b296d0Smrg
3154e6f085baSmrg      # Now set the variables for building old libraries.
3155e6f085baSmrg      build_libtool_libs=no
3156e6f085baSmrg      oldlibs="$output"
3157e6f085baSmrg      objs="$objs$old_deplibs"
3158e6f085baSmrg      ;;
315995b296d0Smrg
3160e6f085baSmrg    lib)
3161e6f085baSmrg      # Make sure we only generate libraries of the form `libNAME.la'.
3162e6f085baSmrg      case $outputname in
3163e6f085baSmrg      lib*)
3164e6f085baSmrg	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
3165e6f085baSmrg	eval shared_ext=\"$shrext_cmds\"
3166e6f085baSmrg	eval libname=\"$libname_spec\"
3167e6f085baSmrg	;;
3168e6f085baSmrg      *)
3169e6f085baSmrg	if test "$module" = no; then
3170e6f085baSmrg	  $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
3171e6f085baSmrg	  $echo "$help" 1>&2
3172e6f085baSmrg	  exit $EXIT_FAILURE
3173e6f085baSmrg	fi
3174e6f085baSmrg	if test "$need_lib_prefix" != no; then
3175e6f085baSmrg	  # Add the "lib" prefix for modules if required
3176e6f085baSmrg	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
3177e6f085baSmrg	  eval shared_ext=\"$shrext_cmds\"
3178e6f085baSmrg	  eval libname=\"$libname_spec\"
3179e6f085baSmrg	else
3180e6f085baSmrg	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
3181e6f085baSmrg	fi
3182e6f085baSmrg	;;
3183e6f085baSmrg      esac
318495b296d0Smrg
3185e6f085baSmrg      if test -n "$objs"; then
3186e6f085baSmrg	if test "$deplibs_check_method" != pass_all; then
3187e6f085baSmrg	  $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
3188e6f085baSmrg	  exit $EXIT_FAILURE
3189e6f085baSmrg	else
3190e6f085baSmrg	  $echo
3191e6f085baSmrg	  $echo "*** Warning: Linking the shared library $output against the non-libtool"
3192e6f085baSmrg	  $echo "*** objects $objs is not portable!"
3193e6f085baSmrg	  libobjs="$libobjs $objs"
3194e6f085baSmrg	fi
3195e6f085baSmrg      fi
319695b296d0Smrg
3197e6f085baSmrg      if test "$dlself" != no; then
3198e6f085baSmrg	$echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
3199e6f085baSmrg      fi
320095b296d0Smrg
3201e6f085baSmrg      set dummy $rpath
3202e6f085baSmrg      if test "$#" -gt 2; then
3203e6f085baSmrg	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
3204e6f085baSmrg      fi
3205e6f085baSmrg      install_libdir="$2"
320695b296d0Smrg
3207e6f085baSmrg      oldlibs=
3208e6f085baSmrg      if test -z "$rpath"; then
3209e6f085baSmrg	if test "$build_libtool_libs" = yes; then
3210e6f085baSmrg	  # Building a libtool convenience library.
3211e6f085baSmrg	  # Some compilers have problems with a `.al' extension so
3212e6f085baSmrg	  # convenience libraries should have the same extension an
3213e6f085baSmrg	  # archive normally would.
3214e6f085baSmrg	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
3215e6f085baSmrg	  build_libtool_libs=convenience
3216e6f085baSmrg	  build_old_libs=yes
3217e6f085baSmrg	fi
321895b296d0Smrg
3219e6f085baSmrg	if test -n "$vinfo"; then
3220e6f085baSmrg	  $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
3221e6f085baSmrg	fi
322295b296d0Smrg
3223e6f085baSmrg	if test -n "$release"; then
3224e6f085baSmrg	  $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
3225e6f085baSmrg	fi
3226e6f085baSmrg      else
322795b296d0Smrg
3228e6f085baSmrg	# Parse the version information argument.
3229e6f085baSmrg	save_ifs="$IFS"; IFS=':'
3230e6f085baSmrg	set dummy $vinfo 0 0 0
3231e6f085baSmrg	IFS="$save_ifs"
323295b296d0Smrg
3233e6f085baSmrg	if test -n "$8"; then
3234e6f085baSmrg	  $echo "$modename: too many parameters to \`-version-info'" 1>&2
3235e6f085baSmrg	  $echo "$help" 1>&2
3236e6f085baSmrg	  exit $EXIT_FAILURE
3237e6f085baSmrg	fi
323895b296d0Smrg
3239e6f085baSmrg	# convert absolute version numbers to libtool ages
3240e6f085baSmrg	# this retains compatibility with .la files and attempts
3241e6f085baSmrg	# to make the code below a bit more comprehensible
324295b296d0Smrg
3243e6f085baSmrg	case $vinfo_number in
3244e6f085baSmrg	yes)
3245e6f085baSmrg	  number_major="$2"
3246e6f085baSmrg	  number_minor="$3"
3247e6f085baSmrg	  number_revision="$4"
3248e6f085baSmrg	  #
3249e6f085baSmrg	  # There are really only two kinds -- those that
3250e6f085baSmrg	  # use the current revision as the major version
3251e6f085baSmrg	  # and those that subtract age and use age as
3252e6f085baSmrg	  # a minor version.  But, then there is irix
3253e6f085baSmrg	  # which has an extra 1 added just for fun
3254e6f085baSmrg	  #
3255e6f085baSmrg	  case $version_type in
3256e6f085baSmrg	  darwin|linux|osf|windows|none)
3257e6f085baSmrg	    current=`expr $number_major + $number_minor`
3258e6f085baSmrg	    age="$number_minor"
3259e6f085baSmrg	    revision="$number_revision"
3260e6f085baSmrg	    ;;
3261e6f085baSmrg	  freebsd-aout|freebsd-elf|sunos)
3262e6f085baSmrg	    current="$number_major"
3263e6f085baSmrg	    revision="$number_minor"
3264e6f085baSmrg	    age="0"
3265e6f085baSmrg	    ;;
3266e6f085baSmrg	  irix|nonstopux)
3267e6f085baSmrg	    current=`expr $number_major + $number_minor`
3268e6f085baSmrg	    age="$number_minor"
3269e6f085baSmrg	    revision="$number_minor"
3270e6f085baSmrg	    lt_irix_increment=no
3271e6f085baSmrg	    ;;
3272e6f085baSmrg	  esac
3273e6f085baSmrg	  ;;
3274e6f085baSmrg	no)
3275e6f085baSmrg	  current="$2"
3276e6f085baSmrg	  revision="$3"
3277e6f085baSmrg	  age="$4"
3278e6f085baSmrg	  ;;
3279e6f085baSmrg	esac
328095b296d0Smrg
3281e6f085baSmrg	# Check that each of the things are valid numbers.
3282e6f085baSmrg	case $current in
3283e6f085baSmrg	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]) ;;
3284e6f085baSmrg	*)
3285e6f085baSmrg	  $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
3286e6f085baSmrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3287e6f085baSmrg	  exit $EXIT_FAILURE
3288e6f085baSmrg	  ;;
3289e6f085baSmrg	esac
329095b296d0Smrg
3291e6f085baSmrg	case $revision in
3292e6f085baSmrg	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]) ;;
3293e6f085baSmrg	*)
3294e6f085baSmrg	  $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
3295e6f085baSmrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3296e6f085baSmrg	  exit $EXIT_FAILURE
3297e6f085baSmrg	  ;;
3298e6f085baSmrg	esac
329995b296d0Smrg
3300e6f085baSmrg	case $age in
3301e6f085baSmrg	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]) ;;
3302e6f085baSmrg	*)
3303e6f085baSmrg	  $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
3304e6f085baSmrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3305e6f085baSmrg	  exit $EXIT_FAILURE
3306e6f085baSmrg	  ;;
3307e6f085baSmrg	esac
330895b296d0Smrg
3309e6f085baSmrg	if test "$age" -gt "$current"; then
3310e6f085baSmrg	  $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
3311e6f085baSmrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3312e6f085baSmrg	  exit $EXIT_FAILURE
3313e6f085baSmrg	fi
331495b296d0Smrg
3315e6f085baSmrg	# Calculate the version variables.
3316e6f085baSmrg	major=
3317e6f085baSmrg	versuffix=
3318e6f085baSmrg	verstring=
3319e6f085baSmrg	case $version_type in
3320e6f085baSmrg	none) ;;
332195b296d0Smrg
3322e6f085baSmrg	darwin)
3323e6f085baSmrg	  # Like Linux, but with the current version available in
3324e6f085baSmrg	  # verstring for coding it into the library header
3325e6f085baSmrg	  major=.`expr $current - $age`
3326e6f085baSmrg	  versuffix="$major.$age.$revision"
3327e6f085baSmrg	  # Darwin ld doesn't like 0 for these options...
3328e6f085baSmrg	  minor_current=`expr $current + 1`
3329e6f085baSmrg	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
3330e6f085baSmrg	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
3331e6f085baSmrg	  ;;
333295b296d0Smrg
3333e6f085baSmrg	freebsd-aout)
3334e6f085baSmrg	  major=".$current"
3335e6f085baSmrg	  versuffix=".$current.$revision";
3336e6f085baSmrg	  ;;
333795b296d0Smrg
3338e6f085baSmrg	freebsd-elf)
3339e6f085baSmrg	  major=".$current"
3340e6f085baSmrg	  versuffix=".$current";
3341e6f085baSmrg	  ;;
334239713583Smrg
3343e6f085baSmrg	irix | nonstopux)
3344e6f085baSmrg	  if test "X$lt_irix_increment" = "Xno"; then
3345e6f085baSmrg	    major=`expr $current - $age`
3346e6f085baSmrg	  else
3347e6f085baSmrg	    major=`expr $current - $age + 1`
3348e6f085baSmrg	  fi
3349e6f085baSmrg	  case $version_type in
3350e6f085baSmrg	    nonstopux) verstring_prefix=nonstopux ;;
3351e6f085baSmrg	    *)         verstring_prefix=sgi ;;
3352e6f085baSmrg	  esac
3353e6f085baSmrg	  verstring="$verstring_prefix$major.$revision"
335495b296d0Smrg
3355e6f085baSmrg	  # Add in all the interfaces that we are compatible with.
3356e6f085baSmrg	  loop=$revision
3357e6f085baSmrg	  while test "$loop" -ne 0; do
3358e6f085baSmrg	    iface=`expr $revision - $loop`
3359e6f085baSmrg	    loop=`expr $loop - 1`
3360e6f085baSmrg	    verstring="$verstring_prefix$major.$iface:$verstring"
3361e6f085baSmrg	  done
336295b296d0Smrg
3363e6f085baSmrg	  # Before this point, $major must not contain `.'.
3364e6f085baSmrg	  major=.$major
3365e6f085baSmrg	  versuffix="$major.$revision"
3366e6f085baSmrg	  ;;
336795b296d0Smrg
3368e6f085baSmrg	linux)
3369e6f085baSmrg	  major=.`expr $current - $age`
3370e6f085baSmrg	  versuffix="$major.$age.$revision"
3371e6f085baSmrg	  ;;
337295b296d0Smrg
3373e6f085baSmrg	osf)
3374e6f085baSmrg	  major=.`expr $current - $age`
3375e6f085baSmrg	  versuffix=".$current.$age.$revision"
3376e6f085baSmrg	  verstring="$current.$age.$revision"
337795b296d0Smrg
3378e6f085baSmrg	  # Add in all the interfaces that we are compatible with.
3379e6f085baSmrg	  loop=$age
3380e6f085baSmrg	  while test "$loop" -ne 0; do
3381e6f085baSmrg	    iface=`expr $current - $loop`
3382e6f085baSmrg	    loop=`expr $loop - 1`
3383e6f085baSmrg	    verstring="$verstring:${iface}.0"
3384e6f085baSmrg	  done
338595b296d0Smrg
3386e6f085baSmrg	  # Make executables depend on our current version.
3387e6f085baSmrg	  verstring="$verstring:${current}.0"
3388e6f085baSmrg	  ;;
338995b296d0Smrg
3390e6f085baSmrg	sunos)
3391e6f085baSmrg	  major=".$current"
3392e6f085baSmrg	  versuffix=".$current.$revision"
3393e6f085baSmrg	  ;;
339495b296d0Smrg
3395e6f085baSmrg	windows)
3396e6f085baSmrg	  # Use '-' rather than '.', since we only want one
3397e6f085baSmrg	  # extension on DOS 8.3 filesystems.
3398e6f085baSmrg	  major=`expr $current - $age`
3399e6f085baSmrg	  versuffix="-$major"
3400e6f085baSmrg	  ;;
340195b296d0Smrg
3402e6f085baSmrg	*)
3403e6f085baSmrg	  $echo "$modename: unknown library version type \`$version_type'" 1>&2
3404e6f085baSmrg	  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
3405e6f085baSmrg	  exit $EXIT_FAILURE
3406e6f085baSmrg	  ;;
3407e6f085baSmrg	esac
340895b296d0Smrg
3409e6f085baSmrg	# Clear the version info if we defaulted, and they specified a release.
3410e6f085baSmrg	if test -z "$vinfo" && test -n "$release"; then
3411e6f085baSmrg	  major=
3412e6f085baSmrg	  case $version_type in
3413e6f085baSmrg	  darwin)
3414e6f085baSmrg	    # we can't check for "0.0" in archive_cmds due to quoting
3415e6f085baSmrg	    # problems, so we reset it completely
3416e6f085baSmrg	    verstring=
341739713583Smrg	    ;;
3418e6f085baSmrg	  *)
3419e6f085baSmrg	    verstring="0.0"
3420e6f085baSmrg	    ;;
3421e6f085baSmrg	  esac
3422e6f085baSmrg	  if test "$need_version" = no; then
3423e6f085baSmrg	    versuffix=
3424e6f085baSmrg	  else
3425e6f085baSmrg	    versuffix=".0.0"
3426e6f085baSmrg	  fi
3427e6f085baSmrg	fi
342895b296d0Smrg
3429e6f085baSmrg	# Remove version info from name if versioning should be avoided
3430e6f085baSmrg	if test "$avoid_version" = yes && test "$need_version" = no; then
3431e6f085baSmrg	  major=
3432e6f085baSmrg	  versuffix=
3433e6f085baSmrg	  verstring=""
3434e6f085baSmrg	fi
343595b296d0Smrg
3436e6f085baSmrg	# Check to see if the archive will have undefined symbols.
3437e6f085baSmrg	if test "$allow_undefined" = yes; then
3438e6f085baSmrg	  if test "$allow_undefined_flag" = unsupported; then
3439e6f085baSmrg	    $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
3440e6f085baSmrg	    build_libtool_libs=no
3441e6f085baSmrg	    build_old_libs=yes
3442e6f085baSmrg	  fi
3443e6f085baSmrg	else
3444e6f085baSmrg	  # Don't allow undefined symbols.
3445e6f085baSmrg	  allow_undefined_flag="$no_undefined_flag"
3446e6f085baSmrg	fi
3447e6f085baSmrg      fi
344895b296d0Smrg
3449e6f085baSmrg      if test "$mode" != relink; then
3450e6f085baSmrg	# Remove our outputs, but don't remove object files since they
3451e6f085baSmrg	# may have been created when compiling PIC objects.
3452e6f085baSmrg	removelist=
3453e6f085baSmrg	tempremovelist=`$echo "$output_objdir/*"`
3454e6f085baSmrg	for p in $tempremovelist; do
3455e6f085baSmrg	  case $p in
3456e6f085baSmrg	    *.$objext)
3457e6f085baSmrg	       ;;
3458e6f085baSmrg	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
3459e6f085baSmrg	       if test "X$precious_files_regex" != "X"; then
3460e6f085baSmrg	         if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
3461e6f085baSmrg	         then
3462e6f085baSmrg		   continue
3463e6f085baSmrg		 fi
3464e6f085baSmrg	       fi
3465e6f085baSmrg	       removelist="$removelist $p"
3466e6f085baSmrg	       ;;
3467e6f085baSmrg	    *) ;;
3468e6f085baSmrg	  esac
3469e6f085baSmrg	done
3470e6f085baSmrg	if test -n "$removelist"; then
3471e6f085baSmrg	  $show "${rm}r $removelist"
3472e6f085baSmrg	  $run ${rm}r $removelist
3473e6f085baSmrg	fi
3474e6f085baSmrg      fi
347595b296d0Smrg
3476e6f085baSmrg      # Now set the variables for building old libraries.
3477e6f085baSmrg      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
3478e6f085baSmrg	oldlibs="$oldlibs $output_objdir/$libname.$libext"
347995b296d0Smrg
3480e6f085baSmrg	# Transform .lo files to .o files.
3481e6f085baSmrg	oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
3482e6f085baSmrg      fi
348395b296d0Smrg
3484e6f085baSmrg      # Eliminate all temporary directories.
3485e6f085baSmrg      #for path in $notinst_path; do
3486e6f085baSmrg      #	lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
3487e6f085baSmrg      #	deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
3488e6f085baSmrg      #	dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
3489e6f085baSmrg      #done
349095b296d0Smrg
3491e6f085baSmrg      if test -n "$xrpath"; then
3492e6f085baSmrg	# If the user specified any rpath flags, then add them.
3493e6f085baSmrg	temp_xrpath=
3494e6f085baSmrg	for libdir in $xrpath; do
3495e6f085baSmrg	  temp_xrpath="$temp_xrpath -R$libdir"
3496e6f085baSmrg	  case "$finalize_rpath " in
3497e6f085baSmrg	  *" $libdir "*) ;;
3498e6f085baSmrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
3499e6f085baSmrg	  esac
3500e6f085baSmrg	done
3501e6f085baSmrg	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
3502e6f085baSmrg	  dependency_libs="$temp_xrpath $dependency_libs"
3503e6f085baSmrg	fi
3504e6f085baSmrg      fi
350595b296d0Smrg
3506e6f085baSmrg      # Make sure dlfiles contains only unique files that won't be dlpreopened
3507e6f085baSmrg      old_dlfiles="$dlfiles"
3508e6f085baSmrg      dlfiles=
3509e6f085baSmrg      for lib in $old_dlfiles; do
3510e6f085baSmrg	case " $dlprefiles $dlfiles " in
3511e6f085baSmrg	*" $lib "*) ;;
3512e6f085baSmrg	*) dlfiles="$dlfiles $lib" ;;
3513e6f085baSmrg	esac
3514e6f085baSmrg      done
351595b296d0Smrg
3516e6f085baSmrg      # Make sure dlprefiles contains only unique files
3517e6f085baSmrg      old_dlprefiles="$dlprefiles"
3518e6f085baSmrg      dlprefiles=
3519e6f085baSmrg      for lib in $old_dlprefiles; do
3520e6f085baSmrg	case "$dlprefiles " in
3521e6f085baSmrg	*" $lib "*) ;;
3522e6f085baSmrg	*) dlprefiles="$dlprefiles $lib" ;;
3523e6f085baSmrg	esac
3524e6f085baSmrg      done
352595b296d0Smrg
3526e6f085baSmrg      if test "$build_libtool_libs" = yes; then
3527e6f085baSmrg	if test -n "$rpath"; then
3528e6f085baSmrg	  case $host in
3529e6f085baSmrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
3530e6f085baSmrg	    # these systems don't actually have a c library (as such)!
3531e6f085baSmrg	    ;;
3532e6f085baSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
3533e6f085baSmrg	    # Rhapsody C library is in the System framework
3534e6f085baSmrg	    deplibs="$deplibs -framework System"
3535e6f085baSmrg	    ;;
3536e6f085baSmrg	  *-*-netbsd*)
3537e6f085baSmrg	    # Don't link with libc until the a.out ld.so is fixed.
3538e6f085baSmrg	    ;;
3539e6f085baSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
3540e6f085baSmrg	    # Do not include libc due to us having libc/libc_r.
3541e6f085baSmrg	    ;;
3542e6f085baSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
3543e6f085baSmrg	    # Causes problems with __ctype
3544e6f085baSmrg	    ;;
3545e6f085baSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
3546e6f085baSmrg	    # Compiler inserts libc in the correct place for threads to work
3547e6f085baSmrg	    ;;
3548e6f085baSmrg 	  *)
3549e6f085baSmrg	    # Add libc to deplibs on all other systems if necessary.
3550e6f085baSmrg	    if test "$build_libtool_need_lc" = "yes"; then
3551e6f085baSmrg	      deplibs="$deplibs -lc"
3552e6f085baSmrg	    fi
3553e6f085baSmrg	    ;;
3554e6f085baSmrg	  esac
3555e6f085baSmrg	fi
355695b296d0Smrg
3557e6f085baSmrg	# Transform deplibs into only deplibs that can be linked in shared.
3558e6f085baSmrg	name_save=$name
3559e6f085baSmrg	libname_save=$libname
3560e6f085baSmrg	release_save=$release
3561e6f085baSmrg	versuffix_save=$versuffix
3562e6f085baSmrg	major_save=$major
3563e6f085baSmrg	# I'm not sure if I'm treating the release correctly.  I think
3564e6f085baSmrg	# release should show up in the -l (ie -lgmp5) so we don't want to
3565e6f085baSmrg	# add it in twice.  Is that correct?
3566e6f085baSmrg	release=""
3567e6f085baSmrg	versuffix=""
3568e6f085baSmrg	major=""
3569e6f085baSmrg	newdeplibs=
3570e6f085baSmrg	droppeddeps=no
3571e6f085baSmrg	case $deplibs_check_method in
3572e6f085baSmrg	pass_all)
3573e6f085baSmrg	  # Don't check for shared/static.  Everything works.
3574e6f085baSmrg	  # This might be a little naive.  We might want to check
3575e6f085baSmrg	  # whether the library exists or not.  But this is on
3576e6f085baSmrg	  # osf3 & osf4 and I'm not really sure... Just
3577e6f085baSmrg	  # implementing what was already the behavior.
3578e6f085baSmrg	  newdeplibs=$deplibs
3579e6f085baSmrg	  ;;
3580e6f085baSmrg	test_compile)
3581e6f085baSmrg	  # This code stresses the "libraries are programs" paradigm to its
3582e6f085baSmrg	  # limits. Maybe even breaks it.  We compile a program, linking it
3583e6f085baSmrg	  # against the deplibs as a proxy for the library.  Then we can check
3584e6f085baSmrg	  # whether they linked in statically or dynamically with ldd.
3585e6f085baSmrg	  $rm conftest.c
3586e6f085baSmrg	  cat > conftest.c <<EOF
3587e6f085baSmrg	  int main() { return 0; }
3588e6f085baSmrgEOF
3589e6f085baSmrg	  $rm conftest
3590e6f085baSmrg	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
3591e6f085baSmrg	    ldd_output=`ldd conftest`
3592e6f085baSmrg	    for i in $deplibs; do
3593e6f085baSmrg	      name=`expr $i : '-l\(.*\)'`
3594e6f085baSmrg	      # If $name is empty we are operating on a -L argument.
3595e6f085baSmrg              if test "$name" != "" && test "$name" != "0"; then
3596e6f085baSmrg		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3597e6f085baSmrg		  case " $predeps $postdeps " in
3598e6f085baSmrg		  *" $i "*)
3599e6f085baSmrg		    newdeplibs="$newdeplibs $i"
3600e6f085baSmrg		    i=""
3601e6f085baSmrg		    ;;
3602e6f085baSmrg		  esac
3603e6f085baSmrg	        fi
3604e6f085baSmrg		if test -n "$i" ; then
3605e6f085baSmrg		  libname=`eval \\$echo \"$libname_spec\"`
3606e6f085baSmrg		  deplib_matches=`eval \\$echo \"$library_names_spec\"`
3607e6f085baSmrg		  set dummy $deplib_matches
3608e6f085baSmrg		  deplib_match=$2
3609e6f085baSmrg		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3610e6f085baSmrg		    newdeplibs="$newdeplibs $i"
3611e6f085baSmrg		  else
3612e6f085baSmrg		    droppeddeps=yes
3613e6f085baSmrg		    $echo
3614e6f085baSmrg		    $echo "*** Warning: dynamic linker does not accept needed library $i."
3615e6f085baSmrg		    $echo "*** I have the capability to make that library automatically link in when"
3616e6f085baSmrg		    $echo "*** you link to this library.  But I can only do this if you have a"
3617e6f085baSmrg		    $echo "*** shared version of the library, which I believe you do not have"
3618e6f085baSmrg		    $echo "*** because a test_compile did reveal that the linker did not use it for"
3619e6f085baSmrg		    $echo "*** its dynamic dependency list that programs get resolved with at runtime."
3620e6f085baSmrg		  fi
3621e6f085baSmrg		fi
3622e6f085baSmrg	      else
3623e6f085baSmrg		newdeplibs="$newdeplibs $i"
3624e6f085baSmrg	      fi
3625e6f085baSmrg	    done
3626e6f085baSmrg	  else
3627e6f085baSmrg	    # Error occurred in the first compile.  Let's try to salvage
3628e6f085baSmrg	    # the situation: Compile a separate program for each library.
3629e6f085baSmrg	    for i in $deplibs; do
3630e6f085baSmrg	      name=`expr $i : '-l\(.*\)'`
3631e6f085baSmrg	      # If $name is empty we are operating on a -L argument.
3632e6f085baSmrg              if test "$name" != "" && test "$name" != "0"; then
3633e6f085baSmrg		$rm conftest
3634e6f085baSmrg		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
3635e6f085baSmrg		  ldd_output=`ldd conftest`
3636e6f085baSmrg		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3637e6f085baSmrg		    case " $predeps $postdeps " in
3638e6f085baSmrg		    *" $i "*)
3639e6f085baSmrg		      newdeplibs="$newdeplibs $i"
3640e6f085baSmrg		      i=""
3641e6f085baSmrg		      ;;
3642e6f085baSmrg		    esac
3643e6f085baSmrg		  fi
3644e6f085baSmrg		  if test -n "$i" ; then
3645e6f085baSmrg		    libname=`eval \\$echo \"$libname_spec\"`
3646e6f085baSmrg		    deplib_matches=`eval \\$echo \"$library_names_spec\"`
3647e6f085baSmrg		    set dummy $deplib_matches
3648e6f085baSmrg		    deplib_match=$2
3649e6f085baSmrg		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3650e6f085baSmrg		      newdeplibs="$newdeplibs $i"
3651e6f085baSmrg		    else
3652e6f085baSmrg		      droppeddeps=yes
3653e6f085baSmrg		      $echo
3654e6f085baSmrg		      $echo "*** Warning: dynamic linker does not accept needed library $i."
3655e6f085baSmrg		      $echo "*** I have the capability to make that library automatically link in when"
3656e6f085baSmrg		      $echo "*** you link to this library.  But I can only do this if you have a"
3657e6f085baSmrg		      $echo "*** shared version of the library, which you do not appear to have"
3658e6f085baSmrg		      $echo "*** because a test_compile did reveal that the linker did not use this one"
3659e6f085baSmrg		      $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
3660e6f085baSmrg		    fi
3661e6f085baSmrg		  fi
3662e6f085baSmrg		else
3663e6f085baSmrg		  droppeddeps=yes
3664e6f085baSmrg		  $echo
3665e6f085baSmrg		  $echo "*** Warning!  Library $i is needed by this library but I was not able to"
3666e6f085baSmrg		  $echo "*** make it link in!  You will probably need to install it or some"
3667e6f085baSmrg		  $echo "*** library that it depends on before this library will be fully"
3668e6f085baSmrg		  $echo "*** functional.  Installing it before continuing would be even better."
3669e6f085baSmrg		fi
3670e6f085baSmrg	      else
3671e6f085baSmrg		newdeplibs="$newdeplibs $i"
3672e6f085baSmrg	      fi
3673e6f085baSmrg	    done
3674e6f085baSmrg	  fi
3675e6f085baSmrg	  ;;
3676e6f085baSmrg	file_magic*)
3677e6f085baSmrg	  set dummy $deplibs_check_method
3678e6f085baSmrg	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3679e6f085baSmrg	  for a_deplib in $deplibs; do
3680e6f085baSmrg	    name=`expr $a_deplib : '-l\(.*\)'`
3681e6f085baSmrg	    # If $name is empty we are operating on a -L argument.
3682e6f085baSmrg            if test "$name" != "" && test  "$name" != "0"; then
3683e6f085baSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3684e6f085baSmrg		case " $predeps $postdeps " in
3685e6f085baSmrg		*" $a_deplib "*)
3686e6f085baSmrg		  newdeplibs="$newdeplibs $a_deplib"
3687e6f085baSmrg		  a_deplib=""
3688e6f085baSmrg		  ;;
3689e6f085baSmrg		esac
3690e6f085baSmrg	      fi
3691e6f085baSmrg	      if test -n "$a_deplib" ; then
3692e6f085baSmrg		libname=`eval \\$echo \"$libname_spec\"`
3693e6f085baSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3694e6f085baSmrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3695e6f085baSmrg		  for potent_lib in $potential_libs; do
3696e6f085baSmrg		      # Follow soft links.
3697e6f085baSmrg		      if ls -lLd "$potent_lib" 2>/dev/null \
3698e6f085baSmrg			 | grep " -> " >/dev/null; then
3699e6f085baSmrg			continue
3700e6f085baSmrg		      fi
3701e6f085baSmrg		      # The statement above tries to avoid entering an
3702e6f085baSmrg		      # endless loop below, in case of cyclic links.
3703e6f085baSmrg		      # We might still enter an endless loop, since a link
3704e6f085baSmrg		      # loop can be closed while we follow links,
3705e6f085baSmrg		      # but so what?
3706e6f085baSmrg		      potlib="$potent_lib"
3707e6f085baSmrg		      while test -h "$potlib" 2>/dev/null; do
3708e6f085baSmrg			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
3709e6f085baSmrg			case $potliblink in
3710e6f085baSmrg			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
3711e6f085baSmrg			*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
3712e6f085baSmrg			esac
3713e6f085baSmrg		      done
3714e6f085baSmrg		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
3715e6f085baSmrg			 | ${SED} 10q \
3716e6f085baSmrg			 | $EGREP "$file_magic_regex" > /dev/null; then
3717e6f085baSmrg			newdeplibs="$newdeplibs $a_deplib"
3718e6f085baSmrg			a_deplib=""
3719e6f085baSmrg			break 2
3720e6f085baSmrg		      fi
3721e6f085baSmrg		  done
3722e6f085baSmrg		done
3723e6f085baSmrg	      fi
3724e6f085baSmrg	      if test -n "$a_deplib" ; then
3725e6f085baSmrg		droppeddeps=yes
3726e6f085baSmrg		$echo
3727e6f085baSmrg		$echo "*** Warning: linker path does not have real file for library $a_deplib."
3728e6f085baSmrg		$echo "*** I have the capability to make that library automatically link in when"
3729e6f085baSmrg		$echo "*** you link to this library.  But I can only do this if you have a"
3730e6f085baSmrg		$echo "*** shared version of the library, which you do not appear to have"
3731e6f085baSmrg		$echo "*** because I did check the linker path looking for a file starting"
3732e6f085baSmrg		if test -z "$potlib" ; then
3733e6f085baSmrg		  $echo "*** with $libname but no candidates were found. (...for file magic test)"
3734e6f085baSmrg		else
3735e6f085baSmrg		  $echo "*** with $libname and none of the candidates passed a file format test"
3736e6f085baSmrg		  $echo "*** using a file magic. Last file checked: $potlib"
3737e6f085baSmrg		fi
3738e6f085baSmrg	      fi
3739e6f085baSmrg	    else
3740e6f085baSmrg	      # Add a -L argument.
3741e6f085baSmrg	      newdeplibs="$newdeplibs $a_deplib"
3742e6f085baSmrg	    fi
3743e6f085baSmrg	  done # Gone through all deplibs.
3744e6f085baSmrg	  ;;
3745e6f085baSmrg	match_pattern*)
3746e6f085baSmrg	  set dummy $deplibs_check_method
3747e6f085baSmrg	  match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3748e6f085baSmrg	  for a_deplib in $deplibs; do
3749e6f085baSmrg	    name=`expr $a_deplib : '-l\(.*\)'`
3750e6f085baSmrg	    # If $name is empty we are operating on a -L argument.
3751e6f085baSmrg	    if test -n "$name" && test "$name" != "0"; then
3752e6f085baSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3753e6f085baSmrg		case " $predeps $postdeps " in
3754e6f085baSmrg		*" $a_deplib "*)
3755e6f085baSmrg		  newdeplibs="$newdeplibs $a_deplib"
3756e6f085baSmrg		  a_deplib=""
3757e6f085baSmrg		  ;;
3758e6f085baSmrg		esac
3759e6f085baSmrg	      fi
3760e6f085baSmrg	      if test -n "$a_deplib" ; then
3761e6f085baSmrg		libname=`eval \\$echo \"$libname_spec\"`
3762e6f085baSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3763e6f085baSmrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3764e6f085baSmrg		  for potent_lib in $potential_libs; do
3765e6f085baSmrg		    potlib="$potent_lib" # see symlink-check above in file_magic test
3766e6f085baSmrg		    if eval $echo \"$potent_lib\" 2>/dev/null \
3767e6f085baSmrg		        | ${SED} 10q \
3768e6f085baSmrg		        | $EGREP "$match_pattern_regex" > /dev/null; then
3769e6f085baSmrg		      newdeplibs="$newdeplibs $a_deplib"
3770e6f085baSmrg		      a_deplib=""
3771e6f085baSmrg		      break 2
3772e6f085baSmrg		    fi
3773e6f085baSmrg		  done
3774e6f085baSmrg		done
3775e6f085baSmrg	      fi
3776e6f085baSmrg	      if test -n "$a_deplib" ; then
3777e6f085baSmrg		droppeddeps=yes
3778e6f085baSmrg		$echo
3779e6f085baSmrg		$echo "*** Warning: linker path does not have real file for library $a_deplib."
3780e6f085baSmrg		$echo "*** I have the capability to make that library automatically link in when"
3781e6f085baSmrg		$echo "*** you link to this library.  But I can only do this if you have a"
3782e6f085baSmrg		$echo "*** shared version of the library, which you do not appear to have"
3783e6f085baSmrg		$echo "*** because I did check the linker path looking for a file starting"
3784e6f085baSmrg		if test -z "$potlib" ; then
3785e6f085baSmrg		  $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
3786e6f085baSmrg		else
3787e6f085baSmrg		  $echo "*** with $libname and none of the candidates passed a file format test"
3788e6f085baSmrg		  $echo "*** using a regex pattern. Last file checked: $potlib"
3789e6f085baSmrg		fi
3790e6f085baSmrg	      fi
3791e6f085baSmrg	    else
3792e6f085baSmrg	      # Add a -L argument.
3793e6f085baSmrg	      newdeplibs="$newdeplibs $a_deplib"
3794e6f085baSmrg	    fi
3795e6f085baSmrg	  done # Gone through all deplibs.
3796e6f085baSmrg	  ;;
3797e6f085baSmrg	none | unknown | *)
3798e6f085baSmrg	  newdeplibs=""
3799e6f085baSmrg	  tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
3800e6f085baSmrg	    -e 's/ -[LR][^ ]*//g'`
3801e6f085baSmrg	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3802e6f085baSmrg	    for i in $predeps $postdeps ; do
3803e6f085baSmrg	      # can't use Xsed below, because $i might contain '/'
3804e6f085baSmrg	      tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
3805e6f085baSmrg	    done
3806e6f085baSmrg	  fi
3807e6f085baSmrg	  if $echo "X $tmp_deplibs" | $Xsed -e 's/[ 	]//g' \
3808e6f085baSmrg	    | grep . >/dev/null; then
3809e6f085baSmrg	    $echo
3810e6f085baSmrg	    if test "X$deplibs_check_method" = "Xnone"; then
3811e6f085baSmrg	      $echo "*** Warning: inter-library dependencies are not supported in this platform."
3812e6f085baSmrg	    else
3813e6f085baSmrg	      $echo "*** Warning: inter-library dependencies are not known to be supported."
3814e6f085baSmrg	    fi
3815e6f085baSmrg	    $echo "*** All declared inter-library dependencies are being dropped."
3816e6f085baSmrg	    droppeddeps=yes
3817e6f085baSmrg	  fi
3818e6f085baSmrg	  ;;
3819e6f085baSmrg	esac
3820e6f085baSmrg	versuffix=$versuffix_save
3821e6f085baSmrg	major=$major_save
3822e6f085baSmrg	release=$release_save
3823e6f085baSmrg	libname=$libname_save
3824e6f085baSmrg	name=$name_save
382595b296d0Smrg
3826e6f085baSmrg	case $host in
3827e6f085baSmrg	*-*-rhapsody* | *-*-darwin1.[012])
3828e6f085baSmrg	  # On Rhapsody replace the C library is the System framework
3829e6f085baSmrg	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
3830e6f085baSmrg	  ;;
3831e6f085baSmrg	esac
383295b296d0Smrg
3833e6f085baSmrg	if test "$droppeddeps" = yes; then
3834e6f085baSmrg	  if test "$module" = yes; then
3835e6f085baSmrg	    $echo
3836e6f085baSmrg	    $echo "*** Warning: libtool could not satisfy all declared inter-library"
3837e6f085baSmrg	    $echo "*** dependencies of module $libname.  Therefore, libtool will create"
3838e6f085baSmrg	    $echo "*** a static module, that should work as long as the dlopening"
3839e6f085baSmrg	    $echo "*** application is linked with the -dlopen flag."
3840e6f085baSmrg	    if test -z "$global_symbol_pipe"; then
3841e6f085baSmrg	      $echo
3842e6f085baSmrg	      $echo "*** However, this would only work if libtool was able to extract symbol"
3843e6f085baSmrg	      $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
3844e6f085baSmrg	      $echo "*** not find such a program.  So, this module is probably useless."
3845e6f085baSmrg	      $echo "*** \`nm' from GNU binutils and a full rebuild may help."
3846e6f085baSmrg	    fi
3847e6f085baSmrg	    if test "$build_old_libs" = no; then
3848e6f085baSmrg	      oldlibs="$output_objdir/$libname.$libext"
3849e6f085baSmrg	      build_libtool_libs=module
3850e6f085baSmrg	      build_old_libs=yes
3851e6f085baSmrg	    else
3852e6f085baSmrg	      build_libtool_libs=no
3853e6f085baSmrg	    fi
3854e6f085baSmrg	  else
3855e6f085baSmrg	    $echo "*** The inter-library dependencies that have been dropped here will be"
3856e6f085baSmrg	    $echo "*** automatically added whenever a program is linked with this library"
3857e6f085baSmrg	    $echo "*** or is declared to -dlopen it."
385895b296d0Smrg
3859e6f085baSmrg	    if test "$allow_undefined" = no; then
3860e6f085baSmrg	      $echo
3861e6f085baSmrg	      $echo "*** Since this library must not contain undefined symbols,"
3862e6f085baSmrg	      $echo "*** because either the platform does not support them or"
3863e6f085baSmrg	      $echo "*** it was explicitly requested with -no-undefined,"
3864e6f085baSmrg	      $echo "*** libtool will only create a static version of it."
3865e6f085baSmrg	      if test "$build_old_libs" = no; then
3866e6f085baSmrg		oldlibs="$output_objdir/$libname.$libext"
3867e6f085baSmrg		build_libtool_libs=module
3868e6f085baSmrg		build_old_libs=yes
3869e6f085baSmrg	      else
3870e6f085baSmrg		build_libtool_libs=no
3871e6f085baSmrg	      fi
3872e6f085baSmrg	    fi
3873e6f085baSmrg	  fi
3874e6f085baSmrg	fi
3875e6f085baSmrg	# Done checking deplibs!
3876e6f085baSmrg	deplibs=$newdeplibs
3877e6f085baSmrg      fi
387895b296d0Smrg
387995b296d0Smrg
3880e6f085baSmrg      # move library search paths that coincide with paths to not yet
3881e6f085baSmrg      # installed libraries to the beginning of the library search list
3882e6f085baSmrg      new_libs=
3883e6f085baSmrg      for path in $notinst_path; do
3884e6f085baSmrg	case " $new_libs " in
3885e6f085baSmrg	*" -L$path/$objdir "*) ;;
3886e6f085baSmrg	*)
3887e6f085baSmrg	  case " $deplibs " in
3888e6f085baSmrg	  *" -L$path/$objdir "*)
3889e6f085baSmrg	    new_libs="$new_libs -L$path/$objdir" ;;
3890e6f085baSmrg	  esac
3891e6f085baSmrg	  ;;
3892e6f085baSmrg	esac
3893e6f085baSmrg      done
3894e6f085baSmrg      for deplib in $deplibs; do
3895e6f085baSmrg	case $deplib in
3896e6f085baSmrg	-L*)
3897e6f085baSmrg	  case " $new_libs " in
3898e6f085baSmrg	  *" $deplib "*) ;;
3899e6f085baSmrg	  *) new_libs="$new_libs $deplib" ;;
3900e6f085baSmrg	  esac
3901e6f085baSmrg	  ;;
3902e6f085baSmrg	*) new_libs="$new_libs $deplib" ;;
3903e6f085baSmrg	esac
3904e6f085baSmrg      done
3905e6f085baSmrg      deplibs="$new_libs"
390695b296d0Smrg
390795b296d0Smrg
3908e6f085baSmrg      # All the library-specific variables (install_libdir is set above).
3909e6f085baSmrg      library_names=
3910e6f085baSmrg      old_library=
3911e6f085baSmrg      dlname=
391295b296d0Smrg
3913e6f085baSmrg      # Test again, we may have decided not to build it any more
3914e6f085baSmrg      if test "$build_libtool_libs" = yes; then
3915e6f085baSmrg	if test "$hardcode_into_libs" = yes; then
3916e6f085baSmrg	  # Hardcode the library paths
3917e6f085baSmrg	  hardcode_libdirs=
3918e6f085baSmrg	  dep_rpath=
3919e6f085baSmrg	  rpath="$finalize_rpath"
3920e6f085baSmrg	  test "$mode" != relink && rpath="$compile_rpath$rpath"
3921e6f085baSmrg	  for libdir in $rpath; do
3922e6f085baSmrg	    if test -n "$hardcode_libdir_flag_spec"; then
3923e6f085baSmrg	      if test -n "$hardcode_libdir_separator"; then
3924e6f085baSmrg		if test -z "$hardcode_libdirs"; then
3925e6f085baSmrg		  hardcode_libdirs="$libdir"
3926e6f085baSmrg		else
3927e6f085baSmrg		  # Just accumulate the unique libdirs.
3928e6f085baSmrg		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
3929e6f085baSmrg		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
3930e6f085baSmrg		    ;;
3931e6f085baSmrg		  *)
3932e6f085baSmrg		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
3933e6f085baSmrg		    ;;
3934e6f085baSmrg		  esac
3935e6f085baSmrg		fi
3936e6f085baSmrg	      else
3937e6f085baSmrg		eval flag=\"$hardcode_libdir_flag_spec\"
3938e6f085baSmrg		dep_rpath="$dep_rpath $flag"
3939e6f085baSmrg	      fi
3940e6f085baSmrg	    elif test -n "$runpath_var"; then
3941e6f085baSmrg	      case "$perm_rpath " in
3942e6f085baSmrg	      *" $libdir "*) ;;
3943e6f085baSmrg	      *) perm_rpath="$perm_rpath $libdir" ;;
3944e6f085baSmrg	      esac
3945e6f085baSmrg	    fi
3946e6f085baSmrg	  done
3947e6f085baSmrg	  # Substitute the hardcoded libdirs into the rpath.
3948e6f085baSmrg	  if test -n "$hardcode_libdir_separator" &&
3949e6f085baSmrg	     test -n "$hardcode_libdirs"; then
3950e6f085baSmrg	    libdir="$hardcode_libdirs"
3951e6f085baSmrg	    if test -n "$hardcode_libdir_flag_spec_ld"; then
3952e6f085baSmrg	      case $archive_cmds in
3953e6f085baSmrg	      *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;;
3954e6f085baSmrg	      *)      eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;;
3955e6f085baSmrg	      esac
3956e6f085baSmrg	    else
3957e6f085baSmrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
3958e6f085baSmrg	    fi
3959e6f085baSmrg	  fi
3960e6f085baSmrg	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
3961e6f085baSmrg	    # We should set the runpath_var.
3962e6f085baSmrg	    rpath=
3963e6f085baSmrg	    for dir in $perm_rpath; do
3964e6f085baSmrg	      rpath="$rpath$dir:"
3965e6f085baSmrg	    done
3966e6f085baSmrg	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
3967e6f085baSmrg	  fi
3968e6f085baSmrg	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
3969e6f085baSmrg	fi
397095b296d0Smrg
3971e6f085baSmrg	shlibpath="$finalize_shlibpath"
3972e6f085baSmrg	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
3973e6f085baSmrg	if test -n "$shlibpath"; then
3974e6f085baSmrg	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
3975e6f085baSmrg	fi
397695b296d0Smrg
3977e6f085baSmrg	# Get the real and link names of the library.
3978e6f085baSmrg	eval shared_ext=\"$shrext_cmds\"
3979e6f085baSmrg	eval library_names=\"$library_names_spec\"
3980e6f085baSmrg	set dummy $library_names
3981e6f085baSmrg	realname="$2"
3982e6f085baSmrg	shift; shift
398395b296d0Smrg
3984e6f085baSmrg	if test -n "$soname_spec"; then
3985e6f085baSmrg	  eval soname=\"$soname_spec\"
3986e6f085baSmrg	else
3987e6f085baSmrg	  soname="$realname"
3988e6f085baSmrg	fi
3989e6f085baSmrg	if test -z "$dlname"; then
3990e6f085baSmrg	  dlname=$soname
3991e6f085baSmrg	fi
399295b296d0Smrg
3993e6f085baSmrg	lib="$output_objdir/$realname"
3994e6f085baSmrg	linknames=
3995e6f085baSmrg	for link
3996e6f085baSmrg	do
3997e6f085baSmrg	  linknames="$linknames $link"
3998e6f085baSmrg	done
399995b296d0Smrg
4000e6f085baSmrg	# Use standard objects if they are pic
4001e6f085baSmrg	test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
400295b296d0Smrg
4003e6f085baSmrg	# Prepare the list of exported symbols
4004e6f085baSmrg	if test -z "$export_symbols"; then
4005e6f085baSmrg	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
4006e6f085baSmrg	    $show "generating symbol list for \`$libname.la'"
4007e6f085baSmrg	    export_symbols="$output_objdir/$libname.exp"
4008e6f085baSmrg	    $run $rm $export_symbols
4009e6f085baSmrg	    cmds=$export_symbols_cmds
4010e6f085baSmrg	    save_ifs="$IFS"; IFS='~'
4011e6f085baSmrg	    for cmd in $cmds; do
4012e6f085baSmrg	      IFS="$save_ifs"
4013e6f085baSmrg	      eval cmd=\"$cmd\"
4014e6f085baSmrg	      if len=`expr "X$cmd" : ".*"` &&
4015e6f085baSmrg	       test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
4016e6f085baSmrg	        $show "$cmd"
4017e6f085baSmrg	        $run eval "$cmd" || exit $?
4018e6f085baSmrg	        skipped_export=false
4019e6f085baSmrg	      else
4020e6f085baSmrg	        # The command line is too long to execute in one step.
4021e6f085baSmrg	        $show "using reloadable object file for export list..."
4022e6f085baSmrg	        skipped_export=:
4023e6f085baSmrg		# Break out early, otherwise skipped_export may be
4024e6f085baSmrg		# set to false by a later but shorter cmd.
4025e6f085baSmrg		break
4026e6f085baSmrg	      fi
4027e6f085baSmrg	    done
4028e6f085baSmrg	    IFS="$save_ifs"
4029e6f085baSmrg	    if test -n "$export_symbols_regex"; then
4030e6f085baSmrg	      $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
4031e6f085baSmrg	      $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
4032e6f085baSmrg	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
4033e6f085baSmrg	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
4034e6f085baSmrg	    fi
4035e6f085baSmrg	  fi
4036e6f085baSmrg	fi
403795b296d0Smrg
4038e6f085baSmrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
4039e6f085baSmrg	  $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
4040e6f085baSmrg	fi
404195b296d0Smrg
4042e6f085baSmrg	tmp_deplibs=
4043e6f085baSmrg	for test_deplib in $deplibs; do
4044e6f085baSmrg		case " $convenience " in
4045e6f085baSmrg		*" $test_deplib "*) ;;
4046e6f085baSmrg		*)
4047e6f085baSmrg			tmp_deplibs="$tmp_deplibs $test_deplib"
4048e6f085baSmrg			;;
4049e6f085baSmrg		esac
4050e6f085baSmrg	done
4051e6f085baSmrg	deplibs="$tmp_deplibs"
405295b296d0Smrg
4053e6f085baSmrg	if test -n "$convenience"; then
4054e6f085baSmrg	  if test -n "$whole_archive_flag_spec"; then
4055e6f085baSmrg	    save_libobjs=$libobjs
4056e6f085baSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
4057e6f085baSmrg	  else
4058e6f085baSmrg	    gentop="$output_objdir/${outputname}x"
4059e6f085baSmrg	    generated="$generated $gentop"
406095b296d0Smrg
4061e6f085baSmrg	    func_extract_archives $gentop $convenience
4062e6f085baSmrg	    libobjs="$libobjs $func_extract_archives_result"
4063e6f085baSmrg	  fi
4064e6f085baSmrg	fi
4065e6f085baSmrg	
4066e6f085baSmrg	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
4067e6f085baSmrg	  eval flag=\"$thread_safe_flag_spec\"
4068e6f085baSmrg	  linker_flags="$linker_flags $flag"
4069e6f085baSmrg	fi
407095b296d0Smrg
4071e6f085baSmrg	# Make a backup of the uninstalled library when relinking
4072e6f085baSmrg	if test "$mode" = relink; then
4073e6f085baSmrg	  $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
4074e6f085baSmrg	fi
407595b296d0Smrg
4076e6f085baSmrg	# Do each of the archive commands.
4077e6f085baSmrg	if test "$module" = yes && test -n "$module_cmds" ; then
4078e6f085baSmrg	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
4079e6f085baSmrg	    eval test_cmds=\"$module_expsym_cmds\"
4080e6f085baSmrg	    cmds=$module_expsym_cmds
4081e6f085baSmrg	  else
4082e6f085baSmrg	    eval test_cmds=\"$module_cmds\"
4083e6f085baSmrg	    cmds=$module_cmds
4084e6f085baSmrg	  fi
4085e6f085baSmrg	else
4086e6f085baSmrg	if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
4087e6f085baSmrg	  eval test_cmds=\"$archive_expsym_cmds\"
4088e6f085baSmrg	  cmds=$archive_expsym_cmds
4089e6f085baSmrg	else
4090e6f085baSmrg	  eval test_cmds=\"$archive_cmds\"
4091e6f085baSmrg	  cmds=$archive_cmds
4092e6f085baSmrg	  fi
4093e6f085baSmrg	fi
409495b296d0Smrg
4095e6f085baSmrg	if test "X$skipped_export" != "X:" &&
4096e6f085baSmrg	   len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
4097e6f085baSmrg	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
4098e6f085baSmrg	  :
4099e6f085baSmrg	else
4100e6f085baSmrg	  # The command line is too long to link in one step, link piecewise.
4101e6f085baSmrg	  $echo "creating reloadable object files..."
410295b296d0Smrg
4103e6f085baSmrg	  # Save the value of $output and $libobjs because we want to
4104e6f085baSmrg	  # use them later.  If we have whole_archive_flag_spec, we
4105e6f085baSmrg	  # want to use save_libobjs as it was before
4106e6f085baSmrg	  # whole_archive_flag_spec was expanded, because we can't
4107e6f085baSmrg	  # assume the linker understands whole_archive_flag_spec.
4108e6f085baSmrg	  # This may have to be revisited, in case too many
4109e6f085baSmrg	  # convenience libraries get linked in and end up exceeding
4110e6f085baSmrg	  # the spec.
4111e6f085baSmrg	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
4112e6f085baSmrg	    save_libobjs=$libobjs
4113e6f085baSmrg	  fi
4114e6f085baSmrg	  save_output=$output
4115e6f085baSmrg	  output_la=`$echo "X$output" | $Xsed -e "$basename"`
411695b296d0Smrg
4117e6f085baSmrg	  # Clear the reloadable object creation command queue and
4118e6f085baSmrg	  # initialize k to one.
4119e6f085baSmrg	  test_cmds=
4120e6f085baSmrg	  concat_cmds=
4121e6f085baSmrg	  objlist=
4122e6f085baSmrg	  delfiles=
4123e6f085baSmrg	  last_robj=
4124e6f085baSmrg	  k=1
4125e6f085baSmrg	  output=$output_objdir/$output_la-${k}.$objext
4126e6f085baSmrg	  # Loop over the list of objects to be linked.
4127e6f085baSmrg	  for obj in $save_libobjs
4128e6f085baSmrg	  do
4129e6f085baSmrg	    eval test_cmds=\"$reload_cmds $objlist $last_robj\"
4130e6f085baSmrg	    if test "X$objlist" = X ||
4131e6f085baSmrg	       { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
4132e6f085baSmrg		 test "$len" -le "$max_cmd_len"; }; then
4133e6f085baSmrg	      objlist="$objlist $obj"
4134e6f085baSmrg	    else
4135e6f085baSmrg	      # The command $test_cmds is almost too long, add a
4136e6f085baSmrg	      # command to the queue.
4137e6f085baSmrg	      if test "$k" -eq 1 ; then
4138e6f085baSmrg		# The first file doesn't have a previous command to add.
4139e6f085baSmrg		eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
4140e6f085baSmrg	      else
4141e6f085baSmrg		# All subsequent reloadable object files will link in
4142e6f085baSmrg		# the last one created.
4143e6f085baSmrg		eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
4144e6f085baSmrg	      fi
4145e6f085baSmrg	      last_robj=$output_objdir/$output_la-${k}.$objext
4146e6f085baSmrg	      k=`expr $k + 1`
4147e6f085baSmrg	      output=$output_objdir/$output_la-${k}.$objext
4148e6f085baSmrg	      objlist=$obj
4149e6f085baSmrg	      len=1
4150e6f085baSmrg	    fi
4151e6f085baSmrg	  done
4152e6f085baSmrg	  # Handle the remaining objects by creating one last
4153e6f085baSmrg	  # reloadable object file.  All subsequent reloadable object
4154e6f085baSmrg	  # files will link in the last one created.
4155e6f085baSmrg	  test -z "$concat_cmds" || concat_cmds=$concat_cmds~
4156e6f085baSmrg	  eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
4157e6f085baSmrg
4158e6f085baSmrg	  if ${skipped_export-false}; then
4159e6f085baSmrg	    $show "generating symbol list for \`$libname.la'"
4160e6f085baSmrg	    export_symbols="$output_objdir/$libname.exp"
4161e6f085baSmrg	    $run $rm $export_symbols
4162e6f085baSmrg	    libobjs=$output
4163e6f085baSmrg	    # Append the command to create the export file.
4164e6f085baSmrg	    eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
4165e6f085baSmrg          fi
4166e6f085baSmrg
4167e6f085baSmrg	  # Set up a command to remove the reloadable object files
4168e6f085baSmrg	  # after they are used.
4169e6f085baSmrg	  i=0
4170e6f085baSmrg	  while test "$i" -lt "$k"
4171e6f085baSmrg	  do
4172e6f085baSmrg	    i=`expr $i + 1`
4173e6f085baSmrg	    delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
4174e6f085baSmrg	  done
417595b296d0Smrg
4176e6f085baSmrg	  $echo "creating a temporary reloadable object file: $output"
417795b296d0Smrg
4178e6f085baSmrg	  # Loop through the commands generated above and execute them.
4179e6f085baSmrg	  save_ifs="$IFS"; IFS='~'
4180e6f085baSmrg	  for cmd in $concat_cmds; do
4181e6f085baSmrg	    IFS="$save_ifs"
4182e6f085baSmrg	    $show "$cmd"
4183e6f085baSmrg	    $run eval "$cmd" || exit $?
4184e6f085baSmrg	  done
4185e6f085baSmrg	  IFS="$save_ifs"
418695b296d0Smrg
4187e6f085baSmrg	  libobjs=$output
4188e6f085baSmrg	  # Restore the value of output.
4189e6f085baSmrg	  output=$save_output
419095b296d0Smrg
4191e6f085baSmrg	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
4192e6f085baSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
4193e6f085baSmrg	  fi
4194e6f085baSmrg	  # Expand the library linking commands again to reset the
4195e6f085baSmrg	  # value of $libobjs for piecewise linking.
419695b296d0Smrg
4197e6f085baSmrg	  # Do each of the archive commands.
4198e6f085baSmrg	  if test "$module" = yes && test -n "$module_cmds" ; then
4199e6f085baSmrg	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
4200e6f085baSmrg	      cmds=$module_expsym_cmds
4201e6f085baSmrg	    else
4202e6f085baSmrg	      cmds=$module_cmds
4203e6f085baSmrg	    fi
4204e6f085baSmrg	  else
4205e6f085baSmrg	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
4206e6f085baSmrg	    cmds=$archive_expsym_cmds
4207e6f085baSmrg	  else
4208e6f085baSmrg	    cmds=$archive_cmds
4209e6f085baSmrg	    fi
4210e6f085baSmrg	  fi
421195b296d0Smrg
4212e6f085baSmrg	  # Append the command to remove the reloadable object files
4213e6f085baSmrg	  # to the just-reset $cmds.
4214e6f085baSmrg	  eval cmds=\"\$cmds~\$rm $delfiles\"
4215e6f085baSmrg	fi
4216e6f085baSmrg	save_ifs="$IFS"; IFS='~'
4217e6f085baSmrg	for cmd in $cmds; do
4218e6f085baSmrg	  IFS="$save_ifs"
4219e6f085baSmrg	  eval cmd=\"$cmd\"
4220e6f085baSmrg	  $show "$cmd"
4221e6f085baSmrg	  $run eval "$cmd" || {
4222e6f085baSmrg	    lt_exit=$?
422395b296d0Smrg
4224e6f085baSmrg	    # Restore the uninstalled library and exit
4225e6f085baSmrg	    if test "$mode" = relink; then
4226e6f085baSmrg	      $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
4227e6f085baSmrg	    fi
422895b296d0Smrg
4229e6f085baSmrg	    exit $lt_exit
4230e6f085baSmrg	  }
4231e6f085baSmrg	done
4232e6f085baSmrg	IFS="$save_ifs"
4233e6f085baSmrg
4234e6f085baSmrg	# Restore the uninstalled library and exit
4235e6f085baSmrg	if test "$mode" = relink; then
4236e6f085baSmrg	  $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
4237e6f085baSmrg
4238e6f085baSmrg	  if test -n "$convenience"; then
4239e6f085baSmrg	    if test -z "$whole_archive_flag_spec"; then
4240e6f085baSmrg	      $show "${rm}r $gentop"
4241e6f085baSmrg	      $run ${rm}r "$gentop"
4242e6f085baSmrg	    fi
4243e6f085baSmrg	  fi
4244e6f085baSmrg
4245e6f085baSmrg	  exit $EXIT_SUCCESS
4246e6f085baSmrg	fi
4247e6f085baSmrg
4248e6f085baSmrg	# Create links to the real library.
4249e6f085baSmrg	for linkname in $linknames; do
4250e6f085baSmrg	  if test "$realname" != "$linkname"; then
4251e6f085baSmrg	    $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
4252e6f085baSmrg	    $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
4253e6f085baSmrg	  fi
4254e6f085baSmrg	done
4255e6f085baSmrg
4256e6f085baSmrg	# If -module or -export-dynamic was specified, set the dlname.
4257e6f085baSmrg	if test "$module" = yes || test "$export_dynamic" = yes; then
4258e6f085baSmrg	  # On all known operating systems, these are identical.
4259e6f085baSmrg	  dlname="$soname"
4260e6f085baSmrg	fi
4261e6f085baSmrg      fi
426239713583Smrg      ;;
426395b296d0Smrg
4264e6f085baSmrg    obj)
4265e6f085baSmrg      case " $deplibs" in
4266e6f085baSmrg      *\ -l* | *\ -L*)
4267e6f085baSmrg	$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;;
4268e6f085baSmrg      esac
426995b296d0Smrg
4270e6f085baSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
4271e6f085baSmrg	$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
4272e6f085baSmrg      fi
427339713583Smrg
4274e6f085baSmrg      if test -n "$rpath"; then
4275e6f085baSmrg	$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
4276e6f085baSmrg      fi
4277e6f085baSmrg
4278e6f085baSmrg      if test -n "$xrpath"; then
4279e6f085baSmrg	$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
4280e6f085baSmrg      fi
4281e6f085baSmrg
4282e6f085baSmrg      if test -n "$vinfo"; then
4283e6f085baSmrg	$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
4284e6f085baSmrg      fi
4285e6f085baSmrg
4286e6f085baSmrg      if test -n "$release"; then
4287e6f085baSmrg	$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
4288e6f085baSmrg      fi
4289e6f085baSmrg
4290e6f085baSmrg      case $output in
4291e6f085baSmrg      *.lo)
4292e6f085baSmrg	if test -n "$objs$old_deplibs"; then
4293e6f085baSmrg	  $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
4294e6f085baSmrg	  exit $EXIT_FAILURE
4295e6f085baSmrg	fi
4296e6f085baSmrg	libobj="$output"
4297e6f085baSmrg	obj=`$echo "X$output" | $Xsed -e "$lo2o"`
429839713583Smrg	;;
4299e6f085baSmrg      *)
4300e6f085baSmrg	libobj=
4301e6f085baSmrg	obj="$output"
430239713583Smrg	;;
430339713583Smrg      esac
430495b296d0Smrg
4305e6f085baSmrg      # Delete the old objects.
4306e6f085baSmrg      $run $rm $obj $libobj
430795b296d0Smrg
4308e6f085baSmrg      # Objects from convenience libraries.  This assumes
4309e6f085baSmrg      # single-version convenience libraries.  Whenever we create
4310e6f085baSmrg      # different ones for PIC/non-PIC, this we'll have to duplicate
4311e6f085baSmrg      # the extraction.
4312e6f085baSmrg      reload_conv_objs=
4313e6f085baSmrg      gentop=
4314e6f085baSmrg      # reload_cmds runs $LD directly, so let us get rid of
4315e6f085baSmrg      # -Wl from whole_archive_flag_spec and hope we can get by with
4316e6f085baSmrg      # turning comma into space..
4317e6f085baSmrg      wl=
431895b296d0Smrg
4319e6f085baSmrg      if test -n "$convenience"; then
4320e6f085baSmrg	if test -n "$whole_archive_flag_spec"; then
4321e6f085baSmrg	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
4322e6f085baSmrg	  reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
4323e6f085baSmrg	else
4324e6f085baSmrg	  gentop="$output_objdir/${obj}x"
4325e6f085baSmrg	  generated="$generated $gentop"
432695b296d0Smrg
4327e6f085baSmrg	  func_extract_archives $gentop $convenience
4328e6f085baSmrg	  reload_conv_objs="$reload_objs $func_extract_archives_result"
4329e6f085baSmrg	fi
4330e6f085baSmrg      fi
433195b296d0Smrg
4332e6f085baSmrg      # Create the old-style object.
4333e6f085baSmrg      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
433495b296d0Smrg
4335e6f085baSmrg      output="$obj"
4336e6f085baSmrg      cmds=$reload_cmds
4337e6f085baSmrg      save_ifs="$IFS"; IFS='~'
4338e6f085baSmrg      for cmd in $cmds; do
4339e6f085baSmrg	IFS="$save_ifs"
4340e6f085baSmrg	eval cmd=\"$cmd\"
4341e6f085baSmrg	$show "$cmd"
4342e6f085baSmrg	$run eval "$cmd" || exit $?
4343e6f085baSmrg      done
4344e6f085baSmrg      IFS="$save_ifs"
434595b296d0Smrg
4346e6f085baSmrg      # Exit if we aren't doing a library object file.
4347e6f085baSmrg      if test -z "$libobj"; then
4348e6f085baSmrg	if test -n "$gentop"; then
4349e6f085baSmrg	  $show "${rm}r $gentop"
4350e6f085baSmrg	  $run ${rm}r $gentop
4351e6f085baSmrg	fi
435295b296d0Smrg
4353e6f085baSmrg	exit $EXIT_SUCCESS
4354e6f085baSmrg      fi
435595b296d0Smrg
4356e6f085baSmrg      if test "$build_libtool_libs" != yes; then
4357e6f085baSmrg	if test -n "$gentop"; then
4358e6f085baSmrg	  $show "${rm}r $gentop"
4359e6f085baSmrg	  $run ${rm}r $gentop
4360e6f085baSmrg	fi
436195b296d0Smrg
4362e6f085baSmrg	# Create an invalid libtool object if no PIC, so that we don't
4363e6f085baSmrg	# accidentally link it into a program.
4364e6f085baSmrg	# $show "echo timestamp > $libobj"
4365e6f085baSmrg	# $run eval "echo timestamp > $libobj" || exit $?
4366e6f085baSmrg	exit $EXIT_SUCCESS
4367e6f085baSmrg      fi
436895b296d0Smrg
4369e6f085baSmrg      if test -n "$pic_flag" || test "$pic_mode" != default; then
4370e6f085baSmrg	# Only do commands if we really have different PIC objects.
4371e6f085baSmrg	reload_objs="$libobjs $reload_conv_objs"
4372e6f085baSmrg	output="$libobj"
4373e6f085baSmrg	cmds=$reload_cmds
4374e6f085baSmrg	save_ifs="$IFS"; IFS='~'
4375e6f085baSmrg	for cmd in $cmds; do
4376e6f085baSmrg	  IFS="$save_ifs"
4377e6f085baSmrg	  eval cmd=\"$cmd\"
4378e6f085baSmrg	  $show "$cmd"
4379e6f085baSmrg	  $run eval "$cmd" || exit $?
4380e6f085baSmrg	done
4381e6f085baSmrg	IFS="$save_ifs"
4382e6f085baSmrg      fi
438395b296d0Smrg
4384e6f085baSmrg      if test -n "$gentop"; then
4385e6f085baSmrg	$show "${rm}r $gentop"
4386e6f085baSmrg	$run ${rm}r $gentop
4387e6f085baSmrg      fi
438895b296d0Smrg
4389e6f085baSmrg      exit $EXIT_SUCCESS
4390e6f085baSmrg      ;;
439195b296d0Smrg
4392e6f085baSmrg    prog)
4393e6f085baSmrg      case $host in
4394e6f085baSmrg	*cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
4395e6f085baSmrg      esac
4396e6f085baSmrg      if test -n "$vinfo"; then
4397e6f085baSmrg	$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
4398e6f085baSmrg      fi
439995b296d0Smrg
4400e6f085baSmrg      if test -n "$release"; then
4401e6f085baSmrg	$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
4402e6f085baSmrg      fi
440395b296d0Smrg
4404e6f085baSmrg      if test "$preload" = yes; then
4405e6f085baSmrg	if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
4406e6f085baSmrg	   test "$dlopen_self_static" = unknown; then
4407e6f085baSmrg	  $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
440839713583Smrg	fi
4409e6f085baSmrg      fi
441095b296d0Smrg
4411e6f085baSmrg      case $host in
4412e6f085baSmrg      *-*-rhapsody* | *-*-darwin1.[012])
4413e6f085baSmrg	# On Rhapsody replace the C library is the System framework
4414e6f085baSmrg	compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
4415e6f085baSmrg	finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
441639713583Smrg	;;
4417e6f085baSmrg      esac
441895b296d0Smrg
4419e6f085baSmrg      case $host in
4420e6f085baSmrg      *darwin*)
4421e6f085baSmrg        # Don't allow lazy linking, it breaks C++ global constructors
4422e6f085baSmrg        if test "$tagname" = CXX ; then
4423e6f085baSmrg        compile_command="$compile_command ${wl}-bind_at_load"
4424e6f085baSmrg        finalize_command="$finalize_command ${wl}-bind_at_load"
4425e6f085baSmrg        fi
4426e6f085baSmrg        ;;
4427e6f085baSmrg      esac
442895b296d0Smrg
442995b296d0Smrg
4430e6f085baSmrg      # move library search paths that coincide with paths to not yet
4431e6f085baSmrg      # installed libraries to the beginning of the library search list
4432e6f085baSmrg      new_libs=
4433e6f085baSmrg      for path in $notinst_path; do
4434e6f085baSmrg	case " $new_libs " in
4435e6f085baSmrg	*" -L$path/$objdir "*) ;;
4436e6f085baSmrg	*)
4437e6f085baSmrg	  case " $compile_deplibs " in
4438e6f085baSmrg	  *" -L$path/$objdir "*)
4439e6f085baSmrg	    new_libs="$new_libs -L$path/$objdir" ;;
4440e6f085baSmrg	  esac
4441e6f085baSmrg	  ;;
4442e6f085baSmrg	esac
4443e6f085baSmrg      done
4444e6f085baSmrg      for deplib in $compile_deplibs; do
4445e6f085baSmrg	case $deplib in
4446e6f085baSmrg	-L*)
4447e6f085baSmrg	  case " $new_libs " in
4448e6f085baSmrg	  *" $deplib "*) ;;
4449e6f085baSmrg	  *) new_libs="$new_libs $deplib" ;;
4450e6f085baSmrg	  esac
4451e6f085baSmrg	  ;;
4452e6f085baSmrg	*) new_libs="$new_libs $deplib" ;;
4453e6f085baSmrg	esac
4454e6f085baSmrg      done
4455e6f085baSmrg      compile_deplibs="$new_libs"
445695b296d0Smrg
445795b296d0Smrg
4458e6f085baSmrg      compile_command="$compile_command $compile_deplibs"
4459e6f085baSmrg      finalize_command="$finalize_command $finalize_deplibs"
446095b296d0Smrg
4461e6f085baSmrg      if test -n "$rpath$xrpath"; then
4462e6f085baSmrg	# If the user specified any rpath flags, then add them.
4463e6f085baSmrg	for libdir in $rpath $xrpath; do
4464e6f085baSmrg	  # This is the magic to use -rpath.
4465e6f085baSmrg	  case "$finalize_rpath " in
4466e6f085baSmrg	  *" $libdir "*) ;;
4467e6f085baSmrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
4468e6f085baSmrg	  esac
4469e6f085baSmrg	done
4470e6f085baSmrg      fi
447195b296d0Smrg
4472e6f085baSmrg      # Now hardcode the library paths
4473e6f085baSmrg      rpath=
4474e6f085baSmrg      hardcode_libdirs=
4475e6f085baSmrg      for libdir in $compile_rpath $finalize_rpath; do
4476e6f085baSmrg	if test -n "$hardcode_libdir_flag_spec"; then
4477e6f085baSmrg	  if test -n "$hardcode_libdir_separator"; then
4478e6f085baSmrg	    if test -z "$hardcode_libdirs"; then
4479e6f085baSmrg	      hardcode_libdirs="$libdir"
4480e6f085baSmrg	    else
4481e6f085baSmrg	      # Just accumulate the unique libdirs.
4482e6f085baSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4483e6f085baSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4484e6f085baSmrg		;;
4485e6f085baSmrg	      *)
4486e6f085baSmrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4487e6f085baSmrg		;;
4488e6f085baSmrg	      esac
4489e6f085baSmrg	    fi
449039713583Smrg	  else
4491e6f085baSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
4492e6f085baSmrg	    rpath="$rpath $flag"
449339713583Smrg	  fi
4494e6f085baSmrg	elif test -n "$runpath_var"; then
4495e6f085baSmrg	  case "$perm_rpath " in
4496e6f085baSmrg	  *" $libdir "*) ;;
4497e6f085baSmrg	  *) perm_rpath="$perm_rpath $libdir" ;;
4498e6f085baSmrg	  esac
449939713583Smrg	fi
450039713583Smrg	case $host in
4501e6f085baSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
4502e6f085baSmrg	  testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
450339713583Smrg	  case :$dllsearchpath: in
4504e6f085baSmrg	  *":$libdir:"*) ;;
4505e6f085baSmrg	  *) dllsearchpath="$dllsearchpath:$libdir";;
450639713583Smrg	  esac
450739713583Smrg	  case :$dllsearchpath: in
450839713583Smrg	  *":$testbindir:"*) ;;
450939713583Smrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
451039713583Smrg	  esac
451139713583Smrg	  ;;
451239713583Smrg	esac
4513e6f085baSmrg      done
4514e6f085baSmrg      # Substitute the hardcoded libdirs into the rpath.
4515e6f085baSmrg      if test -n "$hardcode_libdir_separator" &&
4516e6f085baSmrg	 test -n "$hardcode_libdirs"; then
4517e6f085baSmrg	libdir="$hardcode_libdirs"
4518e6f085baSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
4519e6f085baSmrg      fi
4520e6f085baSmrg      compile_rpath="$rpath"
452195b296d0Smrg
4522e6f085baSmrg      rpath=
4523e6f085baSmrg      hardcode_libdirs=
4524e6f085baSmrg      for libdir in $finalize_rpath; do
4525e6f085baSmrg	if test -n "$hardcode_libdir_flag_spec"; then
4526e6f085baSmrg	  if test -n "$hardcode_libdir_separator"; then
4527e6f085baSmrg	    if test -z "$hardcode_libdirs"; then
4528e6f085baSmrg	      hardcode_libdirs="$libdir"
4529e6f085baSmrg	    else
4530e6f085baSmrg	      # Just accumulate the unique libdirs.
4531e6f085baSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4532e6f085baSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4533e6f085baSmrg		;;
4534e6f085baSmrg	      *)
4535e6f085baSmrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4536e6f085baSmrg		;;
4537e6f085baSmrg	      esac
4538e6f085baSmrg	    fi
4539e6f085baSmrg	  else
4540e6f085baSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
4541e6f085baSmrg	    rpath="$rpath $flag"
4542e6f085baSmrg	  fi
4543e6f085baSmrg	elif test -n "$runpath_var"; then
4544e6f085baSmrg	  case "$finalize_perm_rpath " in
4545e6f085baSmrg	  *" $libdir "*) ;;
4546e6f085baSmrg	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
454739713583Smrg	  esac
454839713583Smrg	fi
4549e6f085baSmrg      done
4550e6f085baSmrg      # Substitute the hardcoded libdirs into the rpath.
4551e6f085baSmrg      if test -n "$hardcode_libdir_separator" &&
4552e6f085baSmrg	 test -n "$hardcode_libdirs"; then
4553e6f085baSmrg	libdir="$hardcode_libdirs"
4554e6f085baSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
4555e6f085baSmrg      fi
4556e6f085baSmrg      finalize_rpath="$rpath"
455795b296d0Smrg
4558e6f085baSmrg      if test -n "$libobjs" && test "$build_old_libs" = yes; then
4559e6f085baSmrg	# Transform all the library objects into standard objects.
4560e6f085baSmrg	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4561e6f085baSmrg	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4562e6f085baSmrg      fi
456395b296d0Smrg
4564e6f085baSmrg      dlsyms=
4565e6f085baSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
4566e6f085baSmrg	if test -n "$NM" && test -n "$global_symbol_pipe"; then
4567e6f085baSmrg	  dlsyms="${outputname}S.c"
4568e6f085baSmrg	else
4569e6f085baSmrg	  $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
4570e6f085baSmrg	fi
4571e6f085baSmrg      fi
457295b296d0Smrg
4573e6f085baSmrg      if test -n "$dlsyms"; then
4574e6f085baSmrg	case $dlsyms in
4575e6f085baSmrg	"") ;;
4576e6f085baSmrg	*.c)
4577e6f085baSmrg	  # Discover the nlist of each of the dlfiles.
4578e6f085baSmrg	  nlist="$output_objdir/${outputname}.nm"
457995b296d0Smrg
4580e6f085baSmrg	  $show "$rm $nlist ${nlist}S ${nlist}T"
4581e6f085baSmrg	  $run $rm "$nlist" "${nlist}S" "${nlist}T"
458295b296d0Smrg
4583e6f085baSmrg	  # Parse the name list into a source file.
4584e6f085baSmrg	  $show "creating $output_objdir/$dlsyms"
458595b296d0Smrg
4586e6f085baSmrg	  test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
4587e6f085baSmrg/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
4588e6f085baSmrg/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
458995b296d0Smrg
4590e6f085baSmrg#ifdef __cplusplus
4591e6f085baSmrgextern \"C\" {
4592e6f085baSmrg#endif
459395b296d0Smrg
4594e6f085baSmrg/* Prevent the only kind of declaration conflicts we can make. */
4595e6f085baSmrg#define lt_preloaded_symbols some_other_symbol
459695b296d0Smrg
4597e6f085baSmrg/* External symbol declarations for the compiler. */\
4598e6f085baSmrg"
459995b296d0Smrg
4600e6f085baSmrg	  if test "$dlself" = yes; then
4601e6f085baSmrg	    $show "generating symbol list for \`$output'"
460295b296d0Smrg
4603e6f085baSmrg	    test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
460495b296d0Smrg
4605e6f085baSmrg	    # Add our own program objects to the symbol list.
4606e6f085baSmrg	    progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4607e6f085baSmrg	    for arg in $progfiles; do
4608e6f085baSmrg	      $show "extracting global C symbols from \`$arg'"
4609e6f085baSmrg	      $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4610e6f085baSmrg	    done
461195b296d0Smrg
4612e6f085baSmrg	    if test -n "$exclude_expsyms"; then
4613e6f085baSmrg	      $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
4614e6f085baSmrg	      $run eval '$mv "$nlist"T "$nlist"'
4615e6f085baSmrg	    fi
461695b296d0Smrg
4617e6f085baSmrg	    if test -n "$export_symbols_regex"; then
4618e6f085baSmrg	      $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
4619e6f085baSmrg	      $run eval '$mv "$nlist"T "$nlist"'
4620e6f085baSmrg	    fi
462195b296d0Smrg
4622e6f085baSmrg	    # Prepare the list of exported symbols
4623e6f085baSmrg	    if test -z "$export_symbols"; then
4624e6f085baSmrg	      export_symbols="$output_objdir/$outputname.exp"
4625e6f085baSmrg	      $run $rm $export_symbols
4626e6f085baSmrg	      $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
4627e6f085baSmrg              case $host in
4628e6f085baSmrg              *cygwin* | *mingw* )
4629e6f085baSmrg	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4630e6f085baSmrg		$run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
4631e6f085baSmrg                ;;
4632e6f085baSmrg              esac
4633e6f085baSmrg	    else
4634e6f085baSmrg	      $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
4635e6f085baSmrg	      $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
4636e6f085baSmrg	      $run eval 'mv "$nlist"T "$nlist"'
4637e6f085baSmrg              case $host in
4638e6f085baSmrg              *cygwin* | *mingw* )
4639e6f085baSmrg	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4640e6f085baSmrg		$run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
4641e6f085baSmrg                ;;
4642e6f085baSmrg              esac
4643e6f085baSmrg	    fi
4644e6f085baSmrg	  fi
464595b296d0Smrg
4646e6f085baSmrg	  for arg in $dlprefiles; do
4647e6f085baSmrg	    $show "extracting global C symbols from \`$arg'"
4648e6f085baSmrg	    name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
4649e6f085baSmrg	    $run eval '$echo ": $name " >> "$nlist"'
4650e6f085baSmrg	    $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4651e6f085baSmrg	  done
465295b296d0Smrg
4653e6f085baSmrg	  if test -z "$run"; then
4654e6f085baSmrg	    # Make sure we have at least an empty file.
4655e6f085baSmrg	    test -f "$nlist" || : > "$nlist"
465695b296d0Smrg
4657e6f085baSmrg	    if test -n "$exclude_expsyms"; then
4658e6f085baSmrg	      $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
4659e6f085baSmrg	      $mv "$nlist"T "$nlist"
4660e6f085baSmrg	    fi
466195b296d0Smrg
4662e6f085baSmrg	    # Try sorting and uniquifying the output.
4663e6f085baSmrg	    if grep -v "^: " < "$nlist" |
4664e6f085baSmrg		if sort -k 3 </dev/null >/dev/null 2>&1; then
4665e6f085baSmrg		  sort -k 3
4666e6f085baSmrg		else
4667e6f085baSmrg		  sort +2
4668e6f085baSmrg		fi |
4669e6f085baSmrg		uniq > "$nlist"S; then
4670e6f085baSmrg	      :
4671e6f085baSmrg	    else
4672e6f085baSmrg	      grep -v "^: " < "$nlist" > "$nlist"S
4673e6f085baSmrg	    fi
467495b296d0Smrg
4675e6f085baSmrg	    if test -f "$nlist"S; then
4676e6f085baSmrg	      eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
4677e6f085baSmrg	    else
4678e6f085baSmrg	      $echo '/* NONE */' >> "$output_objdir/$dlsyms"
4679e6f085baSmrg	    fi
468095b296d0Smrg
4681e6f085baSmrg	    $echo >> "$output_objdir/$dlsyms" "\
468295b296d0Smrg
4683e6f085baSmrg#undef lt_preloaded_symbols
468495b296d0Smrg
4685e6f085baSmrg#if defined (__STDC__) && __STDC__
4686e6f085baSmrg# define lt_ptr void *
4687e6f085baSmrg#else
4688e6f085baSmrg# define lt_ptr char *
4689e6f085baSmrg# define const
4690e6f085baSmrg#endif
469195b296d0Smrg
4692e6f085baSmrg/* The mapping between symbol names and symbols. */
4693e6f085baSmrg"
469495b296d0Smrg
4695e6f085baSmrg	    case $host in
4696e6f085baSmrg	    *cygwin* | *mingw* )
4697e6f085baSmrg	  $echo >> "$output_objdir/$dlsyms" "\
4698e6f085baSmrg/* DATA imports from DLLs on WIN32 can't be const, because
4699e6f085baSmrg   runtime relocations are performed -- see ld's documentation
4700e6f085baSmrg   on pseudo-relocs */
4701e6f085baSmrgstruct {
4702e6f085baSmrg"
4703e6f085baSmrg	      ;;
4704e6f085baSmrg	    * )
4705e6f085baSmrg	  $echo >> "$output_objdir/$dlsyms" "\
4706e6f085baSmrgconst struct {
4707e6f085baSmrg"
4708e6f085baSmrg	      ;;
4709e6f085baSmrg	    esac
471095b296d0Smrg
471195b296d0Smrg
4712e6f085baSmrg	  $echo >> "$output_objdir/$dlsyms" "\
4713e6f085baSmrg  const char *name;
4714e6f085baSmrg  lt_ptr address;
4715e6f085baSmrg}
4716e6f085baSmrglt_preloaded_symbols[] =
4717e6f085baSmrg{\
4718e6f085baSmrg"
471995b296d0Smrg
4720e6f085baSmrg	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
472195b296d0Smrg
4722e6f085baSmrg	    $echo >> "$output_objdir/$dlsyms" "\
4723e6f085baSmrg  {0, (lt_ptr) 0}
4724e6f085baSmrg};
472595b296d0Smrg
4726e6f085baSmrg/* This works around a problem in FreeBSD linker */
4727e6f085baSmrg#ifdef FREEBSD_WORKAROUND
4728e6f085baSmrgstatic const void *lt_preloaded_setup() {
4729e6f085baSmrg  return lt_preloaded_symbols;
4730e6f085baSmrg}
4731e6f085baSmrg#endif
473295b296d0Smrg
4733e6f085baSmrg#ifdef __cplusplus
4734e6f085baSmrg}
4735e6f085baSmrg#endif\
4736e6f085baSmrg"
473739713583Smrg	  fi
473895b296d0Smrg
4739e6f085baSmrg	  pic_flag_for_symtable=
4740e6f085baSmrg	  case $host in
4741e6f085baSmrg	  # compiling the symbol table file with pic_flag works around
4742e6f085baSmrg	  # a FreeBSD bug that causes programs to crash when -lm is
4743e6f085baSmrg	  # linked before any other PIC object.  But we must not use
4744e6f085baSmrg	  # pic_flag when linking with -static.  The problem exists in
4745e6f085baSmrg	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
4746e6f085baSmrg	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
4747e6f085baSmrg	    case "$compile_command " in
4748e6f085baSmrg	    *" -static "*) ;;
4749e6f085baSmrg	    *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
4750e6f085baSmrg	    esac;;
4751e6f085baSmrg	  *-*-hpux*)
4752e6f085baSmrg	    case "$compile_command " in
4753e6f085baSmrg	    *" -static "*) ;;
4754e6f085baSmrg	    *) pic_flag_for_symtable=" $pic_flag";;
4755e6f085baSmrg	    esac
4756e6f085baSmrg	  esac
475795b296d0Smrg
4758e6f085baSmrg	  # Now compile the dynamic symbol file.
4759e6f085baSmrg	  $show "(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
4760e6f085baSmrg	  $run eval '(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
476195b296d0Smrg
4762e6f085baSmrg	  # Clean up the generated files.
4763e6f085baSmrg	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
4764e6f085baSmrg	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
476595b296d0Smrg
4766e6f085baSmrg	  # Transform the symbol file into the correct name.
4767e6f085baSmrg          case $host in
4768e6f085baSmrg          *cygwin* | *mingw* )
4769e6f085baSmrg            if test -f "$output_objdir/${outputname}.def" ; then
4770e6f085baSmrg              compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
4771e6f085baSmrg              finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
4772e6f085baSmrg            else
4773e6f085baSmrg              compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4774e6f085baSmrg              finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4775e6f085baSmrg             fi
4776e6f085baSmrg            ;;
4777e6f085baSmrg          * )
4778e6f085baSmrg            compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4779e6f085baSmrg            finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4780e6f085baSmrg            ;;
4781e6f085baSmrg          esac
4782e6f085baSmrg	  ;;
4783e6f085baSmrg	*)
4784e6f085baSmrg	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
4785e6f085baSmrg	  exit $EXIT_FAILURE
4786e6f085baSmrg	  ;;
4787e6f085baSmrg	esac
4788e6f085baSmrg      else
4789e6f085baSmrg	# We keep going just in case the user didn't refer to
4790e6f085baSmrg	# lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
4791e6f085baSmrg	# really was required.
479295b296d0Smrg
4793e6f085baSmrg	# Nullify the symbol file.
4794e6f085baSmrg	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
4795e6f085baSmrg	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
4796e6f085baSmrg      fi
479795b296d0Smrg
4798e6f085baSmrg      if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
4799e6f085baSmrg	# Replace the output file specification.
4800e6f085baSmrg	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP`
4801e6f085baSmrg	link_command="$compile_command$compile_rpath"
480239713583Smrg
4803e6f085baSmrg	# We have no uninstalled library dependencies, so finalize right now.
4804e6f085baSmrg	$show "$link_command"
4805e6f085baSmrg	$run eval "$link_command"
4806e6f085baSmrg	exit_status=$?
480739713583Smrg
4808e6f085baSmrg	# Delete the generated files.
4809e6f085baSmrg	if test -n "$dlsyms"; then
4810e6f085baSmrg	  $show "$rm $output_objdir/${outputname}S.${objext}"
4811e6f085baSmrg	  $run $rm "$output_objdir/${outputname}S.${objext}"
481239713583Smrg	fi
481339713583Smrg
4814e6f085baSmrg	exit $exit_status
4815e6f085baSmrg      fi
481639713583Smrg
4817e6f085baSmrg      if test -n "$shlibpath_var"; then
4818e6f085baSmrg	# We should set the shlibpath_var
4819e6f085baSmrg	rpath=
4820e6f085baSmrg	for dir in $temp_rpath; do
4821e6f085baSmrg	  case $dir in
4822e6f085baSmrg	  [\\/]* | [A-Za-z]:[\\/]*)
4823e6f085baSmrg	    # Absolute path.
4824e6f085baSmrg	    rpath="$rpath$dir:"
4825e6f085baSmrg	    ;;
4826e6f085baSmrg	  *)
4827e6f085baSmrg	    # Relative path: add a thisdir entry.
4828e6f085baSmrg	    rpath="$rpath\$thisdir/$dir:"
4829e6f085baSmrg	    ;;
4830e6f085baSmrg	  esac
4831e6f085baSmrg	done
4832e6f085baSmrg	temp_rpath="$rpath"
483339713583Smrg      fi
483439713583Smrg
4835e6f085baSmrg      if test -n "$compile_shlibpath$finalize_shlibpath"; then
4836e6f085baSmrg	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
4837e6f085baSmrg      fi
4838e6f085baSmrg      if test -n "$finalize_shlibpath"; then
4839e6f085baSmrg	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
4840e6f085baSmrg      fi
484139713583Smrg
4842e6f085baSmrg      compile_var=
4843e6f085baSmrg      finalize_var=
4844e6f085baSmrg      if test -n "$runpath_var"; then
4845e6f085baSmrg	if test -n "$perm_rpath"; then
4846e6f085baSmrg	  # We should set the runpath_var.
4847e6f085baSmrg	  rpath=
4848e6f085baSmrg	  for dir in $perm_rpath; do
4849e6f085baSmrg	    rpath="$rpath$dir:"
4850e6f085baSmrg	  done
4851e6f085baSmrg	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
4852e6f085baSmrg	fi
4853e6f085baSmrg	if test -n "$finalize_perm_rpath"; then
4854e6f085baSmrg	  # We should set the runpath_var.
4855e6f085baSmrg	  rpath=
4856e6f085baSmrg	  for dir in $finalize_perm_rpath; do
4857e6f085baSmrg	    rpath="$rpath$dir:"
4858e6f085baSmrg	  done
4859e6f085baSmrg	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
4860e6f085baSmrg	fi
4861e6f085baSmrg      fi
486239713583Smrg
4863e6f085baSmrg      if test "$no_install" = yes; then
4864e6f085baSmrg	# We don't need to create a wrapper script.
4865e6f085baSmrg	link_command="$compile_var$compile_command$compile_rpath"
4866e6f085baSmrg	# Replace the output file specification.
4867e6f085baSmrg	link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
4868e6f085baSmrg	# Delete the old output file.
4869e6f085baSmrg	$run $rm $output
4870e6f085baSmrg	# Link the executable and exit
4871e6f085baSmrg	$show "$link_command"
4872e6f085baSmrg	$run eval "$link_command" || exit $?
4873e6f085baSmrg	exit $EXIT_SUCCESS
4874e6f085baSmrg      fi
487539713583Smrg
4876e6f085baSmrg      if test "$hardcode_action" = relink; then
4877e6f085baSmrg	# Fast installation is not supported
4878e6f085baSmrg	link_command="$compile_var$compile_command$compile_rpath"
4879e6f085baSmrg	relink_command="$finalize_var$finalize_command$finalize_rpath"
488039713583Smrg
4881e6f085baSmrg	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
4882e6f085baSmrg	$echo "$modename: \`$output' will be relinked during installation" 1>&2
4883e6f085baSmrg      else
4884e6f085baSmrg	if test "$fast_install" != no; then
4885e6f085baSmrg	  link_command="$finalize_var$compile_command$finalize_rpath"
4886e6f085baSmrg	  if test "$fast_install" = yes; then
4887e6f085baSmrg	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP`
4888e6f085baSmrg	  else
4889e6f085baSmrg	    # fast_install is set to needless
4890e6f085baSmrg	    relink_command=
4891e6f085baSmrg	  fi
4892e6f085baSmrg	else
4893e6f085baSmrg	  link_command="$compile_var$compile_command$compile_rpath"
4894e6f085baSmrg	  relink_command="$finalize_var$finalize_command$finalize_rpath"
4895e6f085baSmrg	fi
489639713583Smrg      fi
489739713583Smrg
4898e6f085baSmrg      # Replace the output file specification.
4899e6f085baSmrg      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
490039713583Smrg
4901e6f085baSmrg      # Delete the old output files.
4902e6f085baSmrg      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
490339713583Smrg
4904e6f085baSmrg      $show "$link_command"
4905e6f085baSmrg      $run eval "$link_command" || exit $?
490639713583Smrg
4907e6f085baSmrg      # Now create the wrapper script.
4908e6f085baSmrg      $show "creating $output"
490939713583Smrg
4910e6f085baSmrg      # Quote the relink command for shipping.
4911e6f085baSmrg      if test -n "$relink_command"; then
4912e6f085baSmrg	# Preserve any variables that may affect compiler behavior
4913e6f085baSmrg	for var in $variables_saved_for_relink; do
4914e6f085baSmrg	  if eval test -z \"\${$var+set}\"; then
4915e6f085baSmrg	    relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
4916e6f085baSmrg	  elif eval var_value=\$$var; test -z "$var_value"; then
4917e6f085baSmrg	    relink_command="$var=; export $var; $relink_command"
4918e6f085baSmrg	  else
4919e6f085baSmrg	    var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
4920e6f085baSmrg	    relink_command="$var=\"$var_value\"; export $var; $relink_command"
4921e6f085baSmrg	  fi
492239713583Smrg	done
4923e6f085baSmrg	relink_command="(cd `pwd`; $relink_command)"
4924e6f085baSmrg	relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
492539713583Smrg      fi
492639713583Smrg
4927e6f085baSmrg      # Quote $echo for shipping.
4928e6f085baSmrg      if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
4929e6f085baSmrg	case $progpath in
4930e6f085baSmrg	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
4931e6f085baSmrg	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
493239713583Smrg	esac
4933e6f085baSmrg	qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
4934e6f085baSmrg      else
4935e6f085baSmrg	qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
493639713583Smrg      fi
493739713583Smrg
4938e6f085baSmrg      # Only actually do things if our run command is non-null.
4939e6f085baSmrg      if test -z "$run"; then
4940e6f085baSmrg	# win32 will think the script is a binary if it has
4941e6f085baSmrg	# a .exe suffix, so we strip it off here.
4942e6f085baSmrg	case $output in
4943e6f085baSmrg	  *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
4944e6f085baSmrg	esac
4945e6f085baSmrg	# test for cygwin because mv fails w/o .exe extensions
4946e6f085baSmrg	case $host in
4947e6f085baSmrg	  *cygwin*)
4948e6f085baSmrg	    exeext=.exe
4949e6f085baSmrg	    outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
4950e6f085baSmrg	  *) exeext= ;;
4951e6f085baSmrg	esac
4952e6f085baSmrg	case $host in
4953e6f085baSmrg	  *cygwin* | *mingw* )
4954e6f085baSmrg            output_name=`basename $output`
4955e6f085baSmrg            output_path=`dirname $output`
4956e6f085baSmrg            cwrappersource="$output_path/$objdir/lt-$output_name.c"
4957e6f085baSmrg            cwrapper="$output_path/$output_name.exe"
4958e6f085baSmrg            $rm $cwrappersource $cwrapper
4959e6f085baSmrg            trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
496039713583Smrg
4961e6f085baSmrg	    cat > $cwrappersource <<EOF
496239713583Smrg
4963e6f085baSmrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
4964e6f085baSmrg   Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
496539713583Smrg
4966e6f085baSmrg   The $output program cannot be directly executed until all the libtool
4967e6f085baSmrg   libraries that it depends on are installed.
496839713583Smrg
4969e6f085baSmrg   This wrapper executable should never be moved out of the build directory.
4970e6f085baSmrg   If it is, it will not operate correctly.
497139713583Smrg
4972e6f085baSmrg   Currently, it simply execs the wrapper *script* "/bin/sh $output",
4973e6f085baSmrg   but could eventually absorb all of the scripts functionality and
4974e6f085baSmrg   exec $objdir/$outputname directly.
4975e6f085baSmrg*/
4976e6f085baSmrgEOF
4977e6f085baSmrg	    cat >> $cwrappersource<<"EOF"
4978e6f085baSmrg#include <stdio.h>
4979e6f085baSmrg#include <stdlib.h>
4980e6f085baSmrg#include <unistd.h>
4981e6f085baSmrg#include <malloc.h>
4982e6f085baSmrg#include <stdarg.h>
4983e6f085baSmrg#include <assert.h>
4984e6f085baSmrg#include <string.h>
4985e6f085baSmrg#include <ctype.h>
4986e6f085baSmrg#include <sys/stat.h>
498739713583Smrg
4988e6f085baSmrg#if defined(PATH_MAX)
4989e6f085baSmrg# define LT_PATHMAX PATH_MAX
4990e6f085baSmrg#elif defined(MAXPATHLEN)
4991e6f085baSmrg# define LT_PATHMAX MAXPATHLEN
4992e6f085baSmrg#else
4993e6f085baSmrg# define LT_PATHMAX 1024
4994e6f085baSmrg#endif
499539713583Smrg
4996e6f085baSmrg#ifndef DIR_SEPARATOR
4997e6f085baSmrg# define DIR_SEPARATOR '/'
4998e6f085baSmrg# define PATH_SEPARATOR ':'
4999e6f085baSmrg#endif
500039713583Smrg
5001e6f085baSmrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
5002e6f085baSmrg  defined (__OS2__)
5003e6f085baSmrg# define HAVE_DOS_BASED_FILE_SYSTEM
5004e6f085baSmrg# ifndef DIR_SEPARATOR_2
5005e6f085baSmrg#  define DIR_SEPARATOR_2 '\\'
5006e6f085baSmrg# endif
5007e6f085baSmrg# ifndef PATH_SEPARATOR_2
5008e6f085baSmrg#  define PATH_SEPARATOR_2 ';'
5009e6f085baSmrg# endif
5010e6f085baSmrg#endif
501139713583Smrg
5012e6f085baSmrg#ifndef DIR_SEPARATOR_2
5013e6f085baSmrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
5014e6f085baSmrg#else /* DIR_SEPARATOR_2 */
5015e6f085baSmrg# define IS_DIR_SEPARATOR(ch) \
5016e6f085baSmrg        (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
5017e6f085baSmrg#endif /* DIR_SEPARATOR_2 */
501839713583Smrg
5019e6f085baSmrg#ifndef PATH_SEPARATOR_2
5020e6f085baSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
5021e6f085baSmrg#else /* PATH_SEPARATOR_2 */
5022e6f085baSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
5023e6f085baSmrg#endif /* PATH_SEPARATOR_2 */
502439713583Smrg
5025e6f085baSmrg#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
5026e6f085baSmrg#define XFREE(stale) do { \
5027e6f085baSmrg  if (stale) { free ((void *) stale); stale = 0; } \
5028e6f085baSmrg} while (0)
502939713583Smrg
5030e6f085baSmrg/* -DDEBUG is fairly common in CFLAGS.  */
5031e6f085baSmrg#undef DEBUG
5032e6f085baSmrg#if defined DEBUGWRAPPER
5033e6f085baSmrg# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
5034e6f085baSmrg#else
5035e6f085baSmrg# define DEBUG(format, ...)
5036e6f085baSmrg#endif
503739713583Smrg
5038e6f085baSmrgconst char *program_name = NULL;
503939713583Smrg
5040e6f085baSmrgvoid * xmalloc (size_t num);
5041e6f085baSmrgchar * xstrdup (const char *string);
5042e6f085baSmrgconst char * base_name (const char *name);
5043e6f085baSmrgchar * find_executable(const char *wrapper);
5044e6f085baSmrgint    check_executable(const char *path);
5045e6f085baSmrgchar * strendzap(char *str, const char *pat);
5046e6f085baSmrgvoid lt_fatal (const char *message, ...);
504739713583Smrg
5048e6f085baSmrgint
5049e6f085baSmrgmain (int argc, char *argv[])
5050e6f085baSmrg{
5051e6f085baSmrg  char **newargz;
5052e6f085baSmrg  int i;
505339713583Smrg
5054e6f085baSmrg  program_name = (char *) xstrdup (base_name (argv[0]));
5055e6f085baSmrg  DEBUG("(main) argv[0]      : %s\n",argv[0]);
5056e6f085baSmrg  DEBUG("(main) program_name : %s\n",program_name);
5057e6f085baSmrg  newargz = XMALLOC(char *, argc+2);
5058e6f085baSmrgEOF
505939713583Smrg
5060e6f085baSmrg            cat >> $cwrappersource <<EOF
5061e6f085baSmrg  newargz[0] = (char *) xstrdup("$SHELL");
5062e6f085baSmrgEOF
506339713583Smrg
5064e6f085baSmrg            cat >> $cwrappersource <<"EOF"
5065e6f085baSmrg  newargz[1] = find_executable(argv[0]);
5066e6f085baSmrg  if (newargz[1] == NULL)
5067e6f085baSmrg    lt_fatal("Couldn't find %s", argv[0]);
5068e6f085baSmrg  DEBUG("(main) found exe at : %s\n",newargz[1]);
5069e6f085baSmrg  /* we know the script has the same name, without the .exe */
5070e6f085baSmrg  /* so make sure newargz[1] doesn't end in .exe */
5071e6f085baSmrg  strendzap(newargz[1],".exe");
5072e6f085baSmrg  for (i = 1; i < argc; i++)
5073e6f085baSmrg    newargz[i+1] = xstrdup(argv[i]);
5074e6f085baSmrg  newargz[argc+1] = NULL;
507539713583Smrg
5076e6f085baSmrg  for (i=0; i<argc+1; i++)
5077e6f085baSmrg  {
5078e6f085baSmrg    DEBUG("(main) newargz[%d]   : %s\n",i,newargz[i]);
5079e6f085baSmrg    ;
5080e6f085baSmrg  }
508139713583Smrg
5082e6f085baSmrgEOF
508339713583Smrg
5084e6f085baSmrg            case $host_os in
5085e6f085baSmrg              mingw*)
5086e6f085baSmrg                cat >> $cwrappersource <<EOF
5087e6f085baSmrg  execv("$SHELL",(char const **)newargz);
5088e6f085baSmrgEOF
5089e6f085baSmrg              ;;
5090e6f085baSmrg              *)
5091e6f085baSmrg                cat >> $cwrappersource <<EOF
5092e6f085baSmrg  execv("$SHELL",newargz);
5093e6f085baSmrgEOF
5094e6f085baSmrg              ;;
5095e6f085baSmrg            esac
509639713583Smrg
5097e6f085baSmrg            cat >> $cwrappersource <<"EOF"
5098e6f085baSmrg  return 127;
5099e6f085baSmrg}
510039713583Smrg
5101e6f085baSmrgvoid *
5102e6f085baSmrgxmalloc (size_t num)
5103e6f085baSmrg{
5104e6f085baSmrg  void * p = (void *) malloc (num);
5105e6f085baSmrg  if (!p)
5106e6f085baSmrg    lt_fatal ("Memory exhausted");
510739713583Smrg
5108e6f085baSmrg  return p;
5109e6f085baSmrg}
511039713583Smrg
5111e6f085baSmrgchar *
5112e6f085baSmrgxstrdup (const char *string)
5113e6f085baSmrg{
5114e6f085baSmrg  return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
5115e6f085baSmrg;
5116e6f085baSmrg}
511739713583Smrg
5118e6f085baSmrgconst char *
5119e6f085baSmrgbase_name (const char *name)
5120e6f085baSmrg{
5121e6f085baSmrg  const char *base;
512239713583Smrg
5123e6f085baSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5124e6f085baSmrg  /* Skip over the disk name in MSDOS pathnames. */
5125e6f085baSmrg  if (isalpha ((unsigned char)name[0]) && name[1] == ':')
5126e6f085baSmrg    name += 2;
5127e6f085baSmrg#endif
512839713583Smrg
5129e6f085baSmrg  for (base = name; *name; name++)
5130e6f085baSmrg    if (IS_DIR_SEPARATOR (*name))
5131e6f085baSmrg      base = name + 1;
5132e6f085baSmrg  return base;
5133e6f085baSmrg}
513439713583Smrg
5135e6f085baSmrgint
5136e6f085baSmrgcheck_executable(const char * path)
5137e6f085baSmrg{
5138e6f085baSmrg  struct stat st;
513939713583Smrg
5140e6f085baSmrg  DEBUG("(check_executable)  : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
5141e6f085baSmrg  if ((!path) || (!*path))
5142e6f085baSmrg    return 0;
514339713583Smrg
5144e6f085baSmrg  if ((stat (path, &st) >= 0) &&
5145e6f085baSmrg      (
5146e6f085baSmrg        /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
5147e6f085baSmrg#if defined (S_IXOTH)
5148e6f085baSmrg       ((st.st_mode & S_IXOTH) == S_IXOTH) ||
5149e6f085baSmrg#endif
5150e6f085baSmrg#if defined (S_IXGRP)
5151e6f085baSmrg       ((st.st_mode & S_IXGRP) == S_IXGRP) ||
5152e6f085baSmrg#endif
5153e6f085baSmrg       ((st.st_mode & S_IXUSR) == S_IXUSR))
5154e6f085baSmrg      )
5155e6f085baSmrg    return 1;
5156e6f085baSmrg  else
5157e6f085baSmrg    return 0;
5158e6f085baSmrg}
515939713583Smrg
5160e6f085baSmrg/* Searches for the full path of the wrapper.  Returns
5161e6f085baSmrg   newly allocated full path name if found, NULL otherwise */
5162e6f085baSmrgchar *
5163e6f085baSmrgfind_executable (const char* wrapper)
5164e6f085baSmrg{
5165e6f085baSmrg  int has_slash = 0;
5166e6f085baSmrg  const char* p;
5167e6f085baSmrg  const char* p_next;
5168e6f085baSmrg  /* static buffer for getcwd */
5169e6f085baSmrg  char tmp[LT_PATHMAX + 1];
5170e6f085baSmrg  int tmp_len;
5171e6f085baSmrg  char* concat_name;
517239713583Smrg
5173e6f085baSmrg  DEBUG("(find_executable)  : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
517439713583Smrg
5175e6f085baSmrg  if ((wrapper == NULL) || (*wrapper == '\0'))
5176e6f085baSmrg    return NULL;
517795b296d0Smrg
5178e6f085baSmrg  /* Absolute path? */
5179e6f085baSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5180e6f085baSmrg  if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
5181e6f085baSmrg  {
5182e6f085baSmrg    concat_name = xstrdup (wrapper);
5183e6f085baSmrg    if (check_executable(concat_name))
5184e6f085baSmrg      return concat_name;
5185e6f085baSmrg    XFREE(concat_name);
5186e6f085baSmrg  }
5187e6f085baSmrg  else
5188e6f085baSmrg  {
5189e6f085baSmrg#endif
5190e6f085baSmrg    if (IS_DIR_SEPARATOR (wrapper[0]))
5191e6f085baSmrg    {
5192e6f085baSmrg      concat_name = xstrdup (wrapper);
5193e6f085baSmrg      if (check_executable(concat_name))
5194e6f085baSmrg        return concat_name;
5195e6f085baSmrg      XFREE(concat_name);
5196e6f085baSmrg    }
5197e6f085baSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5198e6f085baSmrg  }
5199e6f085baSmrg#endif
5200e6f085baSmrg
5201e6f085baSmrg  for (p = wrapper; *p; p++)
5202e6f085baSmrg    if (*p == '/')
5203e6f085baSmrg    {
5204e6f085baSmrg      has_slash = 1;
5205e6f085baSmrg      break;
5206e6f085baSmrg    }
5207e6f085baSmrg  if (!has_slash)
5208e6f085baSmrg  {
5209e6f085baSmrg    /* no slashes; search PATH */
5210e6f085baSmrg    const char* path = getenv ("PATH");
5211e6f085baSmrg    if (path != NULL)
5212e6f085baSmrg    {
5213e6f085baSmrg      for (p = path; *p; p = p_next)
5214e6f085baSmrg      {
5215e6f085baSmrg        const char* q;
5216e6f085baSmrg        size_t p_len;
5217e6f085baSmrg        for (q = p; *q; q++)
5218e6f085baSmrg          if (IS_PATH_SEPARATOR(*q))
5219e6f085baSmrg            break;
5220e6f085baSmrg        p_len = q - p;
5221e6f085baSmrg        p_next = (*q == '\0' ? q : q + 1);
5222e6f085baSmrg        if (p_len == 0)
5223e6f085baSmrg        {
5224e6f085baSmrg          /* empty path: current directory */
5225e6f085baSmrg          if (getcwd (tmp, LT_PATHMAX) == NULL)
5226e6f085baSmrg            lt_fatal ("getcwd failed");
5227e6f085baSmrg          tmp_len = strlen(tmp);
5228e6f085baSmrg          concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
5229e6f085baSmrg          memcpy (concat_name, tmp, tmp_len);
5230e6f085baSmrg          concat_name[tmp_len] = '/';
5231e6f085baSmrg          strcpy (concat_name + tmp_len + 1, wrapper);
5232e6f085baSmrg        }
5233e6f085baSmrg        else
5234e6f085baSmrg        {
5235e6f085baSmrg          concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
5236e6f085baSmrg          memcpy (concat_name, p, p_len);
5237e6f085baSmrg          concat_name[p_len] = '/';
5238e6f085baSmrg          strcpy (concat_name + p_len + 1, wrapper);
5239e6f085baSmrg        }
5240e6f085baSmrg        if (check_executable(concat_name))
5241e6f085baSmrg          return concat_name;
5242e6f085baSmrg        XFREE(concat_name);
5243e6f085baSmrg      }
5244e6f085baSmrg    }
5245e6f085baSmrg    /* not found in PATH; assume curdir */
5246e6f085baSmrg  }
5247e6f085baSmrg  /* Relative path | not found in path: prepend cwd */
5248e6f085baSmrg  if (getcwd (tmp, LT_PATHMAX) == NULL)
5249e6f085baSmrg    lt_fatal ("getcwd failed");
5250e6f085baSmrg  tmp_len = strlen(tmp);
5251e6f085baSmrg  concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
5252e6f085baSmrg  memcpy (concat_name, tmp, tmp_len);
5253e6f085baSmrg  concat_name[tmp_len] = '/';
5254e6f085baSmrg  strcpy (concat_name + tmp_len + 1, wrapper);
5255e6f085baSmrg
5256e6f085baSmrg  if (check_executable(concat_name))
5257e6f085baSmrg    return concat_name;
5258e6f085baSmrg  XFREE(concat_name);
5259e6f085baSmrg  return NULL;
5260e6f085baSmrg}
5261e6f085baSmrg
5262e6f085baSmrgchar *
5263e6f085baSmrgstrendzap(char *str, const char *pat)
5264e6f085baSmrg{
5265e6f085baSmrg  size_t len, patlen;
5266e6f085baSmrg
5267e6f085baSmrg  assert(str != NULL);
5268e6f085baSmrg  assert(pat != NULL);
5269e6f085baSmrg
5270e6f085baSmrg  len = strlen(str);
5271e6f085baSmrg  patlen = strlen(pat);
5272e6f085baSmrg
5273e6f085baSmrg  if (patlen <= len)
5274e6f085baSmrg  {
5275e6f085baSmrg    str += len - patlen;
5276e6f085baSmrg    if (strcmp(str, pat) == 0)
5277e6f085baSmrg      *str = '\0';
5278e6f085baSmrg  }
5279e6f085baSmrg  return str;
5280e6f085baSmrg}
5281e6f085baSmrg
5282e6f085baSmrgstatic void
5283e6f085baSmrglt_error_core (int exit_status, const char * mode,
5284e6f085baSmrg          const char * message, va_list ap)
5285e6f085baSmrg{
5286e6f085baSmrg  fprintf (stderr, "%s: %s: ", program_name, mode);
5287e6f085baSmrg  vfprintf (stderr, message, ap);
5288e6f085baSmrg  fprintf (stderr, ".\n");
5289e6f085baSmrg
5290e6f085baSmrg  if (exit_status >= 0)
5291e6f085baSmrg    exit (exit_status);
5292e6f085baSmrg}
5293e6f085baSmrg
5294e6f085baSmrgvoid
5295e6f085baSmrglt_fatal (const char *message, ...)
5296e6f085baSmrg{
5297e6f085baSmrg  va_list ap;
5298e6f085baSmrg  va_start (ap, message);
5299e6f085baSmrg  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
5300e6f085baSmrg  va_end (ap);
5301e6f085baSmrg}
5302e6f085baSmrgEOF
5303e6f085baSmrg          # we should really use a build-platform specific compiler
5304e6f085baSmrg          # here, but OTOH, the wrappers (shell script and this C one)
5305e6f085baSmrg          # are only useful if you want to execute the "real" binary.
5306e6f085baSmrg          # Since the "real" binary is built for $host, then this
5307e6f085baSmrg          # wrapper might as well be built for $host, too.
5308e6f085baSmrg          $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
5309e6f085baSmrg          ;;
5310e6f085baSmrg        esac
5311e6f085baSmrg        $rm $output
5312e6f085baSmrg        trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
5313e6f085baSmrg
5314e6f085baSmrg	$echo > $output "\
5315e6f085baSmrg#! $SHELL
5316e6f085baSmrg
5317e6f085baSmrg# $output - temporary wrapper script for $objdir/$outputname
5318e6f085baSmrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
5319e6f085baSmrg#
5320e6f085baSmrg# The $output program cannot be directly executed until all the libtool
5321e6f085baSmrg# libraries that it depends on are installed.
5322e6f085baSmrg#
5323e6f085baSmrg# This wrapper script should never be moved out of the build directory.
5324e6f085baSmrg# If it is, it will not operate correctly.
5325e6f085baSmrg
5326e6f085baSmrg# Sed substitution that helps us do robust quoting.  It backslashifies
5327e6f085baSmrg# metacharacters that are still active within double-quoted strings.
5328e6f085baSmrgXsed='${SED} -e 1s/^X//'
5329e6f085baSmrgsed_quote_subst='$sed_quote_subst'
5330e6f085baSmrg
5331e6f085baSmrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
5332e6f085baSmrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
5333e6f085baSmrg  emulate sh
5334e6f085baSmrg  NULLCMD=:
5335e6f085baSmrg  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
5336e6f085baSmrg  # is contrary to our usage.  Disable this feature.
5337e6f085baSmrg  alias -g '\${1+\"\$@\"}'='\"\$@\"'
5338e6f085baSmrg  setopt NO_GLOB_SUBST
5339e6f085baSmrgelse
5340e6f085baSmrg  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
5341e6f085baSmrgfi
5342e6f085baSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
5343e6f085baSmrgDUALCASE=1; export DUALCASE # for MKS sh
5344e6f085baSmrg
5345e6f085baSmrg# The HP-UX ksh and POSIX shell print the target directory to stdout
5346e6f085baSmrg# if CDPATH is set.
5347e6f085baSmrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
5348e6f085baSmrg
5349e6f085baSmrgrelink_command=\"$relink_command\"
5350e6f085baSmrg
5351e6f085baSmrg# This environment variable determines our operation mode.
5352e6f085baSmrgif test \"\$libtool_install_magic\" = \"$magic\"; then
5353e6f085baSmrg  # install mode needs the following variable:
5354e6f085baSmrg  notinst_deplibs='$notinst_deplibs'
5355e6f085baSmrgelse
5356e6f085baSmrg  # When we are sourced in execute mode, \$file and \$echo are already set.
5357e6f085baSmrg  if test \"\$libtool_execute_magic\" != \"$magic\"; then
5358e6f085baSmrg    echo=\"$qecho\"
5359e6f085baSmrg    file=\"\$0\"
5360e6f085baSmrg    # Make sure echo works.
5361e6f085baSmrg    if test \"X\$1\" = X--no-reexec; then
5362e6f085baSmrg      # Discard the --no-reexec flag, and continue.
5363e6f085baSmrg      shift
5364e6f085baSmrg    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
5365e6f085baSmrg      # Yippee, \$echo works!
5366e6f085baSmrg      :
5367e6f085baSmrg    else
5368e6f085baSmrg      # Restart under the correct shell, and then maybe \$echo will work.
5369e6f085baSmrg      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
5370e6f085baSmrg    fi
5371e6f085baSmrg  fi\
5372e6f085baSmrg"
5373e6f085baSmrg	$echo >> $output "\
537495b296d0Smrg
5375e6f085baSmrg  # Find the directory that this script lives in.
5376e6f085baSmrg  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
5377e6f085baSmrg  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
537895b296d0Smrg
5379e6f085baSmrg  # Follow symbolic links until we get to the real thisdir.
5380e6f085baSmrg  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
5381e6f085baSmrg  while test -n \"\$file\"; do
5382e6f085baSmrg    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
538395b296d0Smrg
5384e6f085baSmrg    # If there was a directory component, then change thisdir.
5385e6f085baSmrg    if test \"x\$destdir\" != \"x\$file\"; then
5386e6f085baSmrg      case \"\$destdir\" in
5387e6f085baSmrg      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
5388e6f085baSmrg      *) thisdir=\"\$thisdir/\$destdir\" ;;
5389e6f085baSmrg      esac
5390e6f085baSmrg    fi
539195b296d0Smrg
5392e6f085baSmrg    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
5393e6f085baSmrg    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
5394e6f085baSmrg  done
539595b296d0Smrg
5396e6f085baSmrg  # Try to get the absolute directory name.
5397e6f085baSmrg  absdir=\`cd \"\$thisdir\" && pwd\`
5398e6f085baSmrg  test -n \"\$absdir\" && thisdir=\"\$absdir\"
5399e6f085baSmrg"
540095b296d0Smrg
5401e6f085baSmrg	if test "$fast_install" = yes; then
5402e6f085baSmrg	  $echo >> $output "\
5403e6f085baSmrg  program=lt-'$outputname'$exeext
5404e6f085baSmrg  progdir=\"\$thisdir/$objdir\"
540595b296d0Smrg
5406e6f085baSmrg  if test ! -f \"\$progdir/\$program\" || \\
5407e6f085baSmrg     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
5408e6f085baSmrg       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
540995b296d0Smrg
5410e6f085baSmrg    file=\"\$\$-\$program\"
541195b296d0Smrg
5412e6f085baSmrg    if test ! -d \"\$progdir\"; then
5413e6f085baSmrg      $mkdir \"\$progdir\"
5414e6f085baSmrg    else
5415e6f085baSmrg      $rm \"\$progdir/\$file\"
5416e6f085baSmrg    fi"
541795b296d0Smrg
5418e6f085baSmrg	  $echo >> $output "\
541995b296d0Smrg
5420e6f085baSmrg    # relink executable if necessary
5421e6f085baSmrg    if test -n \"\$relink_command\"; then
5422e6f085baSmrg      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
5423e6f085baSmrg      else
5424e6f085baSmrg	$echo \"\$relink_command_output\" >&2
5425e6f085baSmrg	$rm \"\$progdir/\$file\"
5426e6f085baSmrg	exit $EXIT_FAILURE
5427e6f085baSmrg      fi
5428e6f085baSmrg    fi
542995b296d0Smrg
5430e6f085baSmrg    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
5431e6f085baSmrg    { $rm \"\$progdir/\$program\";
5432e6f085baSmrg      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
5433e6f085baSmrg    $rm \"\$progdir/\$file\"
5434e6f085baSmrg  fi"
5435e6f085baSmrg	else
5436e6f085baSmrg	  $echo >> $output "\
5437e6f085baSmrg  program='$outputname'
5438e6f085baSmrg  progdir=\"\$thisdir/$objdir\"
5439e6f085baSmrg"
544095b296d0Smrg	fi
544195b296d0Smrg
5442e6f085baSmrg	$echo >> $output "\
544395b296d0Smrg
5444e6f085baSmrg  if test -f \"\$progdir/\$program\"; then"
544595b296d0Smrg
5446e6f085baSmrg	# Export our shlibpath_var if we have one.
5447e6f085baSmrg	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
5448e6f085baSmrg	  $echo >> $output "\
5449e6f085baSmrg    # Add our own library path to $shlibpath_var
5450e6f085baSmrg    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
545195b296d0Smrg
5452e6f085baSmrg    # Some systems cannot cope with colon-terminated $shlibpath_var
5453e6f085baSmrg    # The second colon is a workaround for a bug in BeOS R4 sed
5454e6f085baSmrg    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
545595b296d0Smrg
5456e6f085baSmrg    export $shlibpath_var
5457e6f085baSmrg"
5458e6f085baSmrg	fi
545995b296d0Smrg
5460e6f085baSmrg	# fixup the dll searchpath if we need to.
5461e6f085baSmrg	if test -n "$dllsearchpath"; then
5462e6f085baSmrg	  $echo >> $output "\
5463e6f085baSmrg    # Add the dll search path components to the executable PATH
5464e6f085baSmrg    PATH=$dllsearchpath:\$PATH
5465e6f085baSmrg"
5466e6f085baSmrg	fi
546739713583Smrg
5468e6f085baSmrg	$echo >> $output "\
5469e6f085baSmrg    if test \"\$libtool_execute_magic\" != \"$magic\"; then
5470e6f085baSmrg      # Run the actual program with our arguments.
5471e6f085baSmrg"
5472e6f085baSmrg	case $host in
5473e6f085baSmrg	# Backslashes separate directories on plain windows
5474e6f085baSmrg	*-*-mingw | *-*-os2*)
5475e6f085baSmrg	  $echo >> $output "\
5476e6f085baSmrg      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
5477e6f085baSmrg"
5478e6f085baSmrg	  ;;
547995b296d0Smrg
5480e6f085baSmrg	*)
5481e6f085baSmrg	  $echo >> $output "\
5482e6f085baSmrg      exec \"\$progdir/\$program\" \${1+\"\$@\"}
5483e6f085baSmrg"
5484e6f085baSmrg	  ;;
5485e6f085baSmrg	esac
5486e6f085baSmrg	$echo >> $output "\
5487e6f085baSmrg      \$echo \"\$0: cannot exec \$program \$*\"
5488e6f085baSmrg      exit $EXIT_FAILURE
5489e6f085baSmrg    fi
5490e6f085baSmrg  else
5491e6f085baSmrg    # The program doesn't exist.
5492e6f085baSmrg    \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
5493e6f085baSmrg    \$echo \"This script is just a wrapper for \$program.\" 1>&2
5494e6f085baSmrg    $echo \"See the $PACKAGE documentation for more information.\" 1>&2
5495e6f085baSmrg    exit $EXIT_FAILURE
5496e6f085baSmrg  fi
5497e6f085baSmrgfi\
5498e6f085baSmrg"
5499e6f085baSmrg	chmod +x $output
5500e6f085baSmrg      fi
5501e6f085baSmrg      exit $EXIT_SUCCESS
5502e6f085baSmrg      ;;
5503e6f085baSmrg    esac
550495b296d0Smrg
5505e6f085baSmrg    # See if we need to build an old-fashioned archive.
5506e6f085baSmrg    for oldlib in $oldlibs; do
550795b296d0Smrg
5508e6f085baSmrg      if test "$build_libtool_libs" = convenience; then
5509e6f085baSmrg	oldobjs="$libobjs_save"
5510e6f085baSmrg	addlibs="$convenience"
5511e6f085baSmrg	build_libtool_libs=no
5512e6f085baSmrg      else
5513e6f085baSmrg	if test "$build_libtool_libs" = module; then
5514e6f085baSmrg	  oldobjs="$libobjs_save"
5515e6f085baSmrg	  build_libtool_libs=no
5516e6f085baSmrg	else
5517e6f085baSmrg	  oldobjs="$old_deplibs $non_pic_objects"
5518e6f085baSmrg	fi
5519e6f085baSmrg	addlibs="$old_convenience"
5520e6f085baSmrg      fi
552195b296d0Smrg
5522e6f085baSmrg      if test -n "$addlibs"; then
5523e6f085baSmrg	gentop="$output_objdir/${outputname}x"
5524e6f085baSmrg	generated="$generated $gentop"
552595b296d0Smrg
5526e6f085baSmrg	func_extract_archives $gentop $addlibs
5527e6f085baSmrg	oldobjs="$oldobjs $func_extract_archives_result"
5528e6f085baSmrg      fi
552995b296d0Smrg
5530e6f085baSmrg      # Do each command in the archive commands.
5531e6f085baSmrg      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
5532e6f085baSmrg       cmds=$old_archive_from_new_cmds
5533e6f085baSmrg      else
5534e6f085baSmrg	# POSIX demands no paths to be encoded in archives.  We have
5535e6f085baSmrg	# to avoid creating archives with duplicate basenames if we
5536e6f085baSmrg	# might have to extract them afterwards, e.g., when creating a
5537e6f085baSmrg	# static archive out of a convenience library, or when linking
5538e6f085baSmrg	# the entirety of a libtool archive into another (currently
5539e6f085baSmrg	# not supported by libtool).
5540e6f085baSmrg	if (for obj in $oldobjs
5541e6f085baSmrg	    do
5542e6f085baSmrg	      $echo "X$obj" | $Xsed -e 's%^.*/%%'
5543e6f085baSmrg	    done | sort | sort -uc >/dev/null 2>&1); then
5544e6f085baSmrg	  :
5545e6f085baSmrg	else
5546e6f085baSmrg	  $echo "copying selected object files to avoid basename conflicts..."
554795b296d0Smrg
5548e6f085baSmrg	  if test -z "$gentop"; then
5549e6f085baSmrg	    gentop="$output_objdir/${outputname}x"
5550e6f085baSmrg	    generated="$generated $gentop"
555195b296d0Smrg
5552e6f085baSmrg	    $show "${rm}r $gentop"
5553e6f085baSmrg	    $run ${rm}r "$gentop"
5554e6f085baSmrg	    $show "$mkdir $gentop"
5555e6f085baSmrg	    $run $mkdir "$gentop"
5556e6f085baSmrg	    exit_status=$?
5557e6f085baSmrg	    if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
5558e6f085baSmrg	      exit $exit_status
555939713583Smrg	    fi
556039713583Smrg	  fi
556195b296d0Smrg
5562e6f085baSmrg	  save_oldobjs=$oldobjs
5563e6f085baSmrg	  oldobjs=
5564e6f085baSmrg	  counter=1
5565e6f085baSmrg	  for obj in $save_oldobjs
5566e6f085baSmrg	  do
5567e6f085baSmrg	    objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
5568e6f085baSmrg	    case " $oldobjs " in
5569e6f085baSmrg	    " ") oldobjs=$obj ;;
5570e6f085baSmrg	    *[\ /]"$objbase "*)
5571e6f085baSmrg	      while :; do
5572e6f085baSmrg		# Make sure we don't pick an alternate name that also
5573e6f085baSmrg		# overlaps.
5574e6f085baSmrg		newobj=lt$counter-$objbase
5575e6f085baSmrg		counter=`expr $counter + 1`
5576e6f085baSmrg		case " $oldobjs " in
5577e6f085baSmrg		*[\ /]"$newobj "*) ;;
5578e6f085baSmrg		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
5579e6f085baSmrg		esac
5580e6f085baSmrg	      done
5581e6f085baSmrg	      $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
5582e6f085baSmrg	      $run ln "$obj" "$gentop/$newobj" ||
5583e6f085baSmrg	      $run cp "$obj" "$gentop/$newobj"
5584e6f085baSmrg	      oldobjs="$oldobjs $gentop/$newobj"
5585e6f085baSmrg	      ;;
5586e6f085baSmrg	    *) oldobjs="$oldobjs $obj" ;;
5587e6f085baSmrg	    esac
5588e6f085baSmrg	  done
5589e6f085baSmrg	fi
559095b296d0Smrg
5591e6f085baSmrg	eval cmds=\"$old_archive_cmds\"
559295b296d0Smrg
5593e6f085baSmrg	if len=`expr "X$cmds" : ".*"` &&
5594e6f085baSmrg	     test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
5595e6f085baSmrg	  cmds=$old_archive_cmds
5596e6f085baSmrg	else
5597e6f085baSmrg	  # the command line is too long to link in one step, link in parts
5598e6f085baSmrg	  $echo "using piecewise archive linking..."
5599e6f085baSmrg	  save_RANLIB=$RANLIB
5600e6f085baSmrg	  RANLIB=:
5601e6f085baSmrg	  objlist=
5602e6f085baSmrg	  concat_cmds=
5603e6f085baSmrg	  save_oldobjs=$oldobjs
5604e6f085baSmrg
5605e6f085baSmrg	  # Is there a better way of finding the last object in the list?
5606e6f085baSmrg	  for obj in $save_oldobjs
5607e6f085baSmrg	  do
5608e6f085baSmrg	    last_oldobj=$obj
5609e6f085baSmrg	  done
5610e6f085baSmrg	  for obj in $save_oldobjs
5611e6f085baSmrg	  do
5612e6f085baSmrg	    oldobjs="$objlist $obj"
5613e6f085baSmrg	    objlist="$objlist $obj"
5614e6f085baSmrg	    eval test_cmds=\"$old_archive_cmds\"
5615e6f085baSmrg	    if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
5616e6f085baSmrg	       test "$len" -le "$max_cmd_len"; then
5617e6f085baSmrg	      :
561839713583Smrg	    else
5619e6f085baSmrg	      # the above command should be used before it gets too long
5620e6f085baSmrg	      oldobjs=$objlist
5621e6f085baSmrg	      if test "$obj" = "$last_oldobj" ; then
5622e6f085baSmrg	        RANLIB=$save_RANLIB
5623e6f085baSmrg	      fi
5624e6f085baSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
5625e6f085baSmrg	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
5626e6f085baSmrg	      objlist=
562795b296d0Smrg	    fi
5628e6f085baSmrg	  done
5629e6f085baSmrg	  RANLIB=$save_RANLIB
5630e6f085baSmrg	  oldobjs=$objlist
5631e6f085baSmrg	  if test "X$oldobjs" = "X" ; then
5632e6f085baSmrg	    eval cmds=\"\$concat_cmds\"
563395b296d0Smrg	  else
5634e6f085baSmrg	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
563595b296d0Smrg	  fi
563639713583Smrg	fi
5637e6f085baSmrg      fi
5638e6f085baSmrg      save_ifs="$IFS"; IFS='~'
5639e6f085baSmrg      for cmd in $cmds; do
5640e6f085baSmrg        eval cmd=\"$cmd\"
564139713583Smrg	IFS="$save_ifs"
5642e6f085baSmrg	$show "$cmd"
5643e6f085baSmrg	$run eval "$cmd" || exit $?
5644e6f085baSmrg      done
5645e6f085baSmrg      IFS="$save_ifs"
5646e6f085baSmrg    done
564795b296d0Smrg
5648e6f085baSmrg    if test -n "$generated"; then
5649e6f085baSmrg      $show "${rm}r$generated"
5650e6f085baSmrg      $run ${rm}r$generated
5651e6f085baSmrg    fi
565239713583Smrg
5653e6f085baSmrg    # Now create the libtool archive.
5654e6f085baSmrg    case $output in
5655e6f085baSmrg    *.la)
5656e6f085baSmrg      old_library=
5657e6f085baSmrg      test "$build_old_libs" = yes && old_library="$libname.$libext"
5658e6f085baSmrg      $show "creating $output"
565995b296d0Smrg
5660e6f085baSmrg      # Preserve any variables that may affect compiler behavior
5661e6f085baSmrg      for var in $variables_saved_for_relink; do
5662e6f085baSmrg	if eval test -z \"\${$var+set}\"; then
5663e6f085baSmrg	  relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
5664e6f085baSmrg	elif eval var_value=\$$var; test -z "$var_value"; then
5665e6f085baSmrg	  relink_command="$var=; export $var; $relink_command"
5666e6f085baSmrg	else
5667e6f085baSmrg	  var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
5668e6f085baSmrg	  relink_command="$var=\"$var_value\"; export $var; $relink_command"
566939713583Smrg	fi
5670e6f085baSmrg      done
5671e6f085baSmrg      # Quote the link command for shipping.
5672e6f085baSmrg      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
5673e6f085baSmrg      relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
5674e6f085baSmrg      if test "$hardcode_automatic" = yes ; then
5675e6f085baSmrg	relink_command=
567639713583Smrg      fi
567795b296d0Smrg
567895b296d0Smrg
5679e6f085baSmrg      # Only create the output if not a dry run.
5680e6f085baSmrg      if test -z "$run"; then
5681e6f085baSmrg	for installed in no yes; do
5682e6f085baSmrg	  if test "$installed" = yes; then
5683e6f085baSmrg	    if test -z "$install_libdir"; then
5684e6f085baSmrg	      break
5685e6f085baSmrg	    fi
5686e6f085baSmrg	    output="$output_objdir/$outputname"i
5687e6f085baSmrg	    # Replace all uninstalled libtool libraries with the installed ones
5688e6f085baSmrg	    newdependency_libs=
5689e6f085baSmrg	    for deplib in $dependency_libs; do
5690e6f085baSmrg	      case $deplib in
5691e6f085baSmrg	      *.la)
5692e6f085baSmrg		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
5693e6f085baSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
5694e6f085baSmrg		if test -z "$libdir"; then
5695e6f085baSmrg		  $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
5696e6f085baSmrg		  exit $EXIT_FAILURE
5697e6f085baSmrg		fi
5698e6f085baSmrg		newdependency_libs="$newdependency_libs $libdir/$name"
5699e6f085baSmrg		;;
5700e6f085baSmrg	      *) newdependency_libs="$newdependency_libs $deplib" ;;
5701e6f085baSmrg	      esac
5702e6f085baSmrg	    done
5703e6f085baSmrg	    dependency_libs="$newdependency_libs"
5704e6f085baSmrg	    newdlfiles=
5705e6f085baSmrg	    for lib in $dlfiles; do
5706e6f085baSmrg	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5707e6f085baSmrg	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5708e6f085baSmrg	      if test -z "$libdir"; then
5709e6f085baSmrg		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5710e6f085baSmrg		exit $EXIT_FAILURE
5711e6f085baSmrg	      fi
5712e6f085baSmrg	      newdlfiles="$newdlfiles $libdir/$name"
5713e6f085baSmrg	    done
5714e6f085baSmrg	    dlfiles="$newdlfiles"
5715e6f085baSmrg	    newdlprefiles=
5716e6f085baSmrg	    for lib in $dlprefiles; do
5717e6f085baSmrg	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5718e6f085baSmrg	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5719e6f085baSmrg	      if test -z "$libdir"; then
5720e6f085baSmrg		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5721e6f085baSmrg		exit $EXIT_FAILURE
5722e6f085baSmrg	      fi
5723e6f085baSmrg	      newdlprefiles="$newdlprefiles $libdir/$name"
5724e6f085baSmrg	    done
5725e6f085baSmrg	    dlprefiles="$newdlprefiles"
5726e6f085baSmrg	  else
5727e6f085baSmrg	    newdlfiles=
5728e6f085baSmrg	    for lib in $dlfiles; do
5729e6f085baSmrg	      case $lib in
5730e6f085baSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5731e6f085baSmrg		*) abs=`pwd`"/$lib" ;;
5732e6f085baSmrg	      esac
5733e6f085baSmrg	      newdlfiles="$newdlfiles $abs"
5734e6f085baSmrg	    done
5735e6f085baSmrg	    dlfiles="$newdlfiles"
5736e6f085baSmrg	    newdlprefiles=
5737e6f085baSmrg	    for lib in $dlprefiles; do
5738e6f085baSmrg	      case $lib in
5739e6f085baSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5740e6f085baSmrg		*) abs=`pwd`"/$lib" ;;
5741e6f085baSmrg	      esac
5742e6f085baSmrg	      newdlprefiles="$newdlprefiles $abs"
5743e6f085baSmrg	    done
5744e6f085baSmrg	    dlprefiles="$newdlprefiles"
5745e6f085baSmrg	  fi
5746e6f085baSmrg	  $rm $output
5747e6f085baSmrg	  # place dlname in correct position for cygwin
5748e6f085baSmrg	  tdlname=$dlname
5749e6f085baSmrg	  case $host,$output,$installed,$module,$dlname in
5750e6f085baSmrg	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
5751e6f085baSmrg	  esac
5752e6f085baSmrg	  $echo > $output "\
5753e6f085baSmrg# $outputname - a libtool library file
5754e6f085baSmrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
5755e6f085baSmrg#
5756e6f085baSmrg# Please DO NOT delete this file!
5757e6f085baSmrg# It is necessary for linking the library.
575895b296d0Smrg
5759e6f085baSmrg# The name that we can dlopen(3).
5760e6f085baSmrgdlname='$tdlname'
576195b296d0Smrg
5762e6f085baSmrg# Names of this library.
5763e6f085baSmrglibrary_names='$library_names'
576495b296d0Smrg
5765e6f085baSmrg# The name of the static archive.
5766e6f085baSmrgold_library='$old_library'
576795b296d0Smrg
5768e6f085baSmrg# Libraries that this one depends upon.
5769e6f085baSmrgdependency_libs='$dependency_libs'
577039713583Smrg
5771e6f085baSmrg# Version information for $libname.
5772e6f085baSmrgcurrent=$current
5773e6f085baSmrgage=$age
5774e6f085baSmrgrevision=$revision
577539713583Smrg
5776e6f085baSmrg# Is this an already installed library?
5777e6f085baSmrginstalled=$installed
577839713583Smrg
5779e6f085baSmrg# Should we warn about portability when linking against -modules?
5780e6f085baSmrgshouldnotlink=$module
578139713583Smrg
5782e6f085baSmrg# Files to dlopen/dlpreopen
5783e6f085baSmrgdlopen='$dlfiles'
5784e6f085baSmrgdlpreopen='$dlprefiles'
578539713583Smrg
5786e6f085baSmrg# Directory that this library needs to be installed in:
5787e6f085baSmrglibdir='$install_libdir'"
5788e6f085baSmrg	  if test "$installed" = no && test "$need_relink" = yes; then
5789e6f085baSmrg	    $echo >> $output "\
5790e6f085baSmrgrelink_command=\"$relink_command\""
5791e6f085baSmrg	  fi
5792e6f085baSmrg	done
579339713583Smrg      fi
579439713583Smrg
5795e6f085baSmrg      # Do a symbolic link so that the libtool archive can be found in
5796e6f085baSmrg      # LD_LIBRARY_PATH before the program is installed.
5797e6f085baSmrg      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
5798e6f085baSmrg      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
579995b296d0Smrg      ;;
5800e6f085baSmrg    esac
5801e6f085baSmrg    exit $EXIT_SUCCESS
5802e6f085baSmrg    ;;
580395b296d0Smrg
5804e6f085baSmrg  # libtool install mode
5805e6f085baSmrg  install)
5806e6f085baSmrg    modename="$modename: install"
5807e6f085baSmrg
5808e6f085baSmrg    # There may be an optional sh(1) argument at the beginning of
5809e6f085baSmrg    # install_prog (especially on Windows NT).
5810e6f085baSmrg    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
5811e6f085baSmrg       # Allow the use of GNU shtool's install command.
5812e6f085baSmrg       $echo "X$nonopt" | grep shtool > /dev/null; then
5813e6f085baSmrg      # Aesthetically quote it.
5814e6f085baSmrg      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
5815e6f085baSmrg      case $arg in
5816e6f085baSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
5817e6f085baSmrg	arg="\"$arg\""
5818e6f085baSmrg	;;
581939713583Smrg      esac
5820e6f085baSmrg      install_prog="$arg "
5821e6f085baSmrg      arg="$1"
5822e6f085baSmrg      shift
5823e6f085baSmrg    else
5824e6f085baSmrg      install_prog=
5825e6f085baSmrg      arg=$nonopt
5826e6f085baSmrg    fi
582795b296d0Smrg
5828e6f085baSmrg    # The real first argument should be the name of the installation program.
5829e6f085baSmrg    # Aesthetically quote it.
5830e6f085baSmrg    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5831e6f085baSmrg    case $arg in
5832e6f085baSmrg    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
5833e6f085baSmrg      arg="\"$arg\""
5834e6f085baSmrg      ;;
5835e6f085baSmrg    esac
5836e6f085baSmrg    install_prog="$install_prog$arg"
583795b296d0Smrg
5838e6f085baSmrg    # We need to accept at least all the BSD install flags.
5839e6f085baSmrg    dest=
5840e6f085baSmrg    files=
5841e6f085baSmrg    opts=
5842e6f085baSmrg    prev=
5843e6f085baSmrg    install_type=
5844e6f085baSmrg    isdir=no
5845e6f085baSmrg    stripme=
5846e6f085baSmrg    for arg
5847e6f085baSmrg    do
5848e6f085baSmrg      if test -n "$dest"; then
5849e6f085baSmrg	files="$files $dest"
5850e6f085baSmrg	dest=$arg
5851e6f085baSmrg	continue
5852e6f085baSmrg      fi
585339713583Smrg
5854e6f085baSmrg      case $arg in
5855e6f085baSmrg      -d) isdir=yes ;;
5856e6f085baSmrg      -f) 
5857e6f085baSmrg      	case " $install_prog " in
5858e6f085baSmrg	*[\\\ /]cp\ *) ;;
5859e6f085baSmrg	*) prev=$arg ;;
5860e6f085baSmrg	esac
5861e6f085baSmrg	;;
5862e6f085baSmrg      -g | -m | -o) prev=$arg ;;
5863e6f085baSmrg      -s)
5864e6f085baSmrg	stripme=" -s"
5865e6f085baSmrg	continue
5866e6f085baSmrg	;;
5867e6f085baSmrg      -*)
5868e6f085baSmrg	;;
5869e6f085baSmrg      *)
5870e6f085baSmrg	# If the previous option needed an argument, then skip it.
5871e6f085baSmrg	if test -n "$prev"; then
5872e6f085baSmrg	  prev=
5873e6f085baSmrg	else
5874e6f085baSmrg	  dest=$arg
5875e6f085baSmrg	  continue
5876e6f085baSmrg	fi
587795b296d0Smrg	;;
587839713583Smrg      esac
587995b296d0Smrg
5880e6f085baSmrg      # Aesthetically quote the argument.
5881e6f085baSmrg      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5882e6f085baSmrg      case $arg in
5883e6f085baSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
5884e6f085baSmrg	arg="\"$arg\""
588539713583Smrg	;;
588639713583Smrg      esac
5887e6f085baSmrg      install_prog="$install_prog $arg"
5888e6f085baSmrg    done
588995b296d0Smrg
5890e6f085baSmrg    if test -z "$install_prog"; then
5891e6f085baSmrg      $echo "$modename: you must specify an install program" 1>&2
5892e6f085baSmrg      $echo "$help" 1>&2
5893e6f085baSmrg      exit $EXIT_FAILURE
5894e6f085baSmrg    fi
589595b296d0Smrg
5896e6f085baSmrg    if test -n "$prev"; then
5897e6f085baSmrg      $echo "$modename: the \`$prev' option requires an argument" 1>&2
5898e6f085baSmrg      $echo "$help" 1>&2
5899e6f085baSmrg      exit $EXIT_FAILURE
5900e6f085baSmrg    fi
5901e6f085baSmrg
5902e6f085baSmrg    if test -z "$files"; then
5903e6f085baSmrg      if test -z "$dest"; then
5904e6f085baSmrg	$echo "$modename: no file or destination specified" 1>&2
5905e6f085baSmrg      else
5906e6f085baSmrg	$echo "$modename: you must specify a destination" 1>&2
5907e6f085baSmrg      fi
5908e6f085baSmrg      $echo "$help" 1>&2
5909e6f085baSmrg      exit $EXIT_FAILURE
5910e6f085baSmrg    fi
5911e6f085baSmrg
5912e6f085baSmrg    # Strip any trailing slash from the destination.
5913e6f085baSmrg    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
5914e6f085baSmrg
5915e6f085baSmrg    # Check to see that the destination is a directory.
5916e6f085baSmrg    test -d "$dest" && isdir=yes
5917e6f085baSmrg    if test "$isdir" = yes; then
5918e6f085baSmrg      destdir="$dest"
5919e6f085baSmrg      destname=
5920e6f085baSmrg    else
5921e6f085baSmrg      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
5922e6f085baSmrg      test "X$destdir" = "X$dest" && destdir=.
5923e6f085baSmrg      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
5924e6f085baSmrg
5925e6f085baSmrg      # Not a directory, so check to see that there is only one file specified.
5926e6f085baSmrg      set dummy $files
5927e6f085baSmrg      if test "$#" -gt 2; then
5928e6f085baSmrg	$echo "$modename: \`$dest' is not a directory" 1>&2
5929e6f085baSmrg	$echo "$help" 1>&2
5930e6f085baSmrg	exit $EXIT_FAILURE
5931e6f085baSmrg      fi
5932e6f085baSmrg    fi
5933e6f085baSmrg    case $destdir in
5934e6f085baSmrg    [\\/]* | [A-Za-z]:[\\/]*) ;;
5935e6f085baSmrg    *)
5936e6f085baSmrg      for file in $files; do
5937e6f085baSmrg	case $file in
5938e6f085baSmrg	*.lo) ;;
593939713583Smrg	*)
5940e6f085baSmrg	  $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
5941e6f085baSmrg	  $echo "$help" 1>&2
5942e6f085baSmrg	  exit $EXIT_FAILURE
594339713583Smrg	  ;;
594439713583Smrg	esac
594539713583Smrg      done
5946e6f085baSmrg      ;;
5947e6f085baSmrg    esac
594895b296d0Smrg
5949e6f085baSmrg    # This variable tells wrapper scripts just to set variables rather
5950e6f085baSmrg    # than running their programs.
5951e6f085baSmrg    libtool_install_magic="$magic"
595295b296d0Smrg
5953e6f085baSmrg    staticlibs=
5954e6f085baSmrg    future_libdirs=
5955e6f085baSmrg    current_libdirs=
5956e6f085baSmrg    for file in $files; do
595795b296d0Smrg
5958e6f085baSmrg      # Do each installation.
5959e6f085baSmrg      case $file in
5960e6f085baSmrg      *.$libext)
5961e6f085baSmrg	# Do the static libraries later.
5962e6f085baSmrg	staticlibs="$staticlibs $file"
5963e6f085baSmrg	;;
5964e6f085baSmrg
5965e6f085baSmrg      *.la)
5966e6f085baSmrg	# Check to see that this really is a libtool archive.
5967e6f085baSmrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
5968e6f085baSmrg	else
5969e6f085baSmrg	  $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
5970e6f085baSmrg	  $echo "$help" 1>&2
5971e6f085baSmrg	  exit $EXIT_FAILURE
5972e6f085baSmrg	fi
5973e6f085baSmrg
5974e6f085baSmrg	library_names=
5975e6f085baSmrg	old_library=
5976e6f085baSmrg	relink_command=
5977e6f085baSmrg	# If there is no directory component, then add one.
5978e6f085baSmrg	case $file in
5979e6f085baSmrg	*/* | *\\*) . $file ;;
5980e6f085baSmrg	*) . ./$file ;;
5981e6f085baSmrg	esac
5982e6f085baSmrg
5983e6f085baSmrg	# Add the libdir to current_libdirs if it is the destination.
5984e6f085baSmrg	if test "X$destdir" = "X$libdir"; then
5985e6f085baSmrg	  case "$current_libdirs " in
598639713583Smrg	  *" $libdir "*) ;;
5987e6f085baSmrg	  *) current_libdirs="$current_libdirs $libdir" ;;
598839713583Smrg	  esac
5989e6f085baSmrg	else
5990e6f085baSmrg	  # Note the libdir as a future libdir.
5991e6f085baSmrg	  case "$future_libdirs " in
599239713583Smrg	  *" $libdir "*) ;;
5993e6f085baSmrg	  *) future_libdirs="$future_libdirs $libdir" ;;
599439713583Smrg	  esac
599539713583Smrg	fi
599695b296d0Smrg
5997e6f085baSmrg	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
5998e6f085baSmrg	test "X$dir" = "X$file/" && dir=
5999e6f085baSmrg	dir="$dir$objdir"
6000e6f085baSmrg
6001e6f085baSmrg	if test -n "$relink_command"; then
6002e6f085baSmrg	  # Determine the prefix the user has applied to our future dir.
6003e6f085baSmrg	  inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
6004e6f085baSmrg
6005e6f085baSmrg	  # Don't allow the user to place us outside of our expected
6006e6f085baSmrg	  # location b/c this prevents finding dependent libraries that
6007e6f085baSmrg	  # are installed to the same prefix.
6008e6f085baSmrg	  # At present, this check doesn't affect windows .dll's that
6009e6f085baSmrg	  # are installed into $libdir/../bin (currently, that works fine)
6010e6f085baSmrg	  # but it's something to keep an eye on.
6011e6f085baSmrg	  if test "$inst_prefix_dir" = "$destdir"; then
6012e6f085baSmrg	    $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
6013e6f085baSmrg	    exit $EXIT_FAILURE
6014e6f085baSmrg	  fi
6015e6f085baSmrg
6016e6f085baSmrg	  if test -n "$inst_prefix_dir"; then
6017e6f085baSmrg	    # Stick the inst_prefix_dir data into the link command.
6018e6f085baSmrg	    relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP`
6019e6f085baSmrg	  else
6020e6f085baSmrg	    relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP`
6021e6f085baSmrg	  fi
6022e6f085baSmrg
6023e6f085baSmrg	  $echo "$modename: warning: relinking \`$file'" 1>&2
6024e6f085baSmrg	  $show "$relink_command"
6025e6f085baSmrg	  if $run eval "$relink_command"; then :
602695b296d0Smrg	  else
6027e6f085baSmrg	    $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
6028e6f085baSmrg	    exit $EXIT_FAILURE
602995b296d0Smrg	  fi
603095b296d0Smrg	fi
603195b296d0Smrg
6032e6f085baSmrg	# See the names of the shared library.
6033e6f085baSmrg	set dummy $library_names
6034e6f085baSmrg	if test -n "$2"; then
6035e6f085baSmrg	  realname="$2"
6036e6f085baSmrg	  shift
6037e6f085baSmrg	  shift
603895b296d0Smrg
6039e6f085baSmrg	  srcname="$realname"
6040e6f085baSmrg	  test -n "$relink_command" && srcname="$realname"T
604195b296d0Smrg
6042e6f085baSmrg	  # Install the shared library and build the symlinks.
6043e6f085baSmrg	  $show "$install_prog $dir/$srcname $destdir/$realname"
6044e6f085baSmrg	  $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
6045e6f085baSmrg	  if test -n "$stripme" && test -n "$striplib"; then
6046e6f085baSmrg	    $show "$striplib $destdir/$realname"
6047e6f085baSmrg	    $run eval "$striplib $destdir/$realname" || exit $?
6048e6f085baSmrg	  fi
604995b296d0Smrg
6050e6f085baSmrg	  if test "$#" -gt 0; then
6051e6f085baSmrg	    # Delete the old symlinks, and create new ones.
6052e6f085baSmrg	    # Try `ln -sf' first, because the `ln' binary might depend on
6053e6f085baSmrg	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
6054e6f085baSmrg	    # so we also need to try rm && ln -s.
6055e6f085baSmrg	    for linkname
6056e6f085baSmrg	    do
6057e6f085baSmrg	      if test "$linkname" != "$realname"; then
6058e6f085baSmrg                $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
6059e6f085baSmrg                $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
6060e6f085baSmrg	      fi
6061e6f085baSmrg	    done
6062e6f085baSmrg	  fi
606395b296d0Smrg
6064e6f085baSmrg	  # Do each command in the postinstall commands.
6065e6f085baSmrg	  lib="$destdir/$realname"
6066e6f085baSmrg	  cmds=$postinstall_cmds
6067e6f085baSmrg	  save_ifs="$IFS"; IFS='~'
6068e6f085baSmrg	  for cmd in $cmds; do
6069e6f085baSmrg	    IFS="$save_ifs"
6070e6f085baSmrg	    eval cmd=\"$cmd\"
6071e6f085baSmrg	    $show "$cmd"
6072e6f085baSmrg	    $run eval "$cmd" || {
6073e6f085baSmrg	      lt_exit=$?
6074e6f085baSmrg
6075e6f085baSmrg	      # Restore the uninstalled library and exit
6076e6f085baSmrg	      if test "$mode" = relink; then
6077e6f085baSmrg		$run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
6078e6f085baSmrg	      fi
607995b296d0Smrg
6080e6f085baSmrg	      exit $lt_exit
6081e6f085baSmrg	    }
6082e6f085baSmrg	  done
6083e6f085baSmrg	  IFS="$save_ifs"
608495b296d0Smrg	fi
608595b296d0Smrg
6086e6f085baSmrg	# Install the pseudo-library for information purposes.
6087e6f085baSmrg	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6088e6f085baSmrg	instname="$dir/$name"i
6089e6f085baSmrg	$show "$install_prog $instname $destdir/$name"
6090e6f085baSmrg	$run eval "$install_prog $instname $destdir/$name" || exit $?
609195b296d0Smrg
6092e6f085baSmrg	# Maybe install the static library, too.
6093e6f085baSmrg	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
6094e6f085baSmrg	;;
609595b296d0Smrg
6096e6f085baSmrg      *.lo)
6097e6f085baSmrg	# Install (i.e. copy) a libtool object.
6098e6f085baSmrg
6099e6f085baSmrg	# Figure out destination file name, if it wasn't already specified.
6100e6f085baSmrg	if test -n "$destname"; then
6101e6f085baSmrg	  destfile="$destdir/$destname"
6102e6f085baSmrg	else
6103e6f085baSmrg	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6104e6f085baSmrg	  destfile="$destdir/$destfile"
610595b296d0Smrg	fi
6106e6f085baSmrg
6107e6f085baSmrg	# Deduce the name of the destination old-style object file.
6108e6f085baSmrg	case $destfile in
6109e6f085baSmrg	*.lo)
6110e6f085baSmrg	  staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
6111e6f085baSmrg	  ;;
6112e6f085baSmrg	*.$objext)
6113e6f085baSmrg	  staticdest="$destfile"
6114e6f085baSmrg	  destfile=
6115e6f085baSmrg	  ;;
6116e6f085baSmrg	*)
6117e6f085baSmrg	  $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
6118e6f085baSmrg	  $echo "$help" 1>&2
6119e6f085baSmrg	  exit $EXIT_FAILURE
6120e6f085baSmrg	  ;;
6121e6f085baSmrg	esac
6122e6f085baSmrg
6123e6f085baSmrg	# Install the libtool object if requested.
6124e6f085baSmrg	if test -n "$destfile"; then
6125e6f085baSmrg	  $show "$install_prog $file $destfile"
6126e6f085baSmrg	  $run eval "$install_prog $file $destfile" || exit $?
612795b296d0Smrg	fi
612895b296d0Smrg
6129e6f085baSmrg	# Install the old object if enabled.
6130e6f085baSmrg	if test "$build_old_libs" = yes; then
6131e6f085baSmrg	  # Deduce the name of the old-style object file.
6132e6f085baSmrg	  staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
613395b296d0Smrg
6134e6f085baSmrg	  $show "$install_prog $staticobj $staticdest"
6135e6f085baSmrg	  $run eval "$install_prog \$staticobj \$staticdest" || exit $?
6136e6f085baSmrg	fi
6137e6f085baSmrg	exit $EXIT_SUCCESS
6138e6f085baSmrg	;;
613939713583Smrg
6140e6f085baSmrg      *)
6141e6f085baSmrg	# Figure out destination file name, if it wasn't already specified.
6142e6f085baSmrg	if test -n "$destname"; then
6143e6f085baSmrg	  destfile="$destdir/$destname"
614495b296d0Smrg	else
6145e6f085baSmrg	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6146e6f085baSmrg	  destfile="$destdir/$destfile"
614795b296d0Smrg	fi
614895b296d0Smrg
6149e6f085baSmrg	# If the file is missing, and there is a .exe on the end, strip it
6150e6f085baSmrg	# because it is most likely a libtool script we actually want to
6151e6f085baSmrg	# install
6152e6f085baSmrg	stripped_ext=""
6153e6f085baSmrg	case $file in
6154e6f085baSmrg	  *.exe)
6155e6f085baSmrg	    if test ! -f "$file"; then
6156e6f085baSmrg	      file=`$echo $file|${SED} 's,.exe$,,'`
6157e6f085baSmrg	      stripped_ext=".exe"
6158e6f085baSmrg	    fi
6159e6f085baSmrg	    ;;
6160e6f085baSmrg	esac
616195b296d0Smrg
6162e6f085baSmrg	# Do a test to see if this is really a libtool program.
6163e6f085baSmrg	case $host in
6164e6f085baSmrg	*cygwin*|*mingw*)
6165e6f085baSmrg	    wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
6166e6f085baSmrg	    ;;
6167e6f085baSmrg	*)
6168e6f085baSmrg	    wrapper=$file
6169e6f085baSmrg	    ;;
6170e6f085baSmrg	esac
6171e6f085baSmrg	if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
6172e6f085baSmrg	  notinst_deplibs=
6173e6f085baSmrg	  relink_command=
617495b296d0Smrg
6175e6f085baSmrg	  # Note that it is not necessary on cygwin/mingw to append a dot to
6176e6f085baSmrg	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
6177e6f085baSmrg	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
6178e6f085baSmrg	  # `FILE.' does not work on cygwin managed mounts.
6179e6f085baSmrg	  #
6180e6f085baSmrg	  # If there is no directory component, then add one.
6181e6f085baSmrg	  case $wrapper in
6182e6f085baSmrg	  */* | *\\*) . ${wrapper} ;;
6183e6f085baSmrg	  *) . ./${wrapper} ;;
6184e6f085baSmrg	  esac
618595b296d0Smrg
6186e6f085baSmrg	  # Check the variables that should have been set.
6187e6f085baSmrg	  if test -z "$notinst_deplibs"; then
6188e6f085baSmrg	    $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
6189e6f085baSmrg	    exit $EXIT_FAILURE
6190e6f085baSmrg	  fi
619195b296d0Smrg
6192e6f085baSmrg	  finalize=yes
6193e6f085baSmrg	  for lib in $notinst_deplibs; do
6194e6f085baSmrg	    # Check to see that each library is installed.
6195e6f085baSmrg	    libdir=
6196e6f085baSmrg	    if test -f "$lib"; then
6197e6f085baSmrg	      # If there is no directory component, then add one.
6198e6f085baSmrg	      case $lib in
6199e6f085baSmrg	      */* | *\\*) . $lib ;;
6200e6f085baSmrg	      *) . ./$lib ;;
6201e6f085baSmrg	      esac
6202e6f085baSmrg	    fi
6203e6f085baSmrg	    libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
6204e6f085baSmrg	    if test -n "$libdir" && test ! -f "$libfile"; then
6205e6f085baSmrg	      $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
6206e6f085baSmrg	      finalize=no
6207e6f085baSmrg	    fi
6208e6f085baSmrg	  done
6209e6f085baSmrg
6210e6f085baSmrg	  relink_command=
6211e6f085baSmrg	  # Note that it is not necessary on cygwin/mingw to append a dot to
6212e6f085baSmrg	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
6213e6f085baSmrg	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
6214e6f085baSmrg	  # `FILE.' does not work on cygwin managed mounts.
6215e6f085baSmrg	  #
6216e6f085baSmrg	  # If there is no directory component, then add one.
6217e6f085baSmrg	  case $wrapper in
6218e6f085baSmrg	  */* | *\\*) . ${wrapper} ;;
6219e6f085baSmrg	  *) . ./${wrapper} ;;
6220e6f085baSmrg	  esac
6221e6f085baSmrg
6222e6f085baSmrg	  outputname=
6223e6f085baSmrg	  if test "$fast_install" = no && test -n "$relink_command"; then
6224e6f085baSmrg	    if test "$finalize" = yes && test -z "$run"; then
6225e6f085baSmrg	      tmpdir=`func_mktempdir`
6226e6f085baSmrg	      file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
6227e6f085baSmrg	      outputname="$tmpdir/$file"
6228e6f085baSmrg	      # Replace the output file specification.
6229e6f085baSmrg	      relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP`
6230e6f085baSmrg
6231e6f085baSmrg	      $show "$relink_command"
6232e6f085baSmrg	      if $run eval "$relink_command"; then :
6233e6f085baSmrg	      else
6234e6f085baSmrg		$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
6235e6f085baSmrg		${rm}r "$tmpdir"
6236e6f085baSmrg		continue
6237e6f085baSmrg	      fi
6238e6f085baSmrg	      file="$outputname"
6239e6f085baSmrg	    else
6240e6f085baSmrg	      $echo "$modename: warning: cannot relink \`$file'" 1>&2
6241e6f085baSmrg	    fi
624295b296d0Smrg	  else
6243e6f085baSmrg	    # Install the binary that we compiled earlier.
6244e6f085baSmrg	    file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
624595b296d0Smrg	  fi
6246e6f085baSmrg	fi
624739713583Smrg
6248e6f085baSmrg	# remove .exe since cygwin /usr/bin/install will append another
6249e6f085baSmrg	# one anyway 
6250e6f085baSmrg	case $install_prog,$host in
6251e6f085baSmrg	*/usr/bin/install*,*cygwin*)
6252e6f085baSmrg	  case $file:$destfile in
6253e6f085baSmrg	  *.exe:*.exe)
6254e6f085baSmrg	    # this is ok
6255e6f085baSmrg	    ;;
6256e6f085baSmrg	  *.exe:*)
6257e6f085baSmrg	    destfile=$destfile.exe
6258e6f085baSmrg	    ;;
6259e6f085baSmrg	  *:*.exe)
6260e6f085baSmrg	    destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
6261e6f085baSmrg	    ;;
6262e6f085baSmrg	  esac
6263e6f085baSmrg	  ;;
626495b296d0Smrg	esac
6265e6f085baSmrg	$show "$install_prog$stripme $file $destfile"
6266e6f085baSmrg	$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
6267e6f085baSmrg	test -n "$outputname" && ${rm}r "$tmpdir"
6268e6f085baSmrg	;;
6269e6f085baSmrg      esac
6270e6f085baSmrg    done
627195b296d0Smrg
6272e6f085baSmrg    for file in $staticlibs; do
6273e6f085baSmrg      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
627495b296d0Smrg
6275e6f085baSmrg      # Set up the ranlib parameters.
6276e6f085baSmrg      oldlib="$destdir/$name"
627795b296d0Smrg
6278e6f085baSmrg      $show "$install_prog $file $oldlib"
6279e6f085baSmrg      $run eval "$install_prog \$file \$oldlib" || exit $?
628095b296d0Smrg
6281e6f085baSmrg      if test -n "$stripme" && test -n "$old_striplib"; then
6282e6f085baSmrg	$show "$old_striplib $oldlib"
6283e6f085baSmrg	$run eval "$old_striplib $oldlib" || exit $?
628495b296d0Smrg      fi
628595b296d0Smrg
6286e6f085baSmrg      # Do each command in the postinstall commands.
6287e6f085baSmrg      cmds=$old_postinstall_cmds
6288e6f085baSmrg      save_ifs="$IFS"; IFS='~'
6289e6f085baSmrg      for cmd in $cmds; do
6290e6f085baSmrg	IFS="$save_ifs"
6291e6f085baSmrg	eval cmd=\"$cmd\"
6292e6f085baSmrg	$show "$cmd"
6293e6f085baSmrg	$run eval "$cmd" || exit $?
6294e6f085baSmrg      done
6295e6f085baSmrg      IFS="$save_ifs"
6296e6f085baSmrg    done
629795b296d0Smrg
6298e6f085baSmrg    if test -n "$future_libdirs"; then
6299e6f085baSmrg      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
6300e6f085baSmrg    fi
630195b296d0Smrg
6302e6f085baSmrg    if test -n "$current_libdirs"; then
6303e6f085baSmrg      # Maybe just do a dry run.
6304e6f085baSmrg      test -n "$run" && current_libdirs=" -n$current_libdirs"
6305e6f085baSmrg      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
6306e6f085baSmrg    else
6307e6f085baSmrg      exit $EXIT_SUCCESS
6308e6f085baSmrg    fi
6309e6f085baSmrg    ;;
631095b296d0Smrg
6311e6f085baSmrg  # libtool finish mode
6312e6f085baSmrg  finish)
6313e6f085baSmrg    modename="$modename: finish"
6314e6f085baSmrg    libdirs="$nonopt"
6315e6f085baSmrg    admincmds=
631695b296d0Smrg
6317e6f085baSmrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
6318e6f085baSmrg      for dir
6319e6f085baSmrg      do
6320e6f085baSmrg	libdirs="$libdirs $dir"
6321e6f085baSmrg      done
632295b296d0Smrg
6323e6f085baSmrg      for libdir in $libdirs; do
6324e6f085baSmrg	if test -n "$finish_cmds"; then
6325e6f085baSmrg	  # Do each command in the finish commands.
6326e6f085baSmrg	  cmds=$finish_cmds
6327e6f085baSmrg	  save_ifs="$IFS"; IFS='~'
6328e6f085baSmrg	  for cmd in $cmds; do
6329e6f085baSmrg	    IFS="$save_ifs"
6330e6f085baSmrg	    eval cmd=\"$cmd\"
6331e6f085baSmrg	    $show "$cmd"
6332e6f085baSmrg	    $run eval "$cmd" || admincmds="$admincmds
6333e6f085baSmrg       $cmd"
633495b296d0Smrg	  done
6335e6f085baSmrg	  IFS="$save_ifs"
633695b296d0Smrg	fi
6337e6f085baSmrg	if test -n "$finish_eval"; then
6338e6f085baSmrg	  # Do the single finish_eval.
6339e6f085baSmrg	  eval cmds=\"$finish_eval\"
6340e6f085baSmrg	  $run eval "$cmds" || admincmds="$admincmds
6341e6f085baSmrg       $cmds"
634239713583Smrg	fi
6343e6f085baSmrg      done
6344e6f085baSmrg    fi
6345e6f085baSmrg
6346e6f085baSmrg    # Exit here if they wanted silent mode.
6347e6f085baSmrg    test "$show" = : && exit $EXIT_SUCCESS
6348e6f085baSmrg
6349e6f085baSmrg    $echo "X----------------------------------------------------------------------" | $Xsed
6350e6f085baSmrg    $echo "Libraries have been installed in:"
6351e6f085baSmrg    for libdir in $libdirs; do
6352e6f085baSmrg      $echo "   $libdir"
635395b296d0Smrg    done
6354e6f085baSmrg    $echo
6355e6f085baSmrg    $echo "If you ever happen to want to link against installed libraries"
6356e6f085baSmrg    $echo "in a given directory, LIBDIR, you must either use libtool, and"
6357e6f085baSmrg    $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
6358e6f085baSmrg    $echo "flag during linking and do at least one of the following:"
6359e6f085baSmrg    if test -n "$shlibpath_var"; then
6360e6f085baSmrg      $echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
6361e6f085baSmrg      $echo "     during execution"
6362e6f085baSmrg    fi
6363e6f085baSmrg    if test -n "$runpath_var"; then
6364e6f085baSmrg      $echo "   - add LIBDIR to the \`$runpath_var' environment variable"
6365e6f085baSmrg      $echo "     during linking"
6366e6f085baSmrg    fi
6367e6f085baSmrg    if test -n "$hardcode_libdir_flag_spec"; then
6368e6f085baSmrg      libdir=LIBDIR
6369e6f085baSmrg      eval flag=\"$hardcode_libdir_flag_spec\"
637095b296d0Smrg
6371e6f085baSmrg      $echo "   - use the \`$flag' linker flag"
6372e6f085baSmrg    fi
6373e6f085baSmrg    if test -n "$admincmds"; then
6374e6f085baSmrg      $echo "   - have your system administrator run these commands:$admincmds"
6375e6f085baSmrg    fi
6376e6f085baSmrg    if test -f /etc/ld.so.conf; then
6377e6f085baSmrg      $echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
6378e6f085baSmrg    fi
6379e6f085baSmrg    $echo
6380e6f085baSmrg    $echo "See any operating system documentation about shared libraries for"
6381e6f085baSmrg    $echo "more information, such as the ld(1) and ld.so(8) manual pages."
6382e6f085baSmrg    $echo "X----------------------------------------------------------------------" | $Xsed
6383e6f085baSmrg    exit $EXIT_SUCCESS
6384e6f085baSmrg    ;;
638595b296d0Smrg
6386e6f085baSmrg  # libtool execute mode
6387e6f085baSmrg  execute)
6388e6f085baSmrg    modename="$modename: execute"
638995b296d0Smrg
6390e6f085baSmrg    # The first argument is the command name.
6391e6f085baSmrg    cmd="$nonopt"
6392e6f085baSmrg    if test -z "$cmd"; then
6393e6f085baSmrg      $echo "$modename: you must specify a COMMAND" 1>&2
6394e6f085baSmrg      $echo "$help"
6395e6f085baSmrg      exit $EXIT_FAILURE
6396e6f085baSmrg    fi
639795b296d0Smrg
6398e6f085baSmrg    # Handle -dlopen flags immediately.
6399e6f085baSmrg    for file in $execute_dlfiles; do
6400e6f085baSmrg      if test ! -f "$file"; then
6401e6f085baSmrg	$echo "$modename: \`$file' is not a file" 1>&2
6402e6f085baSmrg	$echo "$help" 1>&2
6403e6f085baSmrg	exit $EXIT_FAILURE
6404e6f085baSmrg      fi
640539713583Smrg
6406e6f085baSmrg      dir=
6407e6f085baSmrg      case $file in
6408e6f085baSmrg      *.la)
6409e6f085baSmrg	# Check to see that this really is a libtool archive.
6410e6f085baSmrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
6411e6f085baSmrg	else
6412e6f085baSmrg	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
6413e6f085baSmrg	  $echo "$help" 1>&2
6414e6f085baSmrg	  exit $EXIT_FAILURE
6415e6f085baSmrg	fi
641695b296d0Smrg
6417e6f085baSmrg	# Read the libtool library.
6418e6f085baSmrg	dlname=
6419e6f085baSmrg	library_names=
642095b296d0Smrg
6421e6f085baSmrg	# If there is no directory component, then add one.
6422e6f085baSmrg	case $file in
6423e6f085baSmrg	*/* | *\\*) . $file ;;
6424e6f085baSmrg	*) . ./$file ;;
6425e6f085baSmrg	esac
642695b296d0Smrg
6427e6f085baSmrg	# Skip this library if it cannot be dlopened.
6428e6f085baSmrg	if test -z "$dlname"; then
6429e6f085baSmrg	  # Warn if it was a shared library.
6430e6f085baSmrg	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
6431e6f085baSmrg	  continue
6432e6f085baSmrg	fi
643395b296d0Smrg
6434e6f085baSmrg	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6435e6f085baSmrg	test "X$dir" = "X$file" && dir=.
643695b296d0Smrg
6437e6f085baSmrg	if test -f "$dir/$objdir/$dlname"; then
6438e6f085baSmrg	  dir="$dir/$objdir"
6439e6f085baSmrg	else
6440e6f085baSmrg	  if test ! -f "$dir/$dlname"; then
6441e6f085baSmrg	    $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
6442e6f085baSmrg	    exit $EXIT_FAILURE
6443e6f085baSmrg	  fi
6444e6f085baSmrg	fi
6445e6f085baSmrg	;;
644695b296d0Smrg
6447e6f085baSmrg      *.lo)
6448e6f085baSmrg	# Just add the directory containing the .lo file.
6449e6f085baSmrg	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6450e6f085baSmrg	test "X$dir" = "X$file" && dir=.
6451e6f085baSmrg	;;
645295b296d0Smrg
6453e6f085baSmrg      *)
6454e6f085baSmrg	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
6455e6f085baSmrg	continue
6456e6f085baSmrg	;;
6457e6f085baSmrg      esac
645895b296d0Smrg
6459e6f085baSmrg      # Get the absolute pathname.
6460e6f085baSmrg      absdir=`cd "$dir" && pwd`
6461e6f085baSmrg      test -n "$absdir" && dir="$absdir"
646295b296d0Smrg
6463e6f085baSmrg      # Now add the directory to shlibpath_var.
6464e6f085baSmrg      if eval "test -z \"\$$shlibpath_var\""; then
6465e6f085baSmrg	eval "$shlibpath_var=\"\$dir\""
6466e6f085baSmrg      else
6467e6f085baSmrg	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
6468e6f085baSmrg      fi
6469e6f085baSmrg    done
647095b296d0Smrg
6471e6f085baSmrg    # This variable tells wrapper scripts just to set shlibpath_var
6472e6f085baSmrg    # rather than running their programs.
6473e6f085baSmrg    libtool_execute_magic="$magic"
647495b296d0Smrg
6475e6f085baSmrg    # Check if any of the arguments is a wrapper script.
6476e6f085baSmrg    args=
6477e6f085baSmrg    for file
6478e6f085baSmrg    do
6479e6f085baSmrg      case $file in
6480e6f085baSmrg      -*) ;;
6481e6f085baSmrg      *)
6482e6f085baSmrg	# Do a test to see if this is really a libtool program.
6483e6f085baSmrg	if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6484e6f085baSmrg	  # If there is no directory component, then add one.
6485e6f085baSmrg	  case $file in
6486e6f085baSmrg	  */* | *\\*) . $file ;;
6487e6f085baSmrg	  *) . ./$file ;;
6488e6f085baSmrg	  esac
648995b296d0Smrg
6490e6f085baSmrg	  # Transform arg to wrapped name.
6491e6f085baSmrg	  file="$progdir/$program"
6492e6f085baSmrg	fi
6493e6f085baSmrg	;;
6494e6f085baSmrg      esac
6495e6f085baSmrg      # Quote arguments (to preserve shell metacharacters).
6496e6f085baSmrg      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
6497e6f085baSmrg      args="$args \"$file\""
6498e6f085baSmrg    done
649995b296d0Smrg
6500e6f085baSmrg    if test -z "$run"; then
6501e6f085baSmrg      if test -n "$shlibpath_var"; then
6502e6f085baSmrg	# Export the shlibpath_var.
6503e6f085baSmrg	eval "export $shlibpath_var"
6504e6f085baSmrg      fi
6505e6f085baSmrg
6506e6f085baSmrg      # Restore saved environment variables
6507e6f085baSmrg      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
6508e6f085baSmrg      do
6509e6f085baSmrg	eval "if test \"\${save_$lt_var+set}\" = set; then
6510e6f085baSmrg		$lt_var=\$save_$lt_var; export $lt_var
6511e6f085baSmrg	      fi"
6512e6f085baSmrg      done
651395b296d0Smrg
6514e6f085baSmrg      # Now prepare to actually exec the command.
6515e6f085baSmrg      exec_cmd="\$cmd$args"
6516e6f085baSmrg    else
6517e6f085baSmrg      # Display what would be done.
6518e6f085baSmrg      if test -n "$shlibpath_var"; then
6519e6f085baSmrg	eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
6520e6f085baSmrg	$echo "export $shlibpath_var"
6521e6f085baSmrg      fi
6522e6f085baSmrg      $echo "$cmd$args"
6523e6f085baSmrg      exit $EXIT_SUCCESS
6524e6f085baSmrg    fi
6525e6f085baSmrg    ;;
652695b296d0Smrg
6527e6f085baSmrg  # libtool clean and uninstall mode
6528e6f085baSmrg  clean | uninstall)
6529e6f085baSmrg    modename="$modename: $mode"
6530e6f085baSmrg    rm="$nonopt"
653195b296d0Smrg    files=
653295b296d0Smrg    rmforce=
653395b296d0Smrg    exit_status=0
653495b296d0Smrg
653595b296d0Smrg    # This variable tells wrapper scripts just to set variables rather
653695b296d0Smrg    # than running their programs.
653795b296d0Smrg    libtool_install_magic="$magic"
653895b296d0Smrg
653995b296d0Smrg    for arg
654095b296d0Smrg    do
654195b296d0Smrg      case $arg in
6542e6f085baSmrg      -f) rm="$rm $arg"; rmforce=yes ;;
6543e6f085baSmrg      -*) rm="$rm $arg" ;;
654495b296d0Smrg      *) files="$files $arg" ;;
654595b296d0Smrg      esac
654695b296d0Smrg    done
654795b296d0Smrg
6548e6f085baSmrg    if test -z "$rm"; then
6549e6f085baSmrg      $echo "$modename: you must specify an RM program" 1>&2
6550e6f085baSmrg      $echo "$help" 1>&2
6551e6f085baSmrg      exit $EXIT_FAILURE
6552e6f085baSmrg    fi
655395b296d0Smrg
655495b296d0Smrg    rmdirs=
655595b296d0Smrg
655695b296d0Smrg    origobjdir="$objdir"
655795b296d0Smrg    for file in $files; do
6558e6f085baSmrg      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6559e6f085baSmrg      if test "X$dir" = "X$file"; then
6560e6f085baSmrg	dir=.
656195b296d0Smrg	objdir="$origobjdir"
656295b296d0Smrg      else
656395b296d0Smrg	objdir="$dir/$origobjdir"
656495b296d0Smrg      fi
6565e6f085baSmrg      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
656695b296d0Smrg      test "$mode" = uninstall && objdir="$dir"
656795b296d0Smrg
656895b296d0Smrg      # Remember objdir for removal later, being careful to avoid duplicates
656995b296d0Smrg      if test "$mode" = clean; then
657095b296d0Smrg	case " $rmdirs " in
657195b296d0Smrg	  *" $objdir "*) ;;
657295b296d0Smrg	  *) rmdirs="$rmdirs $objdir" ;;
657395b296d0Smrg	esac
657495b296d0Smrg      fi
657595b296d0Smrg
657695b296d0Smrg      # Don't error if the file doesn't exist and rm -f was used.
6577e6f085baSmrg      if (test -L "$file") >/dev/null 2>&1 \
6578e6f085baSmrg	|| (test -h "$file") >/dev/null 2>&1 \
6579e6f085baSmrg	|| test -f "$file"; then
658095b296d0Smrg	:
658195b296d0Smrg      elif test -d "$file"; then
658295b296d0Smrg	exit_status=1
658395b296d0Smrg	continue
658495b296d0Smrg      elif test "$rmforce" = yes; then
658595b296d0Smrg	continue
658695b296d0Smrg      fi
658795b296d0Smrg
658895b296d0Smrg      rmfiles="$file"
658995b296d0Smrg
659095b296d0Smrg      case $name in
659195b296d0Smrg      *.la)
659295b296d0Smrg	# Possibly a libtool archive, so verify it.
6593e6f085baSmrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6594e6f085baSmrg	  . $dir/$name
659595b296d0Smrg
659695b296d0Smrg	  # Delete the libtool libraries and symlinks.
659795b296d0Smrg	  for n in $library_names; do
659895b296d0Smrg	    rmfiles="$rmfiles $objdir/$n"
659995b296d0Smrg	  done
660095b296d0Smrg	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
660195b296d0Smrg
660295b296d0Smrg	  case "$mode" in
660395b296d0Smrg	  clean)
660495b296d0Smrg	    case "  $library_names " in
660595b296d0Smrg	    # "  " in the beginning catches empty $dlname
660695b296d0Smrg	    *" $dlname "*) ;;
660795b296d0Smrg	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
660895b296d0Smrg	    esac
6609e6f085baSmrg	     test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
661095b296d0Smrg	    ;;
661195b296d0Smrg	  uninstall)
661295b296d0Smrg	    if test -n "$library_names"; then
661395b296d0Smrg	      # Do each command in the postuninstall commands.
6614e6f085baSmrg	      cmds=$postuninstall_cmds
6615e6f085baSmrg	      save_ifs="$IFS"; IFS='~'
6616e6f085baSmrg	      for cmd in $cmds; do
6617e6f085baSmrg		IFS="$save_ifs"
6618e6f085baSmrg		eval cmd=\"$cmd\"
6619e6f085baSmrg		$show "$cmd"
6620e6f085baSmrg		$run eval "$cmd"
6621e6f085baSmrg		if test "$?" -ne 0 && test "$rmforce" != yes; then
6622e6f085baSmrg		  exit_status=1
6623e6f085baSmrg		fi
6624e6f085baSmrg	      done
6625e6f085baSmrg	      IFS="$save_ifs"
662695b296d0Smrg	    fi
662795b296d0Smrg
662895b296d0Smrg	    if test -n "$old_library"; then
662995b296d0Smrg	      # Do each command in the old_postuninstall commands.
6630e6f085baSmrg	      cmds=$old_postuninstall_cmds
6631e6f085baSmrg	      save_ifs="$IFS"; IFS='~'
6632e6f085baSmrg	      for cmd in $cmds; do
6633e6f085baSmrg		IFS="$save_ifs"
6634e6f085baSmrg		eval cmd=\"$cmd\"
6635e6f085baSmrg		$show "$cmd"
6636e6f085baSmrg		$run eval "$cmd"
6637e6f085baSmrg		if test "$?" -ne 0 && test "$rmforce" != yes; then
6638e6f085baSmrg		  exit_status=1
6639e6f085baSmrg		fi
6640e6f085baSmrg	      done
6641e6f085baSmrg	      IFS="$save_ifs"
664295b296d0Smrg	    fi
664395b296d0Smrg	    # FIXME: should reinstall the best remaining shared library.
664495b296d0Smrg	    ;;
664595b296d0Smrg	  esac
664695b296d0Smrg	fi
664795b296d0Smrg	;;
664895b296d0Smrg
664995b296d0Smrg      *.lo)
665095b296d0Smrg	# Possibly a libtool object, so verify it.
6651e6f085baSmrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
665295b296d0Smrg
665395b296d0Smrg	  # Read the .lo file
6654e6f085baSmrg	  . $dir/$name
665595b296d0Smrg
665695b296d0Smrg	  # Add PIC object to the list of files to remove.
6657e6f085baSmrg	  if test -n "$pic_object" \
6658e6f085baSmrg	     && test "$pic_object" != none; then
665995b296d0Smrg	    rmfiles="$rmfiles $dir/$pic_object"
666095b296d0Smrg	  fi
666195b296d0Smrg
666295b296d0Smrg	  # Add non-PIC object to the list of files to remove.
6663e6f085baSmrg	  if test -n "$non_pic_object" \
6664e6f085baSmrg	     && test "$non_pic_object" != none; then
666595b296d0Smrg	    rmfiles="$rmfiles $dir/$non_pic_object"
666695b296d0Smrg	  fi
666795b296d0Smrg	fi
666895b296d0Smrg	;;
666995b296d0Smrg
667095b296d0Smrg      *)
667195b296d0Smrg	if test "$mode" = clean ; then
667295b296d0Smrg	  noexename=$name
667395b296d0Smrg	  case $file in
667495b296d0Smrg	  *.exe)
6675e6f085baSmrg	    file=`$echo $file|${SED} 's,.exe$,,'`
6676e6f085baSmrg	    noexename=`$echo $name|${SED} 's,.exe$,,'`
667795b296d0Smrg	    # $file with .exe has already been added to rmfiles,
667895b296d0Smrg	    # add $file without .exe
667995b296d0Smrg	    rmfiles="$rmfiles $file"
668095b296d0Smrg	    ;;
668195b296d0Smrg	  esac
668295b296d0Smrg	  # Do a test to see if this is a libtool program.
6683e6f085baSmrg	  if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6684e6f085baSmrg	    relink_command=
6685e6f085baSmrg	    . $dir/$noexename
668695b296d0Smrg
668795b296d0Smrg	    # note $name still contains .exe if it was in $file originally
668895b296d0Smrg	    # as does the version of $file that was added into $rmfiles
668995b296d0Smrg	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
669095b296d0Smrg	    if test "$fast_install" = yes && test -n "$relink_command"; then
669195b296d0Smrg	      rmfiles="$rmfiles $objdir/lt-$name"
669295b296d0Smrg	    fi
669395b296d0Smrg	    if test "X$noexename" != "X$name" ; then
669495b296d0Smrg	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
669595b296d0Smrg	    fi
669695b296d0Smrg	  fi
669795b296d0Smrg	fi
669895b296d0Smrg	;;
669995b296d0Smrg      esac
6700e6f085baSmrg      $show "$rm $rmfiles"
6701e6f085baSmrg      $run $rm $rmfiles || exit_status=1
670295b296d0Smrg    done
670395b296d0Smrg    objdir="$origobjdir"
670495b296d0Smrg
670595b296d0Smrg    # Try to remove the ${objdir}s in the directories where we deleted files
670695b296d0Smrg    for dir in $rmdirs; do
670795b296d0Smrg      if test -d "$dir"; then
6708e6f085baSmrg	$show "rmdir $dir"
6709e6f085baSmrg	$run rmdir $dir >/dev/null 2>&1
671095b296d0Smrg      fi
671195b296d0Smrg    done
671295b296d0Smrg
671395b296d0Smrg    exit $exit_status
6714e6f085baSmrg    ;;
671595b296d0Smrg
6716e6f085baSmrg  "")
6717e6f085baSmrg    $echo "$modename: you must specify a MODE" 1>&2
6718e6f085baSmrg    $echo "$generic_help" 1>&2
6719e6f085baSmrg    exit $EXIT_FAILURE
6720e6f085baSmrg    ;;
6721e6f085baSmrg  esac
672239713583Smrg
6723e6f085baSmrg  if test -z "$exec_cmd"; then
6724e6f085baSmrg    $echo "$modename: invalid operation mode \`$mode'" 1>&2
6725e6f085baSmrg    $echo "$generic_help" 1>&2
6726e6f085baSmrg    exit $EXIT_FAILURE
6727e6f085baSmrg  fi
6728e6f085baSmrgfi # test -z "$show_help"
672995b296d0Smrg
673095b296d0Smrgif test -n "$exec_cmd"; then
6731e6f085baSmrg  eval exec $exec_cmd
673295b296d0Smrg  exit $EXIT_FAILURE
673395b296d0Smrgfi
673495b296d0Smrg
6735e6f085baSmrg# We need to display help for each of the modes.
6736e6f085baSmrgcase $mode in
6737e6f085baSmrg"") $echo \
6738e6f085baSmrg"Usage: $modename [OPTION]... [MODE-ARG]...
6739e6f085baSmrg
6740e6f085baSmrgProvide generalized library-building support services.
6741e6f085baSmrg
6742e6f085baSmrg    --config          show all configuration variables
6743e6f085baSmrg    --debug           enable verbose shell tracing
6744e6f085baSmrg-n, --dry-run         display commands without modifying any files
6745e6f085baSmrg    --features        display basic configuration information and exit
6746e6f085baSmrg    --finish          same as \`--mode=finish'
6747e6f085baSmrg    --help            display this help message and exit
6748e6f085baSmrg    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
6749e6f085baSmrg    --quiet           same as \`--silent'
6750e6f085baSmrg    --silent          don't print informational messages
6751e6f085baSmrg    --tag=TAG         use configuration variables from tag TAG
6752e6f085baSmrg    --version         print version information
6753e6f085baSmrg
6754e6f085baSmrgMODE must be one of the following:
6755e6f085baSmrg
6756e6f085baSmrg      clean           remove files from the build directory
6757e6f085baSmrg      compile         compile a source file into a libtool object
6758e6f085baSmrg      execute         automatically set library path, then run a program
6759e6f085baSmrg      finish          complete the installation of libtool libraries
6760e6f085baSmrg      install         install libraries or executables
6761e6f085baSmrg      link            create a library or an executable
6762e6f085baSmrg      uninstall       remove libraries from an installed directory
6763e6f085baSmrg
6764e6f085baSmrgMODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
6765e6f085baSmrga more detailed description of MODE.
6766e6f085baSmrg
6767e6f085baSmrgReport bugs to <bug-libtool@gnu.org>."
6768e6f085baSmrg  exit $EXIT_SUCCESS
6769e6f085baSmrg  ;;
6770e6f085baSmrg
6771e6f085baSmrgclean)
6772e6f085baSmrg  $echo \
6773e6f085baSmrg"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
6774e6f085baSmrg
6775e6f085baSmrgRemove files from the build directory.
6776e6f085baSmrg
6777e6f085baSmrgRM is the name of the program to use to delete files associated with each FILE
6778e6f085baSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
6779e6f085baSmrgto RM.
6780e6f085baSmrg
6781e6f085baSmrgIf FILE is a libtool library, object or program, all the files associated
6782e6f085baSmrgwith it are deleted. Otherwise, only FILE itself is deleted using RM."
6783e6f085baSmrg  ;;
6784e6f085baSmrg
6785e6f085baSmrgcompile)
6786e6f085baSmrg  $echo \
6787e6f085baSmrg"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
6788e6f085baSmrg
6789e6f085baSmrgCompile a source file into a libtool library object.
6790e6f085baSmrg
6791e6f085baSmrgThis mode accepts the following additional options:
6792e6f085baSmrg
6793e6f085baSmrg  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
6794e6f085baSmrg  -prefer-pic       try to building PIC objects only
6795e6f085baSmrg  -prefer-non-pic   try to building non-PIC objects only
6796e6f085baSmrg  -static           always build a \`.o' file suitable for static linking
6797e6f085baSmrg
6798e6f085baSmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
6799e6f085baSmrgfrom the given SOURCEFILE.
6800e6f085baSmrg
6801e6f085baSmrgThe output file name is determined by removing the directory component from
6802e6f085baSmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the
6803e6f085baSmrglibrary object suffix, \`.lo'."
6804e6f085baSmrg  ;;
6805e6f085baSmrg
6806e6f085baSmrgexecute)
6807e6f085baSmrg  $echo \
6808e6f085baSmrg"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
6809e6f085baSmrg
6810e6f085baSmrgAutomatically set library path, then run a program.
6811e6f085baSmrg
6812e6f085baSmrgThis mode accepts the following additional options:
6813e6f085baSmrg
6814e6f085baSmrg  -dlopen FILE      add the directory containing FILE to the library path
6815e6f085baSmrg
6816e6f085baSmrgThis mode sets the library path environment variable according to \`-dlopen'
6817e6f085baSmrgflags.
6818e6f085baSmrg
6819e6f085baSmrgIf any of the ARGS are libtool executable wrappers, then they are translated
6820e6f085baSmrginto their corresponding uninstalled binary, and any of their required library
6821e6f085baSmrgdirectories are added to the library path.
6822e6f085baSmrg
6823e6f085baSmrgThen, COMMAND is executed, with ARGS as arguments."
6824e6f085baSmrg  ;;
6825e6f085baSmrg
6826e6f085baSmrgfinish)
6827e6f085baSmrg  $echo \
6828e6f085baSmrg"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
6829e6f085baSmrg
6830e6f085baSmrgComplete the installation of libtool libraries.
6831e6f085baSmrg
6832e6f085baSmrgEach LIBDIR is a directory that contains libtool libraries.
6833e6f085baSmrg
6834e6f085baSmrgThe commands that this mode executes may require superuser privileges.  Use
6835e6f085baSmrgthe \`--dry-run' option if you just want to see what would be executed."
6836e6f085baSmrg  ;;
6837e6f085baSmrg
6838e6f085baSmrginstall)
6839e6f085baSmrg  $echo \
6840e6f085baSmrg"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
6841e6f085baSmrg
6842e6f085baSmrgInstall executables or libraries.
6843e6f085baSmrg
6844e6f085baSmrgINSTALL-COMMAND is the installation command.  The first component should be
6845e6f085baSmrgeither the \`install' or \`cp' program.
6846e6f085baSmrg
6847e6f085baSmrgThe rest of the components are interpreted as arguments to that command (only
6848e6f085baSmrgBSD-compatible install options are recognized)."
6849e6f085baSmrg  ;;
6850e6f085baSmrg
6851e6f085baSmrglink)
6852e6f085baSmrg  $echo \
6853e6f085baSmrg"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
6854e6f085baSmrg
6855e6f085baSmrgLink object files or libraries together to form another library, or to
6856e6f085baSmrgcreate an executable program.
685795b296d0Smrg
6858e6f085baSmrgLINK-COMMAND is a command using the C compiler that you would use to create
6859e6f085baSmrga program from several object files.
6860e6f085baSmrg
6861e6f085baSmrgThe following components of LINK-COMMAND are treated specially:
6862e6f085baSmrg
6863e6f085baSmrg  -all-static       do not do any dynamic linking at all
6864e6f085baSmrg  -avoid-version    do not add a version suffix if possible
6865e6f085baSmrg  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
6866e6f085baSmrg  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
6867e6f085baSmrg  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
6868e6f085baSmrg  -export-symbols SYMFILE
6869e6f085baSmrg                    try to export only the symbols listed in SYMFILE
6870e6f085baSmrg  -export-symbols-regex REGEX
6871e6f085baSmrg                    try to export only the symbols matching REGEX
6872e6f085baSmrg  -LLIBDIR          search LIBDIR for required installed libraries
6873e6f085baSmrg  -lNAME            OUTPUT-FILE requires the installed library libNAME
6874e6f085baSmrg  -module           build a library that can dlopened
6875e6f085baSmrg  -no-fast-install  disable the fast-install mode
6876e6f085baSmrg  -no-install       link a not-installable executable
6877e6f085baSmrg  -no-undefined     declare that a library does not refer to external symbols
6878e6f085baSmrg  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
6879e6f085baSmrg  -objectlist FILE  Use a list of object files found in FILE to specify objects
6880e6f085baSmrg  -precious-files-regex REGEX
6881e6f085baSmrg                    don't remove output files matching REGEX
6882e6f085baSmrg  -release RELEASE  specify package release information
6883e6f085baSmrg  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
6884e6f085baSmrg  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
6885e6f085baSmrg  -static           do not do any dynamic linking of uninstalled libtool libraries
6886e6f085baSmrg  -static-libtool-libs
6887e6f085baSmrg                    do not do any dynamic linking of libtool libraries
6888e6f085baSmrg  -version-info CURRENT[:REVISION[:AGE]]
6889e6f085baSmrg                    specify library version info [each variable defaults to 0]
6890e6f085baSmrg
6891e6f085baSmrgAll other options (arguments beginning with \`-') are ignored.
6892e6f085baSmrg
6893e6f085baSmrgEvery other argument is treated as a filename.  Files ending in \`.la' are
6894e6f085baSmrgtreated as uninstalled libtool libraries, other files are standard or library
6895e6f085baSmrgobject files.
6896e6f085baSmrg
6897e6f085baSmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
6898e6f085baSmrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is
6899e6f085baSmrgrequired, except when creating a convenience library.
6900e6f085baSmrg
6901e6f085baSmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
6902e6f085baSmrgusing \`ar' and \`ranlib', or on Windows using \`lib'.
6903e6f085baSmrg
6904e6f085baSmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
6905e6f085baSmrgis created, otherwise an executable program is created."
6906e6f085baSmrg  ;;
6907e6f085baSmrg
6908e6f085baSmrguninstall)
6909e6f085baSmrg  $echo \
6910e6f085baSmrg"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
6911e6f085baSmrg
6912e6f085baSmrgRemove libraries from an installation directory.
6913e6f085baSmrg
6914e6f085baSmrgRM is the name of the program to use to delete files associated with each FILE
6915e6f085baSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
6916e6f085baSmrgto RM.
6917e6f085baSmrg
6918e6f085baSmrgIf FILE is a libtool library, all the files associated with it are deleted.
6919e6f085baSmrgOtherwise, only FILE itself is deleted using RM."
6920e6f085baSmrg  ;;
6921e6f085baSmrg
6922e6f085baSmrg*)
6923e6f085baSmrg  $echo "$modename: invalid operation mode \`$mode'" 1>&2
6924e6f085baSmrg  $echo "$help" 1>&2
6925e6f085baSmrg  exit $EXIT_FAILURE
6926e6f085baSmrg  ;;
6927e6f085baSmrgesac
6928e6f085baSmrg
6929e6f085baSmrg$echo
6930e6f085baSmrg$echo "Try \`$modename --help' for more information about other modes."
6931e6f085baSmrg
6932e6f085baSmrgexit $?
693395b296d0Smrg
693495b296d0Smrg# The TAGs below are defined such that we never get into a situation
693595b296d0Smrg# in which we disable both kinds of libraries.  Given conflicting
693695b296d0Smrg# choices, we go for a static library, that is the most portable,
693795b296d0Smrg# since we can't tell whether shared libraries were disabled because
693895b296d0Smrg# the user asked for that or because the platform doesn't support
693995b296d0Smrg# them.  This is particularly important on AIX, because we don't
694095b296d0Smrg# support having both static and shared libraries enabled at the same
694195b296d0Smrg# time on that platform, so we default to a shared-only configuration.
694295b296d0Smrg# If a disable-shared tag is given, we'll fallback to a static-only
694395b296d0Smrg# configuration.  But we'll never go from static-only to shared-only.
694495b296d0Smrg
694595b296d0Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
6946e6f085baSmrgdisable_libs=shared
694795b296d0Smrg# ### END LIBTOOL TAG CONFIG: disable-shared
694895b296d0Smrg
694995b296d0Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static
6950e6f085baSmrgdisable_libs=static
695195b296d0Smrg# ### END LIBTOOL TAG CONFIG: disable-static
695295b296d0Smrg
695395b296d0Smrg# Local Variables:
695495b296d0Smrg# mode:shell-script
695595b296d0Smrg# sh-indentation:2
695695b296d0Smrg# End:
6957