ltmain.sh revision b3062210
1b3062210Smrg# ltmain.sh - Provide generalized library-building support services.
2b3062210Smrg# NOTE: Changing this file will not affect anything until you rerun configure.
3b3062210Smrg#
4b3062210Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
5b3062210Smrg# 2007, 2008  Free Software Foundation, Inc.
6b3062210Smrg# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
7b3062210Smrg#
8b3062210Smrg# This program is free software; you can redistribute it and/or modify
923a0898aSmrg# it under the terms of the GNU General Public License as published by
1023a0898aSmrg# the Free Software Foundation; either version 2 of the License, or
1123a0898aSmrg# (at your option) any later version.
1223a0898aSmrg#
13b3062210Smrg# This program is distributed in the hope that it will be useful, but
1423a0898aSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of
1523a0898aSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1623a0898aSmrg# General Public License for more details.
1723a0898aSmrg#
1823a0898aSmrg# You should have received a copy of the GNU General Public License
19b3062210Smrg# along with this program; if not, write to the Free Software
20b3062210Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
217f7f5e4eSmrg#
22b3062210Smrg# As a special exception to the GNU General Public License, if you
23b3062210Smrg# distribute this file as part of a program that contains a
24b3062210Smrg# configuration script generated by Autoconf, you may include it under
25b3062210Smrg# the same distribution terms that you use for the rest of that program.
26b3062210Smrg
27b3062210Smrgbasename="s,^.*/,,g"
28b3062210Smrg
29b3062210Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
30b3062210Smrg# is ksh but when the shell is invoked as "sh" and the current value of
31b3062210Smrg# the _XPG environment variable is not equal to 1 (one), the special
32b3062210Smrg# positional parameter $0, within a function call, is the name of the
33b3062210Smrg# function.
34b3062210Smrgprogpath="$0"
35b3062210Smrg
36b3062210Smrg# The name of this program:
37b3062210Smrgprogname=`echo "$progpath" | $SED $basename`
38b3062210Smrgmodename="$progname"
39b3062210Smrg
40b3062210Smrg# Global variables:
41b3062210SmrgEXIT_SUCCESS=0
42b3062210SmrgEXIT_FAILURE=1
4323a0898aSmrg
4423a0898aSmrgPROGRAM=ltmain.sh
4523a0898aSmrgPACKAGE=libtool
46b3062210SmrgVERSION=1.5.26
47b3062210SmrgTIMESTAMP=" (1.1220.2.492 2008/01/30 06:40:56)"
4823a0898aSmrg
49b3062210Smrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
5023a0898aSmrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
5123a0898aSmrg  emulate sh
5223a0898aSmrg  NULLCMD=:
5323a0898aSmrg  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
5423a0898aSmrg  # is contrary to our usage.  Disable this feature.
5523a0898aSmrg  alias -g '${1+"$@"}'='"$@"'
5623a0898aSmrg  setopt NO_GLOB_SUBST
5723a0898aSmrgelse
5823a0898aSmrg  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
5923a0898aSmrgfi
6023a0898aSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
6123a0898aSmrgDUALCASE=1; export DUALCASE # for MKS sh
6223a0898aSmrg
63b3062210Smrg# Check that we have a working $echo.
64b3062210Smrgif test "X$1" = X--no-reexec; then
65b3062210Smrg  # Discard the --no-reexec flag, and continue.
66b3062210Smrg  shift
67b3062210Smrgelif test "X$1" = X--fallback-echo; then
68b3062210Smrg  # Avoid inline document here, it may be left over
69b3062210Smrg  :
70b3062210Smrgelif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
71b3062210Smrg  # Yippee, $echo works!
72b3062210Smrg  :
73b3062210Smrgelse
74b3062210Smrg  # Restart under the correct shell, and then maybe $echo will work.
75b3062210Smrg  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
76b3062210Smrgfi
77b3062210Smrg
78b3062210Smrgif test "X$1" = X--fallback-echo; then
79b3062210Smrg  # used as fallback echo
80b3062210Smrg  shift
81b3062210Smrg  cat <<EOF
82b3062210Smrg$*
83b3062210SmrgEOF
84b3062210Smrg  exit $EXIT_SUCCESS
85b3062210Smrgfi
86b3062210Smrg
87b3062210Smrgdefault_mode=
88b3062210Smrghelp="Try \`$progname --help' for more information."
89b3062210Smrgmagic="%%%MAGIC variable%%%"
90b3062210Smrgmkdir="mkdir"
91b3062210Smrgmv="mv -f"
92b3062210Smrgrm="rm -f"
93b3062210Smrg
94b3062210Smrg# Sed substitution that helps us do robust quoting.  It backslashifies
95b3062210Smrg# metacharacters that are still active within double-quoted strings.
96b3062210SmrgXsed="${SED}"' -e 1s/^X//'
97b3062210Smrgsed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
98b3062210Smrg# test EBCDIC or ASCII
99b3062210Smrgcase `echo X|tr X '\101'` in
100b3062210Smrg A) # ASCII based system
101b3062210Smrg    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
102b3062210Smrg  SP2NL='tr \040 \012'
103b3062210Smrg  NL2SP='tr \015\012 \040\040'
104b3062210Smrg  ;;
105b3062210Smrg *) # EBCDIC based system
106b3062210Smrg  SP2NL='tr \100 \n'
107b3062210Smrg  NL2SP='tr \r\n \100\100'
108b3062210Smrg  ;;
109b3062210Smrgesac
110b3062210Smrg
111b3062210Smrg# NLS nuisances.
11223a0898aSmrg# Only set LANG and LC_ALL to C if already set.
11323a0898aSmrg# These must not be set unconditionally because not all systems understand
11423a0898aSmrg# e.g. LANG=C (notably SCO).
115b3062210Smrg# We save the old values to restore during execute mode.
116b3062210Smrglt_env=
1177f7f5e4eSmrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
11823a0898aSmrgdo
11923a0898aSmrg  eval "if test \"\${$lt_var+set}\" = set; then
120b3062210Smrg	  save_$lt_var=\$$lt_var
121b3062210Smrg	  lt_env=\"$lt_var=\$$lt_var \$lt_env\"
122b3062210Smrg	  $lt_var=C
12323a0898aSmrg	  export $lt_var
12423a0898aSmrg	fi"
12523a0898aSmrgdone
12623a0898aSmrg
127b3062210Smrgif test -n "$lt_env"; then
128b3062210Smrg  lt_env="env $lt_env"
129b3062210Smrgfi
1307f7f5e4eSmrg
13123a0898aSmrg# Make sure IFS has a sensible default
13223a0898aSmrglt_nl='
13323a0898aSmrg'
13423a0898aSmrgIFS=" 	$lt_nl"
13523a0898aSmrg
136b3062210Smrgif test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
137b3062210Smrg  $echo "$modename: not configured to build any kind of library" 1>&2
138b3062210Smrg  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
139b3062210Smrg  exit $EXIT_FAILURE
140b3062210Smrgfi
1417f7f5e4eSmrg
142b3062210Smrg# Global variables.
143b3062210Smrgmode=$default_mode
144b3062210Smrgnonopt=
145b3062210Smrgprev=
146b3062210Smrgprevopt=
147b3062210Smrgrun=
148b3062210Smrgshow="$echo"
149b3062210Smrgshow_help=
150b3062210Smrgexecute_dlfiles=
151b3062210Smrgduplicate_deps=no
152b3062210Smrgpreserve_args=
153b3062210Smrglo2o="s/\\.lo\$/.${objext}/"
154b3062210Smrgo2lo="s/\\.${objext}\$/.lo/"
155b3062210Smrgextracted_archives=
156b3062210Smrgextracted_serial=0
15723a0898aSmrg
158b3062210Smrg#####################################
159b3062210Smrg# Shell function definitions:
160b3062210Smrg# This seems to be the best place for them
16123a0898aSmrg
16223a0898aSmrg# func_mktempdir [string]
16323a0898aSmrg# Make a temporary directory that won't clash with other running
16423a0898aSmrg# libtool processes, and avoids race conditions if possible.  If
16523a0898aSmrg# given, STRING is the basename for that directory.
16623a0898aSmrgfunc_mktempdir ()
16723a0898aSmrg{
16823a0898aSmrg    my_template="${TMPDIR-/tmp}/${1-$progname}"
16923a0898aSmrg
170b3062210Smrg    if test "$run" = ":"; then
17123a0898aSmrg      # Return a directory name, but don't create it in dry-run mode
17223a0898aSmrg      my_tmpdir="${my_template}-$$"
17323a0898aSmrg    else
17423a0898aSmrg
17523a0898aSmrg      # If mktemp works, use that first and foremost
17623a0898aSmrg      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
17723a0898aSmrg
17823a0898aSmrg      if test ! -d "$my_tmpdir"; then
179b3062210Smrg	# Failing that, at least try and use $RANDOM to avoid a race
180b3062210Smrg	my_tmpdir="${my_template}-${RANDOM-0}$$"
18123a0898aSmrg
182b3062210Smrg	save_mktempdir_umask=`umask`
183b3062210Smrg	umask 0077
184b3062210Smrg	$mkdir "$my_tmpdir"
185b3062210Smrg	umask $save_mktempdir_umask
18623a0898aSmrg      fi
18723a0898aSmrg
18823a0898aSmrg      # If we're not in dry-run mode, bomb out on failure
189b3062210Smrg      test -d "$my_tmpdir" || {
190b3062210Smrg        $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
191b3062210Smrg	exit $EXIT_FAILURE
192b3062210Smrg      }
19323a0898aSmrg    fi
19423a0898aSmrg
195b3062210Smrg    $echo "X$my_tmpdir" | $Xsed
19623a0898aSmrg}
19723a0898aSmrg
19823a0898aSmrg
199b3062210Smrg# func_win32_libid arg
200b3062210Smrg# return the library type of file 'arg'
201b3062210Smrg#
202b3062210Smrg# Need a lot of goo to handle *both* DLLs and import libs
203b3062210Smrg# Has to be a shell function in order to 'eat' the argument
204b3062210Smrg# that is supplied when $file_magic_command is called.
205b3062210Smrgfunc_win32_libid ()
20623a0898aSmrg{
207b3062210Smrg  win32_libid_type="unknown"
208b3062210Smrg  win32_fileres=`file -L $1 2>/dev/null`
209b3062210Smrg  case $win32_fileres in
210b3062210Smrg  *ar\ archive\ import\ library*) # definitely import
211b3062210Smrg    win32_libid_type="x86 archive import"
212b3062210Smrg    ;;
213b3062210Smrg  *ar\ archive*) # could be an import, or static
214b3062210Smrg    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
215b3062210Smrg      $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
216b3062210Smrg      win32_nmres=`eval $NM -f posix -A $1 | \
217b3062210Smrg	$SED -n -e '1,100{
218b3062210Smrg		/ I /{
219b3062210Smrg			s,.*,import,
220b3062210Smrg			p
221b3062210Smrg			q
222b3062210Smrg			}
223b3062210Smrg		}'`
224b3062210Smrg      case $win32_nmres in
225b3062210Smrg      import*)  win32_libid_type="x86 archive import";;
226b3062210Smrg      *)        win32_libid_type="x86 archive static";;
227b3062210Smrg      esac
228b3062210Smrg    fi
229b3062210Smrg    ;;
230b3062210Smrg  *DLL*)
231b3062210Smrg    win32_libid_type="x86 DLL"
232b3062210Smrg    ;;
233b3062210Smrg  *executable*) # but shell scripts are "executable" too...
234b3062210Smrg    case $win32_fileres in
235b3062210Smrg    *MS\ Windows\ PE\ Intel*)
236b3062210Smrg      win32_libid_type="x86 DLL"
237b3062210Smrg      ;;
23823a0898aSmrg    esac
239b3062210Smrg    ;;
240b3062210Smrg  esac
241b3062210Smrg  $echo $win32_libid_type
24223a0898aSmrg}
24323a0898aSmrg
24423a0898aSmrg
245b3062210Smrg# func_infer_tag arg
246b3062210Smrg# Infer tagged configuration to use if any are available and
247b3062210Smrg# if one wasn't chosen via the "--tag" command line option.
248b3062210Smrg# Only attempt this if the compiler in the base compile
249b3062210Smrg# command doesn't match the default compiler.
250b3062210Smrg# arg is usually of the form 'gcc ...'
251b3062210Smrgfunc_infer_tag ()
25223a0898aSmrg{
253b3062210Smrg    if test -n "$available_tags" && test -z "$tagname"; then
254b3062210Smrg      CC_quoted=
255b3062210Smrg      for arg in $CC; do
256b3062210Smrg	case $arg in
257b3062210Smrg	  *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
258b3062210Smrg	  arg="\"$arg\""
259b3062210Smrg	  ;;
260b3062210Smrg	esac
261b3062210Smrg	CC_quoted="$CC_quoted $arg"
262b3062210Smrg      done
263b3062210Smrg      case $@ in
264b3062210Smrg      # Blanks in the command may have been stripped by the calling shell,
265b3062210Smrg      # but not from the CC environment variable when configure was run.
266b3062210Smrg      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
267b3062210Smrg      # Blanks at the start of $base_compile will cause this to fail
268b3062210Smrg      # if we don't check for them as well.
26923a0898aSmrg      *)
270b3062210Smrg	for z in $available_tags; do
271b3062210Smrg	  if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
272b3062210Smrg	    # Evaluate the configuration.
273b3062210Smrg	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
274b3062210Smrg	    CC_quoted=
275b3062210Smrg	    for arg in $CC; do
276b3062210Smrg	    # Double-quote args containing other shell metacharacters.
277b3062210Smrg	    case $arg in
278b3062210Smrg	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
279b3062210Smrg	      arg="\"$arg\""
280b3062210Smrg	      ;;
281b3062210Smrg	    esac
282b3062210Smrg	    CC_quoted="$CC_quoted $arg"
283b3062210Smrg	  done
284b3062210Smrg	    case "$@ " in
285b3062210Smrg	      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
286b3062210Smrg	      # The compiler in the base compile command matches
287b3062210Smrg	      # the one in the tagged configuration.
288b3062210Smrg	      # Assume this is the tagged configuration we want.
289b3062210Smrg	      tagname=$z
290b3062210Smrg	      break
291b3062210Smrg	      ;;
292b3062210Smrg	    esac
293b3062210Smrg	  fi
294b3062210Smrg	done
295b3062210Smrg	# If $tagname still isn't set, then no tagged configuration
296b3062210Smrg	# was found and let the user know that the "--tag" command
297b3062210Smrg	# line option must be used.
298b3062210Smrg	if test -z "$tagname"; then
299b3062210Smrg	  $echo "$modename: unable to infer tagged configuration"
300b3062210Smrg	  $echo "$modename: specify a tag with \`--tag'" 1>&2
301b3062210Smrg	  exit $EXIT_FAILURE
302b3062210Smrg#        else
303b3062210Smrg#          $echo "$modename: using $tagname tagged configuration"
304b3062210Smrg	fi
305b3062210Smrg	;;
306b3062210Smrg      esac
307b3062210Smrg    fi
30823a0898aSmrg}
30923a0898aSmrg
31023a0898aSmrg
311b3062210Smrg# func_extract_an_archive dir oldlib
312b3062210Smrgfunc_extract_an_archive ()
31323a0898aSmrg{
314b3062210Smrg    f_ex_an_ar_dir="$1"; shift
315b3062210Smrg    f_ex_an_ar_oldlib="$1"
3167f7f5e4eSmrg
317b3062210Smrg    $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
318b3062210Smrg    $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
319b3062210Smrg    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
320b3062210Smrg     :
321b3062210Smrg    else
322b3062210Smrg      $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
323b3062210Smrg      exit $EXIT_FAILURE
32423a0898aSmrg    fi
32523a0898aSmrg}
32623a0898aSmrg
327b3062210Smrg# func_extract_archives gentop oldlib ...
328b3062210Smrgfunc_extract_archives ()
32923a0898aSmrg{
330b3062210Smrg    my_gentop="$1"; shift
331b3062210Smrg    my_oldlibs=${1+"$@"}
332b3062210Smrg    my_oldobjs=""
333b3062210Smrg    my_xlib=""
334b3062210Smrg    my_xabs=""
335b3062210Smrg    my_xdir=""
336b3062210Smrg    my_status=""
337b3062210Smrg
338b3062210Smrg    $show "${rm}r $my_gentop"
339b3062210Smrg    $run ${rm}r "$my_gentop"
340b3062210Smrg    $show "$mkdir $my_gentop"
341b3062210Smrg    $run $mkdir "$my_gentop"
342b3062210Smrg    my_status=$?
343b3062210Smrg    if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
344b3062210Smrg      exit $my_status
34523a0898aSmrg    fi
34623a0898aSmrg
347b3062210Smrg    for my_xlib in $my_oldlibs; do
348b3062210Smrg      # Extract the objects.
349b3062210Smrg      case $my_xlib in
350b3062210Smrg	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
351b3062210Smrg	*) my_xabs=`pwd`"/$my_xlib" ;;
352b3062210Smrg      esac
353b3062210Smrg      my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
354b3062210Smrg      my_xlib_u=$my_xlib
355b3062210Smrg      while :; do
356b3062210Smrg        case " $extracted_archives " in
357b3062210Smrg	*" $my_xlib_u "*)
358b3062210Smrg	  extracted_serial=`expr $extracted_serial + 1`
359b3062210Smrg	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
360b3062210Smrg	*) break ;;
361b3062210Smrg	esac
362b3062210Smrg      done
363b3062210Smrg      extracted_archives="$extracted_archives $my_xlib_u"
364b3062210Smrg      my_xdir="$my_gentop/$my_xlib_u"
3657f7f5e4eSmrg
366b3062210Smrg      $show "${rm}r $my_xdir"
367b3062210Smrg      $run ${rm}r "$my_xdir"
368b3062210Smrg      $show "$mkdir $my_xdir"
369b3062210Smrg      $run $mkdir "$my_xdir"
370b3062210Smrg      exit_status=$?
371b3062210Smrg      if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
372b3062210Smrg	exit $exit_status
373b3062210Smrg      fi
374b3062210Smrg      case $host in
375b3062210Smrg      *-darwin*)
376b3062210Smrg	$show "Extracting $my_xabs"
377b3062210Smrg	# Do not bother doing anything if just a dry run
378b3062210Smrg	if test -z "$run"; then
379b3062210Smrg	  darwin_orig_dir=`pwd`
380b3062210Smrg	  cd $my_xdir || exit $?
381b3062210Smrg	  darwin_archive=$my_xabs
382b3062210Smrg	  darwin_curdir=`pwd`
383b3062210Smrg	  darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
384b3062210Smrg	  darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
385b3062210Smrg	  if test -n "$darwin_arches"; then 
386b3062210Smrg	    darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
387b3062210Smrg	    darwin_arch=
388b3062210Smrg	    $show "$darwin_base_archive has multiple architectures $darwin_arches"
389b3062210Smrg	    for darwin_arch in  $darwin_arches ; do
390b3062210Smrg	      mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
391b3062210Smrg	      lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
392b3062210Smrg	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
393b3062210Smrg	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
394b3062210Smrg	      cd "$darwin_curdir"
395b3062210Smrg	      $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
396b3062210Smrg	    done # $darwin_arches
397b3062210Smrg      ## Okay now we have a bunch of thin objects, gotta fatten them up :)
398b3062210Smrg	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
399b3062210Smrg	    darwin_file=
400b3062210Smrg	    darwin_files=
401b3062210Smrg	    for darwin_file in $darwin_filelist; do
402b3062210Smrg	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
403b3062210Smrg	      lipo -create -output "$darwin_file" $darwin_files
404b3062210Smrg	    done # $darwin_filelist
405b3062210Smrg	    ${rm}r unfat-$$
406b3062210Smrg	    cd "$darwin_orig_dir"
407b3062210Smrg	  else
408b3062210Smrg	    cd "$darwin_orig_dir"
409b3062210Smrg 	    func_extract_an_archive "$my_xdir" "$my_xabs"
410b3062210Smrg	  fi # $darwin_arches
411b3062210Smrg	fi # $run
412b3062210Smrg	;;
413b3062210Smrg      *)
414b3062210Smrg        func_extract_an_archive "$my_xdir" "$my_xabs"
415b3062210Smrg        ;;
416b3062210Smrg      esac
417b3062210Smrg      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
418b3062210Smrg    done
419b3062210Smrg    func_extract_archives_result="$my_oldobjs"
42023a0898aSmrg}
421b3062210Smrg# End of Shell function definitions
422b3062210Smrg#####################################
42323a0898aSmrg
424b3062210Smrg# Darwin sucks
425b3062210Smrgeval std_shrext=\"$shrext_cmds\"
4267f7f5e4eSmrg
427b3062210Smrgdisable_libs=no
4287f7f5e4eSmrg
429b3062210Smrg# Parse our command line options once, thoroughly.
430b3062210Smrgwhile test "$#" -gt 0
431b3062210Smrgdo
432b3062210Smrg  arg="$1"
4337f7f5e4eSmrg  shift
43423a0898aSmrg
435b3062210Smrg  case $arg in
436b3062210Smrg  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
437b3062210Smrg  *) optarg= ;;
438b3062210Smrg  esac
43923a0898aSmrg
440b3062210Smrg  # If the previous option needs an argument, assign it.
441b3062210Smrg  if test -n "$prev"; then
442b3062210Smrg    case $prev in
443b3062210Smrg    execute_dlfiles)
444b3062210Smrg      execute_dlfiles="$execute_dlfiles $arg"
445b3062210Smrg      ;;
446b3062210Smrg    tag)
447b3062210Smrg      tagname="$arg"
448b3062210Smrg      preserve_args="${preserve_args}=$arg"
449b3062210Smrg
450b3062210Smrg      # Check whether tagname contains only valid characters
451b3062210Smrg      case $tagname in
452b3062210Smrg      *[!-_A-Za-z0-9,/]*)
453b3062210Smrg	$echo "$progname: invalid tag name: $tagname" 1>&2
454b3062210Smrg	exit $EXIT_FAILURE
455b3062210Smrg	;;
456b3062210Smrg      esac
45723a0898aSmrg
458b3062210Smrg      case $tagname in
459b3062210Smrg      CC)
460b3062210Smrg	# Don't test for the "default" C tag, as we know, it's there, but
461b3062210Smrg	# not specially marked.
462b3062210Smrg	;;
463b3062210Smrg      *)
464b3062210Smrg	if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
465b3062210Smrg	  taglist="$taglist $tagname"
466b3062210Smrg	  # Evaluate the configuration.
467b3062210Smrg	  eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
468b3062210Smrg	else
469b3062210Smrg	  $echo "$progname: ignoring unknown tag $tagname" 1>&2
470b3062210Smrg	fi
471b3062210Smrg	;;
472b3062210Smrg      esac
473b3062210Smrg      ;;
474b3062210Smrg    *)
475b3062210Smrg      eval "$prev=\$arg"
476b3062210Smrg      ;;
477b3062210Smrg    esac
4787f7f5e4eSmrg
479b3062210Smrg    prev=
480b3062210Smrg    prevopt=
481b3062210Smrg    continue
482b3062210Smrg  fi
48323a0898aSmrg
484b3062210Smrg  # Have we seen a non-optional argument yet?
485b3062210Smrg  case $arg in
486b3062210Smrg  --help)
487b3062210Smrg    show_help=yes
488b3062210Smrg    ;;
48923a0898aSmrg
490b3062210Smrg  --version)
491b3062210Smrg    echo "\
492b3062210Smrg$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP
4937f7f5e4eSmrg
494b3062210SmrgCopyright (C) 2008  Free Software Foundation, Inc.
495b3062210SmrgThis is free software; see the source for copying conditions.  There is NO
496b3062210Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
497b3062210Smrg    exit $?
498b3062210Smrg    ;;
49923a0898aSmrg
500b3062210Smrg  --config)
501b3062210Smrg    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
50223a0898aSmrg    # Now print the configurations for the tags.
50323a0898aSmrg    for tagname in $taglist; do
504b3062210Smrg      ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
50523a0898aSmrg    done
5067f7f5e4eSmrg    exit $?
507b3062210Smrg    ;;
50823a0898aSmrg
509b3062210Smrg  --debug)
510b3062210Smrg    $echo "$progname: enabling shell trace mode"
511b3062210Smrg    set -x
512b3062210Smrg    preserve_args="$preserve_args $arg"
513b3062210Smrg    ;;
514b3062210Smrg
515b3062210Smrg  --dry-run | -n)
516b3062210Smrg    run=:
517b3062210Smrg    ;;
518b3062210Smrg
519b3062210Smrg  --features)
520b3062210Smrg    $echo "host: $host"
52123a0898aSmrg    if test "$build_libtool_libs" = yes; then
522b3062210Smrg      $echo "enable shared libraries"
52323a0898aSmrg    else
524b3062210Smrg      $echo "disable shared libraries"
52523a0898aSmrg    fi
52623a0898aSmrg    if test "$build_old_libs" = yes; then
527b3062210Smrg      $echo "enable static libraries"
52823a0898aSmrg    else
529b3062210Smrg      $echo "disable static libraries"
53023a0898aSmrg    fi
53123a0898aSmrg    exit $?
532b3062210Smrg    ;;
53323a0898aSmrg
534b3062210Smrg  --finish) mode="finish" ;;
53523a0898aSmrg
536b3062210Smrg  --mode) prevopt="--mode" prev=mode ;;
537b3062210Smrg  --mode=*) mode="$optarg" ;;
5387f7f5e4eSmrg
539b3062210Smrg  --preserve-dup-deps) duplicate_deps="yes" ;;
54023a0898aSmrg
541b3062210Smrg  --quiet | --silent)
542b3062210Smrg    show=:
543b3062210Smrg    preserve_args="$preserve_args $arg"
54423a0898aSmrg    ;;
545b3062210Smrg
546b3062210Smrg  --tag)
547b3062210Smrg    prevopt="--tag"
548b3062210Smrg    prev=tag
549b3062210Smrg    preserve_args="$preserve_args --tag"
55023a0898aSmrg    ;;
551b3062210Smrg  --tag=*)
552b3062210Smrg    set tag "$optarg" ${1+"$@"}
553b3062210Smrg    shift
554b3062210Smrg    prev=tag
555b3062210Smrg    preserve_args="$preserve_args --tag"
55623a0898aSmrg    ;;
557b3062210Smrg
558b3062210Smrg  -dlopen)
559b3062210Smrg    prevopt="-dlopen"
560b3062210Smrg    prev=execute_dlfiles
5617f7f5e4eSmrg    ;;
562b3062210Smrg
563b3062210Smrg  -*)
564b3062210Smrg    $echo "$modename: unrecognized option \`$arg'" 1>&2
565b3062210Smrg    $echo "$help" 1>&2
566b3062210Smrg    exit $EXIT_FAILURE
5677f7f5e4eSmrg    ;;
568b3062210Smrg
569b3062210Smrg  *)
570b3062210Smrg    nonopt="$arg"
571b3062210Smrg    break
57223a0898aSmrg    ;;
57323a0898aSmrg  esac
574b3062210Smrgdone
57523a0898aSmrg
576b3062210Smrgif test -n "$prevopt"; then
577b3062210Smrg  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
578b3062210Smrg  $echo "$help" 1>&2
579b3062210Smrg  exit $EXIT_FAILURE
580b3062210Smrgfi
5817f7f5e4eSmrg
582b3062210Smrgcase $disable_libs in
583b3062210Smrgno) 
584b3062210Smrg  ;;
585b3062210Smrgshared)
586b3062210Smrg  build_libtool_libs=no
587b3062210Smrg  build_old_libs=yes
588b3062210Smrg  ;;
589b3062210Smrgstatic)
590b3062210Smrg  build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
591b3062210Smrg  ;;
592b3062210Smrgesac
5937f7f5e4eSmrg
594b3062210Smrg# If this variable is set in any of the actions, the command in it
595b3062210Smrg# will be execed at the end.  This prevents here-documents from being
596b3062210Smrg# left over by shells.
597b3062210Smrgexec_cmd=
5987f7f5e4eSmrg
599b3062210Smrgif test -z "$show_help"; then
6007f7f5e4eSmrg
601b3062210Smrg  # Infer the operation mode.
602b3062210Smrg  if test -z "$mode"; then
603b3062210Smrg    $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
604b3062210Smrg    $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
605b3062210Smrg    case $nonopt in
606b3062210Smrg    *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
607b3062210Smrg      mode=link
608b3062210Smrg      for arg
609b3062210Smrg      do
610b3062210Smrg	case $arg in
611b3062210Smrg	-c)
612b3062210Smrg	   mode=compile
613b3062210Smrg	   break
614b3062210Smrg	   ;;
615b3062210Smrg	esac
616b3062210Smrg      done
61723a0898aSmrg      ;;
618b3062210Smrg    *db | *dbx | *strace | *truss)
619b3062210Smrg      mode=execute
6207f7f5e4eSmrg      ;;
621b3062210Smrg    *install*|cp|mv)
622b3062210Smrg      mode=install
623b3062210Smrg      ;;
624b3062210Smrg    *rm)
625b3062210Smrg      mode=uninstall
626b3062210Smrg      ;;
627b3062210Smrg    *)
628b3062210Smrg      # If we have no mode, but dlfiles were specified, then do execute mode.
629b3062210Smrg      test -n "$execute_dlfiles" && mode=execute
6307f7f5e4eSmrg
631b3062210Smrg      # Just use the default operation mode.
632b3062210Smrg      if test -z "$mode"; then
633b3062210Smrg	if test -n "$nonopt"; then
634b3062210Smrg	  $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
635b3062210Smrg	else
636b3062210Smrg	  $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
637b3062210Smrg	fi
63823a0898aSmrg      fi
639b3062210Smrg      ;;
640b3062210Smrg    esac
64123a0898aSmrg  fi
64223a0898aSmrg
64323a0898aSmrg  # Only execute mode is allowed to have -dlopen flags.
64423a0898aSmrg  if test -n "$execute_dlfiles" && test "$mode" != execute; then
645b3062210Smrg    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
646b3062210Smrg    $echo "$help" 1>&2
64723a0898aSmrg    exit $EXIT_FAILURE
64823a0898aSmrg  fi
64923a0898aSmrg
65023a0898aSmrg  # Change the help message to a mode-specific one.
65123a0898aSmrg  generic_help="$help"
652b3062210Smrg  help="Try \`$modename --help --mode=$mode' for more information."
65323a0898aSmrg
654b3062210Smrg  # These modes are in order of execution frequency so that they run quickly.
655b3062210Smrg  case $mode in
656b3062210Smrg  # libtool compile mode
657b3062210Smrg  compile)
658b3062210Smrg    modename="$modename: compile"
659b3062210Smrg    # Get the compilation command and the source file.
660b3062210Smrg    base_compile=
661b3062210Smrg    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
662b3062210Smrg    suppress_opt=yes
663b3062210Smrg    suppress_output=
664b3062210Smrg    arg_mode=normal
665b3062210Smrg    libobj=
666b3062210Smrg    later=
66723a0898aSmrg
668b3062210Smrg    for arg
669b3062210Smrg    do
670b3062210Smrg      case $arg_mode in
671b3062210Smrg      arg  )
672b3062210Smrg	# do not "continue".  Instead, add this to base_compile
673b3062210Smrg	lastarg="$arg"
674b3062210Smrg	arg_mode=normal
675b3062210Smrg	;;
67623a0898aSmrg
677b3062210Smrg      target )
678b3062210Smrg	libobj="$arg"
679b3062210Smrg	arg_mode=normal
680b3062210Smrg	continue
681b3062210Smrg	;;
68223a0898aSmrg
683b3062210Smrg      normal )
684b3062210Smrg	# Accept any command-line options.
685b3062210Smrg	case $arg in
686b3062210Smrg	-o)
687b3062210Smrg	  if test -n "$libobj" ; then
688b3062210Smrg	    $echo "$modename: you cannot specify \`-o' more than once" 1>&2
689b3062210Smrg	    exit $EXIT_FAILURE
690b3062210Smrg	  fi
691b3062210Smrg	  arg_mode=target
692b3062210Smrg	  continue
693b3062210Smrg	  ;;
69423a0898aSmrg
695b3062210Smrg	-static | -prefer-pic | -prefer-non-pic)
696b3062210Smrg	  later="$later $arg"
697b3062210Smrg	  continue
698b3062210Smrg	  ;;
6997f7f5e4eSmrg
7007f7f5e4eSmrg	-no-suppress)
70123a0898aSmrg	  suppress_opt=no
70223a0898aSmrg	  continue
70323a0898aSmrg	  ;;
70423a0898aSmrg
70523a0898aSmrg	-Xcompiler)
70623a0898aSmrg	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
70723a0898aSmrg	  continue      #  The current "srcfile" will either be retained or
70823a0898aSmrg	  ;;            #  replaced later.  I would guess that would be a bug.
70923a0898aSmrg
71023a0898aSmrg	-Wc,*)
711b3062210Smrg	  args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
71223a0898aSmrg	  lastarg=
71323a0898aSmrg	  save_ifs="$IFS"; IFS=','
714b3062210Smrg 	  for arg in $args; do
71523a0898aSmrg	    IFS="$save_ifs"
716b3062210Smrg
717b3062210Smrg	    # Double-quote args containing other shell metacharacters.
718b3062210Smrg	    # Many Bourne shells cannot handle close brackets correctly
719b3062210Smrg	    # in scan sets, so we specify it separately.
720b3062210Smrg	    case $arg in
721b3062210Smrg	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
722b3062210Smrg	      arg="\"$arg\""
723b3062210Smrg	      ;;
724b3062210Smrg	    esac
725b3062210Smrg	    lastarg="$lastarg $arg"
72623a0898aSmrg	  done
72723a0898aSmrg	  IFS="$save_ifs"
728b3062210Smrg	  lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
72923a0898aSmrg
73023a0898aSmrg	  # Add the arguments to base_compile.
73123a0898aSmrg	  base_compile="$base_compile $lastarg"
73223a0898aSmrg	  continue
73323a0898aSmrg	  ;;
73423a0898aSmrg
735b3062210Smrg	* )
73623a0898aSmrg	  # Accept the current argument as the source file.
73723a0898aSmrg	  # The previous "srcfile" becomes the current argument.
73823a0898aSmrg	  #
73923a0898aSmrg	  lastarg="$srcfile"
74023a0898aSmrg	  srcfile="$arg"
74123a0898aSmrg	  ;;
74223a0898aSmrg	esac  #  case $arg
74323a0898aSmrg	;;
74423a0898aSmrg      esac    #  case $arg_mode
74523a0898aSmrg
74623a0898aSmrg      # Aesthetically quote the previous argument.
747b3062210Smrg      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
748b3062210Smrg
749b3062210Smrg      case $lastarg in
750b3062210Smrg      # Double-quote args containing other shell metacharacters.
751b3062210Smrg      # Many Bourne shells cannot handle close brackets correctly
752b3062210Smrg      # in scan sets, and some SunOS ksh mistreat backslash-escaping
753b3062210Smrg      # in scan sets (worked around with variable expansion),
754b3062210Smrg      # and furthermore cannot handle '|' '&' '(' ')' in scan sets 
755b3062210Smrg      # at all, so we specify them separately.
756b3062210Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
757b3062210Smrg	lastarg="\"$lastarg\""
758b3062210Smrg	;;
759b3062210Smrg      esac
760b3062210Smrg
761b3062210Smrg      base_compile="$base_compile $lastarg"
76223a0898aSmrg    done # for arg
76323a0898aSmrg
76423a0898aSmrg    case $arg_mode in
76523a0898aSmrg    arg)
766b3062210Smrg      $echo "$modename: you must specify an argument for -Xcompile"
767b3062210Smrg      exit $EXIT_FAILURE
76823a0898aSmrg      ;;
76923a0898aSmrg    target)
770b3062210Smrg      $echo "$modename: you must specify a target with \`-o'" 1>&2
771b3062210Smrg      exit $EXIT_FAILURE
77223a0898aSmrg      ;;
77323a0898aSmrg    *)
77423a0898aSmrg      # Get the name of the library object.
775b3062210Smrg      [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
77623a0898aSmrg      ;;
77723a0898aSmrg    esac
77823a0898aSmrg
77923a0898aSmrg    # Recognize several different file suffixes.
78023a0898aSmrg    # If the user specifies -o file.o, it is replaced with file.lo
781b3062210Smrg    xform='[cCFSifmso]'
78223a0898aSmrg    case $libobj in
783b3062210Smrg    *.ada) xform=ada ;;
784b3062210Smrg    *.adb) xform=adb ;;
785b3062210Smrg    *.ads) xform=ads ;;
786b3062210Smrg    *.asm) xform=asm ;;
787b3062210Smrg    *.c++) xform=c++ ;;
788b3062210Smrg    *.cc) xform=cc ;;
789b3062210Smrg    *.ii) xform=ii ;;
790b3062210Smrg    *.class) xform=class ;;
791b3062210Smrg    *.cpp) xform=cpp ;;
792b3062210Smrg    *.cxx) xform=cxx ;;
793b3062210Smrg    *.[fF][09]?) xform=[fF][09]. ;;
794b3062210Smrg    *.for) xform=for ;;
795b3062210Smrg    *.java) xform=java ;;
796b3062210Smrg    *.obj) xform=obj ;;
797b3062210Smrg    *.sx) xform=sx ;;
79823a0898aSmrg    esac
79923a0898aSmrg
800b3062210Smrg    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
801b3062210Smrg
80223a0898aSmrg    case $libobj in
803b3062210Smrg    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
80423a0898aSmrg    *)
805b3062210Smrg      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
806b3062210Smrg      exit $EXIT_FAILURE
80723a0898aSmrg      ;;
80823a0898aSmrg    esac
80923a0898aSmrg
81023a0898aSmrg    func_infer_tag $base_compile
81123a0898aSmrg
81223a0898aSmrg    for arg in $later; do
81323a0898aSmrg      case $arg in
81423a0898aSmrg      -static)
81523a0898aSmrg	build_old_libs=yes
81623a0898aSmrg	continue
81723a0898aSmrg	;;
81823a0898aSmrg
81923a0898aSmrg      -prefer-pic)
82023a0898aSmrg	pic_mode=yes
82123a0898aSmrg	continue
82223a0898aSmrg	;;
82323a0898aSmrg
82423a0898aSmrg      -prefer-non-pic)
82523a0898aSmrg	pic_mode=no
82623a0898aSmrg	continue
82723a0898aSmrg	;;
82823a0898aSmrg      esac
82923a0898aSmrg    done
83023a0898aSmrg
831b3062210Smrg    qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
832b3062210Smrg    case $qlibobj in
833b3062210Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
834b3062210Smrg	qlibobj="\"$qlibobj\"" ;;
835b3062210Smrg    esac
836b3062210Smrg    test "X$libobj" != "X$qlibobj" \
837b3062210Smrg	&& $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' 	&()|`$[]' \
838b3062210Smrg	&& $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
839b3062210Smrg    objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
840b3062210Smrg    xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
841b3062210Smrg    if test "X$xdir" = "X$obj"; then
842b3062210Smrg      xdir=
843b3062210Smrg    else
844b3062210Smrg      xdir=$xdir/
845b3062210Smrg    fi
84623a0898aSmrg    lobj=${xdir}$objdir/$objname
84723a0898aSmrg
848b3062210Smrg    if test -z "$base_compile"; then
849b3062210Smrg      $echo "$modename: you must specify a compilation command" 1>&2
850b3062210Smrg      $echo "$help" 1>&2
851b3062210Smrg      exit $EXIT_FAILURE
852b3062210Smrg    fi
85323a0898aSmrg
85423a0898aSmrg    # Delete any leftover library objects.
85523a0898aSmrg    if test "$build_old_libs" = yes; then
85623a0898aSmrg      removelist="$obj $lobj $libobj ${libobj}T"
85723a0898aSmrg    else
85823a0898aSmrg      removelist="$lobj $libobj ${libobj}T"
85923a0898aSmrg    fi
86023a0898aSmrg
861b3062210Smrg    $run $rm $removelist
862b3062210Smrg    trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
863b3062210Smrg
86423a0898aSmrg    # On Cygwin there's no "real" PIC flag so we must build both object types
86523a0898aSmrg    case $host_os in
866b3062210Smrg    cygwin* | mingw* | pw32* | os2*)
86723a0898aSmrg      pic_mode=default
86823a0898aSmrg      ;;
86923a0898aSmrg    esac
87023a0898aSmrg    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
87123a0898aSmrg      # non-PIC code in shared libraries is not supported
87223a0898aSmrg      pic_mode=default
87323a0898aSmrg    fi
87423a0898aSmrg
87523a0898aSmrg    # Calculate the filename of the output object if compiler does
87623a0898aSmrg    # not support -o with -c
87723a0898aSmrg    if test "$compiler_c_o" = no; then
878b3062210Smrg      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
87923a0898aSmrg      lockfile="$output_obj.lock"
880b3062210Smrg      removelist="$removelist $output_obj $lockfile"
881b3062210Smrg      trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
88223a0898aSmrg    else
88323a0898aSmrg      output_obj=
88423a0898aSmrg      need_locks=no
88523a0898aSmrg      lockfile=
88623a0898aSmrg    fi
88723a0898aSmrg
88823a0898aSmrg    # Lock this critical section if it is needed
88923a0898aSmrg    # We use this script file to make the link, it avoids creating a new file
89023a0898aSmrg    if test "$need_locks" = yes; then
891b3062210Smrg      until $run ln "$progpath" "$lockfile" 2>/dev/null; do
892b3062210Smrg	$show "Waiting for $lockfile to be removed"
89323a0898aSmrg	sleep 2
89423a0898aSmrg      done
89523a0898aSmrg    elif test "$need_locks" = warn; then
89623a0898aSmrg      if test -f "$lockfile"; then
897b3062210Smrg	$echo "\
89823a0898aSmrg*** ERROR, $lockfile exists and contains:
89923a0898aSmrg`cat $lockfile 2>/dev/null`
90023a0898aSmrg
90123a0898aSmrgThis indicates that another process is trying to use the same
90223a0898aSmrgtemporary object file, and libtool could not work around it because
90323a0898aSmrgyour compiler does not support \`-c' and \`-o' together.  If you
90423a0898aSmrgrepeat this compilation, it may succeed, by chance, but you had better
90523a0898aSmrgavoid parallel builds (make -j) in this platform, or get a better
90623a0898aSmrgcompiler."
90723a0898aSmrg
908b3062210Smrg	$run $rm $removelist
90923a0898aSmrg	exit $EXIT_FAILURE
91023a0898aSmrg      fi
911b3062210Smrg      $echo "$srcfile" > "$lockfile"
91223a0898aSmrg    fi
91323a0898aSmrg
91423a0898aSmrg    if test -n "$fix_srcfile_path"; then
91523a0898aSmrg      eval srcfile=\"$fix_srcfile_path\"
91623a0898aSmrg    fi
917b3062210Smrg    qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
918b3062210Smrg    case $qsrcfile in
919b3062210Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
920b3062210Smrg      qsrcfile="\"$qsrcfile\"" ;;
921b3062210Smrg    esac
922b3062210Smrg
923b3062210Smrg    $run $rm "$libobj" "${libobj}T"
924b3062210Smrg
925b3062210Smrg    # Create a libtool object file (analogous to a ".la" file),
926b3062210Smrg    # but don't create it if we're doing a dry run.
927b3062210Smrg    test -z "$run" && cat > ${libobj}T <<EOF
928b3062210Smrg# $libobj - a libtool object file
929b3062210Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
930b3062210Smrg#
931b3062210Smrg# Please DO NOT delete this file!
932b3062210Smrg# It is necessary for linking the library.
933b3062210Smrg
934b3062210Smrg# Name of the PIC object.
935b3062210SmrgEOF
93623a0898aSmrg
93723a0898aSmrg    # Only build a PIC object if we are building libtool libraries.
93823a0898aSmrg    if test "$build_libtool_libs" = yes; then
93923a0898aSmrg      # Without this assignment, base_compile gets emptied.
94023a0898aSmrg      fbsd_hideous_sh_bug=$base_compile
94123a0898aSmrg
94223a0898aSmrg      if test "$pic_mode" != no; then
94323a0898aSmrg	command="$base_compile $qsrcfile $pic_flag"
94423a0898aSmrg      else
94523a0898aSmrg	# Don't build PIC code
94623a0898aSmrg	command="$base_compile $qsrcfile"
94723a0898aSmrg      fi
94823a0898aSmrg
949b3062210Smrg      if test ! -d "${xdir}$objdir"; then
950b3062210Smrg	$show "$mkdir ${xdir}$objdir"
951b3062210Smrg	$run $mkdir ${xdir}$objdir
952b3062210Smrg	exit_status=$?
953b3062210Smrg	if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
954b3062210Smrg	  exit $exit_status
955b3062210Smrg	fi
956b3062210Smrg      fi
95723a0898aSmrg
95823a0898aSmrg      if test -z "$output_obj"; then
95923a0898aSmrg	# Place PIC objects in $objdir
96023a0898aSmrg	command="$command -o $lobj"
96123a0898aSmrg      fi
96223a0898aSmrg
963b3062210Smrg      $run $rm "$lobj" "$output_obj"
964b3062210Smrg
965b3062210Smrg      $show "$command"
966b3062210Smrg      if $run eval $lt_env "$command"; then :
967b3062210Smrg      else
968b3062210Smrg	test -n "$output_obj" && $run $rm $removelist
969b3062210Smrg	exit $EXIT_FAILURE
970b3062210Smrg      fi
97123a0898aSmrg
97223a0898aSmrg      if test "$need_locks" = warn &&
97323a0898aSmrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
974b3062210Smrg	$echo "\
97523a0898aSmrg*** ERROR, $lockfile contains:
97623a0898aSmrg`cat $lockfile 2>/dev/null`
97723a0898aSmrg
97823a0898aSmrgbut it should contain:
97923a0898aSmrg$srcfile
98023a0898aSmrg
98123a0898aSmrgThis indicates that another process is trying to use the same
98223a0898aSmrgtemporary object file, and libtool could not work around it because
98323a0898aSmrgyour compiler does not support \`-c' and \`-o' together.  If you
98423a0898aSmrgrepeat this compilation, it may succeed, by chance, but you had better
98523a0898aSmrgavoid parallel builds (make -j) in this platform, or get a better
98623a0898aSmrgcompiler."
98723a0898aSmrg
988b3062210Smrg	$run $rm $removelist
98923a0898aSmrg	exit $EXIT_FAILURE
99023a0898aSmrg      fi
99123a0898aSmrg
99223a0898aSmrg      # Just move the object if needed, then go on to compile the next one
99323a0898aSmrg      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
994b3062210Smrg	$show "$mv $output_obj $lobj"
995b3062210Smrg	if $run $mv $output_obj $lobj; then :
996b3062210Smrg	else
997b3062210Smrg	  error=$?
998b3062210Smrg	  $run $rm $removelist
999b3062210Smrg	  exit $error
1000b3062210Smrg	fi
100123a0898aSmrg      fi
100223a0898aSmrg
1003b3062210Smrg      # Append the name of the PIC object to the libtool object file.
1004b3062210Smrg      test -z "$run" && cat >> ${libobj}T <<EOF
1005b3062210Smrgpic_object='$objdir/$objname'
1006b3062210Smrg
1007b3062210SmrgEOF
1008b3062210Smrg
100923a0898aSmrg      # Allow error messages only from the first compilation.
101023a0898aSmrg      if test "$suppress_opt" = yes; then
1011b3062210Smrg        suppress_output=' >/dev/null 2>&1'
101223a0898aSmrg      fi
1013b3062210Smrg    else
1014b3062210Smrg      # No PIC object so indicate it doesn't exist in the libtool
1015b3062210Smrg      # object file.
1016b3062210Smrg      test -z "$run" && cat >> ${libobj}T <<EOF
1017b3062210Smrgpic_object=none
1018b3062210Smrg
1019b3062210SmrgEOF
102023a0898aSmrg    fi
102123a0898aSmrg
102223a0898aSmrg    # Only build a position-dependent object if we build old libraries.
102323a0898aSmrg    if test "$build_old_libs" = yes; then
102423a0898aSmrg      if test "$pic_mode" != yes; then
102523a0898aSmrg	# Don't build PIC code
1026b3062210Smrg	command="$base_compile $qsrcfile"
102723a0898aSmrg      else
102823a0898aSmrg	command="$base_compile $qsrcfile $pic_flag"
102923a0898aSmrg      fi
103023a0898aSmrg      if test "$compiler_c_o" = yes; then
103123a0898aSmrg	command="$command -o $obj"
103223a0898aSmrg      fi
103323a0898aSmrg
103423a0898aSmrg      # Suppress compiler output if we already did a PIC compilation.
103523a0898aSmrg      command="$command$suppress_output"
1036b3062210Smrg      $run $rm "$obj" "$output_obj"
1037b3062210Smrg      $show "$command"
1038b3062210Smrg      if $run eval $lt_env "$command"; then :
1039b3062210Smrg      else
1040b3062210Smrg	$run $rm $removelist
1041b3062210Smrg	exit $EXIT_FAILURE
1042b3062210Smrg      fi
104323a0898aSmrg
104423a0898aSmrg      if test "$need_locks" = warn &&
104523a0898aSmrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1046b3062210Smrg	$echo "\
104723a0898aSmrg*** ERROR, $lockfile contains:
104823a0898aSmrg`cat $lockfile 2>/dev/null`
104923a0898aSmrg
105023a0898aSmrgbut it should contain:
105123a0898aSmrg$srcfile
105223a0898aSmrg
105323a0898aSmrgThis indicates that another process is trying to use the same
105423a0898aSmrgtemporary object file, and libtool could not work around it because
105523a0898aSmrgyour compiler does not support \`-c' and \`-o' together.  If you
105623a0898aSmrgrepeat this compilation, it may succeed, by chance, but you had better
105723a0898aSmrgavoid parallel builds (make -j) in this platform, or get a better
105823a0898aSmrgcompiler."
105923a0898aSmrg
1060b3062210Smrg	$run $rm $removelist
106123a0898aSmrg	exit $EXIT_FAILURE
106223a0898aSmrg      fi
106323a0898aSmrg
106423a0898aSmrg      # Just move the object if needed
106523a0898aSmrg      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
1066b3062210Smrg	$show "$mv $output_obj $obj"
1067b3062210Smrg	if $run $mv $output_obj $obj; then :
1068b3062210Smrg	else
1069b3062210Smrg	  error=$?
1070b3062210Smrg	  $run $rm $removelist
1071b3062210Smrg	  exit $error
1072b3062210Smrg	fi
107323a0898aSmrg      fi
1074b3062210Smrg
1075b3062210Smrg      # Append the name of the non-PIC object the libtool object file.
1076b3062210Smrg      # Only append if the libtool object file exists.
1077b3062210Smrg      test -z "$run" && cat >> ${libobj}T <<EOF
1078b3062210Smrg# Name of the non-PIC object.
1079b3062210Smrgnon_pic_object='$objname'
1080b3062210Smrg
1081b3062210SmrgEOF
1082b3062210Smrg    else
1083b3062210Smrg      # Append the name of the non-PIC object the libtool object file.
1084b3062210Smrg      # Only append if the libtool object file exists.
1085b3062210Smrg      test -z "$run" && cat >> ${libobj}T <<EOF
1086b3062210Smrg# Name of the non-PIC object.
1087b3062210Smrgnon_pic_object=none
1088b3062210Smrg
1089b3062210SmrgEOF
109023a0898aSmrg    fi
109123a0898aSmrg
1092b3062210Smrg    $run $mv "${libobj}T" "${libobj}"
109323a0898aSmrg
1094b3062210Smrg    # Unlock the critical section if it was locked
1095b3062210Smrg    if test "$need_locks" != no; then
1096b3062210Smrg      $run $rm "$lockfile"
1097b3062210Smrg    fi
109823a0898aSmrg
109923a0898aSmrg    exit $EXIT_SUCCESS
1100b3062210Smrg    ;;
110123a0898aSmrg
1102b3062210Smrg  # libtool link mode
1103b3062210Smrg  link | relink)
1104b3062210Smrg    modename="$modename: link"
1105b3062210Smrg    case $host in
1106b3062210Smrg    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1107b3062210Smrg      # It is impossible to link a dll without this setting, and
1108b3062210Smrg      # we shouldn't force the makefile maintainer to figure out
1109b3062210Smrg      # which system we are compiling for in order to pass an extra
1110b3062210Smrg      # flag for every libtool invocation.
1111b3062210Smrg      # allow_undefined=no
111223a0898aSmrg
1113b3062210Smrg      # FIXME: Unfortunately, there are problems with the above when trying
1114b3062210Smrg      # to make a dll which has undefined symbols, in which case not
1115b3062210Smrg      # even a static library is built.  For now, we need to specify
1116b3062210Smrg      # -no-undefined on the libtool link line when we can be certain
1117b3062210Smrg      # that all symbols are satisfied, otherwise we get a static library.
1118b3062210Smrg      allow_undefined=yes
1119b3062210Smrg      ;;
1120b3062210Smrg    *)
1121b3062210Smrg      allow_undefined=yes
1122b3062210Smrg      ;;
1123b3062210Smrg    esac
1124b3062210Smrg    libtool_args="$nonopt"
1125b3062210Smrg    base_compile="$nonopt $@"
1126b3062210Smrg    compile_command="$nonopt"
1127b3062210Smrg    finalize_command="$nonopt"
112823a0898aSmrg
1129b3062210Smrg    compile_rpath=
1130b3062210Smrg    finalize_rpath=
1131b3062210Smrg    compile_shlibpath=
1132b3062210Smrg    finalize_shlibpath=
1133b3062210Smrg    convenience=
1134b3062210Smrg    old_convenience=
1135b3062210Smrg    deplibs=
1136b3062210Smrg    old_deplibs=
1137b3062210Smrg    compiler_flags=
1138b3062210Smrg    linker_flags=
1139b3062210Smrg    dllsearchpath=
1140b3062210Smrg    lib_search_path=`pwd`
1141b3062210Smrg    inst_prefix_dir=
114223a0898aSmrg
1143b3062210Smrg    avoid_version=no
1144b3062210Smrg    dlfiles=
1145b3062210Smrg    dlprefiles=
1146b3062210Smrg    dlself=no
1147b3062210Smrg    export_dynamic=no
1148b3062210Smrg    export_symbols=
1149b3062210Smrg    export_symbols_regex=
1150b3062210Smrg    generated=
1151b3062210Smrg    libobjs=
1152b3062210Smrg    ltlibs=
1153b3062210Smrg    module=no
1154b3062210Smrg    no_install=no
1155b3062210Smrg    objs=
1156b3062210Smrg    non_pic_objects=
1157b3062210Smrg    notinst_path= # paths that contain not-installed libtool libraries
1158b3062210Smrg    precious_files_regex=
1159b3062210Smrg    prefer_static_libs=no
1160b3062210Smrg    preload=no
1161b3062210Smrg    prev=
1162b3062210Smrg    prevarg=
1163b3062210Smrg    release=
1164b3062210Smrg    rpath=
1165b3062210Smrg    xrpath=
1166b3062210Smrg    perm_rpath=
1167b3062210Smrg    temp_rpath=
1168b3062210Smrg    thread_safe=no
1169b3062210Smrg    vinfo=
1170b3062210Smrg    vinfo_number=no
1171b3062210Smrg    single_module="${wl}-single_module"
117223a0898aSmrg
1173b3062210Smrg    func_infer_tag $base_compile
117423a0898aSmrg
1175b3062210Smrg    # We need to know -static, to get the right output filenames.
1176b3062210Smrg    for arg
1177b3062210Smrg    do
1178b3062210Smrg      case $arg in
1179b3062210Smrg      -all-static | -static | -static-libtool-libs)
1180b3062210Smrg	case $arg in
1181b3062210Smrg	-all-static)
1182b3062210Smrg	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
1183b3062210Smrg	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
1184b3062210Smrg	  fi
1185b3062210Smrg	  if test -n "$link_static_flag"; then
1186b3062210Smrg	    dlopen_self=$dlopen_self_static
1187b3062210Smrg	  fi
1188b3062210Smrg	  prefer_static_libs=yes
1189b3062210Smrg	  ;;
1190b3062210Smrg	-static)
1191b3062210Smrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
1192b3062210Smrg	    dlopen_self=$dlopen_self_static
1193b3062210Smrg	  fi
1194b3062210Smrg	  prefer_static_libs=built
1195b3062210Smrg	  ;;
1196b3062210Smrg	-static-libtool-libs)
1197b3062210Smrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
1198b3062210Smrg	    dlopen_self=$dlopen_self_static
1199b3062210Smrg	  fi
1200b3062210Smrg	  prefer_static_libs=yes
1201b3062210Smrg	  ;;
1202b3062210Smrg	esac
1203b3062210Smrg	build_libtool_libs=no
1204b3062210Smrg	build_old_libs=yes
1205b3062210Smrg	break
1206b3062210Smrg	;;
1207b3062210Smrg      esac
1208b3062210Smrg    done
120923a0898aSmrg
1210b3062210Smrg    # See if our shared archives depend on static archives.
1211b3062210Smrg    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
121223a0898aSmrg
1213b3062210Smrg    # Go through the arguments, transforming them on the way.
1214b3062210Smrg    while test "$#" -gt 0; do
1215b3062210Smrg      arg="$1"
1216b3062210Smrg      shift
1217b3062210Smrg      case $arg in
1218b3062210Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1219b3062210Smrg	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
1220b3062210Smrg	;;
1221b3062210Smrg      *) qarg=$arg ;;
1222b3062210Smrg      esac
1223b3062210Smrg      libtool_args="$libtool_args $qarg"
122423a0898aSmrg
1225b3062210Smrg      # If the previous option needs an argument, assign it.
1226b3062210Smrg      if test -n "$prev"; then
1227b3062210Smrg	case $prev in
1228b3062210Smrg	output)
1229b3062210Smrg	  compile_command="$compile_command @OUTPUT@"
1230b3062210Smrg	  finalize_command="$finalize_command @OUTPUT@"
1231b3062210Smrg	  ;;
1232b3062210Smrg	esac
123323a0898aSmrg
1234b3062210Smrg	case $prev in
1235b3062210Smrg	dlfiles|dlprefiles)
1236b3062210Smrg	  if test "$preload" = no; then
1237b3062210Smrg	    # Add the symbol object into the linking commands.
1238b3062210Smrg	    compile_command="$compile_command @SYMFILE@"
1239b3062210Smrg	    finalize_command="$finalize_command @SYMFILE@"
1240b3062210Smrg	    preload=yes
1241b3062210Smrg	  fi
1242b3062210Smrg	  case $arg in
1243b3062210Smrg	  *.la | *.lo) ;;  # We handle these cases below.
1244b3062210Smrg	  force)
1245b3062210Smrg	    if test "$dlself" = no; then
1246b3062210Smrg	      dlself=needless
1247b3062210Smrg	      export_dynamic=yes
1248b3062210Smrg	    fi
1249b3062210Smrg	    prev=
1250b3062210Smrg	    continue
1251b3062210Smrg	    ;;
1252b3062210Smrg	  self)
1253b3062210Smrg	    if test "$prev" = dlprefiles; then
1254b3062210Smrg	      dlself=yes
1255b3062210Smrg	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
1256b3062210Smrg	      dlself=yes
1257b3062210Smrg	    else
1258b3062210Smrg	      dlself=needless
1259b3062210Smrg	      export_dynamic=yes
1260b3062210Smrg	    fi
1261b3062210Smrg	    prev=
1262b3062210Smrg	    continue
1263b3062210Smrg	    ;;
1264b3062210Smrg	  *)
1265b3062210Smrg	    if test "$prev" = dlfiles; then
1266b3062210Smrg	      dlfiles="$dlfiles $arg"
1267b3062210Smrg	    else
1268b3062210Smrg	      dlprefiles="$dlprefiles $arg"
1269b3062210Smrg	    fi
1270b3062210Smrg	    prev=
1271b3062210Smrg	    continue
1272b3062210Smrg	    ;;
1273b3062210Smrg	  esac
1274b3062210Smrg	  ;;
1275b3062210Smrg	expsyms)
1276b3062210Smrg	  export_symbols="$arg"
1277b3062210Smrg	  if test ! -f "$arg"; then
1278b3062210Smrg	    $echo "$modename: symbol file \`$arg' does not exist"
1279b3062210Smrg	    exit $EXIT_FAILURE
1280b3062210Smrg	  fi
1281b3062210Smrg	  prev=
1282b3062210Smrg	  continue
1283b3062210Smrg	  ;;
1284b3062210Smrg	expsyms_regex)
1285b3062210Smrg	  export_symbols_regex="$arg"
1286b3062210Smrg	  prev=
1287b3062210Smrg	  continue
1288b3062210Smrg	  ;;
1289b3062210Smrg	inst_prefix)
1290b3062210Smrg	  inst_prefix_dir="$arg"
1291b3062210Smrg	  prev=
1292b3062210Smrg	  continue
1293b3062210Smrg	  ;;
1294b3062210Smrg	precious_regex)
1295b3062210Smrg	  precious_files_regex="$arg"
1296b3062210Smrg	  prev=
1297b3062210Smrg	  continue
1298b3062210Smrg	  ;;
1299b3062210Smrg	release)
1300b3062210Smrg	  release="-$arg"
1301b3062210Smrg	  prev=
1302b3062210Smrg	  continue
1303b3062210Smrg	  ;;
1304b3062210Smrg	objectlist)
1305b3062210Smrg	  if test -f "$arg"; then
1306b3062210Smrg	    save_arg=$arg
1307b3062210Smrg	    moreargs=
1308b3062210Smrg	    for fil in `cat $save_arg`
1309b3062210Smrg	    do
1310b3062210Smrg#	      moreargs="$moreargs $fil"
1311b3062210Smrg	      arg=$fil
1312b3062210Smrg	      # A libtool-controlled object.
131323a0898aSmrg
1314b3062210Smrg	      # Check to see that this really is a libtool object.
1315b3062210Smrg	      if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1316b3062210Smrg		pic_object=
1317b3062210Smrg		non_pic_object=
131823a0898aSmrg
1319b3062210Smrg		# Read the .lo file
1320b3062210Smrg		# If there is no directory component, then add one.
1321b3062210Smrg		case $arg in
1322b3062210Smrg		*/* | *\\*) . $arg ;;
1323b3062210Smrg		*) . ./$arg ;;
1324b3062210Smrg		esac
132523a0898aSmrg
1326b3062210Smrg		if test -z "$pic_object" || \
1327b3062210Smrg		   test -z "$non_pic_object" ||
1328b3062210Smrg		   test "$pic_object" = none && \
1329b3062210Smrg		   test "$non_pic_object" = none; then
1330b3062210Smrg		  $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1331b3062210Smrg		  exit $EXIT_FAILURE
1332b3062210Smrg		fi
133323a0898aSmrg
1334b3062210Smrg		# Extract subdirectory from the argument.
1335b3062210Smrg		xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1336b3062210Smrg		if test "X$xdir" = "X$arg"; then
1337b3062210Smrg		  xdir=
1338b3062210Smrg		else
1339b3062210Smrg		  xdir="$xdir/"
1340b3062210Smrg		fi
134123a0898aSmrg
1342b3062210Smrg		if test "$pic_object" != none; then
1343b3062210Smrg		  # Prepend the subdirectory the object is found in.
1344b3062210Smrg		  pic_object="$xdir$pic_object"
134523a0898aSmrg
1346b3062210Smrg		  if test "$prev" = dlfiles; then
1347b3062210Smrg		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1348b3062210Smrg		      dlfiles="$dlfiles $pic_object"
1349b3062210Smrg		      prev=
1350b3062210Smrg		      continue
1351b3062210Smrg		    else
1352b3062210Smrg		      # If libtool objects are unsupported, then we need to preload.
1353b3062210Smrg		      prev=dlprefiles
1354b3062210Smrg		    fi
1355b3062210Smrg		  fi
135623a0898aSmrg
1357b3062210Smrg		  # CHECK ME:  I think I busted this.  -Ossama
1358b3062210Smrg		  if test "$prev" = dlprefiles; then
1359b3062210Smrg		    # Preload the old-style object.
1360b3062210Smrg		    dlprefiles="$dlprefiles $pic_object"
1361b3062210Smrg		    prev=
1362b3062210Smrg		  fi
136323a0898aSmrg
1364b3062210Smrg		  # A PIC object.
1365b3062210Smrg		  libobjs="$libobjs $pic_object"
1366b3062210Smrg		  arg="$pic_object"
1367b3062210Smrg		fi
136823a0898aSmrg
1369b3062210Smrg		# Non-PIC object.
1370b3062210Smrg		if test "$non_pic_object" != none; then
1371b3062210Smrg		  # Prepend the subdirectory the object is found in.
1372b3062210Smrg		  non_pic_object="$xdir$non_pic_object"
137323a0898aSmrg
1374b3062210Smrg		  # A standard non-PIC object
1375b3062210Smrg		  non_pic_objects="$non_pic_objects $non_pic_object"
1376b3062210Smrg		  if test -z "$pic_object" || test "$pic_object" = none ; then
1377b3062210Smrg		    arg="$non_pic_object"
1378b3062210Smrg		  fi
1379b3062210Smrg		else
1380b3062210Smrg		  # If the PIC object exists, use it instead.
1381b3062210Smrg		  # $xdir was prepended to $pic_object above.
1382b3062210Smrg		  non_pic_object="$pic_object"
1383b3062210Smrg		  non_pic_objects="$non_pic_objects $non_pic_object"
1384b3062210Smrg		fi
1385b3062210Smrg	      else
1386b3062210Smrg		# Only an error if not doing a dry-run.
1387b3062210Smrg		if test -z "$run"; then
1388b3062210Smrg		  $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1389b3062210Smrg		  exit $EXIT_FAILURE
1390b3062210Smrg		else
1391b3062210Smrg		  # Dry-run case.
139223a0898aSmrg
1393b3062210Smrg		  # Extract subdirectory from the argument.
1394b3062210Smrg		  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1395b3062210Smrg		  if test "X$xdir" = "X$arg"; then
1396b3062210Smrg		    xdir=
1397b3062210Smrg		  else
1398b3062210Smrg		    xdir="$xdir/"
1399b3062210Smrg		  fi
140023a0898aSmrg
1401b3062210Smrg		  pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1402b3062210Smrg		  non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1403b3062210Smrg		  libobjs="$libobjs $pic_object"
1404b3062210Smrg		  non_pic_objects="$non_pic_objects $non_pic_object"
1405b3062210Smrg		fi
1406b3062210Smrg	      fi
1407b3062210Smrg	    done
1408b3062210Smrg	  else
1409b3062210Smrg	    $echo "$modename: link input file \`$save_arg' does not exist"
1410b3062210Smrg	    exit $EXIT_FAILURE
1411b3062210Smrg	  fi
1412b3062210Smrg	  arg=$save_arg
1413b3062210Smrg	  prev=
1414b3062210Smrg	  continue
1415b3062210Smrg	  ;;
1416b3062210Smrg	rpath | xrpath)
1417b3062210Smrg	  # We need an absolute path.
1418b3062210Smrg	  case $arg in
1419b3062210Smrg	  [\\/]* | [A-Za-z]:[\\/]*) ;;
1420b3062210Smrg	  *)
1421b3062210Smrg	    $echo "$modename: only absolute run-paths are allowed" 1>&2
1422b3062210Smrg	    exit $EXIT_FAILURE
1423b3062210Smrg	    ;;
1424b3062210Smrg	  esac
1425b3062210Smrg	  if test "$prev" = rpath; then
1426b3062210Smrg	    case "$rpath " in
1427b3062210Smrg	    *" $arg "*) ;;
1428b3062210Smrg	    *) rpath="$rpath $arg" ;;
1429b3062210Smrg	    esac
1430b3062210Smrg	  else
1431b3062210Smrg	    case "$xrpath " in
1432b3062210Smrg	    *" $arg "*) ;;
1433b3062210Smrg	    *) xrpath="$xrpath $arg" ;;
1434b3062210Smrg	    esac
1435b3062210Smrg	  fi
1436b3062210Smrg	  prev=
1437b3062210Smrg	  continue
1438b3062210Smrg	  ;;
1439b3062210Smrg	xcompiler)
1440b3062210Smrg	  compiler_flags="$compiler_flags $qarg"
1441b3062210Smrg	  prev=
1442b3062210Smrg	  compile_command="$compile_command $qarg"
1443b3062210Smrg	  finalize_command="$finalize_command $qarg"
1444b3062210Smrg	  continue
1445b3062210Smrg	  ;;
1446b3062210Smrg	xlinker)
1447b3062210Smrg	  linker_flags="$linker_flags $qarg"
1448b3062210Smrg	  compiler_flags="$compiler_flags $wl$qarg"
1449b3062210Smrg	  prev=
1450b3062210Smrg	  compile_command="$compile_command $wl$qarg"
1451b3062210Smrg	  finalize_command="$finalize_command $wl$qarg"
1452b3062210Smrg	  continue
1453b3062210Smrg	  ;;
1454b3062210Smrg	xcclinker)
1455b3062210Smrg	  linker_flags="$linker_flags $qarg"
1456b3062210Smrg	  compiler_flags="$compiler_flags $qarg"
1457b3062210Smrg	  prev=
1458b3062210Smrg	  compile_command="$compile_command $qarg"
1459b3062210Smrg	  finalize_command="$finalize_command $qarg"
1460b3062210Smrg	  continue
1461b3062210Smrg	  ;;
1462b3062210Smrg	shrext)
1463b3062210Smrg  	  shrext_cmds="$arg"
1464b3062210Smrg	  prev=
1465b3062210Smrg	  continue
1466b3062210Smrg	  ;;
1467b3062210Smrg	darwin_framework|darwin_framework_skip)
1468b3062210Smrg	  test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
1469b3062210Smrg	  compile_command="$compile_command $arg"
1470b3062210Smrg	  finalize_command="$finalize_command $arg"
1471b3062210Smrg	  prev=
1472b3062210Smrg	  continue
1473b3062210Smrg	  ;;
1474b3062210Smrg	*)
1475b3062210Smrg	  eval "$prev=\"\$arg\""
1476b3062210Smrg	  prev=
1477b3062210Smrg	  continue
1478b3062210Smrg	  ;;
1479b3062210Smrg	esac
1480b3062210Smrg      fi # test -n "$prev"
148123a0898aSmrg
1482b3062210Smrg      prevarg="$arg"
148323a0898aSmrg
1484b3062210Smrg      case $arg in
1485b3062210Smrg      -all-static)
1486b3062210Smrg	if test -n "$link_static_flag"; then
1487b3062210Smrg	  compile_command="$compile_command $link_static_flag"
1488b3062210Smrg	  finalize_command="$finalize_command $link_static_flag"
1489b3062210Smrg	fi
1490b3062210Smrg	continue
1491b3062210Smrg	;;
149223a0898aSmrg
1493b3062210Smrg      -allow-undefined)
1494b3062210Smrg	# FIXME: remove this flag sometime in the future.
1495b3062210Smrg	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
1496b3062210Smrg	continue
1497b3062210Smrg	;;
149823a0898aSmrg
1499b3062210Smrg      -avoid-version)
1500b3062210Smrg	avoid_version=yes
1501b3062210Smrg	continue
1502b3062210Smrg	;;
150323a0898aSmrg
1504b3062210Smrg      -dlopen)
1505b3062210Smrg	prev=dlfiles
1506b3062210Smrg	continue
1507b3062210Smrg	;;
150823a0898aSmrg
1509b3062210Smrg      -dlpreopen)
1510b3062210Smrg	prev=dlprefiles
1511b3062210Smrg	continue
1512b3062210Smrg	;;
151323a0898aSmrg
1514b3062210Smrg      -export-dynamic)
1515b3062210Smrg	export_dynamic=yes
1516b3062210Smrg	continue
1517b3062210Smrg	;;
151823a0898aSmrg
1519b3062210Smrg      -export-symbols | -export-symbols-regex)
1520b3062210Smrg	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
1521b3062210Smrg	  $echo "$modename: more than one -exported-symbols argument is not allowed"
1522b3062210Smrg	  exit $EXIT_FAILURE
1523b3062210Smrg	fi
1524b3062210Smrg	if test "X$arg" = "X-export-symbols"; then
1525b3062210Smrg	  prev=expsyms
1526b3062210Smrg	else
1527b3062210Smrg	  prev=expsyms_regex
1528b3062210Smrg	fi
1529b3062210Smrg	continue
1530b3062210Smrg	;;
153123a0898aSmrg
1532b3062210Smrg      -framework|-arch|-isysroot)
1533b3062210Smrg	case " $CC " in
1534b3062210Smrg	  *" ${arg} ${1} "* | *" ${arg}	${1} "*) 
1535b3062210Smrg		prev=darwin_framework_skip ;;
1536b3062210Smrg	  *) compiler_flags="$compiler_flags $arg"
1537b3062210Smrg	     prev=darwin_framework ;;
1538b3062210Smrg	esac
1539b3062210Smrg	compile_command="$compile_command $arg"
1540b3062210Smrg	finalize_command="$finalize_command $arg"
1541b3062210Smrg	continue
1542b3062210Smrg	;;
154323a0898aSmrg
1544b3062210Smrg      -inst-prefix-dir)
1545b3062210Smrg	prev=inst_prefix
1546b3062210Smrg	continue
1547b3062210Smrg	;;
154823a0898aSmrg
1549b3062210Smrg      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
1550b3062210Smrg      # so, if we see these flags be careful not to treat them like -L
1551b3062210Smrg      -L[A-Z][A-Z]*:*)
1552b3062210Smrg	case $with_gcc/$host in
1553b3062210Smrg	no/*-*-irix* | /*-*-irix*)
1554b3062210Smrg	  compile_command="$compile_command $arg"
1555b3062210Smrg	  finalize_command="$finalize_command $arg"
1556b3062210Smrg	  ;;
1557b3062210Smrg	esac
1558b3062210Smrg	continue
1559b3062210Smrg	;;
156023a0898aSmrg
1561b3062210Smrg      -L*)
1562b3062210Smrg	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
1563b3062210Smrg	# We need an absolute path.
1564b3062210Smrg	case $dir in
1565b3062210Smrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
1566b3062210Smrg	*)
1567b3062210Smrg	  absdir=`cd "$dir" && pwd`
1568b3062210Smrg	  if test -z "$absdir"; then
1569b3062210Smrg	    $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
1570b3062210Smrg	    absdir="$dir"
1571b3062210Smrg	    notinst_path="$notinst_path $dir"
1572b3062210Smrg	  fi
1573b3062210Smrg	  dir="$absdir"
1574b3062210Smrg	  ;;
1575b3062210Smrg	esac
1576b3062210Smrg	case "$deplibs " in
1577b3062210Smrg	*" -L$dir "*) ;;
1578b3062210Smrg	*)
1579b3062210Smrg	  deplibs="$deplibs -L$dir"
1580b3062210Smrg	  lib_search_path="$lib_search_path $dir"
1581b3062210Smrg	  ;;
1582b3062210Smrg	esac
1583b3062210Smrg	case $host in
1584b3062210Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1585b3062210Smrg	  testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
1586b3062210Smrg	  case :$dllsearchpath: in
1587b3062210Smrg	  *":$dir:"*) ;;
1588b3062210Smrg	  *) dllsearchpath="$dllsearchpath:$dir";;
1589b3062210Smrg	  esac
1590b3062210Smrg	  case :$dllsearchpath: in
1591b3062210Smrg	  *":$testbindir:"*) ;;
1592b3062210Smrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
1593b3062210Smrg	  esac
1594b3062210Smrg	  ;;
1595b3062210Smrg	esac
1596b3062210Smrg	continue
1597b3062210Smrg	;;
159823a0898aSmrg
1599b3062210Smrg      -l*)
1600b3062210Smrg	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
1601b3062210Smrg	  case $host in
1602b3062210Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
1603b3062210Smrg	    # These systems don't actually have a C or math library (as such)
1604b3062210Smrg	    continue
1605b3062210Smrg	    ;;
1606b3062210Smrg	  *-*-os2*)
1607b3062210Smrg	    # These systems don't actually have a C library (as such)
1608b3062210Smrg	    test "X$arg" = "X-lc" && continue
1609b3062210Smrg	    ;;
1610b3062210Smrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
1611b3062210Smrg	    # Do not include libc due to us having libc/libc_r.
1612b3062210Smrg	    test "X$arg" = "X-lc" && continue
1613b3062210Smrg	    ;;
1614b3062210Smrg	  *-*-rhapsody* | *-*-darwin1.[012])
1615b3062210Smrg	    # Rhapsody C and math libraries are in the System framework
1616b3062210Smrg	    deplibs="$deplibs -framework System"
1617b3062210Smrg	    continue
1618b3062210Smrg	    ;;
1619b3062210Smrg	  *-*-sco3.2v5* | *-*-sco5v6*)
1620b3062210Smrg	    # Causes problems with __ctype
1621b3062210Smrg	    test "X$arg" = "X-lc" && continue
1622b3062210Smrg	    ;;
1623b3062210Smrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
1624b3062210Smrg	    # Compiler inserts libc in the correct place for threads to work
1625b3062210Smrg	    test "X$arg" = "X-lc" && continue
1626b3062210Smrg	    ;;
1627b3062210Smrg	  esac
1628b3062210Smrg	elif test "X$arg" = "X-lc_r"; then
1629b3062210Smrg	 case $host in
1630b3062210Smrg	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
1631b3062210Smrg	   # Do not include libc_r directly, use -pthread flag.
1632b3062210Smrg	   continue
1633b3062210Smrg	   ;;
1634b3062210Smrg	 esac
16357f7f5e4eSmrg	fi
1636b3062210Smrg	deplibs="$deplibs $arg"
1637b3062210Smrg	continue
1638b3062210Smrg	;;
163923a0898aSmrg
1640b3062210Smrg      # Tru64 UNIX uses -model [arg] to determine the layout of C++
1641b3062210Smrg      # classes, name mangling, and exception handling.
1642b3062210Smrg      -model)
1643b3062210Smrg	compile_command="$compile_command $arg"
1644b3062210Smrg	compiler_flags="$compiler_flags $arg"
1645b3062210Smrg	finalize_command="$finalize_command $arg"
1646b3062210Smrg	prev=xcompiler
1647b3062210Smrg	continue
164823a0898aSmrg	;;
164923a0898aSmrg
1650b3062210Smrg     -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
1651b3062210Smrg	compiler_flags="$compiler_flags $arg"
1652b3062210Smrg	compile_command="$compile_command $arg"
1653b3062210Smrg	finalize_command="$finalize_command $arg"
1654b3062210Smrg	continue
165523a0898aSmrg	;;
165623a0898aSmrg
1657b3062210Smrg      -multi_module)
1658b3062210Smrg	single_module="${wl}-multi_module"
165923a0898aSmrg	continue
166023a0898aSmrg	;;
166123a0898aSmrg
1662b3062210Smrg      -module)
1663b3062210Smrg	module=yes
1664b3062210Smrg	continue
1665b3062210Smrg	;;
166623a0898aSmrg
1667b3062210Smrg      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
1668b3062210Smrg      # -r[0-9][0-9]* specifies the processor on the SGI compiler
1669b3062210Smrg      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
1670b3062210Smrg      # +DA*, +DD* enable 64-bit mode on the HP compiler
1671b3062210Smrg      # -q* pass through compiler args for the IBM compiler
1672b3062210Smrg      # -m* pass through architecture-specific compiler args for GCC
1673b3062210Smrg      # -m*, -t[45]*, -txscale* pass through architecture-specific
1674b3062210Smrg      # compiler args for GCC
1675b3062210Smrg      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
1676b3062210Smrg      # -F/path gives path to uninstalled frameworks, gcc on darwin
1677b3062210Smrg      # @file GCC response files
1678b3062210Smrg      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
1679b3062210Smrg      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
168023a0898aSmrg
1681b3062210Smrg	# Unknown arguments in both finalize_command and compile_command need
1682b3062210Smrg	# to be aesthetically quoted because they are evaled later.
1683b3062210Smrg	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1684b3062210Smrg	case $arg in
1685b3062210Smrg	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1686b3062210Smrg	  arg="\"$arg\""
1687b3062210Smrg	  ;;
1688b3062210Smrg	esac
1689b3062210Smrg        compile_command="$compile_command $arg"
1690b3062210Smrg        finalize_command="$finalize_command $arg"
1691b3062210Smrg        compiler_flags="$compiler_flags $arg"
1692b3062210Smrg        continue
1693b3062210Smrg        ;;
169423a0898aSmrg
1695b3062210Smrg      -shrext)
1696b3062210Smrg	prev=shrext
1697b3062210Smrg	continue
16987f7f5e4eSmrg	;;
169923a0898aSmrg
1700b3062210Smrg      -no-fast-install)
1701b3062210Smrg	fast_install=no
1702b3062210Smrg	continue
1703b3062210Smrg	;;
170423a0898aSmrg
1705b3062210Smrg      -no-install)
1706b3062210Smrg	case $host in
1707b3062210Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*)
1708b3062210Smrg	  # The PATH hackery in wrapper scripts is required on Windows
1709b3062210Smrg	  # and Darwin in order for the loader to find any dlls it needs.
1710b3062210Smrg	  $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
1711b3062210Smrg	  $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
1712b3062210Smrg	  fast_install=no
1713b3062210Smrg	  ;;
1714b3062210Smrg	*) no_install=yes ;;
1715b3062210Smrg	esac
1716b3062210Smrg	continue
1717b3062210Smrg	;;
171823a0898aSmrg
1719b3062210Smrg      -no-undefined)
1720b3062210Smrg	allow_undefined=no
1721b3062210Smrg	continue
1722b3062210Smrg	;;
17237f7f5e4eSmrg
1724b3062210Smrg      -objectlist)
1725b3062210Smrg	prev=objectlist
1726b3062210Smrg	continue
17277f7f5e4eSmrg	;;
17287f7f5e4eSmrg
1729b3062210Smrg      -o) prev=output ;;
17307f7f5e4eSmrg
1731b3062210Smrg      -precious-files-regex)
1732b3062210Smrg	prev=precious_regex
1733b3062210Smrg	continue
1734b3062210Smrg	;;
17357f7f5e4eSmrg
1736b3062210Smrg      -release)
1737b3062210Smrg	prev=release
1738b3062210Smrg	continue
1739b3062210Smrg	;;
17407f7f5e4eSmrg
1741b3062210Smrg      -rpath)
1742b3062210Smrg	prev=rpath
1743b3062210Smrg	continue
1744b3062210Smrg	;;
17457f7f5e4eSmrg
1746b3062210Smrg      -R)
1747b3062210Smrg	prev=xrpath
17487f7f5e4eSmrg	continue
1749b3062210Smrg	;;
17507f7f5e4eSmrg
1751b3062210Smrg      -R*)
1752b3062210Smrg	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
1753b3062210Smrg	# We need an absolute path.
1754b3062210Smrg	case $dir in
1755b3062210Smrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
1756b3062210Smrg	*)
1757b3062210Smrg	  $echo "$modename: only absolute run-paths are allowed" 1>&2
1758b3062210Smrg	  exit $EXIT_FAILURE
1759b3062210Smrg	  ;;
1760b3062210Smrg	esac
1761b3062210Smrg	case "$xrpath " in
1762b3062210Smrg	*" $dir "*) ;;
1763b3062210Smrg	*) xrpath="$xrpath $dir" ;;
17647f7f5e4eSmrg	esac
1765b3062210Smrg	continue
17667f7f5e4eSmrg	;;
1767b3062210Smrg
1768b3062210Smrg      -static | -static-libtool-libs)
1769b3062210Smrg	# The effects of -static are defined in a previous loop.
1770b3062210Smrg	# We used to do the same as -all-static on platforms that
1771b3062210Smrg	# didn't have a PIC flag, but the assumption that the effects
1772b3062210Smrg	# would be equivalent was wrong.  It would break on at least
1773b3062210Smrg	# Digital Unix and AIX.
1774b3062210Smrg	continue
17757f7f5e4eSmrg	;;
1776b3062210Smrg
1777b3062210Smrg      -thread-safe)
1778b3062210Smrg	thread_safe=yes
17797f7f5e4eSmrg	continue
17807f7f5e4eSmrg	;;
1781b3062210Smrg
1782b3062210Smrg      -version-info)
1783b3062210Smrg	prev=vinfo
1784b3062210Smrg	continue
17857f7f5e4eSmrg	;;
1786b3062210Smrg      -version-number)
1787b3062210Smrg	prev=vinfo
1788b3062210Smrg	vinfo_number=yes
1789b3062210Smrg	continue
179023a0898aSmrg	;;
179123a0898aSmrg
1792b3062210Smrg      -Wc,*)
1793b3062210Smrg	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
1794b3062210Smrg	arg=
1795b3062210Smrg	save_ifs="$IFS"; IFS=','
1796b3062210Smrg	for flag in $args; do
1797b3062210Smrg	  IFS="$save_ifs"
1798b3062210Smrg	  case $flag in
1799b3062210Smrg	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1800b3062210Smrg	    flag="\"$flag\""
1801b3062210Smrg	    ;;
1802b3062210Smrg	  esac
1803b3062210Smrg	  arg="$arg $wl$flag"
1804b3062210Smrg	  compiler_flags="$compiler_flags $flag"
1805b3062210Smrg	done
1806b3062210Smrg	IFS="$save_ifs"
1807b3062210Smrg	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1808b3062210Smrg	;;
180923a0898aSmrg
1810b3062210Smrg      -Wl,*)
1811b3062210Smrg	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
1812b3062210Smrg	arg=
1813b3062210Smrg	save_ifs="$IFS"; IFS=','
1814b3062210Smrg	for flag in $args; do
1815b3062210Smrg	  IFS="$save_ifs"
1816b3062210Smrg	  case $flag in
1817b3062210Smrg	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1818b3062210Smrg	    flag="\"$flag\""
1819b3062210Smrg	    ;;
1820b3062210Smrg	  esac
1821b3062210Smrg	  arg="$arg $wl$flag"
1822b3062210Smrg	  compiler_flags="$compiler_flags $wl$flag"
1823b3062210Smrg	  linker_flags="$linker_flags $flag"
1824b3062210Smrg	done
1825b3062210Smrg	IFS="$save_ifs"
1826b3062210Smrg	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1827b3062210Smrg	;;
182823a0898aSmrg
1829b3062210Smrg      -Xcompiler)
1830b3062210Smrg	prev=xcompiler
1831b3062210Smrg	continue
1832b3062210Smrg	;;
183323a0898aSmrg
1834b3062210Smrg      -Xlinker)
1835b3062210Smrg	prev=xlinker
1836b3062210Smrg	continue
1837b3062210Smrg	;;
183823a0898aSmrg
1839b3062210Smrg      -XCClinker)
1840b3062210Smrg	prev=xcclinker
1841b3062210Smrg	continue
1842b3062210Smrg	;;
184323a0898aSmrg
1844b3062210Smrg      # Some other compiler flag.
1845b3062210Smrg      -* | +*)
1846b3062210Smrg	# Unknown arguments in both finalize_command and compile_command need
1847b3062210Smrg	# to be aesthetically quoted because they are evaled later.
1848b3062210Smrg	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1849b3062210Smrg	case $arg in
1850b3062210Smrg	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1851b3062210Smrg	  arg="\"$arg\""
18527f7f5e4eSmrg	  ;;
18537f7f5e4eSmrg	esac
1854b3062210Smrg	;;
185523a0898aSmrg
1856b3062210Smrg      *.$objext)
1857b3062210Smrg	# A standard object.
1858b3062210Smrg	objs="$objs $arg"
18597f7f5e4eSmrg	;;
18607f7f5e4eSmrg
1861b3062210Smrg      *.lo)
1862b3062210Smrg	# A libtool-controlled object.
18637f7f5e4eSmrg
1864b3062210Smrg	# Check to see that this really is a libtool object.
1865b3062210Smrg	if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1866b3062210Smrg	  pic_object=
1867b3062210Smrg	  non_pic_object=
18687f7f5e4eSmrg
1869b3062210Smrg	  # Read the .lo file
1870b3062210Smrg	  # If there is no directory component, then add one.
1871b3062210Smrg	  case $arg in
1872b3062210Smrg	  */* | *\\*) . $arg ;;
1873b3062210Smrg	  *) . ./$arg ;;
18747f7f5e4eSmrg	  esac
18757f7f5e4eSmrg
1876b3062210Smrg	  if test -z "$pic_object" || \
1877b3062210Smrg	     test -z "$non_pic_object" ||
1878b3062210Smrg	     test "$pic_object" = none && \
1879b3062210Smrg	     test "$non_pic_object" = none; then
1880b3062210Smrg	    $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1881b3062210Smrg	    exit $EXIT_FAILURE
1882b3062210Smrg	  fi
18837f7f5e4eSmrg
1884b3062210Smrg	  # Extract subdirectory from the argument.
1885b3062210Smrg	  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1886b3062210Smrg	  if test "X$xdir" = "X$arg"; then
1887b3062210Smrg	    xdir=
1888b3062210Smrg 	  else
1889b3062210Smrg	    xdir="$xdir/"
18907f7f5e4eSmrg	  fi
18917f7f5e4eSmrg
1892b3062210Smrg	  if test "$pic_object" != none; then
1893b3062210Smrg	    # Prepend the subdirectory the object is found in.
1894b3062210Smrg	    pic_object="$xdir$pic_object"
18957f7f5e4eSmrg
1896b3062210Smrg	    if test "$prev" = dlfiles; then
1897b3062210Smrg	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1898b3062210Smrg		dlfiles="$dlfiles $pic_object"
1899b3062210Smrg		prev=
1900b3062210Smrg		continue
1901b3062210Smrg	      else
1902b3062210Smrg		# If libtool objects are unsupported, then we need to preload.
1903b3062210Smrg		prev=dlprefiles
1904b3062210Smrg	      fi
1905b3062210Smrg	    fi
19067f7f5e4eSmrg
1907b3062210Smrg	    # CHECK ME:  I think I busted this.  -Ossama
1908b3062210Smrg	    if test "$prev" = dlprefiles; then
1909b3062210Smrg	      # Preload the old-style object.
1910b3062210Smrg	      dlprefiles="$dlprefiles $pic_object"
1911b3062210Smrg	      prev=
1912b3062210Smrg	    fi
19137f7f5e4eSmrg
1914b3062210Smrg	    # A PIC object.
1915b3062210Smrg	    libobjs="$libobjs $pic_object"
1916b3062210Smrg	    arg="$pic_object"
191723a0898aSmrg	  fi
19187f7f5e4eSmrg
1919b3062210Smrg	  # Non-PIC object.
1920b3062210Smrg	  if test "$non_pic_object" != none; then
1921b3062210Smrg	    # Prepend the subdirectory the object is found in.
1922b3062210Smrg	    non_pic_object="$xdir$non_pic_object"
1923b3062210Smrg
1924b3062210Smrg	    # A standard non-PIC object
1925b3062210Smrg	    non_pic_objects="$non_pic_objects $non_pic_object"
1926b3062210Smrg	    if test -z "$pic_object" || test "$pic_object" = none ; then
1927b3062210Smrg	      arg="$non_pic_object"
1928b3062210Smrg	    fi
1929b3062210Smrg	  else
1930b3062210Smrg	    # If the PIC object exists, use it instead.
1931b3062210Smrg	    # $xdir was prepended to $pic_object above.
1932b3062210Smrg	    non_pic_object="$pic_object"
1933b3062210Smrg	    non_pic_objects="$non_pic_objects $non_pic_object"
193423a0898aSmrg	  fi
1935b3062210Smrg	else
1936b3062210Smrg	  # Only an error if not doing a dry-run.
1937b3062210Smrg	  if test -z "$run"; then
1938b3062210Smrg	    $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1939b3062210Smrg	    exit $EXIT_FAILURE
1940b3062210Smrg	  else
1941b3062210Smrg	    # Dry-run case.
194223a0898aSmrg
1943b3062210Smrg	    # Extract subdirectory from the argument.
1944b3062210Smrg	    xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1945b3062210Smrg	    if test "X$xdir" = "X$arg"; then
1946b3062210Smrg	      xdir=
1947b3062210Smrg	    else
1948b3062210Smrg	      xdir="$xdir/"
1949b3062210Smrg	    fi
195023a0898aSmrg
1951b3062210Smrg	    pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1952b3062210Smrg	    non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1953b3062210Smrg	    libobjs="$libobjs $pic_object"
1954b3062210Smrg	    non_pic_objects="$non_pic_objects $non_pic_object"
1955b3062210Smrg	  fi
1956b3062210Smrg	fi
1957b3062210Smrg	;;
195823a0898aSmrg
1959b3062210Smrg      *.$libext)
1960b3062210Smrg	# An archive.
1961b3062210Smrg	deplibs="$deplibs $arg"
1962b3062210Smrg	old_deplibs="$old_deplibs $arg"
1963b3062210Smrg	continue
19647f7f5e4eSmrg	;;
196523a0898aSmrg
1966b3062210Smrg      *.la)
1967b3062210Smrg	# A libtool-controlled library.
196823a0898aSmrg
1969b3062210Smrg	if test "$prev" = dlfiles; then
1970b3062210Smrg	  # This library was specified with -dlopen.
1971b3062210Smrg	  dlfiles="$dlfiles $arg"
1972b3062210Smrg	  prev=
1973b3062210Smrg	elif test "$prev" = dlprefiles; then
1974b3062210Smrg	  # The library was specified with -dlpreopen.
1975b3062210Smrg	  dlprefiles="$dlprefiles $arg"
1976b3062210Smrg	  prev=
19777f7f5e4eSmrg	else
1978b3062210Smrg	  deplibs="$deplibs $arg"
197923a0898aSmrg	fi
1980b3062210Smrg	continue
1981b3062210Smrg	;;
198223a0898aSmrg
1983b3062210Smrg      # Some other compiler argument.
1984b3062210Smrg      *)
1985b3062210Smrg	# Unknown arguments in both finalize_command and compile_command need
1986b3062210Smrg	# to be aesthetically quoted because they are evaled later.
1987b3062210Smrg	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1988b3062210Smrg	case $arg in
1989b3062210Smrg	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1990b3062210Smrg	  arg="\"$arg\""
19917f7f5e4eSmrg	  ;;
19927f7f5e4eSmrg	esac
19937f7f5e4eSmrg	;;
1994b3062210Smrg      esac # arg
199523a0898aSmrg
1996b3062210Smrg      # Now actually substitute the argument into the commands.
1997b3062210Smrg      if test -n "$arg"; then
1998b3062210Smrg	compile_command="$compile_command $arg"
1999b3062210Smrg	finalize_command="$finalize_command $arg"
2000b3062210Smrg      fi
2001b3062210Smrg    done # argument parsing loop
200223a0898aSmrg
2003b3062210Smrg    if test -n "$prev"; then
2004b3062210Smrg      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
2005b3062210Smrg      $echo "$help" 1>&2
2006b3062210Smrg      exit $EXIT_FAILURE
2007b3062210Smrg    fi
20087f7f5e4eSmrg
2009b3062210Smrg    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
2010b3062210Smrg      eval arg=\"$export_dynamic_flag_spec\"
2011b3062210Smrg      compile_command="$compile_command $arg"
2012b3062210Smrg      finalize_command="$finalize_command $arg"
2013b3062210Smrg    fi
20147f7f5e4eSmrg
2015b3062210Smrg    oldlibs=
2016b3062210Smrg    # calculate the name of the file, without its directory
2017b3062210Smrg    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
2018b3062210Smrg    libobjs_save="$libobjs"
20197f7f5e4eSmrg
2020b3062210Smrg    if test -n "$shlibpath_var"; then
2021b3062210Smrg      # get the directories listed in $shlibpath_var
2022b3062210Smrg      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
2023b3062210Smrg    else
2024b3062210Smrg      shlib_search_path=
2025b3062210Smrg    fi
2026b3062210Smrg    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
2027b3062210Smrg    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
20287f7f5e4eSmrg
2029b3062210Smrg    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
2030b3062210Smrg    if test "X$output_objdir" = "X$output"; then
2031b3062210Smrg      output_objdir="$objdir"
20327f7f5e4eSmrg    else
2033b3062210Smrg      output_objdir="$output_objdir/$objdir"
20347f7f5e4eSmrg    fi
2035b3062210Smrg    # Create the object directory.
2036b3062210Smrg    if test ! -d "$output_objdir"; then
2037b3062210Smrg      $show "$mkdir $output_objdir"
2038b3062210Smrg      $run $mkdir $output_objdir
2039b3062210Smrg      exit_status=$?
2040b3062210Smrg      if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
2041b3062210Smrg	exit $exit_status
20427f7f5e4eSmrg      fi
20437f7f5e4eSmrg    fi
20447f7f5e4eSmrg
2045b3062210Smrg    # Determine the type of output
2046b3062210Smrg    case $output in
2047b3062210Smrg    "")
2048b3062210Smrg      $echo "$modename: you must specify an output file" 1>&2
2049b3062210Smrg      $echo "$help" 1>&2
2050b3062210Smrg      exit $EXIT_FAILURE
2051b3062210Smrg      ;;
2052b3062210Smrg    *.$libext) linkmode=oldlib ;;
2053b3062210Smrg    *.lo | *.$objext) linkmode=obj ;;
2054b3062210Smrg    *.la) linkmode=lib ;;
2055b3062210Smrg    *) linkmode=prog ;; # Anything else should be a program.
2056b3062210Smrg    esac
205723a0898aSmrg
2058b3062210Smrg    case $host in
2059b3062210Smrg    *cygwin* | *mingw* | *pw32*)
2060b3062210Smrg      # don't eliminate duplications in $postdeps and $predeps
2061b3062210Smrg      duplicate_compiler_generated_deps=yes
2062b3062210Smrg      ;;
2063b3062210Smrg    *)
2064b3062210Smrg      duplicate_compiler_generated_deps=$duplicate_deps
2065b3062210Smrg      ;;
2066b3062210Smrg    esac
2067b3062210Smrg    specialdeplibs=
206823a0898aSmrg
2069b3062210Smrg    libs=
2070b3062210Smrg    # Find all interdependent deplibs by searching for libraries
2071b3062210Smrg    # that are linked more than once (e.g. -la -lb -la)
2072b3062210Smrg    for deplib in $deplibs; do
2073b3062210Smrg      if test "X$duplicate_deps" = "Xyes" ; then
2074b3062210Smrg	case "$libs " in
2075b3062210Smrg	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2076b3062210Smrg	esac
2077b3062210Smrg      fi
2078b3062210Smrg      libs="$libs $deplib"
2079b3062210Smrg    done
208023a0898aSmrg
2081b3062210Smrg    if test "$linkmode" = lib; then
2082b3062210Smrg      libs="$predeps $libs $compiler_lib_search_path $postdeps"
208323a0898aSmrg
2084b3062210Smrg      # Compute libraries that are listed more than once in $predeps
2085b3062210Smrg      # $postdeps and mark them as special (i.e., whose duplicates are
2086b3062210Smrg      # not to be eliminated).
2087b3062210Smrg      pre_post_deps=
2088b3062210Smrg      if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
2089b3062210Smrg	for pre_post_dep in $predeps $postdeps; do
2090b3062210Smrg	  case "$pre_post_deps " in
2091b3062210Smrg	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
20927f7f5e4eSmrg	  esac
2093b3062210Smrg	  pre_post_deps="$pre_post_deps $pre_post_dep"
2094b3062210Smrg	done
2095b3062210Smrg      fi
2096b3062210Smrg      pre_post_deps=
2097b3062210Smrg    fi
209823a0898aSmrg
2099b3062210Smrg    deplibs=
2100b3062210Smrg    newdependency_libs=
2101b3062210Smrg    newlib_search_path=
2102b3062210Smrg    need_relink=no # whether we're linking any uninstalled libtool libraries
2103b3062210Smrg    notinst_deplibs= # not-installed libtool libraries
2104b3062210Smrg    case $linkmode in
2105b3062210Smrg    lib)
2106b3062210Smrg	passes="conv link"
2107b3062210Smrg	for file in $dlfiles $dlprefiles; do
2108b3062210Smrg	  case $file in
2109b3062210Smrg	  *.la) ;;
21107f7f5e4eSmrg	  *)
2111b3062210Smrg	    $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
2112b3062210Smrg	    exit $EXIT_FAILURE
21137f7f5e4eSmrg	    ;;
21147f7f5e4eSmrg	  esac
21157f7f5e4eSmrg	done
21167f7f5e4eSmrg	;;
2117b3062210Smrg    prog)
2118b3062210Smrg	compile_deplibs=
2119b3062210Smrg	finalize_deplibs=
2120b3062210Smrg	alldeplibs=no
2121b3062210Smrg	newdlfiles=
2122b3062210Smrg	newdlprefiles=
2123b3062210Smrg	passes="conv scan dlopen dlpreopen link"
2124b3062210Smrg	;;
2125b3062210Smrg    *)  passes="conv"
21267f7f5e4eSmrg	;;
21277f7f5e4eSmrg    esac
2128b3062210Smrg    for pass in $passes; do
2129b3062210Smrg      if test "$linkmode,$pass" = "lib,link" ||
2130b3062210Smrg	 test "$linkmode,$pass" = "prog,scan"; then
2131b3062210Smrg	libs="$deplibs"
2132b3062210Smrg	deplibs=
2133b3062210Smrg      fi
2134b3062210Smrg      if test "$linkmode" = prog; then
2135b3062210Smrg	case $pass in
2136b3062210Smrg	dlopen) libs="$dlfiles" ;;
2137b3062210Smrg	dlpreopen) libs="$dlprefiles" ;;
2138b3062210Smrg	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
2139b3062210Smrg	esac
2140b3062210Smrg      fi
2141b3062210Smrg      if test "$pass" = dlopen; then
2142b3062210Smrg	# Collect dlpreopened libraries
2143b3062210Smrg	save_deplibs="$deplibs"
2144b3062210Smrg	deplibs=
2145b3062210Smrg      fi
2146b3062210Smrg      for deplib in $libs; do
2147b3062210Smrg	lib=
2148b3062210Smrg	found=no
2149b3062210Smrg	case $deplib in
2150b3062210Smrg	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
2151b3062210Smrg	  if test "$linkmode,$pass" = "prog,link"; then
2152b3062210Smrg	    compile_deplibs="$deplib $compile_deplibs"
2153b3062210Smrg	    finalize_deplibs="$deplib $finalize_deplibs"
2154b3062210Smrg	  else
2155b3062210Smrg	    compiler_flags="$compiler_flags $deplib"
2156b3062210Smrg	  fi
2157b3062210Smrg	  continue
2158b3062210Smrg	  ;;
2159b3062210Smrg	-l*)
2160b3062210Smrg	  if test "$linkmode" != lib && test "$linkmode" != prog; then
2161b3062210Smrg	    $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
2162b3062210Smrg	    continue
2163b3062210Smrg	  fi
2164b3062210Smrg	  name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
2165b3062210Smrg	  if test "$linkmode" = lib; then
2166b3062210Smrg	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
2167b3062210Smrg	  else
2168b3062210Smrg	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
2169b3062210Smrg	  fi
2170b3062210Smrg	  for searchdir in $searchdirs; do
2171b3062210Smrg	    for search_ext in .la $std_shrext .so .a; do
2172b3062210Smrg	      # Search the libtool library
2173b3062210Smrg	      lib="$searchdir/lib${name}${search_ext}"
2174b3062210Smrg	      if test -f "$lib"; then
2175b3062210Smrg		if test "$search_ext" = ".la"; then
2176b3062210Smrg		  found=yes
2177b3062210Smrg		else
2178b3062210Smrg		  found=no
2179b3062210Smrg		fi
2180b3062210Smrg		break 2
2181b3062210Smrg	      fi
2182b3062210Smrg	    done
2183b3062210Smrg	  done
2184b3062210Smrg	  if test "$found" != yes; then
2185b3062210Smrg	    # deplib doesn't seem to be a libtool library
2186b3062210Smrg	    if test "$linkmode,$pass" = "prog,link"; then
2187b3062210Smrg	      compile_deplibs="$deplib $compile_deplibs"
2188b3062210Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
2189b3062210Smrg	    else
2190b3062210Smrg	      deplibs="$deplib $deplibs"
2191b3062210Smrg	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
2192b3062210Smrg	    fi
2193b3062210Smrg	    continue
2194b3062210Smrg	  else # deplib is a libtool library
2195b3062210Smrg	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
2196b3062210Smrg	    # We need to do some special things here, and not later.
2197b3062210Smrg	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
2198b3062210Smrg	      case " $predeps $postdeps " in
2199b3062210Smrg	      *" $deplib "*)
2200b3062210Smrg		if (${SED} -e '2q' $lib |
2201b3062210Smrg                    grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
2202b3062210Smrg		  library_names=
2203b3062210Smrg		  old_library=
2204b3062210Smrg		  case $lib in
2205b3062210Smrg		  */* | *\\*) . $lib ;;
2206b3062210Smrg		  *) . ./$lib ;;
2207b3062210Smrg		  esac
2208b3062210Smrg		  for l in $old_library $library_names; do
2209b3062210Smrg		    ll="$l"
2210b3062210Smrg		  done
2211b3062210Smrg		  if test "X$ll" = "X$old_library" ; then # only static version available
2212b3062210Smrg		    found=no
2213b3062210Smrg		    ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
2214b3062210Smrg		    test "X$ladir" = "X$lib" && ladir="."
2215b3062210Smrg		    lib=$ladir/$old_library
2216b3062210Smrg		    if test "$linkmode,$pass" = "prog,link"; then
2217b3062210Smrg		      compile_deplibs="$deplib $compile_deplibs"
2218b3062210Smrg		      finalize_deplibs="$deplib $finalize_deplibs"
2219b3062210Smrg		    else
2220b3062210Smrg		      deplibs="$deplib $deplibs"
2221b3062210Smrg		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
2222b3062210Smrg		    fi
2223b3062210Smrg		    continue
2224b3062210Smrg		  fi
2225b3062210Smrg		fi
2226b3062210Smrg	        ;;
2227b3062210Smrg	      *) ;;
2228b3062210Smrg	      esac
2229b3062210Smrg	    fi
2230b3062210Smrg	  fi
2231b3062210Smrg	  ;; # -l
2232b3062210Smrg	-L*)
2233b3062210Smrg	  case $linkmode in
2234b3062210Smrg	  lib)
2235b3062210Smrg	    deplibs="$deplib $deplibs"
2236b3062210Smrg	    test "$pass" = conv && continue
2237b3062210Smrg	    newdependency_libs="$deplib $newdependency_libs"
2238b3062210Smrg	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
2239b3062210Smrg	    ;;
2240b3062210Smrg	  prog)
2241b3062210Smrg	    if test "$pass" = conv; then
2242b3062210Smrg	      deplibs="$deplib $deplibs"
2243b3062210Smrg	      continue
2244b3062210Smrg	    fi
2245b3062210Smrg	    if test "$pass" = scan; then
2246b3062210Smrg	      deplibs="$deplib $deplibs"
2247b3062210Smrg	    else
2248b3062210Smrg	      compile_deplibs="$deplib $compile_deplibs"
2249b3062210Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
2250b3062210Smrg	    fi
2251b3062210Smrg	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
2252b3062210Smrg	    ;;
2253b3062210Smrg	  *)
2254b3062210Smrg	    $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
2255b3062210Smrg	    ;;
2256b3062210Smrg	  esac # linkmode
2257b3062210Smrg	  continue
2258b3062210Smrg	  ;; # -L
2259b3062210Smrg	-R*)
2260b3062210Smrg	  if test "$pass" = link; then
2261b3062210Smrg	    dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
2262b3062210Smrg	    # Make sure the xrpath contains only unique directories.
2263b3062210Smrg	    case "$xrpath " in
2264b3062210Smrg	    *" $dir "*) ;;
2265b3062210Smrg	    *) xrpath="$xrpath $dir" ;;
2266b3062210Smrg	    esac
2267b3062210Smrg	  fi
2268b3062210Smrg	  deplibs="$deplib $deplibs"
2269b3062210Smrg	  continue
2270b3062210Smrg	  ;;
2271b3062210Smrg	*.la) lib="$deplib" ;;
2272b3062210Smrg	*.$libext)
2273b3062210Smrg	  if test "$pass" = conv; then
2274b3062210Smrg	    deplibs="$deplib $deplibs"
2275b3062210Smrg	    continue
2276b3062210Smrg	  fi
2277b3062210Smrg	  case $linkmode in
2278b3062210Smrg	  lib)
2279b3062210Smrg	    valid_a_lib=no
2280b3062210Smrg	    case $deplibs_check_method in
2281b3062210Smrg	      match_pattern*)
2282b3062210Smrg		set dummy $deplibs_check_method
2283b3062210Smrg	        match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
2284b3062210Smrg		if eval $echo \"$deplib\" 2>/dev/null \
2285b3062210Smrg		    | $SED 10q \
2286b3062210Smrg		    | $EGREP "$match_pattern_regex" > /dev/null; then
2287b3062210Smrg		  valid_a_lib=yes
2288b3062210Smrg		fi
2289b3062210Smrg		;;
2290b3062210Smrg	      pass_all)
2291b3062210Smrg		valid_a_lib=yes
2292b3062210Smrg		;;
2293b3062210Smrg            esac
2294b3062210Smrg	    if test "$valid_a_lib" != yes; then
2295b3062210Smrg	      $echo
2296b3062210Smrg	      $echo "*** Warning: Trying to link with static lib archive $deplib."
2297b3062210Smrg	      $echo "*** I have the capability to make that library automatically link in when"
2298b3062210Smrg	      $echo "*** you link to this library.  But I can only do this if you have a"
2299b3062210Smrg	      $echo "*** shared version of the library, which you do not appear to have"
2300b3062210Smrg	      $echo "*** because the file extensions .$libext of this argument makes me believe"
2301b3062210Smrg	      $echo "*** that it is just a static archive that I should not used here."
2302b3062210Smrg	    else
2303b3062210Smrg	      $echo
2304b3062210Smrg	      $echo "*** Warning: Linking the shared library $output against the"
2305b3062210Smrg	      $echo "*** static library $deplib is not portable!"
2306b3062210Smrg	      deplibs="$deplib $deplibs"
2307b3062210Smrg	    fi
2308b3062210Smrg	    continue
2309b3062210Smrg	    ;;
2310b3062210Smrg	  prog)
2311b3062210Smrg	    if test "$pass" != link; then
2312b3062210Smrg	      deplibs="$deplib $deplibs"
2313b3062210Smrg	    else
2314b3062210Smrg	      compile_deplibs="$deplib $compile_deplibs"
2315b3062210Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
2316b3062210Smrg	    fi
2317b3062210Smrg	    continue
2318b3062210Smrg	    ;;
2319b3062210Smrg	  esac # linkmode
2320b3062210Smrg	  ;; # *.$libext
2321b3062210Smrg	*.lo | *.$objext)
2322b3062210Smrg	  if test "$pass" = conv; then
2323b3062210Smrg	    deplibs="$deplib $deplibs"
2324b3062210Smrg	  elif test "$linkmode" = prog; then
2325b3062210Smrg	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
2326b3062210Smrg	      # If there is no dlopen support or we're linking statically,
2327b3062210Smrg	      # we need to preload.
2328b3062210Smrg	      newdlprefiles="$newdlprefiles $deplib"
2329b3062210Smrg	      compile_deplibs="$deplib $compile_deplibs"
2330b3062210Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
2331b3062210Smrg	    else
2332b3062210Smrg	      newdlfiles="$newdlfiles $deplib"
2333b3062210Smrg	    fi
2334b3062210Smrg	  fi
2335b3062210Smrg	  continue
2336b3062210Smrg	  ;;
2337b3062210Smrg	%DEPLIBS%)
2338b3062210Smrg	  alldeplibs=yes
2339b3062210Smrg	  continue
2340b3062210Smrg	  ;;
2341b3062210Smrg	esac # case $deplib
2342b3062210Smrg	if test "$found" = yes || test -f "$lib"; then :
2343b3062210Smrg	else
2344b3062210Smrg	  $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
2345b3062210Smrg	  exit $EXIT_FAILURE
2346b3062210Smrg	fi
234723a0898aSmrg
2348b3062210Smrg	# Check to see that this really is a libtool archive.
2349b3062210Smrg	if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
2350b3062210Smrg	else
2351b3062210Smrg	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
2352b3062210Smrg	  exit $EXIT_FAILURE
2353b3062210Smrg	fi
235423a0898aSmrg
2355b3062210Smrg	ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
2356b3062210Smrg	test "X$ladir" = "X$lib" && ladir="."
235723a0898aSmrg
2358b3062210Smrg	dlname=
2359b3062210Smrg	dlopen=
2360b3062210Smrg	dlpreopen=
2361b3062210Smrg	libdir=
2362b3062210Smrg	library_names=
2363b3062210Smrg	old_library=
2364b3062210Smrg	# If the library was installed with an old release of libtool,
2365b3062210Smrg	# it will not redefine variables installed, or shouldnotlink
2366b3062210Smrg	installed=yes
2367b3062210Smrg	shouldnotlink=no
2368b3062210Smrg	avoidtemprpath=
236923a0898aSmrg
237023a0898aSmrg
2371b3062210Smrg	# Read the .la file
2372b3062210Smrg	case $lib in
2373b3062210Smrg	*/* | *\\*) . $lib ;;
2374b3062210Smrg	*) . ./$lib ;;
23757f7f5e4eSmrg	esac
237623a0898aSmrg
2377b3062210Smrg	if test "$linkmode,$pass" = "lib,link" ||
2378b3062210Smrg	   test "$linkmode,$pass" = "prog,scan" ||
2379b3062210Smrg	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
2380b3062210Smrg	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
2381b3062210Smrg	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
2382b3062210Smrg	fi
238323a0898aSmrg
2384b3062210Smrg	if test "$pass" = conv; then
2385b3062210Smrg	  # Only check for convenience libraries
2386b3062210Smrg	  deplibs="$lib $deplibs"
2387b3062210Smrg	  if test -z "$libdir"; then
2388b3062210Smrg	    if test -z "$old_library"; then
2389b3062210Smrg	      $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2390b3062210Smrg	      exit $EXIT_FAILURE
2391b3062210Smrg	    fi
2392b3062210Smrg	    # It is a libtool convenience library, so add in its objects.
2393b3062210Smrg	    convenience="$convenience $ladir/$objdir/$old_library"
2394b3062210Smrg	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
2395b3062210Smrg	    tmp_libs=
2396b3062210Smrg	    for deplib in $dependency_libs; do
2397b3062210Smrg	      deplibs="$deplib $deplibs"
2398b3062210Smrg              if test "X$duplicate_deps" = "Xyes" ; then
2399b3062210Smrg	        case "$tmp_libs " in
2400b3062210Smrg	        *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2401b3062210Smrg	        esac
2402b3062210Smrg              fi
2403b3062210Smrg	      tmp_libs="$tmp_libs $deplib"
2404b3062210Smrg	    done
2405b3062210Smrg	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
2406b3062210Smrg	    $echo "$modename: \`$lib' is not a convenience library" 1>&2
2407b3062210Smrg	    exit $EXIT_FAILURE
2408b3062210Smrg	  fi
2409b3062210Smrg	  continue
2410b3062210Smrg	fi # $pass = conv
241123a0898aSmrg
241223a0898aSmrg
2413b3062210Smrg	# Get the name of the library we link against.
2414b3062210Smrg	linklib=
2415b3062210Smrg	for l in $old_library $library_names; do
2416b3062210Smrg	  linklib="$l"
2417b3062210Smrg	done
2418b3062210Smrg	if test -z "$linklib"; then
2419b3062210Smrg	  $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2420b3062210Smrg	  exit $EXIT_FAILURE
242123a0898aSmrg	fi
242223a0898aSmrg
2423b3062210Smrg	# This library was specified with -dlopen.
2424b3062210Smrg	if test "$pass" = dlopen; then
2425b3062210Smrg	  if test -z "$libdir"; then
2426b3062210Smrg	    $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
2427b3062210Smrg	    exit $EXIT_FAILURE
2428b3062210Smrg	  fi
2429b3062210Smrg	  if test -z "$dlname" ||
2430b3062210Smrg	     test "$dlopen_support" != yes ||
2431b3062210Smrg	     test "$build_libtool_libs" = no; then
2432b3062210Smrg	    # If there is no dlname, no dlopen support or we're linking
2433b3062210Smrg	    # statically, we need to preload.  We also need to preload any
2434b3062210Smrg	    # dependent libraries so libltdl's deplib preloader doesn't
2435b3062210Smrg	    # bomb out in the load deplibs phase.
2436b3062210Smrg	    dlprefiles="$dlprefiles $lib $dependency_libs"
2437b3062210Smrg	  else
2438b3062210Smrg	    newdlfiles="$newdlfiles $lib"
2439b3062210Smrg	  fi
2440b3062210Smrg	  continue
2441b3062210Smrg	fi # $pass = dlopen
244223a0898aSmrg
2443b3062210Smrg	# We need an absolute path.
2444b3062210Smrg	case $ladir in
2445b3062210Smrg	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
2446b3062210Smrg	*)
2447b3062210Smrg	  abs_ladir=`cd "$ladir" && pwd`
2448b3062210Smrg	  if test -z "$abs_ladir"; then
2449b3062210Smrg	    $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
2450b3062210Smrg	    $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
2451b3062210Smrg	    abs_ladir="$ladir"
2452b3062210Smrg	  fi
2453b3062210Smrg	  ;;
2454b3062210Smrg	esac
2455b3062210Smrg	laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
245623a0898aSmrg
2457b3062210Smrg	# Find the relevant object directory and library name.
2458b3062210Smrg	if test "X$installed" = Xyes; then
2459b3062210Smrg	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
2460b3062210Smrg	    $echo "$modename: warning: library \`$lib' was moved." 1>&2
2461b3062210Smrg	    dir="$ladir"
2462b3062210Smrg	    absdir="$abs_ladir"
2463b3062210Smrg	    libdir="$abs_ladir"
2464b3062210Smrg	  else
2465b3062210Smrg	    dir="$libdir"
2466b3062210Smrg	    absdir="$libdir"
2467b3062210Smrg	  fi
2468b3062210Smrg	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
2469b3062210Smrg	else
2470b3062210Smrg	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
2471b3062210Smrg	    dir="$ladir"
2472b3062210Smrg	    absdir="$abs_ladir"
2473b3062210Smrg	    # Remove this search path later
2474b3062210Smrg	    notinst_path="$notinst_path $abs_ladir"
2475b3062210Smrg	  else
2476b3062210Smrg	    dir="$ladir/$objdir"
2477b3062210Smrg	    absdir="$abs_ladir/$objdir"
2478b3062210Smrg	    # Remove this search path later
2479b3062210Smrg	    notinst_path="$notinst_path $abs_ladir"
2480b3062210Smrg	  fi
2481b3062210Smrg	fi # $installed = yes
2482b3062210Smrg	name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
248323a0898aSmrg
2484b3062210Smrg	# This library was specified with -dlpreopen.
2485b3062210Smrg	if test "$pass" = dlpreopen; then
2486b3062210Smrg	  if test -z "$libdir"; then
2487b3062210Smrg	    $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
2488b3062210Smrg	    exit $EXIT_FAILURE
2489b3062210Smrg	  fi
2490b3062210Smrg	  # Prefer using a static library (so that no silly _DYNAMIC symbols
2491b3062210Smrg	  # are required to link).
2492b3062210Smrg	  if test -n "$old_library"; then
2493b3062210Smrg	    newdlprefiles="$newdlprefiles $dir/$old_library"
2494b3062210Smrg	  # Otherwise, use the dlname, so that lt_dlopen finds it.
2495b3062210Smrg	  elif test -n "$dlname"; then
2496b3062210Smrg	    newdlprefiles="$newdlprefiles $dir/$dlname"
2497b3062210Smrg	  else
2498b3062210Smrg	    newdlprefiles="$newdlprefiles $dir/$linklib"
2499b3062210Smrg	  fi
2500b3062210Smrg	fi # $pass = dlpreopen
250123a0898aSmrg
2502b3062210Smrg	if test -z "$libdir"; then
2503b3062210Smrg	  # Link the convenience library
2504b3062210Smrg	  if test "$linkmode" = lib; then
2505b3062210Smrg	    deplibs="$dir/$old_library $deplibs"
2506b3062210Smrg	  elif test "$linkmode,$pass" = "prog,link"; then
2507b3062210Smrg	    compile_deplibs="$dir/$old_library $compile_deplibs"
2508b3062210Smrg	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
2509b3062210Smrg	  else
2510b3062210Smrg	    deplibs="$lib $deplibs" # used for prog,scan pass
2511b3062210Smrg	  fi
2512b3062210Smrg	  continue
2513b3062210Smrg	fi
251423a0898aSmrg
251523a0898aSmrg
2516b3062210Smrg	if test "$linkmode" = prog && test "$pass" != link; then
2517b3062210Smrg	  newlib_search_path="$newlib_search_path $ladir"
2518b3062210Smrg	  deplibs="$lib $deplibs"
251923a0898aSmrg
2520b3062210Smrg	  linkalldeplibs=no
2521b3062210Smrg	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
2522b3062210Smrg	     test "$build_libtool_libs" = no; then
2523b3062210Smrg	    linkalldeplibs=yes
2524b3062210Smrg	  fi
252523a0898aSmrg
2526b3062210Smrg	  tmp_libs=
2527b3062210Smrg	  for deplib in $dependency_libs; do
2528b3062210Smrg	    case $deplib in
2529b3062210Smrg	    -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
2530b3062210Smrg	    esac
2531b3062210Smrg	    # Need to link against all dependency_libs?
2532b3062210Smrg	    if test "$linkalldeplibs" = yes; then
2533b3062210Smrg	      deplibs="$deplib $deplibs"
2534b3062210Smrg	    else
2535b3062210Smrg	      # Need to hardcode shared library paths
2536b3062210Smrg	      # or/and link against static libraries
2537b3062210Smrg	      newdependency_libs="$deplib $newdependency_libs"
2538b3062210Smrg	    fi
2539b3062210Smrg	    if test "X$duplicate_deps" = "Xyes" ; then
2540b3062210Smrg	      case "$tmp_libs " in
2541b3062210Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2542b3062210Smrg	      esac
2543b3062210Smrg	    fi
2544b3062210Smrg	    tmp_libs="$tmp_libs $deplib"
2545b3062210Smrg	  done # for deplib
2546b3062210Smrg	  continue
2547b3062210Smrg	fi # $linkmode = prog...
25487f7f5e4eSmrg
2549b3062210Smrg	if test "$linkmode,$pass" = "prog,link"; then
2550b3062210Smrg	  if test -n "$library_names" &&
2551b3062210Smrg	     { { test "$prefer_static_libs" = no ||
2552b3062210Smrg		 test "$prefer_static_libs,$installed" = "built,yes"; } ||
2553b3062210Smrg	       test -z "$old_library"; }; then
2554b3062210Smrg	    # We need to hardcode the library path
2555b3062210Smrg	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
2556b3062210Smrg	      # Make sure the rpath contains only unique directories.
2557b3062210Smrg	      case "$temp_rpath " in
2558b3062210Smrg	      *" $dir "*) ;;
2559b3062210Smrg	      *" $absdir "*) ;;
2560b3062210Smrg	      *) temp_rpath="$temp_rpath $absdir" ;;
2561b3062210Smrg	      esac
2562b3062210Smrg	    fi
256323a0898aSmrg
2564b3062210Smrg	    # Hardcode the library path.
2565b3062210Smrg	    # Skip directories that are in the system default run-time
2566b3062210Smrg	    # search path.
2567b3062210Smrg	    case " $sys_lib_dlsearch_path " in
2568b3062210Smrg	    *" $absdir "*) ;;
2569b3062210Smrg	    *)
2570b3062210Smrg	      case "$compile_rpath " in
2571b3062210Smrg	      *" $absdir "*) ;;
2572b3062210Smrg	      *) compile_rpath="$compile_rpath $absdir"
2573b3062210Smrg	      esac
2574b3062210Smrg	      ;;
2575b3062210Smrg	    esac
2576b3062210Smrg	    case " $sys_lib_dlsearch_path " in
2577b3062210Smrg	    *" $libdir "*) ;;
2578b3062210Smrg	    *)
2579b3062210Smrg	      case "$finalize_rpath " in
2580b3062210Smrg	      *" $libdir "*) ;;
2581b3062210Smrg	      *) finalize_rpath="$finalize_rpath $libdir"
2582b3062210Smrg	      esac
2583b3062210Smrg	      ;;
2584b3062210Smrg	    esac
2585b3062210Smrg	  fi # $linkmode,$pass = prog,link...
25867f7f5e4eSmrg
2587b3062210Smrg	  if test "$alldeplibs" = yes &&
2588b3062210Smrg	     { test "$deplibs_check_method" = pass_all ||
2589b3062210Smrg	       { test "$build_libtool_libs" = yes &&
2590b3062210Smrg		 test -n "$library_names"; }; }; then
2591b3062210Smrg	    # We only need to search for static libraries
2592b3062210Smrg	    continue
2593b3062210Smrg	  fi
259423a0898aSmrg	fi
259523a0898aSmrg
2596b3062210Smrg	link_static=no # Whether the deplib will be linked statically
2597b3062210Smrg	use_static_libs=$prefer_static_libs
2598b3062210Smrg	if test "$use_static_libs" = built && test "$installed" = yes ; then
2599b3062210Smrg	  use_static_libs=no
2600b3062210Smrg	fi
2601b3062210Smrg	if test -n "$library_names" &&
2602b3062210Smrg	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
2603b3062210Smrg	  if test "$installed" = no; then
2604b3062210Smrg	    notinst_deplibs="$notinst_deplibs $lib"
2605b3062210Smrg	    need_relink=yes
2606b3062210Smrg	  fi
2607b3062210Smrg	  # This is a shared library
260823a0898aSmrg
2609b3062210Smrg	  # Warn about portability, can't link against -module's on
2610b3062210Smrg	  # some systems (darwin)
2611b3062210Smrg	  if test "$shouldnotlink" = yes && test "$pass" = link ; then
2612b3062210Smrg	    $echo
2613b3062210Smrg	    if test "$linkmode" = prog; then
2614b3062210Smrg	      $echo "*** Warning: Linking the executable $output against the loadable module"
2615b3062210Smrg	    else
2616b3062210Smrg	      $echo "*** Warning: Linking the shared library $output against the loadable module"
2617b3062210Smrg	    fi
2618b3062210Smrg	    $echo "*** $linklib is not portable!"
2619b3062210Smrg	  fi
2620b3062210Smrg	  if test "$linkmode" = lib &&
2621b3062210Smrg	     test "$hardcode_into_libs" = yes; then
2622b3062210Smrg	    # Hardcode the library path.
2623b3062210Smrg	    # Skip directories that are in the system default run-time
2624b3062210Smrg	    # search path.
2625b3062210Smrg	    case " $sys_lib_dlsearch_path " in
2626b3062210Smrg	    *" $absdir "*) ;;
2627b3062210Smrg	    *)
2628b3062210Smrg	      case "$compile_rpath " in
2629b3062210Smrg	      *" $absdir "*) ;;
2630b3062210Smrg	      *) compile_rpath="$compile_rpath $absdir"
2631b3062210Smrg	      esac
2632b3062210Smrg	      ;;
2633b3062210Smrg	    esac
2634b3062210Smrg	    case " $sys_lib_dlsearch_path " in
2635b3062210Smrg	    *" $libdir "*) ;;
2636b3062210Smrg	    *)
2637b3062210Smrg	      case "$finalize_rpath " in
2638b3062210Smrg	      *" $libdir "*) ;;
2639b3062210Smrg	      *) finalize_rpath="$finalize_rpath $libdir"
2640b3062210Smrg	      esac
2641b3062210Smrg	      ;;
2642b3062210Smrg	    esac
2643b3062210Smrg	  fi
26447f7f5e4eSmrg
2645b3062210Smrg	  if test -n "$old_archive_from_expsyms_cmds"; then
2646b3062210Smrg	    # figure out the soname
2647b3062210Smrg	    set dummy $library_names
2648b3062210Smrg	    realname="$2"
2649b3062210Smrg	    shift; shift
2650b3062210Smrg	    libname=`eval \\$echo \"$libname_spec\"`
2651b3062210Smrg	    # use dlname if we got it. it's perfectly good, no?
2652b3062210Smrg	    if test -n "$dlname"; then
2653b3062210Smrg	      soname="$dlname"
2654b3062210Smrg	    elif test -n "$soname_spec"; then
2655b3062210Smrg	      # bleh windows
2656b3062210Smrg	      case $host in
2657b3062210Smrg	      *cygwin* | mingw*)
2658b3062210Smrg		major=`expr $current - $age`
2659b3062210Smrg		versuffix="-$major"
2660b3062210Smrg		;;
2661b3062210Smrg	      esac
2662b3062210Smrg	      eval soname=\"$soname_spec\"
2663b3062210Smrg	    else
2664b3062210Smrg	      soname="$realname"
2665b3062210Smrg	    fi
26667f7f5e4eSmrg
2667b3062210Smrg	    # Make a new name for the extract_expsyms_cmds to use
2668b3062210Smrg	    soroot="$soname"
2669b3062210Smrg	    soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
2670b3062210Smrg	    newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
26717f7f5e4eSmrg
2672b3062210Smrg	    # If the library has no export list, then create one now
2673b3062210Smrg	    if test -f "$output_objdir/$soname-def"; then :
2674b3062210Smrg	    else
2675b3062210Smrg	      $show "extracting exported symbol list from \`$soname'"
2676b3062210Smrg	      save_ifs="$IFS"; IFS='~'
2677b3062210Smrg	      cmds=$extract_expsyms_cmds
2678b3062210Smrg	      for cmd in $cmds; do
2679b3062210Smrg		IFS="$save_ifs"
2680b3062210Smrg		eval cmd=\"$cmd\"
2681b3062210Smrg		$show "$cmd"
2682b3062210Smrg		$run eval "$cmd" || exit $?
2683b3062210Smrg	      done
2684b3062210Smrg	      IFS="$save_ifs"
2685b3062210Smrg	    fi
26867f7f5e4eSmrg
2687b3062210Smrg	    # Create $newlib
2688b3062210Smrg	    if test -f "$output_objdir/$newlib"; then :; else
2689b3062210Smrg	      $show "generating import library for \`$soname'"
2690b3062210Smrg	      save_ifs="$IFS"; IFS='~'
2691b3062210Smrg	      cmds=$old_archive_from_expsyms_cmds
2692b3062210Smrg	      for cmd in $cmds; do
2693b3062210Smrg		IFS="$save_ifs"
2694b3062210Smrg		eval cmd=\"$cmd\"
2695b3062210Smrg		$show "$cmd"
2696b3062210Smrg		$run eval "$cmd" || exit $?
2697b3062210Smrg	      done
2698b3062210Smrg	      IFS="$save_ifs"
2699b3062210Smrg	    fi
2700b3062210Smrg	    # make sure the library variables are pointing to the new library
2701b3062210Smrg	    dir=$output_objdir
2702b3062210Smrg	    linklib=$newlib
2703b3062210Smrg	  fi # test -n "$old_archive_from_expsyms_cmds"
270423a0898aSmrg
2705b3062210Smrg	  if test "$linkmode" = prog || test "$mode" != relink; then
2706b3062210Smrg	    add_shlibpath=
2707b3062210Smrg	    add_dir=
2708b3062210Smrg	    add=
2709b3062210Smrg	    lib_linked=yes
2710b3062210Smrg	    case $hardcode_action in
2711b3062210Smrg	    immediate | unsupported)
2712b3062210Smrg	      if test "$hardcode_direct" = no; then
2713b3062210Smrg		add="$dir/$linklib"
2714b3062210Smrg		case $host in
2715b3062210Smrg		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
2716b3062210Smrg		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
2717b3062210Smrg		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
2718b3062210Smrg		    *-*-unixware7*) add_dir="-L$dir" ;;
2719b3062210Smrg		  *-*-darwin* )
2720b3062210Smrg		    # if the lib is a module then we can not link against
2721b3062210Smrg		    # it, someone is ignoring the new warnings I added
2722b3062210Smrg		    if /usr/bin/file -L $add 2> /dev/null |
2723b3062210Smrg                      $EGREP ": [^:]* bundle" >/dev/null ; then
2724b3062210Smrg		      $echo "** Warning, lib $linklib is a module, not a shared library"
2725b3062210Smrg		      if test -z "$old_library" ; then
2726b3062210Smrg		        $echo
2727b3062210Smrg		        $echo "** And there doesn't seem to be a static archive available"
2728b3062210Smrg		        $echo "** The link will probably fail, sorry"
2729b3062210Smrg		      else
2730b3062210Smrg		        add="$dir/$old_library"
2731b3062210Smrg		      fi
2732b3062210Smrg		    fi
2733b3062210Smrg		esac
2734b3062210Smrg	      elif test "$hardcode_minus_L" = no; then
2735b3062210Smrg		case $host in
2736b3062210Smrg		*-*-sunos*) add_shlibpath="$dir" ;;
2737b3062210Smrg		esac
2738b3062210Smrg		add_dir="-L$dir"
2739b3062210Smrg		add="-l$name"
2740b3062210Smrg	      elif test "$hardcode_shlibpath_var" = no; then
2741b3062210Smrg		add_shlibpath="$dir"
2742b3062210Smrg		add="-l$name"
2743b3062210Smrg	      else
2744b3062210Smrg		lib_linked=no
2745b3062210Smrg	      fi
2746b3062210Smrg	      ;;
2747b3062210Smrg	    relink)
2748b3062210Smrg	      if test "$hardcode_direct" = yes; then
2749b3062210Smrg		add="$dir/$linklib"
2750b3062210Smrg	      elif test "$hardcode_minus_L" = yes; then
2751b3062210Smrg		add_dir="-L$dir"
2752b3062210Smrg		# Try looking first in the location we're being installed to.
2753b3062210Smrg		if test -n "$inst_prefix_dir"; then
2754b3062210Smrg		  case $libdir in
2755b3062210Smrg		    [\\/]*)
2756b3062210Smrg		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
2757b3062210Smrg		      ;;
2758b3062210Smrg		  esac
2759b3062210Smrg		fi
2760b3062210Smrg		add="-l$name"
2761b3062210Smrg	      elif test "$hardcode_shlibpath_var" = yes; then
2762b3062210Smrg		add_shlibpath="$dir"
2763b3062210Smrg		add="-l$name"
2764b3062210Smrg	      else
2765b3062210Smrg		lib_linked=no
2766b3062210Smrg	      fi
2767b3062210Smrg	      ;;
2768b3062210Smrg	    *) lib_linked=no ;;
2769b3062210Smrg	    esac
277023a0898aSmrg
2771b3062210Smrg	    if test "$lib_linked" != yes; then
2772b3062210Smrg	      $echo "$modename: configuration error: unsupported hardcode properties"
2773b3062210Smrg	      exit $EXIT_FAILURE
2774b3062210Smrg	    fi
27757f7f5e4eSmrg
2776b3062210Smrg	    if test -n "$add_shlibpath"; then
2777b3062210Smrg	      case :$compile_shlibpath: in
2778b3062210Smrg	      *":$add_shlibpath:"*) ;;
2779b3062210Smrg	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
2780b3062210Smrg	      esac
2781b3062210Smrg	    fi
2782b3062210Smrg	    if test "$linkmode" = prog; then
2783b3062210Smrg	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
2784b3062210Smrg	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
2785b3062210Smrg	    else
2786b3062210Smrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
2787b3062210Smrg	      test -n "$add" && deplibs="$add $deplibs"
2788b3062210Smrg	      if test "$hardcode_direct" != yes && \
2789b3062210Smrg		 test "$hardcode_minus_L" != yes && \
2790b3062210Smrg		 test "$hardcode_shlibpath_var" = yes; then
2791b3062210Smrg		case :$finalize_shlibpath: in
2792b3062210Smrg		*":$libdir:"*) ;;
2793b3062210Smrg		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2794b3062210Smrg		esac
2795b3062210Smrg	      fi
2796b3062210Smrg	    fi
2797b3062210Smrg	  fi
27987f7f5e4eSmrg
2799b3062210Smrg	  if test "$linkmode" = prog || test "$mode" = relink; then
2800b3062210Smrg	    add_shlibpath=
2801b3062210Smrg	    add_dir=
2802b3062210Smrg	    add=
2803b3062210Smrg	    # Finalize command for both is simple: just hardcode it.
2804b3062210Smrg	    if test "$hardcode_direct" = yes; then
2805b3062210Smrg	      add="$libdir/$linklib"
2806b3062210Smrg	    elif test "$hardcode_minus_L" = yes; then
2807b3062210Smrg	      add_dir="-L$libdir"
2808b3062210Smrg	      add="-l$name"
2809b3062210Smrg	    elif test "$hardcode_shlibpath_var" = yes; then
2810b3062210Smrg	      case :$finalize_shlibpath: in
2811b3062210Smrg	      *":$libdir:"*) ;;
2812b3062210Smrg	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2813b3062210Smrg	      esac
2814b3062210Smrg	      add="-l$name"
2815b3062210Smrg	    elif test "$hardcode_automatic" = yes; then
2816b3062210Smrg	      if test -n "$inst_prefix_dir" &&
2817b3062210Smrg		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
2818b3062210Smrg	        add="$inst_prefix_dir$libdir/$linklib"
2819b3062210Smrg	      else
2820b3062210Smrg	        add="$libdir/$linklib"
2821b3062210Smrg	      fi
2822b3062210Smrg	    else
2823b3062210Smrg	      # We cannot seem to hardcode it, guess we'll fake it.
2824b3062210Smrg	      add_dir="-L$libdir"
2825b3062210Smrg	      # Try looking first in the location we're being installed to.
2826b3062210Smrg	      if test -n "$inst_prefix_dir"; then
2827b3062210Smrg		case $libdir in
2828b3062210Smrg		  [\\/]*)
2829b3062210Smrg		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
2830b3062210Smrg		    ;;
2831b3062210Smrg		esac
2832b3062210Smrg	      fi
2833b3062210Smrg	      add="-l$name"
2834b3062210Smrg	    fi
28357f7f5e4eSmrg
2836b3062210Smrg	    if test "$linkmode" = prog; then
2837b3062210Smrg	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
2838b3062210Smrg	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
2839b3062210Smrg	    else
2840b3062210Smrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
2841b3062210Smrg	      test -n "$add" && deplibs="$add $deplibs"
2842b3062210Smrg	    fi
2843b3062210Smrg	  fi
2844b3062210Smrg	elif test "$linkmode" = prog; then
2845b3062210Smrg	  # Here we assume that one of hardcode_direct or hardcode_minus_L
2846b3062210Smrg	  # is not unsupported.  This is valid on all known static and
2847b3062210Smrg	  # shared platforms.
2848b3062210Smrg	  if test "$hardcode_direct" != unsupported; then
2849b3062210Smrg	    test -n "$old_library" && linklib="$old_library"
2850b3062210Smrg	    compile_deplibs="$dir/$linklib $compile_deplibs"
2851b3062210Smrg	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
2852b3062210Smrg	  else
2853b3062210Smrg	    compile_deplibs="-l$name -L$dir $compile_deplibs"
2854b3062210Smrg	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
2855b3062210Smrg	  fi
2856b3062210Smrg	elif test "$build_libtool_libs" = yes; then
2857b3062210Smrg	  # Not a shared library
2858b3062210Smrg	  if test "$deplibs_check_method" != pass_all; then
2859b3062210Smrg	    # We're trying link a shared library against a static one
2860b3062210Smrg	    # but the system doesn't support it.
28617f7f5e4eSmrg
2862b3062210Smrg	    # Just print a warning and add the library to dependency_libs so
2863b3062210Smrg	    # that the program can be linked against the static library.
2864b3062210Smrg	    $echo
2865b3062210Smrg	    $echo "*** Warning: This system can not link to static lib archive $lib."
2866b3062210Smrg	    $echo "*** I have the capability to make that library automatically link in when"
2867b3062210Smrg	    $echo "*** you link to this library.  But I can only do this if you have a"
2868b3062210Smrg	    $echo "*** shared version of the library, which you do not appear to have."
2869b3062210Smrg	    if test "$module" = yes; then
2870b3062210Smrg	      $echo "*** But as you try to build a module library, libtool will still create "
2871b3062210Smrg	      $echo "*** a static module, that should work as long as the dlopening application"
2872b3062210Smrg	      $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
2873b3062210Smrg	      if test -z "$global_symbol_pipe"; then
2874b3062210Smrg		$echo
2875b3062210Smrg		$echo "*** However, this would only work if libtool was able to extract symbol"
2876b3062210Smrg		$echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
2877b3062210Smrg		$echo "*** not find such a program.  So, this module is probably useless."
2878b3062210Smrg		$echo "*** \`nm' from GNU binutils and a full rebuild may help."
2879b3062210Smrg	      fi
2880b3062210Smrg	      if test "$build_old_libs" = no; then
2881b3062210Smrg		build_libtool_libs=module
2882b3062210Smrg		build_old_libs=yes
2883b3062210Smrg	      else
2884b3062210Smrg		build_libtool_libs=no
2885b3062210Smrg	      fi
2886b3062210Smrg	    fi
2887b3062210Smrg	  else
2888b3062210Smrg	    deplibs="$dir/$old_library $deplibs"
2889b3062210Smrg	    link_static=yes
2890b3062210Smrg	  fi
2891b3062210Smrg	fi # link shared/static library?
289223a0898aSmrg
2893b3062210Smrg	if test "$linkmode" = lib; then
2894b3062210Smrg	  if test -n "$dependency_libs" &&
2895b3062210Smrg	     { test "$hardcode_into_libs" != yes ||
2896b3062210Smrg	       test "$build_old_libs" = yes ||
2897b3062210Smrg	       test "$link_static" = yes; }; then
2898b3062210Smrg	    # Extract -R from dependency_libs
2899b3062210Smrg	    temp_deplibs=
2900b3062210Smrg	    for libdir in $dependency_libs; do
2901b3062210Smrg	      case $libdir in
2902b3062210Smrg	      -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
2903b3062210Smrg		   case " $xrpath " in
2904b3062210Smrg		   *" $temp_xrpath "*) ;;
2905b3062210Smrg		   *) xrpath="$xrpath $temp_xrpath";;
2906b3062210Smrg		   esac;;
2907b3062210Smrg	      *) temp_deplibs="$temp_deplibs $libdir";;
2908b3062210Smrg	      esac
2909b3062210Smrg	    done
2910b3062210Smrg	    dependency_libs="$temp_deplibs"
2911b3062210Smrg	  fi
291223a0898aSmrg
2913b3062210Smrg	  newlib_search_path="$newlib_search_path $absdir"
2914b3062210Smrg	  # Link against this library
2915b3062210Smrg	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
2916b3062210Smrg	  # ... and its dependency_libs
2917b3062210Smrg	  tmp_libs=
2918b3062210Smrg	  for deplib in $dependency_libs; do
2919b3062210Smrg	    newdependency_libs="$deplib $newdependency_libs"
2920b3062210Smrg	    if test "X$duplicate_deps" = "Xyes" ; then
2921b3062210Smrg	      case "$tmp_libs " in
2922b3062210Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2923b3062210Smrg	      esac
2924b3062210Smrg	    fi
2925b3062210Smrg	    tmp_libs="$tmp_libs $deplib"
2926b3062210Smrg	  done
29277f7f5e4eSmrg
2928b3062210Smrg	  if test "$link_all_deplibs" != no; then
2929b3062210Smrg	    # Add the search paths of all dependency libraries
2930b3062210Smrg	    for deplib in $dependency_libs; do
2931b3062210Smrg	      case $deplib in
2932b3062210Smrg	      -L*) path="$deplib" ;;
2933b3062210Smrg	      *.la)
2934b3062210Smrg		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
2935b3062210Smrg		test "X$dir" = "X$deplib" && dir="."
2936b3062210Smrg		# We need an absolute path.
2937b3062210Smrg		case $dir in
2938b3062210Smrg		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
2939b3062210Smrg		*)
2940b3062210Smrg		  absdir=`cd "$dir" && pwd`
2941b3062210Smrg		  if test -z "$absdir"; then
2942b3062210Smrg		    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
2943b3062210Smrg		    absdir="$dir"
2944b3062210Smrg		  fi
2945b3062210Smrg		  ;;
2946b3062210Smrg		esac
2947b3062210Smrg		if grep "^installed=no" $deplib > /dev/null; then
2948b3062210Smrg		  path="$absdir/$objdir"
2949b3062210Smrg		else
2950b3062210Smrg		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
2951b3062210Smrg		  if test -z "$libdir"; then
2952b3062210Smrg		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
2953b3062210Smrg		    exit $EXIT_FAILURE
2954b3062210Smrg		  fi
2955b3062210Smrg		  if test "$absdir" != "$libdir"; then
2956b3062210Smrg		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
2957b3062210Smrg		  fi
2958b3062210Smrg		  path="$absdir"
2959b3062210Smrg		fi
2960b3062210Smrg		depdepl=
2961b3062210Smrg		case $host in
2962b3062210Smrg		*-*-darwin*)
2963b3062210Smrg		  # we do not want to link against static libs,
2964b3062210Smrg		  # but need to link against shared
2965b3062210Smrg		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
2966b3062210Smrg		  eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
2967b3062210Smrg		  if test -n "$deplibrary_names" ; then
2968b3062210Smrg		    for tmp in $deplibrary_names ; do
2969b3062210Smrg		      depdepl=$tmp
2970b3062210Smrg		    done
2971b3062210Smrg		    if test -f "$deplibdir/$depdepl" ; then
2972b3062210Smrg		      depdepl="$deplibdir/$depdepl"
2973b3062210Smrg	      	    elif test -f "$path/$depdepl" ; then
2974b3062210Smrg		      depdepl="$path/$depdepl"
2975b3062210Smrg		    else
2976b3062210Smrg		      # Can't find it, oh well...
2977b3062210Smrg		      depdepl=
2978b3062210Smrg		    fi
2979b3062210Smrg		    # do not add paths which are already there
2980b3062210Smrg		    case " $newlib_search_path " in
2981b3062210Smrg		    *" $path "*) ;;
2982b3062210Smrg		    *) newlib_search_path="$newlib_search_path $path";;
2983b3062210Smrg		    esac
2984b3062210Smrg		  fi
2985b3062210Smrg		  path=""
2986b3062210Smrg		  ;;
2987b3062210Smrg		*)
2988b3062210Smrg		  path="-L$path"
2989b3062210Smrg		  ;;
2990b3062210Smrg		esac
2991b3062210Smrg		;;
2992b3062210Smrg	      -l*)
2993b3062210Smrg		case $host in
2994b3062210Smrg		*-*-darwin*)
2995b3062210Smrg		  # Again, we only want to link against shared libraries
2996b3062210Smrg		  eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
2997b3062210Smrg		  for tmp in $newlib_search_path ; do
2998b3062210Smrg		    if test -f "$tmp/lib$tmp_libs.dylib" ; then
2999b3062210Smrg		      eval depdepl="$tmp/lib$tmp_libs.dylib"
3000b3062210Smrg		      break
3001b3062210Smrg		    fi
3002b3062210Smrg		  done
3003b3062210Smrg		  path=""
3004b3062210Smrg		  ;;
3005b3062210Smrg		*) continue ;;
3006b3062210Smrg		esac
3007b3062210Smrg		;;
3008b3062210Smrg	      *) continue ;;
3009b3062210Smrg	      esac
3010b3062210Smrg	      case " $deplibs " in
3011b3062210Smrg	      *" $path "*) ;;
3012b3062210Smrg	      *) deplibs="$path $deplibs" ;;
3013b3062210Smrg	      esac
3014b3062210Smrg	      case " $deplibs " in
3015b3062210Smrg	      *" $depdepl "*) ;;
3016b3062210Smrg	      *) deplibs="$depdepl $deplibs" ;;
3017b3062210Smrg	      esac
3018b3062210Smrg	    done
3019b3062210Smrg	  fi # link_all_deplibs != no
3020b3062210Smrg	fi # linkmode = lib
3021b3062210Smrg      done # for deplib in $libs
3022b3062210Smrg      dependency_libs="$newdependency_libs"
3023b3062210Smrg      if test "$pass" = dlpreopen; then
3024b3062210Smrg	# Link the dlpreopened libraries before other libraries
3025b3062210Smrg	for deplib in $save_deplibs; do
3026b3062210Smrg	  deplibs="$deplib $deplibs"
3027b3062210Smrg	done
3028b3062210Smrg      fi
3029b3062210Smrg      if test "$pass" != dlopen; then
3030b3062210Smrg	if test "$pass" != conv; then
3031b3062210Smrg	  # Make sure lib_search_path contains only unique directories.
3032b3062210Smrg	  lib_search_path=
3033b3062210Smrg	  for dir in $newlib_search_path; do
3034b3062210Smrg	    case "$lib_search_path " in
3035b3062210Smrg	    *" $dir "*) ;;
3036b3062210Smrg	    *) lib_search_path="$lib_search_path $dir" ;;
3037b3062210Smrg	    esac
3038b3062210Smrg	  done
3039b3062210Smrg	  newlib_search_path=
3040b3062210Smrg	fi
3041b3062210Smrg
3042b3062210Smrg	if test "$linkmode,$pass" != "prog,link"; then
3043b3062210Smrg	  vars="deplibs"
3044b3062210Smrg	else
3045b3062210Smrg	  vars="compile_deplibs finalize_deplibs"
3046b3062210Smrg	fi
3047b3062210Smrg	for var in $vars dependency_libs; do
3048b3062210Smrg	  # Add libraries to $var in reverse order
3049b3062210Smrg	  eval tmp_libs=\"\$$var\"
3050b3062210Smrg	  new_libs=
3051b3062210Smrg	  for deplib in $tmp_libs; do
3052b3062210Smrg	    # FIXME: Pedantically, this is the right thing to do, so
3053b3062210Smrg	    #        that some nasty dependency loop isn't accidentally
3054b3062210Smrg	    #        broken:
3055b3062210Smrg	    #new_libs="$deplib $new_libs"
3056b3062210Smrg	    # Pragmatically, this seems to cause very few problems in
3057b3062210Smrg	    # practice:
3058b3062210Smrg	    case $deplib in
3059b3062210Smrg	    -L*) new_libs="$deplib $new_libs" ;;
3060b3062210Smrg	    -R*) ;;
3061b3062210Smrg	    *)
3062b3062210Smrg	      # And here is the reason: when a library appears more
3063b3062210Smrg	      # than once as an explicit dependence of a library, or
3064b3062210Smrg	      # is implicitly linked in more than once by the
3065b3062210Smrg	      # compiler, it is considered special, and multiple
3066b3062210Smrg	      # occurrences thereof are not removed.  Compare this
3067b3062210Smrg	      # with having the same library being listed as a
3068b3062210Smrg	      # dependency of multiple other libraries: in this case,
3069b3062210Smrg	      # we know (pedantically, we assume) the library does not
3070b3062210Smrg	      # need to be listed more than once, so we keep only the
3071b3062210Smrg	      # last copy.  This is not always right, but it is rare
3072b3062210Smrg	      # enough that we require users that really mean to play
3073b3062210Smrg	      # such unportable linking tricks to link the library
3074b3062210Smrg	      # using -Wl,-lname, so that libtool does not consider it
3075b3062210Smrg	      # for duplicate removal.
3076b3062210Smrg	      case " $specialdeplibs " in
3077b3062210Smrg	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
3078b3062210Smrg	      *)
3079b3062210Smrg		case " $new_libs " in
3080b3062210Smrg		*" $deplib "*) ;;
3081b3062210Smrg		*) new_libs="$deplib $new_libs" ;;
3082b3062210Smrg		esac
3083b3062210Smrg		;;
3084b3062210Smrg	      esac
3085b3062210Smrg	      ;;
3086b3062210Smrg	    esac
3087b3062210Smrg	  done
3088b3062210Smrg	  tmp_libs=
3089b3062210Smrg	  for deplib in $new_libs; do
3090b3062210Smrg	    case $deplib in
3091b3062210Smrg	    -L*)
3092b3062210Smrg	      case " $tmp_libs " in
3093b3062210Smrg	      *" $deplib "*) ;;
3094b3062210Smrg	      *) tmp_libs="$tmp_libs $deplib" ;;
3095b3062210Smrg	      esac
3096b3062210Smrg	      ;;
3097b3062210Smrg	    *) tmp_libs="$tmp_libs $deplib" ;;
3098b3062210Smrg	    esac
3099b3062210Smrg	  done
3100b3062210Smrg	  eval $var=\"$tmp_libs\"
3101b3062210Smrg	done # for var
3102b3062210Smrg      fi
3103b3062210Smrg      # Last step: remove runtime libs from dependency_libs
3104b3062210Smrg      # (they stay in deplibs)
3105b3062210Smrg      tmp_libs=
3106b3062210Smrg      for i in $dependency_libs ; do
3107b3062210Smrg	case " $predeps $postdeps $compiler_lib_search_path " in
3108b3062210Smrg	*" $i "*)
3109b3062210Smrg	  i=""
31107f7f5e4eSmrg	  ;;
31117f7f5e4eSmrg	esac
3112b3062210Smrg	if test -n "$i" ; then
3113b3062210Smrg	  tmp_libs="$tmp_libs $i"
3114b3062210Smrg	fi
3115b3062210Smrg      done
3116b3062210Smrg      dependency_libs=$tmp_libs
3117b3062210Smrg    done # for pass
3118b3062210Smrg    if test "$linkmode" = prog; then
3119b3062210Smrg      dlfiles="$newdlfiles"
3120b3062210Smrg      dlprefiles="$newdlprefiles"
31217f7f5e4eSmrg    fi
31227f7f5e4eSmrg
3123b3062210Smrg    case $linkmode in
3124b3062210Smrg    oldlib)
3125b3062210Smrg      case " $deplibs" in
3126b3062210Smrg      *\ -l* | *\ -L*)
3127b3062210Smrg	$echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;;
3128b3062210Smrg      esac
312923a0898aSmrg
3130b3062210Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3131b3062210Smrg	$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
3132b3062210Smrg      fi
313323a0898aSmrg
3134b3062210Smrg      if test -n "$rpath"; then
3135b3062210Smrg	$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
3136b3062210Smrg      fi
313723a0898aSmrg
3138b3062210Smrg      if test -n "$xrpath"; then
3139b3062210Smrg	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
3140b3062210Smrg      fi
314123a0898aSmrg
3142b3062210Smrg      if test -n "$vinfo"; then
3143b3062210Smrg	$echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
3144b3062210Smrg      fi
314523a0898aSmrg
3146b3062210Smrg      if test -n "$release"; then
3147b3062210Smrg	$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
3148b3062210Smrg      fi
314923a0898aSmrg
3150b3062210Smrg      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
3151b3062210Smrg	$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
3152b3062210Smrg      fi
315323a0898aSmrg
3154b3062210Smrg      # Now set the variables for building old libraries.
3155b3062210Smrg      build_libtool_libs=no
3156b3062210Smrg      oldlibs="$output"
3157b3062210Smrg      objs="$objs$old_deplibs"
3158b3062210Smrg      ;;
315923a0898aSmrg
3160b3062210Smrg    lib)
3161b3062210Smrg      # Make sure we only generate libraries of the form `libNAME.la'.
3162b3062210Smrg      case $outputname in
3163b3062210Smrg      lib*)
3164b3062210Smrg	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
3165b3062210Smrg	eval shared_ext=\"$shrext_cmds\"
3166b3062210Smrg	eval libname=\"$libname_spec\"
3167b3062210Smrg	;;
3168b3062210Smrg      *)
3169b3062210Smrg	if test "$module" = no; then
3170b3062210Smrg	  $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
3171b3062210Smrg	  $echo "$help" 1>&2
3172b3062210Smrg	  exit $EXIT_FAILURE
3173b3062210Smrg	fi
3174b3062210Smrg	if test "$need_lib_prefix" != no; then
3175b3062210Smrg	  # Add the "lib" prefix for modules if required
3176b3062210Smrg	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
3177b3062210Smrg	  eval shared_ext=\"$shrext_cmds\"
3178b3062210Smrg	  eval libname=\"$libname_spec\"
3179b3062210Smrg	else
3180b3062210Smrg	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
3181b3062210Smrg	fi
3182b3062210Smrg	;;
3183b3062210Smrg      esac
318423a0898aSmrg
3185b3062210Smrg      if test -n "$objs"; then
3186b3062210Smrg	if test "$deplibs_check_method" != pass_all; then
3187b3062210Smrg	  $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
3188b3062210Smrg	  exit $EXIT_FAILURE
3189b3062210Smrg	else
3190b3062210Smrg	  $echo
3191b3062210Smrg	  $echo "*** Warning: Linking the shared library $output against the non-libtool"
3192b3062210Smrg	  $echo "*** objects $objs is not portable!"
3193b3062210Smrg	  libobjs="$libobjs $objs"
3194b3062210Smrg	fi
3195b3062210Smrg      fi
319623a0898aSmrg
3197b3062210Smrg      if test "$dlself" != no; then
3198b3062210Smrg	$echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
3199b3062210Smrg      fi
320023a0898aSmrg
3201b3062210Smrg      set dummy $rpath
3202b3062210Smrg      if test "$#" -gt 2; then
3203b3062210Smrg	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
3204b3062210Smrg      fi
3205b3062210Smrg      install_libdir="$2"
320623a0898aSmrg
3207b3062210Smrg      oldlibs=
3208b3062210Smrg      if test -z "$rpath"; then
3209b3062210Smrg	if test "$build_libtool_libs" = yes; then
3210b3062210Smrg	  # Building a libtool convenience library.
3211b3062210Smrg	  # Some compilers have problems with a `.al' extension so
3212b3062210Smrg	  # convenience libraries should have the same extension an
3213b3062210Smrg	  # archive normally would.
3214b3062210Smrg	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
3215b3062210Smrg	  build_libtool_libs=convenience
3216b3062210Smrg	  build_old_libs=yes
3217b3062210Smrg	fi
321823a0898aSmrg
3219b3062210Smrg	if test -n "$vinfo"; then
3220b3062210Smrg	  $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
3221b3062210Smrg	fi
322223a0898aSmrg
3223b3062210Smrg	if test -n "$release"; then
3224b3062210Smrg	  $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
3225b3062210Smrg	fi
3226b3062210Smrg      else
322723a0898aSmrg
3228b3062210Smrg	# Parse the version information argument.
3229b3062210Smrg	save_ifs="$IFS"; IFS=':'
3230b3062210Smrg	set dummy $vinfo 0 0 0
3231b3062210Smrg	IFS="$save_ifs"
323223a0898aSmrg
3233b3062210Smrg	if test -n "$8"; then
3234b3062210Smrg	  $echo "$modename: too many parameters to \`-version-info'" 1>&2
3235b3062210Smrg	  $echo "$help" 1>&2
3236b3062210Smrg	  exit $EXIT_FAILURE
3237b3062210Smrg	fi
323823a0898aSmrg
3239b3062210Smrg	# convert absolute version numbers to libtool ages
3240b3062210Smrg	# this retains compatibility with .la files and attempts
3241b3062210Smrg	# to make the code below a bit more comprehensible
324223a0898aSmrg
3243b3062210Smrg	case $vinfo_number in
3244b3062210Smrg	yes)
3245b3062210Smrg	  number_major="$2"
3246b3062210Smrg	  number_minor="$3"
3247b3062210Smrg	  number_revision="$4"
3248b3062210Smrg	  #
3249b3062210Smrg	  # There are really only two kinds -- those that
3250b3062210Smrg	  # use the current revision as the major version
3251b3062210Smrg	  # and those that subtract age and use age as
3252b3062210Smrg	  # a minor version.  But, then there is irix
3253b3062210Smrg	  # which has an extra 1 added just for fun
3254b3062210Smrg	  #
3255b3062210Smrg	  case $version_type in
3256b3062210Smrg	  darwin|linux|osf|windows|none)
3257b3062210Smrg	    current=`expr $number_major + $number_minor`
3258b3062210Smrg	    age="$number_minor"
3259b3062210Smrg	    revision="$number_revision"
3260b3062210Smrg	    ;;
3261b3062210Smrg	  freebsd-aout|freebsd-elf|sunos)
3262b3062210Smrg	    current="$number_major"
3263b3062210Smrg	    revision="$number_minor"
3264b3062210Smrg	    age="0"
3265b3062210Smrg	    ;;
3266b3062210Smrg	  irix|nonstopux)
3267b3062210Smrg	    current=`expr $number_major + $number_minor`
3268b3062210Smrg	    age="$number_minor"
3269b3062210Smrg	    revision="$number_minor"
3270b3062210Smrg	    lt_irix_increment=no
3271b3062210Smrg	    ;;
3272b3062210Smrg	  esac
3273b3062210Smrg	  ;;
3274b3062210Smrg	no)
3275b3062210Smrg	  current="$2"
3276b3062210Smrg	  revision="$3"
3277b3062210Smrg	  age="$4"
3278b3062210Smrg	  ;;
3279b3062210Smrg	esac
328023a0898aSmrg
3281b3062210Smrg	# Check that each of the things are valid numbers.
3282b3062210Smrg	case $current in
3283b3062210Smrg	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]) ;;
3284b3062210Smrg	*)
3285b3062210Smrg	  $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
3286b3062210Smrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3287b3062210Smrg	  exit $EXIT_FAILURE
3288b3062210Smrg	  ;;
3289b3062210Smrg	esac
329023a0898aSmrg
3291b3062210Smrg	case $revision in
3292b3062210Smrg	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]) ;;
3293b3062210Smrg	*)
3294b3062210Smrg	  $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
3295b3062210Smrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3296b3062210Smrg	  exit $EXIT_FAILURE
3297b3062210Smrg	  ;;
3298b3062210Smrg	esac
329923a0898aSmrg
3300b3062210Smrg	case $age in
3301b3062210Smrg	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]) ;;
3302b3062210Smrg	*)
3303b3062210Smrg	  $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
3304b3062210Smrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3305b3062210Smrg	  exit $EXIT_FAILURE
3306b3062210Smrg	  ;;
3307b3062210Smrg	esac
330823a0898aSmrg
3309b3062210Smrg	if test "$age" -gt "$current"; then
3310b3062210Smrg	  $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
3311b3062210Smrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3312b3062210Smrg	  exit $EXIT_FAILURE
3313b3062210Smrg	fi
331423a0898aSmrg
3315b3062210Smrg	# Calculate the version variables.
3316b3062210Smrg	major=
3317b3062210Smrg	versuffix=
3318b3062210Smrg	verstring=
3319b3062210Smrg	case $version_type in
3320b3062210Smrg	none) ;;
332123a0898aSmrg
3322b3062210Smrg	darwin)
3323b3062210Smrg	  # Like Linux, but with the current version available in
3324b3062210Smrg	  # verstring for coding it into the library header
3325b3062210Smrg	  major=.`expr $current - $age`
3326b3062210Smrg	  versuffix="$major.$age.$revision"
3327b3062210Smrg	  # Darwin ld doesn't like 0 for these options...
3328b3062210Smrg	  minor_current=`expr $current + 1`
3329b3062210Smrg	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
3330b3062210Smrg	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
3331b3062210Smrg	  ;;
333223a0898aSmrg
3333b3062210Smrg	freebsd-aout)
3334b3062210Smrg	  major=".$current"
3335b3062210Smrg	  versuffix=".$current.$revision";
3336b3062210Smrg	  ;;
333723a0898aSmrg
3338b3062210Smrg	freebsd-elf)
3339b3062210Smrg	  major=".$current"
3340b3062210Smrg	  versuffix=".$current";
3341b3062210Smrg	  ;;
334223a0898aSmrg
3343b3062210Smrg	irix | nonstopux)
3344b3062210Smrg	  if test "X$lt_irix_increment" = "Xno"; then
3345b3062210Smrg	    major=`expr $current - $age`
3346b3062210Smrg	  else
3347b3062210Smrg	    major=`expr $current - $age + 1`
3348b3062210Smrg	  fi
3349b3062210Smrg	  case $version_type in
3350b3062210Smrg	    nonstopux) verstring_prefix=nonstopux ;;
3351b3062210Smrg	    *)         verstring_prefix=sgi ;;
3352b3062210Smrg	  esac
3353b3062210Smrg	  verstring="$verstring_prefix$major.$revision"
335423a0898aSmrg
3355b3062210Smrg	  # Add in all the interfaces that we are compatible with.
3356b3062210Smrg	  loop=$revision
3357b3062210Smrg	  while test "$loop" -ne 0; do
3358b3062210Smrg	    iface=`expr $revision - $loop`
3359b3062210Smrg	    loop=`expr $loop - 1`
3360b3062210Smrg	    verstring="$verstring_prefix$major.$iface:$verstring"
3361b3062210Smrg	  done
336223a0898aSmrg
3363b3062210Smrg	  # Before this point, $major must not contain `.'.
3364b3062210Smrg	  major=.$major
3365b3062210Smrg	  versuffix="$major.$revision"
3366b3062210Smrg	  ;;
336723a0898aSmrg
3368b3062210Smrg	linux)
3369b3062210Smrg	  major=.`expr $current - $age`
3370b3062210Smrg	  versuffix="$major.$age.$revision"
3371b3062210Smrg	  ;;
337223a0898aSmrg
3373b3062210Smrg	osf)
3374b3062210Smrg	  major=.`expr $current - $age`
3375b3062210Smrg	  versuffix=".$current.$age.$revision"
3376b3062210Smrg	  verstring="$current.$age.$revision"
33777f7f5e4eSmrg
3378b3062210Smrg	  # Add in all the interfaces that we are compatible with.
3379b3062210Smrg	  loop=$age
3380b3062210Smrg	  while test "$loop" -ne 0; do
3381b3062210Smrg	    iface=`expr $current - $loop`
3382b3062210Smrg	    loop=`expr $loop - 1`
3383b3062210Smrg	    verstring="$verstring:${iface}.0"
3384b3062210Smrg	  done
33857f7f5e4eSmrg
3386b3062210Smrg	  # Make executables depend on our current version.
3387b3062210Smrg	  verstring="$verstring:${current}.0"
3388b3062210Smrg	  ;;
33897f7f5e4eSmrg
3390b3062210Smrg	sunos)
3391b3062210Smrg	  major=".$current"
3392b3062210Smrg	  versuffix=".$current.$revision"
3393b3062210Smrg	  ;;
33947f7f5e4eSmrg
3395b3062210Smrg	windows)
3396b3062210Smrg	  # Use '-' rather than '.', since we only want one
3397b3062210Smrg	  # extension on DOS 8.3 filesystems.
3398b3062210Smrg	  major=`expr $current - $age`
3399b3062210Smrg	  versuffix="-$major"
3400b3062210Smrg	  ;;
34017f7f5e4eSmrg
3402b3062210Smrg	*)
3403b3062210Smrg	  $echo "$modename: unknown library version type \`$version_type'" 1>&2
3404b3062210Smrg	  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
3405b3062210Smrg	  exit $EXIT_FAILURE
3406b3062210Smrg	  ;;
3407b3062210Smrg	esac
34087f7f5e4eSmrg
3409b3062210Smrg	# Clear the version info if we defaulted, and they specified a release.
3410b3062210Smrg	if test -z "$vinfo" && test -n "$release"; then
3411b3062210Smrg	  major=
3412b3062210Smrg	  case $version_type in
3413b3062210Smrg	  darwin)
3414b3062210Smrg	    # we can't check for "0.0" in archive_cmds due to quoting
3415b3062210Smrg	    # problems, so we reset it completely
3416b3062210Smrg	    verstring=
341723a0898aSmrg	    ;;
3418b3062210Smrg	  *)
3419b3062210Smrg	    verstring="0.0"
3420b3062210Smrg	    ;;
3421b3062210Smrg	  esac
3422b3062210Smrg	  if test "$need_version" = no; then
3423b3062210Smrg	    versuffix=
3424b3062210Smrg	  else
3425b3062210Smrg	    versuffix=".0.0"
3426b3062210Smrg	  fi
3427b3062210Smrg	fi
342823a0898aSmrg
3429b3062210Smrg	# Remove version info from name if versioning should be avoided
3430b3062210Smrg	if test "$avoid_version" = yes && test "$need_version" = no; then
3431b3062210Smrg	  major=
3432b3062210Smrg	  versuffix=
3433b3062210Smrg	  verstring=""
3434b3062210Smrg	fi
343523a0898aSmrg
3436b3062210Smrg	# Check to see if the archive will have undefined symbols.
3437b3062210Smrg	if test "$allow_undefined" = yes; then
3438b3062210Smrg	  if test "$allow_undefined_flag" = unsupported; then
3439b3062210Smrg	    $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
3440b3062210Smrg	    build_libtool_libs=no
3441b3062210Smrg	    build_old_libs=yes
3442b3062210Smrg	  fi
3443b3062210Smrg	else
3444b3062210Smrg	  # Don't allow undefined symbols.
3445b3062210Smrg	  allow_undefined_flag="$no_undefined_flag"
3446b3062210Smrg	fi
3447b3062210Smrg      fi
344823a0898aSmrg
3449b3062210Smrg      if test "$mode" != relink; then
3450b3062210Smrg	# Remove our outputs, but don't remove object files since they
3451b3062210Smrg	# may have been created when compiling PIC objects.
3452b3062210Smrg	removelist=
3453b3062210Smrg	tempremovelist=`$echo "$output_objdir/*"`
3454b3062210Smrg	for p in $tempremovelist; do
3455b3062210Smrg	  case $p in
3456b3062210Smrg	    *.$objext)
3457b3062210Smrg	       ;;
3458b3062210Smrg	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
3459b3062210Smrg	       if test "X$precious_files_regex" != "X"; then
3460b3062210Smrg	         if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
3461b3062210Smrg	         then
3462b3062210Smrg		   continue
3463b3062210Smrg		 fi
3464b3062210Smrg	       fi
3465b3062210Smrg	       removelist="$removelist $p"
3466b3062210Smrg	       ;;
3467b3062210Smrg	    *) ;;
3468b3062210Smrg	  esac
3469b3062210Smrg	done
3470b3062210Smrg	if test -n "$removelist"; then
3471b3062210Smrg	  $show "${rm}r $removelist"
3472b3062210Smrg	  $run ${rm}r $removelist
3473b3062210Smrg	fi
3474b3062210Smrg      fi
347523a0898aSmrg
3476b3062210Smrg      # Now set the variables for building old libraries.
3477b3062210Smrg      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
3478b3062210Smrg	oldlibs="$oldlibs $output_objdir/$libname.$libext"
347923a0898aSmrg
3480b3062210Smrg	# Transform .lo files to .o files.
3481b3062210Smrg	oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
3482b3062210Smrg      fi
348323a0898aSmrg
3484b3062210Smrg      # Eliminate all temporary directories.
3485b3062210Smrg      #for path in $notinst_path; do
3486b3062210Smrg      #	lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
3487b3062210Smrg      #	deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
3488b3062210Smrg      #	dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
3489b3062210Smrg      #done
349023a0898aSmrg
3491b3062210Smrg      if test -n "$xrpath"; then
3492b3062210Smrg	# If the user specified any rpath flags, then add them.
3493b3062210Smrg	temp_xrpath=
3494b3062210Smrg	for libdir in $xrpath; do
3495b3062210Smrg	  temp_xrpath="$temp_xrpath -R$libdir"
3496b3062210Smrg	  case "$finalize_rpath " in
3497b3062210Smrg	  *" $libdir "*) ;;
3498b3062210Smrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
3499b3062210Smrg	  esac
3500b3062210Smrg	done
3501b3062210Smrg	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
3502b3062210Smrg	  dependency_libs="$temp_xrpath $dependency_libs"
3503b3062210Smrg	fi
3504b3062210Smrg      fi
350523a0898aSmrg
3506b3062210Smrg      # Make sure dlfiles contains only unique files that won't be dlpreopened
3507b3062210Smrg      old_dlfiles="$dlfiles"
3508b3062210Smrg      dlfiles=
3509b3062210Smrg      for lib in $old_dlfiles; do
3510b3062210Smrg	case " $dlprefiles $dlfiles " in
3511b3062210Smrg	*" $lib "*) ;;
3512b3062210Smrg	*) dlfiles="$dlfiles $lib" ;;
3513b3062210Smrg	esac
3514b3062210Smrg      done
351523a0898aSmrg
3516b3062210Smrg      # Make sure dlprefiles contains only unique files
3517b3062210Smrg      old_dlprefiles="$dlprefiles"
3518b3062210Smrg      dlprefiles=
3519b3062210Smrg      for lib in $old_dlprefiles; do
3520b3062210Smrg	case "$dlprefiles " in
3521b3062210Smrg	*" $lib "*) ;;
3522b3062210Smrg	*) dlprefiles="$dlprefiles $lib" ;;
3523b3062210Smrg	esac
3524b3062210Smrg      done
352523a0898aSmrg
3526b3062210Smrg      if test "$build_libtool_libs" = yes; then
3527b3062210Smrg	if test -n "$rpath"; then
3528b3062210Smrg	  case $host in
3529b3062210Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
3530b3062210Smrg	    # these systems don't actually have a c library (as such)!
3531b3062210Smrg	    ;;
3532b3062210Smrg	  *-*-rhapsody* | *-*-darwin1.[012])
3533b3062210Smrg	    # Rhapsody C library is in the System framework
3534b3062210Smrg	    deplibs="$deplibs -framework System"
3535b3062210Smrg	    ;;
3536b3062210Smrg	  *-*-netbsd*)
3537b3062210Smrg	    # Don't link with libc until the a.out ld.so is fixed.
3538b3062210Smrg	    ;;
3539b3062210Smrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
3540b3062210Smrg	    # Do not include libc due to us having libc/libc_r.
3541b3062210Smrg	    ;;
3542b3062210Smrg	  *-*-sco3.2v5* | *-*-sco5v6*)
3543b3062210Smrg	    # Causes problems with __ctype
3544b3062210Smrg	    ;;
3545b3062210Smrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
3546b3062210Smrg	    # Compiler inserts libc in the correct place for threads to work
3547b3062210Smrg	    ;;
3548b3062210Smrg 	  *)
3549b3062210Smrg	    # Add libc to deplibs on all other systems if necessary.
3550b3062210Smrg	    if test "$build_libtool_need_lc" = "yes"; then
3551b3062210Smrg	      deplibs="$deplibs -lc"
3552b3062210Smrg	    fi
3553b3062210Smrg	    ;;
3554b3062210Smrg	  esac
3555b3062210Smrg	fi
355623a0898aSmrg
3557b3062210Smrg	# Transform deplibs into only deplibs that can be linked in shared.
3558b3062210Smrg	name_save=$name
3559b3062210Smrg	libname_save=$libname
3560b3062210Smrg	release_save=$release
3561b3062210Smrg	versuffix_save=$versuffix
3562b3062210Smrg	major_save=$major
3563b3062210Smrg	# I'm not sure if I'm treating the release correctly.  I think
3564b3062210Smrg	# release should show up in the -l (ie -lgmp5) so we don't want to
3565b3062210Smrg	# add it in twice.  Is that correct?
3566b3062210Smrg	release=""
3567b3062210Smrg	versuffix=""
3568b3062210Smrg	major=""
3569b3062210Smrg	newdeplibs=
3570b3062210Smrg	droppeddeps=no
3571b3062210Smrg	case $deplibs_check_method in
3572b3062210Smrg	pass_all)
3573b3062210Smrg	  # Don't check for shared/static.  Everything works.
3574b3062210Smrg	  # This might be a little naive.  We might want to check
3575b3062210Smrg	  # whether the library exists or not.  But this is on
3576b3062210Smrg	  # osf3 & osf4 and I'm not really sure... Just
3577b3062210Smrg	  # implementing what was already the behavior.
3578b3062210Smrg	  newdeplibs=$deplibs
3579b3062210Smrg	  ;;
3580b3062210Smrg	test_compile)
3581b3062210Smrg	  # This code stresses the "libraries are programs" paradigm to its
3582b3062210Smrg	  # limits. Maybe even breaks it.  We compile a program, linking it
3583b3062210Smrg	  # against the deplibs as a proxy for the library.  Then we can check
3584b3062210Smrg	  # whether they linked in statically or dynamically with ldd.
3585b3062210Smrg	  $rm conftest.c
3586b3062210Smrg	  cat > conftest.c <<EOF
3587b3062210Smrg	  int main() { return 0; }
3588b3062210SmrgEOF
3589b3062210Smrg	  $rm conftest
3590b3062210Smrg	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
3591b3062210Smrg	    ldd_output=`ldd conftest`
3592b3062210Smrg	    for i in $deplibs; do
3593b3062210Smrg	      name=`expr $i : '-l\(.*\)'`
3594b3062210Smrg	      # If $name is empty we are operating on a -L argument.
3595b3062210Smrg              if test "$name" != "" && test "$name" != "0"; then
3596b3062210Smrg		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3597b3062210Smrg		  case " $predeps $postdeps " in
3598b3062210Smrg		  *" $i "*)
3599b3062210Smrg		    newdeplibs="$newdeplibs $i"
3600b3062210Smrg		    i=""
3601b3062210Smrg		    ;;
3602b3062210Smrg		  esac
3603b3062210Smrg	        fi
3604b3062210Smrg		if test -n "$i" ; then
3605b3062210Smrg		  libname=`eval \\$echo \"$libname_spec\"`
3606b3062210Smrg		  deplib_matches=`eval \\$echo \"$library_names_spec\"`
3607b3062210Smrg		  set dummy $deplib_matches
3608b3062210Smrg		  deplib_match=$2
3609b3062210Smrg		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3610b3062210Smrg		    newdeplibs="$newdeplibs $i"
3611b3062210Smrg		  else
3612b3062210Smrg		    droppeddeps=yes
3613b3062210Smrg		    $echo
3614b3062210Smrg		    $echo "*** Warning: dynamic linker does not accept needed library $i."
3615b3062210Smrg		    $echo "*** I have the capability to make that library automatically link in when"
3616b3062210Smrg		    $echo "*** you link to this library.  But I can only do this if you have a"
3617b3062210Smrg		    $echo "*** shared version of the library, which I believe you do not have"
3618b3062210Smrg		    $echo "*** because a test_compile did reveal that the linker did not use it for"
3619b3062210Smrg		    $echo "*** its dynamic dependency list that programs get resolved with at runtime."
3620b3062210Smrg		  fi
3621b3062210Smrg		fi
3622b3062210Smrg	      else
3623b3062210Smrg		newdeplibs="$newdeplibs $i"
3624b3062210Smrg	      fi
3625b3062210Smrg	    done
3626b3062210Smrg	  else
3627b3062210Smrg	    # Error occurred in the first compile.  Let's try to salvage
3628b3062210Smrg	    # the situation: Compile a separate program for each library.
3629b3062210Smrg	    for i in $deplibs; do
3630b3062210Smrg	      name=`expr $i : '-l\(.*\)'`
3631b3062210Smrg	      # If $name is empty we are operating on a -L argument.
3632b3062210Smrg              if test "$name" != "" && test "$name" != "0"; then
3633b3062210Smrg		$rm conftest
3634b3062210Smrg		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
3635b3062210Smrg		  ldd_output=`ldd conftest`
3636b3062210Smrg		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3637b3062210Smrg		    case " $predeps $postdeps " in
3638b3062210Smrg		    *" $i "*)
3639b3062210Smrg		      newdeplibs="$newdeplibs $i"
3640b3062210Smrg		      i=""
3641b3062210Smrg		      ;;
3642b3062210Smrg		    esac
3643b3062210Smrg		  fi
3644b3062210Smrg		  if test -n "$i" ; then
3645b3062210Smrg		    libname=`eval \\$echo \"$libname_spec\"`
3646b3062210Smrg		    deplib_matches=`eval \\$echo \"$library_names_spec\"`
3647b3062210Smrg		    set dummy $deplib_matches
3648b3062210Smrg		    deplib_match=$2
3649b3062210Smrg		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3650b3062210Smrg		      newdeplibs="$newdeplibs $i"
3651b3062210Smrg		    else
3652b3062210Smrg		      droppeddeps=yes
3653b3062210Smrg		      $echo
3654b3062210Smrg		      $echo "*** Warning: dynamic linker does not accept needed library $i."
3655b3062210Smrg		      $echo "*** I have the capability to make that library automatically link in when"
3656b3062210Smrg		      $echo "*** you link to this library.  But I can only do this if you have a"
3657b3062210Smrg		      $echo "*** shared version of the library, which you do not appear to have"
3658b3062210Smrg		      $echo "*** because a test_compile did reveal that the linker did not use this one"
3659b3062210Smrg		      $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
3660b3062210Smrg		    fi
3661b3062210Smrg		  fi
3662b3062210Smrg		else
3663b3062210Smrg		  droppeddeps=yes
3664b3062210Smrg		  $echo
3665b3062210Smrg		  $echo "*** Warning!  Library $i is needed by this library but I was not able to"
3666b3062210Smrg		  $echo "*** make it link in!  You will probably need to install it or some"
3667b3062210Smrg		  $echo "*** library that it depends on before this library will be fully"
3668b3062210Smrg		  $echo "*** functional.  Installing it before continuing would be even better."
3669b3062210Smrg		fi
3670b3062210Smrg	      else
3671b3062210Smrg		newdeplibs="$newdeplibs $i"
3672b3062210Smrg	      fi
3673b3062210Smrg	    done
3674b3062210Smrg	  fi
3675b3062210Smrg	  ;;
3676b3062210Smrg	file_magic*)
3677b3062210Smrg	  set dummy $deplibs_check_method
3678b3062210Smrg	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3679b3062210Smrg	  for a_deplib in $deplibs; do
3680b3062210Smrg	    name=`expr $a_deplib : '-l\(.*\)'`
3681b3062210Smrg	    # If $name is empty we are operating on a -L argument.
3682b3062210Smrg            if test "$name" != "" && test  "$name" != "0"; then
3683b3062210Smrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3684b3062210Smrg		case " $predeps $postdeps " in
3685b3062210Smrg		*" $a_deplib "*)
3686b3062210Smrg		  newdeplibs="$newdeplibs $a_deplib"
3687b3062210Smrg		  a_deplib=""
3688b3062210Smrg		  ;;
3689b3062210Smrg		esac
3690b3062210Smrg	      fi
3691b3062210Smrg	      if test -n "$a_deplib" ; then
3692b3062210Smrg		libname=`eval \\$echo \"$libname_spec\"`
3693b3062210Smrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3694b3062210Smrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3695b3062210Smrg		  for potent_lib in $potential_libs; do
3696b3062210Smrg		      # Follow soft links.
3697b3062210Smrg		      if ls -lLd "$potent_lib" 2>/dev/null \
3698b3062210Smrg			 | grep " -> " >/dev/null; then
3699b3062210Smrg			continue
3700b3062210Smrg		      fi
3701b3062210Smrg		      # The statement above tries to avoid entering an
3702b3062210Smrg		      # endless loop below, in case of cyclic links.
3703b3062210Smrg		      # We might still enter an endless loop, since a link
3704b3062210Smrg		      # loop can be closed while we follow links,
3705b3062210Smrg		      # but so what?
3706b3062210Smrg		      potlib="$potent_lib"
3707b3062210Smrg		      while test -h "$potlib" 2>/dev/null; do
3708b3062210Smrg			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
3709b3062210Smrg			case $potliblink in
3710b3062210Smrg			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
3711b3062210Smrg			*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
3712b3062210Smrg			esac
3713b3062210Smrg		      done
3714b3062210Smrg		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
3715b3062210Smrg			 | ${SED} 10q \
3716b3062210Smrg			 | $EGREP "$file_magic_regex" > /dev/null; then
3717b3062210Smrg			newdeplibs="$newdeplibs $a_deplib"
3718b3062210Smrg			a_deplib=""
3719b3062210Smrg			break 2
3720b3062210Smrg		      fi
3721b3062210Smrg		  done
3722b3062210Smrg		done
3723b3062210Smrg	      fi
3724b3062210Smrg	      if test -n "$a_deplib" ; then
3725b3062210Smrg		droppeddeps=yes
3726b3062210Smrg		$echo
3727b3062210Smrg		$echo "*** Warning: linker path does not have real file for library $a_deplib."
3728b3062210Smrg		$echo "*** I have the capability to make that library automatically link in when"
3729b3062210Smrg		$echo "*** you link to this library.  But I can only do this if you have a"
3730b3062210Smrg		$echo "*** shared version of the library, which you do not appear to have"
3731b3062210Smrg		$echo "*** because I did check the linker path looking for a file starting"
3732b3062210Smrg		if test -z "$potlib" ; then
3733b3062210Smrg		  $echo "*** with $libname but no candidates were found. (...for file magic test)"
3734b3062210Smrg		else
3735b3062210Smrg		  $echo "*** with $libname and none of the candidates passed a file format test"
3736b3062210Smrg		  $echo "*** using a file magic. Last file checked: $potlib"
3737b3062210Smrg		fi
3738b3062210Smrg	      fi
3739b3062210Smrg	    else
3740b3062210Smrg	      # Add a -L argument.
3741b3062210Smrg	      newdeplibs="$newdeplibs $a_deplib"
3742b3062210Smrg	    fi
3743b3062210Smrg	  done # Gone through all deplibs.
3744b3062210Smrg	  ;;
3745b3062210Smrg	match_pattern*)
3746b3062210Smrg	  set dummy $deplibs_check_method
3747b3062210Smrg	  match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3748b3062210Smrg	  for a_deplib in $deplibs; do
3749b3062210Smrg	    name=`expr $a_deplib : '-l\(.*\)'`
3750b3062210Smrg	    # If $name is empty we are operating on a -L argument.
3751b3062210Smrg	    if test -n "$name" && test "$name" != "0"; then
3752b3062210Smrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3753b3062210Smrg		case " $predeps $postdeps " in
3754b3062210Smrg		*" $a_deplib "*)
3755b3062210Smrg		  newdeplibs="$newdeplibs $a_deplib"
3756b3062210Smrg		  a_deplib=""
3757b3062210Smrg		  ;;
3758b3062210Smrg		esac
3759b3062210Smrg	      fi
3760b3062210Smrg	      if test -n "$a_deplib" ; then
3761b3062210Smrg		libname=`eval \\$echo \"$libname_spec\"`
3762b3062210Smrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3763b3062210Smrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3764b3062210Smrg		  for potent_lib in $potential_libs; do
3765b3062210Smrg		    potlib="$potent_lib" # see symlink-check above in file_magic test
3766b3062210Smrg		    if eval $echo \"$potent_lib\" 2>/dev/null \
3767b3062210Smrg		        | ${SED} 10q \
3768b3062210Smrg		        | $EGREP "$match_pattern_regex" > /dev/null; then
3769b3062210Smrg		      newdeplibs="$newdeplibs $a_deplib"
3770b3062210Smrg		      a_deplib=""
3771b3062210Smrg		      break 2
3772b3062210Smrg		    fi
3773b3062210Smrg		  done
3774b3062210Smrg		done
3775b3062210Smrg	      fi
3776b3062210Smrg	      if test -n "$a_deplib" ; then
3777b3062210Smrg		droppeddeps=yes
3778b3062210Smrg		$echo
3779b3062210Smrg		$echo "*** Warning: linker path does not have real file for library $a_deplib."
3780b3062210Smrg		$echo "*** I have the capability to make that library automatically link in when"
3781b3062210Smrg		$echo "*** you link to this library.  But I can only do this if you have a"
3782b3062210Smrg		$echo "*** shared version of the library, which you do not appear to have"
3783b3062210Smrg		$echo "*** because I did check the linker path looking for a file starting"
3784b3062210Smrg		if test -z "$potlib" ; then
3785b3062210Smrg		  $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
3786b3062210Smrg		else
3787b3062210Smrg		  $echo "*** with $libname and none of the candidates passed a file format test"
3788b3062210Smrg		  $echo "*** using a regex pattern. Last file checked: $potlib"
3789b3062210Smrg		fi
3790b3062210Smrg	      fi
3791b3062210Smrg	    else
3792b3062210Smrg	      # Add a -L argument.
3793b3062210Smrg	      newdeplibs="$newdeplibs $a_deplib"
3794b3062210Smrg	    fi
3795b3062210Smrg	  done # Gone through all deplibs.
3796b3062210Smrg	  ;;
3797b3062210Smrg	none | unknown | *)
3798b3062210Smrg	  newdeplibs=""
3799b3062210Smrg	  tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
3800b3062210Smrg	    -e 's/ -[LR][^ ]*//g'`
3801b3062210Smrg	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3802b3062210Smrg	    for i in $predeps $postdeps ; do
3803b3062210Smrg	      # can't use Xsed below, because $i might contain '/'
3804b3062210Smrg	      tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
3805b3062210Smrg	    done
3806b3062210Smrg	  fi
3807b3062210Smrg	  if $echo "X $tmp_deplibs" | $Xsed -e 's/[ 	]//g' \
3808b3062210Smrg	    | grep . >/dev/null; then
3809b3062210Smrg	    $echo
3810b3062210Smrg	    if test "X$deplibs_check_method" = "Xnone"; then
3811b3062210Smrg	      $echo "*** Warning: inter-library dependencies are not supported in this platform."
3812b3062210Smrg	    else
3813b3062210Smrg	      $echo "*** Warning: inter-library dependencies are not known to be supported."
3814b3062210Smrg	    fi
3815b3062210Smrg	    $echo "*** All declared inter-library dependencies are being dropped."
3816b3062210Smrg	    droppeddeps=yes
3817b3062210Smrg	  fi
3818b3062210Smrg	  ;;
3819b3062210Smrg	esac
3820b3062210Smrg	versuffix=$versuffix_save
3821b3062210Smrg	major=$major_save
3822b3062210Smrg	release=$release_save
3823b3062210Smrg	libname=$libname_save
3824b3062210Smrg	name=$name_save
382523a0898aSmrg
3826b3062210Smrg	case $host in
3827b3062210Smrg	*-*-rhapsody* | *-*-darwin1.[012])
3828b3062210Smrg	  # On Rhapsody replace the C library is the System framework
3829b3062210Smrg	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
3830b3062210Smrg	  ;;
3831b3062210Smrg	esac
383223a0898aSmrg
3833b3062210Smrg	if test "$droppeddeps" = yes; then
3834b3062210Smrg	  if test "$module" = yes; then
3835b3062210Smrg	    $echo
3836b3062210Smrg	    $echo "*** Warning: libtool could not satisfy all declared inter-library"
3837b3062210Smrg	    $echo "*** dependencies of module $libname.  Therefore, libtool will create"
3838b3062210Smrg	    $echo "*** a static module, that should work as long as the dlopening"
3839b3062210Smrg	    $echo "*** application is linked with the -dlopen flag."
3840b3062210Smrg	    if test -z "$global_symbol_pipe"; then
3841b3062210Smrg	      $echo
3842b3062210Smrg	      $echo "*** However, this would only work if libtool was able to extract symbol"
3843b3062210Smrg	      $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
3844b3062210Smrg	      $echo "*** not find such a program.  So, this module is probably useless."
3845b3062210Smrg	      $echo "*** \`nm' from GNU binutils and a full rebuild may help."
3846b3062210Smrg	    fi
3847b3062210Smrg	    if test "$build_old_libs" = no; then
3848b3062210Smrg	      oldlibs="$output_objdir/$libname.$libext"
3849b3062210Smrg	      build_libtool_libs=module
3850b3062210Smrg	      build_old_libs=yes
3851b3062210Smrg	    else
3852b3062210Smrg	      build_libtool_libs=no
3853b3062210Smrg	    fi
3854b3062210Smrg	  else
3855b3062210Smrg	    $echo "*** The inter-library dependencies that have been dropped here will be"
3856b3062210Smrg	    $echo "*** automatically added whenever a program is linked with this library"
3857b3062210Smrg	    $echo "*** or is declared to -dlopen it."
385823a0898aSmrg
3859b3062210Smrg	    if test "$allow_undefined" = no; then
3860b3062210Smrg	      $echo
3861b3062210Smrg	      $echo "*** Since this library must not contain undefined symbols,"
3862b3062210Smrg	      $echo "*** because either the platform does not support them or"
3863b3062210Smrg	      $echo "*** it was explicitly requested with -no-undefined,"
3864b3062210Smrg	      $echo "*** libtool will only create a static version of it."
3865b3062210Smrg	      if test "$build_old_libs" = no; then
3866b3062210Smrg		oldlibs="$output_objdir/$libname.$libext"
3867b3062210Smrg		build_libtool_libs=module
3868b3062210Smrg		build_old_libs=yes
3869b3062210Smrg	      else
3870b3062210Smrg		build_libtool_libs=no
3871b3062210Smrg	      fi
3872b3062210Smrg	    fi
3873b3062210Smrg	  fi
3874b3062210Smrg	fi
3875b3062210Smrg	# Done checking deplibs!
3876b3062210Smrg	deplibs=$newdeplibs
3877b3062210Smrg      fi
387823a0898aSmrg
387923a0898aSmrg
3880b3062210Smrg      # move library search paths that coincide with paths to not yet
3881b3062210Smrg      # installed libraries to the beginning of the library search list
3882b3062210Smrg      new_libs=
3883b3062210Smrg      for path in $notinst_path; do
3884b3062210Smrg	case " $new_libs " in
3885b3062210Smrg	*" -L$path/$objdir "*) ;;
3886b3062210Smrg	*)
3887b3062210Smrg	  case " $deplibs " in
3888b3062210Smrg	  *" -L$path/$objdir "*)
3889b3062210Smrg	    new_libs="$new_libs -L$path/$objdir" ;;
3890b3062210Smrg	  esac
3891b3062210Smrg	  ;;
3892b3062210Smrg	esac
3893b3062210Smrg      done
3894b3062210Smrg      for deplib in $deplibs; do
3895b3062210Smrg	case $deplib in
3896b3062210Smrg	-L*)
3897b3062210Smrg	  case " $new_libs " in
3898b3062210Smrg	  *" $deplib "*) ;;
3899b3062210Smrg	  *) new_libs="$new_libs $deplib" ;;
3900b3062210Smrg	  esac
3901b3062210Smrg	  ;;
3902b3062210Smrg	*) new_libs="$new_libs $deplib" ;;
3903b3062210Smrg	esac
3904b3062210Smrg      done
3905b3062210Smrg      deplibs="$new_libs"
390623a0898aSmrg
390723a0898aSmrg
3908b3062210Smrg      # All the library-specific variables (install_libdir is set above).
3909b3062210Smrg      library_names=
3910b3062210Smrg      old_library=
3911b3062210Smrg      dlname=
391223a0898aSmrg
3913b3062210Smrg      # Test again, we may have decided not to build it any more
3914b3062210Smrg      if test "$build_libtool_libs" = yes; then
3915b3062210Smrg	if test "$hardcode_into_libs" = yes; then
3916b3062210Smrg	  # Hardcode the library paths
3917b3062210Smrg	  hardcode_libdirs=
3918b3062210Smrg	  dep_rpath=
3919b3062210Smrg	  rpath="$finalize_rpath"
3920b3062210Smrg	  test "$mode" != relink && rpath="$compile_rpath$rpath"
3921b3062210Smrg	  for libdir in $rpath; do
3922b3062210Smrg	    if test -n "$hardcode_libdir_flag_spec"; then
3923b3062210Smrg	      if test -n "$hardcode_libdir_separator"; then
3924b3062210Smrg		if test -z "$hardcode_libdirs"; then
3925b3062210Smrg		  hardcode_libdirs="$libdir"
3926b3062210Smrg		else
3927b3062210Smrg		  # Just accumulate the unique libdirs.
3928b3062210Smrg		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
3929b3062210Smrg		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
3930b3062210Smrg		    ;;
3931b3062210Smrg		  *)
3932b3062210Smrg		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
3933b3062210Smrg		    ;;
3934b3062210Smrg		  esac
3935b3062210Smrg		fi
3936b3062210Smrg	      else
3937b3062210Smrg		eval flag=\"$hardcode_libdir_flag_spec\"
3938b3062210Smrg		dep_rpath="$dep_rpath $flag"
3939b3062210Smrg	      fi
3940b3062210Smrg	    elif test -n "$runpath_var"; then
3941b3062210Smrg	      case "$perm_rpath " in
3942b3062210Smrg	      *" $libdir "*) ;;
3943b3062210Smrg	      *) perm_rpath="$perm_rpath $libdir" ;;
3944b3062210Smrg	      esac
3945b3062210Smrg	    fi
3946b3062210Smrg	  done
3947b3062210Smrg	  # Substitute the hardcoded libdirs into the rpath.
3948b3062210Smrg	  if test -n "$hardcode_libdir_separator" &&
3949b3062210Smrg	     test -n "$hardcode_libdirs"; then
3950b3062210Smrg	    libdir="$hardcode_libdirs"
3951b3062210Smrg	    if test -n "$hardcode_libdir_flag_spec_ld"; then
3952b3062210Smrg	      case $archive_cmds in
3953b3062210Smrg	      *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;;
3954b3062210Smrg	      *)      eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;;
3955b3062210Smrg	      esac
3956b3062210Smrg	    else
3957b3062210Smrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
3958b3062210Smrg	    fi
3959b3062210Smrg	  fi
3960b3062210Smrg	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
3961b3062210Smrg	    # We should set the runpath_var.
3962b3062210Smrg	    rpath=
3963b3062210Smrg	    for dir in $perm_rpath; do
3964b3062210Smrg	      rpath="$rpath$dir:"
3965b3062210Smrg	    done
3966b3062210Smrg	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
3967b3062210Smrg	  fi
3968b3062210Smrg	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
3969b3062210Smrg	fi
397023a0898aSmrg
3971b3062210Smrg	shlibpath="$finalize_shlibpath"
3972b3062210Smrg	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
3973b3062210Smrg	if test -n "$shlibpath"; then
3974b3062210Smrg	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
3975b3062210Smrg	fi
397623a0898aSmrg
3977b3062210Smrg	# Get the real and link names of the library.
3978b3062210Smrg	eval shared_ext=\"$shrext_cmds\"
3979b3062210Smrg	eval library_names=\"$library_names_spec\"
3980b3062210Smrg	set dummy $library_names
3981b3062210Smrg	realname="$2"
3982b3062210Smrg	shift; shift
398323a0898aSmrg
3984b3062210Smrg	if test -n "$soname_spec"; then
3985b3062210Smrg	  eval soname=\"$soname_spec\"
3986b3062210Smrg	else
3987b3062210Smrg	  soname="$realname"
3988b3062210Smrg	fi
3989b3062210Smrg	if test -z "$dlname"; then
3990b3062210Smrg	  dlname=$soname
3991b3062210Smrg	fi
399223a0898aSmrg
3993b3062210Smrg	lib="$output_objdir/$realname"
3994b3062210Smrg	linknames=
3995b3062210Smrg	for link
3996b3062210Smrg	do
3997b3062210Smrg	  linknames="$linknames $link"
3998b3062210Smrg	done
399923a0898aSmrg
4000b3062210Smrg	# Use standard objects if they are pic
4001b3062210Smrg	test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
400223a0898aSmrg
4003b3062210Smrg	# Prepare the list of exported symbols
4004b3062210Smrg	if test -z "$export_symbols"; then
4005b3062210Smrg	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
4006b3062210Smrg	    $show "generating symbol list for \`$libname.la'"
4007b3062210Smrg	    export_symbols="$output_objdir/$libname.exp"
4008b3062210Smrg	    $run $rm $export_symbols
4009b3062210Smrg	    cmds=$export_symbols_cmds
4010b3062210Smrg	    save_ifs="$IFS"; IFS='~'
4011b3062210Smrg	    for cmd in $cmds; do
4012b3062210Smrg	      IFS="$save_ifs"
4013b3062210Smrg	      eval cmd=\"$cmd\"
4014b3062210Smrg	      if len=`expr "X$cmd" : ".*"` &&
4015b3062210Smrg	       test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
4016b3062210Smrg	        $show "$cmd"
4017b3062210Smrg	        $run eval "$cmd" || exit $?
4018b3062210Smrg	        skipped_export=false
4019b3062210Smrg	      else
4020b3062210Smrg	        # The command line is too long to execute in one step.
4021b3062210Smrg	        $show "using reloadable object file for export list..."
4022b3062210Smrg	        skipped_export=:
4023b3062210Smrg		# Break out early, otherwise skipped_export may be
4024b3062210Smrg		# set to false by a later but shorter cmd.
4025b3062210Smrg		break
4026b3062210Smrg	      fi
4027b3062210Smrg	    done
4028b3062210Smrg	    IFS="$save_ifs"
4029b3062210Smrg	    if test -n "$export_symbols_regex"; then
4030b3062210Smrg	      $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
4031b3062210Smrg	      $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
4032b3062210Smrg	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
4033b3062210Smrg	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
4034b3062210Smrg	    fi
4035b3062210Smrg	  fi
4036b3062210Smrg	fi
403723a0898aSmrg
4038b3062210Smrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
4039b3062210Smrg	  $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
4040b3062210Smrg	fi
404123a0898aSmrg
4042b3062210Smrg	tmp_deplibs=
4043b3062210Smrg	for test_deplib in $deplibs; do
4044b3062210Smrg		case " $convenience " in
4045b3062210Smrg		*" $test_deplib "*) ;;
4046b3062210Smrg		*)
4047b3062210Smrg			tmp_deplibs="$tmp_deplibs $test_deplib"
4048b3062210Smrg			;;
4049b3062210Smrg		esac
4050b3062210Smrg	done
4051b3062210Smrg	deplibs="$tmp_deplibs"
405223a0898aSmrg
4053b3062210Smrg	if test -n "$convenience"; then
4054b3062210Smrg	  if test -n "$whole_archive_flag_spec"; then
4055b3062210Smrg	    save_libobjs=$libobjs
4056b3062210Smrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
4057b3062210Smrg	  else
4058b3062210Smrg	    gentop="$output_objdir/${outputname}x"
4059b3062210Smrg	    generated="$generated $gentop"
406023a0898aSmrg
4061b3062210Smrg	    func_extract_archives $gentop $convenience
4062b3062210Smrg	    libobjs="$libobjs $func_extract_archives_result"
4063b3062210Smrg	  fi
4064b3062210Smrg	fi
4065b3062210Smrg	
4066b3062210Smrg	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
4067b3062210Smrg	  eval flag=\"$thread_safe_flag_spec\"
4068b3062210Smrg	  linker_flags="$linker_flags $flag"
4069b3062210Smrg	fi
407023a0898aSmrg
4071b3062210Smrg	# Make a backup of the uninstalled library when relinking
4072b3062210Smrg	if test "$mode" = relink; then
4073b3062210Smrg	  $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
4074b3062210Smrg	fi
407523a0898aSmrg
4076b3062210Smrg	# Do each of the archive commands.
4077b3062210Smrg	if test "$module" = yes && test -n "$module_cmds" ; then
4078b3062210Smrg	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
4079b3062210Smrg	    eval test_cmds=\"$module_expsym_cmds\"
4080b3062210Smrg	    cmds=$module_expsym_cmds
4081b3062210Smrg	  else
4082b3062210Smrg	    eval test_cmds=\"$module_cmds\"
4083b3062210Smrg	    cmds=$module_cmds
4084b3062210Smrg	  fi
4085b3062210Smrg	else
4086b3062210Smrg	if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
4087b3062210Smrg	  eval test_cmds=\"$archive_expsym_cmds\"
4088b3062210Smrg	  cmds=$archive_expsym_cmds
4089b3062210Smrg	else
4090b3062210Smrg	  eval test_cmds=\"$archive_cmds\"
4091b3062210Smrg	  cmds=$archive_cmds
4092b3062210Smrg	  fi
4093b3062210Smrg	fi
409423a0898aSmrg
4095b3062210Smrg	if test "X$skipped_export" != "X:" &&
4096b3062210Smrg	   len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
4097b3062210Smrg	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
4098b3062210Smrg	  :
4099b3062210Smrg	else
4100b3062210Smrg	  # The command line is too long to link in one step, link piecewise.
4101b3062210Smrg	  $echo "creating reloadable object files..."
410223a0898aSmrg
4103b3062210Smrg	  # Save the value of $output and $libobjs because we want to
4104b3062210Smrg	  # use them later.  If we have whole_archive_flag_spec, we
4105b3062210Smrg	  # want to use save_libobjs as it was before
4106b3062210Smrg	  # whole_archive_flag_spec was expanded, because we can't
4107b3062210Smrg	  # assume the linker understands whole_archive_flag_spec.
4108b3062210Smrg	  # This may have to be revisited, in case too many
4109b3062210Smrg	  # convenience libraries get linked in and end up exceeding
4110b3062210Smrg	  # the spec.
4111b3062210Smrg	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
4112b3062210Smrg	    save_libobjs=$libobjs
4113b3062210Smrg	  fi
4114b3062210Smrg	  save_output=$output
4115b3062210Smrg	  output_la=`$echo "X$output" | $Xsed -e "$basename"`
411623a0898aSmrg
4117b3062210Smrg	  # Clear the reloadable object creation command queue and
4118b3062210Smrg	  # initialize k to one.
4119b3062210Smrg	  test_cmds=
4120b3062210Smrg	  concat_cmds=
4121b3062210Smrg	  objlist=
4122b3062210Smrg	  delfiles=
4123b3062210Smrg	  last_robj=
4124b3062210Smrg	  k=1
4125b3062210Smrg	  output=$output_objdir/$output_la-${k}.$objext
4126b3062210Smrg	  # Loop over the list of objects to be linked.
4127b3062210Smrg	  for obj in $save_libobjs
4128b3062210Smrg	  do
4129b3062210Smrg	    eval test_cmds=\"$reload_cmds $objlist $last_robj\"
4130b3062210Smrg	    if test "X$objlist" = X ||
4131b3062210Smrg	       { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
4132b3062210Smrg		 test "$len" -le "$max_cmd_len"; }; then
4133b3062210Smrg	      objlist="$objlist $obj"
4134b3062210Smrg	    else
4135b3062210Smrg	      # The command $test_cmds is almost too long, add a
4136b3062210Smrg	      # command to the queue.
4137b3062210Smrg	      if test "$k" -eq 1 ; then
4138b3062210Smrg		# The first file doesn't have a previous command to add.
4139b3062210Smrg		eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
4140b3062210Smrg	      else
4141b3062210Smrg		# All subsequent reloadable object files will link in
4142b3062210Smrg		# the last one created.
4143b3062210Smrg		eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
4144b3062210Smrg	      fi
4145b3062210Smrg	      last_robj=$output_objdir/$output_la-${k}.$objext
4146b3062210Smrg	      k=`expr $k + 1`
4147b3062210Smrg	      output=$output_objdir/$output_la-${k}.$objext
4148b3062210Smrg	      objlist=$obj
4149b3062210Smrg	      len=1
4150b3062210Smrg	    fi
4151b3062210Smrg	  done
4152b3062210Smrg	  # Handle the remaining objects by creating one last
4153b3062210Smrg	  # reloadable object file.  All subsequent reloadable object
4154b3062210Smrg	  # files will link in the last one created.
4155b3062210Smrg	  test -z "$concat_cmds" || concat_cmds=$concat_cmds~
4156b3062210Smrg	  eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
4157b3062210Smrg
4158b3062210Smrg	  if ${skipped_export-false}; then
4159b3062210Smrg	    $show "generating symbol list for \`$libname.la'"
4160b3062210Smrg	    export_symbols="$output_objdir/$libname.exp"
4161b3062210Smrg	    $run $rm $export_symbols
4162b3062210Smrg	    libobjs=$output
4163b3062210Smrg	    # Append the command to create the export file.
4164b3062210Smrg	    eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
4165b3062210Smrg          fi
4166b3062210Smrg
4167b3062210Smrg	  # Set up a command to remove the reloadable object files
4168b3062210Smrg	  # after they are used.
4169b3062210Smrg	  i=0
4170b3062210Smrg	  while test "$i" -lt "$k"
4171b3062210Smrg	  do
4172b3062210Smrg	    i=`expr $i + 1`
4173b3062210Smrg	    delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
4174b3062210Smrg	  done
417523a0898aSmrg
4176b3062210Smrg	  $echo "creating a temporary reloadable object file: $output"
417723a0898aSmrg
4178b3062210Smrg	  # Loop through the commands generated above and execute them.
4179b3062210Smrg	  save_ifs="$IFS"; IFS='~'
4180b3062210Smrg	  for cmd in $concat_cmds; do
4181b3062210Smrg	    IFS="$save_ifs"
4182b3062210Smrg	    $show "$cmd"
4183b3062210Smrg	    $run eval "$cmd" || exit $?
4184b3062210Smrg	  done
4185b3062210Smrg	  IFS="$save_ifs"
418623a0898aSmrg
4187b3062210Smrg	  libobjs=$output
4188b3062210Smrg	  # Restore the value of output.
4189b3062210Smrg	  output=$save_output
419023a0898aSmrg
4191b3062210Smrg	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
4192b3062210Smrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
4193b3062210Smrg	  fi
4194b3062210Smrg	  # Expand the library linking commands again to reset the
4195b3062210Smrg	  # value of $libobjs for piecewise linking.
419623a0898aSmrg
4197b3062210Smrg	  # Do each of the archive commands.
4198b3062210Smrg	  if test "$module" = yes && test -n "$module_cmds" ; then
4199b3062210Smrg	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
4200b3062210Smrg	      cmds=$module_expsym_cmds
4201b3062210Smrg	    else
4202b3062210Smrg	      cmds=$module_cmds
4203b3062210Smrg	    fi
4204b3062210Smrg	  else
4205b3062210Smrg	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
4206b3062210Smrg	    cmds=$archive_expsym_cmds
4207b3062210Smrg	  else
4208b3062210Smrg	    cmds=$archive_cmds
4209b3062210Smrg	    fi
4210b3062210Smrg	  fi
421123a0898aSmrg
4212b3062210Smrg	  # Append the command to remove the reloadable object files
4213b3062210Smrg	  # to the just-reset $cmds.
4214b3062210Smrg	  eval cmds=\"\$cmds~\$rm $delfiles\"
4215b3062210Smrg	fi
4216b3062210Smrg	save_ifs="$IFS"; IFS='~'
4217b3062210Smrg	for cmd in $cmds; do
4218b3062210Smrg	  IFS="$save_ifs"
4219b3062210Smrg	  eval cmd=\"$cmd\"
4220b3062210Smrg	  $show "$cmd"
4221b3062210Smrg	  $run eval "$cmd" || {
4222b3062210Smrg	    lt_exit=$?
422323a0898aSmrg
4224b3062210Smrg	    # Restore the uninstalled library and exit
4225b3062210Smrg	    if test "$mode" = relink; then
4226b3062210Smrg	      $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
4227b3062210Smrg	    fi
422823a0898aSmrg
4229b3062210Smrg	    exit $lt_exit
4230b3062210Smrg	  }
4231b3062210Smrg	done
4232b3062210Smrg	IFS="$save_ifs"
4233b3062210Smrg
4234b3062210Smrg	# Restore the uninstalled library and exit
4235b3062210Smrg	if test "$mode" = relink; then
4236b3062210Smrg	  $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
4237b3062210Smrg
4238b3062210Smrg	  if test -n "$convenience"; then
4239b3062210Smrg	    if test -z "$whole_archive_flag_spec"; then
4240b3062210Smrg	      $show "${rm}r $gentop"
4241b3062210Smrg	      $run ${rm}r "$gentop"
4242b3062210Smrg	    fi
4243b3062210Smrg	  fi
4244b3062210Smrg
4245b3062210Smrg	  exit $EXIT_SUCCESS
4246b3062210Smrg	fi
4247b3062210Smrg
4248b3062210Smrg	# Create links to the real library.
4249b3062210Smrg	for linkname in $linknames; do
4250b3062210Smrg	  if test "$realname" != "$linkname"; then
4251b3062210Smrg	    $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
4252b3062210Smrg	    $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
4253b3062210Smrg	  fi
4254b3062210Smrg	done
4255b3062210Smrg
4256b3062210Smrg	# If -module or -export-dynamic was specified, set the dlname.
4257b3062210Smrg	if test "$module" = yes || test "$export_dynamic" = yes; then
4258b3062210Smrg	  # On all known operating systems, these are identical.
4259b3062210Smrg	  dlname="$soname"
4260b3062210Smrg	fi
4261b3062210Smrg      fi
42627f7f5e4eSmrg      ;;
426323a0898aSmrg
4264b3062210Smrg    obj)
4265b3062210Smrg      case " $deplibs" in
4266b3062210Smrg      *\ -l* | *\ -L*)
4267b3062210Smrg	$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;;
4268b3062210Smrg      esac
426923a0898aSmrg
4270b3062210Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
4271b3062210Smrg	$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
4272b3062210Smrg      fi
427323a0898aSmrg
4274b3062210Smrg      if test -n "$rpath"; then
4275b3062210Smrg	$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
4276b3062210Smrg      fi
4277b3062210Smrg
4278b3062210Smrg      if test -n "$xrpath"; then
4279b3062210Smrg	$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
4280b3062210Smrg      fi
4281b3062210Smrg
4282b3062210Smrg      if test -n "$vinfo"; then
4283b3062210Smrg	$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
4284b3062210Smrg      fi
4285b3062210Smrg
4286b3062210Smrg      if test -n "$release"; then
4287b3062210Smrg	$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
4288b3062210Smrg      fi
4289b3062210Smrg
4290b3062210Smrg      case $output in
4291b3062210Smrg      *.lo)
4292b3062210Smrg	if test -n "$objs$old_deplibs"; then
4293b3062210Smrg	  $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
4294b3062210Smrg	  exit $EXIT_FAILURE
4295b3062210Smrg	fi
4296b3062210Smrg	libobj="$output"
4297b3062210Smrg	obj=`$echo "X$output" | $Xsed -e "$lo2o"`
42987f7f5e4eSmrg	;;
4299b3062210Smrg      *)
4300b3062210Smrg	libobj=
4301b3062210Smrg	obj="$output"
430223a0898aSmrg	;;
430323a0898aSmrg      esac
430423a0898aSmrg
4305b3062210Smrg      # Delete the old objects.
4306b3062210Smrg      $run $rm $obj $libobj
430723a0898aSmrg
4308b3062210Smrg      # Objects from convenience libraries.  This assumes
4309b3062210Smrg      # single-version convenience libraries.  Whenever we create
4310b3062210Smrg      # different ones for PIC/non-PIC, this we'll have to duplicate
4311b3062210Smrg      # the extraction.
4312b3062210Smrg      reload_conv_objs=
4313b3062210Smrg      gentop=
4314b3062210Smrg      # reload_cmds runs $LD directly, so let us get rid of
4315b3062210Smrg      # -Wl from whole_archive_flag_spec and hope we can get by with
4316b3062210Smrg      # turning comma into space..
4317b3062210Smrg      wl=
431823a0898aSmrg
4319b3062210Smrg      if test -n "$convenience"; then
4320b3062210Smrg	if test -n "$whole_archive_flag_spec"; then
4321b3062210Smrg	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
4322b3062210Smrg	  reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
4323b3062210Smrg	else
4324b3062210Smrg	  gentop="$output_objdir/${obj}x"
4325b3062210Smrg	  generated="$generated $gentop"
432623a0898aSmrg
4327b3062210Smrg	  func_extract_archives $gentop $convenience
4328b3062210Smrg	  reload_conv_objs="$reload_objs $func_extract_archives_result"
4329b3062210Smrg	fi
4330b3062210Smrg      fi
433123a0898aSmrg
4332b3062210Smrg      # Create the old-style object.
4333b3062210Smrg      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
433423a0898aSmrg
4335b3062210Smrg      output="$obj"
4336b3062210Smrg      cmds=$reload_cmds
4337b3062210Smrg      save_ifs="$IFS"; IFS='~'
4338b3062210Smrg      for cmd in $cmds; do
4339b3062210Smrg	IFS="$save_ifs"
4340b3062210Smrg	eval cmd=\"$cmd\"
4341b3062210Smrg	$show "$cmd"
4342b3062210Smrg	$run eval "$cmd" || exit $?
4343b3062210Smrg      done
4344b3062210Smrg      IFS="$save_ifs"
434523a0898aSmrg
4346b3062210Smrg      # Exit if we aren't doing a library object file.
4347b3062210Smrg      if test -z "$libobj"; then
4348b3062210Smrg	if test -n "$gentop"; then
4349b3062210Smrg	  $show "${rm}r $gentop"
4350b3062210Smrg	  $run ${rm}r $gentop
4351b3062210Smrg	fi
435223a0898aSmrg
4353b3062210Smrg	exit $EXIT_SUCCESS
4354b3062210Smrg      fi
435523a0898aSmrg
4356b3062210Smrg      if test "$build_libtool_libs" != yes; then
4357b3062210Smrg	if test -n "$gentop"; then
4358b3062210Smrg	  $show "${rm}r $gentop"
4359b3062210Smrg	  $run ${rm}r $gentop
4360b3062210Smrg	fi
436123a0898aSmrg
4362b3062210Smrg	# Create an invalid libtool object if no PIC, so that we don't
4363b3062210Smrg	# accidentally link it into a program.
4364b3062210Smrg	# $show "echo timestamp > $libobj"
4365b3062210Smrg	# $run eval "echo timestamp > $libobj" || exit $?
4366b3062210Smrg	exit $EXIT_SUCCESS
4367b3062210Smrg      fi
436823a0898aSmrg
4369b3062210Smrg      if test -n "$pic_flag" || test "$pic_mode" != default; then
4370b3062210Smrg	# Only do commands if we really have different PIC objects.
4371b3062210Smrg	reload_objs="$libobjs $reload_conv_objs"
4372b3062210Smrg	output="$libobj"
4373b3062210Smrg	cmds=$reload_cmds
4374b3062210Smrg	save_ifs="$IFS"; IFS='~'
4375b3062210Smrg	for cmd in $cmds; do
4376b3062210Smrg	  IFS="$save_ifs"
4377b3062210Smrg	  eval cmd=\"$cmd\"
4378b3062210Smrg	  $show "$cmd"
4379b3062210Smrg	  $run eval "$cmd" || exit $?
4380b3062210Smrg	done
4381b3062210Smrg	IFS="$save_ifs"
4382b3062210Smrg      fi
438323a0898aSmrg
4384b3062210Smrg      if test -n "$gentop"; then
4385b3062210Smrg	$show "${rm}r $gentop"
4386b3062210Smrg	$run ${rm}r $gentop
4387b3062210Smrg      fi
438823a0898aSmrg
4389b3062210Smrg      exit $EXIT_SUCCESS
4390b3062210Smrg      ;;
439123a0898aSmrg
4392b3062210Smrg    prog)
4393b3062210Smrg      case $host in
4394b3062210Smrg	*cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
4395b3062210Smrg      esac
4396b3062210Smrg      if test -n "$vinfo"; then
4397b3062210Smrg	$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
4398b3062210Smrg      fi
439923a0898aSmrg
4400b3062210Smrg      if test -n "$release"; then
4401b3062210Smrg	$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
4402b3062210Smrg      fi
440323a0898aSmrg
4404b3062210Smrg      if test "$preload" = yes; then
4405b3062210Smrg	if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
4406b3062210Smrg	   test "$dlopen_self_static" = unknown; then
4407b3062210Smrg	  $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
440823a0898aSmrg	fi
4409b3062210Smrg      fi
441023a0898aSmrg
4411b3062210Smrg      case $host in
4412b3062210Smrg      *-*-rhapsody* | *-*-darwin1.[012])
4413b3062210Smrg	# On Rhapsody replace the C library is the System framework
4414b3062210Smrg	compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
4415b3062210Smrg	finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
44167f7f5e4eSmrg	;;
4417b3062210Smrg      esac
441823a0898aSmrg
4419b3062210Smrg      case $host in
4420b3062210Smrg      *darwin*)
4421b3062210Smrg        # Don't allow lazy linking, it breaks C++ global constructors
4422b3062210Smrg        if test "$tagname" = CXX ; then
4423b3062210Smrg        compile_command="$compile_command ${wl}-bind_at_load"
4424b3062210Smrg        finalize_command="$finalize_command ${wl}-bind_at_load"
4425b3062210Smrg        fi
4426b3062210Smrg        ;;
4427b3062210Smrg      esac
442823a0898aSmrg
442923a0898aSmrg
4430b3062210Smrg      # move library search paths that coincide with paths to not yet
4431b3062210Smrg      # installed libraries to the beginning of the library search list
4432b3062210Smrg      new_libs=
4433b3062210Smrg      for path in $notinst_path; do
4434b3062210Smrg	case " $new_libs " in
4435b3062210Smrg	*" -L$path/$objdir "*) ;;
4436b3062210Smrg	*)
4437b3062210Smrg	  case " $compile_deplibs " in
4438b3062210Smrg	  *" -L$path/$objdir "*)
4439b3062210Smrg	    new_libs="$new_libs -L$path/$objdir" ;;
4440b3062210Smrg	  esac
4441b3062210Smrg	  ;;
4442b3062210Smrg	esac
4443b3062210Smrg      done
4444b3062210Smrg      for deplib in $compile_deplibs; do
4445b3062210Smrg	case $deplib in
4446b3062210Smrg	-L*)
4447b3062210Smrg	  case " $new_libs " in
4448b3062210Smrg	  *" $deplib "*) ;;
4449b3062210Smrg	  *) new_libs="$new_libs $deplib" ;;
4450b3062210Smrg	  esac
4451b3062210Smrg	  ;;
4452b3062210Smrg	*) new_libs="$new_libs $deplib" ;;
4453b3062210Smrg	esac
4454b3062210Smrg      done
4455b3062210Smrg      compile_deplibs="$new_libs"
445623a0898aSmrg
445723a0898aSmrg
4458b3062210Smrg      compile_command="$compile_command $compile_deplibs"
4459b3062210Smrg      finalize_command="$finalize_command $finalize_deplibs"
446023a0898aSmrg
4461b3062210Smrg      if test -n "$rpath$xrpath"; then
4462b3062210Smrg	# If the user specified any rpath flags, then add them.
4463b3062210Smrg	for libdir in $rpath $xrpath; do
4464b3062210Smrg	  # This is the magic to use -rpath.
4465b3062210Smrg	  case "$finalize_rpath " in
4466b3062210Smrg	  *" $libdir "*) ;;
4467b3062210Smrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
4468b3062210Smrg	  esac
4469b3062210Smrg	done
4470b3062210Smrg      fi
447123a0898aSmrg
4472b3062210Smrg      # Now hardcode the library paths
4473b3062210Smrg      rpath=
4474b3062210Smrg      hardcode_libdirs=
4475b3062210Smrg      for libdir in $compile_rpath $finalize_rpath; do
4476b3062210Smrg	if test -n "$hardcode_libdir_flag_spec"; then
4477b3062210Smrg	  if test -n "$hardcode_libdir_separator"; then
4478b3062210Smrg	    if test -z "$hardcode_libdirs"; then
4479b3062210Smrg	      hardcode_libdirs="$libdir"
4480b3062210Smrg	    else
4481b3062210Smrg	      # Just accumulate the unique libdirs.
4482b3062210Smrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4483b3062210Smrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4484b3062210Smrg		;;
4485b3062210Smrg	      *)
4486b3062210Smrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4487b3062210Smrg		;;
4488b3062210Smrg	      esac
4489b3062210Smrg	    fi
449023a0898aSmrg	  else
4491b3062210Smrg	    eval flag=\"$hardcode_libdir_flag_spec\"
4492b3062210Smrg	    rpath="$rpath $flag"
449323a0898aSmrg	  fi
4494b3062210Smrg	elif test -n "$runpath_var"; then
4495b3062210Smrg	  case "$perm_rpath " in
4496b3062210Smrg	  *" $libdir "*) ;;
4497b3062210Smrg	  *) perm_rpath="$perm_rpath $libdir" ;;
4498b3062210Smrg	  esac
44997f7f5e4eSmrg	fi
450023a0898aSmrg	case $host in
4501b3062210Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
4502b3062210Smrg	  testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
45037f7f5e4eSmrg	  case :$dllsearchpath: in
4504b3062210Smrg	  *":$libdir:"*) ;;
4505b3062210Smrg	  *) dllsearchpath="$dllsearchpath:$libdir";;
45067f7f5e4eSmrg	  esac
45077f7f5e4eSmrg	  case :$dllsearchpath: in
45087f7f5e4eSmrg	  *":$testbindir:"*) ;;
45097f7f5e4eSmrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
45107f7f5e4eSmrg	  esac
45117f7f5e4eSmrg	  ;;
451223a0898aSmrg	esac
4513b3062210Smrg      done
4514b3062210Smrg      # Substitute the hardcoded libdirs into the rpath.
4515b3062210Smrg      if test -n "$hardcode_libdir_separator" &&
4516b3062210Smrg	 test -n "$hardcode_libdirs"; then
4517b3062210Smrg	libdir="$hardcode_libdirs"
4518b3062210Smrg	eval rpath=\" $hardcode_libdir_flag_spec\"
4519b3062210Smrg      fi
4520b3062210Smrg      compile_rpath="$rpath"
452123a0898aSmrg
4522b3062210Smrg      rpath=
4523b3062210Smrg      hardcode_libdirs=
4524b3062210Smrg      for libdir in $finalize_rpath; do
4525b3062210Smrg	if test -n "$hardcode_libdir_flag_spec"; then
4526b3062210Smrg	  if test -n "$hardcode_libdir_separator"; then
4527b3062210Smrg	    if test -z "$hardcode_libdirs"; then
4528b3062210Smrg	      hardcode_libdirs="$libdir"
4529b3062210Smrg	    else
4530b3062210Smrg	      # Just accumulate the unique libdirs.
4531b3062210Smrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4532b3062210Smrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4533b3062210Smrg		;;
4534b3062210Smrg	      *)
4535b3062210Smrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4536b3062210Smrg		;;
4537b3062210Smrg	      esac
4538b3062210Smrg	    fi
4539b3062210Smrg	  else
4540b3062210Smrg	    eval flag=\"$hardcode_libdir_flag_spec\"
4541b3062210Smrg	    rpath="$rpath $flag"
4542b3062210Smrg	  fi
4543b3062210Smrg	elif test -n "$runpath_var"; then
4544b3062210Smrg	  case "$finalize_perm_rpath " in
4545b3062210Smrg	  *" $libdir "*) ;;
4546b3062210Smrg	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
45477f7f5e4eSmrg	  esac
45487f7f5e4eSmrg	fi
4549b3062210Smrg      done
4550b3062210Smrg      # Substitute the hardcoded libdirs into the rpath.
4551b3062210Smrg      if test -n "$hardcode_libdir_separator" &&
4552b3062210Smrg	 test -n "$hardcode_libdirs"; then
4553b3062210Smrg	libdir="$hardcode_libdirs"
4554b3062210Smrg	eval rpath=\" $hardcode_libdir_flag_spec\"
4555b3062210Smrg      fi
4556b3062210Smrg      finalize_rpath="$rpath"
455723a0898aSmrg
4558b3062210Smrg      if test -n "$libobjs" && test "$build_old_libs" = yes; then
4559b3062210Smrg	# Transform all the library objects into standard objects.
4560b3062210Smrg	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4561b3062210Smrg	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4562b3062210Smrg      fi
456323a0898aSmrg
4564b3062210Smrg      dlsyms=
4565b3062210Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
4566b3062210Smrg	if test -n "$NM" && test -n "$global_symbol_pipe"; then
4567b3062210Smrg	  dlsyms="${outputname}S.c"
4568b3062210Smrg	else
4569b3062210Smrg	  $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
4570b3062210Smrg	fi
4571b3062210Smrg      fi
457223a0898aSmrg
4573b3062210Smrg      if test -n "$dlsyms"; then
4574b3062210Smrg	case $dlsyms in
4575b3062210Smrg	"") ;;
4576b3062210Smrg	*.c)
4577b3062210Smrg	  # Discover the nlist of each of the dlfiles.
4578b3062210Smrg	  nlist="$output_objdir/${outputname}.nm"
457923a0898aSmrg
4580b3062210Smrg	  $show "$rm $nlist ${nlist}S ${nlist}T"
4581b3062210Smrg	  $run $rm "$nlist" "${nlist}S" "${nlist}T"
458223a0898aSmrg
4583b3062210Smrg	  # Parse the name list into a source file.
4584b3062210Smrg	  $show "creating $output_objdir/$dlsyms"
458523a0898aSmrg
4586b3062210Smrg	  test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
4587b3062210Smrg/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
4588b3062210Smrg/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
458923a0898aSmrg
4590b3062210Smrg#ifdef __cplusplus
4591b3062210Smrgextern \"C\" {
4592b3062210Smrg#endif
459323a0898aSmrg
4594b3062210Smrg/* Prevent the only kind of declaration conflicts we can make. */
4595b3062210Smrg#define lt_preloaded_symbols some_other_symbol
459623a0898aSmrg
4597b3062210Smrg/* External symbol declarations for the compiler. */\
4598b3062210Smrg"
459923a0898aSmrg
4600b3062210Smrg	  if test "$dlself" = yes; then
4601b3062210Smrg	    $show "generating symbol list for \`$output'"
460223a0898aSmrg
4603b3062210Smrg	    test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
460423a0898aSmrg
4605b3062210Smrg	    # Add our own program objects to the symbol list.
4606b3062210Smrg	    progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4607b3062210Smrg	    for arg in $progfiles; do
4608b3062210Smrg	      $show "extracting global C symbols from \`$arg'"
4609b3062210Smrg	      $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4610b3062210Smrg	    done
461123a0898aSmrg
4612b3062210Smrg	    if test -n "$exclude_expsyms"; then
4613b3062210Smrg	      $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
4614b3062210Smrg	      $run eval '$mv "$nlist"T "$nlist"'
4615b3062210Smrg	    fi
461623a0898aSmrg
4617b3062210Smrg	    if test -n "$export_symbols_regex"; then
4618b3062210Smrg	      $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
4619b3062210Smrg	      $run eval '$mv "$nlist"T "$nlist"'
4620b3062210Smrg	    fi
462123a0898aSmrg
4622b3062210Smrg	    # Prepare the list of exported symbols
4623b3062210Smrg	    if test -z "$export_symbols"; then
4624b3062210Smrg	      export_symbols="$output_objdir/$outputname.exp"
4625b3062210Smrg	      $run $rm $export_symbols
4626b3062210Smrg	      $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
4627b3062210Smrg              case $host in
4628b3062210Smrg              *cygwin* | *mingw* )
4629b3062210Smrg	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4630b3062210Smrg		$run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
4631b3062210Smrg                ;;
4632b3062210Smrg              esac
4633b3062210Smrg	    else
4634b3062210Smrg	      $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
4635b3062210Smrg	      $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
4636b3062210Smrg	      $run eval 'mv "$nlist"T "$nlist"'
4637b3062210Smrg              case $host in
4638b3062210Smrg              *cygwin* | *mingw* )
4639b3062210Smrg	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4640b3062210Smrg		$run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
4641b3062210Smrg                ;;
4642b3062210Smrg              esac
4643b3062210Smrg	    fi
4644b3062210Smrg	  fi
464523a0898aSmrg
4646b3062210Smrg	  for arg in $dlprefiles; do
4647b3062210Smrg	    $show "extracting global C symbols from \`$arg'"
4648b3062210Smrg	    name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
4649b3062210Smrg	    $run eval '$echo ": $name " >> "$nlist"'
4650b3062210Smrg	    $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4651b3062210Smrg	  done
465223a0898aSmrg
4653b3062210Smrg	  if test -z "$run"; then
4654b3062210Smrg	    # Make sure we have at least an empty file.
4655b3062210Smrg	    test -f "$nlist" || : > "$nlist"
465623a0898aSmrg
4657b3062210Smrg	    if test -n "$exclude_expsyms"; then
4658b3062210Smrg	      $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
4659b3062210Smrg	      $mv "$nlist"T "$nlist"
4660b3062210Smrg	    fi
466123a0898aSmrg
4662b3062210Smrg	    # Try sorting and uniquifying the output.
4663b3062210Smrg	    if grep -v "^: " < "$nlist" |
4664b3062210Smrg		if sort -k 3 </dev/null >/dev/null 2>&1; then
4665b3062210Smrg		  sort -k 3
4666b3062210Smrg		else
4667b3062210Smrg		  sort +2
4668b3062210Smrg		fi |
4669b3062210Smrg		uniq > "$nlist"S; then
4670b3062210Smrg	      :
4671b3062210Smrg	    else
4672b3062210Smrg	      grep -v "^: " < "$nlist" > "$nlist"S
4673b3062210Smrg	    fi
467423a0898aSmrg
4675b3062210Smrg	    if test -f "$nlist"S; then
4676b3062210Smrg	      eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
4677b3062210Smrg	    else
4678b3062210Smrg	      $echo '/* NONE */' >> "$output_objdir/$dlsyms"
4679b3062210Smrg	    fi
468023a0898aSmrg
4681b3062210Smrg	    $echo >> "$output_objdir/$dlsyms" "\
468223a0898aSmrg
4683b3062210Smrg#undef lt_preloaded_symbols
468423a0898aSmrg
4685b3062210Smrg#if defined (__STDC__) && __STDC__
4686b3062210Smrg# define lt_ptr void *
4687b3062210Smrg#else
4688b3062210Smrg# define lt_ptr char *
4689b3062210Smrg# define const
4690b3062210Smrg#endif
469123a0898aSmrg
4692b3062210Smrg/* The mapping between symbol names and symbols. */
4693b3062210Smrg"
469423a0898aSmrg
4695b3062210Smrg	    case $host in
4696b3062210Smrg	    *cygwin* | *mingw* )
4697b3062210Smrg	  $echo >> "$output_objdir/$dlsyms" "\
4698b3062210Smrg/* DATA imports from DLLs on WIN32 can't be const, because
4699b3062210Smrg   runtime relocations are performed -- see ld's documentation
4700b3062210Smrg   on pseudo-relocs */
4701b3062210Smrgstruct {
4702b3062210Smrg"
4703b3062210Smrg	      ;;
4704b3062210Smrg	    * )
4705b3062210Smrg	  $echo >> "$output_objdir/$dlsyms" "\
4706b3062210Smrgconst struct {
4707b3062210Smrg"
4708b3062210Smrg	      ;;
4709b3062210Smrg	    esac
471023a0898aSmrg
471123a0898aSmrg
4712b3062210Smrg	  $echo >> "$output_objdir/$dlsyms" "\
4713b3062210Smrg  const char *name;
4714b3062210Smrg  lt_ptr address;
4715b3062210Smrg}
4716b3062210Smrglt_preloaded_symbols[] =
4717b3062210Smrg{\
4718b3062210Smrg"
471923a0898aSmrg
4720b3062210Smrg	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
472123a0898aSmrg
4722b3062210Smrg	    $echo >> "$output_objdir/$dlsyms" "\
4723b3062210Smrg  {0, (lt_ptr) 0}
4724b3062210Smrg};
472523a0898aSmrg
4726b3062210Smrg/* This works around a problem in FreeBSD linker */
4727b3062210Smrg#ifdef FREEBSD_WORKAROUND
4728b3062210Smrgstatic const void *lt_preloaded_setup() {
4729b3062210Smrg  return lt_preloaded_symbols;
4730b3062210Smrg}
4731b3062210Smrg#endif
473223a0898aSmrg
4733b3062210Smrg#ifdef __cplusplus
4734b3062210Smrg}
4735b3062210Smrg#endif\
4736b3062210Smrg"
47377f7f5e4eSmrg	  fi
473823a0898aSmrg
4739b3062210Smrg	  pic_flag_for_symtable=
4740b3062210Smrg	  case $host in
4741b3062210Smrg	  # compiling the symbol table file with pic_flag works around
4742b3062210Smrg	  # a FreeBSD bug that causes programs to crash when -lm is
4743b3062210Smrg	  # linked before any other PIC object.  But we must not use
4744b3062210Smrg	  # pic_flag when linking with -static.  The problem exists in
4745b3062210Smrg	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
4746b3062210Smrg	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
4747b3062210Smrg	    case "$compile_command " in
4748b3062210Smrg	    *" -static "*) ;;
4749b3062210Smrg	    *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
4750b3062210Smrg	    esac;;
4751b3062210Smrg	  *-*-hpux*)
4752b3062210Smrg	    case "$compile_command " in
4753b3062210Smrg	    *" -static "*) ;;
4754b3062210Smrg	    *) pic_flag_for_symtable=" $pic_flag";;
4755b3062210Smrg	    esac
4756b3062210Smrg	  esac
475723a0898aSmrg
4758b3062210Smrg	  # Now compile the dynamic symbol file.
4759b3062210Smrg	  $show "(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
4760b3062210Smrg	  $run eval '(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
476123a0898aSmrg
4762b3062210Smrg	  # Clean up the generated files.
4763b3062210Smrg	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
4764b3062210Smrg	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
476523a0898aSmrg
4766b3062210Smrg	  # Transform the symbol file into the correct name.
4767b3062210Smrg          case $host in
4768b3062210Smrg          *cygwin* | *mingw* )
4769b3062210Smrg            if test -f "$output_objdir/${outputname}.def" ; then
4770b3062210Smrg              compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
4771b3062210Smrg              finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
4772b3062210Smrg            else
4773b3062210Smrg              compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4774b3062210Smrg              finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4775b3062210Smrg             fi
4776b3062210Smrg            ;;
4777b3062210Smrg          * )
4778b3062210Smrg            compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4779b3062210Smrg            finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4780b3062210Smrg            ;;
4781b3062210Smrg          esac
4782b3062210Smrg	  ;;
4783b3062210Smrg	*)
4784b3062210Smrg	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
4785b3062210Smrg	  exit $EXIT_FAILURE
4786b3062210Smrg	  ;;
4787b3062210Smrg	esac
4788b3062210Smrg      else
4789b3062210Smrg	# We keep going just in case the user didn't refer to
4790b3062210Smrg	# lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
4791b3062210Smrg	# really was required.
479223a0898aSmrg
4793b3062210Smrg	# Nullify the symbol file.
4794b3062210Smrg	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
4795b3062210Smrg	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
4796b3062210Smrg      fi
479723a0898aSmrg
4798b3062210Smrg      if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
4799b3062210Smrg	# Replace the output file specification.
4800b3062210Smrg	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP`
4801b3062210Smrg	link_command="$compile_command$compile_rpath"
480223a0898aSmrg
4803b3062210Smrg	# We have no uninstalled library dependencies, so finalize right now.
4804b3062210Smrg	$show "$link_command"
4805b3062210Smrg	$run eval "$link_command"
4806b3062210Smrg	exit_status=$?
480723a0898aSmrg
4808b3062210Smrg	# Delete the generated files.
4809b3062210Smrg	if test -n "$dlsyms"; then
4810b3062210Smrg	  $show "$rm $output_objdir/${outputname}S.${objext}"
4811b3062210Smrg	  $run $rm "$output_objdir/${outputname}S.${objext}"
48127f7f5e4eSmrg	fi
481323a0898aSmrg
4814b3062210Smrg	exit $exit_status
4815b3062210Smrg      fi
481623a0898aSmrg
4817b3062210Smrg      if test -n "$shlibpath_var"; then
4818b3062210Smrg	# We should set the shlibpath_var
4819b3062210Smrg	rpath=
4820b3062210Smrg	for dir in $temp_rpath; do
4821b3062210Smrg	  case $dir in
4822b3062210Smrg	  [\\/]* | [A-Za-z]:[\\/]*)
4823b3062210Smrg	    # Absolute path.
4824b3062210Smrg	    rpath="$rpath$dir:"
4825b3062210Smrg	    ;;
4826b3062210Smrg	  *)
4827b3062210Smrg	    # Relative path: add a thisdir entry.
4828b3062210Smrg	    rpath="$rpath\$thisdir/$dir:"
4829b3062210Smrg	    ;;
4830b3062210Smrg	  esac
4831b3062210Smrg	done
4832b3062210Smrg	temp_rpath="$rpath"
48337f7f5e4eSmrg      fi
483423a0898aSmrg
4835b3062210Smrg      if test -n "$compile_shlibpath$finalize_shlibpath"; then
4836b3062210Smrg	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
4837b3062210Smrg      fi
4838b3062210Smrg      if test -n "$finalize_shlibpath"; then
4839b3062210Smrg	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
4840b3062210Smrg      fi
484123a0898aSmrg
4842b3062210Smrg      compile_var=
4843b3062210Smrg      finalize_var=
4844b3062210Smrg      if test -n "$runpath_var"; then
4845b3062210Smrg	if test -n "$perm_rpath"; then
4846b3062210Smrg	  # We should set the runpath_var.
4847b3062210Smrg	  rpath=
4848b3062210Smrg	  for dir in $perm_rpath; do
4849b3062210Smrg	    rpath="$rpath$dir:"
4850b3062210Smrg	  done
4851b3062210Smrg	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
4852b3062210Smrg	fi
4853b3062210Smrg	if test -n "$finalize_perm_rpath"; then
4854b3062210Smrg	  # We should set the runpath_var.
4855b3062210Smrg	  rpath=
4856b3062210Smrg	  for dir in $finalize_perm_rpath; do
4857b3062210Smrg	    rpath="$rpath$dir:"
4858b3062210Smrg	  done
4859b3062210Smrg	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
4860b3062210Smrg	fi
4861b3062210Smrg      fi
486223a0898aSmrg
4863b3062210Smrg      if test "$no_install" = yes; then
4864b3062210Smrg	# We don't need to create a wrapper script.
4865b3062210Smrg	link_command="$compile_var$compile_command$compile_rpath"
4866b3062210Smrg	# Replace the output file specification.
4867b3062210Smrg	link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
4868b3062210Smrg	# Delete the old output file.
4869b3062210Smrg	$run $rm $output
4870b3062210Smrg	# Link the executable and exit
4871b3062210Smrg	$show "$link_command"
4872b3062210Smrg	$run eval "$link_command" || exit $?
4873b3062210Smrg	exit $EXIT_SUCCESS
4874b3062210Smrg      fi
48757f7f5e4eSmrg
4876b3062210Smrg      if test "$hardcode_action" = relink; then
4877b3062210Smrg	# Fast installation is not supported
4878b3062210Smrg	link_command="$compile_var$compile_command$compile_rpath"
4879b3062210Smrg	relink_command="$finalize_var$finalize_command$finalize_rpath"
48807f7f5e4eSmrg
4881b3062210Smrg	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
4882b3062210Smrg	$echo "$modename: \`$output' will be relinked during installation" 1>&2
4883b3062210Smrg      else
4884b3062210Smrg	if test "$fast_install" != no; then
4885b3062210Smrg	  link_command="$finalize_var$compile_command$finalize_rpath"
4886b3062210Smrg	  if test "$fast_install" = yes; then
4887b3062210Smrg	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP`
4888b3062210Smrg	  else
4889b3062210Smrg	    # fast_install is set to needless
4890b3062210Smrg	    relink_command=
4891b3062210Smrg	  fi
4892b3062210Smrg	else
4893b3062210Smrg	  link_command="$compile_var$compile_command$compile_rpath"
4894b3062210Smrg	  relink_command="$finalize_var$finalize_command$finalize_rpath"
4895b3062210Smrg	fi
48967f7f5e4eSmrg      fi
48977f7f5e4eSmrg
4898b3062210Smrg      # Replace the output file specification.
4899b3062210Smrg      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
49007f7f5e4eSmrg
4901b3062210Smrg      # Delete the old output files.
4902b3062210Smrg      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
49037f7f5e4eSmrg
4904b3062210Smrg      $show "$link_command"
4905b3062210Smrg      $run eval "$link_command" || exit $?
49067f7f5e4eSmrg
4907b3062210Smrg      # Now create the wrapper script.
4908b3062210Smrg      $show "creating $output"
49097f7f5e4eSmrg
4910b3062210Smrg      # Quote the relink command for shipping.
4911b3062210Smrg      if test -n "$relink_command"; then
4912b3062210Smrg	# Preserve any variables that may affect compiler behavior
4913b3062210Smrg	for var in $variables_saved_for_relink; do
4914b3062210Smrg	  if eval test -z \"\${$var+set}\"; then
4915b3062210Smrg	    relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
4916b3062210Smrg	  elif eval var_value=\$$var; test -z "$var_value"; then
4917b3062210Smrg	    relink_command="$var=; export $var; $relink_command"
4918b3062210Smrg	  else
4919b3062210Smrg	    var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
4920b3062210Smrg	    relink_command="$var=\"$var_value\"; export $var; $relink_command"
4921b3062210Smrg	  fi
49227f7f5e4eSmrg	done
4923b3062210Smrg	relink_command="(cd `pwd`; $relink_command)"
4924b3062210Smrg	relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
49257f7f5e4eSmrg      fi
49267f7f5e4eSmrg
4927b3062210Smrg      # Quote $echo for shipping.
4928b3062210Smrg      if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
4929b3062210Smrg	case $progpath in
4930b3062210Smrg	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
4931b3062210Smrg	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
49327f7f5e4eSmrg	esac
4933b3062210Smrg	qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
4934b3062210Smrg      else
4935b3062210Smrg	qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
49367f7f5e4eSmrg      fi
49377f7f5e4eSmrg
4938b3062210Smrg      # Only actually do things if our run command is non-null.
4939b3062210Smrg      if test -z "$run"; then
4940b3062210Smrg	# win32 will think the script is a binary if it has
4941b3062210Smrg	# a .exe suffix, so we strip it off here.
4942b3062210Smrg	case $output in
4943b3062210Smrg	  *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
4944b3062210Smrg	esac
4945b3062210Smrg	# test for cygwin because mv fails w/o .exe extensions
4946b3062210Smrg	case $host in
4947b3062210Smrg	  *cygwin*)
4948b3062210Smrg	    exeext=.exe
4949b3062210Smrg	    outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
4950b3062210Smrg	  *) exeext= ;;
4951b3062210Smrg	esac
4952b3062210Smrg	case $host in
4953b3062210Smrg	  *cygwin* | *mingw* )
4954b3062210Smrg            output_name=`basename $output`
4955b3062210Smrg            output_path=`dirname $output`
4956b3062210Smrg            cwrappersource="$output_path/$objdir/lt-$output_name.c"
4957b3062210Smrg            cwrapper="$output_path/$output_name.exe"
4958b3062210Smrg            $rm $cwrappersource $cwrapper
4959b3062210Smrg            trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
49607f7f5e4eSmrg
4961b3062210Smrg	    cat > $cwrappersource <<EOF
49627f7f5e4eSmrg
4963b3062210Smrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
4964b3062210Smrg   Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
49657f7f5e4eSmrg
4966b3062210Smrg   The $output program cannot be directly executed until all the libtool
4967b3062210Smrg   libraries that it depends on are installed.
49687f7f5e4eSmrg
4969b3062210Smrg   This wrapper executable should never be moved out of the build directory.
4970b3062210Smrg   If it is, it will not operate correctly.
49717f7f5e4eSmrg
4972b3062210Smrg   Currently, it simply execs the wrapper *script* "/bin/sh $output",
4973b3062210Smrg   but could eventually absorb all of the scripts functionality and
4974b3062210Smrg   exec $objdir/$outputname directly.
4975b3062210Smrg*/
4976b3062210SmrgEOF
4977b3062210Smrg	    cat >> $cwrappersource<<"EOF"
4978b3062210Smrg#include <stdio.h>
4979b3062210Smrg#include <stdlib.h>
4980b3062210Smrg#include <unistd.h>
4981b3062210Smrg#include <malloc.h>
4982b3062210Smrg#include <stdarg.h>
4983b3062210Smrg#include <assert.h>
4984b3062210Smrg#include <string.h>
4985b3062210Smrg#include <ctype.h>
4986b3062210Smrg#include <sys/stat.h>
49877f7f5e4eSmrg
4988b3062210Smrg#if defined(PATH_MAX)
4989b3062210Smrg# define LT_PATHMAX PATH_MAX
4990b3062210Smrg#elif defined(MAXPATHLEN)
4991b3062210Smrg# define LT_PATHMAX MAXPATHLEN
4992b3062210Smrg#else
4993b3062210Smrg# define LT_PATHMAX 1024
4994b3062210Smrg#endif
49957f7f5e4eSmrg
4996b3062210Smrg#ifndef DIR_SEPARATOR
4997b3062210Smrg# define DIR_SEPARATOR '/'
4998b3062210Smrg# define PATH_SEPARATOR ':'
4999b3062210Smrg#endif
50007f7f5e4eSmrg
5001b3062210Smrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
5002b3062210Smrg  defined (__OS2__)
5003b3062210Smrg# define HAVE_DOS_BASED_FILE_SYSTEM
5004b3062210Smrg# ifndef DIR_SEPARATOR_2
5005b3062210Smrg#  define DIR_SEPARATOR_2 '\\'
5006b3062210Smrg# endif
5007b3062210Smrg# ifndef PATH_SEPARATOR_2
5008b3062210Smrg#  define PATH_SEPARATOR_2 ';'
5009b3062210Smrg# endif
5010b3062210Smrg#endif
50117f7f5e4eSmrg
5012b3062210Smrg#ifndef DIR_SEPARATOR_2
5013b3062210Smrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
5014b3062210Smrg#else /* DIR_SEPARATOR_2 */
5015b3062210Smrg# define IS_DIR_SEPARATOR(ch) \
5016b3062210Smrg        (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
5017b3062210Smrg#endif /* DIR_SEPARATOR_2 */
50187f7f5e4eSmrg
5019b3062210Smrg#ifndef PATH_SEPARATOR_2
5020b3062210Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
5021b3062210Smrg#else /* PATH_SEPARATOR_2 */
5022b3062210Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
5023b3062210Smrg#endif /* PATH_SEPARATOR_2 */
50247f7f5e4eSmrg
5025b3062210Smrg#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
5026b3062210Smrg#define XFREE(stale) do { \
5027b3062210Smrg  if (stale) { free ((void *) stale); stale = 0; } \
5028b3062210Smrg} while (0)
50297f7f5e4eSmrg
5030b3062210Smrg/* -DDEBUG is fairly common in CFLAGS.  */
5031b3062210Smrg#undef DEBUG
5032b3062210Smrg#if defined DEBUGWRAPPER
5033b3062210Smrg# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
5034b3062210Smrg#else
5035b3062210Smrg# define DEBUG(format, ...)
5036b3062210Smrg#endif
50377f7f5e4eSmrg
5038b3062210Smrgconst char *program_name = NULL;
50397f7f5e4eSmrg
5040b3062210Smrgvoid * xmalloc (size_t num);
5041b3062210Smrgchar * xstrdup (const char *string);
5042b3062210Smrgconst char * base_name (const char *name);
5043b3062210Smrgchar * find_executable(const char *wrapper);
5044b3062210Smrgint    check_executable(const char *path);
5045b3062210Smrgchar * strendzap(char *str, const char *pat);
5046b3062210Smrgvoid lt_fatal (const char *message, ...);
50477f7f5e4eSmrg
5048b3062210Smrgint
5049b3062210Smrgmain (int argc, char *argv[])
5050b3062210Smrg{
5051b3062210Smrg  char **newargz;
5052b3062210Smrg  int i;
50537f7f5e4eSmrg
5054b3062210Smrg  program_name = (char *) xstrdup (base_name (argv[0]));
5055b3062210Smrg  DEBUG("(main) argv[0]      : %s\n",argv[0]);
5056b3062210Smrg  DEBUG("(main) program_name : %s\n",program_name);
5057b3062210Smrg  newargz = XMALLOC(char *, argc+2);
5058b3062210SmrgEOF
50597f7f5e4eSmrg
5060b3062210Smrg            cat >> $cwrappersource <<EOF
5061b3062210Smrg  newargz[0] = (char *) xstrdup("$SHELL");
5062b3062210SmrgEOF
50637f7f5e4eSmrg
5064b3062210Smrg            cat >> $cwrappersource <<"EOF"
5065b3062210Smrg  newargz[1] = find_executable(argv[0]);
5066b3062210Smrg  if (newargz[1] == NULL)
5067b3062210Smrg    lt_fatal("Couldn't find %s", argv[0]);
5068b3062210Smrg  DEBUG("(main) found exe at : %s\n",newargz[1]);
5069b3062210Smrg  /* we know the script has the same name, without the .exe */
5070b3062210Smrg  /* so make sure newargz[1] doesn't end in .exe */
5071b3062210Smrg  strendzap(newargz[1],".exe");
5072b3062210Smrg  for (i = 1; i < argc; i++)
5073b3062210Smrg    newargz[i+1] = xstrdup(argv[i]);
5074b3062210Smrg  newargz[argc+1] = NULL;
50757f7f5e4eSmrg
5076b3062210Smrg  for (i=0; i<argc+1; i++)
5077b3062210Smrg  {
5078b3062210Smrg    DEBUG("(main) newargz[%d]   : %s\n",i,newargz[i]);
5079b3062210Smrg    ;
5080b3062210Smrg  }
50817f7f5e4eSmrg
5082b3062210SmrgEOF
50837f7f5e4eSmrg
5084b3062210Smrg            case $host_os in
5085b3062210Smrg              mingw*)
5086b3062210Smrg                cat >> $cwrappersource <<EOF
5087b3062210Smrg  execv("$SHELL",(char const **)newargz);
5088b3062210SmrgEOF
5089b3062210Smrg              ;;
5090b3062210Smrg              *)
5091b3062210Smrg                cat >> $cwrappersource <<EOF
5092b3062210Smrg  execv("$SHELL",newargz);
5093b3062210SmrgEOF
5094b3062210Smrg              ;;
5095b3062210Smrg            esac
50967f7f5e4eSmrg
5097b3062210Smrg            cat >> $cwrappersource <<"EOF"
5098b3062210Smrg  return 127;
5099b3062210Smrg}
51007f7f5e4eSmrg
5101b3062210Smrgvoid *
5102b3062210Smrgxmalloc (size_t num)
5103b3062210Smrg{
5104b3062210Smrg  void * p = (void *) malloc (num);
5105b3062210Smrg  if (!p)
5106b3062210Smrg    lt_fatal ("Memory exhausted");
51077f7f5e4eSmrg
5108b3062210Smrg  return p;
5109b3062210Smrg}
51107f7f5e4eSmrg
5111b3062210Smrgchar *
5112b3062210Smrgxstrdup (const char *string)
5113b3062210Smrg{
5114b3062210Smrg  return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
5115b3062210Smrg;
5116b3062210Smrg}
51177f7f5e4eSmrg
5118b3062210Smrgconst char *
5119b3062210Smrgbase_name (const char *name)
5120b3062210Smrg{
5121b3062210Smrg  const char *base;
51227f7f5e4eSmrg
5123b3062210Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5124b3062210Smrg  /* Skip over the disk name in MSDOS pathnames. */
5125b3062210Smrg  if (isalpha ((unsigned char)name[0]) && name[1] == ':')
5126b3062210Smrg    name += 2;
5127b3062210Smrg#endif
51287f7f5e4eSmrg
5129b3062210Smrg  for (base = name; *name; name++)
5130b3062210Smrg    if (IS_DIR_SEPARATOR (*name))
5131b3062210Smrg      base = name + 1;
5132b3062210Smrg  return base;
5133b3062210Smrg}
51347f7f5e4eSmrg
5135b3062210Smrgint
5136b3062210Smrgcheck_executable(const char * path)
5137b3062210Smrg{
5138b3062210Smrg  struct stat st;
51397f7f5e4eSmrg
5140b3062210Smrg  DEBUG("(check_executable)  : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
5141b3062210Smrg  if ((!path) || (!*path))
5142b3062210Smrg    return 0;
51437f7f5e4eSmrg
5144b3062210Smrg  if ((stat (path, &st) >= 0) &&
5145b3062210Smrg      (
5146b3062210Smrg        /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
5147b3062210Smrg#if defined (S_IXOTH)
5148b3062210Smrg       ((st.st_mode & S_IXOTH) == S_IXOTH) ||
5149b3062210Smrg#endif
5150b3062210Smrg#if defined (S_IXGRP)
5151b3062210Smrg       ((st.st_mode & S_IXGRP) == S_IXGRP) ||
5152b3062210Smrg#endif
5153b3062210Smrg       ((st.st_mode & S_IXUSR) == S_IXUSR))
5154b3062210Smrg      )
5155b3062210Smrg    return 1;
5156b3062210Smrg  else
5157b3062210Smrg    return 0;
5158b3062210Smrg}
51597f7f5e4eSmrg
5160b3062210Smrg/* Searches for the full path of the wrapper.  Returns
5161b3062210Smrg   newly allocated full path name if found, NULL otherwise */
5162b3062210Smrgchar *
5163b3062210Smrgfind_executable (const char* wrapper)
5164b3062210Smrg{
5165b3062210Smrg  int has_slash = 0;
5166b3062210Smrg  const char* p;
5167b3062210Smrg  const char* p_next;
5168b3062210Smrg  /* static buffer for getcwd */
5169b3062210Smrg  char tmp[LT_PATHMAX + 1];
5170b3062210Smrg  int tmp_len;
5171b3062210Smrg  char* concat_name;
51727f7f5e4eSmrg
5173b3062210Smrg  DEBUG("(find_executable)  : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
51747f7f5e4eSmrg
5175b3062210Smrg  if ((wrapper == NULL) || (*wrapper == '\0'))
5176b3062210Smrg    return NULL;
517723a0898aSmrg
5178b3062210Smrg  /* Absolute path? */
5179b3062210Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5180b3062210Smrg  if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
5181b3062210Smrg  {
5182b3062210Smrg    concat_name = xstrdup (wrapper);
5183b3062210Smrg    if (check_executable(concat_name))
5184b3062210Smrg      return concat_name;
5185b3062210Smrg    XFREE(concat_name);
5186b3062210Smrg  }
5187b3062210Smrg  else
5188b3062210Smrg  {
5189b3062210Smrg#endif
5190b3062210Smrg    if (IS_DIR_SEPARATOR (wrapper[0]))
5191b3062210Smrg    {
5192b3062210Smrg      concat_name = xstrdup (wrapper);
5193b3062210Smrg      if (check_executable(concat_name))
5194b3062210Smrg        return concat_name;
5195b3062210Smrg      XFREE(concat_name);
5196b3062210Smrg    }
5197b3062210Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5198b3062210Smrg  }
5199b3062210Smrg#endif
5200b3062210Smrg
5201b3062210Smrg  for (p = wrapper; *p; p++)
5202b3062210Smrg    if (*p == '/')
5203b3062210Smrg    {
5204b3062210Smrg      has_slash = 1;
5205b3062210Smrg      break;
5206b3062210Smrg    }
5207b3062210Smrg  if (!has_slash)
5208b3062210Smrg  {
5209b3062210Smrg    /* no slashes; search PATH */
5210b3062210Smrg    const char* path = getenv ("PATH");
5211b3062210Smrg    if (path != NULL)
5212b3062210Smrg    {
5213b3062210Smrg      for (p = path; *p; p = p_next)
5214b3062210Smrg      {
5215b3062210Smrg        const char* q;
5216b3062210Smrg        size_t p_len;
5217b3062210Smrg        for (q = p; *q; q++)
5218b3062210Smrg          if (IS_PATH_SEPARATOR(*q))
5219b3062210Smrg            break;
5220b3062210Smrg        p_len = q - p;
5221b3062210Smrg        p_next = (*q == '\0' ? q : q + 1);
5222b3062210Smrg        if (p_len == 0)
5223b3062210Smrg        {
5224b3062210Smrg          /* empty path: current directory */
5225b3062210Smrg          if (getcwd (tmp, LT_PATHMAX) == NULL)
5226b3062210Smrg            lt_fatal ("getcwd failed");
5227b3062210Smrg          tmp_len = strlen(tmp);
5228b3062210Smrg          concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
5229b3062210Smrg          memcpy (concat_name, tmp, tmp_len);
5230b3062210Smrg          concat_name[tmp_len] = '/';
5231b3062210Smrg          strcpy (concat_name + tmp_len + 1, wrapper);
5232b3062210Smrg        }
5233b3062210Smrg        else
5234b3062210Smrg        {
5235b3062210Smrg          concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
5236b3062210Smrg          memcpy (concat_name, p, p_len);
5237b3062210Smrg          concat_name[p_len] = '/';
5238b3062210Smrg          strcpy (concat_name + p_len + 1, wrapper);
5239b3062210Smrg        }
5240b3062210Smrg        if (check_executable(concat_name))
5241b3062210Smrg          return concat_name;
5242b3062210Smrg        XFREE(concat_name);
5243b3062210Smrg      }
5244b3062210Smrg    }
5245b3062210Smrg    /* not found in PATH; assume curdir */
5246b3062210Smrg  }
5247b3062210Smrg  /* Relative path | not found in path: prepend cwd */
5248b3062210Smrg  if (getcwd (tmp, LT_PATHMAX) == NULL)
5249b3062210Smrg    lt_fatal ("getcwd failed");
5250b3062210Smrg  tmp_len = strlen(tmp);
5251b3062210Smrg  concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
5252b3062210Smrg  memcpy (concat_name, tmp, tmp_len);
5253b3062210Smrg  concat_name[tmp_len] = '/';
5254b3062210Smrg  strcpy (concat_name + tmp_len + 1, wrapper);
5255b3062210Smrg
5256b3062210Smrg  if (check_executable(concat_name))
5257b3062210Smrg    return concat_name;
5258b3062210Smrg  XFREE(concat_name);
5259b3062210Smrg  return NULL;
5260b3062210Smrg}
5261b3062210Smrg
5262b3062210Smrgchar *
5263b3062210Smrgstrendzap(char *str, const char *pat)
5264b3062210Smrg{
5265b3062210Smrg  size_t len, patlen;
5266b3062210Smrg
5267b3062210Smrg  assert(str != NULL);
5268b3062210Smrg  assert(pat != NULL);
5269b3062210Smrg
5270b3062210Smrg  len = strlen(str);
5271b3062210Smrg  patlen = strlen(pat);
5272b3062210Smrg
5273b3062210Smrg  if (patlen <= len)
5274b3062210Smrg  {
5275b3062210Smrg    str += len - patlen;
5276b3062210Smrg    if (strcmp(str, pat) == 0)
5277b3062210Smrg      *str = '\0';
5278b3062210Smrg  }
5279b3062210Smrg  return str;
5280b3062210Smrg}
5281b3062210Smrg
5282b3062210Smrgstatic void
5283b3062210Smrglt_error_core (int exit_status, const char * mode,
5284b3062210Smrg          const char * message, va_list ap)
5285b3062210Smrg{
5286b3062210Smrg  fprintf (stderr, "%s: %s: ", program_name, mode);
5287b3062210Smrg  vfprintf (stderr, message, ap);
5288b3062210Smrg  fprintf (stderr, ".\n");
5289b3062210Smrg
5290b3062210Smrg  if (exit_status >= 0)
5291b3062210Smrg    exit (exit_status);
5292b3062210Smrg}
5293b3062210Smrg
5294b3062210Smrgvoid
5295b3062210Smrglt_fatal (const char *message, ...)
5296b3062210Smrg{
5297b3062210Smrg  va_list ap;
5298b3062210Smrg  va_start (ap, message);
5299b3062210Smrg  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
5300b3062210Smrg  va_end (ap);
5301b3062210Smrg}
5302b3062210SmrgEOF
5303b3062210Smrg          # we should really use a build-platform specific compiler
5304b3062210Smrg          # here, but OTOH, the wrappers (shell script and this C one)
5305b3062210Smrg          # are only useful if you want to execute the "real" binary.
5306b3062210Smrg          # Since the "real" binary is built for $host, then this
5307b3062210Smrg          # wrapper might as well be built for $host, too.
5308b3062210Smrg          $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
5309b3062210Smrg          ;;
5310b3062210Smrg        esac
5311b3062210Smrg        $rm $output
5312b3062210Smrg        trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
5313b3062210Smrg
5314b3062210Smrg	$echo > $output "\
5315b3062210Smrg#! $SHELL
5316b3062210Smrg
5317b3062210Smrg# $output - temporary wrapper script for $objdir/$outputname
5318b3062210Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
5319b3062210Smrg#
5320b3062210Smrg# The $output program cannot be directly executed until all the libtool
5321b3062210Smrg# libraries that it depends on are installed.
5322b3062210Smrg#
5323b3062210Smrg# This wrapper script should never be moved out of the build directory.
5324b3062210Smrg# If it is, it will not operate correctly.
5325b3062210Smrg
5326b3062210Smrg# Sed substitution that helps us do robust quoting.  It backslashifies
5327b3062210Smrg# metacharacters that are still active within double-quoted strings.
5328b3062210SmrgXsed='${SED} -e 1s/^X//'
5329b3062210Smrgsed_quote_subst='$sed_quote_subst'
5330b3062210Smrg
5331b3062210Smrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
5332b3062210Smrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
5333b3062210Smrg  emulate sh
5334b3062210Smrg  NULLCMD=:
5335b3062210Smrg  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
5336b3062210Smrg  # is contrary to our usage.  Disable this feature.
5337b3062210Smrg  alias -g '\${1+\"\$@\"}'='\"\$@\"'
5338b3062210Smrg  setopt NO_GLOB_SUBST
5339b3062210Smrgelse
5340b3062210Smrg  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
5341b3062210Smrgfi
5342b3062210SmrgBIN_SH=xpg4; export BIN_SH # for Tru64
5343b3062210SmrgDUALCASE=1; export DUALCASE # for MKS sh
5344b3062210Smrg
5345b3062210Smrg# The HP-UX ksh and POSIX shell print the target directory to stdout
5346b3062210Smrg# if CDPATH is set.
5347b3062210Smrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
5348b3062210Smrg
5349b3062210Smrgrelink_command=\"$relink_command\"
5350b3062210Smrg
5351b3062210Smrg# This environment variable determines our operation mode.
5352b3062210Smrgif test \"\$libtool_install_magic\" = \"$magic\"; then
5353b3062210Smrg  # install mode needs the following variable:
5354b3062210Smrg  notinst_deplibs='$notinst_deplibs'
5355b3062210Smrgelse
5356b3062210Smrg  # When we are sourced in execute mode, \$file and \$echo are already set.
5357b3062210Smrg  if test \"\$libtool_execute_magic\" != \"$magic\"; then
5358b3062210Smrg    echo=\"$qecho\"
5359b3062210Smrg    file=\"\$0\"
5360b3062210Smrg    # Make sure echo works.
5361b3062210Smrg    if test \"X\$1\" = X--no-reexec; then
5362b3062210Smrg      # Discard the --no-reexec flag, and continue.
5363b3062210Smrg      shift
5364b3062210Smrg    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
5365b3062210Smrg      # Yippee, \$echo works!
5366b3062210Smrg      :
5367b3062210Smrg    else
5368b3062210Smrg      # Restart under the correct shell, and then maybe \$echo will work.
5369b3062210Smrg      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
5370b3062210Smrg    fi
5371b3062210Smrg  fi\
5372b3062210Smrg"
5373b3062210Smrg	$echo >> $output "\
537423a0898aSmrg
5375b3062210Smrg  # Find the directory that this script lives in.
5376b3062210Smrg  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
5377b3062210Smrg  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
537823a0898aSmrg
5379b3062210Smrg  # Follow symbolic links until we get to the real thisdir.
5380b3062210Smrg  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
5381b3062210Smrg  while test -n \"\$file\"; do
5382b3062210Smrg    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
538323a0898aSmrg
5384b3062210Smrg    # If there was a directory component, then change thisdir.
5385b3062210Smrg    if test \"x\$destdir\" != \"x\$file\"; then
5386b3062210Smrg      case \"\$destdir\" in
5387b3062210Smrg      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
5388b3062210Smrg      *) thisdir=\"\$thisdir/\$destdir\" ;;
5389b3062210Smrg      esac
5390b3062210Smrg    fi
539123a0898aSmrg
5392b3062210Smrg    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
5393b3062210Smrg    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
5394b3062210Smrg  done
539523a0898aSmrg
5396b3062210Smrg  # Try to get the absolute directory name.
5397b3062210Smrg  absdir=\`cd \"\$thisdir\" && pwd\`
5398b3062210Smrg  test -n \"\$absdir\" && thisdir=\"\$absdir\"
5399b3062210Smrg"
540023a0898aSmrg
5401b3062210Smrg	if test "$fast_install" = yes; then
5402b3062210Smrg	  $echo >> $output "\
5403b3062210Smrg  program=lt-'$outputname'$exeext
5404b3062210Smrg  progdir=\"\$thisdir/$objdir\"
540523a0898aSmrg
5406b3062210Smrg  if test ! -f \"\$progdir/\$program\" || \\
5407b3062210Smrg     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
5408b3062210Smrg       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
540923a0898aSmrg
5410b3062210Smrg    file=\"\$\$-\$program\"
541123a0898aSmrg
5412b3062210Smrg    if test ! -d \"\$progdir\"; then
5413b3062210Smrg      $mkdir \"\$progdir\"
5414b3062210Smrg    else
5415b3062210Smrg      $rm \"\$progdir/\$file\"
5416b3062210Smrg    fi"
541723a0898aSmrg
5418b3062210Smrg	  $echo >> $output "\
541923a0898aSmrg
5420b3062210Smrg    # relink executable if necessary
5421b3062210Smrg    if test -n \"\$relink_command\"; then
5422b3062210Smrg      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
5423b3062210Smrg      else
5424b3062210Smrg	$echo \"\$relink_command_output\" >&2
5425b3062210Smrg	$rm \"\$progdir/\$file\"
5426b3062210Smrg	exit $EXIT_FAILURE
5427b3062210Smrg      fi
5428b3062210Smrg    fi
542923a0898aSmrg
5430b3062210Smrg    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
5431b3062210Smrg    { $rm \"\$progdir/\$program\";
5432b3062210Smrg      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
5433b3062210Smrg    $rm \"\$progdir/\$file\"
5434b3062210Smrg  fi"
5435b3062210Smrg	else
5436b3062210Smrg	  $echo >> $output "\
5437b3062210Smrg  program='$outputname'
5438b3062210Smrg  progdir=\"\$thisdir/$objdir\"
5439b3062210Smrg"
54407f7f5e4eSmrg	fi
544123a0898aSmrg
5442b3062210Smrg	$echo >> $output "\
544323a0898aSmrg
5444b3062210Smrg  if test -f \"\$progdir/\$program\"; then"
544523a0898aSmrg
5446b3062210Smrg	# Export our shlibpath_var if we have one.
5447b3062210Smrg	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
5448b3062210Smrg	  $echo >> $output "\
5449b3062210Smrg    # Add our own library path to $shlibpath_var
5450b3062210Smrg    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
545123a0898aSmrg
5452b3062210Smrg    # Some systems cannot cope with colon-terminated $shlibpath_var
5453b3062210Smrg    # The second colon is a workaround for a bug in BeOS R4 sed
5454b3062210Smrg    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
545523a0898aSmrg
5456b3062210Smrg    export $shlibpath_var
5457b3062210Smrg"
5458b3062210Smrg	fi
545923a0898aSmrg
5460b3062210Smrg	# fixup the dll searchpath if we need to.
5461b3062210Smrg	if test -n "$dllsearchpath"; then
5462b3062210Smrg	  $echo >> $output "\
5463b3062210Smrg    # Add the dll search path components to the executable PATH
5464b3062210Smrg    PATH=$dllsearchpath:\$PATH
5465b3062210Smrg"
5466b3062210Smrg	fi
546723a0898aSmrg
5468b3062210Smrg	$echo >> $output "\
5469b3062210Smrg    if test \"\$libtool_execute_magic\" != \"$magic\"; then
5470b3062210Smrg      # Run the actual program with our arguments.
5471b3062210Smrg"
5472b3062210Smrg	case $host in
5473b3062210Smrg	# Backslashes separate directories on plain windows
5474b3062210Smrg	*-*-mingw | *-*-os2*)
5475b3062210Smrg	  $echo >> $output "\
5476b3062210Smrg      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
5477b3062210Smrg"
5478b3062210Smrg	  ;;
547923a0898aSmrg
5480b3062210Smrg	*)
5481b3062210Smrg	  $echo >> $output "\
5482b3062210Smrg      exec \"\$progdir/\$program\" \${1+\"\$@\"}
5483b3062210Smrg"
5484b3062210Smrg	  ;;
5485b3062210Smrg	esac
5486b3062210Smrg	$echo >> $output "\
5487b3062210Smrg      \$echo \"\$0: cannot exec \$program \$*\"
5488b3062210Smrg      exit $EXIT_FAILURE
5489b3062210Smrg    fi
5490b3062210Smrg  else
5491b3062210Smrg    # The program doesn't exist.
5492b3062210Smrg    \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
5493b3062210Smrg    \$echo \"This script is just a wrapper for \$program.\" 1>&2
5494b3062210Smrg    $echo \"See the $PACKAGE documentation for more information.\" 1>&2
5495b3062210Smrg    exit $EXIT_FAILURE
5496b3062210Smrg  fi
5497b3062210Smrgfi\
5498b3062210Smrg"
5499b3062210Smrg	chmod +x $output
5500b3062210Smrg      fi
5501b3062210Smrg      exit $EXIT_SUCCESS
5502b3062210Smrg      ;;
5503b3062210Smrg    esac
55047f7f5e4eSmrg
5505b3062210Smrg    # See if we need to build an old-fashioned archive.
5506b3062210Smrg    for oldlib in $oldlibs; do
550723a0898aSmrg
5508b3062210Smrg      if test "$build_libtool_libs" = convenience; then
5509b3062210Smrg	oldobjs="$libobjs_save"
5510b3062210Smrg	addlibs="$convenience"
5511b3062210Smrg	build_libtool_libs=no
5512b3062210Smrg      else
5513b3062210Smrg	if test "$build_libtool_libs" = module; then
5514b3062210Smrg	  oldobjs="$libobjs_save"
5515b3062210Smrg	  build_libtool_libs=no
5516b3062210Smrg	else
5517b3062210Smrg	  oldobjs="$old_deplibs $non_pic_objects"
5518b3062210Smrg	fi
5519b3062210Smrg	addlibs="$old_convenience"
5520b3062210Smrg      fi
552123a0898aSmrg
5522b3062210Smrg      if test -n "$addlibs"; then
5523b3062210Smrg	gentop="$output_objdir/${outputname}x"
5524b3062210Smrg	generated="$generated $gentop"
552523a0898aSmrg
5526b3062210Smrg	func_extract_archives $gentop $addlibs
5527b3062210Smrg	oldobjs="$oldobjs $func_extract_archives_result"
5528b3062210Smrg      fi
552923a0898aSmrg
5530b3062210Smrg      # Do each command in the archive commands.
5531b3062210Smrg      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
5532b3062210Smrg       cmds=$old_archive_from_new_cmds
5533b3062210Smrg      else
5534b3062210Smrg	# POSIX demands no paths to be encoded in archives.  We have
5535b3062210Smrg	# to avoid creating archives with duplicate basenames if we
5536b3062210Smrg	# might have to extract them afterwards, e.g., when creating a
5537b3062210Smrg	# static archive out of a convenience library, or when linking
5538b3062210Smrg	# the entirety of a libtool archive into another (currently
5539b3062210Smrg	# not supported by libtool).
5540b3062210Smrg	if (for obj in $oldobjs
5541b3062210Smrg	    do
5542b3062210Smrg	      $echo "X$obj" | $Xsed -e 's%^.*/%%'
5543b3062210Smrg	    done | sort | sort -uc >/dev/null 2>&1); then
5544b3062210Smrg	  :
5545b3062210Smrg	else
5546b3062210Smrg	  $echo "copying selected object files to avoid basename conflicts..."
554723a0898aSmrg
5548b3062210Smrg	  if test -z "$gentop"; then
5549b3062210Smrg	    gentop="$output_objdir/${outputname}x"
5550b3062210Smrg	    generated="$generated $gentop"
555123a0898aSmrg
5552b3062210Smrg	    $show "${rm}r $gentop"
5553b3062210Smrg	    $run ${rm}r "$gentop"
5554b3062210Smrg	    $show "$mkdir $gentop"
5555b3062210Smrg	    $run $mkdir "$gentop"
5556b3062210Smrg	    exit_status=$?
5557b3062210Smrg	    if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
5558b3062210Smrg	      exit $exit_status
55597f7f5e4eSmrg	    fi
55607f7f5e4eSmrg	  fi
556123a0898aSmrg
5562b3062210Smrg	  save_oldobjs=$oldobjs
5563b3062210Smrg	  oldobjs=
5564b3062210Smrg	  counter=1
5565b3062210Smrg	  for obj in $save_oldobjs
5566b3062210Smrg	  do
5567b3062210Smrg	    objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
5568b3062210Smrg	    case " $oldobjs " in
5569b3062210Smrg	    " ") oldobjs=$obj ;;
5570b3062210Smrg	    *[\ /]"$objbase "*)
5571b3062210Smrg	      while :; do
5572b3062210Smrg		# Make sure we don't pick an alternate name that also
5573b3062210Smrg		# overlaps.
5574b3062210Smrg		newobj=lt$counter-$objbase
5575b3062210Smrg		counter=`expr $counter + 1`
5576b3062210Smrg		case " $oldobjs " in
5577b3062210Smrg		*[\ /]"$newobj "*) ;;
5578b3062210Smrg		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
5579b3062210Smrg		esac
5580b3062210Smrg	      done
5581b3062210Smrg	      $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
5582b3062210Smrg	      $run ln "$obj" "$gentop/$newobj" ||
5583b3062210Smrg	      $run cp "$obj" "$gentop/$newobj"
5584b3062210Smrg	      oldobjs="$oldobjs $gentop/$newobj"
5585b3062210Smrg	      ;;
5586b3062210Smrg	    *) oldobjs="$oldobjs $obj" ;;
5587b3062210Smrg	    esac
5588b3062210Smrg	  done
5589b3062210Smrg	fi
559023a0898aSmrg
5591b3062210Smrg	eval cmds=\"$old_archive_cmds\"
55927f7f5e4eSmrg
5593b3062210Smrg	if len=`expr "X$cmds" : ".*"` &&
5594b3062210Smrg	     test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
5595b3062210Smrg	  cmds=$old_archive_cmds
5596b3062210Smrg	else
5597b3062210Smrg	  # the command line is too long to link in one step, link in parts
5598b3062210Smrg	  $echo "using piecewise archive linking..."
5599b3062210Smrg	  save_RANLIB=$RANLIB
5600b3062210Smrg	  RANLIB=:
5601b3062210Smrg	  objlist=
5602b3062210Smrg	  concat_cmds=
5603b3062210Smrg	  save_oldobjs=$oldobjs
5604b3062210Smrg
5605b3062210Smrg	  # Is there a better way of finding the last object in the list?
5606b3062210Smrg	  for obj in $save_oldobjs
5607b3062210Smrg	  do
5608b3062210Smrg	    last_oldobj=$obj
5609b3062210Smrg	  done
5610b3062210Smrg	  for obj in $save_oldobjs
5611b3062210Smrg	  do
5612b3062210Smrg	    oldobjs="$objlist $obj"
5613b3062210Smrg	    objlist="$objlist $obj"
5614b3062210Smrg	    eval test_cmds=\"$old_archive_cmds\"
5615b3062210Smrg	    if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
5616b3062210Smrg	       test "$len" -le "$max_cmd_len"; then
5617b3062210Smrg	      :
561823a0898aSmrg	    else
5619b3062210Smrg	      # the above command should be used before it gets too long
5620b3062210Smrg	      oldobjs=$objlist
5621b3062210Smrg	      if test "$obj" = "$last_oldobj" ; then
5622b3062210Smrg	        RANLIB=$save_RANLIB
5623b3062210Smrg	      fi
5624b3062210Smrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
5625b3062210Smrg	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
5626b3062210Smrg	      objlist=
562723a0898aSmrg	    fi
5628b3062210Smrg	  done
5629b3062210Smrg	  RANLIB=$save_RANLIB
5630b3062210Smrg	  oldobjs=$objlist
5631b3062210Smrg	  if test "X$oldobjs" = "X" ; then
5632b3062210Smrg	    eval cmds=\"\$concat_cmds\"
563323a0898aSmrg	  else
5634b3062210Smrg	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
563523a0898aSmrg	  fi
563623a0898aSmrg	fi
5637b3062210Smrg      fi
5638b3062210Smrg      save_ifs="$IFS"; IFS='~'
5639b3062210Smrg      for cmd in $cmds; do
5640b3062210Smrg        eval cmd=\"$cmd\"
56417f7f5e4eSmrg	IFS="$save_ifs"
5642b3062210Smrg	$show "$cmd"
5643b3062210Smrg	$run eval "$cmd" || exit $?
5644b3062210Smrg      done
5645b3062210Smrg      IFS="$save_ifs"
5646b3062210Smrg    done
564723a0898aSmrg
5648b3062210Smrg    if test -n "$generated"; then
5649b3062210Smrg      $show "${rm}r$generated"
5650b3062210Smrg      $run ${rm}r$generated
5651b3062210Smrg    fi
565223a0898aSmrg
5653b3062210Smrg    # Now create the libtool archive.
5654b3062210Smrg    case $output in
5655b3062210Smrg    *.la)
5656b3062210Smrg      old_library=
5657b3062210Smrg      test "$build_old_libs" = yes && old_library="$libname.$libext"
5658b3062210Smrg      $show "creating $output"
565923a0898aSmrg
5660b3062210Smrg      # Preserve any variables that may affect compiler behavior
5661b3062210Smrg      for var in $variables_saved_for_relink; do
5662b3062210Smrg	if eval test -z \"\${$var+set}\"; then
5663b3062210Smrg	  relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
5664b3062210Smrg	elif eval var_value=\$$var; test -z "$var_value"; then
5665b3062210Smrg	  relink_command="$var=; export $var; $relink_command"
5666b3062210Smrg	else
5667b3062210Smrg	  var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
5668b3062210Smrg	  relink_command="$var=\"$var_value\"; export $var; $relink_command"
56697f7f5e4eSmrg	fi
5670b3062210Smrg      done
5671b3062210Smrg      # Quote the link command for shipping.
5672b3062210Smrg      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
5673b3062210Smrg      relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
5674b3062210Smrg      if test "$hardcode_automatic" = yes ; then
5675b3062210Smrg	relink_command=
56767f7f5e4eSmrg      fi
567723a0898aSmrg
567823a0898aSmrg
5679b3062210Smrg      # Only create the output if not a dry run.
5680b3062210Smrg      if test -z "$run"; then
5681b3062210Smrg	for installed in no yes; do
5682b3062210Smrg	  if test "$installed" = yes; then
5683b3062210Smrg	    if test -z "$install_libdir"; then
5684b3062210Smrg	      break
5685b3062210Smrg	    fi
5686b3062210Smrg	    output="$output_objdir/$outputname"i
5687b3062210Smrg	    # Replace all uninstalled libtool libraries with the installed ones
5688b3062210Smrg	    newdependency_libs=
5689b3062210Smrg	    for deplib in $dependency_libs; do
5690b3062210Smrg	      case $deplib in
5691b3062210Smrg	      *.la)
5692b3062210Smrg		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
5693b3062210Smrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
5694b3062210Smrg		if test -z "$libdir"; then
5695b3062210Smrg		  $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
5696b3062210Smrg		  exit $EXIT_FAILURE
5697b3062210Smrg		fi
5698b3062210Smrg		newdependency_libs="$newdependency_libs $libdir/$name"
5699b3062210Smrg		;;
5700b3062210Smrg	      *) newdependency_libs="$newdependency_libs $deplib" ;;
5701b3062210Smrg	      esac
5702b3062210Smrg	    done
5703b3062210Smrg	    dependency_libs="$newdependency_libs"
5704b3062210Smrg	    newdlfiles=
5705b3062210Smrg	    for lib in $dlfiles; do
5706b3062210Smrg	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5707b3062210Smrg	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5708b3062210Smrg	      if test -z "$libdir"; then
5709b3062210Smrg		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5710b3062210Smrg		exit $EXIT_FAILURE
5711b3062210Smrg	      fi
5712b3062210Smrg	      newdlfiles="$newdlfiles $libdir/$name"
5713b3062210Smrg	    done
5714b3062210Smrg	    dlfiles="$newdlfiles"
5715b3062210Smrg	    newdlprefiles=
5716b3062210Smrg	    for lib in $dlprefiles; do
5717b3062210Smrg	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5718b3062210Smrg	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5719b3062210Smrg	      if test -z "$libdir"; then
5720b3062210Smrg		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5721b3062210Smrg		exit $EXIT_FAILURE
5722b3062210Smrg	      fi
5723b3062210Smrg	      newdlprefiles="$newdlprefiles $libdir/$name"
5724b3062210Smrg	    done
5725b3062210Smrg	    dlprefiles="$newdlprefiles"
5726b3062210Smrg	  else
5727b3062210Smrg	    newdlfiles=
5728b3062210Smrg	    for lib in $dlfiles; do
5729b3062210Smrg	      case $lib in
5730b3062210Smrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5731b3062210Smrg		*) abs=`pwd`"/$lib" ;;
5732b3062210Smrg	      esac
5733b3062210Smrg	      newdlfiles="$newdlfiles $abs"
5734b3062210Smrg	    done
5735b3062210Smrg	    dlfiles="$newdlfiles"
5736b3062210Smrg	    newdlprefiles=
5737b3062210Smrg	    for lib in $dlprefiles; do
5738b3062210Smrg	      case $lib in
5739b3062210Smrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5740b3062210Smrg		*) abs=`pwd`"/$lib" ;;
5741b3062210Smrg	      esac
5742b3062210Smrg	      newdlprefiles="$newdlprefiles $abs"
5743b3062210Smrg	    done
5744b3062210Smrg	    dlprefiles="$newdlprefiles"
5745b3062210Smrg	  fi
5746b3062210Smrg	  $rm $output
5747b3062210Smrg	  # place dlname in correct position for cygwin
5748b3062210Smrg	  tdlname=$dlname
5749b3062210Smrg	  case $host,$output,$installed,$module,$dlname in
5750b3062210Smrg	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
5751b3062210Smrg	  esac
5752b3062210Smrg	  $echo > $output "\
5753b3062210Smrg# $outputname - a libtool library file
5754b3062210Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
5755b3062210Smrg#
5756b3062210Smrg# Please DO NOT delete this file!
5757b3062210Smrg# It is necessary for linking the library.
575823a0898aSmrg
5759b3062210Smrg# The name that we can dlopen(3).
5760b3062210Smrgdlname='$tdlname'
576123a0898aSmrg
5762b3062210Smrg# Names of this library.
5763b3062210Smrglibrary_names='$library_names'
576423a0898aSmrg
5765b3062210Smrg# The name of the static archive.
5766b3062210Smrgold_library='$old_library'
576723a0898aSmrg
5768b3062210Smrg# Libraries that this one depends upon.
5769b3062210Smrgdependency_libs='$dependency_libs'
57707f7f5e4eSmrg
5771b3062210Smrg# Version information for $libname.
5772b3062210Smrgcurrent=$current
5773b3062210Smrgage=$age
5774b3062210Smrgrevision=$revision
57757f7f5e4eSmrg
5776b3062210Smrg# Is this an already installed library?
5777b3062210Smrginstalled=$installed
57787f7f5e4eSmrg
5779b3062210Smrg# Should we warn about portability when linking against -modules?
5780b3062210Smrgshouldnotlink=$module
57817f7f5e4eSmrg
5782b3062210Smrg# Files to dlopen/dlpreopen
5783b3062210Smrgdlopen='$dlfiles'
5784b3062210Smrgdlpreopen='$dlprefiles'
57857f7f5e4eSmrg
5786b3062210Smrg# Directory that this library needs to be installed in:
5787b3062210Smrglibdir='$install_libdir'"
5788b3062210Smrg	  if test "$installed" = no && test "$need_relink" = yes; then
5789b3062210Smrg	    $echo >> $output "\
5790b3062210Smrgrelink_command=\"$relink_command\""
5791b3062210Smrg	  fi
5792b3062210Smrg	done
57937f7f5e4eSmrg      fi
57947f7f5e4eSmrg
5795b3062210Smrg      # Do a symbolic link so that the libtool archive can be found in
5796b3062210Smrg      # LD_LIBRARY_PATH before the program is installed.
5797b3062210Smrg      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
5798b3062210Smrg      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
579923a0898aSmrg      ;;
5800b3062210Smrg    esac
5801b3062210Smrg    exit $EXIT_SUCCESS
5802b3062210Smrg    ;;
580323a0898aSmrg
5804b3062210Smrg  # libtool install mode
5805b3062210Smrg  install)
5806b3062210Smrg    modename="$modename: install"
5807b3062210Smrg
5808b3062210Smrg    # There may be an optional sh(1) argument at the beginning of
5809b3062210Smrg    # install_prog (especially on Windows NT).
5810b3062210Smrg    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
5811b3062210Smrg       # Allow the use of GNU shtool's install command.
5812b3062210Smrg       $echo "X$nonopt" | grep shtool > /dev/null; then
5813b3062210Smrg      # Aesthetically quote it.
5814b3062210Smrg      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
5815b3062210Smrg      case $arg in
5816b3062210Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
5817b3062210Smrg	arg="\"$arg\""
5818b3062210Smrg	;;
58197f7f5e4eSmrg      esac
5820b3062210Smrg      install_prog="$arg "
5821b3062210Smrg      arg="$1"
5822b3062210Smrg      shift
5823b3062210Smrg    else
5824b3062210Smrg      install_prog=
5825b3062210Smrg      arg=$nonopt
5826b3062210Smrg    fi
582723a0898aSmrg
5828b3062210Smrg    # The real first argument should be the name of the installation program.
5829b3062210Smrg    # Aesthetically quote it.
5830b3062210Smrg    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5831b3062210Smrg    case $arg in
5832b3062210Smrg    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
5833b3062210Smrg      arg="\"$arg\""
5834b3062210Smrg      ;;
5835b3062210Smrg    esac
5836b3062210Smrg    install_prog="$install_prog$arg"
583723a0898aSmrg
5838b3062210Smrg    # We need to accept at least all the BSD install flags.
5839b3062210Smrg    dest=
5840b3062210Smrg    files=
5841b3062210Smrg    opts=
5842b3062210Smrg    prev=
5843b3062210Smrg    install_type=
5844b3062210Smrg    isdir=no
5845b3062210Smrg    stripme=
5846b3062210Smrg    for arg
5847b3062210Smrg    do
5848b3062210Smrg      if test -n "$dest"; then
5849b3062210Smrg	files="$files $dest"
5850b3062210Smrg	dest=$arg
5851b3062210Smrg	continue
5852b3062210Smrg      fi
58537f7f5e4eSmrg
5854b3062210Smrg      case $arg in
5855b3062210Smrg      -d) isdir=yes ;;
5856b3062210Smrg      -f) 
5857b3062210Smrg      	case " $install_prog " in
5858b3062210Smrg	*[\\\ /]cp\ *) ;;
5859b3062210Smrg	*) prev=$arg ;;
5860b3062210Smrg	esac
5861b3062210Smrg	;;
5862b3062210Smrg      -g | -m | -o) prev=$arg ;;
5863b3062210Smrg      -s)
5864b3062210Smrg	stripme=" -s"
5865b3062210Smrg	continue
5866b3062210Smrg	;;
5867b3062210Smrg      -*)
5868b3062210Smrg	;;
5869b3062210Smrg      *)
5870b3062210Smrg	# If the previous option needed an argument, then skip it.
5871b3062210Smrg	if test -n "$prev"; then
5872b3062210Smrg	  prev=
5873b3062210Smrg	else
5874b3062210Smrg	  dest=$arg
5875b3062210Smrg	  continue
5876b3062210Smrg	fi
587723a0898aSmrg	;;
58787f7f5e4eSmrg      esac
587923a0898aSmrg
5880b3062210Smrg      # Aesthetically quote the argument.
5881b3062210Smrg      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5882b3062210Smrg      case $arg in
5883b3062210Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
5884b3062210Smrg	arg="\"$arg\""
58857f7f5e4eSmrg	;;
58867f7f5e4eSmrg      esac
5887b3062210Smrg      install_prog="$install_prog $arg"
5888b3062210Smrg    done
588923a0898aSmrg
5890b3062210Smrg    if test -z "$install_prog"; then
5891b3062210Smrg      $echo "$modename: you must specify an install program" 1>&2
5892b3062210Smrg      $echo "$help" 1>&2
5893b3062210Smrg      exit $EXIT_FAILURE
5894b3062210Smrg    fi
589523a0898aSmrg
5896b3062210Smrg    if test -n "$prev"; then
5897b3062210Smrg      $echo "$modename: the \`$prev' option requires an argument" 1>&2
5898b3062210Smrg      $echo "$help" 1>&2
5899b3062210Smrg      exit $EXIT_FAILURE
5900b3062210Smrg    fi
5901b3062210Smrg
5902b3062210Smrg    if test -z "$files"; then
5903b3062210Smrg      if test -z "$dest"; then
5904b3062210Smrg	$echo "$modename: no file or destination specified" 1>&2
5905b3062210Smrg      else
5906b3062210Smrg	$echo "$modename: you must specify a destination" 1>&2
5907b3062210Smrg      fi
5908b3062210Smrg      $echo "$help" 1>&2
5909b3062210Smrg      exit $EXIT_FAILURE
5910b3062210Smrg    fi
5911b3062210Smrg
5912b3062210Smrg    # Strip any trailing slash from the destination.
5913b3062210Smrg    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
5914b3062210Smrg
5915b3062210Smrg    # Check to see that the destination is a directory.
5916b3062210Smrg    test -d "$dest" && isdir=yes
5917b3062210Smrg    if test "$isdir" = yes; then
5918b3062210Smrg      destdir="$dest"
5919b3062210Smrg      destname=
5920b3062210Smrg    else
5921b3062210Smrg      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
5922b3062210Smrg      test "X$destdir" = "X$dest" && destdir=.
5923b3062210Smrg      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
5924b3062210Smrg
5925b3062210Smrg      # Not a directory, so check to see that there is only one file specified.
5926b3062210Smrg      set dummy $files
5927b3062210Smrg      if test "$#" -gt 2; then
5928b3062210Smrg	$echo "$modename: \`$dest' is not a directory" 1>&2
5929b3062210Smrg	$echo "$help" 1>&2
5930b3062210Smrg	exit $EXIT_FAILURE
5931b3062210Smrg      fi
5932b3062210Smrg    fi
5933b3062210Smrg    case $destdir in
5934b3062210Smrg    [\\/]* | [A-Za-z]:[\\/]*) ;;
5935b3062210Smrg    *)
5936b3062210Smrg      for file in $files; do
5937b3062210Smrg	case $file in
5938b3062210Smrg	*.lo) ;;
59397f7f5e4eSmrg	*)
5940b3062210Smrg	  $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
5941b3062210Smrg	  $echo "$help" 1>&2
5942b3062210Smrg	  exit $EXIT_FAILURE
59437f7f5e4eSmrg	  ;;
59447f7f5e4eSmrg	esac
59457f7f5e4eSmrg      done
5946b3062210Smrg      ;;
5947b3062210Smrg    esac
594823a0898aSmrg
5949b3062210Smrg    # This variable tells wrapper scripts just to set variables rather
5950b3062210Smrg    # than running their programs.
5951b3062210Smrg    libtool_install_magic="$magic"
595223a0898aSmrg
5953b3062210Smrg    staticlibs=
5954b3062210Smrg    future_libdirs=
5955b3062210Smrg    current_libdirs=
5956b3062210Smrg    for file in $files; do
595723a0898aSmrg
5958b3062210Smrg      # Do each installation.
5959b3062210Smrg      case $file in
5960b3062210Smrg      *.$libext)
5961b3062210Smrg	# Do the static libraries later.
5962b3062210Smrg	staticlibs="$staticlibs $file"
5963b3062210Smrg	;;
5964b3062210Smrg
5965b3062210Smrg      *.la)
5966b3062210Smrg	# Check to see that this really is a libtool archive.
5967b3062210Smrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
5968b3062210Smrg	else
5969b3062210Smrg	  $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
5970b3062210Smrg	  $echo "$help" 1>&2
5971b3062210Smrg	  exit $EXIT_FAILURE
5972b3062210Smrg	fi
5973b3062210Smrg
5974b3062210Smrg	library_names=
5975b3062210Smrg	old_library=
5976b3062210Smrg	relink_command=
5977b3062210Smrg	# If there is no directory component, then add one.
5978b3062210Smrg	case $file in
5979b3062210Smrg	*/* | *\\*) . $file ;;
5980b3062210Smrg	*) . ./$file ;;
5981b3062210Smrg	esac
5982b3062210Smrg
5983b3062210Smrg	# Add the libdir to current_libdirs if it is the destination.
5984b3062210Smrg	if test "X$destdir" = "X$libdir"; then
5985b3062210Smrg	  case "$current_libdirs " in
59867f7f5e4eSmrg	  *" $libdir "*) ;;
5987b3062210Smrg	  *) current_libdirs="$current_libdirs $libdir" ;;
59887f7f5e4eSmrg	  esac
5989b3062210Smrg	else
5990b3062210Smrg	  # Note the libdir as a future libdir.
5991b3062210Smrg	  case "$future_libdirs " in
59927f7f5e4eSmrg	  *" $libdir "*) ;;
5993b3062210Smrg	  *) future_libdirs="$future_libdirs $libdir" ;;
59947f7f5e4eSmrg	  esac
59957f7f5e4eSmrg	fi
599623a0898aSmrg
5997b3062210Smrg	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
5998b3062210Smrg	test "X$dir" = "X$file/" && dir=
5999b3062210Smrg	dir="$dir$objdir"
6000b3062210Smrg
6001b3062210Smrg	if test -n "$relink_command"; then
6002b3062210Smrg	  # Determine the prefix the user has applied to our future dir.
6003b3062210Smrg	  inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
6004b3062210Smrg
6005b3062210Smrg	  # Don't allow the user to place us outside of our expected
6006b3062210Smrg	  # location b/c this prevents finding dependent libraries that
6007b3062210Smrg	  # are installed to the same prefix.
6008b3062210Smrg	  # At present, this check doesn't affect windows .dll's that
6009b3062210Smrg	  # are installed into $libdir/../bin (currently, that works fine)
6010b3062210Smrg	  # but it's something to keep an eye on.
6011b3062210Smrg	  if test "$inst_prefix_dir" = "$destdir"; then
6012b3062210Smrg	    $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
6013b3062210Smrg	    exit $EXIT_FAILURE
6014b3062210Smrg	  fi
6015b3062210Smrg
6016b3062210Smrg	  if test -n "$inst_prefix_dir"; then
6017b3062210Smrg	    # Stick the inst_prefix_dir data into the link command.
6018b3062210Smrg	    relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP`
6019b3062210Smrg	  else
6020b3062210Smrg	    relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP`
6021b3062210Smrg	  fi
6022b3062210Smrg
6023b3062210Smrg	  $echo "$modename: warning: relinking \`$file'" 1>&2
6024b3062210Smrg	  $show "$relink_command"
6025b3062210Smrg	  if $run eval "$relink_command"; then :
602623a0898aSmrg	  else
6027b3062210Smrg	    $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
6028b3062210Smrg	    exit $EXIT_FAILURE
602923a0898aSmrg	  fi
603023a0898aSmrg	fi
603123a0898aSmrg
6032b3062210Smrg	# See the names of the shared library.
6033b3062210Smrg	set dummy $library_names
6034b3062210Smrg	if test -n "$2"; then
6035b3062210Smrg	  realname="$2"
6036b3062210Smrg	  shift
6037b3062210Smrg	  shift
603823a0898aSmrg
6039b3062210Smrg	  srcname="$realname"
6040b3062210Smrg	  test -n "$relink_command" && srcname="$realname"T
604123a0898aSmrg
6042b3062210Smrg	  # Install the shared library and build the symlinks.
6043b3062210Smrg	  $show "$install_prog $dir/$srcname $destdir/$realname"
6044b3062210Smrg	  $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
6045b3062210Smrg	  if test -n "$stripme" && test -n "$striplib"; then
6046b3062210Smrg	    $show "$striplib $destdir/$realname"
6047b3062210Smrg	    $run eval "$striplib $destdir/$realname" || exit $?
6048b3062210Smrg	  fi
604923a0898aSmrg
6050b3062210Smrg	  if test "$#" -gt 0; then
6051b3062210Smrg	    # Delete the old symlinks, and create new ones.
6052b3062210Smrg	    # Try `ln -sf' first, because the `ln' binary might depend on
6053b3062210Smrg	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
6054b3062210Smrg	    # so we also need to try rm && ln -s.
6055b3062210Smrg	    for linkname
6056b3062210Smrg	    do
6057b3062210Smrg	      if test "$linkname" != "$realname"; then
6058b3062210Smrg                $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
6059b3062210Smrg                $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
6060b3062210Smrg	      fi
6061b3062210Smrg	    done
6062b3062210Smrg	  fi
606323a0898aSmrg
6064b3062210Smrg	  # Do each command in the postinstall commands.
6065b3062210Smrg	  lib="$destdir/$realname"
6066b3062210Smrg	  cmds=$postinstall_cmds
6067b3062210Smrg	  save_ifs="$IFS"; IFS='~'
6068b3062210Smrg	  for cmd in $cmds; do
6069b3062210Smrg	    IFS="$save_ifs"
6070b3062210Smrg	    eval cmd=\"$cmd\"
6071b3062210Smrg	    $show "$cmd"
6072b3062210Smrg	    $run eval "$cmd" || {
6073b3062210Smrg	      lt_exit=$?
6074b3062210Smrg
6075b3062210Smrg	      # Restore the uninstalled library and exit
6076b3062210Smrg	      if test "$mode" = relink; then
6077b3062210Smrg		$run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
6078b3062210Smrg	      fi
607923a0898aSmrg
6080b3062210Smrg	      exit $lt_exit
6081b3062210Smrg	    }
6082b3062210Smrg	  done
6083b3062210Smrg	  IFS="$save_ifs"
608423a0898aSmrg	fi
608523a0898aSmrg
6086b3062210Smrg	# Install the pseudo-library for information purposes.
6087b3062210Smrg	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6088b3062210Smrg	instname="$dir/$name"i
6089b3062210Smrg	$show "$install_prog $instname $destdir/$name"
6090b3062210Smrg	$run eval "$install_prog $instname $destdir/$name" || exit $?
609123a0898aSmrg
6092b3062210Smrg	# Maybe install the static library, too.
6093b3062210Smrg	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
6094b3062210Smrg	;;
609523a0898aSmrg
6096b3062210Smrg      *.lo)
6097b3062210Smrg	# Install (i.e. copy) a libtool object.
6098b3062210Smrg
6099b3062210Smrg	# Figure out destination file name, if it wasn't already specified.
6100b3062210Smrg	if test -n "$destname"; then
6101b3062210Smrg	  destfile="$destdir/$destname"
6102b3062210Smrg	else
6103b3062210Smrg	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6104b3062210Smrg	  destfile="$destdir/$destfile"
610523a0898aSmrg	fi
6106b3062210Smrg
6107b3062210Smrg	# Deduce the name of the destination old-style object file.
6108b3062210Smrg	case $destfile in
6109b3062210Smrg	*.lo)
6110b3062210Smrg	  staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
6111b3062210Smrg	  ;;
6112b3062210Smrg	*.$objext)
6113b3062210Smrg	  staticdest="$destfile"
6114b3062210Smrg	  destfile=
6115b3062210Smrg	  ;;
6116b3062210Smrg	*)
6117b3062210Smrg	  $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
6118b3062210Smrg	  $echo "$help" 1>&2
6119b3062210Smrg	  exit $EXIT_FAILURE
6120b3062210Smrg	  ;;
6121b3062210Smrg	esac
6122b3062210Smrg
6123b3062210Smrg	# Install the libtool object if requested.
6124b3062210Smrg	if test -n "$destfile"; then
6125b3062210Smrg	  $show "$install_prog $file $destfile"
6126b3062210Smrg	  $run eval "$install_prog $file $destfile" || exit $?
612723a0898aSmrg	fi
612823a0898aSmrg
6129b3062210Smrg	# Install the old object if enabled.
6130b3062210Smrg	if test "$build_old_libs" = yes; then
6131b3062210Smrg	  # Deduce the name of the old-style object file.
6132b3062210Smrg	  staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
613323a0898aSmrg
6134b3062210Smrg	  $show "$install_prog $staticobj $staticdest"
6135b3062210Smrg	  $run eval "$install_prog \$staticobj \$staticdest" || exit $?
6136b3062210Smrg	fi
6137b3062210Smrg	exit $EXIT_SUCCESS
6138b3062210Smrg	;;
61397f7f5e4eSmrg
6140b3062210Smrg      *)
6141b3062210Smrg	# Figure out destination file name, if it wasn't already specified.
6142b3062210Smrg	if test -n "$destname"; then
6143b3062210Smrg	  destfile="$destdir/$destname"
614423a0898aSmrg	else
6145b3062210Smrg	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6146b3062210Smrg	  destfile="$destdir/$destfile"
614723a0898aSmrg	fi
614823a0898aSmrg
6149b3062210Smrg	# If the file is missing, and there is a .exe on the end, strip it
6150b3062210Smrg	# because it is most likely a libtool script we actually want to
6151b3062210Smrg	# install
6152b3062210Smrg	stripped_ext=""
6153b3062210Smrg	case $file in
6154b3062210Smrg	  *.exe)
6155b3062210Smrg	    if test ! -f "$file"; then
6156b3062210Smrg	      file=`$echo $file|${SED} 's,.exe$,,'`
6157b3062210Smrg	      stripped_ext=".exe"
6158b3062210Smrg	    fi
6159b3062210Smrg	    ;;
6160b3062210Smrg	esac
616123a0898aSmrg
6162b3062210Smrg	# Do a test to see if this is really a libtool program.
6163b3062210Smrg	case $host in
6164b3062210Smrg	*cygwin*|*mingw*)
6165b3062210Smrg	    wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
6166b3062210Smrg	    ;;
6167b3062210Smrg	*)
6168b3062210Smrg	    wrapper=$file
6169b3062210Smrg	    ;;
6170b3062210Smrg	esac
6171b3062210Smrg	if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
6172b3062210Smrg	  notinst_deplibs=
6173b3062210Smrg	  relink_command=
617423a0898aSmrg
6175b3062210Smrg	  # Note that it is not necessary on cygwin/mingw to append a dot to
6176b3062210Smrg	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
6177b3062210Smrg	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
6178b3062210Smrg	  # `FILE.' does not work on cygwin managed mounts.
6179b3062210Smrg	  #
6180b3062210Smrg	  # If there is no directory component, then add one.
6181b3062210Smrg	  case $wrapper in
6182b3062210Smrg	  */* | *\\*) . ${wrapper} ;;
6183b3062210Smrg	  *) . ./${wrapper} ;;
6184b3062210Smrg	  esac
618523a0898aSmrg
6186b3062210Smrg	  # Check the variables that should have been set.
6187b3062210Smrg	  if test -z "$notinst_deplibs"; then
6188b3062210Smrg	    $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
6189b3062210Smrg	    exit $EXIT_FAILURE
6190b3062210Smrg	  fi
619123a0898aSmrg
6192b3062210Smrg	  finalize=yes
6193b3062210Smrg	  for lib in $notinst_deplibs; do
6194b3062210Smrg	    # Check to see that each library is installed.
6195b3062210Smrg	    libdir=
6196b3062210Smrg	    if test -f "$lib"; then
6197b3062210Smrg	      # If there is no directory component, then add one.
6198b3062210Smrg	      case $lib in
6199b3062210Smrg	      */* | *\\*) . $lib ;;
6200b3062210Smrg	      *) . ./$lib ;;
6201b3062210Smrg	      esac
6202b3062210Smrg	    fi
6203b3062210Smrg	    libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
6204b3062210Smrg	    if test -n "$libdir" && test ! -f "$libfile"; then
6205b3062210Smrg	      $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
6206b3062210Smrg	      finalize=no
6207b3062210Smrg	    fi
6208b3062210Smrg	  done
6209b3062210Smrg
6210b3062210Smrg	  relink_command=
6211b3062210Smrg	  # Note that it is not necessary on cygwin/mingw to append a dot to
6212b3062210Smrg	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
6213b3062210Smrg	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
6214b3062210Smrg	  # `FILE.' does not work on cygwin managed mounts.
6215b3062210Smrg	  #
6216b3062210Smrg	  # If there is no directory component, then add one.
6217b3062210Smrg	  case $wrapper in
6218b3062210Smrg	  */* | *\\*) . ${wrapper} ;;
6219b3062210Smrg	  *) . ./${wrapper} ;;
6220b3062210Smrg	  esac
6221b3062210Smrg
6222b3062210Smrg	  outputname=
6223b3062210Smrg	  if test "$fast_install" = no && test -n "$relink_command"; then
6224b3062210Smrg	    if test "$finalize" = yes && test -z "$run"; then
6225b3062210Smrg	      tmpdir=`func_mktempdir`
6226b3062210Smrg	      file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
6227b3062210Smrg	      outputname="$tmpdir/$file"
6228b3062210Smrg	      # Replace the output file specification.
6229b3062210Smrg	      relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP`
6230b3062210Smrg
6231b3062210Smrg	      $show "$relink_command"
6232b3062210Smrg	      if $run eval "$relink_command"; then :
6233b3062210Smrg	      else
6234b3062210Smrg		$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
6235b3062210Smrg		${rm}r "$tmpdir"
6236b3062210Smrg		continue
6237b3062210Smrg	      fi
6238b3062210Smrg	      file="$outputname"
6239b3062210Smrg	    else
6240b3062210Smrg	      $echo "$modename: warning: cannot relink \`$file'" 1>&2
6241b3062210Smrg	    fi
624223a0898aSmrg	  else
6243b3062210Smrg	    # Install the binary that we compiled earlier.
6244b3062210Smrg	    file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
624523a0898aSmrg	  fi
6246b3062210Smrg	fi
62477f7f5e4eSmrg
6248b3062210Smrg	# remove .exe since cygwin /usr/bin/install will append another
6249b3062210Smrg	# one anyway 
6250b3062210Smrg	case $install_prog,$host in
6251b3062210Smrg	*/usr/bin/install*,*cygwin*)
6252b3062210Smrg	  case $file:$destfile in
6253b3062210Smrg	  *.exe:*.exe)
6254b3062210Smrg	    # this is ok
6255b3062210Smrg	    ;;
6256b3062210Smrg	  *.exe:*)
6257b3062210Smrg	    destfile=$destfile.exe
6258b3062210Smrg	    ;;
6259b3062210Smrg	  *:*.exe)
6260b3062210Smrg	    destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
6261b3062210Smrg	    ;;
6262b3062210Smrg	  esac
6263b3062210Smrg	  ;;
626423a0898aSmrg	esac
6265b3062210Smrg	$show "$install_prog$stripme $file $destfile"
6266b3062210Smrg	$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
6267b3062210Smrg	test -n "$outputname" && ${rm}r "$tmpdir"
6268b3062210Smrg	;;
6269b3062210Smrg      esac
6270b3062210Smrg    done
627123a0898aSmrg
6272b3062210Smrg    for file in $staticlibs; do
6273b3062210Smrg      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
627423a0898aSmrg
6275b3062210Smrg      # Set up the ranlib parameters.
6276b3062210Smrg      oldlib="$destdir/$name"
627723a0898aSmrg
6278b3062210Smrg      $show "$install_prog $file $oldlib"
6279b3062210Smrg      $run eval "$install_prog \$file \$oldlib" || exit $?
628023a0898aSmrg
6281b3062210Smrg      if test -n "$stripme" && test -n "$old_striplib"; then
6282b3062210Smrg	$show "$old_striplib $oldlib"
6283b3062210Smrg	$run eval "$old_striplib $oldlib" || exit $?
628423a0898aSmrg      fi
628523a0898aSmrg
6286b3062210Smrg      # Do each command in the postinstall commands.
6287b3062210Smrg      cmds=$old_postinstall_cmds
6288b3062210Smrg      save_ifs="$IFS"; IFS='~'
6289b3062210Smrg      for cmd in $cmds; do
6290b3062210Smrg	IFS="$save_ifs"
6291b3062210Smrg	eval cmd=\"$cmd\"
6292b3062210Smrg	$show "$cmd"
6293b3062210Smrg	$run eval "$cmd" || exit $?
6294b3062210Smrg      done
6295b3062210Smrg      IFS="$save_ifs"
6296b3062210Smrg    done
629723a0898aSmrg
6298b3062210Smrg    if test -n "$future_libdirs"; then
6299b3062210Smrg      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
6300b3062210Smrg    fi
630123a0898aSmrg
6302b3062210Smrg    if test -n "$current_libdirs"; then
6303b3062210Smrg      # Maybe just do a dry run.
6304b3062210Smrg      test -n "$run" && current_libdirs=" -n$current_libdirs"
6305b3062210Smrg      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
6306b3062210Smrg    else
6307b3062210Smrg      exit $EXIT_SUCCESS
6308b3062210Smrg    fi
6309b3062210Smrg    ;;
631023a0898aSmrg
6311b3062210Smrg  # libtool finish mode
6312b3062210Smrg  finish)
6313b3062210Smrg    modename="$modename: finish"
6314b3062210Smrg    libdirs="$nonopt"
6315b3062210Smrg    admincmds=
631623a0898aSmrg
6317b3062210Smrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
6318b3062210Smrg      for dir
6319b3062210Smrg      do
6320b3062210Smrg	libdirs="$libdirs $dir"
6321b3062210Smrg      done
632223a0898aSmrg
6323b3062210Smrg      for libdir in $libdirs; do
6324b3062210Smrg	if test -n "$finish_cmds"; then
6325b3062210Smrg	  # Do each command in the finish commands.
6326b3062210Smrg	  cmds=$finish_cmds
6327b3062210Smrg	  save_ifs="$IFS"; IFS='~'
6328b3062210Smrg	  for cmd in $cmds; do
6329b3062210Smrg	    IFS="$save_ifs"
6330b3062210Smrg	    eval cmd=\"$cmd\"
6331b3062210Smrg	    $show "$cmd"
6332b3062210Smrg	    $run eval "$cmd" || admincmds="$admincmds
6333b3062210Smrg       $cmd"
633423a0898aSmrg	  done
6335b3062210Smrg	  IFS="$save_ifs"
633623a0898aSmrg	fi
6337b3062210Smrg	if test -n "$finish_eval"; then
6338b3062210Smrg	  # Do the single finish_eval.
6339b3062210Smrg	  eval cmds=\"$finish_eval\"
6340b3062210Smrg	  $run eval "$cmds" || admincmds="$admincmds
6341b3062210Smrg       $cmds"
63427f7f5e4eSmrg	fi
6343b3062210Smrg      done
6344b3062210Smrg    fi
6345b3062210Smrg
6346b3062210Smrg    # Exit here if they wanted silent mode.
6347b3062210Smrg    test "$show" = : && exit $EXIT_SUCCESS
6348b3062210Smrg
6349b3062210Smrg    $echo "X----------------------------------------------------------------------" | $Xsed
6350b3062210Smrg    $echo "Libraries have been installed in:"
6351b3062210Smrg    for libdir in $libdirs; do
6352b3062210Smrg      $echo "   $libdir"
635323a0898aSmrg    done
6354b3062210Smrg    $echo
6355b3062210Smrg    $echo "If you ever happen to want to link against installed libraries"
6356b3062210Smrg    $echo "in a given directory, LIBDIR, you must either use libtool, and"
6357b3062210Smrg    $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
6358b3062210Smrg    $echo "flag during linking and do at least one of the following:"
6359b3062210Smrg    if test -n "$shlibpath_var"; then
6360b3062210Smrg      $echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
6361b3062210Smrg      $echo "     during execution"
6362b3062210Smrg    fi
6363b3062210Smrg    if test -n "$runpath_var"; then
6364b3062210Smrg      $echo "   - add LIBDIR to the \`$runpath_var' environment variable"
6365b3062210Smrg      $echo "     during linking"
6366b3062210Smrg    fi
6367b3062210Smrg    if test -n "$hardcode_libdir_flag_spec"; then
6368b3062210Smrg      libdir=LIBDIR
6369b3062210Smrg      eval flag=\"$hardcode_libdir_flag_spec\"
637023a0898aSmrg
6371b3062210Smrg      $echo "   - use the \`$flag' linker flag"
6372b3062210Smrg    fi
6373b3062210Smrg    if test -n "$admincmds"; then
6374b3062210Smrg      $echo "   - have your system administrator run these commands:$admincmds"
6375b3062210Smrg    fi
6376b3062210Smrg    if test -f /etc/ld.so.conf; then
6377b3062210Smrg      $echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
6378b3062210Smrg    fi
6379b3062210Smrg    $echo
6380b3062210Smrg    $echo "See any operating system documentation about shared libraries for"
6381b3062210Smrg    $echo "more information, such as the ld(1) and ld.so(8) manual pages."
6382b3062210Smrg    $echo "X----------------------------------------------------------------------" | $Xsed
6383b3062210Smrg    exit $EXIT_SUCCESS
6384b3062210Smrg    ;;
638523a0898aSmrg
6386b3062210Smrg  # libtool execute mode
6387b3062210Smrg  execute)
6388b3062210Smrg    modename="$modename: execute"
638923a0898aSmrg
6390b3062210Smrg    # The first argument is the command name.
6391b3062210Smrg    cmd="$nonopt"
6392b3062210Smrg    if test -z "$cmd"; then
6393b3062210Smrg      $echo "$modename: you must specify a COMMAND" 1>&2
6394b3062210Smrg      $echo "$help"
6395b3062210Smrg      exit $EXIT_FAILURE
6396b3062210Smrg    fi
639723a0898aSmrg
6398b3062210Smrg    # Handle -dlopen flags immediately.
6399b3062210Smrg    for file in $execute_dlfiles; do
6400b3062210Smrg      if test ! -f "$file"; then
6401b3062210Smrg	$echo "$modename: \`$file' is not a file" 1>&2
6402b3062210Smrg	$echo "$help" 1>&2
6403b3062210Smrg	exit $EXIT_FAILURE
6404b3062210Smrg      fi
64057f7f5e4eSmrg
6406b3062210Smrg      dir=
6407b3062210Smrg      case $file in
6408b3062210Smrg      *.la)
6409b3062210Smrg	# Check to see that this really is a libtool archive.
6410b3062210Smrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
6411b3062210Smrg	else
6412b3062210Smrg	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
6413b3062210Smrg	  $echo "$help" 1>&2
6414b3062210Smrg	  exit $EXIT_FAILURE
6415b3062210Smrg	fi
641623a0898aSmrg
6417b3062210Smrg	# Read the libtool library.
6418b3062210Smrg	dlname=
6419b3062210Smrg	library_names=
642023a0898aSmrg
6421b3062210Smrg	# If there is no directory component, then add one.
6422b3062210Smrg	case $file in
6423b3062210Smrg	*/* | *\\*) . $file ;;
6424b3062210Smrg	*) . ./$file ;;
6425b3062210Smrg	esac
642623a0898aSmrg
6427b3062210Smrg	# Skip this library if it cannot be dlopened.
6428b3062210Smrg	if test -z "$dlname"; then
6429b3062210Smrg	  # Warn if it was a shared library.
6430b3062210Smrg	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
6431b3062210Smrg	  continue
6432b3062210Smrg	fi
643323a0898aSmrg
6434b3062210Smrg	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6435b3062210Smrg	test "X$dir" = "X$file" && dir=.
643623a0898aSmrg
6437b3062210Smrg	if test -f "$dir/$objdir/$dlname"; then
6438b3062210Smrg	  dir="$dir/$objdir"
6439b3062210Smrg	else
6440b3062210Smrg	  if test ! -f "$dir/$dlname"; then
6441b3062210Smrg	    $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
6442b3062210Smrg	    exit $EXIT_FAILURE
6443b3062210Smrg	  fi
6444b3062210Smrg	fi
6445b3062210Smrg	;;
644623a0898aSmrg
6447b3062210Smrg      *.lo)
6448b3062210Smrg	# Just add the directory containing the .lo file.
6449b3062210Smrg	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6450b3062210Smrg	test "X$dir" = "X$file" && dir=.
6451b3062210Smrg	;;
645223a0898aSmrg
6453b3062210Smrg      *)
6454b3062210Smrg	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
6455b3062210Smrg	continue
6456b3062210Smrg	;;
6457b3062210Smrg      esac
645823a0898aSmrg
6459b3062210Smrg      # Get the absolute pathname.
6460b3062210Smrg      absdir=`cd "$dir" && pwd`
6461b3062210Smrg      test -n "$absdir" && dir="$absdir"
646223a0898aSmrg
6463b3062210Smrg      # Now add the directory to shlibpath_var.
6464b3062210Smrg      if eval "test -z \"\$$shlibpath_var\""; then
6465b3062210Smrg	eval "$shlibpath_var=\"\$dir\""
6466b3062210Smrg      else
6467b3062210Smrg	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
6468b3062210Smrg      fi
6469b3062210Smrg    done
647023a0898aSmrg
6471b3062210Smrg    # This variable tells wrapper scripts just to set shlibpath_var
6472b3062210Smrg    # rather than running their programs.
6473b3062210Smrg    libtool_execute_magic="$magic"
647423a0898aSmrg
6475b3062210Smrg    # Check if any of the arguments is a wrapper script.
6476b3062210Smrg    args=
6477b3062210Smrg    for file
6478b3062210Smrg    do
6479b3062210Smrg      case $file in
6480b3062210Smrg      -*) ;;
6481b3062210Smrg      *)
6482b3062210Smrg	# Do a test to see if this is really a libtool program.
6483b3062210Smrg	if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6484b3062210Smrg	  # If there is no directory component, then add one.
6485b3062210Smrg	  case $file in
6486b3062210Smrg	  */* | *\\*) . $file ;;
6487b3062210Smrg	  *) . ./$file ;;
6488b3062210Smrg	  esac
648923a0898aSmrg
6490b3062210Smrg	  # Transform arg to wrapped name.
6491b3062210Smrg	  file="$progdir/$program"
6492b3062210Smrg	fi
6493b3062210Smrg	;;
6494b3062210Smrg      esac
6495b3062210Smrg      # Quote arguments (to preserve shell metacharacters).
6496b3062210Smrg      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
6497b3062210Smrg      args="$args \"$file\""
6498b3062210Smrg    done
649923a0898aSmrg
6500b3062210Smrg    if test -z "$run"; then
6501b3062210Smrg      if test -n "$shlibpath_var"; then
6502b3062210Smrg	# Export the shlibpath_var.
6503b3062210Smrg	eval "export $shlibpath_var"
6504b3062210Smrg      fi
6505b3062210Smrg
6506b3062210Smrg      # Restore saved environment variables
6507b3062210Smrg      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
6508b3062210Smrg      do
6509b3062210Smrg	eval "if test \"\${save_$lt_var+set}\" = set; then
6510b3062210Smrg		$lt_var=\$save_$lt_var; export $lt_var
6511b3062210Smrg	      fi"
6512b3062210Smrg      done
651323a0898aSmrg
6514b3062210Smrg      # Now prepare to actually exec the command.
6515b3062210Smrg      exec_cmd="\$cmd$args"
6516b3062210Smrg    else
6517b3062210Smrg      # Display what would be done.
6518b3062210Smrg      if test -n "$shlibpath_var"; then
6519b3062210Smrg	eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
6520b3062210Smrg	$echo "export $shlibpath_var"
6521b3062210Smrg      fi
6522b3062210Smrg      $echo "$cmd$args"
6523b3062210Smrg      exit $EXIT_SUCCESS
6524b3062210Smrg    fi
6525b3062210Smrg    ;;
652623a0898aSmrg
6527b3062210Smrg  # libtool clean and uninstall mode
6528b3062210Smrg  clean | uninstall)
6529b3062210Smrg    modename="$modename: $mode"
6530b3062210Smrg    rm="$nonopt"
653123a0898aSmrg    files=
653223a0898aSmrg    rmforce=
653323a0898aSmrg    exit_status=0
653423a0898aSmrg
653523a0898aSmrg    # This variable tells wrapper scripts just to set variables rather
653623a0898aSmrg    # than running their programs.
653723a0898aSmrg    libtool_install_magic="$magic"
653823a0898aSmrg
653923a0898aSmrg    for arg
654023a0898aSmrg    do
654123a0898aSmrg      case $arg in
6542b3062210Smrg      -f) rm="$rm $arg"; rmforce=yes ;;
6543b3062210Smrg      -*) rm="$rm $arg" ;;
654423a0898aSmrg      *) files="$files $arg" ;;
654523a0898aSmrg      esac
654623a0898aSmrg    done
654723a0898aSmrg
6548b3062210Smrg    if test -z "$rm"; then
6549b3062210Smrg      $echo "$modename: you must specify an RM program" 1>&2
6550b3062210Smrg      $echo "$help" 1>&2
6551b3062210Smrg      exit $EXIT_FAILURE
6552b3062210Smrg    fi
655323a0898aSmrg
655423a0898aSmrg    rmdirs=
655523a0898aSmrg
655623a0898aSmrg    origobjdir="$objdir"
655723a0898aSmrg    for file in $files; do
6558b3062210Smrg      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6559b3062210Smrg      if test "X$dir" = "X$file"; then
6560b3062210Smrg	dir=.
656123a0898aSmrg	objdir="$origobjdir"
656223a0898aSmrg      else
656323a0898aSmrg	objdir="$dir/$origobjdir"
656423a0898aSmrg      fi
6565b3062210Smrg      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
656623a0898aSmrg      test "$mode" = uninstall && objdir="$dir"
656723a0898aSmrg
656823a0898aSmrg      # Remember objdir for removal later, being careful to avoid duplicates
656923a0898aSmrg      if test "$mode" = clean; then
657023a0898aSmrg	case " $rmdirs " in
657123a0898aSmrg	  *" $objdir "*) ;;
657223a0898aSmrg	  *) rmdirs="$rmdirs $objdir" ;;
657323a0898aSmrg	esac
657423a0898aSmrg      fi
657523a0898aSmrg
657623a0898aSmrg      # Don't error if the file doesn't exist and rm -f was used.
6577b3062210Smrg      if (test -L "$file") >/dev/null 2>&1 \
6578b3062210Smrg	|| (test -h "$file") >/dev/null 2>&1 \
6579b3062210Smrg	|| test -f "$file"; then
658023a0898aSmrg	:
658123a0898aSmrg      elif test -d "$file"; then
658223a0898aSmrg	exit_status=1
658323a0898aSmrg	continue
658423a0898aSmrg      elif test "$rmforce" = yes; then
658523a0898aSmrg	continue
658623a0898aSmrg      fi
658723a0898aSmrg
658823a0898aSmrg      rmfiles="$file"
658923a0898aSmrg
659023a0898aSmrg      case $name in
659123a0898aSmrg      *.la)
659223a0898aSmrg	# Possibly a libtool archive, so verify it.
6593b3062210Smrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6594b3062210Smrg	  . $dir/$name
659523a0898aSmrg
659623a0898aSmrg	  # Delete the libtool libraries and symlinks.
659723a0898aSmrg	  for n in $library_names; do
659823a0898aSmrg	    rmfiles="$rmfiles $objdir/$n"
659923a0898aSmrg	  done
660023a0898aSmrg	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
660123a0898aSmrg
660223a0898aSmrg	  case "$mode" in
660323a0898aSmrg	  clean)
660423a0898aSmrg	    case "  $library_names " in
660523a0898aSmrg	    # "  " in the beginning catches empty $dlname
660623a0898aSmrg	    *" $dlname "*) ;;
660723a0898aSmrg	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
660823a0898aSmrg	    esac
6609b3062210Smrg	     test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
661023a0898aSmrg	    ;;
661123a0898aSmrg	  uninstall)
661223a0898aSmrg	    if test -n "$library_names"; then
661323a0898aSmrg	      # Do each command in the postuninstall commands.
6614b3062210Smrg	      cmds=$postuninstall_cmds
6615b3062210Smrg	      save_ifs="$IFS"; IFS='~'
6616b3062210Smrg	      for cmd in $cmds; do
6617b3062210Smrg		IFS="$save_ifs"
6618b3062210Smrg		eval cmd=\"$cmd\"
6619b3062210Smrg		$show "$cmd"
6620b3062210Smrg		$run eval "$cmd"
6621b3062210Smrg		if test "$?" -ne 0 && test "$rmforce" != yes; then
6622b3062210Smrg		  exit_status=1
6623b3062210Smrg		fi
6624b3062210Smrg	      done
6625b3062210Smrg	      IFS="$save_ifs"
662623a0898aSmrg	    fi
662723a0898aSmrg
662823a0898aSmrg	    if test -n "$old_library"; then
662923a0898aSmrg	      # Do each command in the old_postuninstall commands.
6630b3062210Smrg	      cmds=$old_postuninstall_cmds
6631b3062210Smrg	      save_ifs="$IFS"; IFS='~'
6632b3062210Smrg	      for cmd in $cmds; do
6633b3062210Smrg		IFS="$save_ifs"
6634b3062210Smrg		eval cmd=\"$cmd\"
6635b3062210Smrg		$show "$cmd"
6636b3062210Smrg		$run eval "$cmd"
6637b3062210Smrg		if test "$?" -ne 0 && test "$rmforce" != yes; then
6638b3062210Smrg		  exit_status=1
6639b3062210Smrg		fi
6640b3062210Smrg	      done
6641b3062210Smrg	      IFS="$save_ifs"
664223a0898aSmrg	    fi
664323a0898aSmrg	    # FIXME: should reinstall the best remaining shared library.
664423a0898aSmrg	    ;;
664523a0898aSmrg	  esac
664623a0898aSmrg	fi
664723a0898aSmrg	;;
664823a0898aSmrg
664923a0898aSmrg      *.lo)
665023a0898aSmrg	# Possibly a libtool object, so verify it.
6651b3062210Smrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
665223a0898aSmrg
665323a0898aSmrg	  # Read the .lo file
6654b3062210Smrg	  . $dir/$name
665523a0898aSmrg
665623a0898aSmrg	  # Add PIC object to the list of files to remove.
6657b3062210Smrg	  if test -n "$pic_object" \
6658b3062210Smrg	     && test "$pic_object" != none; then
665923a0898aSmrg	    rmfiles="$rmfiles $dir/$pic_object"
666023a0898aSmrg	  fi
666123a0898aSmrg
666223a0898aSmrg	  # Add non-PIC object to the list of files to remove.
6663b3062210Smrg	  if test -n "$non_pic_object" \
6664b3062210Smrg	     && test "$non_pic_object" != none; then
666523a0898aSmrg	    rmfiles="$rmfiles $dir/$non_pic_object"
666623a0898aSmrg	  fi
666723a0898aSmrg	fi
666823a0898aSmrg	;;
666923a0898aSmrg
667023a0898aSmrg      *)
667123a0898aSmrg	if test "$mode" = clean ; then
667223a0898aSmrg	  noexename=$name
667323a0898aSmrg	  case $file in
667423a0898aSmrg	  *.exe)
6675b3062210Smrg	    file=`$echo $file|${SED} 's,.exe$,,'`
6676b3062210Smrg	    noexename=`$echo $name|${SED} 's,.exe$,,'`
667723a0898aSmrg	    # $file with .exe has already been added to rmfiles,
667823a0898aSmrg	    # add $file without .exe
667923a0898aSmrg	    rmfiles="$rmfiles $file"
668023a0898aSmrg	    ;;
668123a0898aSmrg	  esac
668223a0898aSmrg	  # Do a test to see if this is a libtool program.
6683b3062210Smrg	  if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6684b3062210Smrg	    relink_command=
6685b3062210Smrg	    . $dir/$noexename
668623a0898aSmrg
668723a0898aSmrg	    # note $name still contains .exe if it was in $file originally
668823a0898aSmrg	    # as does the version of $file that was added into $rmfiles
668923a0898aSmrg	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
669023a0898aSmrg	    if test "$fast_install" = yes && test -n "$relink_command"; then
669123a0898aSmrg	      rmfiles="$rmfiles $objdir/lt-$name"
669223a0898aSmrg	    fi
669323a0898aSmrg	    if test "X$noexename" != "X$name" ; then
669423a0898aSmrg	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
669523a0898aSmrg	    fi
669623a0898aSmrg	  fi
669723a0898aSmrg	fi
669823a0898aSmrg	;;
669923a0898aSmrg      esac
6700b3062210Smrg      $show "$rm $rmfiles"
6701b3062210Smrg      $run $rm $rmfiles || exit_status=1
670223a0898aSmrg    done
670323a0898aSmrg    objdir="$origobjdir"
670423a0898aSmrg
670523a0898aSmrg    # Try to remove the ${objdir}s in the directories where we deleted files
670623a0898aSmrg    for dir in $rmdirs; do
670723a0898aSmrg      if test -d "$dir"; then
6708b3062210Smrg	$show "rmdir $dir"
6709b3062210Smrg	$run rmdir $dir >/dev/null 2>&1
671023a0898aSmrg      fi
671123a0898aSmrg    done
671223a0898aSmrg
671323a0898aSmrg    exit $exit_status
6714b3062210Smrg    ;;
671523a0898aSmrg
6716b3062210Smrg  "")
6717b3062210Smrg    $echo "$modename: you must specify a MODE" 1>&2
6718b3062210Smrg    $echo "$generic_help" 1>&2
6719b3062210Smrg    exit $EXIT_FAILURE
6720b3062210Smrg    ;;
6721b3062210Smrg  esac
67227f7f5e4eSmrg
6723b3062210Smrg  if test -z "$exec_cmd"; then
6724b3062210Smrg    $echo "$modename: invalid operation mode \`$mode'" 1>&2
6725b3062210Smrg    $echo "$generic_help" 1>&2
6726b3062210Smrg    exit $EXIT_FAILURE
6727b3062210Smrg  fi
6728b3062210Smrgfi # test -z "$show_help"
672923a0898aSmrg
673023a0898aSmrgif test -n "$exec_cmd"; then
6731b3062210Smrg  eval exec $exec_cmd
673223a0898aSmrg  exit $EXIT_FAILURE
673323a0898aSmrgfi
673423a0898aSmrg
6735b3062210Smrg# We need to display help for each of the modes.
6736b3062210Smrgcase $mode in
6737b3062210Smrg"") $echo \
6738b3062210Smrg"Usage: $modename [OPTION]... [MODE-ARG]...
6739b3062210Smrg
6740b3062210SmrgProvide generalized library-building support services.
6741b3062210Smrg
6742b3062210Smrg    --config          show all configuration variables
6743b3062210Smrg    --debug           enable verbose shell tracing
6744b3062210Smrg-n, --dry-run         display commands without modifying any files
6745b3062210Smrg    --features        display basic configuration information and exit
6746b3062210Smrg    --finish          same as \`--mode=finish'
6747b3062210Smrg    --help            display this help message and exit
6748b3062210Smrg    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
6749b3062210Smrg    --quiet           same as \`--silent'
6750b3062210Smrg    --silent          don't print informational messages
6751b3062210Smrg    --tag=TAG         use configuration variables from tag TAG
6752b3062210Smrg    --version         print version information
6753b3062210Smrg
6754b3062210SmrgMODE must be one of the following:
6755b3062210Smrg
6756b3062210Smrg      clean           remove files from the build directory
6757b3062210Smrg      compile         compile a source file into a libtool object
6758b3062210Smrg      execute         automatically set library path, then run a program
6759b3062210Smrg      finish          complete the installation of libtool libraries
6760b3062210Smrg      install         install libraries or executables
6761b3062210Smrg      link            create a library or an executable
6762b3062210Smrg      uninstall       remove libraries from an installed directory
6763b3062210Smrg
6764b3062210SmrgMODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
6765b3062210Smrga more detailed description of MODE.
6766b3062210Smrg
6767b3062210SmrgReport bugs to <bug-libtool@gnu.org>."
6768b3062210Smrg  exit $EXIT_SUCCESS
6769b3062210Smrg  ;;
6770b3062210Smrg
6771b3062210Smrgclean)
6772b3062210Smrg  $echo \
6773b3062210Smrg"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
6774b3062210Smrg
6775b3062210SmrgRemove files from the build directory.
6776b3062210Smrg
6777b3062210SmrgRM is the name of the program to use to delete files associated with each FILE
6778b3062210Smrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
6779b3062210Smrgto RM.
6780b3062210Smrg
6781b3062210SmrgIf FILE is a libtool library, object or program, all the files associated
6782b3062210Smrgwith it are deleted. Otherwise, only FILE itself is deleted using RM."
6783b3062210Smrg  ;;
6784b3062210Smrg
6785b3062210Smrgcompile)
6786b3062210Smrg  $echo \
6787b3062210Smrg"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
6788b3062210Smrg
6789b3062210SmrgCompile a source file into a libtool library object.
6790b3062210Smrg
6791b3062210SmrgThis mode accepts the following additional options:
6792b3062210Smrg
6793b3062210Smrg  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
6794b3062210Smrg  -prefer-pic       try to building PIC objects only
6795b3062210Smrg  -prefer-non-pic   try to building non-PIC objects only
6796b3062210Smrg  -static           always build a \`.o' file suitable for static linking
6797b3062210Smrg
6798b3062210SmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
6799b3062210Smrgfrom the given SOURCEFILE.
6800b3062210Smrg
6801b3062210SmrgThe output file name is determined by removing the directory component from
6802b3062210SmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the
6803b3062210Smrglibrary object suffix, \`.lo'."
6804b3062210Smrg  ;;
6805b3062210Smrg
6806b3062210Smrgexecute)
6807b3062210Smrg  $echo \
6808b3062210Smrg"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
6809b3062210Smrg
6810b3062210SmrgAutomatically set library path, then run a program.
6811b3062210Smrg
6812b3062210SmrgThis mode accepts the following additional options:
6813b3062210Smrg
6814b3062210Smrg  -dlopen FILE      add the directory containing FILE to the library path
6815b3062210Smrg
6816b3062210SmrgThis mode sets the library path environment variable according to \`-dlopen'
6817b3062210Smrgflags.
6818b3062210Smrg
6819b3062210SmrgIf any of the ARGS are libtool executable wrappers, then they are translated
6820b3062210Smrginto their corresponding uninstalled binary, and any of their required library
6821b3062210Smrgdirectories are added to the library path.
6822b3062210Smrg
6823b3062210SmrgThen, COMMAND is executed, with ARGS as arguments."
6824b3062210Smrg  ;;
6825b3062210Smrg
6826b3062210Smrgfinish)
6827b3062210Smrg  $echo \
6828b3062210Smrg"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
6829b3062210Smrg
6830b3062210SmrgComplete the installation of libtool libraries.
6831b3062210Smrg
6832b3062210SmrgEach LIBDIR is a directory that contains libtool libraries.
6833b3062210Smrg
6834b3062210SmrgThe commands that this mode executes may require superuser privileges.  Use
6835b3062210Smrgthe \`--dry-run' option if you just want to see what would be executed."
6836b3062210Smrg  ;;
6837b3062210Smrg
6838b3062210Smrginstall)
6839b3062210Smrg  $echo \
6840b3062210Smrg"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
6841b3062210Smrg
6842b3062210SmrgInstall executables or libraries.
6843b3062210Smrg
6844b3062210SmrgINSTALL-COMMAND is the installation command.  The first component should be
6845b3062210Smrgeither the \`install' or \`cp' program.
6846b3062210Smrg
6847b3062210SmrgThe rest of the components are interpreted as arguments to that command (only
6848b3062210SmrgBSD-compatible install options are recognized)."
6849b3062210Smrg  ;;
6850b3062210Smrg
6851b3062210Smrglink)
6852b3062210Smrg  $echo \
6853b3062210Smrg"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
6854b3062210Smrg
6855b3062210SmrgLink object files or libraries together to form another library, or to
6856b3062210Smrgcreate an executable program.
685723a0898aSmrg
6858b3062210SmrgLINK-COMMAND is a command using the C compiler that you would use to create
6859b3062210Smrga program from several object files.
6860b3062210Smrg
6861b3062210SmrgThe following components of LINK-COMMAND are treated specially:
6862b3062210Smrg
6863b3062210Smrg  -all-static       do not do any dynamic linking at all
6864b3062210Smrg  -avoid-version    do not add a version suffix if possible
6865b3062210Smrg  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
6866b3062210Smrg  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
6867b3062210Smrg  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
6868b3062210Smrg  -export-symbols SYMFILE
6869b3062210Smrg                    try to export only the symbols listed in SYMFILE
6870b3062210Smrg  -export-symbols-regex REGEX
6871b3062210Smrg                    try to export only the symbols matching REGEX
6872b3062210Smrg  -LLIBDIR          search LIBDIR for required installed libraries
6873b3062210Smrg  -lNAME            OUTPUT-FILE requires the installed library libNAME
6874b3062210Smrg  -module           build a library that can dlopened
6875b3062210Smrg  -no-fast-install  disable the fast-install mode
6876b3062210Smrg  -no-install       link a not-installable executable
6877b3062210Smrg  -no-undefined     declare that a library does not refer to external symbols
6878b3062210Smrg  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
6879b3062210Smrg  -objectlist FILE  Use a list of object files found in FILE to specify objects
6880b3062210Smrg  -precious-files-regex REGEX
6881b3062210Smrg                    don't remove output files matching REGEX
6882b3062210Smrg  -release RELEASE  specify package release information
6883b3062210Smrg  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
6884b3062210Smrg  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
6885b3062210Smrg  -static           do not do any dynamic linking of uninstalled libtool libraries
6886b3062210Smrg  -static-libtool-libs
6887b3062210Smrg                    do not do any dynamic linking of libtool libraries
6888b3062210Smrg  -version-info CURRENT[:REVISION[:AGE]]
6889b3062210Smrg                    specify library version info [each variable defaults to 0]
6890b3062210Smrg
6891b3062210SmrgAll other options (arguments beginning with \`-') are ignored.
6892b3062210Smrg
6893b3062210SmrgEvery other argument is treated as a filename.  Files ending in \`.la' are
6894b3062210Smrgtreated as uninstalled libtool libraries, other files are standard or library
6895b3062210Smrgobject files.
6896b3062210Smrg
6897b3062210SmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
6898b3062210Smrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is
6899b3062210Smrgrequired, except when creating a convenience library.
6900b3062210Smrg
6901b3062210SmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
6902b3062210Smrgusing \`ar' and \`ranlib', or on Windows using \`lib'.
6903b3062210Smrg
6904b3062210SmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
6905b3062210Smrgis created, otherwise an executable program is created."
6906b3062210Smrg  ;;
6907b3062210Smrg
6908b3062210Smrguninstall)
6909b3062210Smrg  $echo \
6910b3062210Smrg"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
6911b3062210Smrg
6912b3062210SmrgRemove libraries from an installation directory.
6913b3062210Smrg
6914b3062210SmrgRM is the name of the program to use to delete files associated with each FILE
6915b3062210Smrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
6916b3062210Smrgto RM.
6917b3062210Smrg
6918b3062210SmrgIf FILE is a libtool library, all the files associated with it are deleted.
6919b3062210SmrgOtherwise, only FILE itself is deleted using RM."
6920b3062210Smrg  ;;
6921b3062210Smrg
6922b3062210Smrg*)
6923b3062210Smrg  $echo "$modename: invalid operation mode \`$mode'" 1>&2
6924b3062210Smrg  $echo "$help" 1>&2
6925b3062210Smrg  exit $EXIT_FAILURE
6926b3062210Smrg  ;;
6927b3062210Smrgesac
6928b3062210Smrg
6929b3062210Smrg$echo
6930b3062210Smrg$echo "Try \`$modename --help' for more information about other modes."
6931b3062210Smrg
6932b3062210Smrgexit $?
693323a0898aSmrg
693423a0898aSmrg# The TAGs below are defined such that we never get into a situation
693523a0898aSmrg# in which we disable both kinds of libraries.  Given conflicting
693623a0898aSmrg# choices, we go for a static library, that is the most portable,
693723a0898aSmrg# since we can't tell whether shared libraries were disabled because
693823a0898aSmrg# the user asked for that or because the platform doesn't support
693923a0898aSmrg# them.  This is particularly important on AIX, because we don't
694023a0898aSmrg# support having both static and shared libraries enabled at the same
694123a0898aSmrg# time on that platform, so we default to a shared-only configuration.
694223a0898aSmrg# If a disable-shared tag is given, we'll fallback to a static-only
694323a0898aSmrg# configuration.  But we'll never go from static-only to shared-only.
694423a0898aSmrg
694523a0898aSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
6946b3062210Smrgdisable_libs=shared
694723a0898aSmrg# ### END LIBTOOL TAG CONFIG: disable-shared
694823a0898aSmrg
694923a0898aSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static
6950b3062210Smrgdisable_libs=static
695123a0898aSmrg# ### END LIBTOOL TAG CONFIG: disable-static
695223a0898aSmrg
695323a0898aSmrg# Local Variables:
695423a0898aSmrg# mode:shell-script
695523a0898aSmrg# sh-indentation:2
695623a0898aSmrg# End:
6957