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