ltmain.sh revision 37eb1ca1
1c27c18e8Smrg# Generated from ltmain.m4sh.
2c27c18e8Smrg
337eb1ca1Smrg# libtool (GNU libtool) 2.2.10
4c27c18e8Smrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
5c27c18e8Smrg
637eb1ca1Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
737eb1ca1Smrg# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
8c27c18e8Smrg# This is free software; see the source for copying conditions.  There is NO
9c27c18e8Smrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10c27c18e8Smrg
11c27c18e8Smrg# GNU Libtool is free software; you can redistribute it and/or modify
12c43cc173Smrg# it under the terms of the GNU General Public License as published by
13c43cc173Smrg# the Free Software Foundation; either version 2 of the License, or
14c43cc173Smrg# (at your option) any later version.
15c43cc173Smrg#
16c27c18e8Smrg# As a special exception to the GNU General Public License,
17c27c18e8Smrg# if you distribute this file as part of a program or library that
18c27c18e8Smrg# is built using GNU Libtool, you may include this file under the
19c27c18e8Smrg# same distribution terms that you use for the rest of that program.
20c27c18e8Smrg#
21c27c18e8Smrg# GNU Libtool is distributed in the hope that it will be useful, but
22c43cc173Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
23c43cc173Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
24c43cc173Smrg# General Public License for more details.
25c43cc173Smrg#
26c43cc173Smrg# You should have received a copy of the GNU General Public License
27c27c18e8Smrg# along with GNU Libtool; see the file COPYING.  If not, a copy
28c27c18e8Smrg# can be downloaded from http://www.gnu.org/licenses/gpl.html,
29c27c18e8Smrg# or obtained by writing to the Free Software Foundation, Inc.,
30c27c18e8Smrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
31c43cc173Smrg
32c27c18e8Smrg# Usage: $progname [OPTION]... [MODE-ARG]...
33c27c18e8Smrg#
34c27c18e8Smrg# Provide generalized library-building support services.
35c27c18e8Smrg#
3637eb1ca1Smrg#       --config             show all configuration variables
3737eb1ca1Smrg#       --debug              enable verbose shell tracing
3837eb1ca1Smrg#   -n, --dry-run            display commands without modifying any files
3937eb1ca1Smrg#       --features           display basic configuration information and exit
4037eb1ca1Smrg#       --mode=MODE          use operation mode MODE
4137eb1ca1Smrg#       --preserve-dup-deps  don't remove duplicate dependency libraries
4237eb1ca1Smrg#       --quiet, --silent    don't print informational messages
4337eb1ca1Smrg#       --no-quiet, --no-silent
4437eb1ca1Smrg#                            print informational messages (default)
4537eb1ca1Smrg#       --tag=TAG            use configuration variables from tag TAG
4637eb1ca1Smrg#   -v, --verbose            print more informational messages than default
4737eb1ca1Smrg#       --no-verbose         don't print the extra informational messages
4837eb1ca1Smrg#       --version            print version information
4937eb1ca1Smrg#   -h, --help, --help-all   print short, long, or detailed help message
50c27c18e8Smrg#
51c27c18e8Smrg# MODE must be one of the following:
52c27c18e8Smrg#
5337eb1ca1Smrg#         clean              remove files from the build directory
5437eb1ca1Smrg#         compile            compile a source file into a libtool object
5537eb1ca1Smrg#         execute            automatically set library path, then run a program
5637eb1ca1Smrg#         finish             complete the installation of libtool libraries
5737eb1ca1Smrg#         install            install libraries or executables
5837eb1ca1Smrg#         link               create a library or an executable
5937eb1ca1Smrg#         uninstall          remove libraries from an installed directory
60c27c18e8Smrg#
6137eb1ca1Smrg# MODE-ARGS vary depending on the MODE.  When passed as first option,
6237eb1ca1Smrg# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
63c27c18e8Smrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
64c27c18e8Smrg#
65c27c18e8Smrg# When reporting a bug, please describe a test case to reproduce it and
66c27c18e8Smrg# include the following information:
67c27c18e8Smrg#
6837eb1ca1Smrg#         host-triplet:	$host
6937eb1ca1Smrg#         shell:		$SHELL
7037eb1ca1Smrg#         compiler:		$LTCC
7137eb1ca1Smrg#         compiler flags:		$LTCFLAGS
7237eb1ca1Smrg#         linker:		$LD (gnu? $with_gnu_ld)
7337eb1ca1Smrg#         $progname:	(GNU libtool) 2.2.10
7437eb1ca1Smrg#         automake:	$automake_version
7537eb1ca1Smrg#         autoconf:	$autoconf_version
76c27c18e8Smrg#
77c27c18e8Smrg# Report bugs to <bug-libtool@gnu.org>.
78c43cc173Smrg
7937eb1ca1SmrgPROGRAM=libtool
80c43cc173SmrgPACKAGE=libtool
8137eb1ca1SmrgVERSION=2.2.10
82c27c18e8SmrgTIMESTAMP=""
8337eb1ca1Smrgpackage_revision=1.3175
8421e67964Smrg
85c27c18e8Smrg# Be Bourne compatible
8621e67964Smrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
8721e67964Smrg  emulate sh
8821e67964Smrg  NULLCMD=:
8921e67964Smrg  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
9021e67964Smrg  # is contrary to our usage.  Disable this feature.
9121e67964Smrg  alias -g '${1+"$@"}'='"$@"'
92c43cc173Smrg  setopt NO_GLOB_SUBST
9321e67964Smrgelse
9421e67964Smrg  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
95c43cc173Smrgfi
9621e67964SmrgBIN_SH=xpg4; export BIN_SH # for Tru64
9721e67964SmrgDUALCASE=1; export DUALCASE # for MKS sh
98c43cc173Smrg
9937eb1ca1Smrg# A function that is used when there is no print builtin or printf.
10037eb1ca1Smrgfunc_fallback_echo ()
10137eb1ca1Smrg{
10237eb1ca1Smrg  eval 'cat <<_LTECHO_EOF
10337eb1ca1Smrg$1
10437eb1ca1Smrg_LTECHO_EOF'
10537eb1ca1Smrg}
10637eb1ca1Smrg
107c27c18e8Smrg# NLS nuisances: We save the old values to restore during execute mode.
108c27c18e8Smrglt_user_locale=
109c27c18e8Smrglt_safe_locale=
110c27c18e8Smrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
11121e67964Smrgdo
11221e67964Smrg  eval "if test \"\${$lt_var+set}\" = set; then
113c27c18e8Smrg          save_$lt_var=\$$lt_var
114c27c18e8Smrg          $lt_var=C
11521e67964Smrg	  export $lt_var
116c27c18e8Smrg	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
117c27c18e8Smrg	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
11821e67964Smrg	fi"
11921e67964Smrgdone
12037eb1ca1SmrgLC_ALL=C
12137eb1ca1SmrgLANGUAGE=C
12237eb1ca1Smrgexport LANGUAGE LC_ALL
123c43cc173Smrg
124c27c18e8Smrg$lt_unset CDPATH
125c27c18e8Smrg
126c27c18e8Smrg
12737eb1ca1Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
12837eb1ca1Smrg# is ksh but when the shell is invoked as "sh" and the current value of
12937eb1ca1Smrg# the _XPG environment variable is not equal to 1 (one), the special
13037eb1ca1Smrg# positional parameter $0, within a function call, is the name of the
13137eb1ca1Smrg# function.
13237eb1ca1Smrgprogpath="$0"
133c27c18e8Smrg
134c27c18e8Smrg
135c27c18e8Smrg
136c27c18e8Smrg: ${CP="cp -f"}
13737eb1ca1Smrgtest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
138c27c18e8Smrg: ${EGREP="/bin/grep -E"}
139c27c18e8Smrg: ${FGREP="/bin/grep -F"}
140c27c18e8Smrg: ${GREP="/bin/grep"}
141c27c18e8Smrg: ${LN_S="ln -s"}
142c27c18e8Smrg: ${MAKE="make"}
143c27c18e8Smrg: ${MKDIR="mkdir"}
144c27c18e8Smrg: ${MV="mv -f"}
145c27c18e8Smrg: ${RM="rm -f"}
146c27c18e8Smrg: ${SED="/bin/sed"}
147c27c18e8Smrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
148c27c18e8Smrg: ${Xsed="$SED -e 1s/^X//"}
149c27c18e8Smrg
150c27c18e8Smrg# Global variables:
151c27c18e8SmrgEXIT_SUCCESS=0
152c27c18e8SmrgEXIT_FAILURE=1
153c27c18e8SmrgEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
154c27c18e8SmrgEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
155c27c18e8Smrg
156c27c18e8Smrgexit_status=$EXIT_SUCCESS
157c27c18e8Smrg
158c43cc173Smrg# Make sure IFS has a sensible default
159c43cc173Smrglt_nl='
160c43cc173Smrg'
161c43cc173SmrgIFS=" 	$lt_nl"
162c43cc173Smrg
163c27c18e8Smrgdirname="s,/[^/]*$,,"
164c27c18e8Smrgbasename="s,^.*/,,"
165c27c18e8Smrg
166c27c18e8Smrg# func_dirname_and_basename file append nondir_replacement
167c27c18e8Smrg# perform func_basename and func_dirname in a single function
168c27c18e8Smrg# call:
169c27c18e8Smrg#   dirname:  Compute the dirname of FILE.  If nonempty,
170c27c18e8Smrg#             add APPEND to the result, otherwise set result
171c27c18e8Smrg#             to NONDIR_REPLACEMENT.
172c27c18e8Smrg#             value returned in "$func_dirname_result"
173c27c18e8Smrg#   basename: Compute filename of FILE.
174c27c18e8Smrg#             value retuned in "$func_basename_result"
175c27c18e8Smrg# Implementation must be kept synchronized with func_dirname
176c27c18e8Smrg# and func_basename. For efficiency, we do not delegate to
177c27c18e8Smrg# those functions but instead duplicate the functionality here.
178c27c18e8Smrgfunc_dirname_and_basename ()
179c27c18e8Smrg{
180c27c18e8Smrg  # Extract subdirectory from the argument.
18137eb1ca1Smrg  func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
182c27c18e8Smrg  if test "X$func_dirname_result" = "X${1}"; then
183c27c18e8Smrg    func_dirname_result="${3}"
184c27c18e8Smrg  else
185c27c18e8Smrg    func_dirname_result="$func_dirname_result${2}"
186c27c18e8Smrg  fi
18737eb1ca1Smrg  func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
188c27c18e8Smrg}
189c43cc173Smrg
190c27c18e8Smrg# Generated shell functions inserted here.
191c27c18e8Smrg
19237eb1ca1Smrg# These SED scripts presuppose an absolute path with a trailing slash.
19337eb1ca1Smrgpathcar='s,^/\([^/]*\).*$,\1,'
19437eb1ca1Smrgpathcdr='s,^/[^/]*,,'
19537eb1ca1Smrgremovedotparts=':dotsl
19637eb1ca1Smrg		s@/\./@/@g
19737eb1ca1Smrg		t dotsl
19837eb1ca1Smrg		s,/\.$,/,'
19937eb1ca1Smrgcollapseslashes='s@/\{1,\}@/@g'
20037eb1ca1Smrgfinalslash='s,/*$,/,'
20137eb1ca1Smrg
20237eb1ca1Smrg# func_normal_abspath PATH
20337eb1ca1Smrg# Remove doubled-up and trailing slashes, "." path components,
20437eb1ca1Smrg# and cancel out any ".." path components in PATH after making
20537eb1ca1Smrg# it an absolute path.
20637eb1ca1Smrg#             value returned in "$func_normal_abspath_result"
20737eb1ca1Smrgfunc_normal_abspath ()
20837eb1ca1Smrg{
20937eb1ca1Smrg  # Start from root dir and reassemble the path.
21037eb1ca1Smrg  func_normal_abspath_result=
21137eb1ca1Smrg  func_normal_abspath_tpath=$1
21237eb1ca1Smrg  func_normal_abspath_altnamespace=
21337eb1ca1Smrg  case $func_normal_abspath_tpath in
21437eb1ca1Smrg    "")
21537eb1ca1Smrg      # Empty path, that just means $cwd.
21637eb1ca1Smrg      func_stripname '' '/' "`pwd`"
21737eb1ca1Smrg      func_normal_abspath_result=$func_stripname_result
21837eb1ca1Smrg      return
21937eb1ca1Smrg    ;;
22037eb1ca1Smrg    # The next three entries are used to spot a run of precisely
22137eb1ca1Smrg    # two leading slashes without using negated character classes;
22237eb1ca1Smrg    # we take advantage of case's first-match behaviour.
22337eb1ca1Smrg    ///*)
22437eb1ca1Smrg      # Unusual form of absolute path, do nothing.
22537eb1ca1Smrg    ;;
22637eb1ca1Smrg    //*)
22737eb1ca1Smrg      # Not necessarily an ordinary path; POSIX reserves leading '//'
22837eb1ca1Smrg      # and for example Cygwin uses it to access remote file shares
22937eb1ca1Smrg      # over CIFS/SMB, so we conserve a leading double slash if found.
23037eb1ca1Smrg      func_normal_abspath_altnamespace=/
23137eb1ca1Smrg    ;;
23237eb1ca1Smrg    /*)
23337eb1ca1Smrg      # Absolute path, do nothing.
23437eb1ca1Smrg    ;;
23537eb1ca1Smrg    *)
23637eb1ca1Smrg      # Relative path, prepend $cwd.
23737eb1ca1Smrg      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
23837eb1ca1Smrg    ;;
23937eb1ca1Smrg  esac
24037eb1ca1Smrg  # Cancel out all the simple stuff to save iterations.  We also want
24137eb1ca1Smrg  # the path to end with a slash for ease of parsing, so make sure
24237eb1ca1Smrg  # there is one (and only one) here.
24337eb1ca1Smrg  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
24437eb1ca1Smrg        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
24537eb1ca1Smrg  while :; do
24637eb1ca1Smrg    # Processed it all yet?
24737eb1ca1Smrg    if test "$func_normal_abspath_tpath" = / ; then
24837eb1ca1Smrg      # If we ascended to the root using ".." the result may be empty now.
24937eb1ca1Smrg      if test -z "$func_normal_abspath_result" ; then
25037eb1ca1Smrg        func_normal_abspath_result=/
25137eb1ca1Smrg      fi
25237eb1ca1Smrg      break
25337eb1ca1Smrg    fi
25437eb1ca1Smrg    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
25537eb1ca1Smrg        -e "$pathcar"`
25637eb1ca1Smrg    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
25737eb1ca1Smrg        -e "$pathcdr"`
25837eb1ca1Smrg    # Figure out what to do with it
25937eb1ca1Smrg    case $func_normal_abspath_tcomponent in
26037eb1ca1Smrg      "")
26137eb1ca1Smrg        # Trailing empty path component, ignore it.
26237eb1ca1Smrg      ;;
26337eb1ca1Smrg      ..)
26437eb1ca1Smrg        # Parent dir; strip last assembled component from result.
26537eb1ca1Smrg        func_dirname "$func_normal_abspath_result"
26637eb1ca1Smrg        func_normal_abspath_result=$func_dirname_result
26737eb1ca1Smrg      ;;
26837eb1ca1Smrg      *)
26937eb1ca1Smrg        # Actual path component, append it.
27037eb1ca1Smrg        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
27137eb1ca1Smrg      ;;
27237eb1ca1Smrg    esac
27337eb1ca1Smrg  done
27437eb1ca1Smrg  # Restore leading double-slash if one was found on entry.
27537eb1ca1Smrg  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
27637eb1ca1Smrg}
27737eb1ca1Smrg
27837eb1ca1Smrg# func_relative_path SRCDIR DSTDIR
27937eb1ca1Smrg# generates a relative path from SRCDIR to DSTDIR, with a trailing
28037eb1ca1Smrg# slash if non-empty, suitable for immediately appending a filename
28137eb1ca1Smrg# without needing to append a separator.
28237eb1ca1Smrg#             value returned in "$func_relative_path_result"
28337eb1ca1Smrgfunc_relative_path ()
28437eb1ca1Smrg{
28537eb1ca1Smrg  func_relative_path_result=
28637eb1ca1Smrg  func_normal_abspath "$1"
28737eb1ca1Smrg  func_relative_path_tlibdir=$func_normal_abspath_result
28837eb1ca1Smrg  func_normal_abspath "$2"
28937eb1ca1Smrg  func_relative_path_tbindir=$func_normal_abspath_result
29037eb1ca1Smrg
29137eb1ca1Smrg  # Ascend the tree starting from libdir
29237eb1ca1Smrg  while :; do
29337eb1ca1Smrg    # check if we have found a prefix of bindir
29437eb1ca1Smrg    case $func_relative_path_tbindir in
29537eb1ca1Smrg      $func_relative_path_tlibdir)
29637eb1ca1Smrg        # found an exact match
29737eb1ca1Smrg        func_relative_path_tcancelled=
29837eb1ca1Smrg        break
29937eb1ca1Smrg        ;;
30037eb1ca1Smrg      $func_relative_path_tlibdir*)
30137eb1ca1Smrg        # found a matching prefix
30237eb1ca1Smrg        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
30337eb1ca1Smrg        func_relative_path_tcancelled=$func_stripname_result
30437eb1ca1Smrg        if test -z "$func_relative_path_result"; then
30537eb1ca1Smrg          func_relative_path_result=.
30637eb1ca1Smrg        fi
30737eb1ca1Smrg        break
30837eb1ca1Smrg        ;;
30937eb1ca1Smrg      *)
31037eb1ca1Smrg        func_dirname $func_relative_path_tlibdir
31137eb1ca1Smrg        func_relative_path_tlibdir=${func_dirname_result}
31237eb1ca1Smrg        if test "x$func_relative_path_tlibdir" = x ; then
31337eb1ca1Smrg          # Have to descend all the way to the root!
31437eb1ca1Smrg          func_relative_path_result=../$func_relative_path_result
31537eb1ca1Smrg          func_relative_path_tcancelled=$func_relative_path_tbindir
31637eb1ca1Smrg          break
31737eb1ca1Smrg        fi
31837eb1ca1Smrg        func_relative_path_result=../$func_relative_path_result
31937eb1ca1Smrg        ;;
32037eb1ca1Smrg    esac
32137eb1ca1Smrg  done
32237eb1ca1Smrg
32337eb1ca1Smrg  # Now calculate path; take care to avoid doubling-up slashes.
32437eb1ca1Smrg  func_stripname '' '/' "$func_relative_path_result"
32537eb1ca1Smrg  func_relative_path_result=$func_stripname_result
32637eb1ca1Smrg  func_stripname '/' '/' "$func_relative_path_tcancelled"
32737eb1ca1Smrg  if test "x$func_stripname_result" != x ; then
32837eb1ca1Smrg    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
32937eb1ca1Smrg  fi
33037eb1ca1Smrg
33137eb1ca1Smrg  # Normalisation. If bindir is libdir, return empty string,
33237eb1ca1Smrg  # else relative path ending with a slash; either way, target
33337eb1ca1Smrg  # file name can be directly appended.
33437eb1ca1Smrg  if test ! -z "$func_relative_path_result"; then
33537eb1ca1Smrg    func_stripname './' '' "$func_relative_path_result/"
33637eb1ca1Smrg    func_relative_path_result=$func_stripname_result
33737eb1ca1Smrg  fi
33837eb1ca1Smrg}
339c27c18e8Smrg
340c27c18e8Smrg# The name of this program:
341c27c18e8Smrgfunc_dirname_and_basename "$progpath"
342c27c18e8Smrgprogname=$func_basename_result
343c27c18e8Smrg
344c27c18e8Smrg# Make sure we have an absolute path for reexecution:
345c27c18e8Smrgcase $progpath in
346c27c18e8Smrg  [\\/]*|[A-Za-z]:\\*) ;;
347c27c18e8Smrg  *[\\/]*)
348c27c18e8Smrg     progdir=$func_dirname_result
349c27c18e8Smrg     progdir=`cd "$progdir" && pwd`
350c27c18e8Smrg     progpath="$progdir/$progname"
351c27c18e8Smrg     ;;
352c27c18e8Smrg  *)
353c27c18e8Smrg     save_IFS="$IFS"
354c27c18e8Smrg     IFS=:
355c27c18e8Smrg     for progdir in $PATH; do
356c27c18e8Smrg       IFS="$save_IFS"
357c27c18e8Smrg       test -x "$progdir/$progname" && break
358c27c18e8Smrg     done
359c27c18e8Smrg     IFS="$save_IFS"
360c27c18e8Smrg     test -n "$progdir" || progdir=`pwd`
361c27c18e8Smrg     progpath="$progdir/$progname"
362c27c18e8Smrg     ;;
363c27c18e8Smrgesac
364c27c18e8Smrg
365c27c18e8Smrg# Sed substitution that helps us do robust quoting.  It backslashifies
366c27c18e8Smrg# metacharacters that are still active within double-quoted strings.
367c27c18e8SmrgXsed="${SED}"' -e 1s/^X//'
368c27c18e8Smrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g'
369c27c18e8Smrg
370c27c18e8Smrg# Same as above, but do not quote variable references.
371c27c18e8Smrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
372c27c18e8Smrg
373c27c18e8Smrg# Re-`\' parameter expansions in output of double_quote_subst that were
374c27c18e8Smrg# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
375c27c18e8Smrg# in input to double_quote_subst, that '$' was protected from expansion.
376c27c18e8Smrg# Since each input `\' is now two `\'s, look for any number of runs of
377c27c18e8Smrg# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
378c27c18e8Smrgbs='\\'
379c27c18e8Smrgbs2='\\\\'
380c27c18e8Smrgbs4='\\\\\\\\'
381c27c18e8Smrgdollar='\$'
382c27c18e8Smrgsed_double_backslash="\
383c27c18e8Smrg  s/$bs4/&\\
384c27c18e8Smrg/g
385c27c18e8Smrg  s/^$bs2$dollar/$bs&/
386c27c18e8Smrg  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
387c27c18e8Smrg  s/\n//g"
388c27c18e8Smrg
389c27c18e8Smrg# Standard options:
390c27c18e8Smrgopt_dry_run=false
391c27c18e8Smrgopt_help=false
392c27c18e8Smrgopt_quiet=false
393c27c18e8Smrgopt_verbose=false
394c27c18e8Smrgopt_warning=:
395c27c18e8Smrg
396c27c18e8Smrg# func_echo arg...
397c27c18e8Smrg# Echo program name prefixed message, along with the current mode
398c27c18e8Smrg# name if it has been set yet.
399c27c18e8Smrgfunc_echo ()
400c27c18e8Smrg{
401c27c18e8Smrg    $ECHO "$progname${mode+: }$mode: $*"
402c27c18e8Smrg}
403c27c18e8Smrg
404c27c18e8Smrg# func_verbose arg...
405c27c18e8Smrg# Echo program name prefixed message in verbose mode only.
406c27c18e8Smrgfunc_verbose ()
407c27c18e8Smrg{
408c27c18e8Smrg    $opt_verbose && func_echo ${1+"$@"}
409c27c18e8Smrg
410c27c18e8Smrg    # A bug in bash halts the script if the last line of a function
411c27c18e8Smrg    # fails when set -e is in force, so we need another command to
412c27c18e8Smrg    # work around that:
413c27c18e8Smrg    :
414c27c18e8Smrg}
415c27c18e8Smrg
41637eb1ca1Smrg# func_echo_all arg...
41737eb1ca1Smrg# Invoke $ECHO with all args, space-separated.
41837eb1ca1Smrgfunc_echo_all ()
41937eb1ca1Smrg{
42037eb1ca1Smrg    $ECHO "$*"
42137eb1ca1Smrg}
42237eb1ca1Smrg
423c27c18e8Smrg# func_error arg...
424c27c18e8Smrg# Echo program name prefixed message to standard error.
425c27c18e8Smrgfunc_error ()
426c27c18e8Smrg{
427c27c18e8Smrg    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
428c27c18e8Smrg}
429c27c18e8Smrg
430c27c18e8Smrg# func_warning arg...
431c27c18e8Smrg# Echo program name prefixed warning message to standard error.
432c27c18e8Smrgfunc_warning ()
433c27c18e8Smrg{
434c27c18e8Smrg    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
435c27c18e8Smrg
436c27c18e8Smrg    # bash bug again:
437c27c18e8Smrg    :
438c27c18e8Smrg}
439c27c18e8Smrg
440c27c18e8Smrg# func_fatal_error arg...
441c27c18e8Smrg# Echo program name prefixed message to standard error, and exit.
442c27c18e8Smrgfunc_fatal_error ()
443c27c18e8Smrg{
444c27c18e8Smrg    func_error ${1+"$@"}
445c27c18e8Smrg    exit $EXIT_FAILURE
446c27c18e8Smrg}
447c27c18e8Smrg
448c27c18e8Smrg# func_fatal_help arg...
449c27c18e8Smrg# Echo program name prefixed message to standard error, followed by
450c27c18e8Smrg# a help hint, and exit.
451c27c18e8Smrgfunc_fatal_help ()
452c27c18e8Smrg{
453c27c18e8Smrg    func_error ${1+"$@"}
454c27c18e8Smrg    func_fatal_error "$help"
455c27c18e8Smrg}
456c27c18e8Smrghelp="Try \`$progname --help' for more information."  ## default
457c27c18e8Smrg
458c27c18e8Smrg
459c27c18e8Smrg# func_grep expression filename
460c27c18e8Smrg# Check whether EXPRESSION matches any line of FILENAME, without output.
461c27c18e8Smrgfunc_grep ()
462c27c18e8Smrg{
463c27c18e8Smrg    $GREP "$1" "$2" >/dev/null 2>&1
464c27c18e8Smrg}
465c27c18e8Smrg
466c27c18e8Smrg
467c27c18e8Smrg# func_mkdir_p directory-path
468c27c18e8Smrg# Make sure the entire path to DIRECTORY-PATH is available.
469c27c18e8Smrgfunc_mkdir_p ()
470c27c18e8Smrg{
471c27c18e8Smrg    my_directory_path="$1"
472c27c18e8Smrg    my_dir_list=
473c27c18e8Smrg
474c27c18e8Smrg    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
475c27c18e8Smrg
476c27c18e8Smrg      # Protect directory names starting with `-'
477c27c18e8Smrg      case $my_directory_path in
478c27c18e8Smrg        -*) my_directory_path="./$my_directory_path" ;;
479c27c18e8Smrg      esac
480c27c18e8Smrg
481c27c18e8Smrg      # While some portion of DIR does not yet exist...
482c27c18e8Smrg      while test ! -d "$my_directory_path"; do
483c27c18e8Smrg        # ...make a list in topmost first order.  Use a colon delimited
484c27c18e8Smrg	# list incase some portion of path contains whitespace.
485c27c18e8Smrg        my_dir_list="$my_directory_path:$my_dir_list"
486c27c18e8Smrg
487c27c18e8Smrg        # If the last portion added has no slash in it, the list is done
488c27c18e8Smrg        case $my_directory_path in */*) ;; *) break ;; esac
489c27c18e8Smrg
490c27c18e8Smrg        # ...otherwise throw away the child directory and loop
49137eb1ca1Smrg        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
492c27c18e8Smrg      done
49337eb1ca1Smrg      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
494c27c18e8Smrg
495c27c18e8Smrg      save_mkdir_p_IFS="$IFS"; IFS=':'
496c27c18e8Smrg      for my_dir in $my_dir_list; do
497c27c18e8Smrg	IFS="$save_mkdir_p_IFS"
498c27c18e8Smrg        # mkdir can fail with a `File exist' error if two processes
499c27c18e8Smrg        # try to create one of the directories concurrently.  Don't
500c27c18e8Smrg        # stop in that case!
501c27c18e8Smrg        $MKDIR "$my_dir" 2>/dev/null || :
502c27c18e8Smrg      done
503c27c18e8Smrg      IFS="$save_mkdir_p_IFS"
504c27c18e8Smrg
505c27c18e8Smrg      # Bail out if we (or some other process) failed to create a directory.
506c27c18e8Smrg      test -d "$my_directory_path" || \
507c27c18e8Smrg        func_fatal_error "Failed to create \`$1'"
508c27c18e8Smrg    fi
509c27c18e8Smrg}
510c43cc173Smrg
511c43cc173Smrg
512c43cc173Smrg# func_mktempdir [string]
513c43cc173Smrg# Make a temporary directory that won't clash with other running
514c43cc173Smrg# libtool processes, and avoids race conditions if possible.  If
515c43cc173Smrg# given, STRING is the basename for that directory.
516c43cc173Smrgfunc_mktempdir ()
517c43cc173Smrg{
518c43cc173Smrg    my_template="${TMPDIR-/tmp}/${1-$progname}"
519c43cc173Smrg
520c27c18e8Smrg    if test "$opt_dry_run" = ":"; then
521c43cc173Smrg      # Return a directory name, but don't create it in dry-run mode
522c43cc173Smrg      my_tmpdir="${my_template}-$$"
523c43cc173Smrg    else
524c43cc173Smrg
525c43cc173Smrg      # If mktemp works, use that first and foremost
526c43cc173Smrg      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
527c43cc173Smrg
528c43cc173Smrg      if test ! -d "$my_tmpdir"; then
529c27c18e8Smrg        # Failing that, at least try and use $RANDOM to avoid a race
530c27c18e8Smrg        my_tmpdir="${my_template}-${RANDOM-0}$$"
531c43cc173Smrg
532c27c18e8Smrg        save_mktempdir_umask=`umask`
533c27c18e8Smrg        umask 0077
534c27c18e8Smrg        $MKDIR "$my_tmpdir"
535c27c18e8Smrg        umask $save_mktempdir_umask
536c43cc173Smrg      fi
537c43cc173Smrg
538c43cc173Smrg      # If we're not in dry-run mode, bomb out on failure
539c27c18e8Smrg      test -d "$my_tmpdir" || \
540c27c18e8Smrg        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
541c43cc173Smrg    fi
542c43cc173Smrg
54337eb1ca1Smrg    $ECHO "$my_tmpdir"
544c43cc173Smrg}
545c43cc173Smrg
546c43cc173Smrg
547c27c18e8Smrg# func_quote_for_eval arg
548c27c18e8Smrg# Aesthetically quote ARG to be evaled later.
549c27c18e8Smrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
550c27c18e8Smrg# is double-quoted, suitable for a subsequent eval, whereas
551c27c18e8Smrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
552c27c18e8Smrg# which are still active within double quotes backslashified.
553c27c18e8Smrgfunc_quote_for_eval ()
554c43cc173Smrg{
555c27c18e8Smrg    case $1 in
556c27c18e8Smrg      *[\\\`\"\$]*)
55737eb1ca1Smrg	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
558c27c18e8Smrg      *)
559c27c18e8Smrg        func_quote_for_eval_unquoted_result="$1" ;;
560c27c18e8Smrg    esac
561c27c18e8Smrg
562c27c18e8Smrg    case $func_quote_for_eval_unquoted_result in
563c27c18e8Smrg      # Double-quote args containing shell metacharacters to delay
564c27c18e8Smrg      # word splitting, command substitution and and variable
565c27c18e8Smrg      # expansion for a subsequent eval.
566c27c18e8Smrg      # Many Bourne shells cannot handle close brackets correctly
567c27c18e8Smrg      # in scan sets, so we specify it separately.
568c27c18e8Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
569c27c18e8Smrg        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
570c27c18e8Smrg        ;;
571c27c18e8Smrg      *)
572c27c18e8Smrg        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
573c43cc173Smrg    esac
574c43cc173Smrg}
575c43cc173Smrg
576c43cc173Smrg
577c27c18e8Smrg# func_quote_for_expand arg
578c27c18e8Smrg# Aesthetically quote ARG to be evaled later; same as above,
579c27c18e8Smrg# but do not quote variable references.
580c27c18e8Smrgfunc_quote_for_expand ()
581c43cc173Smrg{
582c27c18e8Smrg    case $1 in
583c27c18e8Smrg      *[\\\`\"]*)
58437eb1ca1Smrg	my_arg=`$ECHO "$1" | $SED \
585c27c18e8Smrg	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
586c43cc173Smrg      *)
587c27c18e8Smrg        my_arg="$1" ;;
588c27c18e8Smrg    esac
589c27c18e8Smrg
590c27c18e8Smrg    case $my_arg in
591c27c18e8Smrg      # Double-quote args containing shell metacharacters to delay
592c27c18e8Smrg      # word splitting and command substitution for a subsequent eval.
593c27c18e8Smrg      # Many Bourne shells cannot handle close brackets correctly
594c27c18e8Smrg      # in scan sets, so we specify it separately.
595c27c18e8Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
596c27c18e8Smrg        my_arg="\"$my_arg\""
597c27c18e8Smrg        ;;
598c27c18e8Smrg    esac
599c27c18e8Smrg
600c27c18e8Smrg    func_quote_for_expand_result="$my_arg"
601c43cc173Smrg}
602c43cc173Smrg
603c43cc173Smrg
604c27c18e8Smrg# func_show_eval cmd [fail_exp]
605c27c18e8Smrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
606c27c18e8Smrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
607c27c18e8Smrg# is given, then evaluate it.
608c27c18e8Smrgfunc_show_eval ()
609c43cc173Smrg{
610c27c18e8Smrg    my_cmd="$1"
611c27c18e8Smrg    my_fail_exp="${2-:}"
612c43cc173Smrg
613c27c18e8Smrg    ${opt_silent-false} || {
614c27c18e8Smrg      func_quote_for_expand "$my_cmd"
615c27c18e8Smrg      eval "func_echo $func_quote_for_expand_result"
616c27c18e8Smrg    }
617c27c18e8Smrg
618c27c18e8Smrg    if ${opt_dry_run-false}; then :; else
619c27c18e8Smrg      eval "$my_cmd"
620c27c18e8Smrg      my_status=$?
621c27c18e8Smrg      if test "$my_status" -eq 0; then :; else
622c27c18e8Smrg	eval "(exit $my_status); $my_fail_exp"
623c27c18e8Smrg      fi
624c43cc173Smrg    fi
625c43cc173Smrg}
626c43cc173Smrg
627c27c18e8Smrg
628c27c18e8Smrg# func_show_eval_locale cmd [fail_exp]
629c27c18e8Smrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
630c27c18e8Smrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
631c27c18e8Smrg# is given, then evaluate it.  Use the saved locale for evaluation.
632c27c18e8Smrgfunc_show_eval_locale ()
633c43cc173Smrg{
634c27c18e8Smrg    my_cmd="$1"
635c27c18e8Smrg    my_fail_exp="${2-:}"
636c27c18e8Smrg
637c27c18e8Smrg    ${opt_silent-false} || {
638c27c18e8Smrg      func_quote_for_expand "$my_cmd"
639c27c18e8Smrg      eval "func_echo $func_quote_for_expand_result"
640c27c18e8Smrg    }
641c27c18e8Smrg
642c27c18e8Smrg    if ${opt_dry_run-false}; then :; else
643c27c18e8Smrg      eval "$lt_user_locale
644c27c18e8Smrg	    $my_cmd"
645c27c18e8Smrg      my_status=$?
646c27c18e8Smrg      eval "$lt_safe_locale"
647c27c18e8Smrg      if test "$my_status" -eq 0; then :; else
648c27c18e8Smrg	eval "(exit $my_status); $my_fail_exp"
649c27c18e8Smrg      fi
650c43cc173Smrg    fi
651c27c18e8Smrg}
652c43cc173Smrg
653c43cc173Smrg
654c27c18e8Smrg# func_version
655c27c18e8Smrg# Echo version message to standard output and exit.
656c27c18e8Smrgfunc_version ()
657c27c18e8Smrg{
65837eb1ca1Smrg    $SED -n '/(C)/!b go
65937eb1ca1Smrg	:more
66037eb1ca1Smrg	/\./!{
66137eb1ca1Smrg	  N
66237eb1ca1Smrg	  s/\n# / /
66337eb1ca1Smrg	  b more
66437eb1ca1Smrg	}
66537eb1ca1Smrg	:go
66637eb1ca1Smrg	/^# '$PROGRAM' (GNU /,/# warranty; / {
667c27c18e8Smrg        s/^# //
668c27c18e8Smrg	s/^# *$//
669c27c18e8Smrg        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
670c27c18e8Smrg        p
671c27c18e8Smrg     }' < "$progpath"
672c27c18e8Smrg     exit $?
673c27c18e8Smrg}
674c27c18e8Smrg
675c27c18e8Smrg# func_usage
676c27c18e8Smrg# Echo short help message to standard output and exit.
677c27c18e8Smrgfunc_usage ()
678c27c18e8Smrg{
67937eb1ca1Smrg    $SED -n '/^# Usage:/,/^#  *.*--help/ {
680c27c18e8Smrg        s/^# //
681c27c18e8Smrg	s/^# *$//
682c27c18e8Smrg	s/\$progname/'$progname'/
683c27c18e8Smrg	p
684c27c18e8Smrg    }' < "$progpath"
68537eb1ca1Smrg    echo
686c27c18e8Smrg    $ECHO "run \`$progname --help | more' for full usage"
687c27c18e8Smrg    exit $?
688c27c18e8Smrg}
689c27c18e8Smrg
69037eb1ca1Smrg# func_help [NOEXIT]
69137eb1ca1Smrg# Echo long help message to standard output and exit,
69237eb1ca1Smrg# unless 'noexit' is passed as argument.
693c27c18e8Smrgfunc_help ()
694c27c18e8Smrg{
695c27c18e8Smrg    $SED -n '/^# Usage:/,/# Report bugs to/ {
696c27c18e8Smrg        s/^# //
697c27c18e8Smrg	s/^# *$//
698c27c18e8Smrg	s*\$progname*'$progname'*
699c27c18e8Smrg	s*\$host*'"$host"'*
700c27c18e8Smrg	s*\$SHELL*'"$SHELL"'*
701c27c18e8Smrg	s*\$LTCC*'"$LTCC"'*
702c27c18e8Smrg	s*\$LTCFLAGS*'"$LTCFLAGS"'*
703c27c18e8Smrg	s*\$LD*'"$LD"'*
704c27c18e8Smrg	s/\$with_gnu_ld/'"$with_gnu_ld"'/
705c27c18e8Smrg	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
706c27c18e8Smrg	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
707c27c18e8Smrg	p
708c27c18e8Smrg     }' < "$progpath"
70937eb1ca1Smrg    ret=$?
71037eb1ca1Smrg    if test -z "$1"; then
71137eb1ca1Smrg      exit $ret
71237eb1ca1Smrg    fi
713c27c18e8Smrg}
714c27c18e8Smrg
715c27c18e8Smrg# func_missing_arg argname
716c27c18e8Smrg# Echo program name prefixed message to standard error and set global
717c27c18e8Smrg# exit_cmd.
718c27c18e8Smrgfunc_missing_arg ()
719c27c18e8Smrg{
72037eb1ca1Smrg    func_error "missing argument for $1."
721c27c18e8Smrg    exit_cmd=exit
722c43cc173Smrg}
723c43cc173Smrg
724c27c18e8Smrgexit_cmd=:
725c43cc173Smrg
726c43cc173Smrg
727c27c18e8Smrg
728c27c18e8Smrg
729c27c18e8Smrg
730c43cc173Smrg
731c27c18e8Smrgmagic="%%%MAGIC variable%%%"
732c27c18e8Smrgmagic_exe="%%%MAGIC EXE variable%%%"
733c43cc173Smrg
734c27c18e8Smrg# Global variables.
735c27c18e8Smrg# $mode is unset
736c27c18e8Smrgnonopt=
737c27c18e8Smrgexecute_dlfiles=
738c27c18e8Smrgpreserve_args=
739c27c18e8Smrglo2o="s/\\.lo\$/.${objext}/"
740c27c18e8Smrgo2lo="s/\\.${objext}\$/.lo/"
741c27c18e8Smrgextracted_archives=
742c27c18e8Smrgextracted_serial=0
743c43cc173Smrg
744c27c18e8Smrgopt_dry_run=false
745c27c18e8Smrgopt_duplicate_deps=false
746c27c18e8Smrgopt_silent=false
747c27c18e8Smrgopt_debug=:
748c43cc173Smrg
749c27c18e8Smrg# If this variable is set in any of the actions, the command in it
750c27c18e8Smrg# will be execed at the end.  This prevents here-documents from being
751c27c18e8Smrg# left over by shells.
752c27c18e8Smrgexec_cmd=
753c27c18e8Smrg
754c27c18e8Smrg# func_fatal_configuration arg...
755c27c18e8Smrg# Echo program name prefixed message to standard error, followed by
756c27c18e8Smrg# a configuration failure hint, and exit.
757c27c18e8Smrgfunc_fatal_configuration ()
758c27c18e8Smrg{
759c27c18e8Smrg    func_error ${1+"$@"}
760c27c18e8Smrg    func_error "See the $PACKAGE documentation for more information."
761c27c18e8Smrg    func_fatal_error "Fatal configuration error."
762c27c18e8Smrg}
763c43cc173Smrg
76421e67964Smrg
765c27c18e8Smrg# func_config
766c27c18e8Smrg# Display the configuration for all the tags in this script.
767c27c18e8Smrgfunc_config ()
768c27c18e8Smrg{
769c27c18e8Smrg    re_begincf='^# ### BEGIN LIBTOOL'
770c27c18e8Smrg    re_endcf='^# ### END LIBTOOL'
771c27c18e8Smrg
772c27c18e8Smrg    # Default configuration.
773c27c18e8Smrg    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
774c43cc173Smrg
775c43cc173Smrg    # Now print the configurations for the tags.
776c43cc173Smrg    for tagname in $taglist; do
777c27c18e8Smrg      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
778c43cc173Smrg    done
779c43cc173Smrg
780c27c18e8Smrg    exit $?
781c27c18e8Smrg}
782c43cc173Smrg
783c27c18e8Smrg# func_features
784c27c18e8Smrg# Display the features supported by this script.
785c27c18e8Smrgfunc_features ()
786c27c18e8Smrg{
78737eb1ca1Smrg    echo "host: $host"
788c43cc173Smrg    if test "$build_libtool_libs" = yes; then
78937eb1ca1Smrg      echo "enable shared libraries"
790c43cc173Smrg    else
79137eb1ca1Smrg      echo "disable shared libraries"
792c43cc173Smrg    fi
793c43cc173Smrg    if test "$build_old_libs" = yes; then
79437eb1ca1Smrg      echo "enable static libraries"
795c43cc173Smrg    else
79637eb1ca1Smrg      echo "disable static libraries"
797c43cc173Smrg    fi
798c27c18e8Smrg
799c43cc173Smrg    exit $?
800c27c18e8Smrg}
801c43cc173Smrg
802c27c18e8Smrg# func_enable_tag tagname
803c27c18e8Smrg# Verify that TAGNAME is valid, and either flag an error and exit, or
804c27c18e8Smrg# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
805c27c18e8Smrg# variable here.
806c27c18e8Smrgfunc_enable_tag ()
807c27c18e8Smrg{
808c27c18e8Smrg  # Global variable:
809c27c18e8Smrg  tagname="$1"
810c43cc173Smrg
811c27c18e8Smrg  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
812c27c18e8Smrg  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
813c27c18e8Smrg  sed_extractcf="/$re_begincf/,/$re_endcf/p"
814c43cc173Smrg
815c27c18e8Smrg  # Validate tagname.
816c27c18e8Smrg  case $tagname in
817c27c18e8Smrg    *[!-_A-Za-z0-9,/]*)
818c27c18e8Smrg      func_fatal_error "invalid tag name: $tagname"
819c27c18e8Smrg      ;;
820c27c18e8Smrg  esac
821c43cc173Smrg
822c27c18e8Smrg  # Don't test for the "default" C tag, as we know it's
823c27c18e8Smrg  # there but not specially marked.
824c27c18e8Smrg  case $tagname in
825c27c18e8Smrg    CC) ;;
826c27c18e8Smrg    *)
827c27c18e8Smrg      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
828c27c18e8Smrg	taglist="$taglist $tagname"
829c27c18e8Smrg
830c27c18e8Smrg	# Evaluate the configuration.  Be careful to quote the path
831c27c18e8Smrg	# and the sed script, to avoid splitting on whitespace, but
832c27c18e8Smrg	# also don't use non-portable quotes within backquotes within
833c27c18e8Smrg	# quotes we have to do it in 2 steps:
834c27c18e8Smrg	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
835c27c18e8Smrg	eval "$extractedcf"
836c27c18e8Smrg      else
837c27c18e8Smrg	func_error "ignoring unknown tag $tagname"
838c27c18e8Smrg      fi
839c27c18e8Smrg      ;;
840c27c18e8Smrg  esac
841c27c18e8Smrg}
842c27c18e8Smrg
843c27c18e8Smrg# Parse options once, thoroughly.  This comes as soon as possible in
844c27c18e8Smrg# the script to make things like `libtool --version' happen quickly.
845c27c18e8Smrg{
846c43cc173Smrg
847c27c18e8Smrg  # Shorthand for --mode=foo, only valid as the first argument
848c27c18e8Smrg  case $1 in
849c27c18e8Smrg  clean|clea|cle|cl)
850c27c18e8Smrg    shift; set dummy --mode clean ${1+"$@"}; shift
851c43cc173Smrg    ;;
852c27c18e8Smrg  compile|compil|compi|comp|com|co|c)
853c27c18e8Smrg    shift; set dummy --mode compile ${1+"$@"}; shift
854c43cc173Smrg    ;;
855c27c18e8Smrg  execute|execut|execu|exec|exe|ex|e)
856c27c18e8Smrg    shift; set dummy --mode execute ${1+"$@"}; shift
857c43cc173Smrg    ;;
858c27c18e8Smrg  finish|finis|fini|fin|fi|f)
859c27c18e8Smrg    shift; set dummy --mode finish ${1+"$@"}; shift
860c43cc173Smrg    ;;
861c27c18e8Smrg  install|instal|insta|inst|ins|in|i)
862c27c18e8Smrg    shift; set dummy --mode install ${1+"$@"}; shift
863c27c18e8Smrg    ;;
864c27c18e8Smrg  link|lin|li|l)
865c27c18e8Smrg    shift; set dummy --mode link ${1+"$@"}; shift
866c27c18e8Smrg    ;;
867c27c18e8Smrg  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
868c27c18e8Smrg    shift; set dummy --mode uninstall ${1+"$@"}; shift
869c43cc173Smrg    ;;
870c43cc173Smrg  esac
871c43cc173Smrg
872c27c18e8Smrg  # Parse non-mode specific arguments:
873c27c18e8Smrg  while test "$#" -gt 0; do
874c27c18e8Smrg    opt="$1"
875c27c18e8Smrg    shift
876c43cc173Smrg
877c27c18e8Smrg    case $opt in
878c27c18e8Smrg      --config)		func_config					;;
879c43cc173Smrg
880c27c18e8Smrg      --debug)		preserve_args="$preserve_args $opt"
881c27c18e8Smrg			func_echo "enabling shell trace mode"
882c27c18e8Smrg			opt_debug='set -x'
883c27c18e8Smrg			$opt_debug
884c27c18e8Smrg			;;
885c43cc173Smrg
886c27c18e8Smrg      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
887c27c18e8Smrg			execute_dlfiles="$execute_dlfiles $1"
888c27c18e8Smrg			shift
889c27c18e8Smrg			;;
890c43cc173Smrg
891c27c18e8Smrg      --dry-run | -n)	opt_dry_run=:					;;
892c27c18e8Smrg      --features)       func_features					;;
893c27c18e8Smrg      --finish)		mode="finish"					;;
894c27c18e8Smrg
895c27c18e8Smrg      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
896c27c18e8Smrg			case $1 in
897c27c18e8Smrg			  # Valid mode arguments:
898c27c18e8Smrg			  clean)	;;
899c27c18e8Smrg			  compile)	;;
900c27c18e8Smrg			  execute)	;;
901c27c18e8Smrg			  finish)	;;
902c27c18e8Smrg			  install)	;;
903c27c18e8Smrg			  link)		;;
904c27c18e8Smrg			  relink)	;;
905c27c18e8Smrg			  uninstall)	;;
906c27c18e8Smrg
907c27c18e8Smrg			  # Catch anything else as an error
908c27c18e8Smrg			  *) func_error "invalid argument for $opt"
909c27c18e8Smrg			     exit_cmd=exit
910c27c18e8Smrg			     break
911c27c18e8Smrg			     ;;
912c27c18e8Smrg		        esac
913c27c18e8Smrg
914c27c18e8Smrg			mode="$1"
915c27c18e8Smrg			shift
916c27c18e8Smrg			;;
917c27c18e8Smrg
918c27c18e8Smrg      --preserve-dup-deps)
919c27c18e8Smrg			opt_duplicate_deps=:				;;
920c27c18e8Smrg
921c27c18e8Smrg      --quiet|--silent)	preserve_args="$preserve_args $opt"
922c27c18e8Smrg			opt_silent=:
92337eb1ca1Smrg			opt_verbose=false
92437eb1ca1Smrg			;;
92537eb1ca1Smrg
92637eb1ca1Smrg      --no-quiet|--no-silent)
92737eb1ca1Smrg			preserve_args="$preserve_args $opt"
92837eb1ca1Smrg			opt_silent=false
929c27c18e8Smrg			;;
930c27c18e8Smrg
931c27c18e8Smrg      --verbose| -v)	preserve_args="$preserve_args $opt"
932c27c18e8Smrg			opt_silent=false
93337eb1ca1Smrg			opt_verbose=:
93437eb1ca1Smrg			;;
93537eb1ca1Smrg
93637eb1ca1Smrg      --no-verbose)	preserve_args="$preserve_args $opt"
93737eb1ca1Smrg			opt_verbose=false
938c27c18e8Smrg			;;
939c27c18e8Smrg
940c27c18e8Smrg      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
941c27c18e8Smrg			preserve_args="$preserve_args $opt $1"
942c27c18e8Smrg			func_enable_tag "$1"	# tagname is set here
943c27c18e8Smrg			shift
944c27c18e8Smrg			;;
945c27c18e8Smrg
946c27c18e8Smrg      # Separate optargs to long options:
947c27c18e8Smrg      -dlopen=*|--mode=*|--tag=*)
948c27c18e8Smrg			func_opt_split "$opt"
949c27c18e8Smrg			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
950c27c18e8Smrg			shift
951c27c18e8Smrg			;;
952c27c18e8Smrg
953c27c18e8Smrg      -\?|-h)		func_usage					;;
954c27c18e8Smrg      --help)		opt_help=:					;;
95537eb1ca1Smrg      --help-all)	opt_help=': help-all'				;;
956c27c18e8Smrg      --version)	func_version					;;
957c27c18e8Smrg
958c27c18e8Smrg      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
959c27c18e8Smrg
960c27c18e8Smrg      *)		nonopt="$opt"
961c27c18e8Smrg			break
962c27c18e8Smrg			;;
963c27c18e8Smrg    esac
964c27c18e8Smrg  done
965c27c18e8Smrg
966c27c18e8Smrg
967c27c18e8Smrg  case $host in
968c27c18e8Smrg    *cygwin* | *mingw* | *pw32* | *cegcc*)
969c27c18e8Smrg      # don't eliminate duplications in $postdeps and $predeps
970c27c18e8Smrg      opt_duplicate_compiler_generated_deps=:
971c43cc173Smrg      ;;
972c43cc173Smrg    *)
973c27c18e8Smrg      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
974c27c18e8Smrg      ;;
975c27c18e8Smrg  esac
976c43cc173Smrg
977c27c18e8Smrg  # Having warned about all mis-specified options, bail out if
978c27c18e8Smrg  # anything was wrong.
979c27c18e8Smrg  $exit_cmd $EXIT_FAILURE
980c27c18e8Smrg}
981c27c18e8Smrg
982c27c18e8Smrg# func_check_version_match
983c27c18e8Smrg# Ensure that we are using m4 macros, and libtool script from the same
984c27c18e8Smrg# release of libtool.
985c27c18e8Smrgfunc_check_version_match ()
986c27c18e8Smrg{
987c27c18e8Smrg  if test "$package_revision" != "$macro_revision"; then
988c27c18e8Smrg    if test "$VERSION" != "$macro_version"; then
989c27c18e8Smrg      if test -z "$macro_version"; then
990c27c18e8Smrg        cat >&2 <<_LT_EOF
991c27c18e8Smrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
992c27c18e8Smrg$progname: definition of this LT_INIT comes from an older release.
993c27c18e8Smrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
994c27c18e8Smrg$progname: and run autoconf again.
995c27c18e8Smrg_LT_EOF
996c27c18e8Smrg      else
997c27c18e8Smrg        cat >&2 <<_LT_EOF
998c27c18e8Smrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
999c27c18e8Smrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
1000c27c18e8Smrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
1001c27c18e8Smrg$progname: and run autoconf again.
1002c27c18e8Smrg_LT_EOF
1003c43cc173Smrg      fi
1004c27c18e8Smrg    else
1005c27c18e8Smrg      cat >&2 <<_LT_EOF
1006c27c18e8Smrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
1007c27c18e8Smrg$progname: but the definition of this LT_INIT comes from revision $macro_revision.
1008c27c18e8Smrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision
1009c27c18e8Smrg$progname: of $PACKAGE $VERSION and run autoconf again.
1010c27c18e8Smrg_LT_EOF
1011c27c18e8Smrg    fi
1012c27c18e8Smrg
1013c27c18e8Smrg    exit $EXIT_MISMATCH
1014c27c18e8Smrg  fi
1015c27c18e8Smrg}
1016c27c18e8Smrg
1017c27c18e8Smrg
1018c27c18e8Smrg## ----------- ##
1019c27c18e8Smrg##    Main.    ##
1020c27c18e8Smrg## ----------- ##
1021c27c18e8Smrg
1022c27c18e8Smrg$opt_help || {
1023c27c18e8Smrg  # Sanity checks first:
1024c27c18e8Smrg  func_check_version_match
1025c27c18e8Smrg
1026c27c18e8Smrg  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
1027c27c18e8Smrg    func_fatal_configuration "not configured to build any kind of library"
1028c43cc173Smrg  fi
1029c43cc173Smrg
1030c27c18e8Smrg  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
1031c27c18e8Smrg
1032c27c18e8Smrg
1033c27c18e8Smrg  # Darwin sucks
1034c27c18e8Smrg  eval std_shrext=\"$shrext_cmds\"
1035c27c18e8Smrg
1036c27c18e8Smrg
1037c43cc173Smrg  # Only execute mode is allowed to have -dlopen flags.
1038c43cc173Smrg  if test -n "$execute_dlfiles" && test "$mode" != execute; then
1039c27c18e8Smrg    func_error "unrecognized option \`-dlopen'"
1040c27c18e8Smrg    $ECHO "$help" 1>&2
1041c43cc173Smrg    exit $EXIT_FAILURE
1042c43cc173Smrg  fi
1043c43cc173Smrg
1044c43cc173Smrg  # Change the help message to a mode-specific one.
1045c43cc173Smrg  generic_help="$help"
1046c27c18e8Smrg  help="Try \`$progname --help --mode=$mode' for more information."
1047c27c18e8Smrg}
1048c43cc173Smrg
1049c43cc173Smrg
1050c27c18e8Smrg# func_lalib_p file
1051c27c18e8Smrg# True iff FILE is a libtool `.la' library or `.lo' object file.
1052c27c18e8Smrg# This function is only a basic sanity check; it will hardly flush out
1053c27c18e8Smrg# determined imposters.
1054c27c18e8Smrgfunc_lalib_p ()
1055c27c18e8Smrg{
1056c27c18e8Smrg    test -f "$1" &&
1057c27c18e8Smrg      $SED -e 4q "$1" 2>/dev/null \
1058c27c18e8Smrg        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
1059c27c18e8Smrg}
1060c43cc173Smrg
1061c27c18e8Smrg# func_lalib_unsafe_p file
1062c27c18e8Smrg# True iff FILE is a libtool `.la' library or `.lo' object file.
1063c27c18e8Smrg# This function implements the same check as func_lalib_p without
1064c27c18e8Smrg# resorting to external programs.  To this end, it redirects stdin and
1065c27c18e8Smrg# closes it afterwards, without saving the original file descriptor.
1066c27c18e8Smrg# As a safety measure, use it only where a negative result would be
1067c27c18e8Smrg# fatal anyway.  Works if `file' does not exist.
1068c27c18e8Smrgfunc_lalib_unsafe_p ()
1069c27c18e8Smrg{
1070c27c18e8Smrg    lalib_p=no
1071c27c18e8Smrg    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
1072c27c18e8Smrg	for lalib_p_l in 1 2 3 4
1073c27c18e8Smrg	do
1074c27c18e8Smrg	    read lalib_p_line
1075c27c18e8Smrg	    case "$lalib_p_line" in
1076c27c18e8Smrg		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
1077c27c18e8Smrg	    esac
1078c27c18e8Smrg	done
1079c27c18e8Smrg	exec 0<&5 5<&-
1080c27c18e8Smrg    fi
1081c27c18e8Smrg    test "$lalib_p" = yes
1082c27c18e8Smrg}
1083c43cc173Smrg
1084c27c18e8Smrg# func_ltwrapper_script_p file
1085c27c18e8Smrg# True iff FILE is a libtool wrapper script
1086c27c18e8Smrg# This function is only a basic sanity check; it will hardly flush out
1087c27c18e8Smrg# determined imposters.
1088c27c18e8Smrgfunc_ltwrapper_script_p ()
1089c27c18e8Smrg{
1090c27c18e8Smrg    func_lalib_p "$1"
1091c27c18e8Smrg}
1092c43cc173Smrg
1093c27c18e8Smrg# func_ltwrapper_executable_p file
1094c27c18e8Smrg# True iff FILE is a libtool wrapper executable
1095c27c18e8Smrg# This function is only a basic sanity check; it will hardly flush out
1096c27c18e8Smrg# determined imposters.
1097c27c18e8Smrgfunc_ltwrapper_executable_p ()
1098c27c18e8Smrg{
1099c27c18e8Smrg    func_ltwrapper_exec_suffix=
1100c27c18e8Smrg    case $1 in
1101c27c18e8Smrg    *.exe) ;;
1102c27c18e8Smrg    *) func_ltwrapper_exec_suffix=.exe ;;
1103c27c18e8Smrg    esac
1104c27c18e8Smrg    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
1105c27c18e8Smrg}
1106c43cc173Smrg
1107c27c18e8Smrg# func_ltwrapper_scriptname file
1108c27c18e8Smrg# Assumes file is an ltwrapper_executable
1109c27c18e8Smrg# uses $file to determine the appropriate filename for a
1110c27c18e8Smrg# temporary ltwrapper_script.
1111c27c18e8Smrgfunc_ltwrapper_scriptname ()
1112c27c18e8Smrg{
1113c27c18e8Smrg    func_ltwrapper_scriptname_result=""
1114c27c18e8Smrg    if func_ltwrapper_executable_p "$1"; then
1115c27c18e8Smrg	func_dirname_and_basename "$1" "" "."
1116c27c18e8Smrg	func_stripname '' '.exe' "$func_basename_result"
1117c27c18e8Smrg	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
1118c27c18e8Smrg    fi
1119c27c18e8Smrg}
1120c27c18e8Smrg
1121c27c18e8Smrg# func_ltwrapper_p file
1122c27c18e8Smrg# True iff FILE is a libtool wrapper script or wrapper executable
1123c27c18e8Smrg# This function is only a basic sanity check; it will hardly flush out
1124c27c18e8Smrg# determined imposters.
1125c27c18e8Smrgfunc_ltwrapper_p ()
1126c27c18e8Smrg{
1127c27c18e8Smrg    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
1128c27c18e8Smrg}
1129c27c18e8Smrg
1130c27c18e8Smrg
1131c27c18e8Smrg# func_execute_cmds commands fail_cmd
1132c27c18e8Smrg# Execute tilde-delimited COMMANDS.
1133c27c18e8Smrg# If FAIL_CMD is given, eval that upon failure.
1134c27c18e8Smrg# FAIL_CMD may read-access the current command in variable CMD!
1135c27c18e8Smrgfunc_execute_cmds ()
1136c27c18e8Smrg{
1137c27c18e8Smrg    $opt_debug
1138c27c18e8Smrg    save_ifs=$IFS; IFS='~'
1139c27c18e8Smrg    for cmd in $1; do
1140c27c18e8Smrg      IFS=$save_ifs
1141c27c18e8Smrg      eval cmd=\"$cmd\"
1142c27c18e8Smrg      func_show_eval "$cmd" "${2-:}"
1143c27c18e8Smrg    done
1144c27c18e8Smrg    IFS=$save_ifs
1145c27c18e8Smrg}
1146c27c18e8Smrg
1147c27c18e8Smrg
1148c27c18e8Smrg# func_source file
1149c27c18e8Smrg# Source FILE, adding directory component if necessary.
1150c27c18e8Smrg# Note that it is not necessary on cygwin/mingw to append a dot to
1151c27c18e8Smrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
1152c27c18e8Smrg# behavior happens only for exec(3), not for open(2)!  Also, sourcing
1153c27c18e8Smrg# `FILE.' does not work on cygwin managed mounts.
1154c27c18e8Smrgfunc_source ()
1155c27c18e8Smrg{
1156c27c18e8Smrg    $opt_debug
1157c27c18e8Smrg    case $1 in
1158c27c18e8Smrg    */* | *\\*)	. "$1" ;;
1159c27c18e8Smrg    *)		. "./$1" ;;
1160c27c18e8Smrg    esac
1161c27c18e8Smrg}
1162c27c18e8Smrg
1163c27c18e8Smrg
1164c27c18e8Smrg# func_infer_tag arg
1165c27c18e8Smrg# Infer tagged configuration to use if any are available and
1166c27c18e8Smrg# if one wasn't chosen via the "--tag" command line option.
1167c27c18e8Smrg# Only attempt this if the compiler in the base compile
1168c27c18e8Smrg# command doesn't match the default compiler.
1169c27c18e8Smrg# arg is usually of the form 'gcc ...'
1170c27c18e8Smrgfunc_infer_tag ()
1171c27c18e8Smrg{
1172c27c18e8Smrg    $opt_debug
1173c27c18e8Smrg    if test -n "$available_tags" && test -z "$tagname"; then
1174c27c18e8Smrg      CC_quoted=
1175c27c18e8Smrg      for arg in $CC; do
1176c27c18e8Smrg        func_quote_for_eval "$arg"
1177c27c18e8Smrg	CC_quoted="$CC_quoted $func_quote_for_eval_result"
1178c27c18e8Smrg      done
117937eb1ca1Smrg      CC_expanded=`func_echo_all $CC`
118037eb1ca1Smrg      CC_quoted_expanded=`func_echo_all $CC_quoted`
1181c27c18e8Smrg      case $@ in
1182c27c18e8Smrg      # Blanks in the command may have been stripped by the calling shell,
1183c27c18e8Smrg      # but not from the CC environment variable when configure was run.
118437eb1ca1Smrg      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
118537eb1ca1Smrg      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
1186c27c18e8Smrg      # Blanks at the start of $base_compile will cause this to fail
1187c27c18e8Smrg      # if we don't check for them as well.
1188c27c18e8Smrg      *)
1189c27c18e8Smrg	for z in $available_tags; do
1190c27c18e8Smrg	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
1191c27c18e8Smrg	    # Evaluate the configuration.
1192c27c18e8Smrg	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
1193c27c18e8Smrg	    CC_quoted=
1194c27c18e8Smrg	    for arg in $CC; do
1195c27c18e8Smrg	      # Double-quote args containing other shell metacharacters.
1196c27c18e8Smrg	      func_quote_for_eval "$arg"
1197c27c18e8Smrg	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
1198c27c18e8Smrg	    done
119937eb1ca1Smrg	    CC_expanded=`func_echo_all $CC`
120037eb1ca1Smrg	    CC_quoted_expanded=`func_echo_all $CC_quoted`
1201c27c18e8Smrg	    case "$@ " in
120237eb1ca1Smrg	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
120337eb1ca1Smrg	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
1204c27c18e8Smrg	      # The compiler in the base compile command matches
1205c27c18e8Smrg	      # the one in the tagged configuration.
1206c27c18e8Smrg	      # Assume this is the tagged configuration we want.
1207c27c18e8Smrg	      tagname=$z
1208c27c18e8Smrg	      break
1209c27c18e8Smrg	      ;;
1210c27c18e8Smrg	    esac
1211c27c18e8Smrg	  fi
1212c27c18e8Smrg	done
1213c27c18e8Smrg	# If $tagname still isn't set, then no tagged configuration
1214c27c18e8Smrg	# was found and let the user know that the "--tag" command
1215c27c18e8Smrg	# line option must be used.
1216c27c18e8Smrg	if test -z "$tagname"; then
1217c27c18e8Smrg	  func_echo "unable to infer tagged configuration"
1218c27c18e8Smrg	  func_fatal_error "specify a tag with \`--tag'"
1219c27c18e8Smrg#	else
1220c27c18e8Smrg#	  func_verbose "using $tagname tagged configuration"
1221c27c18e8Smrg	fi
1222c27c18e8Smrg	;;
1223c27c18e8Smrg      esac
1224c27c18e8Smrg    fi
1225c27c18e8Smrg}
1226c27c18e8Smrg
1227c27c18e8Smrg
1228c27c18e8Smrg
1229c27c18e8Smrg# func_write_libtool_object output_name pic_name nonpic_name
1230c27c18e8Smrg# Create a libtool object file (analogous to a ".la" file),
1231c27c18e8Smrg# but don't create it if we're doing a dry run.
1232c27c18e8Smrgfunc_write_libtool_object ()
1233c27c18e8Smrg{
1234c27c18e8Smrg    write_libobj=${1}
1235c27c18e8Smrg    if test "$build_libtool_libs" = yes; then
1236c27c18e8Smrg      write_lobj=\'${2}\'
1237c27c18e8Smrg    else
1238c27c18e8Smrg      write_lobj=none
1239c27c18e8Smrg    fi
1240c27c18e8Smrg
1241c27c18e8Smrg    if test "$build_old_libs" = yes; then
1242c27c18e8Smrg      write_oldobj=\'${3}\'
1243c27c18e8Smrg    else
1244c27c18e8Smrg      write_oldobj=none
1245c27c18e8Smrg    fi
1246c27c18e8Smrg
1247c27c18e8Smrg    $opt_dry_run || {
1248c27c18e8Smrg      cat >${write_libobj}T <<EOF
1249c27c18e8Smrg# $write_libobj - a libtool object file
1250c27c18e8Smrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1251c27c18e8Smrg#
1252c27c18e8Smrg# Please DO NOT delete this file!
1253c27c18e8Smrg# It is necessary for linking the library.
1254c27c18e8Smrg
1255c27c18e8Smrg# Name of the PIC object.
1256c27c18e8Smrgpic_object=$write_lobj
1257c27c18e8Smrg
1258c27c18e8Smrg# Name of the non-PIC object
1259c27c18e8Smrgnon_pic_object=$write_oldobj
1260c27c18e8Smrg
1261c27c18e8SmrgEOF
1262c27c18e8Smrg      $MV "${write_libobj}T" "${write_libobj}"
1263c27c18e8Smrg    }
1264c27c18e8Smrg}
1265c27c18e8Smrg
1266c27c18e8Smrg# func_mode_compile arg...
1267c27c18e8Smrgfunc_mode_compile ()
1268c27c18e8Smrg{
1269c27c18e8Smrg    $opt_debug
1270c27c18e8Smrg    # Get the compilation command and the source file.
1271c27c18e8Smrg    base_compile=
1272c27c18e8Smrg    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
1273c27c18e8Smrg    suppress_opt=yes
1274c27c18e8Smrg    suppress_output=
1275c27c18e8Smrg    arg_mode=normal
1276c27c18e8Smrg    libobj=
1277c27c18e8Smrg    later=
1278c27c18e8Smrg    pie_flag=
1279c27c18e8Smrg
1280c27c18e8Smrg    for arg
1281c27c18e8Smrg    do
1282c27c18e8Smrg      case $arg_mode in
1283c27c18e8Smrg      arg  )
1284c27c18e8Smrg	# do not "continue".  Instead, add this to base_compile
1285c27c18e8Smrg	lastarg="$arg"
1286c27c18e8Smrg	arg_mode=normal
1287c27c18e8Smrg	;;
1288c27c18e8Smrg
1289c27c18e8Smrg      target )
1290c27c18e8Smrg	libobj="$arg"
1291c27c18e8Smrg	arg_mode=normal
1292c27c18e8Smrg	continue
1293c27c18e8Smrg	;;
1294c27c18e8Smrg
1295c27c18e8Smrg      normal )
1296c27c18e8Smrg	# Accept any command-line options.
1297c27c18e8Smrg	case $arg in
1298c27c18e8Smrg	-o)
1299c27c18e8Smrg	  test -n "$libobj" && \
1300c27c18e8Smrg	    func_fatal_error "you cannot specify \`-o' more than once"
1301c27c18e8Smrg	  arg_mode=target
1302c27c18e8Smrg	  continue
1303c27c18e8Smrg	  ;;
1304c27c18e8Smrg
1305c27c18e8Smrg	-pie | -fpie | -fPIE)
1306c27c18e8Smrg          pie_flag="$pie_flag $arg"
1307c27c18e8Smrg	  continue
1308c27c18e8Smrg	  ;;
1309c27c18e8Smrg
1310c27c18e8Smrg	-shared | -static | -prefer-pic | -prefer-non-pic)
1311c27c18e8Smrg	  later="$later $arg"
1312c27c18e8Smrg	  continue
1313c27c18e8Smrg	  ;;
1314c27c18e8Smrg
1315c27c18e8Smrg	-no-suppress)
1316c43cc173Smrg	  suppress_opt=no
1317c43cc173Smrg	  continue
1318c43cc173Smrg	  ;;
1319c43cc173Smrg
1320c43cc173Smrg	-Xcompiler)
1321c43cc173Smrg	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
1322c43cc173Smrg	  continue      #  The current "srcfile" will either be retained or
1323c43cc173Smrg	  ;;            #  replaced later.  I would guess that would be a bug.
1324c43cc173Smrg
1325c43cc173Smrg	-Wc,*)
1326c27c18e8Smrg	  func_stripname '-Wc,' '' "$arg"
1327c27c18e8Smrg	  args=$func_stripname_result
1328c43cc173Smrg	  lastarg=
1329c43cc173Smrg	  save_ifs="$IFS"; IFS=','
1330c27c18e8Smrg	  for arg in $args; do
1331c43cc173Smrg	    IFS="$save_ifs"
1332c27c18e8Smrg	    func_quote_for_eval "$arg"
1333c27c18e8Smrg	    lastarg="$lastarg $func_quote_for_eval_result"
1334c43cc173Smrg	  done
1335c43cc173Smrg	  IFS="$save_ifs"
1336c27c18e8Smrg	  func_stripname ' ' '' "$lastarg"
1337c27c18e8Smrg	  lastarg=$func_stripname_result
1338c43cc173Smrg
1339c43cc173Smrg	  # Add the arguments to base_compile.
1340c43cc173Smrg	  base_compile="$base_compile $lastarg"
1341c43cc173Smrg	  continue
1342c43cc173Smrg	  ;;
1343c43cc173Smrg
1344c27c18e8Smrg	*)
1345c43cc173Smrg	  # Accept the current argument as the source file.
1346c43cc173Smrg	  # The previous "srcfile" becomes the current argument.
1347c43cc173Smrg	  #
1348c43cc173Smrg	  lastarg="$srcfile"
1349c43cc173Smrg	  srcfile="$arg"
1350c43cc173Smrg	  ;;
1351c43cc173Smrg	esac  #  case $arg
1352c43cc173Smrg	;;
1353c43cc173Smrg      esac    #  case $arg_mode
1354c43cc173Smrg
1355c43cc173Smrg      # Aesthetically quote the previous argument.
1356c27c18e8Smrg      func_quote_for_eval "$lastarg"
1357c27c18e8Smrg      base_compile="$base_compile $func_quote_for_eval_result"
1358c43cc173Smrg    done # for arg
1359c43cc173Smrg
1360c43cc173Smrg    case $arg_mode in
1361c43cc173Smrg    arg)
1362c27c18e8Smrg      func_fatal_error "you must specify an argument for -Xcompile"
1363c43cc173Smrg      ;;
1364c43cc173Smrg    target)
1365c27c18e8Smrg      func_fatal_error "you must specify a target with \`-o'"
1366c43cc173Smrg      ;;
1367c43cc173Smrg    *)
1368c43cc173Smrg      # Get the name of the library object.
1369c27c18e8Smrg      test -z "$libobj" && {
1370c27c18e8Smrg	func_basename "$srcfile"
1371c27c18e8Smrg	libobj="$func_basename_result"
1372c27c18e8Smrg      }
1373c43cc173Smrg      ;;
1374c43cc173Smrg    esac
1375c43cc173Smrg
1376c43cc173Smrg    # Recognize several different file suffixes.
1377c43cc173Smrg    # If the user specifies -o file.o, it is replaced with file.lo
1378c43cc173Smrg    case $libobj in
1379c27c18e8Smrg    *.[cCFSifmso] | \
1380c27c18e8Smrg    *.ada | *.adb | *.ads | *.asm | \
1381c27c18e8Smrg    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
138237eb1ca1Smrg    *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
1383c27c18e8Smrg      func_xform "$libobj"
1384c27c18e8Smrg      libobj=$func_xform_result
1385c27c18e8Smrg      ;;
1386c43cc173Smrg    esac
1387c43cc173Smrg
1388c43cc173Smrg    case $libobj in
1389c27c18e8Smrg    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
1390c43cc173Smrg    *)
1391c27c18e8Smrg      func_fatal_error "cannot determine name of library object from \`$libobj'"
1392c43cc173Smrg      ;;
1393c43cc173Smrg    esac
1394c43cc173Smrg
1395c43cc173Smrg    func_infer_tag $base_compile
1396c43cc173Smrg
1397c43cc173Smrg    for arg in $later; do
1398c43cc173Smrg      case $arg in
1399c27c18e8Smrg      -shared)
1400c27c18e8Smrg	test "$build_libtool_libs" != yes && \
1401c27c18e8Smrg	  func_fatal_configuration "can not build a shared library"
1402c27c18e8Smrg	build_old_libs=no
1403c27c18e8Smrg	continue
1404c27c18e8Smrg	;;
1405c27c18e8Smrg
1406c43cc173Smrg      -static)
1407c27c18e8Smrg	build_libtool_libs=no
1408c43cc173Smrg	build_old_libs=yes
1409c43cc173Smrg	continue
1410c43cc173Smrg	;;
1411c43cc173Smrg
1412c43cc173Smrg      -prefer-pic)
1413c43cc173Smrg	pic_mode=yes
1414c43cc173Smrg	continue
1415c43cc173Smrg	;;
1416c43cc173Smrg
1417c43cc173Smrg      -prefer-non-pic)
1418c43cc173Smrg	pic_mode=no
1419c43cc173Smrg	continue
1420c43cc173Smrg	;;
1421c43cc173Smrg      esac
1422c43cc173Smrg    done
1423c43cc173Smrg
1424c27c18e8Smrg    func_quote_for_eval "$libobj"
1425c27c18e8Smrg    test "X$libobj" != "X$func_quote_for_eval_result" \
1426c27c18e8Smrg      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
1427c27c18e8Smrg      && func_warning "libobj name \`$libobj' may not contain shell special characters."
1428c27c18e8Smrg    func_dirname_and_basename "$obj" "/" ""
1429c27c18e8Smrg    objname="$func_basename_result"
1430c27c18e8Smrg    xdir="$func_dirname_result"
1431c43cc173Smrg    lobj=${xdir}$objdir/$objname
1432c43cc173Smrg
1433c27c18e8Smrg    test -z "$base_compile" && \
1434c27c18e8Smrg      func_fatal_help "you must specify a compilation command"
1435c43cc173Smrg
1436c43cc173Smrg    # Delete any leftover library objects.
1437c43cc173Smrg    if test "$build_old_libs" = yes; then
1438c43cc173Smrg      removelist="$obj $lobj $libobj ${libobj}T"
1439c43cc173Smrg    else
1440c43cc173Smrg      removelist="$lobj $libobj ${libobj}T"
1441c43cc173Smrg    fi
1442c43cc173Smrg
1443c43cc173Smrg    # On Cygwin there's no "real" PIC flag so we must build both object types
1444c43cc173Smrg    case $host_os in
1445c27c18e8Smrg    cygwin* | mingw* | pw32* | os2* | cegcc*)
1446c43cc173Smrg      pic_mode=default
1447c43cc173Smrg      ;;
1448c43cc173Smrg    esac
1449c43cc173Smrg    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
1450c43cc173Smrg      # non-PIC code in shared libraries is not supported
1451c43cc173Smrg      pic_mode=default
1452c43cc173Smrg    fi
1453c43cc173Smrg
1454c43cc173Smrg    # Calculate the filename of the output object if compiler does
1455c43cc173Smrg    # not support -o with -c
1456c43cc173Smrg    if test "$compiler_c_o" = no; then
145737eb1ca1Smrg      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
1458c43cc173Smrg      lockfile="$output_obj.lock"
1459c43cc173Smrg    else
1460c43cc173Smrg      output_obj=
1461c43cc173Smrg      need_locks=no
1462c43cc173Smrg      lockfile=
1463c43cc173Smrg    fi
1464c43cc173Smrg
1465c43cc173Smrg    # Lock this critical section if it is needed
1466c43cc173Smrg    # We use this script file to make the link, it avoids creating a new file
1467c43cc173Smrg    if test "$need_locks" = yes; then
1468c27c18e8Smrg      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
1469c27c18e8Smrg	func_echo "Waiting for $lockfile to be removed"
1470c43cc173Smrg	sleep 2
1471c43cc173Smrg      done
1472c43cc173Smrg    elif test "$need_locks" = warn; then
1473c43cc173Smrg      if test -f "$lockfile"; then
1474c27c18e8Smrg	$ECHO "\
1475c43cc173Smrg*** ERROR, $lockfile exists and contains:
1476c43cc173Smrg`cat $lockfile 2>/dev/null`
1477c43cc173Smrg
1478c43cc173SmrgThis indicates that another process is trying to use the same
1479c43cc173Smrgtemporary object file, and libtool could not work around it because
1480c43cc173Smrgyour compiler does not support \`-c' and \`-o' together.  If you
1481c43cc173Smrgrepeat this compilation, it may succeed, by chance, but you had better
1482c43cc173Smrgavoid parallel builds (make -j) in this platform, or get a better
1483c43cc173Smrgcompiler."
1484c43cc173Smrg
1485c27c18e8Smrg	$opt_dry_run || $RM $removelist
1486c43cc173Smrg	exit $EXIT_FAILURE
1487c43cc173Smrg      fi
1488c27c18e8Smrg      removelist="$removelist $output_obj"
1489c27c18e8Smrg      $ECHO "$srcfile" > "$lockfile"
1490c43cc173Smrg    fi
1491c43cc173Smrg
1492c27c18e8Smrg    $opt_dry_run || $RM $removelist
1493c27c18e8Smrg    removelist="$removelist $lockfile"
1494c27c18e8Smrg    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
1495c27c18e8Smrg
1496c43cc173Smrg    if test -n "$fix_srcfile_path"; then
1497c43cc173Smrg      eval srcfile=\"$fix_srcfile_path\"
1498c43cc173Smrg    fi
1499c27c18e8Smrg    func_quote_for_eval "$srcfile"
1500c27c18e8Smrg    qsrcfile=$func_quote_for_eval_result
1501c43cc173Smrg
1502c43cc173Smrg    # Only build a PIC object if we are building libtool libraries.
1503c43cc173Smrg    if test "$build_libtool_libs" = yes; then
1504c43cc173Smrg      # Without this assignment, base_compile gets emptied.
1505c43cc173Smrg      fbsd_hideous_sh_bug=$base_compile
1506c43cc173Smrg
1507c43cc173Smrg      if test "$pic_mode" != no; then
1508c43cc173Smrg	command="$base_compile $qsrcfile $pic_flag"
1509c43cc173Smrg      else
1510c43cc173Smrg	# Don't build PIC code
1511c43cc173Smrg	command="$base_compile $qsrcfile"
1512c43cc173Smrg      fi
1513c43cc173Smrg
1514c27c18e8Smrg      func_mkdir_p "$xdir$objdir"
1515c43cc173Smrg
1516c43cc173Smrg      if test -z "$output_obj"; then
1517c43cc173Smrg	# Place PIC objects in $objdir
1518c43cc173Smrg	command="$command -o $lobj"
1519c43cc173Smrg      fi
1520c43cc173Smrg
1521c27c18e8Smrg      func_show_eval_locale "$command"	\
1522c27c18e8Smrg          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
1523c43cc173Smrg
1524c43cc173Smrg      if test "$need_locks" = warn &&
1525c43cc173Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1526c27c18e8Smrg	$ECHO "\
1527c43cc173Smrg*** ERROR, $lockfile contains:
1528c43cc173Smrg`cat $lockfile 2>/dev/null`
1529c43cc173Smrg
1530c43cc173Smrgbut it should contain:
1531c43cc173Smrg$srcfile
1532c43cc173Smrg
1533c43cc173SmrgThis indicates that another process is trying to use the same
1534c43cc173Smrgtemporary object file, and libtool could not work around it because
1535c43cc173Smrgyour compiler does not support \`-c' and \`-o' together.  If you
1536c43cc173Smrgrepeat this compilation, it may succeed, by chance, but you had better
1537c43cc173Smrgavoid parallel builds (make -j) in this platform, or get a better
1538c43cc173Smrgcompiler."
1539c43cc173Smrg
1540c27c18e8Smrg	$opt_dry_run || $RM $removelist
1541c43cc173Smrg	exit $EXIT_FAILURE
1542c43cc173Smrg      fi
1543c43cc173Smrg
1544c43cc173Smrg      # Just move the object if needed, then go on to compile the next one
1545c43cc173Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
1546c27c18e8Smrg	func_show_eval '$MV "$output_obj" "$lobj"' \
1547c27c18e8Smrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
1548c43cc173Smrg      fi
1549c43cc173Smrg
1550c43cc173Smrg      # Allow error messages only from the first compilation.
1551c43cc173Smrg      if test "$suppress_opt" = yes; then
1552c27c18e8Smrg	suppress_output=' >/dev/null 2>&1'
1553c43cc173Smrg      fi
1554c43cc173Smrg    fi
1555c43cc173Smrg
1556c43cc173Smrg    # Only build a position-dependent object if we build old libraries.
1557c43cc173Smrg    if test "$build_old_libs" = yes; then
1558c43cc173Smrg      if test "$pic_mode" != yes; then
1559c43cc173Smrg	# Don't build PIC code
1560c27c18e8Smrg	command="$base_compile $qsrcfile$pie_flag"
1561c43cc173Smrg      else
1562c43cc173Smrg	command="$base_compile $qsrcfile $pic_flag"
1563c43cc173Smrg      fi
1564c43cc173Smrg      if test "$compiler_c_o" = yes; then
1565c43cc173Smrg	command="$command -o $obj"
1566c43cc173Smrg      fi
1567c43cc173Smrg
1568c43cc173Smrg      # Suppress compiler output if we already did a PIC compilation.
1569c43cc173Smrg      command="$command$suppress_output"
1570c27c18e8Smrg      func_show_eval_locale "$command" \
1571c27c18e8Smrg        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
1572c43cc173Smrg
1573c43cc173Smrg      if test "$need_locks" = warn &&
1574c43cc173Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1575c27c18e8Smrg	$ECHO "\
1576c43cc173Smrg*** ERROR, $lockfile contains:
1577c43cc173Smrg`cat $lockfile 2>/dev/null`
1578c43cc173Smrg
1579c43cc173Smrgbut it should contain:
1580c43cc173Smrg$srcfile
1581c43cc173Smrg
1582c43cc173SmrgThis indicates that another process is trying to use the same
1583c43cc173Smrgtemporary object file, and libtool could not work around it because
1584c43cc173Smrgyour compiler does not support \`-c' and \`-o' together.  If you
1585c43cc173Smrgrepeat this compilation, it may succeed, by chance, but you had better
1586c43cc173Smrgavoid parallel builds (make -j) in this platform, or get a better
1587c43cc173Smrgcompiler."
1588c43cc173Smrg
1589c27c18e8Smrg	$opt_dry_run || $RM $removelist
1590c43cc173Smrg	exit $EXIT_FAILURE
1591c43cc173Smrg      fi
1592c43cc173Smrg
1593c43cc173Smrg      # Just move the object if needed
1594c43cc173Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
1595c27c18e8Smrg	func_show_eval '$MV "$output_obj" "$obj"' \
1596c27c18e8Smrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
1597c43cc173Smrg      fi
1598c43cc173Smrg    fi
1599c43cc173Smrg
1600c27c18e8Smrg    $opt_dry_run || {
1601c27c18e8Smrg      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
1602c43cc173Smrg
1603c27c18e8Smrg      # Unlock the critical section if it was locked
1604c27c18e8Smrg      if test "$need_locks" != no; then
1605c27c18e8Smrg	removelist=$lockfile
1606c27c18e8Smrg        $RM "$lockfile"
1607c27c18e8Smrg      fi
1608c27c18e8Smrg    }
1609c43cc173Smrg
1610c43cc173Smrg    exit $EXIT_SUCCESS
1611c27c18e8Smrg}
1612c43cc173Smrg
1613c27c18e8Smrg$opt_help || {
161437eb1ca1Smrg  test "$mode" = compile && func_mode_compile ${1+"$@"}
1615c27c18e8Smrg}
1616c43cc173Smrg
1617c27c18e8Smrgfunc_mode_help ()
1618c27c18e8Smrg{
1619c27c18e8Smrg    # We need to display help for each of the modes.
1620c27c18e8Smrg    case $mode in
1621c27c18e8Smrg      "")
1622c27c18e8Smrg        # Generic help is extracted from the usage comments
1623c27c18e8Smrg        # at the start of this file.
1624c27c18e8Smrg        func_help
1625c27c18e8Smrg        ;;
1626c43cc173Smrg
1627c27c18e8Smrg      clean)
1628c27c18e8Smrg        $ECHO \
1629c27c18e8Smrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
1630c43cc173Smrg
1631c27c18e8SmrgRemove files from the build directory.
1632c43cc173Smrg
1633c27c18e8SmrgRM is the name of the program to use to delete files associated with each FILE
1634c27c18e8Smrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
1635c27c18e8Smrgto RM.
1636c43cc173Smrg
1637c27c18e8SmrgIf FILE is a libtool library, object or program, all the files associated
1638c27c18e8Smrgwith it are deleted. Otherwise, only FILE itself is deleted using RM."
1639c27c18e8Smrg        ;;
1640c43cc173Smrg
1641c27c18e8Smrg      compile)
1642c27c18e8Smrg      $ECHO \
1643c27c18e8Smrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
1644c43cc173Smrg
1645c27c18e8SmrgCompile a source file into a libtool library object.
1646c43cc173Smrg
1647c27c18e8SmrgThis mode accepts the following additional options:
1648c43cc173Smrg
1649c27c18e8Smrg  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
1650c27c18e8Smrg  -no-suppress      do not suppress compiler output for multiple passes
165137eb1ca1Smrg  -prefer-pic       try to build PIC objects only
165237eb1ca1Smrg  -prefer-non-pic   try to build non-PIC objects only
1653c27c18e8Smrg  -shared           do not build a \`.o' file suitable for static linking
1654c27c18e8Smrg  -static           only build a \`.o' file suitable for static linking
165537eb1ca1Smrg  -Wc,FLAG          pass FLAG directly to the compiler
1656c43cc173Smrg
1657c27c18e8SmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
1658c27c18e8Smrgfrom the given SOURCEFILE.
1659c43cc173Smrg
1660c27c18e8SmrgThe output file name is determined by removing the directory component from
1661c27c18e8SmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the
1662c27c18e8Smrglibrary object suffix, \`.lo'."
1663c27c18e8Smrg        ;;
1664c43cc173Smrg
1665c27c18e8Smrg      execute)
1666c27c18e8Smrg        $ECHO \
1667c27c18e8Smrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
1668c43cc173Smrg
1669c27c18e8SmrgAutomatically set library path, then run a program.
1670c43cc173Smrg
1671c27c18e8SmrgThis mode accepts the following additional options:
1672c43cc173Smrg
1673c27c18e8Smrg  -dlopen FILE      add the directory containing FILE to the library path
1674c43cc173Smrg
1675c27c18e8SmrgThis mode sets the library path environment variable according to \`-dlopen'
1676c27c18e8Smrgflags.
1677c43cc173Smrg
1678c27c18e8SmrgIf any of the ARGS are libtool executable wrappers, then they are translated
1679c27c18e8Smrginto their corresponding uninstalled binary, and any of their required library
1680c27c18e8Smrgdirectories are added to the library path.
1681c43cc173Smrg
1682c27c18e8SmrgThen, COMMAND is executed, with ARGS as arguments."
1683c27c18e8Smrg        ;;
1684c43cc173Smrg
1685c27c18e8Smrg      finish)
1686c27c18e8Smrg        $ECHO \
1687c27c18e8Smrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
1688c43cc173Smrg
1689c27c18e8SmrgComplete the installation of libtool libraries.
1690c43cc173Smrg
1691c27c18e8SmrgEach LIBDIR is a directory that contains libtool libraries.
1692c43cc173Smrg
1693c27c18e8SmrgThe commands that this mode executes may require superuser privileges.  Use
1694c27c18e8Smrgthe \`--dry-run' option if you just want to see what would be executed."
1695c27c18e8Smrg        ;;
1696c43cc173Smrg
1697c27c18e8Smrg      install)
1698c27c18e8Smrg        $ECHO \
1699c27c18e8Smrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
1700c43cc173Smrg
1701c27c18e8SmrgInstall executables or libraries.
1702c43cc173Smrg
1703c27c18e8SmrgINSTALL-COMMAND is the installation command.  The first component should be
1704c27c18e8Smrgeither the \`install' or \`cp' program.
1705c43cc173Smrg
1706c27c18e8SmrgThe following components of INSTALL-COMMAND are treated specially:
1707c43cc173Smrg
170837eb1ca1Smrg  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
1709c43cc173Smrg
1710c27c18e8SmrgThe rest of the components are interpreted as arguments to that command (only
1711c27c18e8SmrgBSD-compatible install options are recognized)."
1712c27c18e8Smrg        ;;
1713c43cc173Smrg
1714c27c18e8Smrg      link)
1715c27c18e8Smrg        $ECHO \
1716c27c18e8Smrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
1717c43cc173Smrg
1718c27c18e8SmrgLink object files or libraries together to form another library, or to
1719c27c18e8Smrgcreate an executable program.
1720c43cc173Smrg
1721c27c18e8SmrgLINK-COMMAND is a command using the C compiler that you would use to create
1722c27c18e8Smrga program from several object files.
1723c43cc173Smrg
1724c27c18e8SmrgThe following components of LINK-COMMAND are treated specially:
1725c43cc173Smrg
1726c27c18e8Smrg  -all-static       do not do any dynamic linking at all
1727c27c18e8Smrg  -avoid-version    do not add a version suffix if possible
172837eb1ca1Smrg  -bindir BINDIR    specify path to binaries directory (for systems where
172937eb1ca1Smrg                    libraries must be found in the PATH setting at runtime)
1730c27c18e8Smrg  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
1731c27c18e8Smrg  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
1732c27c18e8Smrg  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
1733c27c18e8Smrg  -export-symbols SYMFILE
1734c27c18e8Smrg                    try to export only the symbols listed in SYMFILE
1735c27c18e8Smrg  -export-symbols-regex REGEX
1736c27c18e8Smrg                    try to export only the symbols matching REGEX
1737c27c18e8Smrg  -LLIBDIR          search LIBDIR for required installed libraries
1738c27c18e8Smrg  -lNAME            OUTPUT-FILE requires the installed library libNAME
1739c27c18e8Smrg  -module           build a library that can dlopened
1740c27c18e8Smrg  -no-fast-install  disable the fast-install mode
1741c27c18e8Smrg  -no-install       link a not-installable executable
1742c27c18e8Smrg  -no-undefined     declare that a library does not refer to external symbols
1743c27c18e8Smrg  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
1744c27c18e8Smrg  -objectlist FILE  Use a list of object files found in FILE to specify objects
1745c27c18e8Smrg  -precious-files-regex REGEX
1746c27c18e8Smrg                    don't remove output files matching REGEX
1747c27c18e8Smrg  -release RELEASE  specify package release information
1748c27c18e8Smrg  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
1749c27c18e8Smrg  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
1750c27c18e8Smrg  -shared           only do dynamic linking of libtool libraries
1751c27c18e8Smrg  -shrext SUFFIX    override the standard shared library file extension
1752c27c18e8Smrg  -static           do not do any dynamic linking of uninstalled libtool libraries
1753c27c18e8Smrg  -static-libtool-libs
1754c27c18e8Smrg                    do not do any dynamic linking of libtool libraries
1755c27c18e8Smrg  -version-info CURRENT[:REVISION[:AGE]]
1756c27c18e8Smrg                    specify library version info [each variable defaults to 0]
1757c27c18e8Smrg  -weak LIBNAME     declare that the target provides the LIBNAME interface
175837eb1ca1Smrg  -Wc,FLAG
175937eb1ca1Smrg  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
176037eb1ca1Smrg  -Wl,FLAG
176137eb1ca1Smrg  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
176237eb1ca1Smrg  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
1763c43cc173Smrg
1764c27c18e8SmrgAll other options (arguments beginning with \`-') are ignored.
1765c43cc173Smrg
1766c27c18e8SmrgEvery other argument is treated as a filename.  Files ending in \`.la' are
1767c27c18e8Smrgtreated as uninstalled libtool libraries, other files are standard or library
1768c27c18e8Smrgobject files.
1769c43cc173Smrg
1770c27c18e8SmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
1771c27c18e8Smrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is
1772c27c18e8Smrgrequired, except when creating a convenience library.
1773c43cc173Smrg
1774c27c18e8SmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
1775c27c18e8Smrgusing \`ar' and \`ranlib', or on Windows using \`lib'.
1776c43cc173Smrg
1777c27c18e8SmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
1778c27c18e8Smrgis created, otherwise an executable program is created."
1779c43cc173Smrg        ;;
1780c43cc173Smrg
1781c27c18e8Smrg      uninstall)
1782c27c18e8Smrg        $ECHO \
1783c27c18e8Smrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
1784c43cc173Smrg
1785c27c18e8SmrgRemove libraries from an installation directory.
1786c43cc173Smrg
1787c27c18e8SmrgRM is the name of the program to use to delete files associated with each FILE
1788c27c18e8Smrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
1789c27c18e8Smrgto RM.
1790c43cc173Smrg
1791c27c18e8SmrgIf FILE is a libtool library, all the files associated with it are deleted.
1792c27c18e8SmrgOtherwise, only FILE itself is deleted using RM."
1793c27c18e8Smrg        ;;
1794c43cc173Smrg
1795c27c18e8Smrg      *)
1796c27c18e8Smrg        func_fatal_help "invalid operation mode \`$mode'"
1797c27c18e8Smrg        ;;
1798c27c18e8Smrg    esac
1799c43cc173Smrg
180037eb1ca1Smrg    echo
1801c27c18e8Smrg    $ECHO "Try \`$progname --help' for more information about other modes."
1802c27c18e8Smrg}
1803c43cc173Smrg
180437eb1ca1Smrg# Now that we've collected a possible --mode arg, show help if necessary
180537eb1ca1Smrgif $opt_help; then
180637eb1ca1Smrg  if test "$opt_help" = :; then
180737eb1ca1Smrg    func_mode_help
180837eb1ca1Smrg  else
180937eb1ca1Smrg    {
181037eb1ca1Smrg      func_help noexit
181137eb1ca1Smrg      for mode in compile link execute install finish uninstall clean; do
181237eb1ca1Smrg	func_mode_help
181337eb1ca1Smrg      done
181437eb1ca1Smrg    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
181537eb1ca1Smrg    {
181637eb1ca1Smrg      func_help noexit
181737eb1ca1Smrg      for mode in compile link execute install finish uninstall clean; do
181837eb1ca1Smrg	echo
181937eb1ca1Smrg	func_mode_help
182037eb1ca1Smrg      done
182137eb1ca1Smrg    } |
182237eb1ca1Smrg    sed '1d
182337eb1ca1Smrg      /^When reporting/,/^Report/{
182437eb1ca1Smrg	H
182537eb1ca1Smrg	d
182637eb1ca1Smrg      }
182737eb1ca1Smrg      $x
182837eb1ca1Smrg      /information about other modes/d
182937eb1ca1Smrg      /more detailed .*MODE/d
183037eb1ca1Smrg      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
183137eb1ca1Smrg  fi
183237eb1ca1Smrg  exit $?
183337eb1ca1Smrgfi
1834c43cc173Smrg
1835c43cc173Smrg
1836c27c18e8Smrg# func_mode_execute arg...
1837c27c18e8Smrgfunc_mode_execute ()
1838c27c18e8Smrg{
1839c27c18e8Smrg    $opt_debug
1840c27c18e8Smrg    # The first argument is the command name.
1841c27c18e8Smrg    cmd="$nonopt"
1842c27c18e8Smrg    test -z "$cmd" && \
1843c27c18e8Smrg      func_fatal_help "you must specify a COMMAND"
1844c43cc173Smrg
1845c27c18e8Smrg    # Handle -dlopen flags immediately.
1846c27c18e8Smrg    for file in $execute_dlfiles; do
1847c27c18e8Smrg      test -f "$file" \
1848c27c18e8Smrg	|| func_fatal_help "\`$file' is not a file"
1849c43cc173Smrg
1850c27c18e8Smrg      dir=
1851c27c18e8Smrg      case $file in
1852c27c18e8Smrg      *.la)
1853c27c18e8Smrg	# Check to see that this really is a libtool archive.
1854c27c18e8Smrg	func_lalib_unsafe_p "$file" \
1855c27c18e8Smrg	  || func_fatal_help "\`$lib' is not a valid libtool archive"
1856c43cc173Smrg
1857c27c18e8Smrg	# Read the libtool library.
1858c27c18e8Smrg	dlname=
1859c27c18e8Smrg	library_names=
1860c27c18e8Smrg	func_source "$file"
1861c43cc173Smrg
1862c27c18e8Smrg	# Skip this library if it cannot be dlopened.
1863c27c18e8Smrg	if test -z "$dlname"; then
1864c27c18e8Smrg	  # Warn if it was a shared library.
1865c27c18e8Smrg	  test -n "$library_names" && \
1866c27c18e8Smrg	    func_warning "\`$file' was not linked with \`-export-dynamic'"
1867c27c18e8Smrg	  continue
1868c27c18e8Smrg	fi
1869c43cc173Smrg
1870c27c18e8Smrg	func_dirname "$file" "" "."
1871c27c18e8Smrg	dir="$func_dirname_result"
1872c43cc173Smrg
1873c27c18e8Smrg	if test -f "$dir/$objdir/$dlname"; then
1874c27c18e8Smrg	  dir="$dir/$objdir"
1875c27c18e8Smrg	else
1876c27c18e8Smrg	  if test ! -f "$dir/$dlname"; then
1877c27c18e8Smrg	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
1878c27c18e8Smrg	  fi
1879c27c18e8Smrg	fi
1880c43cc173Smrg	;;
1881c43cc173Smrg
1882c27c18e8Smrg      *.lo)
1883c27c18e8Smrg	# Just add the directory containing the .lo file.
1884c27c18e8Smrg	func_dirname "$file" "" "."
1885c27c18e8Smrg	dir="$func_dirname_result"
1886c43cc173Smrg	;;
1887c43cc173Smrg
1888c27c18e8Smrg      *)
1889c27c18e8Smrg	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
1890c43cc173Smrg	continue
1891c43cc173Smrg	;;
1892c27c18e8Smrg      esac
1893c43cc173Smrg
1894c27c18e8Smrg      # Get the absolute pathname.
1895c27c18e8Smrg      absdir=`cd "$dir" && pwd`
1896c27c18e8Smrg      test -n "$absdir" && dir="$absdir"
1897c43cc173Smrg
1898c27c18e8Smrg      # Now add the directory to shlibpath_var.
1899c27c18e8Smrg      if eval "test -z \"\$$shlibpath_var\""; then
1900c27c18e8Smrg	eval "$shlibpath_var=\"\$dir\""
1901c27c18e8Smrg      else
1902c27c18e8Smrg	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
1903c27c18e8Smrg      fi
1904c27c18e8Smrg    done
1905c43cc173Smrg
1906c27c18e8Smrg    # This variable tells wrapper scripts just to set shlibpath_var
1907c27c18e8Smrg    # rather than running their programs.
1908c27c18e8Smrg    libtool_execute_magic="$magic"
1909c43cc173Smrg
1910c27c18e8Smrg    # Check if any of the arguments is a wrapper script.
1911c27c18e8Smrg    args=
1912c27c18e8Smrg    for file
1913c27c18e8Smrg    do
1914c27c18e8Smrg      case $file in
191537eb1ca1Smrg      -* | *.la | *.lo ) ;;
1916c27c18e8Smrg      *)
1917c27c18e8Smrg	# Do a test to see if this is really a libtool program.
1918c27c18e8Smrg	if func_ltwrapper_script_p "$file"; then
1919c27c18e8Smrg	  func_source "$file"
1920c27c18e8Smrg	  # Transform arg to wrapped name.
1921c27c18e8Smrg	  file="$progdir/$program"
1922c27c18e8Smrg	elif func_ltwrapper_executable_p "$file"; then
1923c27c18e8Smrg	  func_ltwrapper_scriptname "$file"
1924c27c18e8Smrg	  func_source "$func_ltwrapper_scriptname_result"
1925c27c18e8Smrg	  # Transform arg to wrapped name.
1926c27c18e8Smrg	  file="$progdir/$program"
1927c27c18e8Smrg	fi
1928c27c18e8Smrg	;;
1929c27c18e8Smrg      esac
1930c27c18e8Smrg      # Quote arguments (to preserve shell metacharacters).
1931c27c18e8Smrg      func_quote_for_eval "$file"
1932c27c18e8Smrg      args="$args $func_quote_for_eval_result"
1933c27c18e8Smrg    done
1934c43cc173Smrg
1935c27c18e8Smrg    if test "X$opt_dry_run" = Xfalse; then
1936c27c18e8Smrg      if test -n "$shlibpath_var"; then
1937c27c18e8Smrg	# Export the shlibpath_var.
1938c27c18e8Smrg	eval "export $shlibpath_var"
1939c27c18e8Smrg      fi
1940c43cc173Smrg
1941c27c18e8Smrg      # Restore saved environment variables
1942c27c18e8Smrg      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
1943c27c18e8Smrg      do
1944c27c18e8Smrg	eval "if test \"\${save_$lt_var+set}\" = set; then
1945c27c18e8Smrg                $lt_var=\$save_$lt_var; export $lt_var
1946c43cc173Smrg	      else
1947c27c18e8Smrg		$lt_unset $lt_var
1948c27c18e8Smrg	      fi"
1949c27c18e8Smrg      done
1950c43cc173Smrg
1951c27c18e8Smrg      # Now prepare to actually exec the command.
1952c27c18e8Smrg      exec_cmd="\$cmd$args"
1953c27c18e8Smrg    else
1954c27c18e8Smrg      # Display what would be done.
1955c27c18e8Smrg      if test -n "$shlibpath_var"; then
1956c27c18e8Smrg	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
195737eb1ca1Smrg	echo "export $shlibpath_var"
1958c27c18e8Smrg      fi
1959c27c18e8Smrg      $ECHO "$cmd$args"
1960c27c18e8Smrg      exit $EXIT_SUCCESS
1961c27c18e8Smrg    fi
1962c27c18e8Smrg}
1963c43cc173Smrg
1964c27c18e8Smrgtest "$mode" = execute && func_mode_execute ${1+"$@"}
1965c43cc173Smrg
1966c43cc173Smrg
1967c27c18e8Smrg# func_mode_finish arg...
1968c27c18e8Smrgfunc_mode_finish ()
1969c27c18e8Smrg{
1970c27c18e8Smrg    $opt_debug
1971c27c18e8Smrg    libdirs="$nonopt"
1972c27c18e8Smrg    admincmds=
1973c43cc173Smrg
1974c27c18e8Smrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
1975c27c18e8Smrg      for dir
1976c27c18e8Smrg      do
1977c27c18e8Smrg	libdirs="$libdirs $dir"
1978c27c18e8Smrg      done
1979c43cc173Smrg
1980c27c18e8Smrg      for libdir in $libdirs; do
1981c27c18e8Smrg	if test -n "$finish_cmds"; then
1982c27c18e8Smrg	  # Do each command in the finish commands.
1983c27c18e8Smrg	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
1984c27c18e8Smrg'"$cmd"'"'
1985c43cc173Smrg	fi
1986c27c18e8Smrg	if test -n "$finish_eval"; then
1987c27c18e8Smrg	  # Do the single finish_eval.
1988c27c18e8Smrg	  eval cmds=\"$finish_eval\"
1989c27c18e8Smrg	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
1990c27c18e8Smrg       $cmds"
1991c27c18e8Smrg	fi
1992c27c18e8Smrg      done
1993c27c18e8Smrg    fi
1994c43cc173Smrg
1995c27c18e8Smrg    # Exit here if they wanted silent mode.
1996c27c18e8Smrg    $opt_silent && exit $EXIT_SUCCESS
1997c43cc173Smrg
199837eb1ca1Smrg    echo "----------------------------------------------------------------------"
199937eb1ca1Smrg    echo "Libraries have been installed in:"
2000c27c18e8Smrg    for libdir in $libdirs; do
2001c27c18e8Smrg      $ECHO "   $libdir"
2002c27c18e8Smrg    done
200337eb1ca1Smrg    echo
200437eb1ca1Smrg    echo "If you ever happen to want to link against installed libraries"
200537eb1ca1Smrg    echo "in a given directory, LIBDIR, you must either use libtool, and"
200637eb1ca1Smrg    echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
200737eb1ca1Smrg    echo "flag during linking and do at least one of the following:"
2008c27c18e8Smrg    if test -n "$shlibpath_var"; then
200937eb1ca1Smrg      echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
201037eb1ca1Smrg      echo "     during execution"
2011c27c18e8Smrg    fi
2012c27c18e8Smrg    if test -n "$runpath_var"; then
201337eb1ca1Smrg      echo "   - add LIBDIR to the \`$runpath_var' environment variable"
201437eb1ca1Smrg      echo "     during linking"
2015c27c18e8Smrg    fi
2016c27c18e8Smrg    if test -n "$hardcode_libdir_flag_spec"; then
2017c27c18e8Smrg      libdir=LIBDIR
2018c27c18e8Smrg      eval flag=\"$hardcode_libdir_flag_spec\"
2019c43cc173Smrg
2020c27c18e8Smrg      $ECHO "   - use the \`$flag' linker flag"
2021c27c18e8Smrg    fi
2022c27c18e8Smrg    if test -n "$admincmds"; then
2023c27c18e8Smrg      $ECHO "   - have your system administrator run these commands:$admincmds"
2024c27c18e8Smrg    fi
2025c27c18e8Smrg    if test -f /etc/ld.so.conf; then
202637eb1ca1Smrg      echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
2027c27c18e8Smrg    fi
202837eb1ca1Smrg    echo
2029c27c18e8Smrg
203037eb1ca1Smrg    echo "See any operating system documentation about shared libraries for"
2031c27c18e8Smrg    case $host in
2032c27c18e8Smrg      solaris2.[6789]|solaris2.1[0-9])
203337eb1ca1Smrg        echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
203437eb1ca1Smrg	echo "pages."
2035c27c18e8Smrg	;;
2036c27c18e8Smrg      *)
203737eb1ca1Smrg        echo "more information, such as the ld(1) and ld.so(8) manual pages."
2038c27c18e8Smrg        ;;
2039c27c18e8Smrg    esac
204037eb1ca1Smrg    echo "----------------------------------------------------------------------"
2041c27c18e8Smrg    exit $EXIT_SUCCESS
2042c27c18e8Smrg}
2043c27c18e8Smrg
2044c27c18e8Smrgtest "$mode" = finish && func_mode_finish ${1+"$@"}
2045c27c18e8Smrg
2046c27c18e8Smrg
2047c27c18e8Smrg# func_mode_install arg...
2048c27c18e8Smrgfunc_mode_install ()
2049c27c18e8Smrg{
2050c27c18e8Smrg    $opt_debug
2051c27c18e8Smrg    # There may be an optional sh(1) argument at the beginning of
2052c27c18e8Smrg    # install_prog (especially on Windows NT).
2053c27c18e8Smrg    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
2054c27c18e8Smrg       # Allow the use of GNU shtool's install command.
205537eb1ca1Smrg       case $nonopt in *shtool*) :;; *) false;; esac; then
2056c27c18e8Smrg      # Aesthetically quote it.
2057c27c18e8Smrg      func_quote_for_eval "$nonopt"
2058c27c18e8Smrg      install_prog="$func_quote_for_eval_result "
2059c27c18e8Smrg      arg=$1
2060c27c18e8Smrg      shift
2061c27c18e8Smrg    else
2062c27c18e8Smrg      install_prog=
2063c27c18e8Smrg      arg=$nonopt
2064c27c18e8Smrg    fi
2065c27c18e8Smrg
2066c27c18e8Smrg    # The real first argument should be the name of the installation program.
2067c27c18e8Smrg    # Aesthetically quote it.
2068c27c18e8Smrg    func_quote_for_eval "$arg"
2069c27c18e8Smrg    install_prog="$install_prog$func_quote_for_eval_result"
207037eb1ca1Smrg    install_shared_prog=$install_prog
207137eb1ca1Smrg    case " $install_prog " in
207237eb1ca1Smrg      *[\\\ /]cp\ *) install_cp=: ;;
207337eb1ca1Smrg      *) install_cp=false ;;
207437eb1ca1Smrg    esac
2075c27c18e8Smrg
2076c27c18e8Smrg    # We need to accept at least all the BSD install flags.
2077c27c18e8Smrg    dest=
2078c27c18e8Smrg    files=
2079c27c18e8Smrg    opts=
2080c27c18e8Smrg    prev=
2081c27c18e8Smrg    install_type=
2082c27c18e8Smrg    isdir=no
2083c27c18e8Smrg    stripme=
208437eb1ca1Smrg    no_mode=:
2085c27c18e8Smrg    for arg
2086c27c18e8Smrg    do
208737eb1ca1Smrg      arg2=
2088c27c18e8Smrg      if test -n "$dest"; then
2089c27c18e8Smrg	files="$files $dest"
2090c27c18e8Smrg	dest=$arg
2091c27c18e8Smrg	continue
2092c27c18e8Smrg      fi
2093c27c18e8Smrg
2094c27c18e8Smrg      case $arg in
2095c27c18e8Smrg      -d) isdir=yes ;;
2096c27c18e8Smrg      -f)
209737eb1ca1Smrg	if $install_cp; then :; else
209837eb1ca1Smrg	  prev=$arg
209937eb1ca1Smrg	fi
2100c27c18e8Smrg	;;
2101c27c18e8Smrg      -g | -m | -o)
2102c27c18e8Smrg	prev=$arg
2103c27c18e8Smrg	;;
2104c27c18e8Smrg      -s)
2105c27c18e8Smrg	stripme=" -s"
2106c27c18e8Smrg	continue
2107c27c18e8Smrg	;;
2108c27c18e8Smrg      -*)
2109c27c18e8Smrg	;;
2110c27c18e8Smrg      *)
2111c27c18e8Smrg	# If the previous option needed an argument, then skip it.
2112c27c18e8Smrg	if test -n "$prev"; then
211337eb1ca1Smrg	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
211437eb1ca1Smrg	    arg2=$install_override_mode
211537eb1ca1Smrg	    no_mode=false
211637eb1ca1Smrg	  fi
2117c43cc173Smrg	  prev=
2118c43cc173Smrg	else
2119c27c18e8Smrg	  dest=$arg
2120c27c18e8Smrg	  continue
2121c43cc173Smrg	fi
2122c43cc173Smrg	;;
2123c27c18e8Smrg      esac
2124c43cc173Smrg
2125c27c18e8Smrg      # Aesthetically quote the argument.
2126c27c18e8Smrg      func_quote_for_eval "$arg"
2127c27c18e8Smrg      install_prog="$install_prog $func_quote_for_eval_result"
212837eb1ca1Smrg      if test -n "$arg2"; then
212937eb1ca1Smrg	func_quote_for_eval "$arg2"
213037eb1ca1Smrg      fi
213137eb1ca1Smrg      install_shared_prog="$install_shared_prog $func_quote_for_eval_result"
2132c27c18e8Smrg    done
2133c43cc173Smrg
2134c27c18e8Smrg    test -z "$install_prog" && \
2135c27c18e8Smrg      func_fatal_help "you must specify an install program"
2136c43cc173Smrg
2137c27c18e8Smrg    test -n "$prev" && \
2138c27c18e8Smrg      func_fatal_help "the \`$prev' option requires an argument"
2139c43cc173Smrg
214037eb1ca1Smrg    if test -n "$install_override_mode" && $no_mode; then
214137eb1ca1Smrg      if $install_cp; then :; else
214237eb1ca1Smrg	func_quote_for_eval "$install_override_mode"
214337eb1ca1Smrg	install_shared_prog="$install_shared_prog -m $func_quote_for_eval_result"
214437eb1ca1Smrg      fi
214537eb1ca1Smrg    fi
214637eb1ca1Smrg
2147c27c18e8Smrg    if test -z "$files"; then
2148c27c18e8Smrg      if test -z "$dest"; then
2149c27c18e8Smrg	func_fatal_help "no file or destination specified"
2150c27c18e8Smrg      else
2151c27c18e8Smrg	func_fatal_help "you must specify a destination"
2152c27c18e8Smrg      fi
2153c43cc173Smrg    fi
2154c43cc173Smrg
2155c27c18e8Smrg    # Strip any trailing slash from the destination.
2156c27c18e8Smrg    func_stripname '' '/' "$dest"
2157c27c18e8Smrg    dest=$func_stripname_result
2158c43cc173Smrg
2159c27c18e8Smrg    # Check to see that the destination is a directory.
2160c27c18e8Smrg    test -d "$dest" && isdir=yes
2161c27c18e8Smrg    if test "$isdir" = yes; then
2162c27c18e8Smrg      destdir="$dest"
2163c27c18e8Smrg      destname=
2164c43cc173Smrg    else
2165c27c18e8Smrg      func_dirname_and_basename "$dest" "" "."
2166c27c18e8Smrg      destdir="$func_dirname_result"
2167c27c18e8Smrg      destname="$func_basename_result"
2168c43cc173Smrg
2169c27c18e8Smrg      # Not a directory, so check to see that there is only one file specified.
2170c27c18e8Smrg      set dummy $files; shift
2171c27c18e8Smrg      test "$#" -gt 1 && \
2172c27c18e8Smrg	func_fatal_help "\`$dest' is not a directory"
2173c43cc173Smrg    fi
2174c27c18e8Smrg    case $destdir in
2175c27c18e8Smrg    [\\/]* | [A-Za-z]:[\\/]*) ;;
2176c43cc173Smrg    *)
2177c27c18e8Smrg      for file in $files; do
2178c27c18e8Smrg	case $file in
2179c27c18e8Smrg	*.lo) ;;
2180c27c18e8Smrg	*)
2181c27c18e8Smrg	  func_fatal_help "\`$destdir' must be an absolute directory name"
2182c27c18e8Smrg	  ;;
2183c27c18e8Smrg	esac
2184c27c18e8Smrg      done
2185c43cc173Smrg      ;;
2186c43cc173Smrg    esac
2187c43cc173Smrg
2188c27c18e8Smrg    # This variable tells wrapper scripts just to set variables rather
2189c27c18e8Smrg    # than running their programs.
2190c27c18e8Smrg    libtool_install_magic="$magic"
2191c43cc173Smrg
2192c27c18e8Smrg    staticlibs=
2193c27c18e8Smrg    future_libdirs=
2194c27c18e8Smrg    current_libdirs=
2195c27c18e8Smrg    for file in $files; do
2196c43cc173Smrg
2197c27c18e8Smrg      # Do each installation.
2198c27c18e8Smrg      case $file in
2199c27c18e8Smrg      *.$libext)
2200c27c18e8Smrg	# Do the static libraries later.
2201c27c18e8Smrg	staticlibs="$staticlibs $file"
2202c27c18e8Smrg	;;
2203c27c18e8Smrg
2204c27c18e8Smrg      *.la)
2205c27c18e8Smrg	# Check to see that this really is a libtool archive.
2206c27c18e8Smrg	func_lalib_unsafe_p "$file" \
2207c27c18e8Smrg	  || func_fatal_help "\`$file' is not a valid libtool archive"
2208c27c18e8Smrg
2209c27c18e8Smrg	library_names=
2210c27c18e8Smrg	old_library=
2211c27c18e8Smrg	relink_command=
2212c27c18e8Smrg	func_source "$file"
2213c27c18e8Smrg
2214c27c18e8Smrg	# Add the libdir to current_libdirs if it is the destination.
2215c27c18e8Smrg	if test "X$destdir" = "X$libdir"; then
2216c27c18e8Smrg	  case "$current_libdirs " in
2217c27c18e8Smrg	  *" $libdir "*) ;;
2218c27c18e8Smrg	  *) current_libdirs="$current_libdirs $libdir" ;;
2219c43cc173Smrg	  esac
2220c27c18e8Smrg	else
2221c27c18e8Smrg	  # Note the libdir as a future libdir.
2222c27c18e8Smrg	  case "$future_libdirs " in
2223c27c18e8Smrg	  *" $libdir "*) ;;
2224c27c18e8Smrg	  *) future_libdirs="$future_libdirs $libdir" ;;
2225c27c18e8Smrg	  esac
2226c27c18e8Smrg	fi
2227c43cc173Smrg
2228c27c18e8Smrg	func_dirname "$file" "/" ""
2229c27c18e8Smrg	dir="$func_dirname_result"
2230c27c18e8Smrg	dir="$dir$objdir"
2231c27c18e8Smrg
2232c27c18e8Smrg	if test -n "$relink_command"; then
2233c27c18e8Smrg	  # Determine the prefix the user has applied to our future dir.
223437eb1ca1Smrg	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
2235c27c18e8Smrg
2236c27c18e8Smrg	  # Don't allow the user to place us outside of our expected
2237c27c18e8Smrg	  # location b/c this prevents finding dependent libraries that
2238c27c18e8Smrg	  # are installed to the same prefix.
2239c27c18e8Smrg	  # At present, this check doesn't affect windows .dll's that
2240c27c18e8Smrg	  # are installed into $libdir/../bin (currently, that works fine)
2241c27c18e8Smrg	  # but it's something to keep an eye on.
2242c27c18e8Smrg	  test "$inst_prefix_dir" = "$destdir" && \
2243c27c18e8Smrg	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
2244c27c18e8Smrg
2245c27c18e8Smrg	  if test -n "$inst_prefix_dir"; then
2246c27c18e8Smrg	    # Stick the inst_prefix_dir data into the link command.
224737eb1ca1Smrg	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
2248c27c18e8Smrg	  else
224937eb1ca1Smrg	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
2250c27c18e8Smrg	  fi
2251c27c18e8Smrg
2252c27c18e8Smrg	  func_warning "relinking \`$file'"
2253c27c18e8Smrg	  func_show_eval "$relink_command" \
2254c27c18e8Smrg	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
2255c27c18e8Smrg	fi
2256c27c18e8Smrg
2257c27c18e8Smrg	# See the names of the shared library.
2258c27c18e8Smrg	set dummy $library_names; shift
2259c27c18e8Smrg	if test -n "$1"; then
2260c27c18e8Smrg	  realname="$1"
2261c27c18e8Smrg	  shift
2262c27c18e8Smrg
2263c27c18e8Smrg	  srcname="$realname"
2264c27c18e8Smrg	  test -n "$relink_command" && srcname="$realname"T
2265c27c18e8Smrg
2266c27c18e8Smrg	  # Install the shared library and build the symlinks.
226737eb1ca1Smrg	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
2268c27c18e8Smrg	      'exit $?'
2269c27c18e8Smrg	  tstripme="$stripme"
2270c27c18e8Smrg	  case $host_os in
2271c27c18e8Smrg	  cygwin* | mingw* | pw32* | cegcc*)
2272c27c18e8Smrg	    case $realname in
2273c27c18e8Smrg	    *.dll.a)
2274c27c18e8Smrg	      tstripme=""
2275c27c18e8Smrg	      ;;
2276c27c18e8Smrg	    esac
2277c43cc173Smrg	    ;;
2278c43cc173Smrg	  esac
2279c27c18e8Smrg	  if test -n "$tstripme" && test -n "$striplib"; then
2280c27c18e8Smrg	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
2281c43cc173Smrg	  fi
2282c27c18e8Smrg
2283c27c18e8Smrg	  if test "$#" -gt 0; then
2284c27c18e8Smrg	    # Delete the old symlinks, and create new ones.
2285c27c18e8Smrg	    # Try `ln -sf' first, because the `ln' binary might depend on
2286c27c18e8Smrg	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
2287c27c18e8Smrg	    # so we also need to try rm && ln -s.
2288c27c18e8Smrg	    for linkname
2289c27c18e8Smrg	    do
2290c27c18e8Smrg	      test "$linkname" != "$realname" \
2291c27c18e8Smrg		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
2292c43cc173Smrg	    done
2293c43cc173Smrg	  fi
2294c43cc173Smrg
2295c27c18e8Smrg	  # Do each command in the postinstall commands.
2296c27c18e8Smrg	  lib="$destdir/$realname"
2297c27c18e8Smrg	  func_execute_cmds "$postinstall_cmds" 'exit $?'
2298c43cc173Smrg	fi
2299c43cc173Smrg
2300c27c18e8Smrg	# Install the pseudo-library for information purposes.
2301c27c18e8Smrg	func_basename "$file"
2302c27c18e8Smrg	name="$func_basename_result"
2303c27c18e8Smrg	instname="$dir/$name"i
2304c27c18e8Smrg	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
2305c43cc173Smrg
2306c27c18e8Smrg	# Maybe install the static library, too.
2307c27c18e8Smrg	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
2308c27c18e8Smrg	;;
2309c43cc173Smrg
2310c27c18e8Smrg      *.lo)
2311c27c18e8Smrg	# Install (i.e. copy) a libtool object.
2312c43cc173Smrg
2313c27c18e8Smrg	# Figure out destination file name, if it wasn't already specified.
2314c27c18e8Smrg	if test -n "$destname"; then
2315c27c18e8Smrg	  destfile="$destdir/$destname"
2316c27c18e8Smrg	else
2317c27c18e8Smrg	  func_basename "$file"
2318c27c18e8Smrg	  destfile="$func_basename_result"
2319c27c18e8Smrg	  destfile="$destdir/$destfile"
2320c43cc173Smrg	fi
2321c43cc173Smrg
2322c27c18e8Smrg	# Deduce the name of the destination old-style object file.
2323c27c18e8Smrg	case $destfile in
2324c27c18e8Smrg	*.lo)
2325c27c18e8Smrg	  func_lo2o "$destfile"
2326c27c18e8Smrg	  staticdest=$func_lo2o_result
2327c27c18e8Smrg	  ;;
2328c27c18e8Smrg	*.$objext)
2329c27c18e8Smrg	  staticdest="$destfile"
2330c27c18e8Smrg	  destfile=
2331c27c18e8Smrg	  ;;
2332c27c18e8Smrg	*)
2333c27c18e8Smrg	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
2334c27c18e8Smrg	  ;;
2335c27c18e8Smrg	esac
2336c43cc173Smrg
2337c27c18e8Smrg	# Install the libtool object if requested.
2338c27c18e8Smrg	test -n "$destfile" && \
2339c27c18e8Smrg	  func_show_eval "$install_prog $file $destfile" 'exit $?'
2340c43cc173Smrg
2341c27c18e8Smrg	# Install the old object if enabled.
2342c27c18e8Smrg	if test "$build_old_libs" = yes; then
2343c27c18e8Smrg	  # Deduce the name of the old-style object file.
2344c27c18e8Smrg	  func_lo2o "$file"
2345c27c18e8Smrg	  staticobj=$func_lo2o_result
2346c27c18e8Smrg	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
2347c43cc173Smrg	fi
2348c27c18e8Smrg	exit $EXIT_SUCCESS
2349c27c18e8Smrg	;;
2350c43cc173Smrg
2351c27c18e8Smrg      *)
2352c27c18e8Smrg	# Figure out destination file name, if it wasn't already specified.
2353c27c18e8Smrg	if test -n "$destname"; then
2354c27c18e8Smrg	  destfile="$destdir/$destname"
2355c27c18e8Smrg	else
2356c27c18e8Smrg	  func_basename "$file"
2357c27c18e8Smrg	  destfile="$func_basename_result"
2358c27c18e8Smrg	  destfile="$destdir/$destfile"
2359c27c18e8Smrg	fi
2360c43cc173Smrg
2361c27c18e8Smrg	# If the file is missing, and there is a .exe on the end, strip it
2362c27c18e8Smrg	# because it is most likely a libtool script we actually want to
2363c27c18e8Smrg	# install
2364c27c18e8Smrg	stripped_ext=""
2365c27c18e8Smrg	case $file in
2366c27c18e8Smrg	  *.exe)
2367c27c18e8Smrg	    if test ! -f "$file"; then
2368c27c18e8Smrg	      func_stripname '' '.exe' "$file"
2369c27c18e8Smrg	      file=$func_stripname_result
2370c27c18e8Smrg	      stripped_ext=".exe"
2371c27c18e8Smrg	    fi
2372c27c18e8Smrg	    ;;
2373c27c18e8Smrg	esac
2374c27c18e8Smrg
2375c27c18e8Smrg	# Do a test to see if this is really a libtool program.
2376c27c18e8Smrg	case $host in
2377c27c18e8Smrg	*cygwin* | *mingw*)
2378c27c18e8Smrg	    if func_ltwrapper_executable_p "$file"; then
2379c27c18e8Smrg	      func_ltwrapper_scriptname "$file"
2380c27c18e8Smrg	      wrapper=$func_ltwrapper_scriptname_result
2381c27c18e8Smrg	    else
2382c27c18e8Smrg	      func_stripname '' '.exe' "$file"
2383c27c18e8Smrg	      wrapper=$func_stripname_result
2384c27c18e8Smrg	    fi
2385c27c18e8Smrg	    ;;
2386c43cc173Smrg	*)
2387c27c18e8Smrg	    wrapper=$file
2388c27c18e8Smrg	    ;;
2389c27c18e8Smrg	esac
2390c27c18e8Smrg	if func_ltwrapper_script_p "$wrapper"; then
2391c27c18e8Smrg	  notinst_deplibs=
2392c27c18e8Smrg	  relink_command=
2393c27c18e8Smrg
2394c27c18e8Smrg	  func_source "$wrapper"
2395c27c18e8Smrg
2396c27c18e8Smrg	  # Check the variables that should have been set.
2397c27c18e8Smrg	  test -z "$generated_by_libtool_version" && \
2398c27c18e8Smrg	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
2399c27c18e8Smrg
2400c27c18e8Smrg	  finalize=yes
2401c27c18e8Smrg	  for lib in $notinst_deplibs; do
2402c27c18e8Smrg	    # Check to see that each library is installed.
2403c27c18e8Smrg	    libdir=
2404c27c18e8Smrg	    if test -f "$lib"; then
2405c27c18e8Smrg	      func_source "$lib"
2406c27c18e8Smrg	    fi
240737eb1ca1Smrg	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
2408c27c18e8Smrg	    if test -n "$libdir" && test ! -f "$libfile"; then
2409c27c18e8Smrg	      func_warning "\`$lib' has not been installed in \`$libdir'"
2410c27c18e8Smrg	      finalize=no
2411c27c18e8Smrg	    fi
2412c27c18e8Smrg	  done
2413c27c18e8Smrg
2414c27c18e8Smrg	  relink_command=
2415c27c18e8Smrg	  func_source "$wrapper"
2416c27c18e8Smrg
2417c27c18e8Smrg	  outputname=
2418c27c18e8Smrg	  if test "$fast_install" = no && test -n "$relink_command"; then
2419c27c18e8Smrg	    $opt_dry_run || {
2420c27c18e8Smrg	      if test "$finalize" = yes; then
2421c27c18e8Smrg	        tmpdir=`func_mktempdir`
2422c27c18e8Smrg		func_basename "$file$stripped_ext"
2423c27c18e8Smrg		file="$func_basename_result"
2424c27c18e8Smrg	        outputname="$tmpdir/$file"
2425c27c18e8Smrg	        # Replace the output file specification.
242637eb1ca1Smrg	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
2427c27c18e8Smrg
2428c27c18e8Smrg	        $opt_silent || {
2429c27c18e8Smrg	          func_quote_for_expand "$relink_command"
2430c27c18e8Smrg		  eval "func_echo $func_quote_for_expand_result"
2431c27c18e8Smrg	        }
2432c27c18e8Smrg	        if eval "$relink_command"; then :
2433c27c18e8Smrg	          else
2434c27c18e8Smrg		  func_error "error: relink \`$file' with the above command before installing it"
2435c27c18e8Smrg		  $opt_dry_run || ${RM}r "$tmpdir"
2436c27c18e8Smrg		  continue
2437c27c18e8Smrg	        fi
2438c27c18e8Smrg	        file="$outputname"
2439c27c18e8Smrg	      else
2440c27c18e8Smrg	        func_warning "cannot relink \`$file'"
2441c27c18e8Smrg	      fi
2442c27c18e8Smrg	    }
2443c27c18e8Smrg	  else
2444c27c18e8Smrg	    # Install the binary that we compiled earlier.
244537eb1ca1Smrg	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
2446c43cc173Smrg	  fi
2447c27c18e8Smrg	fi
2448c27c18e8Smrg
2449c27c18e8Smrg	# remove .exe since cygwin /usr/bin/install will append another
2450c27c18e8Smrg	# one anyway
2451c27c18e8Smrg	case $install_prog,$host in
2452c27c18e8Smrg	*/usr/bin/install*,*cygwin*)
2453c27c18e8Smrg	  case $file:$destfile in
2454c27c18e8Smrg	  *.exe:*.exe)
2455c27c18e8Smrg	    # this is ok
2456c27c18e8Smrg	    ;;
2457c27c18e8Smrg	  *.exe:*)
2458c27c18e8Smrg	    destfile=$destfile.exe
2459c27c18e8Smrg	    ;;
2460c27c18e8Smrg	  *:*.exe)
2461c27c18e8Smrg	    func_stripname '' '.exe' "$destfile"
2462c27c18e8Smrg	    destfile=$func_stripname_result
2463c27c18e8Smrg	    ;;
2464c27c18e8Smrg	  esac
2465c43cc173Smrg	  ;;
2466c43cc173Smrg	esac
2467c27c18e8Smrg	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
2468c27c18e8Smrg	$opt_dry_run || if test -n "$outputname"; then
2469c27c18e8Smrg	  ${RM}r "$tmpdir"
2470c27c18e8Smrg	fi
2471c27c18e8Smrg	;;
2472c27c18e8Smrg      esac
2473c27c18e8Smrg    done
2474c43cc173Smrg
2475c27c18e8Smrg    for file in $staticlibs; do
2476c27c18e8Smrg      func_basename "$file"
2477c27c18e8Smrg      name="$func_basename_result"
2478c27c18e8Smrg
2479c27c18e8Smrg      # Set up the ranlib parameters.
2480c27c18e8Smrg      oldlib="$destdir/$name"
2481c27c18e8Smrg
2482c27c18e8Smrg      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
2483c27c18e8Smrg
2484c27c18e8Smrg      if test -n "$stripme" && test -n "$old_striplib"; then
2485c27c18e8Smrg	func_show_eval "$old_striplib $oldlib" 'exit $?'
2486c27c18e8Smrg      fi
2487c27c18e8Smrg
2488c27c18e8Smrg      # Do each command in the postinstall commands.
2489c27c18e8Smrg      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
2490c27c18e8Smrg    done
2491c27c18e8Smrg
2492c27c18e8Smrg    test -n "$future_libdirs" && \
2493c27c18e8Smrg      func_warning "remember to run \`$progname --finish$future_libdirs'"
2494c27c18e8Smrg
2495c27c18e8Smrg    if test -n "$current_libdirs"; then
2496c27c18e8Smrg      # Maybe just do a dry run.
2497c27c18e8Smrg      $opt_dry_run && current_libdirs=" -n$current_libdirs"
2498c27c18e8Smrg      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
2499c27c18e8Smrg    else
2500c27c18e8Smrg      exit $EXIT_SUCCESS
2501c27c18e8Smrg    fi
2502c27c18e8Smrg}
2503c27c18e8Smrg
2504c27c18e8Smrgtest "$mode" = install && func_mode_install ${1+"$@"}
2505c27c18e8Smrg
2506c27c18e8Smrg
2507c27c18e8Smrg# func_generate_dlsyms outputname originator pic_p
2508c27c18e8Smrg# Extract symbols from dlprefiles and create ${outputname}S.o with
2509c27c18e8Smrg# a dlpreopen symbol table.
2510c27c18e8Smrgfunc_generate_dlsyms ()
2511c27c18e8Smrg{
2512c27c18e8Smrg    $opt_debug
2513c27c18e8Smrg    my_outputname="$1"
2514c27c18e8Smrg    my_originator="$2"
2515c27c18e8Smrg    my_pic_p="${3-no}"
2516c27c18e8Smrg    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
2517c27c18e8Smrg    my_dlsyms=
2518c27c18e8Smrg
2519c27c18e8Smrg    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2520c27c18e8Smrg      if test -n "$NM" && test -n "$global_symbol_pipe"; then
2521c27c18e8Smrg	my_dlsyms="${my_outputname}S.c"
2522c27c18e8Smrg      else
2523c27c18e8Smrg	func_error "not configured to extract global symbols from dlpreopened files"
2524c27c18e8Smrg      fi
2525c27c18e8Smrg    fi
2526c27c18e8Smrg
2527c27c18e8Smrg    if test -n "$my_dlsyms"; then
2528c27c18e8Smrg      case $my_dlsyms in
2529c27c18e8Smrg      "") ;;
2530c27c18e8Smrg      *.c)
2531c27c18e8Smrg	# Discover the nlist of each of the dlfiles.
2532c27c18e8Smrg	nlist="$output_objdir/${my_outputname}.nm"
2533c27c18e8Smrg
2534c27c18e8Smrg	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
2535c27c18e8Smrg
2536c27c18e8Smrg	# Parse the name list into a source file.
2537c27c18e8Smrg	func_verbose "creating $output_objdir/$my_dlsyms"
2538c27c18e8Smrg
2539c27c18e8Smrg	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
2540c27c18e8Smrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
2541c27c18e8Smrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
2542c27c18e8Smrg
2543c27c18e8Smrg#ifdef __cplusplus
2544c27c18e8Smrgextern \"C\" {
2545c27c18e8Smrg#endif
2546c27c18e8Smrg
254737eb1ca1Smrg#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
254837eb1ca1Smrg#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
254937eb1ca1Smrg#endif
255037eb1ca1Smrg
2551c27c18e8Smrg/* External symbol declarations for the compiler. */\
2552c27c18e8Smrg"
2553c27c18e8Smrg
2554c27c18e8Smrg	if test "$dlself" = yes; then
2555c27c18e8Smrg	  func_verbose "generating symbol list for \`$output'"
2556c27c18e8Smrg
2557c27c18e8Smrg	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
2558c27c18e8Smrg
2559c27c18e8Smrg	  # Add our own program objects to the symbol list.
256037eb1ca1Smrg	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
2561c27c18e8Smrg	  for progfile in $progfiles; do
2562c27c18e8Smrg	    func_verbose "extracting global C symbols from \`$progfile'"
2563c27c18e8Smrg	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
2564c27c18e8Smrg	  done
2565c27c18e8Smrg
2566c27c18e8Smrg	  if test -n "$exclude_expsyms"; then
2567c27c18e8Smrg	    $opt_dry_run || {
2568c27c18e8Smrg	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
2569c27c18e8Smrg	      eval '$MV "$nlist"T "$nlist"'
2570c27c18e8Smrg	    }
2571c43cc173Smrg	  fi
2572c27c18e8Smrg
2573c27c18e8Smrg	  if test -n "$export_symbols_regex"; then
2574c27c18e8Smrg	    $opt_dry_run || {
2575c27c18e8Smrg	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
2576c27c18e8Smrg	      eval '$MV "$nlist"T "$nlist"'
2577c27c18e8Smrg	    }
2578c27c18e8Smrg	  fi
2579c27c18e8Smrg
2580c27c18e8Smrg	  # Prepare the list of exported symbols
2581c27c18e8Smrg	  if test -z "$export_symbols"; then
2582c27c18e8Smrg	    export_symbols="$output_objdir/$outputname.exp"
2583c27c18e8Smrg	    $opt_dry_run || {
2584c27c18e8Smrg	      $RM $export_symbols
2585c27c18e8Smrg	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
2586c27c18e8Smrg	      case $host in
2587c27c18e8Smrg	      *cygwin* | *mingw* | *cegcc* )
2588c27c18e8Smrg                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
2589c27c18e8Smrg                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
2590c27c18e8Smrg	        ;;
2591c27c18e8Smrg	      esac
2592c27c18e8Smrg	    }
2593c43cc173Smrg	  else
2594c27c18e8Smrg	    $opt_dry_run || {
2595c27c18e8Smrg	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
2596c27c18e8Smrg	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
2597c27c18e8Smrg	      eval '$MV "$nlist"T "$nlist"'
2598c27c18e8Smrg	      case $host in
259937eb1ca1Smrg	        *cygwin* | *mingw* | *cegcc* )
2600c27c18e8Smrg	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
2601c27c18e8Smrg	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
2602c27c18e8Smrg	          ;;
2603c27c18e8Smrg	      esac
2604c27c18e8Smrg	    }
2605c43cc173Smrg	  fi
2606c27c18e8Smrg	fi
2607c43cc173Smrg
2608c27c18e8Smrg	for dlprefile in $dlprefiles; do
2609c27c18e8Smrg	  func_verbose "extracting global C symbols from \`$dlprefile'"
2610c27c18e8Smrg	  func_basename "$dlprefile"
2611c27c18e8Smrg	  name="$func_basename_result"
2612c27c18e8Smrg	  $opt_dry_run || {
2613c27c18e8Smrg	    eval '$ECHO ": $name " >> "$nlist"'
2614c27c18e8Smrg	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
2615c27c18e8Smrg	  }
2616c27c18e8Smrg	done
2617c27c18e8Smrg
2618c27c18e8Smrg	$opt_dry_run || {
2619c27c18e8Smrg	  # Make sure we have at least an empty file.
2620c27c18e8Smrg	  test -f "$nlist" || : > "$nlist"
2621c27c18e8Smrg
2622c27c18e8Smrg	  if test -n "$exclude_expsyms"; then
2623c27c18e8Smrg	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
2624c27c18e8Smrg	    $MV "$nlist"T "$nlist"
2625c43cc173Smrg	  fi
2626c27c18e8Smrg
2627c27c18e8Smrg	  # Try sorting and uniquifying the output.
2628c27c18e8Smrg	  if $GREP -v "^: " < "$nlist" |
2629c27c18e8Smrg	      if sort -k 3 </dev/null >/dev/null 2>&1; then
2630c27c18e8Smrg		sort -k 3
2631c27c18e8Smrg	      else
2632c27c18e8Smrg		sort +2
2633c27c18e8Smrg	      fi |
2634c27c18e8Smrg	      uniq > "$nlist"S; then
2635c27c18e8Smrg	    :
2636c43cc173Smrg	  else
2637c27c18e8Smrg	    $GREP -v "^: " < "$nlist" > "$nlist"S
2638c43cc173Smrg	  fi
2639c43cc173Smrg
2640c27c18e8Smrg	  if test -f "$nlist"S; then
2641c27c18e8Smrg	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
2642c43cc173Smrg	  else
264337eb1ca1Smrg	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
2644c43cc173Smrg	  fi
2645c43cc173Smrg
264637eb1ca1Smrg	  echo >> "$output_objdir/$my_dlsyms" "\
2647c43cc173Smrg
2648c27c18e8Smrg/* The mapping between symbol names and symbols.  */
2649c27c18e8Smrgtypedef struct {
2650c27c18e8Smrg  const char *name;
2651c27c18e8Smrg  void *address;
2652c27c18e8Smrg} lt_dlsymlist;
2653c27c18e8Smrg"
2654c27c18e8Smrg	  case $host in
2655c27c18e8Smrg	  *cygwin* | *mingw* | *cegcc* )
265637eb1ca1Smrg	    echo >> "$output_objdir/$my_dlsyms" "\
2657c27c18e8Smrg/* DATA imports from DLLs on WIN32 con't be const, because
2658c27c18e8Smrg   runtime relocations are performed -- see ld's documentation
2659c27c18e8Smrg   on pseudo-relocs.  */"
2660c27c18e8Smrg	    lt_dlsym_const= ;;
2661c27c18e8Smrg	  *osf5*)
2662c27c18e8Smrg	    echo >> "$output_objdir/$my_dlsyms" "\
2663c27c18e8Smrg/* This system does not cope well with relocations in const data */"
2664c27c18e8Smrg	    lt_dlsym_const= ;;
2665c27c18e8Smrg	  *)
2666c27c18e8Smrg	    lt_dlsym_const=const ;;
2667c27c18e8Smrg	  esac
2668c43cc173Smrg
266937eb1ca1Smrg	  echo >> "$output_objdir/$my_dlsyms" "\
2670c27c18e8Smrgextern $lt_dlsym_const lt_dlsymlist
2671c27c18e8Smrglt_${my_prefix}_LTX_preloaded_symbols[];
2672c27c18e8Smrg$lt_dlsym_const lt_dlsymlist
2673c27c18e8Smrglt_${my_prefix}_LTX_preloaded_symbols[] =
2674c27c18e8Smrg{\
2675c27c18e8Smrg  { \"$my_originator\", (void *) 0 },"
2676c43cc173Smrg
2677c27c18e8Smrg	  case $need_lib_prefix in
2678c27c18e8Smrg	  no)
2679c27c18e8Smrg	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
2680c27c18e8Smrg	    ;;
2681c27c18e8Smrg	  *)
2682c27c18e8Smrg	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
2683c27c18e8Smrg	    ;;
2684c27c18e8Smrg	  esac
268537eb1ca1Smrg	  echo >> "$output_objdir/$my_dlsyms" "\
2686c27c18e8Smrg  {0, (void *) 0}
2687c27c18e8Smrg};
2688c43cc173Smrg
2689c27c18e8Smrg/* This works around a problem in FreeBSD linker */
2690c27c18e8Smrg#ifdef FREEBSD_WORKAROUND
2691c27c18e8Smrgstatic const void *lt_preloaded_setup() {
2692c27c18e8Smrg  return lt_${my_prefix}_LTX_preloaded_symbols;
2693c27c18e8Smrg}
2694c27c18e8Smrg#endif
2695c43cc173Smrg
2696c27c18e8Smrg#ifdef __cplusplus
2697c27c18e8Smrg}
2698c27c18e8Smrg#endif\
2699c27c18e8Smrg"
2700c27c18e8Smrg	} # !$opt_dry_run
2701c43cc173Smrg
2702c27c18e8Smrg	pic_flag_for_symtable=
2703c27c18e8Smrg	case "$compile_command " in
2704c27c18e8Smrg	*" -static "*) ;;
2705c27c18e8Smrg	*)
2706c27c18e8Smrg	  case $host in
2707c27c18e8Smrg	  # compiling the symbol table file with pic_flag works around
2708c27c18e8Smrg	  # a FreeBSD bug that causes programs to crash when -lm is
2709c27c18e8Smrg	  # linked before any other PIC object.  But we must not use
2710c27c18e8Smrg	  # pic_flag when linking with -static.  The problem exists in
2711c27c18e8Smrg	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
2712c27c18e8Smrg	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
2713c27c18e8Smrg	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
2714c27c18e8Smrg	  *-*-hpux*)
2715c27c18e8Smrg	    pic_flag_for_symtable=" $pic_flag"  ;;
2716c27c18e8Smrg	  *)
2717c27c18e8Smrg	    if test "X$my_pic_p" != Xno; then
2718c27c18e8Smrg	      pic_flag_for_symtable=" $pic_flag"
2719c27c18e8Smrg	    fi
2720c27c18e8Smrg	    ;;
2721c27c18e8Smrg	  esac
2722c27c18e8Smrg	  ;;
2723c27c18e8Smrg	esac
2724c27c18e8Smrg	symtab_cflags=
2725c27c18e8Smrg	for arg in $LTCFLAGS; do
2726c27c18e8Smrg	  case $arg in
2727c27c18e8Smrg	  -pie | -fpie | -fPIE) ;;
2728c27c18e8Smrg	  *) symtab_cflags="$symtab_cflags $arg" ;;
2729c27c18e8Smrg	  esac
2730c27c18e8Smrg	done
2731c43cc173Smrg
2732c27c18e8Smrg	# Now compile the dynamic symbol file.
2733c27c18e8Smrg	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
2734c43cc173Smrg
2735c27c18e8Smrg	# Clean up the generated files.
2736c27c18e8Smrg	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
2737c43cc173Smrg
2738c27c18e8Smrg	# Transform the symbol file into the correct name.
2739c27c18e8Smrg	symfileobj="$output_objdir/${my_outputname}S.$objext"
2740c27c18e8Smrg	case $host in
2741c27c18e8Smrg	*cygwin* | *mingw* | *cegcc* )
2742c27c18e8Smrg	  if test -f "$output_objdir/$my_outputname.def"; then
274337eb1ca1Smrg	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
274437eb1ca1Smrg	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
2745c27c18e8Smrg	  else
274637eb1ca1Smrg	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
274737eb1ca1Smrg	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
2748c27c18e8Smrg	  fi
2749c27c18e8Smrg	  ;;
2750c27c18e8Smrg	*)
275137eb1ca1Smrg	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
275237eb1ca1Smrg	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
2753c27c18e8Smrg	  ;;
2754c27c18e8Smrg	esac
2755c27c18e8Smrg	;;
2756c27c18e8Smrg      *)
2757c27c18e8Smrg	func_fatal_error "unknown suffix for \`$my_dlsyms'"
2758c27c18e8Smrg	;;
2759c27c18e8Smrg      esac
2760c27c18e8Smrg    else
2761c27c18e8Smrg      # We keep going just in case the user didn't refer to
2762c27c18e8Smrg      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
2763c27c18e8Smrg      # really was required.
2764c43cc173Smrg
2765c27c18e8Smrg      # Nullify the symbol file.
276637eb1ca1Smrg      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
276737eb1ca1Smrg      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
2768c27c18e8Smrg    fi
2769c27c18e8Smrg}
2770c43cc173Smrg
2771c27c18e8Smrg# func_win32_libid arg
2772c27c18e8Smrg# return the library type of file 'arg'
2773c27c18e8Smrg#
2774c27c18e8Smrg# Need a lot of goo to handle *both* DLLs and import libs
2775c27c18e8Smrg# Has to be a shell function in order to 'eat' the argument
2776c27c18e8Smrg# that is supplied when $file_magic_command is called.
277737eb1ca1Smrg# Despite the name, also deal with 64 bit binaries.
2778c27c18e8Smrgfunc_win32_libid ()
2779c27c18e8Smrg{
2780c27c18e8Smrg  $opt_debug
2781c27c18e8Smrg  win32_libid_type="unknown"
2782c27c18e8Smrg  win32_fileres=`file -L $1 2>/dev/null`
2783c27c18e8Smrg  case $win32_fileres in
2784c27c18e8Smrg  *ar\ archive\ import\ library*) # definitely import
2785c27c18e8Smrg    win32_libid_type="x86 archive import"
2786c27c18e8Smrg    ;;
2787c27c18e8Smrg  *ar\ archive*) # could be an import, or static
278837eb1ca1Smrg    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
2789c27c18e8Smrg    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
279037eb1ca1Smrg       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
2791c27c18e8Smrg      win32_nmres=`eval $NM -f posix -A $1 |
2792c27c18e8Smrg	$SED -n -e '
2793c27c18e8Smrg	    1,100{
2794c27c18e8Smrg		/ I /{
2795c27c18e8Smrg		    s,.*,import,
2796c27c18e8Smrg		    p
2797c27c18e8Smrg		    q
2798c27c18e8Smrg		}
2799c27c18e8Smrg	    }'`
2800c27c18e8Smrg      case $win32_nmres in
2801c27c18e8Smrg      import*)  win32_libid_type="x86 archive import";;
2802c27c18e8Smrg      *)        win32_libid_type="x86 archive static";;
2803c27c18e8Smrg      esac
2804c27c18e8Smrg    fi
2805c27c18e8Smrg    ;;
2806c27c18e8Smrg  *DLL*)
2807c27c18e8Smrg    win32_libid_type="x86 DLL"
2808c27c18e8Smrg    ;;
2809c27c18e8Smrg  *executable*) # but shell scripts are "executable" too...
2810c27c18e8Smrg    case $win32_fileres in
2811c27c18e8Smrg    *MS\ Windows\ PE\ Intel*)
2812c27c18e8Smrg      win32_libid_type="x86 DLL"
2813c27c18e8Smrg      ;;
2814c27c18e8Smrg    esac
2815c27c18e8Smrg    ;;
2816c27c18e8Smrg  esac
2817c27c18e8Smrg  $ECHO "$win32_libid_type"
2818c27c18e8Smrg}
2819c43cc173Smrg
2820c43cc173Smrg
2821c43cc173Smrg
2822c27c18e8Smrg# func_extract_an_archive dir oldlib
2823c27c18e8Smrgfunc_extract_an_archive ()
2824c27c18e8Smrg{
2825c27c18e8Smrg    $opt_debug
2826c27c18e8Smrg    f_ex_an_ar_dir="$1"; shift
2827c27c18e8Smrg    f_ex_an_ar_oldlib="$1"
282837eb1ca1Smrg    if test "$lock_old_archive_extraction" = yes; then
282937eb1ca1Smrg      lockfile=$f_ex_an_ar_oldlib.lock
283037eb1ca1Smrg      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
283137eb1ca1Smrg	func_echo "Waiting for $lockfile to be removed"
283237eb1ca1Smrg	sleep 2
283337eb1ca1Smrg      done
283437eb1ca1Smrg    fi
283537eb1ca1Smrg    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
283637eb1ca1Smrg		   'stat=$?; rm -f "$lockfile"; exit $stat'
283737eb1ca1Smrg    if test "$lock_old_archive_extraction" = yes; then
283837eb1ca1Smrg      $opt_dry_run || rm -f "$lockfile"
283937eb1ca1Smrg    fi
2840c27c18e8Smrg    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
2841c27c18e8Smrg     :
2842c27c18e8Smrg    else
2843c27c18e8Smrg      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
2844c27c18e8Smrg    fi
2845c27c18e8Smrg}
2846c43cc173Smrg
2847c43cc173Smrg
2848c27c18e8Smrg# func_extract_archives gentop oldlib ...
2849c27c18e8Smrgfunc_extract_archives ()
2850c27c18e8Smrg{
2851c27c18e8Smrg    $opt_debug
2852c27c18e8Smrg    my_gentop="$1"; shift
2853c27c18e8Smrg    my_oldlibs=${1+"$@"}
2854c27c18e8Smrg    my_oldobjs=""
2855c27c18e8Smrg    my_xlib=""
2856c27c18e8Smrg    my_xabs=""
2857c27c18e8Smrg    my_xdir=""
2858c43cc173Smrg
2859c27c18e8Smrg    for my_xlib in $my_oldlibs; do
2860c27c18e8Smrg      # Extract the objects.
2861c27c18e8Smrg      case $my_xlib in
2862c27c18e8Smrg	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
2863c27c18e8Smrg	*) my_xabs=`pwd`"/$my_xlib" ;;
2864c27c18e8Smrg      esac
2865c27c18e8Smrg      func_basename "$my_xlib"
2866c27c18e8Smrg      my_xlib="$func_basename_result"
2867c27c18e8Smrg      my_xlib_u=$my_xlib
2868c27c18e8Smrg      while :; do
2869c27c18e8Smrg        case " $extracted_archives " in
2870c27c18e8Smrg	*" $my_xlib_u "*)
2871c27c18e8Smrg	  func_arith $extracted_serial + 1
2872c27c18e8Smrg	  extracted_serial=$func_arith_result
2873c27c18e8Smrg	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
2874c27c18e8Smrg	*) break ;;
2875c27c18e8Smrg	esac
2876c27c18e8Smrg      done
2877c27c18e8Smrg      extracted_archives="$extracted_archives $my_xlib_u"
2878c27c18e8Smrg      my_xdir="$my_gentop/$my_xlib_u"
2879c43cc173Smrg
2880c27c18e8Smrg      func_mkdir_p "$my_xdir"
2881c27c18e8Smrg
2882c27c18e8Smrg      case $host in
2883c27c18e8Smrg      *-darwin*)
2884c27c18e8Smrg	func_verbose "Extracting $my_xabs"
2885c27c18e8Smrg	# Do not bother doing anything if just a dry run
2886c27c18e8Smrg	$opt_dry_run || {
2887c27c18e8Smrg	  darwin_orig_dir=`pwd`
2888c27c18e8Smrg	  cd $my_xdir || exit $?
2889c27c18e8Smrg	  darwin_archive=$my_xabs
2890c27c18e8Smrg	  darwin_curdir=`pwd`
2891c27c18e8Smrg	  darwin_base_archive=`basename "$darwin_archive"`
2892c27c18e8Smrg	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
2893c27c18e8Smrg	  if test -n "$darwin_arches"; then
2894c27c18e8Smrg	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
2895c27c18e8Smrg	    darwin_arch=
2896c27c18e8Smrg	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
2897c27c18e8Smrg	    for darwin_arch in  $darwin_arches ; do
2898c27c18e8Smrg	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
2899c27c18e8Smrg	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
2900c27c18e8Smrg	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
2901c27c18e8Smrg	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
2902c27c18e8Smrg	      cd "$darwin_curdir"
2903c27c18e8Smrg	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
2904c27c18e8Smrg	    done # $darwin_arches
2905c27c18e8Smrg            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
2906c27c18e8Smrg	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
2907c27c18e8Smrg	    darwin_file=
2908c27c18e8Smrg	    darwin_files=
2909c27c18e8Smrg	    for darwin_file in $darwin_filelist; do
291037eb1ca1Smrg	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
2911c27c18e8Smrg	      $LIPO -create -output "$darwin_file" $darwin_files
2912c27c18e8Smrg	    done # $darwin_filelist
2913c27c18e8Smrg	    $RM -rf unfat-$$
2914c27c18e8Smrg	    cd "$darwin_orig_dir"
2915c43cc173Smrg	  else
2916c27c18e8Smrg	    cd $darwin_orig_dir
2917c27c18e8Smrg	    func_extract_an_archive "$my_xdir" "$my_xabs"
2918c27c18e8Smrg	  fi # $darwin_arches
2919c27c18e8Smrg	} # !$opt_dry_run
2920c27c18e8Smrg	;;
2921c27c18e8Smrg      *)
2922c27c18e8Smrg        func_extract_an_archive "$my_xdir" "$my_xabs"
2923c27c18e8Smrg	;;
2924c27c18e8Smrg      esac
292537eb1ca1Smrg      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
2926c27c18e8Smrg    done
2927c43cc173Smrg
2928c27c18e8Smrg    func_extract_archives_result="$my_oldobjs"
2929c27c18e8Smrg}
2930c43cc173Smrg
2931c43cc173Smrg
293237eb1ca1Smrg# func_emit_wrapper [arg=no]
293337eb1ca1Smrg#
293437eb1ca1Smrg# Emit a libtool wrapper script on stdout.
293537eb1ca1Smrg# Don't directly open a file because we may want to
293637eb1ca1Smrg# incorporate the script contents within a cygwin/mingw
293737eb1ca1Smrg# wrapper executable.  Must ONLY be called from within
293837eb1ca1Smrg# func_mode_link because it depends on a number of variables
293937eb1ca1Smrg# set therein.
2940c27c18e8Smrg#
294137eb1ca1Smrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
294237eb1ca1Smrg# variable will take.  If 'yes', then the emitted script
294337eb1ca1Smrg# will assume that the directory in which it is stored is
294437eb1ca1Smrg# the $objdir directory.  This is a cygwin/mingw-specific
294537eb1ca1Smrg# behavior.
294637eb1ca1Smrgfunc_emit_wrapper ()
2947c27c18e8Smrg{
294837eb1ca1Smrg	func_emit_wrapper_arg1=${1-no}
2949c43cc173Smrg
2950c27c18e8Smrg	$ECHO "\
2951c27c18e8Smrg#! $SHELL
2952c43cc173Smrg
2953c27c18e8Smrg# $output - temporary wrapper script for $objdir/$outputname
2954c27c18e8Smrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
2955c27c18e8Smrg#
2956c27c18e8Smrg# The $output program cannot be directly executed until all the libtool
2957c27c18e8Smrg# libraries that it depends on are installed.
2958c27c18e8Smrg#
2959c27c18e8Smrg# This wrapper script should never be moved out of the build directory.
2960c27c18e8Smrg# If it is, it will not operate correctly.
2961c43cc173Smrg
2962c27c18e8Smrg# Sed substitution that helps us do robust quoting.  It backslashifies
2963c27c18e8Smrg# metacharacters that are still active within double-quoted strings.
2964c27c18e8Smrgsed_quote_subst='$sed_quote_subst'
2965c43cc173Smrg
2966c27c18e8Smrg# Be Bourne compatible
2967c27c18e8Smrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
2968c27c18e8Smrg  emulate sh
2969c27c18e8Smrg  NULLCMD=:
2970c27c18e8Smrg  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
2971c27c18e8Smrg  # is contrary to our usage.  Disable this feature.
2972c27c18e8Smrg  alias -g '\${1+\"\$@\"}'='\"\$@\"'
2973c27c18e8Smrg  setopt NO_GLOB_SUBST
2974c27c18e8Smrgelse
2975c27c18e8Smrg  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
2976c27c18e8Smrgfi
2977c27c18e8SmrgBIN_SH=xpg4; export BIN_SH # for Tru64
2978c27c18e8SmrgDUALCASE=1; export DUALCASE # for MKS sh
2979c43cc173Smrg
2980c27c18e8Smrg# The HP-UX ksh and POSIX shell print the target directory to stdout
2981c27c18e8Smrg# if CDPATH is set.
2982c27c18e8Smrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
2983c43cc173Smrg
2984c27c18e8Smrgrelink_command=\"$relink_command\"
2985c43cc173Smrg
2986c27c18e8Smrg# This environment variable determines our operation mode.
2987c27c18e8Smrgif test \"\$libtool_install_magic\" = \"$magic\"; then
2988c27c18e8Smrg  # install mode needs the following variables:
2989c27c18e8Smrg  generated_by_libtool_version='$macro_version'
2990c27c18e8Smrg  notinst_deplibs='$notinst_deplibs'
2991c27c18e8Smrgelse
2992c27c18e8Smrg  # When we are sourced in execute mode, \$file and \$ECHO are already set.
2993c27c18e8Smrg  if test \"\$libtool_execute_magic\" != \"$magic\"; then
299437eb1ca1Smrg    file=\"\$0\""
299537eb1ca1Smrg
299637eb1ca1Smrg    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
299737eb1ca1Smrg    $ECHO "\
299837eb1ca1Smrg
299937eb1ca1Smrg# A function that is used when there is no print builtin or printf.
300037eb1ca1Smrgfunc_fallback_echo ()
300137eb1ca1Smrg{
300237eb1ca1Smrg  eval 'cat <<_LTECHO_EOF
300337eb1ca1Smrg\$1
300437eb1ca1Smrg_LTECHO_EOF'
300537eb1ca1Smrg}
300637eb1ca1Smrg    ECHO=\"$qECHO\"
300737eb1ca1Smrg  fi
300837eb1ca1Smrg
300937eb1ca1Smrg# Very basic option parsing. These options are (a) specific to
301037eb1ca1Smrg# the libtool wrapper, (b) are identical between the wrapper
301137eb1ca1Smrg# /script/ and the wrapper /executable/ which is used only on
301237eb1ca1Smrg# windows platforms, and (c) all begin with the string "--lt-"
301337eb1ca1Smrg# (application programs are unlikely to have options which match
301437eb1ca1Smrg# this pattern).
301537eb1ca1Smrg#
301637eb1ca1Smrg# There are only two supported options: --lt-debug and
301737eb1ca1Smrg# --lt-dump-script. There is, deliberately, no --lt-help.
301837eb1ca1Smrg#
301937eb1ca1Smrg# The first argument to this parsing function should be the
302037eb1ca1Smrg# script's $0 value, followed by "$@".
302137eb1ca1Smrglt_option_debug=
302237eb1ca1Smrgfunc_parse_lt_options ()
302337eb1ca1Smrg{
302437eb1ca1Smrg  lt_script_arg0=\$0
302537eb1ca1Smrg  shift
302637eb1ca1Smrg  for lt_opt
302737eb1ca1Smrg  do
302837eb1ca1Smrg    case \"\$lt_opt\" in
302937eb1ca1Smrg    --lt-debug) lt_option_debug=1 ;;
303037eb1ca1Smrg    --lt-dump-script)
303137eb1ca1Smrg        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
303237eb1ca1Smrg        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
303337eb1ca1Smrg        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
303437eb1ca1Smrg        cat \"\$lt_dump_D/\$lt_dump_F\"
303537eb1ca1Smrg        exit 0
303637eb1ca1Smrg      ;;
303737eb1ca1Smrg    --lt-*)
303837eb1ca1Smrg        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
303937eb1ca1Smrg        exit 1
304037eb1ca1Smrg      ;;
304137eb1ca1Smrg    esac
304237eb1ca1Smrg  done
304337eb1ca1Smrg
304437eb1ca1Smrg  # Print the debug banner immediately:
304537eb1ca1Smrg  if test -n \"\$lt_option_debug\"; then
304637eb1ca1Smrg    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
304737eb1ca1Smrg  fi
304837eb1ca1Smrg}
304937eb1ca1Smrg
305037eb1ca1Smrg# Used when --lt-debug. Prints its arguments to stdout
305137eb1ca1Smrg# (redirection is the responsibility of the caller)
305237eb1ca1Smrgfunc_lt_dump_args ()
305337eb1ca1Smrg{
305437eb1ca1Smrg  lt_dump_args_N=1;
305537eb1ca1Smrg  for lt_arg
305637eb1ca1Smrg  do
305737eb1ca1Smrg    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
305837eb1ca1Smrg    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
305937eb1ca1Smrg  done
306037eb1ca1Smrg}
306137eb1ca1Smrg
306237eb1ca1Smrg# Core function for launching the target application
306337eb1ca1Smrgfunc_exec_program_core ()
306437eb1ca1Smrg{
3065c27c18e8Smrg"
306637eb1ca1Smrg  case $host in
306737eb1ca1Smrg  # Backslashes separate directories on plain windows
306837eb1ca1Smrg  *-*-mingw | *-*-os2* | *-cegcc*)
306937eb1ca1Smrg    $ECHO "\
307037eb1ca1Smrg      if test -n \"\$lt_option_debug\"; then
307137eb1ca1Smrg        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
307237eb1ca1Smrg        func_lt_dump_args \${1+\"\$@\"} 1>&2
307337eb1ca1Smrg      fi
307437eb1ca1Smrg      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
307537eb1ca1Smrg"
307637eb1ca1Smrg    ;;
307737eb1ca1Smrg
307837eb1ca1Smrg  *)
307937eb1ca1Smrg    $ECHO "\
308037eb1ca1Smrg      if test -n \"\$lt_option_debug\"; then
308137eb1ca1Smrg        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
308237eb1ca1Smrg        func_lt_dump_args \${1+\"\$@\"} 1>&2
308337eb1ca1Smrg      fi
308437eb1ca1Smrg      exec \"\$progdir/\$program\" \${1+\"\$@\"}
308537eb1ca1Smrg"
308637eb1ca1Smrg    ;;
308737eb1ca1Smrg  esac
308837eb1ca1Smrg  $ECHO "\
308937eb1ca1Smrg      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
309037eb1ca1Smrg      exit 1
309137eb1ca1Smrg}
309237eb1ca1Smrg
309337eb1ca1Smrg# A function to encapsulate launching the target application
309437eb1ca1Smrg# Strips options in the --lt-* namespace from \$@ and
309537eb1ca1Smrg# launches target application with the remaining arguments.
309637eb1ca1Smrgfunc_exec_program ()
309737eb1ca1Smrg{
309837eb1ca1Smrg  for lt_wr_arg
309937eb1ca1Smrg  do
310037eb1ca1Smrg    case \$lt_wr_arg in
310137eb1ca1Smrg    --lt-*) ;;
310237eb1ca1Smrg    *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
310337eb1ca1Smrg    esac
310437eb1ca1Smrg    shift
310537eb1ca1Smrg  done
310637eb1ca1Smrg  func_exec_program_core \${1+\"\$@\"}
310737eb1ca1Smrg}
310837eb1ca1Smrg
310937eb1ca1Smrg  # Parse options
311037eb1ca1Smrg  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
3111c43cc173Smrg
3112c27c18e8Smrg  # Find the directory that this script lives in.
311337eb1ca1Smrg  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
3114c27c18e8Smrg  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
3115c43cc173Smrg
3116c27c18e8Smrg  # Follow symbolic links until we get to the real thisdir.
311737eb1ca1Smrg  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
3118c27c18e8Smrg  while test -n \"\$file\"; do
311937eb1ca1Smrg    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
3120c27c18e8Smrg
3121c27c18e8Smrg    # If there was a directory component, then change thisdir.
3122c27c18e8Smrg    if test \"x\$destdir\" != \"x\$file\"; then
3123c27c18e8Smrg      case \"\$destdir\" in
3124c27c18e8Smrg      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
3125c27c18e8Smrg      *) thisdir=\"\$thisdir/\$destdir\" ;;
3126c43cc173Smrg      esac
3127c27c18e8Smrg    fi
3128c43cc173Smrg
312937eb1ca1Smrg    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
313037eb1ca1Smrg    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
3131c27c18e8Smrg  done
3132c43cc173Smrg
3133c27c18e8Smrg  # Usually 'no', except on cygwin/mingw when embedded into
3134c27c18e8Smrg  # the cwrapper.
313537eb1ca1Smrg  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
3136c27c18e8Smrg  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
3137c27c18e8Smrg    # special case for '.'
3138c27c18e8Smrg    if test \"\$thisdir\" = \".\"; then
3139c27c18e8Smrg      thisdir=\`pwd\`
3140c27c18e8Smrg    fi
3141c27c18e8Smrg    # remove .libs from thisdir
3142c27c18e8Smrg    case \"\$thisdir\" in
314337eb1ca1Smrg    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
3144c27c18e8Smrg    $objdir )   thisdir=. ;;
3145c27c18e8Smrg    esac
3146c27c18e8Smrg  fi
3147c27c18e8Smrg
3148c27c18e8Smrg  # Try to get the absolute directory name.
3149c27c18e8Smrg  absdir=\`cd \"\$thisdir\" && pwd\`
3150c27c18e8Smrg  test -n \"\$absdir\" && thisdir=\"\$absdir\"
3151c27c18e8Smrg"
3152c27c18e8Smrg
3153c27c18e8Smrg	if test "$fast_install" = yes; then
3154c27c18e8Smrg	  $ECHO "\
3155c27c18e8Smrg  program=lt-'$outputname'$exeext
3156c27c18e8Smrg  progdir=\"\$thisdir/$objdir\"
3157c27c18e8Smrg
3158c27c18e8Smrg  if test ! -f \"\$progdir/\$program\" ||
3159c27c18e8Smrg     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
3160c27c18e8Smrg       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
3161c27c18e8Smrg
3162c27c18e8Smrg    file=\"\$\$-\$program\"
3163c27c18e8Smrg
3164c27c18e8Smrg    if test ! -d \"\$progdir\"; then
3165c27c18e8Smrg      $MKDIR \"\$progdir\"
3166c27c18e8Smrg    else
3167c27c18e8Smrg      $RM \"\$progdir/\$file\"
3168c27c18e8Smrg    fi"
3169c27c18e8Smrg
3170c27c18e8Smrg	  $ECHO "\
3171c27c18e8Smrg
3172c27c18e8Smrg    # relink executable if necessary
3173c27c18e8Smrg    if test -n \"\$relink_command\"; then
3174c27c18e8Smrg      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
3175c27c18e8Smrg      else
3176c27c18e8Smrg	$ECHO \"\$relink_command_output\" >&2
3177c27c18e8Smrg	$RM \"\$progdir/\$file\"
3178c27c18e8Smrg	exit 1
3179c43cc173Smrg      fi
3180c27c18e8Smrg    fi
3181c43cc173Smrg
3182c27c18e8Smrg    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
3183c27c18e8Smrg    { $RM \"\$progdir/\$program\";
3184c27c18e8Smrg      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
3185c27c18e8Smrg    $RM \"\$progdir/\$file\"
3186c27c18e8Smrg  fi"
3187c27c18e8Smrg	else
3188c27c18e8Smrg	  $ECHO "\
3189c27c18e8Smrg  program='$outputname'
3190c27c18e8Smrg  progdir=\"\$thisdir/$objdir\"
3191c27c18e8Smrg"
3192c43cc173Smrg	fi
3193c43cc173Smrg
3194c27c18e8Smrg	$ECHO "\
3195c27c18e8Smrg
3196c27c18e8Smrg  if test -f \"\$progdir/\$program\"; then"
3197c27c18e8Smrg
3198c27c18e8Smrg	# Export our shlibpath_var if we have one.
3199c27c18e8Smrg	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
3200c27c18e8Smrg	  $ECHO "\
3201c27c18e8Smrg    # Add our own library path to $shlibpath_var
3202c27c18e8Smrg    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
3203c27c18e8Smrg
3204c27c18e8Smrg    # Some systems cannot cope with colon-terminated $shlibpath_var
3205c27c18e8Smrg    # The second colon is a workaround for a bug in BeOS R4 sed
320637eb1ca1Smrg    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
3207c27c18e8Smrg
3208c27c18e8Smrg    export $shlibpath_var
3209c27c18e8Smrg"
3210c43cc173Smrg	fi
3211c43cc173Smrg
3212c27c18e8Smrg	# fixup the dll searchpath if we need to.
3213c27c18e8Smrg	if test -n "$dllsearchpath"; then
3214c27c18e8Smrg	  $ECHO "\
3215c27c18e8Smrg    # Add the dll search path components to the executable PATH
3216c27c18e8Smrg    PATH=$dllsearchpath:\$PATH
3217c27c18e8Smrg"
3218c43cc173Smrg	fi
3219c43cc173Smrg
3220c27c18e8Smrg	$ECHO "\
3221c27c18e8Smrg    if test \"\$libtool_execute_magic\" != \"$magic\"; then
3222c27c18e8Smrg      # Run the actual program with our arguments.
322337eb1ca1Smrg      func_exec_program \${1+\"\$@\"}
3224c27c18e8Smrg    fi
3225c27c18e8Smrg  else
3226c27c18e8Smrg    # The program doesn't exist.
3227c27c18e8Smrg    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
3228c27c18e8Smrg    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
322937eb1ca1Smrg    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
3230c27c18e8Smrg    exit 1
3231c27c18e8Smrg  fi
3232c27c18e8Smrgfi\
3233c27c18e8Smrg"
3234c27c18e8Smrg}
3235c43cc173Smrg
3236c43cc173Smrg
3237c27c18e8Smrg# func_to_host_path arg
3238c27c18e8Smrg#
3239c27c18e8Smrg# Convert paths to host format when used with build tools.
3240c27c18e8Smrg# Intended for use with "native" mingw (where libtool itself
3241c27c18e8Smrg# is running under the msys shell), or in the following cross-
3242c27c18e8Smrg# build environments:
3243c27c18e8Smrg#    $build          $host
3244c27c18e8Smrg#    mingw (msys)    mingw  [e.g. native]
3245c27c18e8Smrg#    cygwin          mingw
3246c27c18e8Smrg#    *nix + wine     mingw
3247c27c18e8Smrg# where wine is equipped with the `winepath' executable.
3248c27c18e8Smrg# In the native mingw case, the (msys) shell automatically
3249c27c18e8Smrg# converts paths for any non-msys applications it launches,
3250c27c18e8Smrg# but that facility isn't available from inside the cwrapper.
3251c27c18e8Smrg# Similar accommodations are necessary for $host mingw and
3252c27c18e8Smrg# $build cygwin.  Calling this function does no harm for other
3253c27c18e8Smrg# $host/$build combinations not listed above.
3254c27c18e8Smrg#
3255c27c18e8Smrg# ARG is the path (on $build) that should be converted to
3256c27c18e8Smrg# the proper representation for $host. The result is stored
3257c27c18e8Smrg# in $func_to_host_path_result.
3258c27c18e8Smrgfunc_to_host_path ()
3259c27c18e8Smrg{
3260c27c18e8Smrg  func_to_host_path_result="$1"
326137eb1ca1Smrg  if test -n "$1"; then
3262c27c18e8Smrg    case $host in
3263c27c18e8Smrg      *mingw* )
3264c27c18e8Smrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
3265c27c18e8Smrg        case $build in
3266c27c18e8Smrg          *mingw* ) # actually, msys
3267c27c18e8Smrg            # awkward: cmd appends spaces to result
326837eb1ca1Smrg            func_to_host_path_result=`( cmd //c echo "$1" ) 2>/dev/null |
326937eb1ca1Smrg              $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
3270c27c18e8Smrg            ;;
3271c27c18e8Smrg          *cygwin* )
327237eb1ca1Smrg            func_to_host_path_result=`cygpath -w "$1" |
327337eb1ca1Smrg	      $SED -e "$lt_sed_naive_backslashify"`
3274c27c18e8Smrg            ;;
3275c27c18e8Smrg          * )
3276c27c18e8Smrg            # Unfortunately, winepath does not exit with a non-zero
3277c27c18e8Smrg            # error code, so we are forced to check the contents of
3278c27c18e8Smrg            # stdout. On the other hand, if the command is not
3279c27c18e8Smrg            # found, the shell will set an exit code of 127 and print
3280c27c18e8Smrg            # *an error message* to stdout. So we must check for both
3281c27c18e8Smrg            # error code of zero AND non-empty stdout, which explains
3282c27c18e8Smrg            # the odd construction:
3283c27c18e8Smrg            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
3284c27c18e8Smrg            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
328537eb1ca1Smrg              func_to_host_path_result=`$ECHO "$func_to_host_path_tmp1" |
3286c27c18e8Smrg                $SED -e "$lt_sed_naive_backslashify"`
3287c27c18e8Smrg            else
3288c27c18e8Smrg              # Allow warning below.
328937eb1ca1Smrg              func_to_host_path_result=
3290c27c18e8Smrg            fi
3291c27c18e8Smrg            ;;
3292c27c18e8Smrg        esac
3293c27c18e8Smrg        if test -z "$func_to_host_path_result" ; then
3294c27c18e8Smrg          func_error "Could not determine host path corresponding to"
329537eb1ca1Smrg          func_error "  \`$1'"
3296c27c18e8Smrg          func_error "Continuing, but uninstalled executables may not work."
3297c27c18e8Smrg          # Fallback:
3298c27c18e8Smrg          func_to_host_path_result="$1"
3299c27c18e8Smrg        fi
3300c27c18e8Smrg        ;;
3301c27c18e8Smrg    esac
3302c27c18e8Smrg  fi
3303c27c18e8Smrg}
3304c27c18e8Smrg# end: func_to_host_path
3305c43cc173Smrg
3306c27c18e8Smrg# func_to_host_pathlist arg
3307c27c18e8Smrg#
3308c27c18e8Smrg# Convert pathlists to host format when used with build tools.
3309c27c18e8Smrg# See func_to_host_path(), above. This function supports the
3310c27c18e8Smrg# following $build/$host combinations (but does no harm for
3311c27c18e8Smrg# combinations not listed here):
3312c27c18e8Smrg#    $build          $host
3313c27c18e8Smrg#    mingw (msys)    mingw  [e.g. native]
3314c27c18e8Smrg#    cygwin          mingw
3315c27c18e8Smrg#    *nix + wine     mingw
3316c27c18e8Smrg#
3317c27c18e8Smrg# Path separators are also converted from $build format to
3318c27c18e8Smrg# $host format. If ARG begins or ends with a path separator
3319c27c18e8Smrg# character, it is preserved (but converted to $host format)
3320c27c18e8Smrg# on output.
3321c27c18e8Smrg#
3322c27c18e8Smrg# ARG is a pathlist (on $build) that should be converted to
3323c27c18e8Smrg# the proper representation on $host. The result is stored
3324c27c18e8Smrg# in $func_to_host_pathlist_result.
3325c27c18e8Smrgfunc_to_host_pathlist ()
3326c27c18e8Smrg{
3327c27c18e8Smrg  func_to_host_pathlist_result="$1"
332837eb1ca1Smrg  if test -n "$1"; then
3329c27c18e8Smrg    case $host in
3330c27c18e8Smrg      *mingw* )
3331c27c18e8Smrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
3332c27c18e8Smrg        # Remove leading and trailing path separator characters from
3333c27c18e8Smrg        # ARG. msys behavior is inconsistent here, cygpath turns them
3334c27c18e8Smrg        # into '.;' and ';.', and winepath ignores them completely.
333537eb1ca1Smrg	func_stripname : : "$1"
333637eb1ca1Smrg        func_to_host_pathlist_tmp1=$func_stripname_result
3337c27c18e8Smrg        case $build in
3338c27c18e8Smrg          *mingw* ) # Actually, msys.
3339c27c18e8Smrg            # Awkward: cmd appends spaces to result.
334037eb1ca1Smrg            func_to_host_pathlist_result=`
334137eb1ca1Smrg	      ( cmd //c echo "$func_to_host_pathlist_tmp1" ) 2>/dev/null |
334237eb1ca1Smrg	      $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
3343c27c18e8Smrg            ;;
3344c27c18e8Smrg          *cygwin* )
334537eb1ca1Smrg            func_to_host_pathlist_result=`cygpath -w -p "$func_to_host_pathlist_tmp1" |
3346c27c18e8Smrg              $SED -e "$lt_sed_naive_backslashify"`
3347c27c18e8Smrg            ;;
3348c27c18e8Smrg          * )
3349c27c18e8Smrg            # unfortunately, winepath doesn't convert pathlists
3350c27c18e8Smrg            func_to_host_pathlist_result=""
3351c27c18e8Smrg            func_to_host_pathlist_oldIFS=$IFS
3352c27c18e8Smrg            IFS=:
3353c27c18e8Smrg            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
3354c27c18e8Smrg              IFS=$func_to_host_pathlist_oldIFS
3355c27c18e8Smrg              if test -n "$func_to_host_pathlist_f" ; then
3356c27c18e8Smrg                func_to_host_path "$func_to_host_pathlist_f"
3357c27c18e8Smrg                if test -n "$func_to_host_path_result" ; then
3358c27c18e8Smrg                  if test -z "$func_to_host_pathlist_result" ; then
3359c27c18e8Smrg                    func_to_host_pathlist_result="$func_to_host_path_result"
3360c27c18e8Smrg                  else
336137eb1ca1Smrg                    func_append func_to_host_pathlist_result ";$func_to_host_path_result"
3362c27c18e8Smrg                  fi
3363c27c18e8Smrg                fi
3364c27c18e8Smrg              fi
3365c27c18e8Smrg            done
3366c27c18e8Smrg            IFS=$func_to_host_pathlist_oldIFS
3367c27c18e8Smrg            ;;
3368c27c18e8Smrg        esac
336937eb1ca1Smrg        if test -z "$func_to_host_pathlist_result"; then
3370c27c18e8Smrg          func_error "Could not determine the host path(s) corresponding to"
337137eb1ca1Smrg          func_error "  \`$1'"
3372c27c18e8Smrg          func_error "Continuing, but uninstalled executables may not work."
3373c27c18e8Smrg          # Fallback. This may break if $1 contains DOS-style drive
3374c27c18e8Smrg          # specifications. The fix is not to complicate the expression
3375c27c18e8Smrg          # below, but for the user to provide a working wine installation
3376c27c18e8Smrg          # with winepath so that path translation in the cross-to-mingw
3377c27c18e8Smrg          # case works properly.
3378c27c18e8Smrg          lt_replace_pathsep_nix_to_dos="s|:|;|g"
3379c27c18e8Smrg          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
3380c27c18e8Smrg            $SED -e "$lt_replace_pathsep_nix_to_dos"`
3381c27c18e8Smrg        fi
3382c27c18e8Smrg        # Now, add the leading and trailing path separators back
3383c27c18e8Smrg        case "$1" in
3384c27c18e8Smrg          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
3385c27c18e8Smrg            ;;
3386c27c18e8Smrg        esac
3387c27c18e8Smrg        case "$1" in
338837eb1ca1Smrg          *: ) func_append func_to_host_pathlist_result ";"
3389c27c18e8Smrg            ;;
3390c27c18e8Smrg        esac
3391c27c18e8Smrg        ;;
3392c27c18e8Smrg    esac
3393c27c18e8Smrg  fi
3394c27c18e8Smrg}
3395c27c18e8Smrg# end: func_to_host_pathlist
3396c43cc173Smrg
3397c27c18e8Smrg# func_emit_cwrapperexe_src
3398c27c18e8Smrg# emit the source code for a wrapper executable on stdout
3399c27c18e8Smrg# Must ONLY be called from within func_mode_link because
3400c27c18e8Smrg# it depends on a number of variable set therein.
3401c27c18e8Smrgfunc_emit_cwrapperexe_src ()
3402c27c18e8Smrg{
3403c27c18e8Smrg	cat <<EOF
3404c43cc173Smrg
3405c27c18e8Smrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
3406c27c18e8Smrg   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
3407c43cc173Smrg
3408c27c18e8Smrg   The $output program cannot be directly executed until all the libtool
3409c27c18e8Smrg   libraries that it depends on are installed.
3410c43cc173Smrg
3411c27c18e8Smrg   This wrapper executable should never be moved out of the build directory.
3412c27c18e8Smrg   If it is, it will not operate correctly.
3413c27c18e8Smrg*/
3414c27c18e8SmrgEOF
3415c27c18e8Smrg	    cat <<"EOF"
341637eb1ca1Smrg#ifdef _MSC_VER
341737eb1ca1Smrg# define _CRT_SECURE_NO_DEPRECATE 1
341837eb1ca1Smrg#endif
3419c27c18e8Smrg#include <stdio.h>
3420c27c18e8Smrg#include <stdlib.h>
3421c27c18e8Smrg#ifdef _MSC_VER
3422c27c18e8Smrg# include <direct.h>
3423c27c18e8Smrg# include <process.h>
3424c27c18e8Smrg# include <io.h>
3425c27c18e8Smrg#else
3426c27c18e8Smrg# include <unistd.h>
3427c27c18e8Smrg# include <stdint.h>
3428c27c18e8Smrg# ifdef __CYGWIN__
3429c27c18e8Smrg#  include <io.h>
3430c27c18e8Smrg# endif
3431c27c18e8Smrg#endif
3432c27c18e8Smrg#include <malloc.h>
3433c27c18e8Smrg#include <stdarg.h>
3434c27c18e8Smrg#include <assert.h>
3435c27c18e8Smrg#include <string.h>
3436c27c18e8Smrg#include <ctype.h>
3437c27c18e8Smrg#include <errno.h>
3438c27c18e8Smrg#include <fcntl.h>
3439c27c18e8Smrg#include <sys/stat.h>
3440c43cc173Smrg
344137eb1ca1Smrg/* declarations of non-ANSI functions */
344237eb1ca1Smrg#if defined(__MINGW32__)
344337eb1ca1Smrg# ifdef __STRICT_ANSI__
344437eb1ca1Smrgint _putenv (const char *);
344537eb1ca1Smrg# endif
344637eb1ca1Smrg#elif defined(__CYGWIN__)
344737eb1ca1Smrg# ifdef __STRICT_ANSI__
344837eb1ca1Smrgchar *realpath (const char *, char *);
344937eb1ca1Smrgint putenv (char *);
345037eb1ca1Smrgint setenv (const char *, const char *, int);
345137eb1ca1Smrg# endif
345237eb1ca1Smrg/* #elif defined (other platforms) ... */
345337eb1ca1Smrg#endif
345437eb1ca1Smrg
345537eb1ca1Smrg/* portability defines, excluding path handling macros */
345637eb1ca1Smrg#if defined(_MSC_VER)
345737eb1ca1Smrg# define setmode _setmode
345837eb1ca1Smrg# define stat    _stat
345937eb1ca1Smrg# define chmod   _chmod
346037eb1ca1Smrg# define getcwd  _getcwd
346137eb1ca1Smrg# define putenv  _putenv
346237eb1ca1Smrg# define S_IXUSR _S_IEXEC
346337eb1ca1Smrg# ifndef _INTPTR_T_DEFINED
346437eb1ca1Smrg#  define _INTPTR_T_DEFINED
346537eb1ca1Smrg#  define intptr_t int
346637eb1ca1Smrg# endif
346737eb1ca1Smrg#elif defined(__MINGW32__)
346837eb1ca1Smrg# define setmode _setmode
346937eb1ca1Smrg# define stat    _stat
347037eb1ca1Smrg# define chmod   _chmod
347137eb1ca1Smrg# define getcwd  _getcwd
347237eb1ca1Smrg# define putenv  _putenv
347337eb1ca1Smrg#elif defined(__CYGWIN__)
347437eb1ca1Smrg# define HAVE_SETENV
347537eb1ca1Smrg# define FOPEN_WB "wb"
347637eb1ca1Smrg/* #elif defined (other platforms) ... */
347737eb1ca1Smrg#endif
347837eb1ca1Smrg
3479c27c18e8Smrg#if defined(PATH_MAX)
3480c27c18e8Smrg# define LT_PATHMAX PATH_MAX
3481c27c18e8Smrg#elif defined(MAXPATHLEN)
3482c27c18e8Smrg# define LT_PATHMAX MAXPATHLEN
3483c27c18e8Smrg#else
3484c27c18e8Smrg# define LT_PATHMAX 1024
3485c27c18e8Smrg#endif
3486c43cc173Smrg
3487c27c18e8Smrg#ifndef S_IXOTH
3488c27c18e8Smrg# define S_IXOTH 0
3489c27c18e8Smrg#endif
3490c27c18e8Smrg#ifndef S_IXGRP
3491c27c18e8Smrg# define S_IXGRP 0
3492c27c18e8Smrg#endif
3493c43cc173Smrg
349437eb1ca1Smrg/* path handling portability macros */
3495c27c18e8Smrg#ifndef DIR_SEPARATOR
3496c27c18e8Smrg# define DIR_SEPARATOR '/'
3497c27c18e8Smrg# define PATH_SEPARATOR ':'
3498c27c18e8Smrg#endif
3499c43cc173Smrg
3500c27c18e8Smrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
3501c27c18e8Smrg  defined (__OS2__)
3502c27c18e8Smrg# define HAVE_DOS_BASED_FILE_SYSTEM
3503c27c18e8Smrg# define FOPEN_WB "wb"
3504c27c18e8Smrg# ifndef DIR_SEPARATOR_2
3505c27c18e8Smrg#  define DIR_SEPARATOR_2 '\\'
3506c27c18e8Smrg# endif
3507c27c18e8Smrg# ifndef PATH_SEPARATOR_2
3508c27c18e8Smrg#  define PATH_SEPARATOR_2 ';'
3509c27c18e8Smrg# endif
3510c27c18e8Smrg#endif
3511c43cc173Smrg
3512c27c18e8Smrg#ifndef DIR_SEPARATOR_2
3513c27c18e8Smrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
3514c27c18e8Smrg#else /* DIR_SEPARATOR_2 */
3515c27c18e8Smrg# define IS_DIR_SEPARATOR(ch) \
3516c27c18e8Smrg	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
3517c27c18e8Smrg#endif /* DIR_SEPARATOR_2 */
3518c43cc173Smrg
3519c27c18e8Smrg#ifndef PATH_SEPARATOR_2
3520c27c18e8Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
3521c27c18e8Smrg#else /* PATH_SEPARATOR_2 */
3522c27c18e8Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
3523c27c18e8Smrg#endif /* PATH_SEPARATOR_2 */
3524c43cc173Smrg
3525c27c18e8Smrg#ifndef FOPEN_WB
3526c27c18e8Smrg# define FOPEN_WB "w"
3527c27c18e8Smrg#endif
3528c27c18e8Smrg#ifndef _O_BINARY
3529c27c18e8Smrg# define _O_BINARY 0
3530c27c18e8Smrg#endif
3531c43cc173Smrg
3532c27c18e8Smrg#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
3533c27c18e8Smrg#define XFREE(stale) do { \
3534c27c18e8Smrg  if (stale) { free ((void *) stale); stale = 0; } \
3535c27c18e8Smrg} while (0)
3536c43cc173Smrg
353737eb1ca1Smrg#if defined(LT_DEBUGWRAPPER)
353837eb1ca1Smrgstatic int lt_debug = 1;
3539c27c18e8Smrg#else
354037eb1ca1Smrgstatic int lt_debug = 0;
3541c27c18e8Smrg#endif
3542c43cc173Smrg
354337eb1ca1Smrgconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
3544c43cc173Smrg
3545c27c18e8Smrgvoid *xmalloc (size_t num);
3546c27c18e8Smrgchar *xstrdup (const char *string);
3547c27c18e8Smrgconst char *base_name (const char *name);
3548c27c18e8Smrgchar *find_executable (const char *wrapper);
3549c27c18e8Smrgchar *chase_symlinks (const char *pathspec);
3550c27c18e8Smrgint make_executable (const char *path);
3551c27c18e8Smrgint check_executable (const char *path);
3552c27c18e8Smrgchar *strendzap (char *str, const char *pat);
355337eb1ca1Smrgvoid lt_debugprintf (const char *file, int line, const char *fmt, ...);
355437eb1ca1Smrgvoid lt_fatal (const char *file, int line, const char *message, ...);
355537eb1ca1Smrgstatic const char *nonnull (const char *s);
355637eb1ca1Smrgstatic const char *nonempty (const char *s);
3557c27c18e8Smrgvoid lt_setenv (const char *name, const char *value);
3558c27c18e8Smrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
3559c27c18e8Smrgvoid lt_update_exe_path (const char *name, const char *value);
3560c27c18e8Smrgvoid lt_update_lib_path (const char *name, const char *value);
356137eb1ca1Smrgchar **prepare_spawn (char **argv);
356237eb1ca1Smrgvoid lt_dump_script (FILE *f);
3563c27c18e8SmrgEOF
3564c27c18e8Smrg
3565c27c18e8Smrg	    cat <<EOF
3566c27c18e8Smrgconst char * MAGIC_EXE = "$magic_exe";
3567c27c18e8Smrgconst char * LIB_PATH_VARNAME = "$shlibpath_var";
3568c27c18e8SmrgEOF
3569c43cc173Smrg
3570c27c18e8Smrg	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
3571c27c18e8Smrg              func_to_host_pathlist "$temp_rpath"
3572c27c18e8Smrg	      cat <<EOF
3573c27c18e8Smrgconst char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
3574c27c18e8SmrgEOF
3575c27c18e8Smrg	    else
3576c27c18e8Smrg	      cat <<"EOF"
3577c27c18e8Smrgconst char * LIB_PATH_VALUE   = "";
3578c27c18e8SmrgEOF
3579c27c18e8Smrg	    fi
3580c43cc173Smrg
3581c27c18e8Smrg	    if test -n "$dllsearchpath"; then
3582c27c18e8Smrg              func_to_host_pathlist "$dllsearchpath:"
3583c27c18e8Smrg	      cat <<EOF
3584c27c18e8Smrgconst char * EXE_PATH_VARNAME = "PATH";
3585c27c18e8Smrgconst char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
3586c27c18e8SmrgEOF
3587c27c18e8Smrg	    else
3588c27c18e8Smrg	      cat <<"EOF"
3589c27c18e8Smrgconst char * EXE_PATH_VARNAME = "";
3590c27c18e8Smrgconst char * EXE_PATH_VALUE   = "";
3591c27c18e8SmrgEOF
3592c27c18e8Smrg	    fi
3593c43cc173Smrg
3594c27c18e8Smrg	    if test "$fast_install" = yes; then
3595c27c18e8Smrg	      cat <<EOF
3596c27c18e8Smrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
3597c27c18e8SmrgEOF
3598c27c18e8Smrg	    else
3599c27c18e8Smrg	      cat <<EOF
3600c27c18e8Smrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
3601c27c18e8SmrgEOF
3602c27c18e8Smrg	    fi
3603c43cc173Smrg
3604c43cc173Smrg
3605c27c18e8Smrg	    cat <<"EOF"
3606c43cc173Smrg
3607c27c18e8Smrg#define LTWRAPPER_OPTION_PREFIX         "--lt-"
3608c43cc173Smrg
3609c27c18e8Smrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
3610c27c18e8Smrgstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
361137eb1ca1Smrgstatic const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
3612c27c18e8Smrg
3613c27c18e8Smrgint
3614c27c18e8Smrgmain (int argc, char *argv[])
3615c27c18e8Smrg{
3616c27c18e8Smrg  char **newargz;
3617c27c18e8Smrg  int  newargc;
3618c27c18e8Smrg  char *tmp_pathspec;
3619c27c18e8Smrg  char *actual_cwrapper_path;
3620c27c18e8Smrg  char *actual_cwrapper_name;
3621c27c18e8Smrg  char *target_name;
3622c27c18e8Smrg  char *lt_argv_zero;
3623c27c18e8Smrg  intptr_t rval = 127;
3624c27c18e8Smrg
3625c27c18e8Smrg  int i;
3626c27c18e8Smrg
3627c27c18e8Smrg  program_name = (char *) xstrdup (base_name (argv[0]));
362837eb1ca1Smrg  newargz = XMALLOC (char *, argc + 1);
3629c27c18e8Smrg
363037eb1ca1Smrg  /* very simple arg parsing; don't want to rely on getopt
363137eb1ca1Smrg   * also, copy all non cwrapper options to newargz, except
363237eb1ca1Smrg   * argz[0], which is handled differently
363337eb1ca1Smrg   */
363437eb1ca1Smrg  newargc=0;
3635c27c18e8Smrg  for (i = 1; i < argc; i++)
3636c27c18e8Smrg    {
3637c27c18e8Smrg      if (strcmp (argv[i], dumpscript_opt) == 0)
3638c27c18e8Smrg	{
3639c27c18e8SmrgEOF
3640c27c18e8Smrg	    case "$host" in
3641c27c18e8Smrg	      *mingw* | *cygwin* )
3642c27c18e8Smrg		# make stdout use "unix" line endings
3643c27c18e8Smrg		echo "          setmode(1,_O_BINARY);"
3644c27c18e8Smrg		;;
3645c27c18e8Smrg	      esac
3646c27c18e8Smrg
3647c27c18e8Smrg	    cat <<"EOF"
364837eb1ca1Smrg	  lt_dump_script (stdout);
3649c27c18e8Smrg	  return 0;
3650c27c18e8Smrg	}
365137eb1ca1Smrg      if (strcmp (argv[i], debug_opt) == 0)
365237eb1ca1Smrg	{
365337eb1ca1Smrg          lt_debug = 1;
365437eb1ca1Smrg          continue;
365537eb1ca1Smrg	}
365637eb1ca1Smrg      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
365737eb1ca1Smrg        {
365837eb1ca1Smrg          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
365937eb1ca1Smrg             namespace, but it is not one of the ones we know about and
366037eb1ca1Smrg             have already dealt with, above (inluding dump-script), then
366137eb1ca1Smrg             report an error. Otherwise, targets might begin to believe
366237eb1ca1Smrg             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
366337eb1ca1Smrg             namespace. The first time any user complains about this, we'll
366437eb1ca1Smrg             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
366537eb1ca1Smrg             or a configure.ac-settable value.
366637eb1ca1Smrg           */
366737eb1ca1Smrg          lt_fatal (__FILE__, __LINE__,
366837eb1ca1Smrg		    "unrecognized %s option: '%s'",
366937eb1ca1Smrg                    ltwrapper_option_prefix, argv[i]);
367037eb1ca1Smrg        }
367137eb1ca1Smrg      /* otherwise ... */
367237eb1ca1Smrg      newargz[++newargc] = xstrdup (argv[i]);
3673c27c18e8Smrg    }
367437eb1ca1Smrg  newargz[++newargc] = NULL;
367537eb1ca1Smrg
367637eb1ca1SmrgEOF
367737eb1ca1Smrg	    cat <<EOF
367837eb1ca1Smrg  /* The GNU banner must be the first non-error debug message */
367937eb1ca1Smrg  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
368037eb1ca1SmrgEOF
368137eb1ca1Smrg	    cat <<"EOF"
368237eb1ca1Smrg  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
368337eb1ca1Smrg  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
3684c27c18e8Smrg
3685c27c18e8Smrg  tmp_pathspec = find_executable (argv[0]);
3686c27c18e8Smrg  if (tmp_pathspec == NULL)
368737eb1ca1Smrg    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
368837eb1ca1Smrg  lt_debugprintf (__FILE__, __LINE__,
368937eb1ca1Smrg                  "(main) found exe (before symlink chase) at: %s\n",
369037eb1ca1Smrg		  tmp_pathspec);
3691c27c18e8Smrg
3692c27c18e8Smrg  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
369337eb1ca1Smrg  lt_debugprintf (__FILE__, __LINE__,
369437eb1ca1Smrg                  "(main) found exe (after symlink chase) at: %s\n",
369537eb1ca1Smrg		  actual_cwrapper_path);
3696c27c18e8Smrg  XFREE (tmp_pathspec);
3697c27c18e8Smrg
369837eb1ca1Smrg  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
3699c27c18e8Smrg  strendzap (actual_cwrapper_path, actual_cwrapper_name);
3700c27c18e8Smrg
3701c27c18e8Smrg  /* wrapper name transforms */
3702c27c18e8Smrg  strendzap (actual_cwrapper_name, ".exe");
3703c27c18e8Smrg  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
3704c27c18e8Smrg  XFREE (actual_cwrapper_name);
3705c27c18e8Smrg  actual_cwrapper_name = tmp_pathspec;
3706c27c18e8Smrg  tmp_pathspec = 0;
3707c27c18e8Smrg
3708c27c18e8Smrg  /* target_name transforms -- use actual target program name; might have lt- prefix */
3709c27c18e8Smrg  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
3710c27c18e8Smrg  strendzap (target_name, ".exe");
3711c27c18e8Smrg  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
3712c27c18e8Smrg  XFREE (target_name);
3713c27c18e8Smrg  target_name = tmp_pathspec;
3714c27c18e8Smrg  tmp_pathspec = 0;
3715c27c18e8Smrg
371637eb1ca1Smrg  lt_debugprintf (__FILE__, __LINE__,
371737eb1ca1Smrg		  "(main) libtool target name: %s\n",
371837eb1ca1Smrg		  target_name);
3719c27c18e8SmrgEOF
3720c27c18e8Smrg
3721c27c18e8Smrg	    cat <<EOF
3722c27c18e8Smrg  newargz[0] =
3723c27c18e8Smrg    XMALLOC (char, (strlen (actual_cwrapper_path) +
3724c27c18e8Smrg		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
3725c27c18e8Smrg  strcpy (newargz[0], actual_cwrapper_path);
3726c27c18e8Smrg  strcat (newargz[0], "$objdir");
3727c27c18e8Smrg  strcat (newargz[0], "/");
3728c27c18e8SmrgEOF
3729c27c18e8Smrg
3730c27c18e8Smrg	    cat <<"EOF"
3731c27c18e8Smrg  /* stop here, and copy so we don't have to do this twice */
3732c27c18e8Smrg  tmp_pathspec = xstrdup (newargz[0]);
3733c27c18e8Smrg
3734c27c18e8Smrg  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
3735c27c18e8Smrg  strcat (newargz[0], actual_cwrapper_name);
3736c27c18e8Smrg
3737c27c18e8Smrg  /* DO want the lt- prefix here if it exists, so use target_name */
3738c27c18e8Smrg  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
3739c27c18e8Smrg  XFREE (tmp_pathspec);
3740c27c18e8Smrg  tmp_pathspec = NULL;
3741c27c18e8SmrgEOF
3742c27c18e8Smrg
3743c27c18e8Smrg	    case $host_os in
3744c27c18e8Smrg	      mingw*)
3745c27c18e8Smrg	    cat <<"EOF"
3746c27c18e8Smrg  {
3747c27c18e8Smrg    char* p;
3748c27c18e8Smrg    while ((p = strchr (newargz[0], '\\')) != NULL)
3749c27c18e8Smrg      {
3750c27c18e8Smrg	*p = '/';
3751c27c18e8Smrg      }
3752c27c18e8Smrg    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
3753c27c18e8Smrg      {
3754c27c18e8Smrg	*p = '/';
3755c27c18e8Smrg      }
3756c27c18e8Smrg  }
3757c27c18e8SmrgEOF
3758c43cc173Smrg	    ;;
3759c27c18e8Smrg	    esac
3760c27c18e8Smrg
3761c27c18e8Smrg	    cat <<"EOF"
3762c27c18e8Smrg  XFREE (target_name);
3763c27c18e8Smrg  XFREE (actual_cwrapper_path);
3764c27c18e8Smrg  XFREE (actual_cwrapper_name);
3765c27c18e8Smrg
3766c27c18e8Smrg  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
3767c27c18e8Smrg  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
3768c27c18e8Smrg  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
3769c27c18e8Smrg  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
3770c27c18e8Smrg
377137eb1ca1Smrg  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
377237eb1ca1Smrg		  nonnull (lt_argv_zero));
3773c27c18e8Smrg  for (i = 0; i < newargc; i++)
3774c27c18e8Smrg    {
377537eb1ca1Smrg      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
377637eb1ca1Smrg		      i, nonnull (newargz[i]));
3777c27c18e8Smrg    }
3778c43cc173Smrg
3779c43cc173SmrgEOF
3780c43cc173Smrg
3781c27c18e8Smrg	    case $host_os in
3782c27c18e8Smrg	      mingw*)
3783c27c18e8Smrg		cat <<"EOF"
3784c27c18e8Smrg  /* execv doesn't actually work on mingw as expected on unix */
378537eb1ca1Smrg  newargz = prepare_spawn (newargz);
3786c27c18e8Smrg  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
3787c27c18e8Smrg  if (rval == -1)
3788c27c18e8Smrg    {
3789c27c18e8Smrg      /* failed to start process */
379037eb1ca1Smrg      lt_debugprintf (__FILE__, __LINE__,
379137eb1ca1Smrg		      "(main) failed to launch target \"%s\": %s\n",
379237eb1ca1Smrg		      lt_argv_zero, nonnull (strerror (errno)));
3793c27c18e8Smrg      return 127;
3794c27c18e8Smrg    }
3795c27c18e8Smrg  return rval;
3796c27c18e8SmrgEOF
3797c27c18e8Smrg		;;
3798c27c18e8Smrg	      *)
3799c27c18e8Smrg		cat <<"EOF"
3800c27c18e8Smrg  execv (lt_argv_zero, newargz);
3801c27c18e8Smrg  return rval; /* =127, but avoids unused variable warning */
3802c27c18e8SmrgEOF
3803c27c18e8Smrg		;;
3804c27c18e8Smrg	    esac
3805c43cc173Smrg
3806c27c18e8Smrg	    cat <<"EOF"
3807c27c18e8Smrg}
3808c43cc173Smrg
3809c27c18e8Smrgvoid *
3810c27c18e8Smrgxmalloc (size_t num)
3811c27c18e8Smrg{
3812c27c18e8Smrg  void *p = (void *) malloc (num);
3813c27c18e8Smrg  if (!p)
381437eb1ca1Smrg    lt_fatal (__FILE__, __LINE__, "memory exhausted");
3815c43cc173Smrg
3816c27c18e8Smrg  return p;
3817c27c18e8Smrg}
3818c43cc173Smrg
3819c27c18e8Smrgchar *
3820c27c18e8Smrgxstrdup (const char *string)
3821c27c18e8Smrg{
3822c27c18e8Smrg  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
3823c27c18e8Smrg			  string) : NULL;
3824c27c18e8Smrg}
3825c43cc173Smrg
3826c27c18e8Smrgconst char *
3827c27c18e8Smrgbase_name (const char *name)
3828c27c18e8Smrg{
3829c27c18e8Smrg  const char *base;
3830c43cc173Smrg
3831c27c18e8Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
3832c27c18e8Smrg  /* Skip over the disk name in MSDOS pathnames. */
3833c27c18e8Smrg  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
3834c27c18e8Smrg    name += 2;
3835c27c18e8Smrg#endif
3836c43cc173Smrg
3837c27c18e8Smrg  for (base = name; *name; name++)
3838c27c18e8Smrg    if (IS_DIR_SEPARATOR (*name))
3839c27c18e8Smrg      base = name + 1;
3840c27c18e8Smrg  return base;
3841c27c18e8Smrg}
3842c43cc173Smrg
3843c27c18e8Smrgint
3844c27c18e8Smrgcheck_executable (const char *path)
3845c27c18e8Smrg{
3846c27c18e8Smrg  struct stat st;
3847c43cc173Smrg
384837eb1ca1Smrg  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
384937eb1ca1Smrg                  nonempty (path));
3850c27c18e8Smrg  if ((!path) || (!*path))
3851c27c18e8Smrg    return 0;
3852c43cc173Smrg
3853c27c18e8Smrg  if ((stat (path, &st) >= 0)
3854c27c18e8Smrg      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
3855c27c18e8Smrg    return 1;
3856c27c18e8Smrg  else
3857c27c18e8Smrg    return 0;
3858c27c18e8Smrg}
3859c43cc173Smrg
3860c27c18e8Smrgint
3861c27c18e8Smrgmake_executable (const char *path)
3862c27c18e8Smrg{
3863c27c18e8Smrg  int rval = 0;
3864c27c18e8Smrg  struct stat st;
3865c43cc173Smrg
386637eb1ca1Smrg  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
386737eb1ca1Smrg                  nonempty (path));
3868c27c18e8Smrg  if ((!path) || (!*path))
3869c27c18e8Smrg    return 0;
3870c43cc173Smrg
3871c27c18e8Smrg  if (stat (path, &st) >= 0)
3872c27c18e8Smrg    {
3873c27c18e8Smrg      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
3874c27c18e8Smrg    }
3875c27c18e8Smrg  return rval;
3876c27c18e8Smrg}
3877c43cc173Smrg
3878c27c18e8Smrg/* Searches for the full path of the wrapper.  Returns
3879c27c18e8Smrg   newly allocated full path name if found, NULL otherwise
3880c27c18e8Smrg   Does not chase symlinks, even on platforms that support them.
3881c27c18e8Smrg*/
3882c27c18e8Smrgchar *
3883c27c18e8Smrgfind_executable (const char *wrapper)
3884c27c18e8Smrg{
3885c27c18e8Smrg  int has_slash = 0;
3886c27c18e8Smrg  const char *p;
3887c27c18e8Smrg  const char *p_next;
3888c27c18e8Smrg  /* static buffer for getcwd */
3889c27c18e8Smrg  char tmp[LT_PATHMAX + 1];
3890c27c18e8Smrg  int tmp_len;
3891c27c18e8Smrg  char *concat_name;
3892c43cc173Smrg
389337eb1ca1Smrg  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
389437eb1ca1Smrg                  nonempty (wrapper));
3895c43cc173Smrg
3896c27c18e8Smrg  if ((wrapper == NULL) || (*wrapper == '\0'))
3897c27c18e8Smrg    return NULL;
3898c43cc173Smrg
3899c27c18e8Smrg  /* Absolute path? */
3900c27c18e8Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
3901c27c18e8Smrg  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
3902c27c18e8Smrg    {
3903c27c18e8Smrg      concat_name = xstrdup (wrapper);
3904c27c18e8Smrg      if (check_executable (concat_name))
3905c27c18e8Smrg	return concat_name;
3906c27c18e8Smrg      XFREE (concat_name);
3907c27c18e8Smrg    }
3908c27c18e8Smrg  else
3909c27c18e8Smrg    {
3910c27c18e8Smrg#endif
3911c27c18e8Smrg      if (IS_DIR_SEPARATOR (wrapper[0]))
3912c27c18e8Smrg	{
3913c27c18e8Smrg	  concat_name = xstrdup (wrapper);
3914c27c18e8Smrg	  if (check_executable (concat_name))
3915c27c18e8Smrg	    return concat_name;
3916c27c18e8Smrg	  XFREE (concat_name);
3917c27c18e8Smrg	}
3918c27c18e8Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
3919c27c18e8Smrg    }
3920c27c18e8Smrg#endif
3921c43cc173Smrg
3922c27c18e8Smrg  for (p = wrapper; *p; p++)
3923c27c18e8Smrg    if (*p == '/')
3924c27c18e8Smrg      {
3925c27c18e8Smrg	has_slash = 1;
3926c27c18e8Smrg	break;
3927c27c18e8Smrg      }
3928c27c18e8Smrg  if (!has_slash)
3929c27c18e8Smrg    {
3930c27c18e8Smrg      /* no slashes; search PATH */
3931c27c18e8Smrg      const char *path = getenv ("PATH");
3932c27c18e8Smrg      if (path != NULL)
3933c27c18e8Smrg	{
3934c27c18e8Smrg	  for (p = path; *p; p = p_next)
3935c27c18e8Smrg	    {
3936c27c18e8Smrg	      const char *q;
3937c27c18e8Smrg	      size_t p_len;
3938c27c18e8Smrg	      for (q = p; *q; q++)
3939c27c18e8Smrg		if (IS_PATH_SEPARATOR (*q))
3940c27c18e8Smrg		  break;
3941c27c18e8Smrg	      p_len = q - p;
3942c27c18e8Smrg	      p_next = (*q == '\0' ? q : q + 1);
3943c27c18e8Smrg	      if (p_len == 0)
3944c27c18e8Smrg		{
3945c27c18e8Smrg		  /* empty path: current directory */
3946c27c18e8Smrg		  if (getcwd (tmp, LT_PATHMAX) == NULL)
394737eb1ca1Smrg		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
394837eb1ca1Smrg                              nonnull (strerror (errno)));
3949c27c18e8Smrg		  tmp_len = strlen (tmp);
3950c27c18e8Smrg		  concat_name =
3951c27c18e8Smrg		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
3952c27c18e8Smrg		  memcpy (concat_name, tmp, tmp_len);
3953c27c18e8Smrg		  concat_name[tmp_len] = '/';
3954c27c18e8Smrg		  strcpy (concat_name + tmp_len + 1, wrapper);
3955c27c18e8Smrg		}
3956c27c18e8Smrg	      else
3957c27c18e8Smrg		{
3958c27c18e8Smrg		  concat_name =
3959c27c18e8Smrg		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
3960c27c18e8Smrg		  memcpy (concat_name, p, p_len);
3961c27c18e8Smrg		  concat_name[p_len] = '/';
3962c27c18e8Smrg		  strcpy (concat_name + p_len + 1, wrapper);
3963c27c18e8Smrg		}
3964c27c18e8Smrg	      if (check_executable (concat_name))
3965c27c18e8Smrg		return concat_name;
3966c27c18e8Smrg	      XFREE (concat_name);
3967c27c18e8Smrg	    }
3968c27c18e8Smrg	}
3969c27c18e8Smrg      /* not found in PATH; assume curdir */
3970c27c18e8Smrg    }
3971c27c18e8Smrg  /* Relative path | not found in path: prepend cwd */
3972c27c18e8Smrg  if (getcwd (tmp, LT_PATHMAX) == NULL)
397337eb1ca1Smrg    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
397437eb1ca1Smrg              nonnull (strerror (errno)));
3975c27c18e8Smrg  tmp_len = strlen (tmp);
3976c27c18e8Smrg  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
3977c27c18e8Smrg  memcpy (concat_name, tmp, tmp_len);
3978c27c18e8Smrg  concat_name[tmp_len] = '/';
3979c27c18e8Smrg  strcpy (concat_name + tmp_len + 1, wrapper);
3980c43cc173Smrg
3981c27c18e8Smrg  if (check_executable (concat_name))
3982c27c18e8Smrg    return concat_name;
3983c27c18e8Smrg  XFREE (concat_name);
3984c27c18e8Smrg  return NULL;
3985c27c18e8Smrg}
3986c43cc173Smrg
3987c27c18e8Smrgchar *
3988c27c18e8Smrgchase_symlinks (const char *pathspec)
3989c27c18e8Smrg{
3990c27c18e8Smrg#ifndef S_ISLNK
3991c27c18e8Smrg  return xstrdup (pathspec);
3992c27c18e8Smrg#else
3993c27c18e8Smrg  char buf[LT_PATHMAX];
3994c27c18e8Smrg  struct stat s;
3995c27c18e8Smrg  char *tmp_pathspec = xstrdup (pathspec);
3996c27c18e8Smrg  char *p;
3997c27c18e8Smrg  int has_symlinks = 0;
3998c27c18e8Smrg  while (strlen (tmp_pathspec) && !has_symlinks)
3999c27c18e8Smrg    {
400037eb1ca1Smrg      lt_debugprintf (__FILE__, __LINE__,
400137eb1ca1Smrg		      "checking path component for symlinks: %s\n",
400237eb1ca1Smrg		      tmp_pathspec);
4003c27c18e8Smrg      if (lstat (tmp_pathspec, &s) == 0)
4004c27c18e8Smrg	{
4005c27c18e8Smrg	  if (S_ISLNK (s.st_mode) != 0)
4006c27c18e8Smrg	    {
4007c27c18e8Smrg	      has_symlinks = 1;
4008c27c18e8Smrg	      break;
4009c27c18e8Smrg	    }
4010c43cc173Smrg
4011c27c18e8Smrg	  /* search backwards for last DIR_SEPARATOR */
4012c27c18e8Smrg	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
4013c27c18e8Smrg	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4014c27c18e8Smrg	    p--;
4015c27c18e8Smrg	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4016c27c18e8Smrg	    {
4017c27c18e8Smrg	      /* no more DIR_SEPARATORS left */
4018c27c18e8Smrg	      break;
4019c27c18e8Smrg	    }
4020c27c18e8Smrg	  *p = '\0';
4021c27c18e8Smrg	}
4022c27c18e8Smrg      else
4023c27c18e8Smrg	{
402437eb1ca1Smrg	  lt_fatal (__FILE__, __LINE__,
402537eb1ca1Smrg		    "error accessing file \"%s\": %s",
402637eb1ca1Smrg		    tmp_pathspec, nonnull (strerror (errno)));
4027c27c18e8Smrg	}
4028c27c18e8Smrg    }
4029c27c18e8Smrg  XFREE (tmp_pathspec);
4030c43cc173Smrg
4031c27c18e8Smrg  if (!has_symlinks)
4032c27c18e8Smrg    {
4033c27c18e8Smrg      return xstrdup (pathspec);
4034c27c18e8Smrg    }
4035c43cc173Smrg
4036c27c18e8Smrg  tmp_pathspec = realpath (pathspec, buf);
4037c27c18e8Smrg  if (tmp_pathspec == 0)
4038c27c18e8Smrg    {
403937eb1ca1Smrg      lt_fatal (__FILE__, __LINE__,
404037eb1ca1Smrg		"could not follow symlinks for %s", pathspec);
4041c27c18e8Smrg    }
4042c27c18e8Smrg  return xstrdup (tmp_pathspec);
4043c27c18e8Smrg#endif
4044c27c18e8Smrg}
4045c43cc173Smrg
4046c27c18e8Smrgchar *
4047c27c18e8Smrgstrendzap (char *str, const char *pat)
4048c27c18e8Smrg{
4049c27c18e8Smrg  size_t len, patlen;
4050c43cc173Smrg
4051c27c18e8Smrg  assert (str != NULL);
4052c27c18e8Smrg  assert (pat != NULL);
4053c43cc173Smrg
4054c27c18e8Smrg  len = strlen (str);
4055c27c18e8Smrg  patlen = strlen (pat);
4056c43cc173Smrg
4057c27c18e8Smrg  if (patlen <= len)
4058c27c18e8Smrg    {
4059c27c18e8Smrg      str += len - patlen;
4060c27c18e8Smrg      if (strcmp (str, pat) == 0)
4061c27c18e8Smrg	*str = '\0';
4062c27c18e8Smrg    }
4063c27c18e8Smrg  return str;
4064c27c18e8Smrg}
4065c43cc173Smrg
406637eb1ca1Smrgvoid
406737eb1ca1Smrglt_debugprintf (const char *file, int line, const char *fmt, ...)
406837eb1ca1Smrg{
406937eb1ca1Smrg  va_list args;
407037eb1ca1Smrg  if (lt_debug)
407137eb1ca1Smrg    {
407237eb1ca1Smrg      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
407337eb1ca1Smrg      va_start (args, fmt);
407437eb1ca1Smrg      (void) vfprintf (stderr, fmt, args);
407537eb1ca1Smrg      va_end (args);
407637eb1ca1Smrg    }
407737eb1ca1Smrg}
407837eb1ca1Smrg
4079c27c18e8Smrgstatic void
408037eb1ca1Smrglt_error_core (int exit_status, const char *file,
408137eb1ca1Smrg	       int line, const char *mode,
4082c27c18e8Smrg	       const char *message, va_list ap)
4083c27c18e8Smrg{
408437eb1ca1Smrg  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
4085c27c18e8Smrg  vfprintf (stderr, message, ap);
4086c27c18e8Smrg  fprintf (stderr, ".\n");
4087c43cc173Smrg
4088c27c18e8Smrg  if (exit_status >= 0)
4089c27c18e8Smrg    exit (exit_status);
4090c27c18e8Smrg}
4091c43cc173Smrg
4092c27c18e8Smrgvoid
409337eb1ca1Smrglt_fatal (const char *file, int line, const char *message, ...)
4094c27c18e8Smrg{
4095c27c18e8Smrg  va_list ap;
4096c27c18e8Smrg  va_start (ap, message);
409737eb1ca1Smrg  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
4098c27c18e8Smrg  va_end (ap);
4099c27c18e8Smrg}
4100c43cc173Smrg
410137eb1ca1Smrgstatic const char *
410237eb1ca1Smrgnonnull (const char *s)
410337eb1ca1Smrg{
410437eb1ca1Smrg  return s ? s : "(null)";
410537eb1ca1Smrg}
410637eb1ca1Smrg
410737eb1ca1Smrgstatic const char *
410837eb1ca1Smrgnonempty (const char *s)
410937eb1ca1Smrg{
411037eb1ca1Smrg  return (s && !*s) ? "(empty)" : nonnull (s);
411137eb1ca1Smrg}
411237eb1ca1Smrg
4113c27c18e8Smrgvoid
4114c27c18e8Smrglt_setenv (const char *name, const char *value)
4115c27c18e8Smrg{
411637eb1ca1Smrg  lt_debugprintf (__FILE__, __LINE__,
411737eb1ca1Smrg		  "(lt_setenv) setting '%s' to '%s'\n",
411837eb1ca1Smrg                  nonnull (name), nonnull (value));
4119c27c18e8Smrg  {
4120c27c18e8Smrg#ifdef HAVE_SETENV
4121c27c18e8Smrg    /* always make a copy, for consistency with !HAVE_SETENV */
4122c27c18e8Smrg    char *str = xstrdup (value);
4123c27c18e8Smrg    setenv (name, str, 1);
4124c27c18e8Smrg#else
4125c27c18e8Smrg    int len = strlen (name) + 1 + strlen (value) + 1;
4126c27c18e8Smrg    char *str = XMALLOC (char, len);
4127c27c18e8Smrg    sprintf (str, "%s=%s", name, value);
4128c27c18e8Smrg    if (putenv (str) != EXIT_SUCCESS)
4129c27c18e8Smrg      {
4130c27c18e8Smrg        XFREE (str);
4131c27c18e8Smrg      }
4132c27c18e8Smrg#endif
4133c27c18e8Smrg  }
4134c27c18e8Smrg}
4135c43cc173Smrg
4136c27c18e8Smrgchar *
4137c27c18e8Smrglt_extend_str (const char *orig_value, const char *add, int to_end)
4138c27c18e8Smrg{
4139c27c18e8Smrg  char *new_value;
4140c27c18e8Smrg  if (orig_value && *orig_value)
4141c27c18e8Smrg    {
4142c27c18e8Smrg      int orig_value_len = strlen (orig_value);
4143c27c18e8Smrg      int add_len = strlen (add);
4144c27c18e8Smrg      new_value = XMALLOC (char, add_len + orig_value_len + 1);
4145c27c18e8Smrg      if (to_end)
4146c27c18e8Smrg        {
4147c27c18e8Smrg          strcpy (new_value, orig_value);
4148c27c18e8Smrg          strcpy (new_value + orig_value_len, add);
4149c27c18e8Smrg        }
4150c27c18e8Smrg      else
4151c27c18e8Smrg        {
4152c27c18e8Smrg          strcpy (new_value, add);
4153c27c18e8Smrg          strcpy (new_value + add_len, orig_value);
4154c27c18e8Smrg        }
4155c27c18e8Smrg    }
4156c27c18e8Smrg  else
4157c27c18e8Smrg    {
4158c27c18e8Smrg      new_value = xstrdup (add);
4159c27c18e8Smrg    }
4160c27c18e8Smrg  return new_value;
4161c27c18e8Smrg}
4162c43cc173Smrg
4163c27c18e8Smrgvoid
4164c27c18e8Smrglt_update_exe_path (const char *name, const char *value)
4165c27c18e8Smrg{
416637eb1ca1Smrg  lt_debugprintf (__FILE__, __LINE__,
416737eb1ca1Smrg		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
416837eb1ca1Smrg                  nonnull (name), nonnull (value));
4169c43cc173Smrg
4170c27c18e8Smrg  if (name && *name && value && *value)
4171c27c18e8Smrg    {
4172c27c18e8Smrg      char *new_value = lt_extend_str (getenv (name), value, 0);
4173c27c18e8Smrg      /* some systems can't cope with a ':'-terminated path #' */
4174c27c18e8Smrg      int len = strlen (new_value);
4175c27c18e8Smrg      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
4176c27c18e8Smrg        {
4177c27c18e8Smrg          new_value[len-1] = '\0';
4178c27c18e8Smrg        }
4179c27c18e8Smrg      lt_setenv (name, new_value);
4180c27c18e8Smrg      XFREE (new_value);
4181c27c18e8Smrg    }
4182c27c18e8Smrg}
4183c43cc173Smrg
4184c27c18e8Smrgvoid
4185c27c18e8Smrglt_update_lib_path (const char *name, const char *value)
4186c27c18e8Smrg{
418737eb1ca1Smrg  lt_debugprintf (__FILE__, __LINE__,
418837eb1ca1Smrg		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
418937eb1ca1Smrg                  nonnull (name), nonnull (value));
4190c43cc173Smrg
4191c27c18e8Smrg  if (name && *name && value && *value)
4192c27c18e8Smrg    {
4193c27c18e8Smrg      char *new_value = lt_extend_str (getenv (name), value, 0);
4194c27c18e8Smrg      lt_setenv (name, new_value);
4195c27c18e8Smrg      XFREE (new_value);
4196c27c18e8Smrg    }
4197c27c18e8Smrg}
4198c43cc173Smrg
419937eb1ca1SmrgEOF
420037eb1ca1Smrg	    case $host_os in
420137eb1ca1Smrg	      mingw*)
420237eb1ca1Smrg		cat <<"EOF"
420337eb1ca1Smrg
420437eb1ca1Smrg/* Prepares an argument vector before calling spawn().
420537eb1ca1Smrg   Note that spawn() does not by itself call the command interpreter
420637eb1ca1Smrg     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
420737eb1ca1Smrg      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
420837eb1ca1Smrg         GetVersionEx(&v);
420937eb1ca1Smrg         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
421037eb1ca1Smrg      }) ? "cmd.exe" : "command.com").
421137eb1ca1Smrg   Instead it simply concatenates the arguments, separated by ' ', and calls
421237eb1ca1Smrg   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
421337eb1ca1Smrg   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
421437eb1ca1Smrg   special way:
421537eb1ca1Smrg   - Space and tab are interpreted as delimiters. They are not treated as
421637eb1ca1Smrg     delimiters if they are surrounded by double quotes: "...".
421737eb1ca1Smrg   - Unescaped double quotes are removed from the input. Their only effect is
421837eb1ca1Smrg     that within double quotes, space and tab are treated like normal
421937eb1ca1Smrg     characters.
422037eb1ca1Smrg   - Backslashes not followed by double quotes are not special.
422137eb1ca1Smrg   - But 2*n+1 backslashes followed by a double quote become
422237eb1ca1Smrg     n backslashes followed by a double quote (n >= 0):
422337eb1ca1Smrg       \" -> "
422437eb1ca1Smrg       \\\" -> \"
422537eb1ca1Smrg       \\\\\" -> \\"
422637eb1ca1Smrg */
422737eb1ca1Smrg#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
422837eb1ca1Smrg#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
422937eb1ca1Smrgchar **
423037eb1ca1Smrgprepare_spawn (char **argv)
423137eb1ca1Smrg{
423237eb1ca1Smrg  size_t argc;
423337eb1ca1Smrg  char **new_argv;
423437eb1ca1Smrg  size_t i;
423537eb1ca1Smrg
423637eb1ca1Smrg  /* Count number of arguments.  */
423737eb1ca1Smrg  for (argc = 0; argv[argc] != NULL; argc++)
423837eb1ca1Smrg    ;
423937eb1ca1Smrg
424037eb1ca1Smrg  /* Allocate new argument vector.  */
424137eb1ca1Smrg  new_argv = XMALLOC (char *, argc + 1);
424237eb1ca1Smrg
424337eb1ca1Smrg  /* Put quoted arguments into the new argument vector.  */
424437eb1ca1Smrg  for (i = 0; i < argc; i++)
424537eb1ca1Smrg    {
424637eb1ca1Smrg      const char *string = argv[i];
424737eb1ca1Smrg
424837eb1ca1Smrg      if (string[0] == '\0')
424937eb1ca1Smrg	new_argv[i] = xstrdup ("\"\"");
425037eb1ca1Smrg      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
425137eb1ca1Smrg	{
425237eb1ca1Smrg	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
425337eb1ca1Smrg	  size_t length;
425437eb1ca1Smrg	  unsigned int backslashes;
425537eb1ca1Smrg	  const char *s;
425637eb1ca1Smrg	  char *quoted_string;
425737eb1ca1Smrg	  char *p;
425837eb1ca1Smrg
425937eb1ca1Smrg	  length = 0;
426037eb1ca1Smrg	  backslashes = 0;
426137eb1ca1Smrg	  if (quote_around)
426237eb1ca1Smrg	    length++;
426337eb1ca1Smrg	  for (s = string; *s != '\0'; s++)
426437eb1ca1Smrg	    {
426537eb1ca1Smrg	      char c = *s;
426637eb1ca1Smrg	      if (c == '"')
426737eb1ca1Smrg		length += backslashes + 1;
426837eb1ca1Smrg	      length++;
426937eb1ca1Smrg	      if (c == '\\')
427037eb1ca1Smrg		backslashes++;
427137eb1ca1Smrg	      else
427237eb1ca1Smrg		backslashes = 0;
427337eb1ca1Smrg	    }
427437eb1ca1Smrg	  if (quote_around)
427537eb1ca1Smrg	    length += backslashes + 1;
427637eb1ca1Smrg
427737eb1ca1Smrg	  quoted_string = XMALLOC (char, length + 1);
427837eb1ca1Smrg
427937eb1ca1Smrg	  p = quoted_string;
428037eb1ca1Smrg	  backslashes = 0;
428137eb1ca1Smrg	  if (quote_around)
428237eb1ca1Smrg	    *p++ = '"';
428337eb1ca1Smrg	  for (s = string; *s != '\0'; s++)
428437eb1ca1Smrg	    {
428537eb1ca1Smrg	      char c = *s;
428637eb1ca1Smrg	      if (c == '"')
428737eb1ca1Smrg		{
428837eb1ca1Smrg		  unsigned int j;
428937eb1ca1Smrg		  for (j = backslashes + 1; j > 0; j--)
429037eb1ca1Smrg		    *p++ = '\\';
429137eb1ca1Smrg		}
429237eb1ca1Smrg	      *p++ = c;
429337eb1ca1Smrg	      if (c == '\\')
429437eb1ca1Smrg		backslashes++;
429537eb1ca1Smrg	      else
429637eb1ca1Smrg		backslashes = 0;
429737eb1ca1Smrg	    }
429837eb1ca1Smrg	  if (quote_around)
429937eb1ca1Smrg	    {
430037eb1ca1Smrg	      unsigned int j;
430137eb1ca1Smrg	      for (j = backslashes; j > 0; j--)
430237eb1ca1Smrg		*p++ = '\\';
430337eb1ca1Smrg	      *p++ = '"';
430437eb1ca1Smrg	    }
430537eb1ca1Smrg	  *p = '\0';
430637eb1ca1Smrg
430737eb1ca1Smrg	  new_argv[i] = quoted_string;
430837eb1ca1Smrg	}
430937eb1ca1Smrg      else
431037eb1ca1Smrg	new_argv[i] = (char *) string;
431137eb1ca1Smrg    }
431237eb1ca1Smrg  new_argv[argc] = NULL;
431337eb1ca1Smrg
431437eb1ca1Smrg  return new_argv;
431537eb1ca1Smrg}
431637eb1ca1SmrgEOF
431737eb1ca1Smrg		;;
431837eb1ca1Smrg	    esac
431937eb1ca1Smrg
432037eb1ca1Smrg            cat <<"EOF"
432137eb1ca1Smrgvoid lt_dump_script (FILE* f)
432237eb1ca1Smrg{
432337eb1ca1SmrgEOF
432437eb1ca1Smrg	    func_emit_wrapper yes |
432537eb1ca1Smrg              $SED -e 's/\([\\"]\)/\\\1/g' \
432637eb1ca1Smrg	           -e 's/^/  fputs ("/' -e 's/$/\\n", f);/'
4327c43cc173Smrg
432837eb1ca1Smrg            cat <<"EOF"
432937eb1ca1Smrg}
4330c27c18e8SmrgEOF
4331c27c18e8Smrg}
4332c27c18e8Smrg# end: func_emit_cwrapperexe_src
4333c43cc173Smrg
433437eb1ca1Smrg# func_win32_import_lib_p ARG
433537eb1ca1Smrg# True if ARG is an import lib, as indicated by $file_magic_cmd
433637eb1ca1Smrgfunc_win32_import_lib_p ()
433737eb1ca1Smrg{
433837eb1ca1Smrg    $opt_debug
433937eb1ca1Smrg    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
434037eb1ca1Smrg    *import*) : ;;
434137eb1ca1Smrg    *) false ;;
434237eb1ca1Smrg    esac
434337eb1ca1Smrg}
434437eb1ca1Smrg
4345c27c18e8Smrg# func_mode_link arg...
4346c27c18e8Smrgfunc_mode_link ()
4347c27c18e8Smrg{
4348c27c18e8Smrg    $opt_debug
4349c27c18e8Smrg    case $host in
4350c27c18e8Smrg    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
4351c27c18e8Smrg      # It is impossible to link a dll without this setting, and
4352c27c18e8Smrg      # we shouldn't force the makefile maintainer to figure out
4353c27c18e8Smrg      # which system we are compiling for in order to pass an extra
4354c27c18e8Smrg      # flag for every libtool invocation.
4355c27c18e8Smrg      # allow_undefined=no
4356c43cc173Smrg
4357c27c18e8Smrg      # FIXME: Unfortunately, there are problems with the above when trying
4358c27c18e8Smrg      # to make a dll which has undefined symbols, in which case not
4359c27c18e8Smrg      # even a static library is built.  For now, we need to specify
4360c27c18e8Smrg      # -no-undefined on the libtool link line when we can be certain
4361c27c18e8Smrg      # that all symbols are satisfied, otherwise we get a static library.
4362c27c18e8Smrg      allow_undefined=yes
4363c27c18e8Smrg      ;;
4364c27c18e8Smrg    *)
4365c27c18e8Smrg      allow_undefined=yes
4366c27c18e8Smrg      ;;
4367c27c18e8Smrg    esac
4368c27c18e8Smrg    libtool_args=$nonopt
4369c27c18e8Smrg    base_compile="$nonopt $@"
4370c27c18e8Smrg    compile_command=$nonopt
4371c27c18e8Smrg    finalize_command=$nonopt
4372c43cc173Smrg
4373c27c18e8Smrg    compile_rpath=
4374c27c18e8Smrg    finalize_rpath=
4375c27c18e8Smrg    compile_shlibpath=
4376c27c18e8Smrg    finalize_shlibpath=
4377c27c18e8Smrg    convenience=
4378c27c18e8Smrg    old_convenience=
4379c27c18e8Smrg    deplibs=
4380c27c18e8Smrg    old_deplibs=
4381c27c18e8Smrg    compiler_flags=
4382c27c18e8Smrg    linker_flags=
4383c27c18e8Smrg    dllsearchpath=
4384c27c18e8Smrg    lib_search_path=`pwd`
4385c27c18e8Smrg    inst_prefix_dir=
4386c27c18e8Smrg    new_inherited_linker_flags=
4387c43cc173Smrg
4388c27c18e8Smrg    avoid_version=no
438937eb1ca1Smrg    bindir=
4390c27c18e8Smrg    dlfiles=
4391c27c18e8Smrg    dlprefiles=
4392c27c18e8Smrg    dlself=no
4393c27c18e8Smrg    export_dynamic=no
4394c27c18e8Smrg    export_symbols=
4395c27c18e8Smrg    export_symbols_regex=
4396c27c18e8Smrg    generated=
4397c27c18e8Smrg    libobjs=
4398c27c18e8Smrg    ltlibs=
4399c27c18e8Smrg    module=no
4400c27c18e8Smrg    no_install=no
4401c27c18e8Smrg    objs=
4402c27c18e8Smrg    non_pic_objects=
4403c27c18e8Smrg    precious_files_regex=
4404c27c18e8Smrg    prefer_static_libs=no
4405c27c18e8Smrg    preload=no
4406c27c18e8Smrg    prev=
4407c27c18e8Smrg    prevarg=
4408c27c18e8Smrg    release=
4409c27c18e8Smrg    rpath=
4410c27c18e8Smrg    xrpath=
4411c27c18e8Smrg    perm_rpath=
4412c27c18e8Smrg    temp_rpath=
4413c27c18e8Smrg    thread_safe=no
4414c27c18e8Smrg    vinfo=
4415c27c18e8Smrg    vinfo_number=no
4416c27c18e8Smrg    weak_libs=
4417c27c18e8Smrg    single_module="${wl}-single_module"
4418c27c18e8Smrg    func_infer_tag $base_compile
4419c43cc173Smrg
4420c27c18e8Smrg    # We need to know -static, to get the right output filenames.
4421c27c18e8Smrg    for arg
4422c27c18e8Smrg    do
4423c27c18e8Smrg      case $arg in
4424c27c18e8Smrg      -shared)
4425c27c18e8Smrg	test "$build_libtool_libs" != yes && \
4426c27c18e8Smrg	  func_fatal_configuration "can not build a shared library"
4427c27c18e8Smrg	build_old_libs=no
4428c27c18e8Smrg	break
4429c27c18e8Smrg	;;
4430c27c18e8Smrg      -all-static | -static | -static-libtool-libs)
4431c27c18e8Smrg	case $arg in
4432c27c18e8Smrg	-all-static)
4433c27c18e8Smrg	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
4434c27c18e8Smrg	    func_warning "complete static linking is impossible in this configuration"
4435c27c18e8Smrg	  fi
4436c27c18e8Smrg	  if test -n "$link_static_flag"; then
4437c27c18e8Smrg	    dlopen_self=$dlopen_self_static
4438c27c18e8Smrg	  fi
4439c27c18e8Smrg	  prefer_static_libs=yes
4440c27c18e8Smrg	  ;;
4441c27c18e8Smrg	-static)
4442c27c18e8Smrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
4443c27c18e8Smrg	    dlopen_self=$dlopen_self_static
4444c27c18e8Smrg	  fi
4445c27c18e8Smrg	  prefer_static_libs=built
4446c27c18e8Smrg	  ;;
4447c27c18e8Smrg	-static-libtool-libs)
4448c27c18e8Smrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
4449c27c18e8Smrg	    dlopen_self=$dlopen_self_static
4450c27c18e8Smrg	  fi
4451c27c18e8Smrg	  prefer_static_libs=yes
4452c27c18e8Smrg	  ;;
4453c27c18e8Smrg	esac
4454c27c18e8Smrg	build_libtool_libs=no
4455c27c18e8Smrg	build_old_libs=yes
4456c27c18e8Smrg	break
4457c43cc173Smrg	;;
4458c43cc173Smrg      esac
4459c27c18e8Smrg    done
4460c43cc173Smrg
4461c27c18e8Smrg    # See if our shared archives depend on static archives.
4462c27c18e8Smrg    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
4463c43cc173Smrg
4464c27c18e8Smrg    # Go through the arguments, transforming them on the way.
4465c27c18e8Smrg    while test "$#" -gt 0; do
4466c27c18e8Smrg      arg="$1"
4467c27c18e8Smrg      shift
4468c27c18e8Smrg      func_quote_for_eval "$arg"
4469c27c18e8Smrg      qarg=$func_quote_for_eval_unquoted_result
4470c27c18e8Smrg      func_append libtool_args " $func_quote_for_eval_result"
4471c43cc173Smrg
4472c27c18e8Smrg      # If the previous option needs an argument, assign it.
4473c27c18e8Smrg      if test -n "$prev"; then
4474c27c18e8Smrg	case $prev in
4475c27c18e8Smrg	output)
4476c27c18e8Smrg	  func_append compile_command " @OUTPUT@"
4477c27c18e8Smrg	  func_append finalize_command " @OUTPUT@"
4478c43cc173Smrg	  ;;
4479c43cc173Smrg	esac
4480c43cc173Smrg
4481c27c18e8Smrg	case $prev in
448237eb1ca1Smrg	bindir)
448337eb1ca1Smrg	  bindir="$arg"
448437eb1ca1Smrg	  prev=
448537eb1ca1Smrg	  continue
448637eb1ca1Smrg	  ;;
4487c27c18e8Smrg	dlfiles|dlprefiles)
4488c27c18e8Smrg	  if test "$preload" = no; then
4489c27c18e8Smrg	    # Add the symbol object into the linking commands.
4490c27c18e8Smrg	    func_append compile_command " @SYMFILE@"
4491c27c18e8Smrg	    func_append finalize_command " @SYMFILE@"
4492c27c18e8Smrg	    preload=yes
4493c27c18e8Smrg	  fi
4494c27c18e8Smrg	  case $arg in
4495c27c18e8Smrg	  *.la | *.lo) ;;  # We handle these cases below.
4496c27c18e8Smrg	  force)
4497c27c18e8Smrg	    if test "$dlself" = no; then
4498c27c18e8Smrg	      dlself=needless
4499c27c18e8Smrg	      export_dynamic=yes
4500c27c18e8Smrg	    fi
4501c27c18e8Smrg	    prev=
4502c27c18e8Smrg	    continue
4503c27c18e8Smrg	    ;;
4504c27c18e8Smrg	  self)
4505c27c18e8Smrg	    if test "$prev" = dlprefiles; then
4506c27c18e8Smrg	      dlself=yes
4507c27c18e8Smrg	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
4508c27c18e8Smrg	      dlself=yes
4509c43cc173Smrg	    else
4510c27c18e8Smrg	      dlself=needless
4511c27c18e8Smrg	      export_dynamic=yes
4512c43cc173Smrg	    fi
4513c27c18e8Smrg	    prev=
4514c27c18e8Smrg	    continue
4515c27c18e8Smrg	    ;;
4516c27c18e8Smrg	  *)
4517c27c18e8Smrg	    if test "$prev" = dlfiles; then
4518c27c18e8Smrg	      dlfiles="$dlfiles $arg"
4519c27c18e8Smrg	    else
4520c27c18e8Smrg	      dlprefiles="$dlprefiles $arg"
4521c27c18e8Smrg	    fi
4522c27c18e8Smrg	    prev=
4523c27c18e8Smrg	    continue
4524c27c18e8Smrg	    ;;
4525c43cc173Smrg	  esac
4526c43cc173Smrg	  ;;
4527c27c18e8Smrg	expsyms)
4528c27c18e8Smrg	  export_symbols="$arg"
4529c27c18e8Smrg	  test -f "$arg" \
4530c27c18e8Smrg	    || func_fatal_error "symbol file \`$arg' does not exist"
4531c27c18e8Smrg	  prev=
4532c27c18e8Smrg	  continue
4533c27c18e8Smrg	  ;;
4534c27c18e8Smrg	expsyms_regex)
4535c27c18e8Smrg	  export_symbols_regex="$arg"
4536c27c18e8Smrg	  prev=
4537c27c18e8Smrg	  continue
4538c27c18e8Smrg	  ;;
4539c27c18e8Smrg	framework)
4540c27c18e8Smrg	  case $host in
4541c27c18e8Smrg	    *-*-darwin*)
4542c27c18e8Smrg	      case "$deplibs " in
4543c27c18e8Smrg		*" $qarg.ltframework "*) ;;
4544c27c18e8Smrg		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
4545c27c18e8Smrg		   ;;
4546c43cc173Smrg	      esac
4547c27c18e8Smrg	      ;;
4548c43cc173Smrg	  esac
4549c27c18e8Smrg	  prev=
4550c27c18e8Smrg	  continue
4551c27c18e8Smrg	  ;;
4552c27c18e8Smrg	inst_prefix)
4553c27c18e8Smrg	  inst_prefix_dir="$arg"
4554c27c18e8Smrg	  prev=
4555c27c18e8Smrg	  continue
4556c27c18e8Smrg	  ;;
4557c27c18e8Smrg	objectlist)
4558c27c18e8Smrg	  if test -f "$arg"; then
4559c27c18e8Smrg	    save_arg=$arg
4560c27c18e8Smrg	    moreargs=
4561c27c18e8Smrg	    for fil in `cat "$save_arg"`
4562c27c18e8Smrg	    do
4563c27c18e8Smrg#	      moreargs="$moreargs $fil"
4564c27c18e8Smrg	      arg=$fil
4565c27c18e8Smrg	      # A libtool-controlled object.
4566c43cc173Smrg
4567c27c18e8Smrg	      # Check to see that this really is a libtool object.
4568c27c18e8Smrg	      if func_lalib_unsafe_p "$arg"; then
4569c27c18e8Smrg		pic_object=
4570c27c18e8Smrg		non_pic_object=
4571c43cc173Smrg
4572c27c18e8Smrg		# Read the .lo file
4573c27c18e8Smrg		func_source "$arg"
4574c43cc173Smrg
4575c27c18e8Smrg		if test -z "$pic_object" ||
4576c27c18e8Smrg		   test -z "$non_pic_object" ||
4577c27c18e8Smrg		   test "$pic_object" = none &&
4578c27c18e8Smrg		   test "$non_pic_object" = none; then
4579c27c18e8Smrg		  func_fatal_error "cannot find name of object for \`$arg'"
4580c27c18e8Smrg		fi
4581c43cc173Smrg
4582c27c18e8Smrg		# Extract subdirectory from the argument.
4583c27c18e8Smrg		func_dirname "$arg" "/" ""
4584c27c18e8Smrg		xdir="$func_dirname_result"
4585c43cc173Smrg
4586c27c18e8Smrg		if test "$pic_object" != none; then
4587c27c18e8Smrg		  # Prepend the subdirectory the object is found in.
4588c27c18e8Smrg		  pic_object="$xdir$pic_object"
4589c43cc173Smrg
4590c27c18e8Smrg		  if test "$prev" = dlfiles; then
4591c27c18e8Smrg		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
4592c27c18e8Smrg		      dlfiles="$dlfiles $pic_object"
4593c27c18e8Smrg		      prev=
4594c27c18e8Smrg		      continue
4595c27c18e8Smrg		    else
4596c27c18e8Smrg		      # If libtool objects are unsupported, then we need to preload.
4597c27c18e8Smrg		      prev=dlprefiles
4598c27c18e8Smrg		    fi
4599c27c18e8Smrg		  fi
4600c43cc173Smrg
4601c27c18e8Smrg		  # CHECK ME:  I think I busted this.  -Ossama
4602c27c18e8Smrg		  if test "$prev" = dlprefiles; then
4603c27c18e8Smrg		    # Preload the old-style object.
4604c27c18e8Smrg		    dlprefiles="$dlprefiles $pic_object"
4605c27c18e8Smrg		    prev=
4606c27c18e8Smrg		  fi
4607c43cc173Smrg
4608c27c18e8Smrg		  # A PIC object.
4609c27c18e8Smrg		  func_append libobjs " $pic_object"
4610c27c18e8Smrg		  arg="$pic_object"
4611c27c18e8Smrg		fi
4612c43cc173Smrg
4613c27c18e8Smrg		# Non-PIC object.
4614c27c18e8Smrg		if test "$non_pic_object" != none; then
4615c27c18e8Smrg		  # Prepend the subdirectory the object is found in.
4616c27c18e8Smrg		  non_pic_object="$xdir$non_pic_object"
4617c43cc173Smrg
4618c27c18e8Smrg		  # A standard non-PIC object
4619c27c18e8Smrg		  func_append non_pic_objects " $non_pic_object"
4620c27c18e8Smrg		  if test -z "$pic_object" || test "$pic_object" = none ; then
4621c27c18e8Smrg		    arg="$non_pic_object"
4622c27c18e8Smrg		  fi
4623c27c18e8Smrg		else
4624c27c18e8Smrg		  # If the PIC object exists, use it instead.
4625c27c18e8Smrg		  # $xdir was prepended to $pic_object above.
4626c27c18e8Smrg		  non_pic_object="$pic_object"
4627c27c18e8Smrg		  func_append non_pic_objects " $non_pic_object"
4628c27c18e8Smrg		fi
4629c27c18e8Smrg	      else
4630c27c18e8Smrg		# Only an error if not doing a dry-run.
4631c27c18e8Smrg		if $opt_dry_run; then
4632c27c18e8Smrg		  # Extract subdirectory from the argument.
4633c27c18e8Smrg		  func_dirname "$arg" "/" ""
4634c27c18e8Smrg		  xdir="$func_dirname_result"
4635c27c18e8Smrg
4636c27c18e8Smrg		  func_lo2o "$arg"
4637c27c18e8Smrg		  pic_object=$xdir$objdir/$func_lo2o_result
4638c27c18e8Smrg		  non_pic_object=$xdir$func_lo2o_result
4639c27c18e8Smrg		  func_append libobjs " $pic_object"
4640c27c18e8Smrg		  func_append non_pic_objects " $non_pic_object"
4641c27c18e8Smrg	        else
4642c27c18e8Smrg		  func_fatal_error "\`$arg' is not a valid libtool object"
4643c27c18e8Smrg		fi
4644c27c18e8Smrg	      fi
4645c43cc173Smrg	    done
4646c27c18e8Smrg	  else
4647c27c18e8Smrg	    func_fatal_error "link input file \`$arg' does not exist"
4648c43cc173Smrg	  fi
4649c27c18e8Smrg	  arg=$save_arg
4650c27c18e8Smrg	  prev=
4651c27c18e8Smrg	  continue
4652c27c18e8Smrg	  ;;
4653c27c18e8Smrg	precious_regex)
4654c27c18e8Smrg	  precious_files_regex="$arg"
4655c27c18e8Smrg	  prev=
4656c27c18e8Smrg	  continue
4657c27c18e8Smrg	  ;;
4658c27c18e8Smrg	release)
4659c27c18e8Smrg	  release="-$arg"
4660c27c18e8Smrg	  prev=
4661c27c18e8Smrg	  continue
4662c27c18e8Smrg	  ;;
4663c27c18e8Smrg	rpath | xrpath)
4664c27c18e8Smrg	  # We need an absolute path.
4665c27c18e8Smrg	  case $arg in
4666c27c18e8Smrg	  [\\/]* | [A-Za-z]:[\\/]*) ;;
4667c27c18e8Smrg	  *)
4668c27c18e8Smrg	    func_fatal_error "only absolute run-paths are allowed"
4669c27c18e8Smrg	    ;;
4670c43cc173Smrg	  esac
4671c27c18e8Smrg	  if test "$prev" = rpath; then
4672c27c18e8Smrg	    case "$rpath " in
4673c27c18e8Smrg	    *" $arg "*) ;;
4674c27c18e8Smrg	    *) rpath="$rpath $arg" ;;
4675c27c18e8Smrg	    esac
4676c27c18e8Smrg	  else
4677c27c18e8Smrg	    case "$xrpath " in
4678c27c18e8Smrg	    *" $arg "*) ;;
4679c27c18e8Smrg	    *) xrpath="$xrpath $arg" ;;
4680c27c18e8Smrg	    esac
4681c27c18e8Smrg	  fi
4682c27c18e8Smrg	  prev=
4683c27c18e8Smrg	  continue
4684c27c18e8Smrg	  ;;
4685c27c18e8Smrg	shrext)
4686c27c18e8Smrg	  shrext_cmds="$arg"
4687c27c18e8Smrg	  prev=
4688c27c18e8Smrg	  continue
4689c27c18e8Smrg	  ;;
4690c27c18e8Smrg	weak)
4691c27c18e8Smrg	  weak_libs="$weak_libs $arg"
4692c27c18e8Smrg	  prev=
4693c27c18e8Smrg	  continue
4694c27c18e8Smrg	  ;;
4695c27c18e8Smrg	xcclinker)
4696c27c18e8Smrg	  linker_flags="$linker_flags $qarg"
4697c27c18e8Smrg	  compiler_flags="$compiler_flags $qarg"
4698c27c18e8Smrg	  prev=
4699c27c18e8Smrg	  func_append compile_command " $qarg"
4700c27c18e8Smrg	  func_append finalize_command " $qarg"
4701c27c18e8Smrg	  continue
4702c27c18e8Smrg	  ;;
4703c27c18e8Smrg	xcompiler)
4704c27c18e8Smrg	  compiler_flags="$compiler_flags $qarg"
4705c27c18e8Smrg	  prev=
4706c27c18e8Smrg	  func_append compile_command " $qarg"
4707c27c18e8Smrg	  func_append finalize_command " $qarg"
4708c27c18e8Smrg	  continue
4709c27c18e8Smrg	  ;;
4710c27c18e8Smrg	xlinker)
4711c27c18e8Smrg	  linker_flags="$linker_flags $qarg"
4712c27c18e8Smrg	  compiler_flags="$compiler_flags $wl$qarg"
4713c27c18e8Smrg	  prev=
4714c27c18e8Smrg	  func_append compile_command " $wl$qarg"
4715c27c18e8Smrg	  func_append finalize_command " $wl$qarg"
4716c27c18e8Smrg	  continue
4717c43cc173Smrg	  ;;
4718c43cc173Smrg	*)
4719c27c18e8Smrg	  eval "$prev=\"\$arg\""
4720c27c18e8Smrg	  prev=
4721c27c18e8Smrg	  continue
4722c43cc173Smrg	  ;;
4723c43cc173Smrg	esac
4724c27c18e8Smrg      fi # test -n "$prev"
4725c43cc173Smrg
4726c27c18e8Smrg      prevarg="$arg"
4727c43cc173Smrg
4728c27c18e8Smrg      case $arg in
4729c27c18e8Smrg      -all-static)
4730c27c18e8Smrg	if test -n "$link_static_flag"; then
4731c27c18e8Smrg	  # See comment for -static flag below, for more details.
4732c27c18e8Smrg	  func_append compile_command " $link_static_flag"
4733c27c18e8Smrg	  func_append finalize_command " $link_static_flag"
4734c43cc173Smrg	fi
4735c27c18e8Smrg	continue
4736c27c18e8Smrg	;;
4737c43cc173Smrg
4738c27c18e8Smrg      -allow-undefined)
4739c27c18e8Smrg	# FIXME: remove this flag sometime in the future.
4740c27c18e8Smrg	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
4741c27c18e8Smrg	;;
4742c43cc173Smrg
4743c27c18e8Smrg      -avoid-version)
4744c27c18e8Smrg	avoid_version=yes
4745c27c18e8Smrg	continue
4746c27c18e8Smrg	;;
4747c43cc173Smrg
474837eb1ca1Smrg      -bindir)
474937eb1ca1Smrg	prev=bindir
475037eb1ca1Smrg	continue
475137eb1ca1Smrg	;;
475237eb1ca1Smrg
4753c27c18e8Smrg      -dlopen)
4754c27c18e8Smrg	prev=dlfiles
4755c27c18e8Smrg	continue
4756c27c18e8Smrg	;;
4757c43cc173Smrg
4758c27c18e8Smrg      -dlpreopen)
4759c27c18e8Smrg	prev=dlprefiles
4760c27c18e8Smrg	continue
4761c27c18e8Smrg	;;
4762c43cc173Smrg
4763c27c18e8Smrg      -export-dynamic)
4764c27c18e8Smrg	export_dynamic=yes
4765c27c18e8Smrg	continue
4766c27c18e8Smrg	;;
4767c43cc173Smrg
4768c27c18e8Smrg      -export-symbols | -export-symbols-regex)
4769c27c18e8Smrg	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
4770c27c18e8Smrg	  func_fatal_error "more than one -exported-symbols argument is not allowed"
4771c27c18e8Smrg	fi
4772c27c18e8Smrg	if test "X$arg" = "X-export-symbols"; then
4773c27c18e8Smrg	  prev=expsyms
4774c43cc173Smrg	else
4775c27c18e8Smrg	  prev=expsyms_regex
4776c43cc173Smrg	fi
4777c27c18e8Smrg	continue
4778c27c18e8Smrg	;;
4779c43cc173Smrg
4780c27c18e8Smrg      -framework)
4781c27c18e8Smrg	prev=framework
4782c27c18e8Smrg	continue
4783c27c18e8Smrg	;;
4784c43cc173Smrg
4785c27c18e8Smrg      -inst-prefix-dir)
4786c27c18e8Smrg	prev=inst_prefix
4787c27c18e8Smrg	continue
4788c27c18e8Smrg	;;
4789c43cc173Smrg
4790c27c18e8Smrg      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
4791c27c18e8Smrg      # so, if we see these flags be careful not to treat them like -L
4792c27c18e8Smrg      -L[A-Z][A-Z]*:*)
4793c27c18e8Smrg	case $with_gcc/$host in
4794c27c18e8Smrg	no/*-*-irix* | /*-*-irix*)
4795c27c18e8Smrg	  func_append compile_command " $arg"
4796c27c18e8Smrg	  func_append finalize_command " $arg"
4797c27c18e8Smrg	  ;;
4798c27c18e8Smrg	esac
4799c27c18e8Smrg	continue
4800c27c18e8Smrg	;;
4801c43cc173Smrg
4802c27c18e8Smrg      -L*)
4803c27c18e8Smrg	func_stripname '-L' '' "$arg"
4804c27c18e8Smrg	dir=$func_stripname_result
4805c27c18e8Smrg	if test -z "$dir"; then
4806c27c18e8Smrg	  if test "$#" -gt 0; then
4807c27c18e8Smrg	    func_fatal_error "require no space between \`-L' and \`$1'"
4808c43cc173Smrg	  else
4809c27c18e8Smrg	    func_fatal_error "need path for \`-L' option"
4810c43cc173Smrg	  fi
4811c27c18e8Smrg	fi
4812c27c18e8Smrg	# We need an absolute path.
4813c27c18e8Smrg	case $dir in
4814c27c18e8Smrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
4815c27c18e8Smrg	*)
4816c27c18e8Smrg	  absdir=`cd "$dir" && pwd`
4817c27c18e8Smrg	  test -z "$absdir" && \
4818c27c18e8Smrg	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
4819c27c18e8Smrg	  dir="$absdir"
4820c27c18e8Smrg	  ;;
4821c43cc173Smrg	esac
4822c27c18e8Smrg	case "$deplibs " in
4823c27c18e8Smrg	*" -L$dir "*) ;;
4824c27c18e8Smrg	*)
4825c27c18e8Smrg	  deplibs="$deplibs -L$dir"
4826c27c18e8Smrg	  lib_search_path="$lib_search_path $dir"
4827c27c18e8Smrg	  ;;
4828c43cc173Smrg	esac
4829c43cc173Smrg	case $host in
4830c27c18e8Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
483137eb1ca1Smrg	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
4832c27c18e8Smrg	  case :$dllsearchpath: in
4833c27c18e8Smrg	  *":$dir:"*) ;;
4834c27c18e8Smrg	  ::) dllsearchpath=$dir;;
4835c27c18e8Smrg	  *) dllsearchpath="$dllsearchpath:$dir";;
4836c27c18e8Smrg	  esac
4837c27c18e8Smrg	  case :$dllsearchpath: in
4838c27c18e8Smrg	  *":$testbindir:"*) ;;
4839c27c18e8Smrg	  ::) dllsearchpath=$testbindir;;
4840c27c18e8Smrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
4841c27c18e8Smrg	  esac
4842c27c18e8Smrg	  ;;
4843c43cc173Smrg	esac
4844c27c18e8Smrg	continue
4845c27c18e8Smrg	;;
4846c43cc173Smrg
4847c27c18e8Smrg      -l*)
4848c27c18e8Smrg	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
4849c27c18e8Smrg	  case $host in
485037eb1ca1Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
4851c27c18e8Smrg	    # These systems don't actually have a C or math library (as such)
4852c27c18e8Smrg	    continue
4853c27c18e8Smrg	    ;;
4854c27c18e8Smrg	  *-*-os2*)
4855c27c18e8Smrg	    # These systems don't actually have a C library (as such)
4856c27c18e8Smrg	    test "X$arg" = "X-lc" && continue
4857c27c18e8Smrg	    ;;
4858c27c18e8Smrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
4859c27c18e8Smrg	    # Do not include libc due to us having libc/libc_r.
4860c27c18e8Smrg	    test "X$arg" = "X-lc" && continue
4861c27c18e8Smrg	    ;;
4862c27c18e8Smrg	  *-*-rhapsody* | *-*-darwin1.[012])
4863c27c18e8Smrg	    # Rhapsody C and math libraries are in the System framework
4864c27c18e8Smrg	    deplibs="$deplibs System.ltframework"
4865c27c18e8Smrg	    continue
4866c27c18e8Smrg	    ;;
4867c27c18e8Smrg	  *-*-sco3.2v5* | *-*-sco5v6*)
4868c27c18e8Smrg	    # Causes problems with __ctype
4869c27c18e8Smrg	    test "X$arg" = "X-lc" && continue
4870c27c18e8Smrg	    ;;
4871c27c18e8Smrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
4872c27c18e8Smrg	    # Compiler inserts libc in the correct place for threads to work
4873c27c18e8Smrg	    test "X$arg" = "X-lc" && continue
4874c27c18e8Smrg	    ;;
4875c27c18e8Smrg	  esac
4876c27c18e8Smrg	elif test "X$arg" = "X-lc_r"; then
4877c27c18e8Smrg	 case $host in
4878c27c18e8Smrg	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
4879c27c18e8Smrg	   # Do not include libc_r directly, use -pthread flag.
4880c27c18e8Smrg	   continue
4881c27c18e8Smrg	   ;;
4882c27c18e8Smrg	 esac
4883c27c18e8Smrg	fi
4884c27c18e8Smrg	deplibs="$deplibs $arg"
4885c27c18e8Smrg	continue
4886c27c18e8Smrg	;;
4887c43cc173Smrg
4888c27c18e8Smrg      -module)
4889c27c18e8Smrg	module=yes
4890c27c18e8Smrg	continue
4891c27c18e8Smrg	;;
4892c43cc173Smrg
4893c27c18e8Smrg      # Tru64 UNIX uses -model [arg] to determine the layout of C++
4894c27c18e8Smrg      # classes, name mangling, and exception handling.
4895c27c18e8Smrg      # Darwin uses the -arch flag to determine output architecture.
4896c27c18e8Smrg      -model|-arch|-isysroot)
4897c27c18e8Smrg	compiler_flags="$compiler_flags $arg"
4898c27c18e8Smrg	func_append compile_command " $arg"
4899c27c18e8Smrg	func_append finalize_command " $arg"
4900c27c18e8Smrg	prev=xcompiler
4901c27c18e8Smrg	continue
4902c27c18e8Smrg	;;
4903c43cc173Smrg
4904c27c18e8Smrg      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
4905c27c18e8Smrg	compiler_flags="$compiler_flags $arg"
4906c27c18e8Smrg	func_append compile_command " $arg"
4907c27c18e8Smrg	func_append finalize_command " $arg"
4908c27c18e8Smrg	case "$new_inherited_linker_flags " in
4909c27c18e8Smrg	    *" $arg "*) ;;
4910c27c18e8Smrg	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
4911c27c18e8Smrg	esac
4912c27c18e8Smrg	continue
4913c27c18e8Smrg	;;
4914c43cc173Smrg
4915c27c18e8Smrg      -multi_module)
4916c27c18e8Smrg	single_module="${wl}-multi_module"
4917c27c18e8Smrg	continue
4918c27c18e8Smrg	;;
4919c43cc173Smrg
4920c27c18e8Smrg      -no-fast-install)
4921c27c18e8Smrg	fast_install=no
4922c27c18e8Smrg	continue
4923c27c18e8Smrg	;;
4924c43cc173Smrg
4925c27c18e8Smrg      -no-install)
4926c27c18e8Smrg	case $host in
4927c27c18e8Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
4928c27c18e8Smrg	  # The PATH hackery in wrapper scripts is required on Windows
4929c27c18e8Smrg	  # and Darwin in order for the loader to find any dlls it needs.
4930c27c18e8Smrg	  func_warning "\`-no-install' is ignored for $host"
4931c27c18e8Smrg	  func_warning "assuming \`-no-fast-install' instead"
4932c27c18e8Smrg	  fast_install=no
4933c27c18e8Smrg	  ;;
4934c27c18e8Smrg	*) no_install=yes ;;
4935c27c18e8Smrg	esac
4936c27c18e8Smrg	continue
4937c27c18e8Smrg	;;
4938c43cc173Smrg
4939c27c18e8Smrg      -no-undefined)
4940c27c18e8Smrg	allow_undefined=no
4941c27c18e8Smrg	continue
4942c27c18e8Smrg	;;
4943c43cc173Smrg
4944c27c18e8Smrg      -objectlist)
4945c27c18e8Smrg	prev=objectlist
4946c27c18e8Smrg	continue
4947c27c18e8Smrg	;;
4948c43cc173Smrg
4949c27c18e8Smrg      -o) prev=output ;;
4950c43cc173Smrg
4951c27c18e8Smrg      -precious-files-regex)
4952c27c18e8Smrg	prev=precious_regex
4953c27c18e8Smrg	continue
4954c27c18e8Smrg	;;
4955c43cc173Smrg
4956c27c18e8Smrg      -release)
4957c27c18e8Smrg	prev=release
4958c27c18e8Smrg	continue
4959c27c18e8Smrg	;;
4960c43cc173Smrg
4961c27c18e8Smrg      -rpath)
4962c27c18e8Smrg	prev=rpath
4963c27c18e8Smrg	continue
4964c27c18e8Smrg	;;
4965c43cc173Smrg
4966c27c18e8Smrg      -R)
4967c27c18e8Smrg	prev=xrpath
4968c27c18e8Smrg	continue
4969c27c18e8Smrg	;;
4970c43cc173Smrg
4971c27c18e8Smrg      -R*)
4972c27c18e8Smrg	func_stripname '-R' '' "$arg"
4973c27c18e8Smrg	dir=$func_stripname_result
4974c27c18e8Smrg	# We need an absolute path.
4975c27c18e8Smrg	case $dir in
4976c27c18e8Smrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
4977c27c18e8Smrg	*)
4978c27c18e8Smrg	  func_fatal_error "only absolute run-paths are allowed"
4979c27c18e8Smrg	  ;;
4980c27c18e8Smrg	esac
4981c27c18e8Smrg	case "$xrpath " in
4982c27c18e8Smrg	*" $dir "*) ;;
4983c27c18e8Smrg	*) xrpath="$xrpath $dir" ;;
4984c27c18e8Smrg	esac
4985c27c18e8Smrg	continue
4986c27c18e8Smrg	;;
4987c43cc173Smrg
4988c27c18e8Smrg      -shared)
4989c27c18e8Smrg	# The effects of -shared are defined in a previous loop.
4990c27c18e8Smrg	continue
4991c27c18e8Smrg	;;
4992c43cc173Smrg
4993c27c18e8Smrg      -shrext)
4994c27c18e8Smrg	prev=shrext
4995c27c18e8Smrg	continue
4996c27c18e8Smrg	;;
4997c43cc173Smrg
4998c27c18e8Smrg      -static | -static-libtool-libs)
4999c27c18e8Smrg	# The effects of -static are defined in a previous loop.
5000c27c18e8Smrg	# We used to do the same as -all-static on platforms that
5001c27c18e8Smrg	# didn't have a PIC flag, but the assumption that the effects
5002c27c18e8Smrg	# would be equivalent was wrong.  It would break on at least
5003c27c18e8Smrg	# Digital Unix and AIX.
5004c27c18e8Smrg	continue
5005c27c18e8Smrg	;;
5006c43cc173Smrg
5007c27c18e8Smrg      -thread-safe)
5008c27c18e8Smrg	thread_safe=yes
5009c27c18e8Smrg	continue
5010c27c18e8Smrg	;;
5011c43cc173Smrg
5012c27c18e8Smrg      -version-info)
5013c27c18e8Smrg	prev=vinfo
5014c27c18e8Smrg	continue
5015c27c18e8Smrg	;;
5016c43cc173Smrg
5017c27c18e8Smrg      -version-number)
5018c27c18e8Smrg	prev=vinfo
5019c27c18e8Smrg	vinfo_number=yes
5020c27c18e8Smrg	continue
5021c27c18e8Smrg	;;
5022c43cc173Smrg
5023c27c18e8Smrg      -weak)
5024c27c18e8Smrg        prev=weak
5025c27c18e8Smrg	continue
5026c27c18e8Smrg	;;
5027c43cc173Smrg
5028c27c18e8Smrg      -Wc,*)
5029c27c18e8Smrg	func_stripname '-Wc,' '' "$arg"
5030c27c18e8Smrg	args=$func_stripname_result
5031c27c18e8Smrg	arg=
5032c27c18e8Smrg	save_ifs="$IFS"; IFS=','
5033c27c18e8Smrg	for flag in $args; do
5034c27c18e8Smrg	  IFS="$save_ifs"
5035c27c18e8Smrg          func_quote_for_eval "$flag"
503637eb1ca1Smrg	  arg="$arg $func_quote_for_eval_result"
5037c27c18e8Smrg	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
5038c27c18e8Smrg	done
5039c27c18e8Smrg	IFS="$save_ifs"
5040c27c18e8Smrg	func_stripname ' ' '' "$arg"
5041c27c18e8Smrg	arg=$func_stripname_result
5042c27c18e8Smrg	;;
5043c43cc173Smrg
5044c27c18e8Smrg      -Wl,*)
5045c27c18e8Smrg	func_stripname '-Wl,' '' "$arg"
5046c27c18e8Smrg	args=$func_stripname_result
5047c27c18e8Smrg	arg=
5048c27c18e8Smrg	save_ifs="$IFS"; IFS=','
5049c27c18e8Smrg	for flag in $args; do
5050c27c18e8Smrg	  IFS="$save_ifs"
5051c27c18e8Smrg          func_quote_for_eval "$flag"
5052c27c18e8Smrg	  arg="$arg $wl$func_quote_for_eval_result"
5053c27c18e8Smrg	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
5054c27c18e8Smrg	  linker_flags="$linker_flags $func_quote_for_eval_result"
5055c27c18e8Smrg	done
5056c27c18e8Smrg	IFS="$save_ifs"
5057c27c18e8Smrg	func_stripname ' ' '' "$arg"
5058c27c18e8Smrg	arg=$func_stripname_result
5059c27c18e8Smrg	;;
5060c43cc173Smrg
5061c27c18e8Smrg      -Xcompiler)
5062c27c18e8Smrg	prev=xcompiler
5063c27c18e8Smrg	continue
5064c27c18e8Smrg	;;
5065c43cc173Smrg
5066c27c18e8Smrg      -Xlinker)
5067c27c18e8Smrg	prev=xlinker
5068c27c18e8Smrg	continue
5069c27c18e8Smrg	;;
5070c43cc173Smrg
5071c27c18e8Smrg      -XCClinker)
5072c27c18e8Smrg	prev=xcclinker
5073c27c18e8Smrg	continue
5074c27c18e8Smrg	;;
5075c43cc173Smrg
5076c27c18e8Smrg      # -msg_* for osf cc
5077c27c18e8Smrg      -msg_*)
5078c27c18e8Smrg	func_quote_for_eval "$arg"
5079c27c18e8Smrg	arg="$func_quote_for_eval_result"
5080c27c18e8Smrg	;;
5081c43cc173Smrg
508237eb1ca1Smrg      # Flags to be passed through unchanged, with rationale:
508337eb1ca1Smrg      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
508437eb1ca1Smrg      # -r[0-9][0-9]*        specify processor for the SGI compiler
508537eb1ca1Smrg      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
508637eb1ca1Smrg      # +DA*, +DD*           enable 64-bit mode for the HP compiler
508737eb1ca1Smrg      # -q*                  compiler args for the IBM compiler
508837eb1ca1Smrg      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
508937eb1ca1Smrg      # -F/path              path to uninstalled frameworks, gcc on darwin
509037eb1ca1Smrg      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
509137eb1ca1Smrg      # @file                GCC response files
509237eb1ca1Smrg      # -tp=*                Portland pgcc target processor selection
5093c27c18e8Smrg      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
509437eb1ca1Smrg      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*)
5095c27c18e8Smrg        func_quote_for_eval "$arg"
5096c27c18e8Smrg	arg="$func_quote_for_eval_result"
5097c27c18e8Smrg        func_append compile_command " $arg"
5098c27c18e8Smrg        func_append finalize_command " $arg"
5099c27c18e8Smrg        compiler_flags="$compiler_flags $arg"
5100c27c18e8Smrg        continue
5101c27c18e8Smrg        ;;
5102c43cc173Smrg
5103c27c18e8Smrg      # Some other compiler flag.
5104c27c18e8Smrg      -* | +*)
5105c27c18e8Smrg        func_quote_for_eval "$arg"
5106c27c18e8Smrg	arg="$func_quote_for_eval_result"
5107c27c18e8Smrg	;;
5108c43cc173Smrg
5109c27c18e8Smrg      *.$objext)
5110c27c18e8Smrg	# A standard object.
5111c27c18e8Smrg	objs="$objs $arg"
5112c27c18e8Smrg	;;
5113c43cc173Smrg
5114c27c18e8Smrg      *.lo)
5115c27c18e8Smrg	# A libtool-controlled object.
5116c43cc173Smrg
5117c27c18e8Smrg	# Check to see that this really is a libtool object.
5118c27c18e8Smrg	if func_lalib_unsafe_p "$arg"; then
5119c27c18e8Smrg	  pic_object=
5120c27c18e8Smrg	  non_pic_object=
5121c43cc173Smrg
5122c27c18e8Smrg	  # Read the .lo file
5123c27c18e8Smrg	  func_source "$arg"
5124c43cc173Smrg
5125c27c18e8Smrg	  if test -z "$pic_object" ||
5126c27c18e8Smrg	     test -z "$non_pic_object" ||
5127c27c18e8Smrg	     test "$pic_object" = none &&
5128c27c18e8Smrg	     test "$non_pic_object" = none; then
5129c27c18e8Smrg	    func_fatal_error "cannot find name of object for \`$arg'"
5130c27c18e8Smrg	  fi
5131c43cc173Smrg
5132c27c18e8Smrg	  # Extract subdirectory from the argument.
5133c27c18e8Smrg	  func_dirname "$arg" "/" ""
5134c27c18e8Smrg	  xdir="$func_dirname_result"
5135c43cc173Smrg
5136c27c18e8Smrg	  if test "$pic_object" != none; then
5137c27c18e8Smrg	    # Prepend the subdirectory the object is found in.
5138c27c18e8Smrg	    pic_object="$xdir$pic_object"
5139c43cc173Smrg
5140c27c18e8Smrg	    if test "$prev" = dlfiles; then
5141c27c18e8Smrg	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5142c27c18e8Smrg		dlfiles="$dlfiles $pic_object"
5143c27c18e8Smrg		prev=
5144c27c18e8Smrg		continue
5145c27c18e8Smrg	      else
5146c27c18e8Smrg		# If libtool objects are unsupported, then we need to preload.
5147c27c18e8Smrg		prev=dlprefiles
5148c27c18e8Smrg	      fi
5149c27c18e8Smrg	    fi
5150c43cc173Smrg
5151c27c18e8Smrg	    # CHECK ME:  I think I busted this.  -Ossama
5152c27c18e8Smrg	    if test "$prev" = dlprefiles; then
5153c27c18e8Smrg	      # Preload the old-style object.
5154c27c18e8Smrg	      dlprefiles="$dlprefiles $pic_object"
5155c27c18e8Smrg	      prev=
5156c27c18e8Smrg	    fi
5157c43cc173Smrg
5158c27c18e8Smrg	    # A PIC object.
5159c27c18e8Smrg	    func_append libobjs " $pic_object"
5160c27c18e8Smrg	    arg="$pic_object"
5161c27c18e8Smrg	  fi
5162c43cc173Smrg
5163c27c18e8Smrg	  # Non-PIC object.
5164c27c18e8Smrg	  if test "$non_pic_object" != none; then
5165c27c18e8Smrg	    # Prepend the subdirectory the object is found in.
5166c27c18e8Smrg	    non_pic_object="$xdir$non_pic_object"
5167c43cc173Smrg
5168c27c18e8Smrg	    # A standard non-PIC object
5169c27c18e8Smrg	    func_append non_pic_objects " $non_pic_object"
5170c27c18e8Smrg	    if test -z "$pic_object" || test "$pic_object" = none ; then
5171c27c18e8Smrg	      arg="$non_pic_object"
5172c27c18e8Smrg	    fi
5173c27c18e8Smrg	  else
5174c27c18e8Smrg	    # If the PIC object exists, use it instead.
5175c27c18e8Smrg	    # $xdir was prepended to $pic_object above.
5176c27c18e8Smrg	    non_pic_object="$pic_object"
5177c27c18e8Smrg	    func_append non_pic_objects " $non_pic_object"
5178c27c18e8Smrg	  fi
5179c27c18e8Smrg	else
5180c27c18e8Smrg	  # Only an error if not doing a dry-run.
5181c27c18e8Smrg	  if $opt_dry_run; then
5182c27c18e8Smrg	    # Extract subdirectory from the argument.
5183c27c18e8Smrg	    func_dirname "$arg" "/" ""
5184c27c18e8Smrg	    xdir="$func_dirname_result"
5185c27c18e8Smrg
5186c27c18e8Smrg	    func_lo2o "$arg"
5187c27c18e8Smrg	    pic_object=$xdir$objdir/$func_lo2o_result
5188c27c18e8Smrg	    non_pic_object=$xdir$func_lo2o_result
5189c27c18e8Smrg	    func_append libobjs " $pic_object"
5190c27c18e8Smrg	    func_append non_pic_objects " $non_pic_object"
5191c27c18e8Smrg	  else
5192c27c18e8Smrg	    func_fatal_error "\`$arg' is not a valid libtool object"
5193c27c18e8Smrg	  fi
5194c27c18e8Smrg	fi
5195c27c18e8Smrg	;;
5196c43cc173Smrg
5197c27c18e8Smrg      *.$libext)
5198c27c18e8Smrg	# An archive.
5199c27c18e8Smrg	deplibs="$deplibs $arg"
5200c27c18e8Smrg	old_deplibs="$old_deplibs $arg"
5201c27c18e8Smrg	continue
5202c27c18e8Smrg	;;
5203c43cc173Smrg
5204c27c18e8Smrg      *.la)
5205c27c18e8Smrg	# A libtool-controlled library.
5206c43cc173Smrg
5207c27c18e8Smrg	if test "$prev" = dlfiles; then
5208c27c18e8Smrg	  # This library was specified with -dlopen.
5209c27c18e8Smrg	  dlfiles="$dlfiles $arg"
5210c27c18e8Smrg	  prev=
5211c27c18e8Smrg	elif test "$prev" = dlprefiles; then
5212c27c18e8Smrg	  # The library was specified with -dlpreopen.
5213c27c18e8Smrg	  dlprefiles="$dlprefiles $arg"
5214c27c18e8Smrg	  prev=
5215c27c18e8Smrg	else
5216c27c18e8Smrg	  deplibs="$deplibs $arg"
5217c27c18e8Smrg	fi
5218c27c18e8Smrg	continue
5219c27c18e8Smrg	;;
5220c43cc173Smrg
5221c27c18e8Smrg      # Some other compiler argument.
5222c27c18e8Smrg      *)
5223c27c18e8Smrg	# Unknown arguments in both finalize_command and compile_command need
5224c27c18e8Smrg	# to be aesthetically quoted because they are evaled later.
5225c27c18e8Smrg	func_quote_for_eval "$arg"
5226c27c18e8Smrg	arg="$func_quote_for_eval_result"
5227c27c18e8Smrg	;;
5228c27c18e8Smrg      esac # arg
5229c43cc173Smrg
5230c27c18e8Smrg      # Now actually substitute the argument into the commands.
5231c27c18e8Smrg      if test -n "$arg"; then
5232c27c18e8Smrg	func_append compile_command " $arg"
5233c27c18e8Smrg	func_append finalize_command " $arg"
5234c27c18e8Smrg      fi
5235c27c18e8Smrg    done # argument parsing loop
523621e67964Smrg
5237c27c18e8Smrg    test -n "$prev" && \
5238c27c18e8Smrg      func_fatal_help "the \`$prevarg' option requires an argument"
5239c43cc173Smrg
5240c27c18e8Smrg    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
5241c27c18e8Smrg      eval arg=\"$export_dynamic_flag_spec\"
5242c27c18e8Smrg      func_append compile_command " $arg"
5243c27c18e8Smrg      func_append finalize_command " $arg"
5244c27c18e8Smrg    fi
5245c43cc173Smrg
5246c27c18e8Smrg    oldlibs=
5247c27c18e8Smrg    # calculate the name of the file, without its directory
5248c27c18e8Smrg    func_basename "$output"
5249c27c18e8Smrg    outputname="$func_basename_result"
5250c27c18e8Smrg    libobjs_save="$libobjs"
5251c27c18e8Smrg
5252c27c18e8Smrg    if test -n "$shlibpath_var"; then
5253c27c18e8Smrg      # get the directories listed in $shlibpath_var
525437eb1ca1Smrg      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
5255c43cc173Smrg    else
5256c27c18e8Smrg      shlib_search_path=
5257c43cc173Smrg    fi
5258c27c18e8Smrg    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
5259c27c18e8Smrg    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
5260c43cc173Smrg
5261c27c18e8Smrg    func_dirname "$output" "/" ""
5262c27c18e8Smrg    output_objdir="$func_dirname_result$objdir"
5263c27c18e8Smrg    # Create the object directory.
5264c27c18e8Smrg    func_mkdir_p "$output_objdir"
5265c43cc173Smrg
5266c27c18e8Smrg    # Determine the type of output
5267c27c18e8Smrg    case $output in
5268c27c18e8Smrg    "")
5269c27c18e8Smrg      func_fatal_help "you must specify an output file"
5270c27c18e8Smrg      ;;
5271c27c18e8Smrg    *.$libext) linkmode=oldlib ;;
5272c27c18e8Smrg    *.lo | *.$objext) linkmode=obj ;;
5273c27c18e8Smrg    *.la) linkmode=lib ;;
5274c27c18e8Smrg    *) linkmode=prog ;; # Anything else should be a program.
5275c27c18e8Smrg    esac
5276c27c18e8Smrg
5277c27c18e8Smrg    specialdeplibs=
5278c27c18e8Smrg
5279c27c18e8Smrg    libs=
5280c27c18e8Smrg    # Find all interdependent deplibs by searching for libraries
5281c27c18e8Smrg    # that are linked more than once (e.g. -la -lb -la)
5282c27c18e8Smrg    for deplib in $deplibs; do
5283c27c18e8Smrg      if $opt_duplicate_deps ; then
5284c27c18e8Smrg	case "$libs " in
5285c27c18e8Smrg	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5286c27c18e8Smrg	esac
5287c27c18e8Smrg      fi
5288c27c18e8Smrg      libs="$libs $deplib"
5289c27c18e8Smrg    done
5290c27c18e8Smrg
5291c27c18e8Smrg    if test "$linkmode" = lib; then
5292c27c18e8Smrg      libs="$predeps $libs $compiler_lib_search_path $postdeps"
5293c27c18e8Smrg
5294c27c18e8Smrg      # Compute libraries that are listed more than once in $predeps
5295c27c18e8Smrg      # $postdeps and mark them as special (i.e., whose duplicates are
5296c27c18e8Smrg      # not to be eliminated).
5297c27c18e8Smrg      pre_post_deps=
5298c27c18e8Smrg      if $opt_duplicate_compiler_generated_deps; then
5299c27c18e8Smrg	for pre_post_dep in $predeps $postdeps; do
5300c27c18e8Smrg	  case "$pre_post_deps " in
5301c27c18e8Smrg	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
5302c27c18e8Smrg	  esac
5303c27c18e8Smrg	  pre_post_deps="$pre_post_deps $pre_post_dep"
5304c27c18e8Smrg	done
5305c27c18e8Smrg      fi
5306c27c18e8Smrg      pre_post_deps=
5307c27c18e8Smrg    fi
5308c27c18e8Smrg
5309c27c18e8Smrg    deplibs=
5310c27c18e8Smrg    newdependency_libs=
5311c27c18e8Smrg    newlib_search_path=
5312c27c18e8Smrg    need_relink=no # whether we're linking any uninstalled libtool libraries
5313c27c18e8Smrg    notinst_deplibs= # not-installed libtool libraries
5314c27c18e8Smrg    notinst_path= # paths that contain not-installed libtool libraries
5315c27c18e8Smrg
5316c27c18e8Smrg    case $linkmode in
5317c27c18e8Smrg    lib)
5318c27c18e8Smrg	passes="conv dlpreopen link"
5319c27c18e8Smrg	for file in $dlfiles $dlprefiles; do
5320c27c18e8Smrg	  case $file in
5321c27c18e8Smrg	  *.la) ;;
5322c27c18e8Smrg	  *)
5323c27c18e8Smrg	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
5324c27c18e8Smrg	    ;;
5325c27c18e8Smrg	  esac
5326c27c18e8Smrg	done
5327c27c18e8Smrg	;;
5328c27c18e8Smrg    prog)
5329c27c18e8Smrg	compile_deplibs=
5330c27c18e8Smrg	finalize_deplibs=
5331c27c18e8Smrg	alldeplibs=no
5332c27c18e8Smrg	newdlfiles=
5333c27c18e8Smrg	newdlprefiles=
5334c27c18e8Smrg	passes="conv scan dlopen dlpreopen link"
5335c27c18e8Smrg	;;
5336c27c18e8Smrg    *)  passes="conv"
5337c27c18e8Smrg	;;
5338c27c18e8Smrg    esac
5339c27c18e8Smrg
5340c27c18e8Smrg    for pass in $passes; do
5341c27c18e8Smrg      # The preopen pass in lib mode reverses $deplibs; put it back here
5342c27c18e8Smrg      # so that -L comes before libs that need it for instance...
5343c27c18e8Smrg      if test "$linkmode,$pass" = "lib,link"; then
5344c27c18e8Smrg	## FIXME: Find the place where the list is rebuilt in the wrong
5345c27c18e8Smrg	##        order, and fix it there properly
5346c27c18e8Smrg        tmp_deplibs=
5347c27c18e8Smrg	for deplib in $deplibs; do
5348c27c18e8Smrg	  tmp_deplibs="$deplib $tmp_deplibs"
5349c27c18e8Smrg	done
5350c27c18e8Smrg	deplibs="$tmp_deplibs"
5351c27c18e8Smrg      fi
5352c27c18e8Smrg
5353c27c18e8Smrg      if test "$linkmode,$pass" = "lib,link" ||
5354c27c18e8Smrg	 test "$linkmode,$pass" = "prog,scan"; then
5355c27c18e8Smrg	libs="$deplibs"
5356c27c18e8Smrg	deplibs=
5357c27c18e8Smrg      fi
5358c27c18e8Smrg      if test "$linkmode" = prog; then
5359c27c18e8Smrg	case $pass in
5360c27c18e8Smrg	dlopen) libs="$dlfiles" ;;
5361c27c18e8Smrg	dlpreopen) libs="$dlprefiles" ;;
5362c27c18e8Smrg	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
5363c27c18e8Smrg	esac
5364c27c18e8Smrg      fi
5365c27c18e8Smrg      if test "$linkmode,$pass" = "lib,dlpreopen"; then
5366c27c18e8Smrg	# Collect and forward deplibs of preopened libtool libs
5367c27c18e8Smrg	for lib in $dlprefiles; do
5368c27c18e8Smrg	  # Ignore non-libtool-libs
5369c27c18e8Smrg	  dependency_libs=
5370c27c18e8Smrg	  case $lib in
5371c27c18e8Smrg	  *.la)	func_source "$lib" ;;
5372c27c18e8Smrg	  esac
5373c27c18e8Smrg
5374c27c18e8Smrg	  # Collect preopened libtool deplibs, except any this library
5375c27c18e8Smrg	  # has declared as weak libs
5376c27c18e8Smrg	  for deplib in $dependency_libs; do
537737eb1ca1Smrg	    func_basename "$deplib"
537837eb1ca1Smrg            deplib_base=$func_basename_result
5379c27c18e8Smrg	    case " $weak_libs " in
5380c27c18e8Smrg	    *" $deplib_base "*) ;;
5381c27c18e8Smrg	    *) deplibs="$deplibs $deplib" ;;
5382c27c18e8Smrg	    esac
5383c27c18e8Smrg	  done
5384c27c18e8Smrg	done
5385c27c18e8Smrg	libs="$dlprefiles"
5386c27c18e8Smrg      fi
5387c27c18e8Smrg      if test "$pass" = dlopen; then
5388c27c18e8Smrg	# Collect dlpreopened libraries
5389c27c18e8Smrg	save_deplibs="$deplibs"
5390c27c18e8Smrg	deplibs=
5391c27c18e8Smrg      fi
5392c27c18e8Smrg
5393c27c18e8Smrg      for deplib in $libs; do
5394c27c18e8Smrg	lib=
5395c27c18e8Smrg	found=no
5396c27c18e8Smrg	case $deplib in
5397c27c18e8Smrg	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
5398c27c18e8Smrg	  if test "$linkmode,$pass" = "prog,link"; then
5399c27c18e8Smrg	    compile_deplibs="$deplib $compile_deplibs"
5400c27c18e8Smrg	    finalize_deplibs="$deplib $finalize_deplibs"
5401c27c18e8Smrg	  else
5402c27c18e8Smrg	    compiler_flags="$compiler_flags $deplib"
5403c27c18e8Smrg	    if test "$linkmode" = lib ; then
5404c27c18e8Smrg		case "$new_inherited_linker_flags " in
5405c27c18e8Smrg		    *" $deplib "*) ;;
5406c27c18e8Smrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
5407c27c18e8Smrg		esac
5408c27c18e8Smrg	    fi
5409c27c18e8Smrg	  fi
5410c27c18e8Smrg	  continue
5411c27c18e8Smrg	  ;;
5412c27c18e8Smrg	-l*)
5413c27c18e8Smrg	  if test "$linkmode" != lib && test "$linkmode" != prog; then
5414c27c18e8Smrg	    func_warning "\`-l' is ignored for archives/objects"
5415c27c18e8Smrg	    continue
5416c27c18e8Smrg	  fi
5417c27c18e8Smrg	  func_stripname '-l' '' "$deplib"
5418c27c18e8Smrg	  name=$func_stripname_result
5419c27c18e8Smrg	  if test "$linkmode" = lib; then
5420c27c18e8Smrg	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
5421c27c18e8Smrg	  else
5422c27c18e8Smrg	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
5423c27c18e8Smrg	  fi
5424c27c18e8Smrg	  for searchdir in $searchdirs; do
5425c27c18e8Smrg	    for search_ext in .la $std_shrext .so .a; do
5426c27c18e8Smrg	      # Search the libtool library
5427c27c18e8Smrg	      lib="$searchdir/lib${name}${search_ext}"
5428c27c18e8Smrg	      if test -f "$lib"; then
5429c27c18e8Smrg		if test "$search_ext" = ".la"; then
5430c27c18e8Smrg		  found=yes
5431c27c18e8Smrg		else
5432c27c18e8Smrg		  found=no
5433c27c18e8Smrg		fi
5434c27c18e8Smrg		break 2
5435c27c18e8Smrg	      fi
5436c27c18e8Smrg	    done
5437c27c18e8Smrg	  done
5438c27c18e8Smrg	  if test "$found" != yes; then
5439c27c18e8Smrg	    # deplib doesn't seem to be a libtool library
5440c27c18e8Smrg	    if test "$linkmode,$pass" = "prog,link"; then
5441c27c18e8Smrg	      compile_deplibs="$deplib $compile_deplibs"
5442c27c18e8Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
5443c27c18e8Smrg	    else
5444c27c18e8Smrg	      deplibs="$deplib $deplibs"
5445c27c18e8Smrg	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
5446c27c18e8Smrg	    fi
5447c27c18e8Smrg	    continue
5448c27c18e8Smrg	  else # deplib is a libtool library
5449c27c18e8Smrg	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
5450c27c18e8Smrg	    # We need to do some special things here, and not later.
5451c27c18e8Smrg	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
5452c27c18e8Smrg	      case " $predeps $postdeps " in
5453c27c18e8Smrg	      *" $deplib "*)
5454c27c18e8Smrg		if func_lalib_p "$lib"; then
5455c27c18e8Smrg		  library_names=
5456c27c18e8Smrg		  old_library=
5457c27c18e8Smrg		  func_source "$lib"
5458c27c18e8Smrg		  for l in $old_library $library_names; do
5459c27c18e8Smrg		    ll="$l"
5460c27c18e8Smrg		  done
5461c27c18e8Smrg		  if test "X$ll" = "X$old_library" ; then # only static version available
5462c27c18e8Smrg		    found=no
5463c27c18e8Smrg		    func_dirname "$lib" "" "."
5464c27c18e8Smrg		    ladir="$func_dirname_result"
5465c27c18e8Smrg		    lib=$ladir/$old_library
5466c27c18e8Smrg		    if test "$linkmode,$pass" = "prog,link"; then
5467c27c18e8Smrg		      compile_deplibs="$deplib $compile_deplibs"
5468c27c18e8Smrg		      finalize_deplibs="$deplib $finalize_deplibs"
5469c27c18e8Smrg		    else
5470c27c18e8Smrg		      deplibs="$deplib $deplibs"
5471c27c18e8Smrg		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
5472c27c18e8Smrg		    fi
5473c27c18e8Smrg		    continue
5474c27c18e8Smrg		  fi
5475c27c18e8Smrg		fi
5476c27c18e8Smrg		;;
5477c27c18e8Smrg	      *) ;;
5478c27c18e8Smrg	      esac
5479c27c18e8Smrg	    fi
5480c27c18e8Smrg	  fi
5481c27c18e8Smrg	  ;; # -l
5482c27c18e8Smrg	*.ltframework)
5483c27c18e8Smrg	  if test "$linkmode,$pass" = "prog,link"; then
5484c27c18e8Smrg	    compile_deplibs="$deplib $compile_deplibs"
5485c27c18e8Smrg	    finalize_deplibs="$deplib $finalize_deplibs"
5486c27c18e8Smrg	  else
5487c27c18e8Smrg	    deplibs="$deplib $deplibs"
5488c27c18e8Smrg	    if test "$linkmode" = lib ; then
5489c27c18e8Smrg		case "$new_inherited_linker_flags " in
5490c27c18e8Smrg		    *" $deplib "*) ;;
5491c27c18e8Smrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
5492c27c18e8Smrg		esac
5493c27c18e8Smrg	    fi
5494c27c18e8Smrg	  fi
5495c27c18e8Smrg	  continue
5496c27c18e8Smrg	  ;;
5497c27c18e8Smrg	-L*)
5498c27c18e8Smrg	  case $linkmode in
5499c27c18e8Smrg	  lib)
5500c27c18e8Smrg	    deplibs="$deplib $deplibs"
5501c27c18e8Smrg	    test "$pass" = conv && continue
5502c27c18e8Smrg	    newdependency_libs="$deplib $newdependency_libs"
5503c27c18e8Smrg	    func_stripname '-L' '' "$deplib"
5504c27c18e8Smrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
5505c27c18e8Smrg	    ;;
5506c27c18e8Smrg	  prog)
5507c27c18e8Smrg	    if test "$pass" = conv; then
5508c27c18e8Smrg	      deplibs="$deplib $deplibs"
5509c27c18e8Smrg	      continue
5510c27c18e8Smrg	    fi
5511c27c18e8Smrg	    if test "$pass" = scan; then
5512c27c18e8Smrg	      deplibs="$deplib $deplibs"
5513c27c18e8Smrg	    else
5514c27c18e8Smrg	      compile_deplibs="$deplib $compile_deplibs"
5515c27c18e8Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
5516c27c18e8Smrg	    fi
5517c27c18e8Smrg	    func_stripname '-L' '' "$deplib"
5518c27c18e8Smrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
5519c27c18e8Smrg	    ;;
5520c27c18e8Smrg	  *)
5521c27c18e8Smrg	    func_warning "\`-L' is ignored for archives/objects"
5522c27c18e8Smrg	    ;;
5523c27c18e8Smrg	  esac # linkmode
5524c27c18e8Smrg	  continue
5525c27c18e8Smrg	  ;; # -L
5526c27c18e8Smrg	-R*)
5527c27c18e8Smrg	  if test "$pass" = link; then
5528c27c18e8Smrg	    func_stripname '-R' '' "$deplib"
5529c27c18e8Smrg	    dir=$func_stripname_result
5530c27c18e8Smrg	    # Make sure the xrpath contains only unique directories.
5531c27c18e8Smrg	    case "$xrpath " in
5532c27c18e8Smrg	    *" $dir "*) ;;
5533c27c18e8Smrg	    *) xrpath="$xrpath $dir" ;;
5534c27c18e8Smrg	    esac
5535c27c18e8Smrg	  fi
5536c27c18e8Smrg	  deplibs="$deplib $deplibs"
5537c27c18e8Smrg	  continue
5538c27c18e8Smrg	  ;;
5539c27c18e8Smrg	*.la) lib="$deplib" ;;
5540c27c18e8Smrg	*.$libext)
5541c27c18e8Smrg	  if test "$pass" = conv; then
5542c27c18e8Smrg	    deplibs="$deplib $deplibs"
5543c27c18e8Smrg	    continue
5544c27c18e8Smrg	  fi
5545c27c18e8Smrg	  case $linkmode in
5546c27c18e8Smrg	  lib)
5547c27c18e8Smrg	    # Linking convenience modules into shared libraries is allowed,
5548c27c18e8Smrg	    # but linking other static libraries is non-portable.
5549c27c18e8Smrg	    case " $dlpreconveniencelibs " in
5550c27c18e8Smrg	    *" $deplib "*) ;;
5551c27c18e8Smrg	    *)
5552c27c18e8Smrg	      valid_a_lib=no
5553c27c18e8Smrg	      case $deplibs_check_method in
5554c27c18e8Smrg		match_pattern*)
5555c27c18e8Smrg		  set dummy $deplibs_check_method; shift
5556c27c18e8Smrg		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
555737eb1ca1Smrg		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
5558c27c18e8Smrg		    | $EGREP "$match_pattern_regex" > /dev/null; then
5559c27c18e8Smrg		    valid_a_lib=yes
5560c27c18e8Smrg		  fi
5561c27c18e8Smrg		;;
5562c27c18e8Smrg		pass_all)
5563c27c18e8Smrg		  valid_a_lib=yes
5564c27c18e8Smrg		;;
5565c27c18e8Smrg	      esac
5566c27c18e8Smrg	      if test "$valid_a_lib" != yes; then
556737eb1ca1Smrg		echo
5568c27c18e8Smrg		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
556937eb1ca1Smrg		echo "*** I have the capability to make that library automatically link in when"
557037eb1ca1Smrg		echo "*** you link to this library.  But I can only do this if you have a"
557137eb1ca1Smrg		echo "*** shared version of the library, which you do not appear to have"
557237eb1ca1Smrg		echo "*** because the file extensions .$libext of this argument makes me believe"
557337eb1ca1Smrg		echo "*** that it is just a static archive that I should not use here."
5574c27c18e8Smrg	      else
557537eb1ca1Smrg		echo
5576c27c18e8Smrg		$ECHO "*** Warning: Linking the shared library $output against the"
5577c27c18e8Smrg		$ECHO "*** static library $deplib is not portable!"
5578c27c18e8Smrg		deplibs="$deplib $deplibs"
5579c27c18e8Smrg	      fi
5580c27c18e8Smrg	      ;;
5581c27c18e8Smrg	    esac
5582c27c18e8Smrg	    continue
5583c27c18e8Smrg	    ;;
5584c27c18e8Smrg	  prog)
5585c27c18e8Smrg	    if test "$pass" != link; then
5586c27c18e8Smrg	      deplibs="$deplib $deplibs"
5587c27c18e8Smrg	    else
5588c27c18e8Smrg	      compile_deplibs="$deplib $compile_deplibs"
5589c27c18e8Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
5590c27c18e8Smrg	    fi
5591c27c18e8Smrg	    continue
5592c27c18e8Smrg	    ;;
5593c27c18e8Smrg	  esac # linkmode
5594c27c18e8Smrg	  ;; # *.$libext
5595c27c18e8Smrg	*.lo | *.$objext)
5596c27c18e8Smrg	  if test "$pass" = conv; then
5597c27c18e8Smrg	    deplibs="$deplib $deplibs"
5598c27c18e8Smrg	  elif test "$linkmode" = prog; then
5599c27c18e8Smrg	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
5600c27c18e8Smrg	      # If there is no dlopen support or we're linking statically,
5601c27c18e8Smrg	      # we need to preload.
5602c27c18e8Smrg	      newdlprefiles="$newdlprefiles $deplib"
5603c27c18e8Smrg	      compile_deplibs="$deplib $compile_deplibs"
5604c27c18e8Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
5605c27c18e8Smrg	    else
5606c27c18e8Smrg	      newdlfiles="$newdlfiles $deplib"
5607c27c18e8Smrg	    fi
5608c27c18e8Smrg	  fi
5609c27c18e8Smrg	  continue
5610c27c18e8Smrg	  ;;
5611c27c18e8Smrg	%DEPLIBS%)
5612c27c18e8Smrg	  alldeplibs=yes
5613c27c18e8Smrg	  continue
5614c27c18e8Smrg	  ;;
5615c27c18e8Smrg	esac # case $deplib
5616c27c18e8Smrg
5617c27c18e8Smrg	if test "$found" = yes || test -f "$lib"; then :
5618c27c18e8Smrg	else
5619c27c18e8Smrg	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
5620c27c18e8Smrg	fi
5621c27c18e8Smrg
5622c27c18e8Smrg	# Check to see that this really is a libtool archive.
5623c27c18e8Smrg	func_lalib_unsafe_p "$lib" \
5624c27c18e8Smrg	  || func_fatal_error "\`$lib' is not a valid libtool archive"
5625c27c18e8Smrg
5626c27c18e8Smrg	func_dirname "$lib" "" "."
5627c27c18e8Smrg	ladir="$func_dirname_result"
5628c27c18e8Smrg
5629c27c18e8Smrg	dlname=
5630c27c18e8Smrg	dlopen=
5631c27c18e8Smrg	dlpreopen=
5632c27c18e8Smrg	libdir=
5633c27c18e8Smrg	library_names=
5634c27c18e8Smrg	old_library=
5635c27c18e8Smrg	inherited_linker_flags=
5636c27c18e8Smrg	# If the library was installed with an old release of libtool,
5637c27c18e8Smrg	# it will not redefine variables installed, or shouldnotlink
5638c27c18e8Smrg	installed=yes
5639c27c18e8Smrg	shouldnotlink=no
5640c27c18e8Smrg	avoidtemprpath=
5641c27c18e8Smrg
5642c27c18e8Smrg
5643c27c18e8Smrg	# Read the .la file
5644c27c18e8Smrg	func_source "$lib"
5645c27c18e8Smrg
5646c27c18e8Smrg	# Convert "-framework foo" to "foo.ltframework"
5647c27c18e8Smrg	if test -n "$inherited_linker_flags"; then
564837eb1ca1Smrg	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
5649c27c18e8Smrg	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
5650c27c18e8Smrg	    case " $new_inherited_linker_flags " in
5651c27c18e8Smrg	      *" $tmp_inherited_linker_flag "*) ;;
5652c27c18e8Smrg	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
5653c27c18e8Smrg	    esac
5654c27c18e8Smrg	  done
5655c27c18e8Smrg	fi
565637eb1ca1Smrg	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
5657c27c18e8Smrg	if test "$linkmode,$pass" = "lib,link" ||
5658c27c18e8Smrg	   test "$linkmode,$pass" = "prog,scan" ||
5659c27c18e8Smrg	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
5660c27c18e8Smrg	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
5661c27c18e8Smrg	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
5662c27c18e8Smrg	fi
5663c27c18e8Smrg
5664c27c18e8Smrg	if test "$pass" = conv; then
5665c27c18e8Smrg	  # Only check for convenience libraries
5666c27c18e8Smrg	  deplibs="$lib $deplibs"
5667c27c18e8Smrg	  if test -z "$libdir"; then
5668c27c18e8Smrg	    if test -z "$old_library"; then
5669c27c18e8Smrg	      func_fatal_error "cannot find name of link library for \`$lib'"
5670c27c18e8Smrg	    fi
5671c27c18e8Smrg	    # It is a libtool convenience library, so add in its objects.
5672c27c18e8Smrg	    convenience="$convenience $ladir/$objdir/$old_library"
5673c27c18e8Smrg	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
5674c27c18e8Smrg	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
5675c27c18e8Smrg	    func_fatal_error "\`$lib' is not a convenience library"
5676c27c18e8Smrg	  fi
5677c27c18e8Smrg	  tmp_libs=
5678c27c18e8Smrg	  for deplib in $dependency_libs; do
5679c27c18e8Smrg	    deplibs="$deplib $deplibs"
5680c27c18e8Smrg	    if $opt_duplicate_deps ; then
5681c27c18e8Smrg	      case "$tmp_libs " in
5682c27c18e8Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5683c27c18e8Smrg	      esac
5684c27c18e8Smrg	    fi
5685c27c18e8Smrg	    tmp_libs="$tmp_libs $deplib"
5686c27c18e8Smrg	  done
5687c27c18e8Smrg	  continue
5688c27c18e8Smrg	fi # $pass = conv
5689c27c18e8Smrg
5690c27c18e8Smrg
5691c27c18e8Smrg	# Get the name of the library we link against.
5692c27c18e8Smrg	linklib=
5693c27c18e8Smrg	for l in $old_library $library_names; do
5694c27c18e8Smrg	  linklib="$l"
5695c27c18e8Smrg	done
5696c27c18e8Smrg	if test -z "$linklib"; then
5697c27c18e8Smrg	  func_fatal_error "cannot find name of link library for \`$lib'"
5698c27c18e8Smrg	fi
5699c27c18e8Smrg
5700c27c18e8Smrg	# This library was specified with -dlopen.
5701c27c18e8Smrg	if test "$pass" = dlopen; then
5702c27c18e8Smrg	  if test -z "$libdir"; then
5703c27c18e8Smrg	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
5704c27c18e8Smrg	  fi
5705c27c18e8Smrg	  if test -z "$dlname" ||
5706c27c18e8Smrg	     test "$dlopen_support" != yes ||
5707c27c18e8Smrg	     test "$build_libtool_libs" = no; then
5708c27c18e8Smrg	    # If there is no dlname, no dlopen support or we're linking
5709c27c18e8Smrg	    # statically, we need to preload.  We also need to preload any
5710c27c18e8Smrg	    # dependent libraries so libltdl's deplib preloader doesn't
5711c27c18e8Smrg	    # bomb out in the load deplibs phase.
5712c27c18e8Smrg	    dlprefiles="$dlprefiles $lib $dependency_libs"
5713c27c18e8Smrg	  else
5714c27c18e8Smrg	    newdlfiles="$newdlfiles $lib"
5715c27c18e8Smrg	  fi
5716c27c18e8Smrg	  continue
5717c27c18e8Smrg	fi # $pass = dlopen
5718c27c18e8Smrg
5719c27c18e8Smrg	# We need an absolute path.
5720c27c18e8Smrg	case $ladir in
5721c27c18e8Smrg	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
5722c27c18e8Smrg	*)
5723c27c18e8Smrg	  abs_ladir=`cd "$ladir" && pwd`
5724c27c18e8Smrg	  if test -z "$abs_ladir"; then
5725c27c18e8Smrg	    func_warning "cannot determine absolute directory name of \`$ladir'"
5726c27c18e8Smrg	    func_warning "passing it literally to the linker, although it might fail"
5727c27c18e8Smrg	    abs_ladir="$ladir"
5728c27c18e8Smrg	  fi
5729c27c18e8Smrg	  ;;
5730c27c18e8Smrg	esac
5731c27c18e8Smrg	func_basename "$lib"
5732c27c18e8Smrg	laname="$func_basename_result"
5733c27c18e8Smrg
5734c27c18e8Smrg	# Find the relevant object directory and library name.
5735c27c18e8Smrg	if test "X$installed" = Xyes; then
5736c27c18e8Smrg	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
5737c27c18e8Smrg	    func_warning "library \`$lib' was moved."
5738c27c18e8Smrg	    dir="$ladir"
5739c27c18e8Smrg	    absdir="$abs_ladir"
5740c27c18e8Smrg	    libdir="$abs_ladir"
5741c27c18e8Smrg	  else
5742c27c18e8Smrg	    dir="$libdir"
5743c27c18e8Smrg	    absdir="$libdir"
5744c27c18e8Smrg	  fi
5745c27c18e8Smrg	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
5746c27c18e8Smrg	else
5747c27c18e8Smrg	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
5748c27c18e8Smrg	    dir="$ladir"
5749c27c18e8Smrg	    absdir="$abs_ladir"
5750c27c18e8Smrg	    # Remove this search path later
5751c27c18e8Smrg	    notinst_path="$notinst_path $abs_ladir"
5752c27c18e8Smrg	  else
5753c27c18e8Smrg	    dir="$ladir/$objdir"
5754c27c18e8Smrg	    absdir="$abs_ladir/$objdir"
5755c27c18e8Smrg	    # Remove this search path later
5756c27c18e8Smrg	    notinst_path="$notinst_path $abs_ladir"
5757c27c18e8Smrg	  fi
5758c27c18e8Smrg	fi # $installed = yes
5759c27c18e8Smrg	func_stripname 'lib' '.la' "$laname"
5760c27c18e8Smrg	name=$func_stripname_result
5761c27c18e8Smrg
5762c27c18e8Smrg	# This library was specified with -dlpreopen.
5763c27c18e8Smrg	if test "$pass" = dlpreopen; then
5764c27c18e8Smrg	  if test -z "$libdir" && test "$linkmode" = prog; then
5765c27c18e8Smrg	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
5766c27c18e8Smrg	  fi
5767c27c18e8Smrg	  # Prefer using a static library (so that no silly _DYNAMIC symbols
5768c27c18e8Smrg	  # are required to link).
5769c27c18e8Smrg	  if test -n "$old_library"; then
5770c27c18e8Smrg	    newdlprefiles="$newdlprefiles $dir/$old_library"
5771c27c18e8Smrg	    # Keep a list of preopened convenience libraries to check
5772c27c18e8Smrg	    # that they are being used correctly in the link pass.
5773c27c18e8Smrg	    test -z "$libdir" && \
5774c27c18e8Smrg		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
5775c27c18e8Smrg	  # Otherwise, use the dlname, so that lt_dlopen finds it.
5776c27c18e8Smrg	  elif test -n "$dlname"; then
5777c27c18e8Smrg	    newdlprefiles="$newdlprefiles $dir/$dlname"
5778c27c18e8Smrg	  else
5779c27c18e8Smrg	    newdlprefiles="$newdlprefiles $dir/$linklib"
5780c27c18e8Smrg	  fi
5781c27c18e8Smrg	fi # $pass = dlpreopen
5782c27c18e8Smrg
5783c27c18e8Smrg	if test -z "$libdir"; then
5784c27c18e8Smrg	  # Link the convenience library
5785c27c18e8Smrg	  if test "$linkmode" = lib; then
5786c27c18e8Smrg	    deplibs="$dir/$old_library $deplibs"
5787c27c18e8Smrg	  elif test "$linkmode,$pass" = "prog,link"; then
5788c27c18e8Smrg	    compile_deplibs="$dir/$old_library $compile_deplibs"
5789c27c18e8Smrg	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
5790c27c18e8Smrg	  else
5791c27c18e8Smrg	    deplibs="$lib $deplibs" # used for prog,scan pass
5792c27c18e8Smrg	  fi
5793c27c18e8Smrg	  continue
5794c27c18e8Smrg	fi
5795c27c18e8Smrg
5796c27c18e8Smrg
5797c27c18e8Smrg	if test "$linkmode" = prog && test "$pass" != link; then
5798c27c18e8Smrg	  newlib_search_path="$newlib_search_path $ladir"
5799c27c18e8Smrg	  deplibs="$lib $deplibs"
5800c27c18e8Smrg
5801c27c18e8Smrg	  linkalldeplibs=no
5802c27c18e8Smrg	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
5803c27c18e8Smrg	     test "$build_libtool_libs" = no; then
5804c27c18e8Smrg	    linkalldeplibs=yes
5805c27c18e8Smrg	  fi
5806c27c18e8Smrg
5807c27c18e8Smrg	  tmp_libs=
5808c27c18e8Smrg	  for deplib in $dependency_libs; do
5809c27c18e8Smrg	    case $deplib in
5810c27c18e8Smrg	    -L*) func_stripname '-L' '' "$deplib"
5811c27c18e8Smrg	         newlib_search_path="$newlib_search_path $func_stripname_result"
5812c27c18e8Smrg		 ;;
5813c27c18e8Smrg	    esac
5814c27c18e8Smrg	    # Need to link against all dependency_libs?
5815c27c18e8Smrg	    if test "$linkalldeplibs" = yes; then
5816c27c18e8Smrg	      deplibs="$deplib $deplibs"
5817c27c18e8Smrg	    else
5818c27c18e8Smrg	      # Need to hardcode shared library paths
5819c27c18e8Smrg	      # or/and link against static libraries
5820c27c18e8Smrg	      newdependency_libs="$deplib $newdependency_libs"
5821c27c18e8Smrg	    fi
5822c27c18e8Smrg	    if $opt_duplicate_deps ; then
5823c27c18e8Smrg	      case "$tmp_libs " in
5824c27c18e8Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
5825c27c18e8Smrg	      esac
5826c27c18e8Smrg	    fi
5827c27c18e8Smrg	    tmp_libs="$tmp_libs $deplib"
5828c27c18e8Smrg	  done # for deplib
5829c27c18e8Smrg	  continue
5830c27c18e8Smrg	fi # $linkmode = prog...
5831c27c18e8Smrg
5832c27c18e8Smrg	if test "$linkmode,$pass" = "prog,link"; then
5833c27c18e8Smrg	  if test -n "$library_names" &&
5834c27c18e8Smrg	     { { test "$prefer_static_libs" = no ||
5835c27c18e8Smrg	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
5836c27c18e8Smrg	       test -z "$old_library"; }; then
5837c27c18e8Smrg	    # We need to hardcode the library path
5838c27c18e8Smrg	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
5839c27c18e8Smrg	      # Make sure the rpath contains only unique directories.
5840c27c18e8Smrg	      case "$temp_rpath:" in
5841c27c18e8Smrg	      *"$absdir:"*) ;;
5842c27c18e8Smrg	      *) temp_rpath="$temp_rpath$absdir:" ;;
5843c27c18e8Smrg	      esac
5844c27c18e8Smrg	    fi
5845c27c18e8Smrg
5846c27c18e8Smrg	    # Hardcode the library path.
5847c27c18e8Smrg	    # Skip directories that are in the system default run-time
5848c27c18e8Smrg	    # search path.
5849c27c18e8Smrg	    case " $sys_lib_dlsearch_path " in
5850c27c18e8Smrg	    *" $absdir "*) ;;
5851c27c18e8Smrg	    *)
5852c27c18e8Smrg	      case "$compile_rpath " in
5853c27c18e8Smrg	      *" $absdir "*) ;;
5854c27c18e8Smrg	      *) compile_rpath="$compile_rpath $absdir"
5855c27c18e8Smrg	      esac
5856c27c18e8Smrg	      ;;
5857c27c18e8Smrg	    esac
5858c27c18e8Smrg	    case " $sys_lib_dlsearch_path " in
5859c27c18e8Smrg	    *" $libdir "*) ;;
5860c27c18e8Smrg	    *)
5861c27c18e8Smrg	      case "$finalize_rpath " in
5862c27c18e8Smrg	      *" $libdir "*) ;;
5863c27c18e8Smrg	      *) finalize_rpath="$finalize_rpath $libdir"
5864c27c18e8Smrg	      esac
5865c27c18e8Smrg	      ;;
5866c27c18e8Smrg	    esac
5867c27c18e8Smrg	  fi # $linkmode,$pass = prog,link...
5868c27c18e8Smrg
5869c27c18e8Smrg	  if test "$alldeplibs" = yes &&
5870c27c18e8Smrg	     { test "$deplibs_check_method" = pass_all ||
5871c27c18e8Smrg	       { test "$build_libtool_libs" = yes &&
5872c27c18e8Smrg		 test -n "$library_names"; }; }; then
5873c27c18e8Smrg	    # We only need to search for static libraries
5874c27c18e8Smrg	    continue
5875c27c18e8Smrg	  fi
5876c27c18e8Smrg	fi
5877c27c18e8Smrg
5878c27c18e8Smrg	link_static=no # Whether the deplib will be linked statically
5879c27c18e8Smrg	use_static_libs=$prefer_static_libs
5880c27c18e8Smrg	if test "$use_static_libs" = built && test "$installed" = yes; then
5881c27c18e8Smrg	  use_static_libs=no
5882c27c18e8Smrg	fi
5883c27c18e8Smrg	if test -n "$library_names" &&
5884c27c18e8Smrg	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
5885c27c18e8Smrg	  case $host in
5886c27c18e8Smrg	  *cygwin* | *mingw* | *cegcc*)
5887c27c18e8Smrg	      # No point in relinking DLLs because paths are not encoded
5888c27c18e8Smrg	      notinst_deplibs="$notinst_deplibs $lib"
5889c27c18e8Smrg	      need_relink=no
5890c27c18e8Smrg	    ;;
5891c27c18e8Smrg	  *)
5892c27c18e8Smrg	    if test "$installed" = no; then
5893c27c18e8Smrg	      notinst_deplibs="$notinst_deplibs $lib"
5894c27c18e8Smrg	      need_relink=yes
5895c27c18e8Smrg	    fi
5896c27c18e8Smrg	    ;;
5897c27c18e8Smrg	  esac
5898c27c18e8Smrg	  # This is a shared library
5899c27c18e8Smrg
5900c27c18e8Smrg	  # Warn about portability, can't link against -module's on some
5901c27c18e8Smrg	  # systems (darwin).  Don't bleat about dlopened modules though!
5902c27c18e8Smrg	  dlopenmodule=""
5903c27c18e8Smrg	  for dlpremoduletest in $dlprefiles; do
5904c27c18e8Smrg	    if test "X$dlpremoduletest" = "X$lib"; then
5905c27c18e8Smrg	      dlopenmodule="$dlpremoduletest"
5906c27c18e8Smrg	      break
5907c27c18e8Smrg	    fi
5908c27c18e8Smrg	  done
5909c27c18e8Smrg	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
591037eb1ca1Smrg	    echo
5911c27c18e8Smrg	    if test "$linkmode" = prog; then
5912c27c18e8Smrg	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
5913c27c18e8Smrg	    else
5914c27c18e8Smrg	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
5915c27c18e8Smrg	    fi
5916c27c18e8Smrg	    $ECHO "*** $linklib is not portable!"
5917c27c18e8Smrg	  fi
5918c27c18e8Smrg	  if test "$linkmode" = lib &&
5919c27c18e8Smrg	     test "$hardcode_into_libs" = yes; then
5920c27c18e8Smrg	    # Hardcode the library path.
5921c27c18e8Smrg	    # Skip directories that are in the system default run-time
5922c27c18e8Smrg	    # search path.
5923c27c18e8Smrg	    case " $sys_lib_dlsearch_path " in
5924c27c18e8Smrg	    *" $absdir "*) ;;
5925c27c18e8Smrg	    *)
5926c27c18e8Smrg	      case "$compile_rpath " in
5927c27c18e8Smrg	      *" $absdir "*) ;;
5928c27c18e8Smrg	      *) compile_rpath="$compile_rpath $absdir"
5929c27c18e8Smrg	      esac
5930c27c18e8Smrg	      ;;
5931c27c18e8Smrg	    esac
5932c27c18e8Smrg	    case " $sys_lib_dlsearch_path " in
5933c27c18e8Smrg	    *" $libdir "*) ;;
5934c27c18e8Smrg	    *)
5935c27c18e8Smrg	      case "$finalize_rpath " in
5936c27c18e8Smrg	      *" $libdir "*) ;;
5937c27c18e8Smrg	      *) finalize_rpath="$finalize_rpath $libdir"
5938c27c18e8Smrg	      esac
5939c27c18e8Smrg	      ;;
5940c27c18e8Smrg	    esac
5941c27c18e8Smrg	  fi
5942c27c18e8Smrg
5943c27c18e8Smrg	  if test -n "$old_archive_from_expsyms_cmds"; then
5944c27c18e8Smrg	    # figure out the soname
5945c27c18e8Smrg	    set dummy $library_names
5946c27c18e8Smrg	    shift
5947c27c18e8Smrg	    realname="$1"
5948c27c18e8Smrg	    shift
5949c27c18e8Smrg	    libname=`eval "\\$ECHO \"$libname_spec\""`
5950c27c18e8Smrg	    # use dlname if we got it. it's perfectly good, no?
5951c27c18e8Smrg	    if test -n "$dlname"; then
5952c27c18e8Smrg	      soname="$dlname"
5953c27c18e8Smrg	    elif test -n "$soname_spec"; then
5954c27c18e8Smrg	      # bleh windows
5955c27c18e8Smrg	      case $host in
5956c27c18e8Smrg	      *cygwin* | mingw* | *cegcc*)
5957c27c18e8Smrg	        func_arith $current - $age
5958c27c18e8Smrg		major=$func_arith_result
5959c27c18e8Smrg		versuffix="-$major"
5960c27c18e8Smrg		;;
5961c27c18e8Smrg	      esac
5962c27c18e8Smrg	      eval soname=\"$soname_spec\"
5963c27c18e8Smrg	    else
5964c27c18e8Smrg	      soname="$realname"
5965c27c18e8Smrg	    fi
5966c27c18e8Smrg
5967c27c18e8Smrg	    # Make a new name for the extract_expsyms_cmds to use
5968c27c18e8Smrg	    soroot="$soname"
5969c27c18e8Smrg	    func_basename "$soroot"
5970c27c18e8Smrg	    soname="$func_basename_result"
5971c27c18e8Smrg	    func_stripname 'lib' '.dll' "$soname"
5972c27c18e8Smrg	    newlib=libimp-$func_stripname_result.a
5973c27c18e8Smrg
5974c27c18e8Smrg	    # If the library has no export list, then create one now
5975c27c18e8Smrg	    if test -f "$output_objdir/$soname-def"; then :
5976c27c18e8Smrg	    else
5977c27c18e8Smrg	      func_verbose "extracting exported symbol list from \`$soname'"
5978c27c18e8Smrg	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
5979c27c18e8Smrg	    fi
5980c27c18e8Smrg
5981c27c18e8Smrg	    # Create $newlib
5982c27c18e8Smrg	    if test -f "$output_objdir/$newlib"; then :; else
5983c27c18e8Smrg	      func_verbose "generating import library for \`$soname'"
5984c27c18e8Smrg	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
5985c27c18e8Smrg	    fi
5986c27c18e8Smrg	    # make sure the library variables are pointing to the new library
5987c27c18e8Smrg	    dir=$output_objdir
5988c27c18e8Smrg	    linklib=$newlib
5989c27c18e8Smrg	  fi # test -n "$old_archive_from_expsyms_cmds"
5990c27c18e8Smrg
5991c27c18e8Smrg	  if test "$linkmode" = prog || test "$mode" != relink; then
5992c27c18e8Smrg	    add_shlibpath=
5993c27c18e8Smrg	    add_dir=
5994c27c18e8Smrg	    add=
5995c27c18e8Smrg	    lib_linked=yes
5996c27c18e8Smrg	    case $hardcode_action in
5997c27c18e8Smrg	    immediate | unsupported)
5998c27c18e8Smrg	      if test "$hardcode_direct" = no; then
5999c27c18e8Smrg		add="$dir/$linklib"
6000c27c18e8Smrg		case $host in
6001c27c18e8Smrg		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
6002c27c18e8Smrg		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
6003c27c18e8Smrg		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
6004c27c18e8Smrg		    *-*-unixware7*) add_dir="-L$dir" ;;
6005c27c18e8Smrg		  *-*-darwin* )
6006c27c18e8Smrg		    # if the lib is a (non-dlopened) module then we can not
6007c27c18e8Smrg		    # link against it, someone is ignoring the earlier warnings
6008c27c18e8Smrg		    if /usr/bin/file -L $add 2> /dev/null |
6009c27c18e8Smrg			 $GREP ": [^:]* bundle" >/dev/null ; then
6010c27c18e8Smrg		      if test "X$dlopenmodule" != "X$lib"; then
6011c27c18e8Smrg			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
6012c27c18e8Smrg			if test -z "$old_library" ; then
601337eb1ca1Smrg			  echo
601437eb1ca1Smrg			  echo "*** And there doesn't seem to be a static archive available"
601537eb1ca1Smrg			  echo "*** The link will probably fail, sorry"
6016c27c18e8Smrg			else
6017c27c18e8Smrg			  add="$dir/$old_library"
6018c27c18e8Smrg			fi
6019c27c18e8Smrg		      elif test -n "$old_library"; then
6020c27c18e8Smrg			add="$dir/$old_library"
6021c27c18e8Smrg		      fi
6022c27c18e8Smrg		    fi
6023c27c18e8Smrg		esac
6024c27c18e8Smrg	      elif test "$hardcode_minus_L" = no; then
6025c27c18e8Smrg		case $host in
6026c27c18e8Smrg		*-*-sunos*) add_shlibpath="$dir" ;;
6027c27c18e8Smrg		esac
6028c27c18e8Smrg		add_dir="-L$dir"
6029c27c18e8Smrg		add="-l$name"
6030c27c18e8Smrg	      elif test "$hardcode_shlibpath_var" = no; then
6031c27c18e8Smrg		add_shlibpath="$dir"
6032c27c18e8Smrg		add="-l$name"
6033c27c18e8Smrg	      else
6034c27c18e8Smrg		lib_linked=no
6035c27c18e8Smrg	      fi
6036c27c18e8Smrg	      ;;
6037c27c18e8Smrg	    relink)
6038c27c18e8Smrg	      if test "$hardcode_direct" = yes &&
6039c27c18e8Smrg	         test "$hardcode_direct_absolute" = no; then
6040c27c18e8Smrg		add="$dir/$linklib"
6041c27c18e8Smrg	      elif test "$hardcode_minus_L" = yes; then
6042c27c18e8Smrg		add_dir="-L$dir"
6043c27c18e8Smrg		# Try looking first in the location we're being installed to.
6044c27c18e8Smrg		if test -n "$inst_prefix_dir"; then
6045c27c18e8Smrg		  case $libdir in
6046c27c18e8Smrg		    [\\/]*)
6047c27c18e8Smrg		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
6048c27c18e8Smrg		      ;;
6049c27c18e8Smrg		  esac
6050c27c18e8Smrg		fi
6051c27c18e8Smrg		add="-l$name"
6052c27c18e8Smrg	      elif test "$hardcode_shlibpath_var" = yes; then
6053c27c18e8Smrg		add_shlibpath="$dir"
6054c27c18e8Smrg		add="-l$name"
6055c27c18e8Smrg	      else
6056c27c18e8Smrg		lib_linked=no
6057c27c18e8Smrg	      fi
6058c27c18e8Smrg	      ;;
6059c27c18e8Smrg	    *) lib_linked=no ;;
6060c27c18e8Smrg	    esac
6061c27c18e8Smrg
6062c27c18e8Smrg	    if test "$lib_linked" != yes; then
6063c27c18e8Smrg	      func_fatal_configuration "unsupported hardcode properties"
6064c27c18e8Smrg	    fi
6065c27c18e8Smrg
6066c27c18e8Smrg	    if test -n "$add_shlibpath"; then
6067c27c18e8Smrg	      case :$compile_shlibpath: in
6068c27c18e8Smrg	      *":$add_shlibpath:"*) ;;
6069c27c18e8Smrg	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
6070c27c18e8Smrg	      esac
6071c27c18e8Smrg	    fi
6072c27c18e8Smrg	    if test "$linkmode" = prog; then
6073c27c18e8Smrg	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
6074c27c18e8Smrg	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
6075c27c18e8Smrg	    else
6076c27c18e8Smrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
6077c27c18e8Smrg	      test -n "$add" && deplibs="$add $deplibs"
6078c27c18e8Smrg	      if test "$hardcode_direct" != yes &&
6079c27c18e8Smrg		 test "$hardcode_minus_L" != yes &&
6080c27c18e8Smrg		 test "$hardcode_shlibpath_var" = yes; then
6081c27c18e8Smrg		case :$finalize_shlibpath: in
6082c27c18e8Smrg		*":$libdir:"*) ;;
6083c27c18e8Smrg		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
6084c27c18e8Smrg		esac
6085c27c18e8Smrg	      fi
6086c27c18e8Smrg	    fi
6087c27c18e8Smrg	  fi
6088c27c18e8Smrg
6089c27c18e8Smrg	  if test "$linkmode" = prog || test "$mode" = relink; then
6090c27c18e8Smrg	    add_shlibpath=
6091c27c18e8Smrg	    add_dir=
6092c27c18e8Smrg	    add=
6093c27c18e8Smrg	    # Finalize command for both is simple: just hardcode it.
6094c27c18e8Smrg	    if test "$hardcode_direct" = yes &&
6095c27c18e8Smrg	       test "$hardcode_direct_absolute" = no; then
6096c27c18e8Smrg	      add="$libdir/$linklib"
6097c27c18e8Smrg	    elif test "$hardcode_minus_L" = yes; then
6098c27c18e8Smrg	      add_dir="-L$libdir"
6099c27c18e8Smrg	      add="-l$name"
6100c27c18e8Smrg	    elif test "$hardcode_shlibpath_var" = yes; then
6101c27c18e8Smrg	      case :$finalize_shlibpath: in
6102c27c18e8Smrg	      *":$libdir:"*) ;;
6103c27c18e8Smrg	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
6104c27c18e8Smrg	      esac
6105c27c18e8Smrg	      add="-l$name"
6106c27c18e8Smrg	    elif test "$hardcode_automatic" = yes; then
6107c27c18e8Smrg	      if test -n "$inst_prefix_dir" &&
6108c27c18e8Smrg		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
6109c27c18e8Smrg		add="$inst_prefix_dir$libdir/$linklib"
6110c27c18e8Smrg	      else
6111c27c18e8Smrg		add="$libdir/$linklib"
6112c27c18e8Smrg	      fi
6113c27c18e8Smrg	    else
6114c27c18e8Smrg	      # We cannot seem to hardcode it, guess we'll fake it.
6115c27c18e8Smrg	      add_dir="-L$libdir"
6116c27c18e8Smrg	      # Try looking first in the location we're being installed to.
6117c27c18e8Smrg	      if test -n "$inst_prefix_dir"; then
6118c27c18e8Smrg		case $libdir in
6119c27c18e8Smrg		  [\\/]*)
6120c27c18e8Smrg		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
6121c27c18e8Smrg		    ;;
6122c27c18e8Smrg		esac
6123c27c18e8Smrg	      fi
6124c27c18e8Smrg	      add="-l$name"
6125c27c18e8Smrg	    fi
6126c27c18e8Smrg
6127c27c18e8Smrg	    if test "$linkmode" = prog; then
6128c27c18e8Smrg	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
6129c27c18e8Smrg	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
6130c27c18e8Smrg	    else
6131c27c18e8Smrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
6132c27c18e8Smrg	      test -n "$add" && deplibs="$add $deplibs"
6133c27c18e8Smrg	    fi
6134c27c18e8Smrg	  fi
6135c27c18e8Smrg	elif test "$linkmode" = prog; then
6136c27c18e8Smrg	  # Here we assume that one of hardcode_direct or hardcode_minus_L
6137c27c18e8Smrg	  # is not unsupported.  This is valid on all known static and
6138c27c18e8Smrg	  # shared platforms.
6139c27c18e8Smrg	  if test "$hardcode_direct" != unsupported; then
6140c27c18e8Smrg	    test -n "$old_library" && linklib="$old_library"
6141c27c18e8Smrg	    compile_deplibs="$dir/$linklib $compile_deplibs"
6142c27c18e8Smrg	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
6143c27c18e8Smrg	  else
6144c27c18e8Smrg	    compile_deplibs="-l$name -L$dir $compile_deplibs"
6145c27c18e8Smrg	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
6146c27c18e8Smrg	  fi
6147c27c18e8Smrg	elif test "$build_libtool_libs" = yes; then
6148c27c18e8Smrg	  # Not a shared library
6149c27c18e8Smrg	  if test "$deplibs_check_method" != pass_all; then
6150c27c18e8Smrg	    # We're trying link a shared library against a static one
6151c27c18e8Smrg	    # but the system doesn't support it.
6152c27c18e8Smrg
6153c27c18e8Smrg	    # Just print a warning and add the library to dependency_libs so
6154c27c18e8Smrg	    # that the program can be linked against the static library.
615537eb1ca1Smrg	    echo
6156c27c18e8Smrg	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
615737eb1ca1Smrg	    echo "*** I have the capability to make that library automatically link in when"
615837eb1ca1Smrg	    echo "*** you link to this library.  But I can only do this if you have a"
615937eb1ca1Smrg	    echo "*** shared version of the library, which you do not appear to have."
6160c27c18e8Smrg	    if test "$module" = yes; then
616137eb1ca1Smrg	      echo "*** But as you try to build a module library, libtool will still create "
616237eb1ca1Smrg	      echo "*** a static module, that should work as long as the dlopening application"
616337eb1ca1Smrg	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
6164c27c18e8Smrg	      if test -z "$global_symbol_pipe"; then
616537eb1ca1Smrg		echo
616637eb1ca1Smrg		echo "*** However, this would only work if libtool was able to extract symbol"
616737eb1ca1Smrg		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
616837eb1ca1Smrg		echo "*** not find such a program.  So, this module is probably useless."
616937eb1ca1Smrg		echo "*** \`nm' from GNU binutils and a full rebuild may help."
6170c27c18e8Smrg	      fi
6171c27c18e8Smrg	      if test "$build_old_libs" = no; then
6172c27c18e8Smrg		build_libtool_libs=module
6173c27c18e8Smrg		build_old_libs=yes
6174c27c18e8Smrg	      else
6175c27c18e8Smrg		build_libtool_libs=no
6176c27c18e8Smrg	      fi
6177c27c18e8Smrg	    fi
6178c27c18e8Smrg	  else
6179c27c18e8Smrg	    deplibs="$dir/$old_library $deplibs"
6180c27c18e8Smrg	    link_static=yes
6181c27c18e8Smrg	  fi
6182c27c18e8Smrg	fi # link shared/static library?
6183c27c18e8Smrg
6184c27c18e8Smrg	if test "$linkmode" = lib; then
6185c27c18e8Smrg	  if test -n "$dependency_libs" &&
6186c27c18e8Smrg	     { test "$hardcode_into_libs" != yes ||
6187c27c18e8Smrg	       test "$build_old_libs" = yes ||
6188c27c18e8Smrg	       test "$link_static" = yes; }; then
6189c27c18e8Smrg	    # Extract -R from dependency_libs
6190c27c18e8Smrg	    temp_deplibs=
6191c27c18e8Smrg	    for libdir in $dependency_libs; do
6192c27c18e8Smrg	      case $libdir in
6193c27c18e8Smrg	      -R*) func_stripname '-R' '' "$libdir"
6194c27c18e8Smrg	           temp_xrpath=$func_stripname_result
6195c27c18e8Smrg		   case " $xrpath " in
6196c27c18e8Smrg		   *" $temp_xrpath "*) ;;
6197c27c18e8Smrg		   *) xrpath="$xrpath $temp_xrpath";;
6198c27c18e8Smrg		   esac;;
6199c27c18e8Smrg	      *) temp_deplibs="$temp_deplibs $libdir";;
6200c27c18e8Smrg	      esac
6201c27c18e8Smrg	    done
6202c27c18e8Smrg	    dependency_libs="$temp_deplibs"
6203c27c18e8Smrg	  fi
6204c27c18e8Smrg
6205c27c18e8Smrg	  newlib_search_path="$newlib_search_path $absdir"
6206c27c18e8Smrg	  # Link against this library
6207c27c18e8Smrg	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
6208c27c18e8Smrg	  # ... and its dependency_libs
6209c27c18e8Smrg	  tmp_libs=
6210c27c18e8Smrg	  for deplib in $dependency_libs; do
6211c27c18e8Smrg	    newdependency_libs="$deplib $newdependency_libs"
6212c27c18e8Smrg	    if $opt_duplicate_deps ; then
6213c27c18e8Smrg	      case "$tmp_libs " in
6214c27c18e8Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
6215c27c18e8Smrg	      esac
6216c27c18e8Smrg	    fi
6217c27c18e8Smrg	    tmp_libs="$tmp_libs $deplib"
6218c27c18e8Smrg	  done
6219c27c18e8Smrg
6220c27c18e8Smrg	  if test "$link_all_deplibs" != no; then
6221c27c18e8Smrg	    # Add the search paths of all dependency libraries
6222c27c18e8Smrg	    for deplib in $dependency_libs; do
622337eb1ca1Smrg	      path=
6224c27c18e8Smrg	      case $deplib in
6225c27c18e8Smrg	      -L*) path="$deplib" ;;
6226c27c18e8Smrg	      *.la)
6227c27c18e8Smrg	        func_dirname "$deplib" "" "."
6228c27c18e8Smrg		dir="$func_dirname_result"
6229c27c18e8Smrg		# We need an absolute path.
6230c27c18e8Smrg		case $dir in
6231c27c18e8Smrg		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
6232c27c18e8Smrg		*)
6233c27c18e8Smrg		  absdir=`cd "$dir" && pwd`
6234c27c18e8Smrg		  if test -z "$absdir"; then
6235c27c18e8Smrg		    func_warning "cannot determine absolute directory name of \`$dir'"
6236c27c18e8Smrg		    absdir="$dir"
6237c27c18e8Smrg		  fi
6238c27c18e8Smrg		  ;;
6239c27c18e8Smrg		esac
6240c27c18e8Smrg		if $GREP "^installed=no" $deplib > /dev/null; then
6241c27c18e8Smrg		case $host in
6242c27c18e8Smrg		*-*-darwin*)
6243c27c18e8Smrg		  depdepl=
6244c27c18e8Smrg		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
6245c27c18e8Smrg		  if test -n "$deplibrary_names" ; then
6246c27c18e8Smrg		    for tmp in $deplibrary_names ; do
6247c27c18e8Smrg		      depdepl=$tmp
6248c27c18e8Smrg		    done
6249c27c18e8Smrg		    if test -f "$absdir/$objdir/$depdepl" ; then
6250c27c18e8Smrg		      depdepl="$absdir/$objdir/$depdepl"
6251c27c18e8Smrg		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
6252c27c18e8Smrg                      if test -z "$darwin_install_name"; then
6253c27c18e8Smrg                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
6254c27c18e8Smrg                      fi
6255c27c18e8Smrg		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
6256c27c18e8Smrg		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
6257c27c18e8Smrg		      path=
6258c27c18e8Smrg		    fi
6259c27c18e8Smrg		  fi
6260c27c18e8Smrg		  ;;
6261c27c18e8Smrg		*)
6262c27c18e8Smrg		  path="-L$absdir/$objdir"
6263c27c18e8Smrg		  ;;
6264c27c18e8Smrg		esac
6265c27c18e8Smrg		else
6266c27c18e8Smrg		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
6267c27c18e8Smrg		  test -z "$libdir" && \
6268c27c18e8Smrg		    func_fatal_error "\`$deplib' is not a valid libtool archive"
6269c27c18e8Smrg		  test "$absdir" != "$libdir" && \
6270c27c18e8Smrg		    func_warning "\`$deplib' seems to be moved"
6271c27c18e8Smrg
6272c27c18e8Smrg		  path="-L$absdir"
6273c27c18e8Smrg		fi
6274c27c18e8Smrg		;;
6275c27c18e8Smrg	      esac
6276c27c18e8Smrg	      case " $deplibs " in
6277c27c18e8Smrg	      *" $path "*) ;;
6278c27c18e8Smrg	      *) deplibs="$path $deplibs" ;;
6279c27c18e8Smrg	      esac
6280c27c18e8Smrg	    done
6281c27c18e8Smrg	  fi # link_all_deplibs != no
6282c27c18e8Smrg	fi # linkmode = lib
6283c27c18e8Smrg      done # for deplib in $libs
6284c27c18e8Smrg      if test "$pass" = link; then
6285c27c18e8Smrg	if test "$linkmode" = "prog"; then
6286c27c18e8Smrg	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
6287c27c18e8Smrg	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
6288c27c18e8Smrg	else
628937eb1ca1Smrg	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
6290c27c18e8Smrg	fi
6291c27c18e8Smrg      fi
6292c27c18e8Smrg      dependency_libs="$newdependency_libs"
6293c27c18e8Smrg      if test "$pass" = dlpreopen; then
6294c27c18e8Smrg	# Link the dlpreopened libraries before other libraries
6295c27c18e8Smrg	for deplib in $save_deplibs; do
6296c27c18e8Smrg	  deplibs="$deplib $deplibs"
6297c27c18e8Smrg	done
6298c27c18e8Smrg      fi
6299c27c18e8Smrg      if test "$pass" != dlopen; then
6300c27c18e8Smrg	if test "$pass" != conv; then
6301c27c18e8Smrg	  # Make sure lib_search_path contains only unique directories.
6302c27c18e8Smrg	  lib_search_path=
6303c27c18e8Smrg	  for dir in $newlib_search_path; do
6304c27c18e8Smrg	    case "$lib_search_path " in
6305c27c18e8Smrg	    *" $dir "*) ;;
6306c27c18e8Smrg	    *) lib_search_path="$lib_search_path $dir" ;;
6307c27c18e8Smrg	    esac
6308c27c18e8Smrg	  done
6309c27c18e8Smrg	  newlib_search_path=
6310c27c18e8Smrg	fi
6311c27c18e8Smrg
6312c27c18e8Smrg	if test "$linkmode,$pass" != "prog,link"; then
6313c27c18e8Smrg	  vars="deplibs"
6314c27c18e8Smrg	else
6315c27c18e8Smrg	  vars="compile_deplibs finalize_deplibs"
6316c27c18e8Smrg	fi
6317c27c18e8Smrg	for var in $vars dependency_libs; do
6318c27c18e8Smrg	  # Add libraries to $var in reverse order
6319c27c18e8Smrg	  eval tmp_libs=\"\$$var\"
6320c27c18e8Smrg	  new_libs=
6321c27c18e8Smrg	  for deplib in $tmp_libs; do
6322c27c18e8Smrg	    # FIXME: Pedantically, this is the right thing to do, so
6323c27c18e8Smrg	    #        that some nasty dependency loop isn't accidentally
6324c27c18e8Smrg	    #        broken:
6325c27c18e8Smrg	    #new_libs="$deplib $new_libs"
6326c27c18e8Smrg	    # Pragmatically, this seems to cause very few problems in
6327c27c18e8Smrg	    # practice:
6328c27c18e8Smrg	    case $deplib in
6329c27c18e8Smrg	    -L*) new_libs="$deplib $new_libs" ;;
6330c27c18e8Smrg	    -R*) ;;
6331c27c18e8Smrg	    *)
6332c27c18e8Smrg	      # And here is the reason: when a library appears more
6333c27c18e8Smrg	      # than once as an explicit dependence of a library, or
6334c27c18e8Smrg	      # is implicitly linked in more than once by the
6335c27c18e8Smrg	      # compiler, it is considered special, and multiple
6336c27c18e8Smrg	      # occurrences thereof are not removed.  Compare this
6337c27c18e8Smrg	      # with having the same library being listed as a
6338c27c18e8Smrg	      # dependency of multiple other libraries: in this case,
6339c27c18e8Smrg	      # we know (pedantically, we assume) the library does not
6340c27c18e8Smrg	      # need to be listed more than once, so we keep only the
6341c27c18e8Smrg	      # last copy.  This is not always right, but it is rare
6342c27c18e8Smrg	      # enough that we require users that really mean to play
6343c27c18e8Smrg	      # such unportable linking tricks to link the library
6344c27c18e8Smrg	      # using -Wl,-lname, so that libtool does not consider it
6345c27c18e8Smrg	      # for duplicate removal.
6346c27c18e8Smrg	      case " $specialdeplibs " in
6347c27c18e8Smrg	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
6348c27c18e8Smrg	      *)
6349c27c18e8Smrg		case " $new_libs " in
6350c27c18e8Smrg		*" $deplib "*) ;;
6351c27c18e8Smrg		*) new_libs="$deplib $new_libs" ;;
6352c27c18e8Smrg		esac
6353c27c18e8Smrg		;;
6354c27c18e8Smrg	      esac
6355c27c18e8Smrg	      ;;
6356c27c18e8Smrg	    esac
6357c27c18e8Smrg	  done
6358c27c18e8Smrg	  tmp_libs=
6359c27c18e8Smrg	  for deplib in $new_libs; do
6360c27c18e8Smrg	    case $deplib in
6361c27c18e8Smrg	    -L*)
6362c27c18e8Smrg	      case " $tmp_libs " in
6363c27c18e8Smrg	      *" $deplib "*) ;;
6364c27c18e8Smrg	      *) tmp_libs="$tmp_libs $deplib" ;;
6365c27c18e8Smrg	      esac
6366c27c18e8Smrg	      ;;
6367c27c18e8Smrg	    *) tmp_libs="$tmp_libs $deplib" ;;
6368c27c18e8Smrg	    esac
6369c27c18e8Smrg	  done
6370c27c18e8Smrg	  eval $var=\"$tmp_libs\"
6371c27c18e8Smrg	done # for var
6372c27c18e8Smrg      fi
6373c27c18e8Smrg      # Last step: remove runtime libs from dependency_libs
6374c27c18e8Smrg      # (they stay in deplibs)
6375c27c18e8Smrg      tmp_libs=
6376c27c18e8Smrg      for i in $dependency_libs ; do
6377c27c18e8Smrg	case " $predeps $postdeps $compiler_lib_search_path " in
6378c27c18e8Smrg	*" $i "*)
6379c27c18e8Smrg	  i=""
6380c27c18e8Smrg	  ;;
6381c27c18e8Smrg	esac
6382c27c18e8Smrg	if test -n "$i" ; then
6383c27c18e8Smrg	  tmp_libs="$tmp_libs $i"
6384c27c18e8Smrg	fi
6385c27c18e8Smrg      done
6386c27c18e8Smrg      dependency_libs=$tmp_libs
6387c27c18e8Smrg    done # for pass
6388c27c18e8Smrg    if test "$linkmode" = prog; then
6389c27c18e8Smrg      dlfiles="$newdlfiles"
6390c27c18e8Smrg    fi
6391c27c18e8Smrg    if test "$linkmode" = prog || test "$linkmode" = lib; then
6392c27c18e8Smrg      dlprefiles="$newdlprefiles"
6393c27c18e8Smrg    fi
6394c27c18e8Smrg
6395c27c18e8Smrg    case $linkmode in
6396c27c18e8Smrg    oldlib)
6397c27c18e8Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
6398c27c18e8Smrg	func_warning "\`-dlopen' is ignored for archives"
6399c27c18e8Smrg      fi
6400c27c18e8Smrg
6401c27c18e8Smrg      case " $deplibs" in
6402c27c18e8Smrg      *\ -l* | *\ -L*)
6403c27c18e8Smrg	func_warning "\`-l' and \`-L' are ignored for archives" ;;
6404c27c18e8Smrg      esac
6405c27c18e8Smrg
6406c27c18e8Smrg      test -n "$rpath" && \
6407c27c18e8Smrg	func_warning "\`-rpath' is ignored for archives"
6408c27c18e8Smrg
6409c27c18e8Smrg      test -n "$xrpath" && \
6410c27c18e8Smrg	func_warning "\`-R' is ignored for archives"
6411c27c18e8Smrg
6412c27c18e8Smrg      test -n "$vinfo" && \
6413c27c18e8Smrg	func_warning "\`-version-info/-version-number' is ignored for archives"
6414c27c18e8Smrg
6415c27c18e8Smrg      test -n "$release" && \
6416c27c18e8Smrg	func_warning "\`-release' is ignored for archives"
6417c27c18e8Smrg
6418c27c18e8Smrg      test -n "$export_symbols$export_symbols_regex" && \
6419c27c18e8Smrg	func_warning "\`-export-symbols' is ignored for archives"
6420c27c18e8Smrg
6421c27c18e8Smrg      # Now set the variables for building old libraries.
6422c27c18e8Smrg      build_libtool_libs=no
6423c27c18e8Smrg      oldlibs="$output"
6424c27c18e8Smrg      objs="$objs$old_deplibs"
6425c27c18e8Smrg      ;;
6426c27c18e8Smrg
6427c27c18e8Smrg    lib)
6428c27c18e8Smrg      # Make sure we only generate libraries of the form `libNAME.la'.
6429c27c18e8Smrg      case $outputname in
6430c27c18e8Smrg      lib*)
6431c27c18e8Smrg	func_stripname 'lib' '.la' "$outputname"
6432c27c18e8Smrg	name=$func_stripname_result
6433c27c18e8Smrg	eval shared_ext=\"$shrext_cmds\"
6434c27c18e8Smrg	eval libname=\"$libname_spec\"
6435c27c18e8Smrg	;;
6436c27c18e8Smrg      *)
6437c27c18e8Smrg	test "$module" = no && \
6438c27c18e8Smrg	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
6439c27c18e8Smrg
6440c27c18e8Smrg	if test "$need_lib_prefix" != no; then
6441c27c18e8Smrg	  # Add the "lib" prefix for modules if required
6442c27c18e8Smrg	  func_stripname '' '.la' "$outputname"
6443c27c18e8Smrg	  name=$func_stripname_result
6444c27c18e8Smrg	  eval shared_ext=\"$shrext_cmds\"
6445c27c18e8Smrg	  eval libname=\"$libname_spec\"
6446c27c18e8Smrg	else
6447c27c18e8Smrg	  func_stripname '' '.la' "$outputname"
6448c27c18e8Smrg	  libname=$func_stripname_result
6449c27c18e8Smrg	fi
6450c27c18e8Smrg	;;
6451c27c18e8Smrg      esac
6452c27c18e8Smrg
6453c27c18e8Smrg      if test -n "$objs"; then
6454c27c18e8Smrg	if test "$deplibs_check_method" != pass_all; then
6455c27c18e8Smrg	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
6456c27c18e8Smrg	else
645737eb1ca1Smrg	  echo
6458c27c18e8Smrg	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
6459c27c18e8Smrg	  $ECHO "*** objects $objs is not portable!"
6460c27c18e8Smrg	  libobjs="$libobjs $objs"
6461c27c18e8Smrg	fi
6462c27c18e8Smrg      fi
6463c27c18e8Smrg
6464c27c18e8Smrg      test "$dlself" != no && \
6465c27c18e8Smrg	func_warning "\`-dlopen self' is ignored for libtool libraries"
6466c27c18e8Smrg
6467c27c18e8Smrg      set dummy $rpath
6468c27c18e8Smrg      shift
6469c27c18e8Smrg      test "$#" -gt 1 && \
6470c27c18e8Smrg	func_warning "ignoring multiple \`-rpath's for a libtool library"
6471c27c18e8Smrg
6472c27c18e8Smrg      install_libdir="$1"
6473c27c18e8Smrg
6474c27c18e8Smrg      oldlibs=
6475c27c18e8Smrg      if test -z "$rpath"; then
6476c27c18e8Smrg	if test "$build_libtool_libs" = yes; then
6477c27c18e8Smrg	  # Building a libtool convenience library.
6478c27c18e8Smrg	  # Some compilers have problems with a `.al' extension so
6479c27c18e8Smrg	  # convenience libraries should have the same extension an
6480c27c18e8Smrg	  # archive normally would.
6481c27c18e8Smrg	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
6482c27c18e8Smrg	  build_libtool_libs=convenience
6483c27c18e8Smrg	  build_old_libs=yes
6484c27c18e8Smrg	fi
6485c27c18e8Smrg
6486c27c18e8Smrg	test -n "$vinfo" && \
6487c27c18e8Smrg	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
6488c27c18e8Smrg
6489c27c18e8Smrg	test -n "$release" && \
6490c27c18e8Smrg	  func_warning "\`-release' is ignored for convenience libraries"
6491c27c18e8Smrg      else
6492c27c18e8Smrg
6493c27c18e8Smrg	# Parse the version information argument.
6494c27c18e8Smrg	save_ifs="$IFS"; IFS=':'
6495c27c18e8Smrg	set dummy $vinfo 0 0 0
6496c27c18e8Smrg	shift
6497c27c18e8Smrg	IFS="$save_ifs"
6498c27c18e8Smrg
6499c27c18e8Smrg	test -n "$7" && \
6500c27c18e8Smrg	  func_fatal_help "too many parameters to \`-version-info'"
6501c27c18e8Smrg
6502c27c18e8Smrg	# convert absolute version numbers to libtool ages
6503c27c18e8Smrg	# this retains compatibility with .la files and attempts
6504c27c18e8Smrg	# to make the code below a bit more comprehensible
6505c27c18e8Smrg
6506c27c18e8Smrg	case $vinfo_number in
6507c27c18e8Smrg	yes)
6508c27c18e8Smrg	  number_major="$1"
6509c27c18e8Smrg	  number_minor="$2"
6510c27c18e8Smrg	  number_revision="$3"
6511c27c18e8Smrg	  #
6512c27c18e8Smrg	  # There are really only two kinds -- those that
6513c27c18e8Smrg	  # use the current revision as the major version
6514c27c18e8Smrg	  # and those that subtract age and use age as
6515c27c18e8Smrg	  # a minor version.  But, then there is irix
6516c27c18e8Smrg	  # which has an extra 1 added just for fun
6517c27c18e8Smrg	  #
6518c27c18e8Smrg	  case $version_type in
6519c27c18e8Smrg	  darwin|linux|osf|windows|none)
6520c27c18e8Smrg	    func_arith $number_major + $number_minor
6521c27c18e8Smrg	    current=$func_arith_result
6522c27c18e8Smrg	    age="$number_minor"
6523c27c18e8Smrg	    revision="$number_revision"
6524c27c18e8Smrg	    ;;
652537eb1ca1Smrg	  freebsd-aout|freebsd-elf|qnx|sunos)
6526c27c18e8Smrg	    current="$number_major"
6527c27c18e8Smrg	    revision="$number_minor"
6528c27c18e8Smrg	    age="0"
6529c27c18e8Smrg	    ;;
6530c27c18e8Smrg	  irix|nonstopux)
6531c27c18e8Smrg	    func_arith $number_major + $number_minor
6532c27c18e8Smrg	    current=$func_arith_result
6533c27c18e8Smrg	    age="$number_minor"
6534c27c18e8Smrg	    revision="$number_minor"
6535c27c18e8Smrg	    lt_irix_increment=no
6536c27c18e8Smrg	    ;;
6537c27c18e8Smrg	  esac
6538c27c18e8Smrg	  ;;
6539c27c18e8Smrg	no)
6540c27c18e8Smrg	  current="$1"
6541c27c18e8Smrg	  revision="$2"
6542c27c18e8Smrg	  age="$3"
6543c27c18e8Smrg	  ;;
6544c27c18e8Smrg	esac
6545c27c18e8Smrg
6546c27c18e8Smrg	# Check that each of the things are valid numbers.
6547c27c18e8Smrg	case $current in
6548c27c18e8Smrg	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]) ;;
6549c27c18e8Smrg	*)
6550c27c18e8Smrg	  func_error "CURRENT \`$current' must be a nonnegative integer"
6551c27c18e8Smrg	  func_fatal_error "\`$vinfo' is not valid version information"
6552c27c18e8Smrg	  ;;
6553c27c18e8Smrg	esac
6554c27c18e8Smrg
6555c27c18e8Smrg	case $revision in
6556c27c18e8Smrg	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]) ;;
6557c27c18e8Smrg	*)
6558c27c18e8Smrg	  func_error "REVISION \`$revision' must be a nonnegative integer"
6559c27c18e8Smrg	  func_fatal_error "\`$vinfo' is not valid version information"
6560c27c18e8Smrg	  ;;
6561c27c18e8Smrg	esac
6562c27c18e8Smrg
6563c27c18e8Smrg	case $age in
6564c27c18e8Smrg	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]) ;;
6565c27c18e8Smrg	*)
6566c27c18e8Smrg	  func_error "AGE \`$age' must be a nonnegative integer"
6567c27c18e8Smrg	  func_fatal_error "\`$vinfo' is not valid version information"
6568c27c18e8Smrg	  ;;
6569c27c18e8Smrg	esac
6570c27c18e8Smrg
6571c27c18e8Smrg	if test "$age" -gt "$current"; then
6572c27c18e8Smrg	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
6573c27c18e8Smrg	  func_fatal_error "\`$vinfo' is not valid version information"
6574c27c18e8Smrg	fi
6575c27c18e8Smrg
6576c27c18e8Smrg	# Calculate the version variables.
6577c27c18e8Smrg	major=
6578c27c18e8Smrg	versuffix=
6579c27c18e8Smrg	verstring=
6580c27c18e8Smrg	case $version_type in
6581c27c18e8Smrg	none) ;;
6582c27c18e8Smrg
6583c27c18e8Smrg	darwin)
6584c27c18e8Smrg	  # Like Linux, but with the current version available in
6585c27c18e8Smrg	  # verstring for coding it into the library header
6586c27c18e8Smrg	  func_arith $current - $age
6587c27c18e8Smrg	  major=.$func_arith_result
6588c27c18e8Smrg	  versuffix="$major.$age.$revision"
6589c27c18e8Smrg	  # Darwin ld doesn't like 0 for these options...
6590c27c18e8Smrg	  func_arith $current + 1
6591c27c18e8Smrg	  minor_current=$func_arith_result
6592c27c18e8Smrg	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
6593c27c18e8Smrg	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
6594c27c18e8Smrg	  ;;
6595c27c18e8Smrg
6596c27c18e8Smrg	freebsd-aout)
6597c27c18e8Smrg	  major=".$current"
6598c27c18e8Smrg	  versuffix=".$current.$revision";
6599c27c18e8Smrg	  ;;
6600c27c18e8Smrg
6601c27c18e8Smrg	freebsd-elf)
6602c27c18e8Smrg	  major=".$current"
6603c27c18e8Smrg	  versuffix=".$current"
6604c27c18e8Smrg	  ;;
6605c27c18e8Smrg
6606c27c18e8Smrg	irix | nonstopux)
6607c27c18e8Smrg	  if test "X$lt_irix_increment" = "Xno"; then
6608c27c18e8Smrg	    func_arith $current - $age
6609c27c18e8Smrg	  else
6610c27c18e8Smrg	    func_arith $current - $age + 1
6611c27c18e8Smrg	  fi
6612c27c18e8Smrg	  major=$func_arith_result
6613c27c18e8Smrg
6614c27c18e8Smrg	  case $version_type in
6615c27c18e8Smrg	    nonstopux) verstring_prefix=nonstopux ;;
6616c27c18e8Smrg	    *)         verstring_prefix=sgi ;;
6617c27c18e8Smrg	  esac
6618c27c18e8Smrg	  verstring="$verstring_prefix$major.$revision"
6619c27c18e8Smrg
6620c27c18e8Smrg	  # Add in all the interfaces that we are compatible with.
6621c27c18e8Smrg	  loop=$revision
6622c27c18e8Smrg	  while test "$loop" -ne 0; do
6623c27c18e8Smrg	    func_arith $revision - $loop
6624c27c18e8Smrg	    iface=$func_arith_result
6625c27c18e8Smrg	    func_arith $loop - 1
6626c27c18e8Smrg	    loop=$func_arith_result
6627c27c18e8Smrg	    verstring="$verstring_prefix$major.$iface:$verstring"
6628c27c18e8Smrg	  done
6629c27c18e8Smrg
6630c27c18e8Smrg	  # Before this point, $major must not contain `.'.
6631c27c18e8Smrg	  major=.$major
6632c27c18e8Smrg	  versuffix="$major.$revision"
6633c27c18e8Smrg	  ;;
6634c27c18e8Smrg
6635c27c18e8Smrg	linux)
6636c27c18e8Smrg	  func_arith $current - $age
6637c27c18e8Smrg	  major=.$func_arith_result
6638c27c18e8Smrg	  versuffix="$major.$age.$revision"
6639c27c18e8Smrg	  ;;
6640c27c18e8Smrg
6641c27c18e8Smrg	osf)
6642c27c18e8Smrg	  func_arith $current - $age
6643c27c18e8Smrg	  major=.$func_arith_result
6644c27c18e8Smrg	  versuffix=".$current.$age.$revision"
6645c27c18e8Smrg	  verstring="$current.$age.$revision"
6646c27c18e8Smrg
6647c27c18e8Smrg	  # Add in all the interfaces that we are compatible with.
6648c27c18e8Smrg	  loop=$age
6649c27c18e8Smrg	  while test "$loop" -ne 0; do
6650c27c18e8Smrg	    func_arith $current - $loop
6651c27c18e8Smrg	    iface=$func_arith_result
6652c27c18e8Smrg	    func_arith $loop - 1
6653c27c18e8Smrg	    loop=$func_arith_result
6654c27c18e8Smrg	    verstring="$verstring:${iface}.0"
6655c27c18e8Smrg	  done
6656c27c18e8Smrg
6657c27c18e8Smrg	  # Make executables depend on our current version.
6658c27c18e8Smrg	  verstring="$verstring:${current}.0"
6659c27c18e8Smrg	  ;;
6660c27c18e8Smrg
6661c27c18e8Smrg	qnx)
6662c27c18e8Smrg	  major=".$current"
6663c27c18e8Smrg	  versuffix=".$current"
6664c27c18e8Smrg	  ;;
6665c27c18e8Smrg
6666c27c18e8Smrg	sunos)
6667c27c18e8Smrg	  major=".$current"
6668c27c18e8Smrg	  versuffix=".$current.$revision"
6669c27c18e8Smrg	  ;;
6670c27c18e8Smrg
6671c27c18e8Smrg	windows)
6672c27c18e8Smrg	  # Use '-' rather than '.', since we only want one
6673c27c18e8Smrg	  # extension on DOS 8.3 filesystems.
6674c27c18e8Smrg	  func_arith $current - $age
6675c27c18e8Smrg	  major=$func_arith_result
6676c27c18e8Smrg	  versuffix="-$major"
6677c27c18e8Smrg	  ;;
6678c27c18e8Smrg
6679c27c18e8Smrg	*)
6680c27c18e8Smrg	  func_fatal_configuration "unknown library version type \`$version_type'"
6681c27c18e8Smrg	  ;;
6682c27c18e8Smrg	esac
6683c27c18e8Smrg
6684c27c18e8Smrg	# Clear the version info if we defaulted, and they specified a release.
6685c27c18e8Smrg	if test -z "$vinfo" && test -n "$release"; then
6686c27c18e8Smrg	  major=
6687c27c18e8Smrg	  case $version_type in
6688c27c18e8Smrg	  darwin)
6689c27c18e8Smrg	    # we can't check for "0.0" in archive_cmds due to quoting
6690c27c18e8Smrg	    # problems, so we reset it completely
6691c27c18e8Smrg	    verstring=
6692c27c18e8Smrg	    ;;
6693c27c18e8Smrg	  *)
6694c27c18e8Smrg	    verstring="0.0"
6695c27c18e8Smrg	    ;;
6696c27c18e8Smrg	  esac
6697c27c18e8Smrg	  if test "$need_version" = no; then
6698c27c18e8Smrg	    versuffix=
6699c27c18e8Smrg	  else
6700c27c18e8Smrg	    versuffix=".0.0"
6701c27c18e8Smrg	  fi
6702c27c18e8Smrg	fi
6703c27c18e8Smrg
6704c27c18e8Smrg	# Remove version info from name if versioning should be avoided
6705c27c18e8Smrg	if test "$avoid_version" = yes && test "$need_version" = no; then
6706c27c18e8Smrg	  major=
6707c27c18e8Smrg	  versuffix=
6708c27c18e8Smrg	  verstring=""
6709c27c18e8Smrg	fi
6710c27c18e8Smrg
6711c27c18e8Smrg	# Check to see if the archive will have undefined symbols.
6712c27c18e8Smrg	if test "$allow_undefined" = yes; then
6713c27c18e8Smrg	  if test "$allow_undefined_flag" = unsupported; then
6714c27c18e8Smrg	    func_warning "undefined symbols not allowed in $host shared libraries"
6715c27c18e8Smrg	    build_libtool_libs=no
6716c27c18e8Smrg	    build_old_libs=yes
6717c27c18e8Smrg	  fi
6718c27c18e8Smrg	else
6719c27c18e8Smrg	  # Don't allow undefined symbols.
6720c27c18e8Smrg	  allow_undefined_flag="$no_undefined_flag"
6721c27c18e8Smrg	fi
6722c27c18e8Smrg
6723c27c18e8Smrg      fi
6724c27c18e8Smrg
6725c27c18e8Smrg      func_generate_dlsyms "$libname" "$libname" "yes"
6726c27c18e8Smrg      libobjs="$libobjs $symfileobj"
6727c27c18e8Smrg      test "X$libobjs" = "X " && libobjs=
6728c27c18e8Smrg
6729c27c18e8Smrg      if test "$mode" != relink; then
6730c27c18e8Smrg	# Remove our outputs, but don't remove object files since they
6731c27c18e8Smrg	# may have been created when compiling PIC objects.
6732c27c18e8Smrg	removelist=
6733c27c18e8Smrg	tempremovelist=`$ECHO "$output_objdir/*"`
6734c27c18e8Smrg	for p in $tempremovelist; do
6735c27c18e8Smrg	  case $p in
6736c27c18e8Smrg	    *.$objext | *.gcno)
6737c27c18e8Smrg	       ;;
6738c27c18e8Smrg	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
6739c27c18e8Smrg	       if test "X$precious_files_regex" != "X"; then
6740c27c18e8Smrg		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
6741c27c18e8Smrg		 then
6742c27c18e8Smrg		   continue
6743c27c18e8Smrg		 fi
6744c27c18e8Smrg	       fi
6745c27c18e8Smrg	       removelist="$removelist $p"
6746c27c18e8Smrg	       ;;
6747c27c18e8Smrg	    *) ;;
6748c27c18e8Smrg	  esac
6749c27c18e8Smrg	done
6750c27c18e8Smrg	test -n "$removelist" && \
6751c27c18e8Smrg	  func_show_eval "${RM}r \$removelist"
6752c27c18e8Smrg      fi
6753c27c18e8Smrg
6754c27c18e8Smrg      # Now set the variables for building old libraries.
6755c27c18e8Smrg      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
6756c27c18e8Smrg	oldlibs="$oldlibs $output_objdir/$libname.$libext"
6757c27c18e8Smrg
6758c27c18e8Smrg	# Transform .lo files to .o files.
675937eb1ca1Smrg	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
6760c27c18e8Smrg      fi
6761c27c18e8Smrg
6762c27c18e8Smrg      # Eliminate all temporary directories.
6763c27c18e8Smrg      #for path in $notinst_path; do
676437eb1ca1Smrg      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
676537eb1ca1Smrg      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
676637eb1ca1Smrg      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
6767c27c18e8Smrg      #done
6768c27c18e8Smrg
6769c27c18e8Smrg      if test -n "$xrpath"; then
6770c27c18e8Smrg	# If the user specified any rpath flags, then add them.
6771c27c18e8Smrg	temp_xrpath=
6772c27c18e8Smrg	for libdir in $xrpath; do
6773c27c18e8Smrg	  temp_xrpath="$temp_xrpath -R$libdir"
6774c27c18e8Smrg	  case "$finalize_rpath " in
6775c27c18e8Smrg	  *" $libdir "*) ;;
6776c27c18e8Smrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
6777c27c18e8Smrg	  esac
6778c27c18e8Smrg	done
6779c27c18e8Smrg	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
6780c27c18e8Smrg	  dependency_libs="$temp_xrpath $dependency_libs"
6781c27c18e8Smrg	fi
6782c27c18e8Smrg      fi
6783c27c18e8Smrg
6784c27c18e8Smrg      # Make sure dlfiles contains only unique files that won't be dlpreopened
6785c27c18e8Smrg      old_dlfiles="$dlfiles"
6786c27c18e8Smrg      dlfiles=
6787c27c18e8Smrg      for lib in $old_dlfiles; do
6788c27c18e8Smrg	case " $dlprefiles $dlfiles " in
6789c27c18e8Smrg	*" $lib "*) ;;
6790c27c18e8Smrg	*) dlfiles="$dlfiles $lib" ;;
6791c27c18e8Smrg	esac
6792c27c18e8Smrg      done
6793c27c18e8Smrg
6794c27c18e8Smrg      # Make sure dlprefiles contains only unique files
6795c27c18e8Smrg      old_dlprefiles="$dlprefiles"
6796c27c18e8Smrg      dlprefiles=
6797c27c18e8Smrg      for lib in $old_dlprefiles; do
6798c27c18e8Smrg	case "$dlprefiles " in
6799c27c18e8Smrg	*" $lib "*) ;;
6800c27c18e8Smrg	*) dlprefiles="$dlprefiles $lib" ;;
6801c27c18e8Smrg	esac
6802c27c18e8Smrg      done
6803c27c18e8Smrg
6804c27c18e8Smrg      if test "$build_libtool_libs" = yes; then
6805c27c18e8Smrg	if test -n "$rpath"; then
6806c27c18e8Smrg	  case $host in
680737eb1ca1Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
6808c27c18e8Smrg	    # these systems don't actually have a c library (as such)!
6809c27c18e8Smrg	    ;;
6810c27c18e8Smrg	  *-*-rhapsody* | *-*-darwin1.[012])
6811c27c18e8Smrg	    # Rhapsody C library is in the System framework
6812c27c18e8Smrg	    deplibs="$deplibs System.ltframework"
6813c27c18e8Smrg	    ;;
6814c27c18e8Smrg	  *-*-netbsd*)
6815c27c18e8Smrg	    # Don't link with libc until the a.out ld.so is fixed.
6816c27c18e8Smrg	    ;;
6817c27c18e8Smrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
6818c27c18e8Smrg	    # Do not include libc due to us having libc/libc_r.
6819c27c18e8Smrg	    ;;
6820c27c18e8Smrg	  *-*-sco3.2v5* | *-*-sco5v6*)
6821c27c18e8Smrg	    # Causes problems with __ctype
6822c27c18e8Smrg	    ;;
6823c27c18e8Smrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
6824c27c18e8Smrg	    # Compiler inserts libc in the correct place for threads to work
6825c27c18e8Smrg	    ;;
6826c27c18e8Smrg	  *)
6827c27c18e8Smrg	    # Add libc to deplibs on all other systems if necessary.
6828c27c18e8Smrg	    if test "$build_libtool_need_lc" = "yes"; then
6829c27c18e8Smrg	      deplibs="$deplibs -lc"
6830c27c18e8Smrg	    fi
6831c27c18e8Smrg	    ;;
6832c27c18e8Smrg	  esac
6833c27c18e8Smrg	fi
6834c27c18e8Smrg
6835c27c18e8Smrg	# Transform deplibs into only deplibs that can be linked in shared.
6836c27c18e8Smrg	name_save=$name
6837c27c18e8Smrg	libname_save=$libname
6838c27c18e8Smrg	release_save=$release
6839c27c18e8Smrg	versuffix_save=$versuffix
6840c27c18e8Smrg	major_save=$major
6841c27c18e8Smrg	# I'm not sure if I'm treating the release correctly.  I think
6842c27c18e8Smrg	# release should show up in the -l (ie -lgmp5) so we don't want to
6843c27c18e8Smrg	# add it in twice.  Is that correct?
6844c27c18e8Smrg	release=""
6845c27c18e8Smrg	versuffix=""
6846c27c18e8Smrg	major=""
6847c27c18e8Smrg	newdeplibs=
6848c27c18e8Smrg	droppeddeps=no
6849c27c18e8Smrg	case $deplibs_check_method in
6850c27c18e8Smrg	pass_all)
6851c27c18e8Smrg	  # Don't check for shared/static.  Everything works.
6852c27c18e8Smrg	  # This might be a little naive.  We might want to check
6853c27c18e8Smrg	  # whether the library exists or not.  But this is on
6854c27c18e8Smrg	  # osf3 & osf4 and I'm not really sure... Just
6855c27c18e8Smrg	  # implementing what was already the behavior.
6856c27c18e8Smrg	  newdeplibs=$deplibs
6857c27c18e8Smrg	  ;;
6858c27c18e8Smrg	test_compile)
6859c27c18e8Smrg	  # This code stresses the "libraries are programs" paradigm to its
6860c27c18e8Smrg	  # limits. Maybe even breaks it.  We compile a program, linking it
6861c27c18e8Smrg	  # against the deplibs as a proxy for the library.  Then we can check
6862c27c18e8Smrg	  # whether they linked in statically or dynamically with ldd.
6863c27c18e8Smrg	  $opt_dry_run || $RM conftest.c
6864c27c18e8Smrg	  cat > conftest.c <<EOF
6865c27c18e8Smrg	  int main() { return 0; }
6866c27c18e8SmrgEOF
6867c27c18e8Smrg	  $opt_dry_run || $RM conftest
6868c27c18e8Smrg	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
6869c27c18e8Smrg	    ldd_output=`ldd conftest`
6870c27c18e8Smrg	    for i in $deplibs; do
6871c27c18e8Smrg	      case $i in
6872c27c18e8Smrg	      -l*)
6873c27c18e8Smrg		func_stripname -l '' "$i"
6874c27c18e8Smrg		name=$func_stripname_result
6875c27c18e8Smrg		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6876c27c18e8Smrg		  case " $predeps $postdeps " in
6877c27c18e8Smrg		  *" $i "*)
6878c27c18e8Smrg		    newdeplibs="$newdeplibs $i"
6879c27c18e8Smrg		    i=""
6880c27c18e8Smrg		    ;;
6881c27c18e8Smrg		  esac
6882c27c18e8Smrg		fi
6883c27c18e8Smrg		if test -n "$i" ; then
6884c27c18e8Smrg		  libname=`eval "\\$ECHO \"$libname_spec\""`
6885c27c18e8Smrg		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
6886c27c18e8Smrg		  set dummy $deplib_matches; shift
6887c27c18e8Smrg		  deplib_match=$1
6888c27c18e8Smrg		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
6889c27c18e8Smrg		    newdeplibs="$newdeplibs $i"
6890c27c18e8Smrg		  else
6891c27c18e8Smrg		    droppeddeps=yes
689237eb1ca1Smrg		    echo
6893c27c18e8Smrg		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
689437eb1ca1Smrg		    echo "*** I have the capability to make that library automatically link in when"
689537eb1ca1Smrg		    echo "*** you link to this library.  But I can only do this if you have a"
689637eb1ca1Smrg		    echo "*** shared version of the library, which I believe you do not have"
689737eb1ca1Smrg		    echo "*** because a test_compile did reveal that the linker did not use it for"
689837eb1ca1Smrg		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
6899c27c18e8Smrg		  fi
6900c27c18e8Smrg		fi
6901c27c18e8Smrg		;;
6902c27c18e8Smrg	      *)
6903c27c18e8Smrg		newdeplibs="$newdeplibs $i"
6904c27c18e8Smrg		;;
6905c27c18e8Smrg	      esac
6906c27c18e8Smrg	    done
6907c27c18e8Smrg	  else
6908c27c18e8Smrg	    # Error occurred in the first compile.  Let's try to salvage
6909c27c18e8Smrg	    # the situation: Compile a separate program for each library.
6910c27c18e8Smrg	    for i in $deplibs; do
6911c27c18e8Smrg	      case $i in
6912c27c18e8Smrg	      -l*)
6913c27c18e8Smrg		func_stripname -l '' "$i"
6914c27c18e8Smrg		name=$func_stripname_result
6915c27c18e8Smrg		$opt_dry_run || $RM conftest
6916c27c18e8Smrg		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
6917c27c18e8Smrg		  ldd_output=`ldd conftest`
6918c27c18e8Smrg		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6919c27c18e8Smrg		    case " $predeps $postdeps " in
6920c27c18e8Smrg		    *" $i "*)
6921c27c18e8Smrg		      newdeplibs="$newdeplibs $i"
6922c27c18e8Smrg		      i=""
6923c27c18e8Smrg		      ;;
6924c27c18e8Smrg		    esac
6925c27c18e8Smrg		  fi
6926c27c18e8Smrg		  if test -n "$i" ; then
6927c27c18e8Smrg		    libname=`eval "\\$ECHO \"$libname_spec\""`
6928c27c18e8Smrg		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
6929c27c18e8Smrg		    set dummy $deplib_matches; shift
6930c27c18e8Smrg		    deplib_match=$1
6931c27c18e8Smrg		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
6932c27c18e8Smrg		      newdeplibs="$newdeplibs $i"
6933c27c18e8Smrg		    else
6934c27c18e8Smrg		      droppeddeps=yes
693537eb1ca1Smrg		      echo
6936c27c18e8Smrg		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
693737eb1ca1Smrg		      echo "*** I have the capability to make that library automatically link in when"
693837eb1ca1Smrg		      echo "*** you link to this library.  But I can only do this if you have a"
693937eb1ca1Smrg		      echo "*** shared version of the library, which you do not appear to have"
694037eb1ca1Smrg		      echo "*** because a test_compile did reveal that the linker did not use this one"
694137eb1ca1Smrg		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
6942c27c18e8Smrg		    fi
6943c27c18e8Smrg		  fi
6944c27c18e8Smrg		else
6945c27c18e8Smrg		  droppeddeps=yes
694637eb1ca1Smrg		  echo
6947c27c18e8Smrg		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
694837eb1ca1Smrg		  echo "*** make it link in!  You will probably need to install it or some"
694937eb1ca1Smrg		  echo "*** library that it depends on before this library will be fully"
695037eb1ca1Smrg		  echo "*** functional.  Installing it before continuing would be even better."
6951c27c18e8Smrg		fi
6952c27c18e8Smrg		;;
6953c27c18e8Smrg	      *)
6954c27c18e8Smrg		newdeplibs="$newdeplibs $i"
6955c27c18e8Smrg		;;
6956c27c18e8Smrg	      esac
6957c27c18e8Smrg	    done
6958c27c18e8Smrg	  fi
6959c27c18e8Smrg	  ;;
6960c27c18e8Smrg	file_magic*)
6961c27c18e8Smrg	  set dummy $deplibs_check_method; shift
6962c27c18e8Smrg	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
6963c27c18e8Smrg	  for a_deplib in $deplibs; do
6964c27c18e8Smrg	    case $a_deplib in
6965c27c18e8Smrg	    -l*)
6966c27c18e8Smrg	      func_stripname -l '' "$a_deplib"
6967c27c18e8Smrg	      name=$func_stripname_result
6968c27c18e8Smrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6969c27c18e8Smrg		case " $predeps $postdeps " in
6970c27c18e8Smrg		*" $a_deplib "*)
6971c27c18e8Smrg		  newdeplibs="$newdeplibs $a_deplib"
6972c27c18e8Smrg		  a_deplib=""
6973c27c18e8Smrg		  ;;
6974c27c18e8Smrg		esac
6975c27c18e8Smrg	      fi
6976c27c18e8Smrg	      if test -n "$a_deplib" ; then
6977c27c18e8Smrg		libname=`eval "\\$ECHO \"$libname_spec\""`
6978c27c18e8Smrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
6979c27c18e8Smrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
6980c27c18e8Smrg		  for potent_lib in $potential_libs; do
6981c27c18e8Smrg		      # Follow soft links.
6982c27c18e8Smrg		      if ls -lLd "$potent_lib" 2>/dev/null |
6983c27c18e8Smrg			 $GREP " -> " >/dev/null; then
6984c27c18e8Smrg			continue
6985c27c18e8Smrg		      fi
6986c27c18e8Smrg		      # The statement above tries to avoid entering an
6987c27c18e8Smrg		      # endless loop below, in case of cyclic links.
6988c27c18e8Smrg		      # We might still enter an endless loop, since a link
6989c27c18e8Smrg		      # loop can be closed while we follow links,
6990c27c18e8Smrg		      # but so what?
6991c27c18e8Smrg		      potlib="$potent_lib"
6992c27c18e8Smrg		      while test -h "$potlib" 2>/dev/null; do
6993c27c18e8Smrg			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
6994c27c18e8Smrg			case $potliblink in
6995c27c18e8Smrg			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
699637eb1ca1Smrg			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
6997c27c18e8Smrg			esac
6998c27c18e8Smrg		      done
6999c27c18e8Smrg		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
7000c27c18e8Smrg			 $SED -e 10q |
7001c27c18e8Smrg			 $EGREP "$file_magic_regex" > /dev/null; then
7002c27c18e8Smrg			newdeplibs="$newdeplibs $a_deplib"
7003c27c18e8Smrg			a_deplib=""
7004c27c18e8Smrg			break 2
7005c27c18e8Smrg		      fi
7006c27c18e8Smrg		  done
7007c27c18e8Smrg		done
7008c27c18e8Smrg	      fi
7009c27c18e8Smrg	      if test -n "$a_deplib" ; then
7010c27c18e8Smrg		droppeddeps=yes
701137eb1ca1Smrg		echo
7012c27c18e8Smrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
701337eb1ca1Smrg		echo "*** I have the capability to make that library automatically link in when"
701437eb1ca1Smrg		echo "*** you link to this library.  But I can only do this if you have a"
701537eb1ca1Smrg		echo "*** shared version of the library, which you do not appear to have"
701637eb1ca1Smrg		echo "*** because I did check the linker path looking for a file starting"
7017c27c18e8Smrg		if test -z "$potlib" ; then
7018c27c18e8Smrg		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
7019c27c18e8Smrg		else
7020c27c18e8Smrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
7021c27c18e8Smrg		  $ECHO "*** using a file magic. Last file checked: $potlib"
7022c27c18e8Smrg		fi
7023c27c18e8Smrg	      fi
7024c27c18e8Smrg	      ;;
7025c27c18e8Smrg	    *)
7026c27c18e8Smrg	      # Add a -L argument.
7027c27c18e8Smrg	      newdeplibs="$newdeplibs $a_deplib"
7028c27c18e8Smrg	      ;;
7029c27c18e8Smrg	    esac
7030c27c18e8Smrg	  done # Gone through all deplibs.
7031c27c18e8Smrg	  ;;
7032c27c18e8Smrg	match_pattern*)
7033c27c18e8Smrg	  set dummy $deplibs_check_method; shift
7034c27c18e8Smrg	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7035c27c18e8Smrg	  for a_deplib in $deplibs; do
7036c27c18e8Smrg	    case $a_deplib in
7037c27c18e8Smrg	    -l*)
7038c27c18e8Smrg	      func_stripname -l '' "$a_deplib"
7039c27c18e8Smrg	      name=$func_stripname_result
7040c27c18e8Smrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7041c27c18e8Smrg		case " $predeps $postdeps " in
7042c27c18e8Smrg		*" $a_deplib "*)
7043c27c18e8Smrg		  newdeplibs="$newdeplibs $a_deplib"
7044c27c18e8Smrg		  a_deplib=""
7045c27c18e8Smrg		  ;;
7046c27c18e8Smrg		esac
7047c27c18e8Smrg	      fi
7048c27c18e8Smrg	      if test -n "$a_deplib" ; then
7049c27c18e8Smrg		libname=`eval "\\$ECHO \"$libname_spec\""`
7050c27c18e8Smrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
7051c27c18e8Smrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
7052c27c18e8Smrg		  for potent_lib in $potential_libs; do
7053c27c18e8Smrg		    potlib="$potent_lib" # see symlink-check above in file_magic test
705437eb1ca1Smrg		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
7055c27c18e8Smrg		       $EGREP "$match_pattern_regex" > /dev/null; then
7056c27c18e8Smrg		      newdeplibs="$newdeplibs $a_deplib"
7057c27c18e8Smrg		      a_deplib=""
7058c27c18e8Smrg		      break 2
7059c27c18e8Smrg		    fi
7060c27c18e8Smrg		  done
7061c27c18e8Smrg		done
7062c27c18e8Smrg	      fi
7063c27c18e8Smrg	      if test -n "$a_deplib" ; then
7064c27c18e8Smrg		droppeddeps=yes
706537eb1ca1Smrg		echo
7066c27c18e8Smrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
706737eb1ca1Smrg		echo "*** I have the capability to make that library automatically link in when"
706837eb1ca1Smrg		echo "*** you link to this library.  But I can only do this if you have a"
706937eb1ca1Smrg		echo "*** shared version of the library, which you do not appear to have"
707037eb1ca1Smrg		echo "*** because I did check the linker path looking for a file starting"
7071c27c18e8Smrg		if test -z "$potlib" ; then
7072c27c18e8Smrg		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
7073c27c18e8Smrg		else
7074c27c18e8Smrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
7075c27c18e8Smrg		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
7076c27c18e8Smrg		fi
7077c27c18e8Smrg	      fi
7078c27c18e8Smrg	      ;;
7079c27c18e8Smrg	    *)
7080c27c18e8Smrg	      # Add a -L argument.
7081c27c18e8Smrg	      newdeplibs="$newdeplibs $a_deplib"
7082c27c18e8Smrg	      ;;
7083c27c18e8Smrg	    esac
7084c27c18e8Smrg	  done # Gone through all deplibs.
7085c27c18e8Smrg	  ;;
7086c27c18e8Smrg	none | unknown | *)
7087c27c18e8Smrg	  newdeplibs=""
708837eb1ca1Smrg	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
7089c27c18e8Smrg	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7090c27c18e8Smrg	    for i in $predeps $postdeps ; do
7091c27c18e8Smrg	      # can't use Xsed below, because $i might contain '/'
709237eb1ca1Smrg	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
7093c27c18e8Smrg	    done
7094c27c18e8Smrg	  fi
709537eb1ca1Smrg	  case $tmp_deplibs in
709637eb1ca1Smrg	  *[!\	\ ]*)
709737eb1ca1Smrg	    echo
7098c27c18e8Smrg	    if test "X$deplibs_check_method" = "Xnone"; then
709937eb1ca1Smrg	      echo "*** Warning: inter-library dependencies are not supported in this platform."
7100c27c18e8Smrg	    else
710137eb1ca1Smrg	      echo "*** Warning: inter-library dependencies are not known to be supported."
7102c27c18e8Smrg	    fi
710337eb1ca1Smrg	    echo "*** All declared inter-library dependencies are being dropped."
7104c27c18e8Smrg	    droppeddeps=yes
710537eb1ca1Smrg	    ;;
710637eb1ca1Smrg	  esac
7107c27c18e8Smrg	  ;;
7108c27c18e8Smrg	esac
7109c27c18e8Smrg	versuffix=$versuffix_save
7110c27c18e8Smrg	major=$major_save
7111c27c18e8Smrg	release=$release_save
7112c27c18e8Smrg	libname=$libname_save
7113c27c18e8Smrg	name=$name_save
7114c27c18e8Smrg
7115c27c18e8Smrg	case $host in
7116c27c18e8Smrg	*-*-rhapsody* | *-*-darwin1.[012])
7117c27c18e8Smrg	  # On Rhapsody replace the C library with the System framework
711837eb1ca1Smrg	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
7119c27c18e8Smrg	  ;;
7120c27c18e8Smrg	esac
7121c27c18e8Smrg
7122c27c18e8Smrg	if test "$droppeddeps" = yes; then
7123c27c18e8Smrg	  if test "$module" = yes; then
712437eb1ca1Smrg	    echo
712537eb1ca1Smrg	    echo "*** Warning: libtool could not satisfy all declared inter-library"
7126c27c18e8Smrg	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
712737eb1ca1Smrg	    echo "*** a static module, that should work as long as the dlopening"
712837eb1ca1Smrg	    echo "*** application is linked with the -dlopen flag."
7129c27c18e8Smrg	    if test -z "$global_symbol_pipe"; then
713037eb1ca1Smrg	      echo
713137eb1ca1Smrg	      echo "*** However, this would only work if libtool was able to extract symbol"
713237eb1ca1Smrg	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
713337eb1ca1Smrg	      echo "*** not find such a program.  So, this module is probably useless."
713437eb1ca1Smrg	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
7135c27c18e8Smrg	    fi
7136c27c18e8Smrg	    if test "$build_old_libs" = no; then
7137c27c18e8Smrg	      oldlibs="$output_objdir/$libname.$libext"
7138c27c18e8Smrg	      build_libtool_libs=module
7139c27c18e8Smrg	      build_old_libs=yes
7140c27c18e8Smrg	    else
7141c27c18e8Smrg	      build_libtool_libs=no
7142c27c18e8Smrg	    fi
7143c27c18e8Smrg	  else
714437eb1ca1Smrg	    echo "*** The inter-library dependencies that have been dropped here will be"
714537eb1ca1Smrg	    echo "*** automatically added whenever a program is linked with this library"
714637eb1ca1Smrg	    echo "*** or is declared to -dlopen it."
7147c27c18e8Smrg
7148c27c18e8Smrg	    if test "$allow_undefined" = no; then
714937eb1ca1Smrg	      echo
715037eb1ca1Smrg	      echo "*** Since this library must not contain undefined symbols,"
715137eb1ca1Smrg	      echo "*** because either the platform does not support them or"
715237eb1ca1Smrg	      echo "*** it was explicitly requested with -no-undefined,"
715337eb1ca1Smrg	      echo "*** libtool will only create a static version of it."
7154c27c18e8Smrg	      if test "$build_old_libs" = no; then
7155c27c18e8Smrg		oldlibs="$output_objdir/$libname.$libext"
7156c27c18e8Smrg		build_libtool_libs=module
7157c27c18e8Smrg		build_old_libs=yes
7158c27c18e8Smrg	      else
7159c27c18e8Smrg		build_libtool_libs=no
7160c27c18e8Smrg	      fi
7161c27c18e8Smrg	    fi
7162c27c18e8Smrg	  fi
7163c27c18e8Smrg	fi
7164c27c18e8Smrg	# Done checking deplibs!
7165c27c18e8Smrg	deplibs=$newdeplibs
7166c27c18e8Smrg      fi
7167c27c18e8Smrg      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
7168c27c18e8Smrg      case $host in
7169c27c18e8Smrg	*-*-darwin*)
717037eb1ca1Smrg	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
717137eb1ca1Smrg	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
717237eb1ca1Smrg	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7173c27c18e8Smrg	  ;;
7174c27c18e8Smrg      esac
7175c27c18e8Smrg
7176c27c18e8Smrg      # move library search paths that coincide with paths to not yet
7177c27c18e8Smrg      # installed libraries to the beginning of the library search list
7178c27c18e8Smrg      new_libs=
7179c27c18e8Smrg      for path in $notinst_path; do
7180c27c18e8Smrg	case " $new_libs " in
7181c27c18e8Smrg	*" -L$path/$objdir "*) ;;
7182c27c18e8Smrg	*)
7183c27c18e8Smrg	  case " $deplibs " in
7184c27c18e8Smrg	  *" -L$path/$objdir "*)
7185c27c18e8Smrg	    new_libs="$new_libs -L$path/$objdir" ;;
7186c27c18e8Smrg	  esac
7187c27c18e8Smrg	  ;;
7188c27c18e8Smrg	esac
7189c27c18e8Smrg      done
7190c27c18e8Smrg      for deplib in $deplibs; do
7191c27c18e8Smrg	case $deplib in
7192c27c18e8Smrg	-L*)
7193c27c18e8Smrg	  case " $new_libs " in
7194c27c18e8Smrg	  *" $deplib "*) ;;
7195c27c18e8Smrg	  *) new_libs="$new_libs $deplib" ;;
7196c27c18e8Smrg	  esac
7197c27c18e8Smrg	  ;;
7198c27c18e8Smrg	*) new_libs="$new_libs $deplib" ;;
7199c27c18e8Smrg	esac
7200c27c18e8Smrg      done
7201c27c18e8Smrg      deplibs="$new_libs"
7202c27c18e8Smrg
7203c27c18e8Smrg      # All the library-specific variables (install_libdir is set above).
7204c27c18e8Smrg      library_names=
7205c27c18e8Smrg      old_library=
7206c27c18e8Smrg      dlname=
7207c27c18e8Smrg
7208c27c18e8Smrg      # Test again, we may have decided not to build it any more
7209c27c18e8Smrg      if test "$build_libtool_libs" = yes; then
7210c27c18e8Smrg	if test "$hardcode_into_libs" = yes; then
7211c27c18e8Smrg	  # Hardcode the library paths
7212c27c18e8Smrg	  hardcode_libdirs=
7213c27c18e8Smrg	  dep_rpath=
7214c27c18e8Smrg	  rpath="$finalize_rpath"
7215c27c18e8Smrg	  test "$mode" != relink && rpath="$compile_rpath$rpath"
7216c27c18e8Smrg	  for libdir in $rpath; do
7217c27c18e8Smrg	    if test -n "$hardcode_libdir_flag_spec"; then
7218c27c18e8Smrg	      if test -n "$hardcode_libdir_separator"; then
7219c27c18e8Smrg		if test -z "$hardcode_libdirs"; then
7220c27c18e8Smrg		  hardcode_libdirs="$libdir"
7221c27c18e8Smrg		else
7222c27c18e8Smrg		  # Just accumulate the unique libdirs.
7223c27c18e8Smrg		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
7224c27c18e8Smrg		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
7225c27c18e8Smrg		    ;;
7226c27c18e8Smrg		  *)
7227c27c18e8Smrg		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
7228c27c18e8Smrg		    ;;
7229c27c18e8Smrg		  esac
7230c27c18e8Smrg		fi
7231c27c18e8Smrg	      else
7232c27c18e8Smrg		eval flag=\"$hardcode_libdir_flag_spec\"
7233c27c18e8Smrg		dep_rpath="$dep_rpath $flag"
7234c27c18e8Smrg	      fi
7235c27c18e8Smrg	    elif test -n "$runpath_var"; then
7236c27c18e8Smrg	      case "$perm_rpath " in
7237c27c18e8Smrg	      *" $libdir "*) ;;
7238c27c18e8Smrg	      *) perm_rpath="$perm_rpath $libdir" ;;
7239c27c18e8Smrg	      esac
7240c27c18e8Smrg	    fi
7241c27c18e8Smrg	  done
7242c27c18e8Smrg	  # Substitute the hardcoded libdirs into the rpath.
7243c27c18e8Smrg	  if test -n "$hardcode_libdir_separator" &&
7244c27c18e8Smrg	     test -n "$hardcode_libdirs"; then
7245c27c18e8Smrg	    libdir="$hardcode_libdirs"
7246c27c18e8Smrg	    if test -n "$hardcode_libdir_flag_spec_ld"; then
7247c27c18e8Smrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
7248c27c18e8Smrg	    else
7249c27c18e8Smrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
7250c27c18e8Smrg	    fi
7251c27c18e8Smrg	  fi
7252c27c18e8Smrg	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
7253c27c18e8Smrg	    # We should set the runpath_var.
7254c27c18e8Smrg	    rpath=
7255c27c18e8Smrg	    for dir in $perm_rpath; do
7256c27c18e8Smrg	      rpath="$rpath$dir:"
7257c27c18e8Smrg	    done
7258c27c18e8Smrg	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
7259c27c18e8Smrg	  fi
7260c27c18e8Smrg	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
7261c27c18e8Smrg	fi
7262c43cc173Smrg
7263c27c18e8Smrg	shlibpath="$finalize_shlibpath"
7264c27c18e8Smrg	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
7265c27c18e8Smrg	if test -n "$shlibpath"; then
7266c27c18e8Smrg	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
7267c27c18e8Smrg	fi
7268c43cc173Smrg
7269c27c18e8Smrg	# Get the real and link names of the library.
7270c27c18e8Smrg	eval shared_ext=\"$shrext_cmds\"
7271c27c18e8Smrg	eval library_names=\"$library_names_spec\"
7272c27c18e8Smrg	set dummy $library_names
7273c27c18e8Smrg	shift
7274c27c18e8Smrg	realname="$1"
7275c27c18e8Smrg	shift
7276c43cc173Smrg
7277c27c18e8Smrg	if test -n "$soname_spec"; then
7278c27c18e8Smrg	  eval soname=\"$soname_spec\"
7279c27c18e8Smrg	else
7280c27c18e8Smrg	  soname="$realname"
7281c27c18e8Smrg	fi
7282c27c18e8Smrg	if test -z "$dlname"; then
7283c27c18e8Smrg	  dlname=$soname
7284c27c18e8Smrg	fi
7285c43cc173Smrg
7286c27c18e8Smrg	lib="$output_objdir/$realname"
7287c27c18e8Smrg	linknames=
7288c27c18e8Smrg	for link
7289c27c18e8Smrg	do
7290c27c18e8Smrg	  linknames="$linknames $link"
7291c27c18e8Smrg	done
7292c43cc173Smrg
7293c27c18e8Smrg	# Use standard objects if they are pic
729437eb1ca1Smrg	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
7295c27c18e8Smrg	test "X$libobjs" = "X " && libobjs=
7296c43cc173Smrg
7297c27c18e8Smrg	delfiles=
7298c27c18e8Smrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
7299c27c18e8Smrg	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
7300c27c18e8Smrg	  export_symbols="$output_objdir/$libname.uexp"
7301c27c18e8Smrg	  delfiles="$delfiles $export_symbols"
7302c27c18e8Smrg	fi
7303c43cc173Smrg
7304c27c18e8Smrg	orig_export_symbols=
7305c27c18e8Smrg	case $host_os in
7306c27c18e8Smrg	cygwin* | mingw* | cegcc*)
7307c27c18e8Smrg	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
7308c27c18e8Smrg	    # exporting using user supplied symfile
7309c27c18e8Smrg	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
7310c27c18e8Smrg	      # and it's NOT already a .def file. Must figure out
7311c27c18e8Smrg	      # which of the given symbols are data symbols and tag
7312c27c18e8Smrg	      # them as such. So, trigger use of export_symbols_cmds.
7313c27c18e8Smrg	      # export_symbols gets reassigned inside the "prepare
7314c27c18e8Smrg	      # the list of exported symbols" if statement, so the
7315c27c18e8Smrg	      # include_expsyms logic still works.
7316c27c18e8Smrg	      orig_export_symbols="$export_symbols"
7317c27c18e8Smrg	      export_symbols=
7318c27c18e8Smrg	      always_export_symbols=yes
7319c27c18e8Smrg	    fi
7320c27c18e8Smrg	  fi
7321c27c18e8Smrg	  ;;
7322c27c18e8Smrg	esac
7323c43cc173Smrg
7324c27c18e8Smrg	# Prepare the list of exported symbols
7325c27c18e8Smrg	if test -z "$export_symbols"; then
7326c27c18e8Smrg	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
7327c27c18e8Smrg	    func_verbose "generating symbol list for \`$libname.la'"
7328c27c18e8Smrg	    export_symbols="$output_objdir/$libname.exp"
7329c27c18e8Smrg	    $opt_dry_run || $RM $export_symbols
7330c27c18e8Smrg	    cmds=$export_symbols_cmds
7331c27c18e8Smrg	    save_ifs="$IFS"; IFS='~'
7332c27c18e8Smrg	    for cmd in $cmds; do
7333c27c18e8Smrg	      IFS="$save_ifs"
7334c27c18e8Smrg	      eval cmd=\"$cmd\"
7335c27c18e8Smrg	      func_len " $cmd"
7336c27c18e8Smrg	      len=$func_len_result
7337c27c18e8Smrg	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
7338c27c18e8Smrg		func_show_eval "$cmd" 'exit $?'
7339c27c18e8Smrg		skipped_export=false
7340c27c18e8Smrg	      else
7341c27c18e8Smrg		# The command line is too long to execute in one step.
7342c27c18e8Smrg		func_verbose "using reloadable object file for export list..."
7343c27c18e8Smrg		skipped_export=:
7344c27c18e8Smrg		# Break out early, otherwise skipped_export may be
7345c27c18e8Smrg		# set to false by a later but shorter cmd.
7346c27c18e8Smrg		break
7347c27c18e8Smrg	      fi
7348c27c18e8Smrg	    done
7349c27c18e8Smrg	    IFS="$save_ifs"
7350c27c18e8Smrg	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
7351c27c18e8Smrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
7352c27c18e8Smrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
7353c27c18e8Smrg	    fi
7354c27c18e8Smrg	  fi
7355c27c18e8Smrg	fi
7356c43cc173Smrg
7357c27c18e8Smrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
7358c27c18e8Smrg	  tmp_export_symbols="$export_symbols"
7359c27c18e8Smrg	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
736037eb1ca1Smrg	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
7361c27c18e8Smrg	fi
7362c43cc173Smrg
7363c27c18e8Smrg	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
7364c27c18e8Smrg	  # The given exports_symbols file has to be filtered, so filter it.
7365c27c18e8Smrg	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
7366c27c18e8Smrg	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
7367c27c18e8Smrg	  # 's' commands which not all seds can handle. GNU sed should be fine
7368c27c18e8Smrg	  # though. Also, the filter scales superlinearly with the number of
7369c27c18e8Smrg	  # global variables. join(1) would be nice here, but unfortunately
7370c27c18e8Smrg	  # isn't a blessed tool.
7371c27c18e8Smrg	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
7372c27c18e8Smrg	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
7373c27c18e8Smrg	  export_symbols=$output_objdir/$libname.def
7374c27c18e8Smrg	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
7375c43cc173Smrg	fi
7376c43cc173Smrg
7377c27c18e8Smrg	tmp_deplibs=
7378c27c18e8Smrg	for test_deplib in $deplibs; do
7379c27c18e8Smrg	  case " $convenience " in
7380c27c18e8Smrg	  *" $test_deplib "*) ;;
7381c27c18e8Smrg	  *)
7382c27c18e8Smrg	    tmp_deplibs="$tmp_deplibs $test_deplib"
7383c27c18e8Smrg	    ;;
7384c27c18e8Smrg	  esac
7385c27c18e8Smrg	done
7386c27c18e8Smrg	deplibs="$tmp_deplibs"
7387c43cc173Smrg
7388c27c18e8Smrg	if test -n "$convenience"; then
7389c27c18e8Smrg	  if test -n "$whole_archive_flag_spec" &&
7390c27c18e8Smrg	    test "$compiler_needs_object" = yes &&
7391c27c18e8Smrg	    test -z "$libobjs"; then
7392c27c18e8Smrg	    # extract the archives, so we have objects to list.
7393c27c18e8Smrg	    # TODO: could optimize this to just extract one archive.
7394c27c18e8Smrg	    whole_archive_flag_spec=
7395c27c18e8Smrg	  fi
7396c27c18e8Smrg	  if test -n "$whole_archive_flag_spec"; then
7397c27c18e8Smrg	    save_libobjs=$libobjs
7398c27c18e8Smrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
7399c27c18e8Smrg	    test "X$libobjs" = "X " && libobjs=
7400c27c18e8Smrg	  else
7401c27c18e8Smrg	    gentop="$output_objdir/${outputname}x"
7402c27c18e8Smrg	    generated="$generated $gentop"
7403c43cc173Smrg
7404c27c18e8Smrg	    func_extract_archives $gentop $convenience
7405c27c18e8Smrg	    libobjs="$libobjs $func_extract_archives_result"
7406c27c18e8Smrg	    test "X$libobjs" = "X " && libobjs=
7407c27c18e8Smrg	  fi
7408c27c18e8Smrg	fi
7409c43cc173Smrg
7410c27c18e8Smrg	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
7411c27c18e8Smrg	  eval flag=\"$thread_safe_flag_spec\"
7412c27c18e8Smrg	  linker_flags="$linker_flags $flag"
7413c27c18e8Smrg	fi
7414c43cc173Smrg
7415c27c18e8Smrg	# Make a backup of the uninstalled library when relinking
7416c27c18e8Smrg	if test "$mode" = relink; then
7417c27c18e8Smrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
7418c43cc173Smrg	fi
7419c43cc173Smrg
7420c27c18e8Smrg	# Do each of the archive commands.
7421c27c18e8Smrg	if test "$module" = yes && test -n "$module_cmds" ; then
7422c27c18e8Smrg	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
7423c27c18e8Smrg	    eval test_cmds=\"$module_expsym_cmds\"
7424c27c18e8Smrg	    cmds=$module_expsym_cmds
7425c27c18e8Smrg	  else
7426c27c18e8Smrg	    eval test_cmds=\"$module_cmds\"
7427c27c18e8Smrg	    cmds=$module_cmds
7428c27c18e8Smrg	  fi
7429c27c18e8Smrg	else
7430c27c18e8Smrg	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
7431c27c18e8Smrg	    eval test_cmds=\"$archive_expsym_cmds\"
7432c27c18e8Smrg	    cmds=$archive_expsym_cmds
7433c27c18e8Smrg	  else
7434c27c18e8Smrg	    eval test_cmds=\"$archive_cmds\"
7435c27c18e8Smrg	    cmds=$archive_cmds
7436c27c18e8Smrg	  fi
7437c43cc173Smrg	fi
7438c43cc173Smrg
7439c27c18e8Smrg	if test "X$skipped_export" != "X:" &&
7440c27c18e8Smrg	   func_len " $test_cmds" &&
7441c27c18e8Smrg	   len=$func_len_result &&
7442c27c18e8Smrg	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
7443c27c18e8Smrg	  :
7444c27c18e8Smrg	else
7445c27c18e8Smrg	  # The command line is too long to link in one step, link piecewise
7446c27c18e8Smrg	  # or, if using GNU ld and skipped_export is not :, use a linker
7447c27c18e8Smrg	  # script.
7448c43cc173Smrg
7449c27c18e8Smrg	  # Save the value of $output and $libobjs because we want to
7450c27c18e8Smrg	  # use them later.  If we have whole_archive_flag_spec, we
7451c27c18e8Smrg	  # want to use save_libobjs as it was before
7452c27c18e8Smrg	  # whole_archive_flag_spec was expanded, because we can't
7453c27c18e8Smrg	  # assume the linker understands whole_archive_flag_spec.
7454c27c18e8Smrg	  # This may have to be revisited, in case too many
7455c27c18e8Smrg	  # convenience libraries get linked in and end up exceeding
7456c27c18e8Smrg	  # the spec.
7457c27c18e8Smrg	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
7458c27c18e8Smrg	    save_libobjs=$libobjs
7459c27c18e8Smrg	  fi
7460c27c18e8Smrg	  save_output=$output
746137eb1ca1Smrg	  func_basename "$output"
746237eb1ca1Smrg	  output_la=$func_basename_result
7463c43cc173Smrg
7464c27c18e8Smrg	  # Clear the reloadable object creation command queue and
7465c27c18e8Smrg	  # initialize k to one.
7466c27c18e8Smrg	  test_cmds=
7467c27c18e8Smrg	  concat_cmds=
7468c27c18e8Smrg	  objlist=
7469c27c18e8Smrg	  last_robj=
7470c27c18e8Smrg	  k=1
7471c43cc173Smrg
7472c27c18e8Smrg	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
7473c27c18e8Smrg	    output=${output_objdir}/${output_la}.lnkscript
7474c27c18e8Smrg	    func_verbose "creating GNU ld script: $output"
747537eb1ca1Smrg	    echo 'INPUT (' > $output
7476c27c18e8Smrg	    for obj in $save_libobjs
7477c27c18e8Smrg	    do
7478c27c18e8Smrg	      $ECHO "$obj" >> $output
7479c27c18e8Smrg	    done
748037eb1ca1Smrg	    echo ')' >> $output
7481c27c18e8Smrg	    delfiles="$delfiles $output"
7482c27c18e8Smrg	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
7483c27c18e8Smrg	    output=${output_objdir}/${output_la}.lnk
7484c27c18e8Smrg	    func_verbose "creating linker input file list: $output"
7485c27c18e8Smrg	    : > $output
7486c27c18e8Smrg	    set x $save_libobjs
7487c27c18e8Smrg	    shift
7488c27c18e8Smrg	    firstobj=
7489c27c18e8Smrg	    if test "$compiler_needs_object" = yes; then
7490c27c18e8Smrg	      firstobj="$1 "
7491c27c18e8Smrg	      shift
7492c27c18e8Smrg	    fi
7493c27c18e8Smrg	    for obj
7494c27c18e8Smrg	    do
7495c27c18e8Smrg	      $ECHO "$obj" >> $output
7496c27c18e8Smrg	    done
7497c27c18e8Smrg	    delfiles="$delfiles $output"
7498c27c18e8Smrg	    output=$firstobj\"$file_list_spec$output\"
7499c27c18e8Smrg	  else
7500c27c18e8Smrg	    if test -n "$save_libobjs"; then
7501c27c18e8Smrg	      func_verbose "creating reloadable object files..."
7502c27c18e8Smrg	      output=$output_objdir/$output_la-${k}.$objext
7503c27c18e8Smrg	      eval test_cmds=\"$reload_cmds\"
7504c27c18e8Smrg	      func_len " $test_cmds"
7505c27c18e8Smrg	      len0=$func_len_result
7506c27c18e8Smrg	      len=$len0
7507c27c18e8Smrg
7508c27c18e8Smrg	      # Loop over the list of objects to be linked.
7509c27c18e8Smrg	      for obj in $save_libobjs
7510c27c18e8Smrg	      do
7511c27c18e8Smrg		func_len " $obj"
7512c27c18e8Smrg		func_arith $len + $func_len_result
7513c27c18e8Smrg		len=$func_arith_result
7514c27c18e8Smrg		if test "X$objlist" = X ||
7515c27c18e8Smrg		   test "$len" -lt "$max_cmd_len"; then
7516c27c18e8Smrg		  func_append objlist " $obj"
7517c27c18e8Smrg		else
7518c27c18e8Smrg		  # The command $test_cmds is almost too long, add a
7519c27c18e8Smrg		  # command to the queue.
7520c27c18e8Smrg		  if test "$k" -eq 1 ; then
7521c27c18e8Smrg		    # The first file doesn't have a previous command to add.
752237eb1ca1Smrg		    reload_objs=$objlist
752337eb1ca1Smrg		    eval concat_cmds=\"$reload_cmds\"
7524c27c18e8Smrg		  else
7525c27c18e8Smrg		    # All subsequent reloadable object files will link in
7526c27c18e8Smrg		    # the last one created.
752737eb1ca1Smrg		    reload_objs="$objlist $last_robj"
752837eb1ca1Smrg		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
7529c27c18e8Smrg		  fi
7530c27c18e8Smrg		  last_robj=$output_objdir/$output_la-${k}.$objext
7531c27c18e8Smrg		  func_arith $k + 1
7532c27c18e8Smrg		  k=$func_arith_result
7533c27c18e8Smrg		  output=$output_objdir/$output_la-${k}.$objext
753437eb1ca1Smrg		  objlist=" $obj"
7535c27c18e8Smrg		  func_len " $last_robj"
7536c27c18e8Smrg		  func_arith $len0 + $func_len_result
7537c27c18e8Smrg		  len=$func_arith_result
7538c27c18e8Smrg		fi
7539c27c18e8Smrg	      done
7540c27c18e8Smrg	      # Handle the remaining objects by creating one last
7541c27c18e8Smrg	      # reloadable object file.  All subsequent reloadable object
7542c27c18e8Smrg	      # files will link in the last one created.
7543c27c18e8Smrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
754437eb1ca1Smrg	      reload_objs="$objlist $last_robj"
754537eb1ca1Smrg	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
7546c27c18e8Smrg	      if test -n "$last_robj"; then
7547c27c18e8Smrg	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
7548c27c18e8Smrg	      fi
7549c27c18e8Smrg	      delfiles="$delfiles $output"
7550c43cc173Smrg
7551c27c18e8Smrg	    else
7552c27c18e8Smrg	      output=
7553c27c18e8Smrg	    fi
7554c27c18e8Smrg
7555c27c18e8Smrg	    if ${skipped_export-false}; then
7556c27c18e8Smrg	      func_verbose "generating symbol list for \`$libname.la'"
7557c27c18e8Smrg	      export_symbols="$output_objdir/$libname.exp"
7558c27c18e8Smrg	      $opt_dry_run || $RM $export_symbols
7559c27c18e8Smrg	      libobjs=$output
7560c27c18e8Smrg	      # Append the command to create the export file.
7561c27c18e8Smrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
7562c27c18e8Smrg	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
7563c27c18e8Smrg	      if test -n "$last_robj"; then
7564c27c18e8Smrg		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
7565c27c18e8Smrg	      fi
7566c27c18e8Smrg	    fi
7567c43cc173Smrg
7568c27c18e8Smrg	    test -n "$save_libobjs" &&
7569c27c18e8Smrg	      func_verbose "creating a temporary reloadable object file: $output"
7570c43cc173Smrg
7571c27c18e8Smrg	    # Loop through the commands generated above and execute them.
7572c27c18e8Smrg	    save_ifs="$IFS"; IFS='~'
7573c27c18e8Smrg	    for cmd in $concat_cmds; do
7574c27c18e8Smrg	      IFS="$save_ifs"
7575c27c18e8Smrg	      $opt_silent || {
7576c27c18e8Smrg		  func_quote_for_expand "$cmd"
7577c27c18e8Smrg		  eval "func_echo $func_quote_for_expand_result"
7578c27c18e8Smrg	      }
7579c27c18e8Smrg	      $opt_dry_run || eval "$cmd" || {
7580c27c18e8Smrg		lt_exit=$?
7581c27c18e8Smrg
7582c27c18e8Smrg		# Restore the uninstalled library and exit
7583c27c18e8Smrg		if test "$mode" = relink; then
7584c27c18e8Smrg		  ( cd "$output_objdir" && \
7585c27c18e8Smrg		    $RM "${realname}T" && \
7586c27c18e8Smrg		    $MV "${realname}U" "$realname" )
7587c27c18e8Smrg		fi
7588c43cc173Smrg
7589c27c18e8Smrg		exit $lt_exit
7590c27c18e8Smrg	      }
7591c27c18e8Smrg	    done
7592c27c18e8Smrg	    IFS="$save_ifs"
7593c43cc173Smrg
7594c27c18e8Smrg	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
7595c27c18e8Smrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
7596c27c18e8Smrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
7597c43cc173Smrg	    fi
7598c43cc173Smrg	  fi
7599c43cc173Smrg
7600c27c18e8Smrg          if ${skipped_export-false}; then
7601c27c18e8Smrg	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
7602c27c18e8Smrg	      tmp_export_symbols="$export_symbols"
7603c27c18e8Smrg	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
760437eb1ca1Smrg	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
7605c27c18e8Smrg	    fi
7606c43cc173Smrg
7607c27c18e8Smrg	    if test -n "$orig_export_symbols"; then
7608c27c18e8Smrg	      # The given exports_symbols file has to be filtered, so filter it.
7609c27c18e8Smrg	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
7610c27c18e8Smrg	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
7611c27c18e8Smrg	      # 's' commands which not all seds can handle. GNU sed should be fine
7612c27c18e8Smrg	      # though. Also, the filter scales superlinearly with the number of
7613c27c18e8Smrg	      # global variables. join(1) would be nice here, but unfortunately
7614c27c18e8Smrg	      # isn't a blessed tool.
7615c27c18e8Smrg	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
7616c27c18e8Smrg	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
7617c27c18e8Smrg	      export_symbols=$output_objdir/$libname.def
7618c27c18e8Smrg	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
7619c27c18e8Smrg	    fi
7620c27c18e8Smrg	  fi
7621c43cc173Smrg
7622c27c18e8Smrg	  libobjs=$output
7623c27c18e8Smrg	  # Restore the value of output.
7624c27c18e8Smrg	  output=$save_output
7625c43cc173Smrg
7626c27c18e8Smrg	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
7627c27c18e8Smrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
7628c27c18e8Smrg	    test "X$libobjs" = "X " && libobjs=
7629c27c18e8Smrg	  fi
7630c27c18e8Smrg	  # Expand the library linking commands again to reset the
7631c27c18e8Smrg	  # value of $libobjs for piecewise linking.
7632c27c18e8Smrg
7633c27c18e8Smrg	  # Do each of the archive commands.
7634c27c18e8Smrg	  if test "$module" = yes && test -n "$module_cmds" ; then
7635c27c18e8Smrg	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
7636c27c18e8Smrg	      cmds=$module_expsym_cmds
7637c43cc173Smrg	    else
7638c27c18e8Smrg	      cmds=$module_cmds
7639c43cc173Smrg	    fi
7640c43cc173Smrg	  else
7641c27c18e8Smrg	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
7642c27c18e8Smrg	      cmds=$archive_expsym_cmds
7643c27c18e8Smrg	    else
7644c27c18e8Smrg	      cmds=$archive_cmds
7645c27c18e8Smrg	    fi
7646c43cc173Smrg	  fi
7647c43cc173Smrg	fi
7648c43cc173Smrg
7649c27c18e8Smrg	if test -n "$delfiles"; then
7650c27c18e8Smrg	  # Append the command to remove temporary files to $cmds.
7651c27c18e8Smrg	  eval cmds=\"\$cmds~\$RM $delfiles\"
7652c27c18e8Smrg	fi
7653c43cc173Smrg
7654c27c18e8Smrg	# Add any objects from preloaded convenience libraries
7655c27c18e8Smrg	if test -n "$dlprefiles"; then
7656c27c18e8Smrg	  gentop="$output_objdir/${outputname}x"
7657c27c18e8Smrg	  generated="$generated $gentop"
7658c43cc173Smrg
7659c27c18e8Smrg	  func_extract_archives $gentop $dlprefiles
7660c27c18e8Smrg	  libobjs="$libobjs $func_extract_archives_result"
7661c27c18e8Smrg	  test "X$libobjs" = "X " && libobjs=
7662c43cc173Smrg	fi
7663c43cc173Smrg
7664c27c18e8Smrg	save_ifs="$IFS"; IFS='~'
7665c27c18e8Smrg	for cmd in $cmds; do
7666c27c18e8Smrg	  IFS="$save_ifs"
7667c27c18e8Smrg	  eval cmd=\"$cmd\"
7668c27c18e8Smrg	  $opt_silent || {
7669c27c18e8Smrg	    func_quote_for_expand "$cmd"
7670c27c18e8Smrg	    eval "func_echo $func_quote_for_expand_result"
7671c27c18e8Smrg	  }
7672c27c18e8Smrg	  $opt_dry_run || eval "$cmd" || {
7673c27c18e8Smrg	    lt_exit=$?
7674c43cc173Smrg
7675c27c18e8Smrg	    # Restore the uninstalled library and exit
7676c27c18e8Smrg	    if test "$mode" = relink; then
7677c27c18e8Smrg	      ( cd "$output_objdir" && \
7678c27c18e8Smrg	        $RM "${realname}T" && \
7679c27c18e8Smrg		$MV "${realname}U" "$realname" )
7680c43cc173Smrg	    fi
7681c43cc173Smrg
7682c27c18e8Smrg	    exit $lt_exit
7683c27c18e8Smrg	  }
7684c27c18e8Smrg	done
7685c27c18e8Smrg	IFS="$save_ifs"
7686c43cc173Smrg
7687c27c18e8Smrg	# Restore the uninstalled library and exit
7688c27c18e8Smrg	if test "$mode" = relink; then
7689c27c18e8Smrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
7690c43cc173Smrg
7691c27c18e8Smrg	  if test -n "$convenience"; then
7692c27c18e8Smrg	    if test -z "$whole_archive_flag_spec"; then
7693c27c18e8Smrg	      func_show_eval '${RM}r "$gentop"'
7694c27c18e8Smrg	    fi
7695c27c18e8Smrg	  fi
7696c43cc173Smrg
7697c27c18e8Smrg	  exit $EXIT_SUCCESS
7698c27c18e8Smrg	fi
7699c43cc173Smrg
7700c27c18e8Smrg	# Create links to the real library.
7701c27c18e8Smrg	for linkname in $linknames; do
7702c27c18e8Smrg	  if test "$realname" != "$linkname"; then
7703c27c18e8Smrg	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
7704c43cc173Smrg	  fi
7705c43cc173Smrg	done
7706c43cc173Smrg
7707c27c18e8Smrg	# If -module or -export-dynamic was specified, set the dlname.
7708c27c18e8Smrg	if test "$module" = yes || test "$export_dynamic" = yes; then
7709c27c18e8Smrg	  # On all known operating systems, these are identical.
7710c27c18e8Smrg	  dlname="$soname"
7711c27c18e8Smrg	fi
7712c27c18e8Smrg      fi
7713c43cc173Smrg      ;;
7714c43cc173Smrg
7715c27c18e8Smrg    obj)
7716c27c18e8Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
7717c27c18e8Smrg	func_warning "\`-dlopen' is ignored for objects"
7718c27c18e8Smrg      fi
7719c43cc173Smrg
7720c27c18e8Smrg      case " $deplibs" in
7721c27c18e8Smrg      *\ -l* | *\ -L*)
7722c27c18e8Smrg	func_warning "\`-l' and \`-L' are ignored for objects" ;;
7723c43cc173Smrg      esac
7724c43cc173Smrg
7725c27c18e8Smrg      test -n "$rpath" && \
7726c27c18e8Smrg	func_warning "\`-rpath' is ignored for objects"
7727c43cc173Smrg
7728c27c18e8Smrg      test -n "$xrpath" && \
7729c27c18e8Smrg	func_warning "\`-R' is ignored for objects"
7730c43cc173Smrg
7731c27c18e8Smrg      test -n "$vinfo" && \
7732c27c18e8Smrg	func_warning "\`-version-info' is ignored for objects"
7733c27c18e8Smrg
7734c27c18e8Smrg      test -n "$release" && \
7735c27c18e8Smrg	func_warning "\`-release' is ignored for objects"
7736c27c18e8Smrg
7737c27c18e8Smrg      case $output in
7738c27c18e8Smrg      *.lo)
7739c27c18e8Smrg	test -n "$objs$old_deplibs" && \
7740c27c18e8Smrg	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
7741c27c18e8Smrg
7742c27c18e8Smrg	libobj=$output
7743c27c18e8Smrg	func_lo2o "$libobj"
7744c27c18e8Smrg	obj=$func_lo2o_result
7745c43cc173Smrg	;;
7746c43cc173Smrg      *)
7747c27c18e8Smrg	libobj=
7748c27c18e8Smrg	obj="$output"
7749c43cc173Smrg	;;
7750c43cc173Smrg      esac
7751c43cc173Smrg
7752c27c18e8Smrg      # Delete the old objects.
7753c27c18e8Smrg      $opt_dry_run || $RM $obj $libobj
7754c43cc173Smrg
7755c27c18e8Smrg      # Objects from convenience libraries.  This assumes
7756c27c18e8Smrg      # single-version convenience libraries.  Whenever we create
7757c27c18e8Smrg      # different ones for PIC/non-PIC, this we'll have to duplicate
7758c27c18e8Smrg      # the extraction.
7759c27c18e8Smrg      reload_conv_objs=
7760c27c18e8Smrg      gentop=
7761c27c18e8Smrg      # reload_cmds runs $LD directly, so let us get rid of
7762c27c18e8Smrg      # -Wl from whole_archive_flag_spec and hope we can get by with
7763c27c18e8Smrg      # turning comma into space..
7764c27c18e8Smrg      wl=
7765c43cc173Smrg
7766c27c18e8Smrg      if test -n "$convenience"; then
7767c27c18e8Smrg	if test -n "$whole_archive_flag_spec"; then
7768c27c18e8Smrg	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
776937eb1ca1Smrg	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
7770c27c18e8Smrg	else
7771c27c18e8Smrg	  gentop="$output_objdir/${obj}x"
7772c27c18e8Smrg	  generated="$generated $gentop"
7773c43cc173Smrg
7774c27c18e8Smrg	  func_extract_archives $gentop $convenience
7775c27c18e8Smrg	  reload_conv_objs="$reload_objs $func_extract_archives_result"
7776c27c18e8Smrg	fi
7777c43cc173Smrg      fi
7778c43cc173Smrg
7779c27c18e8Smrg      # Create the old-style object.
778037eb1ca1Smrg      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
7781c43cc173Smrg
7782c27c18e8Smrg      output="$obj"
7783c27c18e8Smrg      func_execute_cmds "$reload_cmds" 'exit $?'
7784c43cc173Smrg
7785c27c18e8Smrg      # Exit if we aren't doing a library object file.
7786c27c18e8Smrg      if test -z "$libobj"; then
7787c27c18e8Smrg	if test -n "$gentop"; then
7788c27c18e8Smrg	  func_show_eval '${RM}r "$gentop"'
7789c27c18e8Smrg	fi
7790c27c18e8Smrg
7791c27c18e8Smrg	exit $EXIT_SUCCESS
7792c43cc173Smrg      fi
7793c27c18e8Smrg
7794c27c18e8Smrg      if test "$build_libtool_libs" != yes; then
7795c27c18e8Smrg	if test -n "$gentop"; then
7796c27c18e8Smrg	  func_show_eval '${RM}r "$gentop"'
7797c27c18e8Smrg	fi
7798c27c18e8Smrg
7799c27c18e8Smrg	# Create an invalid libtool object if no PIC, so that we don't
7800c27c18e8Smrg	# accidentally link it into a program.
7801c27c18e8Smrg	# $show "echo timestamp > $libobj"
7802c27c18e8Smrg	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
7803c27c18e8Smrg	exit $EXIT_SUCCESS
7804c27c18e8Smrg      fi
7805c27c18e8Smrg
7806c27c18e8Smrg      if test -n "$pic_flag" || test "$pic_mode" != default; then
7807c27c18e8Smrg	# Only do commands if we really have different PIC objects.
7808c27c18e8Smrg	reload_objs="$libobjs $reload_conv_objs"
7809c27c18e8Smrg	output="$libobj"
7810c27c18e8Smrg	func_execute_cmds "$reload_cmds" 'exit $?'
7811c27c18e8Smrg      fi
7812c27c18e8Smrg
7813c27c18e8Smrg      if test -n "$gentop"; then
7814c27c18e8Smrg	func_show_eval '${RM}r "$gentop"'
7815c27c18e8Smrg      fi
7816c27c18e8Smrg
7817c27c18e8Smrg      exit $EXIT_SUCCESS
7818c43cc173Smrg      ;;
7819c43cc173Smrg
7820c27c18e8Smrg    prog)
7821c27c18e8Smrg      case $host in
7822c27c18e8Smrg	*cygwin*) func_stripname '' '.exe' "$output"
7823c27c18e8Smrg	          output=$func_stripname_result.exe;;
7824c27c18e8Smrg      esac
7825c27c18e8Smrg      test -n "$vinfo" && \
7826c27c18e8Smrg	func_warning "\`-version-info' is ignored for programs"
7827c43cc173Smrg
7828c27c18e8Smrg      test -n "$release" && \
7829c27c18e8Smrg	func_warning "\`-release' is ignored for programs"
7830c43cc173Smrg
7831c27c18e8Smrg      test "$preload" = yes \
7832c27c18e8Smrg        && test "$dlopen_support" = unknown \
7833c27c18e8Smrg	&& test "$dlopen_self" = unknown \
7834c27c18e8Smrg	&& test "$dlopen_self_static" = unknown && \
7835c27c18e8Smrg	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
7836c27c18e8Smrg
7837c27c18e8Smrg      case $host in
7838c27c18e8Smrg      *-*-rhapsody* | *-*-darwin1.[012])
7839c27c18e8Smrg	# On Rhapsody replace the C library is the System framework
784037eb1ca1Smrg	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
784137eb1ca1Smrg	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
7842c43cc173Smrg	;;
7843c27c18e8Smrg      esac
7844c43cc173Smrg
7845c27c18e8Smrg      case $host in
7846c27c18e8Smrg      *-*-darwin*)
7847c27c18e8Smrg	# Don't allow lazy linking, it breaks C++ global constructors
7848c27c18e8Smrg	# But is supposedly fixed on 10.4 or later (yay!).
7849c27c18e8Smrg	if test "$tagname" = CXX ; then
7850c27c18e8Smrg	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
7851c27c18e8Smrg	    10.[0123])
7852c27c18e8Smrg	      compile_command="$compile_command ${wl}-bind_at_load"
7853c27c18e8Smrg	      finalize_command="$finalize_command ${wl}-bind_at_load"
7854c27c18e8Smrg	    ;;
7855c27c18e8Smrg	  esac
7856c43cc173Smrg	fi
7857c27c18e8Smrg	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
785837eb1ca1Smrg	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
785937eb1ca1Smrg	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7860c27c18e8Smrg	;;
7861c27c18e8Smrg      esac
7862c43cc173Smrg
7863c43cc173Smrg
7864c27c18e8Smrg      # move library search paths that coincide with paths to not yet
7865c27c18e8Smrg      # installed libraries to the beginning of the library search list
7866c27c18e8Smrg      new_libs=
7867c27c18e8Smrg      for path in $notinst_path; do
7868c27c18e8Smrg	case " $new_libs " in
7869c27c18e8Smrg	*" -L$path/$objdir "*) ;;
7870c27c18e8Smrg	*)
7871c27c18e8Smrg	  case " $compile_deplibs " in
7872c27c18e8Smrg	  *" -L$path/$objdir "*)
7873c27c18e8Smrg	    new_libs="$new_libs -L$path/$objdir" ;;
7874c43cc173Smrg	  esac
7875c27c18e8Smrg	  ;;
7876c27c18e8Smrg	esac
7877c27c18e8Smrg      done
7878c27c18e8Smrg      for deplib in $compile_deplibs; do
7879c27c18e8Smrg	case $deplib in
7880c27c18e8Smrg	-L*)
7881c27c18e8Smrg	  case " $new_libs " in
7882c27c18e8Smrg	  *" $deplib "*) ;;
7883c27c18e8Smrg	  *) new_libs="$new_libs $deplib" ;;
7884c43cc173Smrg	  esac
7885c27c18e8Smrg	  ;;
7886c27c18e8Smrg	*) new_libs="$new_libs $deplib" ;;
7887c27c18e8Smrg	esac
7888c27c18e8Smrg      done
7889c27c18e8Smrg      compile_deplibs="$new_libs"
7890c43cc173Smrg
7891c43cc173Smrg
7892c27c18e8Smrg      compile_command="$compile_command $compile_deplibs"
7893c27c18e8Smrg      finalize_command="$finalize_command $finalize_deplibs"
7894c43cc173Smrg
7895c27c18e8Smrg      if test -n "$rpath$xrpath"; then
7896c27c18e8Smrg	# If the user specified any rpath flags, then add them.
7897c27c18e8Smrg	for libdir in $rpath $xrpath; do
7898c27c18e8Smrg	  # This is the magic to use -rpath.
7899c27c18e8Smrg	  case "$finalize_rpath " in
7900c27c18e8Smrg	  *" $libdir "*) ;;
7901c27c18e8Smrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
7902c27c18e8Smrg	  esac
7903c27c18e8Smrg	done
7904c27c18e8Smrg      fi
7905c43cc173Smrg
7906c27c18e8Smrg      # Now hardcode the library paths
7907c27c18e8Smrg      rpath=
7908c27c18e8Smrg      hardcode_libdirs=
7909c27c18e8Smrg      for libdir in $compile_rpath $finalize_rpath; do
7910c27c18e8Smrg	if test -n "$hardcode_libdir_flag_spec"; then
7911c27c18e8Smrg	  if test -n "$hardcode_libdir_separator"; then
7912c27c18e8Smrg	    if test -z "$hardcode_libdirs"; then
7913c27c18e8Smrg	      hardcode_libdirs="$libdir"
7914c27c18e8Smrg	    else
7915c27c18e8Smrg	      # Just accumulate the unique libdirs.
7916c27c18e8Smrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
7917c27c18e8Smrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
7918c27c18e8Smrg		;;
7919c27c18e8Smrg	      *)
7920c27c18e8Smrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
7921c27c18e8Smrg		;;
7922c27c18e8Smrg	      esac
7923c27c18e8Smrg	    fi
7924c43cc173Smrg	  else
7925c27c18e8Smrg	    eval flag=\"$hardcode_libdir_flag_spec\"
7926c27c18e8Smrg	    rpath="$rpath $flag"
7927c43cc173Smrg	  fi
7928c27c18e8Smrg	elif test -n "$runpath_var"; then
7929c27c18e8Smrg	  case "$perm_rpath " in
7930c27c18e8Smrg	  *" $libdir "*) ;;
7931c27c18e8Smrg	  *) perm_rpath="$perm_rpath $libdir" ;;
7932c27c18e8Smrg	  esac
7933c27c18e8Smrg	fi
7934c27c18e8Smrg	case $host in
7935c27c18e8Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
7936c27c18e8Smrg	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
7937c27c18e8Smrg	  case :$dllsearchpath: in
7938c27c18e8Smrg	  *":$libdir:"*) ;;
7939c27c18e8Smrg	  ::) dllsearchpath=$libdir;;
7940c27c18e8Smrg	  *) dllsearchpath="$dllsearchpath:$libdir";;
7941c27c18e8Smrg	  esac
7942c27c18e8Smrg	  case :$dllsearchpath: in
7943c27c18e8Smrg	  *":$testbindir:"*) ;;
7944c27c18e8Smrg	  ::) dllsearchpath=$testbindir;;
7945c27c18e8Smrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
7946c27c18e8Smrg	  esac
7947c27c18e8Smrg	  ;;
7948c27c18e8Smrg	esac
7949c27c18e8Smrg      done
7950c27c18e8Smrg      # Substitute the hardcoded libdirs into the rpath.
7951c27c18e8Smrg      if test -n "$hardcode_libdir_separator" &&
7952c27c18e8Smrg	 test -n "$hardcode_libdirs"; then
7953c27c18e8Smrg	libdir="$hardcode_libdirs"
7954c27c18e8Smrg	eval rpath=\" $hardcode_libdir_flag_spec\"
7955c27c18e8Smrg      fi
7956c27c18e8Smrg      compile_rpath="$rpath"
7957c43cc173Smrg
7958c27c18e8Smrg      rpath=
7959c27c18e8Smrg      hardcode_libdirs=
7960c27c18e8Smrg      for libdir in $finalize_rpath; do
7961c27c18e8Smrg	if test -n "$hardcode_libdir_flag_spec"; then
7962c27c18e8Smrg	  if test -n "$hardcode_libdir_separator"; then
7963c27c18e8Smrg	    if test -z "$hardcode_libdirs"; then
7964c27c18e8Smrg	      hardcode_libdirs="$libdir"
7965c27c18e8Smrg	    else
7966c27c18e8Smrg	      # Just accumulate the unique libdirs.
7967c27c18e8Smrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
7968c27c18e8Smrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
7969c27c18e8Smrg		;;
7970c27c18e8Smrg	      *)
7971c27c18e8Smrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
7972c27c18e8Smrg		;;
7973c27c18e8Smrg	      esac
7974c27c18e8Smrg	    fi
7975c43cc173Smrg	  else
7976c27c18e8Smrg	    eval flag=\"$hardcode_libdir_flag_spec\"
7977c27c18e8Smrg	    rpath="$rpath $flag"
7978c43cc173Smrg	  fi
7979c27c18e8Smrg	elif test -n "$runpath_var"; then
7980c27c18e8Smrg	  case "$finalize_perm_rpath " in
7981c27c18e8Smrg	  *" $libdir "*) ;;
7982c27c18e8Smrg	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
7983c27c18e8Smrg	  esac
7984c43cc173Smrg	fi
7985c27c18e8Smrg      done
7986c27c18e8Smrg      # Substitute the hardcoded libdirs into the rpath.
7987c27c18e8Smrg      if test -n "$hardcode_libdir_separator" &&
7988c27c18e8Smrg	 test -n "$hardcode_libdirs"; then
7989c27c18e8Smrg	libdir="$hardcode_libdirs"
7990c27c18e8Smrg	eval rpath=\" $hardcode_libdir_flag_spec\"
7991c27c18e8Smrg      fi
7992c27c18e8Smrg      finalize_rpath="$rpath"
7993c43cc173Smrg
7994c27c18e8Smrg      if test -n "$libobjs" && test "$build_old_libs" = yes; then
7995c27c18e8Smrg	# Transform all the library objects into standard objects.
799637eb1ca1Smrg	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
799737eb1ca1Smrg	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
7998c27c18e8Smrg      fi
7999c43cc173Smrg
8000c27c18e8Smrg      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
8001c43cc173Smrg
8002c27c18e8Smrg      # template prelinking step
8003c27c18e8Smrg      if test -n "$prelink_cmds"; then
8004c27c18e8Smrg	func_execute_cmds "$prelink_cmds" 'exit $?'
8005c27c18e8Smrg      fi
8006c43cc173Smrg
8007c27c18e8Smrg      wrappers_required=yes
8008c27c18e8Smrg      case $host in
800937eb1ca1Smrg      *cegcc* | *mingw32ce*)
801037eb1ca1Smrg        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
801137eb1ca1Smrg        wrappers_required=no
801237eb1ca1Smrg        ;;
8013c27c18e8Smrg      *cygwin* | *mingw* )
8014c27c18e8Smrg        if test "$build_libtool_libs" != yes; then
8015c27c18e8Smrg          wrappers_required=no
8016c27c18e8Smrg        fi
8017c27c18e8Smrg        ;;
8018c27c18e8Smrg      *)
8019c27c18e8Smrg        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
8020c27c18e8Smrg          wrappers_required=no
8021c27c18e8Smrg        fi
8022c27c18e8Smrg        ;;
8023c27c18e8Smrg      esac
8024c27c18e8Smrg      if test "$wrappers_required" = no; then
8025c27c18e8Smrg	# Replace the output file specification.
802637eb1ca1Smrg	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8027c27c18e8Smrg	link_command="$compile_command$compile_rpath"
8028c43cc173Smrg
8029c27c18e8Smrg	# We have no uninstalled library dependencies, so finalize right now.
8030c27c18e8Smrg	exit_status=0
8031c27c18e8Smrg	func_show_eval "$link_command" 'exit_status=$?'
8032c43cc173Smrg
8033c27c18e8Smrg	# Delete the generated files.
8034c27c18e8Smrg	if test -f "$output_objdir/${outputname}S.${objext}"; then
8035c27c18e8Smrg	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
8036c43cc173Smrg	fi
8037c43cc173Smrg
8038c27c18e8Smrg	exit $exit_status
8039c27c18e8Smrg      fi
8040c43cc173Smrg
8041c27c18e8Smrg      if test -n "$compile_shlibpath$finalize_shlibpath"; then
8042c27c18e8Smrg	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
8043c27c18e8Smrg      fi
8044c27c18e8Smrg      if test -n "$finalize_shlibpath"; then
8045c27c18e8Smrg	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
8046c27c18e8Smrg      fi
8047c43cc173Smrg
8048c27c18e8Smrg      compile_var=
8049c27c18e8Smrg      finalize_var=
8050c27c18e8Smrg      if test -n "$runpath_var"; then
8051c27c18e8Smrg	if test -n "$perm_rpath"; then
8052c27c18e8Smrg	  # We should set the runpath_var.
8053c27c18e8Smrg	  rpath=
8054c27c18e8Smrg	  for dir in $perm_rpath; do
8055c27c18e8Smrg	    rpath="$rpath$dir:"
8056c27c18e8Smrg	  done
8057c27c18e8Smrg	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
8058c43cc173Smrg	fi
8059c27c18e8Smrg	if test -n "$finalize_perm_rpath"; then
8060c27c18e8Smrg	  # We should set the runpath_var.
8061c27c18e8Smrg	  rpath=
8062c27c18e8Smrg	  for dir in $finalize_perm_rpath; do
8063c27c18e8Smrg	    rpath="$rpath$dir:"
8064c27c18e8Smrg	  done
8065c27c18e8Smrg	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
8066c43cc173Smrg	fi
8067c27c18e8Smrg      fi
8068c43cc173Smrg
8069c27c18e8Smrg      if test "$no_install" = yes; then
8070c27c18e8Smrg	# We don't need to create a wrapper script.
8071c27c18e8Smrg	link_command="$compile_var$compile_command$compile_rpath"
8072c27c18e8Smrg	# Replace the output file specification.
807337eb1ca1Smrg	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8074c27c18e8Smrg	# Delete the old output file.
8075c27c18e8Smrg	$opt_dry_run || $RM $output
8076c27c18e8Smrg	# Link the executable and exit
8077c27c18e8Smrg	func_show_eval "$link_command" 'exit $?'
8078c43cc173Smrg	exit $EXIT_SUCCESS
8079c27c18e8Smrg      fi
8080c43cc173Smrg
8081c27c18e8Smrg      if test "$hardcode_action" = relink; then
8082c27c18e8Smrg	# Fast installation is not supported
8083c27c18e8Smrg	link_command="$compile_var$compile_command$compile_rpath"
8084c27c18e8Smrg	relink_command="$finalize_var$finalize_command$finalize_rpath"
8085c27c18e8Smrg
8086c27c18e8Smrg	func_warning "this platform does not like uninstalled shared libraries"
8087c27c18e8Smrg	func_warning "\`$output' will be relinked during installation"
8088c27c18e8Smrg      else
8089c27c18e8Smrg	if test "$fast_install" != no; then
8090c27c18e8Smrg	  link_command="$finalize_var$compile_command$finalize_rpath"
8091c27c18e8Smrg	  if test "$fast_install" = yes; then
809237eb1ca1Smrg	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
8093c27c18e8Smrg	  else
8094c27c18e8Smrg	    # fast_install is set to needless
8095c27c18e8Smrg	    relink_command=
8096c27c18e8Smrg	  fi
8097c43cc173Smrg	else
8098c27c18e8Smrg	  link_command="$compile_var$compile_command$compile_rpath"
8099c27c18e8Smrg	  relink_command="$finalize_var$finalize_command$finalize_rpath"
8100c43cc173Smrg	fi
8101c27c18e8Smrg      fi
8102c43cc173Smrg
8103c27c18e8Smrg      # Replace the output file specification.
810437eb1ca1Smrg      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
8105c43cc173Smrg
8106c27c18e8Smrg      # Delete the old output files.
8107c27c18e8Smrg      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
8108c43cc173Smrg
8109c27c18e8Smrg      func_show_eval "$link_command" 'exit $?'
8110c43cc173Smrg
8111c27c18e8Smrg      # Now create the wrapper script.
8112c27c18e8Smrg      func_verbose "creating $output"
8113c43cc173Smrg
8114c27c18e8Smrg      # Quote the relink command for shipping.
8115c27c18e8Smrg      if test -n "$relink_command"; then
8116c27c18e8Smrg	# Preserve any variables that may affect compiler behavior
8117c27c18e8Smrg	for var in $variables_saved_for_relink; do
8118c27c18e8Smrg	  if eval test -z \"\${$var+set}\"; then
8119c27c18e8Smrg	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
8120c27c18e8Smrg	  elif eval var_value=\$$var; test -z "$var_value"; then
8121c27c18e8Smrg	    relink_command="$var=; export $var; $relink_command"
8122c43cc173Smrg	  else
8123c27c18e8Smrg	    func_quote_for_eval "$var_value"
8124c27c18e8Smrg	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
8125c43cc173Smrg	  fi
8126c27c18e8Smrg	done
8127c27c18e8Smrg	relink_command="(cd `pwd`; $relink_command)"
812837eb1ca1Smrg	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
8129c27c18e8Smrg      fi
8130c27c18e8Smrg
8131c27c18e8Smrg      # Only actually do things if not in dry run mode.
8132c27c18e8Smrg      $opt_dry_run || {
8133c27c18e8Smrg	# win32 will think the script is a binary if it has
8134c27c18e8Smrg	# a .exe suffix, so we strip it off here.
8135c27c18e8Smrg	case $output in
8136c27c18e8Smrg	  *.exe) func_stripname '' '.exe' "$output"
8137c27c18e8Smrg	         output=$func_stripname_result ;;
8138c27c18e8Smrg	esac
8139c27c18e8Smrg	# test for cygwin because mv fails w/o .exe extensions
8140c27c18e8Smrg	case $host in
8141c27c18e8Smrg	  *cygwin*)
8142c27c18e8Smrg	    exeext=.exe
8143c27c18e8Smrg	    func_stripname '' '.exe' "$outputname"
8144c27c18e8Smrg	    outputname=$func_stripname_result ;;
8145c27c18e8Smrg	  *) exeext= ;;
8146c43cc173Smrg	esac
8147c27c18e8Smrg	case $host in
8148c27c18e8Smrg	  *cygwin* | *mingw* )
8149c27c18e8Smrg	    func_dirname_and_basename "$output" "" "."
8150c27c18e8Smrg	    output_name=$func_basename_result
8151c27c18e8Smrg	    output_path=$func_dirname_result
8152c27c18e8Smrg	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
8153c27c18e8Smrg	    cwrapper="$output_path/$output_name.exe"
8154c27c18e8Smrg	    $RM $cwrappersource $cwrapper
8155c27c18e8Smrg	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
8156c27c18e8Smrg
8157c27c18e8Smrg	    func_emit_cwrapperexe_src > $cwrappersource
8158c27c18e8Smrg
8159c27c18e8Smrg	    # The wrapper executable is built using the $host compiler,
8160c27c18e8Smrg	    # because it contains $host paths and files. If cross-
8161c27c18e8Smrg	    # compiling, it, like the target executable, must be
8162c27c18e8Smrg	    # executed on the $host or under an emulation environment.
8163c27c18e8Smrg	    $opt_dry_run || {
8164c27c18e8Smrg	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
8165c27c18e8Smrg	      $STRIP $cwrapper
8166c27c18e8Smrg	    }
8167c43cc173Smrg
8168c27c18e8Smrg	    # Now, create the wrapper script for func_source use:
8169c27c18e8Smrg	    func_ltwrapper_scriptname $cwrapper
8170c27c18e8Smrg	    $RM $func_ltwrapper_scriptname_result
8171c27c18e8Smrg	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
8172c27c18e8Smrg	    $opt_dry_run || {
8173c27c18e8Smrg	      # note: this script will not be executed, so do not chmod.
8174c27c18e8Smrg	      if test "x$build" = "x$host" ; then
8175c27c18e8Smrg		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
8176c27c18e8Smrg	      else
8177c27c18e8Smrg		func_emit_wrapper no > $func_ltwrapper_scriptname_result
8178c27c18e8Smrg	      fi
8179c27c18e8Smrg	    }
8180c27c18e8Smrg	  ;;
8181c27c18e8Smrg	  * )
8182c27c18e8Smrg	    $RM $output
8183c27c18e8Smrg	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
8184c43cc173Smrg
8185c27c18e8Smrg	    func_emit_wrapper no > $output
8186c27c18e8Smrg	    chmod +x $output
8187c27c18e8Smrg	  ;;
8188c27c18e8Smrg	esac
8189c27c18e8Smrg      }
8190c27c18e8Smrg      exit $EXIT_SUCCESS
8191c27c18e8Smrg      ;;
8192c27c18e8Smrg    esac
8193c43cc173Smrg
8194c27c18e8Smrg    # See if we need to build an old-fashioned archive.
8195c27c18e8Smrg    for oldlib in $oldlibs; do
8196c43cc173Smrg
8197c27c18e8Smrg      if test "$build_libtool_libs" = convenience; then
8198c27c18e8Smrg	oldobjs="$libobjs_save $symfileobj"
8199c27c18e8Smrg	addlibs="$convenience"
8200c27c18e8Smrg	build_libtool_libs=no
8201c27c18e8Smrg      else
8202c27c18e8Smrg	if test "$build_libtool_libs" = module; then
8203c27c18e8Smrg	  oldobjs="$libobjs_save"
8204c27c18e8Smrg	  build_libtool_libs=no
8205c27c18e8Smrg	else
8206c27c18e8Smrg	  oldobjs="$old_deplibs $non_pic_objects"
8207c27c18e8Smrg	  if test "$preload" = yes && test -f "$symfileobj"; then
8208c27c18e8Smrg	    oldobjs="$oldobjs $symfileobj"
8209c27c18e8Smrg	  fi
8210c27c18e8Smrg	fi
8211c27c18e8Smrg	addlibs="$old_convenience"
8212c43cc173Smrg      fi
8213c43cc173Smrg
8214c27c18e8Smrg      if test -n "$addlibs"; then
8215c27c18e8Smrg	gentop="$output_objdir/${outputname}x"
8216c27c18e8Smrg	generated="$generated $gentop"
8217c43cc173Smrg
8218c27c18e8Smrg	func_extract_archives $gentop $addlibs
8219c27c18e8Smrg	oldobjs="$oldobjs $func_extract_archives_result"
8220c27c18e8Smrg      fi
8221c43cc173Smrg
8222c27c18e8Smrg      # Do each command in the archive commands.
8223c27c18e8Smrg      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
8224c27c18e8Smrg	cmds=$old_archive_from_new_cmds
8225c27c18e8Smrg      else
8226c43cc173Smrg
8227c27c18e8Smrg	# Add any objects from preloaded convenience libraries
8228c27c18e8Smrg	if test -n "$dlprefiles"; then
8229c27c18e8Smrg	  gentop="$output_objdir/${outputname}x"
8230c27c18e8Smrg	  generated="$generated $gentop"
8231c43cc173Smrg
8232c27c18e8Smrg	  func_extract_archives $gentop $dlprefiles
8233c27c18e8Smrg	  oldobjs="$oldobjs $func_extract_archives_result"
8234c27c18e8Smrg	fi
8235c43cc173Smrg
8236c27c18e8Smrg	# POSIX demands no paths to be encoded in archives.  We have
8237c27c18e8Smrg	# to avoid creating archives with duplicate basenames if we
8238c27c18e8Smrg	# might have to extract them afterwards, e.g., when creating a
8239c27c18e8Smrg	# static archive out of a convenience library, or when linking
8240c27c18e8Smrg	# the entirety of a libtool archive into another (currently
8241c27c18e8Smrg	# not supported by libtool).
8242c27c18e8Smrg	if (for obj in $oldobjs
8243c27c18e8Smrg	    do
8244c27c18e8Smrg	      func_basename "$obj"
8245c27c18e8Smrg	      $ECHO "$func_basename_result"
8246c27c18e8Smrg	    done | sort | sort -uc >/dev/null 2>&1); then
8247c27c18e8Smrg	  :
8248c27c18e8Smrg	else
824937eb1ca1Smrg	  echo "copying selected object files to avoid basename conflicts..."
8250c27c18e8Smrg	  gentop="$output_objdir/${outputname}x"
8251c27c18e8Smrg	  generated="$generated $gentop"
8252c27c18e8Smrg	  func_mkdir_p "$gentop"
8253c27c18e8Smrg	  save_oldobjs=$oldobjs
8254c27c18e8Smrg	  oldobjs=
8255c27c18e8Smrg	  counter=1
8256c27c18e8Smrg	  for obj in $save_oldobjs
8257c27c18e8Smrg	  do
8258c27c18e8Smrg	    func_basename "$obj"
8259c27c18e8Smrg	    objbase="$func_basename_result"
8260c27c18e8Smrg	    case " $oldobjs " in
8261c27c18e8Smrg	    " ") oldobjs=$obj ;;
8262c27c18e8Smrg	    *[\ /]"$objbase "*)
8263c27c18e8Smrg	      while :; do
8264c27c18e8Smrg		# Make sure we don't pick an alternate name that also
8265c27c18e8Smrg		# overlaps.
8266c27c18e8Smrg		newobj=lt$counter-$objbase
8267c27c18e8Smrg		func_arith $counter + 1
8268c27c18e8Smrg		counter=$func_arith_result
8269c27c18e8Smrg		case " $oldobjs " in
8270c27c18e8Smrg		*[\ /]"$newobj "*) ;;
8271c27c18e8Smrg		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
8272c27c18e8Smrg		esac
8273c27c18e8Smrg	      done
8274c27c18e8Smrg	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
8275c27c18e8Smrg	      oldobjs="$oldobjs $gentop/$newobj"
8276c27c18e8Smrg	      ;;
8277c27c18e8Smrg	    *) oldobjs="$oldobjs $obj" ;;
8278c27c18e8Smrg	    esac
8279c43cc173Smrg	  done
8280c43cc173Smrg	fi
8281c27c18e8Smrg	eval cmds=\"$old_archive_cmds\"
8282c43cc173Smrg
8283c27c18e8Smrg	func_len " $cmds"
8284c27c18e8Smrg	len=$func_len_result
8285c27c18e8Smrg	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
8286c27c18e8Smrg	  cmds=$old_archive_cmds
8287c27c18e8Smrg	else
8288c27c18e8Smrg	  # the command line is too long to link in one step, link in parts
8289c27c18e8Smrg	  func_verbose "using piecewise archive linking..."
8290c27c18e8Smrg	  save_RANLIB=$RANLIB
8291c27c18e8Smrg	  RANLIB=:
8292c27c18e8Smrg	  objlist=
8293c27c18e8Smrg	  concat_cmds=
8294c27c18e8Smrg	  save_oldobjs=$oldobjs
8295c27c18e8Smrg	  oldobjs=
8296c27c18e8Smrg	  # Is there a better way of finding the last object in the list?
8297c27c18e8Smrg	  for obj in $save_oldobjs
8298c27c18e8Smrg	  do
8299c27c18e8Smrg	    last_oldobj=$obj
8300c27c18e8Smrg	  done
8301c27c18e8Smrg	  eval test_cmds=\"$old_archive_cmds\"
8302c27c18e8Smrg	  func_len " $test_cmds"
8303c27c18e8Smrg	  len0=$func_len_result
8304c27c18e8Smrg	  len=$len0
8305c27c18e8Smrg	  for obj in $save_oldobjs
8306c27c18e8Smrg	  do
8307c27c18e8Smrg	    func_len " $obj"
8308c27c18e8Smrg	    func_arith $len + $func_len_result
8309c27c18e8Smrg	    len=$func_arith_result
8310c27c18e8Smrg	    func_append objlist " $obj"
8311c27c18e8Smrg	    if test "$len" -lt "$max_cmd_len"; then
8312c27c18e8Smrg	      :
8313c27c18e8Smrg	    else
8314c27c18e8Smrg	      # the above command should be used before it gets too long
8315c27c18e8Smrg	      oldobjs=$objlist
8316c27c18e8Smrg	      if test "$obj" = "$last_oldobj" ; then
8317c27c18e8Smrg		RANLIB=$save_RANLIB
8318c27c18e8Smrg	      fi
8319c27c18e8Smrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8320c27c18e8Smrg	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
8321c27c18e8Smrg	      objlist=
8322c27c18e8Smrg	      len=$len0
8323c27c18e8Smrg	    fi
8324c27c18e8Smrg	  done
8325c27c18e8Smrg	  RANLIB=$save_RANLIB
8326c27c18e8Smrg	  oldobjs=$objlist
8327c27c18e8Smrg	  if test "X$oldobjs" = "X" ; then
8328c27c18e8Smrg	    eval cmds=\"\$concat_cmds\"
8329c27c18e8Smrg	  else
8330c27c18e8Smrg	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
8331c27c18e8Smrg	  fi
8332c27c18e8Smrg	fi
8333c27c18e8Smrg      fi
8334c27c18e8Smrg      func_execute_cmds "$cmds" 'exit $?'
8335c43cc173Smrg    done
8336c43cc173Smrg
8337c27c18e8Smrg    test -n "$generated" && \
8338c27c18e8Smrg      func_show_eval "${RM}r$generated"
8339c43cc173Smrg
8340c27c18e8Smrg    # Now create the libtool archive.
8341c27c18e8Smrg    case $output in
8342c27c18e8Smrg    *.la)
8343c27c18e8Smrg      old_library=
8344c27c18e8Smrg      test "$build_old_libs" = yes && old_library="$libname.$libext"
8345c27c18e8Smrg      func_verbose "creating $output"
8346c43cc173Smrg
8347c27c18e8Smrg      # Preserve any variables that may affect compiler behavior
8348c27c18e8Smrg      for var in $variables_saved_for_relink; do
8349c27c18e8Smrg	if eval test -z \"\${$var+set}\"; then
8350c27c18e8Smrg	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
8351c27c18e8Smrg	elif eval var_value=\$$var; test -z "$var_value"; then
8352c27c18e8Smrg	  relink_command="$var=; export $var; $relink_command"
8353c43cc173Smrg	else
8354c27c18e8Smrg	  func_quote_for_eval "$var_value"
8355c27c18e8Smrg	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
8356c43cc173Smrg	fi
8357c27c18e8Smrg      done
8358c27c18e8Smrg      # Quote the link command for shipping.
8359c27c18e8Smrg      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
836037eb1ca1Smrg      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
8361c27c18e8Smrg      if test "$hardcode_automatic" = yes ; then
8362c27c18e8Smrg	relink_command=
8363c27c18e8Smrg      fi
8364c43cc173Smrg
8365c27c18e8Smrg      # Only create the output if not a dry run.
8366c27c18e8Smrg      $opt_dry_run || {
8367c27c18e8Smrg	for installed in no yes; do
8368c27c18e8Smrg	  if test "$installed" = yes; then
8369c27c18e8Smrg	    if test -z "$install_libdir"; then
8370c27c18e8Smrg	      break
8371c27c18e8Smrg	    fi
8372c27c18e8Smrg	    output="$output_objdir/$outputname"i
8373c27c18e8Smrg	    # Replace all uninstalled libtool libraries with the installed ones
8374c27c18e8Smrg	    newdependency_libs=
8375c27c18e8Smrg	    for deplib in $dependency_libs; do
8376c27c18e8Smrg	      case $deplib in
8377c27c18e8Smrg	      *.la)
8378c27c18e8Smrg		func_basename "$deplib"
8379c27c18e8Smrg		name="$func_basename_result"
8380c27c18e8Smrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
8381c27c18e8Smrg		test -z "$libdir" && \
8382c27c18e8Smrg		  func_fatal_error "\`$deplib' is not a valid libtool archive"
8383c27c18e8Smrg		newdependency_libs="$newdependency_libs $libdir/$name"
8384c27c18e8Smrg		;;
8385c27c18e8Smrg	      *) newdependency_libs="$newdependency_libs $deplib" ;;
8386c27c18e8Smrg	      esac
8387c27c18e8Smrg	    done
8388c27c18e8Smrg	    dependency_libs="$newdependency_libs"
8389c27c18e8Smrg	    newdlfiles=
8390c27c18e8Smrg
8391c27c18e8Smrg	    for lib in $dlfiles; do
8392c27c18e8Smrg	      case $lib in
8393c27c18e8Smrg	      *.la)
8394c27c18e8Smrg	        func_basename "$lib"
8395c27c18e8Smrg		name="$func_basename_result"
8396c27c18e8Smrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
8397c27c18e8Smrg		test -z "$libdir" && \
8398c27c18e8Smrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
8399c27c18e8Smrg		newdlfiles="$newdlfiles $libdir/$name"
8400c27c18e8Smrg		;;
8401c27c18e8Smrg	      *) newdlfiles="$newdlfiles $lib" ;;
8402c27c18e8Smrg	      esac
8403c27c18e8Smrg	    done
8404c27c18e8Smrg	    dlfiles="$newdlfiles"
8405c27c18e8Smrg	    newdlprefiles=
8406c27c18e8Smrg	    for lib in $dlprefiles; do
8407c27c18e8Smrg	      case $lib in
8408c27c18e8Smrg	      *.la)
8409c27c18e8Smrg		# Only pass preopened files to the pseudo-archive (for
8410c27c18e8Smrg		# eventual linking with the app. that links it) if we
8411c27c18e8Smrg		# didn't already link the preopened objects directly into
8412c27c18e8Smrg		# the library:
8413c27c18e8Smrg		func_basename "$lib"
8414c27c18e8Smrg		name="$func_basename_result"
8415c27c18e8Smrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
8416c27c18e8Smrg		test -z "$libdir" && \
8417c27c18e8Smrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
8418c27c18e8Smrg		newdlprefiles="$newdlprefiles $libdir/$name"
8419c27c18e8Smrg		;;
8420c27c18e8Smrg	      esac
8421c27c18e8Smrg	    done
8422c27c18e8Smrg	    dlprefiles="$newdlprefiles"
8423c27c18e8Smrg	  else
8424c27c18e8Smrg	    newdlfiles=
8425c27c18e8Smrg	    for lib in $dlfiles; do
8426c27c18e8Smrg	      case $lib in
8427c27c18e8Smrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
8428c27c18e8Smrg		*) abs=`pwd`"/$lib" ;;
8429c27c18e8Smrg	      esac
8430c27c18e8Smrg	      newdlfiles="$newdlfiles $abs"
8431c27c18e8Smrg	    done
8432c27c18e8Smrg	    dlfiles="$newdlfiles"
8433c27c18e8Smrg	    newdlprefiles=
8434c27c18e8Smrg	    for lib in $dlprefiles; do
8435c27c18e8Smrg	      case $lib in
8436c27c18e8Smrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
8437c27c18e8Smrg		*) abs=`pwd`"/$lib" ;;
8438c27c18e8Smrg	      esac
8439c27c18e8Smrg	      newdlprefiles="$newdlprefiles $abs"
8440c27c18e8Smrg	    done
8441c27c18e8Smrg	    dlprefiles="$newdlprefiles"
8442c27c18e8Smrg	  fi
8443c27c18e8Smrg	  $RM $output
8444c27c18e8Smrg	  # place dlname in correct position for cygwin
844537eb1ca1Smrg	  # In fact, it would be nice if we could use this code for all target
844637eb1ca1Smrg	  # systems that can't hard-code library paths into their executables
844737eb1ca1Smrg	  # and that have no shared library path variable independent of PATH,
844837eb1ca1Smrg	  # but it turns out we can't easily determine that from inspecting
844937eb1ca1Smrg	  # libtool variables, so we have to hard-code the OSs to which it
845037eb1ca1Smrg	  # applies here; at the moment, that means platforms that use the PE
845137eb1ca1Smrg	  # object format with DLL files.  See the long comment at the top of
845237eb1ca1Smrg	  # tests/bindir.at for full details.
8453c27c18e8Smrg	  tdlname=$dlname
8454c27c18e8Smrg	  case $host,$output,$installed,$module,$dlname in
845537eb1ca1Smrg	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
845637eb1ca1Smrg	      # If a -bindir argument was supplied, place the dll there.
845737eb1ca1Smrg	      if test "x$bindir" != x ;
845837eb1ca1Smrg	      then
845937eb1ca1Smrg		func_relative_path "$install_libdir" "$bindir"
846037eb1ca1Smrg		tdlname=$func_relative_path_result$dlname
846137eb1ca1Smrg	      else
846237eb1ca1Smrg		# Otherwise fall back on heuristic.
846337eb1ca1Smrg		tdlname=../bin/$dlname
846437eb1ca1Smrg	      fi
846537eb1ca1Smrg	      ;;
8466c27c18e8Smrg	  esac
8467c27c18e8Smrg	  $ECHO > $output "\
8468c27c18e8Smrg# $outputname - a libtool library file
8469c27c18e8Smrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
8470c27c18e8Smrg#
8471c27c18e8Smrg# Please DO NOT delete this file!
8472c27c18e8Smrg# It is necessary for linking the library.
8473c43cc173Smrg
8474c27c18e8Smrg# The name that we can dlopen(3).
8475c27c18e8Smrgdlname='$tdlname'
8476c43cc173Smrg
8477c27c18e8Smrg# Names of this library.
8478c27c18e8Smrglibrary_names='$library_names'
8479c43cc173Smrg
8480c27c18e8Smrg# The name of the static archive.
8481c27c18e8Smrgold_library='$old_library'
8482c43cc173Smrg
8483c27c18e8Smrg# Linker flags that can not go in dependency_libs.
8484c27c18e8Smrginherited_linker_flags='$new_inherited_linker_flags'
8485c43cc173Smrg
8486c27c18e8Smrg# Libraries that this one depends upon.
8487c27c18e8Smrgdependency_libs='$dependency_libs'
8488c43cc173Smrg
8489c27c18e8Smrg# Names of additional weak libraries provided by this library
8490c27c18e8Smrgweak_library_names='$weak_libs'
8491c43cc173Smrg
8492c27c18e8Smrg# Version information for $libname.
8493c27c18e8Smrgcurrent=$current
8494c27c18e8Smrgage=$age
8495c27c18e8Smrgrevision=$revision
8496c43cc173Smrg
8497c27c18e8Smrg# Is this an already installed library?
8498c27c18e8Smrginstalled=$installed
8499c43cc173Smrg
8500c27c18e8Smrg# Should we warn about portability when linking against -modules?
8501c27c18e8Smrgshouldnotlink=$module
8502c43cc173Smrg
8503c27c18e8Smrg# Files to dlopen/dlpreopen
8504c27c18e8Smrgdlopen='$dlfiles'
8505c27c18e8Smrgdlpreopen='$dlprefiles'
8506c43cc173Smrg
8507c27c18e8Smrg# Directory that this library needs to be installed in:
8508c27c18e8Smrglibdir='$install_libdir'"
8509c27c18e8Smrg	  if test "$installed" = no && test "$need_relink" = yes; then
8510c27c18e8Smrg	    $ECHO >> $output "\
8511c27c18e8Smrgrelink_command=\"$relink_command\""
8512c27c18e8Smrg	  fi
8513c27c18e8Smrg	done
8514c27c18e8Smrg      }
8515c43cc173Smrg
8516c27c18e8Smrg      # Do a symbolic link so that the libtool archive can be found in
8517c27c18e8Smrg      # LD_LIBRARY_PATH before the program is installed.
8518c27c18e8Smrg      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
8519c27c18e8Smrg      ;;
8520c27c18e8Smrg    esac
8521c27c18e8Smrg    exit $EXIT_SUCCESS
8522c27c18e8Smrg}
8523c43cc173Smrg
8524c27c18e8Smrg{ test "$mode" = link || test "$mode" = relink; } &&
8525c27c18e8Smrg    func_mode_link ${1+"$@"}
8526c43cc173Smrg
8527c43cc173Smrg
8528c27c18e8Smrg# func_mode_uninstall arg...
8529c27c18e8Smrgfunc_mode_uninstall ()
8530c27c18e8Smrg{
8531c27c18e8Smrg    $opt_debug
8532c27c18e8Smrg    RM="$nonopt"
8533c43cc173Smrg    files=
8534c43cc173Smrg    rmforce=
8535c43cc173Smrg    exit_status=0
8536c43cc173Smrg
8537c43cc173Smrg    # This variable tells wrapper scripts just to set variables rather
8538c43cc173Smrg    # than running their programs.
8539c43cc173Smrg    libtool_install_magic="$magic"
8540c43cc173Smrg
8541c43cc173Smrg    for arg
8542c43cc173Smrg    do
8543c43cc173Smrg      case $arg in
8544c27c18e8Smrg      -f) RM="$RM $arg"; rmforce=yes ;;
8545c27c18e8Smrg      -*) RM="$RM $arg" ;;
8546c43cc173Smrg      *) files="$files $arg" ;;
8547c43cc173Smrg      esac
8548c43cc173Smrg    done
8549c43cc173Smrg
8550c27c18e8Smrg    test -z "$RM" && \
8551c27c18e8Smrg      func_fatal_help "you must specify an RM program"
8552c43cc173Smrg
8553c43cc173Smrg    rmdirs=
8554c43cc173Smrg
8555c43cc173Smrg    origobjdir="$objdir"
8556c43cc173Smrg    for file in $files; do
8557c27c18e8Smrg      func_dirname "$file" "" "."
8558c27c18e8Smrg      dir="$func_dirname_result"
8559c27c18e8Smrg      if test "X$dir" = X.; then
8560c43cc173Smrg	objdir="$origobjdir"
8561c43cc173Smrg      else
8562c43cc173Smrg	objdir="$dir/$origobjdir"
8563c43cc173Smrg      fi
8564c27c18e8Smrg      func_basename "$file"
8565c27c18e8Smrg      name="$func_basename_result"
8566c43cc173Smrg      test "$mode" = uninstall && objdir="$dir"
8567c43cc173Smrg
8568c43cc173Smrg      # Remember objdir for removal later, being careful to avoid duplicates
8569c43cc173Smrg      if test "$mode" = clean; then
8570c43cc173Smrg	case " $rmdirs " in
8571c43cc173Smrg	  *" $objdir "*) ;;
8572c43cc173Smrg	  *) rmdirs="$rmdirs $objdir" ;;
8573c43cc173Smrg	esac
8574c43cc173Smrg      fi
8575c43cc173Smrg
8576c43cc173Smrg      # Don't error if the file doesn't exist and rm -f was used.
8577c27c18e8Smrg      if { test -L "$file"; } >/dev/null 2>&1 ||
8578c27c18e8Smrg	 { test -h "$file"; } >/dev/null 2>&1 ||
8579c27c18e8Smrg	 test -f "$file"; then
8580c43cc173Smrg	:
8581c43cc173Smrg      elif test -d "$file"; then
8582c43cc173Smrg	exit_status=1
8583c43cc173Smrg	continue
8584c43cc173Smrg      elif test "$rmforce" = yes; then
8585c43cc173Smrg	continue
8586c43cc173Smrg      fi
8587c43cc173Smrg
8588c43cc173Smrg      rmfiles="$file"
8589c43cc173Smrg
8590c43cc173Smrg      case $name in
8591c43cc173Smrg      *.la)
8592c43cc173Smrg	# Possibly a libtool archive, so verify it.
8593c27c18e8Smrg	if func_lalib_p "$file"; then
8594c27c18e8Smrg	  func_source $dir/$name
8595c43cc173Smrg
8596c43cc173Smrg	  # Delete the libtool libraries and symlinks.
8597c43cc173Smrg	  for n in $library_names; do
8598c43cc173Smrg	    rmfiles="$rmfiles $objdir/$n"
8599c43cc173Smrg	  done
8600c43cc173Smrg	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
8601c43cc173Smrg
8602c43cc173Smrg	  case "$mode" in
8603c43cc173Smrg	  clean)
8604c43cc173Smrg	    case "  $library_names " in
8605c43cc173Smrg	    # "  " in the beginning catches empty $dlname
8606c43cc173Smrg	    *" $dlname "*) ;;
8607c43cc173Smrg	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
8608c43cc173Smrg	    esac
8609c27c18e8Smrg	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
8610c43cc173Smrg	    ;;
8611c43cc173Smrg	  uninstall)
8612c43cc173Smrg	    if test -n "$library_names"; then
8613c43cc173Smrg	      # Do each command in the postuninstall commands.
8614c27c18e8Smrg	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
8615c43cc173Smrg	    fi
8616c43cc173Smrg
8617c43cc173Smrg	    if test -n "$old_library"; then
8618c43cc173Smrg	      # Do each command in the old_postuninstall commands.
8619c27c18e8Smrg	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
8620c43cc173Smrg	    fi
8621c43cc173Smrg	    # FIXME: should reinstall the best remaining shared library.
8622c43cc173Smrg	    ;;
8623c43cc173Smrg	  esac
8624c43cc173Smrg	fi
8625c43cc173Smrg	;;
8626c43cc173Smrg
8627c43cc173Smrg      *.lo)
8628c43cc173Smrg	# Possibly a libtool object, so verify it.
8629c27c18e8Smrg	if func_lalib_p "$file"; then
8630c43cc173Smrg
8631c43cc173Smrg	  # Read the .lo file
8632c27c18e8Smrg	  func_source $dir/$name
8633c43cc173Smrg
8634c43cc173Smrg	  # Add PIC object to the list of files to remove.
8635c27c18e8Smrg	  if test -n "$pic_object" &&
8636c27c18e8Smrg	     test "$pic_object" != none; then
8637c43cc173Smrg	    rmfiles="$rmfiles $dir/$pic_object"
8638c43cc173Smrg	  fi
8639c43cc173Smrg
8640c43cc173Smrg	  # Add non-PIC object to the list of files to remove.
8641c27c18e8Smrg	  if test -n "$non_pic_object" &&
8642c27c18e8Smrg	     test "$non_pic_object" != none; then
8643c43cc173Smrg	    rmfiles="$rmfiles $dir/$non_pic_object"
8644c43cc173Smrg	  fi
8645c43cc173Smrg	fi
8646c43cc173Smrg	;;
8647c43cc173Smrg
8648c43cc173Smrg      *)
8649c43cc173Smrg	if test "$mode" = clean ; then
8650c43cc173Smrg	  noexename=$name
8651c43cc173Smrg	  case $file in
8652c43cc173Smrg	  *.exe)
8653c27c18e8Smrg	    func_stripname '' '.exe' "$file"
8654c27c18e8Smrg	    file=$func_stripname_result
8655c27c18e8Smrg	    func_stripname '' '.exe' "$name"
8656c27c18e8Smrg	    noexename=$func_stripname_result
8657c43cc173Smrg	    # $file with .exe has already been added to rmfiles,
8658c43cc173Smrg	    # add $file without .exe
8659c43cc173Smrg	    rmfiles="$rmfiles $file"
8660c43cc173Smrg	    ;;
8661c43cc173Smrg	  esac
8662c43cc173Smrg	  # Do a test to see if this is a libtool program.
8663c27c18e8Smrg	  if func_ltwrapper_p "$file"; then
8664c27c18e8Smrg	    if func_ltwrapper_executable_p "$file"; then
8665c27c18e8Smrg	      func_ltwrapper_scriptname "$file"
8666c27c18e8Smrg	      relink_command=
8667c27c18e8Smrg	      func_source $func_ltwrapper_scriptname_result
8668c27c18e8Smrg	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
8669c27c18e8Smrg	    else
8670c27c18e8Smrg	      relink_command=
8671c27c18e8Smrg	      func_source $dir/$noexename
8672c27c18e8Smrg	    fi
8673c43cc173Smrg
8674c43cc173Smrg	    # note $name still contains .exe if it was in $file originally
8675c43cc173Smrg	    # as does the version of $file that was added into $rmfiles
8676c43cc173Smrg	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
8677c43cc173Smrg	    if test "$fast_install" = yes && test -n "$relink_command"; then
8678c43cc173Smrg	      rmfiles="$rmfiles $objdir/lt-$name"
8679c43cc173Smrg	    fi
8680c43cc173Smrg	    if test "X$noexename" != "X$name" ; then
8681c43cc173Smrg	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
8682c43cc173Smrg	    fi
8683c43cc173Smrg	  fi
8684c43cc173Smrg	fi
8685c43cc173Smrg	;;
8686c43cc173Smrg      esac
8687c27c18e8Smrg      func_show_eval "$RM $rmfiles" 'exit_status=1'
8688c43cc173Smrg    done
8689c43cc173Smrg    objdir="$origobjdir"
8690c43cc173Smrg
8691c43cc173Smrg    # Try to remove the ${objdir}s in the directories where we deleted files
8692c43cc173Smrg    for dir in $rmdirs; do
8693c43cc173Smrg      if test -d "$dir"; then
8694c27c18e8Smrg	func_show_eval "rmdir $dir >/dev/null 2>&1"
8695c43cc173Smrg      fi
8696c43cc173Smrg    done
8697c43cc173Smrg
8698c43cc173Smrg    exit $exit_status
8699c27c18e8Smrg}
8700c43cc173Smrg
8701c27c18e8Smrg{ test "$mode" = uninstall || test "$mode" = clean; } &&
8702c27c18e8Smrg    func_mode_uninstall ${1+"$@"}
8703c43cc173Smrg
8704c27c18e8Smrgtest -z "$mode" && {
8705c27c18e8Smrg  help="$generic_help"
8706c27c18e8Smrg  func_fatal_help "you must specify a MODE"
8707c27c18e8Smrg}
8708c27c18e8Smrg
8709c27c18e8Smrgtest -z "$exec_cmd" && \
8710c27c18e8Smrg  func_fatal_help "invalid operation mode \`$mode'"
8711c43cc173Smrg
8712c43cc173Smrgif test -n "$exec_cmd"; then
8713c27c18e8Smrg  eval exec "$exec_cmd"
8714c43cc173Smrg  exit $EXIT_FAILURE
8715c43cc173Smrgfi
8716c43cc173Smrg
8717c27c18e8Smrgexit $exit_status
8718c43cc173Smrg
8719c43cc173Smrg
8720c43cc173Smrg# The TAGs below are defined such that we never get into a situation
8721c43cc173Smrg# in which we disable both kinds of libraries.  Given conflicting
8722c43cc173Smrg# choices, we go for a static library, that is the most portable,
8723c43cc173Smrg# since we can't tell whether shared libraries were disabled because
8724c43cc173Smrg# the user asked for that or because the platform doesn't support
8725c43cc173Smrg# them.  This is particularly important on AIX, because we don't
8726c43cc173Smrg# support having both static and shared libraries enabled at the same
8727c43cc173Smrg# time on that platform, so we default to a shared-only configuration.
8728c43cc173Smrg# If a disable-shared tag is given, we'll fallback to a static-only
8729c43cc173Smrg# configuration.  But we'll never go from static-only to shared-only.
8730c43cc173Smrg
8731c43cc173Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
8732c27c18e8Smrgbuild_libtool_libs=no
8733c27c18e8Smrgbuild_old_libs=yes
8734c43cc173Smrg# ### END LIBTOOL TAG CONFIG: disable-shared
8735c43cc173Smrg
8736c43cc173Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static
8737c27c18e8Smrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
8738c43cc173Smrg# ### END LIBTOOL TAG CONFIG: disable-static
8739c43cc173Smrg
8740c43cc173Smrg# Local Variables:
8741c43cc173Smrg# mode:shell-script
8742c43cc173Smrg# sh-indentation:2
8743c43cc173Smrg# End:
8744c27c18e8Smrg# vi:sw=2
8745c27c18e8Smrg
8746