ltmain.sh revision ef6fb4a5
1ef6fb4a5Smrg# ltmain.sh - Provide generalized library-building support services.
2ef6fb4a5Smrg# NOTE: Changing this file will not affect anything until you rerun configure.
3ef6fb4a5Smrg#
4ef6fb4a5Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
5ef6fb4a5Smrg# 2007, 2008  Free Software Foundation, Inc.
6ef6fb4a5Smrg# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
7ef6fb4a5Smrg#
8ef6fb4a5Smrg# This program is free software; you can redistribute it and/or modify
9301ea0f4Smrg# it under the terms of the GNU General Public License as published by
10301ea0f4Smrg# the Free Software Foundation; either version 2 of the License, or
11301ea0f4Smrg# (at your option) any later version.
12301ea0f4Smrg#
13ef6fb4a5Smrg# This program is distributed in the hope that it will be useful, but
14301ea0f4Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
15301ea0f4Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16301ea0f4Smrg# General Public License for more details.
17301ea0f4Smrg#
18301ea0f4Smrg# You should have received a copy of the GNU General Public License
19ef6fb4a5Smrg# along with this program; if not, write to the Free Software
20ef6fb4a5Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21301ea0f4Smrg#
22ef6fb4a5Smrg# As a special exception to the GNU General Public License, if you
23ef6fb4a5Smrg# distribute this file as part of a program that contains a
24ef6fb4a5Smrg# configuration script generated by Autoconf, you may include it under
25ef6fb4a5Smrg# the same distribution terms that you use for the rest of that program.
26ef6fb4a5Smrg
27ef6fb4a5Smrgbasename="s,^.*/,,g"
28ef6fb4a5Smrg
29ef6fb4a5Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
30ef6fb4a5Smrg# is ksh but when the shell is invoked as "sh" and the current value of
31ef6fb4a5Smrg# the _XPG environment variable is not equal to 1 (one), the special
32ef6fb4a5Smrg# positional parameter $0, within a function call, is the name of the
33ef6fb4a5Smrg# function.
34ef6fb4a5Smrgprogpath="$0"
35ef6fb4a5Smrg
36ef6fb4a5Smrg# The name of this program:
37ef6fb4a5Smrgprogname=`echo "$progpath" | $SED $basename`
38ef6fb4a5Smrgmodename="$progname"
39ef6fb4a5Smrg
40ef6fb4a5Smrg# Global variables:
41ef6fb4a5SmrgEXIT_SUCCESS=0
42ef6fb4a5SmrgEXIT_FAILURE=1
430cc67336Smrg
440cc67336SmrgPROGRAM=ltmain.sh
450cc67336SmrgPACKAGE=libtool
46ef6fb4a5SmrgVERSION=1.5.26
47ef6fb4a5SmrgTIMESTAMP=" (1.1220.2.493 2008/02/01 16:58:18)"
480cc67336Smrg
49ef6fb4a5Smrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
500cc67336Smrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
510cc67336Smrg  emulate sh
520cc67336Smrg  NULLCMD=:
530cc67336Smrg  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
540cc67336Smrg  # is contrary to our usage.  Disable this feature.
550cc67336Smrg  alias -g '${1+"$@"}'='"$@"'
560cc67336Smrg  setopt NO_GLOB_SUBST
570cc67336Smrgelse
580cc67336Smrg  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
590cc67336Smrgfi
600cc67336SmrgBIN_SH=xpg4; export BIN_SH # for Tru64
610cc67336SmrgDUALCASE=1; export DUALCASE # for MKS sh
620cc67336Smrg
63ef6fb4a5Smrg# Check that we have a working $echo.
64ef6fb4a5Smrgif test "X$1" = X--no-reexec; then
65ef6fb4a5Smrg  # Discard the --no-reexec flag, and continue.
66ef6fb4a5Smrg  shift
67ef6fb4a5Smrgelif test "X$1" = X--fallback-echo; then
68ef6fb4a5Smrg  # Avoid inline document here, it may be left over
69ef6fb4a5Smrg  :
70ef6fb4a5Smrgelif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
71ef6fb4a5Smrg  # Yippee, $echo works!
72ef6fb4a5Smrg  :
73ef6fb4a5Smrgelse
74ef6fb4a5Smrg  # Restart under the correct shell, and then maybe $echo will work.
75ef6fb4a5Smrg  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
76ef6fb4a5Smrgfi
77ef6fb4a5Smrg
78ef6fb4a5Smrgif test "X$1" = X--fallback-echo; then
79ef6fb4a5Smrg  # used as fallback echo
80ef6fb4a5Smrg  shift
81ef6fb4a5Smrg  cat <<EOF
82ef6fb4a5Smrg$*
83ef6fb4a5SmrgEOF
84ef6fb4a5Smrg  exit $EXIT_SUCCESS
85ef6fb4a5Smrgfi
86ef6fb4a5Smrg
87ef6fb4a5Smrgdefault_mode=
88ef6fb4a5Smrghelp="Try \`$progname --help' for more information."
89ef6fb4a5Smrgmagic="%%%MAGIC variable%%%"
90ef6fb4a5Smrgmkdir="mkdir"
91ef6fb4a5Smrgmv="mv -f"
92ef6fb4a5Smrgrm="rm -f"
93ef6fb4a5Smrg
94ef6fb4a5Smrg# Sed substitution that helps us do robust quoting.  It backslashifies
95ef6fb4a5Smrg# metacharacters that are still active within double-quoted strings.
96ef6fb4a5SmrgXsed="${SED}"' -e 1s/^X//'
97ef6fb4a5Smrgsed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
98ef6fb4a5Smrg# test EBCDIC or ASCII
99ef6fb4a5Smrgcase `echo X|tr X '\101'` in
100ef6fb4a5Smrg A) # ASCII based system
101ef6fb4a5Smrg    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
102ef6fb4a5Smrg  SP2NL='tr \040 \012'
103ef6fb4a5Smrg  NL2SP='tr \015\012 \040\040'
104ef6fb4a5Smrg  ;;
105ef6fb4a5Smrg *) # EBCDIC based system
106ef6fb4a5Smrg  SP2NL='tr \100 \n'
107ef6fb4a5Smrg  NL2SP='tr \r\n \100\100'
108ef6fb4a5Smrg  ;;
109ef6fb4a5Smrgesac
110ef6fb4a5Smrg
111ef6fb4a5Smrg# NLS nuisances.
1120cc67336Smrg# Only set LANG and LC_ALL to C if already set.
1130cc67336Smrg# These must not be set unconditionally because not all systems understand
1140cc67336Smrg# e.g. LANG=C (notably SCO).
115ef6fb4a5Smrg# We save the old values to restore during execute mode.
116ef6fb4a5Smrglt_env=
1170cc67336Smrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
1180cc67336Smrgdo
1190cc67336Smrg  eval "if test \"\${$lt_var+set}\" = set; then
120ef6fb4a5Smrg	  save_$lt_var=\$$lt_var
121ef6fb4a5Smrg	  lt_env=\"$lt_var=\$$lt_var \$lt_env\"
122ef6fb4a5Smrg	  $lt_var=C
1230cc67336Smrg	  export $lt_var
1240cc67336Smrg	fi"
1250cc67336Smrgdone
1260cc67336Smrg
127ef6fb4a5Smrgif test -n "$lt_env"; then
128ef6fb4a5Smrg  lt_env="env $lt_env"
129ef6fb4a5Smrgfi
1300cc67336Smrg
1310cc67336Smrg# Make sure IFS has a sensible default
1320cc67336Smrglt_nl='
1330cc67336Smrg'
1340cc67336SmrgIFS=" 	$lt_nl"
1350cc67336Smrg
136ef6fb4a5Smrgif test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
137ef6fb4a5Smrg  $echo "$modename: not configured to build any kind of library" 1>&2
138ef6fb4a5Smrg  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
139ef6fb4a5Smrg  exit $EXIT_FAILURE
140ef6fb4a5Smrgfi
1410cc67336Smrg
142ef6fb4a5Smrg# Global variables.
143ef6fb4a5Smrgmode=$default_mode
144ef6fb4a5Smrgnonopt=
145ef6fb4a5Smrgprev=
146ef6fb4a5Smrgprevopt=
147ef6fb4a5Smrgrun=
148ef6fb4a5Smrgshow="$echo"
149ef6fb4a5Smrgshow_help=
150ef6fb4a5Smrgexecute_dlfiles=
151ef6fb4a5Smrgduplicate_deps=no
152ef6fb4a5Smrgpreserve_args=
153ef6fb4a5Smrglo2o="s/\\.lo\$/.${objext}/"
154ef6fb4a5Smrgo2lo="s/\\.${objext}\$/.lo/"
155ef6fb4a5Smrgextracted_archives=
156ef6fb4a5Smrgextracted_serial=0
157301ea0f4Smrg
158ef6fb4a5Smrg#####################################
159ef6fb4a5Smrg# Shell function definitions:
160ef6fb4a5Smrg# This seems to be the best place for them
161301ea0f4Smrg
162301ea0f4Smrg# func_mktempdir [string]
163301ea0f4Smrg# Make a temporary directory that won't clash with other running
164301ea0f4Smrg# libtool processes, and avoids race conditions if possible.  If
165301ea0f4Smrg# given, STRING is the basename for that directory.
166301ea0f4Smrgfunc_mktempdir ()
167301ea0f4Smrg{
168301ea0f4Smrg    my_template="${TMPDIR-/tmp}/${1-$progname}"
169301ea0f4Smrg
170ef6fb4a5Smrg    if test "$run" = ":"; then
171301ea0f4Smrg      # Return a directory name, but don't create it in dry-run mode
172301ea0f4Smrg      my_tmpdir="${my_template}-$$"
173301ea0f4Smrg    else
174301ea0f4Smrg
175301ea0f4Smrg      # If mktemp works, use that first and foremost
176301ea0f4Smrg      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
177301ea0f4Smrg
178301ea0f4Smrg      if test ! -d "$my_tmpdir"; then
179ef6fb4a5Smrg	# Failing that, at least try and use $RANDOM to avoid a race
180ef6fb4a5Smrg	my_tmpdir="${my_template}-${RANDOM-0}$$"
181301ea0f4Smrg
182ef6fb4a5Smrg	save_mktempdir_umask=`umask`
183ef6fb4a5Smrg	umask 0077
184ef6fb4a5Smrg	$mkdir "$my_tmpdir"
185ef6fb4a5Smrg	umask $save_mktempdir_umask
186301ea0f4Smrg      fi
187301ea0f4Smrg
188301ea0f4Smrg      # If we're not in dry-run mode, bomb out on failure
189ef6fb4a5Smrg      test -d "$my_tmpdir" || {
190ef6fb4a5Smrg        $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
191ef6fb4a5Smrg	exit $EXIT_FAILURE
192ef6fb4a5Smrg      }
193301ea0f4Smrg    fi
194301ea0f4Smrg
195ef6fb4a5Smrg    $echo "X$my_tmpdir" | $Xsed
196301ea0f4Smrg}
197301ea0f4Smrg
198301ea0f4Smrg
199ef6fb4a5Smrg# func_win32_libid arg
200ef6fb4a5Smrg# return the library type of file 'arg'
201ef6fb4a5Smrg#
202ef6fb4a5Smrg# Need a lot of goo to handle *both* DLLs and import libs
203ef6fb4a5Smrg# Has to be a shell function in order to 'eat' the argument
204ef6fb4a5Smrg# that is supplied when $file_magic_command is called.
205ef6fb4a5Smrgfunc_win32_libid ()
206301ea0f4Smrg{
207ef6fb4a5Smrg  win32_libid_type="unknown"
208ef6fb4a5Smrg  win32_fileres=`file -L $1 2>/dev/null`
209ef6fb4a5Smrg  case $win32_fileres in
210ef6fb4a5Smrg  *ar\ archive\ import\ library*) # definitely import
211ef6fb4a5Smrg    win32_libid_type="x86 archive import"
212ef6fb4a5Smrg    ;;
213ef6fb4a5Smrg  *ar\ archive*) # could be an import, or static
214ef6fb4a5Smrg    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
215ef6fb4a5Smrg      $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
216ef6fb4a5Smrg      win32_nmres=`eval $NM -f posix -A $1 | \
217ef6fb4a5Smrg	$SED -n -e '1,100{
218ef6fb4a5Smrg		/ I /{
219ef6fb4a5Smrg			s,.*,import,
220ef6fb4a5Smrg			p
221ef6fb4a5Smrg			q
222ef6fb4a5Smrg			}
223ef6fb4a5Smrg		}'`
224ef6fb4a5Smrg      case $win32_nmres in
225ef6fb4a5Smrg      import*)  win32_libid_type="x86 archive import";;
226ef6fb4a5Smrg      *)        win32_libid_type="x86 archive static";;
227ef6fb4a5Smrg      esac
228ef6fb4a5Smrg    fi
229ef6fb4a5Smrg    ;;
230ef6fb4a5Smrg  *DLL*)
231ef6fb4a5Smrg    win32_libid_type="x86 DLL"
232ef6fb4a5Smrg    ;;
233ef6fb4a5Smrg  *executable*) # but shell scripts are "executable" too...
234ef6fb4a5Smrg    case $win32_fileres in
235ef6fb4a5Smrg    *MS\ Windows\ PE\ Intel*)
236ef6fb4a5Smrg      win32_libid_type="x86 DLL"
237ef6fb4a5Smrg      ;;
238301ea0f4Smrg    esac
239ef6fb4a5Smrg    ;;
240ef6fb4a5Smrg  esac
241ef6fb4a5Smrg  $echo $win32_libid_type
242301ea0f4Smrg}
243301ea0f4Smrg
244301ea0f4Smrg
245ef6fb4a5Smrg# func_infer_tag arg
246ef6fb4a5Smrg# Infer tagged configuration to use if any are available and
247ef6fb4a5Smrg# if one wasn't chosen via the "--tag" command line option.
248ef6fb4a5Smrg# Only attempt this if the compiler in the base compile
249ef6fb4a5Smrg# command doesn't match the default compiler.
250ef6fb4a5Smrg# arg is usually of the form 'gcc ...'
251ef6fb4a5Smrgfunc_infer_tag ()
252301ea0f4Smrg{
253ef6fb4a5Smrg    if test -n "$available_tags" && test -z "$tagname"; then
254ef6fb4a5Smrg      CC_quoted=
255ef6fb4a5Smrg      for arg in $CC; do
256ef6fb4a5Smrg	case $arg in
257ef6fb4a5Smrg	  *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
258ef6fb4a5Smrg	  arg="\"$arg\""
259ef6fb4a5Smrg	  ;;
260ef6fb4a5Smrg	esac
261ef6fb4a5Smrg	CC_quoted="$CC_quoted $arg"
262ef6fb4a5Smrg      done
263ef6fb4a5Smrg      case $@ in
264ef6fb4a5Smrg      # Blanks in the command may have been stripped by the calling shell,
265ef6fb4a5Smrg      # but not from the CC environment variable when configure was run.
266ef6fb4a5Smrg      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
267ef6fb4a5Smrg      # Blanks at the start of $base_compile will cause this to fail
268ef6fb4a5Smrg      # if we don't check for them as well.
269301ea0f4Smrg      *)
270ef6fb4a5Smrg	for z in $available_tags; do
271ef6fb4a5Smrg	  if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
272ef6fb4a5Smrg	    # Evaluate the configuration.
273ef6fb4a5Smrg	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
274ef6fb4a5Smrg	    CC_quoted=
275ef6fb4a5Smrg	    for arg in $CC; do
276ef6fb4a5Smrg	    # Double-quote args containing other shell metacharacters.
277ef6fb4a5Smrg	    case $arg in
278ef6fb4a5Smrg	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
279ef6fb4a5Smrg	      arg="\"$arg\""
280ef6fb4a5Smrg	      ;;
281ef6fb4a5Smrg	    esac
282ef6fb4a5Smrg	    CC_quoted="$CC_quoted $arg"
283ef6fb4a5Smrg	  done
284ef6fb4a5Smrg	    case "$@ " in
285ef6fb4a5Smrg	      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
286ef6fb4a5Smrg	      # The compiler in the base compile command matches
287ef6fb4a5Smrg	      # the one in the tagged configuration.
288ef6fb4a5Smrg	      # Assume this is the tagged configuration we want.
289ef6fb4a5Smrg	      tagname=$z
290ef6fb4a5Smrg	      break
291ef6fb4a5Smrg	      ;;
292ef6fb4a5Smrg	    esac
293ef6fb4a5Smrg	  fi
294ef6fb4a5Smrg	done
295ef6fb4a5Smrg	# If $tagname still isn't set, then no tagged configuration
296ef6fb4a5Smrg	# was found and let the user know that the "--tag" command
297ef6fb4a5Smrg	# line option must be used.
298ef6fb4a5Smrg	if test -z "$tagname"; then
299ef6fb4a5Smrg	  $echo "$modename: unable to infer tagged configuration"
300ef6fb4a5Smrg	  $echo "$modename: specify a tag with \`--tag'" 1>&2
301ef6fb4a5Smrg	  exit $EXIT_FAILURE
302ef6fb4a5Smrg#        else
303ef6fb4a5Smrg#          $echo "$modename: using $tagname tagged configuration"
304ef6fb4a5Smrg	fi
305ef6fb4a5Smrg	;;
306ef6fb4a5Smrg      esac
307ef6fb4a5Smrg    fi
308301ea0f4Smrg}
309301ea0f4Smrg
310301ea0f4Smrg
311ef6fb4a5Smrg# func_extract_an_archive dir oldlib
312ef6fb4a5Smrgfunc_extract_an_archive ()
313301ea0f4Smrg{
314ef6fb4a5Smrg    f_ex_an_ar_dir="$1"; shift
315ef6fb4a5Smrg    f_ex_an_ar_oldlib="$1"
3160cc67336Smrg
317ef6fb4a5Smrg    $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
318ef6fb4a5Smrg    $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
319ef6fb4a5Smrg    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
320ef6fb4a5Smrg     :
321ef6fb4a5Smrg    else
322ef6fb4a5Smrg      $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
323ef6fb4a5Smrg      exit $EXIT_FAILURE
324301ea0f4Smrg    fi
325301ea0f4Smrg}
326301ea0f4Smrg
327ef6fb4a5Smrg# func_extract_archives gentop oldlib ...
328ef6fb4a5Smrgfunc_extract_archives ()
329301ea0f4Smrg{
330ef6fb4a5Smrg    my_gentop="$1"; shift
331ef6fb4a5Smrg    my_oldlibs=${1+"$@"}
332ef6fb4a5Smrg    my_oldobjs=""
333ef6fb4a5Smrg    my_xlib=""
334ef6fb4a5Smrg    my_xabs=""
335ef6fb4a5Smrg    my_xdir=""
336ef6fb4a5Smrg    my_status=""
337ef6fb4a5Smrg
338ef6fb4a5Smrg    $show "${rm}r $my_gentop"
339ef6fb4a5Smrg    $run ${rm}r "$my_gentop"
340ef6fb4a5Smrg    $show "$mkdir $my_gentop"
341ef6fb4a5Smrg    $run $mkdir "$my_gentop"
342ef6fb4a5Smrg    my_status=$?
343ef6fb4a5Smrg    if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
344ef6fb4a5Smrg      exit $my_status
3450cc67336Smrg    fi
346301ea0f4Smrg
347ef6fb4a5Smrg    for my_xlib in $my_oldlibs; do
348ef6fb4a5Smrg      # Extract the objects.
349ef6fb4a5Smrg      case $my_xlib in
350ef6fb4a5Smrg	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
351ef6fb4a5Smrg	*) my_xabs=`pwd`"/$my_xlib" ;;
352ef6fb4a5Smrg      esac
353ef6fb4a5Smrg      my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
354ef6fb4a5Smrg      my_xlib_u=$my_xlib
355ef6fb4a5Smrg      while :; do
356ef6fb4a5Smrg        case " $extracted_archives " in
357ef6fb4a5Smrg	*" $my_xlib_u "*)
358ef6fb4a5Smrg	  extracted_serial=`expr $extracted_serial + 1`
359ef6fb4a5Smrg	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
360ef6fb4a5Smrg	*) break ;;
361ef6fb4a5Smrg	esac
362ef6fb4a5Smrg      done
363ef6fb4a5Smrg      extracted_archives="$extracted_archives $my_xlib_u"
364ef6fb4a5Smrg      my_xdir="$my_gentop/$my_xlib_u"
365301ea0f4Smrg
366ef6fb4a5Smrg      $show "${rm}r $my_xdir"
367ef6fb4a5Smrg      $run ${rm}r "$my_xdir"
368ef6fb4a5Smrg      $show "$mkdir $my_xdir"
369ef6fb4a5Smrg      $run $mkdir "$my_xdir"
370ef6fb4a5Smrg      exit_status=$?
371ef6fb4a5Smrg      if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
372ef6fb4a5Smrg	exit $exit_status
373ef6fb4a5Smrg      fi
374ef6fb4a5Smrg      case $host in
375ef6fb4a5Smrg      *-darwin*)
376ef6fb4a5Smrg	$show "Extracting $my_xabs"
377ef6fb4a5Smrg	# Do not bother doing anything if just a dry run
378ef6fb4a5Smrg	if test -z "$run"; then
379ef6fb4a5Smrg	  darwin_orig_dir=`pwd`
380ef6fb4a5Smrg	  cd $my_xdir || exit $?
381ef6fb4a5Smrg	  darwin_archive=$my_xabs
382ef6fb4a5Smrg	  darwin_curdir=`pwd`
383ef6fb4a5Smrg	  darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
384ef6fb4a5Smrg	  darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
385ef6fb4a5Smrg	  if test -n "$darwin_arches"; then 
386ef6fb4a5Smrg	    darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
387ef6fb4a5Smrg	    darwin_arch=
388ef6fb4a5Smrg	    $show "$darwin_base_archive has multiple architectures $darwin_arches"
389ef6fb4a5Smrg	    for darwin_arch in  $darwin_arches ; do
390ef6fb4a5Smrg	      mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
391ef6fb4a5Smrg	      lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
392ef6fb4a5Smrg	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
393ef6fb4a5Smrg	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
394ef6fb4a5Smrg	      cd "$darwin_curdir"
395ef6fb4a5Smrg	      $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
396ef6fb4a5Smrg	    done # $darwin_arches
397ef6fb4a5Smrg      ## Okay now we have a bunch of thin objects, gotta fatten them up :)
398ef6fb4a5Smrg	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
399ef6fb4a5Smrg	    darwin_file=
400ef6fb4a5Smrg	    darwin_files=
401ef6fb4a5Smrg	    for darwin_file in $darwin_filelist; do
402ef6fb4a5Smrg	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
403ef6fb4a5Smrg	      lipo -create -output "$darwin_file" $darwin_files
404ef6fb4a5Smrg	    done # $darwin_filelist
405ef6fb4a5Smrg	    ${rm}r unfat-$$
406ef6fb4a5Smrg	    cd "$darwin_orig_dir"
407ef6fb4a5Smrg	  else
408ef6fb4a5Smrg	    cd "$darwin_orig_dir"
409ef6fb4a5Smrg 	    func_extract_an_archive "$my_xdir" "$my_xabs"
410ef6fb4a5Smrg	  fi # $darwin_arches
411ef6fb4a5Smrg	fi # $run
412ef6fb4a5Smrg	;;
413ef6fb4a5Smrg      *)
414ef6fb4a5Smrg        func_extract_an_archive "$my_xdir" "$my_xabs"
415ef6fb4a5Smrg        ;;
416ef6fb4a5Smrg      esac
417ef6fb4a5Smrg      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
418ef6fb4a5Smrg    done
419ef6fb4a5Smrg    func_extract_archives_result="$my_oldobjs"
4200cc67336Smrg}
421ef6fb4a5Smrg# End of Shell function definitions
422ef6fb4a5Smrg#####################################
4230cc67336Smrg
424ef6fb4a5Smrg# Darwin sucks
425ef6fb4a5Smrgeval std_shrext=\"$shrext_cmds\"
4260cc67336Smrg
427ef6fb4a5Smrgdisable_libs=no
4280cc67336Smrg
429ef6fb4a5Smrg# Parse our command line options once, thoroughly.
430ef6fb4a5Smrgwhile test "$#" -gt 0
431ef6fb4a5Smrgdo
432ef6fb4a5Smrg  arg="$1"
4330cc67336Smrg  shift
434301ea0f4Smrg
435ef6fb4a5Smrg  case $arg in
436ef6fb4a5Smrg  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
437ef6fb4a5Smrg  *) optarg= ;;
438ef6fb4a5Smrg  esac
439301ea0f4Smrg
440ef6fb4a5Smrg  # If the previous option needs an argument, assign it.
441ef6fb4a5Smrg  if test -n "$prev"; then
442ef6fb4a5Smrg    case $prev in
443ef6fb4a5Smrg    execute_dlfiles)
444ef6fb4a5Smrg      execute_dlfiles="$execute_dlfiles $arg"
445ef6fb4a5Smrg      ;;
446ef6fb4a5Smrg    tag)
447ef6fb4a5Smrg      tagname="$arg"
448ef6fb4a5Smrg      preserve_args="${preserve_args}=$arg"
449ef6fb4a5Smrg
450ef6fb4a5Smrg      # Check whether tagname contains only valid characters
451ef6fb4a5Smrg      case $tagname in
452ef6fb4a5Smrg      *[!-_A-Za-z0-9,/]*)
453ef6fb4a5Smrg	$echo "$progname: invalid tag name: $tagname" 1>&2
454ef6fb4a5Smrg	exit $EXIT_FAILURE
455ef6fb4a5Smrg	;;
456ef6fb4a5Smrg      esac
457301ea0f4Smrg
458ef6fb4a5Smrg      case $tagname in
459ef6fb4a5Smrg      CC)
460ef6fb4a5Smrg	# Don't test for the "default" C tag, as we know, it's there, but
461ef6fb4a5Smrg	# not specially marked.
462ef6fb4a5Smrg	;;
463ef6fb4a5Smrg      *)
464ef6fb4a5Smrg	if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
465ef6fb4a5Smrg	  taglist="$taglist $tagname"
466ef6fb4a5Smrg	  # Evaluate the configuration.
467ef6fb4a5Smrg	  eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
468ef6fb4a5Smrg	else
469ef6fb4a5Smrg	  $echo "$progname: ignoring unknown tag $tagname" 1>&2
470ef6fb4a5Smrg	fi
471ef6fb4a5Smrg	;;
472ef6fb4a5Smrg      esac
473ef6fb4a5Smrg      ;;
474ef6fb4a5Smrg    *)
475ef6fb4a5Smrg      eval "$prev=\$arg"
476ef6fb4a5Smrg      ;;
477ef6fb4a5Smrg    esac
478301ea0f4Smrg
479ef6fb4a5Smrg    prev=
480ef6fb4a5Smrg    prevopt=
481ef6fb4a5Smrg    continue
482ef6fb4a5Smrg  fi
4830cc67336Smrg
484ef6fb4a5Smrg  # Have we seen a non-optional argument yet?
485ef6fb4a5Smrg  case $arg in
486ef6fb4a5Smrg  --help)
487ef6fb4a5Smrg    show_help=yes
488ef6fb4a5Smrg    ;;
4890cc67336Smrg
490ef6fb4a5Smrg  --version)
491ef6fb4a5Smrg    echo "\
492ef6fb4a5Smrg$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP
4930cc67336Smrg
494ef6fb4a5SmrgCopyright (C) 2008  Free Software Foundation, Inc.
495ef6fb4a5SmrgThis is free software; see the source for copying conditions.  There is NO
496ef6fb4a5Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
497ef6fb4a5Smrg    exit $?
498ef6fb4a5Smrg    ;;
499301ea0f4Smrg
500ef6fb4a5Smrg  --config)
501ef6fb4a5Smrg    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
502301ea0f4Smrg    # Now print the configurations for the tags.
503301ea0f4Smrg    for tagname in $taglist; do
504ef6fb4a5Smrg      ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
505301ea0f4Smrg    done
5060cc67336Smrg    exit $?
507ef6fb4a5Smrg    ;;
508301ea0f4Smrg
509ef6fb4a5Smrg  --debug)
510ef6fb4a5Smrg    $echo "$progname: enabling shell trace mode"
511ef6fb4a5Smrg    set -x
512ef6fb4a5Smrg    preserve_args="$preserve_args $arg"
513ef6fb4a5Smrg    ;;
514ef6fb4a5Smrg
515ef6fb4a5Smrg  --dry-run | -n)
516ef6fb4a5Smrg    run=:
517ef6fb4a5Smrg    ;;
518ef6fb4a5Smrg
519ef6fb4a5Smrg  --features)
520ef6fb4a5Smrg    $echo "host: $host"
521301ea0f4Smrg    if test "$build_libtool_libs" = yes; then
522ef6fb4a5Smrg      $echo "enable shared libraries"
523301ea0f4Smrg    else
524ef6fb4a5Smrg      $echo "disable shared libraries"
525301ea0f4Smrg    fi
526301ea0f4Smrg    if test "$build_old_libs" = yes; then
527ef6fb4a5Smrg      $echo "enable static libraries"
528301ea0f4Smrg    else
529ef6fb4a5Smrg      $echo "disable static libraries"
530301ea0f4Smrg    fi
531301ea0f4Smrg    exit $?
532ef6fb4a5Smrg    ;;
533301ea0f4Smrg
534ef6fb4a5Smrg  --finish) mode="finish" ;;
535301ea0f4Smrg
536ef6fb4a5Smrg  --mode) prevopt="--mode" prev=mode ;;
537ef6fb4a5Smrg  --mode=*) mode="$optarg" ;;
538301ea0f4Smrg
539ef6fb4a5Smrg  --preserve-dup-deps) duplicate_deps="yes" ;;
540301ea0f4Smrg
541ef6fb4a5Smrg  --quiet | --silent)
542ef6fb4a5Smrg    show=:
543ef6fb4a5Smrg    preserve_args="$preserve_args $arg"
544301ea0f4Smrg    ;;
545ef6fb4a5Smrg
546ef6fb4a5Smrg  --tag)
547ef6fb4a5Smrg    prevopt="--tag"
548ef6fb4a5Smrg    prev=tag
549ef6fb4a5Smrg    preserve_args="$preserve_args --tag"
550301ea0f4Smrg    ;;
551ef6fb4a5Smrg  --tag=*)
552ef6fb4a5Smrg    set tag "$optarg" ${1+"$@"}
553ef6fb4a5Smrg    shift
554ef6fb4a5Smrg    prev=tag
555ef6fb4a5Smrg    preserve_args="$preserve_args --tag"
556301ea0f4Smrg    ;;
557ef6fb4a5Smrg
558ef6fb4a5Smrg  -dlopen)
559ef6fb4a5Smrg    prevopt="-dlopen"
560ef6fb4a5Smrg    prev=execute_dlfiles
5610cc67336Smrg    ;;
562ef6fb4a5Smrg
563ef6fb4a5Smrg  -*)
564ef6fb4a5Smrg    $echo "$modename: unrecognized option \`$arg'" 1>&2
565ef6fb4a5Smrg    $echo "$help" 1>&2
566ef6fb4a5Smrg    exit $EXIT_FAILURE
5670cc67336Smrg    ;;
568ef6fb4a5Smrg
569ef6fb4a5Smrg  *)
570ef6fb4a5Smrg    nonopt="$arg"
571ef6fb4a5Smrg    break
572301ea0f4Smrg    ;;
573301ea0f4Smrg  esac
574ef6fb4a5Smrgdone
575301ea0f4Smrg
576ef6fb4a5Smrgif test -n "$prevopt"; then
577ef6fb4a5Smrg  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
578ef6fb4a5Smrg  $echo "$help" 1>&2
579ef6fb4a5Smrg  exit $EXIT_FAILURE
580ef6fb4a5Smrgfi
5810cc67336Smrg
582ef6fb4a5Smrgcase $disable_libs in
583ef6fb4a5Smrgno) 
584ef6fb4a5Smrg  ;;
585ef6fb4a5Smrgshared)
586ef6fb4a5Smrg  build_libtool_libs=no
587ef6fb4a5Smrg  build_old_libs=yes
588ef6fb4a5Smrg  ;;
589ef6fb4a5Smrgstatic)
590ef6fb4a5Smrg  build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
591ef6fb4a5Smrg  ;;
592ef6fb4a5Smrgesac
5930cc67336Smrg
594ef6fb4a5Smrg# If this variable is set in any of the actions, the command in it
595ef6fb4a5Smrg# will be execed at the end.  This prevents here-documents from being
596ef6fb4a5Smrg# left over by shells.
597ef6fb4a5Smrgexec_cmd=
5980cc67336Smrg
599ef6fb4a5Smrgif test -z "$show_help"; then
6000cc67336Smrg
601ef6fb4a5Smrg  # Infer the operation mode.
602ef6fb4a5Smrg  if test -z "$mode"; then
603ef6fb4a5Smrg    $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
604ef6fb4a5Smrg    $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
605ef6fb4a5Smrg    case $nonopt in
606ef6fb4a5Smrg    *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
607ef6fb4a5Smrg      mode=link
608ef6fb4a5Smrg      for arg
609ef6fb4a5Smrg      do
610ef6fb4a5Smrg	case $arg in
611ef6fb4a5Smrg	-c)
612ef6fb4a5Smrg	   mode=compile
613ef6fb4a5Smrg	   break
614ef6fb4a5Smrg	   ;;
615ef6fb4a5Smrg	esac
616ef6fb4a5Smrg      done
617301ea0f4Smrg      ;;
618ef6fb4a5Smrg    *db | *dbx | *strace | *truss)
619ef6fb4a5Smrg      mode=execute
6200cc67336Smrg      ;;
621ef6fb4a5Smrg    *install*|cp|mv)
622ef6fb4a5Smrg      mode=install
623ef6fb4a5Smrg      ;;
624ef6fb4a5Smrg    *rm)
625ef6fb4a5Smrg      mode=uninstall
626ef6fb4a5Smrg      ;;
627ef6fb4a5Smrg    *)
628ef6fb4a5Smrg      # If we have no mode, but dlfiles were specified, then do execute mode.
629ef6fb4a5Smrg      test -n "$execute_dlfiles" && mode=execute
6300cc67336Smrg
631ef6fb4a5Smrg      # Just use the default operation mode.
632ef6fb4a5Smrg      if test -z "$mode"; then
633ef6fb4a5Smrg	if test -n "$nonopt"; then
634ef6fb4a5Smrg	  $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
635ef6fb4a5Smrg	else
636ef6fb4a5Smrg	  $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
637ef6fb4a5Smrg	fi
638301ea0f4Smrg      fi
639ef6fb4a5Smrg      ;;
640ef6fb4a5Smrg    esac
641301ea0f4Smrg  fi
642301ea0f4Smrg
643301ea0f4Smrg  # Only execute mode is allowed to have -dlopen flags.
644301ea0f4Smrg  if test -n "$execute_dlfiles" && test "$mode" != execute; then
645ef6fb4a5Smrg    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
646ef6fb4a5Smrg    $echo "$help" 1>&2
647301ea0f4Smrg    exit $EXIT_FAILURE
648301ea0f4Smrg  fi
649301ea0f4Smrg
650301ea0f4Smrg  # Change the help message to a mode-specific one.
651301ea0f4Smrg  generic_help="$help"
652ef6fb4a5Smrg  help="Try \`$modename --help --mode=$mode' for more information."
653301ea0f4Smrg
654ef6fb4a5Smrg  # These modes are in order of execution frequency so that they run quickly.
655ef6fb4a5Smrg  case $mode in
656ef6fb4a5Smrg  # libtool compile mode
657ef6fb4a5Smrg  compile)
658ef6fb4a5Smrg    modename="$modename: compile"
659ef6fb4a5Smrg    # Get the compilation command and the source file.
660ef6fb4a5Smrg    base_compile=
661ef6fb4a5Smrg    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
662ef6fb4a5Smrg    suppress_opt=yes
663ef6fb4a5Smrg    suppress_output=
664ef6fb4a5Smrg    arg_mode=normal
665ef6fb4a5Smrg    libobj=
666ef6fb4a5Smrg    later=
667301ea0f4Smrg
668ef6fb4a5Smrg    for arg
669ef6fb4a5Smrg    do
670ef6fb4a5Smrg      case $arg_mode in
671ef6fb4a5Smrg      arg  )
672ef6fb4a5Smrg	# do not "continue".  Instead, add this to base_compile
673ef6fb4a5Smrg	lastarg="$arg"
674ef6fb4a5Smrg	arg_mode=normal
675ef6fb4a5Smrg	;;
676301ea0f4Smrg
677ef6fb4a5Smrg      target )
678ef6fb4a5Smrg	libobj="$arg"
679ef6fb4a5Smrg	arg_mode=normal
680ef6fb4a5Smrg	continue
681ef6fb4a5Smrg	;;
682301ea0f4Smrg
683ef6fb4a5Smrg      normal )
684ef6fb4a5Smrg	# Accept any command-line options.
685ef6fb4a5Smrg	case $arg in
686ef6fb4a5Smrg	-o)
687ef6fb4a5Smrg	  if test -n "$libobj" ; then
688ef6fb4a5Smrg	    $echo "$modename: you cannot specify \`-o' more than once" 1>&2
689ef6fb4a5Smrg	    exit $EXIT_FAILURE
690ef6fb4a5Smrg	  fi
691ef6fb4a5Smrg	  arg_mode=target
692ef6fb4a5Smrg	  continue
693ef6fb4a5Smrg	  ;;
694301ea0f4Smrg
695ef6fb4a5Smrg	-static | -prefer-pic | -prefer-non-pic)
696ef6fb4a5Smrg	  later="$later $arg"
697ef6fb4a5Smrg	  continue
698ef6fb4a5Smrg	  ;;
6990cc67336Smrg
7000cc67336Smrg	-no-suppress)
7010cc67336Smrg	  suppress_opt=no
7020cc67336Smrg	  continue
7030cc67336Smrg	  ;;
7040cc67336Smrg
7050cc67336Smrg	-Xcompiler)
7060cc67336Smrg	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
7070cc67336Smrg	  continue      #  The current "srcfile" will either be retained or
7080cc67336Smrg	  ;;            #  replaced later.  I would guess that would be a bug.
7090cc67336Smrg
7100cc67336Smrg	-Wc,*)
711ef6fb4a5Smrg	  args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
7120cc67336Smrg	  lastarg=
7130cc67336Smrg	  save_ifs="$IFS"; IFS=','
714ef6fb4a5Smrg 	  for arg in $args; do
7150cc67336Smrg	    IFS="$save_ifs"
716ef6fb4a5Smrg
717ef6fb4a5Smrg	    # Double-quote args containing other shell metacharacters.
718ef6fb4a5Smrg	    # Many Bourne shells cannot handle close brackets correctly
719ef6fb4a5Smrg	    # in scan sets, so we specify it separately.
720ef6fb4a5Smrg	    case $arg in
721ef6fb4a5Smrg	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
722ef6fb4a5Smrg	      arg="\"$arg\""
723ef6fb4a5Smrg	      ;;
724ef6fb4a5Smrg	    esac
725ef6fb4a5Smrg	    lastarg="$lastarg $arg"
726301ea0f4Smrg	  done
727301ea0f4Smrg	  IFS="$save_ifs"
728ef6fb4a5Smrg	  lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
729301ea0f4Smrg
730301ea0f4Smrg	  # Add the arguments to base_compile.
731301ea0f4Smrg	  base_compile="$base_compile $lastarg"
732301ea0f4Smrg	  continue
733301ea0f4Smrg	  ;;
734301ea0f4Smrg
735ef6fb4a5Smrg	* )
736301ea0f4Smrg	  # Accept the current argument as the source file.
737301ea0f4Smrg	  # The previous "srcfile" becomes the current argument.
738301ea0f4Smrg	  #
739301ea0f4Smrg	  lastarg="$srcfile"
740301ea0f4Smrg	  srcfile="$arg"
741301ea0f4Smrg	  ;;
742301ea0f4Smrg	esac  #  case $arg
743301ea0f4Smrg	;;
744301ea0f4Smrg      esac    #  case $arg_mode
745301ea0f4Smrg
746301ea0f4Smrg      # Aesthetically quote the previous argument.
747ef6fb4a5Smrg      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
748ef6fb4a5Smrg
749ef6fb4a5Smrg      case $lastarg in
750ef6fb4a5Smrg      # Double-quote args containing other shell metacharacters.
751ef6fb4a5Smrg      # Many Bourne shells cannot handle close brackets correctly
752ef6fb4a5Smrg      # in scan sets, and some SunOS ksh mistreat backslash-escaping
753ef6fb4a5Smrg      # in scan sets (worked around with variable expansion),
754ef6fb4a5Smrg      # and furthermore cannot handle '|' '&' '(' ')' in scan sets 
755ef6fb4a5Smrg      # at all, so we specify them separately.
756ef6fb4a5Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
757ef6fb4a5Smrg	lastarg="\"$lastarg\""
758ef6fb4a5Smrg	;;
759ef6fb4a5Smrg      esac
760ef6fb4a5Smrg
761ef6fb4a5Smrg      base_compile="$base_compile $lastarg"
762301ea0f4Smrg    done # for arg
763301ea0f4Smrg
764301ea0f4Smrg    case $arg_mode in
765301ea0f4Smrg    arg)
766ef6fb4a5Smrg      $echo "$modename: you must specify an argument for -Xcompile"
767ef6fb4a5Smrg      exit $EXIT_FAILURE
768301ea0f4Smrg      ;;
769301ea0f4Smrg    target)
770ef6fb4a5Smrg      $echo "$modename: you must specify a target with \`-o'" 1>&2
771ef6fb4a5Smrg      exit $EXIT_FAILURE
772301ea0f4Smrg      ;;
773301ea0f4Smrg    *)
774301ea0f4Smrg      # Get the name of the library object.
775ef6fb4a5Smrg      [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
776301ea0f4Smrg      ;;
777301ea0f4Smrg    esac
778301ea0f4Smrg
779301ea0f4Smrg    # Recognize several different file suffixes.
780301ea0f4Smrg    # If the user specifies -o file.o, it is replaced with file.lo
781ef6fb4a5Smrg    xform='[cCFSifmso]'
782301ea0f4Smrg    case $libobj in
783ef6fb4a5Smrg    *.ada) xform=ada ;;
784ef6fb4a5Smrg    *.adb) xform=adb ;;
785ef6fb4a5Smrg    *.ads) xform=ads ;;
786ef6fb4a5Smrg    *.asm) xform=asm ;;
787ef6fb4a5Smrg    *.c++) xform=c++ ;;
788ef6fb4a5Smrg    *.cc) xform=cc ;;
789ef6fb4a5Smrg    *.ii) xform=ii ;;
790ef6fb4a5Smrg    *.class) xform=class ;;
791ef6fb4a5Smrg    *.cpp) xform=cpp ;;
792ef6fb4a5Smrg    *.cxx) xform=cxx ;;
793ef6fb4a5Smrg    *.[fF][09]?) xform=[fF][09]. ;;
794ef6fb4a5Smrg    *.for) xform=for ;;
795ef6fb4a5Smrg    *.java) xform=java ;;
796ef6fb4a5Smrg    *.obj) xform=obj ;;
797ef6fb4a5Smrg    *.sx) xform=sx ;;
798301ea0f4Smrg    esac
799301ea0f4Smrg
800ef6fb4a5Smrg    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
801ef6fb4a5Smrg
802301ea0f4Smrg    case $libobj in
803ef6fb4a5Smrg    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
804301ea0f4Smrg    *)
805ef6fb4a5Smrg      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
806ef6fb4a5Smrg      exit $EXIT_FAILURE
807301ea0f4Smrg      ;;
808301ea0f4Smrg    esac
809301ea0f4Smrg
810301ea0f4Smrg    func_infer_tag $base_compile
811301ea0f4Smrg
812301ea0f4Smrg    for arg in $later; do
813301ea0f4Smrg      case $arg in
814301ea0f4Smrg      -static)
815301ea0f4Smrg	build_old_libs=yes
816301ea0f4Smrg	continue
817301ea0f4Smrg	;;
818301ea0f4Smrg
819301ea0f4Smrg      -prefer-pic)
820301ea0f4Smrg	pic_mode=yes
821301ea0f4Smrg	continue
822301ea0f4Smrg	;;
823301ea0f4Smrg
824301ea0f4Smrg      -prefer-non-pic)
825301ea0f4Smrg	pic_mode=no
826301ea0f4Smrg	continue
827301ea0f4Smrg	;;
828301ea0f4Smrg      esac
829301ea0f4Smrg    done
830301ea0f4Smrg
831ef6fb4a5Smrg    qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
832ef6fb4a5Smrg    case $qlibobj in
833ef6fb4a5Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
834ef6fb4a5Smrg	qlibobj="\"$qlibobj\"" ;;
835ef6fb4a5Smrg    esac
836ef6fb4a5Smrg    test "X$libobj" != "X$qlibobj" \
837ef6fb4a5Smrg	&& $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' 	&()|`$[]' \
838ef6fb4a5Smrg	&& $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
839ef6fb4a5Smrg    objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
840ef6fb4a5Smrg    xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
841ef6fb4a5Smrg    if test "X$xdir" = "X$obj"; then
842ef6fb4a5Smrg      xdir=
843ef6fb4a5Smrg    else
844ef6fb4a5Smrg      xdir=$xdir/
845ef6fb4a5Smrg    fi
846301ea0f4Smrg    lobj=${xdir}$objdir/$objname
847301ea0f4Smrg
848ef6fb4a5Smrg    if test -z "$base_compile"; then
849ef6fb4a5Smrg      $echo "$modename: you must specify a compilation command" 1>&2
850ef6fb4a5Smrg      $echo "$help" 1>&2
851ef6fb4a5Smrg      exit $EXIT_FAILURE
852ef6fb4a5Smrg    fi
853301ea0f4Smrg
854301ea0f4Smrg    # Delete any leftover library objects.
855301ea0f4Smrg    if test "$build_old_libs" = yes; then
856301ea0f4Smrg      removelist="$obj $lobj $libobj ${libobj}T"
857301ea0f4Smrg    else
858301ea0f4Smrg      removelist="$lobj $libobj ${libobj}T"
859301ea0f4Smrg    fi
860301ea0f4Smrg
861ef6fb4a5Smrg    $run $rm $removelist
862ef6fb4a5Smrg    trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
863ef6fb4a5Smrg
864301ea0f4Smrg    # On Cygwin there's no "real" PIC flag so we must build both object types
865301ea0f4Smrg    case $host_os in
866ef6fb4a5Smrg    cygwin* | mingw* | pw32* | os2*)
867301ea0f4Smrg      pic_mode=default
868301ea0f4Smrg      ;;
869301ea0f4Smrg    esac
870301ea0f4Smrg    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
871301ea0f4Smrg      # non-PIC code in shared libraries is not supported
872301ea0f4Smrg      pic_mode=default
873301ea0f4Smrg    fi
874301ea0f4Smrg
875301ea0f4Smrg    # Calculate the filename of the output object if compiler does
876301ea0f4Smrg    # not support -o with -c
877301ea0f4Smrg    if test "$compiler_c_o" = no; then
878ef6fb4a5Smrg      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
879301ea0f4Smrg      lockfile="$output_obj.lock"
880ef6fb4a5Smrg      removelist="$removelist $output_obj $lockfile"
881ef6fb4a5Smrg      trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
882301ea0f4Smrg    else
883301ea0f4Smrg      output_obj=
884301ea0f4Smrg      need_locks=no
885301ea0f4Smrg      lockfile=
886301ea0f4Smrg    fi
887301ea0f4Smrg
888301ea0f4Smrg    # Lock this critical section if it is needed
889301ea0f4Smrg    # We use this script file to make the link, it avoids creating a new file
890301ea0f4Smrg    if test "$need_locks" = yes; then
891ef6fb4a5Smrg      until $run ln "$progpath" "$lockfile" 2>/dev/null; do
892ef6fb4a5Smrg	$show "Waiting for $lockfile to be removed"
893301ea0f4Smrg	sleep 2
894301ea0f4Smrg      done
895301ea0f4Smrg    elif test "$need_locks" = warn; then
896301ea0f4Smrg      if test -f "$lockfile"; then
897ef6fb4a5Smrg	$echo "\
898301ea0f4Smrg*** ERROR, $lockfile exists and contains:
899301ea0f4Smrg`cat $lockfile 2>/dev/null`
900301ea0f4Smrg
901301ea0f4SmrgThis indicates that another process is trying to use the same
902301ea0f4Smrgtemporary object file, and libtool could not work around it because
903301ea0f4Smrgyour compiler does not support \`-c' and \`-o' together.  If you
904301ea0f4Smrgrepeat this compilation, it may succeed, by chance, but you had better
905301ea0f4Smrgavoid parallel builds (make -j) in this platform, or get a better
906301ea0f4Smrgcompiler."
907301ea0f4Smrg
908ef6fb4a5Smrg	$run $rm $removelist
909301ea0f4Smrg	exit $EXIT_FAILURE
910301ea0f4Smrg      fi
911ef6fb4a5Smrg      $echo "$srcfile" > "$lockfile"
912301ea0f4Smrg    fi
913301ea0f4Smrg
914301ea0f4Smrg    if test -n "$fix_srcfile_path"; then
915301ea0f4Smrg      eval srcfile=\"$fix_srcfile_path\"
916301ea0f4Smrg    fi
917ef6fb4a5Smrg    qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
918ef6fb4a5Smrg    case $qsrcfile in
919ef6fb4a5Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
920ef6fb4a5Smrg      qsrcfile="\"$qsrcfile\"" ;;
921ef6fb4a5Smrg    esac
922ef6fb4a5Smrg
923ef6fb4a5Smrg    $run $rm "$libobj" "${libobj}T"
924ef6fb4a5Smrg
925ef6fb4a5Smrg    # Create a libtool object file (analogous to a ".la" file),
926ef6fb4a5Smrg    # but don't create it if we're doing a dry run.
927ef6fb4a5Smrg    test -z "$run" && cat > ${libobj}T <<EOF
928ef6fb4a5Smrg# $libobj - a libtool object file
929ef6fb4a5Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
930ef6fb4a5Smrg#
931ef6fb4a5Smrg# Please DO NOT delete this file!
932ef6fb4a5Smrg# It is necessary for linking the library.
933ef6fb4a5Smrg
934ef6fb4a5Smrg# Name of the PIC object.
935ef6fb4a5SmrgEOF
936301ea0f4Smrg
937301ea0f4Smrg    # Only build a PIC object if we are building libtool libraries.
938301ea0f4Smrg    if test "$build_libtool_libs" = yes; then
939301ea0f4Smrg      # Without this assignment, base_compile gets emptied.
940301ea0f4Smrg      fbsd_hideous_sh_bug=$base_compile
941301ea0f4Smrg
942301ea0f4Smrg      if test "$pic_mode" != no; then
943301ea0f4Smrg	command="$base_compile $qsrcfile $pic_flag"
944301ea0f4Smrg      else
945301ea0f4Smrg	# Don't build PIC code
946301ea0f4Smrg	command="$base_compile $qsrcfile"
947301ea0f4Smrg      fi
948301ea0f4Smrg
949ef6fb4a5Smrg      if test ! -d "${xdir}$objdir"; then
950ef6fb4a5Smrg	$show "$mkdir ${xdir}$objdir"
951ef6fb4a5Smrg	$run $mkdir ${xdir}$objdir
952ef6fb4a5Smrg	exit_status=$?
953ef6fb4a5Smrg	if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
954ef6fb4a5Smrg	  exit $exit_status
955ef6fb4a5Smrg	fi
956ef6fb4a5Smrg      fi
957301ea0f4Smrg
958301ea0f4Smrg      if test -z "$output_obj"; then
959301ea0f4Smrg	# Place PIC objects in $objdir
960301ea0f4Smrg	command="$command -o $lobj"
961301ea0f4Smrg      fi
962301ea0f4Smrg
963ef6fb4a5Smrg      $run $rm "$lobj" "$output_obj"
964ef6fb4a5Smrg
965ef6fb4a5Smrg      $show "$command"
966ef6fb4a5Smrg      if $run eval $lt_env "$command"; then :
967ef6fb4a5Smrg      else
968ef6fb4a5Smrg	test -n "$output_obj" && $run $rm $removelist
969ef6fb4a5Smrg	exit $EXIT_FAILURE
970ef6fb4a5Smrg      fi
971301ea0f4Smrg
972301ea0f4Smrg      if test "$need_locks" = warn &&
973301ea0f4Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
974ef6fb4a5Smrg	$echo "\
975301ea0f4Smrg*** ERROR, $lockfile contains:
976301ea0f4Smrg`cat $lockfile 2>/dev/null`
977301ea0f4Smrg
978301ea0f4Smrgbut it should contain:
979301ea0f4Smrg$srcfile
980301ea0f4Smrg
981301ea0f4SmrgThis indicates that another process is trying to use the same
982301ea0f4Smrgtemporary object file, and libtool could not work around it because
983301ea0f4Smrgyour compiler does not support \`-c' and \`-o' together.  If you
984301ea0f4Smrgrepeat this compilation, it may succeed, by chance, but you had better
985301ea0f4Smrgavoid parallel builds (make -j) in this platform, or get a better
986301ea0f4Smrgcompiler."
987301ea0f4Smrg
988ef6fb4a5Smrg	$run $rm $removelist
989301ea0f4Smrg	exit $EXIT_FAILURE
990301ea0f4Smrg      fi
991301ea0f4Smrg
992301ea0f4Smrg      # Just move the object if needed, then go on to compile the next one
993301ea0f4Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
994ef6fb4a5Smrg	$show "$mv $output_obj $lobj"
995ef6fb4a5Smrg	if $run $mv $output_obj $lobj; then :
996ef6fb4a5Smrg	else
997ef6fb4a5Smrg	  error=$?
998ef6fb4a5Smrg	  $run $rm $removelist
999ef6fb4a5Smrg	  exit $error
1000ef6fb4a5Smrg	fi
1001301ea0f4Smrg      fi
1002301ea0f4Smrg
1003ef6fb4a5Smrg      # Append the name of the PIC object to the libtool object file.
1004ef6fb4a5Smrg      test -z "$run" && cat >> ${libobj}T <<EOF
1005ef6fb4a5Smrgpic_object='$objdir/$objname'
1006ef6fb4a5Smrg
1007ef6fb4a5SmrgEOF
1008ef6fb4a5Smrg
1009301ea0f4Smrg      # Allow error messages only from the first compilation.
1010301ea0f4Smrg      if test "$suppress_opt" = yes; then
1011ef6fb4a5Smrg        suppress_output=' >/dev/null 2>&1'
1012301ea0f4Smrg      fi
1013ef6fb4a5Smrg    else
1014ef6fb4a5Smrg      # No PIC object so indicate it doesn't exist in the libtool
1015ef6fb4a5Smrg      # object file.
1016ef6fb4a5Smrg      test -z "$run" && cat >> ${libobj}T <<EOF
1017ef6fb4a5Smrgpic_object=none
1018ef6fb4a5Smrg
1019ef6fb4a5SmrgEOF
1020301ea0f4Smrg    fi
1021301ea0f4Smrg
1022301ea0f4Smrg    # Only build a position-dependent object if we build old libraries.
1023301ea0f4Smrg    if test "$build_old_libs" = yes; then
1024301ea0f4Smrg      if test "$pic_mode" != yes; then
1025301ea0f4Smrg	# Don't build PIC code
1026ef6fb4a5Smrg	command="$base_compile $qsrcfile"
1027301ea0f4Smrg      else
1028301ea0f4Smrg	command="$base_compile $qsrcfile $pic_flag"
1029301ea0f4Smrg      fi
1030301ea0f4Smrg      if test "$compiler_c_o" = yes; then
1031301ea0f4Smrg	command="$command -o $obj"
1032301ea0f4Smrg      fi
1033301ea0f4Smrg
1034301ea0f4Smrg      # Suppress compiler output if we already did a PIC compilation.
1035301ea0f4Smrg      command="$command$suppress_output"
1036ef6fb4a5Smrg      $run $rm "$obj" "$output_obj"
1037ef6fb4a5Smrg      $show "$command"
1038ef6fb4a5Smrg      if $run eval $lt_env "$command"; then :
1039ef6fb4a5Smrg      else
1040ef6fb4a5Smrg	$run $rm $removelist
1041ef6fb4a5Smrg	exit $EXIT_FAILURE
1042ef6fb4a5Smrg      fi
1043301ea0f4Smrg
1044301ea0f4Smrg      if test "$need_locks" = warn &&
1045301ea0f4Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1046ef6fb4a5Smrg	$echo "\
1047301ea0f4Smrg*** ERROR, $lockfile contains:
1048301ea0f4Smrg`cat $lockfile 2>/dev/null`
1049301ea0f4Smrg
1050301ea0f4Smrgbut it should contain:
1051301ea0f4Smrg$srcfile
1052301ea0f4Smrg
1053301ea0f4SmrgThis indicates that another process is trying to use the same
1054301ea0f4Smrgtemporary object file, and libtool could not work around it because
1055301ea0f4Smrgyour compiler does not support \`-c' and \`-o' together.  If you
1056301ea0f4Smrgrepeat this compilation, it may succeed, by chance, but you had better
1057301ea0f4Smrgavoid parallel builds (make -j) in this platform, or get a better
1058301ea0f4Smrgcompiler."
1059301ea0f4Smrg
1060ef6fb4a5Smrg	$run $rm $removelist
1061301ea0f4Smrg	exit $EXIT_FAILURE
1062301ea0f4Smrg      fi
1063301ea0f4Smrg
1064301ea0f4Smrg      # Just move the object if needed
1065301ea0f4Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
1066ef6fb4a5Smrg	$show "$mv $output_obj $obj"
1067ef6fb4a5Smrg	if $run $mv $output_obj $obj; then :
1068ef6fb4a5Smrg	else
1069ef6fb4a5Smrg	  error=$?
1070ef6fb4a5Smrg	  $run $rm $removelist
1071ef6fb4a5Smrg	  exit $error
1072ef6fb4a5Smrg	fi
1073301ea0f4Smrg      fi
1074ef6fb4a5Smrg
1075ef6fb4a5Smrg      # Append the name of the non-PIC object the libtool object file.
1076ef6fb4a5Smrg      # Only append if the libtool object file exists.
1077ef6fb4a5Smrg      test -z "$run" && cat >> ${libobj}T <<EOF
1078ef6fb4a5Smrg# Name of the non-PIC object.
1079ef6fb4a5Smrgnon_pic_object='$objname'
1080ef6fb4a5Smrg
1081ef6fb4a5SmrgEOF
1082ef6fb4a5Smrg    else
1083ef6fb4a5Smrg      # Append the name of the non-PIC object the libtool object file.
1084ef6fb4a5Smrg      # Only append if the libtool object file exists.
1085ef6fb4a5Smrg      test -z "$run" && cat >> ${libobj}T <<EOF
1086ef6fb4a5Smrg# Name of the non-PIC object.
1087ef6fb4a5Smrgnon_pic_object=none
1088ef6fb4a5Smrg
1089ef6fb4a5SmrgEOF
1090301ea0f4Smrg    fi
1091301ea0f4Smrg
1092ef6fb4a5Smrg    $run $mv "${libobj}T" "${libobj}"
1093301ea0f4Smrg
1094ef6fb4a5Smrg    # Unlock the critical section if it was locked
1095ef6fb4a5Smrg    if test "$need_locks" != no; then
1096ef6fb4a5Smrg      $run $rm "$lockfile"
1097ef6fb4a5Smrg    fi
1098301ea0f4Smrg
1099301ea0f4Smrg    exit $EXIT_SUCCESS
1100ef6fb4a5Smrg    ;;
1101301ea0f4Smrg
1102ef6fb4a5Smrg  # libtool link mode
1103ef6fb4a5Smrg  link | relink)
1104ef6fb4a5Smrg    modename="$modename: link"
1105ef6fb4a5Smrg    case $host in
1106ef6fb4a5Smrg    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1107ef6fb4a5Smrg      # It is impossible to link a dll without this setting, and
1108ef6fb4a5Smrg      # we shouldn't force the makefile maintainer to figure out
1109ef6fb4a5Smrg      # which system we are compiling for in order to pass an extra
1110ef6fb4a5Smrg      # flag for every libtool invocation.
1111ef6fb4a5Smrg      # allow_undefined=no
1112301ea0f4Smrg
1113ef6fb4a5Smrg      # FIXME: Unfortunately, there are problems with the above when trying
1114ef6fb4a5Smrg      # to make a dll which has undefined symbols, in which case not
1115ef6fb4a5Smrg      # even a static library is built.  For now, we need to specify
1116ef6fb4a5Smrg      # -no-undefined on the libtool link line when we can be certain
1117ef6fb4a5Smrg      # that all symbols are satisfied, otherwise we get a static library.
1118ef6fb4a5Smrg      allow_undefined=yes
1119ef6fb4a5Smrg      ;;
1120ef6fb4a5Smrg    *)
1121ef6fb4a5Smrg      allow_undefined=yes
1122ef6fb4a5Smrg      ;;
1123ef6fb4a5Smrg    esac
1124ef6fb4a5Smrg    libtool_args="$nonopt"
1125ef6fb4a5Smrg    base_compile="$nonopt $@"
1126ef6fb4a5Smrg    compile_command="$nonopt"
1127ef6fb4a5Smrg    finalize_command="$nonopt"
1128301ea0f4Smrg
1129ef6fb4a5Smrg    compile_rpath=
1130ef6fb4a5Smrg    finalize_rpath=
1131ef6fb4a5Smrg    compile_shlibpath=
1132ef6fb4a5Smrg    finalize_shlibpath=
1133ef6fb4a5Smrg    convenience=
1134ef6fb4a5Smrg    old_convenience=
1135ef6fb4a5Smrg    deplibs=
1136ef6fb4a5Smrg    old_deplibs=
1137ef6fb4a5Smrg    compiler_flags=
1138ef6fb4a5Smrg    linker_flags=
1139ef6fb4a5Smrg    dllsearchpath=
1140ef6fb4a5Smrg    lib_search_path=`pwd`
1141ef6fb4a5Smrg    inst_prefix_dir=
1142301ea0f4Smrg
1143ef6fb4a5Smrg    avoid_version=no
1144ef6fb4a5Smrg    dlfiles=
1145ef6fb4a5Smrg    dlprefiles=
1146ef6fb4a5Smrg    dlself=no
1147ef6fb4a5Smrg    export_dynamic=no
1148ef6fb4a5Smrg    export_symbols=
1149ef6fb4a5Smrg    export_symbols_regex=
1150ef6fb4a5Smrg    generated=
1151ef6fb4a5Smrg    libobjs=
1152ef6fb4a5Smrg    ltlibs=
1153ef6fb4a5Smrg    module=no
1154ef6fb4a5Smrg    no_install=no
1155ef6fb4a5Smrg    objs=
1156ef6fb4a5Smrg    non_pic_objects=
1157ef6fb4a5Smrg    notinst_path= # paths that contain not-installed libtool libraries
1158ef6fb4a5Smrg    precious_files_regex=
1159ef6fb4a5Smrg    prefer_static_libs=no
1160ef6fb4a5Smrg    preload=no
1161ef6fb4a5Smrg    prev=
1162ef6fb4a5Smrg    prevarg=
1163ef6fb4a5Smrg    release=
1164ef6fb4a5Smrg    rpath=
1165ef6fb4a5Smrg    xrpath=
1166ef6fb4a5Smrg    perm_rpath=
1167ef6fb4a5Smrg    temp_rpath=
1168ef6fb4a5Smrg    thread_safe=no
1169ef6fb4a5Smrg    vinfo=
1170ef6fb4a5Smrg    vinfo_number=no
1171ef6fb4a5Smrg    single_module="${wl}-single_module"
1172301ea0f4Smrg
1173ef6fb4a5Smrg    func_infer_tag $base_compile
1174301ea0f4Smrg
1175ef6fb4a5Smrg    # We need to know -static, to get the right output filenames.
1176ef6fb4a5Smrg    for arg
1177ef6fb4a5Smrg    do
1178ef6fb4a5Smrg      case $arg in
1179ef6fb4a5Smrg      -all-static | -static | -static-libtool-libs)
1180ef6fb4a5Smrg	case $arg in
1181ef6fb4a5Smrg	-all-static)
1182ef6fb4a5Smrg	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
1183ef6fb4a5Smrg	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
1184ef6fb4a5Smrg	  fi
1185ef6fb4a5Smrg	  if test -n "$link_static_flag"; then
1186ef6fb4a5Smrg	    dlopen_self=$dlopen_self_static
1187ef6fb4a5Smrg	  fi
1188ef6fb4a5Smrg	  prefer_static_libs=yes
1189ef6fb4a5Smrg	  ;;
1190ef6fb4a5Smrg	-static)
1191ef6fb4a5Smrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
1192ef6fb4a5Smrg	    dlopen_self=$dlopen_self_static
1193ef6fb4a5Smrg	  fi
1194ef6fb4a5Smrg	  prefer_static_libs=built
1195ef6fb4a5Smrg	  ;;
1196ef6fb4a5Smrg	-static-libtool-libs)
1197ef6fb4a5Smrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
1198ef6fb4a5Smrg	    dlopen_self=$dlopen_self_static
1199ef6fb4a5Smrg	  fi
1200ef6fb4a5Smrg	  prefer_static_libs=yes
1201ef6fb4a5Smrg	  ;;
1202ef6fb4a5Smrg	esac
1203ef6fb4a5Smrg	build_libtool_libs=no
1204ef6fb4a5Smrg	build_old_libs=yes
1205ef6fb4a5Smrg	break
1206ef6fb4a5Smrg	;;
1207ef6fb4a5Smrg      esac
1208ef6fb4a5Smrg    done
1209301ea0f4Smrg
1210ef6fb4a5Smrg    # See if our shared archives depend on static archives.
1211ef6fb4a5Smrg    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
1212301ea0f4Smrg
1213ef6fb4a5Smrg    # Go through the arguments, transforming them on the way.
1214ef6fb4a5Smrg    while test "$#" -gt 0; do
1215ef6fb4a5Smrg      arg="$1"
1216ef6fb4a5Smrg      shift
1217ef6fb4a5Smrg      case $arg in
1218ef6fb4a5Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1219ef6fb4a5Smrg	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
1220ef6fb4a5Smrg	;;
1221ef6fb4a5Smrg      *) qarg=$arg ;;
1222ef6fb4a5Smrg      esac
1223ef6fb4a5Smrg      libtool_args="$libtool_args $qarg"
1224301ea0f4Smrg
1225ef6fb4a5Smrg      # If the previous option needs an argument, assign it.
1226ef6fb4a5Smrg      if test -n "$prev"; then
1227ef6fb4a5Smrg	case $prev in
1228ef6fb4a5Smrg	output)
1229ef6fb4a5Smrg	  compile_command="$compile_command @OUTPUT@"
1230ef6fb4a5Smrg	  finalize_command="$finalize_command @OUTPUT@"
1231ef6fb4a5Smrg	  ;;
1232ef6fb4a5Smrg	esac
1233301ea0f4Smrg
1234ef6fb4a5Smrg	case $prev in
1235ef6fb4a5Smrg	dlfiles|dlprefiles)
1236ef6fb4a5Smrg	  if test "$preload" = no; then
1237ef6fb4a5Smrg	    # Add the symbol object into the linking commands.
1238ef6fb4a5Smrg	    compile_command="$compile_command @SYMFILE@"
1239ef6fb4a5Smrg	    finalize_command="$finalize_command @SYMFILE@"
1240ef6fb4a5Smrg	    preload=yes
1241ef6fb4a5Smrg	  fi
1242ef6fb4a5Smrg	  case $arg in
1243ef6fb4a5Smrg	  *.la | *.lo) ;;  # We handle these cases below.
1244ef6fb4a5Smrg	  force)
1245ef6fb4a5Smrg	    if test "$dlself" = no; then
1246ef6fb4a5Smrg	      dlself=needless
1247ef6fb4a5Smrg	      export_dynamic=yes
1248ef6fb4a5Smrg	    fi
1249ef6fb4a5Smrg	    prev=
1250ef6fb4a5Smrg	    continue
1251ef6fb4a5Smrg	    ;;
1252ef6fb4a5Smrg	  self)
1253ef6fb4a5Smrg	    if test "$prev" = dlprefiles; then
1254ef6fb4a5Smrg	      dlself=yes
1255ef6fb4a5Smrg	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
1256ef6fb4a5Smrg	      dlself=yes
1257ef6fb4a5Smrg	    else
1258ef6fb4a5Smrg	      dlself=needless
1259ef6fb4a5Smrg	      export_dynamic=yes
1260ef6fb4a5Smrg	    fi
1261ef6fb4a5Smrg	    prev=
1262ef6fb4a5Smrg	    continue
1263ef6fb4a5Smrg	    ;;
1264ef6fb4a5Smrg	  *)
1265ef6fb4a5Smrg	    if test "$prev" = dlfiles; then
1266ef6fb4a5Smrg	      dlfiles="$dlfiles $arg"
1267ef6fb4a5Smrg	    else
1268ef6fb4a5Smrg	      dlprefiles="$dlprefiles $arg"
1269ef6fb4a5Smrg	    fi
1270ef6fb4a5Smrg	    prev=
1271ef6fb4a5Smrg	    continue
1272ef6fb4a5Smrg	    ;;
1273ef6fb4a5Smrg	  esac
1274ef6fb4a5Smrg	  ;;
1275ef6fb4a5Smrg	expsyms)
1276ef6fb4a5Smrg	  export_symbols="$arg"
1277ef6fb4a5Smrg	  if test ! -f "$arg"; then
1278ef6fb4a5Smrg	    $echo "$modename: symbol file \`$arg' does not exist"
1279ef6fb4a5Smrg	    exit $EXIT_FAILURE
1280ef6fb4a5Smrg	  fi
1281ef6fb4a5Smrg	  prev=
1282ef6fb4a5Smrg	  continue
1283ef6fb4a5Smrg	  ;;
1284ef6fb4a5Smrg	expsyms_regex)
1285ef6fb4a5Smrg	  export_symbols_regex="$arg"
1286ef6fb4a5Smrg	  prev=
1287ef6fb4a5Smrg	  continue
1288ef6fb4a5Smrg	  ;;
1289ef6fb4a5Smrg	inst_prefix)
1290ef6fb4a5Smrg	  inst_prefix_dir="$arg"
1291ef6fb4a5Smrg	  prev=
1292ef6fb4a5Smrg	  continue
1293ef6fb4a5Smrg	  ;;
1294ef6fb4a5Smrg	precious_regex)
1295ef6fb4a5Smrg	  precious_files_regex="$arg"
1296ef6fb4a5Smrg	  prev=
1297ef6fb4a5Smrg	  continue
1298ef6fb4a5Smrg	  ;;
1299ef6fb4a5Smrg	release)
1300ef6fb4a5Smrg	  release="-$arg"
1301ef6fb4a5Smrg	  prev=
1302ef6fb4a5Smrg	  continue
1303ef6fb4a5Smrg	  ;;
1304ef6fb4a5Smrg	objectlist)
1305ef6fb4a5Smrg	  if test -f "$arg"; then
1306ef6fb4a5Smrg	    save_arg=$arg
1307ef6fb4a5Smrg	    moreargs=
1308ef6fb4a5Smrg	    for fil in `cat $save_arg`
1309ef6fb4a5Smrg	    do
1310ef6fb4a5Smrg#	      moreargs="$moreargs $fil"
1311ef6fb4a5Smrg	      arg=$fil
1312ef6fb4a5Smrg	      # A libtool-controlled object.
1313301ea0f4Smrg
1314ef6fb4a5Smrg	      # Check to see that this really is a libtool object.
1315ef6fb4a5Smrg	      if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1316ef6fb4a5Smrg		pic_object=
1317ef6fb4a5Smrg		non_pic_object=
1318301ea0f4Smrg
1319ef6fb4a5Smrg		# Read the .lo file
1320ef6fb4a5Smrg		# If there is no directory component, then add one.
1321ef6fb4a5Smrg		case $arg in
1322ef6fb4a5Smrg		*/* | *\\*) . $arg ;;
1323ef6fb4a5Smrg		*) . ./$arg ;;
1324ef6fb4a5Smrg		esac
1325301ea0f4Smrg
1326ef6fb4a5Smrg		if test -z "$pic_object" || \
1327ef6fb4a5Smrg		   test -z "$non_pic_object" ||
1328ef6fb4a5Smrg		   test "$pic_object" = none && \
1329ef6fb4a5Smrg		   test "$non_pic_object" = none; then
1330ef6fb4a5Smrg		  $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1331ef6fb4a5Smrg		  exit $EXIT_FAILURE
1332ef6fb4a5Smrg		fi
1333301ea0f4Smrg
1334ef6fb4a5Smrg		# Extract subdirectory from the argument.
1335ef6fb4a5Smrg		xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1336ef6fb4a5Smrg		if test "X$xdir" = "X$arg"; then
1337ef6fb4a5Smrg		  xdir=
1338ef6fb4a5Smrg		else
1339ef6fb4a5Smrg		  xdir="$xdir/"
1340ef6fb4a5Smrg		fi
1341301ea0f4Smrg
1342ef6fb4a5Smrg		if test "$pic_object" != none; then
1343ef6fb4a5Smrg		  # Prepend the subdirectory the object is found in.
1344ef6fb4a5Smrg		  pic_object="$xdir$pic_object"
1345301ea0f4Smrg
1346ef6fb4a5Smrg		  if test "$prev" = dlfiles; then
1347ef6fb4a5Smrg		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1348ef6fb4a5Smrg		      dlfiles="$dlfiles $pic_object"
1349ef6fb4a5Smrg		      prev=
1350ef6fb4a5Smrg		      continue
1351ef6fb4a5Smrg		    else
1352ef6fb4a5Smrg		      # If libtool objects are unsupported, then we need to preload.
1353ef6fb4a5Smrg		      prev=dlprefiles
1354ef6fb4a5Smrg		    fi
1355ef6fb4a5Smrg		  fi
1356301ea0f4Smrg
1357ef6fb4a5Smrg		  # CHECK ME:  I think I busted this.  -Ossama
1358ef6fb4a5Smrg		  if test "$prev" = dlprefiles; then
1359ef6fb4a5Smrg		    # Preload the old-style object.
1360ef6fb4a5Smrg		    dlprefiles="$dlprefiles $pic_object"
1361ef6fb4a5Smrg		    prev=
1362ef6fb4a5Smrg		  fi
1363301ea0f4Smrg
1364ef6fb4a5Smrg		  # A PIC object.
1365ef6fb4a5Smrg		  libobjs="$libobjs $pic_object"
1366ef6fb4a5Smrg		  arg="$pic_object"
1367ef6fb4a5Smrg		fi
1368301ea0f4Smrg
1369ef6fb4a5Smrg		# Non-PIC object.
1370ef6fb4a5Smrg		if test "$non_pic_object" != none; then
1371ef6fb4a5Smrg		  # Prepend the subdirectory the object is found in.
1372ef6fb4a5Smrg		  non_pic_object="$xdir$non_pic_object"
1373301ea0f4Smrg
1374ef6fb4a5Smrg		  # A standard non-PIC object
1375ef6fb4a5Smrg		  non_pic_objects="$non_pic_objects $non_pic_object"
1376ef6fb4a5Smrg		  if test -z "$pic_object" || test "$pic_object" = none ; then
1377ef6fb4a5Smrg		    arg="$non_pic_object"
1378ef6fb4a5Smrg		  fi
1379ef6fb4a5Smrg		else
1380ef6fb4a5Smrg		  # If the PIC object exists, use it instead.
1381ef6fb4a5Smrg		  # $xdir was prepended to $pic_object above.
1382ef6fb4a5Smrg		  non_pic_object="$pic_object"
1383ef6fb4a5Smrg		  non_pic_objects="$non_pic_objects $non_pic_object"
1384ef6fb4a5Smrg		fi
1385ef6fb4a5Smrg	      else
1386ef6fb4a5Smrg		# Only an error if not doing a dry-run.
1387ef6fb4a5Smrg		if test -z "$run"; then
1388ef6fb4a5Smrg		  $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1389ef6fb4a5Smrg		  exit $EXIT_FAILURE
1390ef6fb4a5Smrg		else
1391ef6fb4a5Smrg		  # Dry-run case.
1392301ea0f4Smrg
1393ef6fb4a5Smrg		  # Extract subdirectory from the argument.
1394ef6fb4a5Smrg		  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1395ef6fb4a5Smrg		  if test "X$xdir" = "X$arg"; then
1396ef6fb4a5Smrg		    xdir=
1397ef6fb4a5Smrg		  else
1398ef6fb4a5Smrg		    xdir="$xdir/"
1399ef6fb4a5Smrg		  fi
1400301ea0f4Smrg
1401ef6fb4a5Smrg		  pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1402ef6fb4a5Smrg		  non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1403ef6fb4a5Smrg		  libobjs="$libobjs $pic_object"
1404ef6fb4a5Smrg		  non_pic_objects="$non_pic_objects $non_pic_object"
1405ef6fb4a5Smrg		fi
1406ef6fb4a5Smrg	      fi
1407ef6fb4a5Smrg	    done
1408ef6fb4a5Smrg	  else
1409ef6fb4a5Smrg	    $echo "$modename: link input file \`$save_arg' does not exist"
1410ef6fb4a5Smrg	    exit $EXIT_FAILURE
1411ef6fb4a5Smrg	  fi
1412ef6fb4a5Smrg	  arg=$save_arg
1413ef6fb4a5Smrg	  prev=
1414ef6fb4a5Smrg	  continue
1415ef6fb4a5Smrg	  ;;
1416ef6fb4a5Smrg	rpath | xrpath)
1417ef6fb4a5Smrg	  # We need an absolute path.
1418ef6fb4a5Smrg	  case $arg in
1419ef6fb4a5Smrg	  [\\/]* | [A-Za-z]:[\\/]*) ;;
1420ef6fb4a5Smrg	  *)
1421ef6fb4a5Smrg	    $echo "$modename: only absolute run-paths are allowed" 1>&2
1422ef6fb4a5Smrg	    exit $EXIT_FAILURE
1423ef6fb4a5Smrg	    ;;
1424ef6fb4a5Smrg	  esac
1425ef6fb4a5Smrg	  if test "$prev" = rpath; then
1426ef6fb4a5Smrg	    case "$rpath " in
1427ef6fb4a5Smrg	    *" $arg "*) ;;
1428ef6fb4a5Smrg	    *) rpath="$rpath $arg" ;;
1429ef6fb4a5Smrg	    esac
1430ef6fb4a5Smrg	  else
1431ef6fb4a5Smrg	    case "$xrpath " in
1432ef6fb4a5Smrg	    *" $arg "*) ;;
1433ef6fb4a5Smrg	    *) xrpath="$xrpath $arg" ;;
1434ef6fb4a5Smrg	    esac
1435ef6fb4a5Smrg	  fi
1436ef6fb4a5Smrg	  prev=
1437ef6fb4a5Smrg	  continue
1438ef6fb4a5Smrg	  ;;
1439ef6fb4a5Smrg	xcompiler)
1440ef6fb4a5Smrg	  compiler_flags="$compiler_flags $qarg"
1441ef6fb4a5Smrg	  prev=
1442ef6fb4a5Smrg	  compile_command="$compile_command $qarg"
1443ef6fb4a5Smrg	  finalize_command="$finalize_command $qarg"
1444ef6fb4a5Smrg	  continue
1445ef6fb4a5Smrg	  ;;
1446ef6fb4a5Smrg	xlinker)
1447ef6fb4a5Smrg	  linker_flags="$linker_flags $qarg"
1448ef6fb4a5Smrg	  compiler_flags="$compiler_flags $wl$qarg"
1449ef6fb4a5Smrg	  prev=
1450ef6fb4a5Smrg	  compile_command="$compile_command $wl$qarg"
1451ef6fb4a5Smrg	  finalize_command="$finalize_command $wl$qarg"
1452ef6fb4a5Smrg	  continue
1453ef6fb4a5Smrg	  ;;
1454ef6fb4a5Smrg	xcclinker)
1455ef6fb4a5Smrg	  linker_flags="$linker_flags $qarg"
1456ef6fb4a5Smrg	  compiler_flags="$compiler_flags $qarg"
1457ef6fb4a5Smrg	  prev=
1458ef6fb4a5Smrg	  compile_command="$compile_command $qarg"
1459ef6fb4a5Smrg	  finalize_command="$finalize_command $qarg"
1460ef6fb4a5Smrg	  continue
1461ef6fb4a5Smrg	  ;;
1462ef6fb4a5Smrg	shrext)
1463ef6fb4a5Smrg  	  shrext_cmds="$arg"
1464ef6fb4a5Smrg	  prev=
1465ef6fb4a5Smrg	  continue
1466ef6fb4a5Smrg	  ;;
1467ef6fb4a5Smrg	darwin_framework|darwin_framework_skip)
1468ef6fb4a5Smrg	  test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
1469ef6fb4a5Smrg	  compile_command="$compile_command $arg"
1470ef6fb4a5Smrg	  finalize_command="$finalize_command $arg"
1471ef6fb4a5Smrg	  prev=
1472ef6fb4a5Smrg	  continue
1473ef6fb4a5Smrg	  ;;
1474ef6fb4a5Smrg	*)
1475ef6fb4a5Smrg	  eval "$prev=\"\$arg\""
1476ef6fb4a5Smrg	  prev=
1477ef6fb4a5Smrg	  continue
1478ef6fb4a5Smrg	  ;;
1479ef6fb4a5Smrg	esac
1480ef6fb4a5Smrg      fi # test -n "$prev"
1481301ea0f4Smrg
1482ef6fb4a5Smrg      prevarg="$arg"
1483301ea0f4Smrg
1484ef6fb4a5Smrg      case $arg in
1485ef6fb4a5Smrg      -all-static)
1486ef6fb4a5Smrg	if test -n "$link_static_flag"; then
1487ef6fb4a5Smrg	  compile_command="$compile_command $link_static_flag"
1488ef6fb4a5Smrg	  finalize_command="$finalize_command $link_static_flag"
1489ef6fb4a5Smrg	fi
1490ef6fb4a5Smrg	continue
1491ef6fb4a5Smrg	;;
1492301ea0f4Smrg
1493ef6fb4a5Smrg      -allow-undefined)
1494ef6fb4a5Smrg	# FIXME: remove this flag sometime in the future.
1495ef6fb4a5Smrg	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
1496ef6fb4a5Smrg	continue
1497ef6fb4a5Smrg	;;
1498301ea0f4Smrg
1499ef6fb4a5Smrg      -avoid-version)
1500ef6fb4a5Smrg	avoid_version=yes
1501ef6fb4a5Smrg	continue
1502ef6fb4a5Smrg	;;
1503301ea0f4Smrg
1504ef6fb4a5Smrg      -dlopen)
1505ef6fb4a5Smrg	prev=dlfiles
1506ef6fb4a5Smrg	continue
1507ef6fb4a5Smrg	;;
1508301ea0f4Smrg
1509ef6fb4a5Smrg      -dlpreopen)
1510ef6fb4a5Smrg	prev=dlprefiles
1511ef6fb4a5Smrg	continue
1512ef6fb4a5Smrg	;;
1513301ea0f4Smrg
1514ef6fb4a5Smrg      -export-dynamic)
1515ef6fb4a5Smrg	export_dynamic=yes
1516ef6fb4a5Smrg	continue
1517ef6fb4a5Smrg	;;
1518301ea0f4Smrg
1519ef6fb4a5Smrg      -export-symbols | -export-symbols-regex)
1520ef6fb4a5Smrg	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
1521ef6fb4a5Smrg	  $echo "$modename: more than one -exported-symbols argument is not allowed"
1522ef6fb4a5Smrg	  exit $EXIT_FAILURE
1523ef6fb4a5Smrg	fi
1524ef6fb4a5Smrg	if test "X$arg" = "X-export-symbols"; then
1525ef6fb4a5Smrg	  prev=expsyms
1526ef6fb4a5Smrg	else
1527ef6fb4a5Smrg	  prev=expsyms_regex
1528ef6fb4a5Smrg	fi
1529ef6fb4a5Smrg	continue
1530ef6fb4a5Smrg	;;
1531301ea0f4Smrg
1532ef6fb4a5Smrg      -framework|-arch|-isysroot)
1533ef6fb4a5Smrg	case " $CC " in
1534ef6fb4a5Smrg	  *" ${arg} ${1} "* | *" ${arg}	${1} "*) 
1535ef6fb4a5Smrg		prev=darwin_framework_skip ;;
1536ef6fb4a5Smrg	  *) compiler_flags="$compiler_flags $arg"
1537ef6fb4a5Smrg	     prev=darwin_framework ;;
1538ef6fb4a5Smrg	esac
1539ef6fb4a5Smrg	compile_command="$compile_command $arg"
1540ef6fb4a5Smrg	finalize_command="$finalize_command $arg"
1541ef6fb4a5Smrg	continue
1542ef6fb4a5Smrg	;;
1543301ea0f4Smrg
1544ef6fb4a5Smrg      -inst-prefix-dir)
1545ef6fb4a5Smrg	prev=inst_prefix
1546ef6fb4a5Smrg	continue
1547ef6fb4a5Smrg	;;
1548301ea0f4Smrg
1549ef6fb4a5Smrg      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
1550ef6fb4a5Smrg      # so, if we see these flags be careful not to treat them like -L
1551ef6fb4a5Smrg      -L[A-Z][A-Z]*:*)
1552ef6fb4a5Smrg	case $with_gcc/$host in
1553ef6fb4a5Smrg	no/*-*-irix* | /*-*-irix*)
1554ef6fb4a5Smrg	  compile_command="$compile_command $arg"
1555ef6fb4a5Smrg	  finalize_command="$finalize_command $arg"
1556ef6fb4a5Smrg	  ;;
1557ef6fb4a5Smrg	esac
1558ef6fb4a5Smrg	continue
1559ef6fb4a5Smrg	;;
1560301ea0f4Smrg
1561ef6fb4a5Smrg      -L*)
1562ef6fb4a5Smrg	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
1563ef6fb4a5Smrg	# We need an absolute path.
1564ef6fb4a5Smrg	case $dir in
1565ef6fb4a5Smrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
1566ef6fb4a5Smrg	*)
1567ef6fb4a5Smrg	  absdir=`cd "$dir" && pwd`
1568ef6fb4a5Smrg	  if test -z "$absdir"; then
1569ef6fb4a5Smrg	    $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
1570ef6fb4a5Smrg	    absdir="$dir"
1571ef6fb4a5Smrg	    notinst_path="$notinst_path $dir"
1572ef6fb4a5Smrg	  fi
1573ef6fb4a5Smrg	  dir="$absdir"
1574ef6fb4a5Smrg	  ;;
1575ef6fb4a5Smrg	esac
1576ef6fb4a5Smrg	case "$deplibs " in
1577ef6fb4a5Smrg	*" -L$dir "*) ;;
1578ef6fb4a5Smrg	*)
1579ef6fb4a5Smrg	  deplibs="$deplibs -L$dir"
1580ef6fb4a5Smrg	  lib_search_path="$lib_search_path $dir"
1581ef6fb4a5Smrg	  ;;
1582ef6fb4a5Smrg	esac
1583ef6fb4a5Smrg	case $host in
1584ef6fb4a5Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1585ef6fb4a5Smrg	  testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
1586ef6fb4a5Smrg	  case :$dllsearchpath: in
1587ef6fb4a5Smrg	  *":$dir:"*) ;;
1588ef6fb4a5Smrg	  *) dllsearchpath="$dllsearchpath:$dir";;
1589ef6fb4a5Smrg	  esac
1590ef6fb4a5Smrg	  case :$dllsearchpath: in
1591ef6fb4a5Smrg	  *":$testbindir:"*) ;;
1592ef6fb4a5Smrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
1593ef6fb4a5Smrg	  esac
1594ef6fb4a5Smrg	  ;;
1595ef6fb4a5Smrg	esac
1596ef6fb4a5Smrg	continue
1597ef6fb4a5Smrg	;;
1598301ea0f4Smrg
1599ef6fb4a5Smrg      -l*)
1600ef6fb4a5Smrg	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
1601ef6fb4a5Smrg	  case $host in
1602ef6fb4a5Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
1603ef6fb4a5Smrg	    # These systems don't actually have a C or math library (as such)
1604ef6fb4a5Smrg	    continue
1605ef6fb4a5Smrg	    ;;
1606ef6fb4a5Smrg	  *-*-os2*)
1607ef6fb4a5Smrg	    # These systems don't actually have a C library (as such)
1608ef6fb4a5Smrg	    test "X$arg" = "X-lc" && continue
1609ef6fb4a5Smrg	    ;;
1610ef6fb4a5Smrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
1611ef6fb4a5Smrg	    # Do not include libc due to us having libc/libc_r.
1612ef6fb4a5Smrg	    test "X$arg" = "X-lc" && continue
1613ef6fb4a5Smrg	    ;;
1614ef6fb4a5Smrg	  *-*-rhapsody* | *-*-darwin1.[012])
1615ef6fb4a5Smrg	    # Rhapsody C and math libraries are in the System framework
1616ef6fb4a5Smrg	    deplibs="$deplibs -framework System"
1617ef6fb4a5Smrg	    continue
1618ef6fb4a5Smrg	    ;;
1619ef6fb4a5Smrg	  *-*-sco3.2v5* | *-*-sco5v6*)
1620ef6fb4a5Smrg	    # Causes problems with __ctype
1621ef6fb4a5Smrg	    test "X$arg" = "X-lc" && continue
1622ef6fb4a5Smrg	    ;;
1623ef6fb4a5Smrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
1624ef6fb4a5Smrg	    # Compiler inserts libc in the correct place for threads to work
1625ef6fb4a5Smrg	    test "X$arg" = "X-lc" && continue
1626ef6fb4a5Smrg	    ;;
1627ef6fb4a5Smrg	  esac
1628ef6fb4a5Smrg	elif test "X$arg" = "X-lc_r"; then
1629ef6fb4a5Smrg	 case $host in
1630ef6fb4a5Smrg	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
1631ef6fb4a5Smrg	   # Do not include libc_r directly, use -pthread flag.
1632ef6fb4a5Smrg	   continue
1633ef6fb4a5Smrg	   ;;
1634ef6fb4a5Smrg	 esac
16350cc67336Smrg	fi
1636ef6fb4a5Smrg	deplibs="$deplibs $arg"
1637ef6fb4a5Smrg	continue
1638ef6fb4a5Smrg	;;
1639301ea0f4Smrg
1640ef6fb4a5Smrg      # Tru64 UNIX uses -model [arg] to determine the layout of C++
1641ef6fb4a5Smrg      # classes, name mangling, and exception handling.
1642ef6fb4a5Smrg      -model)
1643ef6fb4a5Smrg	compile_command="$compile_command $arg"
1644ef6fb4a5Smrg	compiler_flags="$compiler_flags $arg"
1645ef6fb4a5Smrg	finalize_command="$finalize_command $arg"
1646ef6fb4a5Smrg	prev=xcompiler
1647ef6fb4a5Smrg	continue
1648301ea0f4Smrg	;;
1649301ea0f4Smrg
1650ef6fb4a5Smrg     -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
1651ef6fb4a5Smrg	compiler_flags="$compiler_flags $arg"
1652ef6fb4a5Smrg	compile_command="$compile_command $arg"
1653ef6fb4a5Smrg	finalize_command="$finalize_command $arg"
1654ef6fb4a5Smrg	continue
1655301ea0f4Smrg	;;
1656301ea0f4Smrg
1657ef6fb4a5Smrg      -multi_module)
1658ef6fb4a5Smrg	single_module="${wl}-multi_module"
1659301ea0f4Smrg	continue
1660301ea0f4Smrg	;;
1661301ea0f4Smrg
1662ef6fb4a5Smrg      -module)
1663ef6fb4a5Smrg	module=yes
1664ef6fb4a5Smrg	continue
1665ef6fb4a5Smrg	;;
1666301ea0f4Smrg
1667ef6fb4a5Smrg      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
1668ef6fb4a5Smrg      # -r[0-9][0-9]* specifies the processor on the SGI compiler
1669ef6fb4a5Smrg      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
1670ef6fb4a5Smrg      # +DA*, +DD* enable 64-bit mode on the HP compiler
1671ef6fb4a5Smrg      # -q* pass through compiler args for the IBM compiler
1672ef6fb4a5Smrg      # -m* pass through architecture-specific compiler args for GCC
1673ef6fb4a5Smrg      # -m*, -t[45]*, -txscale* pass through architecture-specific
1674ef6fb4a5Smrg      # compiler args for GCC
1675ef6fb4a5Smrg      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
1676ef6fb4a5Smrg      # -F/path gives path to uninstalled frameworks, gcc on darwin
1677ef6fb4a5Smrg      # @file GCC response files
1678ef6fb4a5Smrg      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
1679ef6fb4a5Smrg      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
1680301ea0f4Smrg
1681ef6fb4a5Smrg	# Unknown arguments in both finalize_command and compile_command need
1682ef6fb4a5Smrg	# to be aesthetically quoted because they are evaled later.
1683ef6fb4a5Smrg	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1684ef6fb4a5Smrg	case $arg in
1685ef6fb4a5Smrg	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1686ef6fb4a5Smrg	  arg="\"$arg\""
1687ef6fb4a5Smrg	  ;;
1688ef6fb4a5Smrg	esac
1689ef6fb4a5Smrg        compile_command="$compile_command $arg"
1690ef6fb4a5Smrg        finalize_command="$finalize_command $arg"
1691ef6fb4a5Smrg        compiler_flags="$compiler_flags $arg"
1692ef6fb4a5Smrg        continue
1693ef6fb4a5Smrg        ;;
1694301ea0f4Smrg
1695ef6fb4a5Smrg      -shrext)
1696ef6fb4a5Smrg	prev=shrext
1697ef6fb4a5Smrg	continue
16980cc67336Smrg	;;
1699301ea0f4Smrg
1700ef6fb4a5Smrg      -no-fast-install)
1701ef6fb4a5Smrg	fast_install=no
1702ef6fb4a5Smrg	continue
1703ef6fb4a5Smrg	;;
1704301ea0f4Smrg
1705ef6fb4a5Smrg      -no-install)
1706ef6fb4a5Smrg	case $host in
1707ef6fb4a5Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*)
1708ef6fb4a5Smrg	  # The PATH hackery in wrapper scripts is required on Windows
1709ef6fb4a5Smrg	  # and Darwin in order for the loader to find any dlls it needs.
1710ef6fb4a5Smrg	  $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
1711ef6fb4a5Smrg	  $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
1712ef6fb4a5Smrg	  fast_install=no
1713ef6fb4a5Smrg	  ;;
1714ef6fb4a5Smrg	*) no_install=yes ;;
1715ef6fb4a5Smrg	esac
1716ef6fb4a5Smrg	continue
1717ef6fb4a5Smrg	;;
1718301ea0f4Smrg
1719ef6fb4a5Smrg      -no-undefined)
1720ef6fb4a5Smrg	allow_undefined=no
1721ef6fb4a5Smrg	continue
1722ef6fb4a5Smrg	;;
1723301ea0f4Smrg
1724ef6fb4a5Smrg      -objectlist)
1725ef6fb4a5Smrg	prev=objectlist
1726ef6fb4a5Smrg	continue
1727301ea0f4Smrg	;;
1728301ea0f4Smrg
1729ef6fb4a5Smrg      -o) prev=output ;;
1730301ea0f4Smrg
1731ef6fb4a5Smrg      -precious-files-regex)
1732ef6fb4a5Smrg	prev=precious_regex
1733ef6fb4a5Smrg	continue
1734ef6fb4a5Smrg	;;
1735301ea0f4Smrg
1736ef6fb4a5Smrg      -release)
1737ef6fb4a5Smrg	prev=release
1738ef6fb4a5Smrg	continue
1739ef6fb4a5Smrg	;;
1740301ea0f4Smrg
1741ef6fb4a5Smrg      -rpath)
1742ef6fb4a5Smrg	prev=rpath
1743ef6fb4a5Smrg	continue
1744ef6fb4a5Smrg	;;
17450cc67336Smrg
1746ef6fb4a5Smrg      -R)
1747ef6fb4a5Smrg	prev=xrpath
17480cc67336Smrg	continue
1749ef6fb4a5Smrg	;;
1750301ea0f4Smrg
1751ef6fb4a5Smrg      -R*)
1752ef6fb4a5Smrg	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
1753ef6fb4a5Smrg	# We need an absolute path.
1754ef6fb4a5Smrg	case $dir in
1755ef6fb4a5Smrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
1756ef6fb4a5Smrg	*)
1757ef6fb4a5Smrg	  $echo "$modename: only absolute run-paths are allowed" 1>&2
1758ef6fb4a5Smrg	  exit $EXIT_FAILURE
1759ef6fb4a5Smrg	  ;;
1760ef6fb4a5Smrg	esac
1761ef6fb4a5Smrg	case "$xrpath " in
1762ef6fb4a5Smrg	*" $dir "*) ;;
1763ef6fb4a5Smrg	*) xrpath="$xrpath $dir" ;;
17640cc67336Smrg	esac
1765ef6fb4a5Smrg	continue
17660cc67336Smrg	;;
1767ef6fb4a5Smrg
1768ef6fb4a5Smrg      -static | -static-libtool-libs)
1769ef6fb4a5Smrg	# The effects of -static are defined in a previous loop.
1770ef6fb4a5Smrg	# We used to do the same as -all-static on platforms that
1771ef6fb4a5Smrg	# didn't have a PIC flag, but the assumption that the effects
1772ef6fb4a5Smrg	# would be equivalent was wrong.  It would break on at least
1773ef6fb4a5Smrg	# Digital Unix and AIX.
1774ef6fb4a5Smrg	continue
17750cc67336Smrg	;;
1776ef6fb4a5Smrg
1777ef6fb4a5Smrg      -thread-safe)
1778ef6fb4a5Smrg	thread_safe=yes
17790cc67336Smrg	continue
17800cc67336Smrg	;;
1781ef6fb4a5Smrg
1782ef6fb4a5Smrg      -version-info)
1783ef6fb4a5Smrg	prev=vinfo
1784ef6fb4a5Smrg	continue
17850cc67336Smrg	;;
1786ef6fb4a5Smrg      -version-number)
1787ef6fb4a5Smrg	prev=vinfo
1788ef6fb4a5Smrg	vinfo_number=yes
1789ef6fb4a5Smrg	continue
17900cc67336Smrg	;;
1791301ea0f4Smrg
1792ef6fb4a5Smrg      -Wc,*)
1793ef6fb4a5Smrg	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
1794ef6fb4a5Smrg	arg=
1795ef6fb4a5Smrg	save_ifs="$IFS"; IFS=','
1796ef6fb4a5Smrg	for flag in $args; do
1797ef6fb4a5Smrg	  IFS="$save_ifs"
1798ef6fb4a5Smrg	  case $flag in
1799ef6fb4a5Smrg	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1800ef6fb4a5Smrg	    flag="\"$flag\""
1801ef6fb4a5Smrg	    ;;
1802ef6fb4a5Smrg	  esac
1803ef6fb4a5Smrg	  arg="$arg $wl$flag"
1804ef6fb4a5Smrg	  compiler_flags="$compiler_flags $flag"
1805ef6fb4a5Smrg	done
1806ef6fb4a5Smrg	IFS="$save_ifs"
1807ef6fb4a5Smrg	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1808ef6fb4a5Smrg	;;
1809301ea0f4Smrg
1810ef6fb4a5Smrg      -Wl,*)
1811ef6fb4a5Smrg	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
1812ef6fb4a5Smrg	arg=
1813ef6fb4a5Smrg	save_ifs="$IFS"; IFS=','
1814ef6fb4a5Smrg	for flag in $args; do
1815ef6fb4a5Smrg	  IFS="$save_ifs"
1816ef6fb4a5Smrg	  case $flag in
1817ef6fb4a5Smrg	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1818ef6fb4a5Smrg	    flag="\"$flag\""
1819ef6fb4a5Smrg	    ;;
1820ef6fb4a5Smrg	  esac
1821ef6fb4a5Smrg	  arg="$arg $wl$flag"
1822ef6fb4a5Smrg	  compiler_flags="$compiler_flags $wl$flag"
1823ef6fb4a5Smrg	  linker_flags="$linker_flags $flag"
1824ef6fb4a5Smrg	done
1825ef6fb4a5Smrg	IFS="$save_ifs"
1826ef6fb4a5Smrg	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1827ef6fb4a5Smrg	;;
1828301ea0f4Smrg
1829ef6fb4a5Smrg      -Xcompiler)
1830ef6fb4a5Smrg	prev=xcompiler
1831ef6fb4a5Smrg	continue
1832ef6fb4a5Smrg	;;
1833301ea0f4Smrg
1834ef6fb4a5Smrg      -Xlinker)
1835ef6fb4a5Smrg	prev=xlinker
1836ef6fb4a5Smrg	continue
1837ef6fb4a5Smrg	;;
1838301ea0f4Smrg
1839ef6fb4a5Smrg      -XCClinker)
1840ef6fb4a5Smrg	prev=xcclinker
1841ef6fb4a5Smrg	continue
1842ef6fb4a5Smrg	;;
18430cc67336Smrg
1844ef6fb4a5Smrg      # Some other compiler flag.
1845ef6fb4a5Smrg      -* | +*)
1846ef6fb4a5Smrg	# Unknown arguments in both finalize_command and compile_command need
1847ef6fb4a5Smrg	# to be aesthetically quoted because they are evaled later.
1848ef6fb4a5Smrg	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1849ef6fb4a5Smrg	case $arg in
1850ef6fb4a5Smrg	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1851ef6fb4a5Smrg	  arg="\"$arg\""
18520cc67336Smrg	  ;;
18530cc67336Smrg	esac
1854ef6fb4a5Smrg	;;
1855301ea0f4Smrg
1856ef6fb4a5Smrg      *.$objext)
1857ef6fb4a5Smrg	# A standard object.
1858ef6fb4a5Smrg	objs="$objs $arg"
18590cc67336Smrg	;;
18600cc67336Smrg
1861ef6fb4a5Smrg      *.lo)
1862ef6fb4a5Smrg	# A libtool-controlled object.
18630cc67336Smrg
1864ef6fb4a5Smrg	# Check to see that this really is a libtool object.
1865ef6fb4a5Smrg	if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1866ef6fb4a5Smrg	  pic_object=
1867ef6fb4a5Smrg	  non_pic_object=
18680cc67336Smrg
1869ef6fb4a5Smrg	  # Read the .lo file
1870ef6fb4a5Smrg	  # If there is no directory component, then add one.
1871ef6fb4a5Smrg	  case $arg in
1872ef6fb4a5Smrg	  */* | *\\*) . $arg ;;
1873ef6fb4a5Smrg	  *) . ./$arg ;;
18740cc67336Smrg	  esac
18750cc67336Smrg
1876ef6fb4a5Smrg	  if test -z "$pic_object" || \
1877ef6fb4a5Smrg	     test -z "$non_pic_object" ||
1878ef6fb4a5Smrg	     test "$pic_object" = none && \
1879ef6fb4a5Smrg	     test "$non_pic_object" = none; then
1880ef6fb4a5Smrg	    $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1881ef6fb4a5Smrg	    exit $EXIT_FAILURE
1882ef6fb4a5Smrg	  fi
18830cc67336Smrg
1884ef6fb4a5Smrg	  # Extract subdirectory from the argument.
1885ef6fb4a5Smrg	  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1886ef6fb4a5Smrg	  if test "X$xdir" = "X$arg"; then
1887ef6fb4a5Smrg	    xdir=
1888ef6fb4a5Smrg 	  else
1889ef6fb4a5Smrg	    xdir="$xdir/"
18900cc67336Smrg	  fi
18910cc67336Smrg
1892ef6fb4a5Smrg	  if test "$pic_object" != none; then
1893ef6fb4a5Smrg	    # Prepend the subdirectory the object is found in.
1894ef6fb4a5Smrg	    pic_object="$xdir$pic_object"
18950cc67336Smrg
1896ef6fb4a5Smrg	    if test "$prev" = dlfiles; then
1897ef6fb4a5Smrg	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1898ef6fb4a5Smrg		dlfiles="$dlfiles $pic_object"
1899ef6fb4a5Smrg		prev=
1900ef6fb4a5Smrg		continue
1901ef6fb4a5Smrg	      else
1902ef6fb4a5Smrg		# If libtool objects are unsupported, then we need to preload.
1903ef6fb4a5Smrg		prev=dlprefiles
1904ef6fb4a5Smrg	      fi
1905ef6fb4a5Smrg	    fi
19060cc67336Smrg
1907ef6fb4a5Smrg	    # CHECK ME:  I think I busted this.  -Ossama
1908ef6fb4a5Smrg	    if test "$prev" = dlprefiles; then
1909ef6fb4a5Smrg	      # Preload the old-style object.
1910ef6fb4a5Smrg	      dlprefiles="$dlprefiles $pic_object"
1911ef6fb4a5Smrg	      prev=
1912ef6fb4a5Smrg	    fi
19130cc67336Smrg
1914ef6fb4a5Smrg	    # A PIC object.
1915ef6fb4a5Smrg	    libobjs="$libobjs $pic_object"
1916ef6fb4a5Smrg	    arg="$pic_object"
1917301ea0f4Smrg	  fi
19180cc67336Smrg
1919ef6fb4a5Smrg	  # Non-PIC object.
1920ef6fb4a5Smrg	  if test "$non_pic_object" != none; then
1921ef6fb4a5Smrg	    # Prepend the subdirectory the object is found in.
1922ef6fb4a5Smrg	    non_pic_object="$xdir$non_pic_object"
1923ef6fb4a5Smrg
1924ef6fb4a5Smrg	    # A standard non-PIC object
1925ef6fb4a5Smrg	    non_pic_objects="$non_pic_objects $non_pic_object"
1926ef6fb4a5Smrg	    if test -z "$pic_object" || test "$pic_object" = none ; then
1927ef6fb4a5Smrg	      arg="$non_pic_object"
1928ef6fb4a5Smrg	    fi
1929ef6fb4a5Smrg	  else
1930ef6fb4a5Smrg	    # If the PIC object exists, use it instead.
1931ef6fb4a5Smrg	    # $xdir was prepended to $pic_object above.
1932ef6fb4a5Smrg	    non_pic_object="$pic_object"
1933ef6fb4a5Smrg	    non_pic_objects="$non_pic_objects $non_pic_object"
1934301ea0f4Smrg	  fi
1935ef6fb4a5Smrg	else
1936ef6fb4a5Smrg	  # Only an error if not doing a dry-run.
1937ef6fb4a5Smrg	  if test -z "$run"; then
1938ef6fb4a5Smrg	    $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1939ef6fb4a5Smrg	    exit $EXIT_FAILURE
1940ef6fb4a5Smrg	  else
1941ef6fb4a5Smrg	    # Dry-run case.
1942301ea0f4Smrg
1943ef6fb4a5Smrg	    # Extract subdirectory from the argument.
1944ef6fb4a5Smrg	    xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1945ef6fb4a5Smrg	    if test "X$xdir" = "X$arg"; then
1946ef6fb4a5Smrg	      xdir=
1947ef6fb4a5Smrg	    else
1948ef6fb4a5Smrg	      xdir="$xdir/"
1949ef6fb4a5Smrg	    fi
1950301ea0f4Smrg
1951ef6fb4a5Smrg	    pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1952ef6fb4a5Smrg	    non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1953ef6fb4a5Smrg	    libobjs="$libobjs $pic_object"
1954ef6fb4a5Smrg	    non_pic_objects="$non_pic_objects $non_pic_object"
1955ef6fb4a5Smrg	  fi
1956ef6fb4a5Smrg	fi
1957ef6fb4a5Smrg	;;
1958301ea0f4Smrg
1959ef6fb4a5Smrg      *.$libext)
1960ef6fb4a5Smrg	# An archive.
1961ef6fb4a5Smrg	deplibs="$deplibs $arg"
1962ef6fb4a5Smrg	old_deplibs="$old_deplibs $arg"
1963ef6fb4a5Smrg	continue
19640cc67336Smrg	;;
1965301ea0f4Smrg
1966ef6fb4a5Smrg      *.la)
1967ef6fb4a5Smrg	# A libtool-controlled library.
1968301ea0f4Smrg
1969ef6fb4a5Smrg	if test "$prev" = dlfiles; then
1970ef6fb4a5Smrg	  # This library was specified with -dlopen.
1971ef6fb4a5Smrg	  dlfiles="$dlfiles $arg"
1972ef6fb4a5Smrg	  prev=
1973ef6fb4a5Smrg	elif test "$prev" = dlprefiles; then
1974ef6fb4a5Smrg	  # The library was specified with -dlpreopen.
1975ef6fb4a5Smrg	  dlprefiles="$dlprefiles $arg"
1976ef6fb4a5Smrg	  prev=
19770cc67336Smrg	else
1978ef6fb4a5Smrg	  deplibs="$deplibs $arg"
19790cc67336Smrg	fi
1980ef6fb4a5Smrg	continue
1981ef6fb4a5Smrg	;;
19820cc67336Smrg
1983ef6fb4a5Smrg      # Some other compiler argument.
1984ef6fb4a5Smrg      *)
1985ef6fb4a5Smrg	# Unknown arguments in both finalize_command and compile_command need
1986ef6fb4a5Smrg	# to be aesthetically quoted because they are evaled later.
1987ef6fb4a5Smrg	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1988ef6fb4a5Smrg	case $arg in
1989ef6fb4a5Smrg	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1990ef6fb4a5Smrg	  arg="\"$arg\""
19910cc67336Smrg	  ;;
1992301ea0f4Smrg	esac
19930cc67336Smrg	;;
1994ef6fb4a5Smrg      esac # arg
1995301ea0f4Smrg
1996ef6fb4a5Smrg      # Now actually substitute the argument into the commands.
1997ef6fb4a5Smrg      if test -n "$arg"; then
1998ef6fb4a5Smrg	compile_command="$compile_command $arg"
1999ef6fb4a5Smrg	finalize_command="$finalize_command $arg"
2000ef6fb4a5Smrg      fi
2001ef6fb4a5Smrg    done # argument parsing loop
20020cc67336Smrg
2003ef6fb4a5Smrg    if test -n "$prev"; then
2004ef6fb4a5Smrg      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
2005ef6fb4a5Smrg      $echo "$help" 1>&2
2006ef6fb4a5Smrg      exit $EXIT_FAILURE
2007ef6fb4a5Smrg    fi
2008301ea0f4Smrg
2009ef6fb4a5Smrg    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
2010ef6fb4a5Smrg      eval arg=\"$export_dynamic_flag_spec\"
2011ef6fb4a5Smrg      compile_command="$compile_command $arg"
2012ef6fb4a5Smrg      finalize_command="$finalize_command $arg"
2013ef6fb4a5Smrg    fi
2014301ea0f4Smrg
2015ef6fb4a5Smrg    oldlibs=
2016ef6fb4a5Smrg    # calculate the name of the file, without its directory
2017ef6fb4a5Smrg    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
2018ef6fb4a5Smrg    libobjs_save="$libobjs"
2019301ea0f4Smrg
2020ef6fb4a5Smrg    if test -n "$shlibpath_var"; then
2021ef6fb4a5Smrg      # get the directories listed in $shlibpath_var
2022ef6fb4a5Smrg      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
2023ef6fb4a5Smrg    else
2024ef6fb4a5Smrg      shlib_search_path=
2025ef6fb4a5Smrg    fi
2026ef6fb4a5Smrg    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
2027ef6fb4a5Smrg    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
20280cc67336Smrg
2029ef6fb4a5Smrg    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
2030ef6fb4a5Smrg    if test "X$output_objdir" = "X$output"; then
2031ef6fb4a5Smrg      output_objdir="$objdir"
20320cc67336Smrg    else
2033ef6fb4a5Smrg      output_objdir="$output_objdir/$objdir"
20340cc67336Smrg    fi
2035ef6fb4a5Smrg    # Create the object directory.
2036ef6fb4a5Smrg    if test ! -d "$output_objdir"; then
2037ef6fb4a5Smrg      $show "$mkdir $output_objdir"
2038ef6fb4a5Smrg      $run $mkdir $output_objdir
2039ef6fb4a5Smrg      exit_status=$?
2040ef6fb4a5Smrg      if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
2041ef6fb4a5Smrg	exit $exit_status
20420cc67336Smrg      fi
20430cc67336Smrg    fi
2044301ea0f4Smrg
2045ef6fb4a5Smrg    # Determine the type of output
2046ef6fb4a5Smrg    case $output in
2047ef6fb4a5Smrg    "")
2048ef6fb4a5Smrg      $echo "$modename: you must specify an output file" 1>&2
2049ef6fb4a5Smrg      $echo "$help" 1>&2
2050ef6fb4a5Smrg      exit $EXIT_FAILURE
2051ef6fb4a5Smrg      ;;
2052ef6fb4a5Smrg    *.$libext) linkmode=oldlib ;;
2053ef6fb4a5Smrg    *.lo | *.$objext) linkmode=obj ;;
2054ef6fb4a5Smrg    *.la) linkmode=lib ;;
2055ef6fb4a5Smrg    *) linkmode=prog ;; # Anything else should be a program.
2056ef6fb4a5Smrg    esac
2057301ea0f4Smrg
2058ef6fb4a5Smrg    case $host in
2059ef6fb4a5Smrg    *cygwin* | *mingw* | *pw32*)
2060ef6fb4a5Smrg      # don't eliminate duplications in $postdeps and $predeps
2061ef6fb4a5Smrg      duplicate_compiler_generated_deps=yes
2062ef6fb4a5Smrg      ;;
2063ef6fb4a5Smrg    *)
2064ef6fb4a5Smrg      duplicate_compiler_generated_deps=$duplicate_deps
2065ef6fb4a5Smrg      ;;
2066ef6fb4a5Smrg    esac
2067ef6fb4a5Smrg    specialdeplibs=
2068301ea0f4Smrg
2069ef6fb4a5Smrg    libs=
2070ef6fb4a5Smrg    # Find all interdependent deplibs by searching for libraries
2071ef6fb4a5Smrg    # that are linked more than once (e.g. -la -lb -la)
2072ef6fb4a5Smrg    for deplib in $deplibs; do
2073ef6fb4a5Smrg      if test "X$duplicate_deps" = "Xyes" ; then
2074ef6fb4a5Smrg	case "$libs " in
2075ef6fb4a5Smrg	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2076ef6fb4a5Smrg	esac
2077ef6fb4a5Smrg      fi
2078ef6fb4a5Smrg      libs="$libs $deplib"
2079ef6fb4a5Smrg    done
20800cc67336Smrg
2081ef6fb4a5Smrg    if test "$linkmode" = lib; then
2082ef6fb4a5Smrg      libs="$predeps $libs $compiler_lib_search_path $postdeps"
20830cc67336Smrg
2084ef6fb4a5Smrg      # Compute libraries that are listed more than once in $predeps
2085ef6fb4a5Smrg      # $postdeps and mark them as special (i.e., whose duplicates are
2086ef6fb4a5Smrg      # not to be eliminated).
2087ef6fb4a5Smrg      pre_post_deps=
2088ef6fb4a5Smrg      if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
2089ef6fb4a5Smrg	for pre_post_dep in $predeps $postdeps; do
2090ef6fb4a5Smrg	  case "$pre_post_deps " in
2091ef6fb4a5Smrg	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
20920cc67336Smrg	  esac
2093ef6fb4a5Smrg	  pre_post_deps="$pre_post_deps $pre_post_dep"
2094ef6fb4a5Smrg	done
2095ef6fb4a5Smrg      fi
2096ef6fb4a5Smrg      pre_post_deps=
2097ef6fb4a5Smrg    fi
20980cc67336Smrg
2099ef6fb4a5Smrg    deplibs=
2100ef6fb4a5Smrg    newdependency_libs=
2101ef6fb4a5Smrg    newlib_search_path=
2102ef6fb4a5Smrg    need_relink=no # whether we're linking any uninstalled libtool libraries
2103ef6fb4a5Smrg    notinst_deplibs= # not-installed libtool libraries
2104ef6fb4a5Smrg    case $linkmode in
2105ef6fb4a5Smrg    lib)
2106ef6fb4a5Smrg	passes="conv link"
2107ef6fb4a5Smrg	for file in $dlfiles $dlprefiles; do
2108ef6fb4a5Smrg	  case $file in
2109ef6fb4a5Smrg	  *.la) ;;
21100cc67336Smrg	  *)
2111ef6fb4a5Smrg	    $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
2112ef6fb4a5Smrg	    exit $EXIT_FAILURE
21130cc67336Smrg	    ;;
21140cc67336Smrg	  esac
21150cc67336Smrg	done
21160cc67336Smrg	;;
2117ef6fb4a5Smrg    prog)
2118ef6fb4a5Smrg	compile_deplibs=
2119ef6fb4a5Smrg	finalize_deplibs=
2120ef6fb4a5Smrg	alldeplibs=no
2121ef6fb4a5Smrg	newdlfiles=
2122ef6fb4a5Smrg	newdlprefiles=
2123ef6fb4a5Smrg	passes="conv scan dlopen dlpreopen link"
2124ef6fb4a5Smrg	;;
2125ef6fb4a5Smrg    *)  passes="conv"
21260cc67336Smrg	;;
21270cc67336Smrg    esac
2128ef6fb4a5Smrg    for pass in $passes; do
2129ef6fb4a5Smrg      if test "$linkmode,$pass" = "lib,link" ||
2130ef6fb4a5Smrg	 test "$linkmode,$pass" = "prog,scan"; then
2131ef6fb4a5Smrg	libs="$deplibs"
2132ef6fb4a5Smrg	deplibs=
2133ef6fb4a5Smrg      fi
2134ef6fb4a5Smrg      if test "$linkmode" = prog; then
2135ef6fb4a5Smrg	case $pass in
2136ef6fb4a5Smrg	dlopen) libs="$dlfiles" ;;
2137ef6fb4a5Smrg	dlpreopen) libs="$dlprefiles" ;;
2138ef6fb4a5Smrg	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
2139ef6fb4a5Smrg	esac
2140ef6fb4a5Smrg      fi
2141ef6fb4a5Smrg      if test "$pass" = dlopen; then
2142ef6fb4a5Smrg	# Collect dlpreopened libraries
2143ef6fb4a5Smrg	save_deplibs="$deplibs"
2144ef6fb4a5Smrg	deplibs=
2145ef6fb4a5Smrg      fi
2146ef6fb4a5Smrg      for deplib in $libs; do
2147ef6fb4a5Smrg	lib=
2148ef6fb4a5Smrg	found=no
2149ef6fb4a5Smrg	case $deplib in
2150ef6fb4a5Smrg	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
2151ef6fb4a5Smrg	  if test "$linkmode,$pass" = "prog,link"; then
2152ef6fb4a5Smrg	    compile_deplibs="$deplib $compile_deplibs"
2153ef6fb4a5Smrg	    finalize_deplibs="$deplib $finalize_deplibs"
2154ef6fb4a5Smrg	  else
2155ef6fb4a5Smrg	    compiler_flags="$compiler_flags $deplib"
2156ef6fb4a5Smrg	  fi
2157ef6fb4a5Smrg	  continue
2158ef6fb4a5Smrg	  ;;
2159ef6fb4a5Smrg	-l*)
2160ef6fb4a5Smrg	  if test "$linkmode" != lib && test "$linkmode" != prog; then
2161ef6fb4a5Smrg	    $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
2162ef6fb4a5Smrg	    continue
2163ef6fb4a5Smrg	  fi
2164ef6fb4a5Smrg	  name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
2165ef6fb4a5Smrg	  if test "$linkmode" = lib; then
2166ef6fb4a5Smrg	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
2167ef6fb4a5Smrg	  else
2168ef6fb4a5Smrg	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
2169ef6fb4a5Smrg	  fi
2170ef6fb4a5Smrg	  for searchdir in $searchdirs; do
2171ef6fb4a5Smrg	    for search_ext in .la $std_shrext .so .a; do
2172ef6fb4a5Smrg	      # Search the libtool library
2173ef6fb4a5Smrg	      lib="$searchdir/lib${name}${search_ext}"
2174ef6fb4a5Smrg	      if test -f "$lib"; then
2175ef6fb4a5Smrg		if test "$search_ext" = ".la"; then
2176ef6fb4a5Smrg		  found=yes
2177ef6fb4a5Smrg		else
2178ef6fb4a5Smrg		  found=no
2179ef6fb4a5Smrg		fi
2180ef6fb4a5Smrg		break 2
2181ef6fb4a5Smrg	      fi
2182ef6fb4a5Smrg	    done
2183ef6fb4a5Smrg	  done
2184ef6fb4a5Smrg	  if test "$found" != yes; then
2185ef6fb4a5Smrg	    # deplib doesn't seem to be a libtool library
2186ef6fb4a5Smrg	    if test "$linkmode,$pass" = "prog,link"; then
2187ef6fb4a5Smrg	      compile_deplibs="$deplib $compile_deplibs"
2188ef6fb4a5Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
2189ef6fb4a5Smrg	    else
2190ef6fb4a5Smrg	      deplibs="$deplib $deplibs"
2191ef6fb4a5Smrg	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
2192ef6fb4a5Smrg	    fi
2193ef6fb4a5Smrg	    continue
2194ef6fb4a5Smrg	  else # deplib is a libtool library
2195ef6fb4a5Smrg	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
2196ef6fb4a5Smrg	    # We need to do some special things here, and not later.
2197ef6fb4a5Smrg	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
2198ef6fb4a5Smrg	      case " $predeps $postdeps " in
2199ef6fb4a5Smrg	      *" $deplib "*)
2200ef6fb4a5Smrg		if (${SED} -e '2q' $lib |
2201ef6fb4a5Smrg                    grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
2202ef6fb4a5Smrg		  library_names=
2203ef6fb4a5Smrg		  old_library=
2204ef6fb4a5Smrg		  case $lib in
2205ef6fb4a5Smrg		  */* | *\\*) . $lib ;;
2206ef6fb4a5Smrg		  *) . ./$lib ;;
2207ef6fb4a5Smrg		  esac
2208ef6fb4a5Smrg		  for l in $old_library $library_names; do
2209ef6fb4a5Smrg		    ll="$l"
2210ef6fb4a5Smrg		  done
2211ef6fb4a5Smrg		  if test "X$ll" = "X$old_library" ; then # only static version available
2212ef6fb4a5Smrg		    found=no
2213ef6fb4a5Smrg		    ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
2214ef6fb4a5Smrg		    test "X$ladir" = "X$lib" && ladir="."
2215ef6fb4a5Smrg		    lib=$ladir/$old_library
2216ef6fb4a5Smrg		    if test "$linkmode,$pass" = "prog,link"; then
2217ef6fb4a5Smrg		      compile_deplibs="$deplib $compile_deplibs"
2218ef6fb4a5Smrg		      finalize_deplibs="$deplib $finalize_deplibs"
2219ef6fb4a5Smrg		    else
2220ef6fb4a5Smrg		      deplibs="$deplib $deplibs"
2221ef6fb4a5Smrg		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
2222ef6fb4a5Smrg		    fi
2223ef6fb4a5Smrg		    continue
2224ef6fb4a5Smrg		  fi
2225ef6fb4a5Smrg		fi
2226ef6fb4a5Smrg	        ;;
2227ef6fb4a5Smrg	      *) ;;
2228ef6fb4a5Smrg	      esac
2229ef6fb4a5Smrg	    fi
2230ef6fb4a5Smrg	  fi
2231ef6fb4a5Smrg	  ;; # -l
2232ef6fb4a5Smrg	-L*)
2233ef6fb4a5Smrg	  case $linkmode in
2234ef6fb4a5Smrg	  lib)
2235ef6fb4a5Smrg	    deplibs="$deplib $deplibs"
2236ef6fb4a5Smrg	    test "$pass" = conv && continue
2237ef6fb4a5Smrg	    newdependency_libs="$deplib $newdependency_libs"
2238ef6fb4a5Smrg	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
2239ef6fb4a5Smrg	    ;;
2240ef6fb4a5Smrg	  prog)
2241ef6fb4a5Smrg	    if test "$pass" = conv; then
2242ef6fb4a5Smrg	      deplibs="$deplib $deplibs"
2243ef6fb4a5Smrg	      continue
2244ef6fb4a5Smrg	    fi
2245ef6fb4a5Smrg	    if test "$pass" = scan; then
2246ef6fb4a5Smrg	      deplibs="$deplib $deplibs"
2247ef6fb4a5Smrg	    else
2248ef6fb4a5Smrg	      compile_deplibs="$deplib $compile_deplibs"
2249ef6fb4a5Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
2250ef6fb4a5Smrg	    fi
2251ef6fb4a5Smrg	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
2252ef6fb4a5Smrg	    ;;
2253ef6fb4a5Smrg	  *)
2254ef6fb4a5Smrg	    $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
2255ef6fb4a5Smrg	    ;;
2256ef6fb4a5Smrg	  esac # linkmode
2257ef6fb4a5Smrg	  continue
2258ef6fb4a5Smrg	  ;; # -L
2259ef6fb4a5Smrg	-R*)
2260ef6fb4a5Smrg	  if test "$pass" = link; then
2261ef6fb4a5Smrg	    dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
2262ef6fb4a5Smrg	    # Make sure the xrpath contains only unique directories.
2263ef6fb4a5Smrg	    case "$xrpath " in
2264ef6fb4a5Smrg	    *" $dir "*) ;;
2265ef6fb4a5Smrg	    *) xrpath="$xrpath $dir" ;;
2266ef6fb4a5Smrg	    esac
2267ef6fb4a5Smrg	  fi
2268ef6fb4a5Smrg	  deplibs="$deplib $deplibs"
2269ef6fb4a5Smrg	  continue
2270ef6fb4a5Smrg	  ;;
2271ef6fb4a5Smrg	*.la) lib="$deplib" ;;
2272ef6fb4a5Smrg	*.$libext)
2273ef6fb4a5Smrg	  if test "$pass" = conv; then
2274ef6fb4a5Smrg	    deplibs="$deplib $deplibs"
2275ef6fb4a5Smrg	    continue
2276ef6fb4a5Smrg	  fi
2277ef6fb4a5Smrg	  case $linkmode in
2278ef6fb4a5Smrg	  lib)
2279ef6fb4a5Smrg	    valid_a_lib=no
2280ef6fb4a5Smrg	    case $deplibs_check_method in
2281ef6fb4a5Smrg	      match_pattern*)
2282ef6fb4a5Smrg		set dummy $deplibs_check_method
2283ef6fb4a5Smrg	        match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
2284ef6fb4a5Smrg		if eval $echo \"$deplib\" 2>/dev/null \
2285ef6fb4a5Smrg		    | $SED 10q \
2286ef6fb4a5Smrg		    | $EGREP "$match_pattern_regex" > /dev/null; then
2287ef6fb4a5Smrg		  valid_a_lib=yes
2288ef6fb4a5Smrg		fi
2289ef6fb4a5Smrg		;;
2290ef6fb4a5Smrg	      pass_all)
2291ef6fb4a5Smrg		valid_a_lib=yes
2292ef6fb4a5Smrg		;;
2293ef6fb4a5Smrg            esac
2294ef6fb4a5Smrg	    if test "$valid_a_lib" != yes; then
2295ef6fb4a5Smrg	      $echo
2296ef6fb4a5Smrg	      $echo "*** Warning: Trying to link with static lib archive $deplib."
2297ef6fb4a5Smrg	      $echo "*** I have the capability to make that library automatically link in when"
2298ef6fb4a5Smrg	      $echo "*** you link to this library.  But I can only do this if you have a"
2299ef6fb4a5Smrg	      $echo "*** shared version of the library, which you do not appear to have"
2300ef6fb4a5Smrg	      $echo "*** because the file extensions .$libext of this argument makes me believe"
2301ef6fb4a5Smrg	      $echo "*** that it is just a static archive that I should not used here."
2302ef6fb4a5Smrg	    else
2303ef6fb4a5Smrg	      $echo
2304ef6fb4a5Smrg	      $echo "*** Warning: Linking the shared library $output against the"
2305ef6fb4a5Smrg	      $echo "*** static library $deplib is not portable!"
2306ef6fb4a5Smrg	      deplibs="$deplib $deplibs"
2307ef6fb4a5Smrg	    fi
2308ef6fb4a5Smrg	    continue
2309ef6fb4a5Smrg	    ;;
2310ef6fb4a5Smrg	  prog)
2311ef6fb4a5Smrg	    if test "$pass" != link; then
2312ef6fb4a5Smrg	      deplibs="$deplib $deplibs"
2313ef6fb4a5Smrg	    else
2314ef6fb4a5Smrg	      compile_deplibs="$deplib $compile_deplibs"
2315ef6fb4a5Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
2316ef6fb4a5Smrg	    fi
2317ef6fb4a5Smrg	    continue
2318ef6fb4a5Smrg	    ;;
2319ef6fb4a5Smrg	  esac # linkmode
2320ef6fb4a5Smrg	  ;; # *.$libext
2321ef6fb4a5Smrg	*.lo | *.$objext)
2322ef6fb4a5Smrg	  if test "$pass" = conv; then
2323ef6fb4a5Smrg	    deplibs="$deplib $deplibs"
2324ef6fb4a5Smrg	  elif test "$linkmode" = prog; then
2325ef6fb4a5Smrg	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
2326ef6fb4a5Smrg	      # If there is no dlopen support or we're linking statically,
2327ef6fb4a5Smrg	      # we need to preload.
2328ef6fb4a5Smrg	      newdlprefiles="$newdlprefiles $deplib"
2329ef6fb4a5Smrg	      compile_deplibs="$deplib $compile_deplibs"
2330ef6fb4a5Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
2331ef6fb4a5Smrg	    else
2332ef6fb4a5Smrg	      newdlfiles="$newdlfiles $deplib"
2333ef6fb4a5Smrg	    fi
2334ef6fb4a5Smrg	  fi
2335ef6fb4a5Smrg	  continue
2336ef6fb4a5Smrg	  ;;
2337ef6fb4a5Smrg	%DEPLIBS%)
2338ef6fb4a5Smrg	  alldeplibs=yes
2339ef6fb4a5Smrg	  continue
2340ef6fb4a5Smrg	  ;;
2341ef6fb4a5Smrg	esac # case $deplib
2342ef6fb4a5Smrg	if test "$found" = yes || test -f "$lib"; then :
2343ef6fb4a5Smrg	else
2344ef6fb4a5Smrg	  $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
2345ef6fb4a5Smrg	  exit $EXIT_FAILURE
2346ef6fb4a5Smrg	fi
2347301ea0f4Smrg
2348ef6fb4a5Smrg	# Check to see that this really is a libtool archive.
2349ef6fb4a5Smrg	if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
2350ef6fb4a5Smrg	else
2351ef6fb4a5Smrg	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
2352ef6fb4a5Smrg	  exit $EXIT_FAILURE
2353ef6fb4a5Smrg	fi
2354301ea0f4Smrg
2355ef6fb4a5Smrg	ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
2356ef6fb4a5Smrg	test "X$ladir" = "X$lib" && ladir="."
2357301ea0f4Smrg
2358ef6fb4a5Smrg	dlname=
2359ef6fb4a5Smrg	dlopen=
2360ef6fb4a5Smrg	dlpreopen=
2361ef6fb4a5Smrg	libdir=
2362ef6fb4a5Smrg	library_names=
2363ef6fb4a5Smrg	old_library=
2364ef6fb4a5Smrg	# If the library was installed with an old release of libtool,
2365ef6fb4a5Smrg	# it will not redefine variables installed, or shouldnotlink
2366ef6fb4a5Smrg	installed=yes
2367ef6fb4a5Smrg	shouldnotlink=no
2368ef6fb4a5Smrg	avoidtemprpath=
2369301ea0f4Smrg
2370301ea0f4Smrg
2371ef6fb4a5Smrg	# Read the .la file
2372ef6fb4a5Smrg	case $lib in
2373ef6fb4a5Smrg	*/* | *\\*) . $lib ;;
2374ef6fb4a5Smrg	*) . ./$lib ;;
23750cc67336Smrg	esac
2376301ea0f4Smrg
2377ef6fb4a5Smrg	if test "$linkmode,$pass" = "lib,link" ||
2378ef6fb4a5Smrg	   test "$linkmode,$pass" = "prog,scan" ||
2379ef6fb4a5Smrg	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
2380ef6fb4a5Smrg	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
2381ef6fb4a5Smrg	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
2382ef6fb4a5Smrg	fi
2383301ea0f4Smrg
2384ef6fb4a5Smrg	if test "$pass" = conv; then
2385ef6fb4a5Smrg	  # Only check for convenience libraries
2386ef6fb4a5Smrg	  deplibs="$lib $deplibs"
2387ef6fb4a5Smrg	  if test -z "$libdir"; then
2388ef6fb4a5Smrg	    if test -z "$old_library"; then
2389ef6fb4a5Smrg	      $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2390ef6fb4a5Smrg	      exit $EXIT_FAILURE
2391ef6fb4a5Smrg	    fi
2392ef6fb4a5Smrg	    # It is a libtool convenience library, so add in its objects.
2393ef6fb4a5Smrg	    convenience="$convenience $ladir/$objdir/$old_library"
2394ef6fb4a5Smrg	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
2395ef6fb4a5Smrg	    tmp_libs=
2396ef6fb4a5Smrg	    for deplib in $dependency_libs; do
2397ef6fb4a5Smrg	      deplibs="$deplib $deplibs"
2398ef6fb4a5Smrg              if test "X$duplicate_deps" = "Xyes" ; then
2399ef6fb4a5Smrg	        case "$tmp_libs " in
2400ef6fb4a5Smrg	        *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2401ef6fb4a5Smrg	        esac
2402ef6fb4a5Smrg              fi
2403ef6fb4a5Smrg	      tmp_libs="$tmp_libs $deplib"
2404ef6fb4a5Smrg	    done
2405ef6fb4a5Smrg	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
2406ef6fb4a5Smrg	    $echo "$modename: \`$lib' is not a convenience library" 1>&2
2407ef6fb4a5Smrg	    exit $EXIT_FAILURE
2408ef6fb4a5Smrg	  fi
2409ef6fb4a5Smrg	  continue
2410ef6fb4a5Smrg	fi # $pass = conv
2411301ea0f4Smrg
2412301ea0f4Smrg
2413ef6fb4a5Smrg	# Get the name of the library we link against.
2414ef6fb4a5Smrg	linklib=
2415ef6fb4a5Smrg	for l in $old_library $library_names; do
2416ef6fb4a5Smrg	  linklib="$l"
2417ef6fb4a5Smrg	done
2418ef6fb4a5Smrg	if test -z "$linklib"; then
2419ef6fb4a5Smrg	  $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2420ef6fb4a5Smrg	  exit $EXIT_FAILURE
2421301ea0f4Smrg	fi
2422301ea0f4Smrg
2423ef6fb4a5Smrg	# This library was specified with -dlopen.
2424ef6fb4a5Smrg	if test "$pass" = dlopen; then
2425ef6fb4a5Smrg	  if test -z "$libdir"; then
2426ef6fb4a5Smrg	    $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
2427ef6fb4a5Smrg	    exit $EXIT_FAILURE
2428ef6fb4a5Smrg	  fi
2429ef6fb4a5Smrg	  if test -z "$dlname" ||
2430ef6fb4a5Smrg	     test "$dlopen_support" != yes ||
2431ef6fb4a5Smrg	     test "$build_libtool_libs" = no; then
2432ef6fb4a5Smrg	    # If there is no dlname, no dlopen support or we're linking
2433ef6fb4a5Smrg	    # statically, we need to preload.  We also need to preload any
2434ef6fb4a5Smrg	    # dependent libraries so libltdl's deplib preloader doesn't
2435ef6fb4a5Smrg	    # bomb out in the load deplibs phase.
2436ef6fb4a5Smrg	    dlprefiles="$dlprefiles $lib $dependency_libs"
2437ef6fb4a5Smrg	  else
2438ef6fb4a5Smrg	    newdlfiles="$newdlfiles $lib"
2439ef6fb4a5Smrg	  fi
2440ef6fb4a5Smrg	  continue
2441ef6fb4a5Smrg	fi # $pass = dlopen
2442301ea0f4Smrg
2443ef6fb4a5Smrg	# We need an absolute path.
2444ef6fb4a5Smrg	case $ladir in
2445ef6fb4a5Smrg	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
2446ef6fb4a5Smrg	*)
2447ef6fb4a5Smrg	  abs_ladir=`cd "$ladir" && pwd`
2448ef6fb4a5Smrg	  if test -z "$abs_ladir"; then
2449ef6fb4a5Smrg	    $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
2450ef6fb4a5Smrg	    $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
2451ef6fb4a5Smrg	    abs_ladir="$ladir"
2452ef6fb4a5Smrg	  fi
2453ef6fb4a5Smrg	  ;;
2454ef6fb4a5Smrg	esac
2455ef6fb4a5Smrg	laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
2456301ea0f4Smrg
2457ef6fb4a5Smrg	# Find the relevant object directory and library name.
2458ef6fb4a5Smrg	if test "X$installed" = Xyes; then
2459ef6fb4a5Smrg	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
2460ef6fb4a5Smrg	    $echo "$modename: warning: library \`$lib' was moved." 1>&2
2461ef6fb4a5Smrg	    dir="$ladir"
2462ef6fb4a5Smrg	    absdir="$abs_ladir"
2463ef6fb4a5Smrg	    libdir="$abs_ladir"
2464ef6fb4a5Smrg	  else
2465ef6fb4a5Smrg	    dir="$libdir"
2466ef6fb4a5Smrg	    absdir="$libdir"
2467ef6fb4a5Smrg	  fi
2468ef6fb4a5Smrg	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
2469ef6fb4a5Smrg	else
2470ef6fb4a5Smrg	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
2471ef6fb4a5Smrg	    dir="$ladir"
2472ef6fb4a5Smrg	    absdir="$abs_ladir"
2473ef6fb4a5Smrg	    # Remove this search path later
2474ef6fb4a5Smrg	    notinst_path="$notinst_path $abs_ladir"
2475ef6fb4a5Smrg	  else
2476ef6fb4a5Smrg	    dir="$ladir/$objdir"
2477ef6fb4a5Smrg	    absdir="$abs_ladir/$objdir"
2478ef6fb4a5Smrg	    # Remove this search path later
2479ef6fb4a5Smrg	    notinst_path="$notinst_path $abs_ladir"
2480ef6fb4a5Smrg	  fi
2481ef6fb4a5Smrg	fi # $installed = yes
2482ef6fb4a5Smrg	name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
2483301ea0f4Smrg
2484ef6fb4a5Smrg	# This library was specified with -dlpreopen.
2485ef6fb4a5Smrg	if test "$pass" = dlpreopen; then
2486ef6fb4a5Smrg	  if test -z "$libdir"; then
2487ef6fb4a5Smrg	    $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
2488ef6fb4a5Smrg	    exit $EXIT_FAILURE
2489ef6fb4a5Smrg	  fi
2490ef6fb4a5Smrg	  # Prefer using a static library (so that no silly _DYNAMIC symbols
2491ef6fb4a5Smrg	  # are required to link).
2492ef6fb4a5Smrg	  if test -n "$old_library"; then
2493ef6fb4a5Smrg	    newdlprefiles="$newdlprefiles $dir/$old_library"
2494ef6fb4a5Smrg	  # Otherwise, use the dlname, so that lt_dlopen finds it.
2495ef6fb4a5Smrg	  elif test -n "$dlname"; then
2496ef6fb4a5Smrg	    newdlprefiles="$newdlprefiles $dir/$dlname"
2497ef6fb4a5Smrg	  else
2498ef6fb4a5Smrg	    newdlprefiles="$newdlprefiles $dir/$linklib"
2499ef6fb4a5Smrg	  fi
2500ef6fb4a5Smrg	fi # $pass = dlpreopen
2501301ea0f4Smrg
2502ef6fb4a5Smrg	if test -z "$libdir"; then
2503ef6fb4a5Smrg	  # Link the convenience library
2504ef6fb4a5Smrg	  if test "$linkmode" = lib; then
2505ef6fb4a5Smrg	    deplibs="$dir/$old_library $deplibs"
2506ef6fb4a5Smrg	  elif test "$linkmode,$pass" = "prog,link"; then
2507ef6fb4a5Smrg	    compile_deplibs="$dir/$old_library $compile_deplibs"
2508ef6fb4a5Smrg	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
2509ef6fb4a5Smrg	  else
2510ef6fb4a5Smrg	    deplibs="$lib $deplibs" # used for prog,scan pass
2511ef6fb4a5Smrg	  fi
2512ef6fb4a5Smrg	  continue
2513ef6fb4a5Smrg	fi
2514301ea0f4Smrg
2515301ea0f4Smrg
2516ef6fb4a5Smrg	if test "$linkmode" = prog && test "$pass" != link; then
2517ef6fb4a5Smrg	  newlib_search_path="$newlib_search_path $ladir"
2518ef6fb4a5Smrg	  deplibs="$lib $deplibs"
2519301ea0f4Smrg
2520ef6fb4a5Smrg	  linkalldeplibs=no
2521ef6fb4a5Smrg	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
2522ef6fb4a5Smrg	     test "$build_libtool_libs" = no; then
2523ef6fb4a5Smrg	    linkalldeplibs=yes
2524ef6fb4a5Smrg	  fi
2525301ea0f4Smrg
2526ef6fb4a5Smrg	  tmp_libs=
2527ef6fb4a5Smrg	  for deplib in $dependency_libs; do
2528ef6fb4a5Smrg	    case $deplib in
2529ef6fb4a5Smrg	    -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
2530ef6fb4a5Smrg	    esac
2531ef6fb4a5Smrg	    # Need to link against all dependency_libs?
2532ef6fb4a5Smrg	    if test "$linkalldeplibs" = yes; then
2533ef6fb4a5Smrg	      deplibs="$deplib $deplibs"
2534ef6fb4a5Smrg	    else
2535ef6fb4a5Smrg	      # Need to hardcode shared library paths
2536ef6fb4a5Smrg	      # or/and link against static libraries
2537ef6fb4a5Smrg	      newdependency_libs="$deplib $newdependency_libs"
2538ef6fb4a5Smrg	    fi
2539ef6fb4a5Smrg	    if test "X$duplicate_deps" = "Xyes" ; then
2540ef6fb4a5Smrg	      case "$tmp_libs " in
2541ef6fb4a5Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2542ef6fb4a5Smrg	      esac
2543ef6fb4a5Smrg	    fi
2544ef6fb4a5Smrg	    tmp_libs="$tmp_libs $deplib"
2545ef6fb4a5Smrg	  done # for deplib
2546ef6fb4a5Smrg	  continue
2547ef6fb4a5Smrg	fi # $linkmode = prog...
2548301ea0f4Smrg
2549ef6fb4a5Smrg	if test "$linkmode,$pass" = "prog,link"; then
2550ef6fb4a5Smrg	  if test -n "$library_names" &&
2551ef6fb4a5Smrg	     { { test "$prefer_static_libs" = no ||
2552ef6fb4a5Smrg		 test "$prefer_static_libs,$installed" = "built,yes"; } ||
2553ef6fb4a5Smrg	       test -z "$old_library"; }; then
2554ef6fb4a5Smrg	    # We need to hardcode the library path
2555ef6fb4a5Smrg	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
2556ef6fb4a5Smrg	      # Make sure the rpath contains only unique directories.
2557ef6fb4a5Smrg	      case "$temp_rpath " in
2558ef6fb4a5Smrg	      *" $dir "*) ;;
2559ef6fb4a5Smrg	      *" $absdir "*) ;;
2560ef6fb4a5Smrg	      *) temp_rpath="$temp_rpath $absdir" ;;
2561ef6fb4a5Smrg	      esac
2562ef6fb4a5Smrg	    fi
2563301ea0f4Smrg
2564ef6fb4a5Smrg	    # Hardcode the library path.
2565ef6fb4a5Smrg	    # Skip directories that are in the system default run-time
2566ef6fb4a5Smrg	    # search path.
2567ef6fb4a5Smrg	    case " $sys_lib_dlsearch_path " in
2568ef6fb4a5Smrg	    *" $absdir "*) ;;
2569ef6fb4a5Smrg	    *)
2570ef6fb4a5Smrg	      case "$compile_rpath " in
2571ef6fb4a5Smrg	      *" $absdir "*) ;;
2572ef6fb4a5Smrg	      *) compile_rpath="$compile_rpath $absdir"
2573ef6fb4a5Smrg	      esac
2574ef6fb4a5Smrg	      ;;
2575ef6fb4a5Smrg	    esac
2576ef6fb4a5Smrg	    case " $sys_lib_dlsearch_path " in
2577ef6fb4a5Smrg	    *" $libdir "*) ;;
2578ef6fb4a5Smrg	    *)
2579ef6fb4a5Smrg	      case "$finalize_rpath " in
2580ef6fb4a5Smrg	      *" $libdir "*) ;;
2581ef6fb4a5Smrg	      *) finalize_rpath="$finalize_rpath $libdir"
2582ef6fb4a5Smrg	      esac
2583ef6fb4a5Smrg	      ;;
2584ef6fb4a5Smrg	    esac
2585ef6fb4a5Smrg	  fi # $linkmode,$pass = prog,link...
2586301ea0f4Smrg
2587ef6fb4a5Smrg	  if test "$alldeplibs" = yes &&
2588ef6fb4a5Smrg	     { test "$deplibs_check_method" = pass_all ||
2589ef6fb4a5Smrg	       { test "$build_libtool_libs" = yes &&
2590ef6fb4a5Smrg		 test -n "$library_names"; }; }; then
2591ef6fb4a5Smrg	    # We only need to search for static libraries
2592ef6fb4a5Smrg	    continue
2593ef6fb4a5Smrg	  fi
25940cc67336Smrg	fi
2595301ea0f4Smrg
2596ef6fb4a5Smrg	link_static=no # Whether the deplib will be linked statically
2597ef6fb4a5Smrg	use_static_libs=$prefer_static_libs
2598ef6fb4a5Smrg	if test "$use_static_libs" = built && test "$installed" = yes ; then
2599ef6fb4a5Smrg	  use_static_libs=no
2600ef6fb4a5Smrg	fi
2601ef6fb4a5Smrg	if test -n "$library_names" &&
2602ef6fb4a5Smrg	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
2603ef6fb4a5Smrg	  if test "$installed" = no; then
2604ef6fb4a5Smrg	    notinst_deplibs="$notinst_deplibs $lib"
2605ef6fb4a5Smrg	    need_relink=yes
2606ef6fb4a5Smrg	  fi
2607ef6fb4a5Smrg	  # This is a shared library
2608301ea0f4Smrg
2609ef6fb4a5Smrg	  # Warn about portability, can't link against -module's on
2610ef6fb4a5Smrg	  # some systems (darwin)
2611ef6fb4a5Smrg	  if test "$shouldnotlink" = yes && test "$pass" = link ; then
2612ef6fb4a5Smrg	    $echo
2613ef6fb4a5Smrg	    if test "$linkmode" = prog; then
2614ef6fb4a5Smrg	      $echo "*** Warning: Linking the executable $output against the loadable module"
2615ef6fb4a5Smrg	    else
2616ef6fb4a5Smrg	      $echo "*** Warning: Linking the shared library $output against the loadable module"
2617ef6fb4a5Smrg	    fi
2618ef6fb4a5Smrg	    $echo "*** $linklib is not portable!"
2619ef6fb4a5Smrg	  fi
2620ef6fb4a5Smrg	  if test "$linkmode" = lib &&
2621ef6fb4a5Smrg	     test "$hardcode_into_libs" = yes; then
2622ef6fb4a5Smrg	    # Hardcode the library path.
2623ef6fb4a5Smrg	    # Skip directories that are in the system default run-time
2624ef6fb4a5Smrg	    # search path.
2625ef6fb4a5Smrg	    case " $sys_lib_dlsearch_path " in
2626ef6fb4a5Smrg	    *" $absdir "*) ;;
2627ef6fb4a5Smrg	    *)
2628ef6fb4a5Smrg	      case "$compile_rpath " in
2629ef6fb4a5Smrg	      *" $absdir "*) ;;
2630ef6fb4a5Smrg	      *) compile_rpath="$compile_rpath $absdir"
2631ef6fb4a5Smrg	      esac
2632ef6fb4a5Smrg	      ;;
2633ef6fb4a5Smrg	    esac
2634ef6fb4a5Smrg	    case " $sys_lib_dlsearch_path " in
2635ef6fb4a5Smrg	    *" $libdir "*) ;;
2636ef6fb4a5Smrg	    *)
2637ef6fb4a5Smrg	      case "$finalize_rpath " in
2638ef6fb4a5Smrg	      *" $libdir "*) ;;
2639ef6fb4a5Smrg	      *) finalize_rpath="$finalize_rpath $libdir"
2640ef6fb4a5Smrg	      esac
2641ef6fb4a5Smrg	      ;;
2642ef6fb4a5Smrg	    esac
2643ef6fb4a5Smrg	  fi
2644301ea0f4Smrg
2645ef6fb4a5Smrg	  if test -n "$old_archive_from_expsyms_cmds"; then
2646ef6fb4a5Smrg	    # figure out the soname
2647ef6fb4a5Smrg	    set dummy $library_names
2648ef6fb4a5Smrg	    realname="$2"
2649ef6fb4a5Smrg	    shift; shift
2650ef6fb4a5Smrg	    libname=`eval \\$echo \"$libname_spec\"`
2651ef6fb4a5Smrg	    # use dlname if we got it. it's perfectly good, no?
2652ef6fb4a5Smrg	    if test -n "$dlname"; then
2653ef6fb4a5Smrg	      soname="$dlname"
2654ef6fb4a5Smrg	    elif test -n "$soname_spec"; then
2655ef6fb4a5Smrg	      # bleh windows
2656ef6fb4a5Smrg	      case $host in
2657ef6fb4a5Smrg	      *cygwin* | mingw*)
2658ef6fb4a5Smrg		major=`expr $current - $age`
2659ef6fb4a5Smrg		versuffix="-$major"
2660ef6fb4a5Smrg		;;
2661ef6fb4a5Smrg	      esac
2662ef6fb4a5Smrg	      eval soname=\"$soname_spec\"
2663ef6fb4a5Smrg	    else
2664ef6fb4a5Smrg	      soname="$realname"
2665ef6fb4a5Smrg	    fi
2666301ea0f4Smrg
2667ef6fb4a5Smrg	    # Make a new name for the extract_expsyms_cmds to use
2668ef6fb4a5Smrg	    soroot="$soname"
2669ef6fb4a5Smrg	    soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
2670ef6fb4a5Smrg	    newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
2671301ea0f4Smrg
2672ef6fb4a5Smrg	    # If the library has no export list, then create one now
2673ef6fb4a5Smrg	    if test -f "$output_objdir/$soname-def"; then :
2674ef6fb4a5Smrg	    else
2675ef6fb4a5Smrg	      $show "extracting exported symbol list from \`$soname'"
2676ef6fb4a5Smrg	      save_ifs="$IFS"; IFS='~'
2677ef6fb4a5Smrg	      cmds=$extract_expsyms_cmds
2678ef6fb4a5Smrg	      for cmd in $cmds; do
2679ef6fb4a5Smrg		IFS="$save_ifs"
2680ef6fb4a5Smrg		eval cmd=\"$cmd\"
2681ef6fb4a5Smrg		$show "$cmd"
2682ef6fb4a5Smrg		$run eval "$cmd" || exit $?
2683ef6fb4a5Smrg	      done
2684ef6fb4a5Smrg	      IFS="$save_ifs"
2685ef6fb4a5Smrg	    fi
2686301ea0f4Smrg
2687ef6fb4a5Smrg	    # Create $newlib
2688ef6fb4a5Smrg	    if test -f "$output_objdir/$newlib"; then :; else
2689ef6fb4a5Smrg	      $show "generating import library for \`$soname'"
2690ef6fb4a5Smrg	      save_ifs="$IFS"; IFS='~'
2691ef6fb4a5Smrg	      cmds=$old_archive_from_expsyms_cmds
2692ef6fb4a5Smrg	      for cmd in $cmds; do
2693ef6fb4a5Smrg		IFS="$save_ifs"
2694ef6fb4a5Smrg		eval cmd=\"$cmd\"
2695ef6fb4a5Smrg		$show "$cmd"
2696ef6fb4a5Smrg		$run eval "$cmd" || exit $?
2697ef6fb4a5Smrg	      done
2698ef6fb4a5Smrg	      IFS="$save_ifs"
2699ef6fb4a5Smrg	    fi
2700ef6fb4a5Smrg	    # make sure the library variables are pointing to the new library
2701ef6fb4a5Smrg	    dir=$output_objdir
2702ef6fb4a5Smrg	    linklib=$newlib
2703ef6fb4a5Smrg	  fi # test -n "$old_archive_from_expsyms_cmds"
2704301ea0f4Smrg
2705ef6fb4a5Smrg	  if test "$linkmode" = prog || test "$mode" != relink; then
2706ef6fb4a5Smrg	    add_shlibpath=
2707ef6fb4a5Smrg	    add_dir=
2708ef6fb4a5Smrg	    add=
2709ef6fb4a5Smrg	    lib_linked=yes
2710ef6fb4a5Smrg	    case $hardcode_action in
2711ef6fb4a5Smrg	    immediate | unsupported)
2712ef6fb4a5Smrg	      if test "$hardcode_direct" = no; then
2713ef6fb4a5Smrg		add="$dir/$linklib"
2714ef6fb4a5Smrg		case $host in
2715ef6fb4a5Smrg		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
2716ef6fb4a5Smrg		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
2717ef6fb4a5Smrg		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
2718ef6fb4a5Smrg		    *-*-unixware7*) add_dir="-L$dir" ;;
2719ef6fb4a5Smrg		  *-*-darwin* )
2720ef6fb4a5Smrg		    # if the lib is a module then we can not link against
2721ef6fb4a5Smrg		    # it, someone is ignoring the new warnings I added
2722ef6fb4a5Smrg		    if /usr/bin/file -L $add 2> /dev/null |
2723ef6fb4a5Smrg                      $EGREP ": [^:]* bundle" >/dev/null ; then
2724ef6fb4a5Smrg		      $echo "** Warning, lib $linklib is a module, not a shared library"
2725ef6fb4a5Smrg		      if test -z "$old_library" ; then
2726ef6fb4a5Smrg		        $echo
2727ef6fb4a5Smrg		        $echo "** And there doesn't seem to be a static archive available"
2728ef6fb4a5Smrg		        $echo "** The link will probably fail, sorry"
2729ef6fb4a5Smrg		      else
2730ef6fb4a5Smrg		        add="$dir/$old_library"
2731ef6fb4a5Smrg		      fi
2732ef6fb4a5Smrg		    fi
2733ef6fb4a5Smrg		esac
2734ef6fb4a5Smrg	      elif test "$hardcode_minus_L" = no; then
2735ef6fb4a5Smrg		case $host in
2736ef6fb4a5Smrg		*-*-sunos*) add_shlibpath="$dir" ;;
2737ef6fb4a5Smrg		esac
2738ef6fb4a5Smrg		add_dir="-L$dir"
2739ef6fb4a5Smrg		add="-l$name"
2740ef6fb4a5Smrg	      elif test "$hardcode_shlibpath_var" = no; then
2741ef6fb4a5Smrg		add_shlibpath="$dir"
2742ef6fb4a5Smrg		add="-l$name"
2743ef6fb4a5Smrg	      else
2744ef6fb4a5Smrg		lib_linked=no
2745ef6fb4a5Smrg	      fi
2746ef6fb4a5Smrg	      ;;
2747ef6fb4a5Smrg	    relink)
2748ef6fb4a5Smrg	      if test "$hardcode_direct" = yes; then
2749ef6fb4a5Smrg		add="$dir/$linklib"
2750ef6fb4a5Smrg	      elif test "$hardcode_minus_L" = yes; then
2751ef6fb4a5Smrg		add_dir="-L$dir"
2752ef6fb4a5Smrg		# Try looking first in the location we're being installed to.
2753ef6fb4a5Smrg		if test -n "$inst_prefix_dir"; then
2754ef6fb4a5Smrg		  case $libdir in
2755ef6fb4a5Smrg		    [\\/]*)
2756ef6fb4a5Smrg		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
2757ef6fb4a5Smrg		      ;;
2758ef6fb4a5Smrg		  esac
2759ef6fb4a5Smrg		fi
2760ef6fb4a5Smrg		add="-l$name"
2761ef6fb4a5Smrg	      elif test "$hardcode_shlibpath_var" = yes; then
2762ef6fb4a5Smrg		add_shlibpath="$dir"
2763ef6fb4a5Smrg		add="-l$name"
2764ef6fb4a5Smrg	      else
2765ef6fb4a5Smrg		lib_linked=no
2766ef6fb4a5Smrg	      fi
2767ef6fb4a5Smrg	      ;;
2768ef6fb4a5Smrg	    *) lib_linked=no ;;
2769ef6fb4a5Smrg	    esac
2770301ea0f4Smrg
2771ef6fb4a5Smrg	    if test "$lib_linked" != yes; then
2772ef6fb4a5Smrg	      $echo "$modename: configuration error: unsupported hardcode properties"
2773ef6fb4a5Smrg	      exit $EXIT_FAILURE
2774ef6fb4a5Smrg	    fi
2775301ea0f4Smrg
2776ef6fb4a5Smrg	    if test -n "$add_shlibpath"; then
2777ef6fb4a5Smrg	      case :$compile_shlibpath: in
2778ef6fb4a5Smrg	      *":$add_shlibpath:"*) ;;
2779ef6fb4a5Smrg	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
2780ef6fb4a5Smrg	      esac
2781ef6fb4a5Smrg	    fi
2782ef6fb4a5Smrg	    if test "$linkmode" = prog; then
2783ef6fb4a5Smrg	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
2784ef6fb4a5Smrg	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
2785ef6fb4a5Smrg	    else
2786ef6fb4a5Smrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
2787ef6fb4a5Smrg	      test -n "$add" && deplibs="$add $deplibs"
2788ef6fb4a5Smrg	      if test "$hardcode_direct" != yes && \
2789ef6fb4a5Smrg		 test "$hardcode_minus_L" != yes && \
2790ef6fb4a5Smrg		 test "$hardcode_shlibpath_var" = yes; then
2791ef6fb4a5Smrg		case :$finalize_shlibpath: in
2792ef6fb4a5Smrg		*":$libdir:"*) ;;
2793ef6fb4a5Smrg		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2794ef6fb4a5Smrg		esac
2795ef6fb4a5Smrg	      fi
2796ef6fb4a5Smrg	    fi
2797ef6fb4a5Smrg	  fi
2798301ea0f4Smrg
2799ef6fb4a5Smrg	  if test "$linkmode" = prog || test "$mode" = relink; then
2800ef6fb4a5Smrg	    add_shlibpath=
2801ef6fb4a5Smrg	    add_dir=
2802ef6fb4a5Smrg	    add=
2803ef6fb4a5Smrg	    # Finalize command for both is simple: just hardcode it.
2804ef6fb4a5Smrg	    if test "$hardcode_direct" = yes; then
2805ef6fb4a5Smrg	      add="$libdir/$linklib"
2806ef6fb4a5Smrg	    elif test "$hardcode_minus_L" = yes; then
2807ef6fb4a5Smrg	      add_dir="-L$libdir"
2808ef6fb4a5Smrg	      add="-l$name"
2809ef6fb4a5Smrg	    elif test "$hardcode_shlibpath_var" = yes; then
2810ef6fb4a5Smrg	      case :$finalize_shlibpath: in
2811ef6fb4a5Smrg	      *":$libdir:"*) ;;
2812ef6fb4a5Smrg	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2813ef6fb4a5Smrg	      esac
2814ef6fb4a5Smrg	      add="-l$name"
2815ef6fb4a5Smrg	    elif test "$hardcode_automatic" = yes; then
2816ef6fb4a5Smrg	      if test -n "$inst_prefix_dir" &&
2817ef6fb4a5Smrg		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
2818ef6fb4a5Smrg	        add="$inst_prefix_dir$libdir/$linklib"
2819ef6fb4a5Smrg	      else
2820ef6fb4a5Smrg	        add="$libdir/$linklib"
2821ef6fb4a5Smrg	      fi
2822ef6fb4a5Smrg	    else
2823ef6fb4a5Smrg	      # We cannot seem to hardcode it, guess we'll fake it.
2824ef6fb4a5Smrg	      add_dir="-L$libdir"
2825ef6fb4a5Smrg	      # Try looking first in the location we're being installed to.
2826ef6fb4a5Smrg	      if test -n "$inst_prefix_dir"; then
2827ef6fb4a5Smrg		case $libdir in
2828ef6fb4a5Smrg		  [\\/]*)
2829ef6fb4a5Smrg		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
2830ef6fb4a5Smrg		    ;;
2831ef6fb4a5Smrg		esac
2832ef6fb4a5Smrg	      fi
2833ef6fb4a5Smrg	      add="-l$name"
2834ef6fb4a5Smrg	    fi
2835301ea0f4Smrg
2836ef6fb4a5Smrg	    if test "$linkmode" = prog; then
2837ef6fb4a5Smrg	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
2838ef6fb4a5Smrg	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
2839ef6fb4a5Smrg	    else
2840ef6fb4a5Smrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
2841ef6fb4a5Smrg	      test -n "$add" && deplibs="$add $deplibs"
2842ef6fb4a5Smrg	    fi
2843ef6fb4a5Smrg	  fi
2844ef6fb4a5Smrg	elif test "$linkmode" = prog; then
2845ef6fb4a5Smrg	  # Here we assume that one of hardcode_direct or hardcode_minus_L
2846ef6fb4a5Smrg	  # is not unsupported.  This is valid on all known static and
2847ef6fb4a5Smrg	  # shared platforms.
2848ef6fb4a5Smrg	  if test "$hardcode_direct" != unsupported; then
2849ef6fb4a5Smrg	    test -n "$old_library" && linklib="$old_library"
2850ef6fb4a5Smrg	    compile_deplibs="$dir/$linklib $compile_deplibs"
2851ef6fb4a5Smrg	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
2852ef6fb4a5Smrg	  else
2853ef6fb4a5Smrg	    compile_deplibs="-l$name -L$dir $compile_deplibs"
2854ef6fb4a5Smrg	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
2855ef6fb4a5Smrg	  fi
2856ef6fb4a5Smrg	elif test "$build_libtool_libs" = yes; then
2857ef6fb4a5Smrg	  # Not a shared library
2858ef6fb4a5Smrg	  if test "$deplibs_check_method" != pass_all; then
2859ef6fb4a5Smrg	    # We're trying link a shared library against a static one
2860ef6fb4a5Smrg	    # but the system doesn't support it.
2861301ea0f4Smrg
2862ef6fb4a5Smrg	    # Just print a warning and add the library to dependency_libs so
2863ef6fb4a5Smrg	    # that the program can be linked against the static library.
2864ef6fb4a5Smrg	    $echo
2865ef6fb4a5Smrg	    $echo "*** Warning: This system can not link to static lib archive $lib."
2866ef6fb4a5Smrg	    $echo "*** I have the capability to make that library automatically link in when"
2867ef6fb4a5Smrg	    $echo "*** you link to this library.  But I can only do this if you have a"
2868ef6fb4a5Smrg	    $echo "*** shared version of the library, which you do not appear to have."
2869ef6fb4a5Smrg	    if test "$module" = yes; then
2870ef6fb4a5Smrg	      $echo "*** But as you try to build a module library, libtool will still create "
2871ef6fb4a5Smrg	      $echo "*** a static module, that should work as long as the dlopening application"
2872ef6fb4a5Smrg	      $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
2873ef6fb4a5Smrg	      if test -z "$global_symbol_pipe"; then
2874ef6fb4a5Smrg		$echo
2875ef6fb4a5Smrg		$echo "*** However, this would only work if libtool was able to extract symbol"
2876ef6fb4a5Smrg		$echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
2877ef6fb4a5Smrg		$echo "*** not find such a program.  So, this module is probably useless."
2878ef6fb4a5Smrg		$echo "*** \`nm' from GNU binutils and a full rebuild may help."
2879ef6fb4a5Smrg	      fi
2880ef6fb4a5Smrg	      if test "$build_old_libs" = no; then
2881ef6fb4a5Smrg		build_libtool_libs=module
2882ef6fb4a5Smrg		build_old_libs=yes
2883ef6fb4a5Smrg	      else
2884ef6fb4a5Smrg		build_libtool_libs=no
2885ef6fb4a5Smrg	      fi
2886ef6fb4a5Smrg	    fi
2887ef6fb4a5Smrg	  else
2888ef6fb4a5Smrg	    deplibs="$dir/$old_library $deplibs"
2889ef6fb4a5Smrg	    link_static=yes
2890ef6fb4a5Smrg	  fi
2891ef6fb4a5Smrg	fi # link shared/static library?
2892301ea0f4Smrg
2893ef6fb4a5Smrg	if test "$linkmode" = lib; then
2894ef6fb4a5Smrg	  if test -n "$dependency_libs" &&
2895ef6fb4a5Smrg	     { test "$hardcode_into_libs" != yes ||
2896ef6fb4a5Smrg	       test "$build_old_libs" = yes ||
2897ef6fb4a5Smrg	       test "$link_static" = yes; }; then
2898ef6fb4a5Smrg	    # Extract -R from dependency_libs
2899ef6fb4a5Smrg	    temp_deplibs=
2900ef6fb4a5Smrg	    for libdir in $dependency_libs; do
2901ef6fb4a5Smrg	      case $libdir in
2902ef6fb4a5Smrg	      -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
2903ef6fb4a5Smrg		   case " $xrpath " in
2904ef6fb4a5Smrg		   *" $temp_xrpath "*) ;;
2905ef6fb4a5Smrg		   *) xrpath="$xrpath $temp_xrpath";;
2906ef6fb4a5Smrg		   esac;;
2907ef6fb4a5Smrg	      *) temp_deplibs="$temp_deplibs $libdir";;
2908ef6fb4a5Smrg	      esac
2909ef6fb4a5Smrg	    done
2910ef6fb4a5Smrg	    dependency_libs="$temp_deplibs"
2911ef6fb4a5Smrg	  fi
2912301ea0f4Smrg
2913ef6fb4a5Smrg	  newlib_search_path="$newlib_search_path $absdir"
2914ef6fb4a5Smrg	  # Link against this library
2915ef6fb4a5Smrg	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
2916ef6fb4a5Smrg	  # ... and its dependency_libs
2917ef6fb4a5Smrg	  tmp_libs=
2918ef6fb4a5Smrg	  for deplib in $dependency_libs; do
2919ef6fb4a5Smrg	    newdependency_libs="$deplib $newdependency_libs"
2920ef6fb4a5Smrg	    if test "X$duplicate_deps" = "Xyes" ; then
2921ef6fb4a5Smrg	      case "$tmp_libs " in
2922ef6fb4a5Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2923ef6fb4a5Smrg	      esac
2924ef6fb4a5Smrg	    fi
2925ef6fb4a5Smrg	    tmp_libs="$tmp_libs $deplib"
2926ef6fb4a5Smrg	  done
29270cc67336Smrg
2928ef6fb4a5Smrg	  if test "$link_all_deplibs" != no; then
2929ef6fb4a5Smrg	    # Add the search paths of all dependency libraries
2930ef6fb4a5Smrg	    for deplib in $dependency_libs; do
2931ef6fb4a5Smrg	      case $deplib in
2932ef6fb4a5Smrg	      -L*) path="$deplib" ;;
2933ef6fb4a5Smrg	      *.la)
2934ef6fb4a5Smrg		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
2935ef6fb4a5Smrg		test "X$dir" = "X$deplib" && dir="."
2936ef6fb4a5Smrg		# We need an absolute path.
2937ef6fb4a5Smrg		case $dir in
2938ef6fb4a5Smrg		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
2939ef6fb4a5Smrg		*)
2940ef6fb4a5Smrg		  absdir=`cd "$dir" && pwd`
2941ef6fb4a5Smrg		  if test -z "$absdir"; then
2942ef6fb4a5Smrg		    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
2943ef6fb4a5Smrg		    absdir="$dir"
2944ef6fb4a5Smrg		  fi
2945ef6fb4a5Smrg		  ;;
2946ef6fb4a5Smrg		esac
2947ef6fb4a5Smrg		if grep "^installed=no" $deplib > /dev/null; then
2948ef6fb4a5Smrg		  path="$absdir/$objdir"
2949ef6fb4a5Smrg		else
2950ef6fb4a5Smrg		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
2951ef6fb4a5Smrg		  if test -z "$libdir"; then
2952ef6fb4a5Smrg		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
2953ef6fb4a5Smrg		    exit $EXIT_FAILURE
2954ef6fb4a5Smrg		  fi
2955ef6fb4a5Smrg		  if test "$absdir" != "$libdir"; then
2956ef6fb4a5Smrg		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
2957ef6fb4a5Smrg		  fi
2958ef6fb4a5Smrg		  path="$absdir"
2959ef6fb4a5Smrg		fi
2960ef6fb4a5Smrg		depdepl=
2961ef6fb4a5Smrg		case $host in
2962ef6fb4a5Smrg		*-*-darwin*)
2963ef6fb4a5Smrg		  # we do not want to link against static libs,
2964ef6fb4a5Smrg		  # but need to link against shared
2965ef6fb4a5Smrg		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
2966ef6fb4a5Smrg		  eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
2967ef6fb4a5Smrg		  if test -n "$deplibrary_names" ; then
2968ef6fb4a5Smrg		    for tmp in $deplibrary_names ; do
2969ef6fb4a5Smrg		      depdepl=$tmp
2970ef6fb4a5Smrg		    done
2971ef6fb4a5Smrg		    if test -f "$deplibdir/$depdepl" ; then
2972ef6fb4a5Smrg		      depdepl="$deplibdir/$depdepl"
2973ef6fb4a5Smrg	      	    elif test -f "$path/$depdepl" ; then
2974ef6fb4a5Smrg		      depdepl="$path/$depdepl"
2975ef6fb4a5Smrg		    else
2976ef6fb4a5Smrg		      # Can't find it, oh well...
2977ef6fb4a5Smrg		      depdepl=
2978ef6fb4a5Smrg		    fi
2979ef6fb4a5Smrg		    # do not add paths which are already there
2980ef6fb4a5Smrg		    case " $newlib_search_path " in
2981ef6fb4a5Smrg		    *" $path "*) ;;
2982ef6fb4a5Smrg		    *) newlib_search_path="$newlib_search_path $path";;
2983ef6fb4a5Smrg		    esac
2984ef6fb4a5Smrg		  fi
2985ef6fb4a5Smrg		  path=""
2986ef6fb4a5Smrg		  ;;
2987ef6fb4a5Smrg		*)
2988ef6fb4a5Smrg		  path="-L$path"
2989ef6fb4a5Smrg		  ;;
2990ef6fb4a5Smrg		esac
2991ef6fb4a5Smrg		;;
2992ef6fb4a5Smrg	      -l*)
2993ef6fb4a5Smrg		case $host in
2994ef6fb4a5Smrg		*-*-darwin*)
2995ef6fb4a5Smrg		  # Again, we only want to link against shared libraries
2996ef6fb4a5Smrg		  eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
2997ef6fb4a5Smrg		  for tmp in $newlib_search_path ; do
2998ef6fb4a5Smrg		    if test -f "$tmp/lib$tmp_libs.dylib" ; then
2999ef6fb4a5Smrg		      eval depdepl="$tmp/lib$tmp_libs.dylib"
3000ef6fb4a5Smrg		      break
3001ef6fb4a5Smrg		    fi
3002ef6fb4a5Smrg		  done
3003ef6fb4a5Smrg		  path=""
3004ef6fb4a5Smrg		  ;;
3005ef6fb4a5Smrg		*) continue ;;
3006ef6fb4a5Smrg		esac
3007ef6fb4a5Smrg		;;
3008ef6fb4a5Smrg	      *) continue ;;
3009ef6fb4a5Smrg	      esac
3010ef6fb4a5Smrg	      case " $deplibs " in
3011ef6fb4a5Smrg	      *" $path "*) ;;
3012ef6fb4a5Smrg	      *) deplibs="$path $deplibs" ;;
3013ef6fb4a5Smrg	      esac
3014ef6fb4a5Smrg	      case " $deplibs " in
3015ef6fb4a5Smrg	      *" $depdepl "*) ;;
3016ef6fb4a5Smrg	      *) deplibs="$depdepl $deplibs" ;;
3017ef6fb4a5Smrg	      esac
3018ef6fb4a5Smrg	    done
3019ef6fb4a5Smrg	  fi # link_all_deplibs != no
3020ef6fb4a5Smrg	fi # linkmode = lib
3021ef6fb4a5Smrg      done # for deplib in $libs
3022ef6fb4a5Smrg      dependency_libs="$newdependency_libs"
3023ef6fb4a5Smrg      if test "$pass" = dlpreopen; then
3024ef6fb4a5Smrg	# Link the dlpreopened libraries before other libraries
3025ef6fb4a5Smrg	for deplib in $save_deplibs; do
3026ef6fb4a5Smrg	  deplibs="$deplib $deplibs"
3027ef6fb4a5Smrg	done
3028ef6fb4a5Smrg      fi
3029ef6fb4a5Smrg      if test "$pass" != dlopen; then
3030ef6fb4a5Smrg	if test "$pass" != conv; then
3031ef6fb4a5Smrg	  # Make sure lib_search_path contains only unique directories.
3032ef6fb4a5Smrg	  lib_search_path=
3033ef6fb4a5Smrg	  for dir in $newlib_search_path; do
3034ef6fb4a5Smrg	    case "$lib_search_path " in
3035ef6fb4a5Smrg	    *" $dir "*) ;;
3036ef6fb4a5Smrg	    *) lib_search_path="$lib_search_path $dir" ;;
3037ef6fb4a5Smrg	    esac
3038ef6fb4a5Smrg	  done
3039ef6fb4a5Smrg	  newlib_search_path=
3040ef6fb4a5Smrg	fi
3041ef6fb4a5Smrg
3042ef6fb4a5Smrg	if test "$linkmode,$pass" != "prog,link"; then
3043ef6fb4a5Smrg	  vars="deplibs"
3044ef6fb4a5Smrg	else
3045ef6fb4a5Smrg	  vars="compile_deplibs finalize_deplibs"
3046ef6fb4a5Smrg	fi
3047ef6fb4a5Smrg	for var in $vars dependency_libs; do
3048ef6fb4a5Smrg	  # Add libraries to $var in reverse order
3049ef6fb4a5Smrg	  eval tmp_libs=\"\$$var\"
3050ef6fb4a5Smrg	  new_libs=
3051ef6fb4a5Smrg	  for deplib in $tmp_libs; do
3052ef6fb4a5Smrg	    # FIXME: Pedantically, this is the right thing to do, so
3053ef6fb4a5Smrg	    #        that some nasty dependency loop isn't accidentally
3054ef6fb4a5Smrg	    #        broken:
3055ef6fb4a5Smrg	    #new_libs="$deplib $new_libs"
3056ef6fb4a5Smrg	    # Pragmatically, this seems to cause very few problems in
3057ef6fb4a5Smrg	    # practice:
3058ef6fb4a5Smrg	    case $deplib in
3059ef6fb4a5Smrg	    -L*) new_libs="$deplib $new_libs" ;;
3060ef6fb4a5Smrg	    -R*) ;;
3061ef6fb4a5Smrg	    *)
3062ef6fb4a5Smrg	      # And here is the reason: when a library appears more
3063ef6fb4a5Smrg	      # than once as an explicit dependence of a library, or
3064ef6fb4a5Smrg	      # is implicitly linked in more than once by the
3065ef6fb4a5Smrg	      # compiler, it is considered special, and multiple
3066ef6fb4a5Smrg	      # occurrences thereof are not removed.  Compare this
3067ef6fb4a5Smrg	      # with having the same library being listed as a
3068ef6fb4a5Smrg	      # dependency of multiple other libraries: in this case,
3069ef6fb4a5Smrg	      # we know (pedantically, we assume) the library does not
3070ef6fb4a5Smrg	      # need to be listed more than once, so we keep only the
3071ef6fb4a5Smrg	      # last copy.  This is not always right, but it is rare
3072ef6fb4a5Smrg	      # enough that we require users that really mean to play
3073ef6fb4a5Smrg	      # such unportable linking tricks to link the library
3074ef6fb4a5Smrg	      # using -Wl,-lname, so that libtool does not consider it
3075ef6fb4a5Smrg	      # for duplicate removal.
3076ef6fb4a5Smrg	      case " $specialdeplibs " in
3077ef6fb4a5Smrg	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
3078ef6fb4a5Smrg	      *)
3079ef6fb4a5Smrg		case " $new_libs " in
3080ef6fb4a5Smrg		*" $deplib "*) ;;
3081ef6fb4a5Smrg		*) new_libs="$deplib $new_libs" ;;
3082ef6fb4a5Smrg		esac
3083ef6fb4a5Smrg		;;
3084ef6fb4a5Smrg	      esac
3085ef6fb4a5Smrg	      ;;
3086ef6fb4a5Smrg	    esac
3087ef6fb4a5Smrg	  done
3088ef6fb4a5Smrg	  tmp_libs=
3089ef6fb4a5Smrg	  for deplib in $new_libs; do
3090ef6fb4a5Smrg	    case $deplib in
3091ef6fb4a5Smrg	    -L*)
3092ef6fb4a5Smrg	      case " $tmp_libs " in
3093ef6fb4a5Smrg	      *" $deplib "*) ;;
3094ef6fb4a5Smrg	      *) tmp_libs="$tmp_libs $deplib" ;;
3095ef6fb4a5Smrg	      esac
3096ef6fb4a5Smrg	      ;;
3097ef6fb4a5Smrg	    *) tmp_libs="$tmp_libs $deplib" ;;
3098ef6fb4a5Smrg	    esac
3099ef6fb4a5Smrg	  done
3100ef6fb4a5Smrg	  eval $var=\"$tmp_libs\"
3101ef6fb4a5Smrg	done # for var
3102ef6fb4a5Smrg      fi
3103ef6fb4a5Smrg      # Last step: remove runtime libs from dependency_libs
3104ef6fb4a5Smrg      # (they stay in deplibs)
3105ef6fb4a5Smrg      tmp_libs=
3106ef6fb4a5Smrg      for i in $dependency_libs ; do
3107ef6fb4a5Smrg	case " $predeps $postdeps $compiler_lib_search_path " in
3108ef6fb4a5Smrg	*" $i "*)
3109ef6fb4a5Smrg	  i=""
31100cc67336Smrg	  ;;
31110cc67336Smrg	esac
3112ef6fb4a5Smrg	if test -n "$i" ; then
3113ef6fb4a5Smrg	  tmp_libs="$tmp_libs $i"
3114ef6fb4a5Smrg	fi
3115ef6fb4a5Smrg      done
3116ef6fb4a5Smrg      dependency_libs=$tmp_libs
3117ef6fb4a5Smrg    done # for pass
3118ef6fb4a5Smrg    if test "$linkmode" = prog; then
3119ef6fb4a5Smrg      dlfiles="$newdlfiles"
3120ef6fb4a5Smrg      dlprefiles="$newdlprefiles"
31210cc67336Smrg    fi
31220cc67336Smrg
3123ef6fb4a5Smrg    case $linkmode in
3124ef6fb4a5Smrg    oldlib)
3125ef6fb4a5Smrg      case " $deplibs" in
3126ef6fb4a5Smrg      *\ -l* | *\ -L*)
3127ef6fb4a5Smrg	$echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;;
3128ef6fb4a5Smrg      esac
31290cc67336Smrg
3130ef6fb4a5Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3131ef6fb4a5Smrg	$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
3132ef6fb4a5Smrg      fi
3133301ea0f4Smrg
3134ef6fb4a5Smrg      if test -n "$rpath"; then
3135ef6fb4a5Smrg	$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
3136ef6fb4a5Smrg      fi
3137301ea0f4Smrg
3138ef6fb4a5Smrg      if test -n "$xrpath"; then
3139ef6fb4a5Smrg	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
3140ef6fb4a5Smrg      fi
3141301ea0f4Smrg
3142ef6fb4a5Smrg      if test -n "$vinfo"; then
3143ef6fb4a5Smrg	$echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
3144ef6fb4a5Smrg      fi
3145301ea0f4Smrg
3146ef6fb4a5Smrg      if test -n "$release"; then
3147ef6fb4a5Smrg	$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
3148ef6fb4a5Smrg      fi
3149301ea0f4Smrg
3150ef6fb4a5Smrg      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
3151ef6fb4a5Smrg	$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
3152ef6fb4a5Smrg      fi
3153301ea0f4Smrg
3154ef6fb4a5Smrg      # Now set the variables for building old libraries.
3155ef6fb4a5Smrg      build_libtool_libs=no
3156ef6fb4a5Smrg      oldlibs="$output"
3157ef6fb4a5Smrg      objs="$objs$old_deplibs"
3158ef6fb4a5Smrg      ;;
3159301ea0f4Smrg
3160ef6fb4a5Smrg    lib)
3161ef6fb4a5Smrg      # Make sure we only generate libraries of the form `libNAME.la'.
3162ef6fb4a5Smrg      case $outputname in
3163ef6fb4a5Smrg      lib*)
3164ef6fb4a5Smrg	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
3165ef6fb4a5Smrg	eval shared_ext=\"$shrext_cmds\"
3166ef6fb4a5Smrg	eval libname=\"$libname_spec\"
3167ef6fb4a5Smrg	;;
3168ef6fb4a5Smrg      *)
3169ef6fb4a5Smrg	if test "$module" = no; then
3170ef6fb4a5Smrg	  $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
3171ef6fb4a5Smrg	  $echo "$help" 1>&2
3172ef6fb4a5Smrg	  exit $EXIT_FAILURE
3173ef6fb4a5Smrg	fi
3174ef6fb4a5Smrg	if test "$need_lib_prefix" != no; then
3175ef6fb4a5Smrg	  # Add the "lib" prefix for modules if required
3176ef6fb4a5Smrg	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
3177ef6fb4a5Smrg	  eval shared_ext=\"$shrext_cmds\"
3178ef6fb4a5Smrg	  eval libname=\"$libname_spec\"
3179ef6fb4a5Smrg	else
3180ef6fb4a5Smrg	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
3181ef6fb4a5Smrg	fi
3182ef6fb4a5Smrg	;;
3183ef6fb4a5Smrg      esac
31840cc67336Smrg
3185ef6fb4a5Smrg      if test -n "$objs"; then
3186ef6fb4a5Smrg	if test "$deplibs_check_method" != pass_all; then
3187ef6fb4a5Smrg	  $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
3188ef6fb4a5Smrg	  exit $EXIT_FAILURE
3189ef6fb4a5Smrg	else
3190ef6fb4a5Smrg	  $echo
3191ef6fb4a5Smrg	  $echo "*** Warning: Linking the shared library $output against the non-libtool"
3192ef6fb4a5Smrg	  $echo "*** objects $objs is not portable!"
3193ef6fb4a5Smrg	  libobjs="$libobjs $objs"
3194ef6fb4a5Smrg	fi
3195ef6fb4a5Smrg      fi
31960cc67336Smrg
3197ef6fb4a5Smrg      if test "$dlself" != no; then
3198ef6fb4a5Smrg	$echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
3199ef6fb4a5Smrg      fi
32000cc67336Smrg
3201ef6fb4a5Smrg      set dummy $rpath
3202ef6fb4a5Smrg      if test "$#" -gt 2; then
3203ef6fb4a5Smrg	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
3204ef6fb4a5Smrg      fi
3205ef6fb4a5Smrg      install_libdir="$2"
32060cc67336Smrg
3207ef6fb4a5Smrg      oldlibs=
3208ef6fb4a5Smrg      if test -z "$rpath"; then
3209ef6fb4a5Smrg	if test "$build_libtool_libs" = yes; then
3210ef6fb4a5Smrg	  # Building a libtool convenience library.
3211ef6fb4a5Smrg	  # Some compilers have problems with a `.al' extension so
3212ef6fb4a5Smrg	  # convenience libraries should have the same extension an
3213ef6fb4a5Smrg	  # archive normally would.
3214ef6fb4a5Smrg	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
3215ef6fb4a5Smrg	  build_libtool_libs=convenience
3216ef6fb4a5Smrg	  build_old_libs=yes
3217ef6fb4a5Smrg	fi
32180cc67336Smrg
3219ef6fb4a5Smrg	if test -n "$vinfo"; then
3220ef6fb4a5Smrg	  $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
3221ef6fb4a5Smrg	fi
32220cc67336Smrg
3223ef6fb4a5Smrg	if test -n "$release"; then
3224ef6fb4a5Smrg	  $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
3225ef6fb4a5Smrg	fi
3226ef6fb4a5Smrg      else
32270cc67336Smrg
3228ef6fb4a5Smrg	# Parse the version information argument.
3229ef6fb4a5Smrg	save_ifs="$IFS"; IFS=':'
3230ef6fb4a5Smrg	set dummy $vinfo 0 0 0
3231ef6fb4a5Smrg	IFS="$save_ifs"
32320cc67336Smrg
3233ef6fb4a5Smrg	if test -n "$8"; then
3234ef6fb4a5Smrg	  $echo "$modename: too many parameters to \`-version-info'" 1>&2
3235ef6fb4a5Smrg	  $echo "$help" 1>&2
3236ef6fb4a5Smrg	  exit $EXIT_FAILURE
3237ef6fb4a5Smrg	fi
32380cc67336Smrg
3239ef6fb4a5Smrg	# convert absolute version numbers to libtool ages
3240ef6fb4a5Smrg	# this retains compatibility with .la files and attempts
3241ef6fb4a5Smrg	# to make the code below a bit more comprehensible
32420cc67336Smrg
3243ef6fb4a5Smrg	case $vinfo_number in
3244ef6fb4a5Smrg	yes)
3245ef6fb4a5Smrg	  number_major="$2"
3246ef6fb4a5Smrg	  number_minor="$3"
3247ef6fb4a5Smrg	  number_revision="$4"
3248ef6fb4a5Smrg	  #
3249ef6fb4a5Smrg	  # There are really only two kinds -- those that
3250ef6fb4a5Smrg	  # use the current revision as the major version
3251ef6fb4a5Smrg	  # and those that subtract age and use age as
3252ef6fb4a5Smrg	  # a minor version.  But, then there is irix
3253ef6fb4a5Smrg	  # which has an extra 1 added just for fun
3254ef6fb4a5Smrg	  #
3255ef6fb4a5Smrg	  case $version_type in
3256ef6fb4a5Smrg	  darwin|linux|osf|windows|none)
3257ef6fb4a5Smrg	    current=`expr $number_major + $number_minor`
3258ef6fb4a5Smrg	    age="$number_minor"
3259ef6fb4a5Smrg	    revision="$number_revision"
3260ef6fb4a5Smrg	    ;;
3261ef6fb4a5Smrg	  freebsd-aout|freebsd-elf|sunos)
3262ef6fb4a5Smrg	    current="$number_major"
3263ef6fb4a5Smrg	    revision="$number_minor"
3264ef6fb4a5Smrg	    age="0"
3265ef6fb4a5Smrg	    ;;
3266ef6fb4a5Smrg	  irix|nonstopux)
3267ef6fb4a5Smrg	    current=`expr $number_major + $number_minor`
3268ef6fb4a5Smrg	    age="$number_minor"
3269ef6fb4a5Smrg	    revision="$number_minor"
3270ef6fb4a5Smrg	    lt_irix_increment=no
3271ef6fb4a5Smrg	    ;;
3272ef6fb4a5Smrg	  esac
3273ef6fb4a5Smrg	  ;;
3274ef6fb4a5Smrg	no)
3275ef6fb4a5Smrg	  current="$2"
3276ef6fb4a5Smrg	  revision="$3"
3277ef6fb4a5Smrg	  age="$4"
3278ef6fb4a5Smrg	  ;;
3279ef6fb4a5Smrg	esac
32800cc67336Smrg
3281ef6fb4a5Smrg	# Check that each of the things are valid numbers.
3282ef6fb4a5Smrg	case $current in
3283ef6fb4a5Smrg	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]) ;;
3284ef6fb4a5Smrg	*)
3285ef6fb4a5Smrg	  $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
3286ef6fb4a5Smrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3287ef6fb4a5Smrg	  exit $EXIT_FAILURE
3288ef6fb4a5Smrg	  ;;
3289ef6fb4a5Smrg	esac
32900cc67336Smrg
3291ef6fb4a5Smrg	case $revision in
3292ef6fb4a5Smrg	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]) ;;
3293ef6fb4a5Smrg	*)
3294ef6fb4a5Smrg	  $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
3295ef6fb4a5Smrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3296ef6fb4a5Smrg	  exit $EXIT_FAILURE
3297ef6fb4a5Smrg	  ;;
3298ef6fb4a5Smrg	esac
32990cc67336Smrg
3300ef6fb4a5Smrg	case $age in
3301ef6fb4a5Smrg	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]) ;;
3302ef6fb4a5Smrg	*)
3303ef6fb4a5Smrg	  $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
3304ef6fb4a5Smrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3305ef6fb4a5Smrg	  exit $EXIT_FAILURE
3306ef6fb4a5Smrg	  ;;
3307ef6fb4a5Smrg	esac
33080cc67336Smrg
3309ef6fb4a5Smrg	if test "$age" -gt "$current"; then
3310ef6fb4a5Smrg	  $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
3311ef6fb4a5Smrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3312ef6fb4a5Smrg	  exit $EXIT_FAILURE
3313ef6fb4a5Smrg	fi
33140cc67336Smrg
3315ef6fb4a5Smrg	# Calculate the version variables.
3316ef6fb4a5Smrg	major=
3317ef6fb4a5Smrg	versuffix=
3318ef6fb4a5Smrg	verstring=
3319ef6fb4a5Smrg	case $version_type in
3320ef6fb4a5Smrg	none) ;;
33210cc67336Smrg
3322ef6fb4a5Smrg	darwin)
3323ef6fb4a5Smrg	  # Like Linux, but with the current version available in
3324ef6fb4a5Smrg	  # verstring for coding it into the library header
3325ef6fb4a5Smrg	  major=.`expr $current - $age`
3326ef6fb4a5Smrg	  versuffix="$major.$age.$revision"
3327ef6fb4a5Smrg	  # Darwin ld doesn't like 0 for these options...
3328ef6fb4a5Smrg	  minor_current=`expr $current + 1`
3329ef6fb4a5Smrg	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
3330ef6fb4a5Smrg	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
3331ef6fb4a5Smrg	  ;;
33320cc67336Smrg
3333ef6fb4a5Smrg	freebsd-aout)
3334ef6fb4a5Smrg	  major=".$current"
3335ef6fb4a5Smrg	  versuffix=".$current.$revision";
3336ef6fb4a5Smrg	  ;;
33370cc67336Smrg
3338ef6fb4a5Smrg	freebsd-elf)
3339ef6fb4a5Smrg	  major=".$current"
3340ef6fb4a5Smrg	  versuffix=".$current";
3341ef6fb4a5Smrg	  ;;
33420cc67336Smrg
3343ef6fb4a5Smrg	irix | nonstopux)
3344ef6fb4a5Smrg	  if test "X$lt_irix_increment" = "Xno"; then
3345ef6fb4a5Smrg	    major=`expr $current - $age`
3346ef6fb4a5Smrg	  else
3347ef6fb4a5Smrg	    major=`expr $current - $age + 1`
3348ef6fb4a5Smrg	  fi
3349ef6fb4a5Smrg	  case $version_type in
3350ef6fb4a5Smrg	    nonstopux) verstring_prefix=nonstopux ;;
3351ef6fb4a5Smrg	    *)         verstring_prefix=sgi ;;
3352ef6fb4a5Smrg	  esac
3353ef6fb4a5Smrg	  verstring="$verstring_prefix$major.$revision"
3354301ea0f4Smrg
3355ef6fb4a5Smrg	  # Add in all the interfaces that we are compatible with.
3356ef6fb4a5Smrg	  loop=$revision
3357ef6fb4a5Smrg	  while test "$loop" -ne 0; do
3358ef6fb4a5Smrg	    iface=`expr $revision - $loop`
3359ef6fb4a5Smrg	    loop=`expr $loop - 1`
3360ef6fb4a5Smrg	    verstring="$verstring_prefix$major.$iface:$verstring"
3361ef6fb4a5Smrg	  done
3362301ea0f4Smrg
3363ef6fb4a5Smrg	  # Before this point, $major must not contain `.'.
3364ef6fb4a5Smrg	  major=.$major
3365ef6fb4a5Smrg	  versuffix="$major.$revision"
3366ef6fb4a5Smrg	  ;;
3367301ea0f4Smrg
3368ef6fb4a5Smrg	linux)
3369ef6fb4a5Smrg	  major=.`expr $current - $age`
3370ef6fb4a5Smrg	  versuffix="$major.$age.$revision"
3371ef6fb4a5Smrg	  ;;
3372301ea0f4Smrg
3373ef6fb4a5Smrg	osf)
3374ef6fb4a5Smrg	  major=.`expr $current - $age`
3375ef6fb4a5Smrg	  versuffix=".$current.$age.$revision"
3376ef6fb4a5Smrg	  verstring="$current.$age.$revision"
3377301ea0f4Smrg
3378ef6fb4a5Smrg	  # Add in all the interfaces that we are compatible with.
3379ef6fb4a5Smrg	  loop=$age
3380ef6fb4a5Smrg	  while test "$loop" -ne 0; do
3381ef6fb4a5Smrg	    iface=`expr $current - $loop`
3382ef6fb4a5Smrg	    loop=`expr $loop - 1`
3383ef6fb4a5Smrg	    verstring="$verstring:${iface}.0"
3384ef6fb4a5Smrg	  done
3385301ea0f4Smrg
3386ef6fb4a5Smrg	  # Make executables depend on our current version.
3387ef6fb4a5Smrg	  verstring="$verstring:${current}.0"
3388ef6fb4a5Smrg	  ;;
3389301ea0f4Smrg
3390ef6fb4a5Smrg	sunos)
3391ef6fb4a5Smrg	  major=".$current"
3392ef6fb4a5Smrg	  versuffix=".$current.$revision"
3393ef6fb4a5Smrg	  ;;
3394301ea0f4Smrg
3395ef6fb4a5Smrg	windows)
3396ef6fb4a5Smrg	  # Use '-' rather than '.', since we only want one
3397ef6fb4a5Smrg	  # extension on DOS 8.3 filesystems.
3398ef6fb4a5Smrg	  major=`expr $current - $age`
3399ef6fb4a5Smrg	  versuffix="-$major"
3400ef6fb4a5Smrg	  ;;
3401301ea0f4Smrg
3402ef6fb4a5Smrg	*)
3403ef6fb4a5Smrg	  $echo "$modename: unknown library version type \`$version_type'" 1>&2
3404ef6fb4a5Smrg	  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
3405ef6fb4a5Smrg	  exit $EXIT_FAILURE
3406ef6fb4a5Smrg	  ;;
3407ef6fb4a5Smrg	esac
3408301ea0f4Smrg
3409ef6fb4a5Smrg	# Clear the version info if we defaulted, and they specified a release.
3410ef6fb4a5Smrg	if test -z "$vinfo" && test -n "$release"; then
3411ef6fb4a5Smrg	  major=
3412ef6fb4a5Smrg	  case $version_type in
3413ef6fb4a5Smrg	  darwin)
3414ef6fb4a5Smrg	    # we can't check for "0.0" in archive_cmds due to quoting
3415ef6fb4a5Smrg	    # problems, so we reset it completely
3416ef6fb4a5Smrg	    verstring=
34170cc67336Smrg	    ;;
3418ef6fb4a5Smrg	  *)
3419ef6fb4a5Smrg	    verstring="0.0"
3420ef6fb4a5Smrg	    ;;
3421ef6fb4a5Smrg	  esac
3422ef6fb4a5Smrg	  if test "$need_version" = no; then
3423ef6fb4a5Smrg	    versuffix=
3424ef6fb4a5Smrg	  else
3425ef6fb4a5Smrg	    versuffix=".0.0"
3426ef6fb4a5Smrg	  fi
3427ef6fb4a5Smrg	fi
3428301ea0f4Smrg
3429ef6fb4a5Smrg	# Remove version info from name if versioning should be avoided
3430ef6fb4a5Smrg	if test "$avoid_version" = yes && test "$need_version" = no; then
3431ef6fb4a5Smrg	  major=
3432ef6fb4a5Smrg	  versuffix=
3433ef6fb4a5Smrg	  verstring=""
3434ef6fb4a5Smrg	fi
3435301ea0f4Smrg
3436ef6fb4a5Smrg	# Check to see if the archive will have undefined symbols.
3437ef6fb4a5Smrg	if test "$allow_undefined" = yes; then
3438ef6fb4a5Smrg	  if test "$allow_undefined_flag" = unsupported; then
3439ef6fb4a5Smrg	    $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
3440ef6fb4a5Smrg	    build_libtool_libs=no
3441ef6fb4a5Smrg	    build_old_libs=yes
3442ef6fb4a5Smrg	  fi
3443ef6fb4a5Smrg	else
3444ef6fb4a5Smrg	  # Don't allow undefined symbols.
3445ef6fb4a5Smrg	  allow_undefined_flag="$no_undefined_flag"
3446ef6fb4a5Smrg	fi
3447ef6fb4a5Smrg      fi
3448301ea0f4Smrg
3449ef6fb4a5Smrg      if test "$mode" != relink; then
3450ef6fb4a5Smrg	# Remove our outputs, but don't remove object files since they
3451ef6fb4a5Smrg	# may have been created when compiling PIC objects.
3452ef6fb4a5Smrg	removelist=
3453ef6fb4a5Smrg	tempremovelist=`$echo "$output_objdir/*"`
3454ef6fb4a5Smrg	for p in $tempremovelist; do
3455ef6fb4a5Smrg	  case $p in
3456ef6fb4a5Smrg	    *.$objext)
3457ef6fb4a5Smrg	       ;;
3458ef6fb4a5Smrg	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
3459ef6fb4a5Smrg	       if test "X$precious_files_regex" != "X"; then
3460ef6fb4a5Smrg	         if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
3461ef6fb4a5Smrg	         then
3462ef6fb4a5Smrg		   continue
3463ef6fb4a5Smrg		 fi
3464ef6fb4a5Smrg	       fi
3465ef6fb4a5Smrg	       removelist="$removelist $p"
3466ef6fb4a5Smrg	       ;;
3467ef6fb4a5Smrg	    *) ;;
3468ef6fb4a5Smrg	  esac
3469ef6fb4a5Smrg	done
3470ef6fb4a5Smrg	if test -n "$removelist"; then
3471ef6fb4a5Smrg	  $show "${rm}r $removelist"
3472ef6fb4a5Smrg	  $run ${rm}r $removelist
3473ef6fb4a5Smrg	fi
3474ef6fb4a5Smrg      fi
3475301ea0f4Smrg
3476ef6fb4a5Smrg      # Now set the variables for building old libraries.
3477ef6fb4a5Smrg      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
3478ef6fb4a5Smrg	oldlibs="$oldlibs $output_objdir/$libname.$libext"
3479301ea0f4Smrg
3480ef6fb4a5Smrg	# Transform .lo files to .o files.
3481ef6fb4a5Smrg	oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
3482ef6fb4a5Smrg      fi
3483301ea0f4Smrg
3484ef6fb4a5Smrg      # Eliminate all temporary directories.
3485ef6fb4a5Smrg      #for path in $notinst_path; do
3486ef6fb4a5Smrg      #	lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
3487ef6fb4a5Smrg      #	deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
3488ef6fb4a5Smrg      #	dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
3489ef6fb4a5Smrg      #done
3490301ea0f4Smrg
3491ef6fb4a5Smrg      if test -n "$xrpath"; then
3492ef6fb4a5Smrg	# If the user specified any rpath flags, then add them.
3493ef6fb4a5Smrg	temp_xrpath=
3494ef6fb4a5Smrg	for libdir in $xrpath; do
3495ef6fb4a5Smrg	  temp_xrpath="$temp_xrpath -R$libdir"
3496ef6fb4a5Smrg	  case "$finalize_rpath " in
3497ef6fb4a5Smrg	  *" $libdir "*) ;;
3498ef6fb4a5Smrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
3499ef6fb4a5Smrg	  esac
3500ef6fb4a5Smrg	done
3501ef6fb4a5Smrg	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
3502ef6fb4a5Smrg	  dependency_libs="$temp_xrpath $dependency_libs"
3503ef6fb4a5Smrg	fi
3504ef6fb4a5Smrg      fi
3505301ea0f4Smrg
3506ef6fb4a5Smrg      # Make sure dlfiles contains only unique files that won't be dlpreopened
3507ef6fb4a5Smrg      old_dlfiles="$dlfiles"
3508ef6fb4a5Smrg      dlfiles=
3509ef6fb4a5Smrg      for lib in $old_dlfiles; do
3510ef6fb4a5Smrg	case " $dlprefiles $dlfiles " in
3511ef6fb4a5Smrg	*" $lib "*) ;;
3512ef6fb4a5Smrg	*) dlfiles="$dlfiles $lib" ;;
3513ef6fb4a5Smrg	esac
3514ef6fb4a5Smrg      done
3515301ea0f4Smrg
3516ef6fb4a5Smrg      # Make sure dlprefiles contains only unique files
3517ef6fb4a5Smrg      old_dlprefiles="$dlprefiles"
3518ef6fb4a5Smrg      dlprefiles=
3519ef6fb4a5Smrg      for lib in $old_dlprefiles; do
3520ef6fb4a5Smrg	case "$dlprefiles " in
3521ef6fb4a5Smrg	*" $lib "*) ;;
3522ef6fb4a5Smrg	*) dlprefiles="$dlprefiles $lib" ;;
3523ef6fb4a5Smrg	esac
3524ef6fb4a5Smrg      done
3525301ea0f4Smrg
3526ef6fb4a5Smrg      if test "$build_libtool_libs" = yes; then
3527ef6fb4a5Smrg	if test -n "$rpath"; then
3528ef6fb4a5Smrg	  case $host in
3529ef6fb4a5Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
3530ef6fb4a5Smrg	    # these systems don't actually have a c library (as such)!
3531ef6fb4a5Smrg	    ;;
3532ef6fb4a5Smrg	  *-*-rhapsody* | *-*-darwin1.[012])
3533ef6fb4a5Smrg	    # Rhapsody C library is in the System framework
3534ef6fb4a5Smrg	    deplibs="$deplibs -framework System"
3535ef6fb4a5Smrg	    ;;
3536ef6fb4a5Smrg	  *-*-netbsd*)
3537ef6fb4a5Smrg	    # Don't link with libc until the a.out ld.so is fixed.
3538ef6fb4a5Smrg	    ;;
3539ef6fb4a5Smrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
3540ef6fb4a5Smrg	    # Do not include libc due to us having libc/libc_r.
3541ef6fb4a5Smrg	    ;;
3542ef6fb4a5Smrg	  *-*-sco3.2v5* | *-*-sco5v6*)
3543ef6fb4a5Smrg	    # Causes problems with __ctype
3544ef6fb4a5Smrg	    ;;
3545ef6fb4a5Smrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
3546ef6fb4a5Smrg	    # Compiler inserts libc in the correct place for threads to work
3547ef6fb4a5Smrg	    ;;
3548ef6fb4a5Smrg 	  *)
3549ef6fb4a5Smrg	    # Add libc to deplibs on all other systems if necessary.
3550ef6fb4a5Smrg	    if test "$build_libtool_need_lc" = "yes"; then
3551ef6fb4a5Smrg	      deplibs="$deplibs -lc"
3552ef6fb4a5Smrg	    fi
3553ef6fb4a5Smrg	    ;;
3554ef6fb4a5Smrg	  esac
3555ef6fb4a5Smrg	fi
3556301ea0f4Smrg
3557ef6fb4a5Smrg	# Transform deplibs into only deplibs that can be linked in shared.
3558ef6fb4a5Smrg	name_save=$name
3559ef6fb4a5Smrg	libname_save=$libname
3560ef6fb4a5Smrg	release_save=$release
3561ef6fb4a5Smrg	versuffix_save=$versuffix
3562ef6fb4a5Smrg	major_save=$major
3563ef6fb4a5Smrg	# I'm not sure if I'm treating the release correctly.  I think
3564ef6fb4a5Smrg	# release should show up in the -l (ie -lgmp5) so we don't want to
3565ef6fb4a5Smrg	# add it in twice.  Is that correct?
3566ef6fb4a5Smrg	release=""
3567ef6fb4a5Smrg	versuffix=""
3568ef6fb4a5Smrg	major=""
3569ef6fb4a5Smrg	newdeplibs=
3570ef6fb4a5Smrg	droppeddeps=no
3571ef6fb4a5Smrg	case $deplibs_check_method in
3572ef6fb4a5Smrg	pass_all)
3573ef6fb4a5Smrg	  # Don't check for shared/static.  Everything works.
3574ef6fb4a5Smrg	  # This might be a little naive.  We might want to check
3575ef6fb4a5Smrg	  # whether the library exists or not.  But this is on
3576ef6fb4a5Smrg	  # osf3 & osf4 and I'm not really sure... Just
3577ef6fb4a5Smrg	  # implementing what was already the behavior.
3578ef6fb4a5Smrg	  newdeplibs=$deplibs
3579ef6fb4a5Smrg	  ;;
3580ef6fb4a5Smrg	test_compile)
3581ef6fb4a5Smrg	  # This code stresses the "libraries are programs" paradigm to its
3582ef6fb4a5Smrg	  # limits. Maybe even breaks it.  We compile a program, linking it
3583ef6fb4a5Smrg	  # against the deplibs as a proxy for the library.  Then we can check
3584ef6fb4a5Smrg	  # whether they linked in statically or dynamically with ldd.
3585ef6fb4a5Smrg	  $rm conftest.c
3586ef6fb4a5Smrg	  cat > conftest.c <<EOF
3587ef6fb4a5Smrg	  int main() { return 0; }
3588ef6fb4a5SmrgEOF
3589ef6fb4a5Smrg	  $rm conftest
3590ef6fb4a5Smrg	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
3591ef6fb4a5Smrg	    ldd_output=`ldd conftest`
3592ef6fb4a5Smrg	    for i in $deplibs; do
3593ef6fb4a5Smrg	      name=`expr $i : '-l\(.*\)'`
3594ef6fb4a5Smrg	      # If $name is empty we are operating on a -L argument.
3595ef6fb4a5Smrg              if test "$name" != "" && test "$name" != "0"; then
3596ef6fb4a5Smrg		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3597ef6fb4a5Smrg		  case " $predeps $postdeps " in
3598ef6fb4a5Smrg		  *" $i "*)
3599ef6fb4a5Smrg		    newdeplibs="$newdeplibs $i"
3600ef6fb4a5Smrg		    i=""
3601ef6fb4a5Smrg		    ;;
3602ef6fb4a5Smrg		  esac
3603ef6fb4a5Smrg	        fi
3604ef6fb4a5Smrg		if test -n "$i" ; then
3605ef6fb4a5Smrg		  libname=`eval \\$echo \"$libname_spec\"`
3606ef6fb4a5Smrg		  deplib_matches=`eval \\$echo \"$library_names_spec\"`
3607ef6fb4a5Smrg		  set dummy $deplib_matches
3608ef6fb4a5Smrg		  deplib_match=$2
3609ef6fb4a5Smrg		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3610ef6fb4a5Smrg		    newdeplibs="$newdeplibs $i"
3611ef6fb4a5Smrg		  else
3612ef6fb4a5Smrg		    droppeddeps=yes
3613ef6fb4a5Smrg		    $echo
3614ef6fb4a5Smrg		    $echo "*** Warning: dynamic linker does not accept needed library $i."
3615ef6fb4a5Smrg		    $echo "*** I have the capability to make that library automatically link in when"
3616ef6fb4a5Smrg		    $echo "*** you link to this library.  But I can only do this if you have a"
3617ef6fb4a5Smrg		    $echo "*** shared version of the library, which I believe you do not have"
3618ef6fb4a5Smrg		    $echo "*** because a test_compile did reveal that the linker did not use it for"
3619ef6fb4a5Smrg		    $echo "*** its dynamic dependency list that programs get resolved with at runtime."
3620ef6fb4a5Smrg		  fi
3621ef6fb4a5Smrg		fi
3622ef6fb4a5Smrg	      else
3623ef6fb4a5Smrg		newdeplibs="$newdeplibs $i"
3624ef6fb4a5Smrg	      fi
3625ef6fb4a5Smrg	    done
3626ef6fb4a5Smrg	  else
3627ef6fb4a5Smrg	    # Error occurred in the first compile.  Let's try to salvage
3628ef6fb4a5Smrg	    # the situation: Compile a separate program for each library.
3629ef6fb4a5Smrg	    for i in $deplibs; do
3630ef6fb4a5Smrg	      name=`expr $i : '-l\(.*\)'`
3631ef6fb4a5Smrg	      # If $name is empty we are operating on a -L argument.
3632ef6fb4a5Smrg              if test "$name" != "" && test "$name" != "0"; then
3633ef6fb4a5Smrg		$rm conftest
3634ef6fb4a5Smrg		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
3635ef6fb4a5Smrg		  ldd_output=`ldd conftest`
3636ef6fb4a5Smrg		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3637ef6fb4a5Smrg		    case " $predeps $postdeps " in
3638ef6fb4a5Smrg		    *" $i "*)
3639ef6fb4a5Smrg		      newdeplibs="$newdeplibs $i"
3640ef6fb4a5Smrg		      i=""
3641ef6fb4a5Smrg		      ;;
3642ef6fb4a5Smrg		    esac
3643ef6fb4a5Smrg		  fi
3644ef6fb4a5Smrg		  if test -n "$i" ; then
3645ef6fb4a5Smrg		    libname=`eval \\$echo \"$libname_spec\"`
3646ef6fb4a5Smrg		    deplib_matches=`eval \\$echo \"$library_names_spec\"`
3647ef6fb4a5Smrg		    set dummy $deplib_matches
3648ef6fb4a5Smrg		    deplib_match=$2
3649ef6fb4a5Smrg		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3650ef6fb4a5Smrg		      newdeplibs="$newdeplibs $i"
3651ef6fb4a5Smrg		    else
3652ef6fb4a5Smrg		      droppeddeps=yes
3653ef6fb4a5Smrg		      $echo
3654ef6fb4a5Smrg		      $echo "*** Warning: dynamic linker does not accept needed library $i."
3655ef6fb4a5Smrg		      $echo "*** I have the capability to make that library automatically link in when"
3656ef6fb4a5Smrg		      $echo "*** you link to this library.  But I can only do this if you have a"
3657ef6fb4a5Smrg		      $echo "*** shared version of the library, which you do not appear to have"
3658ef6fb4a5Smrg		      $echo "*** because a test_compile did reveal that the linker did not use this one"
3659ef6fb4a5Smrg		      $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
3660ef6fb4a5Smrg		    fi
3661ef6fb4a5Smrg		  fi
3662ef6fb4a5Smrg		else
3663ef6fb4a5Smrg		  droppeddeps=yes
3664ef6fb4a5Smrg		  $echo
3665ef6fb4a5Smrg		  $echo "*** Warning!  Library $i is needed by this library but I was not able to"
3666ef6fb4a5Smrg		  $echo "*** make it link in!  You will probably need to install it or some"
3667ef6fb4a5Smrg		  $echo "*** library that it depends on before this library will be fully"
3668ef6fb4a5Smrg		  $echo "*** functional.  Installing it before continuing would be even better."
3669ef6fb4a5Smrg		fi
3670ef6fb4a5Smrg	      else
3671ef6fb4a5Smrg		newdeplibs="$newdeplibs $i"
3672ef6fb4a5Smrg	      fi
3673ef6fb4a5Smrg	    done
3674ef6fb4a5Smrg	  fi
3675ef6fb4a5Smrg	  ;;
3676ef6fb4a5Smrg	file_magic*)
3677ef6fb4a5Smrg	  set dummy $deplibs_check_method
3678ef6fb4a5Smrg	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3679ef6fb4a5Smrg	  for a_deplib in $deplibs; do
3680ef6fb4a5Smrg	    name=`expr $a_deplib : '-l\(.*\)'`
3681ef6fb4a5Smrg	    # If $name is empty we are operating on a -L argument.
3682ef6fb4a5Smrg            if test "$name" != "" && test  "$name" != "0"; then
3683ef6fb4a5Smrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3684ef6fb4a5Smrg		case " $predeps $postdeps " in
3685ef6fb4a5Smrg		*" $a_deplib "*)
3686ef6fb4a5Smrg		  newdeplibs="$newdeplibs $a_deplib"
3687ef6fb4a5Smrg		  a_deplib=""
3688ef6fb4a5Smrg		  ;;
3689ef6fb4a5Smrg		esac
3690ef6fb4a5Smrg	      fi
3691ef6fb4a5Smrg	      if test -n "$a_deplib" ; then
3692ef6fb4a5Smrg		libname=`eval \\$echo \"$libname_spec\"`
3693ef6fb4a5Smrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3694ef6fb4a5Smrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3695ef6fb4a5Smrg		  for potent_lib in $potential_libs; do
3696ef6fb4a5Smrg		      # Follow soft links.
3697ef6fb4a5Smrg		      if ls -lLd "$potent_lib" 2>/dev/null \
3698ef6fb4a5Smrg			 | grep " -> " >/dev/null; then
3699ef6fb4a5Smrg			continue
3700ef6fb4a5Smrg		      fi
3701ef6fb4a5Smrg		      # The statement above tries to avoid entering an
3702ef6fb4a5Smrg		      # endless loop below, in case of cyclic links.
3703ef6fb4a5Smrg		      # We might still enter an endless loop, since a link
3704ef6fb4a5Smrg		      # loop can be closed while we follow links,
3705ef6fb4a5Smrg		      # but so what?
3706ef6fb4a5Smrg		      potlib="$potent_lib"
3707ef6fb4a5Smrg		      while test -h "$potlib" 2>/dev/null; do
3708ef6fb4a5Smrg			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
3709ef6fb4a5Smrg			case $potliblink in
3710ef6fb4a5Smrg			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
3711ef6fb4a5Smrg			*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
3712ef6fb4a5Smrg			esac
3713ef6fb4a5Smrg		      done
3714ef6fb4a5Smrg		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
3715ef6fb4a5Smrg			 | ${SED} 10q \
3716ef6fb4a5Smrg			 | $EGREP "$file_magic_regex" > /dev/null; then
3717ef6fb4a5Smrg			newdeplibs="$newdeplibs $a_deplib"
3718ef6fb4a5Smrg			a_deplib=""
3719ef6fb4a5Smrg			break 2
3720ef6fb4a5Smrg		      fi
3721ef6fb4a5Smrg		  done
3722ef6fb4a5Smrg		done
3723ef6fb4a5Smrg	      fi
3724ef6fb4a5Smrg	      if test -n "$a_deplib" ; then
3725ef6fb4a5Smrg		droppeddeps=yes
3726ef6fb4a5Smrg		$echo
3727ef6fb4a5Smrg		$echo "*** Warning: linker path does not have real file for library $a_deplib."
3728ef6fb4a5Smrg		$echo "*** I have the capability to make that library automatically link in when"
3729ef6fb4a5Smrg		$echo "*** you link to this library.  But I can only do this if you have a"
3730ef6fb4a5Smrg		$echo "*** shared version of the library, which you do not appear to have"
3731ef6fb4a5Smrg		$echo "*** because I did check the linker path looking for a file starting"
3732ef6fb4a5Smrg		if test -z "$potlib" ; then
3733ef6fb4a5Smrg		  $echo "*** with $libname but no candidates were found. (...for file magic test)"
3734ef6fb4a5Smrg		else
3735ef6fb4a5Smrg		  $echo "*** with $libname and none of the candidates passed a file format test"
3736ef6fb4a5Smrg		  $echo "*** using a file magic. Last file checked: $potlib"
3737ef6fb4a5Smrg		fi
3738ef6fb4a5Smrg	      fi
3739ef6fb4a5Smrg	    else
3740ef6fb4a5Smrg	      # Add a -L argument.
3741ef6fb4a5Smrg	      newdeplibs="$newdeplibs $a_deplib"
3742ef6fb4a5Smrg	    fi
3743ef6fb4a5Smrg	  done # Gone through all deplibs.
3744ef6fb4a5Smrg	  ;;
3745ef6fb4a5Smrg	match_pattern*)
3746ef6fb4a5Smrg	  set dummy $deplibs_check_method
3747ef6fb4a5Smrg	  match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3748ef6fb4a5Smrg	  for a_deplib in $deplibs; do
3749ef6fb4a5Smrg	    name=`expr $a_deplib : '-l\(.*\)'`
3750ef6fb4a5Smrg	    # If $name is empty we are operating on a -L argument.
3751ef6fb4a5Smrg	    if test -n "$name" && test "$name" != "0"; then
3752ef6fb4a5Smrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3753ef6fb4a5Smrg		case " $predeps $postdeps " in
3754ef6fb4a5Smrg		*" $a_deplib "*)
3755ef6fb4a5Smrg		  newdeplibs="$newdeplibs $a_deplib"
3756ef6fb4a5Smrg		  a_deplib=""
3757ef6fb4a5Smrg		  ;;
3758ef6fb4a5Smrg		esac
3759ef6fb4a5Smrg	      fi
3760ef6fb4a5Smrg	      if test -n "$a_deplib" ; then
3761ef6fb4a5Smrg		libname=`eval \\$echo \"$libname_spec\"`
3762ef6fb4a5Smrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3763ef6fb4a5Smrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3764ef6fb4a5Smrg		  for potent_lib in $potential_libs; do
3765ef6fb4a5Smrg		    potlib="$potent_lib" # see symlink-check above in file_magic test
3766ef6fb4a5Smrg		    if eval $echo \"$potent_lib\" 2>/dev/null \
3767ef6fb4a5Smrg		        | ${SED} 10q \
3768ef6fb4a5Smrg		        | $EGREP "$match_pattern_regex" > /dev/null; then
3769ef6fb4a5Smrg		      newdeplibs="$newdeplibs $a_deplib"
3770ef6fb4a5Smrg		      a_deplib=""
3771ef6fb4a5Smrg		      break 2
3772ef6fb4a5Smrg		    fi
3773ef6fb4a5Smrg		  done
3774ef6fb4a5Smrg		done
3775ef6fb4a5Smrg	      fi
3776ef6fb4a5Smrg	      if test -n "$a_deplib" ; then
3777ef6fb4a5Smrg		droppeddeps=yes
3778ef6fb4a5Smrg		$echo
3779ef6fb4a5Smrg		$echo "*** Warning: linker path does not have real file for library $a_deplib."
3780ef6fb4a5Smrg		$echo "*** I have the capability to make that library automatically link in when"
3781ef6fb4a5Smrg		$echo "*** you link to this library.  But I can only do this if you have a"
3782ef6fb4a5Smrg		$echo "*** shared version of the library, which you do not appear to have"
3783ef6fb4a5Smrg		$echo "*** because I did check the linker path looking for a file starting"
3784ef6fb4a5Smrg		if test -z "$potlib" ; then
3785ef6fb4a5Smrg		  $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
3786ef6fb4a5Smrg		else
3787ef6fb4a5Smrg		  $echo "*** with $libname and none of the candidates passed a file format test"
3788ef6fb4a5Smrg		  $echo "*** using a regex pattern. Last file checked: $potlib"
3789ef6fb4a5Smrg		fi
3790ef6fb4a5Smrg	      fi
3791ef6fb4a5Smrg	    else
3792ef6fb4a5Smrg	      # Add a -L argument.
3793ef6fb4a5Smrg	      newdeplibs="$newdeplibs $a_deplib"
3794ef6fb4a5Smrg	    fi
3795ef6fb4a5Smrg	  done # Gone through all deplibs.
3796ef6fb4a5Smrg	  ;;
3797ef6fb4a5Smrg	none | unknown | *)
3798ef6fb4a5Smrg	  newdeplibs=""
3799ef6fb4a5Smrg	  tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
3800ef6fb4a5Smrg	    -e 's/ -[LR][^ ]*//g'`
3801ef6fb4a5Smrg	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3802ef6fb4a5Smrg	    for i in $predeps $postdeps ; do
3803ef6fb4a5Smrg	      # can't use Xsed below, because $i might contain '/'
3804ef6fb4a5Smrg	      tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
3805ef6fb4a5Smrg	    done
3806ef6fb4a5Smrg	  fi
3807ef6fb4a5Smrg	  if $echo "X $tmp_deplibs" | $Xsed -e 's/[ 	]//g' \
3808ef6fb4a5Smrg	    | grep . >/dev/null; then
3809ef6fb4a5Smrg	    $echo
3810ef6fb4a5Smrg	    if test "X$deplibs_check_method" = "Xnone"; then
3811ef6fb4a5Smrg	      $echo "*** Warning: inter-library dependencies are not supported in this platform."
3812ef6fb4a5Smrg	    else
3813ef6fb4a5Smrg	      $echo "*** Warning: inter-library dependencies are not known to be supported."
3814ef6fb4a5Smrg	    fi
3815ef6fb4a5Smrg	    $echo "*** All declared inter-library dependencies are being dropped."
3816ef6fb4a5Smrg	    droppeddeps=yes
3817ef6fb4a5Smrg	  fi
3818ef6fb4a5Smrg	  ;;
3819ef6fb4a5Smrg	esac
3820ef6fb4a5Smrg	versuffix=$versuffix_save
3821ef6fb4a5Smrg	major=$major_save
3822ef6fb4a5Smrg	release=$release_save
3823ef6fb4a5Smrg	libname=$libname_save
3824ef6fb4a5Smrg	name=$name_save
3825301ea0f4Smrg
3826ef6fb4a5Smrg	case $host in
3827ef6fb4a5Smrg	*-*-rhapsody* | *-*-darwin1.[012])
3828ef6fb4a5Smrg	  # On Rhapsody replace the C library is the System framework
3829ef6fb4a5Smrg	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
3830ef6fb4a5Smrg	  ;;
3831ef6fb4a5Smrg	esac
3832301ea0f4Smrg
3833ef6fb4a5Smrg	if test "$droppeddeps" = yes; then
3834ef6fb4a5Smrg	  if test "$module" = yes; then
3835ef6fb4a5Smrg	    $echo
3836ef6fb4a5Smrg	    $echo "*** Warning: libtool could not satisfy all declared inter-library"
3837ef6fb4a5Smrg	    $echo "*** dependencies of module $libname.  Therefore, libtool will create"
3838ef6fb4a5Smrg	    $echo "*** a static module, that should work as long as the dlopening"
3839ef6fb4a5Smrg	    $echo "*** application is linked with the -dlopen flag."
3840ef6fb4a5Smrg	    if test -z "$global_symbol_pipe"; then
3841ef6fb4a5Smrg	      $echo
3842ef6fb4a5Smrg	      $echo "*** However, this would only work if libtool was able to extract symbol"
3843ef6fb4a5Smrg	      $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
3844ef6fb4a5Smrg	      $echo "*** not find such a program.  So, this module is probably useless."
3845ef6fb4a5Smrg	      $echo "*** \`nm' from GNU binutils and a full rebuild may help."
3846ef6fb4a5Smrg	    fi
3847ef6fb4a5Smrg	    if test "$build_old_libs" = no; then
3848ef6fb4a5Smrg	      oldlibs="$output_objdir/$libname.$libext"
3849ef6fb4a5Smrg	      build_libtool_libs=module
3850ef6fb4a5Smrg	      build_old_libs=yes
3851ef6fb4a5Smrg	    else
3852ef6fb4a5Smrg	      build_libtool_libs=no
3853ef6fb4a5Smrg	    fi
3854ef6fb4a5Smrg	  else
3855ef6fb4a5Smrg	    $echo "*** The inter-library dependencies that have been dropped here will be"
3856ef6fb4a5Smrg	    $echo "*** automatically added whenever a program is linked with this library"
3857ef6fb4a5Smrg	    $echo "*** or is declared to -dlopen it."
3858301ea0f4Smrg
3859ef6fb4a5Smrg	    if test "$allow_undefined" = no; then
3860ef6fb4a5Smrg	      $echo
3861ef6fb4a5Smrg	      $echo "*** Since this library must not contain undefined symbols,"
3862ef6fb4a5Smrg	      $echo "*** because either the platform does not support them or"
3863ef6fb4a5Smrg	      $echo "*** it was explicitly requested with -no-undefined,"
3864ef6fb4a5Smrg	      $echo "*** libtool will only create a static version of it."
3865ef6fb4a5Smrg	      if test "$build_old_libs" = no; then
3866ef6fb4a5Smrg		oldlibs="$output_objdir/$libname.$libext"
3867ef6fb4a5Smrg		build_libtool_libs=module
3868ef6fb4a5Smrg		build_old_libs=yes
3869ef6fb4a5Smrg	      else
3870ef6fb4a5Smrg		build_libtool_libs=no
3871ef6fb4a5Smrg	      fi
3872ef6fb4a5Smrg	    fi
3873ef6fb4a5Smrg	  fi
3874ef6fb4a5Smrg	fi
3875ef6fb4a5Smrg	# Done checking deplibs!
3876ef6fb4a5Smrg	deplibs=$newdeplibs
3877ef6fb4a5Smrg      fi
3878301ea0f4Smrg
3879301ea0f4Smrg
3880ef6fb4a5Smrg      # move library search paths that coincide with paths to not yet
3881ef6fb4a5Smrg      # installed libraries to the beginning of the library search list
3882ef6fb4a5Smrg      new_libs=
3883ef6fb4a5Smrg      for path in $notinst_path; do
3884ef6fb4a5Smrg	case " $new_libs " in
3885ef6fb4a5Smrg	*" -L$path/$objdir "*) ;;
3886ef6fb4a5Smrg	*)
3887ef6fb4a5Smrg	  case " $deplibs " in
3888ef6fb4a5Smrg	  *" -L$path/$objdir "*)
3889ef6fb4a5Smrg	    new_libs="$new_libs -L$path/$objdir" ;;
3890ef6fb4a5Smrg	  esac
3891ef6fb4a5Smrg	  ;;
3892ef6fb4a5Smrg	esac
3893ef6fb4a5Smrg      done
3894ef6fb4a5Smrg      for deplib in $deplibs; do
3895ef6fb4a5Smrg	case $deplib in
3896ef6fb4a5Smrg	-L*)
3897ef6fb4a5Smrg	  case " $new_libs " in
3898ef6fb4a5Smrg	  *" $deplib "*) ;;
3899ef6fb4a5Smrg	  *) new_libs="$new_libs $deplib" ;;
3900ef6fb4a5Smrg	  esac
3901ef6fb4a5Smrg	  ;;
3902ef6fb4a5Smrg	*) new_libs="$new_libs $deplib" ;;
3903ef6fb4a5Smrg	esac
3904ef6fb4a5Smrg      done
3905ef6fb4a5Smrg      deplibs="$new_libs"
3906301ea0f4Smrg
3907301ea0f4Smrg
3908ef6fb4a5Smrg      # All the library-specific variables (install_libdir is set above).
3909ef6fb4a5Smrg      library_names=
3910ef6fb4a5Smrg      old_library=
3911ef6fb4a5Smrg      dlname=
3912301ea0f4Smrg
3913ef6fb4a5Smrg      # Test again, we may have decided not to build it any more
3914ef6fb4a5Smrg      if test "$build_libtool_libs" = yes; then
3915ef6fb4a5Smrg	if test "$hardcode_into_libs" = yes; then
3916ef6fb4a5Smrg	  # Hardcode the library paths
3917ef6fb4a5Smrg	  hardcode_libdirs=
3918ef6fb4a5Smrg	  dep_rpath=
3919ef6fb4a5Smrg	  rpath="$finalize_rpath"
3920ef6fb4a5Smrg	  test "$mode" != relink && rpath="$compile_rpath$rpath"
3921ef6fb4a5Smrg	  for libdir in $rpath; do
3922ef6fb4a5Smrg	    if test -n "$hardcode_libdir_flag_spec"; then
3923ef6fb4a5Smrg	      if test -n "$hardcode_libdir_separator"; then
3924ef6fb4a5Smrg		if test -z "$hardcode_libdirs"; then
3925ef6fb4a5Smrg		  hardcode_libdirs="$libdir"
3926ef6fb4a5Smrg		else
3927ef6fb4a5Smrg		  # Just accumulate the unique libdirs.
3928ef6fb4a5Smrg		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
3929ef6fb4a5Smrg		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
3930ef6fb4a5Smrg		    ;;
3931ef6fb4a5Smrg		  *)
3932ef6fb4a5Smrg		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
3933ef6fb4a5Smrg		    ;;
3934ef6fb4a5Smrg		  esac
3935ef6fb4a5Smrg		fi
3936ef6fb4a5Smrg	      else
3937ef6fb4a5Smrg		eval flag=\"$hardcode_libdir_flag_spec\"
3938ef6fb4a5Smrg		dep_rpath="$dep_rpath $flag"
3939ef6fb4a5Smrg	      fi
3940ef6fb4a5Smrg	    elif test -n "$runpath_var"; then
3941ef6fb4a5Smrg	      case "$perm_rpath " in
3942ef6fb4a5Smrg	      *" $libdir "*) ;;
3943ef6fb4a5Smrg	      *) perm_rpath="$perm_rpath $libdir" ;;
3944ef6fb4a5Smrg	      esac
3945ef6fb4a5Smrg	    fi
3946ef6fb4a5Smrg	  done
3947ef6fb4a5Smrg	  # Substitute the hardcoded libdirs into the rpath.
3948ef6fb4a5Smrg	  if test -n "$hardcode_libdir_separator" &&
3949ef6fb4a5Smrg	     test -n "$hardcode_libdirs"; then
3950ef6fb4a5Smrg	    libdir="$hardcode_libdirs"
3951ef6fb4a5Smrg	    if test -n "$hardcode_libdir_flag_spec_ld"; then
3952ef6fb4a5Smrg	      case $archive_cmds in
3953ef6fb4a5Smrg	      *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;;
3954ef6fb4a5Smrg	      *)      eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;;
3955ef6fb4a5Smrg	      esac
3956ef6fb4a5Smrg	    else
3957ef6fb4a5Smrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
3958ef6fb4a5Smrg	    fi
3959ef6fb4a5Smrg	  fi
3960ef6fb4a5Smrg	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
3961ef6fb4a5Smrg	    # We should set the runpath_var.
3962ef6fb4a5Smrg	    rpath=
3963ef6fb4a5Smrg	    for dir in $perm_rpath; do
3964ef6fb4a5Smrg	      rpath="$rpath$dir:"
3965ef6fb4a5Smrg	    done
3966ef6fb4a5Smrg	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
3967ef6fb4a5Smrg	  fi
3968ef6fb4a5Smrg	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
3969ef6fb4a5Smrg	fi
3970301ea0f4Smrg
3971ef6fb4a5Smrg	shlibpath="$finalize_shlibpath"
3972ef6fb4a5Smrg	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
3973ef6fb4a5Smrg	if test -n "$shlibpath"; then
3974ef6fb4a5Smrg	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
3975ef6fb4a5Smrg	fi
3976301ea0f4Smrg
3977ef6fb4a5Smrg	# Get the real and link names of the library.
3978ef6fb4a5Smrg	eval shared_ext=\"$shrext_cmds\"
3979ef6fb4a5Smrg	eval library_names=\"$library_names_spec\"
3980ef6fb4a5Smrg	set dummy $library_names
3981ef6fb4a5Smrg	realname="$2"
3982ef6fb4a5Smrg	shift; shift
3983301ea0f4Smrg
3984ef6fb4a5Smrg	if test -n "$soname_spec"; then
3985ef6fb4a5Smrg	  eval soname=\"$soname_spec\"
3986ef6fb4a5Smrg	else
3987ef6fb4a5Smrg	  soname="$realname"
3988ef6fb4a5Smrg	fi
3989ef6fb4a5Smrg	if test -z "$dlname"; then
3990ef6fb4a5Smrg	  dlname=$soname
3991ef6fb4a5Smrg	fi
3992301ea0f4Smrg
3993ef6fb4a5Smrg	lib="$output_objdir/$realname"
3994ef6fb4a5Smrg	linknames=
3995ef6fb4a5Smrg	for link
3996ef6fb4a5Smrg	do
3997ef6fb4a5Smrg	  linknames="$linknames $link"
3998ef6fb4a5Smrg	done
3999301ea0f4Smrg
4000ef6fb4a5Smrg	# Use standard objects if they are pic
4001ef6fb4a5Smrg	test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4002301ea0f4Smrg
4003ef6fb4a5Smrg	# Prepare the list of exported symbols
4004ef6fb4a5Smrg	if test -z "$export_symbols"; then
4005ef6fb4a5Smrg	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
4006ef6fb4a5Smrg	    $show "generating symbol list for \`$libname.la'"
4007ef6fb4a5Smrg	    export_symbols="$output_objdir/$libname.exp"
4008ef6fb4a5Smrg	    $run $rm $export_symbols
4009ef6fb4a5Smrg	    cmds=$export_symbols_cmds
4010ef6fb4a5Smrg	    save_ifs="$IFS"; IFS='~'
4011ef6fb4a5Smrg	    for cmd in $cmds; do
4012ef6fb4a5Smrg	      IFS="$save_ifs"
4013ef6fb4a5Smrg	      eval cmd=\"$cmd\"
4014ef6fb4a5Smrg	      if len=`expr "X$cmd" : ".*"` &&
4015ef6fb4a5Smrg	       test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
4016ef6fb4a5Smrg	        $show "$cmd"
4017ef6fb4a5Smrg	        $run eval "$cmd" || exit $?
4018ef6fb4a5Smrg	        skipped_export=false
4019ef6fb4a5Smrg	      else
4020ef6fb4a5Smrg	        # The command line is too long to execute in one step.
4021ef6fb4a5Smrg	        $show "using reloadable object file for export list..."
4022ef6fb4a5Smrg	        skipped_export=:
4023ef6fb4a5Smrg		# Break out early, otherwise skipped_export may be
4024ef6fb4a5Smrg		# set to false by a later but shorter cmd.
4025ef6fb4a5Smrg		break
4026ef6fb4a5Smrg	      fi
4027ef6fb4a5Smrg	    done
4028ef6fb4a5Smrg	    IFS="$save_ifs"
4029ef6fb4a5Smrg	    if test -n "$export_symbols_regex"; then
4030ef6fb4a5Smrg	      $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
4031ef6fb4a5Smrg	      $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
4032ef6fb4a5Smrg	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
4033ef6fb4a5Smrg	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
4034ef6fb4a5Smrg	    fi
4035ef6fb4a5Smrg	  fi
4036ef6fb4a5Smrg	fi
4037301ea0f4Smrg
4038ef6fb4a5Smrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
4039ef6fb4a5Smrg	  $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
4040ef6fb4a5Smrg	fi
4041301ea0f4Smrg
4042ef6fb4a5Smrg	tmp_deplibs=
4043ef6fb4a5Smrg	for test_deplib in $deplibs; do
4044ef6fb4a5Smrg		case " $convenience " in
4045ef6fb4a5Smrg		*" $test_deplib "*) ;;
4046ef6fb4a5Smrg		*)
4047ef6fb4a5Smrg			tmp_deplibs="$tmp_deplibs $test_deplib"
4048ef6fb4a5Smrg			;;
4049ef6fb4a5Smrg		esac
4050ef6fb4a5Smrg	done
4051ef6fb4a5Smrg	deplibs="$tmp_deplibs"
4052301ea0f4Smrg
4053ef6fb4a5Smrg	if test -n "$convenience"; then
4054ef6fb4a5Smrg	  if test -n "$whole_archive_flag_spec"; then
4055ef6fb4a5Smrg	    save_libobjs=$libobjs
4056ef6fb4a5Smrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
4057ef6fb4a5Smrg	  else
4058ef6fb4a5Smrg	    gentop="$output_objdir/${outputname}x"
4059ef6fb4a5Smrg	    generated="$generated $gentop"
4060301ea0f4Smrg
4061ef6fb4a5Smrg	    func_extract_archives $gentop $convenience
4062ef6fb4a5Smrg	    libobjs="$libobjs $func_extract_archives_result"
4063ef6fb4a5Smrg	  fi
4064ef6fb4a5Smrg	fi
4065ef6fb4a5Smrg	
4066ef6fb4a5Smrg	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
4067ef6fb4a5Smrg	  eval flag=\"$thread_safe_flag_spec\"
4068ef6fb4a5Smrg	  linker_flags="$linker_flags $flag"
4069ef6fb4a5Smrg	fi
4070301ea0f4Smrg
4071ef6fb4a5Smrg	# Make a backup of the uninstalled library when relinking
4072ef6fb4a5Smrg	if test "$mode" = relink; then
4073ef6fb4a5Smrg	  $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
4074ef6fb4a5Smrg	fi
4075301ea0f4Smrg
4076ef6fb4a5Smrg	# Do each of the archive commands.
4077ef6fb4a5Smrg	if test "$module" = yes && test -n "$module_cmds" ; then
4078ef6fb4a5Smrg	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
4079ef6fb4a5Smrg	    eval test_cmds=\"$module_expsym_cmds\"
4080ef6fb4a5Smrg	    cmds=$module_expsym_cmds
4081ef6fb4a5Smrg	  else
4082ef6fb4a5Smrg	    eval test_cmds=\"$module_cmds\"
4083ef6fb4a5Smrg	    cmds=$module_cmds
4084ef6fb4a5Smrg	  fi
4085ef6fb4a5Smrg	else
4086ef6fb4a5Smrg	if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
4087ef6fb4a5Smrg	  eval test_cmds=\"$archive_expsym_cmds\"
4088ef6fb4a5Smrg	  cmds=$archive_expsym_cmds
4089ef6fb4a5Smrg	else
4090ef6fb4a5Smrg	  eval test_cmds=\"$archive_cmds\"
4091ef6fb4a5Smrg	  cmds=$archive_cmds
4092ef6fb4a5Smrg	  fi
4093ef6fb4a5Smrg	fi
4094301ea0f4Smrg
4095ef6fb4a5Smrg	if test "X$skipped_export" != "X:" &&
4096ef6fb4a5Smrg	   len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
4097ef6fb4a5Smrg	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
4098ef6fb4a5Smrg	  :
4099ef6fb4a5Smrg	else
4100ef6fb4a5Smrg	  # The command line is too long to link in one step, link piecewise.
4101ef6fb4a5Smrg	  $echo "creating reloadable object files..."
4102301ea0f4Smrg
4103ef6fb4a5Smrg	  # Save the value of $output and $libobjs because we want to
4104ef6fb4a5Smrg	  # use them later.  If we have whole_archive_flag_spec, we
4105ef6fb4a5Smrg	  # want to use save_libobjs as it was before
4106ef6fb4a5Smrg	  # whole_archive_flag_spec was expanded, because we can't
4107ef6fb4a5Smrg	  # assume the linker understands whole_archive_flag_spec.
4108ef6fb4a5Smrg	  # This may have to be revisited, in case too many
4109ef6fb4a5Smrg	  # convenience libraries get linked in and end up exceeding
4110ef6fb4a5Smrg	  # the spec.
4111ef6fb4a5Smrg	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
4112ef6fb4a5Smrg	    save_libobjs=$libobjs
4113ef6fb4a5Smrg	  fi
4114ef6fb4a5Smrg	  save_output=$output
4115ef6fb4a5Smrg	  output_la=`$echo "X$output" | $Xsed -e "$basename"`
4116301ea0f4Smrg
4117ef6fb4a5Smrg	  # Clear the reloadable object creation command queue and
4118ef6fb4a5Smrg	  # initialize k to one.
4119ef6fb4a5Smrg	  test_cmds=
4120ef6fb4a5Smrg	  concat_cmds=
4121ef6fb4a5Smrg	  objlist=
4122ef6fb4a5Smrg	  delfiles=
4123ef6fb4a5Smrg	  last_robj=
4124ef6fb4a5Smrg	  k=1
4125ef6fb4a5Smrg	  output=$output_objdir/$output_la-${k}.$objext
4126ef6fb4a5Smrg	  # Loop over the list of objects to be linked.
4127ef6fb4a5Smrg	  for obj in $save_libobjs
4128ef6fb4a5Smrg	  do
4129ef6fb4a5Smrg	    eval test_cmds=\"$reload_cmds $objlist $last_robj\"
4130ef6fb4a5Smrg	    if test "X$objlist" = X ||
4131ef6fb4a5Smrg	       { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
4132ef6fb4a5Smrg		 test "$len" -le "$max_cmd_len"; }; then
4133ef6fb4a5Smrg	      objlist="$objlist $obj"
4134ef6fb4a5Smrg	    else
4135ef6fb4a5Smrg	      # The command $test_cmds is almost too long, add a
4136ef6fb4a5Smrg	      # command to the queue.
4137ef6fb4a5Smrg	      if test "$k" -eq 1 ; then
4138ef6fb4a5Smrg		# The first file doesn't have a previous command to add.
4139ef6fb4a5Smrg		eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
4140ef6fb4a5Smrg	      else
4141ef6fb4a5Smrg		# All subsequent reloadable object files will link in
4142ef6fb4a5Smrg		# the last one created.
4143ef6fb4a5Smrg		eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
4144ef6fb4a5Smrg	      fi
4145ef6fb4a5Smrg	      last_robj=$output_objdir/$output_la-${k}.$objext
4146ef6fb4a5Smrg	      k=`expr $k + 1`
4147ef6fb4a5Smrg	      output=$output_objdir/$output_la-${k}.$objext
4148ef6fb4a5Smrg	      objlist=$obj
4149ef6fb4a5Smrg	      len=1
4150ef6fb4a5Smrg	    fi
4151ef6fb4a5Smrg	  done
4152ef6fb4a5Smrg	  # Handle the remaining objects by creating one last
4153ef6fb4a5Smrg	  # reloadable object file.  All subsequent reloadable object
4154ef6fb4a5Smrg	  # files will link in the last one created.
4155ef6fb4a5Smrg	  test -z "$concat_cmds" || concat_cmds=$concat_cmds~
4156ef6fb4a5Smrg	  eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
4157ef6fb4a5Smrg
4158ef6fb4a5Smrg	  if ${skipped_export-false}; then
4159ef6fb4a5Smrg	    $show "generating symbol list for \`$libname.la'"
4160ef6fb4a5Smrg	    export_symbols="$output_objdir/$libname.exp"
4161ef6fb4a5Smrg	    $run $rm $export_symbols
4162ef6fb4a5Smrg	    libobjs=$output
4163ef6fb4a5Smrg	    # Append the command to create the export file.
4164ef6fb4a5Smrg	    eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
4165ef6fb4a5Smrg          fi
4166ef6fb4a5Smrg
4167ef6fb4a5Smrg	  # Set up a command to remove the reloadable object files
4168ef6fb4a5Smrg	  # after they are used.
4169ef6fb4a5Smrg	  i=0
4170ef6fb4a5Smrg	  while test "$i" -lt "$k"
4171ef6fb4a5Smrg	  do
4172ef6fb4a5Smrg	    i=`expr $i + 1`
4173ef6fb4a5Smrg	    delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
4174ef6fb4a5Smrg	  done
4175301ea0f4Smrg
4176ef6fb4a5Smrg	  $echo "creating a temporary reloadable object file: $output"
4177301ea0f4Smrg
4178ef6fb4a5Smrg	  # Loop through the commands generated above and execute them.
4179ef6fb4a5Smrg	  save_ifs="$IFS"; IFS='~'
4180ef6fb4a5Smrg	  for cmd in $concat_cmds; do
4181ef6fb4a5Smrg	    IFS="$save_ifs"
4182ef6fb4a5Smrg	    $show "$cmd"
4183ef6fb4a5Smrg	    $run eval "$cmd" || exit $?
4184ef6fb4a5Smrg	  done
4185ef6fb4a5Smrg	  IFS="$save_ifs"
4186301ea0f4Smrg
4187ef6fb4a5Smrg	  libobjs=$output
4188ef6fb4a5Smrg	  # Restore the value of output.
4189ef6fb4a5Smrg	  output=$save_output
4190301ea0f4Smrg
4191ef6fb4a5Smrg	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
4192ef6fb4a5Smrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
4193ef6fb4a5Smrg	  fi
4194ef6fb4a5Smrg	  # Expand the library linking commands again to reset the
4195ef6fb4a5Smrg	  # value of $libobjs for piecewise linking.
4196301ea0f4Smrg
4197ef6fb4a5Smrg	  # Do each of the archive commands.
4198ef6fb4a5Smrg	  if test "$module" = yes && test -n "$module_cmds" ; then
4199ef6fb4a5Smrg	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
4200ef6fb4a5Smrg	      cmds=$module_expsym_cmds
4201ef6fb4a5Smrg	    else
4202ef6fb4a5Smrg	      cmds=$module_cmds
4203ef6fb4a5Smrg	    fi
4204ef6fb4a5Smrg	  else
4205ef6fb4a5Smrg	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
4206ef6fb4a5Smrg	    cmds=$archive_expsym_cmds
4207ef6fb4a5Smrg	  else
4208ef6fb4a5Smrg	    cmds=$archive_cmds
4209ef6fb4a5Smrg	    fi
4210ef6fb4a5Smrg	  fi
4211301ea0f4Smrg
4212ef6fb4a5Smrg	  # Append the command to remove the reloadable object files
4213ef6fb4a5Smrg	  # to the just-reset $cmds.
4214ef6fb4a5Smrg	  eval cmds=\"\$cmds~\$rm $delfiles\"
4215ef6fb4a5Smrg	fi
4216ef6fb4a5Smrg	save_ifs="$IFS"; IFS='~'
4217ef6fb4a5Smrg	for cmd in $cmds; do
4218ef6fb4a5Smrg	  IFS="$save_ifs"
4219ef6fb4a5Smrg	  eval cmd=\"$cmd\"
4220ef6fb4a5Smrg	  $show "$cmd"
4221ef6fb4a5Smrg	  $run eval "$cmd" || {
4222ef6fb4a5Smrg	    lt_exit=$?
4223301ea0f4Smrg
4224ef6fb4a5Smrg	    # Restore the uninstalled library and exit
4225ef6fb4a5Smrg	    if test "$mode" = relink; then
4226ef6fb4a5Smrg	      $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
4227ef6fb4a5Smrg	    fi
4228301ea0f4Smrg
4229ef6fb4a5Smrg	    exit $lt_exit
4230ef6fb4a5Smrg	  }
4231ef6fb4a5Smrg	done
4232ef6fb4a5Smrg	IFS="$save_ifs"
4233ef6fb4a5Smrg
4234ef6fb4a5Smrg	# Restore the uninstalled library and exit
4235ef6fb4a5Smrg	if test "$mode" = relink; then
4236ef6fb4a5Smrg	  $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
4237ef6fb4a5Smrg
4238ef6fb4a5Smrg	  if test -n "$convenience"; then
4239ef6fb4a5Smrg	    if test -z "$whole_archive_flag_spec"; then
4240ef6fb4a5Smrg	      $show "${rm}r $gentop"
4241ef6fb4a5Smrg	      $run ${rm}r "$gentop"
4242ef6fb4a5Smrg	    fi
4243ef6fb4a5Smrg	  fi
4244ef6fb4a5Smrg
4245ef6fb4a5Smrg	  exit $EXIT_SUCCESS
4246ef6fb4a5Smrg	fi
4247ef6fb4a5Smrg
4248ef6fb4a5Smrg	# Create links to the real library.
4249ef6fb4a5Smrg	for linkname in $linknames; do
4250ef6fb4a5Smrg	  if test "$realname" != "$linkname"; then
4251ef6fb4a5Smrg	    $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
4252ef6fb4a5Smrg	    $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
4253ef6fb4a5Smrg	  fi
4254ef6fb4a5Smrg	done
4255ef6fb4a5Smrg
4256ef6fb4a5Smrg	# If -module or -export-dynamic was specified, set the dlname.
4257ef6fb4a5Smrg	if test "$module" = yes || test "$export_dynamic" = yes; then
4258ef6fb4a5Smrg	  # On all known operating systems, these are identical.
4259ef6fb4a5Smrg	  dlname="$soname"
4260ef6fb4a5Smrg	fi
4261ef6fb4a5Smrg      fi
42620cc67336Smrg      ;;
4263301ea0f4Smrg
4264ef6fb4a5Smrg    obj)
4265ef6fb4a5Smrg      case " $deplibs" in
4266ef6fb4a5Smrg      *\ -l* | *\ -L*)
4267ef6fb4a5Smrg	$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;;
4268ef6fb4a5Smrg      esac
4269301ea0f4Smrg
4270ef6fb4a5Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
4271ef6fb4a5Smrg	$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
4272ef6fb4a5Smrg      fi
4273301ea0f4Smrg
4274ef6fb4a5Smrg      if test -n "$rpath"; then
4275ef6fb4a5Smrg	$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
4276ef6fb4a5Smrg      fi
4277ef6fb4a5Smrg
4278ef6fb4a5Smrg      if test -n "$xrpath"; then
4279ef6fb4a5Smrg	$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
4280ef6fb4a5Smrg      fi
4281ef6fb4a5Smrg
4282ef6fb4a5Smrg      if test -n "$vinfo"; then
4283ef6fb4a5Smrg	$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
4284ef6fb4a5Smrg      fi
4285ef6fb4a5Smrg
4286ef6fb4a5Smrg      if test -n "$release"; then
4287ef6fb4a5Smrg	$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
4288ef6fb4a5Smrg      fi
4289ef6fb4a5Smrg
4290ef6fb4a5Smrg      case $output in
4291ef6fb4a5Smrg      *.lo)
4292ef6fb4a5Smrg	if test -n "$objs$old_deplibs"; then
4293ef6fb4a5Smrg	  $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
4294ef6fb4a5Smrg	  exit $EXIT_FAILURE
4295ef6fb4a5Smrg	fi
4296ef6fb4a5Smrg	libobj="$output"
4297ef6fb4a5Smrg	obj=`$echo "X$output" | $Xsed -e "$lo2o"`
42980cc67336Smrg	;;
4299ef6fb4a5Smrg      *)
4300ef6fb4a5Smrg	libobj=
4301ef6fb4a5Smrg	obj="$output"
43020cc67336Smrg	;;
43030cc67336Smrg      esac
4304301ea0f4Smrg
4305ef6fb4a5Smrg      # Delete the old objects.
4306ef6fb4a5Smrg      $run $rm $obj $libobj
4307301ea0f4Smrg
4308ef6fb4a5Smrg      # Objects from convenience libraries.  This assumes
4309ef6fb4a5Smrg      # single-version convenience libraries.  Whenever we create
4310ef6fb4a5Smrg      # different ones for PIC/non-PIC, this we'll have to duplicate
4311ef6fb4a5Smrg      # the extraction.
4312ef6fb4a5Smrg      reload_conv_objs=
4313ef6fb4a5Smrg      gentop=
4314ef6fb4a5Smrg      # reload_cmds runs $LD directly, so let us get rid of
4315ef6fb4a5Smrg      # -Wl from whole_archive_flag_spec and hope we can get by with
4316ef6fb4a5Smrg      # turning comma into space..
4317ef6fb4a5Smrg      wl=
4318301ea0f4Smrg
4319ef6fb4a5Smrg      if test -n "$convenience"; then
4320ef6fb4a5Smrg	if test -n "$whole_archive_flag_spec"; then
4321ef6fb4a5Smrg	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
4322ef6fb4a5Smrg	  reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
4323ef6fb4a5Smrg	else
4324ef6fb4a5Smrg	  gentop="$output_objdir/${obj}x"
4325ef6fb4a5Smrg	  generated="$generated $gentop"
4326301ea0f4Smrg
4327ef6fb4a5Smrg	  func_extract_archives $gentop $convenience
4328ef6fb4a5Smrg	  reload_conv_objs="$reload_objs $func_extract_archives_result"
4329ef6fb4a5Smrg	fi
4330ef6fb4a5Smrg      fi
4331301ea0f4Smrg
4332ef6fb4a5Smrg      # Create the old-style object.
4333ef6fb4a5Smrg      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
4334301ea0f4Smrg
4335ef6fb4a5Smrg      output="$obj"
4336ef6fb4a5Smrg      cmds=$reload_cmds
4337ef6fb4a5Smrg      save_ifs="$IFS"; IFS='~'
4338ef6fb4a5Smrg      for cmd in $cmds; do
4339ef6fb4a5Smrg	IFS="$save_ifs"
4340ef6fb4a5Smrg	eval cmd=\"$cmd\"
4341ef6fb4a5Smrg	$show "$cmd"
4342ef6fb4a5Smrg	$run eval "$cmd" || exit $?
4343ef6fb4a5Smrg      done
4344ef6fb4a5Smrg      IFS="$save_ifs"
4345301ea0f4Smrg
4346ef6fb4a5Smrg      # Exit if we aren't doing a library object file.
4347ef6fb4a5Smrg      if test -z "$libobj"; then
4348ef6fb4a5Smrg	if test -n "$gentop"; then
4349ef6fb4a5Smrg	  $show "${rm}r $gentop"
4350ef6fb4a5Smrg	  $run ${rm}r $gentop
4351ef6fb4a5Smrg	fi
4352301ea0f4Smrg
4353ef6fb4a5Smrg	exit $EXIT_SUCCESS
4354ef6fb4a5Smrg      fi
4355301ea0f4Smrg
4356ef6fb4a5Smrg      if test "$build_libtool_libs" != yes; then
4357ef6fb4a5Smrg	if test -n "$gentop"; then
4358ef6fb4a5Smrg	  $show "${rm}r $gentop"
4359ef6fb4a5Smrg	  $run ${rm}r $gentop
4360ef6fb4a5Smrg	fi
4361301ea0f4Smrg
4362ef6fb4a5Smrg	# Create an invalid libtool object if no PIC, so that we don't
4363ef6fb4a5Smrg	# accidentally link it into a program.
4364ef6fb4a5Smrg	# $show "echo timestamp > $libobj"
4365ef6fb4a5Smrg	# $run eval "echo timestamp > $libobj" || exit $?
4366ef6fb4a5Smrg	exit $EXIT_SUCCESS
4367ef6fb4a5Smrg      fi
4368301ea0f4Smrg
4369ef6fb4a5Smrg      if test -n "$pic_flag" || test "$pic_mode" != default; then
4370ef6fb4a5Smrg	# Only do commands if we really have different PIC objects.
4371ef6fb4a5Smrg	reload_objs="$libobjs $reload_conv_objs"
4372ef6fb4a5Smrg	output="$libobj"
4373ef6fb4a5Smrg	cmds=$reload_cmds
4374ef6fb4a5Smrg	save_ifs="$IFS"; IFS='~'
4375ef6fb4a5Smrg	for cmd in $cmds; do
4376ef6fb4a5Smrg	  IFS="$save_ifs"
4377ef6fb4a5Smrg	  eval cmd=\"$cmd\"
4378ef6fb4a5Smrg	  $show "$cmd"
4379ef6fb4a5Smrg	  $run eval "$cmd" || exit $?
4380ef6fb4a5Smrg	done
4381ef6fb4a5Smrg	IFS="$save_ifs"
4382ef6fb4a5Smrg      fi
4383301ea0f4Smrg
4384ef6fb4a5Smrg      if test -n "$gentop"; then
4385ef6fb4a5Smrg	$show "${rm}r $gentop"
4386ef6fb4a5Smrg	$run ${rm}r $gentop
4387ef6fb4a5Smrg      fi
4388301ea0f4Smrg
4389ef6fb4a5Smrg      exit $EXIT_SUCCESS
4390ef6fb4a5Smrg      ;;
4391301ea0f4Smrg
4392ef6fb4a5Smrg    prog)
4393ef6fb4a5Smrg      case $host in
4394ef6fb4a5Smrg	*cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
4395ef6fb4a5Smrg      esac
4396ef6fb4a5Smrg      if test -n "$vinfo"; then
4397ef6fb4a5Smrg	$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
4398ef6fb4a5Smrg      fi
4399301ea0f4Smrg
4400ef6fb4a5Smrg      if test -n "$release"; then
4401ef6fb4a5Smrg	$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
4402ef6fb4a5Smrg      fi
4403301ea0f4Smrg
4404ef6fb4a5Smrg      if test "$preload" = yes; then
4405ef6fb4a5Smrg	if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
4406ef6fb4a5Smrg	   test "$dlopen_self_static" = unknown; then
4407ef6fb4a5Smrg	  $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
44080cc67336Smrg	fi
4409ef6fb4a5Smrg      fi
4410301ea0f4Smrg
4411ef6fb4a5Smrg      case $host in
4412ef6fb4a5Smrg      *-*-rhapsody* | *-*-darwin1.[012])
4413ef6fb4a5Smrg	# On Rhapsody replace the C library is the System framework
4414ef6fb4a5Smrg	compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
4415ef6fb4a5Smrg	finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
44160cc67336Smrg	;;
4417ef6fb4a5Smrg      esac
4418301ea0f4Smrg
4419ef6fb4a5Smrg      case $host in
4420ef6fb4a5Smrg      *darwin*)
4421ef6fb4a5Smrg        # Don't allow lazy linking, it breaks C++ global constructors
4422ef6fb4a5Smrg        if test "$tagname" = CXX ; then
4423ef6fb4a5Smrg        compile_command="$compile_command ${wl}-bind_at_load"
4424ef6fb4a5Smrg        finalize_command="$finalize_command ${wl}-bind_at_load"
4425ef6fb4a5Smrg        fi
4426ef6fb4a5Smrg        ;;
4427ef6fb4a5Smrg      esac
4428301ea0f4Smrg
4429301ea0f4Smrg
4430ef6fb4a5Smrg      # move library search paths that coincide with paths to not yet
4431ef6fb4a5Smrg      # installed libraries to the beginning of the library search list
4432ef6fb4a5Smrg      new_libs=
4433ef6fb4a5Smrg      for path in $notinst_path; do
4434ef6fb4a5Smrg	case " $new_libs " in
4435ef6fb4a5Smrg	*" -L$path/$objdir "*) ;;
4436ef6fb4a5Smrg	*)
4437ef6fb4a5Smrg	  case " $compile_deplibs " in
4438ef6fb4a5Smrg	  *" -L$path/$objdir "*)
4439ef6fb4a5Smrg	    new_libs="$new_libs -L$path/$objdir" ;;
4440ef6fb4a5Smrg	  esac
4441ef6fb4a5Smrg	  ;;
4442ef6fb4a5Smrg	esac
4443ef6fb4a5Smrg      done
4444ef6fb4a5Smrg      for deplib in $compile_deplibs; do
4445ef6fb4a5Smrg	case $deplib in
4446ef6fb4a5Smrg	-L*)
4447ef6fb4a5Smrg	  case " $new_libs " in
4448ef6fb4a5Smrg	  *" $deplib "*) ;;
4449ef6fb4a5Smrg	  *) new_libs="$new_libs $deplib" ;;
4450ef6fb4a5Smrg	  esac
4451ef6fb4a5Smrg	  ;;
4452ef6fb4a5Smrg	*) new_libs="$new_libs $deplib" ;;
4453ef6fb4a5Smrg	esac
4454ef6fb4a5Smrg      done
4455ef6fb4a5Smrg      compile_deplibs="$new_libs"
4456301ea0f4Smrg
4457301ea0f4Smrg
4458ef6fb4a5Smrg      compile_command="$compile_command $compile_deplibs"
4459ef6fb4a5Smrg      finalize_command="$finalize_command $finalize_deplibs"
4460301ea0f4Smrg
4461ef6fb4a5Smrg      if test -n "$rpath$xrpath"; then
4462ef6fb4a5Smrg	# If the user specified any rpath flags, then add them.
4463ef6fb4a5Smrg	for libdir in $rpath $xrpath; do
4464ef6fb4a5Smrg	  # This is the magic to use -rpath.
4465ef6fb4a5Smrg	  case "$finalize_rpath " in
4466ef6fb4a5Smrg	  *" $libdir "*) ;;
4467ef6fb4a5Smrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
4468ef6fb4a5Smrg	  esac
4469ef6fb4a5Smrg	done
4470ef6fb4a5Smrg      fi
4471301ea0f4Smrg
4472ef6fb4a5Smrg      # Now hardcode the library paths
4473ef6fb4a5Smrg      rpath=
4474ef6fb4a5Smrg      hardcode_libdirs=
4475ef6fb4a5Smrg      for libdir in $compile_rpath $finalize_rpath; do
4476ef6fb4a5Smrg	if test -n "$hardcode_libdir_flag_spec"; then
4477ef6fb4a5Smrg	  if test -n "$hardcode_libdir_separator"; then
4478ef6fb4a5Smrg	    if test -z "$hardcode_libdirs"; then
4479ef6fb4a5Smrg	      hardcode_libdirs="$libdir"
4480ef6fb4a5Smrg	    else
4481ef6fb4a5Smrg	      # Just accumulate the unique libdirs.
4482ef6fb4a5Smrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4483ef6fb4a5Smrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4484ef6fb4a5Smrg		;;
4485ef6fb4a5Smrg	      *)
4486ef6fb4a5Smrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4487ef6fb4a5Smrg		;;
4488ef6fb4a5Smrg	      esac
4489ef6fb4a5Smrg	    fi
44900cc67336Smrg	  else
4491ef6fb4a5Smrg	    eval flag=\"$hardcode_libdir_flag_spec\"
4492ef6fb4a5Smrg	    rpath="$rpath $flag"
44930cc67336Smrg	  fi
4494ef6fb4a5Smrg	elif test -n "$runpath_var"; then
4495ef6fb4a5Smrg	  case "$perm_rpath " in
4496ef6fb4a5Smrg	  *" $libdir "*) ;;
4497ef6fb4a5Smrg	  *) perm_rpath="$perm_rpath $libdir" ;;
4498ef6fb4a5Smrg	  esac
44990cc67336Smrg	fi
45000cc67336Smrg	case $host in
4501ef6fb4a5Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
4502ef6fb4a5Smrg	  testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
45030cc67336Smrg	  case :$dllsearchpath: in
4504ef6fb4a5Smrg	  *":$libdir:"*) ;;
4505ef6fb4a5Smrg	  *) dllsearchpath="$dllsearchpath:$libdir";;
45060cc67336Smrg	  esac
45070cc67336Smrg	  case :$dllsearchpath: in
45080cc67336Smrg	  *":$testbindir:"*) ;;
45090cc67336Smrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
45100cc67336Smrg	  esac
45110cc67336Smrg	  ;;
45120cc67336Smrg	esac
4513ef6fb4a5Smrg      done
4514ef6fb4a5Smrg      # Substitute the hardcoded libdirs into the rpath.
4515ef6fb4a5Smrg      if test -n "$hardcode_libdir_separator" &&
4516ef6fb4a5Smrg	 test -n "$hardcode_libdirs"; then
4517ef6fb4a5Smrg	libdir="$hardcode_libdirs"
4518ef6fb4a5Smrg	eval rpath=\" $hardcode_libdir_flag_spec\"
4519ef6fb4a5Smrg      fi
4520ef6fb4a5Smrg      compile_rpath="$rpath"
4521301ea0f4Smrg
4522ef6fb4a5Smrg      rpath=
4523ef6fb4a5Smrg      hardcode_libdirs=
4524ef6fb4a5Smrg      for libdir in $finalize_rpath; do
4525ef6fb4a5Smrg	if test -n "$hardcode_libdir_flag_spec"; then
4526ef6fb4a5Smrg	  if test -n "$hardcode_libdir_separator"; then
4527ef6fb4a5Smrg	    if test -z "$hardcode_libdirs"; then
4528ef6fb4a5Smrg	      hardcode_libdirs="$libdir"
4529ef6fb4a5Smrg	    else
4530ef6fb4a5Smrg	      # Just accumulate the unique libdirs.
4531ef6fb4a5Smrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4532ef6fb4a5Smrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4533ef6fb4a5Smrg		;;
4534ef6fb4a5Smrg	      *)
4535ef6fb4a5Smrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4536ef6fb4a5Smrg		;;
4537ef6fb4a5Smrg	      esac
4538ef6fb4a5Smrg	    fi
4539ef6fb4a5Smrg	  else
4540ef6fb4a5Smrg	    eval flag=\"$hardcode_libdir_flag_spec\"
4541ef6fb4a5Smrg	    rpath="$rpath $flag"
4542ef6fb4a5Smrg	  fi
4543ef6fb4a5Smrg	elif test -n "$runpath_var"; then
4544ef6fb4a5Smrg	  case "$finalize_perm_rpath " in
4545ef6fb4a5Smrg	  *" $libdir "*) ;;
4546ef6fb4a5Smrg	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
45470cc67336Smrg	  esac
45480cc67336Smrg	fi
4549ef6fb4a5Smrg      done
4550ef6fb4a5Smrg      # Substitute the hardcoded libdirs into the rpath.
4551ef6fb4a5Smrg      if test -n "$hardcode_libdir_separator" &&
4552ef6fb4a5Smrg	 test -n "$hardcode_libdirs"; then
4553ef6fb4a5Smrg	libdir="$hardcode_libdirs"
4554ef6fb4a5Smrg	eval rpath=\" $hardcode_libdir_flag_spec\"
4555ef6fb4a5Smrg      fi
4556ef6fb4a5Smrg      finalize_rpath="$rpath"
4557301ea0f4Smrg
4558ef6fb4a5Smrg      if test -n "$libobjs" && test "$build_old_libs" = yes; then
4559ef6fb4a5Smrg	# Transform all the library objects into standard objects.
4560ef6fb4a5Smrg	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4561ef6fb4a5Smrg	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4562ef6fb4a5Smrg      fi
4563301ea0f4Smrg
4564ef6fb4a5Smrg      dlsyms=
4565ef6fb4a5Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
4566ef6fb4a5Smrg	if test -n "$NM" && test -n "$global_symbol_pipe"; then
4567ef6fb4a5Smrg	  dlsyms="${outputname}S.c"
4568ef6fb4a5Smrg	else
4569ef6fb4a5Smrg	  $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
4570ef6fb4a5Smrg	fi
4571ef6fb4a5Smrg      fi
4572301ea0f4Smrg
4573ef6fb4a5Smrg      if test -n "$dlsyms"; then
4574ef6fb4a5Smrg	case $dlsyms in
4575ef6fb4a5Smrg	"") ;;
4576ef6fb4a5Smrg	*.c)
4577ef6fb4a5Smrg	  # Discover the nlist of each of the dlfiles.
4578ef6fb4a5Smrg	  nlist="$output_objdir/${outputname}.nm"
4579301ea0f4Smrg
4580ef6fb4a5Smrg	  $show "$rm $nlist ${nlist}S ${nlist}T"
4581ef6fb4a5Smrg	  $run $rm "$nlist" "${nlist}S" "${nlist}T"
4582301ea0f4Smrg
4583ef6fb4a5Smrg	  # Parse the name list into a source file.
4584ef6fb4a5Smrg	  $show "creating $output_objdir/$dlsyms"
4585301ea0f4Smrg
4586ef6fb4a5Smrg	  test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
4587ef6fb4a5Smrg/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
4588ef6fb4a5Smrg/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
4589301ea0f4Smrg
4590ef6fb4a5Smrg#ifdef __cplusplus
4591ef6fb4a5Smrgextern \"C\" {
4592ef6fb4a5Smrg#endif
4593301ea0f4Smrg
4594ef6fb4a5Smrg/* Prevent the only kind of declaration conflicts we can make. */
4595ef6fb4a5Smrg#define lt_preloaded_symbols some_other_symbol
4596301ea0f4Smrg
4597ef6fb4a5Smrg/* External symbol declarations for the compiler. */\
4598ef6fb4a5Smrg"
4599301ea0f4Smrg
4600ef6fb4a5Smrg	  if test "$dlself" = yes; then
4601ef6fb4a5Smrg	    $show "generating symbol list for \`$output'"
4602301ea0f4Smrg
4603ef6fb4a5Smrg	    test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
4604301ea0f4Smrg
4605ef6fb4a5Smrg	    # Add our own program objects to the symbol list.
4606ef6fb4a5Smrg	    progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4607ef6fb4a5Smrg	    for arg in $progfiles; do
4608ef6fb4a5Smrg	      $show "extracting global C symbols from \`$arg'"
4609ef6fb4a5Smrg	      $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4610ef6fb4a5Smrg	    done
4611301ea0f4Smrg
4612ef6fb4a5Smrg	    if test -n "$exclude_expsyms"; then
4613ef6fb4a5Smrg	      $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
4614ef6fb4a5Smrg	      $run eval '$mv "$nlist"T "$nlist"'
4615ef6fb4a5Smrg	    fi
4616301ea0f4Smrg
4617ef6fb4a5Smrg	    if test -n "$export_symbols_regex"; then
4618ef6fb4a5Smrg	      $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
4619ef6fb4a5Smrg	      $run eval '$mv "$nlist"T "$nlist"'
4620ef6fb4a5Smrg	    fi
4621301ea0f4Smrg
4622ef6fb4a5Smrg	    # Prepare the list of exported symbols
4623ef6fb4a5Smrg	    if test -z "$export_symbols"; then
4624ef6fb4a5Smrg	      export_symbols="$output_objdir/$outputname.exp"
4625ef6fb4a5Smrg	      $run $rm $export_symbols
4626ef6fb4a5Smrg	      $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
4627ef6fb4a5Smrg              case $host in
4628ef6fb4a5Smrg              *cygwin* | *mingw* )
4629ef6fb4a5Smrg	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4630ef6fb4a5Smrg		$run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
4631ef6fb4a5Smrg                ;;
4632ef6fb4a5Smrg              esac
4633ef6fb4a5Smrg	    else
4634ef6fb4a5Smrg	      $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
4635ef6fb4a5Smrg	      $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
4636ef6fb4a5Smrg	      $run eval 'mv "$nlist"T "$nlist"'
4637ef6fb4a5Smrg              case $host in
4638ef6fb4a5Smrg              *cygwin* | *mingw* )
4639ef6fb4a5Smrg	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4640ef6fb4a5Smrg		$run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
4641ef6fb4a5Smrg                ;;
4642ef6fb4a5Smrg              esac
4643ef6fb4a5Smrg	    fi
4644ef6fb4a5Smrg	  fi
4645301ea0f4Smrg
4646ef6fb4a5Smrg	  for arg in $dlprefiles; do
4647ef6fb4a5Smrg	    $show "extracting global C symbols from \`$arg'"
4648ef6fb4a5Smrg	    name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
4649ef6fb4a5Smrg	    $run eval '$echo ": $name " >> "$nlist"'
4650ef6fb4a5Smrg	    $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4651ef6fb4a5Smrg	  done
4652301ea0f4Smrg
4653ef6fb4a5Smrg	  if test -z "$run"; then
4654ef6fb4a5Smrg	    # Make sure we have at least an empty file.
4655ef6fb4a5Smrg	    test -f "$nlist" || : > "$nlist"
4656301ea0f4Smrg
4657ef6fb4a5Smrg	    if test -n "$exclude_expsyms"; then
4658ef6fb4a5Smrg	      $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
4659ef6fb4a5Smrg	      $mv "$nlist"T "$nlist"
4660ef6fb4a5Smrg	    fi
4661301ea0f4Smrg
4662ef6fb4a5Smrg	    # Try sorting and uniquifying the output.
4663ef6fb4a5Smrg	    if grep -v "^: " < "$nlist" |
4664ef6fb4a5Smrg		if sort -k 3 </dev/null >/dev/null 2>&1; then
4665ef6fb4a5Smrg		  sort -k 3
4666ef6fb4a5Smrg		else
4667ef6fb4a5Smrg		  sort +2
4668ef6fb4a5Smrg		fi |
4669ef6fb4a5Smrg		uniq > "$nlist"S; then
4670ef6fb4a5Smrg	      :
4671ef6fb4a5Smrg	    else
4672ef6fb4a5Smrg	      grep -v "^: " < "$nlist" > "$nlist"S
4673ef6fb4a5Smrg	    fi
4674301ea0f4Smrg
4675ef6fb4a5Smrg	    if test -f "$nlist"S; then
4676ef6fb4a5Smrg	      eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
4677ef6fb4a5Smrg	    else
4678ef6fb4a5Smrg	      $echo '/* NONE */' >> "$output_objdir/$dlsyms"
4679ef6fb4a5Smrg	    fi
4680301ea0f4Smrg
4681ef6fb4a5Smrg	    $echo >> "$output_objdir/$dlsyms" "\
4682301ea0f4Smrg
4683ef6fb4a5Smrg#undef lt_preloaded_symbols
4684301ea0f4Smrg
4685ef6fb4a5Smrg#if defined (__STDC__) && __STDC__
4686ef6fb4a5Smrg# define lt_ptr void *
4687ef6fb4a5Smrg#else
4688ef6fb4a5Smrg# define lt_ptr char *
4689ef6fb4a5Smrg# define const
4690ef6fb4a5Smrg#endif
4691301ea0f4Smrg
4692ef6fb4a5Smrg/* The mapping between symbol names and symbols. */
4693ef6fb4a5Smrg"
4694301ea0f4Smrg
4695ef6fb4a5Smrg	    case $host in
4696ef6fb4a5Smrg	    *cygwin* | *mingw* )
4697ef6fb4a5Smrg	  $echo >> "$output_objdir/$dlsyms" "\
4698ef6fb4a5Smrg/* DATA imports from DLLs on WIN32 can't be const, because
4699ef6fb4a5Smrg   runtime relocations are performed -- see ld's documentation
4700ef6fb4a5Smrg   on pseudo-relocs */
4701ef6fb4a5Smrgstruct {
4702ef6fb4a5Smrg"
4703ef6fb4a5Smrg	      ;;
4704ef6fb4a5Smrg	    * )
4705ef6fb4a5Smrg	  $echo >> "$output_objdir/$dlsyms" "\
4706ef6fb4a5Smrgconst struct {
4707ef6fb4a5Smrg"
4708ef6fb4a5Smrg	      ;;
4709ef6fb4a5Smrg	    esac
4710301ea0f4Smrg
4711301ea0f4Smrg
4712ef6fb4a5Smrg	  $echo >> "$output_objdir/$dlsyms" "\
4713ef6fb4a5Smrg  const char *name;
4714ef6fb4a5Smrg  lt_ptr address;
4715ef6fb4a5Smrg}
4716ef6fb4a5Smrglt_preloaded_symbols[] =
4717ef6fb4a5Smrg{\
4718ef6fb4a5Smrg"
47190cc67336Smrg
4720ef6fb4a5Smrg	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
47210cc67336Smrg
4722ef6fb4a5Smrg	    $echo >> "$output_objdir/$dlsyms" "\
4723ef6fb4a5Smrg  {0, (lt_ptr) 0}
4724ef6fb4a5Smrg};
47250cc67336Smrg
4726ef6fb4a5Smrg/* This works around a problem in FreeBSD linker */
4727ef6fb4a5Smrg#ifdef FREEBSD_WORKAROUND
4728ef6fb4a5Smrgstatic const void *lt_preloaded_setup() {
4729ef6fb4a5Smrg  return lt_preloaded_symbols;
4730ef6fb4a5Smrg}
4731ef6fb4a5Smrg#endif
47320cc67336Smrg
4733ef6fb4a5Smrg#ifdef __cplusplus
4734ef6fb4a5Smrg}
4735ef6fb4a5Smrg#endif\
4736ef6fb4a5Smrg"
47370cc67336Smrg	  fi
47380cc67336Smrg
4739ef6fb4a5Smrg	  pic_flag_for_symtable=
4740ef6fb4a5Smrg	  case $host in
4741ef6fb4a5Smrg	  # compiling the symbol table file with pic_flag works around
4742ef6fb4a5Smrg	  # a FreeBSD bug that causes programs to crash when -lm is
4743ef6fb4a5Smrg	  # linked before any other PIC object.  But we must not use
4744ef6fb4a5Smrg	  # pic_flag when linking with -static.  The problem exists in
4745ef6fb4a5Smrg	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
4746ef6fb4a5Smrg	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
4747ef6fb4a5Smrg	    case "$compile_command " in
4748ef6fb4a5Smrg	    *" -static "*) ;;
4749ef6fb4a5Smrg	    *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
4750ef6fb4a5Smrg	    esac;;
4751ef6fb4a5Smrg	  *-*-hpux*)
4752ef6fb4a5Smrg	    case "$compile_command " in
4753ef6fb4a5Smrg	    *" -static "*) ;;
4754ef6fb4a5Smrg	    *) pic_flag_for_symtable=" $pic_flag";;
4755ef6fb4a5Smrg	    esac
4756ef6fb4a5Smrg	  esac
47570cc67336Smrg
4758ef6fb4a5Smrg	  # Now compile the dynamic symbol file.
4759ef6fb4a5Smrg	  $show "(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
4760ef6fb4a5Smrg	  $run eval '(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
47610cc67336Smrg
4762ef6fb4a5Smrg	  # Clean up the generated files.
4763ef6fb4a5Smrg	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
4764ef6fb4a5Smrg	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
47650cc67336Smrg
4766ef6fb4a5Smrg	  # Transform the symbol file into the correct name.
4767ef6fb4a5Smrg          case $host in
4768ef6fb4a5Smrg          *cygwin* | *mingw* )
4769ef6fb4a5Smrg            if test -f "$output_objdir/${outputname}.def" ; then
4770ef6fb4a5Smrg              compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
4771ef6fb4a5Smrg              finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
4772ef6fb4a5Smrg            else
4773ef6fb4a5Smrg              compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4774ef6fb4a5Smrg              finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4775ef6fb4a5Smrg             fi
4776ef6fb4a5Smrg            ;;
4777ef6fb4a5Smrg          * )
4778ef6fb4a5Smrg            compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4779ef6fb4a5Smrg            finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4780ef6fb4a5Smrg            ;;
4781ef6fb4a5Smrg          esac
4782ef6fb4a5Smrg	  ;;
4783ef6fb4a5Smrg	*)
4784ef6fb4a5Smrg	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
4785ef6fb4a5Smrg	  exit $EXIT_FAILURE
4786ef6fb4a5Smrg	  ;;
4787ef6fb4a5Smrg	esac
4788ef6fb4a5Smrg      else
4789ef6fb4a5Smrg	# We keep going just in case the user didn't refer to
4790ef6fb4a5Smrg	# lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
4791ef6fb4a5Smrg	# really was required.
47920cc67336Smrg
4793ef6fb4a5Smrg	# Nullify the symbol file.
4794ef6fb4a5Smrg	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
4795ef6fb4a5Smrg	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
4796ef6fb4a5Smrg      fi
47970cc67336Smrg
4798ef6fb4a5Smrg      if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
4799ef6fb4a5Smrg	# Replace the output file specification.
4800ef6fb4a5Smrg	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP`
4801ef6fb4a5Smrg	link_command="$compile_command$compile_rpath"
48020cc67336Smrg
4803ef6fb4a5Smrg	# We have no uninstalled library dependencies, so finalize right now.
4804ef6fb4a5Smrg	$show "$link_command"
4805ef6fb4a5Smrg	$run eval "$link_command"
4806ef6fb4a5Smrg	exit_status=$?
48070cc67336Smrg
4808ef6fb4a5Smrg	# Delete the generated files.
4809ef6fb4a5Smrg	if test -n "$dlsyms"; then
4810ef6fb4a5Smrg	  $show "$rm $output_objdir/${outputname}S.${objext}"
4811ef6fb4a5Smrg	  $run $rm "$output_objdir/${outputname}S.${objext}"
48120cc67336Smrg	fi
48130cc67336Smrg
4814ef6fb4a5Smrg	exit $exit_status
4815ef6fb4a5Smrg      fi
48160cc67336Smrg
4817ef6fb4a5Smrg      if test -n "$shlibpath_var"; then
4818ef6fb4a5Smrg	# We should set the shlibpath_var
4819ef6fb4a5Smrg	rpath=
4820ef6fb4a5Smrg	for dir in $temp_rpath; do
4821ef6fb4a5Smrg	  case $dir in
4822ef6fb4a5Smrg	  [\\/]* | [A-Za-z]:[\\/]*)
4823ef6fb4a5Smrg	    # Absolute path.
4824ef6fb4a5Smrg	    rpath="$rpath$dir:"
4825ef6fb4a5Smrg	    ;;
4826ef6fb4a5Smrg	  *)
4827ef6fb4a5Smrg	    # Relative path: add a thisdir entry.
4828ef6fb4a5Smrg	    rpath="$rpath\$thisdir/$dir:"
4829ef6fb4a5Smrg	    ;;
4830ef6fb4a5Smrg	  esac
4831ef6fb4a5Smrg	done
4832ef6fb4a5Smrg	temp_rpath="$rpath"
48330cc67336Smrg      fi
48340cc67336Smrg
4835ef6fb4a5Smrg      if test -n "$compile_shlibpath$finalize_shlibpath"; then
4836ef6fb4a5Smrg	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
4837ef6fb4a5Smrg      fi
4838ef6fb4a5Smrg      if test -n "$finalize_shlibpath"; then
4839ef6fb4a5Smrg	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
4840ef6fb4a5Smrg      fi
48410cc67336Smrg
4842ef6fb4a5Smrg      compile_var=
4843ef6fb4a5Smrg      finalize_var=
4844ef6fb4a5Smrg      if test -n "$runpath_var"; then
4845ef6fb4a5Smrg	if test -n "$perm_rpath"; then
4846ef6fb4a5Smrg	  # We should set the runpath_var.
4847ef6fb4a5Smrg	  rpath=
4848ef6fb4a5Smrg	  for dir in $perm_rpath; do
4849ef6fb4a5Smrg	    rpath="$rpath$dir:"
4850ef6fb4a5Smrg	  done
4851ef6fb4a5Smrg	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
4852ef6fb4a5Smrg	fi
4853ef6fb4a5Smrg	if test -n "$finalize_perm_rpath"; then
4854ef6fb4a5Smrg	  # We should set the runpath_var.
4855ef6fb4a5Smrg	  rpath=
4856ef6fb4a5Smrg	  for dir in $finalize_perm_rpath; do
4857ef6fb4a5Smrg	    rpath="$rpath$dir:"
4858ef6fb4a5Smrg	  done
4859ef6fb4a5Smrg	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
4860ef6fb4a5Smrg	fi
4861ef6fb4a5Smrg      fi
48620cc67336Smrg
4863ef6fb4a5Smrg      if test "$no_install" = yes; then
4864ef6fb4a5Smrg	# We don't need to create a wrapper script.
4865ef6fb4a5Smrg	link_command="$compile_var$compile_command$compile_rpath"
4866ef6fb4a5Smrg	# Replace the output file specification.
4867ef6fb4a5Smrg	link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
4868ef6fb4a5Smrg	# Delete the old output file.
4869ef6fb4a5Smrg	$run $rm $output
4870ef6fb4a5Smrg	# Link the executable and exit
4871ef6fb4a5Smrg	$show "$link_command"
4872ef6fb4a5Smrg	$run eval "$link_command" || exit $?
4873ef6fb4a5Smrg	exit $EXIT_SUCCESS
4874ef6fb4a5Smrg      fi
48750cc67336Smrg
4876ef6fb4a5Smrg      if test "$hardcode_action" = relink; then
4877ef6fb4a5Smrg	# Fast installation is not supported
4878ef6fb4a5Smrg	link_command="$compile_var$compile_command$compile_rpath"
4879ef6fb4a5Smrg	relink_command="$finalize_var$finalize_command$finalize_rpath"
48800cc67336Smrg
4881ef6fb4a5Smrg	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
4882ef6fb4a5Smrg	$echo "$modename: \`$output' will be relinked during installation" 1>&2
4883ef6fb4a5Smrg      else
4884ef6fb4a5Smrg	if test "$fast_install" != no; then
4885ef6fb4a5Smrg	  link_command="$finalize_var$compile_command$finalize_rpath"
4886ef6fb4a5Smrg	  if test "$fast_install" = yes; then
4887ef6fb4a5Smrg	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP`
4888ef6fb4a5Smrg	  else
4889ef6fb4a5Smrg	    # fast_install is set to needless
4890ef6fb4a5Smrg	    relink_command=
4891ef6fb4a5Smrg	  fi
4892ef6fb4a5Smrg	else
4893ef6fb4a5Smrg	  link_command="$compile_var$compile_command$compile_rpath"
4894ef6fb4a5Smrg	  relink_command="$finalize_var$finalize_command$finalize_rpath"
4895ef6fb4a5Smrg	fi
48960cc67336Smrg      fi
48970cc67336Smrg
4898ef6fb4a5Smrg      # Replace the output file specification.
4899ef6fb4a5Smrg      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
49000cc67336Smrg
4901ef6fb4a5Smrg      # Delete the old output files.
4902ef6fb4a5Smrg      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
49030cc67336Smrg
4904ef6fb4a5Smrg      $show "$link_command"
4905ef6fb4a5Smrg      $run eval "$link_command" || exit $?
49060cc67336Smrg
4907ef6fb4a5Smrg      # Now create the wrapper script.
4908ef6fb4a5Smrg      $show "creating $output"
49090cc67336Smrg
4910ef6fb4a5Smrg      # Quote the relink command for shipping.
4911ef6fb4a5Smrg      if test -n "$relink_command"; then
4912ef6fb4a5Smrg	# Preserve any variables that may affect compiler behavior
4913ef6fb4a5Smrg	for var in $variables_saved_for_relink; do
4914ef6fb4a5Smrg	  if eval test -z \"\${$var+set}\"; then
4915ef6fb4a5Smrg	    relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
4916ef6fb4a5Smrg	  elif eval var_value=\$$var; test -z "$var_value"; then
4917ef6fb4a5Smrg	    relink_command="$var=; export $var; $relink_command"
4918ef6fb4a5Smrg	  else
4919ef6fb4a5Smrg	    var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
4920ef6fb4a5Smrg	    relink_command="$var=\"$var_value\"; export $var; $relink_command"
4921ef6fb4a5Smrg	  fi
49220cc67336Smrg	done
4923ef6fb4a5Smrg	relink_command="(cd `pwd`; $relink_command)"
4924ef6fb4a5Smrg	relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
49250cc67336Smrg      fi
49260cc67336Smrg
4927ef6fb4a5Smrg      # Quote $echo for shipping.
4928ef6fb4a5Smrg      if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
4929ef6fb4a5Smrg	case $progpath in
4930ef6fb4a5Smrg	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
4931ef6fb4a5Smrg	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
49320cc67336Smrg	esac
4933ef6fb4a5Smrg	qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
4934ef6fb4a5Smrg      else
4935ef6fb4a5Smrg	qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
49360cc67336Smrg      fi
49370cc67336Smrg
4938ef6fb4a5Smrg      # Only actually do things if our run command is non-null.
4939ef6fb4a5Smrg      if test -z "$run"; then
4940ef6fb4a5Smrg	# win32 will think the script is a binary if it has
4941ef6fb4a5Smrg	# a .exe suffix, so we strip it off here.
4942ef6fb4a5Smrg	case $output in
4943ef6fb4a5Smrg	  *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
4944ef6fb4a5Smrg	esac
4945ef6fb4a5Smrg	# test for cygwin because mv fails w/o .exe extensions
4946ef6fb4a5Smrg	case $host in
4947ef6fb4a5Smrg	  *cygwin*)
4948ef6fb4a5Smrg	    exeext=.exe
4949ef6fb4a5Smrg	    outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
4950ef6fb4a5Smrg	  *) exeext= ;;
4951ef6fb4a5Smrg	esac
4952ef6fb4a5Smrg	case $host in
4953ef6fb4a5Smrg	  *cygwin* | *mingw* )
4954ef6fb4a5Smrg            output_name=`basename $output`
4955ef6fb4a5Smrg            output_path=`dirname $output`
4956ef6fb4a5Smrg            cwrappersource="$output_path/$objdir/lt-$output_name.c"
4957ef6fb4a5Smrg            cwrapper="$output_path/$output_name.exe"
4958ef6fb4a5Smrg            $rm $cwrappersource $cwrapper
4959ef6fb4a5Smrg            trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
49600cc67336Smrg
4961ef6fb4a5Smrg	    cat > $cwrappersource <<EOF
49620cc67336Smrg
4963ef6fb4a5Smrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
4964ef6fb4a5Smrg   Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
49650cc67336Smrg
4966ef6fb4a5Smrg   The $output program cannot be directly executed until all the libtool
4967ef6fb4a5Smrg   libraries that it depends on are installed.
49680cc67336Smrg
4969ef6fb4a5Smrg   This wrapper executable should never be moved out of the build directory.
4970ef6fb4a5Smrg   If it is, it will not operate correctly.
49710cc67336Smrg
4972ef6fb4a5Smrg   Currently, it simply execs the wrapper *script* "/bin/sh $output",
4973ef6fb4a5Smrg   but could eventually absorb all of the scripts functionality and
4974ef6fb4a5Smrg   exec $objdir/$outputname directly.
4975ef6fb4a5Smrg*/
4976ef6fb4a5SmrgEOF
4977ef6fb4a5Smrg	    cat >> $cwrappersource<<"EOF"
4978ef6fb4a5Smrg#include <stdio.h>
4979ef6fb4a5Smrg#include <stdlib.h>
4980ef6fb4a5Smrg#include <unistd.h>
4981ef6fb4a5Smrg#include <malloc.h>
4982ef6fb4a5Smrg#include <stdarg.h>
4983ef6fb4a5Smrg#include <assert.h>
4984ef6fb4a5Smrg#include <string.h>
4985ef6fb4a5Smrg#include <ctype.h>
4986ef6fb4a5Smrg#include <sys/stat.h>
49870cc67336Smrg
4988ef6fb4a5Smrg#if defined(PATH_MAX)
4989ef6fb4a5Smrg# define LT_PATHMAX PATH_MAX
4990ef6fb4a5Smrg#elif defined(MAXPATHLEN)
4991ef6fb4a5Smrg# define LT_PATHMAX MAXPATHLEN
4992ef6fb4a5Smrg#else
4993ef6fb4a5Smrg# define LT_PATHMAX 1024
4994ef6fb4a5Smrg#endif
49950cc67336Smrg
4996ef6fb4a5Smrg#ifndef DIR_SEPARATOR
4997ef6fb4a5Smrg# define DIR_SEPARATOR '/'
4998ef6fb4a5Smrg# define PATH_SEPARATOR ':'
4999ef6fb4a5Smrg#endif
50000cc67336Smrg
5001ef6fb4a5Smrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
5002ef6fb4a5Smrg  defined (__OS2__)
5003ef6fb4a5Smrg# define HAVE_DOS_BASED_FILE_SYSTEM
5004ef6fb4a5Smrg# ifndef DIR_SEPARATOR_2
5005ef6fb4a5Smrg#  define DIR_SEPARATOR_2 '\\'
5006ef6fb4a5Smrg# endif
5007ef6fb4a5Smrg# ifndef PATH_SEPARATOR_2
5008ef6fb4a5Smrg#  define PATH_SEPARATOR_2 ';'
5009ef6fb4a5Smrg# endif
5010ef6fb4a5Smrg#endif
50110cc67336Smrg
5012ef6fb4a5Smrg#ifndef DIR_SEPARATOR_2
5013ef6fb4a5Smrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
5014ef6fb4a5Smrg#else /* DIR_SEPARATOR_2 */
5015ef6fb4a5Smrg# define IS_DIR_SEPARATOR(ch) \
5016ef6fb4a5Smrg        (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
5017ef6fb4a5Smrg#endif /* DIR_SEPARATOR_2 */
50180cc67336Smrg
5019ef6fb4a5Smrg#ifndef PATH_SEPARATOR_2
5020ef6fb4a5Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
5021ef6fb4a5Smrg#else /* PATH_SEPARATOR_2 */
5022ef6fb4a5Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
5023ef6fb4a5Smrg#endif /* PATH_SEPARATOR_2 */
50240cc67336Smrg
5025ef6fb4a5Smrg#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
5026ef6fb4a5Smrg#define XFREE(stale) do { \
5027ef6fb4a5Smrg  if (stale) { free ((void *) stale); stale = 0; } \
5028ef6fb4a5Smrg} while (0)
50290cc67336Smrg
5030ef6fb4a5Smrg/* -DDEBUG is fairly common in CFLAGS.  */
5031ef6fb4a5Smrg#undef DEBUG
5032ef6fb4a5Smrg#if defined DEBUGWRAPPER
5033ef6fb4a5Smrg# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
5034ef6fb4a5Smrg#else
5035ef6fb4a5Smrg# define DEBUG(format, ...)
5036ef6fb4a5Smrg#endif
50370cc67336Smrg
5038ef6fb4a5Smrgconst char *program_name = NULL;
50390cc67336Smrg
5040ef6fb4a5Smrgvoid * xmalloc (size_t num);
5041ef6fb4a5Smrgchar * xstrdup (const char *string);
5042ef6fb4a5Smrgconst char * base_name (const char *name);
5043ef6fb4a5Smrgchar * find_executable(const char *wrapper);
5044ef6fb4a5Smrgint    check_executable(const char *path);
5045ef6fb4a5Smrgchar * strendzap(char *str, const char *pat);
5046ef6fb4a5Smrgvoid lt_fatal (const char *message, ...);
50470cc67336Smrg
5048ef6fb4a5Smrgint
5049ef6fb4a5Smrgmain (int argc, char *argv[])
5050ef6fb4a5Smrg{
5051ef6fb4a5Smrg  char **newargz;
5052ef6fb4a5Smrg  int i;
50530cc67336Smrg
5054ef6fb4a5Smrg  program_name = (char *) xstrdup (base_name (argv[0]));
5055ef6fb4a5Smrg  DEBUG("(main) argv[0]      : %s\n",argv[0]);
5056ef6fb4a5Smrg  DEBUG("(main) program_name : %s\n",program_name);
5057ef6fb4a5Smrg  newargz = XMALLOC(char *, argc+2);
5058ef6fb4a5SmrgEOF
50590cc67336Smrg
5060ef6fb4a5Smrg            cat >> $cwrappersource <<EOF
5061ef6fb4a5Smrg  newargz[0] = (char *) xstrdup("$SHELL");
5062ef6fb4a5SmrgEOF
50630cc67336Smrg
5064ef6fb4a5Smrg            cat >> $cwrappersource <<"EOF"
5065ef6fb4a5Smrg  newargz[1] = find_executable(argv[0]);
5066ef6fb4a5Smrg  if (newargz[1] == NULL)
5067ef6fb4a5Smrg    lt_fatal("Couldn't find %s", argv[0]);
5068ef6fb4a5Smrg  DEBUG("(main) found exe at : %s\n",newargz[1]);
5069ef6fb4a5Smrg  /* we know the script has the same name, without the .exe */
5070ef6fb4a5Smrg  /* so make sure newargz[1] doesn't end in .exe */
5071ef6fb4a5Smrg  strendzap(newargz[1],".exe");
5072ef6fb4a5Smrg  for (i = 1; i < argc; i++)
5073ef6fb4a5Smrg    newargz[i+1] = xstrdup(argv[i]);
5074ef6fb4a5Smrg  newargz[argc+1] = NULL;
50750cc67336Smrg
5076ef6fb4a5Smrg  for (i=0; i<argc+1; i++)
5077ef6fb4a5Smrg  {
5078ef6fb4a5Smrg    DEBUG("(main) newargz[%d]   : %s\n",i,newargz[i]);
5079ef6fb4a5Smrg    ;
5080ef6fb4a5Smrg  }
50810cc67336Smrg
5082ef6fb4a5SmrgEOF
50830cc67336Smrg
5084ef6fb4a5Smrg            case $host_os in
5085ef6fb4a5Smrg              mingw*)
5086ef6fb4a5Smrg                cat >> $cwrappersource <<EOF
5087ef6fb4a5Smrg  execv("$SHELL",(char const **)newargz);
5088ef6fb4a5SmrgEOF
5089ef6fb4a5Smrg              ;;
5090ef6fb4a5Smrg              *)
5091ef6fb4a5Smrg                cat >> $cwrappersource <<EOF
5092ef6fb4a5Smrg  execv("$SHELL",newargz);
5093ef6fb4a5SmrgEOF
5094ef6fb4a5Smrg              ;;
5095ef6fb4a5Smrg            esac
50960cc67336Smrg
5097ef6fb4a5Smrg            cat >> $cwrappersource <<"EOF"
5098ef6fb4a5Smrg  return 127;
5099ef6fb4a5Smrg}
51000cc67336Smrg
5101ef6fb4a5Smrgvoid *
5102ef6fb4a5Smrgxmalloc (size_t num)
5103ef6fb4a5Smrg{
5104ef6fb4a5Smrg  void * p = (void *) malloc (num);
5105ef6fb4a5Smrg  if (!p)
5106ef6fb4a5Smrg    lt_fatal ("Memory exhausted");
51070cc67336Smrg
5108ef6fb4a5Smrg  return p;
5109ef6fb4a5Smrg}
51100cc67336Smrg
5111ef6fb4a5Smrgchar *
5112ef6fb4a5Smrgxstrdup (const char *string)
5113ef6fb4a5Smrg{
5114ef6fb4a5Smrg  return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
5115ef6fb4a5Smrg;
5116ef6fb4a5Smrg}
51170cc67336Smrg
5118ef6fb4a5Smrgconst char *
5119ef6fb4a5Smrgbase_name (const char *name)
5120ef6fb4a5Smrg{
5121ef6fb4a5Smrg  const char *base;
51220cc67336Smrg
5123ef6fb4a5Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5124ef6fb4a5Smrg  /* Skip over the disk name in MSDOS pathnames. */
5125ef6fb4a5Smrg  if (isalpha ((unsigned char)name[0]) && name[1] == ':')
5126ef6fb4a5Smrg    name += 2;
5127ef6fb4a5Smrg#endif
51280cc67336Smrg
5129ef6fb4a5Smrg  for (base = name; *name; name++)
5130ef6fb4a5Smrg    if (IS_DIR_SEPARATOR (*name))
5131ef6fb4a5Smrg      base = name + 1;
5132ef6fb4a5Smrg  return base;
5133ef6fb4a5Smrg}
51340cc67336Smrg
5135ef6fb4a5Smrgint
5136ef6fb4a5Smrgcheck_executable(const char * path)
5137ef6fb4a5Smrg{
5138ef6fb4a5Smrg  struct stat st;
51390cc67336Smrg
5140ef6fb4a5Smrg  DEBUG("(check_executable)  : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
5141ef6fb4a5Smrg  if ((!path) || (!*path))
5142ef6fb4a5Smrg    return 0;
51430cc67336Smrg
5144ef6fb4a5Smrg  if ((stat (path, &st) >= 0) &&
5145ef6fb4a5Smrg      (
5146ef6fb4a5Smrg        /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
5147ef6fb4a5Smrg#if defined (S_IXOTH)
5148ef6fb4a5Smrg       ((st.st_mode & S_IXOTH) == S_IXOTH) ||
5149ef6fb4a5Smrg#endif
5150ef6fb4a5Smrg#if defined (S_IXGRP)
5151ef6fb4a5Smrg       ((st.st_mode & S_IXGRP) == S_IXGRP) ||
5152ef6fb4a5Smrg#endif
5153ef6fb4a5Smrg       ((st.st_mode & S_IXUSR) == S_IXUSR))
5154ef6fb4a5Smrg      )
5155ef6fb4a5Smrg    return 1;
5156ef6fb4a5Smrg  else
5157ef6fb4a5Smrg    return 0;
5158ef6fb4a5Smrg}
51590cc67336Smrg
5160ef6fb4a5Smrg/* Searches for the full path of the wrapper.  Returns
5161ef6fb4a5Smrg   newly allocated full path name if found, NULL otherwise */
5162ef6fb4a5Smrgchar *
5163ef6fb4a5Smrgfind_executable (const char* wrapper)
5164ef6fb4a5Smrg{
5165ef6fb4a5Smrg  int has_slash = 0;
5166ef6fb4a5Smrg  const char* p;
5167ef6fb4a5Smrg  const char* p_next;
5168ef6fb4a5Smrg  /* static buffer for getcwd */
5169ef6fb4a5Smrg  char tmp[LT_PATHMAX + 1];
5170ef6fb4a5Smrg  int tmp_len;
5171ef6fb4a5Smrg  char* concat_name;
51720cc67336Smrg
5173ef6fb4a5Smrg  DEBUG("(find_executable)  : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
51740cc67336Smrg
5175ef6fb4a5Smrg  if ((wrapper == NULL) || (*wrapper == '\0'))
5176ef6fb4a5Smrg    return NULL;
5177301ea0f4Smrg
5178ef6fb4a5Smrg  /* Absolute path? */
5179ef6fb4a5Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5180ef6fb4a5Smrg  if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
5181ef6fb4a5Smrg  {
5182ef6fb4a5Smrg    concat_name = xstrdup (wrapper);
5183ef6fb4a5Smrg    if (check_executable(concat_name))
5184ef6fb4a5Smrg      return concat_name;
5185ef6fb4a5Smrg    XFREE(concat_name);
5186ef6fb4a5Smrg  }
5187ef6fb4a5Smrg  else
5188ef6fb4a5Smrg  {
5189ef6fb4a5Smrg#endif
5190ef6fb4a5Smrg    if (IS_DIR_SEPARATOR (wrapper[0]))
5191ef6fb4a5Smrg    {
5192ef6fb4a5Smrg      concat_name = xstrdup (wrapper);
5193ef6fb4a5Smrg      if (check_executable(concat_name))
5194ef6fb4a5Smrg        return concat_name;
5195ef6fb4a5Smrg      XFREE(concat_name);
5196ef6fb4a5Smrg    }
5197ef6fb4a5Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5198ef6fb4a5Smrg  }
5199ef6fb4a5Smrg#endif
5200ef6fb4a5Smrg
5201ef6fb4a5Smrg  for (p = wrapper; *p; p++)
5202ef6fb4a5Smrg    if (*p == '/')
5203ef6fb4a5Smrg    {
5204ef6fb4a5Smrg      has_slash = 1;
5205ef6fb4a5Smrg      break;
5206ef6fb4a5Smrg    }
5207ef6fb4a5Smrg  if (!has_slash)
5208ef6fb4a5Smrg  {
5209ef6fb4a5Smrg    /* no slashes; search PATH */
5210ef6fb4a5Smrg    const char* path = getenv ("PATH");
5211ef6fb4a5Smrg    if (path != NULL)
5212ef6fb4a5Smrg    {
5213ef6fb4a5Smrg      for (p = path; *p; p = p_next)
5214ef6fb4a5Smrg      {
5215ef6fb4a5Smrg        const char* q;
5216ef6fb4a5Smrg        size_t p_len;
5217ef6fb4a5Smrg        for (q = p; *q; q++)
5218ef6fb4a5Smrg          if (IS_PATH_SEPARATOR(*q))
5219ef6fb4a5Smrg            break;
5220ef6fb4a5Smrg        p_len = q - p;
5221ef6fb4a5Smrg        p_next = (*q == '\0' ? q : q + 1);
5222ef6fb4a5Smrg        if (p_len == 0)
5223ef6fb4a5Smrg        {
5224ef6fb4a5Smrg          /* empty path: current directory */
5225ef6fb4a5Smrg          if (getcwd (tmp, LT_PATHMAX) == NULL)
5226ef6fb4a5Smrg            lt_fatal ("getcwd failed");
5227ef6fb4a5Smrg          tmp_len = strlen(tmp);
5228ef6fb4a5Smrg          concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
5229ef6fb4a5Smrg          memcpy (concat_name, tmp, tmp_len);
5230ef6fb4a5Smrg          concat_name[tmp_len] = '/';
5231ef6fb4a5Smrg          strcpy (concat_name + tmp_len + 1, wrapper);
5232ef6fb4a5Smrg        }
5233ef6fb4a5Smrg        else
5234ef6fb4a5Smrg        {
5235ef6fb4a5Smrg          concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
5236ef6fb4a5Smrg          memcpy (concat_name, p, p_len);
5237ef6fb4a5Smrg          concat_name[p_len] = '/';
5238ef6fb4a5Smrg          strcpy (concat_name + p_len + 1, wrapper);
5239ef6fb4a5Smrg        }
5240ef6fb4a5Smrg        if (check_executable(concat_name))
5241ef6fb4a5Smrg          return concat_name;
5242ef6fb4a5Smrg        XFREE(concat_name);
5243ef6fb4a5Smrg      }
5244ef6fb4a5Smrg    }
5245ef6fb4a5Smrg    /* not found in PATH; assume curdir */
5246ef6fb4a5Smrg  }
5247ef6fb4a5Smrg  /* Relative path | not found in path: prepend cwd */
5248ef6fb4a5Smrg  if (getcwd (tmp, LT_PATHMAX) == NULL)
5249ef6fb4a5Smrg    lt_fatal ("getcwd failed");
5250ef6fb4a5Smrg  tmp_len = strlen(tmp);
5251ef6fb4a5Smrg  concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
5252ef6fb4a5Smrg  memcpy (concat_name, tmp, tmp_len);
5253ef6fb4a5Smrg  concat_name[tmp_len] = '/';
5254ef6fb4a5Smrg  strcpy (concat_name + tmp_len + 1, wrapper);
5255ef6fb4a5Smrg
5256ef6fb4a5Smrg  if (check_executable(concat_name))
5257ef6fb4a5Smrg    return concat_name;
5258ef6fb4a5Smrg  XFREE(concat_name);
5259ef6fb4a5Smrg  return NULL;
5260ef6fb4a5Smrg}
5261ef6fb4a5Smrg
5262ef6fb4a5Smrgchar *
5263ef6fb4a5Smrgstrendzap(char *str, const char *pat)
5264ef6fb4a5Smrg{
5265ef6fb4a5Smrg  size_t len, patlen;
5266ef6fb4a5Smrg
5267ef6fb4a5Smrg  assert(str != NULL);
5268ef6fb4a5Smrg  assert(pat != NULL);
5269ef6fb4a5Smrg
5270ef6fb4a5Smrg  len = strlen(str);
5271ef6fb4a5Smrg  patlen = strlen(pat);
5272ef6fb4a5Smrg
5273ef6fb4a5Smrg  if (patlen <= len)
5274ef6fb4a5Smrg  {
5275ef6fb4a5Smrg    str += len - patlen;
5276ef6fb4a5Smrg    if (strcmp(str, pat) == 0)
5277ef6fb4a5Smrg      *str = '\0';
5278ef6fb4a5Smrg  }
5279ef6fb4a5Smrg  return str;
5280ef6fb4a5Smrg}
5281ef6fb4a5Smrg
5282ef6fb4a5Smrgstatic void
5283ef6fb4a5Smrglt_error_core (int exit_status, const char * mode,
5284ef6fb4a5Smrg          const char * message, va_list ap)
5285ef6fb4a5Smrg{
5286ef6fb4a5Smrg  fprintf (stderr, "%s: %s: ", program_name, mode);
5287ef6fb4a5Smrg  vfprintf (stderr, message, ap);
5288ef6fb4a5Smrg  fprintf (stderr, ".\n");
5289ef6fb4a5Smrg
5290ef6fb4a5Smrg  if (exit_status >= 0)
5291ef6fb4a5Smrg    exit (exit_status);
5292ef6fb4a5Smrg}
5293ef6fb4a5Smrg
5294ef6fb4a5Smrgvoid
5295ef6fb4a5Smrglt_fatal (const char *message, ...)
5296ef6fb4a5Smrg{
5297ef6fb4a5Smrg  va_list ap;
5298ef6fb4a5Smrg  va_start (ap, message);
5299ef6fb4a5Smrg  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
5300ef6fb4a5Smrg  va_end (ap);
5301ef6fb4a5Smrg}
5302ef6fb4a5SmrgEOF
5303ef6fb4a5Smrg          # we should really use a build-platform specific compiler
5304ef6fb4a5Smrg          # here, but OTOH, the wrappers (shell script and this C one)
5305ef6fb4a5Smrg          # are only useful if you want to execute the "real" binary.
5306ef6fb4a5Smrg          # Since the "real" binary is built for $host, then this
5307ef6fb4a5Smrg          # wrapper might as well be built for $host, too.
5308ef6fb4a5Smrg          $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
5309ef6fb4a5Smrg          ;;
5310ef6fb4a5Smrg        esac
5311ef6fb4a5Smrg        $rm $output
5312ef6fb4a5Smrg        trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
5313ef6fb4a5Smrg
5314ef6fb4a5Smrg	$echo > $output "\
5315ef6fb4a5Smrg#! $SHELL
5316ef6fb4a5Smrg
5317ef6fb4a5Smrg# $output - temporary wrapper script for $objdir/$outputname
5318ef6fb4a5Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
5319ef6fb4a5Smrg#
5320ef6fb4a5Smrg# The $output program cannot be directly executed until all the libtool
5321ef6fb4a5Smrg# libraries that it depends on are installed.
5322ef6fb4a5Smrg#
5323ef6fb4a5Smrg# This wrapper script should never be moved out of the build directory.
5324ef6fb4a5Smrg# If it is, it will not operate correctly.
5325ef6fb4a5Smrg
5326ef6fb4a5Smrg# Sed substitution that helps us do robust quoting.  It backslashifies
5327ef6fb4a5Smrg# metacharacters that are still active within double-quoted strings.
5328ef6fb4a5SmrgXsed='${SED} -e 1s/^X//'
5329ef6fb4a5Smrgsed_quote_subst='$sed_quote_subst'
5330ef6fb4a5Smrg
5331ef6fb4a5Smrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
5332ef6fb4a5Smrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
5333ef6fb4a5Smrg  emulate sh
5334ef6fb4a5Smrg  NULLCMD=:
5335ef6fb4a5Smrg  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
5336ef6fb4a5Smrg  # is contrary to our usage.  Disable this feature.
5337ef6fb4a5Smrg  alias -g '\${1+\"\$@\"}'='\"\$@\"'
5338ef6fb4a5Smrg  setopt NO_GLOB_SUBST
5339ef6fb4a5Smrgelse
5340ef6fb4a5Smrg  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
5341ef6fb4a5Smrgfi
5342ef6fb4a5SmrgBIN_SH=xpg4; export BIN_SH # for Tru64
5343ef6fb4a5SmrgDUALCASE=1; export DUALCASE # for MKS sh
5344ef6fb4a5Smrg
5345ef6fb4a5Smrg# The HP-UX ksh and POSIX shell print the target directory to stdout
5346ef6fb4a5Smrg# if CDPATH is set.
5347ef6fb4a5Smrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
5348ef6fb4a5Smrg
5349ef6fb4a5Smrgrelink_command=\"$relink_command\"
5350ef6fb4a5Smrg
5351ef6fb4a5Smrg# This environment variable determines our operation mode.
5352ef6fb4a5Smrgif test \"\$libtool_install_magic\" = \"$magic\"; then
5353ef6fb4a5Smrg  # install mode needs the following variable:
5354ef6fb4a5Smrg  notinst_deplibs='$notinst_deplibs'
5355ef6fb4a5Smrgelse
5356ef6fb4a5Smrg  # When we are sourced in execute mode, \$file and \$echo are already set.
5357ef6fb4a5Smrg  if test \"\$libtool_execute_magic\" != \"$magic\"; then
5358ef6fb4a5Smrg    echo=\"$qecho\"
5359ef6fb4a5Smrg    file=\"\$0\"
5360ef6fb4a5Smrg    # Make sure echo works.
5361ef6fb4a5Smrg    if test \"X\$1\" = X--no-reexec; then
5362ef6fb4a5Smrg      # Discard the --no-reexec flag, and continue.
5363ef6fb4a5Smrg      shift
5364ef6fb4a5Smrg    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
5365ef6fb4a5Smrg      # Yippee, \$echo works!
5366ef6fb4a5Smrg      :
5367ef6fb4a5Smrg    else
5368ef6fb4a5Smrg      # Restart under the correct shell, and then maybe \$echo will work.
5369ef6fb4a5Smrg      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
5370ef6fb4a5Smrg    fi
5371ef6fb4a5Smrg  fi\
5372ef6fb4a5Smrg"
5373ef6fb4a5Smrg	$echo >> $output "\
5374301ea0f4Smrg
5375ef6fb4a5Smrg  # Find the directory that this script lives in.
5376ef6fb4a5Smrg  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
5377ef6fb4a5Smrg  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
5378301ea0f4Smrg
5379ef6fb4a5Smrg  # Follow symbolic links until we get to the real thisdir.
5380ef6fb4a5Smrg  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
5381ef6fb4a5Smrg  while test -n \"\$file\"; do
5382ef6fb4a5Smrg    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
5383301ea0f4Smrg
5384ef6fb4a5Smrg    # If there was a directory component, then change thisdir.
5385ef6fb4a5Smrg    if test \"x\$destdir\" != \"x\$file\"; then
5386ef6fb4a5Smrg      case \"\$destdir\" in
5387ef6fb4a5Smrg      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
5388ef6fb4a5Smrg      *) thisdir=\"\$thisdir/\$destdir\" ;;
5389ef6fb4a5Smrg      esac
5390ef6fb4a5Smrg    fi
5391301ea0f4Smrg
5392ef6fb4a5Smrg    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
5393ef6fb4a5Smrg    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
5394ef6fb4a5Smrg  done
5395301ea0f4Smrg
5396ef6fb4a5Smrg  # Try to get the absolute directory name.
5397ef6fb4a5Smrg  absdir=\`cd \"\$thisdir\" && pwd\`
5398ef6fb4a5Smrg  test -n \"\$absdir\" && thisdir=\"\$absdir\"
5399ef6fb4a5Smrg"
5400301ea0f4Smrg
5401ef6fb4a5Smrg	if test "$fast_install" = yes; then
5402ef6fb4a5Smrg	  $echo >> $output "\
5403ef6fb4a5Smrg  program=lt-'$outputname'$exeext
5404ef6fb4a5Smrg  progdir=\"\$thisdir/$objdir\"
5405301ea0f4Smrg
5406ef6fb4a5Smrg  if test ! -f \"\$progdir/\$program\" || \\
5407ef6fb4a5Smrg     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
5408ef6fb4a5Smrg       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
5409301ea0f4Smrg
5410ef6fb4a5Smrg    file=\"\$\$-\$program\"
5411301ea0f4Smrg
5412ef6fb4a5Smrg    if test ! -d \"\$progdir\"; then
5413ef6fb4a5Smrg      $mkdir \"\$progdir\"
5414ef6fb4a5Smrg    else
5415ef6fb4a5Smrg      $rm \"\$progdir/\$file\"
5416ef6fb4a5Smrg    fi"
5417301ea0f4Smrg
5418ef6fb4a5Smrg	  $echo >> $output "\
5419301ea0f4Smrg
5420ef6fb4a5Smrg    # relink executable if necessary
5421ef6fb4a5Smrg    if test -n \"\$relink_command\"; then
5422ef6fb4a5Smrg      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
5423ef6fb4a5Smrg      else
5424ef6fb4a5Smrg	$echo \"\$relink_command_output\" >&2
5425ef6fb4a5Smrg	$rm \"\$progdir/\$file\"
5426ef6fb4a5Smrg	exit $EXIT_FAILURE
5427ef6fb4a5Smrg      fi
5428ef6fb4a5Smrg    fi
5429301ea0f4Smrg
5430ef6fb4a5Smrg    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
5431ef6fb4a5Smrg    { $rm \"\$progdir/\$program\";
5432ef6fb4a5Smrg      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
5433ef6fb4a5Smrg    $rm \"\$progdir/\$file\"
5434ef6fb4a5Smrg  fi"
5435ef6fb4a5Smrg	else
5436ef6fb4a5Smrg	  $echo >> $output "\
5437ef6fb4a5Smrg  program='$outputname'
5438ef6fb4a5Smrg  progdir=\"\$thisdir/$objdir\"
5439ef6fb4a5Smrg"
54400cc67336Smrg	fi
5441301ea0f4Smrg
5442ef6fb4a5Smrg	$echo >> $output "\
5443301ea0f4Smrg
5444ef6fb4a5Smrg  if test -f \"\$progdir/\$program\"; then"
5445301ea0f4Smrg
5446ef6fb4a5Smrg	# Export our shlibpath_var if we have one.
5447ef6fb4a5Smrg	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
5448ef6fb4a5Smrg	  $echo >> $output "\
5449ef6fb4a5Smrg    # Add our own library path to $shlibpath_var
5450ef6fb4a5Smrg    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
5451301ea0f4Smrg
5452ef6fb4a5Smrg    # Some systems cannot cope with colon-terminated $shlibpath_var
5453ef6fb4a5Smrg    # The second colon is a workaround for a bug in BeOS R4 sed
5454ef6fb4a5Smrg    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
5455301ea0f4Smrg
5456ef6fb4a5Smrg    export $shlibpath_var
5457ef6fb4a5Smrg"
5458ef6fb4a5Smrg	fi
5459301ea0f4Smrg
5460ef6fb4a5Smrg	# fixup the dll searchpath if we need to.
5461ef6fb4a5Smrg	if test -n "$dllsearchpath"; then
5462ef6fb4a5Smrg	  $echo >> $output "\
5463ef6fb4a5Smrg    # Add the dll search path components to the executable PATH
5464ef6fb4a5Smrg    PATH=$dllsearchpath:\$PATH
5465ef6fb4a5Smrg"
5466ef6fb4a5Smrg	fi
5467301ea0f4Smrg
5468ef6fb4a5Smrg	$echo >> $output "\
5469ef6fb4a5Smrg    if test \"\$libtool_execute_magic\" != \"$magic\"; then
5470ef6fb4a5Smrg      # Run the actual program with our arguments.
5471ef6fb4a5Smrg"
5472ef6fb4a5Smrg	case $host in
5473ef6fb4a5Smrg	# Backslashes separate directories on plain windows
5474ef6fb4a5Smrg	*-*-mingw | *-*-os2*)
5475ef6fb4a5Smrg	  $echo >> $output "\
5476ef6fb4a5Smrg      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
5477ef6fb4a5Smrg"
5478ef6fb4a5Smrg	  ;;
5479301ea0f4Smrg
5480ef6fb4a5Smrg	*)
5481ef6fb4a5Smrg	  $echo >> $output "\
5482ef6fb4a5Smrg      exec \"\$progdir/\$program\" \${1+\"\$@\"}
5483ef6fb4a5Smrg"
5484ef6fb4a5Smrg	  ;;
5485ef6fb4a5Smrg	esac
5486ef6fb4a5Smrg	$echo >> $output "\
5487ef6fb4a5Smrg      \$echo \"\$0: cannot exec \$program \$*\"
5488ef6fb4a5Smrg      exit $EXIT_FAILURE
5489ef6fb4a5Smrg    fi
5490ef6fb4a5Smrg  else
5491ef6fb4a5Smrg    # The program doesn't exist.
5492ef6fb4a5Smrg    \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
5493ef6fb4a5Smrg    \$echo \"This script is just a wrapper for \$program.\" 1>&2
5494ef6fb4a5Smrg    $echo \"See the $PACKAGE documentation for more information.\" 1>&2
5495ef6fb4a5Smrg    exit $EXIT_FAILURE
5496ef6fb4a5Smrg  fi
5497ef6fb4a5Smrgfi\
5498ef6fb4a5Smrg"
5499ef6fb4a5Smrg	chmod +x $output
5500ef6fb4a5Smrg      fi
5501ef6fb4a5Smrg      exit $EXIT_SUCCESS
5502ef6fb4a5Smrg      ;;
5503ef6fb4a5Smrg    esac
5504301ea0f4Smrg
5505ef6fb4a5Smrg    # See if we need to build an old-fashioned archive.
5506ef6fb4a5Smrg    for oldlib in $oldlibs; do
5507301ea0f4Smrg
5508ef6fb4a5Smrg      if test "$build_libtool_libs" = convenience; then
5509ef6fb4a5Smrg	oldobjs="$libobjs_save"
5510ef6fb4a5Smrg	addlibs="$convenience"
5511ef6fb4a5Smrg	build_libtool_libs=no
5512ef6fb4a5Smrg      else
5513ef6fb4a5Smrg	if test "$build_libtool_libs" = module; then
5514ef6fb4a5Smrg	  oldobjs="$libobjs_save"
5515ef6fb4a5Smrg	  build_libtool_libs=no
5516ef6fb4a5Smrg	else
5517ef6fb4a5Smrg	  oldobjs="$old_deplibs $non_pic_objects"
5518ef6fb4a5Smrg	fi
5519ef6fb4a5Smrg	addlibs="$old_convenience"
5520ef6fb4a5Smrg      fi
5521301ea0f4Smrg
5522ef6fb4a5Smrg      if test -n "$addlibs"; then
5523ef6fb4a5Smrg	gentop="$output_objdir/${outputname}x"
5524ef6fb4a5Smrg	generated="$generated $gentop"
5525301ea0f4Smrg
5526ef6fb4a5Smrg	func_extract_archives $gentop $addlibs
5527ef6fb4a5Smrg	oldobjs="$oldobjs $func_extract_archives_result"
5528ef6fb4a5Smrg      fi
55290cc67336Smrg
5530ef6fb4a5Smrg      # Do each command in the archive commands.
5531ef6fb4a5Smrg      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
5532ef6fb4a5Smrg       cmds=$old_archive_from_new_cmds
5533ef6fb4a5Smrg      else
5534ef6fb4a5Smrg	# POSIX demands no paths to be encoded in archives.  We have
5535ef6fb4a5Smrg	# to avoid creating archives with duplicate basenames if we
5536ef6fb4a5Smrg	# might have to extract them afterwards, e.g., when creating a
5537ef6fb4a5Smrg	# static archive out of a convenience library, or when linking
5538ef6fb4a5Smrg	# the entirety of a libtool archive into another (currently
5539ef6fb4a5Smrg	# not supported by libtool).
5540ef6fb4a5Smrg	if (for obj in $oldobjs
5541ef6fb4a5Smrg	    do
5542ef6fb4a5Smrg	      $echo "X$obj" | $Xsed -e 's%^.*/%%'
5543ef6fb4a5Smrg	    done | sort | sort -uc >/dev/null 2>&1); then
5544ef6fb4a5Smrg	  :
5545ef6fb4a5Smrg	else
5546ef6fb4a5Smrg	  $echo "copying selected object files to avoid basename conflicts..."
5547301ea0f4Smrg
5548ef6fb4a5Smrg	  if test -z "$gentop"; then
5549ef6fb4a5Smrg	    gentop="$output_objdir/${outputname}x"
5550ef6fb4a5Smrg	    generated="$generated $gentop"
5551301ea0f4Smrg
5552ef6fb4a5Smrg	    $show "${rm}r $gentop"
5553ef6fb4a5Smrg	    $run ${rm}r "$gentop"
5554ef6fb4a5Smrg	    $show "$mkdir $gentop"
5555ef6fb4a5Smrg	    $run $mkdir "$gentop"
5556ef6fb4a5Smrg	    exit_status=$?
5557ef6fb4a5Smrg	    if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
5558ef6fb4a5Smrg	      exit $exit_status
55590cc67336Smrg	    fi
55600cc67336Smrg	  fi
5561301ea0f4Smrg
5562ef6fb4a5Smrg	  save_oldobjs=$oldobjs
5563ef6fb4a5Smrg	  oldobjs=
5564ef6fb4a5Smrg	  counter=1
5565ef6fb4a5Smrg	  for obj in $save_oldobjs
5566ef6fb4a5Smrg	  do
5567ef6fb4a5Smrg	    objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
5568ef6fb4a5Smrg	    case " $oldobjs " in
5569ef6fb4a5Smrg	    " ") oldobjs=$obj ;;
5570ef6fb4a5Smrg	    *[\ /]"$objbase "*)
5571ef6fb4a5Smrg	      while :; do
5572ef6fb4a5Smrg		# Make sure we don't pick an alternate name that also
5573ef6fb4a5Smrg		# overlaps.
5574ef6fb4a5Smrg		newobj=lt$counter-$objbase
5575ef6fb4a5Smrg		counter=`expr $counter + 1`
5576ef6fb4a5Smrg		case " $oldobjs " in
5577ef6fb4a5Smrg		*[\ /]"$newobj "*) ;;
5578ef6fb4a5Smrg		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
5579ef6fb4a5Smrg		esac
5580ef6fb4a5Smrg	      done
5581ef6fb4a5Smrg	      $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
5582ef6fb4a5Smrg	      $run ln "$obj" "$gentop/$newobj" ||
5583ef6fb4a5Smrg	      $run cp "$obj" "$gentop/$newobj"
5584ef6fb4a5Smrg	      oldobjs="$oldobjs $gentop/$newobj"
5585ef6fb4a5Smrg	      ;;
5586ef6fb4a5Smrg	    *) oldobjs="$oldobjs $obj" ;;
5587ef6fb4a5Smrg	    esac
5588ef6fb4a5Smrg	  done
5589ef6fb4a5Smrg	fi
5590301ea0f4Smrg
5591ef6fb4a5Smrg	eval cmds=\"$old_archive_cmds\"
55920cc67336Smrg
5593ef6fb4a5Smrg	if len=`expr "X$cmds" : ".*"` &&
5594ef6fb4a5Smrg	     test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
5595ef6fb4a5Smrg	  cmds=$old_archive_cmds
5596ef6fb4a5Smrg	else
5597ef6fb4a5Smrg	  # the command line is too long to link in one step, link in parts
5598ef6fb4a5Smrg	  $echo "using piecewise archive linking..."
5599ef6fb4a5Smrg	  save_RANLIB=$RANLIB
5600ef6fb4a5Smrg	  RANLIB=:
5601ef6fb4a5Smrg	  objlist=
5602ef6fb4a5Smrg	  concat_cmds=
5603ef6fb4a5Smrg	  save_oldobjs=$oldobjs
5604ef6fb4a5Smrg
5605ef6fb4a5Smrg	  # Is there a better way of finding the last object in the list?
5606ef6fb4a5Smrg	  for obj in $save_oldobjs
5607ef6fb4a5Smrg	  do
5608ef6fb4a5Smrg	    last_oldobj=$obj
5609ef6fb4a5Smrg	  done
5610ef6fb4a5Smrg	  for obj in $save_oldobjs
5611ef6fb4a5Smrg	  do
5612ef6fb4a5Smrg	    oldobjs="$objlist $obj"
5613ef6fb4a5Smrg	    objlist="$objlist $obj"
5614ef6fb4a5Smrg	    eval test_cmds=\"$old_archive_cmds\"
5615ef6fb4a5Smrg	    if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
5616ef6fb4a5Smrg	       test "$len" -le "$max_cmd_len"; then
5617ef6fb4a5Smrg	      :
5618301ea0f4Smrg	    else
5619ef6fb4a5Smrg	      # the above command should be used before it gets too long
5620ef6fb4a5Smrg	      oldobjs=$objlist
5621ef6fb4a5Smrg	      if test "$obj" = "$last_oldobj" ; then
5622ef6fb4a5Smrg	        RANLIB=$save_RANLIB
5623ef6fb4a5Smrg	      fi
5624ef6fb4a5Smrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
5625ef6fb4a5Smrg	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
5626ef6fb4a5Smrg	      objlist=
5627301ea0f4Smrg	    fi
5628ef6fb4a5Smrg	  done
5629ef6fb4a5Smrg	  RANLIB=$save_RANLIB
5630ef6fb4a5Smrg	  oldobjs=$objlist
5631ef6fb4a5Smrg	  if test "X$oldobjs" = "X" ; then
5632ef6fb4a5Smrg	    eval cmds=\"\$concat_cmds\"
5633301ea0f4Smrg	  else
5634ef6fb4a5Smrg	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
5635301ea0f4Smrg	  fi
5636301ea0f4Smrg	fi
5637ef6fb4a5Smrg      fi
5638ef6fb4a5Smrg      save_ifs="$IFS"; IFS='~'
5639ef6fb4a5Smrg      for cmd in $cmds; do
5640ef6fb4a5Smrg        eval cmd=\"$cmd\"
56410cc67336Smrg	IFS="$save_ifs"
5642ef6fb4a5Smrg	$show "$cmd"
5643ef6fb4a5Smrg	$run eval "$cmd" || exit $?
5644ef6fb4a5Smrg      done
5645ef6fb4a5Smrg      IFS="$save_ifs"
5646ef6fb4a5Smrg    done
56470cc67336Smrg
5648ef6fb4a5Smrg    if test -n "$generated"; then
5649ef6fb4a5Smrg      $show "${rm}r$generated"
5650ef6fb4a5Smrg      $run ${rm}r$generated
5651ef6fb4a5Smrg    fi
5652301ea0f4Smrg
5653ef6fb4a5Smrg    # Now create the libtool archive.
5654ef6fb4a5Smrg    case $output in
5655ef6fb4a5Smrg    *.la)
5656ef6fb4a5Smrg      old_library=
5657ef6fb4a5Smrg      test "$build_old_libs" = yes && old_library="$libname.$libext"
5658ef6fb4a5Smrg      $show "creating $output"
56590cc67336Smrg
5660ef6fb4a5Smrg      # Preserve any variables that may affect compiler behavior
5661ef6fb4a5Smrg      for var in $variables_saved_for_relink; do
5662ef6fb4a5Smrg	if eval test -z \"\${$var+set}\"; then
5663ef6fb4a5Smrg	  relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
5664ef6fb4a5Smrg	elif eval var_value=\$$var; test -z "$var_value"; then
5665ef6fb4a5Smrg	  relink_command="$var=; export $var; $relink_command"
5666ef6fb4a5Smrg	else
5667ef6fb4a5Smrg	  var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
5668ef6fb4a5Smrg	  relink_command="$var=\"$var_value\"; export $var; $relink_command"
56690cc67336Smrg	fi
5670ef6fb4a5Smrg      done
5671ef6fb4a5Smrg      # Quote the link command for shipping.
5672ef6fb4a5Smrg      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
5673ef6fb4a5Smrg      relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
5674ef6fb4a5Smrg      if test "$hardcode_automatic" = yes ; then
5675ef6fb4a5Smrg	relink_command=
56760cc67336Smrg      fi
56770cc67336Smrg
56780cc67336Smrg
5679ef6fb4a5Smrg      # Only create the output if not a dry run.
5680ef6fb4a5Smrg      if test -z "$run"; then
5681ef6fb4a5Smrg	for installed in no yes; do
5682ef6fb4a5Smrg	  if test "$installed" = yes; then
5683ef6fb4a5Smrg	    if test -z "$install_libdir"; then
5684ef6fb4a5Smrg	      break
5685ef6fb4a5Smrg	    fi
5686ef6fb4a5Smrg	    output="$output_objdir/$outputname"i
5687ef6fb4a5Smrg	    # Replace all uninstalled libtool libraries with the installed ones
5688ef6fb4a5Smrg	    newdependency_libs=
5689ef6fb4a5Smrg	    for deplib in $dependency_libs; do
5690ef6fb4a5Smrg	      case $deplib in
5691ef6fb4a5Smrg	      *.la)
5692ef6fb4a5Smrg		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
5693ef6fb4a5Smrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
5694ef6fb4a5Smrg		if test -z "$libdir"; then
5695ef6fb4a5Smrg		  $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
5696ef6fb4a5Smrg		  exit $EXIT_FAILURE
5697ef6fb4a5Smrg		fi
5698ef6fb4a5Smrg		newdependency_libs="$newdependency_libs $libdir/$name"
5699ef6fb4a5Smrg		;;
5700ef6fb4a5Smrg	      *) newdependency_libs="$newdependency_libs $deplib" ;;
5701ef6fb4a5Smrg	      esac
5702ef6fb4a5Smrg	    done
5703ef6fb4a5Smrg	    dependency_libs="$newdependency_libs"
5704ef6fb4a5Smrg	    newdlfiles=
5705ef6fb4a5Smrg	    for lib in $dlfiles; do
5706ef6fb4a5Smrg	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5707ef6fb4a5Smrg	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5708ef6fb4a5Smrg	      if test -z "$libdir"; then
5709ef6fb4a5Smrg		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5710ef6fb4a5Smrg		exit $EXIT_FAILURE
5711ef6fb4a5Smrg	      fi
5712ef6fb4a5Smrg	      newdlfiles="$newdlfiles $libdir/$name"
5713ef6fb4a5Smrg	    done
5714ef6fb4a5Smrg	    dlfiles="$newdlfiles"
5715ef6fb4a5Smrg	    newdlprefiles=
5716ef6fb4a5Smrg	    for lib in $dlprefiles; do
5717ef6fb4a5Smrg	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5718ef6fb4a5Smrg	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5719ef6fb4a5Smrg	      if test -z "$libdir"; then
5720ef6fb4a5Smrg		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5721ef6fb4a5Smrg		exit $EXIT_FAILURE
5722ef6fb4a5Smrg	      fi
5723ef6fb4a5Smrg	      newdlprefiles="$newdlprefiles $libdir/$name"
5724ef6fb4a5Smrg	    done
5725ef6fb4a5Smrg	    dlprefiles="$newdlprefiles"
5726ef6fb4a5Smrg	  else
5727ef6fb4a5Smrg	    newdlfiles=
5728ef6fb4a5Smrg	    for lib in $dlfiles; do
5729ef6fb4a5Smrg	      case $lib in
5730ef6fb4a5Smrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5731ef6fb4a5Smrg		*) abs=`pwd`"/$lib" ;;
5732ef6fb4a5Smrg	      esac
5733ef6fb4a5Smrg	      newdlfiles="$newdlfiles $abs"
5734ef6fb4a5Smrg	    done
5735ef6fb4a5Smrg	    dlfiles="$newdlfiles"
5736ef6fb4a5Smrg	    newdlprefiles=
5737ef6fb4a5Smrg	    for lib in $dlprefiles; do
5738ef6fb4a5Smrg	      case $lib in
5739ef6fb4a5Smrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5740ef6fb4a5Smrg		*) abs=`pwd`"/$lib" ;;
5741ef6fb4a5Smrg	      esac
5742ef6fb4a5Smrg	      newdlprefiles="$newdlprefiles $abs"
5743ef6fb4a5Smrg	    done
5744ef6fb4a5Smrg	    dlprefiles="$newdlprefiles"
5745ef6fb4a5Smrg	  fi
5746ef6fb4a5Smrg	  $rm $output
5747ef6fb4a5Smrg	  # place dlname in correct position for cygwin
5748ef6fb4a5Smrg	  tdlname=$dlname
5749ef6fb4a5Smrg	  case $host,$output,$installed,$module,$dlname in
5750ef6fb4a5Smrg	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
5751ef6fb4a5Smrg	  esac
5752ef6fb4a5Smrg	  $echo > $output "\
5753ef6fb4a5Smrg# $outputname - a libtool library file
5754ef6fb4a5Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
5755ef6fb4a5Smrg#
5756ef6fb4a5Smrg# Please DO NOT delete this file!
5757ef6fb4a5Smrg# It is necessary for linking the library.
57580cc67336Smrg
5759ef6fb4a5Smrg# The name that we can dlopen(3).
5760ef6fb4a5Smrgdlname='$tdlname'
5761301ea0f4Smrg
5762ef6fb4a5Smrg# Names of this library.
5763ef6fb4a5Smrglibrary_names='$library_names'
5764301ea0f4Smrg
5765ef6fb4a5Smrg# The name of the static archive.
5766ef6fb4a5Smrgold_library='$old_library'
5767301ea0f4Smrg
5768ef6fb4a5Smrg# Libraries that this one depends upon.
5769ef6fb4a5Smrgdependency_libs='$dependency_libs'
5770301ea0f4Smrg
5771ef6fb4a5Smrg# Version information for $libname.
5772ef6fb4a5Smrgcurrent=$current
5773ef6fb4a5Smrgage=$age
5774ef6fb4a5Smrgrevision=$revision
5775301ea0f4Smrg
5776ef6fb4a5Smrg# Is this an already installed library?
5777ef6fb4a5Smrginstalled=$installed
5778301ea0f4Smrg
5779ef6fb4a5Smrg# Should we warn about portability when linking against -modules?
5780ef6fb4a5Smrgshouldnotlink=$module
5781301ea0f4Smrg
5782ef6fb4a5Smrg# Files to dlopen/dlpreopen
5783ef6fb4a5Smrgdlopen='$dlfiles'
5784ef6fb4a5Smrgdlpreopen='$dlprefiles'
5785301ea0f4Smrg
5786ef6fb4a5Smrg# Directory that this library needs to be installed in:
5787ef6fb4a5Smrglibdir='$install_libdir'"
5788ef6fb4a5Smrg	  if test "$installed" = no && test "$need_relink" = yes; then
5789ef6fb4a5Smrg	    $echo >> $output "\
5790ef6fb4a5Smrgrelink_command=\"$relink_command\""
5791ef6fb4a5Smrg	  fi
5792ef6fb4a5Smrg	done
57930cc67336Smrg      fi
5794301ea0f4Smrg
5795ef6fb4a5Smrg      # Do a symbolic link so that the libtool archive can be found in
5796ef6fb4a5Smrg      # LD_LIBRARY_PATH before the program is installed.
5797ef6fb4a5Smrg      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
5798ef6fb4a5Smrg      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
57990cc67336Smrg      ;;
5800ef6fb4a5Smrg    esac
5801ef6fb4a5Smrg    exit $EXIT_SUCCESS
5802ef6fb4a5Smrg    ;;
5803301ea0f4Smrg
5804ef6fb4a5Smrg  # libtool install mode
5805ef6fb4a5Smrg  install)
5806ef6fb4a5Smrg    modename="$modename: install"
5807ef6fb4a5Smrg
5808ef6fb4a5Smrg    # There may be an optional sh(1) argument at the beginning of
5809ef6fb4a5Smrg    # install_prog (especially on Windows NT).
5810ef6fb4a5Smrg    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
5811ef6fb4a5Smrg       # Allow the use of GNU shtool's install command.
5812ef6fb4a5Smrg       $echo "X$nonopt" | grep shtool > /dev/null; then
5813ef6fb4a5Smrg      # Aesthetically quote it.
5814ef6fb4a5Smrg      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
5815ef6fb4a5Smrg      case $arg in
5816ef6fb4a5Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
5817ef6fb4a5Smrg	arg="\"$arg\""
5818ef6fb4a5Smrg	;;
5819301ea0f4Smrg      esac
5820ef6fb4a5Smrg      install_prog="$arg "
5821ef6fb4a5Smrg      arg="$1"
5822ef6fb4a5Smrg      shift
5823ef6fb4a5Smrg    else
5824ef6fb4a5Smrg      install_prog=
5825ef6fb4a5Smrg      arg=$nonopt
5826ef6fb4a5Smrg    fi
5827301ea0f4Smrg
5828ef6fb4a5Smrg    # The real first argument should be the name of the installation program.
5829ef6fb4a5Smrg    # Aesthetically quote it.
5830ef6fb4a5Smrg    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5831ef6fb4a5Smrg    case $arg in
5832ef6fb4a5Smrg    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
5833ef6fb4a5Smrg      arg="\"$arg\""
5834ef6fb4a5Smrg      ;;
5835ef6fb4a5Smrg    esac
5836ef6fb4a5Smrg    install_prog="$install_prog$arg"
5837301ea0f4Smrg
5838ef6fb4a5Smrg    # We need to accept at least all the BSD install flags.
5839ef6fb4a5Smrg    dest=
5840ef6fb4a5Smrg    files=
5841ef6fb4a5Smrg    opts=
5842ef6fb4a5Smrg    prev=
5843ef6fb4a5Smrg    install_type=
5844ef6fb4a5Smrg    isdir=no
5845ef6fb4a5Smrg    stripme=
5846ef6fb4a5Smrg    for arg
5847ef6fb4a5Smrg    do
5848ef6fb4a5Smrg      if test -n "$dest"; then
5849ef6fb4a5Smrg	files="$files $dest"
5850ef6fb4a5Smrg	dest=$arg
5851ef6fb4a5Smrg	continue
5852ef6fb4a5Smrg      fi
5853301ea0f4Smrg
5854ef6fb4a5Smrg      case $arg in
5855ef6fb4a5Smrg      -d) isdir=yes ;;
5856ef6fb4a5Smrg      -f) 
5857ef6fb4a5Smrg      	case " $install_prog " in
5858ef6fb4a5Smrg	*[\\\ /]cp\ *) ;;
5859ef6fb4a5Smrg	*) prev=$arg ;;
5860ef6fb4a5Smrg	esac
5861ef6fb4a5Smrg	;;
5862ef6fb4a5Smrg      -g | -m | -o) prev=$arg ;;
5863ef6fb4a5Smrg      -s)
5864ef6fb4a5Smrg	stripme=" -s"
5865ef6fb4a5Smrg	continue
5866ef6fb4a5Smrg	;;
5867ef6fb4a5Smrg      -*)
5868ef6fb4a5Smrg	;;
5869ef6fb4a5Smrg      *)
5870ef6fb4a5Smrg	# If the previous option needed an argument, then skip it.
5871ef6fb4a5Smrg	if test -n "$prev"; then
5872ef6fb4a5Smrg	  prev=
5873ef6fb4a5Smrg	else
5874ef6fb4a5Smrg	  dest=$arg
5875ef6fb4a5Smrg	  continue
5876ef6fb4a5Smrg	fi
5877301ea0f4Smrg	;;
5878301ea0f4Smrg      esac
5879301ea0f4Smrg
5880ef6fb4a5Smrg      # Aesthetically quote the argument.
5881ef6fb4a5Smrg      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5882ef6fb4a5Smrg      case $arg in
5883ef6fb4a5Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
5884ef6fb4a5Smrg	arg="\"$arg\""
5885301ea0f4Smrg	;;
5886301ea0f4Smrg      esac
5887ef6fb4a5Smrg      install_prog="$install_prog $arg"
5888ef6fb4a5Smrg    done
5889301ea0f4Smrg
5890ef6fb4a5Smrg    if test -z "$install_prog"; then
5891ef6fb4a5Smrg      $echo "$modename: you must specify an install program" 1>&2
5892ef6fb4a5Smrg      $echo "$help" 1>&2
5893ef6fb4a5Smrg      exit $EXIT_FAILURE
5894ef6fb4a5Smrg    fi
5895301ea0f4Smrg
5896ef6fb4a5Smrg    if test -n "$prev"; then
5897ef6fb4a5Smrg      $echo "$modename: the \`$prev' option requires an argument" 1>&2
5898ef6fb4a5Smrg      $echo "$help" 1>&2
5899ef6fb4a5Smrg      exit $EXIT_FAILURE
5900ef6fb4a5Smrg    fi
5901ef6fb4a5Smrg
5902ef6fb4a5Smrg    if test -z "$files"; then
5903ef6fb4a5Smrg      if test -z "$dest"; then
5904ef6fb4a5Smrg	$echo "$modename: no file or destination specified" 1>&2
5905ef6fb4a5Smrg      else
5906ef6fb4a5Smrg	$echo "$modename: you must specify a destination" 1>&2
5907ef6fb4a5Smrg      fi
5908ef6fb4a5Smrg      $echo "$help" 1>&2
5909ef6fb4a5Smrg      exit $EXIT_FAILURE
5910ef6fb4a5Smrg    fi
5911ef6fb4a5Smrg
5912ef6fb4a5Smrg    # Strip any trailing slash from the destination.
5913ef6fb4a5Smrg    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
5914ef6fb4a5Smrg
5915ef6fb4a5Smrg    # Check to see that the destination is a directory.
5916ef6fb4a5Smrg    test -d "$dest" && isdir=yes
5917ef6fb4a5Smrg    if test "$isdir" = yes; then
5918ef6fb4a5Smrg      destdir="$dest"
5919ef6fb4a5Smrg      destname=
5920ef6fb4a5Smrg    else
5921ef6fb4a5Smrg      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
5922ef6fb4a5Smrg      test "X$destdir" = "X$dest" && destdir=.
5923ef6fb4a5Smrg      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
5924ef6fb4a5Smrg
5925ef6fb4a5Smrg      # Not a directory, so check to see that there is only one file specified.
5926ef6fb4a5Smrg      set dummy $files
5927ef6fb4a5Smrg      if test "$#" -gt 2; then
5928ef6fb4a5Smrg	$echo "$modename: \`$dest' is not a directory" 1>&2
5929ef6fb4a5Smrg	$echo "$help" 1>&2
5930ef6fb4a5Smrg	exit $EXIT_FAILURE
5931ef6fb4a5Smrg      fi
5932ef6fb4a5Smrg    fi
5933ef6fb4a5Smrg    case $destdir in
5934ef6fb4a5Smrg    [\\/]* | [A-Za-z]:[\\/]*) ;;
5935ef6fb4a5Smrg    *)
5936ef6fb4a5Smrg      for file in $files; do
5937ef6fb4a5Smrg	case $file in
5938ef6fb4a5Smrg	*.lo) ;;
5939301ea0f4Smrg	*)
5940ef6fb4a5Smrg	  $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
5941ef6fb4a5Smrg	  $echo "$help" 1>&2
5942ef6fb4a5Smrg	  exit $EXIT_FAILURE
59430cc67336Smrg	  ;;
59440cc67336Smrg	esac
59450cc67336Smrg      done
5946ef6fb4a5Smrg      ;;
5947ef6fb4a5Smrg    esac
5948301ea0f4Smrg
5949ef6fb4a5Smrg    # This variable tells wrapper scripts just to set variables rather
5950ef6fb4a5Smrg    # than running their programs.
5951ef6fb4a5Smrg    libtool_install_magic="$magic"
5952301ea0f4Smrg
5953ef6fb4a5Smrg    staticlibs=
5954ef6fb4a5Smrg    future_libdirs=
5955ef6fb4a5Smrg    current_libdirs=
5956ef6fb4a5Smrg    for file in $files; do
5957301ea0f4Smrg
5958ef6fb4a5Smrg      # Do each installation.
5959ef6fb4a5Smrg      case $file in
5960ef6fb4a5Smrg      *.$libext)
5961ef6fb4a5Smrg	# Do the static libraries later.
5962ef6fb4a5Smrg	staticlibs="$staticlibs $file"
5963ef6fb4a5Smrg	;;
5964ef6fb4a5Smrg
5965ef6fb4a5Smrg      *.la)
5966ef6fb4a5Smrg	# Check to see that this really is a libtool archive.
5967ef6fb4a5Smrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
5968ef6fb4a5Smrg	else
5969ef6fb4a5Smrg	  $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
5970ef6fb4a5Smrg	  $echo "$help" 1>&2
5971ef6fb4a5Smrg	  exit $EXIT_FAILURE
5972ef6fb4a5Smrg	fi
5973ef6fb4a5Smrg
5974ef6fb4a5Smrg	library_names=
5975ef6fb4a5Smrg	old_library=
5976ef6fb4a5Smrg	relink_command=
5977ef6fb4a5Smrg	# If there is no directory component, then add one.
5978ef6fb4a5Smrg	case $file in
5979ef6fb4a5Smrg	*/* | *\\*) . $file ;;
5980ef6fb4a5Smrg	*) . ./$file ;;
5981ef6fb4a5Smrg	esac
5982ef6fb4a5Smrg
5983ef6fb4a5Smrg	# Add the libdir to current_libdirs if it is the destination.
5984ef6fb4a5Smrg	if test "X$destdir" = "X$libdir"; then
5985ef6fb4a5Smrg	  case "$current_libdirs " in
59860cc67336Smrg	  *" $libdir "*) ;;
5987ef6fb4a5Smrg	  *) current_libdirs="$current_libdirs $libdir" ;;
59880cc67336Smrg	  esac
5989ef6fb4a5Smrg	else
5990ef6fb4a5Smrg	  # Note the libdir as a future libdir.
5991ef6fb4a5Smrg	  case "$future_libdirs " in
5992301ea0f4Smrg	  *" $libdir "*) ;;
5993ef6fb4a5Smrg	  *) future_libdirs="$future_libdirs $libdir" ;;
5994301ea0f4Smrg	  esac
59950cc67336Smrg	fi
59960cc67336Smrg
5997ef6fb4a5Smrg	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
5998ef6fb4a5Smrg	test "X$dir" = "X$file/" && dir=
5999ef6fb4a5Smrg	dir="$dir$objdir"
6000ef6fb4a5Smrg
6001ef6fb4a5Smrg	if test -n "$relink_command"; then
6002ef6fb4a5Smrg	  # Determine the prefix the user has applied to our future dir.
6003ef6fb4a5Smrg	  inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
6004ef6fb4a5Smrg
6005ef6fb4a5Smrg	  # Don't allow the user to place us outside of our expected
6006ef6fb4a5Smrg	  # location b/c this prevents finding dependent libraries that
6007ef6fb4a5Smrg	  # are installed to the same prefix.
6008ef6fb4a5Smrg	  # At present, this check doesn't affect windows .dll's that
6009ef6fb4a5Smrg	  # are installed into $libdir/../bin (currently, that works fine)
6010ef6fb4a5Smrg	  # but it's something to keep an eye on.
6011ef6fb4a5Smrg	  if test "$inst_prefix_dir" = "$destdir"; then
6012ef6fb4a5Smrg	    $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
6013ef6fb4a5Smrg	    exit $EXIT_FAILURE
6014ef6fb4a5Smrg	  fi
6015ef6fb4a5Smrg
6016ef6fb4a5Smrg	  if test -n "$inst_prefix_dir"; then
6017ef6fb4a5Smrg	    # Stick the inst_prefix_dir data into the link command.
6018ef6fb4a5Smrg	    relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP`
6019ef6fb4a5Smrg	  else
6020ef6fb4a5Smrg	    relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP`
6021ef6fb4a5Smrg	  fi
6022ef6fb4a5Smrg
6023ef6fb4a5Smrg	  $echo "$modename: warning: relinking \`$file'" 1>&2
6024ef6fb4a5Smrg	  $show "$relink_command"
6025ef6fb4a5Smrg	  if $run eval "$relink_command"; then :
60260cc67336Smrg	  else
6027ef6fb4a5Smrg	    $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
6028ef6fb4a5Smrg	    exit $EXIT_FAILURE
60290cc67336Smrg	  fi
6030301ea0f4Smrg	fi
6031301ea0f4Smrg
6032ef6fb4a5Smrg	# See the names of the shared library.
6033ef6fb4a5Smrg	set dummy $library_names
6034ef6fb4a5Smrg	if test -n "$2"; then
6035ef6fb4a5Smrg	  realname="$2"
6036ef6fb4a5Smrg	  shift
6037ef6fb4a5Smrg	  shift
6038301ea0f4Smrg
6039ef6fb4a5Smrg	  srcname="$realname"
6040ef6fb4a5Smrg	  test -n "$relink_command" && srcname="$realname"T
6041301ea0f4Smrg
6042ef6fb4a5Smrg	  # Install the shared library and build the symlinks.
6043ef6fb4a5Smrg	  $show "$install_prog $dir/$srcname $destdir/$realname"
6044ef6fb4a5Smrg	  $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
6045ef6fb4a5Smrg	  if test -n "$stripme" && test -n "$striplib"; then
6046ef6fb4a5Smrg	    $show "$striplib $destdir/$realname"
6047ef6fb4a5Smrg	    $run eval "$striplib $destdir/$realname" || exit $?
6048ef6fb4a5Smrg	  fi
6049301ea0f4Smrg
6050ef6fb4a5Smrg	  if test "$#" -gt 0; then
6051ef6fb4a5Smrg	    # Delete the old symlinks, and create new ones.
6052ef6fb4a5Smrg	    # Try `ln -sf' first, because the `ln' binary might depend on
6053ef6fb4a5Smrg	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
6054ef6fb4a5Smrg	    # so we also need to try rm && ln -s.
6055ef6fb4a5Smrg	    for linkname
6056ef6fb4a5Smrg	    do
6057ef6fb4a5Smrg	      if test "$linkname" != "$realname"; then
6058ef6fb4a5Smrg                $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
6059ef6fb4a5Smrg                $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
6060ef6fb4a5Smrg	      fi
6061ef6fb4a5Smrg	    done
6062ef6fb4a5Smrg	  fi
6063301ea0f4Smrg
6064ef6fb4a5Smrg	  # Do each command in the postinstall commands.
6065ef6fb4a5Smrg	  lib="$destdir/$realname"
6066ef6fb4a5Smrg	  cmds=$postinstall_cmds
6067ef6fb4a5Smrg	  save_ifs="$IFS"; IFS='~'
6068ef6fb4a5Smrg	  for cmd in $cmds; do
6069ef6fb4a5Smrg	    IFS="$save_ifs"
6070ef6fb4a5Smrg	    eval cmd=\"$cmd\"
6071ef6fb4a5Smrg	    $show "$cmd"
6072ef6fb4a5Smrg	    $run eval "$cmd" || {
6073ef6fb4a5Smrg	      lt_exit=$?
6074ef6fb4a5Smrg
6075ef6fb4a5Smrg	      # Restore the uninstalled library and exit
6076ef6fb4a5Smrg	      if test "$mode" = relink; then
6077ef6fb4a5Smrg		$run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
6078ef6fb4a5Smrg	      fi
6079301ea0f4Smrg
6080ef6fb4a5Smrg	      exit $lt_exit
6081ef6fb4a5Smrg	    }
6082ef6fb4a5Smrg	  done
6083ef6fb4a5Smrg	  IFS="$save_ifs"
60840cc67336Smrg	fi
6085301ea0f4Smrg
6086ef6fb4a5Smrg	# Install the pseudo-library for information purposes.
6087ef6fb4a5Smrg	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6088ef6fb4a5Smrg	instname="$dir/$name"i
6089ef6fb4a5Smrg	$show "$install_prog $instname $destdir/$name"
6090ef6fb4a5Smrg	$run eval "$install_prog $instname $destdir/$name" || exit $?
6091301ea0f4Smrg
6092ef6fb4a5Smrg	# Maybe install the static library, too.
6093ef6fb4a5Smrg	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
6094ef6fb4a5Smrg	;;
6095301ea0f4Smrg
6096ef6fb4a5Smrg      *.lo)
6097ef6fb4a5Smrg	# Install (i.e. copy) a libtool object.
6098ef6fb4a5Smrg
6099ef6fb4a5Smrg	# Figure out destination file name, if it wasn't already specified.
6100ef6fb4a5Smrg	if test -n "$destname"; then
6101ef6fb4a5Smrg	  destfile="$destdir/$destname"
6102ef6fb4a5Smrg	else
6103ef6fb4a5Smrg	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6104ef6fb4a5Smrg	  destfile="$destdir/$destfile"
6105301ea0f4Smrg	fi
6106ef6fb4a5Smrg
6107ef6fb4a5Smrg	# Deduce the name of the destination old-style object file.
6108ef6fb4a5Smrg	case $destfile in
6109ef6fb4a5Smrg	*.lo)
6110ef6fb4a5Smrg	  staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
6111ef6fb4a5Smrg	  ;;
6112ef6fb4a5Smrg	*.$objext)
6113ef6fb4a5Smrg	  staticdest="$destfile"
6114ef6fb4a5Smrg	  destfile=
6115ef6fb4a5Smrg	  ;;
6116ef6fb4a5Smrg	*)
6117ef6fb4a5Smrg	  $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
6118ef6fb4a5Smrg	  $echo "$help" 1>&2
6119ef6fb4a5Smrg	  exit $EXIT_FAILURE
6120ef6fb4a5Smrg	  ;;
6121ef6fb4a5Smrg	esac
6122ef6fb4a5Smrg
6123ef6fb4a5Smrg	# Install the libtool object if requested.
6124ef6fb4a5Smrg	if test -n "$destfile"; then
6125ef6fb4a5Smrg	  $show "$install_prog $file $destfile"
6126ef6fb4a5Smrg	  $run eval "$install_prog $file $destfile" || exit $?
61270cc67336Smrg	fi
6128301ea0f4Smrg
6129ef6fb4a5Smrg	# Install the old object if enabled.
6130ef6fb4a5Smrg	if test "$build_old_libs" = yes; then
6131ef6fb4a5Smrg	  # Deduce the name of the old-style object file.
6132ef6fb4a5Smrg	  staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
6133301ea0f4Smrg
6134ef6fb4a5Smrg	  $show "$install_prog $staticobj $staticdest"
6135ef6fb4a5Smrg	  $run eval "$install_prog \$staticobj \$staticdest" || exit $?
6136ef6fb4a5Smrg	fi
6137ef6fb4a5Smrg	exit $EXIT_SUCCESS
6138ef6fb4a5Smrg	;;
6139301ea0f4Smrg
6140ef6fb4a5Smrg      *)
6141ef6fb4a5Smrg	# Figure out destination file name, if it wasn't already specified.
6142ef6fb4a5Smrg	if test -n "$destname"; then
6143ef6fb4a5Smrg	  destfile="$destdir/$destname"
6144301ea0f4Smrg	else
6145ef6fb4a5Smrg	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6146ef6fb4a5Smrg	  destfile="$destdir/$destfile"
6147301ea0f4Smrg	fi
6148301ea0f4Smrg
6149ef6fb4a5Smrg	# If the file is missing, and there is a .exe on the end, strip it
6150ef6fb4a5Smrg	# because it is most likely a libtool script we actually want to
6151ef6fb4a5Smrg	# install
6152ef6fb4a5Smrg	stripped_ext=""
6153ef6fb4a5Smrg	case $file in
6154ef6fb4a5Smrg	  *.exe)
6155ef6fb4a5Smrg	    if test ! -f "$file"; then
6156ef6fb4a5Smrg	      file=`$echo $file|${SED} 's,.exe$,,'`
6157ef6fb4a5Smrg	      stripped_ext=".exe"
6158ef6fb4a5Smrg	    fi
6159ef6fb4a5Smrg	    ;;
6160ef6fb4a5Smrg	esac
6161301ea0f4Smrg
6162ef6fb4a5Smrg	# Do a test to see if this is really a libtool program.
6163ef6fb4a5Smrg	case $host in
6164ef6fb4a5Smrg	*cygwin*|*mingw*)
6165ef6fb4a5Smrg	    wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
6166ef6fb4a5Smrg	    ;;
6167ef6fb4a5Smrg	*)
6168ef6fb4a5Smrg	    wrapper=$file
6169ef6fb4a5Smrg	    ;;
6170ef6fb4a5Smrg	esac
6171ef6fb4a5Smrg	if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
6172ef6fb4a5Smrg	  notinst_deplibs=
6173ef6fb4a5Smrg	  relink_command=
6174301ea0f4Smrg
6175ef6fb4a5Smrg	  # Note that it is not necessary on cygwin/mingw to append a dot to
6176ef6fb4a5Smrg	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
6177ef6fb4a5Smrg	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
6178ef6fb4a5Smrg	  # `FILE.' does not work on cygwin managed mounts.
6179ef6fb4a5Smrg	  #
6180ef6fb4a5Smrg	  # If there is no directory component, then add one.
6181ef6fb4a5Smrg	  case $wrapper in
6182ef6fb4a5Smrg	  */* | *\\*) . ${wrapper} ;;
6183ef6fb4a5Smrg	  *) . ./${wrapper} ;;
6184ef6fb4a5Smrg	  esac
6185301ea0f4Smrg
6186ef6fb4a5Smrg	  # Check the variables that should have been set.
6187ef6fb4a5Smrg	  if test -z "$notinst_deplibs"; then
6188ef6fb4a5Smrg	    $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
6189ef6fb4a5Smrg	    exit $EXIT_FAILURE
6190ef6fb4a5Smrg	  fi
6191301ea0f4Smrg
6192ef6fb4a5Smrg	  finalize=yes
6193ef6fb4a5Smrg	  for lib in $notinst_deplibs; do
6194ef6fb4a5Smrg	    # Check to see that each library is installed.
6195ef6fb4a5Smrg	    libdir=
6196ef6fb4a5Smrg	    if test -f "$lib"; then
6197ef6fb4a5Smrg	      # If there is no directory component, then add one.
6198ef6fb4a5Smrg	      case $lib in
6199ef6fb4a5Smrg	      */* | *\\*) . $lib ;;
6200ef6fb4a5Smrg	      *) . ./$lib ;;
6201ef6fb4a5Smrg	      esac
6202ef6fb4a5Smrg	    fi
6203ef6fb4a5Smrg	    libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
6204ef6fb4a5Smrg	    if test -n "$libdir" && test ! -f "$libfile"; then
6205ef6fb4a5Smrg	      $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
6206ef6fb4a5Smrg	      finalize=no
6207ef6fb4a5Smrg	    fi
6208ef6fb4a5Smrg	  done
6209ef6fb4a5Smrg
6210ef6fb4a5Smrg	  relink_command=
6211ef6fb4a5Smrg	  # Note that it is not necessary on cygwin/mingw to append a dot to
6212ef6fb4a5Smrg	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
6213ef6fb4a5Smrg	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
6214ef6fb4a5Smrg	  # `FILE.' does not work on cygwin managed mounts.
6215ef6fb4a5Smrg	  #
6216ef6fb4a5Smrg	  # If there is no directory component, then add one.
6217ef6fb4a5Smrg	  case $wrapper in
6218ef6fb4a5Smrg	  */* | *\\*) . ${wrapper} ;;
6219ef6fb4a5Smrg	  *) . ./${wrapper} ;;
6220ef6fb4a5Smrg	  esac
6221ef6fb4a5Smrg
6222ef6fb4a5Smrg	  outputname=
6223ef6fb4a5Smrg	  if test "$fast_install" = no && test -n "$relink_command"; then
6224ef6fb4a5Smrg	    if test "$finalize" = yes && test -z "$run"; then
6225ef6fb4a5Smrg	      tmpdir=`func_mktempdir`
6226ef6fb4a5Smrg	      file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
6227ef6fb4a5Smrg	      outputname="$tmpdir/$file"
6228ef6fb4a5Smrg	      # Replace the output file specification.
6229ef6fb4a5Smrg	      relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP`
6230ef6fb4a5Smrg
6231ef6fb4a5Smrg	      $show "$relink_command"
6232ef6fb4a5Smrg	      if $run eval "$relink_command"; then :
6233ef6fb4a5Smrg	      else
6234ef6fb4a5Smrg		$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
6235ef6fb4a5Smrg		${rm}r "$tmpdir"
6236ef6fb4a5Smrg		continue
6237ef6fb4a5Smrg	      fi
6238ef6fb4a5Smrg	      file="$outputname"
6239ef6fb4a5Smrg	    else
6240ef6fb4a5Smrg	      $echo "$modename: warning: cannot relink \`$file'" 1>&2
6241ef6fb4a5Smrg	    fi
62420cc67336Smrg	  else
6243ef6fb4a5Smrg	    # Install the binary that we compiled earlier.
6244ef6fb4a5Smrg	    file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
62450cc67336Smrg	  fi
6246ef6fb4a5Smrg	fi
6247301ea0f4Smrg
6248ef6fb4a5Smrg	# remove .exe since cygwin /usr/bin/install will append another
6249ef6fb4a5Smrg	# one anyway 
6250ef6fb4a5Smrg	case $install_prog,$host in
6251ef6fb4a5Smrg	*/usr/bin/install*,*cygwin*)
6252ef6fb4a5Smrg	  case $file:$destfile in
6253ef6fb4a5Smrg	  *.exe:*.exe)
6254ef6fb4a5Smrg	    # this is ok
6255ef6fb4a5Smrg	    ;;
6256ef6fb4a5Smrg	  *.exe:*)
6257ef6fb4a5Smrg	    destfile=$destfile.exe
6258ef6fb4a5Smrg	    ;;
6259ef6fb4a5Smrg	  *:*.exe)
6260ef6fb4a5Smrg	    destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
6261ef6fb4a5Smrg	    ;;
6262ef6fb4a5Smrg	  esac
6263ef6fb4a5Smrg	  ;;
6264301ea0f4Smrg	esac
6265ef6fb4a5Smrg	$show "$install_prog$stripme $file $destfile"
6266ef6fb4a5Smrg	$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
6267ef6fb4a5Smrg	test -n "$outputname" && ${rm}r "$tmpdir"
6268ef6fb4a5Smrg	;;
6269ef6fb4a5Smrg      esac
6270ef6fb4a5Smrg    done
6271301ea0f4Smrg
6272ef6fb4a5Smrg    for file in $staticlibs; do
6273ef6fb4a5Smrg      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6274301ea0f4Smrg
6275ef6fb4a5Smrg      # Set up the ranlib parameters.
6276ef6fb4a5Smrg      oldlib="$destdir/$name"
6277301ea0f4Smrg
6278ef6fb4a5Smrg      $show "$install_prog $file $oldlib"
6279ef6fb4a5Smrg      $run eval "$install_prog \$file \$oldlib" || exit $?
6280301ea0f4Smrg
6281ef6fb4a5Smrg      if test -n "$stripme" && test -n "$old_striplib"; then
6282ef6fb4a5Smrg	$show "$old_striplib $oldlib"
6283ef6fb4a5Smrg	$run eval "$old_striplib $oldlib" || exit $?
6284301ea0f4Smrg      fi
6285301ea0f4Smrg
6286ef6fb4a5Smrg      # Do each command in the postinstall commands.
6287ef6fb4a5Smrg      cmds=$old_postinstall_cmds
6288ef6fb4a5Smrg      save_ifs="$IFS"; IFS='~'
6289ef6fb4a5Smrg      for cmd in $cmds; do
6290ef6fb4a5Smrg	IFS="$save_ifs"
6291ef6fb4a5Smrg	eval cmd=\"$cmd\"
6292ef6fb4a5Smrg	$show "$cmd"
6293ef6fb4a5Smrg	$run eval "$cmd" || exit $?
6294ef6fb4a5Smrg      done
6295ef6fb4a5Smrg      IFS="$save_ifs"
6296ef6fb4a5Smrg    done
6297301ea0f4Smrg
6298ef6fb4a5Smrg    if test -n "$future_libdirs"; then
6299ef6fb4a5Smrg      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
6300ef6fb4a5Smrg    fi
6301301ea0f4Smrg
6302ef6fb4a5Smrg    if test -n "$current_libdirs"; then
6303ef6fb4a5Smrg      # Maybe just do a dry run.
6304ef6fb4a5Smrg      test -n "$run" && current_libdirs=" -n$current_libdirs"
6305ef6fb4a5Smrg      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
6306ef6fb4a5Smrg    else
6307ef6fb4a5Smrg      exit $EXIT_SUCCESS
6308ef6fb4a5Smrg    fi
6309ef6fb4a5Smrg    ;;
6310301ea0f4Smrg
6311ef6fb4a5Smrg  # libtool finish mode
6312ef6fb4a5Smrg  finish)
6313ef6fb4a5Smrg    modename="$modename: finish"
6314ef6fb4a5Smrg    libdirs="$nonopt"
6315ef6fb4a5Smrg    admincmds=
6316301ea0f4Smrg
6317ef6fb4a5Smrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
6318ef6fb4a5Smrg      for dir
6319ef6fb4a5Smrg      do
6320ef6fb4a5Smrg	libdirs="$libdirs $dir"
6321ef6fb4a5Smrg      done
6322301ea0f4Smrg
6323ef6fb4a5Smrg      for libdir in $libdirs; do
6324ef6fb4a5Smrg	if test -n "$finish_cmds"; then
6325ef6fb4a5Smrg	  # Do each command in the finish commands.
6326ef6fb4a5Smrg	  cmds=$finish_cmds
6327ef6fb4a5Smrg	  save_ifs="$IFS"; IFS='~'
6328ef6fb4a5Smrg	  for cmd in $cmds; do
6329ef6fb4a5Smrg	    IFS="$save_ifs"
6330ef6fb4a5Smrg	    eval cmd=\"$cmd\"
6331ef6fb4a5Smrg	    $show "$cmd"
6332ef6fb4a5Smrg	    $run eval "$cmd" || admincmds="$admincmds
6333ef6fb4a5Smrg       $cmd"
6334301ea0f4Smrg	  done
6335ef6fb4a5Smrg	  IFS="$save_ifs"
6336301ea0f4Smrg	fi
6337ef6fb4a5Smrg	if test -n "$finish_eval"; then
6338ef6fb4a5Smrg	  # Do the single finish_eval.
6339ef6fb4a5Smrg	  eval cmds=\"$finish_eval\"
6340ef6fb4a5Smrg	  $run eval "$cmds" || admincmds="$admincmds
6341ef6fb4a5Smrg       $cmds"
63420cc67336Smrg	fi
6343ef6fb4a5Smrg      done
6344ef6fb4a5Smrg    fi
6345ef6fb4a5Smrg
6346ef6fb4a5Smrg    # Exit here if they wanted silent mode.
6347ef6fb4a5Smrg    test "$show" = : && exit $EXIT_SUCCESS
6348ef6fb4a5Smrg
6349ef6fb4a5Smrg    $echo "X----------------------------------------------------------------------" | $Xsed
6350ef6fb4a5Smrg    $echo "Libraries have been installed in:"
6351ef6fb4a5Smrg    for libdir in $libdirs; do
6352ef6fb4a5Smrg      $echo "   $libdir"
6353301ea0f4Smrg    done
6354ef6fb4a5Smrg    $echo
6355ef6fb4a5Smrg    $echo "If you ever happen to want to link against installed libraries"
6356ef6fb4a5Smrg    $echo "in a given directory, LIBDIR, you must either use libtool, and"
6357ef6fb4a5Smrg    $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
6358ef6fb4a5Smrg    $echo "flag during linking and do at least one of the following:"
6359ef6fb4a5Smrg    if test -n "$shlibpath_var"; then
6360ef6fb4a5Smrg      $echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
6361ef6fb4a5Smrg      $echo "     during execution"
6362ef6fb4a5Smrg    fi
6363ef6fb4a5Smrg    if test -n "$runpath_var"; then
6364ef6fb4a5Smrg      $echo "   - add LIBDIR to the \`$runpath_var' environment variable"
6365ef6fb4a5Smrg      $echo "     during linking"
6366ef6fb4a5Smrg    fi
6367ef6fb4a5Smrg    if test -n "$hardcode_libdir_flag_spec"; then
6368ef6fb4a5Smrg      libdir=LIBDIR
6369ef6fb4a5Smrg      eval flag=\"$hardcode_libdir_flag_spec\"
6370301ea0f4Smrg
6371ef6fb4a5Smrg      $echo "   - use the \`$flag' linker flag"
6372ef6fb4a5Smrg    fi
6373ef6fb4a5Smrg    if test -n "$admincmds"; then
6374ef6fb4a5Smrg      $echo "   - have your system administrator run these commands:$admincmds"
6375ef6fb4a5Smrg    fi
6376ef6fb4a5Smrg    if test -f /etc/ld.so.conf; then
6377ef6fb4a5Smrg      $echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
6378ef6fb4a5Smrg    fi
6379ef6fb4a5Smrg    $echo
6380ef6fb4a5Smrg    $echo "See any operating system documentation about shared libraries for"
6381ef6fb4a5Smrg    $echo "more information, such as the ld(1) and ld.so(8) manual pages."
6382ef6fb4a5Smrg    $echo "X----------------------------------------------------------------------" | $Xsed
6383ef6fb4a5Smrg    exit $EXIT_SUCCESS
6384ef6fb4a5Smrg    ;;
6385301ea0f4Smrg
6386ef6fb4a5Smrg  # libtool execute mode
6387ef6fb4a5Smrg  execute)
6388ef6fb4a5Smrg    modename="$modename: execute"
6389301ea0f4Smrg
6390ef6fb4a5Smrg    # The first argument is the command name.
6391ef6fb4a5Smrg    cmd="$nonopt"
6392ef6fb4a5Smrg    if test -z "$cmd"; then
6393ef6fb4a5Smrg      $echo "$modename: you must specify a COMMAND" 1>&2
6394ef6fb4a5Smrg      $echo "$help"
6395ef6fb4a5Smrg      exit $EXIT_FAILURE
6396ef6fb4a5Smrg    fi
6397301ea0f4Smrg
6398ef6fb4a5Smrg    # Handle -dlopen flags immediately.
6399ef6fb4a5Smrg    for file in $execute_dlfiles; do
6400ef6fb4a5Smrg      if test ! -f "$file"; then
6401ef6fb4a5Smrg	$echo "$modename: \`$file' is not a file" 1>&2
6402ef6fb4a5Smrg	$echo "$help" 1>&2
6403ef6fb4a5Smrg	exit $EXIT_FAILURE
6404ef6fb4a5Smrg      fi
64050cc67336Smrg
6406ef6fb4a5Smrg      dir=
6407ef6fb4a5Smrg      case $file in
6408ef6fb4a5Smrg      *.la)
6409ef6fb4a5Smrg	# Check to see that this really is a libtool archive.
6410ef6fb4a5Smrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
6411ef6fb4a5Smrg	else
6412ef6fb4a5Smrg	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
6413ef6fb4a5Smrg	  $echo "$help" 1>&2
6414ef6fb4a5Smrg	  exit $EXIT_FAILURE
6415ef6fb4a5Smrg	fi
6416301ea0f4Smrg
6417ef6fb4a5Smrg	# Read the libtool library.
6418ef6fb4a5Smrg	dlname=
6419ef6fb4a5Smrg	library_names=
6420301ea0f4Smrg
6421ef6fb4a5Smrg	# If there is no directory component, then add one.
6422ef6fb4a5Smrg	case $file in
6423ef6fb4a5Smrg	*/* | *\\*) . $file ;;
6424ef6fb4a5Smrg	*) . ./$file ;;
6425ef6fb4a5Smrg	esac
6426301ea0f4Smrg
6427ef6fb4a5Smrg	# Skip this library if it cannot be dlopened.
6428ef6fb4a5Smrg	if test -z "$dlname"; then
6429ef6fb4a5Smrg	  # Warn if it was a shared library.
6430ef6fb4a5Smrg	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
6431ef6fb4a5Smrg	  continue
6432ef6fb4a5Smrg	fi
6433301ea0f4Smrg
6434ef6fb4a5Smrg	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6435ef6fb4a5Smrg	test "X$dir" = "X$file" && dir=.
6436301ea0f4Smrg
6437ef6fb4a5Smrg	if test -f "$dir/$objdir/$dlname"; then
6438ef6fb4a5Smrg	  dir="$dir/$objdir"
6439ef6fb4a5Smrg	else
6440ef6fb4a5Smrg	  if test ! -f "$dir/$dlname"; then
6441ef6fb4a5Smrg	    $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
6442ef6fb4a5Smrg	    exit $EXIT_FAILURE
6443ef6fb4a5Smrg	  fi
6444ef6fb4a5Smrg	fi
6445ef6fb4a5Smrg	;;
6446301ea0f4Smrg
6447ef6fb4a5Smrg      *.lo)
6448ef6fb4a5Smrg	# Just add the directory containing the .lo file.
6449ef6fb4a5Smrg	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6450ef6fb4a5Smrg	test "X$dir" = "X$file" && dir=.
6451ef6fb4a5Smrg	;;
6452301ea0f4Smrg
6453ef6fb4a5Smrg      *)
6454ef6fb4a5Smrg	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
6455ef6fb4a5Smrg	continue
6456ef6fb4a5Smrg	;;
6457ef6fb4a5Smrg      esac
6458301ea0f4Smrg
6459ef6fb4a5Smrg      # Get the absolute pathname.
6460ef6fb4a5Smrg      absdir=`cd "$dir" && pwd`
6461ef6fb4a5Smrg      test -n "$absdir" && dir="$absdir"
6462301ea0f4Smrg
6463ef6fb4a5Smrg      # Now add the directory to shlibpath_var.
6464ef6fb4a5Smrg      if eval "test -z \"\$$shlibpath_var\""; then
6465ef6fb4a5Smrg	eval "$shlibpath_var=\"\$dir\""
6466ef6fb4a5Smrg      else
6467ef6fb4a5Smrg	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
6468ef6fb4a5Smrg      fi
6469ef6fb4a5Smrg    done
6470301ea0f4Smrg
6471ef6fb4a5Smrg    # This variable tells wrapper scripts just to set shlibpath_var
6472ef6fb4a5Smrg    # rather than running their programs.
6473ef6fb4a5Smrg    libtool_execute_magic="$magic"
6474301ea0f4Smrg
6475ef6fb4a5Smrg    # Check if any of the arguments is a wrapper script.
6476ef6fb4a5Smrg    args=
6477ef6fb4a5Smrg    for file
6478ef6fb4a5Smrg    do
6479ef6fb4a5Smrg      case $file in
6480ef6fb4a5Smrg      -*) ;;
6481ef6fb4a5Smrg      *)
6482ef6fb4a5Smrg	# Do a test to see if this is really a libtool program.
6483ef6fb4a5Smrg	if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6484ef6fb4a5Smrg	  # If there is no directory component, then add one.
6485ef6fb4a5Smrg	  case $file in
6486ef6fb4a5Smrg	  */* | *\\*) . $file ;;
6487ef6fb4a5Smrg	  *) . ./$file ;;
6488ef6fb4a5Smrg	  esac
6489301ea0f4Smrg
6490ef6fb4a5Smrg	  # Transform arg to wrapped name.
6491ef6fb4a5Smrg	  file="$progdir/$program"
6492ef6fb4a5Smrg	fi
6493ef6fb4a5Smrg	;;
6494ef6fb4a5Smrg      esac
6495ef6fb4a5Smrg      # Quote arguments (to preserve shell metacharacters).
6496ef6fb4a5Smrg      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
6497ef6fb4a5Smrg      args="$args \"$file\""
6498ef6fb4a5Smrg    done
6499301ea0f4Smrg
6500ef6fb4a5Smrg    if test -z "$run"; then
6501ef6fb4a5Smrg      if test -n "$shlibpath_var"; then
6502ef6fb4a5Smrg	# Export the shlibpath_var.
6503ef6fb4a5Smrg	eval "export $shlibpath_var"
6504ef6fb4a5Smrg      fi
6505ef6fb4a5Smrg
6506ef6fb4a5Smrg      # Restore saved environment variables
6507ef6fb4a5Smrg      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
6508ef6fb4a5Smrg      do
6509ef6fb4a5Smrg	eval "if test \"\${save_$lt_var+set}\" = set; then
6510ef6fb4a5Smrg		$lt_var=\$save_$lt_var; export $lt_var
6511ef6fb4a5Smrg	      fi"
6512ef6fb4a5Smrg      done
6513301ea0f4Smrg
6514ef6fb4a5Smrg      # Now prepare to actually exec the command.
6515ef6fb4a5Smrg      exec_cmd="\$cmd$args"
6516ef6fb4a5Smrg    else
6517ef6fb4a5Smrg      # Display what would be done.
6518ef6fb4a5Smrg      if test -n "$shlibpath_var"; then
6519ef6fb4a5Smrg	eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
6520ef6fb4a5Smrg	$echo "export $shlibpath_var"
6521ef6fb4a5Smrg      fi
6522ef6fb4a5Smrg      $echo "$cmd$args"
6523ef6fb4a5Smrg      exit $EXIT_SUCCESS
6524ef6fb4a5Smrg    fi
6525ef6fb4a5Smrg    ;;
6526301ea0f4Smrg
6527ef6fb4a5Smrg  # libtool clean and uninstall mode
6528ef6fb4a5Smrg  clean | uninstall)
6529ef6fb4a5Smrg    modename="$modename: $mode"
6530ef6fb4a5Smrg    rm="$nonopt"
6531301ea0f4Smrg    files=
6532301ea0f4Smrg    rmforce=
6533301ea0f4Smrg    exit_status=0
6534301ea0f4Smrg
6535301ea0f4Smrg    # This variable tells wrapper scripts just to set variables rather
6536301ea0f4Smrg    # than running their programs.
6537301ea0f4Smrg    libtool_install_magic="$magic"
6538301ea0f4Smrg
6539301ea0f4Smrg    for arg
6540301ea0f4Smrg    do
6541301ea0f4Smrg      case $arg in
6542ef6fb4a5Smrg      -f) rm="$rm $arg"; rmforce=yes ;;
6543ef6fb4a5Smrg      -*) rm="$rm $arg" ;;
6544301ea0f4Smrg      *) files="$files $arg" ;;
6545301ea0f4Smrg      esac
6546301ea0f4Smrg    done
6547301ea0f4Smrg
6548ef6fb4a5Smrg    if test -z "$rm"; then
6549ef6fb4a5Smrg      $echo "$modename: you must specify an RM program" 1>&2
6550ef6fb4a5Smrg      $echo "$help" 1>&2
6551ef6fb4a5Smrg      exit $EXIT_FAILURE
6552ef6fb4a5Smrg    fi
6553301ea0f4Smrg
6554301ea0f4Smrg    rmdirs=
6555301ea0f4Smrg
6556301ea0f4Smrg    origobjdir="$objdir"
6557301ea0f4Smrg    for file in $files; do
6558ef6fb4a5Smrg      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6559ef6fb4a5Smrg      if test "X$dir" = "X$file"; then
6560ef6fb4a5Smrg	dir=.
6561301ea0f4Smrg	objdir="$origobjdir"
6562301ea0f4Smrg      else
6563301ea0f4Smrg	objdir="$dir/$origobjdir"
6564301ea0f4Smrg      fi
6565ef6fb4a5Smrg      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6566301ea0f4Smrg      test "$mode" = uninstall && objdir="$dir"
6567301ea0f4Smrg
6568301ea0f4Smrg      # Remember objdir for removal later, being careful to avoid duplicates
6569301ea0f4Smrg      if test "$mode" = clean; then
6570301ea0f4Smrg	case " $rmdirs " in
6571301ea0f4Smrg	  *" $objdir "*) ;;
6572301ea0f4Smrg	  *) rmdirs="$rmdirs $objdir" ;;
6573301ea0f4Smrg	esac
6574301ea0f4Smrg      fi
6575301ea0f4Smrg
6576301ea0f4Smrg      # Don't error if the file doesn't exist and rm -f was used.
6577ef6fb4a5Smrg      if (test -L "$file") >/dev/null 2>&1 \
6578ef6fb4a5Smrg	|| (test -h "$file") >/dev/null 2>&1 \
6579ef6fb4a5Smrg	|| test -f "$file"; then
6580301ea0f4Smrg	:
6581301ea0f4Smrg      elif test -d "$file"; then
6582301ea0f4Smrg	exit_status=1
6583301ea0f4Smrg	continue
6584301ea0f4Smrg      elif test "$rmforce" = yes; then
6585301ea0f4Smrg	continue
6586301ea0f4Smrg      fi
6587301ea0f4Smrg
6588301ea0f4Smrg      rmfiles="$file"
6589301ea0f4Smrg
6590301ea0f4Smrg      case $name in
6591301ea0f4Smrg      *.la)
6592301ea0f4Smrg	# Possibly a libtool archive, so verify it.
6593ef6fb4a5Smrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6594ef6fb4a5Smrg	  . $dir/$name
6595301ea0f4Smrg
6596301ea0f4Smrg	  # Delete the libtool libraries and symlinks.
6597301ea0f4Smrg	  for n in $library_names; do
6598301ea0f4Smrg	    rmfiles="$rmfiles $objdir/$n"
6599301ea0f4Smrg	  done
6600301ea0f4Smrg	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
6601301ea0f4Smrg
6602301ea0f4Smrg	  case "$mode" in
6603301ea0f4Smrg	  clean)
6604301ea0f4Smrg	    case "  $library_names " in
6605301ea0f4Smrg	    # "  " in the beginning catches empty $dlname
6606301ea0f4Smrg	    *" $dlname "*) ;;
6607301ea0f4Smrg	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
6608301ea0f4Smrg	    esac
6609ef6fb4a5Smrg	     test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
6610301ea0f4Smrg	    ;;
6611301ea0f4Smrg	  uninstall)
6612301ea0f4Smrg	    if test -n "$library_names"; then
6613301ea0f4Smrg	      # Do each command in the postuninstall commands.
6614ef6fb4a5Smrg	      cmds=$postuninstall_cmds
6615ef6fb4a5Smrg	      save_ifs="$IFS"; IFS='~'
6616ef6fb4a5Smrg	      for cmd in $cmds; do
6617ef6fb4a5Smrg		IFS="$save_ifs"
6618ef6fb4a5Smrg		eval cmd=\"$cmd\"
6619ef6fb4a5Smrg		$show "$cmd"
6620ef6fb4a5Smrg		$run eval "$cmd"
6621ef6fb4a5Smrg		if test "$?" -ne 0 && test "$rmforce" != yes; then
6622ef6fb4a5Smrg		  exit_status=1
6623ef6fb4a5Smrg		fi
6624ef6fb4a5Smrg	      done
6625ef6fb4a5Smrg	      IFS="$save_ifs"
6626301ea0f4Smrg	    fi
6627301ea0f4Smrg
6628301ea0f4Smrg	    if test -n "$old_library"; then
6629301ea0f4Smrg	      # Do each command in the old_postuninstall commands.
6630ef6fb4a5Smrg	      cmds=$old_postuninstall_cmds
6631ef6fb4a5Smrg	      save_ifs="$IFS"; IFS='~'
6632ef6fb4a5Smrg	      for cmd in $cmds; do
6633ef6fb4a5Smrg		IFS="$save_ifs"
6634ef6fb4a5Smrg		eval cmd=\"$cmd\"
6635ef6fb4a5Smrg		$show "$cmd"
6636ef6fb4a5Smrg		$run eval "$cmd"
6637ef6fb4a5Smrg		if test "$?" -ne 0 && test "$rmforce" != yes; then
6638ef6fb4a5Smrg		  exit_status=1
6639ef6fb4a5Smrg		fi
6640ef6fb4a5Smrg	      done
6641ef6fb4a5Smrg	      IFS="$save_ifs"
6642301ea0f4Smrg	    fi
6643301ea0f4Smrg	    # FIXME: should reinstall the best remaining shared library.
6644301ea0f4Smrg	    ;;
6645301ea0f4Smrg	  esac
6646301ea0f4Smrg	fi
6647301ea0f4Smrg	;;
6648301ea0f4Smrg
6649301ea0f4Smrg      *.lo)
6650301ea0f4Smrg	# Possibly a libtool object, so verify it.
6651ef6fb4a5Smrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6652301ea0f4Smrg
6653301ea0f4Smrg	  # Read the .lo file
6654ef6fb4a5Smrg	  . $dir/$name
6655301ea0f4Smrg
6656301ea0f4Smrg	  # Add PIC object to the list of files to remove.
6657ef6fb4a5Smrg	  if test -n "$pic_object" \
6658ef6fb4a5Smrg	     && test "$pic_object" != none; then
6659301ea0f4Smrg	    rmfiles="$rmfiles $dir/$pic_object"
6660301ea0f4Smrg	  fi
6661301ea0f4Smrg
6662301ea0f4Smrg	  # Add non-PIC object to the list of files to remove.
6663ef6fb4a5Smrg	  if test -n "$non_pic_object" \
6664ef6fb4a5Smrg	     && test "$non_pic_object" != none; then
6665301ea0f4Smrg	    rmfiles="$rmfiles $dir/$non_pic_object"
6666301ea0f4Smrg	  fi
6667301ea0f4Smrg	fi
6668301ea0f4Smrg	;;
6669301ea0f4Smrg
6670301ea0f4Smrg      *)
6671301ea0f4Smrg	if test "$mode" = clean ; then
6672301ea0f4Smrg	  noexename=$name
6673301ea0f4Smrg	  case $file in
6674301ea0f4Smrg	  *.exe)
6675ef6fb4a5Smrg	    file=`$echo $file|${SED} 's,.exe$,,'`
6676ef6fb4a5Smrg	    noexename=`$echo $name|${SED} 's,.exe$,,'`
6677301ea0f4Smrg	    # $file with .exe has already been added to rmfiles,
6678301ea0f4Smrg	    # add $file without .exe
6679301ea0f4Smrg	    rmfiles="$rmfiles $file"
6680301ea0f4Smrg	    ;;
6681301ea0f4Smrg	  esac
6682301ea0f4Smrg	  # Do a test to see if this is a libtool program.
6683ef6fb4a5Smrg	  if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6684ef6fb4a5Smrg	    relink_command=
6685ef6fb4a5Smrg	    . $dir/$noexename
6686301ea0f4Smrg
6687301ea0f4Smrg	    # note $name still contains .exe if it was in $file originally
6688301ea0f4Smrg	    # as does the version of $file that was added into $rmfiles
6689301ea0f4Smrg	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
6690301ea0f4Smrg	    if test "$fast_install" = yes && test -n "$relink_command"; then
6691301ea0f4Smrg	      rmfiles="$rmfiles $objdir/lt-$name"
6692301ea0f4Smrg	    fi
6693301ea0f4Smrg	    if test "X$noexename" != "X$name" ; then
6694301ea0f4Smrg	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
6695301ea0f4Smrg	    fi
6696301ea0f4Smrg	  fi
6697301ea0f4Smrg	fi
6698301ea0f4Smrg	;;
6699301ea0f4Smrg      esac
6700ef6fb4a5Smrg      $show "$rm $rmfiles"
6701ef6fb4a5Smrg      $run $rm $rmfiles || exit_status=1
6702301ea0f4Smrg    done
6703301ea0f4Smrg    objdir="$origobjdir"
6704301ea0f4Smrg
6705301ea0f4Smrg    # Try to remove the ${objdir}s in the directories where we deleted files
6706301ea0f4Smrg    for dir in $rmdirs; do
6707301ea0f4Smrg      if test -d "$dir"; then
6708ef6fb4a5Smrg	$show "rmdir $dir"
6709ef6fb4a5Smrg	$run rmdir $dir >/dev/null 2>&1
6710301ea0f4Smrg      fi
6711301ea0f4Smrg    done
6712301ea0f4Smrg
6713301ea0f4Smrg    exit $exit_status
6714ef6fb4a5Smrg    ;;
6715301ea0f4Smrg
6716ef6fb4a5Smrg  "")
6717ef6fb4a5Smrg    $echo "$modename: you must specify a MODE" 1>&2
6718ef6fb4a5Smrg    $echo "$generic_help" 1>&2
6719ef6fb4a5Smrg    exit $EXIT_FAILURE
6720ef6fb4a5Smrg    ;;
6721ef6fb4a5Smrg  esac
67220cc67336Smrg
6723ef6fb4a5Smrg  if test -z "$exec_cmd"; then
6724ef6fb4a5Smrg    $echo "$modename: invalid operation mode \`$mode'" 1>&2
6725ef6fb4a5Smrg    $echo "$generic_help" 1>&2
6726ef6fb4a5Smrg    exit $EXIT_FAILURE
6727ef6fb4a5Smrg  fi
6728ef6fb4a5Smrgfi # test -z "$show_help"
6729301ea0f4Smrg
6730301ea0f4Smrgif test -n "$exec_cmd"; then
6731ef6fb4a5Smrg  eval exec $exec_cmd
6732301ea0f4Smrg  exit $EXIT_FAILURE
6733301ea0f4Smrgfi
6734301ea0f4Smrg
6735ef6fb4a5Smrg# We need to display help for each of the modes.
6736ef6fb4a5Smrgcase $mode in
6737ef6fb4a5Smrg"") $echo \
6738ef6fb4a5Smrg"Usage: $modename [OPTION]... [MODE-ARG]...
6739ef6fb4a5Smrg
6740ef6fb4a5SmrgProvide generalized library-building support services.
6741ef6fb4a5Smrg
6742ef6fb4a5Smrg    --config          show all configuration variables
6743ef6fb4a5Smrg    --debug           enable verbose shell tracing
6744ef6fb4a5Smrg-n, --dry-run         display commands without modifying any files
6745ef6fb4a5Smrg    --features        display basic configuration information and exit
6746ef6fb4a5Smrg    --finish          same as \`--mode=finish'
6747ef6fb4a5Smrg    --help            display this help message and exit
6748ef6fb4a5Smrg    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
6749ef6fb4a5Smrg    --quiet           same as \`--silent'
6750ef6fb4a5Smrg    --silent          don't print informational messages
6751ef6fb4a5Smrg    --tag=TAG         use configuration variables from tag TAG
6752ef6fb4a5Smrg    --version         print version information
6753ef6fb4a5Smrg
6754ef6fb4a5SmrgMODE must be one of the following:
6755ef6fb4a5Smrg
6756ef6fb4a5Smrg      clean           remove files from the build directory
6757ef6fb4a5Smrg      compile         compile a source file into a libtool object
6758ef6fb4a5Smrg      execute         automatically set library path, then run a program
6759ef6fb4a5Smrg      finish          complete the installation of libtool libraries
6760ef6fb4a5Smrg      install         install libraries or executables
6761ef6fb4a5Smrg      link            create a library or an executable
6762ef6fb4a5Smrg      uninstall       remove libraries from an installed directory
6763ef6fb4a5Smrg
6764ef6fb4a5SmrgMODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
6765ef6fb4a5Smrga more detailed description of MODE.
6766ef6fb4a5Smrg
6767ef6fb4a5SmrgReport bugs to <bug-libtool@gnu.org>."
6768ef6fb4a5Smrg  exit $EXIT_SUCCESS
6769ef6fb4a5Smrg  ;;
6770ef6fb4a5Smrg
6771ef6fb4a5Smrgclean)
6772ef6fb4a5Smrg  $echo \
6773ef6fb4a5Smrg"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
6774ef6fb4a5Smrg
6775ef6fb4a5SmrgRemove files from the build directory.
6776ef6fb4a5Smrg
6777ef6fb4a5SmrgRM is the name of the program to use to delete files associated with each FILE
6778ef6fb4a5Smrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
6779ef6fb4a5Smrgto RM.
6780ef6fb4a5Smrg
6781ef6fb4a5SmrgIf FILE is a libtool library, object or program, all the files associated
6782ef6fb4a5Smrgwith it are deleted. Otherwise, only FILE itself is deleted using RM."
6783ef6fb4a5Smrg  ;;
6784ef6fb4a5Smrg
6785ef6fb4a5Smrgcompile)
6786ef6fb4a5Smrg  $echo \
6787ef6fb4a5Smrg"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
6788ef6fb4a5Smrg
6789ef6fb4a5SmrgCompile a source file into a libtool library object.
6790ef6fb4a5Smrg
6791ef6fb4a5SmrgThis mode accepts the following additional options:
6792ef6fb4a5Smrg
6793ef6fb4a5Smrg  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
6794ef6fb4a5Smrg  -prefer-pic       try to building PIC objects only
6795ef6fb4a5Smrg  -prefer-non-pic   try to building non-PIC objects only
6796ef6fb4a5Smrg  -static           always build a \`.o' file suitable for static linking
6797ef6fb4a5Smrg
6798ef6fb4a5SmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
6799ef6fb4a5Smrgfrom the given SOURCEFILE.
6800ef6fb4a5Smrg
6801ef6fb4a5SmrgThe output file name is determined by removing the directory component from
6802ef6fb4a5SmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the
6803ef6fb4a5Smrglibrary object suffix, \`.lo'."
6804ef6fb4a5Smrg  ;;
6805ef6fb4a5Smrg
6806ef6fb4a5Smrgexecute)
6807ef6fb4a5Smrg  $echo \
6808ef6fb4a5Smrg"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
6809ef6fb4a5Smrg
6810ef6fb4a5SmrgAutomatically set library path, then run a program.
6811ef6fb4a5Smrg
6812ef6fb4a5SmrgThis mode accepts the following additional options:
6813ef6fb4a5Smrg
6814ef6fb4a5Smrg  -dlopen FILE      add the directory containing FILE to the library path
6815ef6fb4a5Smrg
6816ef6fb4a5SmrgThis mode sets the library path environment variable according to \`-dlopen'
6817ef6fb4a5Smrgflags.
6818ef6fb4a5Smrg
6819ef6fb4a5SmrgIf any of the ARGS are libtool executable wrappers, then they are translated
6820ef6fb4a5Smrginto their corresponding uninstalled binary, and any of their required library
6821ef6fb4a5Smrgdirectories are added to the library path.
6822ef6fb4a5Smrg
6823ef6fb4a5SmrgThen, COMMAND is executed, with ARGS as arguments."
6824ef6fb4a5Smrg  ;;
6825ef6fb4a5Smrg
6826ef6fb4a5Smrgfinish)
6827ef6fb4a5Smrg  $echo \
6828ef6fb4a5Smrg"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
6829ef6fb4a5Smrg
6830ef6fb4a5SmrgComplete the installation of libtool libraries.
6831ef6fb4a5Smrg
6832ef6fb4a5SmrgEach LIBDIR is a directory that contains libtool libraries.
6833ef6fb4a5Smrg
6834ef6fb4a5SmrgThe commands that this mode executes may require superuser privileges.  Use
6835ef6fb4a5Smrgthe \`--dry-run' option if you just want to see what would be executed."
6836ef6fb4a5Smrg  ;;
6837ef6fb4a5Smrg
6838ef6fb4a5Smrginstall)
6839ef6fb4a5Smrg  $echo \
6840ef6fb4a5Smrg"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
6841ef6fb4a5Smrg
6842ef6fb4a5SmrgInstall executables or libraries.
6843ef6fb4a5Smrg
6844ef6fb4a5SmrgINSTALL-COMMAND is the installation command.  The first component should be
6845ef6fb4a5Smrgeither the \`install' or \`cp' program.
6846ef6fb4a5Smrg
6847ef6fb4a5SmrgThe rest of the components are interpreted as arguments to that command (only
6848ef6fb4a5SmrgBSD-compatible install options are recognized)."
6849ef6fb4a5Smrg  ;;
6850ef6fb4a5Smrg
6851ef6fb4a5Smrglink)
6852ef6fb4a5Smrg  $echo \
6853ef6fb4a5Smrg"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
6854ef6fb4a5Smrg
6855ef6fb4a5SmrgLink object files or libraries together to form another library, or to
6856ef6fb4a5Smrgcreate an executable program.
6857301ea0f4Smrg
6858ef6fb4a5SmrgLINK-COMMAND is a command using the C compiler that you would use to create
6859ef6fb4a5Smrga program from several object files.
6860ef6fb4a5Smrg
6861ef6fb4a5SmrgThe following components of LINK-COMMAND are treated specially:
6862ef6fb4a5Smrg
6863ef6fb4a5Smrg  -all-static       do not do any dynamic linking at all
6864ef6fb4a5Smrg  -avoid-version    do not add a version suffix if possible
6865ef6fb4a5Smrg  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
6866ef6fb4a5Smrg  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
6867ef6fb4a5Smrg  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
6868ef6fb4a5Smrg  -export-symbols SYMFILE
6869ef6fb4a5Smrg                    try to export only the symbols listed in SYMFILE
6870ef6fb4a5Smrg  -export-symbols-regex REGEX
6871ef6fb4a5Smrg                    try to export only the symbols matching REGEX
6872ef6fb4a5Smrg  -LLIBDIR          search LIBDIR for required installed libraries
6873ef6fb4a5Smrg  -lNAME            OUTPUT-FILE requires the installed library libNAME
6874ef6fb4a5Smrg  -module           build a library that can dlopened
6875ef6fb4a5Smrg  -no-fast-install  disable the fast-install mode
6876ef6fb4a5Smrg  -no-install       link a not-installable executable
6877ef6fb4a5Smrg  -no-undefined     declare that a library does not refer to external symbols
6878ef6fb4a5Smrg  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
6879ef6fb4a5Smrg  -objectlist FILE  Use a list of object files found in FILE to specify objects
6880ef6fb4a5Smrg  -precious-files-regex REGEX
6881ef6fb4a5Smrg                    don't remove output files matching REGEX
6882ef6fb4a5Smrg  -release RELEASE  specify package release information
6883ef6fb4a5Smrg  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
6884ef6fb4a5Smrg  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
6885ef6fb4a5Smrg  -static           do not do any dynamic linking of uninstalled libtool libraries
6886ef6fb4a5Smrg  -static-libtool-libs
6887ef6fb4a5Smrg                    do not do any dynamic linking of libtool libraries
6888ef6fb4a5Smrg  -version-info CURRENT[:REVISION[:AGE]]
6889ef6fb4a5Smrg                    specify library version info [each variable defaults to 0]
6890ef6fb4a5Smrg
6891ef6fb4a5SmrgAll other options (arguments beginning with \`-') are ignored.
6892ef6fb4a5Smrg
6893ef6fb4a5SmrgEvery other argument is treated as a filename.  Files ending in \`.la' are
6894ef6fb4a5Smrgtreated as uninstalled libtool libraries, other files are standard or library
6895ef6fb4a5Smrgobject files.
6896ef6fb4a5Smrg
6897ef6fb4a5SmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
6898ef6fb4a5Smrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is
6899ef6fb4a5Smrgrequired, except when creating a convenience library.
6900ef6fb4a5Smrg
6901ef6fb4a5SmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
6902ef6fb4a5Smrgusing \`ar' and \`ranlib', or on Windows using \`lib'.
6903ef6fb4a5Smrg
6904ef6fb4a5SmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
6905ef6fb4a5Smrgis created, otherwise an executable program is created."
6906ef6fb4a5Smrg  ;;
6907ef6fb4a5Smrg
6908ef6fb4a5Smrguninstall)
6909ef6fb4a5Smrg  $echo \
6910ef6fb4a5Smrg"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
6911ef6fb4a5Smrg
6912ef6fb4a5SmrgRemove libraries from an installation directory.
6913ef6fb4a5Smrg
6914ef6fb4a5SmrgRM is the name of the program to use to delete files associated with each FILE
6915ef6fb4a5Smrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
6916ef6fb4a5Smrgto RM.
6917ef6fb4a5Smrg
6918ef6fb4a5SmrgIf FILE is a libtool library, all the files associated with it are deleted.
6919ef6fb4a5SmrgOtherwise, only FILE itself is deleted using RM."
6920ef6fb4a5Smrg  ;;
6921ef6fb4a5Smrg
6922ef6fb4a5Smrg*)
6923ef6fb4a5Smrg  $echo "$modename: invalid operation mode \`$mode'" 1>&2
6924ef6fb4a5Smrg  $echo "$help" 1>&2
6925ef6fb4a5Smrg  exit $EXIT_FAILURE
6926ef6fb4a5Smrg  ;;
6927ef6fb4a5Smrgesac
6928ef6fb4a5Smrg
6929ef6fb4a5Smrg$echo
6930ef6fb4a5Smrg$echo "Try \`$modename --help' for more information about other modes."
6931ef6fb4a5Smrg
6932ef6fb4a5Smrgexit $?
6933301ea0f4Smrg
6934301ea0f4Smrg# The TAGs below are defined such that we never get into a situation
6935301ea0f4Smrg# in which we disable both kinds of libraries.  Given conflicting
6936301ea0f4Smrg# choices, we go for a static library, that is the most portable,
6937301ea0f4Smrg# since we can't tell whether shared libraries were disabled because
6938301ea0f4Smrg# the user asked for that or because the platform doesn't support
6939301ea0f4Smrg# them.  This is particularly important on AIX, because we don't
6940301ea0f4Smrg# support having both static and shared libraries enabled at the same
6941301ea0f4Smrg# time on that platform, so we default to a shared-only configuration.
6942301ea0f4Smrg# If a disable-shared tag is given, we'll fallback to a static-only
6943301ea0f4Smrg# configuration.  But we'll never go from static-only to shared-only.
6944301ea0f4Smrg
6945301ea0f4Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
6946ef6fb4a5Smrgdisable_libs=shared
6947301ea0f4Smrg# ### END LIBTOOL TAG CONFIG: disable-shared
6948301ea0f4Smrg
6949301ea0f4Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static
6950ef6fb4a5Smrgdisable_libs=static
6951301ea0f4Smrg# ### END LIBTOOL TAG CONFIG: disable-static
6952301ea0f4Smrg
6953301ea0f4Smrg# Local Variables:
6954301ea0f4Smrg# mode:shell-script
6955301ea0f4Smrg# sh-indentation:2
6956301ea0f4Smrg# End:
6957