ltmain.sh revision ee3138f1
1ee3138f1Smrg# ltmain.sh - Provide generalized library-building support services.
2ee3138f1Smrg# NOTE: Changing this file will not affect anything until you rerun configure.
3ee3138f1Smrg#
4ee3138f1Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
5ee3138f1Smrg# 2007  Free Software Foundation, Inc.
6ee3138f1Smrg# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
7ee3138f1Smrg#
8ee3138f1Smrg# This program is free software; you can redistribute it and/or modify
9ee3138f1Smrg# it under the terms of the GNU General Public License as published by
10ee3138f1Smrg# the Free Software Foundation; either version 2 of the License, or
11ee3138f1Smrg# (at your option) any later version.
12ee3138f1Smrg#
13ee3138f1Smrg# This program is distributed in the hope that it will be useful, but
14ee3138f1Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
15ee3138f1Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16ee3138f1Smrg# General Public License for more details.
17ee3138f1Smrg#
18ee3138f1Smrg# You should have received a copy of the GNU General Public License
19ee3138f1Smrg# along with this program; if not, write to the Free Software
20ee3138f1Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21ee3138f1Smrg#
22ee3138f1Smrg# As a special exception to the GNU General Public License, if you
23ee3138f1Smrg# distribute this file as part of a program that contains a
24ee3138f1Smrg# configuration script generated by Autoconf, you may include it under
25ee3138f1Smrg# the same distribution terms that you use for the rest of that program.
26ee3138f1Smrg
27ee3138f1Smrgbasename="s,^.*/,,g"
28ee3138f1Smrg
29ee3138f1Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
30ee3138f1Smrg# is ksh but when the shell is invoked as "sh" and the current value of
31ee3138f1Smrg# the _XPG environment variable is not equal to 1 (one), the special
32ee3138f1Smrg# positional parameter $0, within a function call, is the name of the
33ee3138f1Smrg# function.
34ee3138f1Smrgprogpath="$0"
35ee3138f1Smrg
36ee3138f1Smrg# The name of this program:
37ee3138f1Smrgprogname=`echo "$progpath" | $SED $basename`
38ee3138f1Smrgmodename="$progname"
39ee3138f1Smrg
40ee3138f1Smrg# Global variables:
41ee3138f1SmrgEXIT_SUCCESS=0
42ee3138f1SmrgEXIT_FAILURE=1
43ee3138f1Smrg
44ee3138f1SmrgPROGRAM=ltmain.sh
45ee3138f1SmrgPACKAGE=libtool
46ee3138f1SmrgVERSION=1.5.24
47ee3138f1SmrgTIMESTAMP=" (1.1220.2.456 2007/06/24 02:25:32)"
48ee3138f1Smrg
49ee3138f1Smrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
50ee3138f1Smrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
51ee3138f1Smrg  emulate sh
52ee3138f1Smrg  NULLCMD=:
53ee3138f1Smrg  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
54ee3138f1Smrg  # is contrary to our usage.  Disable this feature.
55ee3138f1Smrg  alias -g '${1+"$@"}'='"$@"'
56ee3138f1Smrg  setopt NO_GLOB_SUBST
57ee3138f1Smrgelse
58ee3138f1Smrg  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
59ee3138f1Smrgfi
60ee3138f1SmrgBIN_SH=xpg4; export BIN_SH # for Tru64
61ee3138f1SmrgDUALCASE=1; export DUALCASE # for MKS sh
62ee3138f1Smrg
63ee3138f1Smrg# Check that we have a working $echo.
64ee3138f1Smrgif test "X$1" = X--no-reexec; then
65ee3138f1Smrg  # Discard the --no-reexec flag, and continue.
66ee3138f1Smrg  shift
67ee3138f1Smrgelif test "X$1" = X--fallback-echo; then
68ee3138f1Smrg  # Avoid inline document here, it may be left over
69ee3138f1Smrg  :
70ee3138f1Smrgelif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
71ee3138f1Smrg  # Yippee, $echo works!
72ee3138f1Smrg  :
73ee3138f1Smrgelse
74ee3138f1Smrg  # Restart under the correct shell, and then maybe $echo will work.
75ee3138f1Smrg  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
76ee3138f1Smrgfi
77ee3138f1Smrg
78ee3138f1Smrgif test "X$1" = X--fallback-echo; then
79ee3138f1Smrg  # used as fallback echo
80ee3138f1Smrg  shift
81ee3138f1Smrg  cat <<EOF
82ee3138f1Smrg$*
83ee3138f1SmrgEOF
84ee3138f1Smrg  exit $EXIT_SUCCESS
85ee3138f1Smrgfi
86ee3138f1Smrg
87ee3138f1Smrgdefault_mode=
88ee3138f1Smrghelp="Try \`$progname --help' for more information."
89ee3138f1Smrgmagic="%%%MAGIC variable%%%"
90ee3138f1Smrgmkdir="mkdir"
91ee3138f1Smrgmv="mv -f"
92ee3138f1Smrgrm="rm -f"
93ee3138f1Smrg
94ee3138f1Smrg# Sed substitution that helps us do robust quoting.  It backslashifies
95ee3138f1Smrg# metacharacters that are still active within double-quoted strings.
96ee3138f1SmrgXsed="${SED}"' -e 1s/^X//'
97ee3138f1Smrgsed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
98ee3138f1Smrg# test EBCDIC or ASCII
99ee3138f1Smrgcase `echo X|tr X '\101'` in
100ee3138f1Smrg A) # ASCII based system
101ee3138f1Smrg    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
102ee3138f1Smrg  SP2NL='tr \040 \012'
103ee3138f1Smrg  NL2SP='tr \015\012 \040\040'
104ee3138f1Smrg  ;;
105ee3138f1Smrg *) # EBCDIC based system
106ee3138f1Smrg  SP2NL='tr \100 \n'
107ee3138f1Smrg  NL2SP='tr \r\n \100\100'
108ee3138f1Smrg  ;;
109ee3138f1Smrgesac
110ee3138f1Smrg
111ee3138f1Smrg# NLS nuisances.
112ee3138f1Smrg# Only set LANG and LC_ALL to C if already set.
113ee3138f1Smrg# These must not be set unconditionally because not all systems understand
114ee3138f1Smrg# e.g. LANG=C (notably SCO).
115ee3138f1Smrg# We save the old values to restore during execute mode.
116ee3138f1Smrgfor lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
117ee3138f1Smrgdo
118ee3138f1Smrg  eval "if test \"\${$lt_var+set}\" = set; then
119ee3138f1Smrg	  save_$lt_var=\$$lt_var
120ee3138f1Smrg	  $lt_var=C
121ee3138f1Smrg	  export $lt_var
122ee3138f1Smrg	fi"
123ee3138f1Smrgdone
124ee3138f1Smrg
125ee3138f1Smrg# Make sure IFS has a sensible default
126ee3138f1Smrglt_nl='
127ee3138f1Smrg'
128ee3138f1SmrgIFS=" 	$lt_nl"
129ee3138f1Smrg
130ee3138f1Smrgif test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
131ee3138f1Smrg  $echo "$modename: not configured to build any kind of library" 1>&2
132ee3138f1Smrg  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
133ee3138f1Smrg  exit $EXIT_FAILURE
134ee3138f1Smrgfi
135ee3138f1Smrg
136ee3138f1Smrg# Global variables.
137ee3138f1Smrgmode=$default_mode
138ee3138f1Smrgnonopt=
139ee3138f1Smrgprev=
140ee3138f1Smrgprevopt=
141ee3138f1Smrgrun=
142ee3138f1Smrgshow="$echo"
143ee3138f1Smrgshow_help=
144ee3138f1Smrgexecute_dlfiles=
145ee3138f1Smrgduplicate_deps=no
146ee3138f1Smrgpreserve_args=
147ee3138f1Smrglo2o="s/\\.lo\$/.${objext}/"
148ee3138f1Smrgo2lo="s/\\.${objext}\$/.lo/"
149ee3138f1Smrgextracted_archives=
150ee3138f1Smrgextracted_serial=0
151ee3138f1Smrg
152ee3138f1Smrg#####################################
153ee3138f1Smrg# Shell function definitions:
154ee3138f1Smrg# This seems to be the best place for them
155ee3138f1Smrg
156ee3138f1Smrg# func_mktempdir [string]
157ee3138f1Smrg# Make a temporary directory that won't clash with other running
158ee3138f1Smrg# libtool processes, and avoids race conditions if possible.  If
159ee3138f1Smrg# given, STRING is the basename for that directory.
160ee3138f1Smrgfunc_mktempdir ()
161ee3138f1Smrg{
162ee3138f1Smrg    my_template="${TMPDIR-/tmp}/${1-$progname}"
163ee3138f1Smrg
164ee3138f1Smrg    if test "$run" = ":"; then
165ee3138f1Smrg      # Return a directory name, but don't create it in dry-run mode
166ee3138f1Smrg      my_tmpdir="${my_template}-$$"
167ee3138f1Smrg    else
168ee3138f1Smrg
169ee3138f1Smrg      # If mktemp works, use that first and foremost
170ee3138f1Smrg      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
171ee3138f1Smrg
172ee3138f1Smrg      if test ! -d "$my_tmpdir"; then
173ee3138f1Smrg	# Failing that, at least try and use $RANDOM to avoid a race
174ee3138f1Smrg	my_tmpdir="${my_template}-${RANDOM-0}$$"
175ee3138f1Smrg
176ee3138f1Smrg	save_mktempdir_umask=`umask`
177ee3138f1Smrg	umask 0077
178ee3138f1Smrg	$mkdir "$my_tmpdir"
179ee3138f1Smrg	umask $save_mktempdir_umask
180ee3138f1Smrg      fi
181ee3138f1Smrg
182ee3138f1Smrg      # If we're not in dry-run mode, bomb out on failure
183ee3138f1Smrg      test -d "$my_tmpdir" || {
184ee3138f1Smrg        $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
185ee3138f1Smrg	exit $EXIT_FAILURE
186ee3138f1Smrg      }
187ee3138f1Smrg    fi
188ee3138f1Smrg
189ee3138f1Smrg    $echo "X$my_tmpdir" | $Xsed
190ee3138f1Smrg}
191ee3138f1Smrg
192ee3138f1Smrg
193ee3138f1Smrg# func_win32_libid arg
194ee3138f1Smrg# return the library type of file 'arg'
195ee3138f1Smrg#
196ee3138f1Smrg# Need a lot of goo to handle *both* DLLs and import libs
197ee3138f1Smrg# Has to be a shell function in order to 'eat' the argument
198ee3138f1Smrg# that is supplied when $file_magic_command is called.
199ee3138f1Smrgfunc_win32_libid ()
200ee3138f1Smrg{
201ee3138f1Smrg  win32_libid_type="unknown"
202ee3138f1Smrg  win32_fileres=`file -L $1 2>/dev/null`
203ee3138f1Smrg  case $win32_fileres in
204ee3138f1Smrg  *ar\ archive\ import\ library*) # definitely import
205ee3138f1Smrg    win32_libid_type="x86 archive import"
206ee3138f1Smrg    ;;
207ee3138f1Smrg  *ar\ archive*) # could be an import, or static
208ee3138f1Smrg    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
209ee3138f1Smrg      $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
210ee3138f1Smrg      win32_nmres=`eval $NM -f posix -A $1 | \
211ee3138f1Smrg	$SED -n -e '1,100{
212ee3138f1Smrg		/ I /{
213ee3138f1Smrg			s,.*,import,
214ee3138f1Smrg			p
215ee3138f1Smrg			q
216ee3138f1Smrg			}
217ee3138f1Smrg		}'`
218ee3138f1Smrg      case $win32_nmres in
219ee3138f1Smrg      import*)  win32_libid_type="x86 archive import";;
220ee3138f1Smrg      *)        win32_libid_type="x86 archive static";;
221ee3138f1Smrg      esac
222ee3138f1Smrg    fi
223ee3138f1Smrg    ;;
224ee3138f1Smrg  *DLL*)
225ee3138f1Smrg    win32_libid_type="x86 DLL"
226ee3138f1Smrg    ;;
227ee3138f1Smrg  *executable*) # but shell scripts are "executable" too...
228ee3138f1Smrg    case $win32_fileres in
229ee3138f1Smrg    *MS\ Windows\ PE\ Intel*)
230ee3138f1Smrg      win32_libid_type="x86 DLL"
231ee3138f1Smrg      ;;
232ee3138f1Smrg    esac
233ee3138f1Smrg    ;;
234ee3138f1Smrg  esac
235ee3138f1Smrg  $echo $win32_libid_type
236ee3138f1Smrg}
237ee3138f1Smrg
238ee3138f1Smrg
239ee3138f1Smrg# func_infer_tag arg
240ee3138f1Smrg# Infer tagged configuration to use if any are available and
241ee3138f1Smrg# if one wasn't chosen via the "--tag" command line option.
242ee3138f1Smrg# Only attempt this if the compiler in the base compile
243ee3138f1Smrg# command doesn't match the default compiler.
244ee3138f1Smrg# arg is usually of the form 'gcc ...'
245ee3138f1Smrgfunc_infer_tag ()
246ee3138f1Smrg{
247ee3138f1Smrg    if test -n "$available_tags" && test -z "$tagname"; then
248ee3138f1Smrg      CC_quoted=
249ee3138f1Smrg      for arg in $CC; do
250ee3138f1Smrg	case $arg in
251ee3138f1Smrg	  *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
252ee3138f1Smrg	  arg="\"$arg\""
253ee3138f1Smrg	  ;;
254ee3138f1Smrg	esac
255ee3138f1Smrg	CC_quoted="$CC_quoted $arg"
256ee3138f1Smrg      done
257ee3138f1Smrg      case $@ in
258ee3138f1Smrg      # Blanks in the command may have been stripped by the calling shell,
259ee3138f1Smrg      # but not from the CC environment variable when configure was run.
260ee3138f1Smrg      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
261ee3138f1Smrg      # Blanks at the start of $base_compile will cause this to fail
262ee3138f1Smrg      # if we don't check for them as well.
263ee3138f1Smrg      *)
264ee3138f1Smrg	for z in $available_tags; do
265ee3138f1Smrg	  if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
266ee3138f1Smrg	    # Evaluate the configuration.
267ee3138f1Smrg	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
268ee3138f1Smrg	    CC_quoted=
269ee3138f1Smrg	    for arg in $CC; do
270ee3138f1Smrg	    # Double-quote args containing other shell metacharacters.
271ee3138f1Smrg	    case $arg in
272ee3138f1Smrg	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
273ee3138f1Smrg	      arg="\"$arg\""
274ee3138f1Smrg	      ;;
275ee3138f1Smrg	    esac
276ee3138f1Smrg	    CC_quoted="$CC_quoted $arg"
277ee3138f1Smrg	  done
278ee3138f1Smrg	    case "$@ " in
279ee3138f1Smrg	      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
280ee3138f1Smrg	      # The compiler in the base compile command matches
281ee3138f1Smrg	      # the one in the tagged configuration.
282ee3138f1Smrg	      # Assume this is the tagged configuration we want.
283ee3138f1Smrg	      tagname=$z
284ee3138f1Smrg	      break
285ee3138f1Smrg	      ;;
286ee3138f1Smrg	    esac
287ee3138f1Smrg	  fi
288ee3138f1Smrg	done
289ee3138f1Smrg	# If $tagname still isn't set, then no tagged configuration
290ee3138f1Smrg	# was found and let the user know that the "--tag" command
291ee3138f1Smrg	# line option must be used.
292ee3138f1Smrg	if test -z "$tagname"; then
293ee3138f1Smrg	  $echo "$modename: unable to infer tagged configuration"
294ee3138f1Smrg	  $echo "$modename: specify a tag with \`--tag'" 1>&2
295ee3138f1Smrg	  exit $EXIT_FAILURE
296ee3138f1Smrg#        else
297ee3138f1Smrg#          $echo "$modename: using $tagname tagged configuration"
298ee3138f1Smrg	fi
299ee3138f1Smrg	;;
300ee3138f1Smrg      esac
301ee3138f1Smrg    fi
302ee3138f1Smrg}
303ee3138f1Smrg
304ee3138f1Smrg
305ee3138f1Smrg# func_extract_an_archive dir oldlib
306ee3138f1Smrgfunc_extract_an_archive ()
307ee3138f1Smrg{
308ee3138f1Smrg    f_ex_an_ar_dir="$1"; shift
309ee3138f1Smrg    f_ex_an_ar_oldlib="$1"
310ee3138f1Smrg
311ee3138f1Smrg    $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
312ee3138f1Smrg    $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
313ee3138f1Smrg    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
314ee3138f1Smrg     :
315ee3138f1Smrg    else
316ee3138f1Smrg      $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
317ee3138f1Smrg      exit $EXIT_FAILURE
318ee3138f1Smrg    fi
319ee3138f1Smrg}
320ee3138f1Smrg
321ee3138f1Smrg# func_extract_archives gentop oldlib ...
322ee3138f1Smrgfunc_extract_archives ()
323ee3138f1Smrg{
324ee3138f1Smrg    my_gentop="$1"; shift
325ee3138f1Smrg    my_oldlibs=${1+"$@"}
326ee3138f1Smrg    my_oldobjs=""
327ee3138f1Smrg    my_xlib=""
328ee3138f1Smrg    my_xabs=""
329ee3138f1Smrg    my_xdir=""
330ee3138f1Smrg    my_status=""
331ee3138f1Smrg
332ee3138f1Smrg    $show "${rm}r $my_gentop"
333ee3138f1Smrg    $run ${rm}r "$my_gentop"
334ee3138f1Smrg    $show "$mkdir $my_gentop"
335ee3138f1Smrg    $run $mkdir "$my_gentop"
336ee3138f1Smrg    my_status=$?
337ee3138f1Smrg    if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
338ee3138f1Smrg      exit $my_status
339ee3138f1Smrg    fi
340ee3138f1Smrg
341ee3138f1Smrg    for my_xlib in $my_oldlibs; do
342ee3138f1Smrg      # Extract the objects.
343ee3138f1Smrg      case $my_xlib in
344ee3138f1Smrg	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
345ee3138f1Smrg	*) my_xabs=`pwd`"/$my_xlib" ;;
346ee3138f1Smrg      esac
347ee3138f1Smrg      my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
348ee3138f1Smrg      my_xlib_u=$my_xlib
349ee3138f1Smrg      while :; do
350ee3138f1Smrg        case " $extracted_archives " in
351ee3138f1Smrg	*" $my_xlib_u "*)
352ee3138f1Smrg	  extracted_serial=`expr $extracted_serial + 1`
353ee3138f1Smrg	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
354ee3138f1Smrg	*) break ;;
355ee3138f1Smrg	esac
356ee3138f1Smrg      done
357ee3138f1Smrg      extracted_archives="$extracted_archives $my_xlib_u"
358ee3138f1Smrg      my_xdir="$my_gentop/$my_xlib_u"
359ee3138f1Smrg
360ee3138f1Smrg      $show "${rm}r $my_xdir"
361ee3138f1Smrg      $run ${rm}r "$my_xdir"
362ee3138f1Smrg      $show "$mkdir $my_xdir"
363ee3138f1Smrg      $run $mkdir "$my_xdir"
364ee3138f1Smrg      exit_status=$?
365ee3138f1Smrg      if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
366ee3138f1Smrg	exit $exit_status
367ee3138f1Smrg      fi
368ee3138f1Smrg      case $host in
369ee3138f1Smrg      *-darwin*)
370ee3138f1Smrg	$show "Extracting $my_xabs"
371ee3138f1Smrg	# Do not bother doing anything if just a dry run
372ee3138f1Smrg	if test -z "$run"; then
373ee3138f1Smrg	  darwin_orig_dir=`pwd`
374ee3138f1Smrg	  cd $my_xdir || exit $?
375ee3138f1Smrg	  darwin_archive=$my_xabs
376ee3138f1Smrg	  darwin_curdir=`pwd`
377ee3138f1Smrg	  darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
378ee3138f1Smrg	  darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
379ee3138f1Smrg	  if test -n "$darwin_arches"; then 
380ee3138f1Smrg	    darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
381ee3138f1Smrg	    darwin_arch=
382ee3138f1Smrg	    $show "$darwin_base_archive has multiple architectures $darwin_arches"
383ee3138f1Smrg	    for darwin_arch in  $darwin_arches ; do
384ee3138f1Smrg	      mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
385ee3138f1Smrg	      lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
386ee3138f1Smrg	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
387ee3138f1Smrg	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
388ee3138f1Smrg	      cd "$darwin_curdir"
389ee3138f1Smrg	      $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
390ee3138f1Smrg	    done # $darwin_arches
391ee3138f1Smrg      ## Okay now we have a bunch of thin objects, gotta fatten them up :)
392ee3138f1Smrg	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
393ee3138f1Smrg	    darwin_file=
394ee3138f1Smrg	    darwin_files=
395ee3138f1Smrg	    for darwin_file in $darwin_filelist; do
396ee3138f1Smrg	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
397ee3138f1Smrg	      lipo -create -output "$darwin_file" $darwin_files
398ee3138f1Smrg	    done # $darwin_filelist
399ee3138f1Smrg	    ${rm}r unfat-$$
400ee3138f1Smrg	    cd "$darwin_orig_dir"
401ee3138f1Smrg	  else
402ee3138f1Smrg	    cd "$darwin_orig_dir"
403ee3138f1Smrg 	    func_extract_an_archive "$my_xdir" "$my_xabs"
404ee3138f1Smrg	  fi # $darwin_arches
405ee3138f1Smrg	fi # $run
406ee3138f1Smrg	;;
407ee3138f1Smrg      *)
408ee3138f1Smrg        func_extract_an_archive "$my_xdir" "$my_xabs"
409ee3138f1Smrg        ;;
410ee3138f1Smrg      esac
411ee3138f1Smrg      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
412ee3138f1Smrg    done
413ee3138f1Smrg    func_extract_archives_result="$my_oldobjs"
414ee3138f1Smrg}
415ee3138f1Smrg# End of Shell function definitions
416ee3138f1Smrg#####################################
417ee3138f1Smrg
418ee3138f1Smrg# Darwin sucks
419ee3138f1Smrgeval std_shrext=\"$shrext_cmds\"
420ee3138f1Smrg
421ee3138f1Smrgdisable_libs=no
422ee3138f1Smrg
423ee3138f1Smrg# Parse our command line options once, thoroughly.
424ee3138f1Smrgwhile test "$#" -gt 0
425ee3138f1Smrgdo
426ee3138f1Smrg  arg="$1"
427ee3138f1Smrg  shift
428ee3138f1Smrg
429ee3138f1Smrg  case $arg in
430ee3138f1Smrg  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
431ee3138f1Smrg  *) optarg= ;;
432ee3138f1Smrg  esac
433ee3138f1Smrg
434ee3138f1Smrg  # If the previous option needs an argument, assign it.
435ee3138f1Smrg  if test -n "$prev"; then
436ee3138f1Smrg    case $prev in
437ee3138f1Smrg    execute_dlfiles)
438ee3138f1Smrg      execute_dlfiles="$execute_dlfiles $arg"
439ee3138f1Smrg      ;;
440ee3138f1Smrg    tag)
441ee3138f1Smrg      tagname="$arg"
442ee3138f1Smrg      preserve_args="${preserve_args}=$arg"
443ee3138f1Smrg
444ee3138f1Smrg      # Check whether tagname contains only valid characters
445ee3138f1Smrg      case $tagname in
446ee3138f1Smrg      *[!-_A-Za-z0-9,/]*)
447ee3138f1Smrg	$echo "$progname: invalid tag name: $tagname" 1>&2
448ee3138f1Smrg	exit $EXIT_FAILURE
449ee3138f1Smrg	;;
450ee3138f1Smrg      esac
451ee3138f1Smrg
452ee3138f1Smrg      case $tagname in
453ee3138f1Smrg      CC)
454ee3138f1Smrg	# Don't test for the "default" C tag, as we know, it's there, but
455ee3138f1Smrg	# not specially marked.
456ee3138f1Smrg	;;
457ee3138f1Smrg      *)
458ee3138f1Smrg	if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
459ee3138f1Smrg	  taglist="$taglist $tagname"
460ee3138f1Smrg	  # Evaluate the configuration.
461ee3138f1Smrg	  eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
462ee3138f1Smrg	else
463ee3138f1Smrg	  $echo "$progname: ignoring unknown tag $tagname" 1>&2
464ee3138f1Smrg	fi
465ee3138f1Smrg	;;
466ee3138f1Smrg      esac
467ee3138f1Smrg      ;;
468ee3138f1Smrg    *)
469ee3138f1Smrg      eval "$prev=\$arg"
470ee3138f1Smrg      ;;
471ee3138f1Smrg    esac
472ee3138f1Smrg
473ee3138f1Smrg    prev=
474ee3138f1Smrg    prevopt=
475ee3138f1Smrg    continue
476ee3138f1Smrg  fi
477ee3138f1Smrg
478ee3138f1Smrg  # Have we seen a non-optional argument yet?
479ee3138f1Smrg  case $arg in
480ee3138f1Smrg  --help)
481ee3138f1Smrg    show_help=yes
482ee3138f1Smrg    ;;
483ee3138f1Smrg
484ee3138f1Smrg  --version)
485ee3138f1Smrg    echo "\
486ee3138f1Smrg$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP
487ee3138f1Smrg
488ee3138f1SmrgCopyright (C) 2007  Free Software Foundation, Inc.
489ee3138f1SmrgThis is free software; see the source for copying conditions.  There is NO
490ee3138f1Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
491ee3138f1Smrg    exit $?
492ee3138f1Smrg    ;;
493ee3138f1Smrg
494ee3138f1Smrg  --config)
495ee3138f1Smrg    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
496ee3138f1Smrg    # Now print the configurations for the tags.
497ee3138f1Smrg    for tagname in $taglist; do
498ee3138f1Smrg      ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
499ee3138f1Smrg    done
500ee3138f1Smrg    exit $?
501ee3138f1Smrg    ;;
502ee3138f1Smrg
503ee3138f1Smrg  --debug)
504ee3138f1Smrg    $echo "$progname: enabling shell trace mode"
505ee3138f1Smrg    set -x
506ee3138f1Smrg    preserve_args="$preserve_args $arg"
507ee3138f1Smrg    ;;
508ee3138f1Smrg
509ee3138f1Smrg  --dry-run | -n)
510ee3138f1Smrg    run=:
511ee3138f1Smrg    ;;
512ee3138f1Smrg
513ee3138f1Smrg  --features)
514ee3138f1Smrg    $echo "host: $host"
515ee3138f1Smrg    if test "$build_libtool_libs" = yes; then
516ee3138f1Smrg      $echo "enable shared libraries"
517ee3138f1Smrg    else
518ee3138f1Smrg      $echo "disable shared libraries"
519ee3138f1Smrg    fi
520ee3138f1Smrg    if test "$build_old_libs" = yes; then
521ee3138f1Smrg      $echo "enable static libraries"
522ee3138f1Smrg    else
523ee3138f1Smrg      $echo "disable static libraries"
524ee3138f1Smrg    fi
525ee3138f1Smrg    exit $?
526ee3138f1Smrg    ;;
527ee3138f1Smrg
528ee3138f1Smrg  --finish) mode="finish" ;;
529ee3138f1Smrg
530ee3138f1Smrg  --mode) prevopt="--mode" prev=mode ;;
531ee3138f1Smrg  --mode=*) mode="$optarg" ;;
532ee3138f1Smrg
533ee3138f1Smrg  --preserve-dup-deps) duplicate_deps="yes" ;;
534ee3138f1Smrg
535ee3138f1Smrg  --quiet | --silent)
536ee3138f1Smrg    show=:
537ee3138f1Smrg    preserve_args="$preserve_args $arg"
538ee3138f1Smrg    ;;
539ee3138f1Smrg
540ee3138f1Smrg  --tag)
541ee3138f1Smrg    prevopt="--tag"
542ee3138f1Smrg    prev=tag
543ee3138f1Smrg    preserve_args="$preserve_args --tag"
544ee3138f1Smrg    ;;
545ee3138f1Smrg  --tag=*)
546ee3138f1Smrg    set tag "$optarg" ${1+"$@"}
547ee3138f1Smrg    shift
548ee3138f1Smrg    prev=tag
549ee3138f1Smrg    preserve_args="$preserve_args --tag"
550ee3138f1Smrg    ;;
551ee3138f1Smrg
552ee3138f1Smrg  -dlopen)
553ee3138f1Smrg    prevopt="-dlopen"
554ee3138f1Smrg    prev=execute_dlfiles
555ee3138f1Smrg    ;;
556ee3138f1Smrg
557ee3138f1Smrg  -*)
558ee3138f1Smrg    $echo "$modename: unrecognized option \`$arg'" 1>&2
559ee3138f1Smrg    $echo "$help" 1>&2
560ee3138f1Smrg    exit $EXIT_FAILURE
561ee3138f1Smrg    ;;
562ee3138f1Smrg
563ee3138f1Smrg  *)
564ee3138f1Smrg    nonopt="$arg"
565ee3138f1Smrg    break
566ee3138f1Smrg    ;;
567ee3138f1Smrg  esac
568ee3138f1Smrgdone
569ee3138f1Smrg
570ee3138f1Smrgif test -n "$prevopt"; then
571ee3138f1Smrg  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
572ee3138f1Smrg  $echo "$help" 1>&2
573ee3138f1Smrg  exit $EXIT_FAILURE
574ee3138f1Smrgfi
575ee3138f1Smrg
576ee3138f1Smrgcase $disable_libs in
577ee3138f1Smrgno) 
578ee3138f1Smrg  ;;
579ee3138f1Smrgshared)
580ee3138f1Smrg  build_libtool_libs=no
581ee3138f1Smrg  build_old_libs=yes
582ee3138f1Smrg  ;;
583ee3138f1Smrgstatic)
584ee3138f1Smrg  build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
585ee3138f1Smrg  ;;
586ee3138f1Smrgesac
587ee3138f1Smrg
588ee3138f1Smrg# If this variable is set in any of the actions, the command in it
589ee3138f1Smrg# will be execed at the end.  This prevents here-documents from being
590ee3138f1Smrg# left over by shells.
591ee3138f1Smrgexec_cmd=
592ee3138f1Smrg
593ee3138f1Smrgif test -z "$show_help"; then
594ee3138f1Smrg
595ee3138f1Smrg  # Infer the operation mode.
596ee3138f1Smrg  if test -z "$mode"; then
597ee3138f1Smrg    $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
598ee3138f1Smrg    $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
599ee3138f1Smrg    case $nonopt in
600ee3138f1Smrg    *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
601ee3138f1Smrg      mode=link
602ee3138f1Smrg      for arg
603ee3138f1Smrg      do
604ee3138f1Smrg	case $arg in
605ee3138f1Smrg	-c)
606ee3138f1Smrg	   mode=compile
607ee3138f1Smrg	   break
608ee3138f1Smrg	   ;;
609ee3138f1Smrg	esac
610ee3138f1Smrg      done
611ee3138f1Smrg      ;;
612ee3138f1Smrg    *db | *dbx | *strace | *truss)
613ee3138f1Smrg      mode=execute
614ee3138f1Smrg      ;;
615ee3138f1Smrg    *install*|cp|mv)
616ee3138f1Smrg      mode=install
617ee3138f1Smrg      ;;
618ee3138f1Smrg    *rm)
619ee3138f1Smrg      mode=uninstall
620ee3138f1Smrg      ;;
621ee3138f1Smrg    *)
622ee3138f1Smrg      # If we have no mode, but dlfiles were specified, then do execute mode.
623ee3138f1Smrg      test -n "$execute_dlfiles" && mode=execute
624ee3138f1Smrg
625ee3138f1Smrg      # Just use the default operation mode.
626ee3138f1Smrg      if test -z "$mode"; then
627ee3138f1Smrg	if test -n "$nonopt"; then
628ee3138f1Smrg	  $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
629ee3138f1Smrg	else
630ee3138f1Smrg	  $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
631ee3138f1Smrg	fi
632ee3138f1Smrg      fi
633ee3138f1Smrg      ;;
634ee3138f1Smrg    esac
635ee3138f1Smrg  fi
636ee3138f1Smrg
637ee3138f1Smrg  # Only execute mode is allowed to have -dlopen flags.
638ee3138f1Smrg  if test -n "$execute_dlfiles" && test "$mode" != execute; then
639ee3138f1Smrg    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
640ee3138f1Smrg    $echo "$help" 1>&2
641ee3138f1Smrg    exit $EXIT_FAILURE
642ee3138f1Smrg  fi
643ee3138f1Smrg
644ee3138f1Smrg  # Change the help message to a mode-specific one.
645ee3138f1Smrg  generic_help="$help"
646ee3138f1Smrg  help="Try \`$modename --help --mode=$mode' for more information."
647ee3138f1Smrg
648ee3138f1Smrg  # These modes are in order of execution frequency so that they run quickly.
649ee3138f1Smrg  case $mode in
650ee3138f1Smrg  # libtool compile mode
651ee3138f1Smrg  compile)
652ee3138f1Smrg    modename="$modename: compile"
653ee3138f1Smrg    # Get the compilation command and the source file.
654ee3138f1Smrg    base_compile=
655ee3138f1Smrg    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
656ee3138f1Smrg    suppress_opt=yes
657ee3138f1Smrg    suppress_output=
658ee3138f1Smrg    arg_mode=normal
659ee3138f1Smrg    libobj=
660ee3138f1Smrg    later=
661ee3138f1Smrg
662ee3138f1Smrg    for arg
663ee3138f1Smrg    do
664ee3138f1Smrg      case $arg_mode in
665ee3138f1Smrg      arg  )
666ee3138f1Smrg	# do not "continue".  Instead, add this to base_compile
667ee3138f1Smrg	lastarg="$arg"
668ee3138f1Smrg	arg_mode=normal
669ee3138f1Smrg	;;
670ee3138f1Smrg
671ee3138f1Smrg      target )
672ee3138f1Smrg	libobj="$arg"
673ee3138f1Smrg	arg_mode=normal
674ee3138f1Smrg	continue
675ee3138f1Smrg	;;
676ee3138f1Smrg
677ee3138f1Smrg      normal )
678ee3138f1Smrg	# Accept any command-line options.
679ee3138f1Smrg	case $arg in
680ee3138f1Smrg	-o)
681ee3138f1Smrg	  if test -n "$libobj" ; then
682ee3138f1Smrg	    $echo "$modename: you cannot specify \`-o' more than once" 1>&2
683ee3138f1Smrg	    exit $EXIT_FAILURE
684ee3138f1Smrg	  fi
685ee3138f1Smrg	  arg_mode=target
686ee3138f1Smrg	  continue
687ee3138f1Smrg	  ;;
688ee3138f1Smrg
689ee3138f1Smrg	-static | -prefer-pic | -prefer-non-pic)
690ee3138f1Smrg	  later="$later $arg"
691ee3138f1Smrg	  continue
692ee3138f1Smrg	  ;;
693ee3138f1Smrg
694ee3138f1Smrg	-no-suppress)
695ee3138f1Smrg	  suppress_opt=no
696ee3138f1Smrg	  continue
697ee3138f1Smrg	  ;;
698ee3138f1Smrg
699ee3138f1Smrg	-Xcompiler)
700ee3138f1Smrg	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
701ee3138f1Smrg	  continue      #  The current "srcfile" will either be retained or
702ee3138f1Smrg	  ;;            #  replaced later.  I would guess that would be a bug.
703ee3138f1Smrg
704ee3138f1Smrg	-Wc,*)
705ee3138f1Smrg	  args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
706ee3138f1Smrg	  lastarg=
707ee3138f1Smrg	  save_ifs="$IFS"; IFS=','
708ee3138f1Smrg 	  for arg in $args; do
709ee3138f1Smrg	    IFS="$save_ifs"
710ee3138f1Smrg
711ee3138f1Smrg	    # Double-quote args containing other shell metacharacters.
712ee3138f1Smrg	    # Many Bourne shells cannot handle close brackets correctly
713ee3138f1Smrg	    # in scan sets, so we specify it separately.
714ee3138f1Smrg	    case $arg in
715ee3138f1Smrg	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
716ee3138f1Smrg	      arg="\"$arg\""
717ee3138f1Smrg	      ;;
718ee3138f1Smrg	    esac
719ee3138f1Smrg	    lastarg="$lastarg $arg"
720ee3138f1Smrg	  done
721ee3138f1Smrg	  IFS="$save_ifs"
722ee3138f1Smrg	  lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
723ee3138f1Smrg
724ee3138f1Smrg	  # Add the arguments to base_compile.
725ee3138f1Smrg	  base_compile="$base_compile $lastarg"
726ee3138f1Smrg	  continue
727ee3138f1Smrg	  ;;
728ee3138f1Smrg
729ee3138f1Smrg	* )
730ee3138f1Smrg	  # Accept the current argument as the source file.
731ee3138f1Smrg	  # The previous "srcfile" becomes the current argument.
732ee3138f1Smrg	  #
733ee3138f1Smrg	  lastarg="$srcfile"
734ee3138f1Smrg	  srcfile="$arg"
735ee3138f1Smrg	  ;;
736ee3138f1Smrg	esac  #  case $arg
737ee3138f1Smrg	;;
738ee3138f1Smrg      esac    #  case $arg_mode
739ee3138f1Smrg
740ee3138f1Smrg      # Aesthetically quote the previous argument.
741ee3138f1Smrg      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
742ee3138f1Smrg
743ee3138f1Smrg      case $lastarg in
744ee3138f1Smrg      # Double-quote args containing other shell metacharacters.
745ee3138f1Smrg      # Many Bourne shells cannot handle close brackets correctly
746ee3138f1Smrg      # in scan sets, and some SunOS ksh mistreat backslash-escaping
747ee3138f1Smrg      # in scan sets (worked around with variable expansion),
748ee3138f1Smrg      # and furthermore cannot handle '|' '&' '(' ')' in scan sets 
749ee3138f1Smrg      # at all, so we specify them separately.
750ee3138f1Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
751ee3138f1Smrg	lastarg="\"$lastarg\""
752ee3138f1Smrg	;;
753ee3138f1Smrg      esac
754ee3138f1Smrg
755ee3138f1Smrg      base_compile="$base_compile $lastarg"
756ee3138f1Smrg    done # for arg
757ee3138f1Smrg
758ee3138f1Smrg    case $arg_mode in
759ee3138f1Smrg    arg)
760ee3138f1Smrg      $echo "$modename: you must specify an argument for -Xcompile"
761ee3138f1Smrg      exit $EXIT_FAILURE
762ee3138f1Smrg      ;;
763ee3138f1Smrg    target)
764ee3138f1Smrg      $echo "$modename: you must specify a target with \`-o'" 1>&2
765ee3138f1Smrg      exit $EXIT_FAILURE
766ee3138f1Smrg      ;;
767ee3138f1Smrg    *)
768ee3138f1Smrg      # Get the name of the library object.
769ee3138f1Smrg      [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
770ee3138f1Smrg      ;;
771ee3138f1Smrg    esac
772ee3138f1Smrg
773ee3138f1Smrg    # Recognize several different file suffixes.
774ee3138f1Smrg    # If the user specifies -o file.o, it is replaced with file.lo
775ee3138f1Smrg    xform='[cCFSifmso]'
776ee3138f1Smrg    case $libobj in
777ee3138f1Smrg    *.ada) xform=ada ;;
778ee3138f1Smrg    *.adb) xform=adb ;;
779ee3138f1Smrg    *.ads) xform=ads ;;
780ee3138f1Smrg    *.asm) xform=asm ;;
781ee3138f1Smrg    *.c++) xform=c++ ;;
782ee3138f1Smrg    *.cc) xform=cc ;;
783ee3138f1Smrg    *.ii) xform=ii ;;
784ee3138f1Smrg    *.class) xform=class ;;
785ee3138f1Smrg    *.cpp) xform=cpp ;;
786ee3138f1Smrg    *.cxx) xform=cxx ;;
787ee3138f1Smrg    *.[fF][09]?) xform=[fF][09]. ;;
788ee3138f1Smrg    *.for) xform=for ;;
789ee3138f1Smrg    *.java) xform=java ;;
790ee3138f1Smrg    *.obj) xform=obj ;;
791ee3138f1Smrg    esac
792ee3138f1Smrg
793ee3138f1Smrg    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
794ee3138f1Smrg
795ee3138f1Smrg    case $libobj in
796ee3138f1Smrg    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
797ee3138f1Smrg    *)
798ee3138f1Smrg      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
799ee3138f1Smrg      exit $EXIT_FAILURE
800ee3138f1Smrg      ;;
801ee3138f1Smrg    esac
802ee3138f1Smrg
803ee3138f1Smrg    func_infer_tag $base_compile
804ee3138f1Smrg
805ee3138f1Smrg    for arg in $later; do
806ee3138f1Smrg      case $arg in
807ee3138f1Smrg      -static)
808ee3138f1Smrg	build_old_libs=yes
809ee3138f1Smrg	continue
810ee3138f1Smrg	;;
811ee3138f1Smrg
812ee3138f1Smrg      -prefer-pic)
813ee3138f1Smrg	pic_mode=yes
814ee3138f1Smrg	continue
815ee3138f1Smrg	;;
816ee3138f1Smrg
817ee3138f1Smrg      -prefer-non-pic)
818ee3138f1Smrg	pic_mode=no
819ee3138f1Smrg	continue
820ee3138f1Smrg	;;
821ee3138f1Smrg      esac
822ee3138f1Smrg    done
823ee3138f1Smrg
824ee3138f1Smrg    qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
825ee3138f1Smrg    case $qlibobj in
826ee3138f1Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
827ee3138f1Smrg	qlibobj="\"$qlibobj\"" ;;
828ee3138f1Smrg    esac
829ee3138f1Smrg    test "X$libobj" != "X$qlibobj" \
830ee3138f1Smrg	&& $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' 	&()|`$[]' \
831ee3138f1Smrg	&& $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
832ee3138f1Smrg    objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
833ee3138f1Smrg    xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
834ee3138f1Smrg    if test "X$xdir" = "X$obj"; then
835ee3138f1Smrg      xdir=
836ee3138f1Smrg    else
837ee3138f1Smrg      xdir=$xdir/
838ee3138f1Smrg    fi
839ee3138f1Smrg    lobj=${xdir}$objdir/$objname
840ee3138f1Smrg
841ee3138f1Smrg    if test -z "$base_compile"; then
842ee3138f1Smrg      $echo "$modename: you must specify a compilation command" 1>&2
843ee3138f1Smrg      $echo "$help" 1>&2
844ee3138f1Smrg      exit $EXIT_FAILURE
845ee3138f1Smrg    fi
846ee3138f1Smrg
847ee3138f1Smrg    # Delete any leftover library objects.
848ee3138f1Smrg    if test "$build_old_libs" = yes; then
849ee3138f1Smrg      removelist="$obj $lobj $libobj ${libobj}T"
850ee3138f1Smrg    else
851ee3138f1Smrg      removelist="$lobj $libobj ${libobj}T"
852ee3138f1Smrg    fi
853ee3138f1Smrg
854ee3138f1Smrg    $run $rm $removelist
855ee3138f1Smrg    trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
856ee3138f1Smrg
857ee3138f1Smrg    # On Cygwin there's no "real" PIC flag so we must build both object types
858ee3138f1Smrg    case $host_os in
859ee3138f1Smrg    cygwin* | mingw* | pw32* | os2*)
860ee3138f1Smrg      pic_mode=default
861ee3138f1Smrg      ;;
862ee3138f1Smrg    esac
863ee3138f1Smrg    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
864ee3138f1Smrg      # non-PIC code in shared libraries is not supported
865ee3138f1Smrg      pic_mode=default
866ee3138f1Smrg    fi
867ee3138f1Smrg
868ee3138f1Smrg    # Calculate the filename of the output object if compiler does
869ee3138f1Smrg    # not support -o with -c
870ee3138f1Smrg    if test "$compiler_c_o" = no; then
871ee3138f1Smrg      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
872ee3138f1Smrg      lockfile="$output_obj.lock"
873ee3138f1Smrg      removelist="$removelist $output_obj $lockfile"
874ee3138f1Smrg      trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
875ee3138f1Smrg    else
876ee3138f1Smrg      output_obj=
877ee3138f1Smrg      need_locks=no
878ee3138f1Smrg      lockfile=
879ee3138f1Smrg    fi
880ee3138f1Smrg
881ee3138f1Smrg    # Lock this critical section if it is needed
882ee3138f1Smrg    # We use this script file to make the link, it avoids creating a new file
883ee3138f1Smrg    if test "$need_locks" = yes; then
884ee3138f1Smrg      until $run ln "$progpath" "$lockfile" 2>/dev/null; do
885ee3138f1Smrg	$show "Waiting for $lockfile to be removed"
886ee3138f1Smrg	sleep 2
887ee3138f1Smrg      done
888ee3138f1Smrg    elif test "$need_locks" = warn; then
889ee3138f1Smrg      if test -f "$lockfile"; then
890ee3138f1Smrg	$echo "\
891ee3138f1Smrg*** ERROR, $lockfile exists and contains:
892ee3138f1Smrg`cat $lockfile 2>/dev/null`
893ee3138f1Smrg
894ee3138f1SmrgThis indicates that another process is trying to use the same
895ee3138f1Smrgtemporary object file, and libtool could not work around it because
896ee3138f1Smrgyour compiler does not support \`-c' and \`-o' together.  If you
897ee3138f1Smrgrepeat this compilation, it may succeed, by chance, but you had better
898ee3138f1Smrgavoid parallel builds (make -j) in this platform, or get a better
899ee3138f1Smrgcompiler."
900ee3138f1Smrg
901ee3138f1Smrg	$run $rm $removelist
902ee3138f1Smrg	exit $EXIT_FAILURE
903ee3138f1Smrg      fi
904ee3138f1Smrg      $echo "$srcfile" > "$lockfile"
905ee3138f1Smrg    fi
906ee3138f1Smrg
907ee3138f1Smrg    if test -n "$fix_srcfile_path"; then
908ee3138f1Smrg      eval srcfile=\"$fix_srcfile_path\"
909ee3138f1Smrg    fi
910ee3138f1Smrg    qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
911ee3138f1Smrg    case $qsrcfile in
912ee3138f1Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
913ee3138f1Smrg      qsrcfile="\"$qsrcfile\"" ;;
914ee3138f1Smrg    esac
915ee3138f1Smrg
916ee3138f1Smrg    $run $rm "$libobj" "${libobj}T"
917ee3138f1Smrg
918ee3138f1Smrg    # Create a libtool object file (analogous to a ".la" file),
919ee3138f1Smrg    # but don't create it if we're doing a dry run.
920ee3138f1Smrg    test -z "$run" && cat > ${libobj}T <<EOF
921ee3138f1Smrg# $libobj - a libtool object file
922ee3138f1Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
923ee3138f1Smrg#
924ee3138f1Smrg# Please DO NOT delete this file!
925ee3138f1Smrg# It is necessary for linking the library.
926ee3138f1Smrg
927ee3138f1Smrg# Name of the PIC object.
928ee3138f1SmrgEOF
929ee3138f1Smrg
930ee3138f1Smrg    # Only build a PIC object if we are building libtool libraries.
931ee3138f1Smrg    if test "$build_libtool_libs" = yes; then
932ee3138f1Smrg      # Without this assignment, base_compile gets emptied.
933ee3138f1Smrg      fbsd_hideous_sh_bug=$base_compile
934ee3138f1Smrg
935ee3138f1Smrg      if test "$pic_mode" != no; then
936ee3138f1Smrg	command="$base_compile $qsrcfile $pic_flag"
937ee3138f1Smrg      else
938ee3138f1Smrg	# Don't build PIC code
939ee3138f1Smrg	command="$base_compile $qsrcfile"
940ee3138f1Smrg      fi
941ee3138f1Smrg
942ee3138f1Smrg      if test ! -d "${xdir}$objdir"; then
943ee3138f1Smrg	$show "$mkdir ${xdir}$objdir"
944ee3138f1Smrg	$run $mkdir ${xdir}$objdir
945ee3138f1Smrg	exit_status=$?
946ee3138f1Smrg	if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
947ee3138f1Smrg	  exit $exit_status
948ee3138f1Smrg	fi
949ee3138f1Smrg      fi
950ee3138f1Smrg
951ee3138f1Smrg      if test -z "$output_obj"; then
952ee3138f1Smrg	# Place PIC objects in $objdir
953ee3138f1Smrg	command="$command -o $lobj"
954ee3138f1Smrg      fi
955ee3138f1Smrg
956ee3138f1Smrg      $run $rm "$lobj" "$output_obj"
957ee3138f1Smrg
958ee3138f1Smrg      $show "$command"
959ee3138f1Smrg      if $run eval "$command"; then :
960ee3138f1Smrg      else
961ee3138f1Smrg	test -n "$output_obj" && $run $rm $removelist
962ee3138f1Smrg	exit $EXIT_FAILURE
963ee3138f1Smrg      fi
964ee3138f1Smrg
965ee3138f1Smrg      if test "$need_locks" = warn &&
966ee3138f1Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
967ee3138f1Smrg	$echo "\
968ee3138f1Smrg*** ERROR, $lockfile contains:
969ee3138f1Smrg`cat $lockfile 2>/dev/null`
970ee3138f1Smrg
971ee3138f1Smrgbut it should contain:
972ee3138f1Smrg$srcfile
973ee3138f1Smrg
974ee3138f1SmrgThis indicates that another process is trying to use the same
975ee3138f1Smrgtemporary object file, and libtool could not work around it because
976ee3138f1Smrgyour compiler does not support \`-c' and \`-o' together.  If you
977ee3138f1Smrgrepeat this compilation, it may succeed, by chance, but you had better
978ee3138f1Smrgavoid parallel builds (make -j) in this platform, or get a better
979ee3138f1Smrgcompiler."
980ee3138f1Smrg
981ee3138f1Smrg	$run $rm $removelist
982ee3138f1Smrg	exit $EXIT_FAILURE
983ee3138f1Smrg      fi
984ee3138f1Smrg
985ee3138f1Smrg      # Just move the object if needed, then go on to compile the next one
986ee3138f1Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
987ee3138f1Smrg	$show "$mv $output_obj $lobj"
988ee3138f1Smrg	if $run $mv $output_obj $lobj; then :
989ee3138f1Smrg	else
990ee3138f1Smrg	  error=$?
991ee3138f1Smrg	  $run $rm $removelist
992ee3138f1Smrg	  exit $error
993ee3138f1Smrg	fi
994ee3138f1Smrg      fi
995ee3138f1Smrg
996ee3138f1Smrg      # Append the name of the PIC object to the libtool object file.
997ee3138f1Smrg      test -z "$run" && cat >> ${libobj}T <<EOF
998ee3138f1Smrgpic_object='$objdir/$objname'
999ee3138f1Smrg
1000ee3138f1SmrgEOF
1001ee3138f1Smrg
1002ee3138f1Smrg      # Allow error messages only from the first compilation.
1003ee3138f1Smrg      if test "$suppress_opt" = yes; then
1004ee3138f1Smrg        suppress_output=' >/dev/null 2>&1'
1005ee3138f1Smrg      fi
1006ee3138f1Smrg    else
1007ee3138f1Smrg      # No PIC object so indicate it doesn't exist in the libtool
1008ee3138f1Smrg      # object file.
1009ee3138f1Smrg      test -z "$run" && cat >> ${libobj}T <<EOF
1010ee3138f1Smrgpic_object=none
1011ee3138f1Smrg
1012ee3138f1SmrgEOF
1013ee3138f1Smrg    fi
1014ee3138f1Smrg
1015ee3138f1Smrg    # Only build a position-dependent object if we build old libraries.
1016ee3138f1Smrg    if test "$build_old_libs" = yes; then
1017ee3138f1Smrg      if test "$pic_mode" != yes; then
1018ee3138f1Smrg	# Don't build PIC code
1019ee3138f1Smrg	command="$base_compile $qsrcfile"
1020ee3138f1Smrg      else
1021ee3138f1Smrg	command="$base_compile $qsrcfile $pic_flag"
1022ee3138f1Smrg      fi
1023ee3138f1Smrg      if test "$compiler_c_o" = yes; then
1024ee3138f1Smrg	command="$command -o $obj"
1025ee3138f1Smrg      fi
1026ee3138f1Smrg
1027ee3138f1Smrg      # Suppress compiler output if we already did a PIC compilation.
1028ee3138f1Smrg      command="$command$suppress_output"
1029ee3138f1Smrg      $run $rm "$obj" "$output_obj"
1030ee3138f1Smrg      $show "$command"
1031ee3138f1Smrg      if $run eval "$command"; then :
1032ee3138f1Smrg      else
1033ee3138f1Smrg	$run $rm $removelist
1034ee3138f1Smrg	exit $EXIT_FAILURE
1035ee3138f1Smrg      fi
1036ee3138f1Smrg
1037ee3138f1Smrg      if test "$need_locks" = warn &&
1038ee3138f1Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1039ee3138f1Smrg	$echo "\
1040ee3138f1Smrg*** ERROR, $lockfile contains:
1041ee3138f1Smrg`cat $lockfile 2>/dev/null`
1042ee3138f1Smrg
1043ee3138f1Smrgbut it should contain:
1044ee3138f1Smrg$srcfile
1045ee3138f1Smrg
1046ee3138f1SmrgThis indicates that another process is trying to use the same
1047ee3138f1Smrgtemporary object file, and libtool could not work around it because
1048ee3138f1Smrgyour compiler does not support \`-c' and \`-o' together.  If you
1049ee3138f1Smrgrepeat this compilation, it may succeed, by chance, but you had better
1050ee3138f1Smrgavoid parallel builds (make -j) in this platform, or get a better
1051ee3138f1Smrgcompiler."
1052ee3138f1Smrg
1053ee3138f1Smrg	$run $rm $removelist
1054ee3138f1Smrg	exit $EXIT_FAILURE
1055ee3138f1Smrg      fi
1056ee3138f1Smrg
1057ee3138f1Smrg      # Just move the object if needed
1058ee3138f1Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
1059ee3138f1Smrg	$show "$mv $output_obj $obj"
1060ee3138f1Smrg	if $run $mv $output_obj $obj; then :
1061ee3138f1Smrg	else
1062ee3138f1Smrg	  error=$?
1063ee3138f1Smrg	  $run $rm $removelist
1064ee3138f1Smrg	  exit $error
1065ee3138f1Smrg	fi
1066ee3138f1Smrg      fi
1067ee3138f1Smrg
1068ee3138f1Smrg      # Append the name of the non-PIC object the libtool object file.
1069ee3138f1Smrg      # Only append if the libtool object file exists.
1070ee3138f1Smrg      test -z "$run" && cat >> ${libobj}T <<EOF
1071ee3138f1Smrg# Name of the non-PIC object.
1072ee3138f1Smrgnon_pic_object='$objname'
1073ee3138f1Smrg
1074ee3138f1SmrgEOF
1075ee3138f1Smrg    else
1076ee3138f1Smrg      # Append the name of the non-PIC object the libtool object file.
1077ee3138f1Smrg      # Only append if the libtool object file exists.
1078ee3138f1Smrg      test -z "$run" && cat >> ${libobj}T <<EOF
1079ee3138f1Smrg# Name of the non-PIC object.
1080ee3138f1Smrgnon_pic_object=none
1081ee3138f1Smrg
1082ee3138f1SmrgEOF
1083ee3138f1Smrg    fi
1084ee3138f1Smrg
1085ee3138f1Smrg    $run $mv "${libobj}T" "${libobj}"
1086ee3138f1Smrg
1087ee3138f1Smrg    # Unlock the critical section if it was locked
1088ee3138f1Smrg    if test "$need_locks" != no; then
1089ee3138f1Smrg      $run $rm "$lockfile"
1090ee3138f1Smrg    fi
1091ee3138f1Smrg
1092ee3138f1Smrg    exit $EXIT_SUCCESS
1093ee3138f1Smrg    ;;
1094ee3138f1Smrg
1095ee3138f1Smrg  # libtool link mode
1096ee3138f1Smrg  link | relink)
1097ee3138f1Smrg    modename="$modename: link"
1098ee3138f1Smrg    case $host in
1099ee3138f1Smrg    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1100ee3138f1Smrg      # It is impossible to link a dll without this setting, and
1101ee3138f1Smrg      # we shouldn't force the makefile maintainer to figure out
1102ee3138f1Smrg      # which system we are compiling for in order to pass an extra
1103ee3138f1Smrg      # flag for every libtool invocation.
1104ee3138f1Smrg      # allow_undefined=no
1105ee3138f1Smrg
1106ee3138f1Smrg      # FIXME: Unfortunately, there are problems with the above when trying
1107ee3138f1Smrg      # to make a dll which has undefined symbols, in which case not
1108ee3138f1Smrg      # even a static library is built.  For now, we need to specify
1109ee3138f1Smrg      # -no-undefined on the libtool link line when we can be certain
1110ee3138f1Smrg      # that all symbols are satisfied, otherwise we get a static library.
1111ee3138f1Smrg      allow_undefined=yes
1112ee3138f1Smrg      ;;
1113ee3138f1Smrg    *)
1114ee3138f1Smrg      allow_undefined=yes
1115ee3138f1Smrg      ;;
1116ee3138f1Smrg    esac
1117ee3138f1Smrg    libtool_args="$nonopt"
1118ee3138f1Smrg    base_compile="$nonopt $@"
1119ee3138f1Smrg    compile_command="$nonopt"
1120ee3138f1Smrg    finalize_command="$nonopt"
1121ee3138f1Smrg
1122ee3138f1Smrg    compile_rpath=
1123ee3138f1Smrg    finalize_rpath=
1124ee3138f1Smrg    compile_shlibpath=
1125ee3138f1Smrg    finalize_shlibpath=
1126ee3138f1Smrg    convenience=
1127ee3138f1Smrg    old_convenience=
1128ee3138f1Smrg    deplibs=
1129ee3138f1Smrg    old_deplibs=
1130ee3138f1Smrg    compiler_flags=
1131ee3138f1Smrg    linker_flags=
1132ee3138f1Smrg    dllsearchpath=
1133ee3138f1Smrg    lib_search_path=`pwd`
1134ee3138f1Smrg    inst_prefix_dir=
1135ee3138f1Smrg
1136ee3138f1Smrg    avoid_version=no
1137ee3138f1Smrg    dlfiles=
1138ee3138f1Smrg    dlprefiles=
1139ee3138f1Smrg    dlself=no
1140ee3138f1Smrg    export_dynamic=no
1141ee3138f1Smrg    export_symbols=
1142ee3138f1Smrg    export_symbols_regex=
1143ee3138f1Smrg    generated=
1144ee3138f1Smrg    libobjs=
1145ee3138f1Smrg    ltlibs=
1146ee3138f1Smrg    module=no
1147ee3138f1Smrg    no_install=no
1148ee3138f1Smrg    objs=
1149ee3138f1Smrg    non_pic_objects=
1150ee3138f1Smrg    notinst_path= # paths that contain not-installed libtool libraries
1151ee3138f1Smrg    precious_files_regex=
1152ee3138f1Smrg    prefer_static_libs=no
1153ee3138f1Smrg    preload=no
1154ee3138f1Smrg    prev=
1155ee3138f1Smrg    prevarg=
1156ee3138f1Smrg    release=
1157ee3138f1Smrg    rpath=
1158ee3138f1Smrg    xrpath=
1159ee3138f1Smrg    perm_rpath=
1160ee3138f1Smrg    temp_rpath=
1161ee3138f1Smrg    thread_safe=no
1162ee3138f1Smrg    vinfo=
1163ee3138f1Smrg    vinfo_number=no
1164ee3138f1Smrg
1165ee3138f1Smrg    func_infer_tag $base_compile
1166ee3138f1Smrg
1167ee3138f1Smrg    # We need to know -static, to get the right output filenames.
1168ee3138f1Smrg    for arg
1169ee3138f1Smrg    do
1170ee3138f1Smrg      case $arg in
1171ee3138f1Smrg      -all-static | -static | -static-libtool-libs)
1172ee3138f1Smrg	case $arg in
1173ee3138f1Smrg	-all-static)
1174ee3138f1Smrg	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
1175ee3138f1Smrg	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
1176ee3138f1Smrg	  fi
1177ee3138f1Smrg	  if test -n "$link_static_flag"; then
1178ee3138f1Smrg	    dlopen_self=$dlopen_self_static
1179ee3138f1Smrg	  fi
1180ee3138f1Smrg	  prefer_static_libs=yes
1181ee3138f1Smrg	  ;;
1182ee3138f1Smrg	-static)
1183ee3138f1Smrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
1184ee3138f1Smrg	    dlopen_self=$dlopen_self_static
1185ee3138f1Smrg	  fi
1186ee3138f1Smrg	  prefer_static_libs=built
1187ee3138f1Smrg	  ;;
1188ee3138f1Smrg	-static-libtool-libs)
1189ee3138f1Smrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
1190ee3138f1Smrg	    dlopen_self=$dlopen_self_static
1191ee3138f1Smrg	  fi
1192ee3138f1Smrg	  prefer_static_libs=yes
1193ee3138f1Smrg	  ;;
1194ee3138f1Smrg	esac
1195ee3138f1Smrg	build_libtool_libs=no
1196ee3138f1Smrg	build_old_libs=yes
1197ee3138f1Smrg	break
1198ee3138f1Smrg	;;
1199ee3138f1Smrg      esac
1200ee3138f1Smrg    done
1201ee3138f1Smrg
1202ee3138f1Smrg    # See if our shared archives depend on static archives.
1203ee3138f1Smrg    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
1204ee3138f1Smrg
1205ee3138f1Smrg    # Go through the arguments, transforming them on the way.
1206ee3138f1Smrg    while test "$#" -gt 0; do
1207ee3138f1Smrg      arg="$1"
1208ee3138f1Smrg      shift
1209ee3138f1Smrg      case $arg in
1210ee3138f1Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1211ee3138f1Smrg	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
1212ee3138f1Smrg	;;
1213ee3138f1Smrg      *) qarg=$arg ;;
1214ee3138f1Smrg      esac
1215ee3138f1Smrg      libtool_args="$libtool_args $qarg"
1216ee3138f1Smrg
1217ee3138f1Smrg      # If the previous option needs an argument, assign it.
1218ee3138f1Smrg      if test -n "$prev"; then
1219ee3138f1Smrg	case $prev in
1220ee3138f1Smrg	output)
1221ee3138f1Smrg	  compile_command="$compile_command @OUTPUT@"
1222ee3138f1Smrg	  finalize_command="$finalize_command @OUTPUT@"
1223ee3138f1Smrg	  ;;
1224ee3138f1Smrg	esac
1225ee3138f1Smrg
1226ee3138f1Smrg	case $prev in
1227ee3138f1Smrg	dlfiles|dlprefiles)
1228ee3138f1Smrg	  if test "$preload" = no; then
1229ee3138f1Smrg	    # Add the symbol object into the linking commands.
1230ee3138f1Smrg	    compile_command="$compile_command @SYMFILE@"
1231ee3138f1Smrg	    finalize_command="$finalize_command @SYMFILE@"
1232ee3138f1Smrg	    preload=yes
1233ee3138f1Smrg	  fi
1234ee3138f1Smrg	  case $arg in
1235ee3138f1Smrg	  *.la | *.lo) ;;  # We handle these cases below.
1236ee3138f1Smrg	  force)
1237ee3138f1Smrg	    if test "$dlself" = no; then
1238ee3138f1Smrg	      dlself=needless
1239ee3138f1Smrg	      export_dynamic=yes
1240ee3138f1Smrg	    fi
1241ee3138f1Smrg	    prev=
1242ee3138f1Smrg	    continue
1243ee3138f1Smrg	    ;;
1244ee3138f1Smrg	  self)
1245ee3138f1Smrg	    if test "$prev" = dlprefiles; then
1246ee3138f1Smrg	      dlself=yes
1247ee3138f1Smrg	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
1248ee3138f1Smrg	      dlself=yes
1249ee3138f1Smrg	    else
1250ee3138f1Smrg	      dlself=needless
1251ee3138f1Smrg	      export_dynamic=yes
1252ee3138f1Smrg	    fi
1253ee3138f1Smrg	    prev=
1254ee3138f1Smrg	    continue
1255ee3138f1Smrg	    ;;
1256ee3138f1Smrg	  *)
1257ee3138f1Smrg	    if test "$prev" = dlfiles; then
1258ee3138f1Smrg	      dlfiles="$dlfiles $arg"
1259ee3138f1Smrg	    else
1260ee3138f1Smrg	      dlprefiles="$dlprefiles $arg"
1261ee3138f1Smrg	    fi
1262ee3138f1Smrg	    prev=
1263ee3138f1Smrg	    continue
1264ee3138f1Smrg	    ;;
1265ee3138f1Smrg	  esac
1266ee3138f1Smrg	  ;;
1267ee3138f1Smrg	expsyms)
1268ee3138f1Smrg	  export_symbols="$arg"
1269ee3138f1Smrg	  if test ! -f "$arg"; then
1270ee3138f1Smrg	    $echo "$modename: symbol file \`$arg' does not exist"
1271ee3138f1Smrg	    exit $EXIT_FAILURE
1272ee3138f1Smrg	  fi
1273ee3138f1Smrg	  prev=
1274ee3138f1Smrg	  continue
1275ee3138f1Smrg	  ;;
1276ee3138f1Smrg	expsyms_regex)
1277ee3138f1Smrg	  export_symbols_regex="$arg"
1278ee3138f1Smrg	  prev=
1279ee3138f1Smrg	  continue
1280ee3138f1Smrg	  ;;
1281ee3138f1Smrg	inst_prefix)
1282ee3138f1Smrg	  inst_prefix_dir="$arg"
1283ee3138f1Smrg	  prev=
1284ee3138f1Smrg	  continue
1285ee3138f1Smrg	  ;;
1286ee3138f1Smrg	precious_regex)
1287ee3138f1Smrg	  precious_files_regex="$arg"
1288ee3138f1Smrg	  prev=
1289ee3138f1Smrg	  continue
1290ee3138f1Smrg	  ;;
1291ee3138f1Smrg	release)
1292ee3138f1Smrg	  release="-$arg"
1293ee3138f1Smrg	  prev=
1294ee3138f1Smrg	  continue
1295ee3138f1Smrg	  ;;
1296ee3138f1Smrg	objectlist)
1297ee3138f1Smrg	  if test -f "$arg"; then
1298ee3138f1Smrg	    save_arg=$arg
1299ee3138f1Smrg	    moreargs=
1300ee3138f1Smrg	    for fil in `cat $save_arg`
1301ee3138f1Smrg	    do
1302ee3138f1Smrg#	      moreargs="$moreargs $fil"
1303ee3138f1Smrg	      arg=$fil
1304ee3138f1Smrg	      # A libtool-controlled object.
1305ee3138f1Smrg
1306ee3138f1Smrg	      # Check to see that this really is a libtool object.
1307ee3138f1Smrg	      if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1308ee3138f1Smrg		pic_object=
1309ee3138f1Smrg		non_pic_object=
1310ee3138f1Smrg
1311ee3138f1Smrg		# Read the .lo file
1312ee3138f1Smrg		# If there is no directory component, then add one.
1313ee3138f1Smrg		case $arg in
1314ee3138f1Smrg		*/* | *\\*) . $arg ;;
1315ee3138f1Smrg		*) . ./$arg ;;
1316ee3138f1Smrg		esac
1317ee3138f1Smrg
1318ee3138f1Smrg		if test -z "$pic_object" || \
1319ee3138f1Smrg		   test -z "$non_pic_object" ||
1320ee3138f1Smrg		   test "$pic_object" = none && \
1321ee3138f1Smrg		   test "$non_pic_object" = none; then
1322ee3138f1Smrg		  $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1323ee3138f1Smrg		  exit $EXIT_FAILURE
1324ee3138f1Smrg		fi
1325ee3138f1Smrg
1326ee3138f1Smrg		# Extract subdirectory from the argument.
1327ee3138f1Smrg		xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1328ee3138f1Smrg		if test "X$xdir" = "X$arg"; then
1329ee3138f1Smrg		  xdir=
1330ee3138f1Smrg		else
1331ee3138f1Smrg		  xdir="$xdir/"
1332ee3138f1Smrg		fi
1333ee3138f1Smrg
1334ee3138f1Smrg		if test "$pic_object" != none; then
1335ee3138f1Smrg		  # Prepend the subdirectory the object is found in.
1336ee3138f1Smrg		  pic_object="$xdir$pic_object"
1337ee3138f1Smrg
1338ee3138f1Smrg		  if test "$prev" = dlfiles; then
1339ee3138f1Smrg		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1340ee3138f1Smrg		      dlfiles="$dlfiles $pic_object"
1341ee3138f1Smrg		      prev=
1342ee3138f1Smrg		      continue
1343ee3138f1Smrg		    else
1344ee3138f1Smrg		      # If libtool objects are unsupported, then we need to preload.
1345ee3138f1Smrg		      prev=dlprefiles
1346ee3138f1Smrg		    fi
1347ee3138f1Smrg		  fi
1348ee3138f1Smrg
1349ee3138f1Smrg		  # CHECK ME:  I think I busted this.  -Ossama
1350ee3138f1Smrg		  if test "$prev" = dlprefiles; then
1351ee3138f1Smrg		    # Preload the old-style object.
1352ee3138f1Smrg		    dlprefiles="$dlprefiles $pic_object"
1353ee3138f1Smrg		    prev=
1354ee3138f1Smrg		  fi
1355ee3138f1Smrg
1356ee3138f1Smrg		  # A PIC object.
1357ee3138f1Smrg		  libobjs="$libobjs $pic_object"
1358ee3138f1Smrg		  arg="$pic_object"
1359ee3138f1Smrg		fi
1360ee3138f1Smrg
1361ee3138f1Smrg		# Non-PIC object.
1362ee3138f1Smrg		if test "$non_pic_object" != none; then
1363ee3138f1Smrg		  # Prepend the subdirectory the object is found in.
1364ee3138f1Smrg		  non_pic_object="$xdir$non_pic_object"
1365ee3138f1Smrg
1366ee3138f1Smrg		  # A standard non-PIC object
1367ee3138f1Smrg		  non_pic_objects="$non_pic_objects $non_pic_object"
1368ee3138f1Smrg		  if test -z "$pic_object" || test "$pic_object" = none ; then
1369ee3138f1Smrg		    arg="$non_pic_object"
1370ee3138f1Smrg		  fi
1371ee3138f1Smrg		else
1372ee3138f1Smrg		  # If the PIC object exists, use it instead.
1373ee3138f1Smrg		  # $xdir was prepended to $pic_object above.
1374ee3138f1Smrg		  non_pic_object="$pic_object"
1375ee3138f1Smrg		  non_pic_objects="$non_pic_objects $non_pic_object"
1376ee3138f1Smrg		fi
1377ee3138f1Smrg	      else
1378ee3138f1Smrg		# Only an error if not doing a dry-run.
1379ee3138f1Smrg		if test -z "$run"; then
1380ee3138f1Smrg		  $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1381ee3138f1Smrg		  exit $EXIT_FAILURE
1382ee3138f1Smrg		else
1383ee3138f1Smrg		  # Dry-run case.
1384ee3138f1Smrg
1385ee3138f1Smrg		  # Extract subdirectory from the argument.
1386ee3138f1Smrg		  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1387ee3138f1Smrg		  if test "X$xdir" = "X$arg"; then
1388ee3138f1Smrg		    xdir=
1389ee3138f1Smrg		  else
1390ee3138f1Smrg		    xdir="$xdir/"
1391ee3138f1Smrg		  fi
1392ee3138f1Smrg
1393ee3138f1Smrg		  pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1394ee3138f1Smrg		  non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1395ee3138f1Smrg		  libobjs="$libobjs $pic_object"
1396ee3138f1Smrg		  non_pic_objects="$non_pic_objects $non_pic_object"
1397ee3138f1Smrg		fi
1398ee3138f1Smrg	      fi
1399ee3138f1Smrg	    done
1400ee3138f1Smrg	  else
1401ee3138f1Smrg	    $echo "$modename: link input file \`$save_arg' does not exist"
1402ee3138f1Smrg	    exit $EXIT_FAILURE
1403ee3138f1Smrg	  fi
1404ee3138f1Smrg	  arg=$save_arg
1405ee3138f1Smrg	  prev=
1406ee3138f1Smrg	  continue
1407ee3138f1Smrg	  ;;
1408ee3138f1Smrg	rpath | xrpath)
1409ee3138f1Smrg	  # We need an absolute path.
1410ee3138f1Smrg	  case $arg in
1411ee3138f1Smrg	  [\\/]* | [A-Za-z]:[\\/]*) ;;
1412ee3138f1Smrg	  *)
1413ee3138f1Smrg	    $echo "$modename: only absolute run-paths are allowed" 1>&2
1414ee3138f1Smrg	    exit $EXIT_FAILURE
1415ee3138f1Smrg	    ;;
1416ee3138f1Smrg	  esac
1417ee3138f1Smrg	  if test "$prev" = rpath; then
1418ee3138f1Smrg	    case "$rpath " in
1419ee3138f1Smrg	    *" $arg "*) ;;
1420ee3138f1Smrg	    *) rpath="$rpath $arg" ;;
1421ee3138f1Smrg	    esac
1422ee3138f1Smrg	  else
1423ee3138f1Smrg	    case "$xrpath " in
1424ee3138f1Smrg	    *" $arg "*) ;;
1425ee3138f1Smrg	    *) xrpath="$xrpath $arg" ;;
1426ee3138f1Smrg	    esac
1427ee3138f1Smrg	  fi
1428ee3138f1Smrg	  prev=
1429ee3138f1Smrg	  continue
1430ee3138f1Smrg	  ;;
1431ee3138f1Smrg	xcompiler)
1432ee3138f1Smrg	  compiler_flags="$compiler_flags $qarg"
1433ee3138f1Smrg	  prev=
1434ee3138f1Smrg	  compile_command="$compile_command $qarg"
1435ee3138f1Smrg	  finalize_command="$finalize_command $qarg"
1436ee3138f1Smrg	  continue
1437ee3138f1Smrg	  ;;
1438ee3138f1Smrg	xlinker)
1439ee3138f1Smrg	  linker_flags="$linker_flags $qarg"
1440ee3138f1Smrg	  compiler_flags="$compiler_flags $wl$qarg"
1441ee3138f1Smrg	  prev=
1442ee3138f1Smrg	  compile_command="$compile_command $wl$qarg"
1443ee3138f1Smrg	  finalize_command="$finalize_command $wl$qarg"
1444ee3138f1Smrg	  continue
1445ee3138f1Smrg	  ;;
1446ee3138f1Smrg	xcclinker)
1447ee3138f1Smrg	  linker_flags="$linker_flags $qarg"
1448ee3138f1Smrg	  compiler_flags="$compiler_flags $qarg"
1449ee3138f1Smrg	  prev=
1450ee3138f1Smrg	  compile_command="$compile_command $qarg"
1451ee3138f1Smrg	  finalize_command="$finalize_command $qarg"
1452ee3138f1Smrg	  continue
1453ee3138f1Smrg	  ;;
1454ee3138f1Smrg	shrext)
1455ee3138f1Smrg  	  shrext_cmds="$arg"
1456ee3138f1Smrg	  prev=
1457ee3138f1Smrg	  continue
1458ee3138f1Smrg	  ;;
1459ee3138f1Smrg	darwin_framework|darwin_framework_skip)
1460ee3138f1Smrg	  test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
1461ee3138f1Smrg	  compile_command="$compile_command $arg"
1462ee3138f1Smrg	  finalize_command="$finalize_command $arg"
1463ee3138f1Smrg	  prev=
1464ee3138f1Smrg	  continue
1465ee3138f1Smrg	  ;;
1466ee3138f1Smrg	*)
1467ee3138f1Smrg	  eval "$prev=\"\$arg\""
1468ee3138f1Smrg	  prev=
1469ee3138f1Smrg	  continue
1470ee3138f1Smrg	  ;;
1471ee3138f1Smrg	esac
1472ee3138f1Smrg      fi # test -n "$prev"
1473ee3138f1Smrg
1474ee3138f1Smrg      prevarg="$arg"
1475ee3138f1Smrg
1476ee3138f1Smrg      case $arg in
1477ee3138f1Smrg      -all-static)
1478ee3138f1Smrg	if test -n "$link_static_flag"; then
1479ee3138f1Smrg	  compile_command="$compile_command $link_static_flag"
1480ee3138f1Smrg	  finalize_command="$finalize_command $link_static_flag"
1481ee3138f1Smrg	fi
1482ee3138f1Smrg	continue
1483ee3138f1Smrg	;;
1484ee3138f1Smrg
1485ee3138f1Smrg      -allow-undefined)
1486ee3138f1Smrg	# FIXME: remove this flag sometime in the future.
1487ee3138f1Smrg	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
1488ee3138f1Smrg	continue
1489ee3138f1Smrg	;;
1490ee3138f1Smrg
1491ee3138f1Smrg      -avoid-version)
1492ee3138f1Smrg	avoid_version=yes
1493ee3138f1Smrg	continue
1494ee3138f1Smrg	;;
1495ee3138f1Smrg
1496ee3138f1Smrg      -dlopen)
1497ee3138f1Smrg	prev=dlfiles
1498ee3138f1Smrg	continue
1499ee3138f1Smrg	;;
1500ee3138f1Smrg
1501ee3138f1Smrg      -dlpreopen)
1502ee3138f1Smrg	prev=dlprefiles
1503ee3138f1Smrg	continue
1504ee3138f1Smrg	;;
1505ee3138f1Smrg
1506ee3138f1Smrg      -export-dynamic)
1507ee3138f1Smrg	export_dynamic=yes
1508ee3138f1Smrg	continue
1509ee3138f1Smrg	;;
1510ee3138f1Smrg
1511ee3138f1Smrg      -export-symbols | -export-symbols-regex)
1512ee3138f1Smrg	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
1513ee3138f1Smrg	  $echo "$modename: more than one -exported-symbols argument is not allowed"
1514ee3138f1Smrg	  exit $EXIT_FAILURE
1515ee3138f1Smrg	fi
1516ee3138f1Smrg	if test "X$arg" = "X-export-symbols"; then
1517ee3138f1Smrg	  prev=expsyms
1518ee3138f1Smrg	else
1519ee3138f1Smrg	  prev=expsyms_regex
1520ee3138f1Smrg	fi
1521ee3138f1Smrg	continue
1522ee3138f1Smrg	;;
1523ee3138f1Smrg
1524ee3138f1Smrg      -framework|-arch|-isysroot)
1525ee3138f1Smrg	case " $CC " in
1526ee3138f1Smrg	  *" ${arg} ${1} "* | *" ${arg}	${1} "*) 
1527ee3138f1Smrg		prev=darwin_framework_skip ;;
1528ee3138f1Smrg	  *) compiler_flags="$compiler_flags $arg"
1529ee3138f1Smrg	     prev=darwin_framework ;;
1530ee3138f1Smrg	esac
1531ee3138f1Smrg	compile_command="$compile_command $arg"
1532ee3138f1Smrg	finalize_command="$finalize_command $arg"
1533ee3138f1Smrg	continue
1534ee3138f1Smrg	;;
1535ee3138f1Smrg
1536ee3138f1Smrg      -inst-prefix-dir)
1537ee3138f1Smrg	prev=inst_prefix
1538ee3138f1Smrg	continue
1539ee3138f1Smrg	;;
1540ee3138f1Smrg
1541ee3138f1Smrg      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
1542ee3138f1Smrg      # so, if we see these flags be careful not to treat them like -L
1543ee3138f1Smrg      -L[A-Z][A-Z]*:*)
1544ee3138f1Smrg	case $with_gcc/$host in
1545ee3138f1Smrg	no/*-*-irix* | /*-*-irix*)
1546ee3138f1Smrg	  compile_command="$compile_command $arg"
1547ee3138f1Smrg	  finalize_command="$finalize_command $arg"
1548ee3138f1Smrg	  ;;
1549ee3138f1Smrg	esac
1550ee3138f1Smrg	continue
1551ee3138f1Smrg	;;
1552ee3138f1Smrg
1553ee3138f1Smrg      -L*)
1554ee3138f1Smrg	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
1555ee3138f1Smrg	# We need an absolute path.
1556ee3138f1Smrg	case $dir in
1557ee3138f1Smrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
1558ee3138f1Smrg	*)
1559ee3138f1Smrg	  absdir=`cd "$dir" && pwd`
1560ee3138f1Smrg	  if test -z "$absdir"; then
1561ee3138f1Smrg	    $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
1562ee3138f1Smrg	    absdir="$dir"
1563ee3138f1Smrg	    notinst_path="$notinst_path $dir"
1564ee3138f1Smrg	  fi
1565ee3138f1Smrg	  dir="$absdir"
1566ee3138f1Smrg	  ;;
1567ee3138f1Smrg	esac
1568ee3138f1Smrg	case "$deplibs " in
1569ee3138f1Smrg	*" -L$dir "*) ;;
1570ee3138f1Smrg	*)
1571ee3138f1Smrg	  deplibs="$deplibs -L$dir"
1572ee3138f1Smrg	  lib_search_path="$lib_search_path $dir"
1573ee3138f1Smrg	  ;;
1574ee3138f1Smrg	esac
1575ee3138f1Smrg	case $host in
1576ee3138f1Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1577ee3138f1Smrg	  testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
1578ee3138f1Smrg	  case :$dllsearchpath: in
1579ee3138f1Smrg	  *":$dir:"*) ;;
1580ee3138f1Smrg	  *) dllsearchpath="$dllsearchpath:$dir";;
1581ee3138f1Smrg	  esac
1582ee3138f1Smrg	  case :$dllsearchpath: in
1583ee3138f1Smrg	  *":$testbindir:"*) ;;
1584ee3138f1Smrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
1585ee3138f1Smrg	  esac
1586ee3138f1Smrg	  ;;
1587ee3138f1Smrg	esac
1588ee3138f1Smrg	continue
1589ee3138f1Smrg	;;
1590ee3138f1Smrg
1591ee3138f1Smrg      -l*)
1592ee3138f1Smrg	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
1593ee3138f1Smrg	  case $host in
1594ee3138f1Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
1595ee3138f1Smrg	    # These systems don't actually have a C or math library (as such)
1596ee3138f1Smrg	    continue
1597ee3138f1Smrg	    ;;
1598ee3138f1Smrg	  *-*-os2*)
1599ee3138f1Smrg	    # These systems don't actually have a C library (as such)
1600ee3138f1Smrg	    test "X$arg" = "X-lc" && continue
1601ee3138f1Smrg	    ;;
1602ee3138f1Smrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
1603ee3138f1Smrg	    # Do not include libc due to us having libc/libc_r.
1604ee3138f1Smrg	    test "X$arg" = "X-lc" && continue
1605ee3138f1Smrg	    ;;
1606ee3138f1Smrg	  *-*-rhapsody* | *-*-darwin1.[012])
1607ee3138f1Smrg	    # Rhapsody C and math libraries are in the System framework
1608ee3138f1Smrg	    deplibs="$deplibs -framework System"
1609ee3138f1Smrg	    continue
1610ee3138f1Smrg	    ;;
1611ee3138f1Smrg	  *-*-sco3.2v5* | *-*-sco5v6*)
1612ee3138f1Smrg	    # Causes problems with __ctype
1613ee3138f1Smrg	    test "X$arg" = "X-lc" && continue
1614ee3138f1Smrg	    ;;
1615ee3138f1Smrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
1616ee3138f1Smrg	    # Compiler inserts libc in the correct place for threads to work
1617ee3138f1Smrg	    test "X$arg" = "X-lc" && continue
1618ee3138f1Smrg	    ;;
1619ee3138f1Smrg	  esac
1620ee3138f1Smrg	elif test "X$arg" = "X-lc_r"; then
1621ee3138f1Smrg	 case $host in
1622ee3138f1Smrg	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
1623ee3138f1Smrg	   # Do not include libc_r directly, use -pthread flag.
1624ee3138f1Smrg	   continue
1625ee3138f1Smrg	   ;;
1626ee3138f1Smrg	 esac
1627ee3138f1Smrg	fi
1628ee3138f1Smrg	deplibs="$deplibs $arg"
1629ee3138f1Smrg	continue
1630ee3138f1Smrg	;;
1631ee3138f1Smrg
1632ee3138f1Smrg      # Tru64 UNIX uses -model [arg] to determine the layout of C++
1633ee3138f1Smrg      # classes, name mangling, and exception handling.
1634ee3138f1Smrg      -model)
1635ee3138f1Smrg	compile_command="$compile_command $arg"
1636ee3138f1Smrg	compiler_flags="$compiler_flags $arg"
1637ee3138f1Smrg	finalize_command="$finalize_command $arg"
1638ee3138f1Smrg	prev=xcompiler
1639ee3138f1Smrg	continue
1640ee3138f1Smrg	;;
1641ee3138f1Smrg
1642ee3138f1Smrg     -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
1643ee3138f1Smrg	compiler_flags="$compiler_flags $arg"
1644ee3138f1Smrg	compile_command="$compile_command $arg"
1645ee3138f1Smrg	finalize_command="$finalize_command $arg"
1646ee3138f1Smrg	continue
1647ee3138f1Smrg	;;
1648ee3138f1Smrg
1649ee3138f1Smrg      -module)
1650ee3138f1Smrg	module=yes
1651ee3138f1Smrg	continue
1652ee3138f1Smrg	;;
1653ee3138f1Smrg
1654ee3138f1Smrg      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
1655ee3138f1Smrg      # -r[0-9][0-9]* specifies the processor on the SGI compiler
1656ee3138f1Smrg      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
1657ee3138f1Smrg      # +DA*, +DD* enable 64-bit mode on the HP compiler
1658ee3138f1Smrg      # -q* pass through compiler args for the IBM compiler
1659ee3138f1Smrg      # -m* pass through architecture-specific compiler args for GCC
1660ee3138f1Smrg      # -m*, -t[45]*, -txscale* pass through architecture-specific
1661ee3138f1Smrg      # compiler args for GCC
1662ee3138f1Smrg      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
1663ee3138f1Smrg      # -F/path gives path to uninstalled frameworks, gcc on darwin
1664ee3138f1Smrg      # @file GCC response files
1665ee3138f1Smrg      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
1666ee3138f1Smrg      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
1667ee3138f1Smrg
1668ee3138f1Smrg	# Unknown arguments in both finalize_command and compile_command need
1669ee3138f1Smrg	# to be aesthetically quoted because they are evaled later.
1670ee3138f1Smrg	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1671ee3138f1Smrg	case $arg in
1672ee3138f1Smrg	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1673ee3138f1Smrg	  arg="\"$arg\""
1674ee3138f1Smrg	  ;;
1675ee3138f1Smrg	esac
1676ee3138f1Smrg        compile_command="$compile_command $arg"
1677ee3138f1Smrg        finalize_command="$finalize_command $arg"
1678ee3138f1Smrg        compiler_flags="$compiler_flags $arg"
1679ee3138f1Smrg        continue
1680ee3138f1Smrg        ;;
1681ee3138f1Smrg
1682ee3138f1Smrg      -shrext)
1683ee3138f1Smrg	prev=shrext
1684ee3138f1Smrg	continue
1685ee3138f1Smrg	;;
1686ee3138f1Smrg
1687ee3138f1Smrg      -no-fast-install)
1688ee3138f1Smrg	fast_install=no
1689ee3138f1Smrg	continue
1690ee3138f1Smrg	;;
1691ee3138f1Smrg
1692ee3138f1Smrg      -no-install)
1693ee3138f1Smrg	case $host in
1694ee3138f1Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*)
1695ee3138f1Smrg	  # The PATH hackery in wrapper scripts is required on Windows
1696ee3138f1Smrg	  # and Darwin in order for the loader to find any dlls it needs.
1697ee3138f1Smrg	  $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
1698ee3138f1Smrg	  $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
1699ee3138f1Smrg	  fast_install=no
1700ee3138f1Smrg	  ;;
1701ee3138f1Smrg	*) no_install=yes ;;
1702ee3138f1Smrg	esac
1703ee3138f1Smrg	continue
1704ee3138f1Smrg	;;
1705ee3138f1Smrg
1706ee3138f1Smrg      -no-undefined)
1707ee3138f1Smrg	allow_undefined=no
1708ee3138f1Smrg	continue
1709ee3138f1Smrg	;;
1710ee3138f1Smrg
1711ee3138f1Smrg      -objectlist)
1712ee3138f1Smrg	prev=objectlist
1713ee3138f1Smrg	continue
1714ee3138f1Smrg	;;
1715ee3138f1Smrg
1716ee3138f1Smrg      -o) prev=output ;;
1717ee3138f1Smrg
1718ee3138f1Smrg      -precious-files-regex)
1719ee3138f1Smrg	prev=precious_regex
1720ee3138f1Smrg	continue
1721ee3138f1Smrg	;;
1722ee3138f1Smrg
1723ee3138f1Smrg      -release)
1724ee3138f1Smrg	prev=release
1725ee3138f1Smrg	continue
1726ee3138f1Smrg	;;
1727ee3138f1Smrg
1728ee3138f1Smrg      -rpath)
1729ee3138f1Smrg	prev=rpath
1730ee3138f1Smrg	continue
1731ee3138f1Smrg	;;
1732ee3138f1Smrg
1733ee3138f1Smrg      -R)
1734ee3138f1Smrg	prev=xrpath
1735ee3138f1Smrg	continue
1736ee3138f1Smrg	;;
1737ee3138f1Smrg
1738ee3138f1Smrg      -R*)
1739ee3138f1Smrg	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
1740ee3138f1Smrg	# We need an absolute path.
1741ee3138f1Smrg	case $dir in
1742ee3138f1Smrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
1743ee3138f1Smrg	*)
1744ee3138f1Smrg	  $echo "$modename: only absolute run-paths are allowed" 1>&2
1745ee3138f1Smrg	  exit $EXIT_FAILURE
1746ee3138f1Smrg	  ;;
1747ee3138f1Smrg	esac
1748ee3138f1Smrg	case "$xrpath " in
1749ee3138f1Smrg	*" $dir "*) ;;
1750ee3138f1Smrg	*) xrpath="$xrpath $dir" ;;
1751ee3138f1Smrg	esac
1752ee3138f1Smrg	continue
1753ee3138f1Smrg	;;
1754ee3138f1Smrg
1755ee3138f1Smrg      -static | -static-libtool-libs)
1756ee3138f1Smrg	# The effects of -static are defined in a previous loop.
1757ee3138f1Smrg	# We used to do the same as -all-static on platforms that
1758ee3138f1Smrg	# didn't have a PIC flag, but the assumption that the effects
1759ee3138f1Smrg	# would be equivalent was wrong.  It would break on at least
1760ee3138f1Smrg	# Digital Unix and AIX.
1761ee3138f1Smrg	continue
1762ee3138f1Smrg	;;
1763ee3138f1Smrg
1764ee3138f1Smrg      -thread-safe)
1765ee3138f1Smrg	thread_safe=yes
1766ee3138f1Smrg	continue
1767ee3138f1Smrg	;;
1768ee3138f1Smrg
1769ee3138f1Smrg      -version-info)
1770ee3138f1Smrg	prev=vinfo
1771ee3138f1Smrg	continue
1772ee3138f1Smrg	;;
1773ee3138f1Smrg      -version-number)
1774ee3138f1Smrg	prev=vinfo
1775ee3138f1Smrg	vinfo_number=yes
1776ee3138f1Smrg	continue
1777ee3138f1Smrg	;;
1778ee3138f1Smrg
1779ee3138f1Smrg      -Wc,*)
1780ee3138f1Smrg	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
1781ee3138f1Smrg	arg=
1782ee3138f1Smrg	save_ifs="$IFS"; IFS=','
1783ee3138f1Smrg	for flag in $args; do
1784ee3138f1Smrg	  IFS="$save_ifs"
1785ee3138f1Smrg	  case $flag in
1786ee3138f1Smrg	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1787ee3138f1Smrg	    flag="\"$flag\""
1788ee3138f1Smrg	    ;;
1789ee3138f1Smrg	  esac
1790ee3138f1Smrg	  arg="$arg $wl$flag"
1791ee3138f1Smrg	  compiler_flags="$compiler_flags $flag"
1792ee3138f1Smrg	done
1793ee3138f1Smrg	IFS="$save_ifs"
1794ee3138f1Smrg	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1795ee3138f1Smrg	;;
1796ee3138f1Smrg
1797ee3138f1Smrg      -Wl,*)
1798ee3138f1Smrg	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
1799ee3138f1Smrg	arg=
1800ee3138f1Smrg	save_ifs="$IFS"; IFS=','
1801ee3138f1Smrg	for flag in $args; do
1802ee3138f1Smrg	  IFS="$save_ifs"
1803ee3138f1Smrg	  case $flag in
1804ee3138f1Smrg	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1805ee3138f1Smrg	    flag="\"$flag\""
1806ee3138f1Smrg	    ;;
1807ee3138f1Smrg	  esac
1808ee3138f1Smrg	  arg="$arg $wl$flag"
1809ee3138f1Smrg	  compiler_flags="$compiler_flags $wl$flag"
1810ee3138f1Smrg	  linker_flags="$linker_flags $flag"
1811ee3138f1Smrg	done
1812ee3138f1Smrg	IFS="$save_ifs"
1813ee3138f1Smrg	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1814ee3138f1Smrg	;;
1815ee3138f1Smrg
1816ee3138f1Smrg      -Xcompiler)
1817ee3138f1Smrg	prev=xcompiler
1818ee3138f1Smrg	continue
1819ee3138f1Smrg	;;
1820ee3138f1Smrg
1821ee3138f1Smrg      -Xlinker)
1822ee3138f1Smrg	prev=xlinker
1823ee3138f1Smrg	continue
1824ee3138f1Smrg	;;
1825ee3138f1Smrg
1826ee3138f1Smrg      -XCClinker)
1827ee3138f1Smrg	prev=xcclinker
1828ee3138f1Smrg	continue
1829ee3138f1Smrg	;;
1830ee3138f1Smrg
1831ee3138f1Smrg      # Some other compiler flag.
1832ee3138f1Smrg      -* | +*)
1833ee3138f1Smrg	# Unknown arguments in both finalize_command and compile_command need
1834ee3138f1Smrg	# to be aesthetically quoted because they are evaled later.
1835ee3138f1Smrg	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1836ee3138f1Smrg	case $arg in
1837ee3138f1Smrg	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1838ee3138f1Smrg	  arg="\"$arg\""
1839ee3138f1Smrg	  ;;
1840ee3138f1Smrg	esac
1841ee3138f1Smrg	;;
1842ee3138f1Smrg
1843ee3138f1Smrg      *.$objext)
1844ee3138f1Smrg	# A standard object.
1845ee3138f1Smrg	objs="$objs $arg"
1846ee3138f1Smrg	;;
1847ee3138f1Smrg
1848ee3138f1Smrg      *.lo)
1849ee3138f1Smrg	# A libtool-controlled object.
1850ee3138f1Smrg
1851ee3138f1Smrg	# Check to see that this really is a libtool object.
1852ee3138f1Smrg	if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1853ee3138f1Smrg	  pic_object=
1854ee3138f1Smrg	  non_pic_object=
1855ee3138f1Smrg
1856ee3138f1Smrg	  # Read the .lo file
1857ee3138f1Smrg	  # If there is no directory component, then add one.
1858ee3138f1Smrg	  case $arg in
1859ee3138f1Smrg	  */* | *\\*) . $arg ;;
1860ee3138f1Smrg	  *) . ./$arg ;;
1861ee3138f1Smrg	  esac
1862ee3138f1Smrg
1863ee3138f1Smrg	  if test -z "$pic_object" || \
1864ee3138f1Smrg	     test -z "$non_pic_object" ||
1865ee3138f1Smrg	     test "$pic_object" = none && \
1866ee3138f1Smrg	     test "$non_pic_object" = none; then
1867ee3138f1Smrg	    $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1868ee3138f1Smrg	    exit $EXIT_FAILURE
1869ee3138f1Smrg	  fi
1870ee3138f1Smrg
1871ee3138f1Smrg	  # Extract subdirectory from the argument.
1872ee3138f1Smrg	  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1873ee3138f1Smrg	  if test "X$xdir" = "X$arg"; then
1874ee3138f1Smrg	    xdir=
1875ee3138f1Smrg 	  else
1876ee3138f1Smrg	    xdir="$xdir/"
1877ee3138f1Smrg	  fi
1878ee3138f1Smrg
1879ee3138f1Smrg	  if test "$pic_object" != none; then
1880ee3138f1Smrg	    # Prepend the subdirectory the object is found in.
1881ee3138f1Smrg	    pic_object="$xdir$pic_object"
1882ee3138f1Smrg
1883ee3138f1Smrg	    if test "$prev" = dlfiles; then
1884ee3138f1Smrg	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1885ee3138f1Smrg		dlfiles="$dlfiles $pic_object"
1886ee3138f1Smrg		prev=
1887ee3138f1Smrg		continue
1888ee3138f1Smrg	      else
1889ee3138f1Smrg		# If libtool objects are unsupported, then we need to preload.
1890ee3138f1Smrg		prev=dlprefiles
1891ee3138f1Smrg	      fi
1892ee3138f1Smrg	    fi
1893ee3138f1Smrg
1894ee3138f1Smrg	    # CHECK ME:  I think I busted this.  -Ossama
1895ee3138f1Smrg	    if test "$prev" = dlprefiles; then
1896ee3138f1Smrg	      # Preload the old-style object.
1897ee3138f1Smrg	      dlprefiles="$dlprefiles $pic_object"
1898ee3138f1Smrg	      prev=
1899ee3138f1Smrg	    fi
1900ee3138f1Smrg
1901ee3138f1Smrg	    # A PIC object.
1902ee3138f1Smrg	    libobjs="$libobjs $pic_object"
1903ee3138f1Smrg	    arg="$pic_object"
1904ee3138f1Smrg	  fi
1905ee3138f1Smrg
1906ee3138f1Smrg	  # Non-PIC object.
1907ee3138f1Smrg	  if test "$non_pic_object" != none; then
1908ee3138f1Smrg	    # Prepend the subdirectory the object is found in.
1909ee3138f1Smrg	    non_pic_object="$xdir$non_pic_object"
1910ee3138f1Smrg
1911ee3138f1Smrg	    # A standard non-PIC object
1912ee3138f1Smrg	    non_pic_objects="$non_pic_objects $non_pic_object"
1913ee3138f1Smrg	    if test -z "$pic_object" || test "$pic_object" = none ; then
1914ee3138f1Smrg	      arg="$non_pic_object"
1915ee3138f1Smrg	    fi
1916ee3138f1Smrg	  else
1917ee3138f1Smrg	    # If the PIC object exists, use it instead.
1918ee3138f1Smrg	    # $xdir was prepended to $pic_object above.
1919ee3138f1Smrg	    non_pic_object="$pic_object"
1920ee3138f1Smrg	    non_pic_objects="$non_pic_objects $non_pic_object"
1921ee3138f1Smrg	  fi
1922ee3138f1Smrg	else
1923ee3138f1Smrg	  # Only an error if not doing a dry-run.
1924ee3138f1Smrg	  if test -z "$run"; then
1925ee3138f1Smrg	    $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1926ee3138f1Smrg	    exit $EXIT_FAILURE
1927ee3138f1Smrg	  else
1928ee3138f1Smrg	    # Dry-run case.
1929ee3138f1Smrg
1930ee3138f1Smrg	    # Extract subdirectory from the argument.
1931ee3138f1Smrg	    xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1932ee3138f1Smrg	    if test "X$xdir" = "X$arg"; then
1933ee3138f1Smrg	      xdir=
1934ee3138f1Smrg	    else
1935ee3138f1Smrg	      xdir="$xdir/"
1936ee3138f1Smrg	    fi
1937ee3138f1Smrg
1938ee3138f1Smrg	    pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1939ee3138f1Smrg	    non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1940ee3138f1Smrg	    libobjs="$libobjs $pic_object"
1941ee3138f1Smrg	    non_pic_objects="$non_pic_objects $non_pic_object"
1942ee3138f1Smrg	  fi
1943ee3138f1Smrg	fi
1944ee3138f1Smrg	;;
1945ee3138f1Smrg
1946ee3138f1Smrg      *.$libext)
1947ee3138f1Smrg	# An archive.
1948ee3138f1Smrg	deplibs="$deplibs $arg"
1949ee3138f1Smrg	old_deplibs="$old_deplibs $arg"
1950ee3138f1Smrg	continue
1951ee3138f1Smrg	;;
1952ee3138f1Smrg
1953ee3138f1Smrg      *.la)
1954ee3138f1Smrg	# A libtool-controlled library.
1955ee3138f1Smrg
1956ee3138f1Smrg	if test "$prev" = dlfiles; then
1957ee3138f1Smrg	  # This library was specified with -dlopen.
1958ee3138f1Smrg	  dlfiles="$dlfiles $arg"
1959ee3138f1Smrg	  prev=
1960ee3138f1Smrg	elif test "$prev" = dlprefiles; then
1961ee3138f1Smrg	  # The library was specified with -dlpreopen.
1962ee3138f1Smrg	  dlprefiles="$dlprefiles $arg"
1963ee3138f1Smrg	  prev=
1964ee3138f1Smrg	else
1965ee3138f1Smrg	  deplibs="$deplibs $arg"
1966ee3138f1Smrg	fi
1967ee3138f1Smrg	continue
1968ee3138f1Smrg	;;
1969ee3138f1Smrg
1970ee3138f1Smrg      # Some other compiler argument.
1971ee3138f1Smrg      *)
1972ee3138f1Smrg	# Unknown arguments in both finalize_command and compile_command need
1973ee3138f1Smrg	# to be aesthetically quoted because they are evaled later.
1974ee3138f1Smrg	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1975ee3138f1Smrg	case $arg in
1976ee3138f1Smrg	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1977ee3138f1Smrg	  arg="\"$arg\""
1978ee3138f1Smrg	  ;;
1979ee3138f1Smrg	esac
1980ee3138f1Smrg	;;
1981ee3138f1Smrg      esac # arg
1982ee3138f1Smrg
1983ee3138f1Smrg      # Now actually substitute the argument into the commands.
1984ee3138f1Smrg      if test -n "$arg"; then
1985ee3138f1Smrg	compile_command="$compile_command $arg"
1986ee3138f1Smrg	finalize_command="$finalize_command $arg"
1987ee3138f1Smrg      fi
1988ee3138f1Smrg    done # argument parsing loop
1989ee3138f1Smrg
1990ee3138f1Smrg    if test -n "$prev"; then
1991ee3138f1Smrg      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
1992ee3138f1Smrg      $echo "$help" 1>&2
1993ee3138f1Smrg      exit $EXIT_FAILURE
1994ee3138f1Smrg    fi
1995ee3138f1Smrg
1996ee3138f1Smrg    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
1997ee3138f1Smrg      eval arg=\"$export_dynamic_flag_spec\"
1998ee3138f1Smrg      compile_command="$compile_command $arg"
1999ee3138f1Smrg      finalize_command="$finalize_command $arg"
2000ee3138f1Smrg    fi
2001ee3138f1Smrg
2002ee3138f1Smrg    oldlibs=
2003ee3138f1Smrg    # calculate the name of the file, without its directory
2004ee3138f1Smrg    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
2005ee3138f1Smrg    libobjs_save="$libobjs"
2006ee3138f1Smrg
2007ee3138f1Smrg    if test -n "$shlibpath_var"; then
2008ee3138f1Smrg      # get the directories listed in $shlibpath_var
2009ee3138f1Smrg      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
2010ee3138f1Smrg    else
2011ee3138f1Smrg      shlib_search_path=
2012ee3138f1Smrg    fi
2013ee3138f1Smrg    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
2014ee3138f1Smrg    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
2015ee3138f1Smrg
2016ee3138f1Smrg    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
2017ee3138f1Smrg    if test "X$output_objdir" = "X$output"; then
2018ee3138f1Smrg      output_objdir="$objdir"
2019ee3138f1Smrg    else
2020ee3138f1Smrg      output_objdir="$output_objdir/$objdir"
2021ee3138f1Smrg    fi
2022ee3138f1Smrg    # Create the object directory.
2023ee3138f1Smrg    if test ! -d "$output_objdir"; then
2024ee3138f1Smrg      $show "$mkdir $output_objdir"
2025ee3138f1Smrg      $run $mkdir $output_objdir
2026ee3138f1Smrg      exit_status=$?
2027ee3138f1Smrg      if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
2028ee3138f1Smrg	exit $exit_status
2029ee3138f1Smrg      fi
2030ee3138f1Smrg    fi
2031ee3138f1Smrg
2032ee3138f1Smrg    # Determine the type of output
2033ee3138f1Smrg    case $output in
2034ee3138f1Smrg    "")
2035ee3138f1Smrg      $echo "$modename: you must specify an output file" 1>&2
2036ee3138f1Smrg      $echo "$help" 1>&2
2037ee3138f1Smrg      exit $EXIT_FAILURE
2038ee3138f1Smrg      ;;
2039ee3138f1Smrg    *.$libext) linkmode=oldlib ;;
2040ee3138f1Smrg    *.lo | *.$objext) linkmode=obj ;;
2041ee3138f1Smrg    *.la) linkmode=lib ;;
2042ee3138f1Smrg    *) linkmode=prog ;; # Anything else should be a program.
2043ee3138f1Smrg    esac
2044ee3138f1Smrg
2045ee3138f1Smrg    case $host in
2046ee3138f1Smrg    *cygwin* | *mingw* | *pw32*)
2047ee3138f1Smrg      # don't eliminate duplications in $postdeps and $predeps
2048ee3138f1Smrg      duplicate_compiler_generated_deps=yes
2049ee3138f1Smrg      ;;
2050ee3138f1Smrg    *)
2051ee3138f1Smrg      duplicate_compiler_generated_deps=$duplicate_deps
2052ee3138f1Smrg      ;;
2053ee3138f1Smrg    esac
2054ee3138f1Smrg    specialdeplibs=
2055ee3138f1Smrg
2056ee3138f1Smrg    libs=
2057ee3138f1Smrg    # Find all interdependent deplibs by searching for libraries
2058ee3138f1Smrg    # that are linked more than once (e.g. -la -lb -la)
2059ee3138f1Smrg    for deplib in $deplibs; do
2060ee3138f1Smrg      if test "X$duplicate_deps" = "Xyes" ; then
2061ee3138f1Smrg	case "$libs " in
2062ee3138f1Smrg	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2063ee3138f1Smrg	esac
2064ee3138f1Smrg      fi
2065ee3138f1Smrg      libs="$libs $deplib"
2066ee3138f1Smrg    done
2067ee3138f1Smrg
2068ee3138f1Smrg    if test "$linkmode" = lib; then
2069ee3138f1Smrg      libs="$predeps $libs $compiler_lib_search_path $postdeps"
2070ee3138f1Smrg
2071ee3138f1Smrg      # Compute libraries that are listed more than once in $predeps
2072ee3138f1Smrg      # $postdeps and mark them as special (i.e., whose duplicates are
2073ee3138f1Smrg      # not to be eliminated).
2074ee3138f1Smrg      pre_post_deps=
2075ee3138f1Smrg      if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
2076ee3138f1Smrg	for pre_post_dep in $predeps $postdeps; do
2077ee3138f1Smrg	  case "$pre_post_deps " in
2078ee3138f1Smrg	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
2079ee3138f1Smrg	  esac
2080ee3138f1Smrg	  pre_post_deps="$pre_post_deps $pre_post_dep"
2081ee3138f1Smrg	done
2082ee3138f1Smrg      fi
2083ee3138f1Smrg      pre_post_deps=
2084ee3138f1Smrg    fi
2085ee3138f1Smrg
2086ee3138f1Smrg    deplibs=
2087ee3138f1Smrg    newdependency_libs=
2088ee3138f1Smrg    newlib_search_path=
2089ee3138f1Smrg    need_relink=no # whether we're linking any uninstalled libtool libraries
2090ee3138f1Smrg    notinst_deplibs= # not-installed libtool libraries
2091ee3138f1Smrg    case $linkmode in
2092ee3138f1Smrg    lib)
2093ee3138f1Smrg	passes="conv link"
2094ee3138f1Smrg	for file in $dlfiles $dlprefiles; do
2095ee3138f1Smrg	  case $file in
2096ee3138f1Smrg	  *.la) ;;
2097ee3138f1Smrg	  *)
2098ee3138f1Smrg	    $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
2099ee3138f1Smrg	    exit $EXIT_FAILURE
2100ee3138f1Smrg	    ;;
2101ee3138f1Smrg	  esac
2102ee3138f1Smrg	done
2103ee3138f1Smrg	;;
2104ee3138f1Smrg    prog)
2105ee3138f1Smrg	compile_deplibs=
2106ee3138f1Smrg	finalize_deplibs=
2107ee3138f1Smrg	alldeplibs=no
2108ee3138f1Smrg	newdlfiles=
2109ee3138f1Smrg	newdlprefiles=
2110ee3138f1Smrg	passes="conv scan dlopen dlpreopen link"
2111ee3138f1Smrg	;;
2112ee3138f1Smrg    *)  passes="conv"
2113ee3138f1Smrg	;;
2114ee3138f1Smrg    esac
2115ee3138f1Smrg    for pass in $passes; do
2116ee3138f1Smrg      if test "$linkmode,$pass" = "lib,link" ||
2117ee3138f1Smrg	 test "$linkmode,$pass" = "prog,scan"; then
2118ee3138f1Smrg	libs="$deplibs"
2119ee3138f1Smrg	deplibs=
2120ee3138f1Smrg      fi
2121ee3138f1Smrg      if test "$linkmode" = prog; then
2122ee3138f1Smrg	case $pass in
2123ee3138f1Smrg	dlopen) libs="$dlfiles" ;;
2124ee3138f1Smrg	dlpreopen) libs="$dlprefiles" ;;
2125ee3138f1Smrg	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
2126ee3138f1Smrg	esac
2127ee3138f1Smrg      fi
2128ee3138f1Smrg      if test "$pass" = dlopen; then
2129ee3138f1Smrg	# Collect dlpreopened libraries
2130ee3138f1Smrg	save_deplibs="$deplibs"
2131ee3138f1Smrg	deplibs=
2132ee3138f1Smrg      fi
2133ee3138f1Smrg      for deplib in $libs; do
2134ee3138f1Smrg	lib=
2135ee3138f1Smrg	found=no
2136ee3138f1Smrg	case $deplib in
2137ee3138f1Smrg	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
2138ee3138f1Smrg	  if test "$linkmode,$pass" = "prog,link"; then
2139ee3138f1Smrg	    compile_deplibs="$deplib $compile_deplibs"
2140ee3138f1Smrg	    finalize_deplibs="$deplib $finalize_deplibs"
2141ee3138f1Smrg	  else
2142ee3138f1Smrg	    compiler_flags="$compiler_flags $deplib"
2143ee3138f1Smrg	  fi
2144ee3138f1Smrg	  continue
2145ee3138f1Smrg	  ;;
2146ee3138f1Smrg	-l*)
2147ee3138f1Smrg	  if test "$linkmode" != lib && test "$linkmode" != prog; then
2148ee3138f1Smrg	    $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
2149ee3138f1Smrg	    continue
2150ee3138f1Smrg	  fi
2151ee3138f1Smrg	  name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
2152ee3138f1Smrg	  for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
2153ee3138f1Smrg	    for search_ext in .la $std_shrext .so .a; do
2154ee3138f1Smrg	      # Search the libtool library
2155ee3138f1Smrg	      lib="$searchdir/lib${name}${search_ext}"
2156ee3138f1Smrg	      if test -f "$lib"; then
2157ee3138f1Smrg		if test "$search_ext" = ".la"; then
2158ee3138f1Smrg		  found=yes
2159ee3138f1Smrg		else
2160ee3138f1Smrg		  found=no
2161ee3138f1Smrg		fi
2162ee3138f1Smrg		break 2
2163ee3138f1Smrg	      fi
2164ee3138f1Smrg	    done
2165ee3138f1Smrg	  done
2166ee3138f1Smrg	  if test "$found" != yes; then
2167ee3138f1Smrg	    # deplib doesn't seem to be a libtool library
2168ee3138f1Smrg	    if test "$linkmode,$pass" = "prog,link"; then
2169ee3138f1Smrg	      compile_deplibs="$deplib $compile_deplibs"
2170ee3138f1Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
2171ee3138f1Smrg	    else
2172ee3138f1Smrg	      deplibs="$deplib $deplibs"
2173ee3138f1Smrg	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
2174ee3138f1Smrg	    fi
2175ee3138f1Smrg	    continue
2176ee3138f1Smrg	  else # deplib is a libtool library
2177ee3138f1Smrg	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
2178ee3138f1Smrg	    # We need to do some special things here, and not later.
2179ee3138f1Smrg	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
2180ee3138f1Smrg	      case " $predeps $postdeps " in
2181ee3138f1Smrg	      *" $deplib "*)
2182ee3138f1Smrg		if (${SED} -e '2q' $lib |
2183ee3138f1Smrg                    grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
2184ee3138f1Smrg		  library_names=
2185ee3138f1Smrg		  old_library=
2186ee3138f1Smrg		  case $lib in
2187ee3138f1Smrg		  */* | *\\*) . $lib ;;
2188ee3138f1Smrg		  *) . ./$lib ;;
2189ee3138f1Smrg		  esac
2190ee3138f1Smrg		  for l in $old_library $library_names; do
2191ee3138f1Smrg		    ll="$l"
2192ee3138f1Smrg		  done
2193ee3138f1Smrg		  if test "X$ll" = "X$old_library" ; then # only static version available
2194ee3138f1Smrg		    found=no
2195ee3138f1Smrg		    ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
2196ee3138f1Smrg		    test "X$ladir" = "X$lib" && ladir="."
2197ee3138f1Smrg		    lib=$ladir/$old_library
2198ee3138f1Smrg		    if test "$linkmode,$pass" = "prog,link"; then
2199ee3138f1Smrg		      compile_deplibs="$deplib $compile_deplibs"
2200ee3138f1Smrg		      finalize_deplibs="$deplib $finalize_deplibs"
2201ee3138f1Smrg		    else
2202ee3138f1Smrg		      deplibs="$deplib $deplibs"
2203ee3138f1Smrg		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
2204ee3138f1Smrg		    fi
2205ee3138f1Smrg		    continue
2206ee3138f1Smrg		  fi
2207ee3138f1Smrg		fi
2208ee3138f1Smrg	        ;;
2209ee3138f1Smrg	      *) ;;
2210ee3138f1Smrg	      esac
2211ee3138f1Smrg	    fi
2212ee3138f1Smrg	  fi
2213ee3138f1Smrg	  ;; # -l
2214ee3138f1Smrg	-L*)
2215ee3138f1Smrg	  case $linkmode in
2216ee3138f1Smrg	  lib)
2217ee3138f1Smrg	    deplibs="$deplib $deplibs"
2218ee3138f1Smrg	    test "$pass" = conv && continue
2219ee3138f1Smrg	    newdependency_libs="$deplib $newdependency_libs"
2220ee3138f1Smrg	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
2221ee3138f1Smrg	    ;;
2222ee3138f1Smrg	  prog)
2223ee3138f1Smrg	    if test "$pass" = conv; then
2224ee3138f1Smrg	      deplibs="$deplib $deplibs"
2225ee3138f1Smrg	      continue
2226ee3138f1Smrg	    fi
2227ee3138f1Smrg	    if test "$pass" = scan; then
2228ee3138f1Smrg	      deplibs="$deplib $deplibs"
2229ee3138f1Smrg	    else
2230ee3138f1Smrg	      compile_deplibs="$deplib $compile_deplibs"
2231ee3138f1Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
2232ee3138f1Smrg	    fi
2233ee3138f1Smrg	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
2234ee3138f1Smrg	    ;;
2235ee3138f1Smrg	  *)
2236ee3138f1Smrg	    $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
2237ee3138f1Smrg	    ;;
2238ee3138f1Smrg	  esac # linkmode
2239ee3138f1Smrg	  continue
2240ee3138f1Smrg	  ;; # -L
2241ee3138f1Smrg	-R*)
2242ee3138f1Smrg	  if test "$pass" = link; then
2243ee3138f1Smrg	    dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
2244ee3138f1Smrg	    # Make sure the xrpath contains only unique directories.
2245ee3138f1Smrg	    case "$xrpath " in
2246ee3138f1Smrg	    *" $dir "*) ;;
2247ee3138f1Smrg	    *) xrpath="$xrpath $dir" ;;
2248ee3138f1Smrg	    esac
2249ee3138f1Smrg	  fi
2250ee3138f1Smrg	  deplibs="$deplib $deplibs"
2251ee3138f1Smrg	  continue
2252ee3138f1Smrg	  ;;
2253ee3138f1Smrg	*.la) lib="$deplib" ;;
2254ee3138f1Smrg	*.$libext)
2255ee3138f1Smrg	  if test "$pass" = conv; then
2256ee3138f1Smrg	    deplibs="$deplib $deplibs"
2257ee3138f1Smrg	    continue
2258ee3138f1Smrg	  fi
2259ee3138f1Smrg	  case $linkmode in
2260ee3138f1Smrg	  lib)
2261ee3138f1Smrg	    valid_a_lib=no
2262ee3138f1Smrg	    case $deplibs_check_method in
2263ee3138f1Smrg	      match_pattern*)
2264ee3138f1Smrg		set dummy $deplibs_check_method
2265ee3138f1Smrg	        match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
2266ee3138f1Smrg		if eval $echo \"$deplib\" 2>/dev/null \
2267ee3138f1Smrg		    | $SED 10q \
2268ee3138f1Smrg		    | $EGREP "$match_pattern_regex" > /dev/null; then
2269ee3138f1Smrg		  valid_a_lib=yes
2270ee3138f1Smrg		fi
2271ee3138f1Smrg		;;
2272ee3138f1Smrg	      pass_all)
2273ee3138f1Smrg		valid_a_lib=yes
2274ee3138f1Smrg		;;
2275ee3138f1Smrg            esac
2276ee3138f1Smrg	    if test "$valid_a_lib" != yes; then
2277ee3138f1Smrg	      $echo
2278ee3138f1Smrg	      $echo "*** Warning: Trying to link with static lib archive $deplib."
2279ee3138f1Smrg	      $echo "*** I have the capability to make that library automatically link in when"
2280ee3138f1Smrg	      $echo "*** you link to this library.  But I can only do this if you have a"
2281ee3138f1Smrg	      $echo "*** shared version of the library, which you do not appear to have"
2282ee3138f1Smrg	      $echo "*** because the file extensions .$libext of this argument makes me believe"
2283ee3138f1Smrg	      $echo "*** that it is just a static archive that I should not used here."
2284ee3138f1Smrg	    else
2285ee3138f1Smrg	      $echo
2286ee3138f1Smrg	      $echo "*** Warning: Linking the shared library $output against the"
2287ee3138f1Smrg	      $echo "*** static library $deplib is not portable!"
2288ee3138f1Smrg	      deplibs="$deplib $deplibs"
2289ee3138f1Smrg	    fi
2290ee3138f1Smrg	    continue
2291ee3138f1Smrg	    ;;
2292ee3138f1Smrg	  prog)
2293ee3138f1Smrg	    if test "$pass" != link; then
2294ee3138f1Smrg	      deplibs="$deplib $deplibs"
2295ee3138f1Smrg	    else
2296ee3138f1Smrg	      compile_deplibs="$deplib $compile_deplibs"
2297ee3138f1Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
2298ee3138f1Smrg	    fi
2299ee3138f1Smrg	    continue
2300ee3138f1Smrg	    ;;
2301ee3138f1Smrg	  esac # linkmode
2302ee3138f1Smrg	  ;; # *.$libext
2303ee3138f1Smrg	*.lo | *.$objext)
2304ee3138f1Smrg	  if test "$pass" = conv; then
2305ee3138f1Smrg	    deplibs="$deplib $deplibs"
2306ee3138f1Smrg	  elif test "$linkmode" = prog; then
2307ee3138f1Smrg	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
2308ee3138f1Smrg	      # If there is no dlopen support or we're linking statically,
2309ee3138f1Smrg	      # we need to preload.
2310ee3138f1Smrg	      newdlprefiles="$newdlprefiles $deplib"
2311ee3138f1Smrg	      compile_deplibs="$deplib $compile_deplibs"
2312ee3138f1Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
2313ee3138f1Smrg	    else
2314ee3138f1Smrg	      newdlfiles="$newdlfiles $deplib"
2315ee3138f1Smrg	    fi
2316ee3138f1Smrg	  fi
2317ee3138f1Smrg	  continue
2318ee3138f1Smrg	  ;;
2319ee3138f1Smrg	%DEPLIBS%)
2320ee3138f1Smrg	  alldeplibs=yes
2321ee3138f1Smrg	  continue
2322ee3138f1Smrg	  ;;
2323ee3138f1Smrg	esac # case $deplib
2324ee3138f1Smrg	if test "$found" = yes || test -f "$lib"; then :
2325ee3138f1Smrg	else
2326ee3138f1Smrg	  $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
2327ee3138f1Smrg	  exit $EXIT_FAILURE
2328ee3138f1Smrg	fi
2329ee3138f1Smrg
2330ee3138f1Smrg	# Check to see that this really is a libtool archive.
2331ee3138f1Smrg	if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
2332ee3138f1Smrg	else
2333ee3138f1Smrg	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
2334ee3138f1Smrg	  exit $EXIT_FAILURE
2335ee3138f1Smrg	fi
2336ee3138f1Smrg
2337ee3138f1Smrg	ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
2338ee3138f1Smrg	test "X$ladir" = "X$lib" && ladir="."
2339ee3138f1Smrg
2340ee3138f1Smrg	dlname=
2341ee3138f1Smrg	dlopen=
2342ee3138f1Smrg	dlpreopen=
2343ee3138f1Smrg	libdir=
2344ee3138f1Smrg	library_names=
2345ee3138f1Smrg	old_library=
2346ee3138f1Smrg	# If the library was installed with an old release of libtool,
2347ee3138f1Smrg	# it will not redefine variables installed, or shouldnotlink
2348ee3138f1Smrg	installed=yes
2349ee3138f1Smrg	shouldnotlink=no
2350ee3138f1Smrg	avoidtemprpath=
2351ee3138f1Smrg
2352ee3138f1Smrg
2353ee3138f1Smrg	# Read the .la file
2354ee3138f1Smrg	case $lib in
2355ee3138f1Smrg	*/* | *\\*) . $lib ;;
2356ee3138f1Smrg	*) . ./$lib ;;
2357ee3138f1Smrg	esac
2358ee3138f1Smrg
2359ee3138f1Smrg	if test "$linkmode,$pass" = "lib,link" ||
2360ee3138f1Smrg	   test "$linkmode,$pass" = "prog,scan" ||
2361ee3138f1Smrg	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
2362ee3138f1Smrg	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
2363ee3138f1Smrg	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
2364ee3138f1Smrg	fi
2365ee3138f1Smrg
2366ee3138f1Smrg	if test "$pass" = conv; then
2367ee3138f1Smrg	  # Only check for convenience libraries
2368ee3138f1Smrg	  deplibs="$lib $deplibs"
2369ee3138f1Smrg	  if test -z "$libdir"; then
2370ee3138f1Smrg	    if test -z "$old_library"; then
2371ee3138f1Smrg	      $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2372ee3138f1Smrg	      exit $EXIT_FAILURE
2373ee3138f1Smrg	    fi
2374ee3138f1Smrg	    # It is a libtool convenience library, so add in its objects.
2375ee3138f1Smrg	    convenience="$convenience $ladir/$objdir/$old_library"
2376ee3138f1Smrg	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
2377ee3138f1Smrg	    tmp_libs=
2378ee3138f1Smrg	    for deplib in $dependency_libs; do
2379ee3138f1Smrg	      deplibs="$deplib $deplibs"
2380ee3138f1Smrg              if test "X$duplicate_deps" = "Xyes" ; then
2381ee3138f1Smrg	        case "$tmp_libs " in
2382ee3138f1Smrg	        *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2383ee3138f1Smrg	        esac
2384ee3138f1Smrg              fi
2385ee3138f1Smrg	      tmp_libs="$tmp_libs $deplib"
2386ee3138f1Smrg	    done
2387ee3138f1Smrg	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
2388ee3138f1Smrg	    $echo "$modename: \`$lib' is not a convenience library" 1>&2
2389ee3138f1Smrg	    exit $EXIT_FAILURE
2390ee3138f1Smrg	  fi
2391ee3138f1Smrg	  continue
2392ee3138f1Smrg	fi # $pass = conv
2393ee3138f1Smrg
2394ee3138f1Smrg
2395ee3138f1Smrg	# Get the name of the library we link against.
2396ee3138f1Smrg	linklib=
2397ee3138f1Smrg	for l in $old_library $library_names; do
2398ee3138f1Smrg	  linklib="$l"
2399ee3138f1Smrg	done
2400ee3138f1Smrg	if test -z "$linklib"; then
2401ee3138f1Smrg	  $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2402ee3138f1Smrg	  exit $EXIT_FAILURE
2403ee3138f1Smrg	fi
2404ee3138f1Smrg
2405ee3138f1Smrg	# This library was specified with -dlopen.
2406ee3138f1Smrg	if test "$pass" = dlopen; then
2407ee3138f1Smrg	  if test -z "$libdir"; then
2408ee3138f1Smrg	    $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
2409ee3138f1Smrg	    exit $EXIT_FAILURE
2410ee3138f1Smrg	  fi
2411ee3138f1Smrg	  if test -z "$dlname" ||
2412ee3138f1Smrg	     test "$dlopen_support" != yes ||
2413ee3138f1Smrg	     test "$build_libtool_libs" = no; then
2414ee3138f1Smrg	    # If there is no dlname, no dlopen support or we're linking
2415ee3138f1Smrg	    # statically, we need to preload.  We also need to preload any
2416ee3138f1Smrg	    # dependent libraries so libltdl's deplib preloader doesn't
2417ee3138f1Smrg	    # bomb out in the load deplibs phase.
2418ee3138f1Smrg	    dlprefiles="$dlprefiles $lib $dependency_libs"
2419ee3138f1Smrg	  else
2420ee3138f1Smrg	    newdlfiles="$newdlfiles $lib"
2421ee3138f1Smrg	  fi
2422ee3138f1Smrg	  continue
2423ee3138f1Smrg	fi # $pass = dlopen
2424ee3138f1Smrg
2425ee3138f1Smrg	# We need an absolute path.
2426ee3138f1Smrg	case $ladir in
2427ee3138f1Smrg	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
2428ee3138f1Smrg	*)
2429ee3138f1Smrg	  abs_ladir=`cd "$ladir" && pwd`
2430ee3138f1Smrg	  if test -z "$abs_ladir"; then
2431ee3138f1Smrg	    $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
2432ee3138f1Smrg	    $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
2433ee3138f1Smrg	    abs_ladir="$ladir"
2434ee3138f1Smrg	  fi
2435ee3138f1Smrg	  ;;
2436ee3138f1Smrg	esac
2437ee3138f1Smrg	laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
2438ee3138f1Smrg
2439ee3138f1Smrg	# Find the relevant object directory and library name.
2440ee3138f1Smrg	if test "X$installed" = Xyes; then
2441ee3138f1Smrg	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
2442ee3138f1Smrg	    $echo "$modename: warning: library \`$lib' was moved." 1>&2
2443ee3138f1Smrg	    dir="$ladir"
2444ee3138f1Smrg	    absdir="$abs_ladir"
2445ee3138f1Smrg	    libdir="$abs_ladir"
2446ee3138f1Smrg	  else
2447ee3138f1Smrg	    dir="$libdir"
2448ee3138f1Smrg	    absdir="$libdir"
2449ee3138f1Smrg	  fi
2450ee3138f1Smrg	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
2451ee3138f1Smrg	else
2452ee3138f1Smrg	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
2453ee3138f1Smrg	    dir="$ladir"
2454ee3138f1Smrg	    absdir="$abs_ladir"
2455ee3138f1Smrg	    # Remove this search path later
2456ee3138f1Smrg	    notinst_path="$notinst_path $abs_ladir"
2457ee3138f1Smrg	  else
2458ee3138f1Smrg	    dir="$ladir/$objdir"
2459ee3138f1Smrg	    absdir="$abs_ladir/$objdir"
2460ee3138f1Smrg	    # Remove this search path later
2461ee3138f1Smrg	    notinst_path="$notinst_path $abs_ladir"
2462ee3138f1Smrg	  fi
2463ee3138f1Smrg	fi # $installed = yes
2464ee3138f1Smrg	name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
2465ee3138f1Smrg
2466ee3138f1Smrg	# This library was specified with -dlpreopen.
2467ee3138f1Smrg	if test "$pass" = dlpreopen; then
2468ee3138f1Smrg	  if test -z "$libdir"; then
2469ee3138f1Smrg	    $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
2470ee3138f1Smrg	    exit $EXIT_FAILURE
2471ee3138f1Smrg	  fi
2472ee3138f1Smrg	  # Prefer using a static library (so that no silly _DYNAMIC symbols
2473ee3138f1Smrg	  # are required to link).
2474ee3138f1Smrg	  if test -n "$old_library"; then
2475ee3138f1Smrg	    newdlprefiles="$newdlprefiles $dir/$old_library"
2476ee3138f1Smrg	  # Otherwise, use the dlname, so that lt_dlopen finds it.
2477ee3138f1Smrg	  elif test -n "$dlname"; then
2478ee3138f1Smrg	    newdlprefiles="$newdlprefiles $dir/$dlname"
2479ee3138f1Smrg	  else
2480ee3138f1Smrg	    newdlprefiles="$newdlprefiles $dir/$linklib"
2481ee3138f1Smrg	  fi
2482ee3138f1Smrg	fi # $pass = dlpreopen
2483ee3138f1Smrg
2484ee3138f1Smrg	if test -z "$libdir"; then
2485ee3138f1Smrg	  # Link the convenience library
2486ee3138f1Smrg	  if test "$linkmode" = lib; then
2487ee3138f1Smrg	    deplibs="$dir/$old_library $deplibs"
2488ee3138f1Smrg	  elif test "$linkmode,$pass" = "prog,link"; then
2489ee3138f1Smrg	    compile_deplibs="$dir/$old_library $compile_deplibs"
2490ee3138f1Smrg	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
2491ee3138f1Smrg	  else
2492ee3138f1Smrg	    deplibs="$lib $deplibs" # used for prog,scan pass
2493ee3138f1Smrg	  fi
2494ee3138f1Smrg	  continue
2495ee3138f1Smrg	fi
2496ee3138f1Smrg
2497ee3138f1Smrg
2498ee3138f1Smrg	if test "$linkmode" = prog && test "$pass" != link; then
2499ee3138f1Smrg	  newlib_search_path="$newlib_search_path $ladir"
2500ee3138f1Smrg	  deplibs="$lib $deplibs"
2501ee3138f1Smrg
2502ee3138f1Smrg	  linkalldeplibs=no
2503ee3138f1Smrg	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
2504ee3138f1Smrg	     test "$build_libtool_libs" = no; then
2505ee3138f1Smrg	    linkalldeplibs=yes
2506ee3138f1Smrg	  fi
2507ee3138f1Smrg
2508ee3138f1Smrg	  tmp_libs=
2509ee3138f1Smrg	  for deplib in $dependency_libs; do
2510ee3138f1Smrg	    case $deplib in
2511ee3138f1Smrg	    -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
2512ee3138f1Smrg	    esac
2513ee3138f1Smrg	    # Need to link against all dependency_libs?
2514ee3138f1Smrg	    if test "$linkalldeplibs" = yes; then
2515ee3138f1Smrg	      deplibs="$deplib $deplibs"
2516ee3138f1Smrg	    else
2517ee3138f1Smrg	      # Need to hardcode shared library paths
2518ee3138f1Smrg	      # or/and link against static libraries
2519ee3138f1Smrg	      newdependency_libs="$deplib $newdependency_libs"
2520ee3138f1Smrg	    fi
2521ee3138f1Smrg	    if test "X$duplicate_deps" = "Xyes" ; then
2522ee3138f1Smrg	      case "$tmp_libs " in
2523ee3138f1Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2524ee3138f1Smrg	      esac
2525ee3138f1Smrg	    fi
2526ee3138f1Smrg	    tmp_libs="$tmp_libs $deplib"
2527ee3138f1Smrg	  done # for deplib
2528ee3138f1Smrg	  continue
2529ee3138f1Smrg	fi # $linkmode = prog...
2530ee3138f1Smrg
2531ee3138f1Smrg	if test "$linkmode,$pass" = "prog,link"; then
2532ee3138f1Smrg	  if test -n "$library_names" &&
2533ee3138f1Smrg	     { { test "$prefer_static_libs" = no ||
2534ee3138f1Smrg		 test "$prefer_static_libs,$installed" = "built,yes"; } ||
2535ee3138f1Smrg	       test -z "$old_library"; }; then
2536ee3138f1Smrg	    # We need to hardcode the library path
2537ee3138f1Smrg	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
2538ee3138f1Smrg	      # Make sure the rpath contains only unique directories.
2539ee3138f1Smrg	      case "$temp_rpath " in
2540ee3138f1Smrg	      *" $dir "*) ;;
2541ee3138f1Smrg	      *" $absdir "*) ;;
2542ee3138f1Smrg	      *) temp_rpath="$temp_rpath $absdir" ;;
2543ee3138f1Smrg	      esac
2544ee3138f1Smrg	    fi
2545ee3138f1Smrg
2546ee3138f1Smrg	    # Hardcode the library path.
2547ee3138f1Smrg	    # Skip directories that are in the system default run-time
2548ee3138f1Smrg	    # search path.
2549ee3138f1Smrg	    case " $sys_lib_dlsearch_path " in
2550ee3138f1Smrg	    *" $absdir "*) ;;
2551ee3138f1Smrg	    *)
2552ee3138f1Smrg	      case "$compile_rpath " in
2553ee3138f1Smrg	      *" $absdir "*) ;;
2554ee3138f1Smrg	      *) compile_rpath="$compile_rpath $absdir"
2555ee3138f1Smrg	      esac
2556ee3138f1Smrg	      ;;
2557ee3138f1Smrg	    esac
2558ee3138f1Smrg	    case " $sys_lib_dlsearch_path " in
2559ee3138f1Smrg	    *" $libdir "*) ;;
2560ee3138f1Smrg	    *)
2561ee3138f1Smrg	      case "$finalize_rpath " in
2562ee3138f1Smrg	      *" $libdir "*) ;;
2563ee3138f1Smrg	      *) finalize_rpath="$finalize_rpath $libdir"
2564ee3138f1Smrg	      esac
2565ee3138f1Smrg	      ;;
2566ee3138f1Smrg	    esac
2567ee3138f1Smrg	  fi # $linkmode,$pass = prog,link...
2568ee3138f1Smrg
2569ee3138f1Smrg	  if test "$alldeplibs" = yes &&
2570ee3138f1Smrg	     { test "$deplibs_check_method" = pass_all ||
2571ee3138f1Smrg	       { test "$build_libtool_libs" = yes &&
2572ee3138f1Smrg		 test -n "$library_names"; }; }; then
2573ee3138f1Smrg	    # We only need to search for static libraries
2574ee3138f1Smrg	    continue
2575ee3138f1Smrg	  fi
2576ee3138f1Smrg	fi
2577ee3138f1Smrg
2578ee3138f1Smrg	link_static=no # Whether the deplib will be linked statically
2579ee3138f1Smrg	use_static_libs=$prefer_static_libs
2580ee3138f1Smrg	if test "$use_static_libs" = built && test "$installed" = yes ; then
2581ee3138f1Smrg	  use_static_libs=no
2582ee3138f1Smrg	fi
2583ee3138f1Smrg	if test -n "$library_names" &&
2584ee3138f1Smrg	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
2585ee3138f1Smrg	  if test "$installed" = no; then
2586ee3138f1Smrg	    notinst_deplibs="$notinst_deplibs $lib"
2587ee3138f1Smrg	    need_relink=yes
2588ee3138f1Smrg	  fi
2589ee3138f1Smrg	  # This is a shared library
2590ee3138f1Smrg
2591ee3138f1Smrg	  # Warn about portability, can't link against -module's on
2592ee3138f1Smrg	  # some systems (darwin)
2593ee3138f1Smrg	  if test "$shouldnotlink" = yes && test "$pass" = link ; then
2594ee3138f1Smrg	    $echo
2595ee3138f1Smrg	    if test "$linkmode" = prog; then
2596ee3138f1Smrg	      $echo "*** Warning: Linking the executable $output against the loadable module"
2597ee3138f1Smrg	    else
2598ee3138f1Smrg	      $echo "*** Warning: Linking the shared library $output against the loadable module"
2599ee3138f1Smrg	    fi
2600ee3138f1Smrg	    $echo "*** $linklib is not portable!"
2601ee3138f1Smrg	  fi
2602ee3138f1Smrg	  if test "$linkmode" = lib &&
2603ee3138f1Smrg	     test "$hardcode_into_libs" = yes; then
2604ee3138f1Smrg	    # Hardcode the library path.
2605ee3138f1Smrg	    # Skip directories that are in the system default run-time
2606ee3138f1Smrg	    # search path.
2607ee3138f1Smrg	    case " $sys_lib_dlsearch_path " in
2608ee3138f1Smrg	    *" $absdir "*) ;;
2609ee3138f1Smrg	    *)
2610ee3138f1Smrg	      case "$compile_rpath " in
2611ee3138f1Smrg	      *" $absdir "*) ;;
2612ee3138f1Smrg	      *) compile_rpath="$compile_rpath $absdir"
2613ee3138f1Smrg	      esac
2614ee3138f1Smrg	      ;;
2615ee3138f1Smrg	    esac
2616ee3138f1Smrg	    case " $sys_lib_dlsearch_path " in
2617ee3138f1Smrg	    *" $libdir "*) ;;
2618ee3138f1Smrg	    *)
2619ee3138f1Smrg	      case "$finalize_rpath " in
2620ee3138f1Smrg	      *" $libdir "*) ;;
2621ee3138f1Smrg	      *) finalize_rpath="$finalize_rpath $libdir"
2622ee3138f1Smrg	      esac
2623ee3138f1Smrg	      ;;
2624ee3138f1Smrg	    esac
2625ee3138f1Smrg	  fi
2626ee3138f1Smrg
2627ee3138f1Smrg	  if test -n "$old_archive_from_expsyms_cmds"; then
2628ee3138f1Smrg	    # figure out the soname
2629ee3138f1Smrg	    set dummy $library_names
2630ee3138f1Smrg	    realname="$2"
2631ee3138f1Smrg	    shift; shift
2632ee3138f1Smrg	    libname=`eval \\$echo \"$libname_spec\"`
2633ee3138f1Smrg	    # use dlname if we got it. it's perfectly good, no?
2634ee3138f1Smrg	    if test -n "$dlname"; then
2635ee3138f1Smrg	      soname="$dlname"
2636ee3138f1Smrg	    elif test -n "$soname_spec"; then
2637ee3138f1Smrg	      # bleh windows
2638ee3138f1Smrg	      case $host in
2639ee3138f1Smrg	      *cygwin* | mingw*)
2640ee3138f1Smrg		major=`expr $current - $age`
2641ee3138f1Smrg		versuffix="-$major"
2642ee3138f1Smrg		;;
2643ee3138f1Smrg	      esac
2644ee3138f1Smrg	      eval soname=\"$soname_spec\"
2645ee3138f1Smrg	    else
2646ee3138f1Smrg	      soname="$realname"
2647ee3138f1Smrg	    fi
2648ee3138f1Smrg
2649ee3138f1Smrg	    # Make a new name for the extract_expsyms_cmds to use
2650ee3138f1Smrg	    soroot="$soname"
2651ee3138f1Smrg	    soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
2652ee3138f1Smrg	    newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
2653ee3138f1Smrg
2654ee3138f1Smrg	    # If the library has no export list, then create one now
2655ee3138f1Smrg	    if test -f "$output_objdir/$soname-def"; then :
2656ee3138f1Smrg	    else
2657ee3138f1Smrg	      $show "extracting exported symbol list from \`$soname'"
2658ee3138f1Smrg	      save_ifs="$IFS"; IFS='~'
2659ee3138f1Smrg	      cmds=$extract_expsyms_cmds
2660ee3138f1Smrg	      for cmd in $cmds; do
2661ee3138f1Smrg		IFS="$save_ifs"
2662ee3138f1Smrg		eval cmd=\"$cmd\"
2663ee3138f1Smrg		$show "$cmd"
2664ee3138f1Smrg		$run eval "$cmd" || exit $?
2665ee3138f1Smrg	      done
2666ee3138f1Smrg	      IFS="$save_ifs"
2667ee3138f1Smrg	    fi
2668ee3138f1Smrg
2669ee3138f1Smrg	    # Create $newlib
2670ee3138f1Smrg	    if test -f "$output_objdir/$newlib"; then :; else
2671ee3138f1Smrg	      $show "generating import library for \`$soname'"
2672ee3138f1Smrg	      save_ifs="$IFS"; IFS='~'
2673ee3138f1Smrg	      cmds=$old_archive_from_expsyms_cmds
2674ee3138f1Smrg	      for cmd in $cmds; do
2675ee3138f1Smrg		IFS="$save_ifs"
2676ee3138f1Smrg		eval cmd=\"$cmd\"
2677ee3138f1Smrg		$show "$cmd"
2678ee3138f1Smrg		$run eval "$cmd" || exit $?
2679ee3138f1Smrg	      done
2680ee3138f1Smrg	      IFS="$save_ifs"
2681ee3138f1Smrg	    fi
2682ee3138f1Smrg	    # make sure the library variables are pointing to the new library
2683ee3138f1Smrg	    dir=$output_objdir
2684ee3138f1Smrg	    linklib=$newlib
2685ee3138f1Smrg	  fi # test -n "$old_archive_from_expsyms_cmds"
2686ee3138f1Smrg
2687ee3138f1Smrg	  if test "$linkmode" = prog || test "$mode" != relink; then
2688ee3138f1Smrg	    add_shlibpath=
2689ee3138f1Smrg	    add_dir=
2690ee3138f1Smrg	    add=
2691ee3138f1Smrg	    lib_linked=yes
2692ee3138f1Smrg	    case $hardcode_action in
2693ee3138f1Smrg	    immediate | unsupported)
2694ee3138f1Smrg	      if test "$hardcode_direct" = no; then
2695ee3138f1Smrg		add="$dir/$linklib"
2696ee3138f1Smrg		case $host in
2697ee3138f1Smrg		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
2698ee3138f1Smrg		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
2699ee3138f1Smrg		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
2700ee3138f1Smrg		    *-*-unixware7*) add_dir="-L$dir" ;;
2701ee3138f1Smrg		  *-*-darwin* )
2702ee3138f1Smrg		    # if the lib is a module then we can not link against
2703ee3138f1Smrg		    # it, someone is ignoring the new warnings I added
2704ee3138f1Smrg		    if /usr/bin/file -L $add 2> /dev/null |
2705ee3138f1Smrg                      $EGREP ": [^:]* bundle" >/dev/null ; then
2706ee3138f1Smrg		      $echo "** Warning, lib $linklib is a module, not a shared library"
2707ee3138f1Smrg		      if test -z "$old_library" ; then
2708ee3138f1Smrg		        $echo
2709ee3138f1Smrg		        $echo "** And there doesn't seem to be a static archive available"
2710ee3138f1Smrg		        $echo "** The link will probably fail, sorry"
2711ee3138f1Smrg		      else
2712ee3138f1Smrg		        add="$dir/$old_library"
2713ee3138f1Smrg		      fi
2714ee3138f1Smrg		    fi
2715ee3138f1Smrg		esac
2716ee3138f1Smrg	      elif test "$hardcode_minus_L" = no; then
2717ee3138f1Smrg		case $host in
2718ee3138f1Smrg		*-*-sunos*) add_shlibpath="$dir" ;;
2719ee3138f1Smrg		esac
2720ee3138f1Smrg		add_dir="-L$dir"
2721ee3138f1Smrg		add="-l$name"
2722ee3138f1Smrg	      elif test "$hardcode_shlibpath_var" = no; then
2723ee3138f1Smrg		add_shlibpath="$dir"
2724ee3138f1Smrg		add="-l$name"
2725ee3138f1Smrg	      else
2726ee3138f1Smrg		lib_linked=no
2727ee3138f1Smrg	      fi
2728ee3138f1Smrg	      ;;
2729ee3138f1Smrg	    relink)
2730ee3138f1Smrg	      if test "$hardcode_direct" = yes; then
2731ee3138f1Smrg		add="$dir/$linklib"
2732ee3138f1Smrg	      elif test "$hardcode_minus_L" = yes; then
2733ee3138f1Smrg		add_dir="-L$dir"
2734ee3138f1Smrg		# Try looking first in the location we're being installed to.
2735ee3138f1Smrg		if test -n "$inst_prefix_dir"; then
2736ee3138f1Smrg		  case $libdir in
2737ee3138f1Smrg		    [\\/]*)
2738ee3138f1Smrg		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
2739ee3138f1Smrg		      ;;
2740ee3138f1Smrg		  esac
2741ee3138f1Smrg		fi
2742ee3138f1Smrg		add="-l$name"
2743ee3138f1Smrg	      elif test "$hardcode_shlibpath_var" = yes; then
2744ee3138f1Smrg		add_shlibpath="$dir"
2745ee3138f1Smrg		add="-l$name"
2746ee3138f1Smrg	      else
2747ee3138f1Smrg		lib_linked=no
2748ee3138f1Smrg	      fi
2749ee3138f1Smrg	      ;;
2750ee3138f1Smrg	    *) lib_linked=no ;;
2751ee3138f1Smrg	    esac
2752ee3138f1Smrg
2753ee3138f1Smrg	    if test "$lib_linked" != yes; then
2754ee3138f1Smrg	      $echo "$modename: configuration error: unsupported hardcode properties"
2755ee3138f1Smrg	      exit $EXIT_FAILURE
2756ee3138f1Smrg	    fi
2757ee3138f1Smrg
2758ee3138f1Smrg	    if test -n "$add_shlibpath"; then
2759ee3138f1Smrg	      case :$compile_shlibpath: in
2760ee3138f1Smrg	      *":$add_shlibpath:"*) ;;
2761ee3138f1Smrg	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
2762ee3138f1Smrg	      esac
2763ee3138f1Smrg	    fi
2764ee3138f1Smrg	    if test "$linkmode" = prog; then
2765ee3138f1Smrg	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
2766ee3138f1Smrg	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
2767ee3138f1Smrg	    else
2768ee3138f1Smrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
2769ee3138f1Smrg	      test -n "$add" && deplibs="$add $deplibs"
2770ee3138f1Smrg	      if test "$hardcode_direct" != yes && \
2771ee3138f1Smrg		 test "$hardcode_minus_L" != yes && \
2772ee3138f1Smrg		 test "$hardcode_shlibpath_var" = yes; then
2773ee3138f1Smrg		case :$finalize_shlibpath: in
2774ee3138f1Smrg		*":$libdir:"*) ;;
2775ee3138f1Smrg		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2776ee3138f1Smrg		esac
2777ee3138f1Smrg	      fi
2778ee3138f1Smrg	    fi
2779ee3138f1Smrg	  fi
2780ee3138f1Smrg
2781ee3138f1Smrg	  if test "$linkmode" = prog || test "$mode" = relink; then
2782ee3138f1Smrg	    add_shlibpath=
2783ee3138f1Smrg	    add_dir=
2784ee3138f1Smrg	    add=
2785ee3138f1Smrg	    # Finalize command for both is simple: just hardcode it.
2786ee3138f1Smrg	    if test "$hardcode_direct" = yes; then
2787ee3138f1Smrg	      add="$libdir/$linklib"
2788ee3138f1Smrg	    elif test "$hardcode_minus_L" = yes; then
2789ee3138f1Smrg	      add_dir="-L$libdir"
2790ee3138f1Smrg	      add="-l$name"
2791ee3138f1Smrg	    elif test "$hardcode_shlibpath_var" = yes; then
2792ee3138f1Smrg	      case :$finalize_shlibpath: in
2793ee3138f1Smrg	      *":$libdir:"*) ;;
2794ee3138f1Smrg	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2795ee3138f1Smrg	      esac
2796ee3138f1Smrg	      add="-l$name"
2797ee3138f1Smrg	    elif test "$hardcode_automatic" = yes; then
2798ee3138f1Smrg	      if test -n "$inst_prefix_dir" &&
2799ee3138f1Smrg		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
2800ee3138f1Smrg	        add="$inst_prefix_dir$libdir/$linklib"
2801ee3138f1Smrg	      else
2802ee3138f1Smrg	        add="$libdir/$linklib"
2803ee3138f1Smrg	      fi
2804ee3138f1Smrg	    else
2805ee3138f1Smrg	      # We cannot seem to hardcode it, guess we'll fake it.
2806ee3138f1Smrg	      add_dir="-L$libdir"
2807ee3138f1Smrg	      # Try looking first in the location we're being installed to.
2808ee3138f1Smrg	      if test -n "$inst_prefix_dir"; then
2809ee3138f1Smrg		case $libdir in
2810ee3138f1Smrg		  [\\/]*)
2811ee3138f1Smrg		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
2812ee3138f1Smrg		    ;;
2813ee3138f1Smrg		esac
2814ee3138f1Smrg	      fi
2815ee3138f1Smrg	      add="-l$name"
2816ee3138f1Smrg	    fi
2817ee3138f1Smrg
2818ee3138f1Smrg	    if test "$linkmode" = prog; then
2819ee3138f1Smrg	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
2820ee3138f1Smrg	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
2821ee3138f1Smrg	    else
2822ee3138f1Smrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
2823ee3138f1Smrg	      test -n "$add" && deplibs="$add $deplibs"
2824ee3138f1Smrg	    fi
2825ee3138f1Smrg	  fi
2826ee3138f1Smrg	elif test "$linkmode" = prog; then
2827ee3138f1Smrg	  # Here we assume that one of hardcode_direct or hardcode_minus_L
2828ee3138f1Smrg	  # is not unsupported.  This is valid on all known static and
2829ee3138f1Smrg	  # shared platforms.
2830ee3138f1Smrg	  if test "$hardcode_direct" != unsupported; then
2831ee3138f1Smrg	    test -n "$old_library" && linklib="$old_library"
2832ee3138f1Smrg	    compile_deplibs="$dir/$linklib $compile_deplibs"
2833ee3138f1Smrg	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
2834ee3138f1Smrg	  else
2835ee3138f1Smrg	    compile_deplibs="-l$name -L$dir $compile_deplibs"
2836ee3138f1Smrg	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
2837ee3138f1Smrg	  fi
2838ee3138f1Smrg	elif test "$build_libtool_libs" = yes; then
2839ee3138f1Smrg	  # Not a shared library
2840ee3138f1Smrg	  if test "$deplibs_check_method" != pass_all; then
2841ee3138f1Smrg	    # We're trying link a shared library against a static one
2842ee3138f1Smrg	    # but the system doesn't support it.
2843ee3138f1Smrg
2844ee3138f1Smrg	    # Just print a warning and add the library to dependency_libs so
2845ee3138f1Smrg	    # that the program can be linked against the static library.
2846ee3138f1Smrg	    $echo
2847ee3138f1Smrg	    $echo "*** Warning: This system can not link to static lib archive $lib."
2848ee3138f1Smrg	    $echo "*** I have the capability to make that library automatically link in when"
2849ee3138f1Smrg	    $echo "*** you link to this library.  But I can only do this if you have a"
2850ee3138f1Smrg	    $echo "*** shared version of the library, which you do not appear to have."
2851ee3138f1Smrg	    if test "$module" = yes; then
2852ee3138f1Smrg	      $echo "*** But as you try to build a module library, libtool will still create "
2853ee3138f1Smrg	      $echo "*** a static module, that should work as long as the dlopening application"
2854ee3138f1Smrg	      $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
2855ee3138f1Smrg	      if test -z "$global_symbol_pipe"; then
2856ee3138f1Smrg		$echo
2857ee3138f1Smrg		$echo "*** However, this would only work if libtool was able to extract symbol"
2858ee3138f1Smrg		$echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
2859ee3138f1Smrg		$echo "*** not find such a program.  So, this module is probably useless."
2860ee3138f1Smrg		$echo "*** \`nm' from GNU binutils and a full rebuild may help."
2861ee3138f1Smrg	      fi
2862ee3138f1Smrg	      if test "$build_old_libs" = no; then
2863ee3138f1Smrg		build_libtool_libs=module
2864ee3138f1Smrg		build_old_libs=yes
2865ee3138f1Smrg	      else
2866ee3138f1Smrg		build_libtool_libs=no
2867ee3138f1Smrg	      fi
2868ee3138f1Smrg	    fi
2869ee3138f1Smrg	  else
2870ee3138f1Smrg	    deplibs="$dir/$old_library $deplibs"
2871ee3138f1Smrg	    link_static=yes
2872ee3138f1Smrg	  fi
2873ee3138f1Smrg	fi # link shared/static library?
2874ee3138f1Smrg
2875ee3138f1Smrg	if test "$linkmode" = lib; then
2876ee3138f1Smrg	  if test -n "$dependency_libs" &&
2877ee3138f1Smrg	     { test "$hardcode_into_libs" != yes ||
2878ee3138f1Smrg	       test "$build_old_libs" = yes ||
2879ee3138f1Smrg	       test "$link_static" = yes; }; then
2880ee3138f1Smrg	    # Extract -R from dependency_libs
2881ee3138f1Smrg	    temp_deplibs=
2882ee3138f1Smrg	    for libdir in $dependency_libs; do
2883ee3138f1Smrg	      case $libdir in
2884ee3138f1Smrg	      -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
2885ee3138f1Smrg		   case " $xrpath " in
2886ee3138f1Smrg		   *" $temp_xrpath "*) ;;
2887ee3138f1Smrg		   *) xrpath="$xrpath $temp_xrpath";;
2888ee3138f1Smrg		   esac;;
2889ee3138f1Smrg	      *) temp_deplibs="$temp_deplibs $libdir";;
2890ee3138f1Smrg	      esac
2891ee3138f1Smrg	    done
2892ee3138f1Smrg	    dependency_libs="$temp_deplibs"
2893ee3138f1Smrg	  fi
2894ee3138f1Smrg
2895ee3138f1Smrg	  newlib_search_path="$newlib_search_path $absdir"
2896ee3138f1Smrg	  # Link against this library
2897ee3138f1Smrg	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
2898ee3138f1Smrg	  # ... and its dependency_libs
2899ee3138f1Smrg	  tmp_libs=
2900ee3138f1Smrg	  for deplib in $dependency_libs; do
2901ee3138f1Smrg	    newdependency_libs="$deplib $newdependency_libs"
2902ee3138f1Smrg	    if test "X$duplicate_deps" = "Xyes" ; then
2903ee3138f1Smrg	      case "$tmp_libs " in
2904ee3138f1Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2905ee3138f1Smrg	      esac
2906ee3138f1Smrg	    fi
2907ee3138f1Smrg	    tmp_libs="$tmp_libs $deplib"
2908ee3138f1Smrg	  done
2909ee3138f1Smrg
2910ee3138f1Smrg	  if test "$link_all_deplibs" != no; then
2911ee3138f1Smrg	    # Add the search paths of all dependency libraries
2912ee3138f1Smrg	    for deplib in $dependency_libs; do
2913ee3138f1Smrg	      case $deplib in
2914ee3138f1Smrg	      -L*) path="$deplib" ;;
2915ee3138f1Smrg	      *.la)
2916ee3138f1Smrg		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
2917ee3138f1Smrg		test "X$dir" = "X$deplib" && dir="."
2918ee3138f1Smrg		# We need an absolute path.
2919ee3138f1Smrg		case $dir in
2920ee3138f1Smrg		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
2921ee3138f1Smrg		*)
2922ee3138f1Smrg		  absdir=`cd "$dir" && pwd`
2923ee3138f1Smrg		  if test -z "$absdir"; then
2924ee3138f1Smrg		    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
2925ee3138f1Smrg		    absdir="$dir"
2926ee3138f1Smrg		  fi
2927ee3138f1Smrg		  ;;
2928ee3138f1Smrg		esac
2929ee3138f1Smrg		if grep "^installed=no" $deplib > /dev/null; then
2930ee3138f1Smrg		  path="$absdir/$objdir"
2931ee3138f1Smrg		else
2932ee3138f1Smrg		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
2933ee3138f1Smrg		  if test -z "$libdir"; then
2934ee3138f1Smrg		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
2935ee3138f1Smrg		    exit $EXIT_FAILURE
2936ee3138f1Smrg		  fi
2937ee3138f1Smrg		  if test "$absdir" != "$libdir"; then
2938ee3138f1Smrg		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
2939ee3138f1Smrg		  fi
2940ee3138f1Smrg		  path="$absdir"
2941ee3138f1Smrg		fi
2942ee3138f1Smrg		depdepl=
2943ee3138f1Smrg		case $host in
2944ee3138f1Smrg		*-*-darwin*)
2945ee3138f1Smrg		  # we do not want to link against static libs,
2946ee3138f1Smrg		  # but need to link against shared
2947ee3138f1Smrg		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
2948ee3138f1Smrg		  if test -n "$deplibrary_names" ; then
2949ee3138f1Smrg		    for tmp in $deplibrary_names ; do
2950ee3138f1Smrg		      depdepl=$tmp
2951ee3138f1Smrg		    done
2952ee3138f1Smrg		    if test -f "$path/$depdepl" ; then
2953ee3138f1Smrg		      depdepl="$path/$depdepl"
2954ee3138f1Smrg		    fi
2955ee3138f1Smrg		    # do not add paths which are already there
2956ee3138f1Smrg		    case " $newlib_search_path " in
2957ee3138f1Smrg		    *" $path "*) ;;
2958ee3138f1Smrg		    *) newlib_search_path="$newlib_search_path $path";;
2959ee3138f1Smrg		    esac
2960ee3138f1Smrg		  fi
2961ee3138f1Smrg		  path=""
2962ee3138f1Smrg		  ;;
2963ee3138f1Smrg		*)
2964ee3138f1Smrg		  path="-L$path"
2965ee3138f1Smrg		  ;;
2966ee3138f1Smrg		esac
2967ee3138f1Smrg		;;
2968ee3138f1Smrg	      -l*)
2969ee3138f1Smrg		case $host in
2970ee3138f1Smrg		*-*-darwin*)
2971ee3138f1Smrg		  # Again, we only want to link against shared libraries
2972ee3138f1Smrg		  eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
2973ee3138f1Smrg		  for tmp in $newlib_search_path ; do
2974ee3138f1Smrg		    if test -f "$tmp/lib$tmp_libs.dylib" ; then
2975ee3138f1Smrg		      eval depdepl="$tmp/lib$tmp_libs.dylib"
2976ee3138f1Smrg		      break
2977ee3138f1Smrg		    fi
2978ee3138f1Smrg		  done
2979ee3138f1Smrg		  path=""
2980ee3138f1Smrg		  ;;
2981ee3138f1Smrg		*) continue ;;
2982ee3138f1Smrg		esac
2983ee3138f1Smrg		;;
2984ee3138f1Smrg	      *) continue ;;
2985ee3138f1Smrg	      esac
2986ee3138f1Smrg	      case " $deplibs " in
2987ee3138f1Smrg	      *" $path "*) ;;
2988ee3138f1Smrg	      *) deplibs="$path $deplibs" ;;
2989ee3138f1Smrg	      esac
2990ee3138f1Smrg	      case " $deplibs " in
2991ee3138f1Smrg	      *" $depdepl "*) ;;
2992ee3138f1Smrg	      *) deplibs="$depdepl $deplibs" ;;
2993ee3138f1Smrg	      esac
2994ee3138f1Smrg	    done
2995ee3138f1Smrg	  fi # link_all_deplibs != no
2996ee3138f1Smrg	fi # linkmode = lib
2997ee3138f1Smrg      done # for deplib in $libs
2998ee3138f1Smrg      dependency_libs="$newdependency_libs"
2999ee3138f1Smrg      if test "$pass" = dlpreopen; then
3000ee3138f1Smrg	# Link the dlpreopened libraries before other libraries
3001ee3138f1Smrg	for deplib in $save_deplibs; do
3002ee3138f1Smrg	  deplibs="$deplib $deplibs"
3003ee3138f1Smrg	done
3004ee3138f1Smrg      fi
3005ee3138f1Smrg      if test "$pass" != dlopen; then
3006ee3138f1Smrg	if test "$pass" != conv; then
3007ee3138f1Smrg	  # Make sure lib_search_path contains only unique directories.
3008ee3138f1Smrg	  lib_search_path=
3009ee3138f1Smrg	  for dir in $newlib_search_path; do
3010ee3138f1Smrg	    case "$lib_search_path " in
3011ee3138f1Smrg	    *" $dir "*) ;;
3012ee3138f1Smrg	    *) lib_search_path="$lib_search_path $dir" ;;
3013ee3138f1Smrg	    esac
3014ee3138f1Smrg	  done
3015ee3138f1Smrg	  newlib_search_path=
3016ee3138f1Smrg	fi
3017ee3138f1Smrg
3018ee3138f1Smrg	if test "$linkmode,$pass" != "prog,link"; then
3019ee3138f1Smrg	  vars="deplibs"
3020ee3138f1Smrg	else
3021ee3138f1Smrg	  vars="compile_deplibs finalize_deplibs"
3022ee3138f1Smrg	fi
3023ee3138f1Smrg	for var in $vars dependency_libs; do
3024ee3138f1Smrg	  # Add libraries to $var in reverse order
3025ee3138f1Smrg	  eval tmp_libs=\"\$$var\"
3026ee3138f1Smrg	  new_libs=
3027ee3138f1Smrg	  for deplib in $tmp_libs; do
3028ee3138f1Smrg	    # FIXME: Pedantically, this is the right thing to do, so
3029ee3138f1Smrg	    #        that some nasty dependency loop isn't accidentally
3030ee3138f1Smrg	    #        broken:
3031ee3138f1Smrg	    #new_libs="$deplib $new_libs"
3032ee3138f1Smrg	    # Pragmatically, this seems to cause very few problems in
3033ee3138f1Smrg	    # practice:
3034ee3138f1Smrg	    case $deplib in
3035ee3138f1Smrg	    -L*) new_libs="$deplib $new_libs" ;;
3036ee3138f1Smrg	    -R*) ;;
3037ee3138f1Smrg	    *)
3038ee3138f1Smrg	      # And here is the reason: when a library appears more
3039ee3138f1Smrg	      # than once as an explicit dependence of a library, or
3040ee3138f1Smrg	      # is implicitly linked in more than once by the
3041ee3138f1Smrg	      # compiler, it is considered special, and multiple
3042ee3138f1Smrg	      # occurrences thereof are not removed.  Compare this
3043ee3138f1Smrg	      # with having the same library being listed as a
3044ee3138f1Smrg	      # dependency of multiple other libraries: in this case,
3045ee3138f1Smrg	      # we know (pedantically, we assume) the library does not
3046ee3138f1Smrg	      # need to be listed more than once, so we keep only the
3047ee3138f1Smrg	      # last copy.  This is not always right, but it is rare
3048ee3138f1Smrg	      # enough that we require users that really mean to play
3049ee3138f1Smrg	      # such unportable linking tricks to link the library
3050ee3138f1Smrg	      # using -Wl,-lname, so that libtool does not consider it
3051ee3138f1Smrg	      # for duplicate removal.
3052ee3138f1Smrg	      case " $specialdeplibs " in
3053ee3138f1Smrg	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
3054ee3138f1Smrg	      *)
3055ee3138f1Smrg		case " $new_libs " in
3056ee3138f1Smrg		*" $deplib "*) ;;
3057ee3138f1Smrg		*) new_libs="$deplib $new_libs" ;;
3058ee3138f1Smrg		esac
3059ee3138f1Smrg		;;
3060ee3138f1Smrg	      esac
3061ee3138f1Smrg	      ;;
3062ee3138f1Smrg	    esac
3063ee3138f1Smrg	  done
3064ee3138f1Smrg	  tmp_libs=
3065ee3138f1Smrg	  for deplib in $new_libs; do
3066ee3138f1Smrg	    case $deplib in
3067ee3138f1Smrg	    -L*)
3068ee3138f1Smrg	      case " $tmp_libs " in
3069ee3138f1Smrg	      *" $deplib "*) ;;
3070ee3138f1Smrg	      *) tmp_libs="$tmp_libs $deplib" ;;
3071ee3138f1Smrg	      esac
3072ee3138f1Smrg	      ;;
3073ee3138f1Smrg	    *) tmp_libs="$tmp_libs $deplib" ;;
3074ee3138f1Smrg	    esac
3075ee3138f1Smrg	  done
3076ee3138f1Smrg	  eval $var=\"$tmp_libs\"
3077ee3138f1Smrg	done # for var
3078ee3138f1Smrg      fi
3079ee3138f1Smrg      # Last step: remove runtime libs from dependency_libs
3080ee3138f1Smrg      # (they stay in deplibs)
3081ee3138f1Smrg      tmp_libs=
3082ee3138f1Smrg      for i in $dependency_libs ; do
3083ee3138f1Smrg	case " $predeps $postdeps $compiler_lib_search_path " in
3084ee3138f1Smrg	*" $i "*)
3085ee3138f1Smrg	  i=""
3086ee3138f1Smrg	  ;;
3087ee3138f1Smrg	esac
3088ee3138f1Smrg	if test -n "$i" ; then
3089ee3138f1Smrg	  tmp_libs="$tmp_libs $i"
3090ee3138f1Smrg	fi
3091ee3138f1Smrg      done
3092ee3138f1Smrg      dependency_libs=$tmp_libs
3093ee3138f1Smrg    done # for pass
3094ee3138f1Smrg    if test "$linkmode" = prog; then
3095ee3138f1Smrg      dlfiles="$newdlfiles"
3096ee3138f1Smrg      dlprefiles="$newdlprefiles"
3097ee3138f1Smrg    fi
3098ee3138f1Smrg
3099ee3138f1Smrg    case $linkmode in
3100ee3138f1Smrg    oldlib)
3101ee3138f1Smrg      if test -n "$deplibs"; then
3102ee3138f1Smrg	$echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
3103ee3138f1Smrg      fi
3104ee3138f1Smrg
3105ee3138f1Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3106ee3138f1Smrg	$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
3107ee3138f1Smrg      fi
3108ee3138f1Smrg
3109ee3138f1Smrg      if test -n "$rpath"; then
3110ee3138f1Smrg	$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
3111ee3138f1Smrg      fi
3112ee3138f1Smrg
3113ee3138f1Smrg      if test -n "$xrpath"; then
3114ee3138f1Smrg	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
3115ee3138f1Smrg      fi
3116ee3138f1Smrg
3117ee3138f1Smrg      if test -n "$vinfo"; then
3118ee3138f1Smrg	$echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
3119ee3138f1Smrg      fi
3120ee3138f1Smrg
3121ee3138f1Smrg      if test -n "$release"; then
3122ee3138f1Smrg	$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
3123ee3138f1Smrg      fi
3124ee3138f1Smrg
3125ee3138f1Smrg      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
3126ee3138f1Smrg	$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
3127ee3138f1Smrg      fi
3128ee3138f1Smrg
3129ee3138f1Smrg      # Now set the variables for building old libraries.
3130ee3138f1Smrg      build_libtool_libs=no
3131ee3138f1Smrg      oldlibs="$output"
3132ee3138f1Smrg      objs="$objs$old_deplibs"
3133ee3138f1Smrg      ;;
3134ee3138f1Smrg
3135ee3138f1Smrg    lib)
3136ee3138f1Smrg      # Make sure we only generate libraries of the form `libNAME.la'.
3137ee3138f1Smrg      case $outputname in
3138ee3138f1Smrg      lib*)
3139ee3138f1Smrg	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
3140ee3138f1Smrg	eval shared_ext=\"$shrext_cmds\"
3141ee3138f1Smrg	eval libname=\"$libname_spec\"
3142ee3138f1Smrg	;;
3143ee3138f1Smrg      *)
3144ee3138f1Smrg	if test "$module" = no; then
3145ee3138f1Smrg	  $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
3146ee3138f1Smrg	  $echo "$help" 1>&2
3147ee3138f1Smrg	  exit $EXIT_FAILURE
3148ee3138f1Smrg	fi
3149ee3138f1Smrg	if test "$need_lib_prefix" != no; then
3150ee3138f1Smrg	  # Add the "lib" prefix for modules if required
3151ee3138f1Smrg	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
3152ee3138f1Smrg	  eval shared_ext=\"$shrext_cmds\"
3153ee3138f1Smrg	  eval libname=\"$libname_spec\"
3154ee3138f1Smrg	else
3155ee3138f1Smrg	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
3156ee3138f1Smrg	fi
3157ee3138f1Smrg	;;
3158ee3138f1Smrg      esac
3159ee3138f1Smrg
3160ee3138f1Smrg      if test -n "$objs"; then
3161ee3138f1Smrg	if test "$deplibs_check_method" != pass_all; then
3162ee3138f1Smrg	  $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
3163ee3138f1Smrg	  exit $EXIT_FAILURE
3164ee3138f1Smrg	else
3165ee3138f1Smrg	  $echo
3166ee3138f1Smrg	  $echo "*** Warning: Linking the shared library $output against the non-libtool"
3167ee3138f1Smrg	  $echo "*** objects $objs is not portable!"
3168ee3138f1Smrg	  libobjs="$libobjs $objs"
3169ee3138f1Smrg	fi
3170ee3138f1Smrg      fi
3171ee3138f1Smrg
3172ee3138f1Smrg      if test "$dlself" != no; then
3173ee3138f1Smrg	$echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
3174ee3138f1Smrg      fi
3175ee3138f1Smrg
3176ee3138f1Smrg      set dummy $rpath
3177ee3138f1Smrg      if test "$#" -gt 2; then
3178ee3138f1Smrg	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
3179ee3138f1Smrg      fi
3180ee3138f1Smrg      install_libdir="$2"
3181ee3138f1Smrg
3182ee3138f1Smrg      oldlibs=
3183ee3138f1Smrg      if test -z "$rpath"; then
3184ee3138f1Smrg	if test "$build_libtool_libs" = yes; then
3185ee3138f1Smrg	  # Building a libtool convenience library.
3186ee3138f1Smrg	  # Some compilers have problems with a `.al' extension so
3187ee3138f1Smrg	  # convenience libraries should have the same extension an
3188ee3138f1Smrg	  # archive normally would.
3189ee3138f1Smrg	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
3190ee3138f1Smrg	  build_libtool_libs=convenience
3191ee3138f1Smrg	  build_old_libs=yes
3192ee3138f1Smrg	fi
3193ee3138f1Smrg
3194ee3138f1Smrg	if test -n "$vinfo"; then
3195ee3138f1Smrg	  $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
3196ee3138f1Smrg	fi
3197ee3138f1Smrg
3198ee3138f1Smrg	if test -n "$release"; then
3199ee3138f1Smrg	  $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
3200ee3138f1Smrg	fi
3201ee3138f1Smrg      else
3202ee3138f1Smrg
3203ee3138f1Smrg	# Parse the version information argument.
3204ee3138f1Smrg	save_ifs="$IFS"; IFS=':'
3205ee3138f1Smrg	set dummy $vinfo 0 0 0
3206ee3138f1Smrg	IFS="$save_ifs"
3207ee3138f1Smrg
3208ee3138f1Smrg	if test -n "$8"; then
3209ee3138f1Smrg	  $echo "$modename: too many parameters to \`-version-info'" 1>&2
3210ee3138f1Smrg	  $echo "$help" 1>&2
3211ee3138f1Smrg	  exit $EXIT_FAILURE
3212ee3138f1Smrg	fi
3213ee3138f1Smrg
3214ee3138f1Smrg	# convert absolute version numbers to libtool ages
3215ee3138f1Smrg	# this retains compatibility with .la files and attempts
3216ee3138f1Smrg	# to make the code below a bit more comprehensible
3217ee3138f1Smrg
3218ee3138f1Smrg	case $vinfo_number in
3219ee3138f1Smrg	yes)
3220ee3138f1Smrg	  number_major="$2"
3221ee3138f1Smrg	  number_minor="$3"
3222ee3138f1Smrg	  number_revision="$4"
3223ee3138f1Smrg	  #
3224ee3138f1Smrg	  # There are really only two kinds -- those that
3225ee3138f1Smrg	  # use the current revision as the major version
3226ee3138f1Smrg	  # and those that subtract age and use age as
3227ee3138f1Smrg	  # a minor version.  But, then there is irix
3228ee3138f1Smrg	  # which has an extra 1 added just for fun
3229ee3138f1Smrg	  #
3230ee3138f1Smrg	  case $version_type in
3231ee3138f1Smrg	  darwin|linux|osf|windows|none)
3232ee3138f1Smrg	    current=`expr $number_major + $number_minor`
3233ee3138f1Smrg	    age="$number_minor"
3234ee3138f1Smrg	    revision="$number_revision"
3235ee3138f1Smrg	    ;;
3236ee3138f1Smrg	  freebsd-aout|freebsd-elf|sunos)
3237ee3138f1Smrg	    current="$number_major"
3238ee3138f1Smrg	    revision="$number_minor"
3239ee3138f1Smrg	    age="0"
3240ee3138f1Smrg	    ;;
3241ee3138f1Smrg	  irix|nonstopux)
3242ee3138f1Smrg	    current=`expr $number_major + $number_minor`
3243ee3138f1Smrg	    age="$number_minor"
3244ee3138f1Smrg	    revision="$number_minor"
3245ee3138f1Smrg	    lt_irix_increment=no
3246ee3138f1Smrg	    ;;
3247ee3138f1Smrg	  esac
3248ee3138f1Smrg	  ;;
3249ee3138f1Smrg	no)
3250ee3138f1Smrg	  current="$2"
3251ee3138f1Smrg	  revision="$3"
3252ee3138f1Smrg	  age="$4"
3253ee3138f1Smrg	  ;;
3254ee3138f1Smrg	esac
3255ee3138f1Smrg
3256ee3138f1Smrg	# Check that each of the things are valid numbers.
3257ee3138f1Smrg	case $current in
3258ee3138f1Smrg	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]) ;;
3259ee3138f1Smrg	*)
3260ee3138f1Smrg	  $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
3261ee3138f1Smrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3262ee3138f1Smrg	  exit $EXIT_FAILURE
3263ee3138f1Smrg	  ;;
3264ee3138f1Smrg	esac
3265ee3138f1Smrg
3266ee3138f1Smrg	case $revision in
3267ee3138f1Smrg	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]) ;;
3268ee3138f1Smrg	*)
3269ee3138f1Smrg	  $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
3270ee3138f1Smrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3271ee3138f1Smrg	  exit $EXIT_FAILURE
3272ee3138f1Smrg	  ;;
3273ee3138f1Smrg	esac
3274ee3138f1Smrg
3275ee3138f1Smrg	case $age in
3276ee3138f1Smrg	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]) ;;
3277ee3138f1Smrg	*)
3278ee3138f1Smrg	  $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
3279ee3138f1Smrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3280ee3138f1Smrg	  exit $EXIT_FAILURE
3281ee3138f1Smrg	  ;;
3282ee3138f1Smrg	esac
3283ee3138f1Smrg
3284ee3138f1Smrg	if test "$age" -gt "$current"; then
3285ee3138f1Smrg	  $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
3286ee3138f1Smrg	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3287ee3138f1Smrg	  exit $EXIT_FAILURE
3288ee3138f1Smrg	fi
3289ee3138f1Smrg
3290ee3138f1Smrg	# Calculate the version variables.
3291ee3138f1Smrg	major=
3292ee3138f1Smrg	versuffix=
3293ee3138f1Smrg	verstring=
3294ee3138f1Smrg	case $version_type in
3295ee3138f1Smrg	none) ;;
3296ee3138f1Smrg
3297ee3138f1Smrg	darwin)
3298ee3138f1Smrg	  # Like Linux, but with the current version available in
3299ee3138f1Smrg	  # verstring for coding it into the library header
3300ee3138f1Smrg	  major=.`expr $current - $age`
3301ee3138f1Smrg	  versuffix="$major.$age.$revision"
3302ee3138f1Smrg	  # Darwin ld doesn't like 0 for these options...
3303ee3138f1Smrg	  minor_current=`expr $current + 1`
3304ee3138f1Smrg	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
3305ee3138f1Smrg	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
3306ee3138f1Smrg	  ;;
3307ee3138f1Smrg
3308ee3138f1Smrg	freebsd-aout)
3309ee3138f1Smrg	  major=".$current"
3310ee3138f1Smrg	  versuffix=".$current.$revision";
3311ee3138f1Smrg	  ;;
3312ee3138f1Smrg
3313ee3138f1Smrg	freebsd-elf)
3314ee3138f1Smrg	  major=".$current"
3315ee3138f1Smrg	  versuffix=".$current";
3316ee3138f1Smrg	  ;;
3317ee3138f1Smrg
3318ee3138f1Smrg	irix | nonstopux)
3319ee3138f1Smrg	  if test "X$lt_irix_increment" = "Xno"; then
3320ee3138f1Smrg	    major=`expr $current - $age`
3321ee3138f1Smrg	  else
3322ee3138f1Smrg	    major=`expr $current - $age + 1`
3323ee3138f1Smrg	  fi
3324ee3138f1Smrg	  case $version_type in
3325ee3138f1Smrg	    nonstopux) verstring_prefix=nonstopux ;;
3326ee3138f1Smrg	    *)         verstring_prefix=sgi ;;
3327ee3138f1Smrg	  esac
3328ee3138f1Smrg	  verstring="$verstring_prefix$major.$revision"
3329ee3138f1Smrg
3330ee3138f1Smrg	  # Add in all the interfaces that we are compatible with.
3331ee3138f1Smrg	  loop=$revision
3332ee3138f1Smrg	  while test "$loop" -ne 0; do
3333ee3138f1Smrg	    iface=`expr $revision - $loop`
3334ee3138f1Smrg	    loop=`expr $loop - 1`
3335ee3138f1Smrg	    verstring="$verstring_prefix$major.$iface:$verstring"
3336ee3138f1Smrg	  done
3337ee3138f1Smrg
3338ee3138f1Smrg	  # Before this point, $major must not contain `.'.
3339ee3138f1Smrg	  major=.$major
3340ee3138f1Smrg	  versuffix="$major.$revision"
3341ee3138f1Smrg	  ;;
3342ee3138f1Smrg
3343ee3138f1Smrg	linux)
3344ee3138f1Smrg	  major=.`expr $current - $age`
3345ee3138f1Smrg	  versuffix="$major.$age.$revision"
3346ee3138f1Smrg	  ;;
3347ee3138f1Smrg
3348ee3138f1Smrg	osf)
3349ee3138f1Smrg	  major=.`expr $current - $age`
3350ee3138f1Smrg	  versuffix=".$current.$age.$revision"
3351ee3138f1Smrg	  verstring="$current.$age.$revision"
3352ee3138f1Smrg
3353ee3138f1Smrg	  # Add in all the interfaces that we are compatible with.
3354ee3138f1Smrg	  loop=$age
3355ee3138f1Smrg	  while test "$loop" -ne 0; do
3356ee3138f1Smrg	    iface=`expr $current - $loop`
3357ee3138f1Smrg	    loop=`expr $loop - 1`
3358ee3138f1Smrg	    verstring="$verstring:${iface}.0"
3359ee3138f1Smrg	  done
3360ee3138f1Smrg
3361ee3138f1Smrg	  # Make executables depend on our current version.
3362ee3138f1Smrg	  verstring="$verstring:${current}.0"
3363ee3138f1Smrg	  ;;
3364ee3138f1Smrg
3365ee3138f1Smrg	sunos)
3366ee3138f1Smrg	  major=".$current"
3367ee3138f1Smrg	  versuffix=".$current.$revision"
3368ee3138f1Smrg	  ;;
3369ee3138f1Smrg
3370ee3138f1Smrg	windows)
3371ee3138f1Smrg	  # Use '-' rather than '.', since we only want one
3372ee3138f1Smrg	  # extension on DOS 8.3 filesystems.
3373ee3138f1Smrg	  major=`expr $current - $age`
3374ee3138f1Smrg	  versuffix="-$major"
3375ee3138f1Smrg	  ;;
3376ee3138f1Smrg
3377ee3138f1Smrg	*)
3378ee3138f1Smrg	  $echo "$modename: unknown library version type \`$version_type'" 1>&2
3379ee3138f1Smrg	  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
3380ee3138f1Smrg	  exit $EXIT_FAILURE
3381ee3138f1Smrg	  ;;
3382ee3138f1Smrg	esac
3383ee3138f1Smrg
3384ee3138f1Smrg	# Clear the version info if we defaulted, and they specified a release.
3385ee3138f1Smrg	if test -z "$vinfo" && test -n "$release"; then
3386ee3138f1Smrg	  major=
3387ee3138f1Smrg	  case $version_type in
3388ee3138f1Smrg	  darwin)
3389ee3138f1Smrg	    # we can't check for "0.0" in archive_cmds due to quoting
3390ee3138f1Smrg	    # problems, so we reset it completely
3391ee3138f1Smrg	    verstring=
3392ee3138f1Smrg	    ;;
3393ee3138f1Smrg	  *)
3394ee3138f1Smrg	    verstring="0.0"
3395ee3138f1Smrg	    ;;
3396ee3138f1Smrg	  esac
3397ee3138f1Smrg	  if test "$need_version" = no; then
3398ee3138f1Smrg	    versuffix=
3399ee3138f1Smrg	  else
3400ee3138f1Smrg	    versuffix=".0.0"
3401ee3138f1Smrg	  fi
3402ee3138f1Smrg	fi
3403ee3138f1Smrg
3404ee3138f1Smrg	# Remove version info from name if versioning should be avoided
3405ee3138f1Smrg	if test "$avoid_version" = yes && test "$need_version" = no; then
3406ee3138f1Smrg	  major=
3407ee3138f1Smrg	  versuffix=
3408ee3138f1Smrg	  verstring=""
3409ee3138f1Smrg	fi
3410ee3138f1Smrg
3411ee3138f1Smrg	# Check to see if the archive will have undefined symbols.
3412ee3138f1Smrg	if test "$allow_undefined" = yes; then
3413ee3138f1Smrg	  if test "$allow_undefined_flag" = unsupported; then
3414ee3138f1Smrg	    $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
3415ee3138f1Smrg	    build_libtool_libs=no
3416ee3138f1Smrg	    build_old_libs=yes
3417ee3138f1Smrg	  fi
3418ee3138f1Smrg	else
3419ee3138f1Smrg	  # Don't allow undefined symbols.
3420ee3138f1Smrg	  allow_undefined_flag="$no_undefined_flag"
3421ee3138f1Smrg	fi
3422ee3138f1Smrg      fi
3423ee3138f1Smrg
3424ee3138f1Smrg      if test "$mode" != relink; then
3425ee3138f1Smrg	# Remove our outputs, but don't remove object files since they
3426ee3138f1Smrg	# may have been created when compiling PIC objects.
3427ee3138f1Smrg	removelist=
3428ee3138f1Smrg	tempremovelist=`$echo "$output_objdir/*"`
3429ee3138f1Smrg	for p in $tempremovelist; do
3430ee3138f1Smrg	  case $p in
3431ee3138f1Smrg	    *.$objext)
3432ee3138f1Smrg	       ;;
3433ee3138f1Smrg	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
3434ee3138f1Smrg	       if test "X$precious_files_regex" != "X"; then
3435ee3138f1Smrg	         if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
3436ee3138f1Smrg	         then
3437ee3138f1Smrg		   continue
3438ee3138f1Smrg		 fi
3439ee3138f1Smrg	       fi
3440ee3138f1Smrg	       removelist="$removelist $p"
3441ee3138f1Smrg	       ;;
3442ee3138f1Smrg	    *) ;;
3443ee3138f1Smrg	  esac
3444ee3138f1Smrg	done
3445ee3138f1Smrg	if test -n "$removelist"; then
3446ee3138f1Smrg	  $show "${rm}r $removelist"
3447ee3138f1Smrg	  $run ${rm}r $removelist
3448ee3138f1Smrg	fi
3449ee3138f1Smrg      fi
3450ee3138f1Smrg
3451ee3138f1Smrg      # Now set the variables for building old libraries.
3452ee3138f1Smrg      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
3453ee3138f1Smrg	oldlibs="$oldlibs $output_objdir/$libname.$libext"
3454ee3138f1Smrg
3455ee3138f1Smrg	# Transform .lo files to .o files.
3456ee3138f1Smrg	oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
3457ee3138f1Smrg      fi
3458ee3138f1Smrg
3459ee3138f1Smrg      # Eliminate all temporary directories.
3460ee3138f1Smrg      #for path in $notinst_path; do
3461ee3138f1Smrg      #	lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
3462ee3138f1Smrg      #	deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
3463ee3138f1Smrg      #	dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
3464ee3138f1Smrg      #done
3465ee3138f1Smrg
3466ee3138f1Smrg      if test -n "$xrpath"; then
3467ee3138f1Smrg	# If the user specified any rpath flags, then add them.
3468ee3138f1Smrg	temp_xrpath=
3469ee3138f1Smrg	for libdir in $xrpath; do
3470ee3138f1Smrg	  temp_xrpath="$temp_xrpath -R$libdir"
3471ee3138f1Smrg	  case "$finalize_rpath " in
3472ee3138f1Smrg	  *" $libdir "*) ;;
3473ee3138f1Smrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
3474ee3138f1Smrg	  esac
3475ee3138f1Smrg	done
3476ee3138f1Smrg	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
3477ee3138f1Smrg	  dependency_libs="$temp_xrpath $dependency_libs"
3478ee3138f1Smrg	fi
3479ee3138f1Smrg      fi
3480ee3138f1Smrg
3481ee3138f1Smrg      # Make sure dlfiles contains only unique files that won't be dlpreopened
3482ee3138f1Smrg      old_dlfiles="$dlfiles"
3483ee3138f1Smrg      dlfiles=
3484ee3138f1Smrg      for lib in $old_dlfiles; do
3485ee3138f1Smrg	case " $dlprefiles $dlfiles " in
3486ee3138f1Smrg	*" $lib "*) ;;
3487ee3138f1Smrg	*) dlfiles="$dlfiles $lib" ;;
3488ee3138f1Smrg	esac
3489ee3138f1Smrg      done
3490ee3138f1Smrg
3491ee3138f1Smrg      # Make sure dlprefiles contains only unique files
3492ee3138f1Smrg      old_dlprefiles="$dlprefiles"
3493ee3138f1Smrg      dlprefiles=
3494ee3138f1Smrg      for lib in $old_dlprefiles; do
3495ee3138f1Smrg	case "$dlprefiles " in
3496ee3138f1Smrg	*" $lib "*) ;;
3497ee3138f1Smrg	*) dlprefiles="$dlprefiles $lib" ;;
3498ee3138f1Smrg	esac
3499ee3138f1Smrg      done
3500ee3138f1Smrg
3501ee3138f1Smrg      if test "$build_libtool_libs" = yes; then
3502ee3138f1Smrg	if test -n "$rpath"; then
3503ee3138f1Smrg	  case $host in
3504ee3138f1Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
3505ee3138f1Smrg	    # these systems don't actually have a c library (as such)!
3506ee3138f1Smrg	    ;;
3507ee3138f1Smrg	  *-*-rhapsody* | *-*-darwin1.[012])
3508ee3138f1Smrg	    # Rhapsody C library is in the System framework
3509ee3138f1Smrg	    deplibs="$deplibs -framework System"
3510ee3138f1Smrg	    ;;
3511ee3138f1Smrg	  *-*-netbsd*)
3512ee3138f1Smrg	    # Don't link with libc until the a.out ld.so is fixed.
3513ee3138f1Smrg	    ;;
3514ee3138f1Smrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
3515ee3138f1Smrg	    # Do not include libc due to us having libc/libc_r.
3516ee3138f1Smrg	    ;;
3517ee3138f1Smrg	  *-*-sco3.2v5* | *-*-sco5v6*)
3518ee3138f1Smrg	    # Causes problems with __ctype
3519ee3138f1Smrg	    ;;
3520ee3138f1Smrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
3521ee3138f1Smrg	    # Compiler inserts libc in the correct place for threads to work
3522ee3138f1Smrg	    ;;
3523ee3138f1Smrg 	  *)
3524ee3138f1Smrg	    # Add libc to deplibs on all other systems if necessary.
3525ee3138f1Smrg	    if test "$build_libtool_need_lc" = "yes"; then
3526ee3138f1Smrg	      deplibs="$deplibs -lc"
3527ee3138f1Smrg	    fi
3528ee3138f1Smrg	    ;;
3529ee3138f1Smrg	  esac
3530ee3138f1Smrg	fi
3531ee3138f1Smrg
3532ee3138f1Smrg	# Transform deplibs into only deplibs that can be linked in shared.
3533ee3138f1Smrg	name_save=$name
3534ee3138f1Smrg	libname_save=$libname
3535ee3138f1Smrg	release_save=$release
3536ee3138f1Smrg	versuffix_save=$versuffix
3537ee3138f1Smrg	major_save=$major
3538ee3138f1Smrg	# I'm not sure if I'm treating the release correctly.  I think
3539ee3138f1Smrg	# release should show up in the -l (ie -lgmp5) so we don't want to
3540ee3138f1Smrg	# add it in twice.  Is that correct?
3541ee3138f1Smrg	release=""
3542ee3138f1Smrg	versuffix=""
3543ee3138f1Smrg	major=""
3544ee3138f1Smrg	newdeplibs=
3545ee3138f1Smrg	droppeddeps=no
3546ee3138f1Smrg	case $deplibs_check_method in
3547ee3138f1Smrg	pass_all)
3548ee3138f1Smrg	  # Don't check for shared/static.  Everything works.
3549ee3138f1Smrg	  # This might be a little naive.  We might want to check
3550ee3138f1Smrg	  # whether the library exists or not.  But this is on
3551ee3138f1Smrg	  # osf3 & osf4 and I'm not really sure... Just
3552ee3138f1Smrg	  # implementing what was already the behavior.
3553ee3138f1Smrg	  newdeplibs=$deplibs
3554ee3138f1Smrg	  ;;
3555ee3138f1Smrg	test_compile)
3556ee3138f1Smrg	  # This code stresses the "libraries are programs" paradigm to its
3557ee3138f1Smrg	  # limits. Maybe even breaks it.  We compile a program, linking it
3558ee3138f1Smrg	  # against the deplibs as a proxy for the library.  Then we can check
3559ee3138f1Smrg	  # whether they linked in statically or dynamically with ldd.
3560ee3138f1Smrg	  $rm conftest.c
3561ee3138f1Smrg	  cat > conftest.c <<EOF
3562ee3138f1Smrg	  int main() { return 0; }
3563ee3138f1SmrgEOF
3564ee3138f1Smrg	  $rm conftest
3565ee3138f1Smrg	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
3566ee3138f1Smrg	    ldd_output=`ldd conftest`
3567ee3138f1Smrg	    for i in $deplibs; do
3568ee3138f1Smrg	      name=`expr $i : '-l\(.*\)'`
3569ee3138f1Smrg	      # If $name is empty we are operating on a -L argument.
3570ee3138f1Smrg              if test "$name" != "" && test "$name" != "0"; then
3571ee3138f1Smrg		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3572ee3138f1Smrg		  case " $predeps $postdeps " in
3573ee3138f1Smrg		  *" $i "*)
3574ee3138f1Smrg		    newdeplibs="$newdeplibs $i"
3575ee3138f1Smrg		    i=""
3576ee3138f1Smrg		    ;;
3577ee3138f1Smrg		  esac
3578ee3138f1Smrg	        fi
3579ee3138f1Smrg		if test -n "$i" ; then
3580ee3138f1Smrg		  libname=`eval \\$echo \"$libname_spec\"`
3581ee3138f1Smrg		  deplib_matches=`eval \\$echo \"$library_names_spec\"`
3582ee3138f1Smrg		  set dummy $deplib_matches
3583ee3138f1Smrg		  deplib_match=$2
3584ee3138f1Smrg		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3585ee3138f1Smrg		    newdeplibs="$newdeplibs $i"
3586ee3138f1Smrg		  else
3587ee3138f1Smrg		    droppeddeps=yes
3588ee3138f1Smrg		    $echo
3589ee3138f1Smrg		    $echo "*** Warning: dynamic linker does not accept needed library $i."
3590ee3138f1Smrg		    $echo "*** I have the capability to make that library automatically link in when"
3591ee3138f1Smrg		    $echo "*** you link to this library.  But I can only do this if you have a"
3592ee3138f1Smrg		    $echo "*** shared version of the library, which I believe you do not have"
3593ee3138f1Smrg		    $echo "*** because a test_compile did reveal that the linker did not use it for"
3594ee3138f1Smrg		    $echo "*** its dynamic dependency list that programs get resolved with at runtime."
3595ee3138f1Smrg		  fi
3596ee3138f1Smrg		fi
3597ee3138f1Smrg	      else
3598ee3138f1Smrg		newdeplibs="$newdeplibs $i"
3599ee3138f1Smrg	      fi
3600ee3138f1Smrg	    done
3601ee3138f1Smrg	  else
3602ee3138f1Smrg	    # Error occurred in the first compile.  Let's try to salvage
3603ee3138f1Smrg	    # the situation: Compile a separate program for each library.
3604ee3138f1Smrg	    for i in $deplibs; do
3605ee3138f1Smrg	      name=`expr $i : '-l\(.*\)'`
3606ee3138f1Smrg	      # If $name is empty we are operating on a -L argument.
3607ee3138f1Smrg              if test "$name" != "" && test "$name" != "0"; then
3608ee3138f1Smrg		$rm conftest
3609ee3138f1Smrg		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
3610ee3138f1Smrg		  ldd_output=`ldd conftest`
3611ee3138f1Smrg		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3612ee3138f1Smrg		    case " $predeps $postdeps " in
3613ee3138f1Smrg		    *" $i "*)
3614ee3138f1Smrg		      newdeplibs="$newdeplibs $i"
3615ee3138f1Smrg		      i=""
3616ee3138f1Smrg		      ;;
3617ee3138f1Smrg		    esac
3618ee3138f1Smrg		  fi
3619ee3138f1Smrg		  if test -n "$i" ; then
3620ee3138f1Smrg		    libname=`eval \\$echo \"$libname_spec\"`
3621ee3138f1Smrg		    deplib_matches=`eval \\$echo \"$library_names_spec\"`
3622ee3138f1Smrg		    set dummy $deplib_matches
3623ee3138f1Smrg		    deplib_match=$2
3624ee3138f1Smrg		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3625ee3138f1Smrg		      newdeplibs="$newdeplibs $i"
3626ee3138f1Smrg		    else
3627ee3138f1Smrg		      droppeddeps=yes
3628ee3138f1Smrg		      $echo
3629ee3138f1Smrg		      $echo "*** Warning: dynamic linker does not accept needed library $i."
3630ee3138f1Smrg		      $echo "*** I have the capability to make that library automatically link in when"
3631ee3138f1Smrg		      $echo "*** you link to this library.  But I can only do this if you have a"
3632ee3138f1Smrg		      $echo "*** shared version of the library, which you do not appear to have"
3633ee3138f1Smrg		      $echo "*** because a test_compile did reveal that the linker did not use this one"
3634ee3138f1Smrg		      $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
3635ee3138f1Smrg		    fi
3636ee3138f1Smrg		  fi
3637ee3138f1Smrg		else
3638ee3138f1Smrg		  droppeddeps=yes
3639ee3138f1Smrg		  $echo
3640ee3138f1Smrg		  $echo "*** Warning!  Library $i is needed by this library but I was not able to"
3641ee3138f1Smrg		  $echo "*** make it link in!  You will probably need to install it or some"
3642ee3138f1Smrg		  $echo "*** library that it depends on before this library will be fully"
3643ee3138f1Smrg		  $echo "*** functional.  Installing it before continuing would be even better."
3644ee3138f1Smrg		fi
3645ee3138f1Smrg	      else
3646ee3138f1Smrg		newdeplibs="$newdeplibs $i"
3647ee3138f1Smrg	      fi
3648ee3138f1Smrg	    done
3649ee3138f1Smrg	  fi
3650ee3138f1Smrg	  ;;
3651ee3138f1Smrg	file_magic*)
3652ee3138f1Smrg	  set dummy $deplibs_check_method
3653ee3138f1Smrg	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3654ee3138f1Smrg	  for a_deplib in $deplibs; do
3655ee3138f1Smrg	    name=`expr $a_deplib : '-l\(.*\)'`
3656ee3138f1Smrg	    # If $name is empty we are operating on a -L argument.
3657ee3138f1Smrg            if test "$name" != "" && test  "$name" != "0"; then
3658ee3138f1Smrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3659ee3138f1Smrg		case " $predeps $postdeps " in
3660ee3138f1Smrg		*" $a_deplib "*)
3661ee3138f1Smrg		  newdeplibs="$newdeplibs $a_deplib"
3662ee3138f1Smrg		  a_deplib=""
3663ee3138f1Smrg		  ;;
3664ee3138f1Smrg		esac
3665ee3138f1Smrg	      fi
3666ee3138f1Smrg	      if test -n "$a_deplib" ; then
3667ee3138f1Smrg		libname=`eval \\$echo \"$libname_spec\"`
3668ee3138f1Smrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3669ee3138f1Smrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3670ee3138f1Smrg		  for potent_lib in $potential_libs; do
3671ee3138f1Smrg		      # Follow soft links.
3672ee3138f1Smrg		      if ls -lLd "$potent_lib" 2>/dev/null \
3673ee3138f1Smrg			 | grep " -> " >/dev/null; then
3674ee3138f1Smrg			continue
3675ee3138f1Smrg		      fi
3676ee3138f1Smrg		      # The statement above tries to avoid entering an
3677ee3138f1Smrg		      # endless loop below, in case of cyclic links.
3678ee3138f1Smrg		      # We might still enter an endless loop, since a link
3679ee3138f1Smrg		      # loop can be closed while we follow links,
3680ee3138f1Smrg		      # but so what?
3681ee3138f1Smrg		      potlib="$potent_lib"
3682ee3138f1Smrg		      while test -h "$potlib" 2>/dev/null; do
3683ee3138f1Smrg			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
3684ee3138f1Smrg			case $potliblink in
3685ee3138f1Smrg			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
3686ee3138f1Smrg			*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
3687ee3138f1Smrg			esac
3688ee3138f1Smrg		      done
3689ee3138f1Smrg		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
3690ee3138f1Smrg			 | ${SED} 10q \
3691ee3138f1Smrg			 | $EGREP "$file_magic_regex" > /dev/null; then
3692ee3138f1Smrg			newdeplibs="$newdeplibs $a_deplib"
3693ee3138f1Smrg			a_deplib=""
3694ee3138f1Smrg			break 2
3695ee3138f1Smrg		      fi
3696ee3138f1Smrg		  done
3697ee3138f1Smrg		done
3698ee3138f1Smrg	      fi
3699ee3138f1Smrg	      if test -n "$a_deplib" ; then
3700ee3138f1Smrg		droppeddeps=yes
3701ee3138f1Smrg		$echo
3702ee3138f1Smrg		$echo "*** Warning: linker path does not have real file for library $a_deplib."
3703ee3138f1Smrg		$echo "*** I have the capability to make that library automatically link in when"
3704ee3138f1Smrg		$echo "*** you link to this library.  But I can only do this if you have a"
3705ee3138f1Smrg		$echo "*** shared version of the library, which you do not appear to have"
3706ee3138f1Smrg		$echo "*** because I did check the linker path looking for a file starting"
3707ee3138f1Smrg		if test -z "$potlib" ; then
3708ee3138f1Smrg		  $echo "*** with $libname but no candidates were found. (...for file magic test)"
3709ee3138f1Smrg		else
3710ee3138f1Smrg		  $echo "*** with $libname and none of the candidates passed a file format test"
3711ee3138f1Smrg		  $echo "*** using a file magic. Last file checked: $potlib"
3712ee3138f1Smrg		fi
3713ee3138f1Smrg	      fi
3714ee3138f1Smrg	    else
3715ee3138f1Smrg	      # Add a -L argument.
3716ee3138f1Smrg	      newdeplibs="$newdeplibs $a_deplib"
3717ee3138f1Smrg	    fi
3718ee3138f1Smrg	  done # Gone through all deplibs.
3719ee3138f1Smrg	  ;;
3720ee3138f1Smrg	match_pattern*)
3721ee3138f1Smrg	  set dummy $deplibs_check_method
3722ee3138f1Smrg	  match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3723ee3138f1Smrg	  for a_deplib in $deplibs; do
3724ee3138f1Smrg	    name=`expr $a_deplib : '-l\(.*\)'`
3725ee3138f1Smrg	    # If $name is empty we are operating on a -L argument.
3726ee3138f1Smrg	    if test -n "$name" && test "$name" != "0"; then
3727ee3138f1Smrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3728ee3138f1Smrg		case " $predeps $postdeps " in
3729ee3138f1Smrg		*" $a_deplib "*)
3730ee3138f1Smrg		  newdeplibs="$newdeplibs $a_deplib"
3731ee3138f1Smrg		  a_deplib=""
3732ee3138f1Smrg		  ;;
3733ee3138f1Smrg		esac
3734ee3138f1Smrg	      fi
3735ee3138f1Smrg	      if test -n "$a_deplib" ; then
3736ee3138f1Smrg		libname=`eval \\$echo \"$libname_spec\"`
3737ee3138f1Smrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3738ee3138f1Smrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3739ee3138f1Smrg		  for potent_lib in $potential_libs; do
3740ee3138f1Smrg		    potlib="$potent_lib" # see symlink-check above in file_magic test
3741ee3138f1Smrg		    if eval $echo \"$potent_lib\" 2>/dev/null \
3742ee3138f1Smrg		        | ${SED} 10q \
3743ee3138f1Smrg		        | $EGREP "$match_pattern_regex" > /dev/null; then
3744ee3138f1Smrg		      newdeplibs="$newdeplibs $a_deplib"
3745ee3138f1Smrg		      a_deplib=""
3746ee3138f1Smrg		      break 2
3747ee3138f1Smrg		    fi
3748ee3138f1Smrg		  done
3749ee3138f1Smrg		done
3750ee3138f1Smrg	      fi
3751ee3138f1Smrg	      if test -n "$a_deplib" ; then
3752ee3138f1Smrg		droppeddeps=yes
3753ee3138f1Smrg		$echo
3754ee3138f1Smrg		$echo "*** Warning: linker path does not have real file for library $a_deplib."
3755ee3138f1Smrg		$echo "*** I have the capability to make that library automatically link in when"
3756ee3138f1Smrg		$echo "*** you link to this library.  But I can only do this if you have a"
3757ee3138f1Smrg		$echo "*** shared version of the library, which you do not appear to have"
3758ee3138f1Smrg		$echo "*** because I did check the linker path looking for a file starting"
3759ee3138f1Smrg		if test -z "$potlib" ; then
3760ee3138f1Smrg		  $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
3761ee3138f1Smrg		else
3762ee3138f1Smrg		  $echo "*** with $libname and none of the candidates passed a file format test"
3763ee3138f1Smrg		  $echo "*** using a regex pattern. Last file checked: $potlib"
3764ee3138f1Smrg		fi
3765ee3138f1Smrg	      fi
3766ee3138f1Smrg	    else
3767ee3138f1Smrg	      # Add a -L argument.
3768ee3138f1Smrg	      newdeplibs="$newdeplibs $a_deplib"
3769ee3138f1Smrg	    fi
3770ee3138f1Smrg	  done # Gone through all deplibs.
3771ee3138f1Smrg	  ;;
3772ee3138f1Smrg	none | unknown | *)
3773ee3138f1Smrg	  newdeplibs=""
3774ee3138f1Smrg	  tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
3775ee3138f1Smrg	    -e 's/ -[LR][^ ]*//g'`
3776ee3138f1Smrg	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3777ee3138f1Smrg	    for i in $predeps $postdeps ; do
3778ee3138f1Smrg	      # can't use Xsed below, because $i might contain '/'
3779ee3138f1Smrg	      tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
3780ee3138f1Smrg	    done
3781ee3138f1Smrg	  fi
3782ee3138f1Smrg	  if $echo "X $tmp_deplibs" | $Xsed -e 's/[ 	]//g' \
3783ee3138f1Smrg	    | grep . >/dev/null; then
3784ee3138f1Smrg	    $echo
3785ee3138f1Smrg	    if test "X$deplibs_check_method" = "Xnone"; then
3786ee3138f1Smrg	      $echo "*** Warning: inter-library dependencies are not supported in this platform."
3787ee3138f1Smrg	    else
3788ee3138f1Smrg	      $echo "*** Warning: inter-library dependencies are not known to be supported."
3789ee3138f1Smrg	    fi
3790ee3138f1Smrg	    $echo "*** All declared inter-library dependencies are being dropped."
3791ee3138f1Smrg	    droppeddeps=yes
3792ee3138f1Smrg	  fi
3793ee3138f1Smrg	  ;;
3794ee3138f1Smrg	esac
3795ee3138f1Smrg	versuffix=$versuffix_save
3796ee3138f1Smrg	major=$major_save
3797ee3138f1Smrg	release=$release_save
3798ee3138f1Smrg	libname=$libname_save
3799ee3138f1Smrg	name=$name_save
3800ee3138f1Smrg
3801ee3138f1Smrg	case $host in
3802ee3138f1Smrg	*-*-rhapsody* | *-*-darwin1.[012])
3803ee3138f1Smrg	  # On Rhapsody replace the C library is the System framework
3804ee3138f1Smrg	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
3805ee3138f1Smrg	  ;;
3806ee3138f1Smrg	esac
3807ee3138f1Smrg
3808ee3138f1Smrg	if test "$droppeddeps" = yes; then
3809ee3138f1Smrg	  if test "$module" = yes; then
3810ee3138f1Smrg	    $echo
3811ee3138f1Smrg	    $echo "*** Warning: libtool could not satisfy all declared inter-library"
3812ee3138f1Smrg	    $echo "*** dependencies of module $libname.  Therefore, libtool will create"
3813ee3138f1Smrg	    $echo "*** a static module, that should work as long as the dlopening"
3814ee3138f1Smrg	    $echo "*** application is linked with the -dlopen flag."
3815ee3138f1Smrg	    if test -z "$global_symbol_pipe"; then
3816ee3138f1Smrg	      $echo
3817ee3138f1Smrg	      $echo "*** However, this would only work if libtool was able to extract symbol"
3818ee3138f1Smrg	      $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
3819ee3138f1Smrg	      $echo "*** not find such a program.  So, this module is probably useless."
3820ee3138f1Smrg	      $echo "*** \`nm' from GNU binutils and a full rebuild may help."
3821ee3138f1Smrg	    fi
3822ee3138f1Smrg	    if test "$build_old_libs" = no; then
3823ee3138f1Smrg	      oldlibs="$output_objdir/$libname.$libext"
3824ee3138f1Smrg	      build_libtool_libs=module
3825ee3138f1Smrg	      build_old_libs=yes
3826ee3138f1Smrg	    else
3827ee3138f1Smrg	      build_libtool_libs=no
3828ee3138f1Smrg	    fi
3829ee3138f1Smrg	  else
3830ee3138f1Smrg	    $echo "*** The inter-library dependencies that have been dropped here will be"
3831ee3138f1Smrg	    $echo "*** automatically added whenever a program is linked with this library"
3832ee3138f1Smrg	    $echo "*** or is declared to -dlopen it."
3833ee3138f1Smrg
3834ee3138f1Smrg	    if test "$allow_undefined" = no; then
3835ee3138f1Smrg	      $echo
3836ee3138f1Smrg	      $echo "*** Since this library must not contain undefined symbols,"
3837ee3138f1Smrg	      $echo "*** because either the platform does not support them or"
3838ee3138f1Smrg	      $echo "*** it was explicitly requested with -no-undefined,"
3839ee3138f1Smrg	      $echo "*** libtool will only create a static version of it."
3840ee3138f1Smrg	      if test "$build_old_libs" = no; then
3841ee3138f1Smrg		oldlibs="$output_objdir/$libname.$libext"
3842ee3138f1Smrg		build_libtool_libs=module
3843ee3138f1Smrg		build_old_libs=yes
3844ee3138f1Smrg	      else
3845ee3138f1Smrg		build_libtool_libs=no
3846ee3138f1Smrg	      fi
3847ee3138f1Smrg	    fi
3848ee3138f1Smrg	  fi
3849ee3138f1Smrg	fi
3850ee3138f1Smrg	# Done checking deplibs!
3851ee3138f1Smrg	deplibs=$newdeplibs
3852ee3138f1Smrg      fi
3853ee3138f1Smrg
3854ee3138f1Smrg
3855ee3138f1Smrg      # move library search paths that coincide with paths to not yet
3856ee3138f1Smrg      # installed libraries to the beginning of the library search list
3857ee3138f1Smrg      new_libs=
3858ee3138f1Smrg      for path in $notinst_path; do
3859ee3138f1Smrg	case " $new_libs " in
3860ee3138f1Smrg	*" -L$path/$objdir "*) ;;
3861ee3138f1Smrg	*)
3862ee3138f1Smrg	  case " $deplibs " in
3863ee3138f1Smrg	  *" -L$path/$objdir "*)
3864ee3138f1Smrg	    new_libs="$new_libs -L$path/$objdir" ;;
3865ee3138f1Smrg	  esac
3866ee3138f1Smrg	  ;;
3867ee3138f1Smrg	esac
3868ee3138f1Smrg      done
3869ee3138f1Smrg      for deplib in $deplibs; do
3870ee3138f1Smrg	case $deplib in
3871ee3138f1Smrg	-L*)
3872ee3138f1Smrg	  case " $new_libs " in
3873ee3138f1Smrg	  *" $deplib "*) ;;
3874ee3138f1Smrg	  *) new_libs="$new_libs $deplib" ;;
3875ee3138f1Smrg	  esac
3876ee3138f1Smrg	  ;;
3877ee3138f1Smrg	*) new_libs="$new_libs $deplib" ;;
3878ee3138f1Smrg	esac
3879ee3138f1Smrg      done
3880ee3138f1Smrg      deplibs="$new_libs"
3881ee3138f1Smrg
3882ee3138f1Smrg
3883ee3138f1Smrg      # All the library-specific variables (install_libdir is set above).
3884ee3138f1Smrg      library_names=
3885ee3138f1Smrg      old_library=
3886ee3138f1Smrg      dlname=
3887ee3138f1Smrg
3888ee3138f1Smrg      # Test again, we may have decided not to build it any more
3889ee3138f1Smrg      if test "$build_libtool_libs" = yes; then
3890ee3138f1Smrg	if test "$hardcode_into_libs" = yes; then
3891ee3138f1Smrg	  # Hardcode the library paths
3892ee3138f1Smrg	  hardcode_libdirs=
3893ee3138f1Smrg	  dep_rpath=
3894ee3138f1Smrg	  rpath="$finalize_rpath"
3895ee3138f1Smrg	  test "$mode" != relink && rpath="$compile_rpath$rpath"
3896ee3138f1Smrg	  for libdir in $rpath; do
3897ee3138f1Smrg	    if test -n "$hardcode_libdir_flag_spec"; then
3898ee3138f1Smrg	      if test -n "$hardcode_libdir_separator"; then
3899ee3138f1Smrg		if test -z "$hardcode_libdirs"; then
3900ee3138f1Smrg		  hardcode_libdirs="$libdir"
3901ee3138f1Smrg		else
3902ee3138f1Smrg		  # Just accumulate the unique libdirs.
3903ee3138f1Smrg		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
3904ee3138f1Smrg		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
3905ee3138f1Smrg		    ;;
3906ee3138f1Smrg		  *)
3907ee3138f1Smrg		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
3908ee3138f1Smrg		    ;;
3909ee3138f1Smrg		  esac
3910ee3138f1Smrg		fi
3911ee3138f1Smrg	      else
3912ee3138f1Smrg		eval flag=\"$hardcode_libdir_flag_spec\"
3913ee3138f1Smrg		dep_rpath="$dep_rpath $flag"
3914ee3138f1Smrg	      fi
3915ee3138f1Smrg	    elif test -n "$runpath_var"; then
3916ee3138f1Smrg	      case "$perm_rpath " in
3917ee3138f1Smrg	      *" $libdir "*) ;;
3918ee3138f1Smrg	      *) perm_rpath="$perm_rpath $libdir" ;;
3919ee3138f1Smrg	      esac
3920ee3138f1Smrg	    fi
3921ee3138f1Smrg	  done
3922ee3138f1Smrg	  # Substitute the hardcoded libdirs into the rpath.
3923ee3138f1Smrg	  if test -n "$hardcode_libdir_separator" &&
3924ee3138f1Smrg	     test -n "$hardcode_libdirs"; then
3925ee3138f1Smrg	    libdir="$hardcode_libdirs"
3926ee3138f1Smrg	    if test -n "$hardcode_libdir_flag_spec_ld"; then
3927ee3138f1Smrg	      case $archive_cmds in
3928ee3138f1Smrg	      *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;;
3929ee3138f1Smrg	      *)      eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;;
3930ee3138f1Smrg	      esac
3931ee3138f1Smrg	    else
3932ee3138f1Smrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
3933ee3138f1Smrg	    fi
3934ee3138f1Smrg	  fi
3935ee3138f1Smrg	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
3936ee3138f1Smrg	    # We should set the runpath_var.
3937ee3138f1Smrg	    rpath=
3938ee3138f1Smrg	    for dir in $perm_rpath; do
3939ee3138f1Smrg	      rpath="$rpath$dir:"
3940ee3138f1Smrg	    done
3941ee3138f1Smrg	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
3942ee3138f1Smrg	  fi
3943ee3138f1Smrg	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
3944ee3138f1Smrg	fi
3945ee3138f1Smrg
3946ee3138f1Smrg	shlibpath="$finalize_shlibpath"
3947ee3138f1Smrg	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
3948ee3138f1Smrg	if test -n "$shlibpath"; then
3949ee3138f1Smrg	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
3950ee3138f1Smrg	fi
3951ee3138f1Smrg
3952ee3138f1Smrg	# Get the real and link names of the library.
3953ee3138f1Smrg	eval shared_ext=\"$shrext_cmds\"
3954ee3138f1Smrg	eval library_names=\"$library_names_spec\"
3955ee3138f1Smrg	set dummy $library_names
3956ee3138f1Smrg	realname="$2"
3957ee3138f1Smrg	shift; shift
3958ee3138f1Smrg
3959ee3138f1Smrg	if test -n "$soname_spec"; then
3960ee3138f1Smrg	  eval soname=\"$soname_spec\"
3961ee3138f1Smrg	else
3962ee3138f1Smrg	  soname="$realname"
3963ee3138f1Smrg	fi
3964ee3138f1Smrg	if test -z "$dlname"; then
3965ee3138f1Smrg	  dlname=$soname
3966ee3138f1Smrg	fi
3967ee3138f1Smrg
3968ee3138f1Smrg	lib="$output_objdir/$realname"
3969ee3138f1Smrg	linknames=
3970ee3138f1Smrg	for link
3971ee3138f1Smrg	do
3972ee3138f1Smrg	  linknames="$linknames $link"
3973ee3138f1Smrg	done
3974ee3138f1Smrg
3975ee3138f1Smrg	# Use standard objects if they are pic
3976ee3138f1Smrg	test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
3977ee3138f1Smrg
3978ee3138f1Smrg	# Prepare the list of exported symbols
3979ee3138f1Smrg	if test -z "$export_symbols"; then
3980ee3138f1Smrg	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
3981ee3138f1Smrg	    $show "generating symbol list for \`$libname.la'"
3982ee3138f1Smrg	    export_symbols="$output_objdir/$libname.exp"
3983ee3138f1Smrg	    $run $rm $export_symbols
3984ee3138f1Smrg	    cmds=$export_symbols_cmds
3985ee3138f1Smrg	    save_ifs="$IFS"; IFS='~'
3986ee3138f1Smrg	    for cmd in $cmds; do
3987ee3138f1Smrg	      IFS="$save_ifs"
3988ee3138f1Smrg	      eval cmd=\"$cmd\"
3989ee3138f1Smrg	      if len=`expr "X$cmd" : ".*"` &&
3990ee3138f1Smrg	       test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
3991ee3138f1Smrg	        $show "$cmd"
3992ee3138f1Smrg	        $run eval "$cmd" || exit $?
3993ee3138f1Smrg	        skipped_export=false
3994ee3138f1Smrg	      else
3995ee3138f1Smrg	        # The command line is too long to execute in one step.
3996ee3138f1Smrg	        $show "using reloadable object file for export list..."
3997ee3138f1Smrg	        skipped_export=:
3998ee3138f1Smrg		# Break out early, otherwise skipped_export may be
3999ee3138f1Smrg		# set to false by a later but shorter cmd.
4000ee3138f1Smrg		break
4001ee3138f1Smrg	      fi
4002ee3138f1Smrg	    done
4003ee3138f1Smrg	    IFS="$save_ifs"
4004ee3138f1Smrg	    if test -n "$export_symbols_regex"; then
4005ee3138f1Smrg	      $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
4006ee3138f1Smrg	      $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
4007ee3138f1Smrg	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
4008ee3138f1Smrg	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
4009ee3138f1Smrg	    fi
4010ee3138f1Smrg	  fi
4011ee3138f1Smrg	fi
4012ee3138f1Smrg
4013ee3138f1Smrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
4014ee3138f1Smrg	  $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
4015ee3138f1Smrg	fi
4016ee3138f1Smrg
4017ee3138f1Smrg	tmp_deplibs=
4018ee3138f1Smrg	for test_deplib in $deplibs; do
4019ee3138f1Smrg		case " $convenience " in
4020ee3138f1Smrg		*" $test_deplib "*) ;;
4021ee3138f1Smrg		*)
4022ee3138f1Smrg			tmp_deplibs="$tmp_deplibs $test_deplib"
4023ee3138f1Smrg			;;
4024ee3138f1Smrg		esac
4025ee3138f1Smrg	done
4026ee3138f1Smrg	deplibs="$tmp_deplibs"
4027ee3138f1Smrg
4028ee3138f1Smrg	if test -n "$convenience"; then
4029ee3138f1Smrg	  if test -n "$whole_archive_flag_spec"; then
4030ee3138f1Smrg	    save_libobjs=$libobjs
4031ee3138f1Smrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
4032ee3138f1Smrg	  else
4033ee3138f1Smrg	    gentop="$output_objdir/${outputname}x"
4034ee3138f1Smrg	    generated="$generated $gentop"
4035ee3138f1Smrg
4036ee3138f1Smrg	    func_extract_archives $gentop $convenience
4037ee3138f1Smrg	    libobjs="$libobjs $func_extract_archives_result"
4038ee3138f1Smrg	  fi
4039ee3138f1Smrg	fi
4040ee3138f1Smrg	
4041ee3138f1Smrg	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
4042ee3138f1Smrg	  eval flag=\"$thread_safe_flag_spec\"
4043ee3138f1Smrg	  linker_flags="$linker_flags $flag"
4044ee3138f1Smrg	fi
4045ee3138f1Smrg
4046ee3138f1Smrg	# Make a backup of the uninstalled library when relinking
4047ee3138f1Smrg	if test "$mode" = relink; then
4048ee3138f1Smrg	  $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
4049ee3138f1Smrg	fi
4050ee3138f1Smrg
4051ee3138f1Smrg	# Do each of the archive commands.
4052ee3138f1Smrg	if test "$module" = yes && test -n "$module_cmds" ; then
4053ee3138f1Smrg	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
4054ee3138f1Smrg	    eval test_cmds=\"$module_expsym_cmds\"
4055ee3138f1Smrg	    cmds=$module_expsym_cmds
4056ee3138f1Smrg	  else
4057ee3138f1Smrg	    eval test_cmds=\"$module_cmds\"
4058ee3138f1Smrg	    cmds=$module_cmds
4059ee3138f1Smrg	  fi
4060ee3138f1Smrg	else
4061ee3138f1Smrg	if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
4062ee3138f1Smrg	  eval test_cmds=\"$archive_expsym_cmds\"
4063ee3138f1Smrg	  cmds=$archive_expsym_cmds
4064ee3138f1Smrg	else
4065ee3138f1Smrg	  eval test_cmds=\"$archive_cmds\"
4066ee3138f1Smrg	  cmds=$archive_cmds
4067ee3138f1Smrg	  fi
4068ee3138f1Smrg	fi
4069ee3138f1Smrg
4070ee3138f1Smrg	if test "X$skipped_export" != "X:" &&
4071ee3138f1Smrg	   len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
4072ee3138f1Smrg	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
4073ee3138f1Smrg	  :
4074ee3138f1Smrg	else
4075ee3138f1Smrg	  # The command line is too long to link in one step, link piecewise.
4076ee3138f1Smrg	  $echo "creating reloadable object files..."
4077ee3138f1Smrg
4078ee3138f1Smrg	  # Save the value of $output and $libobjs because we want to
4079ee3138f1Smrg	  # use them later.  If we have whole_archive_flag_spec, we
4080ee3138f1Smrg	  # want to use save_libobjs as it was before
4081ee3138f1Smrg	  # whole_archive_flag_spec was expanded, because we can't
4082ee3138f1Smrg	  # assume the linker understands whole_archive_flag_spec.
4083ee3138f1Smrg	  # This may have to be revisited, in case too many
4084ee3138f1Smrg	  # convenience libraries get linked in and end up exceeding
4085ee3138f1Smrg	  # the spec.
4086ee3138f1Smrg	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
4087ee3138f1Smrg	    save_libobjs=$libobjs
4088ee3138f1Smrg	  fi
4089ee3138f1Smrg	  save_output=$output
4090ee3138f1Smrg	  output_la=`$echo "X$output" | $Xsed -e "$basename"`
4091ee3138f1Smrg
4092ee3138f1Smrg	  # Clear the reloadable object creation command queue and
4093ee3138f1Smrg	  # initialize k to one.
4094ee3138f1Smrg	  test_cmds=
4095ee3138f1Smrg	  concat_cmds=
4096ee3138f1Smrg	  objlist=
4097ee3138f1Smrg	  delfiles=
4098ee3138f1Smrg	  last_robj=
4099ee3138f1Smrg	  k=1
4100ee3138f1Smrg	  output=$output_objdir/$output_la-${k}.$objext
4101ee3138f1Smrg	  # Loop over the list of objects to be linked.
4102ee3138f1Smrg	  for obj in $save_libobjs
4103ee3138f1Smrg	  do
4104ee3138f1Smrg	    eval test_cmds=\"$reload_cmds $objlist $last_robj\"
4105ee3138f1Smrg	    if test "X$objlist" = X ||
4106ee3138f1Smrg	       { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
4107ee3138f1Smrg		 test "$len" -le "$max_cmd_len"; }; then
4108ee3138f1Smrg	      objlist="$objlist $obj"
4109ee3138f1Smrg	    else
4110ee3138f1Smrg	      # The command $test_cmds is almost too long, add a
4111ee3138f1Smrg	      # command to the queue.
4112ee3138f1Smrg	      if test "$k" -eq 1 ; then
4113ee3138f1Smrg		# The first file doesn't have a previous command to add.
4114ee3138f1Smrg		eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
4115ee3138f1Smrg	      else
4116ee3138f1Smrg		# All subsequent reloadable object files will link in
4117ee3138f1Smrg		# the last one created.
4118ee3138f1Smrg		eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
4119ee3138f1Smrg	      fi
4120ee3138f1Smrg	      last_robj=$output_objdir/$output_la-${k}.$objext
4121ee3138f1Smrg	      k=`expr $k + 1`
4122ee3138f1Smrg	      output=$output_objdir/$output_la-${k}.$objext
4123ee3138f1Smrg	      objlist=$obj
4124ee3138f1Smrg	      len=1
4125ee3138f1Smrg	    fi
4126ee3138f1Smrg	  done
4127ee3138f1Smrg	  # Handle the remaining objects by creating one last
4128ee3138f1Smrg	  # reloadable object file.  All subsequent reloadable object
4129ee3138f1Smrg	  # files will link in the last one created.
4130ee3138f1Smrg	  test -z "$concat_cmds" || concat_cmds=$concat_cmds~
4131ee3138f1Smrg	  eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
4132ee3138f1Smrg
4133ee3138f1Smrg	  if ${skipped_export-false}; then
4134ee3138f1Smrg	    $show "generating symbol list for \`$libname.la'"
4135ee3138f1Smrg	    export_symbols="$output_objdir/$libname.exp"
4136ee3138f1Smrg	    $run $rm $export_symbols
4137ee3138f1Smrg	    libobjs=$output
4138ee3138f1Smrg	    # Append the command to create the export file.
4139ee3138f1Smrg	    eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
4140ee3138f1Smrg          fi
4141ee3138f1Smrg
4142ee3138f1Smrg	  # Set up a command to remove the reloadable object files
4143ee3138f1Smrg	  # after they are used.
4144ee3138f1Smrg	  i=0
4145ee3138f1Smrg	  while test "$i" -lt "$k"
4146ee3138f1Smrg	  do
4147ee3138f1Smrg	    i=`expr $i + 1`
4148ee3138f1Smrg	    delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
4149ee3138f1Smrg	  done
4150ee3138f1Smrg
4151ee3138f1Smrg	  $echo "creating a temporary reloadable object file: $output"
4152ee3138f1Smrg
4153ee3138f1Smrg	  # Loop through the commands generated above and execute them.
4154ee3138f1Smrg	  save_ifs="$IFS"; IFS='~'
4155ee3138f1Smrg	  for cmd in $concat_cmds; do
4156ee3138f1Smrg	    IFS="$save_ifs"
4157ee3138f1Smrg	    $show "$cmd"
4158ee3138f1Smrg	    $run eval "$cmd" || exit $?
4159ee3138f1Smrg	  done
4160ee3138f1Smrg	  IFS="$save_ifs"
4161ee3138f1Smrg
4162ee3138f1Smrg	  libobjs=$output
4163ee3138f1Smrg	  # Restore the value of output.
4164ee3138f1Smrg	  output=$save_output
4165ee3138f1Smrg
4166ee3138f1Smrg	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
4167ee3138f1Smrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
4168ee3138f1Smrg	  fi
4169ee3138f1Smrg	  # Expand the library linking commands again to reset the
4170ee3138f1Smrg	  # value of $libobjs for piecewise linking.
4171ee3138f1Smrg
4172ee3138f1Smrg	  # Do each of the archive commands.
4173ee3138f1Smrg	  if test "$module" = yes && test -n "$module_cmds" ; then
4174ee3138f1Smrg	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
4175ee3138f1Smrg	      cmds=$module_expsym_cmds
4176ee3138f1Smrg	    else
4177ee3138f1Smrg	      cmds=$module_cmds
4178ee3138f1Smrg	    fi
4179ee3138f1Smrg	  else
4180ee3138f1Smrg	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
4181ee3138f1Smrg	    cmds=$archive_expsym_cmds
4182ee3138f1Smrg	  else
4183ee3138f1Smrg	    cmds=$archive_cmds
4184ee3138f1Smrg	    fi
4185ee3138f1Smrg	  fi
4186ee3138f1Smrg
4187ee3138f1Smrg	  # Append the command to remove the reloadable object files
4188ee3138f1Smrg	  # to the just-reset $cmds.
4189ee3138f1Smrg	  eval cmds=\"\$cmds~\$rm $delfiles\"
4190ee3138f1Smrg	fi
4191ee3138f1Smrg	save_ifs="$IFS"; IFS='~'
4192ee3138f1Smrg	for cmd in $cmds; do
4193ee3138f1Smrg	  IFS="$save_ifs"
4194ee3138f1Smrg	  eval cmd=\"$cmd\"
4195ee3138f1Smrg	  $show "$cmd"
4196ee3138f1Smrg	  $run eval "$cmd" || {
4197ee3138f1Smrg	    lt_exit=$?
4198ee3138f1Smrg
4199ee3138f1Smrg	    # Restore the uninstalled library and exit
4200ee3138f1Smrg	    if test "$mode" = relink; then
4201ee3138f1Smrg	      $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
4202ee3138f1Smrg	    fi
4203ee3138f1Smrg
4204ee3138f1Smrg	    exit $lt_exit
4205ee3138f1Smrg	  }
4206ee3138f1Smrg	done
4207ee3138f1Smrg	IFS="$save_ifs"
4208ee3138f1Smrg
4209ee3138f1Smrg	# Restore the uninstalled library and exit
4210ee3138f1Smrg	if test "$mode" = relink; then
4211ee3138f1Smrg	  $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
4212ee3138f1Smrg
4213ee3138f1Smrg	  if test -n "$convenience"; then
4214ee3138f1Smrg	    if test -z "$whole_archive_flag_spec"; then
4215ee3138f1Smrg	      $show "${rm}r $gentop"
4216ee3138f1Smrg	      $run ${rm}r "$gentop"
4217ee3138f1Smrg	    fi
4218ee3138f1Smrg	  fi
4219ee3138f1Smrg
4220ee3138f1Smrg	  exit $EXIT_SUCCESS
4221ee3138f1Smrg	fi
4222ee3138f1Smrg
4223ee3138f1Smrg	# Create links to the real library.
4224ee3138f1Smrg	for linkname in $linknames; do
4225ee3138f1Smrg	  if test "$realname" != "$linkname"; then
4226ee3138f1Smrg	    $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
4227ee3138f1Smrg	    $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
4228ee3138f1Smrg	  fi
4229ee3138f1Smrg	done
4230ee3138f1Smrg
4231ee3138f1Smrg	# If -module or -export-dynamic was specified, set the dlname.
4232ee3138f1Smrg	if test "$module" = yes || test "$export_dynamic" = yes; then
4233ee3138f1Smrg	  # On all known operating systems, these are identical.
4234ee3138f1Smrg	  dlname="$soname"
4235ee3138f1Smrg	fi
4236ee3138f1Smrg      fi
4237ee3138f1Smrg      ;;
4238ee3138f1Smrg
4239ee3138f1Smrg    obj)
4240ee3138f1Smrg      if test -n "$deplibs"; then
4241ee3138f1Smrg	$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
4242ee3138f1Smrg      fi
4243ee3138f1Smrg
4244ee3138f1Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
4245ee3138f1Smrg	$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
4246ee3138f1Smrg      fi
4247ee3138f1Smrg
4248ee3138f1Smrg      if test -n "$rpath"; then
4249ee3138f1Smrg	$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
4250ee3138f1Smrg      fi
4251ee3138f1Smrg
4252ee3138f1Smrg      if test -n "$xrpath"; then
4253ee3138f1Smrg	$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
4254ee3138f1Smrg      fi
4255ee3138f1Smrg
4256ee3138f1Smrg      if test -n "$vinfo"; then
4257ee3138f1Smrg	$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
4258ee3138f1Smrg      fi
4259ee3138f1Smrg
4260ee3138f1Smrg      if test -n "$release"; then
4261ee3138f1Smrg	$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
4262ee3138f1Smrg      fi
4263ee3138f1Smrg
4264ee3138f1Smrg      case $output in
4265ee3138f1Smrg      *.lo)
4266ee3138f1Smrg	if test -n "$objs$old_deplibs"; then
4267ee3138f1Smrg	  $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
4268ee3138f1Smrg	  exit $EXIT_FAILURE
4269ee3138f1Smrg	fi
4270ee3138f1Smrg	libobj="$output"
4271ee3138f1Smrg	obj=`$echo "X$output" | $Xsed -e "$lo2o"`
4272ee3138f1Smrg	;;
4273ee3138f1Smrg      *)
4274ee3138f1Smrg	libobj=
4275ee3138f1Smrg	obj="$output"
4276ee3138f1Smrg	;;
4277ee3138f1Smrg      esac
4278ee3138f1Smrg
4279ee3138f1Smrg      # Delete the old objects.
4280ee3138f1Smrg      $run $rm $obj $libobj
4281ee3138f1Smrg
4282ee3138f1Smrg      # Objects from convenience libraries.  This assumes
4283ee3138f1Smrg      # single-version convenience libraries.  Whenever we create
4284ee3138f1Smrg      # different ones for PIC/non-PIC, this we'll have to duplicate
4285ee3138f1Smrg      # the extraction.
4286ee3138f1Smrg      reload_conv_objs=
4287ee3138f1Smrg      gentop=
4288ee3138f1Smrg      # reload_cmds runs $LD directly, so let us get rid of
4289ee3138f1Smrg      # -Wl from whole_archive_flag_spec and hope we can get by with
4290ee3138f1Smrg      # turning comma into space..
4291ee3138f1Smrg      wl=
4292ee3138f1Smrg
4293ee3138f1Smrg      if test -n "$convenience"; then
4294ee3138f1Smrg	if test -n "$whole_archive_flag_spec"; then
4295ee3138f1Smrg	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
4296ee3138f1Smrg	  reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
4297ee3138f1Smrg	else
4298ee3138f1Smrg	  gentop="$output_objdir/${obj}x"
4299ee3138f1Smrg	  generated="$generated $gentop"
4300ee3138f1Smrg
4301ee3138f1Smrg	  func_extract_archives $gentop $convenience
4302ee3138f1Smrg	  reload_conv_objs="$reload_objs $func_extract_archives_result"
4303ee3138f1Smrg	fi
4304ee3138f1Smrg      fi
4305ee3138f1Smrg
4306ee3138f1Smrg      # Create the old-style object.
4307ee3138f1Smrg      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
4308ee3138f1Smrg
4309ee3138f1Smrg      output="$obj"
4310ee3138f1Smrg      cmds=$reload_cmds
4311ee3138f1Smrg      save_ifs="$IFS"; IFS='~'
4312ee3138f1Smrg      for cmd in $cmds; do
4313ee3138f1Smrg	IFS="$save_ifs"
4314ee3138f1Smrg	eval cmd=\"$cmd\"
4315ee3138f1Smrg	$show "$cmd"
4316ee3138f1Smrg	$run eval "$cmd" || exit $?
4317ee3138f1Smrg      done
4318ee3138f1Smrg      IFS="$save_ifs"
4319ee3138f1Smrg
4320ee3138f1Smrg      # Exit if we aren't doing a library object file.
4321ee3138f1Smrg      if test -z "$libobj"; then
4322ee3138f1Smrg	if test -n "$gentop"; then
4323ee3138f1Smrg	  $show "${rm}r $gentop"
4324ee3138f1Smrg	  $run ${rm}r $gentop
4325ee3138f1Smrg	fi
4326ee3138f1Smrg
4327ee3138f1Smrg	exit $EXIT_SUCCESS
4328ee3138f1Smrg      fi
4329ee3138f1Smrg
4330ee3138f1Smrg      if test "$build_libtool_libs" != yes; then
4331ee3138f1Smrg	if test -n "$gentop"; then
4332ee3138f1Smrg	  $show "${rm}r $gentop"
4333ee3138f1Smrg	  $run ${rm}r $gentop
4334ee3138f1Smrg	fi
4335ee3138f1Smrg
4336ee3138f1Smrg	# Create an invalid libtool object if no PIC, so that we don't
4337ee3138f1Smrg	# accidentally link it into a program.
4338ee3138f1Smrg	# $show "echo timestamp > $libobj"
4339ee3138f1Smrg	# $run eval "echo timestamp > $libobj" || exit $?
4340ee3138f1Smrg	exit $EXIT_SUCCESS
4341ee3138f1Smrg      fi
4342ee3138f1Smrg
4343ee3138f1Smrg      if test -n "$pic_flag" || test "$pic_mode" != default; then
4344ee3138f1Smrg	# Only do commands if we really have different PIC objects.
4345ee3138f1Smrg	reload_objs="$libobjs $reload_conv_objs"
4346ee3138f1Smrg	output="$libobj"
4347ee3138f1Smrg	cmds=$reload_cmds
4348ee3138f1Smrg	save_ifs="$IFS"; IFS='~'
4349ee3138f1Smrg	for cmd in $cmds; do
4350ee3138f1Smrg	  IFS="$save_ifs"
4351ee3138f1Smrg	  eval cmd=\"$cmd\"
4352ee3138f1Smrg	  $show "$cmd"
4353ee3138f1Smrg	  $run eval "$cmd" || exit $?
4354ee3138f1Smrg	done
4355ee3138f1Smrg	IFS="$save_ifs"
4356ee3138f1Smrg      fi
4357ee3138f1Smrg
4358ee3138f1Smrg      if test -n "$gentop"; then
4359ee3138f1Smrg	$show "${rm}r $gentop"
4360ee3138f1Smrg	$run ${rm}r $gentop
4361ee3138f1Smrg      fi
4362ee3138f1Smrg
4363ee3138f1Smrg      exit $EXIT_SUCCESS
4364ee3138f1Smrg      ;;
4365ee3138f1Smrg
4366ee3138f1Smrg    prog)
4367ee3138f1Smrg      case $host in
4368ee3138f1Smrg	*cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
4369ee3138f1Smrg      esac
4370ee3138f1Smrg      if test -n "$vinfo"; then
4371ee3138f1Smrg	$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
4372ee3138f1Smrg      fi
4373ee3138f1Smrg
4374ee3138f1Smrg      if test -n "$release"; then
4375ee3138f1Smrg	$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
4376ee3138f1Smrg      fi
4377ee3138f1Smrg
4378ee3138f1Smrg      if test "$preload" = yes; then
4379ee3138f1Smrg	if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
4380ee3138f1Smrg	   test "$dlopen_self_static" = unknown; then
4381ee3138f1Smrg	  $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
4382ee3138f1Smrg	fi
4383ee3138f1Smrg      fi
4384ee3138f1Smrg
4385ee3138f1Smrg      case $host in
4386ee3138f1Smrg      *-*-rhapsody* | *-*-darwin1.[012])
4387ee3138f1Smrg	# On Rhapsody replace the C library is the System framework
4388ee3138f1Smrg	compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
4389ee3138f1Smrg	finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
4390ee3138f1Smrg	;;
4391ee3138f1Smrg      esac
4392ee3138f1Smrg
4393ee3138f1Smrg      case $host in
4394ee3138f1Smrg      *darwin*)
4395ee3138f1Smrg        # Don't allow lazy linking, it breaks C++ global constructors
4396ee3138f1Smrg        if test "$tagname" = CXX ; then
4397ee3138f1Smrg        compile_command="$compile_command ${wl}-bind_at_load"
4398ee3138f1Smrg        finalize_command="$finalize_command ${wl}-bind_at_load"
4399ee3138f1Smrg        fi
4400ee3138f1Smrg        ;;
4401ee3138f1Smrg      esac
4402ee3138f1Smrg
4403ee3138f1Smrg
4404ee3138f1Smrg      # move library search paths that coincide with paths to not yet
4405ee3138f1Smrg      # installed libraries to the beginning of the library search list
4406ee3138f1Smrg      new_libs=
4407ee3138f1Smrg      for path in $notinst_path; do
4408ee3138f1Smrg	case " $new_libs " in
4409ee3138f1Smrg	*" -L$path/$objdir "*) ;;
4410ee3138f1Smrg	*)
4411ee3138f1Smrg	  case " $compile_deplibs " in
4412ee3138f1Smrg	  *" -L$path/$objdir "*)
4413ee3138f1Smrg	    new_libs="$new_libs -L$path/$objdir" ;;
4414ee3138f1Smrg	  esac
4415ee3138f1Smrg	  ;;
4416ee3138f1Smrg	esac
4417ee3138f1Smrg      done
4418ee3138f1Smrg      for deplib in $compile_deplibs; do
4419ee3138f1Smrg	case $deplib in
4420ee3138f1Smrg	-L*)
4421ee3138f1Smrg	  case " $new_libs " in
4422ee3138f1Smrg	  *" $deplib "*) ;;
4423ee3138f1Smrg	  *) new_libs="$new_libs $deplib" ;;
4424ee3138f1Smrg	  esac
4425ee3138f1Smrg	  ;;
4426ee3138f1Smrg	*) new_libs="$new_libs $deplib" ;;
4427ee3138f1Smrg	esac
4428ee3138f1Smrg      done
4429ee3138f1Smrg      compile_deplibs="$new_libs"
4430ee3138f1Smrg
4431ee3138f1Smrg
4432ee3138f1Smrg      compile_command="$compile_command $compile_deplibs"
4433ee3138f1Smrg      finalize_command="$finalize_command $finalize_deplibs"
4434ee3138f1Smrg
4435ee3138f1Smrg      if test -n "$rpath$xrpath"; then
4436ee3138f1Smrg	# If the user specified any rpath flags, then add them.
4437ee3138f1Smrg	for libdir in $rpath $xrpath; do
4438ee3138f1Smrg	  # This is the magic to use -rpath.
4439ee3138f1Smrg	  case "$finalize_rpath " in
4440ee3138f1Smrg	  *" $libdir "*) ;;
4441ee3138f1Smrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
4442ee3138f1Smrg	  esac
4443ee3138f1Smrg	done
4444ee3138f1Smrg      fi
4445ee3138f1Smrg
4446ee3138f1Smrg      # Now hardcode the library paths
4447ee3138f1Smrg      rpath=
4448ee3138f1Smrg      hardcode_libdirs=
4449ee3138f1Smrg      for libdir in $compile_rpath $finalize_rpath; do
4450ee3138f1Smrg	if test -n "$hardcode_libdir_flag_spec"; then
4451ee3138f1Smrg	  if test -n "$hardcode_libdir_separator"; then
4452ee3138f1Smrg	    if test -z "$hardcode_libdirs"; then
4453ee3138f1Smrg	      hardcode_libdirs="$libdir"
4454ee3138f1Smrg	    else
4455ee3138f1Smrg	      # Just accumulate the unique libdirs.
4456ee3138f1Smrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4457ee3138f1Smrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4458ee3138f1Smrg		;;
4459ee3138f1Smrg	      *)
4460ee3138f1Smrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4461ee3138f1Smrg		;;
4462ee3138f1Smrg	      esac
4463ee3138f1Smrg	    fi
4464ee3138f1Smrg	  else
4465ee3138f1Smrg	    eval flag=\"$hardcode_libdir_flag_spec\"
4466ee3138f1Smrg	    rpath="$rpath $flag"
4467ee3138f1Smrg	  fi
4468ee3138f1Smrg	elif test -n "$runpath_var"; then
4469ee3138f1Smrg	  case "$perm_rpath " in
4470ee3138f1Smrg	  *" $libdir "*) ;;
4471ee3138f1Smrg	  *) perm_rpath="$perm_rpath $libdir" ;;
4472ee3138f1Smrg	  esac
4473ee3138f1Smrg	fi
4474ee3138f1Smrg	case $host in
4475ee3138f1Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
4476ee3138f1Smrg	  testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
4477ee3138f1Smrg	  case :$dllsearchpath: in
4478ee3138f1Smrg	  *":$libdir:"*) ;;
4479ee3138f1Smrg	  *) dllsearchpath="$dllsearchpath:$libdir";;
4480ee3138f1Smrg	  esac
4481ee3138f1Smrg	  case :$dllsearchpath: in
4482ee3138f1Smrg	  *":$testbindir:"*) ;;
4483ee3138f1Smrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
4484ee3138f1Smrg	  esac
4485ee3138f1Smrg	  ;;
4486ee3138f1Smrg	esac
4487ee3138f1Smrg      done
4488ee3138f1Smrg      # Substitute the hardcoded libdirs into the rpath.
4489ee3138f1Smrg      if test -n "$hardcode_libdir_separator" &&
4490ee3138f1Smrg	 test -n "$hardcode_libdirs"; then
4491ee3138f1Smrg	libdir="$hardcode_libdirs"
4492ee3138f1Smrg	eval rpath=\" $hardcode_libdir_flag_spec\"
4493ee3138f1Smrg      fi
4494ee3138f1Smrg      compile_rpath="$rpath"
4495ee3138f1Smrg
4496ee3138f1Smrg      rpath=
4497ee3138f1Smrg      hardcode_libdirs=
4498ee3138f1Smrg      for libdir in $finalize_rpath; do
4499ee3138f1Smrg	if test -n "$hardcode_libdir_flag_spec"; then
4500ee3138f1Smrg	  if test -n "$hardcode_libdir_separator"; then
4501ee3138f1Smrg	    if test -z "$hardcode_libdirs"; then
4502ee3138f1Smrg	      hardcode_libdirs="$libdir"
4503ee3138f1Smrg	    else
4504ee3138f1Smrg	      # Just accumulate the unique libdirs.
4505ee3138f1Smrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4506ee3138f1Smrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4507ee3138f1Smrg		;;
4508ee3138f1Smrg	      *)
4509ee3138f1Smrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4510ee3138f1Smrg		;;
4511ee3138f1Smrg	      esac
4512ee3138f1Smrg	    fi
4513ee3138f1Smrg	  else
4514ee3138f1Smrg	    eval flag=\"$hardcode_libdir_flag_spec\"
4515ee3138f1Smrg	    rpath="$rpath $flag"
4516ee3138f1Smrg	  fi
4517ee3138f1Smrg	elif test -n "$runpath_var"; then
4518ee3138f1Smrg	  case "$finalize_perm_rpath " in
4519ee3138f1Smrg	  *" $libdir "*) ;;
4520ee3138f1Smrg	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
4521ee3138f1Smrg	  esac
4522ee3138f1Smrg	fi
4523ee3138f1Smrg      done
4524ee3138f1Smrg      # Substitute the hardcoded libdirs into the rpath.
4525ee3138f1Smrg      if test -n "$hardcode_libdir_separator" &&
4526ee3138f1Smrg	 test -n "$hardcode_libdirs"; then
4527ee3138f1Smrg	libdir="$hardcode_libdirs"
4528ee3138f1Smrg	eval rpath=\" $hardcode_libdir_flag_spec\"
4529ee3138f1Smrg      fi
4530ee3138f1Smrg      finalize_rpath="$rpath"
4531ee3138f1Smrg
4532ee3138f1Smrg      if test -n "$libobjs" && test "$build_old_libs" = yes; then
4533ee3138f1Smrg	# Transform all the library objects into standard objects.
4534ee3138f1Smrg	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4535ee3138f1Smrg	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4536ee3138f1Smrg      fi
4537ee3138f1Smrg
4538ee3138f1Smrg      dlsyms=
4539ee3138f1Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
4540ee3138f1Smrg	if test -n "$NM" && test -n "$global_symbol_pipe"; then
4541ee3138f1Smrg	  dlsyms="${outputname}S.c"
4542ee3138f1Smrg	else
4543ee3138f1Smrg	  $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
4544ee3138f1Smrg	fi
4545ee3138f1Smrg      fi
4546ee3138f1Smrg
4547ee3138f1Smrg      if test -n "$dlsyms"; then
4548ee3138f1Smrg	case $dlsyms in
4549ee3138f1Smrg	"") ;;
4550ee3138f1Smrg	*.c)
4551ee3138f1Smrg	  # Discover the nlist of each of the dlfiles.
4552ee3138f1Smrg	  nlist="$output_objdir/${outputname}.nm"
4553ee3138f1Smrg
4554ee3138f1Smrg	  $show "$rm $nlist ${nlist}S ${nlist}T"
4555ee3138f1Smrg	  $run $rm "$nlist" "${nlist}S" "${nlist}T"
4556ee3138f1Smrg
4557ee3138f1Smrg	  # Parse the name list into a source file.
4558ee3138f1Smrg	  $show "creating $output_objdir/$dlsyms"
4559ee3138f1Smrg
4560ee3138f1Smrg	  test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
4561ee3138f1Smrg/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
4562ee3138f1Smrg/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
4563ee3138f1Smrg
4564ee3138f1Smrg#ifdef __cplusplus
4565ee3138f1Smrgextern \"C\" {
4566ee3138f1Smrg#endif
4567ee3138f1Smrg
4568ee3138f1Smrg/* Prevent the only kind of declaration conflicts we can make. */
4569ee3138f1Smrg#define lt_preloaded_symbols some_other_symbol
4570ee3138f1Smrg
4571ee3138f1Smrg/* External symbol declarations for the compiler. */\
4572ee3138f1Smrg"
4573ee3138f1Smrg
4574ee3138f1Smrg	  if test "$dlself" = yes; then
4575ee3138f1Smrg	    $show "generating symbol list for \`$output'"
4576ee3138f1Smrg
4577ee3138f1Smrg	    test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
4578ee3138f1Smrg
4579ee3138f1Smrg	    # Add our own program objects to the symbol list.
4580ee3138f1Smrg	    progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4581ee3138f1Smrg	    for arg in $progfiles; do
4582ee3138f1Smrg	      $show "extracting global C symbols from \`$arg'"
4583ee3138f1Smrg	      $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4584ee3138f1Smrg	    done
4585ee3138f1Smrg
4586ee3138f1Smrg	    if test -n "$exclude_expsyms"; then
4587ee3138f1Smrg	      $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
4588ee3138f1Smrg	      $run eval '$mv "$nlist"T "$nlist"'
4589ee3138f1Smrg	    fi
4590ee3138f1Smrg
4591ee3138f1Smrg	    if test -n "$export_symbols_regex"; then
4592ee3138f1Smrg	      $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
4593ee3138f1Smrg	      $run eval '$mv "$nlist"T "$nlist"'
4594ee3138f1Smrg	    fi
4595ee3138f1Smrg
4596ee3138f1Smrg	    # Prepare the list of exported symbols
4597ee3138f1Smrg	    if test -z "$export_symbols"; then
4598ee3138f1Smrg	      export_symbols="$output_objdir/$outputname.exp"
4599ee3138f1Smrg	      $run $rm $export_symbols
4600ee3138f1Smrg	      $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
4601ee3138f1Smrg              case $host in
4602ee3138f1Smrg              *cygwin* | *mingw* )
4603ee3138f1Smrg	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4604ee3138f1Smrg		$run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
4605ee3138f1Smrg                ;;
4606ee3138f1Smrg              esac
4607ee3138f1Smrg	    else
4608ee3138f1Smrg	      $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
4609ee3138f1Smrg	      $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
4610ee3138f1Smrg	      $run eval 'mv "$nlist"T "$nlist"'
4611ee3138f1Smrg              case $host in
4612ee3138f1Smrg              *cygwin* | *mingw* )
4613ee3138f1Smrg	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4614ee3138f1Smrg		$run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
4615ee3138f1Smrg                ;;
4616ee3138f1Smrg              esac
4617ee3138f1Smrg	    fi
4618ee3138f1Smrg	  fi
4619ee3138f1Smrg
4620ee3138f1Smrg	  for arg in $dlprefiles; do
4621ee3138f1Smrg	    $show "extracting global C symbols from \`$arg'"
4622ee3138f1Smrg	    name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
4623ee3138f1Smrg	    $run eval '$echo ": $name " >> "$nlist"'
4624ee3138f1Smrg	    $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4625ee3138f1Smrg	  done
4626ee3138f1Smrg
4627ee3138f1Smrg	  if test -z "$run"; then
4628ee3138f1Smrg	    # Make sure we have at least an empty file.
4629ee3138f1Smrg	    test -f "$nlist" || : > "$nlist"
4630ee3138f1Smrg
4631ee3138f1Smrg	    if test -n "$exclude_expsyms"; then
4632ee3138f1Smrg	      $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
4633ee3138f1Smrg	      $mv "$nlist"T "$nlist"
4634ee3138f1Smrg	    fi
4635ee3138f1Smrg
4636ee3138f1Smrg	    # Try sorting and uniquifying the output.
4637ee3138f1Smrg	    if grep -v "^: " < "$nlist" |
4638ee3138f1Smrg		if sort -k 3 </dev/null >/dev/null 2>&1; then
4639ee3138f1Smrg		  sort -k 3
4640ee3138f1Smrg		else
4641ee3138f1Smrg		  sort +2
4642ee3138f1Smrg		fi |
4643ee3138f1Smrg		uniq > "$nlist"S; then
4644ee3138f1Smrg	      :
4645ee3138f1Smrg	    else
4646ee3138f1Smrg	      grep -v "^: " < "$nlist" > "$nlist"S
4647ee3138f1Smrg	    fi
4648ee3138f1Smrg
4649ee3138f1Smrg	    if test -f "$nlist"S; then
4650ee3138f1Smrg	      eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
4651ee3138f1Smrg	    else
4652ee3138f1Smrg	      $echo '/* NONE */' >> "$output_objdir/$dlsyms"
4653ee3138f1Smrg	    fi
4654ee3138f1Smrg
4655ee3138f1Smrg	    $echo >> "$output_objdir/$dlsyms" "\
4656ee3138f1Smrg
4657ee3138f1Smrg#undef lt_preloaded_symbols
4658ee3138f1Smrg
4659ee3138f1Smrg#if defined (__STDC__) && __STDC__
4660ee3138f1Smrg# define lt_ptr void *
4661ee3138f1Smrg#else
4662ee3138f1Smrg# define lt_ptr char *
4663ee3138f1Smrg# define const
4664ee3138f1Smrg#endif
4665ee3138f1Smrg
4666ee3138f1Smrg/* The mapping between symbol names and symbols. */
4667ee3138f1Smrg"
4668ee3138f1Smrg
4669ee3138f1Smrg	    case $host in
4670ee3138f1Smrg	    *cygwin* | *mingw* )
4671ee3138f1Smrg	  $echo >> "$output_objdir/$dlsyms" "\
4672ee3138f1Smrg/* DATA imports from DLLs on WIN32 can't be const, because
4673ee3138f1Smrg   runtime relocations are performed -- see ld's documentation
4674ee3138f1Smrg   on pseudo-relocs */
4675ee3138f1Smrgstruct {
4676ee3138f1Smrg"
4677ee3138f1Smrg	      ;;
4678ee3138f1Smrg	    * )
4679ee3138f1Smrg	  $echo >> "$output_objdir/$dlsyms" "\
4680ee3138f1Smrgconst struct {
4681ee3138f1Smrg"
4682ee3138f1Smrg	      ;;
4683ee3138f1Smrg	    esac
4684ee3138f1Smrg
4685ee3138f1Smrg
4686ee3138f1Smrg	  $echo >> "$output_objdir/$dlsyms" "\
4687ee3138f1Smrg  const char *name;
4688ee3138f1Smrg  lt_ptr address;
4689ee3138f1Smrg}
4690ee3138f1Smrglt_preloaded_symbols[] =
4691ee3138f1Smrg{\
4692ee3138f1Smrg"
4693ee3138f1Smrg
4694ee3138f1Smrg	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
4695ee3138f1Smrg
4696ee3138f1Smrg	    $echo >> "$output_objdir/$dlsyms" "\
4697ee3138f1Smrg  {0, (lt_ptr) 0}
4698ee3138f1Smrg};
4699ee3138f1Smrg
4700ee3138f1Smrg/* This works around a problem in FreeBSD linker */
4701ee3138f1Smrg#ifdef FREEBSD_WORKAROUND
4702ee3138f1Smrgstatic const void *lt_preloaded_setup() {
4703ee3138f1Smrg  return lt_preloaded_symbols;
4704ee3138f1Smrg}
4705ee3138f1Smrg#endif
4706ee3138f1Smrg
4707ee3138f1Smrg#ifdef __cplusplus
4708ee3138f1Smrg}
4709ee3138f1Smrg#endif\
4710ee3138f1Smrg"
4711ee3138f1Smrg	  fi
4712ee3138f1Smrg
4713ee3138f1Smrg	  pic_flag_for_symtable=
4714ee3138f1Smrg	  case $host in
4715ee3138f1Smrg	  # compiling the symbol table file with pic_flag works around
4716ee3138f1Smrg	  # a FreeBSD bug that causes programs to crash when -lm is
4717ee3138f1Smrg	  # linked before any other PIC object.  But we must not use
4718ee3138f1Smrg	  # pic_flag when linking with -static.  The problem exists in
4719ee3138f1Smrg	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
4720ee3138f1Smrg	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
4721ee3138f1Smrg	    case "$compile_command " in
4722ee3138f1Smrg	    *" -static "*) ;;
4723ee3138f1Smrg	    *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
4724ee3138f1Smrg	    esac;;
4725ee3138f1Smrg	  *-*-hpux*)
4726ee3138f1Smrg	    case "$compile_command " in
4727ee3138f1Smrg	    *" -static "*) ;;
4728ee3138f1Smrg	    *) pic_flag_for_symtable=" $pic_flag";;
4729ee3138f1Smrg	    esac
4730ee3138f1Smrg	  esac
4731ee3138f1Smrg
4732ee3138f1Smrg	  # Now compile the dynamic symbol file.
4733ee3138f1Smrg	  $show "(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
4734ee3138f1Smrg	  $run eval '(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
4735ee3138f1Smrg
4736ee3138f1Smrg	  # Clean up the generated files.
4737ee3138f1Smrg	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
4738ee3138f1Smrg	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
4739ee3138f1Smrg
4740ee3138f1Smrg	  # Transform the symbol file into the correct name.
4741ee3138f1Smrg          case $host in
4742ee3138f1Smrg          *cygwin* | *mingw* )
4743ee3138f1Smrg            if test -f "$output_objdir/${outputname}.def" ; then
4744ee3138f1Smrg              compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
4745ee3138f1Smrg              finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
4746ee3138f1Smrg            else
4747ee3138f1Smrg              compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4748ee3138f1Smrg              finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4749ee3138f1Smrg             fi
4750ee3138f1Smrg            ;;
4751ee3138f1Smrg          * )
4752ee3138f1Smrg            compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4753ee3138f1Smrg            finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
4754ee3138f1Smrg            ;;
4755ee3138f1Smrg          esac
4756ee3138f1Smrg	  ;;
4757ee3138f1Smrg	*)
4758ee3138f1Smrg	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
4759ee3138f1Smrg	  exit $EXIT_FAILURE
4760ee3138f1Smrg	  ;;
4761ee3138f1Smrg	esac
4762ee3138f1Smrg      else
4763ee3138f1Smrg	# We keep going just in case the user didn't refer to
4764ee3138f1Smrg	# lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
4765ee3138f1Smrg	# really was required.
4766ee3138f1Smrg
4767ee3138f1Smrg	# Nullify the symbol file.
4768ee3138f1Smrg	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
4769ee3138f1Smrg	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
4770ee3138f1Smrg      fi
4771ee3138f1Smrg
4772ee3138f1Smrg      if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
4773ee3138f1Smrg	# Replace the output file specification.
4774ee3138f1Smrg	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP`
4775ee3138f1Smrg	link_command="$compile_command$compile_rpath"
4776ee3138f1Smrg
4777ee3138f1Smrg	# We have no uninstalled library dependencies, so finalize right now.
4778ee3138f1Smrg	$show "$link_command"
4779ee3138f1Smrg	$run eval "$link_command"
4780ee3138f1Smrg	exit_status=$?
4781ee3138f1Smrg
4782ee3138f1Smrg	# Delete the generated files.
4783ee3138f1Smrg	if test -n "$dlsyms"; then
4784ee3138f1Smrg	  $show "$rm $output_objdir/${outputname}S.${objext}"
4785ee3138f1Smrg	  $run $rm "$output_objdir/${outputname}S.${objext}"
4786ee3138f1Smrg	fi
4787ee3138f1Smrg
4788ee3138f1Smrg	exit $exit_status
4789ee3138f1Smrg      fi
4790ee3138f1Smrg
4791ee3138f1Smrg      if test -n "$shlibpath_var"; then
4792ee3138f1Smrg	# We should set the shlibpath_var
4793ee3138f1Smrg	rpath=
4794ee3138f1Smrg	for dir in $temp_rpath; do
4795ee3138f1Smrg	  case $dir in
4796ee3138f1Smrg	  [\\/]* | [A-Za-z]:[\\/]*)
4797ee3138f1Smrg	    # Absolute path.
4798ee3138f1Smrg	    rpath="$rpath$dir:"
4799ee3138f1Smrg	    ;;
4800ee3138f1Smrg	  *)
4801ee3138f1Smrg	    # Relative path: add a thisdir entry.
4802ee3138f1Smrg	    rpath="$rpath\$thisdir/$dir:"
4803ee3138f1Smrg	    ;;
4804ee3138f1Smrg	  esac
4805ee3138f1Smrg	done
4806ee3138f1Smrg	temp_rpath="$rpath"
4807ee3138f1Smrg      fi
4808ee3138f1Smrg
4809ee3138f1Smrg      if test -n "$compile_shlibpath$finalize_shlibpath"; then
4810ee3138f1Smrg	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
4811ee3138f1Smrg      fi
4812ee3138f1Smrg      if test -n "$finalize_shlibpath"; then
4813ee3138f1Smrg	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
4814ee3138f1Smrg      fi
4815ee3138f1Smrg
4816ee3138f1Smrg      compile_var=
4817ee3138f1Smrg      finalize_var=
4818ee3138f1Smrg      if test -n "$runpath_var"; then
4819ee3138f1Smrg	if test -n "$perm_rpath"; then
4820ee3138f1Smrg	  # We should set the runpath_var.
4821ee3138f1Smrg	  rpath=
4822ee3138f1Smrg	  for dir in $perm_rpath; do
4823ee3138f1Smrg	    rpath="$rpath$dir:"
4824ee3138f1Smrg	  done
4825ee3138f1Smrg	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
4826ee3138f1Smrg	fi
4827ee3138f1Smrg	if test -n "$finalize_perm_rpath"; then
4828ee3138f1Smrg	  # We should set the runpath_var.
4829ee3138f1Smrg	  rpath=
4830ee3138f1Smrg	  for dir in $finalize_perm_rpath; do
4831ee3138f1Smrg	    rpath="$rpath$dir:"
4832ee3138f1Smrg	  done
4833ee3138f1Smrg	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
4834ee3138f1Smrg	fi
4835ee3138f1Smrg      fi
4836ee3138f1Smrg
4837ee3138f1Smrg      if test "$no_install" = yes; then
4838ee3138f1Smrg	# We don't need to create a wrapper script.
4839ee3138f1Smrg	link_command="$compile_var$compile_command$compile_rpath"
4840ee3138f1Smrg	# Replace the output file specification.
4841ee3138f1Smrg	link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
4842ee3138f1Smrg	# Delete the old output file.
4843ee3138f1Smrg	$run $rm $output
4844ee3138f1Smrg	# Link the executable and exit
4845ee3138f1Smrg	$show "$link_command"
4846ee3138f1Smrg	$run eval "$link_command" || exit $?
4847ee3138f1Smrg	exit $EXIT_SUCCESS
4848ee3138f1Smrg      fi
4849ee3138f1Smrg
4850ee3138f1Smrg      if test "$hardcode_action" = relink; then
4851ee3138f1Smrg	# Fast installation is not supported
4852ee3138f1Smrg	link_command="$compile_var$compile_command$compile_rpath"
4853ee3138f1Smrg	relink_command="$finalize_var$finalize_command$finalize_rpath"
4854ee3138f1Smrg
4855ee3138f1Smrg	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
4856ee3138f1Smrg	$echo "$modename: \`$output' will be relinked during installation" 1>&2
4857ee3138f1Smrg      else
4858ee3138f1Smrg	if test "$fast_install" != no; then
4859ee3138f1Smrg	  link_command="$finalize_var$compile_command$finalize_rpath"
4860ee3138f1Smrg	  if test "$fast_install" = yes; then
4861ee3138f1Smrg	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP`
4862ee3138f1Smrg	  else
4863ee3138f1Smrg	    # fast_install is set to needless
4864ee3138f1Smrg	    relink_command=
4865ee3138f1Smrg	  fi
4866ee3138f1Smrg	else
4867ee3138f1Smrg	  link_command="$compile_var$compile_command$compile_rpath"
4868ee3138f1Smrg	  relink_command="$finalize_var$finalize_command$finalize_rpath"
4869ee3138f1Smrg	fi
4870ee3138f1Smrg      fi
4871ee3138f1Smrg
4872ee3138f1Smrg      # Replace the output file specification.
4873ee3138f1Smrg      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
4874ee3138f1Smrg
4875ee3138f1Smrg      # Delete the old output files.
4876ee3138f1Smrg      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
4877ee3138f1Smrg
4878ee3138f1Smrg      $show "$link_command"
4879ee3138f1Smrg      $run eval "$link_command" || exit $?
4880ee3138f1Smrg
4881ee3138f1Smrg      # Now create the wrapper script.
4882ee3138f1Smrg      $show "creating $output"
4883ee3138f1Smrg
4884ee3138f1Smrg      # Quote the relink command for shipping.
4885ee3138f1Smrg      if test -n "$relink_command"; then
4886ee3138f1Smrg	# Preserve any variables that may affect compiler behavior
4887ee3138f1Smrg	for var in $variables_saved_for_relink; do
4888ee3138f1Smrg	  if eval test -z \"\${$var+set}\"; then
4889ee3138f1Smrg	    relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
4890ee3138f1Smrg	  elif eval var_value=\$$var; test -z "$var_value"; then
4891ee3138f1Smrg	    relink_command="$var=; export $var; $relink_command"
4892ee3138f1Smrg	  else
4893ee3138f1Smrg	    var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
4894ee3138f1Smrg	    relink_command="$var=\"$var_value\"; export $var; $relink_command"
4895ee3138f1Smrg	  fi
4896ee3138f1Smrg	done
4897ee3138f1Smrg	relink_command="(cd `pwd`; $relink_command)"
4898ee3138f1Smrg	relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
4899ee3138f1Smrg      fi
4900ee3138f1Smrg
4901ee3138f1Smrg      # Quote $echo for shipping.
4902ee3138f1Smrg      if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
4903ee3138f1Smrg	case $progpath in
4904ee3138f1Smrg	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
4905ee3138f1Smrg	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
4906ee3138f1Smrg	esac
4907ee3138f1Smrg	qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
4908ee3138f1Smrg      else
4909ee3138f1Smrg	qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
4910ee3138f1Smrg      fi
4911ee3138f1Smrg
4912ee3138f1Smrg      # Only actually do things if our run command is non-null.
4913ee3138f1Smrg      if test -z "$run"; then
4914ee3138f1Smrg	# win32 will think the script is a binary if it has
4915ee3138f1Smrg	# a .exe suffix, so we strip it off here.
4916ee3138f1Smrg	case $output in
4917ee3138f1Smrg	  *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
4918ee3138f1Smrg	esac
4919ee3138f1Smrg	# test for cygwin because mv fails w/o .exe extensions
4920ee3138f1Smrg	case $host in
4921ee3138f1Smrg	  *cygwin*)
4922ee3138f1Smrg	    exeext=.exe
4923ee3138f1Smrg	    outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
4924ee3138f1Smrg	  *) exeext= ;;
4925ee3138f1Smrg	esac
4926ee3138f1Smrg	case $host in
4927ee3138f1Smrg	  *cygwin* | *mingw* )
4928ee3138f1Smrg            output_name=`basename $output`
4929ee3138f1Smrg            output_path=`dirname $output`
4930ee3138f1Smrg            cwrappersource="$output_path/$objdir/lt-$output_name.c"
4931ee3138f1Smrg            cwrapper="$output_path/$output_name.exe"
4932ee3138f1Smrg            $rm $cwrappersource $cwrapper
4933ee3138f1Smrg            trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
4934ee3138f1Smrg
4935ee3138f1Smrg	    cat > $cwrappersource <<EOF
4936ee3138f1Smrg
4937ee3138f1Smrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
4938ee3138f1Smrg   Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
4939ee3138f1Smrg
4940ee3138f1Smrg   The $output program cannot be directly executed until all the libtool
4941ee3138f1Smrg   libraries that it depends on are installed.
4942ee3138f1Smrg
4943ee3138f1Smrg   This wrapper executable should never be moved out of the build directory.
4944ee3138f1Smrg   If it is, it will not operate correctly.
4945ee3138f1Smrg
4946ee3138f1Smrg   Currently, it simply execs the wrapper *script* "/bin/sh $output",
4947ee3138f1Smrg   but could eventually absorb all of the scripts functionality and
4948ee3138f1Smrg   exec $objdir/$outputname directly.
4949ee3138f1Smrg*/
4950ee3138f1SmrgEOF
4951ee3138f1Smrg	    cat >> $cwrappersource<<"EOF"
4952ee3138f1Smrg#include <stdio.h>
4953ee3138f1Smrg#include <stdlib.h>
4954ee3138f1Smrg#include <unistd.h>
4955ee3138f1Smrg#include <malloc.h>
4956ee3138f1Smrg#include <stdarg.h>
4957ee3138f1Smrg#include <assert.h>
4958ee3138f1Smrg#include <string.h>
4959ee3138f1Smrg#include <ctype.h>
4960ee3138f1Smrg#include <sys/stat.h>
4961ee3138f1Smrg
4962ee3138f1Smrg#if defined(PATH_MAX)
4963ee3138f1Smrg# define LT_PATHMAX PATH_MAX
4964ee3138f1Smrg#elif defined(MAXPATHLEN)
4965ee3138f1Smrg# define LT_PATHMAX MAXPATHLEN
4966ee3138f1Smrg#else
4967ee3138f1Smrg# define LT_PATHMAX 1024
4968ee3138f1Smrg#endif
4969ee3138f1Smrg
4970ee3138f1Smrg#ifndef DIR_SEPARATOR
4971ee3138f1Smrg# define DIR_SEPARATOR '/'
4972ee3138f1Smrg# define PATH_SEPARATOR ':'
4973ee3138f1Smrg#endif
4974ee3138f1Smrg
4975ee3138f1Smrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
4976ee3138f1Smrg  defined (__OS2__)
4977ee3138f1Smrg# define HAVE_DOS_BASED_FILE_SYSTEM
4978ee3138f1Smrg# ifndef DIR_SEPARATOR_2
4979ee3138f1Smrg#  define DIR_SEPARATOR_2 '\\'
4980ee3138f1Smrg# endif
4981ee3138f1Smrg# ifndef PATH_SEPARATOR_2
4982ee3138f1Smrg#  define PATH_SEPARATOR_2 ';'
4983ee3138f1Smrg# endif
4984ee3138f1Smrg#endif
4985ee3138f1Smrg
4986ee3138f1Smrg#ifndef DIR_SEPARATOR_2
4987ee3138f1Smrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
4988ee3138f1Smrg#else /* DIR_SEPARATOR_2 */
4989ee3138f1Smrg# define IS_DIR_SEPARATOR(ch) \
4990ee3138f1Smrg        (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
4991ee3138f1Smrg#endif /* DIR_SEPARATOR_2 */
4992ee3138f1Smrg
4993ee3138f1Smrg#ifndef PATH_SEPARATOR_2
4994ee3138f1Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
4995ee3138f1Smrg#else /* PATH_SEPARATOR_2 */
4996ee3138f1Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
4997ee3138f1Smrg#endif /* PATH_SEPARATOR_2 */
4998ee3138f1Smrg
4999ee3138f1Smrg#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
5000ee3138f1Smrg#define XFREE(stale) do { \
5001ee3138f1Smrg  if (stale) { free ((void *) stale); stale = 0; } \
5002ee3138f1Smrg} while (0)
5003ee3138f1Smrg
5004ee3138f1Smrg/* -DDEBUG is fairly common in CFLAGS.  */
5005ee3138f1Smrg#undef DEBUG
5006ee3138f1Smrg#if defined DEBUGWRAPPER
5007ee3138f1Smrg# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
5008ee3138f1Smrg#else
5009ee3138f1Smrg# define DEBUG(format, ...)
5010ee3138f1Smrg#endif
5011ee3138f1Smrg
5012ee3138f1Smrgconst char *program_name = NULL;
5013ee3138f1Smrg
5014ee3138f1Smrgvoid * xmalloc (size_t num);
5015ee3138f1Smrgchar * xstrdup (const char *string);
5016ee3138f1Smrgconst char * base_name (const char *name);
5017ee3138f1Smrgchar * find_executable(const char *wrapper);
5018ee3138f1Smrgint    check_executable(const char *path);
5019ee3138f1Smrgchar * strendzap(char *str, const char *pat);
5020ee3138f1Smrgvoid lt_fatal (const char *message, ...);
5021ee3138f1Smrg
5022ee3138f1Smrgint
5023ee3138f1Smrgmain (int argc, char *argv[])
5024ee3138f1Smrg{
5025ee3138f1Smrg  char **newargz;
5026ee3138f1Smrg  int i;
5027ee3138f1Smrg
5028ee3138f1Smrg  program_name = (char *) xstrdup (base_name (argv[0]));
5029ee3138f1Smrg  DEBUG("(main) argv[0]      : %s\n",argv[0]);
5030ee3138f1Smrg  DEBUG("(main) program_name : %s\n",program_name);
5031ee3138f1Smrg  newargz = XMALLOC(char *, argc+2);
5032ee3138f1SmrgEOF
5033ee3138f1Smrg
5034ee3138f1Smrg            cat >> $cwrappersource <<EOF
5035ee3138f1Smrg  newargz[0] = (char *) xstrdup("$SHELL");
5036ee3138f1SmrgEOF
5037ee3138f1Smrg
5038ee3138f1Smrg            cat >> $cwrappersource <<"EOF"
5039ee3138f1Smrg  newargz[1] = find_executable(argv[0]);
5040ee3138f1Smrg  if (newargz[1] == NULL)
5041ee3138f1Smrg    lt_fatal("Couldn't find %s", argv[0]);
5042ee3138f1Smrg  DEBUG("(main) found exe at : %s\n",newargz[1]);
5043ee3138f1Smrg  /* we know the script has the same name, without the .exe */
5044ee3138f1Smrg  /* so make sure newargz[1] doesn't end in .exe */
5045ee3138f1Smrg  strendzap(newargz[1],".exe");
5046ee3138f1Smrg  for (i = 1; i < argc; i++)
5047ee3138f1Smrg    newargz[i+1] = xstrdup(argv[i]);
5048ee3138f1Smrg  newargz[argc+1] = NULL;
5049ee3138f1Smrg
5050ee3138f1Smrg  for (i=0; i<argc+1; i++)
5051ee3138f1Smrg  {
5052ee3138f1Smrg    DEBUG("(main) newargz[%d]   : %s\n",i,newargz[i]);
5053ee3138f1Smrg    ;
5054ee3138f1Smrg  }
5055ee3138f1Smrg
5056ee3138f1SmrgEOF
5057ee3138f1Smrg
5058ee3138f1Smrg            case $host_os in
5059ee3138f1Smrg              mingw*)
5060ee3138f1Smrg                cat >> $cwrappersource <<EOF
5061ee3138f1Smrg  execv("$SHELL",(char const **)newargz);
5062ee3138f1SmrgEOF
5063ee3138f1Smrg              ;;
5064ee3138f1Smrg              *)
5065ee3138f1Smrg                cat >> $cwrappersource <<EOF
5066ee3138f1Smrg  execv("$SHELL",newargz);
5067ee3138f1SmrgEOF
5068ee3138f1Smrg              ;;
5069ee3138f1Smrg            esac
5070ee3138f1Smrg
5071ee3138f1Smrg            cat >> $cwrappersource <<"EOF"
5072ee3138f1Smrg  return 127;
5073ee3138f1Smrg}
5074ee3138f1Smrg
5075ee3138f1Smrgvoid *
5076ee3138f1Smrgxmalloc (size_t num)
5077ee3138f1Smrg{
5078ee3138f1Smrg  void * p = (void *) malloc (num);
5079ee3138f1Smrg  if (!p)
5080ee3138f1Smrg    lt_fatal ("Memory exhausted");
5081ee3138f1Smrg
5082ee3138f1Smrg  return p;
5083ee3138f1Smrg}
5084ee3138f1Smrg
5085ee3138f1Smrgchar *
5086ee3138f1Smrgxstrdup (const char *string)
5087ee3138f1Smrg{
5088ee3138f1Smrg  return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
5089ee3138f1Smrg;
5090ee3138f1Smrg}
5091ee3138f1Smrg
5092ee3138f1Smrgconst char *
5093ee3138f1Smrgbase_name (const char *name)
5094ee3138f1Smrg{
5095ee3138f1Smrg  const char *base;
5096ee3138f1Smrg
5097ee3138f1Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5098ee3138f1Smrg  /* Skip over the disk name in MSDOS pathnames. */
5099ee3138f1Smrg  if (isalpha ((unsigned char)name[0]) && name[1] == ':')
5100ee3138f1Smrg    name += 2;
5101ee3138f1Smrg#endif
5102ee3138f1Smrg
5103ee3138f1Smrg  for (base = name; *name; name++)
5104ee3138f1Smrg    if (IS_DIR_SEPARATOR (*name))
5105ee3138f1Smrg      base = name + 1;
5106ee3138f1Smrg  return base;
5107ee3138f1Smrg}
5108ee3138f1Smrg
5109ee3138f1Smrgint
5110ee3138f1Smrgcheck_executable(const char * path)
5111ee3138f1Smrg{
5112ee3138f1Smrg  struct stat st;
5113ee3138f1Smrg
5114ee3138f1Smrg  DEBUG("(check_executable)  : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
5115ee3138f1Smrg  if ((!path) || (!*path))
5116ee3138f1Smrg    return 0;
5117ee3138f1Smrg
5118ee3138f1Smrg  if ((stat (path, &st) >= 0) &&
5119ee3138f1Smrg      (
5120ee3138f1Smrg        /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
5121ee3138f1Smrg#if defined (S_IXOTH)
5122ee3138f1Smrg       ((st.st_mode & S_IXOTH) == S_IXOTH) ||
5123ee3138f1Smrg#endif
5124ee3138f1Smrg#if defined (S_IXGRP)
5125ee3138f1Smrg       ((st.st_mode & S_IXGRP) == S_IXGRP) ||
5126ee3138f1Smrg#endif
5127ee3138f1Smrg       ((st.st_mode & S_IXUSR) == S_IXUSR))
5128ee3138f1Smrg      )
5129ee3138f1Smrg    return 1;
5130ee3138f1Smrg  else
5131ee3138f1Smrg    return 0;
5132ee3138f1Smrg}
5133ee3138f1Smrg
5134ee3138f1Smrg/* Searches for the full path of the wrapper.  Returns
5135ee3138f1Smrg   newly allocated full path name if found, NULL otherwise */
5136ee3138f1Smrgchar *
5137ee3138f1Smrgfind_executable (const char* wrapper)
5138ee3138f1Smrg{
5139ee3138f1Smrg  int has_slash = 0;
5140ee3138f1Smrg  const char* p;
5141ee3138f1Smrg  const char* p_next;
5142ee3138f1Smrg  /* static buffer for getcwd */
5143ee3138f1Smrg  char tmp[LT_PATHMAX + 1];
5144ee3138f1Smrg  int tmp_len;
5145ee3138f1Smrg  char* concat_name;
5146ee3138f1Smrg
5147ee3138f1Smrg  DEBUG("(find_executable)  : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
5148ee3138f1Smrg
5149ee3138f1Smrg  if ((wrapper == NULL) || (*wrapper == '\0'))
5150ee3138f1Smrg    return NULL;
5151ee3138f1Smrg
5152ee3138f1Smrg  /* Absolute path? */
5153ee3138f1Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5154ee3138f1Smrg  if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
5155ee3138f1Smrg  {
5156ee3138f1Smrg    concat_name = xstrdup (wrapper);
5157ee3138f1Smrg    if (check_executable(concat_name))
5158ee3138f1Smrg      return concat_name;
5159ee3138f1Smrg    XFREE(concat_name);
5160ee3138f1Smrg  }
5161ee3138f1Smrg  else
5162ee3138f1Smrg  {
5163ee3138f1Smrg#endif
5164ee3138f1Smrg    if (IS_DIR_SEPARATOR (wrapper[0]))
5165ee3138f1Smrg    {
5166ee3138f1Smrg      concat_name = xstrdup (wrapper);
5167ee3138f1Smrg      if (check_executable(concat_name))
5168ee3138f1Smrg        return concat_name;
5169ee3138f1Smrg      XFREE(concat_name);
5170ee3138f1Smrg    }
5171ee3138f1Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5172ee3138f1Smrg  }
5173ee3138f1Smrg#endif
5174ee3138f1Smrg
5175ee3138f1Smrg  for (p = wrapper; *p; p++)
5176ee3138f1Smrg    if (*p == '/')
5177ee3138f1Smrg    {
5178ee3138f1Smrg      has_slash = 1;
5179ee3138f1Smrg      break;
5180ee3138f1Smrg    }
5181ee3138f1Smrg  if (!has_slash)
5182ee3138f1Smrg  {
5183ee3138f1Smrg    /* no slashes; search PATH */
5184ee3138f1Smrg    const char* path = getenv ("PATH");
5185ee3138f1Smrg    if (path != NULL)
5186ee3138f1Smrg    {
5187ee3138f1Smrg      for (p = path; *p; p = p_next)
5188ee3138f1Smrg      {
5189ee3138f1Smrg        const char* q;
5190ee3138f1Smrg        size_t p_len;
5191ee3138f1Smrg        for (q = p; *q; q++)
5192ee3138f1Smrg          if (IS_PATH_SEPARATOR(*q))
5193ee3138f1Smrg            break;
5194ee3138f1Smrg        p_len = q - p;
5195ee3138f1Smrg        p_next = (*q == '\0' ? q : q + 1);
5196ee3138f1Smrg        if (p_len == 0)
5197ee3138f1Smrg        {
5198ee3138f1Smrg          /* empty path: current directory */
5199ee3138f1Smrg          if (getcwd (tmp, LT_PATHMAX) == NULL)
5200ee3138f1Smrg            lt_fatal ("getcwd failed");
5201ee3138f1Smrg          tmp_len = strlen(tmp);
5202ee3138f1Smrg          concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
5203ee3138f1Smrg          memcpy (concat_name, tmp, tmp_len);
5204ee3138f1Smrg          concat_name[tmp_len] = '/';
5205ee3138f1Smrg          strcpy (concat_name + tmp_len + 1, wrapper);
5206ee3138f1Smrg        }
5207ee3138f1Smrg        else
5208ee3138f1Smrg        {
5209ee3138f1Smrg          concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
5210ee3138f1Smrg          memcpy (concat_name, p, p_len);
5211ee3138f1Smrg          concat_name[p_len] = '/';
5212ee3138f1Smrg          strcpy (concat_name + p_len + 1, wrapper);
5213ee3138f1Smrg        }
5214ee3138f1Smrg        if (check_executable(concat_name))
5215ee3138f1Smrg          return concat_name;
5216ee3138f1Smrg        XFREE(concat_name);
5217ee3138f1Smrg      }
5218ee3138f1Smrg    }
5219ee3138f1Smrg    /* not found in PATH; assume curdir */
5220ee3138f1Smrg  }
5221ee3138f1Smrg  /* Relative path | not found in path: prepend cwd */
5222ee3138f1Smrg  if (getcwd (tmp, LT_PATHMAX) == NULL)
5223ee3138f1Smrg    lt_fatal ("getcwd failed");
5224ee3138f1Smrg  tmp_len = strlen(tmp);
5225ee3138f1Smrg  concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
5226ee3138f1Smrg  memcpy (concat_name, tmp, tmp_len);
5227ee3138f1Smrg  concat_name[tmp_len] = '/';
5228ee3138f1Smrg  strcpy (concat_name + tmp_len + 1, wrapper);
5229ee3138f1Smrg
5230ee3138f1Smrg  if (check_executable(concat_name))
5231ee3138f1Smrg    return concat_name;
5232ee3138f1Smrg  XFREE(concat_name);
5233ee3138f1Smrg  return NULL;
5234ee3138f1Smrg}
5235ee3138f1Smrg
5236ee3138f1Smrgchar *
5237ee3138f1Smrgstrendzap(char *str, const char *pat)
5238ee3138f1Smrg{
5239ee3138f1Smrg  size_t len, patlen;
5240ee3138f1Smrg
5241ee3138f1Smrg  assert(str != NULL);
5242ee3138f1Smrg  assert(pat != NULL);
5243ee3138f1Smrg
5244ee3138f1Smrg  len = strlen(str);
5245ee3138f1Smrg  patlen = strlen(pat);
5246ee3138f1Smrg
5247ee3138f1Smrg  if (patlen <= len)
5248ee3138f1Smrg  {
5249ee3138f1Smrg    str += len - patlen;
5250ee3138f1Smrg    if (strcmp(str, pat) == 0)
5251ee3138f1Smrg      *str = '\0';
5252ee3138f1Smrg  }
5253ee3138f1Smrg  return str;
5254ee3138f1Smrg}
5255ee3138f1Smrg
5256ee3138f1Smrgstatic void
5257ee3138f1Smrglt_error_core (int exit_status, const char * mode,
5258ee3138f1Smrg          const char * message, va_list ap)
5259ee3138f1Smrg{
5260ee3138f1Smrg  fprintf (stderr, "%s: %s: ", program_name, mode);
5261ee3138f1Smrg  vfprintf (stderr, message, ap);
5262ee3138f1Smrg  fprintf (stderr, ".\n");
5263ee3138f1Smrg
5264ee3138f1Smrg  if (exit_status >= 0)
5265ee3138f1Smrg    exit (exit_status);
5266ee3138f1Smrg}
5267ee3138f1Smrg
5268ee3138f1Smrgvoid
5269ee3138f1Smrglt_fatal (const char *message, ...)
5270ee3138f1Smrg{
5271ee3138f1Smrg  va_list ap;
5272ee3138f1Smrg  va_start (ap, message);
5273ee3138f1Smrg  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
5274ee3138f1Smrg  va_end (ap);
5275ee3138f1Smrg}
5276ee3138f1SmrgEOF
5277ee3138f1Smrg          # we should really use a build-platform specific compiler
5278ee3138f1Smrg          # here, but OTOH, the wrappers (shell script and this C one)
5279ee3138f1Smrg          # are only useful if you want to execute the "real" binary.
5280ee3138f1Smrg          # Since the "real" binary is built for $host, then this
5281ee3138f1Smrg          # wrapper might as well be built for $host, too.
5282ee3138f1Smrg          $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
5283ee3138f1Smrg          ;;
5284ee3138f1Smrg        esac
5285ee3138f1Smrg        $rm $output
5286ee3138f1Smrg        trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
5287ee3138f1Smrg
5288ee3138f1Smrg	$echo > $output "\
5289ee3138f1Smrg#! $SHELL
5290ee3138f1Smrg
5291ee3138f1Smrg# $output - temporary wrapper script for $objdir/$outputname
5292ee3138f1Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
5293ee3138f1Smrg#
5294ee3138f1Smrg# The $output program cannot be directly executed until all the libtool
5295ee3138f1Smrg# libraries that it depends on are installed.
5296ee3138f1Smrg#
5297ee3138f1Smrg# This wrapper script should never be moved out of the build directory.
5298ee3138f1Smrg# If it is, it will not operate correctly.
5299ee3138f1Smrg
5300ee3138f1Smrg# Sed substitution that helps us do robust quoting.  It backslashifies
5301ee3138f1Smrg# metacharacters that are still active within double-quoted strings.
5302ee3138f1SmrgXsed='${SED} -e 1s/^X//'
5303ee3138f1Smrgsed_quote_subst='$sed_quote_subst'
5304ee3138f1Smrg
5305ee3138f1Smrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
5306ee3138f1Smrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
5307ee3138f1Smrg  emulate sh
5308ee3138f1Smrg  NULLCMD=:
5309ee3138f1Smrg  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
5310ee3138f1Smrg  # is contrary to our usage.  Disable this feature.
5311ee3138f1Smrg  alias -g '\${1+\"\$@\"}'='\"\$@\"'
5312ee3138f1Smrg  setopt NO_GLOB_SUBST
5313ee3138f1Smrgelse
5314ee3138f1Smrg  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
5315ee3138f1Smrgfi
5316ee3138f1SmrgBIN_SH=xpg4; export BIN_SH # for Tru64
5317ee3138f1SmrgDUALCASE=1; export DUALCASE # for MKS sh
5318ee3138f1Smrg
5319ee3138f1Smrg# The HP-UX ksh and POSIX shell print the target directory to stdout
5320ee3138f1Smrg# if CDPATH is set.
5321ee3138f1Smrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
5322ee3138f1Smrg
5323ee3138f1Smrgrelink_command=\"$relink_command\"
5324ee3138f1Smrg
5325ee3138f1Smrg# This environment variable determines our operation mode.
5326ee3138f1Smrgif test \"\$libtool_install_magic\" = \"$magic\"; then
5327ee3138f1Smrg  # install mode needs the following variable:
5328ee3138f1Smrg  notinst_deplibs='$notinst_deplibs'
5329ee3138f1Smrgelse
5330ee3138f1Smrg  # When we are sourced in execute mode, \$file and \$echo are already set.
5331ee3138f1Smrg  if test \"\$libtool_execute_magic\" != \"$magic\"; then
5332ee3138f1Smrg    echo=\"$qecho\"
5333ee3138f1Smrg    file=\"\$0\"
5334ee3138f1Smrg    # Make sure echo works.
5335ee3138f1Smrg    if test \"X\$1\" = X--no-reexec; then
5336ee3138f1Smrg      # Discard the --no-reexec flag, and continue.
5337ee3138f1Smrg      shift
5338ee3138f1Smrg    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
5339ee3138f1Smrg      # Yippee, \$echo works!
5340ee3138f1Smrg      :
5341ee3138f1Smrg    else
5342ee3138f1Smrg      # Restart under the correct shell, and then maybe \$echo will work.
5343ee3138f1Smrg      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
5344ee3138f1Smrg    fi
5345ee3138f1Smrg  fi\
5346ee3138f1Smrg"
5347ee3138f1Smrg	$echo >> $output "\
5348ee3138f1Smrg
5349ee3138f1Smrg  # Find the directory that this script lives in.
5350ee3138f1Smrg  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
5351ee3138f1Smrg  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
5352ee3138f1Smrg
5353ee3138f1Smrg  # Follow symbolic links until we get to the real thisdir.
5354ee3138f1Smrg  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
5355ee3138f1Smrg  while test -n \"\$file\"; do
5356ee3138f1Smrg    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
5357ee3138f1Smrg
5358ee3138f1Smrg    # If there was a directory component, then change thisdir.
5359ee3138f1Smrg    if test \"x\$destdir\" != \"x\$file\"; then
5360ee3138f1Smrg      case \"\$destdir\" in
5361ee3138f1Smrg      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
5362ee3138f1Smrg      *) thisdir=\"\$thisdir/\$destdir\" ;;
5363ee3138f1Smrg      esac
5364ee3138f1Smrg    fi
5365ee3138f1Smrg
5366ee3138f1Smrg    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
5367ee3138f1Smrg    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
5368ee3138f1Smrg  done
5369ee3138f1Smrg
5370ee3138f1Smrg  # Try to get the absolute directory name.
5371ee3138f1Smrg  absdir=\`cd \"\$thisdir\" && pwd\`
5372ee3138f1Smrg  test -n \"\$absdir\" && thisdir=\"\$absdir\"
5373ee3138f1Smrg"
5374ee3138f1Smrg
5375ee3138f1Smrg	if test "$fast_install" = yes; then
5376ee3138f1Smrg	  $echo >> $output "\
5377ee3138f1Smrg  program=lt-'$outputname'$exeext
5378ee3138f1Smrg  progdir=\"\$thisdir/$objdir\"
5379ee3138f1Smrg
5380ee3138f1Smrg  if test ! -f \"\$progdir/\$program\" || \\
5381ee3138f1Smrg     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
5382ee3138f1Smrg       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
5383ee3138f1Smrg
5384ee3138f1Smrg    file=\"\$\$-\$program\"
5385ee3138f1Smrg
5386ee3138f1Smrg    if test ! -d \"\$progdir\"; then
5387ee3138f1Smrg      $mkdir \"\$progdir\"
5388ee3138f1Smrg    else
5389ee3138f1Smrg      $rm \"\$progdir/\$file\"
5390ee3138f1Smrg    fi"
5391ee3138f1Smrg
5392ee3138f1Smrg	  $echo >> $output "\
5393ee3138f1Smrg
5394ee3138f1Smrg    # relink executable if necessary
5395ee3138f1Smrg    if test -n \"\$relink_command\"; then
5396ee3138f1Smrg      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
5397ee3138f1Smrg      else
5398ee3138f1Smrg	$echo \"\$relink_command_output\" >&2
5399ee3138f1Smrg	$rm \"\$progdir/\$file\"
5400ee3138f1Smrg	exit $EXIT_FAILURE
5401ee3138f1Smrg      fi
5402ee3138f1Smrg    fi
5403ee3138f1Smrg
5404ee3138f1Smrg    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
5405ee3138f1Smrg    { $rm \"\$progdir/\$program\";
5406ee3138f1Smrg      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
5407ee3138f1Smrg    $rm \"\$progdir/\$file\"
5408ee3138f1Smrg  fi"
5409ee3138f1Smrg	else
5410ee3138f1Smrg	  $echo >> $output "\
5411ee3138f1Smrg  program='$outputname'
5412ee3138f1Smrg  progdir=\"\$thisdir/$objdir\"
5413ee3138f1Smrg"
5414ee3138f1Smrg	fi
5415ee3138f1Smrg
5416ee3138f1Smrg	$echo >> $output "\
5417ee3138f1Smrg
5418ee3138f1Smrg  if test -f \"\$progdir/\$program\"; then"
5419ee3138f1Smrg
5420ee3138f1Smrg	# Export our shlibpath_var if we have one.
5421ee3138f1Smrg	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
5422ee3138f1Smrg	  $echo >> $output "\
5423ee3138f1Smrg    # Add our own library path to $shlibpath_var
5424ee3138f1Smrg    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
5425ee3138f1Smrg
5426ee3138f1Smrg    # Some systems cannot cope with colon-terminated $shlibpath_var
5427ee3138f1Smrg    # The second colon is a workaround for a bug in BeOS R4 sed
5428ee3138f1Smrg    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
5429ee3138f1Smrg
5430ee3138f1Smrg    export $shlibpath_var
5431ee3138f1Smrg"
5432ee3138f1Smrg	fi
5433ee3138f1Smrg
5434ee3138f1Smrg	# fixup the dll searchpath if we need to.
5435ee3138f1Smrg	if test -n "$dllsearchpath"; then
5436ee3138f1Smrg	  $echo >> $output "\
5437ee3138f1Smrg    # Add the dll search path components to the executable PATH
5438ee3138f1Smrg    PATH=$dllsearchpath:\$PATH
5439ee3138f1Smrg"
5440ee3138f1Smrg	fi
5441ee3138f1Smrg
5442ee3138f1Smrg	$echo >> $output "\
5443ee3138f1Smrg    if test \"\$libtool_execute_magic\" != \"$magic\"; then
5444ee3138f1Smrg      # Run the actual program with our arguments.
5445ee3138f1Smrg"
5446ee3138f1Smrg	case $host in
5447ee3138f1Smrg	# Backslashes separate directories on plain windows
5448ee3138f1Smrg	*-*-mingw | *-*-os2*)
5449ee3138f1Smrg	  $echo >> $output "\
5450ee3138f1Smrg      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
5451ee3138f1Smrg"
5452ee3138f1Smrg	  ;;
5453ee3138f1Smrg
5454ee3138f1Smrg	*)
5455ee3138f1Smrg	  $echo >> $output "\
5456ee3138f1Smrg      exec \"\$progdir/\$program\" \${1+\"\$@\"}
5457ee3138f1Smrg"
5458ee3138f1Smrg	  ;;
5459ee3138f1Smrg	esac
5460ee3138f1Smrg	$echo >> $output "\
5461ee3138f1Smrg      \$echo \"\$0: cannot exec \$program \$*\"
5462ee3138f1Smrg      exit $EXIT_FAILURE
5463ee3138f1Smrg    fi
5464ee3138f1Smrg  else
5465ee3138f1Smrg    # The program doesn't exist.
5466ee3138f1Smrg    \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
5467ee3138f1Smrg    \$echo \"This script is just a wrapper for \$program.\" 1>&2
5468ee3138f1Smrg    $echo \"See the $PACKAGE documentation for more information.\" 1>&2
5469ee3138f1Smrg    exit $EXIT_FAILURE
5470ee3138f1Smrg  fi
5471ee3138f1Smrgfi\
5472ee3138f1Smrg"
5473ee3138f1Smrg	chmod +x $output
5474ee3138f1Smrg      fi
5475ee3138f1Smrg      exit $EXIT_SUCCESS
5476ee3138f1Smrg      ;;
5477ee3138f1Smrg    esac
5478ee3138f1Smrg
5479ee3138f1Smrg    # See if we need to build an old-fashioned archive.
5480ee3138f1Smrg    for oldlib in $oldlibs; do
5481ee3138f1Smrg
5482ee3138f1Smrg      if test "$build_libtool_libs" = convenience; then
5483ee3138f1Smrg	oldobjs="$libobjs_save"
5484ee3138f1Smrg	addlibs="$convenience"
5485ee3138f1Smrg	build_libtool_libs=no
5486ee3138f1Smrg      else
5487ee3138f1Smrg	if test "$build_libtool_libs" = module; then
5488ee3138f1Smrg	  oldobjs="$libobjs_save"
5489ee3138f1Smrg	  build_libtool_libs=no
5490ee3138f1Smrg	else
5491ee3138f1Smrg	  oldobjs="$old_deplibs $non_pic_objects"
5492ee3138f1Smrg	fi
5493ee3138f1Smrg	addlibs="$old_convenience"
5494ee3138f1Smrg      fi
5495ee3138f1Smrg
5496ee3138f1Smrg      if test -n "$addlibs"; then
5497ee3138f1Smrg	gentop="$output_objdir/${outputname}x"
5498ee3138f1Smrg	generated="$generated $gentop"
5499ee3138f1Smrg
5500ee3138f1Smrg	func_extract_archives $gentop $addlibs
5501ee3138f1Smrg	oldobjs="$oldobjs $func_extract_archives_result"
5502ee3138f1Smrg      fi
5503ee3138f1Smrg
5504ee3138f1Smrg      # Do each command in the archive commands.
5505ee3138f1Smrg      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
5506ee3138f1Smrg       cmds=$old_archive_from_new_cmds
5507ee3138f1Smrg      else
5508ee3138f1Smrg	# POSIX demands no paths to be encoded in archives.  We have
5509ee3138f1Smrg	# to avoid creating archives with duplicate basenames if we
5510ee3138f1Smrg	# might have to extract them afterwards, e.g., when creating a
5511ee3138f1Smrg	# static archive out of a convenience library, or when linking
5512ee3138f1Smrg	# the entirety of a libtool archive into another (currently
5513ee3138f1Smrg	# not supported by libtool).
5514ee3138f1Smrg	if (for obj in $oldobjs
5515ee3138f1Smrg	    do
5516ee3138f1Smrg	      $echo "X$obj" | $Xsed -e 's%^.*/%%'
5517ee3138f1Smrg	    done | sort | sort -uc >/dev/null 2>&1); then
5518ee3138f1Smrg	  :
5519ee3138f1Smrg	else
5520ee3138f1Smrg	  $echo "copying selected object files to avoid basename conflicts..."
5521ee3138f1Smrg
5522ee3138f1Smrg	  if test -z "$gentop"; then
5523ee3138f1Smrg	    gentop="$output_objdir/${outputname}x"
5524ee3138f1Smrg	    generated="$generated $gentop"
5525ee3138f1Smrg
5526ee3138f1Smrg	    $show "${rm}r $gentop"
5527ee3138f1Smrg	    $run ${rm}r "$gentop"
5528ee3138f1Smrg	    $show "$mkdir $gentop"
5529ee3138f1Smrg	    $run $mkdir "$gentop"
5530ee3138f1Smrg	    exit_status=$?
5531ee3138f1Smrg	    if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
5532ee3138f1Smrg	      exit $exit_status
5533ee3138f1Smrg	    fi
5534ee3138f1Smrg	  fi
5535ee3138f1Smrg
5536ee3138f1Smrg	  save_oldobjs=$oldobjs
5537ee3138f1Smrg	  oldobjs=
5538ee3138f1Smrg	  counter=1
5539ee3138f1Smrg	  for obj in $save_oldobjs
5540ee3138f1Smrg	  do
5541ee3138f1Smrg	    objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
5542ee3138f1Smrg	    case " $oldobjs " in
5543ee3138f1Smrg	    " ") oldobjs=$obj ;;
5544ee3138f1Smrg	    *[\ /]"$objbase "*)
5545ee3138f1Smrg	      while :; do
5546ee3138f1Smrg		# Make sure we don't pick an alternate name that also
5547ee3138f1Smrg		# overlaps.
5548ee3138f1Smrg		newobj=lt$counter-$objbase
5549ee3138f1Smrg		counter=`expr $counter + 1`
5550ee3138f1Smrg		case " $oldobjs " in
5551ee3138f1Smrg		*[\ /]"$newobj "*) ;;
5552ee3138f1Smrg		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
5553ee3138f1Smrg		esac
5554ee3138f1Smrg	      done
5555ee3138f1Smrg	      $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
5556ee3138f1Smrg	      $run ln "$obj" "$gentop/$newobj" ||
5557ee3138f1Smrg	      $run cp "$obj" "$gentop/$newobj"
5558ee3138f1Smrg	      oldobjs="$oldobjs $gentop/$newobj"
5559ee3138f1Smrg	      ;;
5560ee3138f1Smrg	    *) oldobjs="$oldobjs $obj" ;;
5561ee3138f1Smrg	    esac
5562ee3138f1Smrg	  done
5563ee3138f1Smrg	fi
5564ee3138f1Smrg
5565ee3138f1Smrg	eval cmds=\"$old_archive_cmds\"
5566ee3138f1Smrg
5567ee3138f1Smrg	if len=`expr "X$cmds" : ".*"` &&
5568ee3138f1Smrg	     test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
5569ee3138f1Smrg	  cmds=$old_archive_cmds
5570ee3138f1Smrg	else
5571ee3138f1Smrg	  # the command line is too long to link in one step, link in parts
5572ee3138f1Smrg	  $echo "using piecewise archive linking..."
5573ee3138f1Smrg	  save_RANLIB=$RANLIB
5574ee3138f1Smrg	  RANLIB=:
5575ee3138f1Smrg	  objlist=
5576ee3138f1Smrg	  concat_cmds=
5577ee3138f1Smrg	  save_oldobjs=$oldobjs
5578ee3138f1Smrg
5579ee3138f1Smrg	  # Is there a better way of finding the last object in the list?
5580ee3138f1Smrg	  for obj in $save_oldobjs
5581ee3138f1Smrg	  do
5582ee3138f1Smrg	    last_oldobj=$obj
5583ee3138f1Smrg	  done
5584ee3138f1Smrg	  for obj in $save_oldobjs
5585ee3138f1Smrg	  do
5586ee3138f1Smrg	    oldobjs="$objlist $obj"
5587ee3138f1Smrg	    objlist="$objlist $obj"
5588ee3138f1Smrg	    eval test_cmds=\"$old_archive_cmds\"
5589ee3138f1Smrg	    if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
5590ee3138f1Smrg	       test "$len" -le "$max_cmd_len"; then
5591ee3138f1Smrg	      :
5592ee3138f1Smrg	    else
5593ee3138f1Smrg	      # the above command should be used before it gets too long
5594ee3138f1Smrg	      oldobjs=$objlist
5595ee3138f1Smrg	      if test "$obj" = "$last_oldobj" ; then
5596ee3138f1Smrg	        RANLIB=$save_RANLIB
5597ee3138f1Smrg	      fi
5598ee3138f1Smrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
5599ee3138f1Smrg	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
5600ee3138f1Smrg	      objlist=
5601ee3138f1Smrg	    fi
5602ee3138f1Smrg	  done
5603ee3138f1Smrg	  RANLIB=$save_RANLIB
5604ee3138f1Smrg	  oldobjs=$objlist
5605ee3138f1Smrg	  if test "X$oldobjs" = "X" ; then
5606ee3138f1Smrg	    eval cmds=\"\$concat_cmds\"
5607ee3138f1Smrg	  else
5608ee3138f1Smrg	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
5609ee3138f1Smrg	  fi
5610ee3138f1Smrg	fi
5611ee3138f1Smrg      fi
5612ee3138f1Smrg      save_ifs="$IFS"; IFS='~'
5613ee3138f1Smrg      for cmd in $cmds; do
5614ee3138f1Smrg        eval cmd=\"$cmd\"
5615ee3138f1Smrg	IFS="$save_ifs"
5616ee3138f1Smrg	$show "$cmd"
5617ee3138f1Smrg	$run eval "$cmd" || exit $?
5618ee3138f1Smrg      done
5619ee3138f1Smrg      IFS="$save_ifs"
5620ee3138f1Smrg    done
5621ee3138f1Smrg
5622ee3138f1Smrg    if test -n "$generated"; then
5623ee3138f1Smrg      $show "${rm}r$generated"
5624ee3138f1Smrg      $run ${rm}r$generated
5625ee3138f1Smrg    fi
5626ee3138f1Smrg
5627ee3138f1Smrg    # Now create the libtool archive.
5628ee3138f1Smrg    case $output in
5629ee3138f1Smrg    *.la)
5630ee3138f1Smrg      old_library=
5631ee3138f1Smrg      test "$build_old_libs" = yes && old_library="$libname.$libext"
5632ee3138f1Smrg      $show "creating $output"
5633ee3138f1Smrg
5634ee3138f1Smrg      # Preserve any variables that may affect compiler behavior
5635ee3138f1Smrg      for var in $variables_saved_for_relink; do
5636ee3138f1Smrg	if eval test -z \"\${$var+set}\"; then
5637ee3138f1Smrg	  relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
5638ee3138f1Smrg	elif eval var_value=\$$var; test -z "$var_value"; then
5639ee3138f1Smrg	  relink_command="$var=; export $var; $relink_command"
5640ee3138f1Smrg	else
5641ee3138f1Smrg	  var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
5642ee3138f1Smrg	  relink_command="$var=\"$var_value\"; export $var; $relink_command"
5643ee3138f1Smrg	fi
5644ee3138f1Smrg      done
5645ee3138f1Smrg      # Quote the link command for shipping.
5646ee3138f1Smrg      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
5647ee3138f1Smrg      relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
5648ee3138f1Smrg      if test "$hardcode_automatic" = yes ; then
5649ee3138f1Smrg	relink_command=
5650ee3138f1Smrg      fi
5651ee3138f1Smrg
5652ee3138f1Smrg
5653ee3138f1Smrg      # Only create the output if not a dry run.
5654ee3138f1Smrg      if test -z "$run"; then
5655ee3138f1Smrg	for installed in no yes; do
5656ee3138f1Smrg	  if test "$installed" = yes; then
5657ee3138f1Smrg	    if test -z "$install_libdir"; then
5658ee3138f1Smrg	      break
5659ee3138f1Smrg	    fi
5660ee3138f1Smrg	    output="$output_objdir/$outputname"i
5661ee3138f1Smrg	    # Replace all uninstalled libtool libraries with the installed ones
5662ee3138f1Smrg	    newdependency_libs=
5663ee3138f1Smrg	    for deplib in $dependency_libs; do
5664ee3138f1Smrg	      case $deplib in
5665ee3138f1Smrg	      *.la)
5666ee3138f1Smrg		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
5667ee3138f1Smrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
5668ee3138f1Smrg		if test -z "$libdir"; then
5669ee3138f1Smrg		  $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
5670ee3138f1Smrg		  exit $EXIT_FAILURE
5671ee3138f1Smrg		fi
5672ee3138f1Smrg		newdependency_libs="$newdependency_libs $libdir/$name"
5673ee3138f1Smrg		;;
5674ee3138f1Smrg	      *) newdependency_libs="$newdependency_libs $deplib" ;;
5675ee3138f1Smrg	      esac
5676ee3138f1Smrg	    done
5677ee3138f1Smrg	    dependency_libs="$newdependency_libs"
5678ee3138f1Smrg	    newdlfiles=
5679ee3138f1Smrg	    for lib in $dlfiles; do
5680ee3138f1Smrg	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5681ee3138f1Smrg	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5682ee3138f1Smrg	      if test -z "$libdir"; then
5683ee3138f1Smrg		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5684ee3138f1Smrg		exit $EXIT_FAILURE
5685ee3138f1Smrg	      fi
5686ee3138f1Smrg	      newdlfiles="$newdlfiles $libdir/$name"
5687ee3138f1Smrg	    done
5688ee3138f1Smrg	    dlfiles="$newdlfiles"
5689ee3138f1Smrg	    newdlprefiles=
5690ee3138f1Smrg	    for lib in $dlprefiles; do
5691ee3138f1Smrg	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5692ee3138f1Smrg	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5693ee3138f1Smrg	      if test -z "$libdir"; then
5694ee3138f1Smrg		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5695ee3138f1Smrg		exit $EXIT_FAILURE
5696ee3138f1Smrg	      fi
5697ee3138f1Smrg	      newdlprefiles="$newdlprefiles $libdir/$name"
5698ee3138f1Smrg	    done
5699ee3138f1Smrg	    dlprefiles="$newdlprefiles"
5700ee3138f1Smrg	  else
5701ee3138f1Smrg	    newdlfiles=
5702ee3138f1Smrg	    for lib in $dlfiles; do
5703ee3138f1Smrg	      case $lib in
5704ee3138f1Smrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5705ee3138f1Smrg		*) abs=`pwd`"/$lib" ;;
5706ee3138f1Smrg	      esac
5707ee3138f1Smrg	      newdlfiles="$newdlfiles $abs"
5708ee3138f1Smrg	    done
5709ee3138f1Smrg	    dlfiles="$newdlfiles"
5710ee3138f1Smrg	    newdlprefiles=
5711ee3138f1Smrg	    for lib in $dlprefiles; do
5712ee3138f1Smrg	      case $lib in
5713ee3138f1Smrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5714ee3138f1Smrg		*) abs=`pwd`"/$lib" ;;
5715ee3138f1Smrg	      esac
5716ee3138f1Smrg	      newdlprefiles="$newdlprefiles $abs"
5717ee3138f1Smrg	    done
5718ee3138f1Smrg	    dlprefiles="$newdlprefiles"
5719ee3138f1Smrg	  fi
5720ee3138f1Smrg	  $rm $output
5721ee3138f1Smrg	  # place dlname in correct position for cygwin
5722ee3138f1Smrg	  tdlname=$dlname
5723ee3138f1Smrg	  case $host,$output,$installed,$module,$dlname in
5724ee3138f1Smrg	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
5725ee3138f1Smrg	  esac
5726ee3138f1Smrg	  $echo > $output "\
5727ee3138f1Smrg# $outputname - a libtool library file
5728ee3138f1Smrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
5729ee3138f1Smrg#
5730ee3138f1Smrg# Please DO NOT delete this file!
5731ee3138f1Smrg# It is necessary for linking the library.
5732ee3138f1Smrg
5733ee3138f1Smrg# The name that we can dlopen(3).
5734ee3138f1Smrgdlname='$tdlname'
5735ee3138f1Smrg
5736ee3138f1Smrg# Names of this library.
5737ee3138f1Smrglibrary_names='$library_names'
5738ee3138f1Smrg
5739ee3138f1Smrg# The name of the static archive.
5740ee3138f1Smrgold_library='$old_library'
5741ee3138f1Smrg
5742ee3138f1Smrg# Libraries that this one depends upon.
5743ee3138f1Smrgdependency_libs='$dependency_libs'
5744ee3138f1Smrg
5745ee3138f1Smrg# Version information for $libname.
5746ee3138f1Smrgcurrent=$current
5747ee3138f1Smrgage=$age
5748ee3138f1Smrgrevision=$revision
5749ee3138f1Smrg
5750ee3138f1Smrg# Is this an already installed library?
5751ee3138f1Smrginstalled=$installed
5752ee3138f1Smrg
5753ee3138f1Smrg# Should we warn about portability when linking against -modules?
5754ee3138f1Smrgshouldnotlink=$module
5755ee3138f1Smrg
5756ee3138f1Smrg# Files to dlopen/dlpreopen
5757ee3138f1Smrgdlopen='$dlfiles'
5758ee3138f1Smrgdlpreopen='$dlprefiles'
5759ee3138f1Smrg
5760ee3138f1Smrg# Directory that this library needs to be installed in:
5761ee3138f1Smrglibdir='$install_libdir'"
5762ee3138f1Smrg	  if test "$installed" = no && test "$need_relink" = yes; then
5763ee3138f1Smrg	    $echo >> $output "\
5764ee3138f1Smrgrelink_command=\"$relink_command\""
5765ee3138f1Smrg	  fi
5766ee3138f1Smrg	done
5767ee3138f1Smrg      fi
5768ee3138f1Smrg
5769ee3138f1Smrg      # Do a symbolic link so that the libtool archive can be found in
5770ee3138f1Smrg      # LD_LIBRARY_PATH before the program is installed.
5771ee3138f1Smrg      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
5772ee3138f1Smrg      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
5773ee3138f1Smrg      ;;
5774ee3138f1Smrg    esac
5775ee3138f1Smrg    exit $EXIT_SUCCESS
5776ee3138f1Smrg    ;;
5777ee3138f1Smrg
5778ee3138f1Smrg  # libtool install mode
5779ee3138f1Smrg  install)
5780ee3138f1Smrg    modename="$modename: install"
5781ee3138f1Smrg
5782ee3138f1Smrg    # There may be an optional sh(1) argument at the beginning of
5783ee3138f1Smrg    # install_prog (especially on Windows NT).
5784ee3138f1Smrg    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
5785ee3138f1Smrg       # Allow the use of GNU shtool's install command.
5786ee3138f1Smrg       $echo "X$nonopt" | grep shtool > /dev/null; then
5787ee3138f1Smrg      # Aesthetically quote it.
5788ee3138f1Smrg      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
5789ee3138f1Smrg      case $arg in
5790ee3138f1Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
5791ee3138f1Smrg	arg="\"$arg\""
5792ee3138f1Smrg	;;
5793ee3138f1Smrg      esac
5794ee3138f1Smrg      install_prog="$arg "
5795ee3138f1Smrg      arg="$1"
5796ee3138f1Smrg      shift
5797ee3138f1Smrg    else
5798ee3138f1Smrg      install_prog=
5799ee3138f1Smrg      arg=$nonopt
5800ee3138f1Smrg    fi
5801ee3138f1Smrg
5802ee3138f1Smrg    # The real first argument should be the name of the installation program.
5803ee3138f1Smrg    # Aesthetically quote it.
5804ee3138f1Smrg    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5805ee3138f1Smrg    case $arg in
5806ee3138f1Smrg    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
5807ee3138f1Smrg      arg="\"$arg\""
5808ee3138f1Smrg      ;;
5809ee3138f1Smrg    esac
5810ee3138f1Smrg    install_prog="$install_prog$arg"
5811ee3138f1Smrg
5812ee3138f1Smrg    # We need to accept at least all the BSD install flags.
5813ee3138f1Smrg    dest=
5814ee3138f1Smrg    files=
5815ee3138f1Smrg    opts=
5816ee3138f1Smrg    prev=
5817ee3138f1Smrg    install_type=
5818ee3138f1Smrg    isdir=no
5819ee3138f1Smrg    stripme=
5820ee3138f1Smrg    for arg
5821ee3138f1Smrg    do
5822ee3138f1Smrg      if test -n "$dest"; then
5823ee3138f1Smrg	files="$files $dest"
5824ee3138f1Smrg	dest=$arg
5825ee3138f1Smrg	continue
5826ee3138f1Smrg      fi
5827ee3138f1Smrg
5828ee3138f1Smrg      case $arg in
5829ee3138f1Smrg      -d) isdir=yes ;;
5830ee3138f1Smrg      -f) 
5831ee3138f1Smrg      	case " $install_prog " in
5832ee3138f1Smrg	*[\\\ /]cp\ *) ;;
5833ee3138f1Smrg	*) prev=$arg ;;
5834ee3138f1Smrg	esac
5835ee3138f1Smrg	;;
5836ee3138f1Smrg      -g | -m | -o) prev=$arg ;;
5837ee3138f1Smrg      -s)
5838ee3138f1Smrg	stripme=" -s"
5839ee3138f1Smrg	continue
5840ee3138f1Smrg	;;
5841ee3138f1Smrg      -*)
5842ee3138f1Smrg	;;
5843ee3138f1Smrg      *)
5844ee3138f1Smrg	# If the previous option needed an argument, then skip it.
5845ee3138f1Smrg	if test -n "$prev"; then
5846ee3138f1Smrg	  prev=
5847ee3138f1Smrg	else
5848ee3138f1Smrg	  dest=$arg
5849ee3138f1Smrg	  continue
5850ee3138f1Smrg	fi
5851ee3138f1Smrg	;;
5852ee3138f1Smrg      esac
5853ee3138f1Smrg
5854ee3138f1Smrg      # Aesthetically quote the argument.
5855ee3138f1Smrg      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5856ee3138f1Smrg      case $arg in
5857ee3138f1Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
5858ee3138f1Smrg	arg="\"$arg\""
5859ee3138f1Smrg	;;
5860ee3138f1Smrg      esac
5861ee3138f1Smrg      install_prog="$install_prog $arg"
5862ee3138f1Smrg    done
5863ee3138f1Smrg
5864ee3138f1Smrg    if test -z "$install_prog"; then
5865ee3138f1Smrg      $echo "$modename: you must specify an install program" 1>&2
5866ee3138f1Smrg      $echo "$help" 1>&2
5867ee3138f1Smrg      exit $EXIT_FAILURE
5868ee3138f1Smrg    fi
5869ee3138f1Smrg
5870ee3138f1Smrg    if test -n "$prev"; then
5871ee3138f1Smrg      $echo "$modename: the \`$prev' option requires an argument" 1>&2
5872ee3138f1Smrg      $echo "$help" 1>&2
5873ee3138f1Smrg      exit $EXIT_FAILURE
5874ee3138f1Smrg    fi
5875ee3138f1Smrg
5876ee3138f1Smrg    if test -z "$files"; then
5877ee3138f1Smrg      if test -z "$dest"; then
5878ee3138f1Smrg	$echo "$modename: no file or destination specified" 1>&2
5879ee3138f1Smrg      else
5880ee3138f1Smrg	$echo "$modename: you must specify a destination" 1>&2
5881ee3138f1Smrg      fi
5882ee3138f1Smrg      $echo "$help" 1>&2
5883ee3138f1Smrg      exit $EXIT_FAILURE
5884ee3138f1Smrg    fi
5885ee3138f1Smrg
5886ee3138f1Smrg    # Strip any trailing slash from the destination.
5887ee3138f1Smrg    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
5888ee3138f1Smrg
5889ee3138f1Smrg    # Check to see that the destination is a directory.
5890ee3138f1Smrg    test -d "$dest" && isdir=yes
5891ee3138f1Smrg    if test "$isdir" = yes; then
5892ee3138f1Smrg      destdir="$dest"
5893ee3138f1Smrg      destname=
5894ee3138f1Smrg    else
5895ee3138f1Smrg      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
5896ee3138f1Smrg      test "X$destdir" = "X$dest" && destdir=.
5897ee3138f1Smrg      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
5898ee3138f1Smrg
5899ee3138f1Smrg      # Not a directory, so check to see that there is only one file specified.
5900ee3138f1Smrg      set dummy $files
5901ee3138f1Smrg      if test "$#" -gt 2; then
5902ee3138f1Smrg	$echo "$modename: \`$dest' is not a directory" 1>&2
5903ee3138f1Smrg	$echo "$help" 1>&2
5904ee3138f1Smrg	exit $EXIT_FAILURE
5905ee3138f1Smrg      fi
5906ee3138f1Smrg    fi
5907ee3138f1Smrg    case $destdir in
5908ee3138f1Smrg    [\\/]* | [A-Za-z]:[\\/]*) ;;
5909ee3138f1Smrg    *)
5910ee3138f1Smrg      for file in $files; do
5911ee3138f1Smrg	case $file in
5912ee3138f1Smrg	*.lo) ;;
5913ee3138f1Smrg	*)
5914ee3138f1Smrg	  $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
5915ee3138f1Smrg	  $echo "$help" 1>&2
5916ee3138f1Smrg	  exit $EXIT_FAILURE
5917ee3138f1Smrg	  ;;
5918ee3138f1Smrg	esac
5919ee3138f1Smrg      done
5920ee3138f1Smrg      ;;
5921ee3138f1Smrg    esac
5922ee3138f1Smrg
5923ee3138f1Smrg    # This variable tells wrapper scripts just to set variables rather
5924ee3138f1Smrg    # than running their programs.
5925ee3138f1Smrg    libtool_install_magic="$magic"
5926ee3138f1Smrg
5927ee3138f1Smrg    staticlibs=
5928ee3138f1Smrg    future_libdirs=
5929ee3138f1Smrg    current_libdirs=
5930ee3138f1Smrg    for file in $files; do
5931ee3138f1Smrg
5932ee3138f1Smrg      # Do each installation.
5933ee3138f1Smrg      case $file in
5934ee3138f1Smrg      *.$libext)
5935ee3138f1Smrg	# Do the static libraries later.
5936ee3138f1Smrg	staticlibs="$staticlibs $file"
5937ee3138f1Smrg	;;
5938ee3138f1Smrg
5939ee3138f1Smrg      *.la)
5940ee3138f1Smrg	# Check to see that this really is a libtool archive.
5941ee3138f1Smrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
5942ee3138f1Smrg	else
5943ee3138f1Smrg	  $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
5944ee3138f1Smrg	  $echo "$help" 1>&2
5945ee3138f1Smrg	  exit $EXIT_FAILURE
5946ee3138f1Smrg	fi
5947ee3138f1Smrg
5948ee3138f1Smrg	library_names=
5949ee3138f1Smrg	old_library=
5950ee3138f1Smrg	relink_command=
5951ee3138f1Smrg	# If there is no directory component, then add one.
5952ee3138f1Smrg	case $file in
5953ee3138f1Smrg	*/* | *\\*) . $file ;;
5954ee3138f1Smrg	*) . ./$file ;;
5955ee3138f1Smrg	esac
5956ee3138f1Smrg
5957ee3138f1Smrg	# Add the libdir to current_libdirs if it is the destination.
5958ee3138f1Smrg	if test "X$destdir" = "X$libdir"; then
5959ee3138f1Smrg	  case "$current_libdirs " in
5960ee3138f1Smrg	  *" $libdir "*) ;;
5961ee3138f1Smrg	  *) current_libdirs="$current_libdirs $libdir" ;;
5962ee3138f1Smrg	  esac
5963ee3138f1Smrg	else
5964ee3138f1Smrg	  # Note the libdir as a future libdir.
5965ee3138f1Smrg	  case "$future_libdirs " in
5966ee3138f1Smrg	  *" $libdir "*) ;;
5967ee3138f1Smrg	  *) future_libdirs="$future_libdirs $libdir" ;;
5968ee3138f1Smrg	  esac
5969ee3138f1Smrg	fi
5970ee3138f1Smrg
5971ee3138f1Smrg	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
5972ee3138f1Smrg	test "X$dir" = "X$file/" && dir=
5973ee3138f1Smrg	dir="$dir$objdir"
5974ee3138f1Smrg
5975ee3138f1Smrg	if test -n "$relink_command"; then
5976ee3138f1Smrg	  # Determine the prefix the user has applied to our future dir.
5977ee3138f1Smrg	  inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
5978ee3138f1Smrg
5979ee3138f1Smrg	  # Don't allow the user to place us outside of our expected
5980ee3138f1Smrg	  # location b/c this prevents finding dependent libraries that
5981ee3138f1Smrg	  # are installed to the same prefix.
5982ee3138f1Smrg	  # At present, this check doesn't affect windows .dll's that
5983ee3138f1Smrg	  # are installed into $libdir/../bin (currently, that works fine)
5984ee3138f1Smrg	  # but it's something to keep an eye on.
5985ee3138f1Smrg	  if test "$inst_prefix_dir" = "$destdir"; then
5986ee3138f1Smrg	    $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
5987ee3138f1Smrg	    exit $EXIT_FAILURE
5988ee3138f1Smrg	  fi
5989ee3138f1Smrg
5990ee3138f1Smrg	  if test -n "$inst_prefix_dir"; then
5991ee3138f1Smrg	    # Stick the inst_prefix_dir data into the link command.
5992ee3138f1Smrg	    relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP`
5993ee3138f1Smrg	  else
5994ee3138f1Smrg	    relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP`
5995ee3138f1Smrg	  fi
5996ee3138f1Smrg
5997ee3138f1Smrg	  $echo "$modename: warning: relinking \`$file'" 1>&2
5998ee3138f1Smrg	  $show "$relink_command"
5999ee3138f1Smrg	  if $run eval "$relink_command"; then :
6000ee3138f1Smrg	  else
6001ee3138f1Smrg	    $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
6002ee3138f1Smrg	    exit $EXIT_FAILURE
6003ee3138f1Smrg	  fi
6004ee3138f1Smrg	fi
6005ee3138f1Smrg
6006ee3138f1Smrg	# See the names of the shared library.
6007ee3138f1Smrg	set dummy $library_names
6008ee3138f1Smrg	if test -n "$2"; then
6009ee3138f1Smrg	  realname="$2"
6010ee3138f1Smrg	  shift
6011ee3138f1Smrg	  shift
6012ee3138f1Smrg
6013ee3138f1Smrg	  srcname="$realname"
6014ee3138f1Smrg	  test -n "$relink_command" && srcname="$realname"T
6015ee3138f1Smrg
6016ee3138f1Smrg	  # Install the shared library and build the symlinks.
6017ee3138f1Smrg	  $show "$install_prog $dir/$srcname $destdir/$realname"
6018ee3138f1Smrg	  $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
6019ee3138f1Smrg	  if test -n "$stripme" && test -n "$striplib"; then
6020ee3138f1Smrg	    $show "$striplib $destdir/$realname"
6021ee3138f1Smrg	    $run eval "$striplib $destdir/$realname" || exit $?
6022ee3138f1Smrg	  fi
6023ee3138f1Smrg
6024ee3138f1Smrg	  if test "$#" -gt 0; then
6025ee3138f1Smrg	    # Delete the old symlinks, and create new ones.
6026ee3138f1Smrg	    # Try `ln -sf' first, because the `ln' binary might depend on
6027ee3138f1Smrg	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
6028ee3138f1Smrg	    # so we also need to try rm && ln -s.
6029ee3138f1Smrg	    for linkname
6030ee3138f1Smrg	    do
6031ee3138f1Smrg	      if test "$linkname" != "$realname"; then
6032ee3138f1Smrg                $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
6033ee3138f1Smrg                $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
6034ee3138f1Smrg	      fi
6035ee3138f1Smrg	    done
6036ee3138f1Smrg	  fi
6037ee3138f1Smrg
6038ee3138f1Smrg	  # Do each command in the postinstall commands.
6039ee3138f1Smrg	  lib="$destdir/$realname"
6040ee3138f1Smrg	  cmds=$postinstall_cmds
6041ee3138f1Smrg	  save_ifs="$IFS"; IFS='~'
6042ee3138f1Smrg	  for cmd in $cmds; do
6043ee3138f1Smrg	    IFS="$save_ifs"
6044ee3138f1Smrg	    eval cmd=\"$cmd\"
6045ee3138f1Smrg	    $show "$cmd"
6046ee3138f1Smrg	    $run eval "$cmd" || {
6047ee3138f1Smrg	      lt_exit=$?
6048ee3138f1Smrg
6049ee3138f1Smrg	      # Restore the uninstalled library and exit
6050ee3138f1Smrg	      if test "$mode" = relink; then
6051ee3138f1Smrg		$run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
6052ee3138f1Smrg	      fi
6053ee3138f1Smrg
6054ee3138f1Smrg	      exit $lt_exit
6055ee3138f1Smrg	    }
6056ee3138f1Smrg	  done
6057ee3138f1Smrg	  IFS="$save_ifs"
6058ee3138f1Smrg	fi
6059ee3138f1Smrg
6060ee3138f1Smrg	# Install the pseudo-library for information purposes.
6061ee3138f1Smrg	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6062ee3138f1Smrg	instname="$dir/$name"i
6063ee3138f1Smrg	$show "$install_prog $instname $destdir/$name"
6064ee3138f1Smrg	$run eval "$install_prog $instname $destdir/$name" || exit $?
6065ee3138f1Smrg
6066ee3138f1Smrg	# Maybe install the static library, too.
6067ee3138f1Smrg	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
6068ee3138f1Smrg	;;
6069ee3138f1Smrg
6070ee3138f1Smrg      *.lo)
6071ee3138f1Smrg	# Install (i.e. copy) a libtool object.
6072ee3138f1Smrg
6073ee3138f1Smrg	# Figure out destination file name, if it wasn't already specified.
6074ee3138f1Smrg	if test -n "$destname"; then
6075ee3138f1Smrg	  destfile="$destdir/$destname"
6076ee3138f1Smrg	else
6077ee3138f1Smrg	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6078ee3138f1Smrg	  destfile="$destdir/$destfile"
6079ee3138f1Smrg	fi
6080ee3138f1Smrg
6081ee3138f1Smrg	# Deduce the name of the destination old-style object file.
6082ee3138f1Smrg	case $destfile in
6083ee3138f1Smrg	*.lo)
6084ee3138f1Smrg	  staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
6085ee3138f1Smrg	  ;;
6086ee3138f1Smrg	*.$objext)
6087ee3138f1Smrg	  staticdest="$destfile"
6088ee3138f1Smrg	  destfile=
6089ee3138f1Smrg	  ;;
6090ee3138f1Smrg	*)
6091ee3138f1Smrg	  $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
6092ee3138f1Smrg	  $echo "$help" 1>&2
6093ee3138f1Smrg	  exit $EXIT_FAILURE
6094ee3138f1Smrg	  ;;
6095ee3138f1Smrg	esac
6096ee3138f1Smrg
6097ee3138f1Smrg	# Install the libtool object if requested.
6098ee3138f1Smrg	if test -n "$destfile"; then
6099ee3138f1Smrg	  $show "$install_prog $file $destfile"
6100ee3138f1Smrg	  $run eval "$install_prog $file $destfile" || exit $?
6101ee3138f1Smrg	fi
6102ee3138f1Smrg
6103ee3138f1Smrg	# Install the old object if enabled.
6104ee3138f1Smrg	if test "$build_old_libs" = yes; then
6105ee3138f1Smrg	  # Deduce the name of the old-style object file.
6106ee3138f1Smrg	  staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
6107ee3138f1Smrg
6108ee3138f1Smrg	  $show "$install_prog $staticobj $staticdest"
6109ee3138f1Smrg	  $run eval "$install_prog \$staticobj \$staticdest" || exit $?
6110ee3138f1Smrg	fi
6111ee3138f1Smrg	exit $EXIT_SUCCESS
6112ee3138f1Smrg	;;
6113ee3138f1Smrg
6114ee3138f1Smrg      *)
6115ee3138f1Smrg	# Figure out destination file name, if it wasn't already specified.
6116ee3138f1Smrg	if test -n "$destname"; then
6117ee3138f1Smrg	  destfile="$destdir/$destname"
6118ee3138f1Smrg	else
6119ee3138f1Smrg	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6120ee3138f1Smrg	  destfile="$destdir/$destfile"
6121ee3138f1Smrg	fi
6122ee3138f1Smrg
6123ee3138f1Smrg	# If the file is missing, and there is a .exe on the end, strip it
6124ee3138f1Smrg	# because it is most likely a libtool script we actually want to
6125ee3138f1Smrg	# install
6126ee3138f1Smrg	stripped_ext=""
6127ee3138f1Smrg	case $file in
6128ee3138f1Smrg	  *.exe)
6129ee3138f1Smrg	    if test ! -f "$file"; then
6130ee3138f1Smrg	      file=`$echo $file|${SED} 's,.exe$,,'`
6131ee3138f1Smrg	      stripped_ext=".exe"
6132ee3138f1Smrg	    fi
6133ee3138f1Smrg	    ;;
6134ee3138f1Smrg	esac
6135ee3138f1Smrg
6136ee3138f1Smrg	# Do a test to see if this is really a libtool program.
6137ee3138f1Smrg	case $host in
6138ee3138f1Smrg	*cygwin*|*mingw*)
6139ee3138f1Smrg	    wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
6140ee3138f1Smrg	    ;;
6141ee3138f1Smrg	*)
6142ee3138f1Smrg	    wrapper=$file
6143ee3138f1Smrg	    ;;
6144ee3138f1Smrg	esac
6145ee3138f1Smrg	if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
6146ee3138f1Smrg	  notinst_deplibs=
6147ee3138f1Smrg	  relink_command=
6148ee3138f1Smrg
6149ee3138f1Smrg	  # Note that it is not necessary on cygwin/mingw to append a dot to
6150ee3138f1Smrg	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
6151ee3138f1Smrg	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
6152ee3138f1Smrg	  # `FILE.' does not work on cygwin managed mounts.
6153ee3138f1Smrg	  #
6154ee3138f1Smrg	  # If there is no directory component, then add one.
6155ee3138f1Smrg	  case $wrapper in
6156ee3138f1Smrg	  */* | *\\*) . ${wrapper} ;;
6157ee3138f1Smrg	  *) . ./${wrapper} ;;
6158ee3138f1Smrg	  esac
6159ee3138f1Smrg
6160ee3138f1Smrg	  # Check the variables that should have been set.
6161ee3138f1Smrg	  if test -z "$notinst_deplibs"; then
6162ee3138f1Smrg	    $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
6163ee3138f1Smrg	    exit $EXIT_FAILURE
6164ee3138f1Smrg	  fi
6165ee3138f1Smrg
6166ee3138f1Smrg	  finalize=yes
6167ee3138f1Smrg	  for lib in $notinst_deplibs; do
6168ee3138f1Smrg	    # Check to see that each library is installed.
6169ee3138f1Smrg	    libdir=
6170ee3138f1Smrg	    if test -f "$lib"; then
6171ee3138f1Smrg	      # If there is no directory component, then add one.
6172ee3138f1Smrg	      case $lib in
6173ee3138f1Smrg	      */* | *\\*) . $lib ;;
6174ee3138f1Smrg	      *) . ./$lib ;;
6175ee3138f1Smrg	      esac
6176ee3138f1Smrg	    fi
6177ee3138f1Smrg	    libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
6178ee3138f1Smrg	    if test -n "$libdir" && test ! -f "$libfile"; then
6179ee3138f1Smrg	      $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
6180ee3138f1Smrg	      finalize=no
6181ee3138f1Smrg	    fi
6182ee3138f1Smrg	  done
6183ee3138f1Smrg
6184ee3138f1Smrg	  relink_command=
6185ee3138f1Smrg	  # Note that it is not necessary on cygwin/mingw to append a dot to
6186ee3138f1Smrg	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
6187ee3138f1Smrg	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
6188ee3138f1Smrg	  # `FILE.' does not work on cygwin managed mounts.
6189ee3138f1Smrg	  #
6190ee3138f1Smrg	  # If there is no directory component, then add one.
6191ee3138f1Smrg	  case $wrapper in
6192ee3138f1Smrg	  */* | *\\*) . ${wrapper} ;;
6193ee3138f1Smrg	  *) . ./${wrapper} ;;
6194ee3138f1Smrg	  esac
6195ee3138f1Smrg
6196ee3138f1Smrg	  outputname=
6197ee3138f1Smrg	  if test "$fast_install" = no && test -n "$relink_command"; then
6198ee3138f1Smrg	    if test "$finalize" = yes && test -z "$run"; then
6199ee3138f1Smrg	      tmpdir=`func_mktempdir`
6200ee3138f1Smrg	      file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
6201ee3138f1Smrg	      outputname="$tmpdir/$file"
6202ee3138f1Smrg	      # Replace the output file specification.
6203ee3138f1Smrg	      relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP`
6204ee3138f1Smrg
6205ee3138f1Smrg	      $show "$relink_command"
6206ee3138f1Smrg	      if $run eval "$relink_command"; then :
6207ee3138f1Smrg	      else
6208ee3138f1Smrg		$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
6209ee3138f1Smrg		${rm}r "$tmpdir"
6210ee3138f1Smrg		continue
6211ee3138f1Smrg	      fi
6212ee3138f1Smrg	      file="$outputname"
6213ee3138f1Smrg	    else
6214ee3138f1Smrg	      $echo "$modename: warning: cannot relink \`$file'" 1>&2
6215ee3138f1Smrg	    fi
6216ee3138f1Smrg	  else
6217ee3138f1Smrg	    # Install the binary that we compiled earlier.
6218ee3138f1Smrg	    file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
6219ee3138f1Smrg	  fi
6220ee3138f1Smrg	fi
6221ee3138f1Smrg
6222ee3138f1Smrg	# remove .exe since cygwin /usr/bin/install will append another
6223ee3138f1Smrg	# one anyway 
6224ee3138f1Smrg	case $install_prog,$host in
6225ee3138f1Smrg	*/usr/bin/install*,*cygwin*)
6226ee3138f1Smrg	  case $file:$destfile in
6227ee3138f1Smrg	  *.exe:*.exe)
6228ee3138f1Smrg	    # this is ok
6229ee3138f1Smrg	    ;;
6230ee3138f1Smrg	  *.exe:*)
6231ee3138f1Smrg	    destfile=$destfile.exe
6232ee3138f1Smrg	    ;;
6233ee3138f1Smrg	  *:*.exe)
6234ee3138f1Smrg	    destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
6235ee3138f1Smrg	    ;;
6236ee3138f1Smrg	  esac
6237ee3138f1Smrg	  ;;
6238ee3138f1Smrg	esac
6239ee3138f1Smrg	$show "$install_prog$stripme $file $destfile"
6240ee3138f1Smrg	$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
6241ee3138f1Smrg	test -n "$outputname" && ${rm}r "$tmpdir"
6242ee3138f1Smrg	;;
6243ee3138f1Smrg      esac
6244ee3138f1Smrg    done
6245ee3138f1Smrg
6246ee3138f1Smrg    for file in $staticlibs; do
6247ee3138f1Smrg      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6248ee3138f1Smrg
6249ee3138f1Smrg      # Set up the ranlib parameters.
6250ee3138f1Smrg      oldlib="$destdir/$name"
6251ee3138f1Smrg
6252ee3138f1Smrg      $show "$install_prog $file $oldlib"
6253ee3138f1Smrg      $run eval "$install_prog \$file \$oldlib" || exit $?
6254ee3138f1Smrg
6255ee3138f1Smrg      if test -n "$stripme" && test -n "$old_striplib"; then
6256ee3138f1Smrg	$show "$old_striplib $oldlib"
6257ee3138f1Smrg	$run eval "$old_striplib $oldlib" || exit $?
6258ee3138f1Smrg      fi
6259ee3138f1Smrg
6260ee3138f1Smrg      # Do each command in the postinstall commands.
6261ee3138f1Smrg      cmds=$old_postinstall_cmds
6262ee3138f1Smrg      save_ifs="$IFS"; IFS='~'
6263ee3138f1Smrg      for cmd in $cmds; do
6264ee3138f1Smrg	IFS="$save_ifs"
6265ee3138f1Smrg	eval cmd=\"$cmd\"
6266ee3138f1Smrg	$show "$cmd"
6267ee3138f1Smrg	$run eval "$cmd" || exit $?
6268ee3138f1Smrg      done
6269ee3138f1Smrg      IFS="$save_ifs"
6270ee3138f1Smrg    done
6271ee3138f1Smrg
6272ee3138f1Smrg    if test -n "$future_libdirs"; then
6273ee3138f1Smrg      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
6274ee3138f1Smrg    fi
6275ee3138f1Smrg
6276ee3138f1Smrg    if test -n "$current_libdirs"; then
6277ee3138f1Smrg      # Maybe just do a dry run.
6278ee3138f1Smrg      test -n "$run" && current_libdirs=" -n$current_libdirs"
6279ee3138f1Smrg      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
6280ee3138f1Smrg    else
6281ee3138f1Smrg      exit $EXIT_SUCCESS
6282ee3138f1Smrg    fi
6283ee3138f1Smrg    ;;
6284ee3138f1Smrg
6285ee3138f1Smrg  # libtool finish mode
6286ee3138f1Smrg  finish)
6287ee3138f1Smrg    modename="$modename: finish"
6288ee3138f1Smrg    libdirs="$nonopt"
6289ee3138f1Smrg    admincmds=
6290ee3138f1Smrg
6291ee3138f1Smrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
6292ee3138f1Smrg      for dir
6293ee3138f1Smrg      do
6294ee3138f1Smrg	libdirs="$libdirs $dir"
6295ee3138f1Smrg      done
6296ee3138f1Smrg
6297ee3138f1Smrg      for libdir in $libdirs; do
6298ee3138f1Smrg	if test -n "$finish_cmds"; then
6299ee3138f1Smrg	  # Do each command in the finish commands.
6300ee3138f1Smrg	  cmds=$finish_cmds
6301ee3138f1Smrg	  save_ifs="$IFS"; IFS='~'
6302ee3138f1Smrg	  for cmd in $cmds; do
6303ee3138f1Smrg	    IFS="$save_ifs"
6304ee3138f1Smrg	    eval cmd=\"$cmd\"
6305ee3138f1Smrg	    $show "$cmd"
6306ee3138f1Smrg	    $run eval "$cmd" || admincmds="$admincmds
6307ee3138f1Smrg       $cmd"
6308ee3138f1Smrg	  done
6309ee3138f1Smrg	  IFS="$save_ifs"
6310ee3138f1Smrg	fi
6311ee3138f1Smrg	if test -n "$finish_eval"; then
6312ee3138f1Smrg	  # Do the single finish_eval.
6313ee3138f1Smrg	  eval cmds=\"$finish_eval\"
6314ee3138f1Smrg	  $run eval "$cmds" || admincmds="$admincmds
6315ee3138f1Smrg       $cmds"
6316ee3138f1Smrg	fi
6317ee3138f1Smrg      done
6318ee3138f1Smrg    fi
6319ee3138f1Smrg
6320ee3138f1Smrg    # Exit here if they wanted silent mode.
6321ee3138f1Smrg    test "$show" = : && exit $EXIT_SUCCESS
6322ee3138f1Smrg
6323ee3138f1Smrg    $echo "X----------------------------------------------------------------------" | $Xsed
6324ee3138f1Smrg    $echo "Libraries have been installed in:"
6325ee3138f1Smrg    for libdir in $libdirs; do
6326ee3138f1Smrg      $echo "   $libdir"
6327ee3138f1Smrg    done
6328ee3138f1Smrg    $echo
6329ee3138f1Smrg    $echo "If you ever happen to want to link against installed libraries"
6330ee3138f1Smrg    $echo "in a given directory, LIBDIR, you must either use libtool, and"
6331ee3138f1Smrg    $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
6332ee3138f1Smrg    $echo "flag during linking and do at least one of the following:"
6333ee3138f1Smrg    if test -n "$shlibpath_var"; then
6334ee3138f1Smrg      $echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
6335ee3138f1Smrg      $echo "     during execution"
6336ee3138f1Smrg    fi
6337ee3138f1Smrg    if test -n "$runpath_var"; then
6338ee3138f1Smrg      $echo "   - add LIBDIR to the \`$runpath_var' environment variable"
6339ee3138f1Smrg      $echo "     during linking"
6340ee3138f1Smrg    fi
6341ee3138f1Smrg    if test -n "$hardcode_libdir_flag_spec"; then
6342ee3138f1Smrg      libdir=LIBDIR
6343ee3138f1Smrg      eval flag=\"$hardcode_libdir_flag_spec\"
6344ee3138f1Smrg
6345ee3138f1Smrg      $echo "   - use the \`$flag' linker flag"
6346ee3138f1Smrg    fi
6347ee3138f1Smrg    if test -n "$admincmds"; then
6348ee3138f1Smrg      $echo "   - have your system administrator run these commands:$admincmds"
6349ee3138f1Smrg    fi
6350ee3138f1Smrg    if test -f /etc/ld.so.conf; then
6351ee3138f1Smrg      $echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
6352ee3138f1Smrg    fi
6353ee3138f1Smrg    $echo
6354ee3138f1Smrg    $echo "See any operating system documentation about shared libraries for"
6355ee3138f1Smrg    $echo "more information, such as the ld(1) and ld.so(8) manual pages."
6356ee3138f1Smrg    $echo "X----------------------------------------------------------------------" | $Xsed
6357ee3138f1Smrg    exit $EXIT_SUCCESS
6358ee3138f1Smrg    ;;
6359ee3138f1Smrg
6360ee3138f1Smrg  # libtool execute mode
6361ee3138f1Smrg  execute)
6362ee3138f1Smrg    modename="$modename: execute"
6363ee3138f1Smrg
6364ee3138f1Smrg    # The first argument is the command name.
6365ee3138f1Smrg    cmd="$nonopt"
6366ee3138f1Smrg    if test -z "$cmd"; then
6367ee3138f1Smrg      $echo "$modename: you must specify a COMMAND" 1>&2
6368ee3138f1Smrg      $echo "$help"
6369ee3138f1Smrg      exit $EXIT_FAILURE
6370ee3138f1Smrg    fi
6371ee3138f1Smrg
6372ee3138f1Smrg    # Handle -dlopen flags immediately.
6373ee3138f1Smrg    for file in $execute_dlfiles; do
6374ee3138f1Smrg      if test ! -f "$file"; then
6375ee3138f1Smrg	$echo "$modename: \`$file' is not a file" 1>&2
6376ee3138f1Smrg	$echo "$help" 1>&2
6377ee3138f1Smrg	exit $EXIT_FAILURE
6378ee3138f1Smrg      fi
6379ee3138f1Smrg
6380ee3138f1Smrg      dir=
6381ee3138f1Smrg      case $file in
6382ee3138f1Smrg      *.la)
6383ee3138f1Smrg	# Check to see that this really is a libtool archive.
6384ee3138f1Smrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
6385ee3138f1Smrg	else
6386ee3138f1Smrg	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
6387ee3138f1Smrg	  $echo "$help" 1>&2
6388ee3138f1Smrg	  exit $EXIT_FAILURE
6389ee3138f1Smrg	fi
6390ee3138f1Smrg
6391ee3138f1Smrg	# Read the libtool library.
6392ee3138f1Smrg	dlname=
6393ee3138f1Smrg	library_names=
6394ee3138f1Smrg
6395ee3138f1Smrg	# If there is no directory component, then add one.
6396ee3138f1Smrg	case $file in
6397ee3138f1Smrg	*/* | *\\*) . $file ;;
6398ee3138f1Smrg	*) . ./$file ;;
6399ee3138f1Smrg	esac
6400ee3138f1Smrg
6401ee3138f1Smrg	# Skip this library if it cannot be dlopened.
6402ee3138f1Smrg	if test -z "$dlname"; then
6403ee3138f1Smrg	  # Warn if it was a shared library.
6404ee3138f1Smrg	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
6405ee3138f1Smrg	  continue
6406ee3138f1Smrg	fi
6407ee3138f1Smrg
6408ee3138f1Smrg	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6409ee3138f1Smrg	test "X$dir" = "X$file" && dir=.
6410ee3138f1Smrg
6411ee3138f1Smrg	if test -f "$dir/$objdir/$dlname"; then
6412ee3138f1Smrg	  dir="$dir/$objdir"
6413ee3138f1Smrg	else
6414ee3138f1Smrg	  if test ! -f "$dir/$dlname"; then
6415ee3138f1Smrg	    $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
6416ee3138f1Smrg	    exit $EXIT_FAILURE
6417ee3138f1Smrg	  fi
6418ee3138f1Smrg	fi
6419ee3138f1Smrg	;;
6420ee3138f1Smrg
6421ee3138f1Smrg      *.lo)
6422ee3138f1Smrg	# Just add the directory containing the .lo file.
6423ee3138f1Smrg	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6424ee3138f1Smrg	test "X$dir" = "X$file" && dir=.
6425ee3138f1Smrg	;;
6426ee3138f1Smrg
6427ee3138f1Smrg      *)
6428ee3138f1Smrg	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
6429ee3138f1Smrg	continue
6430ee3138f1Smrg	;;
6431ee3138f1Smrg      esac
6432ee3138f1Smrg
6433ee3138f1Smrg      # Get the absolute pathname.
6434ee3138f1Smrg      absdir=`cd "$dir" && pwd`
6435ee3138f1Smrg      test -n "$absdir" && dir="$absdir"
6436ee3138f1Smrg
6437ee3138f1Smrg      # Now add the directory to shlibpath_var.
6438ee3138f1Smrg      if eval "test -z \"\$$shlibpath_var\""; then
6439ee3138f1Smrg	eval "$shlibpath_var=\"\$dir\""
6440ee3138f1Smrg      else
6441ee3138f1Smrg	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
6442ee3138f1Smrg      fi
6443ee3138f1Smrg    done
6444ee3138f1Smrg
6445ee3138f1Smrg    # This variable tells wrapper scripts just to set shlibpath_var
6446ee3138f1Smrg    # rather than running their programs.
6447ee3138f1Smrg    libtool_execute_magic="$magic"
6448ee3138f1Smrg
6449ee3138f1Smrg    # Check if any of the arguments is a wrapper script.
6450ee3138f1Smrg    args=
6451ee3138f1Smrg    for file
6452ee3138f1Smrg    do
6453ee3138f1Smrg      case $file in
6454ee3138f1Smrg      -*) ;;
6455ee3138f1Smrg      *)
6456ee3138f1Smrg	# Do a test to see if this is really a libtool program.
6457ee3138f1Smrg	if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6458ee3138f1Smrg	  # If there is no directory component, then add one.
6459ee3138f1Smrg	  case $file in
6460ee3138f1Smrg	  */* | *\\*) . $file ;;
6461ee3138f1Smrg	  *) . ./$file ;;
6462ee3138f1Smrg	  esac
6463ee3138f1Smrg
6464ee3138f1Smrg	  # Transform arg to wrapped name.
6465ee3138f1Smrg	  file="$progdir/$program"
6466ee3138f1Smrg	fi
6467ee3138f1Smrg	;;
6468ee3138f1Smrg      esac
6469ee3138f1Smrg      # Quote arguments (to preserve shell metacharacters).
6470ee3138f1Smrg      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
6471ee3138f1Smrg      args="$args \"$file\""
6472ee3138f1Smrg    done
6473ee3138f1Smrg
6474ee3138f1Smrg    if test -z "$run"; then
6475ee3138f1Smrg      if test -n "$shlibpath_var"; then
6476ee3138f1Smrg	# Export the shlibpath_var.
6477ee3138f1Smrg	eval "export $shlibpath_var"
6478ee3138f1Smrg      fi
6479ee3138f1Smrg
6480ee3138f1Smrg      # Restore saved environment variables
6481ee3138f1Smrg      for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
6482ee3138f1Smrg      do
6483ee3138f1Smrg	eval "if test \"\${save_$lt_var+set}\" = set; then
6484ee3138f1Smrg		$lt_var=\$save_$lt_var; export $lt_var
6485ee3138f1Smrg	      fi"
6486ee3138f1Smrg      done
6487ee3138f1Smrg
6488ee3138f1Smrg      # Now prepare to actually exec the command.
6489ee3138f1Smrg      exec_cmd="\$cmd$args"
6490ee3138f1Smrg    else
6491ee3138f1Smrg      # Display what would be done.
6492ee3138f1Smrg      if test -n "$shlibpath_var"; then
6493ee3138f1Smrg	eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
6494ee3138f1Smrg	$echo "export $shlibpath_var"
6495ee3138f1Smrg      fi
6496ee3138f1Smrg      $echo "$cmd$args"
6497ee3138f1Smrg      exit $EXIT_SUCCESS
6498ee3138f1Smrg    fi
6499ee3138f1Smrg    ;;
6500ee3138f1Smrg
6501ee3138f1Smrg  # libtool clean and uninstall mode
6502ee3138f1Smrg  clean | uninstall)
6503ee3138f1Smrg    modename="$modename: $mode"
6504ee3138f1Smrg    rm="$nonopt"
6505ee3138f1Smrg    files=
6506ee3138f1Smrg    rmforce=
6507ee3138f1Smrg    exit_status=0
6508ee3138f1Smrg
6509ee3138f1Smrg    # This variable tells wrapper scripts just to set variables rather
6510ee3138f1Smrg    # than running their programs.
6511ee3138f1Smrg    libtool_install_magic="$magic"
6512ee3138f1Smrg
6513ee3138f1Smrg    for arg
6514ee3138f1Smrg    do
6515ee3138f1Smrg      case $arg in
6516ee3138f1Smrg      -f) rm="$rm $arg"; rmforce=yes ;;
6517ee3138f1Smrg      -*) rm="$rm $arg" ;;
6518ee3138f1Smrg      *) files="$files $arg" ;;
6519ee3138f1Smrg      esac
6520ee3138f1Smrg    done
6521ee3138f1Smrg
6522ee3138f1Smrg    if test -z "$rm"; then
6523ee3138f1Smrg      $echo "$modename: you must specify an RM program" 1>&2
6524ee3138f1Smrg      $echo "$help" 1>&2
6525ee3138f1Smrg      exit $EXIT_FAILURE
6526ee3138f1Smrg    fi
6527ee3138f1Smrg
6528ee3138f1Smrg    rmdirs=
6529ee3138f1Smrg
6530ee3138f1Smrg    origobjdir="$objdir"
6531ee3138f1Smrg    for file in $files; do
6532ee3138f1Smrg      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6533ee3138f1Smrg      if test "X$dir" = "X$file"; then
6534ee3138f1Smrg	dir=.
6535ee3138f1Smrg	objdir="$origobjdir"
6536ee3138f1Smrg      else
6537ee3138f1Smrg	objdir="$dir/$origobjdir"
6538ee3138f1Smrg      fi
6539ee3138f1Smrg      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6540ee3138f1Smrg      test "$mode" = uninstall && objdir="$dir"
6541ee3138f1Smrg
6542ee3138f1Smrg      # Remember objdir for removal later, being careful to avoid duplicates
6543ee3138f1Smrg      if test "$mode" = clean; then
6544ee3138f1Smrg	case " $rmdirs " in
6545ee3138f1Smrg	  *" $objdir "*) ;;
6546ee3138f1Smrg	  *) rmdirs="$rmdirs $objdir" ;;
6547ee3138f1Smrg	esac
6548ee3138f1Smrg      fi
6549ee3138f1Smrg
6550ee3138f1Smrg      # Don't error if the file doesn't exist and rm -f was used.
6551ee3138f1Smrg      if (test -L "$file") >/dev/null 2>&1 \
6552ee3138f1Smrg	|| (test -h "$file") >/dev/null 2>&1 \
6553ee3138f1Smrg	|| test -f "$file"; then
6554ee3138f1Smrg	:
6555ee3138f1Smrg      elif test -d "$file"; then
6556ee3138f1Smrg	exit_status=1
6557ee3138f1Smrg	continue
6558ee3138f1Smrg      elif test "$rmforce" = yes; then
6559ee3138f1Smrg	continue
6560ee3138f1Smrg      fi
6561ee3138f1Smrg
6562ee3138f1Smrg      rmfiles="$file"
6563ee3138f1Smrg
6564ee3138f1Smrg      case $name in
6565ee3138f1Smrg      *.la)
6566ee3138f1Smrg	# Possibly a libtool archive, so verify it.
6567ee3138f1Smrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6568ee3138f1Smrg	  . $dir/$name
6569ee3138f1Smrg
6570ee3138f1Smrg	  # Delete the libtool libraries and symlinks.
6571ee3138f1Smrg	  for n in $library_names; do
6572ee3138f1Smrg	    rmfiles="$rmfiles $objdir/$n"
6573ee3138f1Smrg	  done
6574ee3138f1Smrg	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
6575ee3138f1Smrg
6576ee3138f1Smrg	  case "$mode" in
6577ee3138f1Smrg	  clean)
6578ee3138f1Smrg	    case "  $library_names " in
6579ee3138f1Smrg	    # "  " in the beginning catches empty $dlname
6580ee3138f1Smrg	    *" $dlname "*) ;;
6581ee3138f1Smrg	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
6582ee3138f1Smrg	    esac
6583ee3138f1Smrg	     test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
6584ee3138f1Smrg	    ;;
6585ee3138f1Smrg	  uninstall)
6586ee3138f1Smrg	    if test -n "$library_names"; then
6587ee3138f1Smrg	      # Do each command in the postuninstall commands.
6588ee3138f1Smrg	      cmds=$postuninstall_cmds
6589ee3138f1Smrg	      save_ifs="$IFS"; IFS='~'
6590ee3138f1Smrg	      for cmd in $cmds; do
6591ee3138f1Smrg		IFS="$save_ifs"
6592ee3138f1Smrg		eval cmd=\"$cmd\"
6593ee3138f1Smrg		$show "$cmd"
6594ee3138f1Smrg		$run eval "$cmd"
6595ee3138f1Smrg		if test "$?" -ne 0 && test "$rmforce" != yes; then
6596ee3138f1Smrg		  exit_status=1
6597ee3138f1Smrg		fi
6598ee3138f1Smrg	      done
6599ee3138f1Smrg	      IFS="$save_ifs"
6600ee3138f1Smrg	    fi
6601ee3138f1Smrg
6602ee3138f1Smrg	    if test -n "$old_library"; then
6603ee3138f1Smrg	      # Do each command in the old_postuninstall commands.
6604ee3138f1Smrg	      cmds=$old_postuninstall_cmds
6605ee3138f1Smrg	      save_ifs="$IFS"; IFS='~'
6606ee3138f1Smrg	      for cmd in $cmds; do
6607ee3138f1Smrg		IFS="$save_ifs"
6608ee3138f1Smrg		eval cmd=\"$cmd\"
6609ee3138f1Smrg		$show "$cmd"
6610ee3138f1Smrg		$run eval "$cmd"
6611ee3138f1Smrg		if test "$?" -ne 0 && test "$rmforce" != yes; then
6612ee3138f1Smrg		  exit_status=1
6613ee3138f1Smrg		fi
6614ee3138f1Smrg	      done
6615ee3138f1Smrg	      IFS="$save_ifs"
6616ee3138f1Smrg	    fi
6617ee3138f1Smrg	    # FIXME: should reinstall the best remaining shared library.
6618ee3138f1Smrg	    ;;
6619ee3138f1Smrg	  esac
6620ee3138f1Smrg	fi
6621ee3138f1Smrg	;;
6622ee3138f1Smrg
6623ee3138f1Smrg      *.lo)
6624ee3138f1Smrg	# Possibly a libtool object, so verify it.
6625ee3138f1Smrg	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6626ee3138f1Smrg
6627ee3138f1Smrg	  # Read the .lo file
6628ee3138f1Smrg	  . $dir/$name
6629ee3138f1Smrg
6630ee3138f1Smrg	  # Add PIC object to the list of files to remove.
6631ee3138f1Smrg	  if test -n "$pic_object" \
6632ee3138f1Smrg	     && test "$pic_object" != none; then
6633ee3138f1Smrg	    rmfiles="$rmfiles $dir/$pic_object"
6634ee3138f1Smrg	  fi
6635ee3138f1Smrg
6636ee3138f1Smrg	  # Add non-PIC object to the list of files to remove.
6637ee3138f1Smrg	  if test -n "$non_pic_object" \
6638ee3138f1Smrg	     && test "$non_pic_object" != none; then
6639ee3138f1Smrg	    rmfiles="$rmfiles $dir/$non_pic_object"
6640ee3138f1Smrg	  fi
6641ee3138f1Smrg	fi
6642ee3138f1Smrg	;;
6643ee3138f1Smrg
6644ee3138f1Smrg      *)
6645ee3138f1Smrg	if test "$mode" = clean ; then
6646ee3138f1Smrg	  noexename=$name
6647ee3138f1Smrg	  case $file in
6648ee3138f1Smrg	  *.exe)
6649ee3138f1Smrg	    file=`$echo $file|${SED} 's,.exe$,,'`
6650ee3138f1Smrg	    noexename=`$echo $name|${SED} 's,.exe$,,'`
6651ee3138f1Smrg	    # $file with .exe has already been added to rmfiles,
6652ee3138f1Smrg	    # add $file without .exe
6653ee3138f1Smrg	    rmfiles="$rmfiles $file"
6654ee3138f1Smrg	    ;;
6655ee3138f1Smrg	  esac
6656ee3138f1Smrg	  # Do a test to see if this is a libtool program.
6657ee3138f1Smrg	  if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6658ee3138f1Smrg	    relink_command=
6659ee3138f1Smrg	    . $dir/$noexename
6660ee3138f1Smrg
6661ee3138f1Smrg	    # note $name still contains .exe if it was in $file originally
6662ee3138f1Smrg	    # as does the version of $file that was added into $rmfiles
6663ee3138f1Smrg	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
6664ee3138f1Smrg	    if test "$fast_install" = yes && test -n "$relink_command"; then
6665ee3138f1Smrg	      rmfiles="$rmfiles $objdir/lt-$name"
6666ee3138f1Smrg	    fi
6667ee3138f1Smrg	    if test "X$noexename" != "X$name" ; then
6668ee3138f1Smrg	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
6669ee3138f1Smrg	    fi
6670ee3138f1Smrg	  fi
6671ee3138f1Smrg	fi
6672ee3138f1Smrg	;;
6673ee3138f1Smrg      esac
6674ee3138f1Smrg      $show "$rm $rmfiles"
6675ee3138f1Smrg      $run $rm $rmfiles || exit_status=1
6676ee3138f1Smrg    done
6677ee3138f1Smrg    objdir="$origobjdir"
6678ee3138f1Smrg
6679ee3138f1Smrg    # Try to remove the ${objdir}s in the directories where we deleted files
6680ee3138f1Smrg    for dir in $rmdirs; do
6681ee3138f1Smrg      if test -d "$dir"; then
6682ee3138f1Smrg	$show "rmdir $dir"
6683ee3138f1Smrg	$run rmdir $dir >/dev/null 2>&1
6684ee3138f1Smrg      fi
6685ee3138f1Smrg    done
6686ee3138f1Smrg
6687ee3138f1Smrg    exit $exit_status
6688ee3138f1Smrg    ;;
6689ee3138f1Smrg
6690ee3138f1Smrg  "")
6691ee3138f1Smrg    $echo "$modename: you must specify a MODE" 1>&2
6692ee3138f1Smrg    $echo "$generic_help" 1>&2
6693ee3138f1Smrg    exit $EXIT_FAILURE
6694ee3138f1Smrg    ;;
6695ee3138f1Smrg  esac
6696ee3138f1Smrg
6697ee3138f1Smrg  if test -z "$exec_cmd"; then
6698ee3138f1Smrg    $echo "$modename: invalid operation mode \`$mode'" 1>&2
6699ee3138f1Smrg    $echo "$generic_help" 1>&2
6700ee3138f1Smrg    exit $EXIT_FAILURE
6701ee3138f1Smrg  fi
6702ee3138f1Smrgfi # test -z "$show_help"
6703ee3138f1Smrg
6704ee3138f1Smrgif test -n "$exec_cmd"; then
6705ee3138f1Smrg  eval exec $exec_cmd
6706ee3138f1Smrg  exit $EXIT_FAILURE
6707ee3138f1Smrgfi
6708ee3138f1Smrg
6709ee3138f1Smrg# We need to display help for each of the modes.
6710ee3138f1Smrgcase $mode in
6711ee3138f1Smrg"") $echo \
6712ee3138f1Smrg"Usage: $modename [OPTION]... [MODE-ARG]...
6713ee3138f1Smrg
6714ee3138f1SmrgProvide generalized library-building support services.
6715ee3138f1Smrg
6716ee3138f1Smrg    --config          show all configuration variables
6717ee3138f1Smrg    --debug           enable verbose shell tracing
6718ee3138f1Smrg-n, --dry-run         display commands without modifying any files
6719ee3138f1Smrg    --features        display basic configuration information and exit
6720ee3138f1Smrg    --finish          same as \`--mode=finish'
6721ee3138f1Smrg    --help            display this help message and exit
6722ee3138f1Smrg    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
6723ee3138f1Smrg    --quiet           same as \`--silent'
6724ee3138f1Smrg    --silent          don't print informational messages
6725ee3138f1Smrg    --tag=TAG         use configuration variables from tag TAG
6726ee3138f1Smrg    --version         print version information
6727ee3138f1Smrg
6728ee3138f1SmrgMODE must be one of the following:
6729ee3138f1Smrg
6730ee3138f1Smrg      clean           remove files from the build directory
6731ee3138f1Smrg      compile         compile a source file into a libtool object
6732ee3138f1Smrg      execute         automatically set library path, then run a program
6733ee3138f1Smrg      finish          complete the installation of libtool libraries
6734ee3138f1Smrg      install         install libraries or executables
6735ee3138f1Smrg      link            create a library or an executable
6736ee3138f1Smrg      uninstall       remove libraries from an installed directory
6737ee3138f1Smrg
6738ee3138f1SmrgMODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
6739ee3138f1Smrga more detailed description of MODE.
6740ee3138f1Smrg
6741ee3138f1SmrgReport bugs to <bug-libtool@gnu.org>."
6742ee3138f1Smrg  exit $EXIT_SUCCESS
6743ee3138f1Smrg  ;;
6744ee3138f1Smrg
6745ee3138f1Smrgclean)
6746ee3138f1Smrg  $echo \
6747ee3138f1Smrg"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
6748ee3138f1Smrg
6749ee3138f1SmrgRemove files from the build directory.
6750ee3138f1Smrg
6751ee3138f1SmrgRM is the name of the program to use to delete files associated with each FILE
6752ee3138f1Smrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
6753ee3138f1Smrgto RM.
6754ee3138f1Smrg
6755ee3138f1SmrgIf FILE is a libtool library, object or program, all the files associated
6756ee3138f1Smrgwith it are deleted. Otherwise, only FILE itself is deleted using RM."
6757ee3138f1Smrg  ;;
6758ee3138f1Smrg
6759ee3138f1Smrgcompile)
6760ee3138f1Smrg  $echo \
6761ee3138f1Smrg"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
6762ee3138f1Smrg
6763ee3138f1SmrgCompile a source file into a libtool library object.
6764ee3138f1Smrg
6765ee3138f1SmrgThis mode accepts the following additional options:
6766ee3138f1Smrg
6767ee3138f1Smrg  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
6768ee3138f1Smrg  -prefer-pic       try to building PIC objects only
6769ee3138f1Smrg  -prefer-non-pic   try to building non-PIC objects only
6770ee3138f1Smrg  -static           always build a \`.o' file suitable for static linking
6771ee3138f1Smrg
6772ee3138f1SmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
6773ee3138f1Smrgfrom the given SOURCEFILE.
6774ee3138f1Smrg
6775ee3138f1SmrgThe output file name is determined by removing the directory component from
6776ee3138f1SmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the
6777ee3138f1Smrglibrary object suffix, \`.lo'."
6778ee3138f1Smrg  ;;
6779ee3138f1Smrg
6780ee3138f1Smrgexecute)
6781ee3138f1Smrg  $echo \
6782ee3138f1Smrg"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
6783ee3138f1Smrg
6784ee3138f1SmrgAutomatically set library path, then run a program.
6785ee3138f1Smrg
6786ee3138f1SmrgThis mode accepts the following additional options:
6787ee3138f1Smrg
6788ee3138f1Smrg  -dlopen FILE      add the directory containing FILE to the library path
6789ee3138f1Smrg
6790ee3138f1SmrgThis mode sets the library path environment variable according to \`-dlopen'
6791ee3138f1Smrgflags.
6792ee3138f1Smrg
6793ee3138f1SmrgIf any of the ARGS are libtool executable wrappers, then they are translated
6794ee3138f1Smrginto their corresponding uninstalled binary, and any of their required library
6795ee3138f1Smrgdirectories are added to the library path.
6796ee3138f1Smrg
6797ee3138f1SmrgThen, COMMAND is executed, with ARGS as arguments."
6798ee3138f1Smrg  ;;
6799ee3138f1Smrg
6800ee3138f1Smrgfinish)
6801ee3138f1Smrg  $echo \
6802ee3138f1Smrg"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
6803ee3138f1Smrg
6804ee3138f1SmrgComplete the installation of libtool libraries.
6805ee3138f1Smrg
6806ee3138f1SmrgEach LIBDIR is a directory that contains libtool libraries.
6807ee3138f1Smrg
6808ee3138f1SmrgThe commands that this mode executes may require superuser privileges.  Use
6809ee3138f1Smrgthe \`--dry-run' option if you just want to see what would be executed."
6810ee3138f1Smrg  ;;
6811ee3138f1Smrg
6812ee3138f1Smrginstall)
6813ee3138f1Smrg  $echo \
6814ee3138f1Smrg"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
6815ee3138f1Smrg
6816ee3138f1SmrgInstall executables or libraries.
6817ee3138f1Smrg
6818ee3138f1SmrgINSTALL-COMMAND is the installation command.  The first component should be
6819ee3138f1Smrgeither the \`install' or \`cp' program.
6820ee3138f1Smrg
6821ee3138f1SmrgThe rest of the components are interpreted as arguments to that command (only
6822ee3138f1SmrgBSD-compatible install options are recognized)."
6823ee3138f1Smrg  ;;
6824ee3138f1Smrg
6825ee3138f1Smrglink)
6826ee3138f1Smrg  $echo \
6827ee3138f1Smrg"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
6828ee3138f1Smrg
6829ee3138f1SmrgLink object files or libraries together to form another library, or to
6830ee3138f1Smrgcreate an executable program.
6831ee3138f1Smrg
6832ee3138f1SmrgLINK-COMMAND is a command using the C compiler that you would use to create
6833ee3138f1Smrga program from several object files.
6834ee3138f1Smrg
6835ee3138f1SmrgThe following components of LINK-COMMAND are treated specially:
6836ee3138f1Smrg
6837ee3138f1Smrg  -all-static       do not do any dynamic linking at all
6838ee3138f1Smrg  -avoid-version    do not add a version suffix if possible
6839ee3138f1Smrg  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
6840ee3138f1Smrg  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
6841ee3138f1Smrg  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
6842ee3138f1Smrg  -export-symbols SYMFILE
6843ee3138f1Smrg                    try to export only the symbols listed in SYMFILE
6844ee3138f1Smrg  -export-symbols-regex REGEX
6845ee3138f1Smrg                    try to export only the symbols matching REGEX
6846ee3138f1Smrg  -LLIBDIR          search LIBDIR for required installed libraries
6847ee3138f1Smrg  -lNAME            OUTPUT-FILE requires the installed library libNAME
6848ee3138f1Smrg  -module           build a library that can dlopened
6849ee3138f1Smrg  -no-fast-install  disable the fast-install mode
6850ee3138f1Smrg  -no-install       link a not-installable executable
6851ee3138f1Smrg  -no-undefined     declare that a library does not refer to external symbols
6852ee3138f1Smrg  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
6853ee3138f1Smrg  -objectlist FILE  Use a list of object files found in FILE to specify objects
6854ee3138f1Smrg  -precious-files-regex REGEX
6855ee3138f1Smrg                    don't remove output files matching REGEX
6856ee3138f1Smrg  -release RELEASE  specify package release information
6857ee3138f1Smrg  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
6858ee3138f1Smrg  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
6859ee3138f1Smrg  -static           do not do any dynamic linking of uninstalled libtool libraries
6860ee3138f1Smrg  -static-libtool-libs
6861ee3138f1Smrg                    do not do any dynamic linking of libtool libraries
6862ee3138f1Smrg  -version-info CURRENT[:REVISION[:AGE]]
6863ee3138f1Smrg                    specify library version info [each variable defaults to 0]
6864ee3138f1Smrg
6865ee3138f1SmrgAll other options (arguments beginning with \`-') are ignored.
6866ee3138f1Smrg
6867ee3138f1SmrgEvery other argument is treated as a filename.  Files ending in \`.la' are
6868ee3138f1Smrgtreated as uninstalled libtool libraries, other files are standard or library
6869ee3138f1Smrgobject files.
6870ee3138f1Smrg
6871ee3138f1SmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
6872ee3138f1Smrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is
6873ee3138f1Smrgrequired, except when creating a convenience library.
6874ee3138f1Smrg
6875ee3138f1SmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
6876ee3138f1Smrgusing \`ar' and \`ranlib', or on Windows using \`lib'.
6877ee3138f1Smrg
6878ee3138f1SmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
6879ee3138f1Smrgis created, otherwise an executable program is created."
6880ee3138f1Smrg  ;;
6881ee3138f1Smrg
6882ee3138f1Smrguninstall)
6883ee3138f1Smrg  $echo \
6884ee3138f1Smrg"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
6885ee3138f1Smrg
6886ee3138f1SmrgRemove libraries from an installation directory.
6887ee3138f1Smrg
6888ee3138f1SmrgRM is the name of the program to use to delete files associated with each FILE
6889ee3138f1Smrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
6890ee3138f1Smrgto RM.
6891ee3138f1Smrg
6892ee3138f1SmrgIf FILE is a libtool library, all the files associated with it are deleted.
6893ee3138f1SmrgOtherwise, only FILE itself is deleted using RM."
6894ee3138f1Smrg  ;;
6895ee3138f1Smrg
6896ee3138f1Smrg*)
6897ee3138f1Smrg  $echo "$modename: invalid operation mode \`$mode'" 1>&2
6898ee3138f1Smrg  $echo "$help" 1>&2
6899ee3138f1Smrg  exit $EXIT_FAILURE
6900ee3138f1Smrg  ;;
6901ee3138f1Smrgesac
6902ee3138f1Smrg
6903ee3138f1Smrg$echo
6904ee3138f1Smrg$echo "Try \`$modename --help' for more information about other modes."
6905ee3138f1Smrg
6906ee3138f1Smrgexit $?
6907ee3138f1Smrg
6908ee3138f1Smrg# The TAGs below are defined such that we never get into a situation
6909ee3138f1Smrg# in which we disable both kinds of libraries.  Given conflicting
6910ee3138f1Smrg# choices, we go for a static library, that is the most portable,
6911ee3138f1Smrg# since we can't tell whether shared libraries were disabled because
6912ee3138f1Smrg# the user asked for that or because the platform doesn't support
6913ee3138f1Smrg# them.  This is particularly important on AIX, because we don't
6914ee3138f1Smrg# support having both static and shared libraries enabled at the same
6915ee3138f1Smrg# time on that platform, so we default to a shared-only configuration.
6916ee3138f1Smrg# If a disable-shared tag is given, we'll fallback to a static-only
6917ee3138f1Smrg# configuration.  But we'll never go from static-only to shared-only.
6918ee3138f1Smrg
6919ee3138f1Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
6920ee3138f1Smrgdisable_libs=shared
6921ee3138f1Smrg# ### END LIBTOOL TAG CONFIG: disable-shared
6922ee3138f1Smrg
6923ee3138f1Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static
6924ee3138f1Smrgdisable_libs=static
6925ee3138f1Smrg# ### END LIBTOOL TAG CONFIG: disable-static
6926ee3138f1Smrg
6927ee3138f1Smrg# Local Variables:
6928ee3138f1Smrg# mode:shell-script
6929ee3138f1Smrg# sh-indentation:2
6930ee3138f1Smrg# End:
6931