ltmain.sh revision 04007eba
104007ebaSmrg
204007ebaSmrg# libtool (GNU libtool) 2.4.2
304007ebaSmrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
404007ebaSmrg
504007ebaSmrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
604007ebaSmrg# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
704007ebaSmrg# This is free software; see the source for copying conditions.  There is NO
804007ebaSmrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
904007ebaSmrg
1004007ebaSmrg# GNU Libtool is free software; you can redistribute it and/or modify
1104007ebaSmrg# it under the terms of the GNU General Public License as published by
1204007ebaSmrg# the Free Software Foundation; either version 2 of the License, or
1304007ebaSmrg# (at your option) any later version.
1404007ebaSmrg#
1504007ebaSmrg# As a special exception to the GNU General Public License,
1604007ebaSmrg# if you distribute this file as part of a program or library that
1704007ebaSmrg# is built using GNU Libtool, you may include this file under the
1804007ebaSmrg# same distribution terms that you use for the rest of that program.
1904007ebaSmrg#
2004007ebaSmrg# GNU Libtool is distributed in the hope that it will be useful, but
2104007ebaSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of
2204007ebaSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
2304007ebaSmrg# General Public License for more details.
2404007ebaSmrg#
2504007ebaSmrg# You should have received a copy of the GNU General Public License
2604007ebaSmrg# along with GNU Libtool; see the file COPYING.  If not, a copy
2704007ebaSmrg# can be downloaded from http://www.gnu.org/licenses/gpl.html,
2804007ebaSmrg# or obtained by writing to the Free Software Foundation, Inc.,
2904007ebaSmrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
3004007ebaSmrg
3104007ebaSmrg# Usage: $progname [OPTION]... [MODE-ARG]...
3204007ebaSmrg#
3304007ebaSmrg# Provide generalized library-building support services.
3404007ebaSmrg#
3504007ebaSmrg#       --config             show all configuration variables
3604007ebaSmrg#       --debug              enable verbose shell tracing
3704007ebaSmrg#   -n, --dry-run            display commands without modifying any files
3804007ebaSmrg#       --features           display basic configuration information and exit
3904007ebaSmrg#       --mode=MODE          use operation mode MODE
4004007ebaSmrg#       --preserve-dup-deps  don't remove duplicate dependency libraries
4104007ebaSmrg#       --quiet, --silent    don't print informational messages
4204007ebaSmrg#       --no-quiet, --no-silent
4304007ebaSmrg#                            print informational messages (default)
4404007ebaSmrg#       --no-warn            don't display warning messages
4504007ebaSmrg#       --tag=TAG            use configuration variables from tag TAG
4604007ebaSmrg#   -v, --verbose            print more informational messages than default
4704007ebaSmrg#       --no-verbose         don't print the extra informational messages
4804007ebaSmrg#       --version            print version information
4904007ebaSmrg#   -h, --help, --help-all   print short, long, or detailed help message
5004007ebaSmrg#
5104007ebaSmrg# MODE must be one of the following:
5204007ebaSmrg#
5304007ebaSmrg#         clean              remove files from the build directory
5404007ebaSmrg#         compile            compile a source file into a libtool object
5504007ebaSmrg#         execute            automatically set library path, then run a program
5604007ebaSmrg#         finish             complete the installation of libtool libraries
5704007ebaSmrg#         install            install libraries or executables
5804007ebaSmrg#         link               create a library or an executable
5904007ebaSmrg#         uninstall          remove libraries from an installed directory
6004007ebaSmrg#
6104007ebaSmrg# MODE-ARGS vary depending on the MODE.  When passed as first option,
6204007ebaSmrg# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
6304007ebaSmrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
6404007ebaSmrg#
6504007ebaSmrg# When reporting a bug, please describe a test case to reproduce it and
6604007ebaSmrg# include the following information:
6704007ebaSmrg#
6804007ebaSmrg#         host-triplet:	$host
6904007ebaSmrg#         shell:		$SHELL
7004007ebaSmrg#         compiler:		$LTCC
7104007ebaSmrg#         compiler flags:		$LTCFLAGS
7204007ebaSmrg#         linker:		$LD (gnu? $with_gnu_ld)
7304007ebaSmrg#         $progname:	(GNU libtool) 2.4.2 Debian-2.4.2-1.3
7404007ebaSmrg#         automake:	$automake_version
7504007ebaSmrg#         autoconf:	$autoconf_version
7604007ebaSmrg#
7704007ebaSmrg# Report bugs to <bug-libtool@gnu.org>.
7804007ebaSmrg# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
7904007ebaSmrg# General help using GNU software: <http://www.gnu.org/gethelp/>.
8004007ebaSmrg
8104007ebaSmrgPROGRAM=libtool
8204007ebaSmrgPACKAGE=libtool
8304007ebaSmrgVERSION="2.4.2 Debian-2.4.2-1.3"
8404007ebaSmrgTIMESTAMP=""
8504007ebaSmrgpackage_revision=1.3337
8604007ebaSmrg
8704007ebaSmrg# Be Bourne compatible
8804007ebaSmrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
8904007ebaSmrg  emulate sh
9004007ebaSmrg  NULLCMD=:
9104007ebaSmrg  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
9204007ebaSmrg  # is contrary to our usage.  Disable this feature.
9304007ebaSmrg  alias -g '${1+"$@"}'='"$@"'
9404007ebaSmrg  setopt NO_GLOB_SUBST
9504007ebaSmrgelse
9604007ebaSmrg  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
9704007ebaSmrgfi
9804007ebaSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
9904007ebaSmrgDUALCASE=1; export DUALCASE # for MKS sh
10004007ebaSmrg
10104007ebaSmrg# A function that is used when there is no print builtin or printf.
10204007ebaSmrgfunc_fallback_echo ()
10304007ebaSmrg{
10404007ebaSmrg  eval 'cat <<_LTECHO_EOF
10504007ebaSmrg$1
10604007ebaSmrg_LTECHO_EOF'
10704007ebaSmrg}
10804007ebaSmrg
10904007ebaSmrg# NLS nuisances: We save the old values to restore during execute mode.
11004007ebaSmrglt_user_locale=
11104007ebaSmrglt_safe_locale=
11204007ebaSmrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
11304007ebaSmrgdo
11404007ebaSmrg  eval "if test \"\${$lt_var+set}\" = set; then
11504007ebaSmrg          save_$lt_var=\$$lt_var
11604007ebaSmrg          $lt_var=C
11704007ebaSmrg	  export $lt_var
11804007ebaSmrg	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
11904007ebaSmrg	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
12004007ebaSmrg	fi"
12104007ebaSmrgdone
12204007ebaSmrgLC_ALL=C
12304007ebaSmrgLANGUAGE=C
12404007ebaSmrgexport LANGUAGE LC_ALL
12504007ebaSmrg
12604007ebaSmrg$lt_unset CDPATH
12704007ebaSmrg
12804007ebaSmrg
12904007ebaSmrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
13004007ebaSmrg# is ksh but when the shell is invoked as "sh" and the current value of
13104007ebaSmrg# the _XPG environment variable is not equal to 1 (one), the special
13204007ebaSmrg# positional parameter $0, within a function call, is the name of the
13304007ebaSmrg# function.
13404007ebaSmrgprogpath="$0"
13504007ebaSmrg
13604007ebaSmrg
13704007ebaSmrg
13804007ebaSmrg: ${CP="cp -f"}
13904007ebaSmrgtest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
14004007ebaSmrg: ${MAKE="make"}
14104007ebaSmrg: ${MKDIR="mkdir"}
14204007ebaSmrg: ${MV="mv -f"}
14304007ebaSmrg: ${RM="rm -f"}
14404007ebaSmrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
14504007ebaSmrg: ${Xsed="$SED -e 1s/^X//"}
14604007ebaSmrg
14704007ebaSmrg# Global variables:
14804007ebaSmrgEXIT_SUCCESS=0
14904007ebaSmrgEXIT_FAILURE=1
15004007ebaSmrgEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
15104007ebaSmrgEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
15204007ebaSmrg
15304007ebaSmrgexit_status=$EXIT_SUCCESS
15404007ebaSmrg
15504007ebaSmrg# Make sure IFS has a sensible default
15604007ebaSmrglt_nl='
15704007ebaSmrg'
15804007ebaSmrgIFS=" 	$lt_nl"
15904007ebaSmrg
16004007ebaSmrgdirname="s,/[^/]*$,,"
16104007ebaSmrgbasename="s,^.*/,,"
16204007ebaSmrg
16304007ebaSmrg# func_dirname file append nondir_replacement
16404007ebaSmrg# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
16504007ebaSmrg# otherwise set result to NONDIR_REPLACEMENT.
16604007ebaSmrgfunc_dirname ()
16704007ebaSmrg{
16804007ebaSmrg    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
16904007ebaSmrg    if test "X$func_dirname_result" = "X${1}"; then
17004007ebaSmrg      func_dirname_result="${3}"
17104007ebaSmrg    else
17204007ebaSmrg      func_dirname_result="$func_dirname_result${2}"
17304007ebaSmrg    fi
17404007ebaSmrg} # func_dirname may be replaced by extended shell implementation
17504007ebaSmrg
17604007ebaSmrg
17704007ebaSmrg# func_basename file
17804007ebaSmrgfunc_basename ()
17904007ebaSmrg{
18004007ebaSmrg    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
18104007ebaSmrg} # func_basename may be replaced by extended shell implementation
18204007ebaSmrg
18304007ebaSmrg
18404007ebaSmrg# func_dirname_and_basename file append nondir_replacement
18504007ebaSmrg# perform func_basename and func_dirname in a single function
18604007ebaSmrg# call:
18704007ebaSmrg#   dirname:  Compute the dirname of FILE.  If nonempty,
18804007ebaSmrg#             add APPEND to the result, otherwise set result
18904007ebaSmrg#             to NONDIR_REPLACEMENT.
19004007ebaSmrg#             value returned in "$func_dirname_result"
19104007ebaSmrg#   basename: Compute filename of FILE.
19204007ebaSmrg#             value retuned in "$func_basename_result"
19304007ebaSmrg# Implementation must be kept synchronized with func_dirname
19404007ebaSmrg# and func_basename. For efficiency, we do not delegate to
19504007ebaSmrg# those functions but instead duplicate the functionality here.
19604007ebaSmrgfunc_dirname_and_basename ()
19704007ebaSmrg{
19804007ebaSmrg    # Extract subdirectory from the argument.
19904007ebaSmrg    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
20004007ebaSmrg    if test "X$func_dirname_result" = "X${1}"; then
20104007ebaSmrg      func_dirname_result="${3}"
20204007ebaSmrg    else
20304007ebaSmrg      func_dirname_result="$func_dirname_result${2}"
20404007ebaSmrg    fi
20504007ebaSmrg    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
20604007ebaSmrg} # func_dirname_and_basename may be replaced by extended shell implementation
20704007ebaSmrg
20804007ebaSmrg
20904007ebaSmrg# func_stripname prefix suffix name
21004007ebaSmrg# strip PREFIX and SUFFIX off of NAME.
21104007ebaSmrg# PREFIX and SUFFIX must not contain globbing or regex special
21204007ebaSmrg# characters, hashes, percent signs, but SUFFIX may contain a leading
21304007ebaSmrg# dot (in which case that matches only a dot).
21404007ebaSmrg# func_strip_suffix prefix name
21504007ebaSmrgfunc_stripname ()
21604007ebaSmrg{
21704007ebaSmrg    case ${2} in
21804007ebaSmrg      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
21904007ebaSmrg      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
22004007ebaSmrg    esac
22104007ebaSmrg} # func_stripname may be replaced by extended shell implementation
22204007ebaSmrg
22304007ebaSmrg
22404007ebaSmrg# These SED scripts presuppose an absolute path with a trailing slash.
22504007ebaSmrgpathcar='s,^/\([^/]*\).*$,\1,'
22604007ebaSmrgpathcdr='s,^/[^/]*,,'
22704007ebaSmrgremovedotparts=':dotsl
22804007ebaSmrg		s@/\./@/@g
22904007ebaSmrg		t dotsl
23004007ebaSmrg		s,/\.$,/,'
23104007ebaSmrgcollapseslashes='s@/\{1,\}@/@g'
23204007ebaSmrgfinalslash='s,/*$,/,'
23304007ebaSmrg
23404007ebaSmrg# func_normal_abspath PATH
23504007ebaSmrg# Remove doubled-up and trailing slashes, "." path components,
23604007ebaSmrg# and cancel out any ".." path components in PATH after making
23704007ebaSmrg# it an absolute path.
23804007ebaSmrg#             value returned in "$func_normal_abspath_result"
23904007ebaSmrgfunc_normal_abspath ()
24004007ebaSmrg{
24104007ebaSmrg  # Start from root dir and reassemble the path.
24204007ebaSmrg  func_normal_abspath_result=
24304007ebaSmrg  func_normal_abspath_tpath=$1
24404007ebaSmrg  func_normal_abspath_altnamespace=
24504007ebaSmrg  case $func_normal_abspath_tpath in
24604007ebaSmrg    "")
24704007ebaSmrg      # Empty path, that just means $cwd.
24804007ebaSmrg      func_stripname '' '/' "`pwd`"
24904007ebaSmrg      func_normal_abspath_result=$func_stripname_result
25004007ebaSmrg      return
25104007ebaSmrg    ;;
25204007ebaSmrg    # The next three entries are used to spot a run of precisely
25304007ebaSmrg    # two leading slashes without using negated character classes;
25404007ebaSmrg    # we take advantage of case's first-match behaviour.
25504007ebaSmrg    ///*)
25604007ebaSmrg      # Unusual form of absolute path, do nothing.
25704007ebaSmrg    ;;
25804007ebaSmrg    //*)
25904007ebaSmrg      # Not necessarily an ordinary path; POSIX reserves leading '//'
26004007ebaSmrg      # and for example Cygwin uses it to access remote file shares
26104007ebaSmrg      # over CIFS/SMB, so we conserve a leading double slash if found.
26204007ebaSmrg      func_normal_abspath_altnamespace=/
26304007ebaSmrg    ;;
26404007ebaSmrg    /*)
26504007ebaSmrg      # Absolute path, do nothing.
26604007ebaSmrg    ;;
26704007ebaSmrg    *)
26804007ebaSmrg      # Relative path, prepend $cwd.
26904007ebaSmrg      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
27004007ebaSmrg    ;;
27104007ebaSmrg  esac
27204007ebaSmrg  # Cancel out all the simple stuff to save iterations.  We also want
27304007ebaSmrg  # the path to end with a slash for ease of parsing, so make sure
27404007ebaSmrg  # there is one (and only one) here.
27504007ebaSmrg  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
27604007ebaSmrg        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
27704007ebaSmrg  while :; do
27804007ebaSmrg    # Processed it all yet?
27904007ebaSmrg    if test "$func_normal_abspath_tpath" = / ; then
28004007ebaSmrg      # If we ascended to the root using ".." the result may be empty now.
28104007ebaSmrg      if test -z "$func_normal_abspath_result" ; then
28204007ebaSmrg        func_normal_abspath_result=/
28304007ebaSmrg      fi
28404007ebaSmrg      break
28504007ebaSmrg    fi
28604007ebaSmrg    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
28704007ebaSmrg        -e "$pathcar"`
28804007ebaSmrg    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
28904007ebaSmrg        -e "$pathcdr"`
29004007ebaSmrg    # Figure out what to do with it
29104007ebaSmrg    case $func_normal_abspath_tcomponent in
29204007ebaSmrg      "")
29304007ebaSmrg        # Trailing empty path component, ignore it.
29404007ebaSmrg      ;;
29504007ebaSmrg      ..)
29604007ebaSmrg        # Parent dir; strip last assembled component from result.
29704007ebaSmrg        func_dirname "$func_normal_abspath_result"
29804007ebaSmrg        func_normal_abspath_result=$func_dirname_result
29904007ebaSmrg      ;;
30004007ebaSmrg      *)
30104007ebaSmrg        # Actual path component, append it.
30204007ebaSmrg        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
30304007ebaSmrg      ;;
30404007ebaSmrg    esac
30504007ebaSmrg  done
30604007ebaSmrg  # Restore leading double-slash if one was found on entry.
30704007ebaSmrg  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
30804007ebaSmrg}
30904007ebaSmrg
31004007ebaSmrg# func_relative_path SRCDIR DSTDIR
31104007ebaSmrg# generates a relative path from SRCDIR to DSTDIR, with a trailing
31204007ebaSmrg# slash if non-empty, suitable for immediately appending a filename
31304007ebaSmrg# without needing to append a separator.
31404007ebaSmrg#             value returned in "$func_relative_path_result"
31504007ebaSmrgfunc_relative_path ()
31604007ebaSmrg{
31704007ebaSmrg  func_relative_path_result=
31804007ebaSmrg  func_normal_abspath "$1"
31904007ebaSmrg  func_relative_path_tlibdir=$func_normal_abspath_result
32004007ebaSmrg  func_normal_abspath "$2"
32104007ebaSmrg  func_relative_path_tbindir=$func_normal_abspath_result
32204007ebaSmrg
32304007ebaSmrg  # Ascend the tree starting from libdir
32404007ebaSmrg  while :; do
32504007ebaSmrg    # check if we have found a prefix of bindir
32604007ebaSmrg    case $func_relative_path_tbindir in
32704007ebaSmrg      $func_relative_path_tlibdir)
32804007ebaSmrg        # found an exact match
32904007ebaSmrg        func_relative_path_tcancelled=
33004007ebaSmrg        break
33104007ebaSmrg        ;;
33204007ebaSmrg      $func_relative_path_tlibdir*)
33304007ebaSmrg        # found a matching prefix
33404007ebaSmrg        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
33504007ebaSmrg        func_relative_path_tcancelled=$func_stripname_result
33604007ebaSmrg        if test -z "$func_relative_path_result"; then
33704007ebaSmrg          func_relative_path_result=.
33804007ebaSmrg        fi
33904007ebaSmrg        break
34004007ebaSmrg        ;;
34104007ebaSmrg      *)
34204007ebaSmrg        func_dirname $func_relative_path_tlibdir
34304007ebaSmrg        func_relative_path_tlibdir=${func_dirname_result}
34404007ebaSmrg        if test "x$func_relative_path_tlibdir" = x ; then
34504007ebaSmrg          # Have to descend all the way to the root!
34604007ebaSmrg          func_relative_path_result=../$func_relative_path_result
34704007ebaSmrg          func_relative_path_tcancelled=$func_relative_path_tbindir
34804007ebaSmrg          break
34904007ebaSmrg        fi
35004007ebaSmrg        func_relative_path_result=../$func_relative_path_result
35104007ebaSmrg        ;;
35204007ebaSmrg    esac
35304007ebaSmrg  done
35404007ebaSmrg
35504007ebaSmrg  # Now calculate path; take care to avoid doubling-up slashes.
35604007ebaSmrg  func_stripname '' '/' "$func_relative_path_result"
35704007ebaSmrg  func_relative_path_result=$func_stripname_result
35804007ebaSmrg  func_stripname '/' '/' "$func_relative_path_tcancelled"
35904007ebaSmrg  if test "x$func_stripname_result" != x ; then
36004007ebaSmrg    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
36104007ebaSmrg  fi
36204007ebaSmrg
36304007ebaSmrg  # Normalisation. If bindir is libdir, return empty string,
36404007ebaSmrg  # else relative path ending with a slash; either way, target
36504007ebaSmrg  # file name can be directly appended.
36604007ebaSmrg  if test ! -z "$func_relative_path_result"; then
36704007ebaSmrg    func_stripname './' '' "$func_relative_path_result/"
36804007ebaSmrg    func_relative_path_result=$func_stripname_result
36904007ebaSmrg  fi
37004007ebaSmrg}
37104007ebaSmrg
37204007ebaSmrg# The name of this program:
37304007ebaSmrgfunc_dirname_and_basename "$progpath"
37404007ebaSmrgprogname=$func_basename_result
37504007ebaSmrg
37604007ebaSmrg# Make sure we have an absolute path for reexecution:
37704007ebaSmrgcase $progpath in
37804007ebaSmrg  [\\/]*|[A-Za-z]:\\*) ;;
37904007ebaSmrg  *[\\/]*)
38004007ebaSmrg     progdir=$func_dirname_result
38104007ebaSmrg     progdir=`cd "$progdir" && pwd`
38204007ebaSmrg     progpath="$progdir/$progname"
38304007ebaSmrg     ;;
38404007ebaSmrg  *)
38504007ebaSmrg     save_IFS="$IFS"
38604007ebaSmrg     IFS=${PATH_SEPARATOR-:}
38704007ebaSmrg     for progdir in $PATH; do
38804007ebaSmrg       IFS="$save_IFS"
38904007ebaSmrg       test -x "$progdir/$progname" && break
39004007ebaSmrg     done
39104007ebaSmrg     IFS="$save_IFS"
39204007ebaSmrg     test -n "$progdir" || progdir=`pwd`
39304007ebaSmrg     progpath="$progdir/$progname"
39404007ebaSmrg     ;;
39504007ebaSmrgesac
39604007ebaSmrg
39704007ebaSmrg# Sed substitution that helps us do robust quoting.  It backslashifies
39804007ebaSmrg# metacharacters that are still active within double-quoted strings.
39904007ebaSmrgXsed="${SED}"' -e 1s/^X//'
40004007ebaSmrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g'
40104007ebaSmrg
40204007ebaSmrg# Same as above, but do not quote variable references.
40304007ebaSmrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
40404007ebaSmrg
40504007ebaSmrg# Sed substitution that turns a string into a regex matching for the
40604007ebaSmrg# string literally.
40704007ebaSmrgsed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
40804007ebaSmrg
40904007ebaSmrg# Sed substitution that converts a w32 file name or path
41004007ebaSmrg# which contains forward slashes, into one that contains
41104007ebaSmrg# (escaped) backslashes.  A very naive implementation.
41204007ebaSmrglt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
41304007ebaSmrg
41404007ebaSmrg# Re-`\' parameter expansions in output of double_quote_subst that were
41504007ebaSmrg# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
41604007ebaSmrg# in input to double_quote_subst, that '$' was protected from expansion.
41704007ebaSmrg# Since each input `\' is now two `\'s, look for any number of runs of
41804007ebaSmrg# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
41904007ebaSmrgbs='\\'
42004007ebaSmrgbs2='\\\\'
42104007ebaSmrgbs4='\\\\\\\\'
42204007ebaSmrgdollar='\$'
42304007ebaSmrgsed_double_backslash="\
42404007ebaSmrg  s/$bs4/&\\
42504007ebaSmrg/g
42604007ebaSmrg  s/^$bs2$dollar/$bs&/
42704007ebaSmrg  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
42804007ebaSmrg  s/\n//g"
42904007ebaSmrg
43004007ebaSmrg# Standard options:
43104007ebaSmrgopt_dry_run=false
43204007ebaSmrgopt_help=false
43304007ebaSmrgopt_quiet=false
43404007ebaSmrgopt_verbose=false
43504007ebaSmrgopt_warning=:
43604007ebaSmrg
43704007ebaSmrg# func_echo arg...
43804007ebaSmrg# Echo program name prefixed message, along with the current mode
43904007ebaSmrg# name if it has been set yet.
44004007ebaSmrgfunc_echo ()
44104007ebaSmrg{
44204007ebaSmrg    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
44304007ebaSmrg}
44404007ebaSmrg
44504007ebaSmrg# func_verbose arg...
44604007ebaSmrg# Echo program name prefixed message in verbose mode only.
44704007ebaSmrgfunc_verbose ()
44804007ebaSmrg{
44904007ebaSmrg    $opt_verbose && func_echo ${1+"$@"}
45004007ebaSmrg
45104007ebaSmrg    # A bug in bash halts the script if the last line of a function
45204007ebaSmrg    # fails when set -e is in force, so we need another command to
45304007ebaSmrg    # work around that:
45404007ebaSmrg    :
45504007ebaSmrg}
45604007ebaSmrg
45704007ebaSmrg# func_echo_all arg...
45804007ebaSmrg# Invoke $ECHO with all args, space-separated.
45904007ebaSmrgfunc_echo_all ()
46004007ebaSmrg{
46104007ebaSmrg    $ECHO "$*"
46204007ebaSmrg}
46304007ebaSmrg
46404007ebaSmrg# func_error arg...
46504007ebaSmrg# Echo program name prefixed message to standard error.
46604007ebaSmrgfunc_error ()
46704007ebaSmrg{
46804007ebaSmrg    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
46904007ebaSmrg}
47004007ebaSmrg
47104007ebaSmrg# func_warning arg...
47204007ebaSmrg# Echo program name prefixed warning message to standard error.
47304007ebaSmrgfunc_warning ()
47404007ebaSmrg{
47504007ebaSmrg    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
47604007ebaSmrg
47704007ebaSmrg    # bash bug again:
47804007ebaSmrg    :
47904007ebaSmrg}
48004007ebaSmrg
48104007ebaSmrg# func_fatal_error arg...
48204007ebaSmrg# Echo program name prefixed message to standard error, and exit.
48304007ebaSmrgfunc_fatal_error ()
48404007ebaSmrg{
48504007ebaSmrg    func_error ${1+"$@"}
48604007ebaSmrg    exit $EXIT_FAILURE
48704007ebaSmrg}
48804007ebaSmrg
48904007ebaSmrg# func_fatal_help arg...
49004007ebaSmrg# Echo program name prefixed message to standard error, followed by
49104007ebaSmrg# a help hint, and exit.
49204007ebaSmrgfunc_fatal_help ()
49304007ebaSmrg{
49404007ebaSmrg    func_error ${1+"$@"}
49504007ebaSmrg    func_fatal_error "$help"
49604007ebaSmrg}
49704007ebaSmrghelp="Try \`$progname --help' for more information."  ## default
49804007ebaSmrg
49904007ebaSmrg
50004007ebaSmrg# func_grep expression filename
50104007ebaSmrg# Check whether EXPRESSION matches any line of FILENAME, without output.
50204007ebaSmrgfunc_grep ()
50304007ebaSmrg{
50404007ebaSmrg    $GREP "$1" "$2" >/dev/null 2>&1
50504007ebaSmrg}
50604007ebaSmrg
50704007ebaSmrg
50804007ebaSmrg# func_mkdir_p directory-path
50904007ebaSmrg# Make sure the entire path to DIRECTORY-PATH is available.
51004007ebaSmrgfunc_mkdir_p ()
51104007ebaSmrg{
51204007ebaSmrg    my_directory_path="$1"
51304007ebaSmrg    my_dir_list=
51404007ebaSmrg
51504007ebaSmrg    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
51604007ebaSmrg
51704007ebaSmrg      # Protect directory names starting with `-'
51804007ebaSmrg      case $my_directory_path in
51904007ebaSmrg        -*) my_directory_path="./$my_directory_path" ;;
52004007ebaSmrg      esac
52104007ebaSmrg
52204007ebaSmrg      # While some portion of DIR does not yet exist...
52304007ebaSmrg      while test ! -d "$my_directory_path"; do
52404007ebaSmrg        # ...make a list in topmost first order.  Use a colon delimited
52504007ebaSmrg	# list incase some portion of path contains whitespace.
52604007ebaSmrg        my_dir_list="$my_directory_path:$my_dir_list"
52704007ebaSmrg
52804007ebaSmrg        # If the last portion added has no slash in it, the list is done
52904007ebaSmrg        case $my_directory_path in */*) ;; *) break ;; esac
53004007ebaSmrg
53104007ebaSmrg        # ...otherwise throw away the child directory and loop
53204007ebaSmrg        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
53304007ebaSmrg      done
53404007ebaSmrg      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
53504007ebaSmrg
53604007ebaSmrg      save_mkdir_p_IFS="$IFS"; IFS=':'
53704007ebaSmrg      for my_dir in $my_dir_list; do
53804007ebaSmrg	IFS="$save_mkdir_p_IFS"
53904007ebaSmrg        # mkdir can fail with a `File exist' error if two processes
54004007ebaSmrg        # try to create one of the directories concurrently.  Don't
54104007ebaSmrg        # stop in that case!
54204007ebaSmrg        $MKDIR "$my_dir" 2>/dev/null || :
54304007ebaSmrg      done
54404007ebaSmrg      IFS="$save_mkdir_p_IFS"
54504007ebaSmrg
54604007ebaSmrg      # Bail out if we (or some other process) failed to create a directory.
54704007ebaSmrg      test -d "$my_directory_path" || \
54804007ebaSmrg        func_fatal_error "Failed to create \`$1'"
54904007ebaSmrg    fi
55004007ebaSmrg}
55104007ebaSmrg
55204007ebaSmrg
55304007ebaSmrg# func_mktempdir [string]
55404007ebaSmrg# Make a temporary directory that won't clash with other running
55504007ebaSmrg# libtool processes, and avoids race conditions if possible.  If
55604007ebaSmrg# given, STRING is the basename for that directory.
55704007ebaSmrgfunc_mktempdir ()
55804007ebaSmrg{
55904007ebaSmrg    my_template="${TMPDIR-/tmp}/${1-$progname}"
56004007ebaSmrg
56104007ebaSmrg    if test "$opt_dry_run" = ":"; then
56204007ebaSmrg      # Return a directory name, but don't create it in dry-run mode
56304007ebaSmrg      my_tmpdir="${my_template}-$$"
56404007ebaSmrg    else
56504007ebaSmrg
56604007ebaSmrg      # If mktemp works, use that first and foremost
56704007ebaSmrg      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
56804007ebaSmrg
56904007ebaSmrg      if test ! -d "$my_tmpdir"; then
57004007ebaSmrg        # Failing that, at least try and use $RANDOM to avoid a race
57104007ebaSmrg        my_tmpdir="${my_template}-${RANDOM-0}$$"
57204007ebaSmrg
57304007ebaSmrg        save_mktempdir_umask=`umask`
57404007ebaSmrg        umask 0077
57504007ebaSmrg        $MKDIR "$my_tmpdir"
57604007ebaSmrg        umask $save_mktempdir_umask
57704007ebaSmrg      fi
57804007ebaSmrg
57904007ebaSmrg      # If we're not in dry-run mode, bomb out on failure
58004007ebaSmrg      test -d "$my_tmpdir" || \
58104007ebaSmrg        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
58204007ebaSmrg    fi
58304007ebaSmrg
58404007ebaSmrg    $ECHO "$my_tmpdir"
58504007ebaSmrg}
58604007ebaSmrg
58704007ebaSmrg
58804007ebaSmrg# func_quote_for_eval arg
58904007ebaSmrg# Aesthetically quote ARG to be evaled later.
59004007ebaSmrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
59104007ebaSmrg# is double-quoted, suitable for a subsequent eval, whereas
59204007ebaSmrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
59304007ebaSmrg# which are still active within double quotes backslashified.
59404007ebaSmrgfunc_quote_for_eval ()
59504007ebaSmrg{
59604007ebaSmrg    case $1 in
59704007ebaSmrg      *[\\\`\"\$]*)
59804007ebaSmrg	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
59904007ebaSmrg      *)
60004007ebaSmrg        func_quote_for_eval_unquoted_result="$1" ;;
60104007ebaSmrg    esac
60204007ebaSmrg
60304007ebaSmrg    case $func_quote_for_eval_unquoted_result in
60404007ebaSmrg      # Double-quote args containing shell metacharacters to delay
60504007ebaSmrg      # word splitting, command substitution and and variable
60604007ebaSmrg      # expansion for a subsequent eval.
60704007ebaSmrg      # Many Bourne shells cannot handle close brackets correctly
60804007ebaSmrg      # in scan sets, so we specify it separately.
60904007ebaSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
61004007ebaSmrg        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
61104007ebaSmrg        ;;
61204007ebaSmrg      *)
61304007ebaSmrg        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
61404007ebaSmrg    esac
61504007ebaSmrg}
61604007ebaSmrg
61704007ebaSmrg
61804007ebaSmrg# func_quote_for_expand arg
61904007ebaSmrg# Aesthetically quote ARG to be evaled later; same as above,
62004007ebaSmrg# but do not quote variable references.
62104007ebaSmrgfunc_quote_for_expand ()
62204007ebaSmrg{
62304007ebaSmrg    case $1 in
62404007ebaSmrg      *[\\\`\"]*)
62504007ebaSmrg	my_arg=`$ECHO "$1" | $SED \
62604007ebaSmrg	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
62704007ebaSmrg      *)
62804007ebaSmrg        my_arg="$1" ;;
62904007ebaSmrg    esac
63004007ebaSmrg
63104007ebaSmrg    case $my_arg in
63204007ebaSmrg      # Double-quote args containing shell metacharacters to delay
63304007ebaSmrg      # word splitting and command substitution for a subsequent eval.
63404007ebaSmrg      # Many Bourne shells cannot handle close brackets correctly
63504007ebaSmrg      # in scan sets, so we specify it separately.
63604007ebaSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
63704007ebaSmrg        my_arg="\"$my_arg\""
63804007ebaSmrg        ;;
63904007ebaSmrg    esac
64004007ebaSmrg
64104007ebaSmrg    func_quote_for_expand_result="$my_arg"
64204007ebaSmrg}
64304007ebaSmrg
64404007ebaSmrg
64504007ebaSmrg# func_show_eval cmd [fail_exp]
64604007ebaSmrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
64704007ebaSmrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
64804007ebaSmrg# is given, then evaluate it.
64904007ebaSmrgfunc_show_eval ()
65004007ebaSmrg{
65104007ebaSmrg    my_cmd="$1"
65204007ebaSmrg    my_fail_exp="${2-:}"
65304007ebaSmrg
65404007ebaSmrg    ${opt_silent-false} || {
65504007ebaSmrg      func_quote_for_expand "$my_cmd"
65604007ebaSmrg      eval "func_echo $func_quote_for_expand_result"
65704007ebaSmrg    }
65804007ebaSmrg
65904007ebaSmrg    if ${opt_dry_run-false}; then :; else
66004007ebaSmrg      eval "$my_cmd"
66104007ebaSmrg      my_status=$?
66204007ebaSmrg      if test "$my_status" -eq 0; then :; else
66304007ebaSmrg	eval "(exit $my_status); $my_fail_exp"
66404007ebaSmrg      fi
66504007ebaSmrg    fi
66604007ebaSmrg}
66704007ebaSmrg
66804007ebaSmrg
66904007ebaSmrg# func_show_eval_locale cmd [fail_exp]
67004007ebaSmrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
67104007ebaSmrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
67204007ebaSmrg# is given, then evaluate it.  Use the saved locale for evaluation.
67304007ebaSmrgfunc_show_eval_locale ()
67404007ebaSmrg{
67504007ebaSmrg    my_cmd="$1"
67604007ebaSmrg    my_fail_exp="${2-:}"
67704007ebaSmrg
67804007ebaSmrg    ${opt_silent-false} || {
67904007ebaSmrg      func_quote_for_expand "$my_cmd"
68004007ebaSmrg      eval "func_echo $func_quote_for_expand_result"
68104007ebaSmrg    }
68204007ebaSmrg
68304007ebaSmrg    if ${opt_dry_run-false}; then :; else
68404007ebaSmrg      eval "$lt_user_locale
68504007ebaSmrg	    $my_cmd"
68604007ebaSmrg      my_status=$?
68704007ebaSmrg      eval "$lt_safe_locale"
68804007ebaSmrg      if test "$my_status" -eq 0; then :; else
68904007ebaSmrg	eval "(exit $my_status); $my_fail_exp"
69004007ebaSmrg      fi
69104007ebaSmrg    fi
69204007ebaSmrg}
69304007ebaSmrg
69404007ebaSmrg# func_tr_sh
69504007ebaSmrg# Turn $1 into a string suitable for a shell variable name.
69604007ebaSmrg# Result is stored in $func_tr_sh_result.  All characters
69704007ebaSmrg# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
69804007ebaSmrg# if $1 begins with a digit, a '_' is prepended as well.
69904007ebaSmrgfunc_tr_sh ()
70004007ebaSmrg{
70104007ebaSmrg  case $1 in
70204007ebaSmrg  [0-9]* | *[!a-zA-Z0-9_]*)
70304007ebaSmrg    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
70404007ebaSmrg    ;;
70504007ebaSmrg  * )
70604007ebaSmrg    func_tr_sh_result=$1
70704007ebaSmrg    ;;
70804007ebaSmrg  esac
70904007ebaSmrg}
71004007ebaSmrg
71104007ebaSmrg
71204007ebaSmrg# func_version
71304007ebaSmrg# Echo version message to standard output and exit.
71404007ebaSmrgfunc_version ()
71504007ebaSmrg{
71604007ebaSmrg    $opt_debug
71704007ebaSmrg
71804007ebaSmrg    $SED -n '/(C)/!b go
71904007ebaSmrg	:more
72004007ebaSmrg	/\./!{
72104007ebaSmrg	  N
72204007ebaSmrg	  s/\n# / /
72304007ebaSmrg	  b more
72404007ebaSmrg	}
72504007ebaSmrg	:go
72604007ebaSmrg	/^# '$PROGRAM' (GNU /,/# warranty; / {
72704007ebaSmrg        s/^# //
72804007ebaSmrg	s/^# *$//
72904007ebaSmrg        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
73004007ebaSmrg        p
73104007ebaSmrg     }' < "$progpath"
73204007ebaSmrg     exit $?
73304007ebaSmrg}
73404007ebaSmrg
73504007ebaSmrg# func_usage
73604007ebaSmrg# Echo short help message to standard output and exit.
73704007ebaSmrgfunc_usage ()
73804007ebaSmrg{
73904007ebaSmrg    $opt_debug
74004007ebaSmrg
74104007ebaSmrg    $SED -n '/^# Usage:/,/^#  *.*--help/ {
74204007ebaSmrg        s/^# //
74304007ebaSmrg	s/^# *$//
74404007ebaSmrg	s/\$progname/'$progname'/
74504007ebaSmrg	p
74604007ebaSmrg    }' < "$progpath"
74704007ebaSmrg    echo
74804007ebaSmrg    $ECHO "run \`$progname --help | more' for full usage"
74904007ebaSmrg    exit $?
75004007ebaSmrg}
75104007ebaSmrg
75204007ebaSmrg# func_help [NOEXIT]
75304007ebaSmrg# Echo long help message to standard output and exit,
75404007ebaSmrg# unless 'noexit' is passed as argument.
75504007ebaSmrgfunc_help ()
75604007ebaSmrg{
75704007ebaSmrg    $opt_debug
75804007ebaSmrg
75904007ebaSmrg    $SED -n '/^# Usage:/,/# Report bugs to/ {
76004007ebaSmrg	:print
76104007ebaSmrg        s/^# //
76204007ebaSmrg	s/^# *$//
76304007ebaSmrg	s*\$progname*'$progname'*
76404007ebaSmrg	s*\$host*'"$host"'*
76504007ebaSmrg	s*\$SHELL*'"$SHELL"'*
76604007ebaSmrg	s*\$LTCC*'"$LTCC"'*
76704007ebaSmrg	s*\$LTCFLAGS*'"$LTCFLAGS"'*
76804007ebaSmrg	s*\$LD*'"$LD"'*
76904007ebaSmrg	s/\$with_gnu_ld/'"$with_gnu_ld"'/
77004007ebaSmrg	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
77104007ebaSmrg	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
77204007ebaSmrg	p
77304007ebaSmrg	d
77404007ebaSmrg     }
77504007ebaSmrg     /^# .* home page:/b print
77604007ebaSmrg     /^# General help using/b print
77704007ebaSmrg     ' < "$progpath"
77804007ebaSmrg    ret=$?
77904007ebaSmrg    if test -z "$1"; then
78004007ebaSmrg      exit $ret
78104007ebaSmrg    fi
78204007ebaSmrg}
78304007ebaSmrg
78404007ebaSmrg# func_missing_arg argname
78504007ebaSmrg# Echo program name prefixed message to standard error and set global
78604007ebaSmrg# exit_cmd.
78704007ebaSmrgfunc_missing_arg ()
78804007ebaSmrg{
78904007ebaSmrg    $opt_debug
79004007ebaSmrg
79104007ebaSmrg    func_error "missing argument for $1."
79204007ebaSmrg    exit_cmd=exit
79304007ebaSmrg}
79404007ebaSmrg
79504007ebaSmrg
79604007ebaSmrg# func_split_short_opt shortopt
79704007ebaSmrg# Set func_split_short_opt_name and func_split_short_opt_arg shell
79804007ebaSmrg# variables after splitting SHORTOPT after the 2nd character.
79904007ebaSmrgfunc_split_short_opt ()
80004007ebaSmrg{
80104007ebaSmrg    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
80204007ebaSmrg    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
80304007ebaSmrg
80404007ebaSmrg    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
80504007ebaSmrg    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
80604007ebaSmrg} # func_split_short_opt may be replaced by extended shell implementation
80704007ebaSmrg
80804007ebaSmrg
80904007ebaSmrg# func_split_long_opt longopt
81004007ebaSmrg# Set func_split_long_opt_name and func_split_long_opt_arg shell
81104007ebaSmrg# variables after splitting LONGOPT at the `=' sign.
81204007ebaSmrgfunc_split_long_opt ()
81304007ebaSmrg{
81404007ebaSmrg    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
81504007ebaSmrg    my_sed_long_arg='1s/^--[^=]*=//'
81604007ebaSmrg
81704007ebaSmrg    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
81804007ebaSmrg    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
81904007ebaSmrg} # func_split_long_opt may be replaced by extended shell implementation
82004007ebaSmrg
82104007ebaSmrgexit_cmd=:
82204007ebaSmrg
82304007ebaSmrg
82404007ebaSmrg
82504007ebaSmrg
82604007ebaSmrg
82704007ebaSmrgmagic="%%%MAGIC variable%%%"
82804007ebaSmrgmagic_exe="%%%MAGIC EXE variable%%%"
82904007ebaSmrg
83004007ebaSmrg# Global variables.
83104007ebaSmrgnonopt=
83204007ebaSmrgpreserve_args=
83304007ebaSmrglo2o="s/\\.lo\$/.${objext}/"
83404007ebaSmrgo2lo="s/\\.${objext}\$/.lo/"
83504007ebaSmrgextracted_archives=
83604007ebaSmrgextracted_serial=0
83704007ebaSmrg
83804007ebaSmrg# If this variable is set in any of the actions, the command in it
83904007ebaSmrg# will be execed at the end.  This prevents here-documents from being
84004007ebaSmrg# left over by shells.
84104007ebaSmrgexec_cmd=
84204007ebaSmrg
84304007ebaSmrg# func_append var value
84404007ebaSmrg# Append VALUE to the end of shell variable VAR.
84504007ebaSmrgfunc_append ()
84604007ebaSmrg{
84704007ebaSmrg    eval "${1}=\$${1}\${2}"
84804007ebaSmrg} # func_append may be replaced by extended shell implementation
84904007ebaSmrg
85004007ebaSmrg# func_append_quoted var value
85104007ebaSmrg# Quote VALUE and append to the end of shell variable VAR, separated
85204007ebaSmrg# by a space.
85304007ebaSmrgfunc_append_quoted ()
85404007ebaSmrg{
85504007ebaSmrg    func_quote_for_eval "${2}"
85604007ebaSmrg    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
85704007ebaSmrg} # func_append_quoted may be replaced by extended shell implementation
85804007ebaSmrg
85904007ebaSmrg
86004007ebaSmrg# func_arith arithmetic-term...
86104007ebaSmrgfunc_arith ()
86204007ebaSmrg{
86304007ebaSmrg    func_arith_result=`expr "${@}"`
86404007ebaSmrg} # func_arith may be replaced by extended shell implementation
86504007ebaSmrg
86604007ebaSmrg
86704007ebaSmrg# func_len string
86804007ebaSmrg# STRING may not start with a hyphen.
86904007ebaSmrgfunc_len ()
87004007ebaSmrg{
87104007ebaSmrg    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
87204007ebaSmrg} # func_len may be replaced by extended shell implementation
87304007ebaSmrg
87404007ebaSmrg
87504007ebaSmrg# func_lo2o object
87604007ebaSmrgfunc_lo2o ()
87704007ebaSmrg{
87804007ebaSmrg    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
87904007ebaSmrg} # func_lo2o may be replaced by extended shell implementation
88004007ebaSmrg
88104007ebaSmrg
88204007ebaSmrg# func_xform libobj-or-source
88304007ebaSmrgfunc_xform ()
88404007ebaSmrg{
88504007ebaSmrg    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
88604007ebaSmrg} # func_xform may be replaced by extended shell implementation
88704007ebaSmrg
88804007ebaSmrg
88904007ebaSmrg# func_fatal_configuration arg...
89004007ebaSmrg# Echo program name prefixed message to standard error, followed by
89104007ebaSmrg# a configuration failure hint, and exit.
89204007ebaSmrgfunc_fatal_configuration ()
89304007ebaSmrg{
89404007ebaSmrg    func_error ${1+"$@"}
89504007ebaSmrg    func_error "See the $PACKAGE documentation for more information."
89604007ebaSmrg    func_fatal_error "Fatal configuration error."
89704007ebaSmrg}
89804007ebaSmrg
89904007ebaSmrg
90004007ebaSmrg# func_config
90104007ebaSmrg# Display the configuration for all the tags in this script.
90204007ebaSmrgfunc_config ()
90304007ebaSmrg{
90404007ebaSmrg    re_begincf='^# ### BEGIN LIBTOOL'
90504007ebaSmrg    re_endcf='^# ### END LIBTOOL'
90604007ebaSmrg
90704007ebaSmrg    # Default configuration.
90804007ebaSmrg    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
90904007ebaSmrg
91004007ebaSmrg    # Now print the configurations for the tags.
91104007ebaSmrg    for tagname in $taglist; do
91204007ebaSmrg      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
91304007ebaSmrg    done
91404007ebaSmrg
91504007ebaSmrg    exit $?
91604007ebaSmrg}
91704007ebaSmrg
91804007ebaSmrg# func_features
91904007ebaSmrg# Display the features supported by this script.
92004007ebaSmrgfunc_features ()
92104007ebaSmrg{
92204007ebaSmrg    echo "host: $host"
92304007ebaSmrg    if test "$build_libtool_libs" = yes; then
92404007ebaSmrg      echo "enable shared libraries"
92504007ebaSmrg    else
92604007ebaSmrg      echo "disable shared libraries"
92704007ebaSmrg    fi
92804007ebaSmrg    if test "$build_old_libs" = yes; then
92904007ebaSmrg      echo "enable static libraries"
93004007ebaSmrg    else
93104007ebaSmrg      echo "disable static libraries"
93204007ebaSmrg    fi
93304007ebaSmrg
93404007ebaSmrg    exit $?
93504007ebaSmrg}
93604007ebaSmrg
93704007ebaSmrg# func_enable_tag tagname
93804007ebaSmrg# Verify that TAGNAME is valid, and either flag an error and exit, or
93904007ebaSmrg# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
94004007ebaSmrg# variable here.
94104007ebaSmrgfunc_enable_tag ()
94204007ebaSmrg{
94304007ebaSmrg  # Global variable:
94404007ebaSmrg  tagname="$1"
94504007ebaSmrg
94604007ebaSmrg  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
94704007ebaSmrg  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
94804007ebaSmrg  sed_extractcf="/$re_begincf/,/$re_endcf/p"
94904007ebaSmrg
95004007ebaSmrg  # Validate tagname.
95104007ebaSmrg  case $tagname in
95204007ebaSmrg    *[!-_A-Za-z0-9,/]*)
95304007ebaSmrg      func_fatal_error "invalid tag name: $tagname"
95404007ebaSmrg      ;;
95504007ebaSmrg  esac
95604007ebaSmrg
95704007ebaSmrg  # Don't test for the "default" C tag, as we know it's
95804007ebaSmrg  # there but not specially marked.
95904007ebaSmrg  case $tagname in
96004007ebaSmrg    CC) ;;
96104007ebaSmrg    *)
96204007ebaSmrg      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
96304007ebaSmrg	taglist="$taglist $tagname"
96404007ebaSmrg
96504007ebaSmrg	# Evaluate the configuration.  Be careful to quote the path
96604007ebaSmrg	# and the sed script, to avoid splitting on whitespace, but
96704007ebaSmrg	# also don't use non-portable quotes within backquotes within
96804007ebaSmrg	# quotes we have to do it in 2 steps:
96904007ebaSmrg	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
97004007ebaSmrg	eval "$extractedcf"
97104007ebaSmrg      else
97204007ebaSmrg	func_error "ignoring unknown tag $tagname"
97304007ebaSmrg      fi
97404007ebaSmrg      ;;
97504007ebaSmrg  esac
97604007ebaSmrg}
97704007ebaSmrg
97804007ebaSmrg# func_check_version_match
97904007ebaSmrg# Ensure that we are using m4 macros, and libtool script from the same
98004007ebaSmrg# release of libtool.
98104007ebaSmrgfunc_check_version_match ()
98204007ebaSmrg{
98304007ebaSmrg  if test "$package_revision" != "$macro_revision"; then
98404007ebaSmrg    if test "$VERSION" != "$macro_version"; then
98504007ebaSmrg      if test -z "$macro_version"; then
98604007ebaSmrg        cat >&2 <<_LT_EOF
98704007ebaSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
98804007ebaSmrg$progname: definition of this LT_INIT comes from an older release.
98904007ebaSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
99004007ebaSmrg$progname: and run autoconf again.
99104007ebaSmrg_LT_EOF
99204007ebaSmrg      else
99304007ebaSmrg        cat >&2 <<_LT_EOF
99404007ebaSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
99504007ebaSmrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
99604007ebaSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
99704007ebaSmrg$progname: and run autoconf again.
99804007ebaSmrg_LT_EOF
99904007ebaSmrg      fi
100004007ebaSmrg    else
100104007ebaSmrg      cat >&2 <<_LT_EOF
100204007ebaSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
100304007ebaSmrg$progname: but the definition of this LT_INIT comes from revision $macro_revision.
100404007ebaSmrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision
100504007ebaSmrg$progname: of $PACKAGE $VERSION and run autoconf again.
100604007ebaSmrg_LT_EOF
100704007ebaSmrg    fi
100804007ebaSmrg
100904007ebaSmrg    exit $EXIT_MISMATCH
101004007ebaSmrg  fi
101104007ebaSmrg}
101204007ebaSmrg
101304007ebaSmrg
101404007ebaSmrg# Shorthand for --mode=foo, only valid as the first argument
101504007ebaSmrgcase $1 in
101604007ebaSmrgclean|clea|cle|cl)
101704007ebaSmrg  shift; set dummy --mode clean ${1+"$@"}; shift
101804007ebaSmrg  ;;
101904007ebaSmrgcompile|compil|compi|comp|com|co|c)
102004007ebaSmrg  shift; set dummy --mode compile ${1+"$@"}; shift
102104007ebaSmrg  ;;
102204007ebaSmrgexecute|execut|execu|exec|exe|ex|e)
102304007ebaSmrg  shift; set dummy --mode execute ${1+"$@"}; shift
102404007ebaSmrg  ;;
102504007ebaSmrgfinish|finis|fini|fin|fi|f)
102604007ebaSmrg  shift; set dummy --mode finish ${1+"$@"}; shift
102704007ebaSmrg  ;;
102804007ebaSmrginstall|instal|insta|inst|ins|in|i)
102904007ebaSmrg  shift; set dummy --mode install ${1+"$@"}; shift
103004007ebaSmrg  ;;
103104007ebaSmrglink|lin|li|l)
103204007ebaSmrg  shift; set dummy --mode link ${1+"$@"}; shift
103304007ebaSmrg  ;;
103404007ebaSmrguninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
103504007ebaSmrg  shift; set dummy --mode uninstall ${1+"$@"}; shift
103604007ebaSmrg  ;;
103704007ebaSmrgesac
103804007ebaSmrg
103904007ebaSmrg
104004007ebaSmrg
104104007ebaSmrg# Option defaults:
104204007ebaSmrgopt_debug=:
104304007ebaSmrgopt_dry_run=false
104404007ebaSmrgopt_config=false
104504007ebaSmrgopt_preserve_dup_deps=false
104604007ebaSmrgopt_features=false
104704007ebaSmrgopt_finish=false
104804007ebaSmrgopt_help=false
104904007ebaSmrgopt_help_all=false
105004007ebaSmrgopt_silent=:
105104007ebaSmrgopt_warning=:
105204007ebaSmrgopt_verbose=:
105304007ebaSmrgopt_silent=false
105404007ebaSmrgopt_verbose=false
105504007ebaSmrg
105604007ebaSmrg
105704007ebaSmrg# Parse options once, thoroughly.  This comes as soon as possible in the
105804007ebaSmrg# script to make things like `--version' happen as quickly as we can.
105904007ebaSmrg{
106004007ebaSmrg  # this just eases exit handling
106104007ebaSmrg  while test $# -gt 0; do
106204007ebaSmrg    opt="$1"
106304007ebaSmrg    shift
106404007ebaSmrg    case $opt in
106504007ebaSmrg      --debug|-x)	opt_debug='set -x'
106604007ebaSmrg			func_echo "enabling shell trace mode"
106704007ebaSmrg			$opt_debug
106804007ebaSmrg			;;
106904007ebaSmrg      --dry-run|--dryrun|-n)
107004007ebaSmrg			opt_dry_run=:
107104007ebaSmrg			;;
107204007ebaSmrg      --config)
107304007ebaSmrg			opt_config=:
107404007ebaSmrgfunc_config
107504007ebaSmrg			;;
107604007ebaSmrg      --dlopen|-dlopen)
107704007ebaSmrg			optarg="$1"
107804007ebaSmrg			opt_dlopen="${opt_dlopen+$opt_dlopen
107904007ebaSmrg}$optarg"
108004007ebaSmrg			shift
108104007ebaSmrg			;;
108204007ebaSmrg      --preserve-dup-deps)
108304007ebaSmrg			opt_preserve_dup_deps=:
108404007ebaSmrg			;;
108504007ebaSmrg      --features)
108604007ebaSmrg			opt_features=:
108704007ebaSmrgfunc_features
108804007ebaSmrg			;;
108904007ebaSmrg      --finish)
109004007ebaSmrg			opt_finish=:
109104007ebaSmrgset dummy --mode finish ${1+"$@"}; shift
109204007ebaSmrg			;;
109304007ebaSmrg      --help)
109404007ebaSmrg			opt_help=:
109504007ebaSmrg			;;
109604007ebaSmrg      --help-all)
109704007ebaSmrg			opt_help_all=:
109804007ebaSmrgopt_help=': help-all'
109904007ebaSmrg			;;
110004007ebaSmrg      --mode)
110104007ebaSmrg			test $# = 0 && func_missing_arg $opt && break
110204007ebaSmrg			optarg="$1"
110304007ebaSmrg			opt_mode="$optarg"
110404007ebaSmrgcase $optarg in
110504007ebaSmrg  # Valid mode arguments:
110604007ebaSmrg  clean|compile|execute|finish|install|link|relink|uninstall) ;;
110704007ebaSmrg
110804007ebaSmrg  # Catch anything else as an error
110904007ebaSmrg  *) func_error "invalid argument for $opt"
111004007ebaSmrg     exit_cmd=exit
111104007ebaSmrg     break
111204007ebaSmrg     ;;
111304007ebaSmrgesac
111404007ebaSmrg			shift
111504007ebaSmrg			;;
111604007ebaSmrg      --no-silent|--no-quiet)
111704007ebaSmrg			opt_silent=false
111804007ebaSmrgfunc_append preserve_args " $opt"
111904007ebaSmrg			;;
112004007ebaSmrg      --no-warning|--no-warn)
112104007ebaSmrg			opt_warning=false
112204007ebaSmrgfunc_append preserve_args " $opt"
112304007ebaSmrg			;;
112404007ebaSmrg      --no-verbose)
112504007ebaSmrg			opt_verbose=false
112604007ebaSmrgfunc_append preserve_args " $opt"
112704007ebaSmrg			;;
112804007ebaSmrg      --silent|--quiet)
112904007ebaSmrg			opt_silent=:
113004007ebaSmrgfunc_append preserve_args " $opt"
113104007ebaSmrg        opt_verbose=false
113204007ebaSmrg			;;
113304007ebaSmrg      --verbose|-v)
113404007ebaSmrg			opt_verbose=:
113504007ebaSmrgfunc_append preserve_args " $opt"
113604007ebaSmrgopt_silent=false
113704007ebaSmrg			;;
113804007ebaSmrg      --tag)
113904007ebaSmrg			test $# = 0 && func_missing_arg $opt && break
114004007ebaSmrg			optarg="$1"
114104007ebaSmrg			opt_tag="$optarg"
114204007ebaSmrgfunc_append preserve_args " $opt $optarg"
114304007ebaSmrgfunc_enable_tag "$optarg"
114404007ebaSmrg			shift
114504007ebaSmrg			;;
114604007ebaSmrg
114704007ebaSmrg      -\?|-h)		func_usage				;;
114804007ebaSmrg      --help)		func_help				;;
114904007ebaSmrg      --version)	func_version				;;
115004007ebaSmrg
115104007ebaSmrg      # Separate optargs to long options:
115204007ebaSmrg      --*=*)
115304007ebaSmrg			func_split_long_opt "$opt"
115404007ebaSmrg			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
115504007ebaSmrg			shift
115604007ebaSmrg			;;
115704007ebaSmrg
115804007ebaSmrg      # Separate non-argument short options:
115904007ebaSmrg      -\?*|-h*|-n*|-v*)
116004007ebaSmrg			func_split_short_opt "$opt"
116104007ebaSmrg			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
116204007ebaSmrg			shift
116304007ebaSmrg			;;
116404007ebaSmrg
116504007ebaSmrg      --)		break					;;
116604007ebaSmrg      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
116704007ebaSmrg      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
116804007ebaSmrg    esac
116904007ebaSmrg  done
117004007ebaSmrg
117104007ebaSmrg  # Validate options:
117204007ebaSmrg
117304007ebaSmrg  # save first non-option argument
117404007ebaSmrg  if test "$#" -gt 0; then
117504007ebaSmrg    nonopt="$opt"
117604007ebaSmrg    shift
117704007ebaSmrg  fi
117804007ebaSmrg
117904007ebaSmrg  # preserve --debug
118004007ebaSmrg  test "$opt_debug" = : || func_append preserve_args " --debug"
118104007ebaSmrg
118204007ebaSmrg  case $host in
118304007ebaSmrg    *cygwin* | *mingw* | *pw32* | *cegcc*)
118404007ebaSmrg      # don't eliminate duplications in $postdeps and $predeps
118504007ebaSmrg      opt_duplicate_compiler_generated_deps=:
118604007ebaSmrg      ;;
118704007ebaSmrg    *)
118804007ebaSmrg      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
118904007ebaSmrg      ;;
119004007ebaSmrg  esac
119104007ebaSmrg
119204007ebaSmrg  $opt_help || {
119304007ebaSmrg    # Sanity checks first:
119404007ebaSmrg    func_check_version_match
119504007ebaSmrg
119604007ebaSmrg    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
119704007ebaSmrg      func_fatal_configuration "not configured to build any kind of library"
119804007ebaSmrg    fi
119904007ebaSmrg
120004007ebaSmrg    # Darwin sucks
120104007ebaSmrg    eval std_shrext=\"$shrext_cmds\"
120204007ebaSmrg
120304007ebaSmrg    # Only execute mode is allowed to have -dlopen flags.
120404007ebaSmrg    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
120504007ebaSmrg      func_error "unrecognized option \`-dlopen'"
120604007ebaSmrg      $ECHO "$help" 1>&2
120704007ebaSmrg      exit $EXIT_FAILURE
120804007ebaSmrg    fi
120904007ebaSmrg
121004007ebaSmrg    # Change the help message to a mode-specific one.
121104007ebaSmrg    generic_help="$help"
121204007ebaSmrg    help="Try \`$progname --help --mode=$opt_mode' for more information."
121304007ebaSmrg  }
121404007ebaSmrg
121504007ebaSmrg
121604007ebaSmrg  # Bail if the options were screwed
121704007ebaSmrg  $exit_cmd $EXIT_FAILURE
121804007ebaSmrg}
121904007ebaSmrg
122004007ebaSmrg
122104007ebaSmrg
122204007ebaSmrg
122304007ebaSmrg## ----------- ##
122404007ebaSmrg##    Main.    ##
122504007ebaSmrg## ----------- ##
122604007ebaSmrg
122704007ebaSmrg# func_lalib_p file
122804007ebaSmrg# True iff FILE is a libtool `.la' library or `.lo' object file.
122904007ebaSmrg# This function is only a basic sanity check; it will hardly flush out
123004007ebaSmrg# determined imposters.
123104007ebaSmrgfunc_lalib_p ()
123204007ebaSmrg{
123304007ebaSmrg    test -f "$1" &&
123404007ebaSmrg      $SED -e 4q "$1" 2>/dev/null \
123504007ebaSmrg        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
123604007ebaSmrg}
123704007ebaSmrg
123804007ebaSmrg# func_lalib_unsafe_p file
123904007ebaSmrg# True iff FILE is a libtool `.la' library or `.lo' object file.
124004007ebaSmrg# This function implements the same check as func_lalib_p without
124104007ebaSmrg# resorting to external programs.  To this end, it redirects stdin and
124204007ebaSmrg# closes it afterwards, without saving the original file descriptor.
124304007ebaSmrg# As a safety measure, use it only where a negative result would be
124404007ebaSmrg# fatal anyway.  Works if `file' does not exist.
124504007ebaSmrgfunc_lalib_unsafe_p ()
124604007ebaSmrg{
124704007ebaSmrg    lalib_p=no
124804007ebaSmrg    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
124904007ebaSmrg	for lalib_p_l in 1 2 3 4
125004007ebaSmrg	do
125104007ebaSmrg	    read lalib_p_line
125204007ebaSmrg	    case "$lalib_p_line" in
125304007ebaSmrg		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
125404007ebaSmrg	    esac
125504007ebaSmrg	done
125604007ebaSmrg	exec 0<&5 5<&-
125704007ebaSmrg    fi
125804007ebaSmrg    test "$lalib_p" = yes
125904007ebaSmrg}
126004007ebaSmrg
126104007ebaSmrg# func_ltwrapper_script_p file
126204007ebaSmrg# True iff FILE is a libtool wrapper script
126304007ebaSmrg# This function is only a basic sanity check; it will hardly flush out
126404007ebaSmrg# determined imposters.
126504007ebaSmrgfunc_ltwrapper_script_p ()
126604007ebaSmrg{
126704007ebaSmrg    func_lalib_p "$1"
126804007ebaSmrg}
126904007ebaSmrg
127004007ebaSmrg# func_ltwrapper_executable_p file
127104007ebaSmrg# True iff FILE is a libtool wrapper executable
127204007ebaSmrg# This function is only a basic sanity check; it will hardly flush out
127304007ebaSmrg# determined imposters.
127404007ebaSmrgfunc_ltwrapper_executable_p ()
127504007ebaSmrg{
127604007ebaSmrg    func_ltwrapper_exec_suffix=
127704007ebaSmrg    case $1 in
127804007ebaSmrg    *.exe) ;;
127904007ebaSmrg    *) func_ltwrapper_exec_suffix=.exe ;;
128004007ebaSmrg    esac
128104007ebaSmrg    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
128204007ebaSmrg}
128304007ebaSmrg
128404007ebaSmrg# func_ltwrapper_scriptname file
128504007ebaSmrg# Assumes file is an ltwrapper_executable
128604007ebaSmrg# uses $file to determine the appropriate filename for a
128704007ebaSmrg# temporary ltwrapper_script.
128804007ebaSmrgfunc_ltwrapper_scriptname ()
128904007ebaSmrg{
129004007ebaSmrg    func_dirname_and_basename "$1" "" "."
129104007ebaSmrg    func_stripname '' '.exe' "$func_basename_result"
129204007ebaSmrg    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
129304007ebaSmrg}
129404007ebaSmrg
129504007ebaSmrg# func_ltwrapper_p file
129604007ebaSmrg# True iff FILE is a libtool wrapper script or wrapper executable
129704007ebaSmrg# This function is only a basic sanity check; it will hardly flush out
129804007ebaSmrg# determined imposters.
129904007ebaSmrgfunc_ltwrapper_p ()
130004007ebaSmrg{
130104007ebaSmrg    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
130204007ebaSmrg}
130304007ebaSmrg
130404007ebaSmrg
130504007ebaSmrg# func_execute_cmds commands fail_cmd
130604007ebaSmrg# Execute tilde-delimited COMMANDS.
130704007ebaSmrg# If FAIL_CMD is given, eval that upon failure.
130804007ebaSmrg# FAIL_CMD may read-access the current command in variable CMD!
130904007ebaSmrgfunc_execute_cmds ()
131004007ebaSmrg{
131104007ebaSmrg    $opt_debug
131204007ebaSmrg    save_ifs=$IFS; IFS='~'
131304007ebaSmrg    for cmd in $1; do
131404007ebaSmrg      IFS=$save_ifs
131504007ebaSmrg      eval cmd=\"$cmd\"
131604007ebaSmrg      func_show_eval "$cmd" "${2-:}"
131704007ebaSmrg    done
131804007ebaSmrg    IFS=$save_ifs
131904007ebaSmrg}
132004007ebaSmrg
132104007ebaSmrg
132204007ebaSmrg# func_source file
132304007ebaSmrg# Source FILE, adding directory component if necessary.
132404007ebaSmrg# Note that it is not necessary on cygwin/mingw to append a dot to
132504007ebaSmrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
132604007ebaSmrg# behavior happens only for exec(3), not for open(2)!  Also, sourcing
132704007ebaSmrg# `FILE.' does not work on cygwin managed mounts.
132804007ebaSmrgfunc_source ()
132904007ebaSmrg{
133004007ebaSmrg    $opt_debug
133104007ebaSmrg    case $1 in
133204007ebaSmrg    */* | *\\*)	. "$1" ;;
133304007ebaSmrg    *)		. "./$1" ;;
133404007ebaSmrg    esac
133504007ebaSmrg}
133604007ebaSmrg
133704007ebaSmrg
133804007ebaSmrg# func_resolve_sysroot PATH
133904007ebaSmrg# Replace a leading = in PATH with a sysroot.  Store the result into
134004007ebaSmrg# func_resolve_sysroot_result
134104007ebaSmrgfunc_resolve_sysroot ()
134204007ebaSmrg{
134304007ebaSmrg  func_resolve_sysroot_result=$1
134404007ebaSmrg  case $func_resolve_sysroot_result in
134504007ebaSmrg  =*)
134604007ebaSmrg    func_stripname '=' '' "$func_resolve_sysroot_result"
134704007ebaSmrg    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
134804007ebaSmrg    ;;
134904007ebaSmrg  esac
135004007ebaSmrg}
135104007ebaSmrg
135204007ebaSmrg# func_replace_sysroot PATH
135304007ebaSmrg# If PATH begins with the sysroot, replace it with = and
135404007ebaSmrg# store the result into func_replace_sysroot_result.
135504007ebaSmrgfunc_replace_sysroot ()
135604007ebaSmrg{
135704007ebaSmrg  case "$lt_sysroot:$1" in
135804007ebaSmrg  ?*:"$lt_sysroot"*)
135904007ebaSmrg    func_stripname "$lt_sysroot" '' "$1"
136004007ebaSmrg    func_replace_sysroot_result="=$func_stripname_result"
136104007ebaSmrg    ;;
136204007ebaSmrg  *)
136304007ebaSmrg    # Including no sysroot.
136404007ebaSmrg    func_replace_sysroot_result=$1
136504007ebaSmrg    ;;
136604007ebaSmrg  esac
136704007ebaSmrg}
136804007ebaSmrg
136904007ebaSmrg# func_infer_tag arg
137004007ebaSmrg# Infer tagged configuration to use if any are available and
137104007ebaSmrg# if one wasn't chosen via the "--tag" command line option.
137204007ebaSmrg# Only attempt this if the compiler in the base compile
137304007ebaSmrg# command doesn't match the default compiler.
137404007ebaSmrg# arg is usually of the form 'gcc ...'
137504007ebaSmrgfunc_infer_tag ()
137604007ebaSmrg{
137704007ebaSmrg    $opt_debug
137804007ebaSmrg    if test -n "$available_tags" && test -z "$tagname"; then
137904007ebaSmrg      CC_quoted=
138004007ebaSmrg      for arg in $CC; do
138104007ebaSmrg	func_append_quoted CC_quoted "$arg"
138204007ebaSmrg      done
138304007ebaSmrg      CC_expanded=`func_echo_all $CC`
138404007ebaSmrg      CC_quoted_expanded=`func_echo_all $CC_quoted`
138504007ebaSmrg      case $@ in
138604007ebaSmrg      # Blanks in the command may have been stripped by the calling shell,
138704007ebaSmrg      # but not from the CC environment variable when configure was run.
138804007ebaSmrg      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
138904007ebaSmrg      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
139004007ebaSmrg      # Blanks at the start of $base_compile will cause this to fail
139104007ebaSmrg      # if we don't check for them as well.
139204007ebaSmrg      *)
139304007ebaSmrg	for z in $available_tags; do
139404007ebaSmrg	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
139504007ebaSmrg	    # Evaluate the configuration.
139604007ebaSmrg	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
139704007ebaSmrg	    CC_quoted=
139804007ebaSmrg	    for arg in $CC; do
139904007ebaSmrg	      # Double-quote args containing other shell metacharacters.
140004007ebaSmrg	      func_append_quoted CC_quoted "$arg"
140104007ebaSmrg	    done
140204007ebaSmrg	    CC_expanded=`func_echo_all $CC`
140304007ebaSmrg	    CC_quoted_expanded=`func_echo_all $CC_quoted`
140404007ebaSmrg	    case "$@ " in
140504007ebaSmrg	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
140604007ebaSmrg	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
140704007ebaSmrg	      # The compiler in the base compile command matches
140804007ebaSmrg	      # the one in the tagged configuration.
140904007ebaSmrg	      # Assume this is the tagged configuration we want.
141004007ebaSmrg	      tagname=$z
141104007ebaSmrg	      break
141204007ebaSmrg	      ;;
141304007ebaSmrg	    esac
141404007ebaSmrg	  fi
141504007ebaSmrg	done
141604007ebaSmrg	# If $tagname still isn't set, then no tagged configuration
141704007ebaSmrg	# was found and let the user know that the "--tag" command
141804007ebaSmrg	# line option must be used.
141904007ebaSmrg	if test -z "$tagname"; then
142004007ebaSmrg	  func_echo "unable to infer tagged configuration"
142104007ebaSmrg	  func_fatal_error "specify a tag with \`--tag'"
142204007ebaSmrg#	else
142304007ebaSmrg#	  func_verbose "using $tagname tagged configuration"
142404007ebaSmrg	fi
142504007ebaSmrg	;;
142604007ebaSmrg      esac
142704007ebaSmrg    fi
142804007ebaSmrg}
142904007ebaSmrg
143004007ebaSmrg
143104007ebaSmrg
143204007ebaSmrg# func_write_libtool_object output_name pic_name nonpic_name
143304007ebaSmrg# Create a libtool object file (analogous to a ".la" file),
143404007ebaSmrg# but don't create it if we're doing a dry run.
143504007ebaSmrgfunc_write_libtool_object ()
143604007ebaSmrg{
143704007ebaSmrg    write_libobj=${1}
143804007ebaSmrg    if test "$build_libtool_libs" = yes; then
143904007ebaSmrg      write_lobj=\'${2}\'
144004007ebaSmrg    else
144104007ebaSmrg      write_lobj=none
144204007ebaSmrg    fi
144304007ebaSmrg
144404007ebaSmrg    if test "$build_old_libs" = yes; then
144504007ebaSmrg      write_oldobj=\'${3}\'
144604007ebaSmrg    else
144704007ebaSmrg      write_oldobj=none
144804007ebaSmrg    fi
144904007ebaSmrg
145004007ebaSmrg    $opt_dry_run || {
145104007ebaSmrg      cat >${write_libobj}T <<EOF
145204007ebaSmrg# $write_libobj - a libtool object file
145304007ebaSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
145404007ebaSmrg#
145504007ebaSmrg# Please DO NOT delete this file!
145604007ebaSmrg# It is necessary for linking the library.
145704007ebaSmrg
145804007ebaSmrg# Name of the PIC object.
145904007ebaSmrgpic_object=$write_lobj
146004007ebaSmrg
146104007ebaSmrg# Name of the non-PIC object
146204007ebaSmrgnon_pic_object=$write_oldobj
146304007ebaSmrg
146404007ebaSmrgEOF
146504007ebaSmrg      $MV "${write_libobj}T" "${write_libobj}"
146604007ebaSmrg    }
146704007ebaSmrg}
146804007ebaSmrg
146904007ebaSmrg
147004007ebaSmrg##################################################
147104007ebaSmrg# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
147204007ebaSmrg##################################################
147304007ebaSmrg
147404007ebaSmrg# func_convert_core_file_wine_to_w32 ARG
147504007ebaSmrg# Helper function used by file name conversion functions when $build is *nix,
147604007ebaSmrg# and $host is mingw, cygwin, or some other w32 environment. Relies on a
147704007ebaSmrg# correctly configured wine environment available, with the winepath program
147804007ebaSmrg# in $build's $PATH.
147904007ebaSmrg#
148004007ebaSmrg# ARG is the $build file name to be converted to w32 format.
148104007ebaSmrg# Result is available in $func_convert_core_file_wine_to_w32_result, and will
148204007ebaSmrg# be empty on error (or when ARG is empty)
148304007ebaSmrgfunc_convert_core_file_wine_to_w32 ()
148404007ebaSmrg{
148504007ebaSmrg  $opt_debug
148604007ebaSmrg  func_convert_core_file_wine_to_w32_result="$1"
148704007ebaSmrg  if test -n "$1"; then
148804007ebaSmrg    # Unfortunately, winepath does not exit with a non-zero error code, so we
148904007ebaSmrg    # are forced to check the contents of stdout. On the other hand, if the
149004007ebaSmrg    # command is not found, the shell will set an exit code of 127 and print
149104007ebaSmrg    # *an error message* to stdout. So we must check for both error code of
149204007ebaSmrg    # zero AND non-empty stdout, which explains the odd construction:
149304007ebaSmrg    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
149404007ebaSmrg    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
149504007ebaSmrg      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
149604007ebaSmrg        $SED -e "$lt_sed_naive_backslashify"`
149704007ebaSmrg    else
149804007ebaSmrg      func_convert_core_file_wine_to_w32_result=
149904007ebaSmrg    fi
150004007ebaSmrg  fi
150104007ebaSmrg}
150204007ebaSmrg# end: func_convert_core_file_wine_to_w32
150304007ebaSmrg
150404007ebaSmrg
150504007ebaSmrg# func_convert_core_path_wine_to_w32 ARG
150604007ebaSmrg# Helper function used by path conversion functions when $build is *nix, and
150704007ebaSmrg# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
150804007ebaSmrg# configured wine environment available, with the winepath program in $build's
150904007ebaSmrg# $PATH. Assumes ARG has no leading or trailing path separator characters.
151004007ebaSmrg#
151104007ebaSmrg# ARG is path to be converted from $build format to win32.
151204007ebaSmrg# Result is available in $func_convert_core_path_wine_to_w32_result.
151304007ebaSmrg# Unconvertible file (directory) names in ARG are skipped; if no directory names
151404007ebaSmrg# are convertible, then the result may be empty.
151504007ebaSmrgfunc_convert_core_path_wine_to_w32 ()
151604007ebaSmrg{
151704007ebaSmrg  $opt_debug
151804007ebaSmrg  # unfortunately, winepath doesn't convert paths, only file names
151904007ebaSmrg  func_convert_core_path_wine_to_w32_result=""
152004007ebaSmrg  if test -n "$1"; then
152104007ebaSmrg    oldIFS=$IFS
152204007ebaSmrg    IFS=:
152304007ebaSmrg    for func_convert_core_path_wine_to_w32_f in $1; do
152404007ebaSmrg      IFS=$oldIFS
152504007ebaSmrg      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
152604007ebaSmrg      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
152704007ebaSmrg        if test -z "$func_convert_core_path_wine_to_w32_result"; then
152804007ebaSmrg          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
152904007ebaSmrg        else
153004007ebaSmrg          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
153104007ebaSmrg        fi
153204007ebaSmrg      fi
153304007ebaSmrg    done
153404007ebaSmrg    IFS=$oldIFS
153504007ebaSmrg  fi
153604007ebaSmrg}
153704007ebaSmrg# end: func_convert_core_path_wine_to_w32
153804007ebaSmrg
153904007ebaSmrg
154004007ebaSmrg# func_cygpath ARGS...
154104007ebaSmrg# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
154204007ebaSmrg# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
154304007ebaSmrg# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
154404007ebaSmrg# (2), returns the Cygwin file name or path in func_cygpath_result (input
154504007ebaSmrg# file name or path is assumed to be in w32 format, as previously converted
154604007ebaSmrg# from $build's *nix or MSYS format). In case (3), returns the w32 file name
154704007ebaSmrg# or path in func_cygpath_result (input file name or path is assumed to be in
154804007ebaSmrg# Cygwin format). Returns an empty string on error.
154904007ebaSmrg#
155004007ebaSmrg# ARGS are passed to cygpath, with the last one being the file name or path to
155104007ebaSmrg# be converted.
155204007ebaSmrg#
155304007ebaSmrg# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
155404007ebaSmrg# environment variable; do not put it in $PATH.
155504007ebaSmrgfunc_cygpath ()
155604007ebaSmrg{
155704007ebaSmrg  $opt_debug
155804007ebaSmrg  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
155904007ebaSmrg    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
156004007ebaSmrg    if test "$?" -ne 0; then
156104007ebaSmrg      # on failure, ensure result is empty
156204007ebaSmrg      func_cygpath_result=
156304007ebaSmrg    fi
156404007ebaSmrg  else
156504007ebaSmrg    func_cygpath_result=
156604007ebaSmrg    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
156704007ebaSmrg  fi
156804007ebaSmrg}
156904007ebaSmrg#end: func_cygpath
157004007ebaSmrg
157104007ebaSmrg
157204007ebaSmrg# func_convert_core_msys_to_w32 ARG
157304007ebaSmrg# Convert file name or path ARG from MSYS format to w32 format.  Return
157404007ebaSmrg# result in func_convert_core_msys_to_w32_result.
157504007ebaSmrgfunc_convert_core_msys_to_w32 ()
157604007ebaSmrg{
157704007ebaSmrg  $opt_debug
157804007ebaSmrg  # awkward: cmd appends spaces to result
157904007ebaSmrg  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
158004007ebaSmrg    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
158104007ebaSmrg}
158204007ebaSmrg#end: func_convert_core_msys_to_w32
158304007ebaSmrg
158404007ebaSmrg
158504007ebaSmrg# func_convert_file_check ARG1 ARG2
158604007ebaSmrg# Verify that ARG1 (a file name in $build format) was converted to $host
158704007ebaSmrg# format in ARG2. Otherwise, emit an error message, but continue (resetting
158804007ebaSmrg# func_to_host_file_result to ARG1).
158904007ebaSmrgfunc_convert_file_check ()
159004007ebaSmrg{
159104007ebaSmrg  $opt_debug
159204007ebaSmrg  if test -z "$2" && test -n "$1" ; then
159304007ebaSmrg    func_error "Could not determine host file name corresponding to"
159404007ebaSmrg    func_error "  \`$1'"
159504007ebaSmrg    func_error "Continuing, but uninstalled executables may not work."
159604007ebaSmrg    # Fallback:
159704007ebaSmrg    func_to_host_file_result="$1"
159804007ebaSmrg  fi
159904007ebaSmrg}
160004007ebaSmrg# end func_convert_file_check
160104007ebaSmrg
160204007ebaSmrg
160304007ebaSmrg# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
160404007ebaSmrg# Verify that FROM_PATH (a path in $build format) was converted to $host
160504007ebaSmrg# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
160604007ebaSmrg# func_to_host_file_result to a simplistic fallback value (see below).
160704007ebaSmrgfunc_convert_path_check ()
160804007ebaSmrg{
160904007ebaSmrg  $opt_debug
161004007ebaSmrg  if test -z "$4" && test -n "$3"; then
161104007ebaSmrg    func_error "Could not determine the host path corresponding to"
161204007ebaSmrg    func_error "  \`$3'"
161304007ebaSmrg    func_error "Continuing, but uninstalled executables may not work."
161404007ebaSmrg    # Fallback.  This is a deliberately simplistic "conversion" and
161504007ebaSmrg    # should not be "improved".  See libtool.info.
161604007ebaSmrg    if test "x$1" != "x$2"; then
161704007ebaSmrg      lt_replace_pathsep_chars="s|$1|$2|g"
161804007ebaSmrg      func_to_host_path_result=`echo "$3" |
161904007ebaSmrg        $SED -e "$lt_replace_pathsep_chars"`
162004007ebaSmrg    else
162104007ebaSmrg      func_to_host_path_result="$3"
162204007ebaSmrg    fi
162304007ebaSmrg  fi
162404007ebaSmrg}
162504007ebaSmrg# end func_convert_path_check
162604007ebaSmrg
162704007ebaSmrg
162804007ebaSmrg# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
162904007ebaSmrg# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
163004007ebaSmrg# and appending REPL if ORIG matches BACKPAT.
163104007ebaSmrgfunc_convert_path_front_back_pathsep ()
163204007ebaSmrg{
163304007ebaSmrg  $opt_debug
163404007ebaSmrg  case $4 in
163504007ebaSmrg  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
163604007ebaSmrg    ;;
163704007ebaSmrg  esac
163804007ebaSmrg  case $4 in
163904007ebaSmrg  $2 ) func_append func_to_host_path_result "$3"
164004007ebaSmrg    ;;
164104007ebaSmrg  esac
164204007ebaSmrg}
164304007ebaSmrg# end func_convert_path_front_back_pathsep
164404007ebaSmrg
164504007ebaSmrg
164604007ebaSmrg##################################################
164704007ebaSmrg# $build to $host FILE NAME CONVERSION FUNCTIONS #
164804007ebaSmrg##################################################
164904007ebaSmrg# invoked via `$to_host_file_cmd ARG'
165004007ebaSmrg#
165104007ebaSmrg# In each case, ARG is the path to be converted from $build to $host format.
165204007ebaSmrg# Result will be available in $func_to_host_file_result.
165304007ebaSmrg
165404007ebaSmrg
165504007ebaSmrg# func_to_host_file ARG
165604007ebaSmrg# Converts the file name ARG from $build format to $host format. Return result
165704007ebaSmrg# in func_to_host_file_result.
165804007ebaSmrgfunc_to_host_file ()
165904007ebaSmrg{
166004007ebaSmrg  $opt_debug
166104007ebaSmrg  $to_host_file_cmd "$1"
166204007ebaSmrg}
166304007ebaSmrg# end func_to_host_file
166404007ebaSmrg
166504007ebaSmrg
166604007ebaSmrg# func_to_tool_file ARG LAZY
166704007ebaSmrg# converts the file name ARG from $build format to toolchain format. Return
166804007ebaSmrg# result in func_to_tool_file_result.  If the conversion in use is listed
166904007ebaSmrg# in (the comma separated) LAZY, no conversion takes place.
167004007ebaSmrgfunc_to_tool_file ()
167104007ebaSmrg{
167204007ebaSmrg  $opt_debug
167304007ebaSmrg  case ,$2, in
167404007ebaSmrg    *,"$to_tool_file_cmd",*)
167504007ebaSmrg      func_to_tool_file_result=$1
167604007ebaSmrg      ;;
167704007ebaSmrg    *)
167804007ebaSmrg      $to_tool_file_cmd "$1"
167904007ebaSmrg      func_to_tool_file_result=$func_to_host_file_result
168004007ebaSmrg      ;;
168104007ebaSmrg  esac
168204007ebaSmrg}
168304007ebaSmrg# end func_to_tool_file
168404007ebaSmrg
168504007ebaSmrg
168604007ebaSmrg# func_convert_file_noop ARG
168704007ebaSmrg# Copy ARG to func_to_host_file_result.
168804007ebaSmrgfunc_convert_file_noop ()
168904007ebaSmrg{
169004007ebaSmrg  func_to_host_file_result="$1"
169104007ebaSmrg}
169204007ebaSmrg# end func_convert_file_noop
169304007ebaSmrg
169404007ebaSmrg
169504007ebaSmrg# func_convert_file_msys_to_w32 ARG
169604007ebaSmrg# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
169704007ebaSmrg# conversion to w32 is not available inside the cwrapper.  Returns result in
169804007ebaSmrg# func_to_host_file_result.
169904007ebaSmrgfunc_convert_file_msys_to_w32 ()
170004007ebaSmrg{
170104007ebaSmrg  $opt_debug
170204007ebaSmrg  func_to_host_file_result="$1"
170304007ebaSmrg  if test -n "$1"; then
170404007ebaSmrg    func_convert_core_msys_to_w32 "$1"
170504007ebaSmrg    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
170604007ebaSmrg  fi
170704007ebaSmrg  func_convert_file_check "$1" "$func_to_host_file_result"
170804007ebaSmrg}
170904007ebaSmrg# end func_convert_file_msys_to_w32
171004007ebaSmrg
171104007ebaSmrg
171204007ebaSmrg# func_convert_file_cygwin_to_w32 ARG
171304007ebaSmrg# Convert file name ARG from Cygwin to w32 format.  Returns result in
171404007ebaSmrg# func_to_host_file_result.
171504007ebaSmrgfunc_convert_file_cygwin_to_w32 ()
171604007ebaSmrg{
171704007ebaSmrg  $opt_debug
171804007ebaSmrg  func_to_host_file_result="$1"
171904007ebaSmrg  if test -n "$1"; then
172004007ebaSmrg    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
172104007ebaSmrg    # LT_CYGPATH in this case.
172204007ebaSmrg    func_to_host_file_result=`cygpath -m "$1"`
172304007ebaSmrg  fi
172404007ebaSmrg  func_convert_file_check "$1" "$func_to_host_file_result"
172504007ebaSmrg}
172604007ebaSmrg# end func_convert_file_cygwin_to_w32
172704007ebaSmrg
172804007ebaSmrg
172904007ebaSmrg# func_convert_file_nix_to_w32 ARG
173004007ebaSmrg# Convert file name ARG from *nix to w32 format.  Requires a wine environment
173104007ebaSmrg# and a working winepath. Returns result in func_to_host_file_result.
173204007ebaSmrgfunc_convert_file_nix_to_w32 ()
173304007ebaSmrg{
173404007ebaSmrg  $opt_debug
173504007ebaSmrg  func_to_host_file_result="$1"
173604007ebaSmrg  if test -n "$1"; then
173704007ebaSmrg    func_convert_core_file_wine_to_w32 "$1"
173804007ebaSmrg    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
173904007ebaSmrg  fi
174004007ebaSmrg  func_convert_file_check "$1" "$func_to_host_file_result"
174104007ebaSmrg}
174204007ebaSmrg# end func_convert_file_nix_to_w32
174304007ebaSmrg
174404007ebaSmrg
174504007ebaSmrg# func_convert_file_msys_to_cygwin ARG
174604007ebaSmrg# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
174704007ebaSmrg# Returns result in func_to_host_file_result.
174804007ebaSmrgfunc_convert_file_msys_to_cygwin ()
174904007ebaSmrg{
175004007ebaSmrg  $opt_debug
175104007ebaSmrg  func_to_host_file_result="$1"
175204007ebaSmrg  if test -n "$1"; then
175304007ebaSmrg    func_convert_core_msys_to_w32 "$1"
175404007ebaSmrg    func_cygpath -u "$func_convert_core_msys_to_w32_result"
175504007ebaSmrg    func_to_host_file_result="$func_cygpath_result"
175604007ebaSmrg  fi
175704007ebaSmrg  func_convert_file_check "$1" "$func_to_host_file_result"
175804007ebaSmrg}
175904007ebaSmrg# end func_convert_file_msys_to_cygwin
176004007ebaSmrg
176104007ebaSmrg
176204007ebaSmrg# func_convert_file_nix_to_cygwin ARG
176304007ebaSmrg# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
176404007ebaSmrg# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
176504007ebaSmrg# in func_to_host_file_result.
176604007ebaSmrgfunc_convert_file_nix_to_cygwin ()
176704007ebaSmrg{
176804007ebaSmrg  $opt_debug
176904007ebaSmrg  func_to_host_file_result="$1"
177004007ebaSmrg  if test -n "$1"; then
177104007ebaSmrg    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
177204007ebaSmrg    func_convert_core_file_wine_to_w32 "$1"
177304007ebaSmrg    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
177404007ebaSmrg    func_to_host_file_result="$func_cygpath_result"
177504007ebaSmrg  fi
177604007ebaSmrg  func_convert_file_check "$1" "$func_to_host_file_result"
177704007ebaSmrg}
177804007ebaSmrg# end func_convert_file_nix_to_cygwin
177904007ebaSmrg
178004007ebaSmrg
178104007ebaSmrg#############################################
178204007ebaSmrg# $build to $host PATH CONVERSION FUNCTIONS #
178304007ebaSmrg#############################################
178404007ebaSmrg# invoked via `$to_host_path_cmd ARG'
178504007ebaSmrg#
178604007ebaSmrg# In each case, ARG is the path to be converted from $build to $host format.
178704007ebaSmrg# The result will be available in $func_to_host_path_result.
178804007ebaSmrg#
178904007ebaSmrg# Path separators are also converted from $build format to $host format.  If
179004007ebaSmrg# ARG begins or ends with a path separator character, it is preserved (but
179104007ebaSmrg# converted to $host format) on output.
179204007ebaSmrg#
179304007ebaSmrg# All path conversion functions are named using the following convention:
179404007ebaSmrg#   file name conversion function    : func_convert_file_X_to_Y ()
179504007ebaSmrg#   path conversion function         : func_convert_path_X_to_Y ()
179604007ebaSmrg# where, for any given $build/$host combination the 'X_to_Y' value is the
179704007ebaSmrg# same.  If conversion functions are added for new $build/$host combinations,
179804007ebaSmrg# the two new functions must follow this pattern, or func_init_to_host_path_cmd
179904007ebaSmrg# will break.
180004007ebaSmrg
180104007ebaSmrg
180204007ebaSmrg# func_init_to_host_path_cmd
180304007ebaSmrg# Ensures that function "pointer" variable $to_host_path_cmd is set to the
180404007ebaSmrg# appropriate value, based on the value of $to_host_file_cmd.
180504007ebaSmrgto_host_path_cmd=
180604007ebaSmrgfunc_init_to_host_path_cmd ()
180704007ebaSmrg{
180804007ebaSmrg  $opt_debug
180904007ebaSmrg  if test -z "$to_host_path_cmd"; then
181004007ebaSmrg    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
181104007ebaSmrg    to_host_path_cmd="func_convert_path_${func_stripname_result}"
181204007ebaSmrg  fi
181304007ebaSmrg}
181404007ebaSmrg
181504007ebaSmrg
181604007ebaSmrg# func_to_host_path ARG
181704007ebaSmrg# Converts the path ARG from $build format to $host format. Return result
181804007ebaSmrg# in func_to_host_path_result.
181904007ebaSmrgfunc_to_host_path ()
182004007ebaSmrg{
182104007ebaSmrg  $opt_debug
182204007ebaSmrg  func_init_to_host_path_cmd
182304007ebaSmrg  $to_host_path_cmd "$1"
182404007ebaSmrg}
182504007ebaSmrg# end func_to_host_path
182604007ebaSmrg
182704007ebaSmrg
182804007ebaSmrg# func_convert_path_noop ARG
182904007ebaSmrg# Copy ARG to func_to_host_path_result.
183004007ebaSmrgfunc_convert_path_noop ()
183104007ebaSmrg{
183204007ebaSmrg  func_to_host_path_result="$1"
183304007ebaSmrg}
183404007ebaSmrg# end func_convert_path_noop
183504007ebaSmrg
183604007ebaSmrg
183704007ebaSmrg# func_convert_path_msys_to_w32 ARG
183804007ebaSmrg# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
183904007ebaSmrg# conversion to w32 is not available inside the cwrapper.  Returns result in
184004007ebaSmrg# func_to_host_path_result.
184104007ebaSmrgfunc_convert_path_msys_to_w32 ()
184204007ebaSmrg{
184304007ebaSmrg  $opt_debug
184404007ebaSmrg  func_to_host_path_result="$1"
184504007ebaSmrg  if test -n "$1"; then
184604007ebaSmrg    # Remove leading and trailing path separator characters from ARG.  MSYS
184704007ebaSmrg    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
184804007ebaSmrg    # and winepath ignores them completely.
184904007ebaSmrg    func_stripname : : "$1"
185004007ebaSmrg    func_to_host_path_tmp1=$func_stripname_result
185104007ebaSmrg    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
185204007ebaSmrg    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
185304007ebaSmrg    func_convert_path_check : ";" \
185404007ebaSmrg      "$func_to_host_path_tmp1" "$func_to_host_path_result"
185504007ebaSmrg    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
185604007ebaSmrg  fi
185704007ebaSmrg}
185804007ebaSmrg# end func_convert_path_msys_to_w32
185904007ebaSmrg
186004007ebaSmrg
186104007ebaSmrg# func_convert_path_cygwin_to_w32 ARG
186204007ebaSmrg# Convert path ARG from Cygwin to w32 format.  Returns result in
186304007ebaSmrg# func_to_host_file_result.
186404007ebaSmrgfunc_convert_path_cygwin_to_w32 ()
186504007ebaSmrg{
186604007ebaSmrg  $opt_debug
186704007ebaSmrg  func_to_host_path_result="$1"
186804007ebaSmrg  if test -n "$1"; then
186904007ebaSmrg    # See func_convert_path_msys_to_w32:
187004007ebaSmrg    func_stripname : : "$1"
187104007ebaSmrg    func_to_host_path_tmp1=$func_stripname_result
187204007ebaSmrg    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
187304007ebaSmrg    func_convert_path_check : ";" \
187404007ebaSmrg      "$func_to_host_path_tmp1" "$func_to_host_path_result"
187504007ebaSmrg    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
187604007ebaSmrg  fi
187704007ebaSmrg}
187804007ebaSmrg# end func_convert_path_cygwin_to_w32
187904007ebaSmrg
188004007ebaSmrg
188104007ebaSmrg# func_convert_path_nix_to_w32 ARG
188204007ebaSmrg# Convert path ARG from *nix to w32 format.  Requires a wine environment and
188304007ebaSmrg# a working winepath.  Returns result in func_to_host_file_result.
188404007ebaSmrgfunc_convert_path_nix_to_w32 ()
188504007ebaSmrg{
188604007ebaSmrg  $opt_debug
188704007ebaSmrg  func_to_host_path_result="$1"
188804007ebaSmrg  if test -n "$1"; then
188904007ebaSmrg    # See func_convert_path_msys_to_w32:
189004007ebaSmrg    func_stripname : : "$1"
189104007ebaSmrg    func_to_host_path_tmp1=$func_stripname_result
189204007ebaSmrg    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
189304007ebaSmrg    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
189404007ebaSmrg    func_convert_path_check : ";" \
189504007ebaSmrg      "$func_to_host_path_tmp1" "$func_to_host_path_result"
189604007ebaSmrg    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
189704007ebaSmrg  fi
189804007ebaSmrg}
189904007ebaSmrg# end func_convert_path_nix_to_w32
190004007ebaSmrg
190104007ebaSmrg
190204007ebaSmrg# func_convert_path_msys_to_cygwin ARG
190304007ebaSmrg# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
190404007ebaSmrg# Returns result in func_to_host_file_result.
190504007ebaSmrgfunc_convert_path_msys_to_cygwin ()
190604007ebaSmrg{
190704007ebaSmrg  $opt_debug
190804007ebaSmrg  func_to_host_path_result="$1"
190904007ebaSmrg  if test -n "$1"; then
191004007ebaSmrg    # See func_convert_path_msys_to_w32:
191104007ebaSmrg    func_stripname : : "$1"
191204007ebaSmrg    func_to_host_path_tmp1=$func_stripname_result
191304007ebaSmrg    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
191404007ebaSmrg    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
191504007ebaSmrg    func_to_host_path_result="$func_cygpath_result"
191604007ebaSmrg    func_convert_path_check : : \
191704007ebaSmrg      "$func_to_host_path_tmp1" "$func_to_host_path_result"
191804007ebaSmrg    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
191904007ebaSmrg  fi
192004007ebaSmrg}
192104007ebaSmrg# end func_convert_path_msys_to_cygwin
192204007ebaSmrg
192304007ebaSmrg
192404007ebaSmrg# func_convert_path_nix_to_cygwin ARG
192504007ebaSmrg# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
192604007ebaSmrg# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
192704007ebaSmrg# func_to_host_file_result.
192804007ebaSmrgfunc_convert_path_nix_to_cygwin ()
192904007ebaSmrg{
193004007ebaSmrg  $opt_debug
193104007ebaSmrg  func_to_host_path_result="$1"
193204007ebaSmrg  if test -n "$1"; then
193304007ebaSmrg    # Remove leading and trailing path separator characters from
193404007ebaSmrg    # ARG. msys behavior is inconsistent here, cygpath turns them
193504007ebaSmrg    # into '.;' and ';.', and winepath ignores them completely.
193604007ebaSmrg    func_stripname : : "$1"
193704007ebaSmrg    func_to_host_path_tmp1=$func_stripname_result
193804007ebaSmrg    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
193904007ebaSmrg    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
194004007ebaSmrg    func_to_host_path_result="$func_cygpath_result"
194104007ebaSmrg    func_convert_path_check : : \
194204007ebaSmrg      "$func_to_host_path_tmp1" "$func_to_host_path_result"
194304007ebaSmrg    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
194404007ebaSmrg  fi
194504007ebaSmrg}
194604007ebaSmrg# end func_convert_path_nix_to_cygwin
194704007ebaSmrg
194804007ebaSmrg
194904007ebaSmrg# func_mode_compile arg...
195004007ebaSmrgfunc_mode_compile ()
195104007ebaSmrg{
195204007ebaSmrg    $opt_debug
195304007ebaSmrg    # Get the compilation command and the source file.
195404007ebaSmrg    base_compile=
195504007ebaSmrg    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
195604007ebaSmrg    suppress_opt=yes
195704007ebaSmrg    suppress_output=
195804007ebaSmrg    arg_mode=normal
195904007ebaSmrg    libobj=
196004007ebaSmrg    later=
196104007ebaSmrg    pie_flag=
196204007ebaSmrg
196304007ebaSmrg    for arg
196404007ebaSmrg    do
196504007ebaSmrg      case $arg_mode in
196604007ebaSmrg      arg  )
196704007ebaSmrg	# do not "continue".  Instead, add this to base_compile
196804007ebaSmrg	lastarg="$arg"
196904007ebaSmrg	arg_mode=normal
197004007ebaSmrg	;;
197104007ebaSmrg
197204007ebaSmrg      target )
197304007ebaSmrg	libobj="$arg"
197404007ebaSmrg	arg_mode=normal
197504007ebaSmrg	continue
197604007ebaSmrg	;;
197704007ebaSmrg
197804007ebaSmrg      normal )
197904007ebaSmrg	# Accept any command-line options.
198004007ebaSmrg	case $arg in
198104007ebaSmrg	-o)
198204007ebaSmrg	  test -n "$libobj" && \
198304007ebaSmrg	    func_fatal_error "you cannot specify \`-o' more than once"
198404007ebaSmrg	  arg_mode=target
198504007ebaSmrg	  continue
198604007ebaSmrg	  ;;
198704007ebaSmrg
198804007ebaSmrg	-pie | -fpie | -fPIE)
198904007ebaSmrg          func_append pie_flag " $arg"
199004007ebaSmrg	  continue
199104007ebaSmrg	  ;;
199204007ebaSmrg
199304007ebaSmrg	-shared | -static | -prefer-pic | -prefer-non-pic)
199404007ebaSmrg	  func_append later " $arg"
199504007ebaSmrg	  continue
199604007ebaSmrg	  ;;
199704007ebaSmrg
199804007ebaSmrg	-no-suppress)
199904007ebaSmrg	  suppress_opt=no
200004007ebaSmrg	  continue
200104007ebaSmrg	  ;;
200204007ebaSmrg
200304007ebaSmrg	-Xcompiler)
200404007ebaSmrg	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
200504007ebaSmrg	  continue      #  The current "srcfile" will either be retained or
200604007ebaSmrg	  ;;            #  replaced later.  I would guess that would be a bug.
200704007ebaSmrg
200804007ebaSmrg	-Wc,*)
200904007ebaSmrg	  func_stripname '-Wc,' '' "$arg"
201004007ebaSmrg	  args=$func_stripname_result
201104007ebaSmrg	  lastarg=
201204007ebaSmrg	  save_ifs="$IFS"; IFS=','
201304007ebaSmrg	  for arg in $args; do
201404007ebaSmrg	    IFS="$save_ifs"
201504007ebaSmrg	    func_append_quoted lastarg "$arg"
201604007ebaSmrg	  done
201704007ebaSmrg	  IFS="$save_ifs"
201804007ebaSmrg	  func_stripname ' ' '' "$lastarg"
201904007ebaSmrg	  lastarg=$func_stripname_result
202004007ebaSmrg
202104007ebaSmrg	  # Add the arguments to base_compile.
202204007ebaSmrg	  func_append base_compile " $lastarg"
202304007ebaSmrg	  continue
202404007ebaSmrg	  ;;
202504007ebaSmrg
202604007ebaSmrg	*)
202704007ebaSmrg	  # Accept the current argument as the source file.
202804007ebaSmrg	  # The previous "srcfile" becomes the current argument.
202904007ebaSmrg	  #
203004007ebaSmrg	  lastarg="$srcfile"
203104007ebaSmrg	  srcfile="$arg"
203204007ebaSmrg	  ;;
203304007ebaSmrg	esac  #  case $arg
203404007ebaSmrg	;;
203504007ebaSmrg      esac    #  case $arg_mode
203604007ebaSmrg
203704007ebaSmrg      # Aesthetically quote the previous argument.
203804007ebaSmrg      func_append_quoted base_compile "$lastarg"
203904007ebaSmrg    done # for arg
204004007ebaSmrg
204104007ebaSmrg    case $arg_mode in
204204007ebaSmrg    arg)
204304007ebaSmrg      func_fatal_error "you must specify an argument for -Xcompile"
204404007ebaSmrg      ;;
204504007ebaSmrg    target)
204604007ebaSmrg      func_fatal_error "you must specify a target with \`-o'"
204704007ebaSmrg      ;;
204804007ebaSmrg    *)
204904007ebaSmrg      # Get the name of the library object.
205004007ebaSmrg      test -z "$libobj" && {
205104007ebaSmrg	func_basename "$srcfile"
205204007ebaSmrg	libobj="$func_basename_result"
205304007ebaSmrg      }
205404007ebaSmrg      ;;
205504007ebaSmrg    esac
205604007ebaSmrg
205704007ebaSmrg    # Recognize several different file suffixes.
205804007ebaSmrg    # If the user specifies -o file.o, it is replaced with file.lo
205904007ebaSmrg    case $libobj in
206004007ebaSmrg    *.[cCFSifmso] | \
206104007ebaSmrg    *.ada | *.adb | *.ads | *.asm | \
206204007ebaSmrg    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
206304007ebaSmrg    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
206404007ebaSmrg      func_xform "$libobj"
206504007ebaSmrg      libobj=$func_xform_result
206604007ebaSmrg      ;;
206704007ebaSmrg    esac
206804007ebaSmrg
206904007ebaSmrg    case $libobj in
207004007ebaSmrg    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
207104007ebaSmrg    *)
207204007ebaSmrg      func_fatal_error "cannot determine name of library object from \`$libobj'"
207304007ebaSmrg      ;;
207404007ebaSmrg    esac
207504007ebaSmrg
207604007ebaSmrg    func_infer_tag $base_compile
207704007ebaSmrg
207804007ebaSmrg    for arg in $later; do
207904007ebaSmrg      case $arg in
208004007ebaSmrg      -shared)
208104007ebaSmrg	test "$build_libtool_libs" != yes && \
208204007ebaSmrg	  func_fatal_configuration "can not build a shared library"
208304007ebaSmrg	build_old_libs=no
208404007ebaSmrg	continue
208504007ebaSmrg	;;
208604007ebaSmrg
208704007ebaSmrg      -static)
208804007ebaSmrg	build_libtool_libs=no
208904007ebaSmrg	build_old_libs=yes
209004007ebaSmrg	continue
209104007ebaSmrg	;;
209204007ebaSmrg
209304007ebaSmrg      -prefer-pic)
209404007ebaSmrg	pic_mode=yes
209504007ebaSmrg	continue
209604007ebaSmrg	;;
209704007ebaSmrg
209804007ebaSmrg      -prefer-non-pic)
209904007ebaSmrg	pic_mode=no
210004007ebaSmrg	continue
210104007ebaSmrg	;;
210204007ebaSmrg      esac
210304007ebaSmrg    done
210404007ebaSmrg
210504007ebaSmrg    func_quote_for_eval "$libobj"
210604007ebaSmrg    test "X$libobj" != "X$func_quote_for_eval_result" \
210704007ebaSmrg      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
210804007ebaSmrg      && func_warning "libobj name \`$libobj' may not contain shell special characters."
210904007ebaSmrg    func_dirname_and_basename "$obj" "/" ""
211004007ebaSmrg    objname="$func_basename_result"
211104007ebaSmrg    xdir="$func_dirname_result"
211204007ebaSmrg    lobj=${xdir}$objdir/$objname
211304007ebaSmrg
211404007ebaSmrg    test -z "$base_compile" && \
211504007ebaSmrg      func_fatal_help "you must specify a compilation command"
211604007ebaSmrg
211704007ebaSmrg    # Delete any leftover library objects.
211804007ebaSmrg    if test "$build_old_libs" = yes; then
211904007ebaSmrg      removelist="$obj $lobj $libobj ${libobj}T"
212004007ebaSmrg    else
212104007ebaSmrg      removelist="$lobj $libobj ${libobj}T"
212204007ebaSmrg    fi
212304007ebaSmrg
212404007ebaSmrg    # On Cygwin there's no "real" PIC flag so we must build both object types
212504007ebaSmrg    case $host_os in
212604007ebaSmrg    cygwin* | mingw* | pw32* | os2* | cegcc*)
212704007ebaSmrg      pic_mode=default
212804007ebaSmrg      ;;
212904007ebaSmrg    esac
213004007ebaSmrg    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
213104007ebaSmrg      # non-PIC code in shared libraries is not supported
213204007ebaSmrg      pic_mode=default
213304007ebaSmrg    fi
213404007ebaSmrg
213504007ebaSmrg    # Calculate the filename of the output object if compiler does
213604007ebaSmrg    # not support -o with -c
213704007ebaSmrg    if test "$compiler_c_o" = no; then
213804007ebaSmrg      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
213904007ebaSmrg      lockfile="$output_obj.lock"
214004007ebaSmrg    else
214104007ebaSmrg      output_obj=
214204007ebaSmrg      need_locks=no
214304007ebaSmrg      lockfile=
214404007ebaSmrg    fi
214504007ebaSmrg
214604007ebaSmrg    # Lock this critical section if it is needed
214704007ebaSmrg    # We use this script file to make the link, it avoids creating a new file
214804007ebaSmrg    if test "$need_locks" = yes; then
214904007ebaSmrg      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
215004007ebaSmrg	func_echo "Waiting for $lockfile to be removed"
215104007ebaSmrg	sleep 2
215204007ebaSmrg      done
215304007ebaSmrg    elif test "$need_locks" = warn; then
215404007ebaSmrg      if test -f "$lockfile"; then
215504007ebaSmrg	$ECHO "\
215604007ebaSmrg*** ERROR, $lockfile exists and contains:
215704007ebaSmrg`cat $lockfile 2>/dev/null`
215804007ebaSmrg
215904007ebaSmrgThis indicates that another process is trying to use the same
216004007ebaSmrgtemporary object file, and libtool could not work around it because
216104007ebaSmrgyour compiler does not support \`-c' and \`-o' together.  If you
216204007ebaSmrgrepeat this compilation, it may succeed, by chance, but you had better
216304007ebaSmrgavoid parallel builds (make -j) in this platform, or get a better
216404007ebaSmrgcompiler."
216504007ebaSmrg
216604007ebaSmrg	$opt_dry_run || $RM $removelist
216704007ebaSmrg	exit $EXIT_FAILURE
216804007ebaSmrg      fi
216904007ebaSmrg      func_append removelist " $output_obj"
217004007ebaSmrg      $ECHO "$srcfile" > "$lockfile"
217104007ebaSmrg    fi
217204007ebaSmrg
217304007ebaSmrg    $opt_dry_run || $RM $removelist
217404007ebaSmrg    func_append removelist " $lockfile"
217504007ebaSmrg    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
217604007ebaSmrg
217704007ebaSmrg    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
217804007ebaSmrg    srcfile=$func_to_tool_file_result
217904007ebaSmrg    func_quote_for_eval "$srcfile"
218004007ebaSmrg    qsrcfile=$func_quote_for_eval_result
218104007ebaSmrg
218204007ebaSmrg    # Only build a PIC object if we are building libtool libraries.
218304007ebaSmrg    if test "$build_libtool_libs" = yes; then
218404007ebaSmrg      # Without this assignment, base_compile gets emptied.
218504007ebaSmrg      fbsd_hideous_sh_bug=$base_compile
218604007ebaSmrg
218704007ebaSmrg      if test "$pic_mode" != no; then
218804007ebaSmrg	command="$base_compile $qsrcfile $pic_flag"
218904007ebaSmrg      else
219004007ebaSmrg	# Don't build PIC code
219104007ebaSmrg	command="$base_compile $qsrcfile"
219204007ebaSmrg      fi
219304007ebaSmrg
219404007ebaSmrg      func_mkdir_p "$xdir$objdir"
219504007ebaSmrg
219604007ebaSmrg      if test -z "$output_obj"; then
219704007ebaSmrg	# Place PIC objects in $objdir
219804007ebaSmrg	func_append command " -o $lobj"
219904007ebaSmrg      fi
220004007ebaSmrg
220104007ebaSmrg      func_show_eval_locale "$command"	\
220204007ebaSmrg          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
220304007ebaSmrg
220404007ebaSmrg      if test "$need_locks" = warn &&
220504007ebaSmrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
220604007ebaSmrg	$ECHO "\
220704007ebaSmrg*** ERROR, $lockfile contains:
220804007ebaSmrg`cat $lockfile 2>/dev/null`
220904007ebaSmrg
221004007ebaSmrgbut it should contain:
221104007ebaSmrg$srcfile
221204007ebaSmrg
221304007ebaSmrgThis indicates that another process is trying to use the same
221404007ebaSmrgtemporary object file, and libtool could not work around it because
221504007ebaSmrgyour compiler does not support \`-c' and \`-o' together.  If you
221604007ebaSmrgrepeat this compilation, it may succeed, by chance, but you had better
221704007ebaSmrgavoid parallel builds (make -j) in this platform, or get a better
221804007ebaSmrgcompiler."
221904007ebaSmrg
222004007ebaSmrg	$opt_dry_run || $RM $removelist
222104007ebaSmrg	exit $EXIT_FAILURE
222204007ebaSmrg      fi
222304007ebaSmrg
222404007ebaSmrg      # Just move the object if needed, then go on to compile the next one
222504007ebaSmrg      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
222604007ebaSmrg	func_show_eval '$MV "$output_obj" "$lobj"' \
222704007ebaSmrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
222804007ebaSmrg      fi
222904007ebaSmrg
223004007ebaSmrg      # Allow error messages only from the first compilation.
223104007ebaSmrg      if test "$suppress_opt" = yes; then
223204007ebaSmrg	suppress_output=' >/dev/null 2>&1'
223304007ebaSmrg      fi
223404007ebaSmrg    fi
223504007ebaSmrg
223604007ebaSmrg    # Only build a position-dependent object if we build old libraries.
223704007ebaSmrg    if test "$build_old_libs" = yes; then
223804007ebaSmrg      if test "$pic_mode" != yes; then
223904007ebaSmrg	# Don't build PIC code
224004007ebaSmrg	command="$base_compile $qsrcfile$pie_flag"
224104007ebaSmrg      else
224204007ebaSmrg	command="$base_compile $qsrcfile $pic_flag"
224304007ebaSmrg      fi
224404007ebaSmrg      if test "$compiler_c_o" = yes; then
224504007ebaSmrg	func_append command " -o $obj"
224604007ebaSmrg      fi
224704007ebaSmrg
224804007ebaSmrg      # Suppress compiler output if we already did a PIC compilation.
224904007ebaSmrg      func_append command "$suppress_output"
225004007ebaSmrg      func_show_eval_locale "$command" \
225104007ebaSmrg        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
225204007ebaSmrg
225304007ebaSmrg      if test "$need_locks" = warn &&
225404007ebaSmrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
225504007ebaSmrg	$ECHO "\
225604007ebaSmrg*** ERROR, $lockfile contains:
225704007ebaSmrg`cat $lockfile 2>/dev/null`
225804007ebaSmrg
225904007ebaSmrgbut it should contain:
226004007ebaSmrg$srcfile
226104007ebaSmrg
226204007ebaSmrgThis indicates that another process is trying to use the same
226304007ebaSmrgtemporary object file, and libtool could not work around it because
226404007ebaSmrgyour compiler does not support \`-c' and \`-o' together.  If you
226504007ebaSmrgrepeat this compilation, it may succeed, by chance, but you had better
226604007ebaSmrgavoid parallel builds (make -j) in this platform, or get a better
226704007ebaSmrgcompiler."
226804007ebaSmrg
226904007ebaSmrg	$opt_dry_run || $RM $removelist
227004007ebaSmrg	exit $EXIT_FAILURE
227104007ebaSmrg      fi
227204007ebaSmrg
227304007ebaSmrg      # Just move the object if needed
227404007ebaSmrg      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
227504007ebaSmrg	func_show_eval '$MV "$output_obj" "$obj"' \
227604007ebaSmrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
227704007ebaSmrg      fi
227804007ebaSmrg    fi
227904007ebaSmrg
228004007ebaSmrg    $opt_dry_run || {
228104007ebaSmrg      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
228204007ebaSmrg
228304007ebaSmrg      # Unlock the critical section if it was locked
228404007ebaSmrg      if test "$need_locks" != no; then
228504007ebaSmrg	removelist=$lockfile
228604007ebaSmrg        $RM "$lockfile"
228704007ebaSmrg      fi
228804007ebaSmrg    }
228904007ebaSmrg
229004007ebaSmrg    exit $EXIT_SUCCESS
229104007ebaSmrg}
229204007ebaSmrg
229304007ebaSmrg$opt_help || {
229404007ebaSmrg  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
229504007ebaSmrg}
229604007ebaSmrg
229704007ebaSmrgfunc_mode_help ()
229804007ebaSmrg{
229904007ebaSmrg    # We need to display help for each of the modes.
230004007ebaSmrg    case $opt_mode in
230104007ebaSmrg      "")
230204007ebaSmrg        # Generic help is extracted from the usage comments
230304007ebaSmrg        # at the start of this file.
230404007ebaSmrg        func_help
230504007ebaSmrg        ;;
230604007ebaSmrg
230704007ebaSmrg      clean)
230804007ebaSmrg        $ECHO \
230904007ebaSmrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
231004007ebaSmrg
231104007ebaSmrgRemove files from the build directory.
231204007ebaSmrg
231304007ebaSmrgRM is the name of the program to use to delete files associated with each FILE
231404007ebaSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
231504007ebaSmrgto RM.
231604007ebaSmrg
231704007ebaSmrgIf FILE is a libtool library, object or program, all the files associated
231804007ebaSmrgwith it are deleted. Otherwise, only FILE itself is deleted using RM."
231904007ebaSmrg        ;;
232004007ebaSmrg
232104007ebaSmrg      compile)
232204007ebaSmrg      $ECHO \
232304007ebaSmrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
232404007ebaSmrg
232504007ebaSmrgCompile a source file into a libtool library object.
232604007ebaSmrg
232704007ebaSmrgThis mode accepts the following additional options:
232804007ebaSmrg
232904007ebaSmrg  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
233004007ebaSmrg  -no-suppress      do not suppress compiler output for multiple passes
233104007ebaSmrg  -prefer-pic       try to build PIC objects only
233204007ebaSmrg  -prefer-non-pic   try to build non-PIC objects only
233304007ebaSmrg  -shared           do not build a \`.o' file suitable for static linking
233404007ebaSmrg  -static           only build a \`.o' file suitable for static linking
233504007ebaSmrg  -Wc,FLAG          pass FLAG directly to the compiler
233604007ebaSmrg
233704007ebaSmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
233804007ebaSmrgfrom the given SOURCEFILE.
233904007ebaSmrg
234004007ebaSmrgThe output file name is determined by removing the directory component from
234104007ebaSmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the
234204007ebaSmrglibrary object suffix, \`.lo'."
234304007ebaSmrg        ;;
234404007ebaSmrg
234504007ebaSmrg      execute)
234604007ebaSmrg        $ECHO \
234704007ebaSmrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
234804007ebaSmrg
234904007ebaSmrgAutomatically set library path, then run a program.
235004007ebaSmrg
235104007ebaSmrgThis mode accepts the following additional options:
235204007ebaSmrg
235304007ebaSmrg  -dlopen FILE      add the directory containing FILE to the library path
235404007ebaSmrg
235504007ebaSmrgThis mode sets the library path environment variable according to \`-dlopen'
235604007ebaSmrgflags.
235704007ebaSmrg
235804007ebaSmrgIf any of the ARGS are libtool executable wrappers, then they are translated
235904007ebaSmrginto their corresponding uninstalled binary, and any of their required library
236004007ebaSmrgdirectories are added to the library path.
236104007ebaSmrg
236204007ebaSmrgThen, COMMAND is executed, with ARGS as arguments."
236304007ebaSmrg        ;;
236404007ebaSmrg
236504007ebaSmrg      finish)
236604007ebaSmrg        $ECHO \
236704007ebaSmrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
236804007ebaSmrg
236904007ebaSmrgComplete the installation of libtool libraries.
237004007ebaSmrg
237104007ebaSmrgEach LIBDIR is a directory that contains libtool libraries.
237204007ebaSmrg
237304007ebaSmrgThe commands that this mode executes may require superuser privileges.  Use
237404007ebaSmrgthe \`--dry-run' option if you just want to see what would be executed."
237504007ebaSmrg        ;;
237604007ebaSmrg
237704007ebaSmrg      install)
237804007ebaSmrg        $ECHO \
237904007ebaSmrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
238004007ebaSmrg
238104007ebaSmrgInstall executables or libraries.
238204007ebaSmrg
238304007ebaSmrgINSTALL-COMMAND is the installation command.  The first component should be
238404007ebaSmrgeither the \`install' or \`cp' program.
238504007ebaSmrg
238604007ebaSmrgThe following components of INSTALL-COMMAND are treated specially:
238704007ebaSmrg
238804007ebaSmrg  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
238904007ebaSmrg
239004007ebaSmrgThe rest of the components are interpreted as arguments to that command (only
239104007ebaSmrgBSD-compatible install options are recognized)."
239204007ebaSmrg        ;;
239304007ebaSmrg
239404007ebaSmrg      link)
239504007ebaSmrg        $ECHO \
239604007ebaSmrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
239704007ebaSmrg
239804007ebaSmrgLink object files or libraries together to form another library, or to
239904007ebaSmrgcreate an executable program.
240004007ebaSmrg
240104007ebaSmrgLINK-COMMAND is a command using the C compiler that you would use to create
240204007ebaSmrga program from several object files.
240304007ebaSmrg
240404007ebaSmrgThe following components of LINK-COMMAND are treated specially:
240504007ebaSmrg
240604007ebaSmrg  -all-static       do not do any dynamic linking at all
240704007ebaSmrg  -avoid-version    do not add a version suffix if possible
240804007ebaSmrg  -bindir BINDIR    specify path to binaries directory (for systems where
240904007ebaSmrg                    libraries must be found in the PATH setting at runtime)
241004007ebaSmrg  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
241104007ebaSmrg  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
241204007ebaSmrg  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
241304007ebaSmrg  -export-symbols SYMFILE
241404007ebaSmrg                    try to export only the symbols listed in SYMFILE
241504007ebaSmrg  -export-symbols-regex REGEX
241604007ebaSmrg                    try to export only the symbols matching REGEX
241704007ebaSmrg  -LLIBDIR          search LIBDIR for required installed libraries
241804007ebaSmrg  -lNAME            OUTPUT-FILE requires the installed library libNAME
241904007ebaSmrg  -module           build a library that can dlopened
242004007ebaSmrg  -no-fast-install  disable the fast-install mode
242104007ebaSmrg  -no-install       link a not-installable executable
242204007ebaSmrg  -no-undefined     declare that a library does not refer to external symbols
242304007ebaSmrg  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
242404007ebaSmrg  -objectlist FILE  Use a list of object files found in FILE to specify objects
242504007ebaSmrg  -precious-files-regex REGEX
242604007ebaSmrg                    don't remove output files matching REGEX
242704007ebaSmrg  -release RELEASE  specify package release information
242804007ebaSmrg  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
242904007ebaSmrg  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
243004007ebaSmrg  -shared           only do dynamic linking of libtool libraries
243104007ebaSmrg  -shrext SUFFIX    override the standard shared library file extension
243204007ebaSmrg  -static           do not do any dynamic linking of uninstalled libtool libraries
243304007ebaSmrg  -static-libtool-libs
243404007ebaSmrg                    do not do any dynamic linking of libtool libraries
243504007ebaSmrg  -version-info CURRENT[:REVISION[:AGE]]
243604007ebaSmrg                    specify library version info [each variable defaults to 0]
243704007ebaSmrg  -weak LIBNAME     declare that the target provides the LIBNAME interface
243804007ebaSmrg  -Wc,FLAG
243904007ebaSmrg  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
244004007ebaSmrg  -Wl,FLAG
244104007ebaSmrg  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
244204007ebaSmrg  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
244304007ebaSmrg
244404007ebaSmrgAll other options (arguments beginning with \`-') are ignored.
244504007ebaSmrg
244604007ebaSmrgEvery other argument is treated as a filename.  Files ending in \`.la' are
244704007ebaSmrgtreated as uninstalled libtool libraries, other files are standard or library
244804007ebaSmrgobject files.
244904007ebaSmrg
245004007ebaSmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
245104007ebaSmrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is
245204007ebaSmrgrequired, except when creating a convenience library.
245304007ebaSmrg
245404007ebaSmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
245504007ebaSmrgusing \`ar' and \`ranlib', or on Windows using \`lib'.
245604007ebaSmrg
245704007ebaSmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
245804007ebaSmrgis created, otherwise an executable program is created."
245904007ebaSmrg        ;;
246004007ebaSmrg
246104007ebaSmrg      uninstall)
246204007ebaSmrg        $ECHO \
246304007ebaSmrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
246404007ebaSmrg
246504007ebaSmrgRemove libraries from an installation directory.
246604007ebaSmrg
246704007ebaSmrgRM is the name of the program to use to delete files associated with each FILE
246804007ebaSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
246904007ebaSmrgto RM.
247004007ebaSmrg
247104007ebaSmrgIf FILE is a libtool library, all the files associated with it are deleted.
247204007ebaSmrgOtherwise, only FILE itself is deleted using RM."
247304007ebaSmrg        ;;
247404007ebaSmrg
247504007ebaSmrg      *)
247604007ebaSmrg        func_fatal_help "invalid operation mode \`$opt_mode'"
247704007ebaSmrg        ;;
247804007ebaSmrg    esac
247904007ebaSmrg
248004007ebaSmrg    echo
248104007ebaSmrg    $ECHO "Try \`$progname --help' for more information about other modes."
248204007ebaSmrg}
248304007ebaSmrg
248404007ebaSmrg# Now that we've collected a possible --mode arg, show help if necessary
248504007ebaSmrgif $opt_help; then
248604007ebaSmrg  if test "$opt_help" = :; then
248704007ebaSmrg    func_mode_help
248804007ebaSmrg  else
248904007ebaSmrg    {
249004007ebaSmrg      func_help noexit
249104007ebaSmrg      for opt_mode in compile link execute install finish uninstall clean; do
249204007ebaSmrg	func_mode_help
249304007ebaSmrg      done
249404007ebaSmrg    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
249504007ebaSmrg    {
249604007ebaSmrg      func_help noexit
249704007ebaSmrg      for opt_mode in compile link execute install finish uninstall clean; do
249804007ebaSmrg	echo
249904007ebaSmrg	func_mode_help
250004007ebaSmrg      done
250104007ebaSmrg    } |
250204007ebaSmrg    sed '1d
250304007ebaSmrg      /^When reporting/,/^Report/{
250404007ebaSmrg	H
250504007ebaSmrg	d
250604007ebaSmrg      }
250704007ebaSmrg      $x
250804007ebaSmrg      /information about other modes/d
250904007ebaSmrg      /more detailed .*MODE/d
251004007ebaSmrg      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
251104007ebaSmrg  fi
251204007ebaSmrg  exit $?
251304007ebaSmrgfi
251404007ebaSmrg
251504007ebaSmrg
251604007ebaSmrg# func_mode_execute arg...
251704007ebaSmrgfunc_mode_execute ()
251804007ebaSmrg{
251904007ebaSmrg    $opt_debug
252004007ebaSmrg    # The first argument is the command name.
252104007ebaSmrg    cmd="$nonopt"
252204007ebaSmrg    test -z "$cmd" && \
252304007ebaSmrg      func_fatal_help "you must specify a COMMAND"
252404007ebaSmrg
252504007ebaSmrg    # Handle -dlopen flags immediately.
252604007ebaSmrg    for file in $opt_dlopen; do
252704007ebaSmrg      test -f "$file" \
252804007ebaSmrg	|| func_fatal_help "\`$file' is not a file"
252904007ebaSmrg
253004007ebaSmrg      dir=
253104007ebaSmrg      case $file in
253204007ebaSmrg      *.la)
253304007ebaSmrg	func_resolve_sysroot "$file"
253404007ebaSmrg	file=$func_resolve_sysroot_result
253504007ebaSmrg
253604007ebaSmrg	# Check to see that this really is a libtool archive.
253704007ebaSmrg	func_lalib_unsafe_p "$file" \
253804007ebaSmrg	  || func_fatal_help "\`$lib' is not a valid libtool archive"
253904007ebaSmrg
254004007ebaSmrg	# Read the libtool library.
254104007ebaSmrg	dlname=
254204007ebaSmrg	library_names=
254304007ebaSmrg	func_source "$file"
254404007ebaSmrg
254504007ebaSmrg	# Skip this library if it cannot be dlopened.
254604007ebaSmrg	if test -z "$dlname"; then
254704007ebaSmrg	  # Warn if it was a shared library.
254804007ebaSmrg	  test -n "$library_names" && \
254904007ebaSmrg	    func_warning "\`$file' was not linked with \`-export-dynamic'"
255004007ebaSmrg	  continue
255104007ebaSmrg	fi
255204007ebaSmrg
255304007ebaSmrg	func_dirname "$file" "" "."
255404007ebaSmrg	dir="$func_dirname_result"
255504007ebaSmrg
255604007ebaSmrg	if test -f "$dir/$objdir/$dlname"; then
255704007ebaSmrg	  func_append dir "/$objdir"
255804007ebaSmrg	else
255904007ebaSmrg	  if test ! -f "$dir/$dlname"; then
256004007ebaSmrg	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
256104007ebaSmrg	  fi
256204007ebaSmrg	fi
256304007ebaSmrg	;;
256404007ebaSmrg
256504007ebaSmrg      *.lo)
256604007ebaSmrg	# Just add the directory containing the .lo file.
256704007ebaSmrg	func_dirname "$file" "" "."
256804007ebaSmrg	dir="$func_dirname_result"
256904007ebaSmrg	;;
257004007ebaSmrg
257104007ebaSmrg      *)
257204007ebaSmrg	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
257304007ebaSmrg	continue
257404007ebaSmrg	;;
257504007ebaSmrg      esac
257604007ebaSmrg
257704007ebaSmrg      # Get the absolute pathname.
257804007ebaSmrg      absdir=`cd "$dir" && pwd`
257904007ebaSmrg      test -n "$absdir" && dir="$absdir"
258004007ebaSmrg
258104007ebaSmrg      # Now add the directory to shlibpath_var.
258204007ebaSmrg      if eval "test -z \"\$$shlibpath_var\""; then
258304007ebaSmrg	eval "$shlibpath_var=\"\$dir\""
258404007ebaSmrg      else
258504007ebaSmrg	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
258604007ebaSmrg      fi
258704007ebaSmrg    done
258804007ebaSmrg
258904007ebaSmrg    # This variable tells wrapper scripts just to set shlibpath_var
259004007ebaSmrg    # rather than running their programs.
259104007ebaSmrg    libtool_execute_magic="$magic"
259204007ebaSmrg
259304007ebaSmrg    # Check if any of the arguments is a wrapper script.
259404007ebaSmrg    args=
259504007ebaSmrg    for file
259604007ebaSmrg    do
259704007ebaSmrg      case $file in
259804007ebaSmrg      -* | *.la | *.lo ) ;;
259904007ebaSmrg      *)
260004007ebaSmrg	# Do a test to see if this is really a libtool program.
260104007ebaSmrg	if func_ltwrapper_script_p "$file"; then
260204007ebaSmrg	  func_source "$file"
260304007ebaSmrg	  # Transform arg to wrapped name.
260404007ebaSmrg	  file="$progdir/$program"
260504007ebaSmrg	elif func_ltwrapper_executable_p "$file"; then
260604007ebaSmrg	  func_ltwrapper_scriptname "$file"
260704007ebaSmrg	  func_source "$func_ltwrapper_scriptname_result"
260804007ebaSmrg	  # Transform arg to wrapped name.
260904007ebaSmrg	  file="$progdir/$program"
261004007ebaSmrg	fi
261104007ebaSmrg	;;
261204007ebaSmrg      esac
261304007ebaSmrg      # Quote arguments (to preserve shell metacharacters).
261404007ebaSmrg      func_append_quoted args "$file"
261504007ebaSmrg    done
261604007ebaSmrg
261704007ebaSmrg    if test "X$opt_dry_run" = Xfalse; then
261804007ebaSmrg      if test -n "$shlibpath_var"; then
261904007ebaSmrg	# Export the shlibpath_var.
262004007ebaSmrg	eval "export $shlibpath_var"
262104007ebaSmrg      fi
262204007ebaSmrg
262304007ebaSmrg      # Restore saved environment variables
262404007ebaSmrg      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
262504007ebaSmrg      do
262604007ebaSmrg	eval "if test \"\${save_$lt_var+set}\" = set; then
262704007ebaSmrg                $lt_var=\$save_$lt_var; export $lt_var
262804007ebaSmrg	      else
262904007ebaSmrg		$lt_unset $lt_var
263004007ebaSmrg	      fi"
263104007ebaSmrg      done
263204007ebaSmrg
263304007ebaSmrg      # Now prepare to actually exec the command.
263404007ebaSmrg      exec_cmd="\$cmd$args"
263504007ebaSmrg    else
263604007ebaSmrg      # Display what would be done.
263704007ebaSmrg      if test -n "$shlibpath_var"; then
263804007ebaSmrg	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
263904007ebaSmrg	echo "export $shlibpath_var"
264004007ebaSmrg      fi
264104007ebaSmrg      $ECHO "$cmd$args"
264204007ebaSmrg      exit $EXIT_SUCCESS
264304007ebaSmrg    fi
264404007ebaSmrg}
264504007ebaSmrg
264604007ebaSmrgtest "$opt_mode" = execute && func_mode_execute ${1+"$@"}
264704007ebaSmrg
264804007ebaSmrg
264904007ebaSmrg# func_mode_finish arg...
265004007ebaSmrgfunc_mode_finish ()
265104007ebaSmrg{
265204007ebaSmrg    $opt_debug
265304007ebaSmrg    libs=
265404007ebaSmrg    libdirs=
265504007ebaSmrg    admincmds=
265604007ebaSmrg
265704007ebaSmrg    for opt in "$nonopt" ${1+"$@"}
265804007ebaSmrg    do
265904007ebaSmrg      if test -d "$opt"; then
266004007ebaSmrg	func_append libdirs " $opt"
266104007ebaSmrg
266204007ebaSmrg      elif test -f "$opt"; then
266304007ebaSmrg	if func_lalib_unsafe_p "$opt"; then
266404007ebaSmrg	  func_append libs " $opt"
266504007ebaSmrg	else
266604007ebaSmrg	  func_warning "\`$opt' is not a valid libtool archive"
266704007ebaSmrg	fi
266804007ebaSmrg
266904007ebaSmrg      else
267004007ebaSmrg	func_fatal_error "invalid argument \`$opt'"
267104007ebaSmrg      fi
267204007ebaSmrg    done
267304007ebaSmrg
267404007ebaSmrg    if test -n "$libs"; then
267504007ebaSmrg      if test -n "$lt_sysroot"; then
267604007ebaSmrg        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
267704007ebaSmrg        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
267804007ebaSmrg      else
267904007ebaSmrg        sysroot_cmd=
268004007ebaSmrg      fi
268104007ebaSmrg
268204007ebaSmrg      # Remove sysroot references
268304007ebaSmrg      if $opt_dry_run; then
268404007ebaSmrg        for lib in $libs; do
268504007ebaSmrg          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
268604007ebaSmrg        done
268704007ebaSmrg      else
268804007ebaSmrg        tmpdir=`func_mktempdir`
268904007ebaSmrg        for lib in $libs; do
269004007ebaSmrg	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
269104007ebaSmrg	    > $tmpdir/tmp-la
269204007ebaSmrg	  mv -f $tmpdir/tmp-la $lib
269304007ebaSmrg	done
269404007ebaSmrg        ${RM}r "$tmpdir"
269504007ebaSmrg      fi
269604007ebaSmrg    fi
269704007ebaSmrg
269804007ebaSmrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
269904007ebaSmrg      for libdir in $libdirs; do
270004007ebaSmrg	if test -n "$finish_cmds"; then
270104007ebaSmrg	  # Do each command in the finish commands.
270204007ebaSmrg	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
270304007ebaSmrg'"$cmd"'"'
270404007ebaSmrg	fi
270504007ebaSmrg	if test -n "$finish_eval"; then
270604007ebaSmrg	  # Do the single finish_eval.
270704007ebaSmrg	  eval cmds=\"$finish_eval\"
270804007ebaSmrg	  $opt_dry_run || eval "$cmds" || func_append admincmds "
270904007ebaSmrg       $cmds"
271004007ebaSmrg	fi
271104007ebaSmrg      done
271204007ebaSmrg    fi
271304007ebaSmrg
271404007ebaSmrg    # Exit here if they wanted silent mode.
271504007ebaSmrg    $opt_silent && exit $EXIT_SUCCESS
271604007ebaSmrg
271704007ebaSmrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
271804007ebaSmrg      echo "----------------------------------------------------------------------"
271904007ebaSmrg      echo "Libraries have been installed in:"
272004007ebaSmrg      for libdir in $libdirs; do
272104007ebaSmrg	$ECHO "   $libdir"
272204007ebaSmrg      done
272304007ebaSmrg      echo
272404007ebaSmrg      echo "If you ever happen to want to link against installed libraries"
272504007ebaSmrg      echo "in a given directory, LIBDIR, you must either use libtool, and"
272604007ebaSmrg      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
272704007ebaSmrg      echo "flag during linking and do at least one of the following:"
272804007ebaSmrg      if test -n "$shlibpath_var"; then
272904007ebaSmrg	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
273004007ebaSmrg	echo "     during execution"
273104007ebaSmrg      fi
273204007ebaSmrg      if test -n "$runpath_var"; then
273304007ebaSmrg	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
273404007ebaSmrg	echo "     during linking"
273504007ebaSmrg      fi
273604007ebaSmrg      if test -n "$hardcode_libdir_flag_spec"; then
273704007ebaSmrg	libdir=LIBDIR
273804007ebaSmrg	eval flag=\"$hardcode_libdir_flag_spec\"
273904007ebaSmrg
274004007ebaSmrg	$ECHO "   - use the \`$flag' linker flag"
274104007ebaSmrg      fi
274204007ebaSmrg      if test -n "$admincmds"; then
274304007ebaSmrg	$ECHO "   - have your system administrator run these commands:$admincmds"
274404007ebaSmrg      fi
274504007ebaSmrg      if test -f /etc/ld.so.conf; then
274604007ebaSmrg	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
274704007ebaSmrg      fi
274804007ebaSmrg      echo
274904007ebaSmrg
275004007ebaSmrg      echo "See any operating system documentation about shared libraries for"
275104007ebaSmrg      case $host in
275204007ebaSmrg	solaris2.[6789]|solaris2.1[0-9])
275304007ebaSmrg	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
275404007ebaSmrg	  echo "pages."
275504007ebaSmrg	  ;;
275604007ebaSmrg	*)
275704007ebaSmrg	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
275804007ebaSmrg	  ;;
275904007ebaSmrg      esac
276004007ebaSmrg      echo "----------------------------------------------------------------------"
276104007ebaSmrg    fi
276204007ebaSmrg    exit $EXIT_SUCCESS
276304007ebaSmrg}
276404007ebaSmrg
276504007ebaSmrgtest "$opt_mode" = finish && func_mode_finish ${1+"$@"}
276604007ebaSmrg
276704007ebaSmrg
276804007ebaSmrg# func_mode_install arg...
276904007ebaSmrgfunc_mode_install ()
277004007ebaSmrg{
277104007ebaSmrg    $opt_debug
277204007ebaSmrg    # There may be an optional sh(1) argument at the beginning of
277304007ebaSmrg    # install_prog (especially on Windows NT).
277404007ebaSmrg    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
277504007ebaSmrg       # Allow the use of GNU shtool's install command.
277604007ebaSmrg       case $nonopt in *shtool*) :;; *) false;; esac; then
277704007ebaSmrg      # Aesthetically quote it.
277804007ebaSmrg      func_quote_for_eval "$nonopt"
277904007ebaSmrg      install_prog="$func_quote_for_eval_result "
278004007ebaSmrg      arg=$1
278104007ebaSmrg      shift
278204007ebaSmrg    else
278304007ebaSmrg      install_prog=
278404007ebaSmrg      arg=$nonopt
278504007ebaSmrg    fi
278604007ebaSmrg
278704007ebaSmrg    # The real first argument should be the name of the installation program.
278804007ebaSmrg    # Aesthetically quote it.
278904007ebaSmrg    func_quote_for_eval "$arg"
279004007ebaSmrg    func_append install_prog "$func_quote_for_eval_result"
279104007ebaSmrg    install_shared_prog=$install_prog
279204007ebaSmrg    case " $install_prog " in
279304007ebaSmrg      *[\\\ /]cp\ *) install_cp=: ;;
279404007ebaSmrg      *) install_cp=false ;;
279504007ebaSmrg    esac
279604007ebaSmrg
279704007ebaSmrg    # We need to accept at least all the BSD install flags.
279804007ebaSmrg    dest=
279904007ebaSmrg    files=
280004007ebaSmrg    opts=
280104007ebaSmrg    prev=
280204007ebaSmrg    install_type=
280304007ebaSmrg    isdir=no
280404007ebaSmrg    stripme=
280504007ebaSmrg    no_mode=:
280604007ebaSmrg    for arg
280704007ebaSmrg    do
280804007ebaSmrg      arg2=
280904007ebaSmrg      if test -n "$dest"; then
281004007ebaSmrg	func_append files " $dest"
281104007ebaSmrg	dest=$arg
281204007ebaSmrg	continue
281304007ebaSmrg      fi
281404007ebaSmrg
281504007ebaSmrg      case $arg in
281604007ebaSmrg      -d) isdir=yes ;;
281704007ebaSmrg      -f)
281804007ebaSmrg	if $install_cp; then :; else
281904007ebaSmrg	  prev=$arg
282004007ebaSmrg	fi
282104007ebaSmrg	;;
282204007ebaSmrg      -g | -m | -o)
282304007ebaSmrg	prev=$arg
282404007ebaSmrg	;;
282504007ebaSmrg      -s)
282604007ebaSmrg	stripme=" -s"
282704007ebaSmrg	continue
282804007ebaSmrg	;;
282904007ebaSmrg      -*)
283004007ebaSmrg	;;
283104007ebaSmrg      *)
283204007ebaSmrg	# If the previous option needed an argument, then skip it.
283304007ebaSmrg	if test -n "$prev"; then
283404007ebaSmrg	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
283504007ebaSmrg	    arg2=$install_override_mode
283604007ebaSmrg	    no_mode=false
283704007ebaSmrg	  fi
283804007ebaSmrg	  prev=
283904007ebaSmrg	else
284004007ebaSmrg	  dest=$arg
284104007ebaSmrg	  continue
284204007ebaSmrg	fi
284304007ebaSmrg	;;
284404007ebaSmrg      esac
284504007ebaSmrg
284604007ebaSmrg      # Aesthetically quote the argument.
284704007ebaSmrg      func_quote_for_eval "$arg"
284804007ebaSmrg      func_append install_prog " $func_quote_for_eval_result"
284904007ebaSmrg      if test -n "$arg2"; then
285004007ebaSmrg	func_quote_for_eval "$arg2"
285104007ebaSmrg      fi
285204007ebaSmrg      func_append install_shared_prog " $func_quote_for_eval_result"
285304007ebaSmrg    done
285404007ebaSmrg
285504007ebaSmrg    test -z "$install_prog" && \
285604007ebaSmrg      func_fatal_help "you must specify an install program"
285704007ebaSmrg
285804007ebaSmrg    test -n "$prev" && \
285904007ebaSmrg      func_fatal_help "the \`$prev' option requires an argument"
286004007ebaSmrg
286104007ebaSmrg    if test -n "$install_override_mode" && $no_mode; then
286204007ebaSmrg      if $install_cp; then :; else
286304007ebaSmrg	func_quote_for_eval "$install_override_mode"
286404007ebaSmrg	func_append install_shared_prog " -m $func_quote_for_eval_result"
286504007ebaSmrg      fi
286604007ebaSmrg    fi
286704007ebaSmrg
286804007ebaSmrg    if test -z "$files"; then
286904007ebaSmrg      if test -z "$dest"; then
287004007ebaSmrg	func_fatal_help "no file or destination specified"
287104007ebaSmrg      else
287204007ebaSmrg	func_fatal_help "you must specify a destination"
287304007ebaSmrg      fi
287404007ebaSmrg    fi
287504007ebaSmrg
287604007ebaSmrg    # Strip any trailing slash from the destination.
287704007ebaSmrg    func_stripname '' '/' "$dest"
287804007ebaSmrg    dest=$func_stripname_result
287904007ebaSmrg
288004007ebaSmrg    # Check to see that the destination is a directory.
288104007ebaSmrg    test -d "$dest" && isdir=yes
288204007ebaSmrg    if test "$isdir" = yes; then
288304007ebaSmrg      destdir="$dest"
288404007ebaSmrg      destname=
288504007ebaSmrg    else
288604007ebaSmrg      func_dirname_and_basename "$dest" "" "."
288704007ebaSmrg      destdir="$func_dirname_result"
288804007ebaSmrg      destname="$func_basename_result"
288904007ebaSmrg
289004007ebaSmrg      # Not a directory, so check to see that there is only one file specified.
289104007ebaSmrg      set dummy $files; shift
289204007ebaSmrg      test "$#" -gt 1 && \
289304007ebaSmrg	func_fatal_help "\`$dest' is not a directory"
289404007ebaSmrg    fi
289504007ebaSmrg    case $destdir in
289604007ebaSmrg    [\\/]* | [A-Za-z]:[\\/]*) ;;
289704007ebaSmrg    *)
289804007ebaSmrg      for file in $files; do
289904007ebaSmrg	case $file in
290004007ebaSmrg	*.lo) ;;
290104007ebaSmrg	*)
290204007ebaSmrg	  func_fatal_help "\`$destdir' must be an absolute directory name"
290304007ebaSmrg	  ;;
290404007ebaSmrg	esac
290504007ebaSmrg      done
290604007ebaSmrg      ;;
290704007ebaSmrg    esac
290804007ebaSmrg
290904007ebaSmrg    # This variable tells wrapper scripts just to set variables rather
291004007ebaSmrg    # than running their programs.
291104007ebaSmrg    libtool_install_magic="$magic"
291204007ebaSmrg
291304007ebaSmrg    staticlibs=
291404007ebaSmrg    future_libdirs=
291504007ebaSmrg    current_libdirs=
291604007ebaSmrg    for file in $files; do
291704007ebaSmrg
291804007ebaSmrg      # Do each installation.
291904007ebaSmrg      case $file in
292004007ebaSmrg      *.$libext)
292104007ebaSmrg	# Do the static libraries later.
292204007ebaSmrg	func_append staticlibs " $file"
292304007ebaSmrg	;;
292404007ebaSmrg
292504007ebaSmrg      *.la)
292604007ebaSmrg	func_resolve_sysroot "$file"
292704007ebaSmrg	file=$func_resolve_sysroot_result
292804007ebaSmrg
292904007ebaSmrg	# Check to see that this really is a libtool archive.
293004007ebaSmrg	func_lalib_unsafe_p "$file" \
293104007ebaSmrg	  || func_fatal_help "\`$file' is not a valid libtool archive"
293204007ebaSmrg
293304007ebaSmrg	library_names=
293404007ebaSmrg	old_library=
293504007ebaSmrg	relink_command=
293604007ebaSmrg	func_source "$file"
293704007ebaSmrg
293804007ebaSmrg	# Add the libdir to current_libdirs if it is the destination.
293904007ebaSmrg	if test "X$destdir" = "X$libdir"; then
294004007ebaSmrg	  case "$current_libdirs " in
294104007ebaSmrg	  *" $libdir "*) ;;
294204007ebaSmrg	  *) func_append current_libdirs " $libdir" ;;
294304007ebaSmrg	  esac
294404007ebaSmrg	else
294504007ebaSmrg	  # Note the libdir as a future libdir.
294604007ebaSmrg	  case "$future_libdirs " in
294704007ebaSmrg	  *" $libdir "*) ;;
294804007ebaSmrg	  *) func_append future_libdirs " $libdir" ;;
294904007ebaSmrg	  esac
295004007ebaSmrg	fi
295104007ebaSmrg
295204007ebaSmrg	func_dirname "$file" "/" ""
295304007ebaSmrg	dir="$func_dirname_result"
295404007ebaSmrg	func_append dir "$objdir"
295504007ebaSmrg
295604007ebaSmrg	if test -n "$relink_command"; then
295704007ebaSmrg	  # Determine the prefix the user has applied to our future dir.
295804007ebaSmrg	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
295904007ebaSmrg
296004007ebaSmrg	  # Don't allow the user to place us outside of our expected
296104007ebaSmrg	  # location b/c this prevents finding dependent libraries that
296204007ebaSmrg	  # are installed to the same prefix.
296304007ebaSmrg	  # At present, this check doesn't affect windows .dll's that
296404007ebaSmrg	  # are installed into $libdir/../bin (currently, that works fine)
296504007ebaSmrg	  # but it's something to keep an eye on.
296604007ebaSmrg	  test "$inst_prefix_dir" = "$destdir" && \
296704007ebaSmrg	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
296804007ebaSmrg
296904007ebaSmrg	  if test -n "$inst_prefix_dir"; then
297004007ebaSmrg	    # Stick the inst_prefix_dir data into the link command.
297104007ebaSmrg	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
297204007ebaSmrg	  else
297304007ebaSmrg	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
297404007ebaSmrg	  fi
297504007ebaSmrg
297604007ebaSmrg	  func_warning "relinking \`$file'"
297704007ebaSmrg	  func_show_eval "$relink_command" \
297804007ebaSmrg	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
297904007ebaSmrg	fi
298004007ebaSmrg
298104007ebaSmrg	# See the names of the shared library.
298204007ebaSmrg	set dummy $library_names; shift
298304007ebaSmrg	if test -n "$1"; then
298404007ebaSmrg	  realname="$1"
298504007ebaSmrg	  shift
298604007ebaSmrg
298704007ebaSmrg	  srcname="$realname"
298804007ebaSmrg	  test -n "$relink_command" && srcname="$realname"T
298904007ebaSmrg
299004007ebaSmrg	  # Install the shared library and build the symlinks.
299104007ebaSmrg	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
299204007ebaSmrg	      'exit $?'
299304007ebaSmrg	  tstripme="$stripme"
299404007ebaSmrg	  case $host_os in
299504007ebaSmrg	  cygwin* | mingw* | pw32* | cegcc*)
299604007ebaSmrg	    case $realname in
299704007ebaSmrg	    *.dll.a)
299804007ebaSmrg	      tstripme=""
299904007ebaSmrg	      ;;
300004007ebaSmrg	    esac
300104007ebaSmrg	    ;;
300204007ebaSmrg	  esac
300304007ebaSmrg	  if test -n "$tstripme" && test -n "$striplib"; then
300404007ebaSmrg	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
300504007ebaSmrg	  fi
300604007ebaSmrg
300704007ebaSmrg	  if test "$#" -gt 0; then
300804007ebaSmrg	    # Delete the old symlinks, and create new ones.
300904007ebaSmrg	    # Try `ln -sf' first, because the `ln' binary might depend on
301004007ebaSmrg	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
301104007ebaSmrg	    # so we also need to try rm && ln -s.
301204007ebaSmrg	    for linkname
301304007ebaSmrg	    do
301404007ebaSmrg	      test "$linkname" != "$realname" \
301504007ebaSmrg		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
301604007ebaSmrg	    done
301704007ebaSmrg	  fi
301804007ebaSmrg
301904007ebaSmrg	  # Do each command in the postinstall commands.
302004007ebaSmrg	  lib="$destdir/$realname"
302104007ebaSmrg	  func_execute_cmds "$postinstall_cmds" 'exit $?'
302204007ebaSmrg	fi
302304007ebaSmrg
302404007ebaSmrg	# Install the pseudo-library for information purposes.
302504007ebaSmrg	func_basename "$file"
302604007ebaSmrg	name="$func_basename_result"
302704007ebaSmrg	instname="$dir/$name"i
302804007ebaSmrg	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
302904007ebaSmrg
303004007ebaSmrg	# Maybe install the static library, too.
303104007ebaSmrg	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
303204007ebaSmrg	;;
303304007ebaSmrg
303404007ebaSmrg      *.lo)
303504007ebaSmrg	# Install (i.e. copy) a libtool object.
303604007ebaSmrg
303704007ebaSmrg	# Figure out destination file name, if it wasn't already specified.
303804007ebaSmrg	if test -n "$destname"; then
303904007ebaSmrg	  destfile="$destdir/$destname"
304004007ebaSmrg	else
304104007ebaSmrg	  func_basename "$file"
304204007ebaSmrg	  destfile="$func_basename_result"
304304007ebaSmrg	  destfile="$destdir/$destfile"
304404007ebaSmrg	fi
304504007ebaSmrg
304604007ebaSmrg	# Deduce the name of the destination old-style object file.
304704007ebaSmrg	case $destfile in
304804007ebaSmrg	*.lo)
304904007ebaSmrg	  func_lo2o "$destfile"
305004007ebaSmrg	  staticdest=$func_lo2o_result
305104007ebaSmrg	  ;;
305204007ebaSmrg	*.$objext)
305304007ebaSmrg	  staticdest="$destfile"
305404007ebaSmrg	  destfile=
305504007ebaSmrg	  ;;
305604007ebaSmrg	*)
305704007ebaSmrg	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
305804007ebaSmrg	  ;;
305904007ebaSmrg	esac
306004007ebaSmrg
306104007ebaSmrg	# Install the libtool object if requested.
306204007ebaSmrg	test -n "$destfile" && \
306304007ebaSmrg	  func_show_eval "$install_prog $file $destfile" 'exit $?'
306404007ebaSmrg
306504007ebaSmrg	# Install the old object if enabled.
306604007ebaSmrg	if test "$build_old_libs" = yes; then
306704007ebaSmrg	  # Deduce the name of the old-style object file.
306804007ebaSmrg	  func_lo2o "$file"
306904007ebaSmrg	  staticobj=$func_lo2o_result
307004007ebaSmrg	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
307104007ebaSmrg	fi
307204007ebaSmrg	exit $EXIT_SUCCESS
307304007ebaSmrg	;;
307404007ebaSmrg
307504007ebaSmrg      *)
307604007ebaSmrg	# Figure out destination file name, if it wasn't already specified.
307704007ebaSmrg	if test -n "$destname"; then
307804007ebaSmrg	  destfile="$destdir/$destname"
307904007ebaSmrg	else
308004007ebaSmrg	  func_basename "$file"
308104007ebaSmrg	  destfile="$func_basename_result"
308204007ebaSmrg	  destfile="$destdir/$destfile"
308304007ebaSmrg	fi
308404007ebaSmrg
308504007ebaSmrg	# If the file is missing, and there is a .exe on the end, strip it
308604007ebaSmrg	# because it is most likely a libtool script we actually want to
308704007ebaSmrg	# install
308804007ebaSmrg	stripped_ext=""
308904007ebaSmrg	case $file in
309004007ebaSmrg	  *.exe)
309104007ebaSmrg	    if test ! -f "$file"; then
309204007ebaSmrg	      func_stripname '' '.exe' "$file"
309304007ebaSmrg	      file=$func_stripname_result
309404007ebaSmrg	      stripped_ext=".exe"
309504007ebaSmrg	    fi
309604007ebaSmrg	    ;;
309704007ebaSmrg	esac
309804007ebaSmrg
309904007ebaSmrg	# Do a test to see if this is really a libtool program.
310004007ebaSmrg	case $host in
310104007ebaSmrg	*cygwin* | *mingw*)
310204007ebaSmrg	    if func_ltwrapper_executable_p "$file"; then
310304007ebaSmrg	      func_ltwrapper_scriptname "$file"
310404007ebaSmrg	      wrapper=$func_ltwrapper_scriptname_result
310504007ebaSmrg	    else
310604007ebaSmrg	      func_stripname '' '.exe' "$file"
310704007ebaSmrg	      wrapper=$func_stripname_result
310804007ebaSmrg	    fi
310904007ebaSmrg	    ;;
311004007ebaSmrg	*)
311104007ebaSmrg	    wrapper=$file
311204007ebaSmrg	    ;;
311304007ebaSmrg	esac
311404007ebaSmrg	if func_ltwrapper_script_p "$wrapper"; then
311504007ebaSmrg	  notinst_deplibs=
311604007ebaSmrg	  relink_command=
311704007ebaSmrg
311804007ebaSmrg	  func_source "$wrapper"
311904007ebaSmrg
312004007ebaSmrg	  # Check the variables that should have been set.
312104007ebaSmrg	  test -z "$generated_by_libtool_version" && \
312204007ebaSmrg	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
312304007ebaSmrg
312404007ebaSmrg	  finalize=yes
312504007ebaSmrg	  for lib in $notinst_deplibs; do
312604007ebaSmrg	    # Check to see that each library is installed.
312704007ebaSmrg	    libdir=
312804007ebaSmrg	    if test -f "$lib"; then
312904007ebaSmrg	      func_source "$lib"
313004007ebaSmrg	    fi
313104007ebaSmrg	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
313204007ebaSmrg	    if test -n "$libdir" && test ! -f "$libfile"; then
313304007ebaSmrg	      func_warning "\`$lib' has not been installed in \`$libdir'"
313404007ebaSmrg	      finalize=no
313504007ebaSmrg	    fi
313604007ebaSmrg	  done
313704007ebaSmrg
313804007ebaSmrg	  relink_command=
313904007ebaSmrg	  func_source "$wrapper"
314004007ebaSmrg
314104007ebaSmrg	  outputname=
314204007ebaSmrg	  if test "$fast_install" = no && test -n "$relink_command"; then
314304007ebaSmrg	    $opt_dry_run || {
314404007ebaSmrg	      if test "$finalize" = yes; then
314504007ebaSmrg	        tmpdir=`func_mktempdir`
314604007ebaSmrg		func_basename "$file$stripped_ext"
314704007ebaSmrg		file="$func_basename_result"
314804007ebaSmrg	        outputname="$tmpdir/$file"
314904007ebaSmrg	        # Replace the output file specification.
315004007ebaSmrg	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
315104007ebaSmrg
315204007ebaSmrg	        $opt_silent || {
315304007ebaSmrg	          func_quote_for_expand "$relink_command"
315404007ebaSmrg		  eval "func_echo $func_quote_for_expand_result"
315504007ebaSmrg	        }
315604007ebaSmrg	        if eval "$relink_command"; then :
315704007ebaSmrg	          else
315804007ebaSmrg		  func_error "error: relink \`$file' with the above command before installing it"
315904007ebaSmrg		  $opt_dry_run || ${RM}r "$tmpdir"
316004007ebaSmrg		  continue
316104007ebaSmrg	        fi
316204007ebaSmrg	        file="$outputname"
316304007ebaSmrg	      else
316404007ebaSmrg	        func_warning "cannot relink \`$file'"
316504007ebaSmrg	      fi
316604007ebaSmrg	    }
316704007ebaSmrg	  else
316804007ebaSmrg	    # Install the binary that we compiled earlier.
316904007ebaSmrg	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
317004007ebaSmrg	  fi
317104007ebaSmrg	fi
317204007ebaSmrg
317304007ebaSmrg	# remove .exe since cygwin /usr/bin/install will append another
317404007ebaSmrg	# one anyway
317504007ebaSmrg	case $install_prog,$host in
317604007ebaSmrg	*/usr/bin/install*,*cygwin*)
317704007ebaSmrg	  case $file:$destfile in
317804007ebaSmrg	  *.exe:*.exe)
317904007ebaSmrg	    # this is ok
318004007ebaSmrg	    ;;
318104007ebaSmrg	  *.exe:*)
318204007ebaSmrg	    destfile=$destfile.exe
318304007ebaSmrg	    ;;
318404007ebaSmrg	  *:*.exe)
318504007ebaSmrg	    func_stripname '' '.exe' "$destfile"
318604007ebaSmrg	    destfile=$func_stripname_result
318704007ebaSmrg	    ;;
318804007ebaSmrg	  esac
318904007ebaSmrg	  ;;
319004007ebaSmrg	esac
319104007ebaSmrg	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
319204007ebaSmrg	$opt_dry_run || if test -n "$outputname"; then
319304007ebaSmrg	  ${RM}r "$tmpdir"
319404007ebaSmrg	fi
319504007ebaSmrg	;;
319604007ebaSmrg      esac
319704007ebaSmrg    done
319804007ebaSmrg
319904007ebaSmrg    for file in $staticlibs; do
320004007ebaSmrg      func_basename "$file"
320104007ebaSmrg      name="$func_basename_result"
320204007ebaSmrg
320304007ebaSmrg      # Set up the ranlib parameters.
320404007ebaSmrg      oldlib="$destdir/$name"
320504007ebaSmrg      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
320604007ebaSmrg      tool_oldlib=$func_to_tool_file_result
320704007ebaSmrg
320804007ebaSmrg      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
320904007ebaSmrg
321004007ebaSmrg      if test -n "$stripme" && test -n "$old_striplib"; then
321104007ebaSmrg	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
321204007ebaSmrg      fi
321304007ebaSmrg
321404007ebaSmrg      # Do each command in the postinstall commands.
321504007ebaSmrg      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
321604007ebaSmrg    done
321704007ebaSmrg
321804007ebaSmrg    test -n "$future_libdirs" && \
321904007ebaSmrg      func_warning "remember to run \`$progname --finish$future_libdirs'"
322004007ebaSmrg
322104007ebaSmrg    if test -n "$current_libdirs"; then
322204007ebaSmrg      # Maybe just do a dry run.
322304007ebaSmrg      $opt_dry_run && current_libdirs=" -n$current_libdirs"
322404007ebaSmrg      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
322504007ebaSmrg    else
322604007ebaSmrg      exit $EXIT_SUCCESS
322704007ebaSmrg    fi
322804007ebaSmrg}
322904007ebaSmrg
323004007ebaSmrgtest "$opt_mode" = install && func_mode_install ${1+"$@"}
323104007ebaSmrg
323204007ebaSmrg
323304007ebaSmrg# func_generate_dlsyms outputname originator pic_p
323404007ebaSmrg# Extract symbols from dlprefiles and create ${outputname}S.o with
323504007ebaSmrg# a dlpreopen symbol table.
323604007ebaSmrgfunc_generate_dlsyms ()
323704007ebaSmrg{
323804007ebaSmrg    $opt_debug
323904007ebaSmrg    my_outputname="$1"
324004007ebaSmrg    my_originator="$2"
324104007ebaSmrg    my_pic_p="${3-no}"
324204007ebaSmrg    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
324304007ebaSmrg    my_dlsyms=
324404007ebaSmrg
324504007ebaSmrg    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
324604007ebaSmrg      if test -n "$NM" && test -n "$global_symbol_pipe"; then
324704007ebaSmrg	my_dlsyms="${my_outputname}S.c"
324804007ebaSmrg      else
324904007ebaSmrg	func_error "not configured to extract global symbols from dlpreopened files"
325004007ebaSmrg      fi
325104007ebaSmrg    fi
325204007ebaSmrg
325304007ebaSmrg    if test -n "$my_dlsyms"; then
325404007ebaSmrg      case $my_dlsyms in
325504007ebaSmrg      "") ;;
325604007ebaSmrg      *.c)
325704007ebaSmrg	# Discover the nlist of each of the dlfiles.
325804007ebaSmrg	nlist="$output_objdir/${my_outputname}.nm"
325904007ebaSmrg
326004007ebaSmrg	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
326104007ebaSmrg
326204007ebaSmrg	# Parse the name list into a source file.
326304007ebaSmrg	func_verbose "creating $output_objdir/$my_dlsyms"
326404007ebaSmrg
326504007ebaSmrg	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
326604007ebaSmrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
326704007ebaSmrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
326804007ebaSmrg
326904007ebaSmrg#ifdef __cplusplus
327004007ebaSmrgextern \"C\" {
327104007ebaSmrg#endif
327204007ebaSmrg
327304007ebaSmrg#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
327404007ebaSmrg#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
327504007ebaSmrg#endif
327604007ebaSmrg
327704007ebaSmrg/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
327804007ebaSmrg#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
327904007ebaSmrg/* DATA imports from DLLs on WIN32 con't be const, because runtime
328004007ebaSmrg   relocations are performed -- see ld's documentation on pseudo-relocs.  */
328104007ebaSmrg# define LT_DLSYM_CONST
328204007ebaSmrg#elif defined(__osf__)
328304007ebaSmrg/* This system does not cope well with relocations in const data.  */
328404007ebaSmrg# define LT_DLSYM_CONST
328504007ebaSmrg#else
328604007ebaSmrg# define LT_DLSYM_CONST const
328704007ebaSmrg#endif
328804007ebaSmrg
328904007ebaSmrg/* External symbol declarations for the compiler. */\
329004007ebaSmrg"
329104007ebaSmrg
329204007ebaSmrg	if test "$dlself" = yes; then
329304007ebaSmrg	  func_verbose "generating symbol list for \`$output'"
329404007ebaSmrg
329504007ebaSmrg	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
329604007ebaSmrg
329704007ebaSmrg	  # Add our own program objects to the symbol list.
329804007ebaSmrg	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
329904007ebaSmrg	  for progfile in $progfiles; do
330004007ebaSmrg	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
330104007ebaSmrg	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
330204007ebaSmrg	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
330304007ebaSmrg	  done
330404007ebaSmrg
330504007ebaSmrg	  if test -n "$exclude_expsyms"; then
330604007ebaSmrg	    $opt_dry_run || {
330704007ebaSmrg	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
330804007ebaSmrg	      eval '$MV "$nlist"T "$nlist"'
330904007ebaSmrg	    }
331004007ebaSmrg	  fi
331104007ebaSmrg
331204007ebaSmrg	  if test -n "$export_symbols_regex"; then
331304007ebaSmrg	    $opt_dry_run || {
331404007ebaSmrg	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
331504007ebaSmrg	      eval '$MV "$nlist"T "$nlist"'
331604007ebaSmrg	    }
331704007ebaSmrg	  fi
331804007ebaSmrg
331904007ebaSmrg	  # Prepare the list of exported symbols
332004007ebaSmrg	  if test -z "$export_symbols"; then
332104007ebaSmrg	    export_symbols="$output_objdir/$outputname.exp"
332204007ebaSmrg	    $opt_dry_run || {
332304007ebaSmrg	      $RM $export_symbols
332404007ebaSmrg	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
332504007ebaSmrg	      case $host in
332604007ebaSmrg	      *cygwin* | *mingw* | *cegcc* )
332704007ebaSmrg                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
332804007ebaSmrg                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
332904007ebaSmrg	        ;;
333004007ebaSmrg	      esac
333104007ebaSmrg	    }
333204007ebaSmrg	  else
333304007ebaSmrg	    $opt_dry_run || {
333404007ebaSmrg	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
333504007ebaSmrg	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
333604007ebaSmrg	      eval '$MV "$nlist"T "$nlist"'
333704007ebaSmrg	      case $host in
333804007ebaSmrg	        *cygwin* | *mingw* | *cegcc* )
333904007ebaSmrg	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
334004007ebaSmrg	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
334104007ebaSmrg	          ;;
334204007ebaSmrg	      esac
334304007ebaSmrg	    }
334404007ebaSmrg	  fi
334504007ebaSmrg	fi
334604007ebaSmrg
334704007ebaSmrg	for dlprefile in $dlprefiles; do
334804007ebaSmrg	  func_verbose "extracting global C symbols from \`$dlprefile'"
334904007ebaSmrg	  func_basename "$dlprefile"
335004007ebaSmrg	  name="$func_basename_result"
335104007ebaSmrg          case $host in
335204007ebaSmrg	    *cygwin* | *mingw* | *cegcc* )
335304007ebaSmrg	      # if an import library, we need to obtain dlname
335404007ebaSmrg	      if func_win32_import_lib_p "$dlprefile"; then
335504007ebaSmrg	        func_tr_sh "$dlprefile"
335604007ebaSmrg	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
335704007ebaSmrg	        dlprefile_dlbasename=""
335804007ebaSmrg	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
335904007ebaSmrg	          # Use subshell, to avoid clobbering current variable values
336004007ebaSmrg	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
336104007ebaSmrg	          if test -n "$dlprefile_dlname" ; then
336204007ebaSmrg	            func_basename "$dlprefile_dlname"
336304007ebaSmrg	            dlprefile_dlbasename="$func_basename_result"
336404007ebaSmrg	          else
336504007ebaSmrg	            # no lafile. user explicitly requested -dlpreopen <import library>.
336604007ebaSmrg	            $sharedlib_from_linklib_cmd "$dlprefile"
336704007ebaSmrg	            dlprefile_dlbasename=$sharedlib_from_linklib_result
336804007ebaSmrg	          fi
336904007ebaSmrg	        fi
337004007ebaSmrg	        $opt_dry_run || {
337104007ebaSmrg	          if test -n "$dlprefile_dlbasename" ; then
337204007ebaSmrg	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
337304007ebaSmrg	          else
337404007ebaSmrg	            func_warning "Could not compute DLL name from $name"
337504007ebaSmrg	            eval '$ECHO ": $name " >> "$nlist"'
337604007ebaSmrg	          fi
337704007ebaSmrg	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
337804007ebaSmrg	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
337904007ebaSmrg	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
338004007ebaSmrg	        }
338104007ebaSmrg	      else # not an import lib
338204007ebaSmrg	        $opt_dry_run || {
338304007ebaSmrg	          eval '$ECHO ": $name " >> "$nlist"'
338404007ebaSmrg	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
338504007ebaSmrg	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
338604007ebaSmrg	        }
338704007ebaSmrg	      fi
338804007ebaSmrg	    ;;
338904007ebaSmrg	    *)
339004007ebaSmrg	      $opt_dry_run || {
339104007ebaSmrg	        eval '$ECHO ": $name " >> "$nlist"'
339204007ebaSmrg	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
339304007ebaSmrg	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
339404007ebaSmrg	      }
339504007ebaSmrg	    ;;
339604007ebaSmrg          esac
339704007ebaSmrg	done
339804007ebaSmrg
339904007ebaSmrg	$opt_dry_run || {
340004007ebaSmrg	  # Make sure we have at least an empty file.
340104007ebaSmrg	  test -f "$nlist" || : > "$nlist"
340204007ebaSmrg
340304007ebaSmrg	  if test -n "$exclude_expsyms"; then
340404007ebaSmrg	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
340504007ebaSmrg	    $MV "$nlist"T "$nlist"
340604007ebaSmrg	  fi
340704007ebaSmrg
340804007ebaSmrg	  # Try sorting and uniquifying the output.
340904007ebaSmrg	  if $GREP -v "^: " < "$nlist" |
341004007ebaSmrg	      if sort -k 3 </dev/null >/dev/null 2>&1; then
341104007ebaSmrg		sort -k 3
341204007ebaSmrg	      else
341304007ebaSmrg		sort +2
341404007ebaSmrg	      fi |
341504007ebaSmrg	      uniq > "$nlist"S; then
341604007ebaSmrg	    :
341704007ebaSmrg	  else
341804007ebaSmrg	    $GREP -v "^: " < "$nlist" > "$nlist"S
341904007ebaSmrg	  fi
342004007ebaSmrg
342104007ebaSmrg	  if test -f "$nlist"S; then
342204007ebaSmrg	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
342304007ebaSmrg	  else
342404007ebaSmrg	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
342504007ebaSmrg	  fi
342604007ebaSmrg
342704007ebaSmrg	  echo >> "$output_objdir/$my_dlsyms" "\
342804007ebaSmrg
342904007ebaSmrg/* The mapping between symbol names and symbols.  */
343004007ebaSmrgtypedef struct {
343104007ebaSmrg  const char *name;
343204007ebaSmrg  void *address;
343304007ebaSmrg} lt_dlsymlist;
343404007ebaSmrgextern LT_DLSYM_CONST lt_dlsymlist
343504007ebaSmrglt_${my_prefix}_LTX_preloaded_symbols[];
343604007ebaSmrgLT_DLSYM_CONST lt_dlsymlist
343704007ebaSmrglt_${my_prefix}_LTX_preloaded_symbols[] =
343804007ebaSmrg{\
343904007ebaSmrg  { \"$my_originator\", (void *) 0 },"
344004007ebaSmrg
344104007ebaSmrg	  case $need_lib_prefix in
344204007ebaSmrg	  no)
344304007ebaSmrg	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
344404007ebaSmrg	    ;;
344504007ebaSmrg	  *)
344604007ebaSmrg	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
344704007ebaSmrg	    ;;
344804007ebaSmrg	  esac
344904007ebaSmrg	  echo >> "$output_objdir/$my_dlsyms" "\
345004007ebaSmrg  {0, (void *) 0}
345104007ebaSmrg};
345204007ebaSmrg
345304007ebaSmrg/* This works around a problem in FreeBSD linker */
345404007ebaSmrg#ifdef FREEBSD_WORKAROUND
345504007ebaSmrgstatic const void *lt_preloaded_setup() {
345604007ebaSmrg  return lt_${my_prefix}_LTX_preloaded_symbols;
345704007ebaSmrg}
345804007ebaSmrg#endif
345904007ebaSmrg
346004007ebaSmrg#ifdef __cplusplus
346104007ebaSmrg}
346204007ebaSmrg#endif\
346304007ebaSmrg"
346404007ebaSmrg	} # !$opt_dry_run
346504007ebaSmrg
346604007ebaSmrg	pic_flag_for_symtable=
346704007ebaSmrg	case "$compile_command " in
346804007ebaSmrg	*" -static "*) ;;
346904007ebaSmrg	*)
347004007ebaSmrg	  case $host in
347104007ebaSmrg	  # compiling the symbol table file with pic_flag works around
347204007ebaSmrg	  # a FreeBSD bug that causes programs to crash when -lm is
347304007ebaSmrg	  # linked before any other PIC object.  But we must not use
347404007ebaSmrg	  # pic_flag when linking with -static.  The problem exists in
347504007ebaSmrg	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
347604007ebaSmrg	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
347704007ebaSmrg	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
347804007ebaSmrg	  *-*-hpux*)
347904007ebaSmrg	    pic_flag_for_symtable=" $pic_flag"  ;;
348004007ebaSmrg	  *)
348104007ebaSmrg	    if test "X$my_pic_p" != Xno; then
348204007ebaSmrg	      pic_flag_for_symtable=" $pic_flag"
348304007ebaSmrg	    fi
348404007ebaSmrg	    ;;
348504007ebaSmrg	  esac
348604007ebaSmrg	  ;;
348704007ebaSmrg	esac
348804007ebaSmrg	symtab_cflags=
348904007ebaSmrg	for arg in $LTCFLAGS; do
349004007ebaSmrg	  case $arg in
349104007ebaSmrg	  -pie | -fpie | -fPIE) ;;
349204007ebaSmrg	  *) func_append symtab_cflags " $arg" ;;
349304007ebaSmrg	  esac
349404007ebaSmrg	done
349504007ebaSmrg
349604007ebaSmrg	# Now compile the dynamic symbol file.
349704007ebaSmrg	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
349804007ebaSmrg
349904007ebaSmrg	# Clean up the generated files.
350004007ebaSmrg	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
350104007ebaSmrg
350204007ebaSmrg	# Transform the symbol file into the correct name.
350304007ebaSmrg	symfileobj="$output_objdir/${my_outputname}S.$objext"
350404007ebaSmrg	case $host in
350504007ebaSmrg	*cygwin* | *mingw* | *cegcc* )
350604007ebaSmrg	  if test -f "$output_objdir/$my_outputname.def"; then
350704007ebaSmrg	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
350804007ebaSmrg	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
350904007ebaSmrg	  else
351004007ebaSmrg	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
351104007ebaSmrg	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
351204007ebaSmrg	  fi
351304007ebaSmrg	  ;;
351404007ebaSmrg	*)
351504007ebaSmrg	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
351604007ebaSmrg	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
351704007ebaSmrg	  ;;
351804007ebaSmrg	esac
351904007ebaSmrg	;;
352004007ebaSmrg      *)
352104007ebaSmrg	func_fatal_error "unknown suffix for \`$my_dlsyms'"
352204007ebaSmrg	;;
352304007ebaSmrg      esac
352404007ebaSmrg    else
352504007ebaSmrg      # We keep going just in case the user didn't refer to
352604007ebaSmrg      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
352704007ebaSmrg      # really was required.
352804007ebaSmrg
352904007ebaSmrg      # Nullify the symbol file.
353004007ebaSmrg      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
353104007ebaSmrg      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
353204007ebaSmrg    fi
353304007ebaSmrg}
353404007ebaSmrg
353504007ebaSmrg# func_win32_libid arg
353604007ebaSmrg# return the library type of file 'arg'
353704007ebaSmrg#
353804007ebaSmrg# Need a lot of goo to handle *both* DLLs and import libs
353904007ebaSmrg# Has to be a shell function in order to 'eat' the argument
354004007ebaSmrg# that is supplied when $file_magic_command is called.
354104007ebaSmrg# Despite the name, also deal with 64 bit binaries.
354204007ebaSmrgfunc_win32_libid ()
354304007ebaSmrg{
354404007ebaSmrg  $opt_debug
354504007ebaSmrg  win32_libid_type="unknown"
354604007ebaSmrg  win32_fileres=`file -L $1 2>/dev/null`
354704007ebaSmrg  case $win32_fileres in
354804007ebaSmrg  *ar\ archive\ import\ library*) # definitely import
354904007ebaSmrg    win32_libid_type="x86 archive import"
355004007ebaSmrg    ;;
355104007ebaSmrg  *ar\ archive*) # could be an import, or static
355204007ebaSmrg    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
355304007ebaSmrg    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
355404007ebaSmrg       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
355504007ebaSmrg      func_to_tool_file "$1" func_convert_file_msys_to_w32
355604007ebaSmrg      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
355704007ebaSmrg	$SED -n -e '
355804007ebaSmrg	    1,100{
355904007ebaSmrg		/ I /{
356004007ebaSmrg		    s,.*,import,
356104007ebaSmrg		    p
356204007ebaSmrg		    q
356304007ebaSmrg		}
356404007ebaSmrg	    }'`
356504007ebaSmrg      case $win32_nmres in
356604007ebaSmrg      import*)  win32_libid_type="x86 archive import";;
356704007ebaSmrg      *)        win32_libid_type="x86 archive static";;
356804007ebaSmrg      esac
356904007ebaSmrg    fi
357004007ebaSmrg    ;;
357104007ebaSmrg  *DLL*)
357204007ebaSmrg    win32_libid_type="x86 DLL"
357304007ebaSmrg    ;;
357404007ebaSmrg  *executable*) # but shell scripts are "executable" too...
357504007ebaSmrg    case $win32_fileres in
357604007ebaSmrg    *MS\ Windows\ PE\ Intel*)
357704007ebaSmrg      win32_libid_type="x86 DLL"
357804007ebaSmrg      ;;
357904007ebaSmrg    esac
358004007ebaSmrg    ;;
358104007ebaSmrg  esac
358204007ebaSmrg  $ECHO "$win32_libid_type"
358304007ebaSmrg}
358404007ebaSmrg
358504007ebaSmrg# func_cygming_dll_for_implib ARG
358604007ebaSmrg#
358704007ebaSmrg# Platform-specific function to extract the
358804007ebaSmrg# name of the DLL associated with the specified
358904007ebaSmrg# import library ARG.
359004007ebaSmrg# Invoked by eval'ing the libtool variable
359104007ebaSmrg#    $sharedlib_from_linklib_cmd
359204007ebaSmrg# Result is available in the variable
359304007ebaSmrg#    $sharedlib_from_linklib_result
359404007ebaSmrgfunc_cygming_dll_for_implib ()
359504007ebaSmrg{
359604007ebaSmrg  $opt_debug
359704007ebaSmrg  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
359804007ebaSmrg}
359904007ebaSmrg
360004007ebaSmrg# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
360104007ebaSmrg#
360204007ebaSmrg# The is the core of a fallback implementation of a
360304007ebaSmrg# platform-specific function to extract the name of the
360404007ebaSmrg# DLL associated with the specified import library LIBNAME.
360504007ebaSmrg#
360604007ebaSmrg# SECTION_NAME is either .idata$6 or .idata$7, depending
360704007ebaSmrg# on the platform and compiler that created the implib.
360804007ebaSmrg#
360904007ebaSmrg# Echos the name of the DLL associated with the
361004007ebaSmrg# specified import library.
361104007ebaSmrgfunc_cygming_dll_for_implib_fallback_core ()
361204007ebaSmrg{
361304007ebaSmrg  $opt_debug
361404007ebaSmrg  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
361504007ebaSmrg  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
361604007ebaSmrg    $SED '/^Contents of section '"$match_literal"':/{
361704007ebaSmrg      # Place marker at beginning of archive member dllname section
361804007ebaSmrg      s/.*/====MARK====/
361904007ebaSmrg      p
362004007ebaSmrg      d
362104007ebaSmrg    }
362204007ebaSmrg    # These lines can sometimes be longer than 43 characters, but
362304007ebaSmrg    # are always uninteresting
362404007ebaSmrg    /:[	 ]*file format pe[i]\{,1\}-/d
362504007ebaSmrg    /^In archive [^:]*:/d
362604007ebaSmrg    # Ensure marker is printed
362704007ebaSmrg    /^====MARK====/p
362804007ebaSmrg    # Remove all lines with less than 43 characters
362904007ebaSmrg    /^.\{43\}/!d
363004007ebaSmrg    # From remaining lines, remove first 43 characters
363104007ebaSmrg    s/^.\{43\}//' |
363204007ebaSmrg    $SED -n '
363304007ebaSmrg      # Join marker and all lines until next marker into a single line
363404007ebaSmrg      /^====MARK====/ b para
363504007ebaSmrg      H
363604007ebaSmrg      $ b para
363704007ebaSmrg      b
363804007ebaSmrg      :para
363904007ebaSmrg      x
364004007ebaSmrg      s/\n//g
364104007ebaSmrg      # Remove the marker
364204007ebaSmrg      s/^====MARK====//
364304007ebaSmrg      # Remove trailing dots and whitespace
364404007ebaSmrg      s/[\. \t]*$//
364504007ebaSmrg      # Print
364604007ebaSmrg      /./p' |
364704007ebaSmrg    # we now have a list, one entry per line, of the stringified
364804007ebaSmrg    # contents of the appropriate section of all members of the
364904007ebaSmrg    # archive which possess that section. Heuristic: eliminate
365004007ebaSmrg    # all those which have a first or second character that is
365104007ebaSmrg    # a '.' (that is, objdump's representation of an unprintable
365204007ebaSmrg    # character.) This should work for all archives with less than
365304007ebaSmrg    # 0x302f exports -- but will fail for DLLs whose name actually
365404007ebaSmrg    # begins with a literal '.' or a single character followed by
365504007ebaSmrg    # a '.'.
365604007ebaSmrg    #
365704007ebaSmrg    # Of those that remain, print the first one.
365804007ebaSmrg    $SED -e '/^\./d;/^.\./d;q'
365904007ebaSmrg}
366004007ebaSmrg
366104007ebaSmrg# func_cygming_gnu_implib_p ARG
366204007ebaSmrg# This predicate returns with zero status (TRUE) if
366304007ebaSmrg# ARG is a GNU/binutils-style import library. Returns
366404007ebaSmrg# with nonzero status (FALSE) otherwise.
366504007ebaSmrgfunc_cygming_gnu_implib_p ()
366604007ebaSmrg{
366704007ebaSmrg  $opt_debug
366804007ebaSmrg  func_to_tool_file "$1" func_convert_file_msys_to_w32
366904007ebaSmrg  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
367004007ebaSmrg  test -n "$func_cygming_gnu_implib_tmp"
367104007ebaSmrg}
367204007ebaSmrg
367304007ebaSmrg# func_cygming_ms_implib_p ARG
367404007ebaSmrg# This predicate returns with zero status (TRUE) if
367504007ebaSmrg# ARG is an MS-style import library. Returns
367604007ebaSmrg# with nonzero status (FALSE) otherwise.
367704007ebaSmrgfunc_cygming_ms_implib_p ()
367804007ebaSmrg{
367904007ebaSmrg  $opt_debug
368004007ebaSmrg  func_to_tool_file "$1" func_convert_file_msys_to_w32
368104007ebaSmrg  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
368204007ebaSmrg  test -n "$func_cygming_ms_implib_tmp"
368304007ebaSmrg}
368404007ebaSmrg
368504007ebaSmrg# func_cygming_dll_for_implib_fallback ARG
368604007ebaSmrg# Platform-specific function to extract the
368704007ebaSmrg# name of the DLL associated with the specified
368804007ebaSmrg# import library ARG.
368904007ebaSmrg#
369004007ebaSmrg# This fallback implementation is for use when $DLLTOOL
369104007ebaSmrg# does not support the --identify-strict option.
369204007ebaSmrg# Invoked by eval'ing the libtool variable
369304007ebaSmrg#    $sharedlib_from_linklib_cmd
369404007ebaSmrg# Result is available in the variable
369504007ebaSmrg#    $sharedlib_from_linklib_result
369604007ebaSmrgfunc_cygming_dll_for_implib_fallback ()
369704007ebaSmrg{
369804007ebaSmrg  $opt_debug
369904007ebaSmrg  if func_cygming_gnu_implib_p "$1" ; then
370004007ebaSmrg    # binutils import library
370104007ebaSmrg    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
370204007ebaSmrg  elif func_cygming_ms_implib_p "$1" ; then
370304007ebaSmrg    # ms-generated import library
370404007ebaSmrg    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
370504007ebaSmrg  else
370604007ebaSmrg    # unknown
370704007ebaSmrg    sharedlib_from_linklib_result=""
370804007ebaSmrg  fi
370904007ebaSmrg}
371004007ebaSmrg
371104007ebaSmrg
371204007ebaSmrg# func_extract_an_archive dir oldlib
371304007ebaSmrgfunc_extract_an_archive ()
371404007ebaSmrg{
371504007ebaSmrg    $opt_debug
371604007ebaSmrg    f_ex_an_ar_dir="$1"; shift
371704007ebaSmrg    f_ex_an_ar_oldlib="$1"
371804007ebaSmrg    if test "$lock_old_archive_extraction" = yes; then
371904007ebaSmrg      lockfile=$f_ex_an_ar_oldlib.lock
372004007ebaSmrg      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
372104007ebaSmrg	func_echo "Waiting for $lockfile to be removed"
372204007ebaSmrg	sleep 2
372304007ebaSmrg      done
372404007ebaSmrg    fi
372504007ebaSmrg    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
372604007ebaSmrg		   'stat=$?; rm -f "$lockfile"; exit $stat'
372704007ebaSmrg    if test "$lock_old_archive_extraction" = yes; then
372804007ebaSmrg      $opt_dry_run || rm -f "$lockfile"
372904007ebaSmrg    fi
373004007ebaSmrg    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
373104007ebaSmrg     :
373204007ebaSmrg    else
373304007ebaSmrg      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
373404007ebaSmrg    fi
373504007ebaSmrg}
373604007ebaSmrg
373704007ebaSmrg
373804007ebaSmrg# func_extract_archives gentop oldlib ...
373904007ebaSmrgfunc_extract_archives ()
374004007ebaSmrg{
374104007ebaSmrg    $opt_debug
374204007ebaSmrg    my_gentop="$1"; shift
374304007ebaSmrg    my_oldlibs=${1+"$@"}
374404007ebaSmrg    my_oldobjs=""
374504007ebaSmrg    my_xlib=""
374604007ebaSmrg    my_xabs=""
374704007ebaSmrg    my_xdir=""
374804007ebaSmrg
374904007ebaSmrg    for my_xlib in $my_oldlibs; do
375004007ebaSmrg      # Extract the objects.
375104007ebaSmrg      case $my_xlib in
375204007ebaSmrg	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
375304007ebaSmrg	*) my_xabs=`pwd`"/$my_xlib" ;;
375404007ebaSmrg      esac
375504007ebaSmrg      func_basename "$my_xlib"
375604007ebaSmrg      my_xlib="$func_basename_result"
375704007ebaSmrg      my_xlib_u=$my_xlib
375804007ebaSmrg      while :; do
375904007ebaSmrg        case " $extracted_archives " in
376004007ebaSmrg	*" $my_xlib_u "*)
376104007ebaSmrg	  func_arith $extracted_serial + 1
376204007ebaSmrg	  extracted_serial=$func_arith_result
376304007ebaSmrg	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
376404007ebaSmrg	*) break ;;
376504007ebaSmrg	esac
376604007ebaSmrg      done
376704007ebaSmrg      extracted_archives="$extracted_archives $my_xlib_u"
376804007ebaSmrg      my_xdir="$my_gentop/$my_xlib_u"
376904007ebaSmrg
377004007ebaSmrg      func_mkdir_p "$my_xdir"
377104007ebaSmrg
377204007ebaSmrg      case $host in
377304007ebaSmrg      *-darwin*)
377404007ebaSmrg	func_verbose "Extracting $my_xabs"
377504007ebaSmrg	# Do not bother doing anything if just a dry run
377604007ebaSmrg	$opt_dry_run || {
377704007ebaSmrg	  darwin_orig_dir=`pwd`
377804007ebaSmrg	  cd $my_xdir || exit $?
377904007ebaSmrg	  darwin_archive=$my_xabs
378004007ebaSmrg	  darwin_curdir=`pwd`
378104007ebaSmrg	  darwin_base_archive=`basename "$darwin_archive"`
378204007ebaSmrg	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
378304007ebaSmrg	  if test -n "$darwin_arches"; then
378404007ebaSmrg	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
378504007ebaSmrg	    darwin_arch=
378604007ebaSmrg	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
378704007ebaSmrg	    for darwin_arch in  $darwin_arches ; do
378804007ebaSmrg	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
378904007ebaSmrg	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
379004007ebaSmrg	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
379104007ebaSmrg	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
379204007ebaSmrg	      cd "$darwin_curdir"
379304007ebaSmrg	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
379404007ebaSmrg	    done # $darwin_arches
379504007ebaSmrg            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
379604007ebaSmrg	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
379704007ebaSmrg	    darwin_file=
379804007ebaSmrg	    darwin_files=
379904007ebaSmrg	    for darwin_file in $darwin_filelist; do
380004007ebaSmrg	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
380104007ebaSmrg	      $LIPO -create -output "$darwin_file" $darwin_files
380204007ebaSmrg	    done # $darwin_filelist
380304007ebaSmrg	    $RM -rf unfat-$$
380404007ebaSmrg	    cd "$darwin_orig_dir"
380504007ebaSmrg	  else
380604007ebaSmrg	    cd $darwin_orig_dir
380704007ebaSmrg	    func_extract_an_archive "$my_xdir" "$my_xabs"
380804007ebaSmrg	  fi # $darwin_arches
380904007ebaSmrg	} # !$opt_dry_run
381004007ebaSmrg	;;
381104007ebaSmrg      *)
381204007ebaSmrg        func_extract_an_archive "$my_xdir" "$my_xabs"
381304007ebaSmrg	;;
381404007ebaSmrg      esac
381504007ebaSmrg      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
381604007ebaSmrg    done
381704007ebaSmrg
381804007ebaSmrg    func_extract_archives_result="$my_oldobjs"
381904007ebaSmrg}
382004007ebaSmrg
382104007ebaSmrg
382204007ebaSmrg# func_emit_wrapper [arg=no]
382304007ebaSmrg#
382404007ebaSmrg# Emit a libtool wrapper script on stdout.
382504007ebaSmrg# Don't directly open a file because we may want to
382604007ebaSmrg# incorporate the script contents within a cygwin/mingw
382704007ebaSmrg# wrapper executable.  Must ONLY be called from within
382804007ebaSmrg# func_mode_link because it depends on a number of variables
382904007ebaSmrg# set therein.
383004007ebaSmrg#
383104007ebaSmrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
383204007ebaSmrg# variable will take.  If 'yes', then the emitted script
383304007ebaSmrg# will assume that the directory in which it is stored is
383404007ebaSmrg# the $objdir directory.  This is a cygwin/mingw-specific
383504007ebaSmrg# behavior.
383604007ebaSmrgfunc_emit_wrapper ()
383704007ebaSmrg{
383804007ebaSmrg	func_emit_wrapper_arg1=${1-no}
383904007ebaSmrg
384004007ebaSmrg	$ECHO "\
384104007ebaSmrg#! $SHELL
384204007ebaSmrg
384304007ebaSmrg# $output - temporary wrapper script for $objdir/$outputname
384404007ebaSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
384504007ebaSmrg#
384604007ebaSmrg# The $output program cannot be directly executed until all the libtool
384704007ebaSmrg# libraries that it depends on are installed.
384804007ebaSmrg#
384904007ebaSmrg# This wrapper script should never be moved out of the build directory.
385004007ebaSmrg# If it is, it will not operate correctly.
385104007ebaSmrg
385204007ebaSmrg# Sed substitution that helps us do robust quoting.  It backslashifies
385304007ebaSmrg# metacharacters that are still active within double-quoted strings.
385404007ebaSmrgsed_quote_subst='$sed_quote_subst'
385504007ebaSmrg
385604007ebaSmrg# Be Bourne compatible
385704007ebaSmrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
385804007ebaSmrg  emulate sh
385904007ebaSmrg  NULLCMD=:
386004007ebaSmrg  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
386104007ebaSmrg  # is contrary to our usage.  Disable this feature.
386204007ebaSmrg  alias -g '\${1+\"\$@\"}'='\"\$@\"'
386304007ebaSmrg  setopt NO_GLOB_SUBST
386404007ebaSmrgelse
386504007ebaSmrg  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
386604007ebaSmrgfi
386704007ebaSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
386804007ebaSmrgDUALCASE=1; export DUALCASE # for MKS sh
386904007ebaSmrg
387004007ebaSmrg# The HP-UX ksh and POSIX shell print the target directory to stdout
387104007ebaSmrg# if CDPATH is set.
387204007ebaSmrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
387304007ebaSmrg
387404007ebaSmrgrelink_command=\"$relink_command\"
387504007ebaSmrg
387604007ebaSmrg# This environment variable determines our operation mode.
387704007ebaSmrgif test \"\$libtool_install_magic\" = \"$magic\"; then
387804007ebaSmrg  # install mode needs the following variables:
387904007ebaSmrg  generated_by_libtool_version='$macro_version'
388004007ebaSmrg  notinst_deplibs='$notinst_deplibs'
388104007ebaSmrgelse
388204007ebaSmrg  # When we are sourced in execute mode, \$file and \$ECHO are already set.
388304007ebaSmrg  if test \"\$libtool_execute_magic\" != \"$magic\"; then
388404007ebaSmrg    file=\"\$0\""
388504007ebaSmrg
388604007ebaSmrg    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
388704007ebaSmrg    $ECHO "\
388804007ebaSmrg
388904007ebaSmrg# A function that is used when there is no print builtin or printf.
389004007ebaSmrgfunc_fallback_echo ()
389104007ebaSmrg{
389204007ebaSmrg  eval 'cat <<_LTECHO_EOF
389304007ebaSmrg\$1
389404007ebaSmrg_LTECHO_EOF'
389504007ebaSmrg}
389604007ebaSmrg    ECHO=\"$qECHO\"
389704007ebaSmrg  fi
389804007ebaSmrg
389904007ebaSmrg# Very basic option parsing. These options are (a) specific to
390004007ebaSmrg# the libtool wrapper, (b) are identical between the wrapper
390104007ebaSmrg# /script/ and the wrapper /executable/ which is used only on
390204007ebaSmrg# windows platforms, and (c) all begin with the string "--lt-"
390304007ebaSmrg# (application programs are unlikely to have options which match
390404007ebaSmrg# this pattern).
390504007ebaSmrg#
390604007ebaSmrg# There are only two supported options: --lt-debug and
390704007ebaSmrg# --lt-dump-script. There is, deliberately, no --lt-help.
390804007ebaSmrg#
390904007ebaSmrg# The first argument to this parsing function should be the
391004007ebaSmrg# script's $0 value, followed by "$@".
391104007ebaSmrglt_option_debug=
391204007ebaSmrgfunc_parse_lt_options ()
391304007ebaSmrg{
391404007ebaSmrg  lt_script_arg0=\$0
391504007ebaSmrg  shift
391604007ebaSmrg  for lt_opt
391704007ebaSmrg  do
391804007ebaSmrg    case \"\$lt_opt\" in
391904007ebaSmrg    --lt-debug) lt_option_debug=1 ;;
392004007ebaSmrg    --lt-dump-script)
392104007ebaSmrg        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
392204007ebaSmrg        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
392304007ebaSmrg        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
392404007ebaSmrg        cat \"\$lt_dump_D/\$lt_dump_F\"
392504007ebaSmrg        exit 0
392604007ebaSmrg      ;;
392704007ebaSmrg    --lt-*)
392804007ebaSmrg        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
392904007ebaSmrg        exit 1
393004007ebaSmrg      ;;
393104007ebaSmrg    esac
393204007ebaSmrg  done
393304007ebaSmrg
393404007ebaSmrg  # Print the debug banner immediately:
393504007ebaSmrg  if test -n \"\$lt_option_debug\"; then
393604007ebaSmrg    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
393704007ebaSmrg  fi
393804007ebaSmrg}
393904007ebaSmrg
394004007ebaSmrg# Used when --lt-debug. Prints its arguments to stdout
394104007ebaSmrg# (redirection is the responsibility of the caller)
394204007ebaSmrgfunc_lt_dump_args ()
394304007ebaSmrg{
394404007ebaSmrg  lt_dump_args_N=1;
394504007ebaSmrg  for lt_arg
394604007ebaSmrg  do
394704007ebaSmrg    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
394804007ebaSmrg    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
394904007ebaSmrg  done
395004007ebaSmrg}
395104007ebaSmrg
395204007ebaSmrg# Core function for launching the target application
395304007ebaSmrgfunc_exec_program_core ()
395404007ebaSmrg{
395504007ebaSmrg"
395604007ebaSmrg  case $host in
395704007ebaSmrg  # Backslashes separate directories on plain windows
395804007ebaSmrg  *-*-mingw | *-*-os2* | *-cegcc*)
395904007ebaSmrg    $ECHO "\
396004007ebaSmrg      if test -n \"\$lt_option_debug\"; then
396104007ebaSmrg        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
396204007ebaSmrg        func_lt_dump_args \${1+\"\$@\"} 1>&2
396304007ebaSmrg      fi
396404007ebaSmrg      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
396504007ebaSmrg"
396604007ebaSmrg    ;;
396704007ebaSmrg
396804007ebaSmrg  *)
396904007ebaSmrg    $ECHO "\
397004007ebaSmrg      if test -n \"\$lt_option_debug\"; then
397104007ebaSmrg        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
397204007ebaSmrg        func_lt_dump_args \${1+\"\$@\"} 1>&2
397304007ebaSmrg      fi
397404007ebaSmrg      exec \"\$progdir/\$program\" \${1+\"\$@\"}
397504007ebaSmrg"
397604007ebaSmrg    ;;
397704007ebaSmrg  esac
397804007ebaSmrg  $ECHO "\
397904007ebaSmrg      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
398004007ebaSmrg      exit 1
398104007ebaSmrg}
398204007ebaSmrg
398304007ebaSmrg# A function to encapsulate launching the target application
398404007ebaSmrg# Strips options in the --lt-* namespace from \$@ and
398504007ebaSmrg# launches target application with the remaining arguments.
398604007ebaSmrgfunc_exec_program ()
398704007ebaSmrg{
398804007ebaSmrg  case \" \$* \" in
398904007ebaSmrg  *\\ --lt-*)
399004007ebaSmrg    for lt_wr_arg
399104007ebaSmrg    do
399204007ebaSmrg      case \$lt_wr_arg in
399304007ebaSmrg      --lt-*) ;;
399404007ebaSmrg      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
399504007ebaSmrg      esac
399604007ebaSmrg      shift
399704007ebaSmrg    done ;;
399804007ebaSmrg  esac
399904007ebaSmrg  func_exec_program_core \${1+\"\$@\"}
400004007ebaSmrg}
400104007ebaSmrg
400204007ebaSmrg  # Parse options
400304007ebaSmrg  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
400404007ebaSmrg
400504007ebaSmrg  # Find the directory that this script lives in.
400604007ebaSmrg  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
400704007ebaSmrg  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
400804007ebaSmrg
400904007ebaSmrg  # Follow symbolic links until we get to the real thisdir.
401004007ebaSmrg  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
401104007ebaSmrg  while test -n \"\$file\"; do
401204007ebaSmrg    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
401304007ebaSmrg
401404007ebaSmrg    # If there was a directory component, then change thisdir.
401504007ebaSmrg    if test \"x\$destdir\" != \"x\$file\"; then
401604007ebaSmrg      case \"\$destdir\" in
401704007ebaSmrg      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
401804007ebaSmrg      *) thisdir=\"\$thisdir/\$destdir\" ;;
401904007ebaSmrg      esac
402004007ebaSmrg    fi
402104007ebaSmrg
402204007ebaSmrg    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
402304007ebaSmrg    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
402404007ebaSmrg  done
402504007ebaSmrg
402604007ebaSmrg  # Usually 'no', except on cygwin/mingw when embedded into
402704007ebaSmrg  # the cwrapper.
402804007ebaSmrg  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
402904007ebaSmrg  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
403004007ebaSmrg    # special case for '.'
403104007ebaSmrg    if test \"\$thisdir\" = \".\"; then
403204007ebaSmrg      thisdir=\`pwd\`
403304007ebaSmrg    fi
403404007ebaSmrg    # remove .libs from thisdir
403504007ebaSmrg    case \"\$thisdir\" in
403604007ebaSmrg    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
403704007ebaSmrg    $objdir )   thisdir=. ;;
403804007ebaSmrg    esac
403904007ebaSmrg  fi
404004007ebaSmrg
404104007ebaSmrg  # Try to get the absolute directory name.
404204007ebaSmrg  absdir=\`cd \"\$thisdir\" && pwd\`
404304007ebaSmrg  test -n \"\$absdir\" && thisdir=\"\$absdir\"
404404007ebaSmrg"
404504007ebaSmrg
404604007ebaSmrg	if test "$fast_install" = yes; then
404704007ebaSmrg	  $ECHO "\
404804007ebaSmrg  program=lt-'$outputname'$exeext
404904007ebaSmrg  progdir=\"\$thisdir/$objdir\"
405004007ebaSmrg
405104007ebaSmrg  if test ! -f \"\$progdir/\$program\" ||
405204007ebaSmrg     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
405304007ebaSmrg       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
405404007ebaSmrg
405504007ebaSmrg    file=\"\$\$-\$program\"
405604007ebaSmrg
405704007ebaSmrg    if test ! -d \"\$progdir\"; then
405804007ebaSmrg      $MKDIR \"\$progdir\"
405904007ebaSmrg    else
406004007ebaSmrg      $RM \"\$progdir/\$file\"
406104007ebaSmrg    fi"
406204007ebaSmrg
406304007ebaSmrg	  $ECHO "\
406404007ebaSmrg
406504007ebaSmrg    # relink executable if necessary
406604007ebaSmrg    if test -n \"\$relink_command\"; then
406704007ebaSmrg      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
406804007ebaSmrg      else
406904007ebaSmrg	$ECHO \"\$relink_command_output\" >&2
407004007ebaSmrg	$RM \"\$progdir/\$file\"
407104007ebaSmrg	exit 1
407204007ebaSmrg      fi
407304007ebaSmrg    fi
407404007ebaSmrg
407504007ebaSmrg    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
407604007ebaSmrg    { $RM \"\$progdir/\$program\";
407704007ebaSmrg      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
407804007ebaSmrg    $RM \"\$progdir/\$file\"
407904007ebaSmrg  fi"
408004007ebaSmrg	else
408104007ebaSmrg	  $ECHO "\
408204007ebaSmrg  program='$outputname'
408304007ebaSmrg  progdir=\"\$thisdir/$objdir\"
408404007ebaSmrg"
408504007ebaSmrg	fi
408604007ebaSmrg
408704007ebaSmrg	$ECHO "\
408804007ebaSmrg
408904007ebaSmrg  if test -f \"\$progdir/\$program\"; then"
409004007ebaSmrg
409104007ebaSmrg	# fixup the dll searchpath if we need to.
409204007ebaSmrg	#
409304007ebaSmrg	# Fix the DLL searchpath if we need to.  Do this before prepending
409404007ebaSmrg	# to shlibpath, because on Windows, both are PATH and uninstalled
409504007ebaSmrg	# libraries must come first.
409604007ebaSmrg	if test -n "$dllsearchpath"; then
409704007ebaSmrg	  $ECHO "\
409804007ebaSmrg    # Add the dll search path components to the executable PATH
409904007ebaSmrg    PATH=$dllsearchpath:\$PATH
410004007ebaSmrg"
410104007ebaSmrg	fi
410204007ebaSmrg
410304007ebaSmrg	# Export our shlibpath_var if we have one.
410404007ebaSmrg	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
410504007ebaSmrg	  $ECHO "\
410604007ebaSmrg    # Add our own library path to $shlibpath_var
410704007ebaSmrg    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
410804007ebaSmrg
410904007ebaSmrg    # Some systems cannot cope with colon-terminated $shlibpath_var
411004007ebaSmrg    # The second colon is a workaround for a bug in BeOS R4 sed
411104007ebaSmrg    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
411204007ebaSmrg
411304007ebaSmrg    export $shlibpath_var
411404007ebaSmrg"
411504007ebaSmrg	fi
411604007ebaSmrg
411704007ebaSmrg	$ECHO "\
411804007ebaSmrg    if test \"\$libtool_execute_magic\" != \"$magic\"; then
411904007ebaSmrg      # Run the actual program with our arguments.
412004007ebaSmrg      func_exec_program \${1+\"\$@\"}
412104007ebaSmrg    fi
412204007ebaSmrg  else
412304007ebaSmrg    # The program doesn't exist.
412404007ebaSmrg    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
412504007ebaSmrg    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
412604007ebaSmrg    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
412704007ebaSmrg    exit 1
412804007ebaSmrg  fi
412904007ebaSmrgfi\
413004007ebaSmrg"
413104007ebaSmrg}
413204007ebaSmrg
413304007ebaSmrg
413404007ebaSmrg# func_emit_cwrapperexe_src
413504007ebaSmrg# emit the source code for a wrapper executable on stdout
413604007ebaSmrg# Must ONLY be called from within func_mode_link because
413704007ebaSmrg# it depends on a number of variable set therein.
413804007ebaSmrgfunc_emit_cwrapperexe_src ()
413904007ebaSmrg{
414004007ebaSmrg	cat <<EOF
414104007ebaSmrg
414204007ebaSmrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
414304007ebaSmrg   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
414404007ebaSmrg
414504007ebaSmrg   The $output program cannot be directly executed until all the libtool
414604007ebaSmrg   libraries that it depends on are installed.
414704007ebaSmrg
414804007ebaSmrg   This wrapper executable should never be moved out of the build directory.
414904007ebaSmrg   If it is, it will not operate correctly.
415004007ebaSmrg*/
415104007ebaSmrgEOF
415204007ebaSmrg	    cat <<"EOF"
415304007ebaSmrg#ifdef _MSC_VER
415404007ebaSmrg# define _CRT_SECURE_NO_DEPRECATE 1
415504007ebaSmrg#endif
415604007ebaSmrg#include <stdio.h>
415704007ebaSmrg#include <stdlib.h>
415804007ebaSmrg#ifdef _MSC_VER
415904007ebaSmrg# include <direct.h>
416004007ebaSmrg# include <process.h>
416104007ebaSmrg# include <io.h>
416204007ebaSmrg#else
416304007ebaSmrg# include <unistd.h>
416404007ebaSmrg# include <stdint.h>
416504007ebaSmrg# ifdef __CYGWIN__
416604007ebaSmrg#  include <io.h>
416704007ebaSmrg# endif
416804007ebaSmrg#endif
416904007ebaSmrg#include <malloc.h>
417004007ebaSmrg#include <stdarg.h>
417104007ebaSmrg#include <assert.h>
417204007ebaSmrg#include <string.h>
417304007ebaSmrg#include <ctype.h>
417404007ebaSmrg#include <errno.h>
417504007ebaSmrg#include <fcntl.h>
417604007ebaSmrg#include <sys/stat.h>
417704007ebaSmrg
417804007ebaSmrg/* declarations of non-ANSI functions */
417904007ebaSmrg#if defined(__MINGW32__)
418004007ebaSmrg# ifdef __STRICT_ANSI__
418104007ebaSmrgint _putenv (const char *);
418204007ebaSmrg# endif
418304007ebaSmrg#elif defined(__CYGWIN__)
418404007ebaSmrg# ifdef __STRICT_ANSI__
418504007ebaSmrgchar *realpath (const char *, char *);
418604007ebaSmrgint putenv (char *);
418704007ebaSmrgint setenv (const char *, const char *, int);
418804007ebaSmrg# endif
418904007ebaSmrg/* #elif defined (other platforms) ... */
419004007ebaSmrg#endif
419104007ebaSmrg
419204007ebaSmrg/* portability defines, excluding path handling macros */
419304007ebaSmrg#if defined(_MSC_VER)
419404007ebaSmrg# define setmode _setmode
419504007ebaSmrg# define stat    _stat
419604007ebaSmrg# define chmod   _chmod
419704007ebaSmrg# define getcwd  _getcwd
419804007ebaSmrg# define putenv  _putenv
419904007ebaSmrg# define S_IXUSR _S_IEXEC
420004007ebaSmrg# ifndef _INTPTR_T_DEFINED
420104007ebaSmrg#  define _INTPTR_T_DEFINED
420204007ebaSmrg#  define intptr_t int
420304007ebaSmrg# endif
420404007ebaSmrg#elif defined(__MINGW32__)
420504007ebaSmrg# define setmode _setmode
420604007ebaSmrg# define stat    _stat
420704007ebaSmrg# define chmod   _chmod
420804007ebaSmrg# define getcwd  _getcwd
420904007ebaSmrg# define putenv  _putenv
421004007ebaSmrg#elif defined(__CYGWIN__)
421104007ebaSmrg# define HAVE_SETENV
421204007ebaSmrg# define FOPEN_WB "wb"
421304007ebaSmrg/* #elif defined (other platforms) ... */
421404007ebaSmrg#endif
421504007ebaSmrg
421604007ebaSmrg#if defined(PATH_MAX)
421704007ebaSmrg# define LT_PATHMAX PATH_MAX
421804007ebaSmrg#elif defined(MAXPATHLEN)
421904007ebaSmrg# define LT_PATHMAX MAXPATHLEN
422004007ebaSmrg#else
422104007ebaSmrg# define LT_PATHMAX 1024
422204007ebaSmrg#endif
422304007ebaSmrg
422404007ebaSmrg#ifndef S_IXOTH
422504007ebaSmrg# define S_IXOTH 0
422604007ebaSmrg#endif
422704007ebaSmrg#ifndef S_IXGRP
422804007ebaSmrg# define S_IXGRP 0
422904007ebaSmrg#endif
423004007ebaSmrg
423104007ebaSmrg/* path handling portability macros */
423204007ebaSmrg#ifndef DIR_SEPARATOR
423304007ebaSmrg# define DIR_SEPARATOR '/'
423404007ebaSmrg# define PATH_SEPARATOR ':'
423504007ebaSmrg#endif
423604007ebaSmrg
423704007ebaSmrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
423804007ebaSmrg  defined (__OS2__)
423904007ebaSmrg# define HAVE_DOS_BASED_FILE_SYSTEM
424004007ebaSmrg# define FOPEN_WB "wb"
424104007ebaSmrg# ifndef DIR_SEPARATOR_2
424204007ebaSmrg#  define DIR_SEPARATOR_2 '\\'
424304007ebaSmrg# endif
424404007ebaSmrg# ifndef PATH_SEPARATOR_2
424504007ebaSmrg#  define PATH_SEPARATOR_2 ';'
424604007ebaSmrg# endif
424704007ebaSmrg#endif
424804007ebaSmrg
424904007ebaSmrg#ifndef DIR_SEPARATOR_2
425004007ebaSmrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
425104007ebaSmrg#else /* DIR_SEPARATOR_2 */
425204007ebaSmrg# define IS_DIR_SEPARATOR(ch) \
425304007ebaSmrg	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
425404007ebaSmrg#endif /* DIR_SEPARATOR_2 */
425504007ebaSmrg
425604007ebaSmrg#ifndef PATH_SEPARATOR_2
425704007ebaSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
425804007ebaSmrg#else /* PATH_SEPARATOR_2 */
425904007ebaSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
426004007ebaSmrg#endif /* PATH_SEPARATOR_2 */
426104007ebaSmrg
426204007ebaSmrg#ifndef FOPEN_WB
426304007ebaSmrg# define FOPEN_WB "w"
426404007ebaSmrg#endif
426504007ebaSmrg#ifndef _O_BINARY
426604007ebaSmrg# define _O_BINARY 0
426704007ebaSmrg#endif
426804007ebaSmrg
426904007ebaSmrg#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
427004007ebaSmrg#define XFREE(stale) do { \
427104007ebaSmrg  if (stale) { free ((void *) stale); stale = 0; } \
427204007ebaSmrg} while (0)
427304007ebaSmrg
427404007ebaSmrg#if defined(LT_DEBUGWRAPPER)
427504007ebaSmrgstatic int lt_debug = 1;
427604007ebaSmrg#else
427704007ebaSmrgstatic int lt_debug = 0;
427804007ebaSmrg#endif
427904007ebaSmrg
428004007ebaSmrgconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
428104007ebaSmrg
428204007ebaSmrgvoid *xmalloc (size_t num);
428304007ebaSmrgchar *xstrdup (const char *string);
428404007ebaSmrgconst char *base_name (const char *name);
428504007ebaSmrgchar *find_executable (const char *wrapper);
428604007ebaSmrgchar *chase_symlinks (const char *pathspec);
428704007ebaSmrgint make_executable (const char *path);
428804007ebaSmrgint check_executable (const char *path);
428904007ebaSmrgchar *strendzap (char *str, const char *pat);
429004007ebaSmrgvoid lt_debugprintf (const char *file, int line, const char *fmt, ...);
429104007ebaSmrgvoid lt_fatal (const char *file, int line, const char *message, ...);
429204007ebaSmrgstatic const char *nonnull (const char *s);
429304007ebaSmrgstatic const char *nonempty (const char *s);
429404007ebaSmrgvoid lt_setenv (const char *name, const char *value);
429504007ebaSmrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
429604007ebaSmrgvoid lt_update_exe_path (const char *name, const char *value);
429704007ebaSmrgvoid lt_update_lib_path (const char *name, const char *value);
429804007ebaSmrgchar **prepare_spawn (char **argv);
429904007ebaSmrgvoid lt_dump_script (FILE *f);
430004007ebaSmrgEOF
430104007ebaSmrg
430204007ebaSmrg	    cat <<EOF
430304007ebaSmrgvolatile const char * MAGIC_EXE = "$magic_exe";
430404007ebaSmrgconst char * LIB_PATH_VARNAME = "$shlibpath_var";
430504007ebaSmrgEOF
430604007ebaSmrg
430704007ebaSmrg	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
430804007ebaSmrg              func_to_host_path "$temp_rpath"
430904007ebaSmrg	      cat <<EOF
431004007ebaSmrgconst char * LIB_PATH_VALUE   = "$func_to_host_path_result";
431104007ebaSmrgEOF
431204007ebaSmrg	    else
431304007ebaSmrg	      cat <<"EOF"
431404007ebaSmrgconst char * LIB_PATH_VALUE   = "";
431504007ebaSmrgEOF
431604007ebaSmrg	    fi
431704007ebaSmrg
431804007ebaSmrg	    if test -n "$dllsearchpath"; then
431904007ebaSmrg              func_to_host_path "$dllsearchpath:"
432004007ebaSmrg	      cat <<EOF
432104007ebaSmrgconst char * EXE_PATH_VARNAME = "PATH";
432204007ebaSmrgconst char * EXE_PATH_VALUE   = "$func_to_host_path_result";
432304007ebaSmrgEOF
432404007ebaSmrg	    else
432504007ebaSmrg	      cat <<"EOF"
432604007ebaSmrgconst char * EXE_PATH_VARNAME = "";
432704007ebaSmrgconst char * EXE_PATH_VALUE   = "";
432804007ebaSmrgEOF
432904007ebaSmrg	    fi
433004007ebaSmrg
433104007ebaSmrg	    if test "$fast_install" = yes; then
433204007ebaSmrg	      cat <<EOF
433304007ebaSmrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
433404007ebaSmrgEOF
433504007ebaSmrg	    else
433604007ebaSmrg	      cat <<EOF
433704007ebaSmrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
433804007ebaSmrgEOF
433904007ebaSmrg	    fi
434004007ebaSmrg
434104007ebaSmrg
434204007ebaSmrg	    cat <<"EOF"
434304007ebaSmrg
434404007ebaSmrg#define LTWRAPPER_OPTION_PREFIX         "--lt-"
434504007ebaSmrg
434604007ebaSmrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
434704007ebaSmrgstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
434804007ebaSmrgstatic const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
434904007ebaSmrg
435004007ebaSmrgint
435104007ebaSmrgmain (int argc, char *argv[])
435204007ebaSmrg{
435304007ebaSmrg  char **newargz;
435404007ebaSmrg  int  newargc;
435504007ebaSmrg  char *tmp_pathspec;
435604007ebaSmrg  char *actual_cwrapper_path;
435704007ebaSmrg  char *actual_cwrapper_name;
435804007ebaSmrg  char *target_name;
435904007ebaSmrg  char *lt_argv_zero;
436004007ebaSmrg  intptr_t rval = 127;
436104007ebaSmrg
436204007ebaSmrg  int i;
436304007ebaSmrg
436404007ebaSmrg  program_name = (char *) xstrdup (base_name (argv[0]));
436504007ebaSmrg  newargz = XMALLOC (char *, argc + 1);
436604007ebaSmrg
436704007ebaSmrg  /* very simple arg parsing; don't want to rely on getopt
436804007ebaSmrg   * also, copy all non cwrapper options to newargz, except
436904007ebaSmrg   * argz[0], which is handled differently
437004007ebaSmrg   */
437104007ebaSmrg  newargc=0;
437204007ebaSmrg  for (i = 1; i < argc; i++)
437304007ebaSmrg    {
437404007ebaSmrg      if (strcmp (argv[i], dumpscript_opt) == 0)
437504007ebaSmrg	{
437604007ebaSmrgEOF
437704007ebaSmrg	    case "$host" in
437804007ebaSmrg	      *mingw* | *cygwin* )
437904007ebaSmrg		# make stdout use "unix" line endings
438004007ebaSmrg		echo "          setmode(1,_O_BINARY);"
438104007ebaSmrg		;;
438204007ebaSmrg	      esac
438304007ebaSmrg
438404007ebaSmrg	    cat <<"EOF"
438504007ebaSmrg	  lt_dump_script (stdout);
438604007ebaSmrg	  return 0;
438704007ebaSmrg	}
438804007ebaSmrg      if (strcmp (argv[i], debug_opt) == 0)
438904007ebaSmrg	{
439004007ebaSmrg          lt_debug = 1;
439104007ebaSmrg          continue;
439204007ebaSmrg	}
439304007ebaSmrg      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
439404007ebaSmrg        {
439504007ebaSmrg          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
439604007ebaSmrg             namespace, but it is not one of the ones we know about and
439704007ebaSmrg             have already dealt with, above (inluding dump-script), then
439804007ebaSmrg             report an error. Otherwise, targets might begin to believe
439904007ebaSmrg             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
440004007ebaSmrg             namespace. The first time any user complains about this, we'll
440104007ebaSmrg             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
440204007ebaSmrg             or a configure.ac-settable value.
440304007ebaSmrg           */
440404007ebaSmrg          lt_fatal (__FILE__, __LINE__,
440504007ebaSmrg		    "unrecognized %s option: '%s'",
440604007ebaSmrg                    ltwrapper_option_prefix, argv[i]);
440704007ebaSmrg        }
440804007ebaSmrg      /* otherwise ... */
440904007ebaSmrg      newargz[++newargc] = xstrdup (argv[i]);
441004007ebaSmrg    }
441104007ebaSmrg  newargz[++newargc] = NULL;
441204007ebaSmrg
441304007ebaSmrgEOF
441404007ebaSmrg	    cat <<EOF
441504007ebaSmrg  /* The GNU banner must be the first non-error debug message */
441604007ebaSmrg  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
441704007ebaSmrgEOF
441804007ebaSmrg	    cat <<"EOF"
441904007ebaSmrg  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
442004007ebaSmrg  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
442104007ebaSmrg
442204007ebaSmrg  tmp_pathspec = find_executable (argv[0]);
442304007ebaSmrg  if (tmp_pathspec == NULL)
442404007ebaSmrg    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
442504007ebaSmrg  lt_debugprintf (__FILE__, __LINE__,
442604007ebaSmrg                  "(main) found exe (before symlink chase) at: %s\n",
442704007ebaSmrg		  tmp_pathspec);
442804007ebaSmrg
442904007ebaSmrg  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
443004007ebaSmrg  lt_debugprintf (__FILE__, __LINE__,
443104007ebaSmrg                  "(main) found exe (after symlink chase) at: %s\n",
443204007ebaSmrg		  actual_cwrapper_path);
443304007ebaSmrg  XFREE (tmp_pathspec);
443404007ebaSmrg
443504007ebaSmrg  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
443604007ebaSmrg  strendzap (actual_cwrapper_path, actual_cwrapper_name);
443704007ebaSmrg
443804007ebaSmrg  /* wrapper name transforms */
443904007ebaSmrg  strendzap (actual_cwrapper_name, ".exe");
444004007ebaSmrg  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
444104007ebaSmrg  XFREE (actual_cwrapper_name);
444204007ebaSmrg  actual_cwrapper_name = tmp_pathspec;
444304007ebaSmrg  tmp_pathspec = 0;
444404007ebaSmrg
444504007ebaSmrg  /* target_name transforms -- use actual target program name; might have lt- prefix */
444604007ebaSmrg  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
444704007ebaSmrg  strendzap (target_name, ".exe");
444804007ebaSmrg  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
444904007ebaSmrg  XFREE (target_name);
445004007ebaSmrg  target_name = tmp_pathspec;
445104007ebaSmrg  tmp_pathspec = 0;
445204007ebaSmrg
445304007ebaSmrg  lt_debugprintf (__FILE__, __LINE__,
445404007ebaSmrg		  "(main) libtool target name: %s\n",
445504007ebaSmrg		  target_name);
445604007ebaSmrgEOF
445704007ebaSmrg
445804007ebaSmrg	    cat <<EOF
445904007ebaSmrg  newargz[0] =
446004007ebaSmrg    XMALLOC (char, (strlen (actual_cwrapper_path) +
446104007ebaSmrg		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
446204007ebaSmrg  strcpy (newargz[0], actual_cwrapper_path);
446304007ebaSmrg  strcat (newargz[0], "$objdir");
446404007ebaSmrg  strcat (newargz[0], "/");
446504007ebaSmrgEOF
446604007ebaSmrg
446704007ebaSmrg	    cat <<"EOF"
446804007ebaSmrg  /* stop here, and copy so we don't have to do this twice */
446904007ebaSmrg  tmp_pathspec = xstrdup (newargz[0]);
447004007ebaSmrg
447104007ebaSmrg  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
447204007ebaSmrg  strcat (newargz[0], actual_cwrapper_name);
447304007ebaSmrg
447404007ebaSmrg  /* DO want the lt- prefix here if it exists, so use target_name */
447504007ebaSmrg  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
447604007ebaSmrg  XFREE (tmp_pathspec);
447704007ebaSmrg  tmp_pathspec = NULL;
447804007ebaSmrgEOF
447904007ebaSmrg
448004007ebaSmrg	    case $host_os in
448104007ebaSmrg	      mingw*)
448204007ebaSmrg	    cat <<"EOF"
448304007ebaSmrg  {
448404007ebaSmrg    char* p;
448504007ebaSmrg    while ((p = strchr (newargz[0], '\\')) != NULL)
448604007ebaSmrg      {
448704007ebaSmrg	*p = '/';
448804007ebaSmrg      }
448904007ebaSmrg    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
449004007ebaSmrg      {
449104007ebaSmrg	*p = '/';
449204007ebaSmrg      }
449304007ebaSmrg  }
449404007ebaSmrgEOF
449504007ebaSmrg	    ;;
449604007ebaSmrg	    esac
449704007ebaSmrg
449804007ebaSmrg	    cat <<"EOF"
449904007ebaSmrg  XFREE (target_name);
450004007ebaSmrg  XFREE (actual_cwrapper_path);
450104007ebaSmrg  XFREE (actual_cwrapper_name);
450204007ebaSmrg
450304007ebaSmrg  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
450404007ebaSmrg  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
450504007ebaSmrg  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
450604007ebaSmrg     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
450704007ebaSmrg     because on Windows, both *_VARNAMEs are PATH but uninstalled
450804007ebaSmrg     libraries must come first. */
450904007ebaSmrg  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
451004007ebaSmrg  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
451104007ebaSmrg
451204007ebaSmrg  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
451304007ebaSmrg		  nonnull (lt_argv_zero));
451404007ebaSmrg  for (i = 0; i < newargc; i++)
451504007ebaSmrg    {
451604007ebaSmrg      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
451704007ebaSmrg		      i, nonnull (newargz[i]));
451804007ebaSmrg    }
451904007ebaSmrg
452004007ebaSmrgEOF
452104007ebaSmrg
452204007ebaSmrg	    case $host_os in
452304007ebaSmrg	      mingw*)
452404007ebaSmrg		cat <<"EOF"
452504007ebaSmrg  /* execv doesn't actually work on mingw as expected on unix */
452604007ebaSmrg  newargz = prepare_spawn (newargz);
452704007ebaSmrg  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
452804007ebaSmrg  if (rval == -1)
452904007ebaSmrg    {
453004007ebaSmrg      /* failed to start process */
453104007ebaSmrg      lt_debugprintf (__FILE__, __LINE__,
453204007ebaSmrg		      "(main) failed to launch target \"%s\": %s\n",
453304007ebaSmrg		      lt_argv_zero, nonnull (strerror (errno)));
453404007ebaSmrg      return 127;
453504007ebaSmrg    }
453604007ebaSmrg  return rval;
453704007ebaSmrgEOF
453804007ebaSmrg		;;
453904007ebaSmrg	      *)
454004007ebaSmrg		cat <<"EOF"
454104007ebaSmrg  execv (lt_argv_zero, newargz);
454204007ebaSmrg  return rval; /* =127, but avoids unused variable warning */
454304007ebaSmrgEOF
454404007ebaSmrg		;;
454504007ebaSmrg	    esac
454604007ebaSmrg
454704007ebaSmrg	    cat <<"EOF"
454804007ebaSmrg}
454904007ebaSmrg
455004007ebaSmrgvoid *
455104007ebaSmrgxmalloc (size_t num)
455204007ebaSmrg{
455304007ebaSmrg  void *p = (void *) malloc (num);
455404007ebaSmrg  if (!p)
455504007ebaSmrg    lt_fatal (__FILE__, __LINE__, "memory exhausted");
455604007ebaSmrg
455704007ebaSmrg  return p;
455804007ebaSmrg}
455904007ebaSmrg
456004007ebaSmrgchar *
456104007ebaSmrgxstrdup (const char *string)
456204007ebaSmrg{
456304007ebaSmrg  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
456404007ebaSmrg			  string) : NULL;
456504007ebaSmrg}
456604007ebaSmrg
456704007ebaSmrgconst char *
456804007ebaSmrgbase_name (const char *name)
456904007ebaSmrg{
457004007ebaSmrg  const char *base;
457104007ebaSmrg
457204007ebaSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
457304007ebaSmrg  /* Skip over the disk name in MSDOS pathnames. */
457404007ebaSmrg  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
457504007ebaSmrg    name += 2;
457604007ebaSmrg#endif
457704007ebaSmrg
457804007ebaSmrg  for (base = name; *name; name++)
457904007ebaSmrg    if (IS_DIR_SEPARATOR (*name))
458004007ebaSmrg      base = name + 1;
458104007ebaSmrg  return base;
458204007ebaSmrg}
458304007ebaSmrg
458404007ebaSmrgint
458504007ebaSmrgcheck_executable (const char *path)
458604007ebaSmrg{
458704007ebaSmrg  struct stat st;
458804007ebaSmrg
458904007ebaSmrg  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
459004007ebaSmrg                  nonempty (path));
459104007ebaSmrg  if ((!path) || (!*path))
459204007ebaSmrg    return 0;
459304007ebaSmrg
459404007ebaSmrg  if ((stat (path, &st) >= 0)
459504007ebaSmrg      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
459604007ebaSmrg    return 1;
459704007ebaSmrg  else
459804007ebaSmrg    return 0;
459904007ebaSmrg}
460004007ebaSmrg
460104007ebaSmrgint
460204007ebaSmrgmake_executable (const char *path)
460304007ebaSmrg{
460404007ebaSmrg  int rval = 0;
460504007ebaSmrg  struct stat st;
460604007ebaSmrg
460704007ebaSmrg  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
460804007ebaSmrg                  nonempty (path));
460904007ebaSmrg  if ((!path) || (!*path))
461004007ebaSmrg    return 0;
461104007ebaSmrg
461204007ebaSmrg  if (stat (path, &st) >= 0)
461304007ebaSmrg    {
461404007ebaSmrg      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
461504007ebaSmrg    }
461604007ebaSmrg  return rval;
461704007ebaSmrg}
461804007ebaSmrg
461904007ebaSmrg/* Searches for the full path of the wrapper.  Returns
462004007ebaSmrg   newly allocated full path name if found, NULL otherwise
462104007ebaSmrg   Does not chase symlinks, even on platforms that support them.
462204007ebaSmrg*/
462304007ebaSmrgchar *
462404007ebaSmrgfind_executable (const char *wrapper)
462504007ebaSmrg{
462604007ebaSmrg  int has_slash = 0;
462704007ebaSmrg  const char *p;
462804007ebaSmrg  const char *p_next;
462904007ebaSmrg  /* static buffer for getcwd */
463004007ebaSmrg  char tmp[LT_PATHMAX + 1];
463104007ebaSmrg  int tmp_len;
463204007ebaSmrg  char *concat_name;
463304007ebaSmrg
463404007ebaSmrg  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
463504007ebaSmrg                  nonempty (wrapper));
463604007ebaSmrg
463704007ebaSmrg  if ((wrapper == NULL) || (*wrapper == '\0'))
463804007ebaSmrg    return NULL;
463904007ebaSmrg
464004007ebaSmrg  /* Absolute path? */
464104007ebaSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
464204007ebaSmrg  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
464304007ebaSmrg    {
464404007ebaSmrg      concat_name = xstrdup (wrapper);
464504007ebaSmrg      if (check_executable (concat_name))
464604007ebaSmrg	return concat_name;
464704007ebaSmrg      XFREE (concat_name);
464804007ebaSmrg    }
464904007ebaSmrg  else
465004007ebaSmrg    {
465104007ebaSmrg#endif
465204007ebaSmrg      if (IS_DIR_SEPARATOR (wrapper[0]))
465304007ebaSmrg	{
465404007ebaSmrg	  concat_name = xstrdup (wrapper);
465504007ebaSmrg	  if (check_executable (concat_name))
465604007ebaSmrg	    return concat_name;
465704007ebaSmrg	  XFREE (concat_name);
465804007ebaSmrg	}
465904007ebaSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
466004007ebaSmrg    }
466104007ebaSmrg#endif
466204007ebaSmrg
466304007ebaSmrg  for (p = wrapper; *p; p++)
466404007ebaSmrg    if (*p == '/')
466504007ebaSmrg      {
466604007ebaSmrg	has_slash = 1;
466704007ebaSmrg	break;
466804007ebaSmrg      }
466904007ebaSmrg  if (!has_slash)
467004007ebaSmrg    {
467104007ebaSmrg      /* no slashes; search PATH */
467204007ebaSmrg      const char *path = getenv ("PATH");
467304007ebaSmrg      if (path != NULL)
467404007ebaSmrg	{
467504007ebaSmrg	  for (p = path; *p; p = p_next)
467604007ebaSmrg	    {
467704007ebaSmrg	      const char *q;
467804007ebaSmrg	      size_t p_len;
467904007ebaSmrg	      for (q = p; *q; q++)
468004007ebaSmrg		if (IS_PATH_SEPARATOR (*q))
468104007ebaSmrg		  break;
468204007ebaSmrg	      p_len = q - p;
468304007ebaSmrg	      p_next = (*q == '\0' ? q : q + 1);
468404007ebaSmrg	      if (p_len == 0)
468504007ebaSmrg		{
468604007ebaSmrg		  /* empty path: current directory */
468704007ebaSmrg		  if (getcwd (tmp, LT_PATHMAX) == NULL)
468804007ebaSmrg		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
468904007ebaSmrg                              nonnull (strerror (errno)));
469004007ebaSmrg		  tmp_len = strlen (tmp);
469104007ebaSmrg		  concat_name =
469204007ebaSmrg		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
469304007ebaSmrg		  memcpy (concat_name, tmp, tmp_len);
469404007ebaSmrg		  concat_name[tmp_len] = '/';
469504007ebaSmrg		  strcpy (concat_name + tmp_len + 1, wrapper);
469604007ebaSmrg		}
469704007ebaSmrg	      else
469804007ebaSmrg		{
469904007ebaSmrg		  concat_name =
470004007ebaSmrg		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
470104007ebaSmrg		  memcpy (concat_name, p, p_len);
470204007ebaSmrg		  concat_name[p_len] = '/';
470304007ebaSmrg		  strcpy (concat_name + p_len + 1, wrapper);
470404007ebaSmrg		}
470504007ebaSmrg	      if (check_executable (concat_name))
470604007ebaSmrg		return concat_name;
470704007ebaSmrg	      XFREE (concat_name);
470804007ebaSmrg	    }
470904007ebaSmrg	}
471004007ebaSmrg      /* not found in PATH; assume curdir */
471104007ebaSmrg    }
471204007ebaSmrg  /* Relative path | not found in path: prepend cwd */
471304007ebaSmrg  if (getcwd (tmp, LT_PATHMAX) == NULL)
471404007ebaSmrg    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
471504007ebaSmrg              nonnull (strerror (errno)));
471604007ebaSmrg  tmp_len = strlen (tmp);
471704007ebaSmrg  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
471804007ebaSmrg  memcpy (concat_name, tmp, tmp_len);
471904007ebaSmrg  concat_name[tmp_len] = '/';
472004007ebaSmrg  strcpy (concat_name + tmp_len + 1, wrapper);
472104007ebaSmrg
472204007ebaSmrg  if (check_executable (concat_name))
472304007ebaSmrg    return concat_name;
472404007ebaSmrg  XFREE (concat_name);
472504007ebaSmrg  return NULL;
472604007ebaSmrg}
472704007ebaSmrg
472804007ebaSmrgchar *
472904007ebaSmrgchase_symlinks (const char *pathspec)
473004007ebaSmrg{
473104007ebaSmrg#ifndef S_ISLNK
473204007ebaSmrg  return xstrdup (pathspec);
473304007ebaSmrg#else
473404007ebaSmrg  char buf[LT_PATHMAX];
473504007ebaSmrg  struct stat s;
473604007ebaSmrg  char *tmp_pathspec = xstrdup (pathspec);
473704007ebaSmrg  char *p;
473804007ebaSmrg  int has_symlinks = 0;
473904007ebaSmrg  while (strlen (tmp_pathspec) && !has_symlinks)
474004007ebaSmrg    {
474104007ebaSmrg      lt_debugprintf (__FILE__, __LINE__,
474204007ebaSmrg		      "checking path component for symlinks: %s\n",
474304007ebaSmrg		      tmp_pathspec);
474404007ebaSmrg      if (lstat (tmp_pathspec, &s) == 0)
474504007ebaSmrg	{
474604007ebaSmrg	  if (S_ISLNK (s.st_mode) != 0)
474704007ebaSmrg	    {
474804007ebaSmrg	      has_symlinks = 1;
474904007ebaSmrg	      break;
475004007ebaSmrg	    }
475104007ebaSmrg
475204007ebaSmrg	  /* search backwards for last DIR_SEPARATOR */
475304007ebaSmrg	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
475404007ebaSmrg	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
475504007ebaSmrg	    p--;
475604007ebaSmrg	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
475704007ebaSmrg	    {
475804007ebaSmrg	      /* no more DIR_SEPARATORS left */
475904007ebaSmrg	      break;
476004007ebaSmrg	    }
476104007ebaSmrg	  *p = '\0';
476204007ebaSmrg	}
476304007ebaSmrg      else
476404007ebaSmrg	{
476504007ebaSmrg	  lt_fatal (__FILE__, __LINE__,
476604007ebaSmrg		    "error accessing file \"%s\": %s",
476704007ebaSmrg		    tmp_pathspec, nonnull (strerror (errno)));
476804007ebaSmrg	}
476904007ebaSmrg    }
477004007ebaSmrg  XFREE (tmp_pathspec);
477104007ebaSmrg
477204007ebaSmrg  if (!has_symlinks)
477304007ebaSmrg    {
477404007ebaSmrg      return xstrdup (pathspec);
477504007ebaSmrg    }
477604007ebaSmrg
477704007ebaSmrg  tmp_pathspec = realpath (pathspec, buf);
477804007ebaSmrg  if (tmp_pathspec == 0)
477904007ebaSmrg    {
478004007ebaSmrg      lt_fatal (__FILE__, __LINE__,
478104007ebaSmrg		"could not follow symlinks for %s", pathspec);
478204007ebaSmrg    }
478304007ebaSmrg  return xstrdup (tmp_pathspec);
478404007ebaSmrg#endif
478504007ebaSmrg}
478604007ebaSmrg
478704007ebaSmrgchar *
478804007ebaSmrgstrendzap (char *str, const char *pat)
478904007ebaSmrg{
479004007ebaSmrg  size_t len, patlen;
479104007ebaSmrg
479204007ebaSmrg  assert (str != NULL);
479304007ebaSmrg  assert (pat != NULL);
479404007ebaSmrg
479504007ebaSmrg  len = strlen (str);
479604007ebaSmrg  patlen = strlen (pat);
479704007ebaSmrg
479804007ebaSmrg  if (patlen <= len)
479904007ebaSmrg    {
480004007ebaSmrg      str += len - patlen;
480104007ebaSmrg      if (strcmp (str, pat) == 0)
480204007ebaSmrg	*str = '\0';
480304007ebaSmrg    }
480404007ebaSmrg  return str;
480504007ebaSmrg}
480604007ebaSmrg
480704007ebaSmrgvoid
480804007ebaSmrglt_debugprintf (const char *file, int line, const char *fmt, ...)
480904007ebaSmrg{
481004007ebaSmrg  va_list args;
481104007ebaSmrg  if (lt_debug)
481204007ebaSmrg    {
481304007ebaSmrg      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
481404007ebaSmrg      va_start (args, fmt);
481504007ebaSmrg      (void) vfprintf (stderr, fmt, args);
481604007ebaSmrg      va_end (args);
481704007ebaSmrg    }
481804007ebaSmrg}
481904007ebaSmrg
482004007ebaSmrgstatic void
482104007ebaSmrglt_error_core (int exit_status, const char *file,
482204007ebaSmrg	       int line, const char *mode,
482304007ebaSmrg	       const char *message, va_list ap)
482404007ebaSmrg{
482504007ebaSmrg  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
482604007ebaSmrg  vfprintf (stderr, message, ap);
482704007ebaSmrg  fprintf (stderr, ".\n");
482804007ebaSmrg
482904007ebaSmrg  if (exit_status >= 0)
483004007ebaSmrg    exit (exit_status);
483104007ebaSmrg}
483204007ebaSmrg
483304007ebaSmrgvoid
483404007ebaSmrglt_fatal (const char *file, int line, const char *message, ...)
483504007ebaSmrg{
483604007ebaSmrg  va_list ap;
483704007ebaSmrg  va_start (ap, message);
483804007ebaSmrg  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
483904007ebaSmrg  va_end (ap);
484004007ebaSmrg}
484104007ebaSmrg
484204007ebaSmrgstatic const char *
484304007ebaSmrgnonnull (const char *s)
484404007ebaSmrg{
484504007ebaSmrg  return s ? s : "(null)";
484604007ebaSmrg}
484704007ebaSmrg
484804007ebaSmrgstatic const char *
484904007ebaSmrgnonempty (const char *s)
485004007ebaSmrg{
485104007ebaSmrg  return (s && !*s) ? "(empty)" : nonnull (s);
485204007ebaSmrg}
485304007ebaSmrg
485404007ebaSmrgvoid
485504007ebaSmrglt_setenv (const char *name, const char *value)
485604007ebaSmrg{
485704007ebaSmrg  lt_debugprintf (__FILE__, __LINE__,
485804007ebaSmrg		  "(lt_setenv) setting '%s' to '%s'\n",
485904007ebaSmrg                  nonnull (name), nonnull (value));
486004007ebaSmrg  {
486104007ebaSmrg#ifdef HAVE_SETENV
486204007ebaSmrg    /* always make a copy, for consistency with !HAVE_SETENV */
486304007ebaSmrg    char *str = xstrdup (value);
486404007ebaSmrg    setenv (name, str, 1);
486504007ebaSmrg#else
486604007ebaSmrg    int len = strlen (name) + 1 + strlen (value) + 1;
486704007ebaSmrg    char *str = XMALLOC (char, len);
486804007ebaSmrg    sprintf (str, "%s=%s", name, value);
486904007ebaSmrg    if (putenv (str) != EXIT_SUCCESS)
487004007ebaSmrg      {
487104007ebaSmrg        XFREE (str);
487204007ebaSmrg      }
487304007ebaSmrg#endif
487404007ebaSmrg  }
487504007ebaSmrg}
487604007ebaSmrg
487704007ebaSmrgchar *
487804007ebaSmrglt_extend_str (const char *orig_value, const char *add, int to_end)
487904007ebaSmrg{
488004007ebaSmrg  char *new_value;
488104007ebaSmrg  if (orig_value && *orig_value)
488204007ebaSmrg    {
488304007ebaSmrg      int orig_value_len = strlen (orig_value);
488404007ebaSmrg      int add_len = strlen (add);
488504007ebaSmrg      new_value = XMALLOC (char, add_len + orig_value_len + 1);
488604007ebaSmrg      if (to_end)
488704007ebaSmrg        {
488804007ebaSmrg          strcpy (new_value, orig_value);
488904007ebaSmrg          strcpy (new_value + orig_value_len, add);
489004007ebaSmrg        }
489104007ebaSmrg      else
489204007ebaSmrg        {
489304007ebaSmrg          strcpy (new_value, add);
489404007ebaSmrg          strcpy (new_value + add_len, orig_value);
489504007ebaSmrg        }
489604007ebaSmrg    }
489704007ebaSmrg  else
489804007ebaSmrg    {
489904007ebaSmrg      new_value = xstrdup (add);
490004007ebaSmrg    }
490104007ebaSmrg  return new_value;
490204007ebaSmrg}
490304007ebaSmrg
490404007ebaSmrgvoid
490504007ebaSmrglt_update_exe_path (const char *name, const char *value)
490604007ebaSmrg{
490704007ebaSmrg  lt_debugprintf (__FILE__, __LINE__,
490804007ebaSmrg		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
490904007ebaSmrg                  nonnull (name), nonnull (value));
491004007ebaSmrg
491104007ebaSmrg  if (name && *name && value && *value)
491204007ebaSmrg    {
491304007ebaSmrg      char *new_value = lt_extend_str (getenv (name), value, 0);
491404007ebaSmrg      /* some systems can't cope with a ':'-terminated path #' */
491504007ebaSmrg      int len = strlen (new_value);
491604007ebaSmrg      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
491704007ebaSmrg        {
491804007ebaSmrg          new_value[len-1] = '\0';
491904007ebaSmrg        }
492004007ebaSmrg      lt_setenv (name, new_value);
492104007ebaSmrg      XFREE (new_value);
492204007ebaSmrg    }
492304007ebaSmrg}
492404007ebaSmrg
492504007ebaSmrgvoid
492604007ebaSmrglt_update_lib_path (const char *name, const char *value)
492704007ebaSmrg{
492804007ebaSmrg  lt_debugprintf (__FILE__, __LINE__,
492904007ebaSmrg		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
493004007ebaSmrg                  nonnull (name), nonnull (value));
493104007ebaSmrg
493204007ebaSmrg  if (name && *name && value && *value)
493304007ebaSmrg    {
493404007ebaSmrg      char *new_value = lt_extend_str (getenv (name), value, 0);
493504007ebaSmrg      lt_setenv (name, new_value);
493604007ebaSmrg      XFREE (new_value);
493704007ebaSmrg    }
493804007ebaSmrg}
493904007ebaSmrg
494004007ebaSmrgEOF
494104007ebaSmrg	    case $host_os in
494204007ebaSmrg	      mingw*)
494304007ebaSmrg		cat <<"EOF"
494404007ebaSmrg
494504007ebaSmrg/* Prepares an argument vector before calling spawn().
494604007ebaSmrg   Note that spawn() does not by itself call the command interpreter
494704007ebaSmrg     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
494804007ebaSmrg      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
494904007ebaSmrg         GetVersionEx(&v);
495004007ebaSmrg         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
495104007ebaSmrg      }) ? "cmd.exe" : "command.com").
495204007ebaSmrg   Instead it simply concatenates the arguments, separated by ' ', and calls
495304007ebaSmrg   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
495404007ebaSmrg   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
495504007ebaSmrg   special way:
495604007ebaSmrg   - Space and tab are interpreted as delimiters. They are not treated as
495704007ebaSmrg     delimiters if they are surrounded by double quotes: "...".
495804007ebaSmrg   - Unescaped double quotes are removed from the input. Their only effect is
495904007ebaSmrg     that within double quotes, space and tab are treated like normal
496004007ebaSmrg     characters.
496104007ebaSmrg   - Backslashes not followed by double quotes are not special.
496204007ebaSmrg   - But 2*n+1 backslashes followed by a double quote become
496304007ebaSmrg     n backslashes followed by a double quote (n >= 0):
496404007ebaSmrg       \" -> "
496504007ebaSmrg       \\\" -> \"
496604007ebaSmrg       \\\\\" -> \\"
496704007ebaSmrg */
496804007ebaSmrg#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"
496904007ebaSmrg#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"
497004007ebaSmrgchar **
497104007ebaSmrgprepare_spawn (char **argv)
497204007ebaSmrg{
497304007ebaSmrg  size_t argc;
497404007ebaSmrg  char **new_argv;
497504007ebaSmrg  size_t i;
497604007ebaSmrg
497704007ebaSmrg  /* Count number of arguments.  */
497804007ebaSmrg  for (argc = 0; argv[argc] != NULL; argc++)
497904007ebaSmrg    ;
498004007ebaSmrg
498104007ebaSmrg  /* Allocate new argument vector.  */
498204007ebaSmrg  new_argv = XMALLOC (char *, argc + 1);
498304007ebaSmrg
498404007ebaSmrg  /* Put quoted arguments into the new argument vector.  */
498504007ebaSmrg  for (i = 0; i < argc; i++)
498604007ebaSmrg    {
498704007ebaSmrg      const char *string = argv[i];
498804007ebaSmrg
498904007ebaSmrg      if (string[0] == '\0')
499004007ebaSmrg	new_argv[i] = xstrdup ("\"\"");
499104007ebaSmrg      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
499204007ebaSmrg	{
499304007ebaSmrg	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
499404007ebaSmrg	  size_t length;
499504007ebaSmrg	  unsigned int backslashes;
499604007ebaSmrg	  const char *s;
499704007ebaSmrg	  char *quoted_string;
499804007ebaSmrg	  char *p;
499904007ebaSmrg
500004007ebaSmrg	  length = 0;
500104007ebaSmrg	  backslashes = 0;
500204007ebaSmrg	  if (quote_around)
500304007ebaSmrg	    length++;
500404007ebaSmrg	  for (s = string; *s != '\0'; s++)
500504007ebaSmrg	    {
500604007ebaSmrg	      char c = *s;
500704007ebaSmrg	      if (c == '"')
500804007ebaSmrg		length += backslashes + 1;
500904007ebaSmrg	      length++;
501004007ebaSmrg	      if (c == '\\')
501104007ebaSmrg		backslashes++;
501204007ebaSmrg	      else
501304007ebaSmrg		backslashes = 0;
501404007ebaSmrg	    }
501504007ebaSmrg	  if (quote_around)
501604007ebaSmrg	    length += backslashes + 1;
501704007ebaSmrg
501804007ebaSmrg	  quoted_string = XMALLOC (char, length + 1);
501904007ebaSmrg
502004007ebaSmrg	  p = quoted_string;
502104007ebaSmrg	  backslashes = 0;
502204007ebaSmrg	  if (quote_around)
502304007ebaSmrg	    *p++ = '"';
502404007ebaSmrg	  for (s = string; *s != '\0'; s++)
502504007ebaSmrg	    {
502604007ebaSmrg	      char c = *s;
502704007ebaSmrg	      if (c == '"')
502804007ebaSmrg		{
502904007ebaSmrg		  unsigned int j;
503004007ebaSmrg		  for (j = backslashes + 1; j > 0; j--)
503104007ebaSmrg		    *p++ = '\\';
503204007ebaSmrg		}
503304007ebaSmrg	      *p++ = c;
503404007ebaSmrg	      if (c == '\\')
503504007ebaSmrg		backslashes++;
503604007ebaSmrg	      else
503704007ebaSmrg		backslashes = 0;
503804007ebaSmrg	    }
503904007ebaSmrg	  if (quote_around)
504004007ebaSmrg	    {
504104007ebaSmrg	      unsigned int j;
504204007ebaSmrg	      for (j = backslashes; j > 0; j--)
504304007ebaSmrg		*p++ = '\\';
504404007ebaSmrg	      *p++ = '"';
504504007ebaSmrg	    }
504604007ebaSmrg	  *p = '\0';
504704007ebaSmrg
504804007ebaSmrg	  new_argv[i] = quoted_string;
504904007ebaSmrg	}
505004007ebaSmrg      else
505104007ebaSmrg	new_argv[i] = (char *) string;
505204007ebaSmrg    }
505304007ebaSmrg  new_argv[argc] = NULL;
505404007ebaSmrg
505504007ebaSmrg  return new_argv;
505604007ebaSmrg}
505704007ebaSmrgEOF
505804007ebaSmrg		;;
505904007ebaSmrg	    esac
506004007ebaSmrg
506104007ebaSmrg            cat <<"EOF"
506204007ebaSmrgvoid lt_dump_script (FILE* f)
506304007ebaSmrg{
506404007ebaSmrgEOF
506504007ebaSmrg	    func_emit_wrapper yes |
506604007ebaSmrg	      $SED -n -e '
506704007ebaSmrgs/^\(.\{79\}\)\(..*\)/\1\
506804007ebaSmrg\2/
506904007ebaSmrgh
507004007ebaSmrgs/\([\\"]\)/\\\1/g
507104007ebaSmrgs/$/\\n/
507204007ebaSmrgs/\([^\n]*\).*/  fputs ("\1", f);/p
507304007ebaSmrgg
507404007ebaSmrgD'
507504007ebaSmrg            cat <<"EOF"
507604007ebaSmrg}
507704007ebaSmrgEOF
507804007ebaSmrg}
507904007ebaSmrg# end: func_emit_cwrapperexe_src
508004007ebaSmrg
508104007ebaSmrg# func_win32_import_lib_p ARG
508204007ebaSmrg# True if ARG is an import lib, as indicated by $file_magic_cmd
508304007ebaSmrgfunc_win32_import_lib_p ()
508404007ebaSmrg{
508504007ebaSmrg    $opt_debug
508604007ebaSmrg    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
508704007ebaSmrg    *import*) : ;;
508804007ebaSmrg    *) false ;;
508904007ebaSmrg    esac
509004007ebaSmrg}
509104007ebaSmrg
509204007ebaSmrg# func_mode_link arg...
509304007ebaSmrgfunc_mode_link ()
509404007ebaSmrg{
509504007ebaSmrg    $opt_debug
509604007ebaSmrg    case $host in
509704007ebaSmrg    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
509804007ebaSmrg      # It is impossible to link a dll without this setting, and
509904007ebaSmrg      # we shouldn't force the makefile maintainer to figure out
510004007ebaSmrg      # which system we are compiling for in order to pass an extra
510104007ebaSmrg      # flag for every libtool invocation.
510204007ebaSmrg      # allow_undefined=no
510304007ebaSmrg
510404007ebaSmrg      # FIXME: Unfortunately, there are problems with the above when trying
510504007ebaSmrg      # to make a dll which has undefined symbols, in which case not
510604007ebaSmrg      # even a static library is built.  For now, we need to specify
510704007ebaSmrg      # -no-undefined on the libtool link line when we can be certain
510804007ebaSmrg      # that all symbols are satisfied, otherwise we get a static library.
510904007ebaSmrg      allow_undefined=yes
511004007ebaSmrg      ;;
511104007ebaSmrg    *)
511204007ebaSmrg      allow_undefined=yes
511304007ebaSmrg      ;;
511404007ebaSmrg    esac
511504007ebaSmrg    libtool_args=$nonopt
511604007ebaSmrg    base_compile="$nonopt $@"
511704007ebaSmrg    compile_command=$nonopt
511804007ebaSmrg    finalize_command=$nonopt
511904007ebaSmrg
512004007ebaSmrg    compile_rpath=
512104007ebaSmrg    finalize_rpath=
512204007ebaSmrg    compile_shlibpath=
512304007ebaSmrg    finalize_shlibpath=
512404007ebaSmrg    convenience=
512504007ebaSmrg    old_convenience=
512604007ebaSmrg    deplibs=
512704007ebaSmrg    old_deplibs=
512804007ebaSmrg    compiler_flags=
512904007ebaSmrg    linker_flags=
513004007ebaSmrg    dllsearchpath=
513104007ebaSmrg    lib_search_path=`pwd`
513204007ebaSmrg    inst_prefix_dir=
513304007ebaSmrg    new_inherited_linker_flags=
513404007ebaSmrg
513504007ebaSmrg    avoid_version=no
513604007ebaSmrg    bindir=
513704007ebaSmrg    dlfiles=
513804007ebaSmrg    dlprefiles=
513904007ebaSmrg    dlself=no
514004007ebaSmrg    export_dynamic=no
514104007ebaSmrg    export_symbols=
514204007ebaSmrg    export_symbols_regex=
514304007ebaSmrg    generated=
514404007ebaSmrg    libobjs=
514504007ebaSmrg    ltlibs=
514604007ebaSmrg    module=no
514704007ebaSmrg    no_install=no
514804007ebaSmrg    objs=
514904007ebaSmrg    non_pic_objects=
515004007ebaSmrg    precious_files_regex=
515104007ebaSmrg    prefer_static_libs=no
515204007ebaSmrg    preload=no
515304007ebaSmrg    prev=
515404007ebaSmrg    prevarg=
515504007ebaSmrg    release=
515604007ebaSmrg    rpath=
515704007ebaSmrg    xrpath=
515804007ebaSmrg    perm_rpath=
515904007ebaSmrg    temp_rpath=
516004007ebaSmrg    thread_safe=no
516104007ebaSmrg    vinfo=
516204007ebaSmrg    vinfo_number=no
516304007ebaSmrg    weak_libs=
516404007ebaSmrg    single_module="${wl}-single_module"
516504007ebaSmrg    func_infer_tag $base_compile
516604007ebaSmrg
516704007ebaSmrg    # We need to know -static, to get the right output filenames.
516804007ebaSmrg    for arg
516904007ebaSmrg    do
517004007ebaSmrg      case $arg in
517104007ebaSmrg      -shared)
517204007ebaSmrg	test "$build_libtool_libs" != yes && \
517304007ebaSmrg	  func_fatal_configuration "can not build a shared library"
517404007ebaSmrg	build_old_libs=no
517504007ebaSmrg	break
517604007ebaSmrg	;;
517704007ebaSmrg      -all-static | -static | -static-libtool-libs)
517804007ebaSmrg	case $arg in
517904007ebaSmrg	-all-static)
518004007ebaSmrg	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
518104007ebaSmrg	    func_warning "complete static linking is impossible in this configuration"
518204007ebaSmrg	  fi
518304007ebaSmrg	  if test -n "$link_static_flag"; then
518404007ebaSmrg	    dlopen_self=$dlopen_self_static
518504007ebaSmrg	  fi
518604007ebaSmrg	  prefer_static_libs=yes
518704007ebaSmrg	  ;;
518804007ebaSmrg	-static)
518904007ebaSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
519004007ebaSmrg	    dlopen_self=$dlopen_self_static
519104007ebaSmrg	  fi
519204007ebaSmrg	  prefer_static_libs=built
519304007ebaSmrg	  ;;
519404007ebaSmrg	-static-libtool-libs)
519504007ebaSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
519604007ebaSmrg	    dlopen_self=$dlopen_self_static
519704007ebaSmrg	  fi
519804007ebaSmrg	  prefer_static_libs=yes
519904007ebaSmrg	  ;;
520004007ebaSmrg	esac
520104007ebaSmrg	build_libtool_libs=no
520204007ebaSmrg	build_old_libs=yes
520304007ebaSmrg	break
520404007ebaSmrg	;;
520504007ebaSmrg      esac
520604007ebaSmrg    done
520704007ebaSmrg
520804007ebaSmrg    # See if our shared archives depend on static archives.
520904007ebaSmrg    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
521004007ebaSmrg
521104007ebaSmrg    # Go through the arguments, transforming them on the way.
521204007ebaSmrg    while test "$#" -gt 0; do
521304007ebaSmrg      arg="$1"
521404007ebaSmrg      shift
521504007ebaSmrg      func_quote_for_eval "$arg"
521604007ebaSmrg      qarg=$func_quote_for_eval_unquoted_result
521704007ebaSmrg      func_append libtool_args " $func_quote_for_eval_result"
521804007ebaSmrg
521904007ebaSmrg      # If the previous option needs an argument, assign it.
522004007ebaSmrg      if test -n "$prev"; then
522104007ebaSmrg	case $prev in
522204007ebaSmrg	output)
522304007ebaSmrg	  func_append compile_command " @OUTPUT@"
522404007ebaSmrg	  func_append finalize_command " @OUTPUT@"
522504007ebaSmrg	  ;;
522604007ebaSmrg	esac
522704007ebaSmrg
522804007ebaSmrg	case $prev in
522904007ebaSmrg	bindir)
523004007ebaSmrg	  bindir="$arg"
523104007ebaSmrg	  prev=
523204007ebaSmrg	  continue
523304007ebaSmrg	  ;;
523404007ebaSmrg	dlfiles|dlprefiles)
523504007ebaSmrg	  if test "$preload" = no; then
523604007ebaSmrg	    # Add the symbol object into the linking commands.
523704007ebaSmrg	    func_append compile_command " @SYMFILE@"
523804007ebaSmrg	    func_append finalize_command " @SYMFILE@"
523904007ebaSmrg	    preload=yes
524004007ebaSmrg	  fi
524104007ebaSmrg	  case $arg in
524204007ebaSmrg	  *.la | *.lo) ;;  # We handle these cases below.
524304007ebaSmrg	  force)
524404007ebaSmrg	    if test "$dlself" = no; then
524504007ebaSmrg	      dlself=needless
524604007ebaSmrg	      export_dynamic=yes
524704007ebaSmrg	    fi
524804007ebaSmrg	    prev=
524904007ebaSmrg	    continue
525004007ebaSmrg	    ;;
525104007ebaSmrg	  self)
525204007ebaSmrg	    if test "$prev" = dlprefiles; then
525304007ebaSmrg	      dlself=yes
525404007ebaSmrg	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
525504007ebaSmrg	      dlself=yes
525604007ebaSmrg	    else
525704007ebaSmrg	      dlself=needless
525804007ebaSmrg	      export_dynamic=yes
525904007ebaSmrg	    fi
526004007ebaSmrg	    prev=
526104007ebaSmrg	    continue
526204007ebaSmrg	    ;;
526304007ebaSmrg	  *)
526404007ebaSmrg	    if test "$prev" = dlfiles; then
526504007ebaSmrg	      func_append dlfiles " $arg"
526604007ebaSmrg	    else
526704007ebaSmrg	      func_append dlprefiles " $arg"
526804007ebaSmrg	    fi
526904007ebaSmrg	    prev=
527004007ebaSmrg	    continue
527104007ebaSmrg	    ;;
527204007ebaSmrg	  esac
527304007ebaSmrg	  ;;
527404007ebaSmrg	expsyms)
527504007ebaSmrg	  export_symbols="$arg"
527604007ebaSmrg	  test -f "$arg" \
527704007ebaSmrg	    || func_fatal_error "symbol file \`$arg' does not exist"
527804007ebaSmrg	  prev=
527904007ebaSmrg	  continue
528004007ebaSmrg	  ;;
528104007ebaSmrg	expsyms_regex)
528204007ebaSmrg	  export_symbols_regex="$arg"
528304007ebaSmrg	  prev=
528404007ebaSmrg	  continue
528504007ebaSmrg	  ;;
528604007ebaSmrg	framework)
528704007ebaSmrg	  case $host in
528804007ebaSmrg	    *-*-darwin*)
528904007ebaSmrg	      case "$deplibs " in
529004007ebaSmrg		*" $qarg.ltframework "*) ;;
529104007ebaSmrg		*) func_append deplibs " $qarg.ltframework" # this is fixed later
529204007ebaSmrg		   ;;
529304007ebaSmrg	      esac
529404007ebaSmrg	      ;;
529504007ebaSmrg	  esac
529604007ebaSmrg	  prev=
529704007ebaSmrg	  continue
529804007ebaSmrg	  ;;
529904007ebaSmrg	inst_prefix)
530004007ebaSmrg	  inst_prefix_dir="$arg"
530104007ebaSmrg	  prev=
530204007ebaSmrg	  continue
530304007ebaSmrg	  ;;
530404007ebaSmrg	objectlist)
530504007ebaSmrg	  if test -f "$arg"; then
530604007ebaSmrg	    save_arg=$arg
530704007ebaSmrg	    moreargs=
530804007ebaSmrg	    for fil in `cat "$save_arg"`
530904007ebaSmrg	    do
531004007ebaSmrg#	      func_append moreargs " $fil"
531104007ebaSmrg	      arg=$fil
531204007ebaSmrg	      # A libtool-controlled object.
531304007ebaSmrg
531404007ebaSmrg	      # Check to see that this really is a libtool object.
531504007ebaSmrg	      if func_lalib_unsafe_p "$arg"; then
531604007ebaSmrg		pic_object=
531704007ebaSmrg		non_pic_object=
531804007ebaSmrg
531904007ebaSmrg		# Read the .lo file
532004007ebaSmrg		func_source "$arg"
532104007ebaSmrg
532204007ebaSmrg		if test -z "$pic_object" ||
532304007ebaSmrg		   test -z "$non_pic_object" ||
532404007ebaSmrg		   test "$pic_object" = none &&
532504007ebaSmrg		   test "$non_pic_object" = none; then
532604007ebaSmrg		  func_fatal_error "cannot find name of object for \`$arg'"
532704007ebaSmrg		fi
532804007ebaSmrg
532904007ebaSmrg		# Extract subdirectory from the argument.
533004007ebaSmrg		func_dirname "$arg" "/" ""
533104007ebaSmrg		xdir="$func_dirname_result"
533204007ebaSmrg
533304007ebaSmrg		if test "$pic_object" != none; then
533404007ebaSmrg		  # Prepend the subdirectory the object is found in.
533504007ebaSmrg		  pic_object="$xdir$pic_object"
533604007ebaSmrg
533704007ebaSmrg		  if test "$prev" = dlfiles; then
533804007ebaSmrg		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
533904007ebaSmrg		      func_append dlfiles " $pic_object"
534004007ebaSmrg		      prev=
534104007ebaSmrg		      continue
534204007ebaSmrg		    else
534304007ebaSmrg		      # If libtool objects are unsupported, then we need to preload.
534404007ebaSmrg		      prev=dlprefiles
534504007ebaSmrg		    fi
534604007ebaSmrg		  fi
534704007ebaSmrg
534804007ebaSmrg		  # CHECK ME:  I think I busted this.  -Ossama
534904007ebaSmrg		  if test "$prev" = dlprefiles; then
535004007ebaSmrg		    # Preload the old-style object.
535104007ebaSmrg		    func_append dlprefiles " $pic_object"
535204007ebaSmrg		    prev=
535304007ebaSmrg		  fi
535404007ebaSmrg
535504007ebaSmrg		  # A PIC object.
535604007ebaSmrg		  func_append libobjs " $pic_object"
535704007ebaSmrg		  arg="$pic_object"
535804007ebaSmrg		fi
535904007ebaSmrg
536004007ebaSmrg		# Non-PIC object.
536104007ebaSmrg		if test "$non_pic_object" != none; then
536204007ebaSmrg		  # Prepend the subdirectory the object is found in.
536304007ebaSmrg		  non_pic_object="$xdir$non_pic_object"
536404007ebaSmrg
536504007ebaSmrg		  # A standard non-PIC object
536604007ebaSmrg		  func_append non_pic_objects " $non_pic_object"
536704007ebaSmrg		  if test -z "$pic_object" || test "$pic_object" = none ; then
536804007ebaSmrg		    arg="$non_pic_object"
536904007ebaSmrg		  fi
537004007ebaSmrg		else
537104007ebaSmrg		  # If the PIC object exists, use it instead.
537204007ebaSmrg		  # $xdir was prepended to $pic_object above.
537304007ebaSmrg		  non_pic_object="$pic_object"
537404007ebaSmrg		  func_append non_pic_objects " $non_pic_object"
537504007ebaSmrg		fi
537604007ebaSmrg	      else
537704007ebaSmrg		# Only an error if not doing a dry-run.
537804007ebaSmrg		if $opt_dry_run; then
537904007ebaSmrg		  # Extract subdirectory from the argument.
538004007ebaSmrg		  func_dirname "$arg" "/" ""
538104007ebaSmrg		  xdir="$func_dirname_result"
538204007ebaSmrg
538304007ebaSmrg		  func_lo2o "$arg"
538404007ebaSmrg		  pic_object=$xdir$objdir/$func_lo2o_result
538504007ebaSmrg		  non_pic_object=$xdir$func_lo2o_result
538604007ebaSmrg		  func_append libobjs " $pic_object"
538704007ebaSmrg		  func_append non_pic_objects " $non_pic_object"
538804007ebaSmrg	        else
538904007ebaSmrg		  func_fatal_error "\`$arg' is not a valid libtool object"
539004007ebaSmrg		fi
539104007ebaSmrg	      fi
539204007ebaSmrg	    done
539304007ebaSmrg	  else
539404007ebaSmrg	    func_fatal_error "link input file \`$arg' does not exist"
539504007ebaSmrg	  fi
539604007ebaSmrg	  arg=$save_arg
539704007ebaSmrg	  prev=
539804007ebaSmrg	  continue
539904007ebaSmrg	  ;;
540004007ebaSmrg	precious_regex)
540104007ebaSmrg	  precious_files_regex="$arg"
540204007ebaSmrg	  prev=
540304007ebaSmrg	  continue
540404007ebaSmrg	  ;;
540504007ebaSmrg	release)
540604007ebaSmrg	  release="-$arg"
540704007ebaSmrg	  prev=
540804007ebaSmrg	  continue
540904007ebaSmrg	  ;;
541004007ebaSmrg	rpath | xrpath)
541104007ebaSmrg	  # We need an absolute path.
541204007ebaSmrg	  case $arg in
541304007ebaSmrg	  [\\/]* | [A-Za-z]:[\\/]*) ;;
541404007ebaSmrg	  *)
541504007ebaSmrg	    func_fatal_error "only absolute run-paths are allowed"
541604007ebaSmrg	    ;;
541704007ebaSmrg	  esac
541804007ebaSmrg	  if test "$prev" = rpath; then
541904007ebaSmrg	    case "$rpath " in
542004007ebaSmrg	    *" $arg "*) ;;
542104007ebaSmrg	    *) func_append rpath " $arg" ;;
542204007ebaSmrg	    esac
542304007ebaSmrg	  else
542404007ebaSmrg	    case "$xrpath " in
542504007ebaSmrg	    *" $arg "*) ;;
542604007ebaSmrg	    *) func_append xrpath " $arg" ;;
542704007ebaSmrg	    esac
542804007ebaSmrg	  fi
542904007ebaSmrg	  prev=
543004007ebaSmrg	  continue
543104007ebaSmrg	  ;;
543204007ebaSmrg	shrext)
543304007ebaSmrg	  shrext_cmds="$arg"
543404007ebaSmrg	  prev=
543504007ebaSmrg	  continue
543604007ebaSmrg	  ;;
543704007ebaSmrg	weak)
543804007ebaSmrg	  func_append weak_libs " $arg"
543904007ebaSmrg	  prev=
544004007ebaSmrg	  continue
544104007ebaSmrg	  ;;
544204007ebaSmrg	xcclinker)
544304007ebaSmrg	  func_append linker_flags " $qarg"
544404007ebaSmrg	  func_append compiler_flags " $qarg"
544504007ebaSmrg	  prev=
544604007ebaSmrg	  func_append compile_command " $qarg"
544704007ebaSmrg	  func_append finalize_command " $qarg"
544804007ebaSmrg	  continue
544904007ebaSmrg	  ;;
545004007ebaSmrg	xcompiler)
545104007ebaSmrg	  func_append compiler_flags " $qarg"
545204007ebaSmrg	  prev=
545304007ebaSmrg	  func_append compile_command " $qarg"
545404007ebaSmrg	  func_append finalize_command " $qarg"
545504007ebaSmrg	  continue
545604007ebaSmrg	  ;;
545704007ebaSmrg	xlinker)
545804007ebaSmrg	  func_append linker_flags " $qarg"
545904007ebaSmrg	  func_append compiler_flags " $wl$qarg"
546004007ebaSmrg	  prev=
546104007ebaSmrg	  func_append compile_command " $wl$qarg"
546204007ebaSmrg	  func_append finalize_command " $wl$qarg"
546304007ebaSmrg	  continue
546404007ebaSmrg	  ;;
546504007ebaSmrg	*)
546604007ebaSmrg	  eval "$prev=\"\$arg\""
546704007ebaSmrg	  prev=
546804007ebaSmrg	  continue
546904007ebaSmrg	  ;;
547004007ebaSmrg	esac
547104007ebaSmrg      fi # test -n "$prev"
547204007ebaSmrg
547304007ebaSmrg      prevarg="$arg"
547404007ebaSmrg
547504007ebaSmrg      case $arg in
547604007ebaSmrg      -all-static)
547704007ebaSmrg	if test -n "$link_static_flag"; then
547804007ebaSmrg	  # See comment for -static flag below, for more details.
547904007ebaSmrg	  func_append compile_command " $link_static_flag"
548004007ebaSmrg	  func_append finalize_command " $link_static_flag"
548104007ebaSmrg	fi
548204007ebaSmrg	continue
548304007ebaSmrg	;;
548404007ebaSmrg
548504007ebaSmrg      -allow-undefined)
548604007ebaSmrg	# FIXME: remove this flag sometime in the future.
548704007ebaSmrg	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
548804007ebaSmrg	;;
548904007ebaSmrg
549004007ebaSmrg      -avoid-version)
549104007ebaSmrg	avoid_version=yes
549204007ebaSmrg	continue
549304007ebaSmrg	;;
549404007ebaSmrg
549504007ebaSmrg      -bindir)
549604007ebaSmrg	prev=bindir
549704007ebaSmrg	continue
549804007ebaSmrg	;;
549904007ebaSmrg
550004007ebaSmrg      -dlopen)
550104007ebaSmrg	prev=dlfiles
550204007ebaSmrg	continue
550304007ebaSmrg	;;
550404007ebaSmrg
550504007ebaSmrg      -dlpreopen)
550604007ebaSmrg	prev=dlprefiles
550704007ebaSmrg	continue
550804007ebaSmrg	;;
550904007ebaSmrg
551004007ebaSmrg      -export-dynamic)
551104007ebaSmrg	export_dynamic=yes
551204007ebaSmrg	continue
551304007ebaSmrg	;;
551404007ebaSmrg
551504007ebaSmrg      -export-symbols | -export-symbols-regex)
551604007ebaSmrg	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
551704007ebaSmrg	  func_fatal_error "more than one -exported-symbols argument is not allowed"
551804007ebaSmrg	fi
551904007ebaSmrg	if test "X$arg" = "X-export-symbols"; then
552004007ebaSmrg	  prev=expsyms
552104007ebaSmrg	else
552204007ebaSmrg	  prev=expsyms_regex
552304007ebaSmrg	fi
552404007ebaSmrg	continue
552504007ebaSmrg	;;
552604007ebaSmrg
552704007ebaSmrg      -framework)
552804007ebaSmrg	prev=framework
552904007ebaSmrg	continue
553004007ebaSmrg	;;
553104007ebaSmrg
553204007ebaSmrg      -inst-prefix-dir)
553304007ebaSmrg	prev=inst_prefix
553404007ebaSmrg	continue
553504007ebaSmrg	;;
553604007ebaSmrg
553704007ebaSmrg      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
553804007ebaSmrg      # so, if we see these flags be careful not to treat them like -L
553904007ebaSmrg      -L[A-Z][A-Z]*:*)
554004007ebaSmrg	case $with_gcc/$host in
554104007ebaSmrg	no/*-*-irix* | /*-*-irix*)
554204007ebaSmrg	  func_append compile_command " $arg"
554304007ebaSmrg	  func_append finalize_command " $arg"
554404007ebaSmrg	  ;;
554504007ebaSmrg	esac
554604007ebaSmrg	continue
554704007ebaSmrg	;;
554804007ebaSmrg
554904007ebaSmrg      -L*)
555004007ebaSmrg	func_stripname "-L" '' "$arg"
555104007ebaSmrg	if test -z "$func_stripname_result"; then
555204007ebaSmrg	  if test "$#" -gt 0; then
555304007ebaSmrg	    func_fatal_error "require no space between \`-L' and \`$1'"
555404007ebaSmrg	  else
555504007ebaSmrg	    func_fatal_error "need path for \`-L' option"
555604007ebaSmrg	  fi
555704007ebaSmrg	fi
555804007ebaSmrg	func_resolve_sysroot "$func_stripname_result"
555904007ebaSmrg	dir=$func_resolve_sysroot_result
556004007ebaSmrg	# We need an absolute path.
556104007ebaSmrg	case $dir in
556204007ebaSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
556304007ebaSmrg	*)
556404007ebaSmrg	  absdir=`cd "$dir" && pwd`
556504007ebaSmrg	  test -z "$absdir" && \
556604007ebaSmrg	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
556704007ebaSmrg	  dir="$absdir"
556804007ebaSmrg	  ;;
556904007ebaSmrg	esac
557004007ebaSmrg	case "$deplibs " in
557104007ebaSmrg	*" -L$dir "* | *" $arg "*)
557204007ebaSmrg	  # Will only happen for absolute or sysroot arguments
557304007ebaSmrg	  ;;
557404007ebaSmrg	*)
557504007ebaSmrg	  # Preserve sysroot, but never include relative directories
557604007ebaSmrg	  case $dir in
557704007ebaSmrg	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
557804007ebaSmrg	    *) func_append deplibs " -L$dir" ;;
557904007ebaSmrg	  esac
558004007ebaSmrg	  func_append lib_search_path " $dir"
558104007ebaSmrg	  ;;
558204007ebaSmrg	esac
558304007ebaSmrg	case $host in
558404007ebaSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
558504007ebaSmrg	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
558604007ebaSmrg	  case :$dllsearchpath: in
558704007ebaSmrg	  *":$dir:"*) ;;
558804007ebaSmrg	  ::) dllsearchpath=$dir;;
558904007ebaSmrg	  *) func_append dllsearchpath ":$dir";;
559004007ebaSmrg	  esac
559104007ebaSmrg	  case :$dllsearchpath: in
559204007ebaSmrg	  *":$testbindir:"*) ;;
559304007ebaSmrg	  ::) dllsearchpath=$testbindir;;
559404007ebaSmrg	  *) func_append dllsearchpath ":$testbindir";;
559504007ebaSmrg	  esac
559604007ebaSmrg	  ;;
559704007ebaSmrg	esac
559804007ebaSmrg	continue
559904007ebaSmrg	;;
560004007ebaSmrg
560104007ebaSmrg      -l*)
560204007ebaSmrg	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
560304007ebaSmrg	  case $host in
560404007ebaSmrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
560504007ebaSmrg	    # These systems don't actually have a C or math library (as such)
560604007ebaSmrg	    continue
560704007ebaSmrg	    ;;
560804007ebaSmrg	  *-*-os2*)
560904007ebaSmrg	    # These systems don't actually have a C library (as such)
561004007ebaSmrg	    test "X$arg" = "X-lc" && continue
561104007ebaSmrg	    ;;
561204007ebaSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
561304007ebaSmrg	    # Do not include libc due to us having libc/libc_r.
561404007ebaSmrg	    test "X$arg" = "X-lc" && continue
561504007ebaSmrg	    ;;
561604007ebaSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
561704007ebaSmrg	    # Rhapsody C and math libraries are in the System framework
561804007ebaSmrg	    func_append deplibs " System.ltframework"
561904007ebaSmrg	    continue
562004007ebaSmrg	    ;;
562104007ebaSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
562204007ebaSmrg	    # Causes problems with __ctype
562304007ebaSmrg	    test "X$arg" = "X-lc" && continue
562404007ebaSmrg	    ;;
562504007ebaSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
562604007ebaSmrg	    # Compiler inserts libc in the correct place for threads to work
562704007ebaSmrg	    test "X$arg" = "X-lc" && continue
562804007ebaSmrg	    ;;
562904007ebaSmrg	  esac
563004007ebaSmrg	elif test "X$arg" = "X-lc_r"; then
563104007ebaSmrg	 case $host in
563204007ebaSmrg	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
563304007ebaSmrg	   # Do not include libc_r directly, use -pthread flag.
563404007ebaSmrg	   continue
563504007ebaSmrg	   ;;
563604007ebaSmrg	 esac
563704007ebaSmrg	fi
563804007ebaSmrg	func_append deplibs " $arg"
563904007ebaSmrg	continue
564004007ebaSmrg	;;
564104007ebaSmrg
564204007ebaSmrg      -module)
564304007ebaSmrg	module=yes
564404007ebaSmrg	continue
564504007ebaSmrg	;;
564604007ebaSmrg
564704007ebaSmrg      # Tru64 UNIX uses -model [arg] to determine the layout of C++
564804007ebaSmrg      # classes, name mangling, and exception handling.
564904007ebaSmrg      # Darwin uses the -arch flag to determine output architecture.
565004007ebaSmrg      -model|-arch|-isysroot|--sysroot)
565104007ebaSmrg	func_append compiler_flags " $arg"
565204007ebaSmrg	func_append compile_command " $arg"
565304007ebaSmrg	func_append finalize_command " $arg"
565404007ebaSmrg	prev=xcompiler
565504007ebaSmrg	continue
565604007ebaSmrg	;;
565704007ebaSmrg
565804007ebaSmrg      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
565904007ebaSmrg      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
566004007ebaSmrg	func_append compiler_flags " $arg"
566104007ebaSmrg	func_append compile_command " $arg"
566204007ebaSmrg	func_append finalize_command " $arg"
566304007ebaSmrg	case "$new_inherited_linker_flags " in
566404007ebaSmrg	    *" $arg "*) ;;
566504007ebaSmrg	    * ) func_append new_inherited_linker_flags " $arg" ;;
566604007ebaSmrg	esac
566704007ebaSmrg	continue
566804007ebaSmrg	;;
566904007ebaSmrg
567004007ebaSmrg      -multi_module)
567104007ebaSmrg	single_module="${wl}-multi_module"
567204007ebaSmrg	continue
567304007ebaSmrg	;;
567404007ebaSmrg
567504007ebaSmrg      -no-fast-install)
567604007ebaSmrg	fast_install=no
567704007ebaSmrg	continue
567804007ebaSmrg	;;
567904007ebaSmrg
568004007ebaSmrg      -no-install)
568104007ebaSmrg	case $host in
568204007ebaSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
568304007ebaSmrg	  # The PATH hackery in wrapper scripts is required on Windows
568404007ebaSmrg	  # and Darwin in order for the loader to find any dlls it needs.
568504007ebaSmrg	  func_warning "\`-no-install' is ignored for $host"
568604007ebaSmrg	  func_warning "assuming \`-no-fast-install' instead"
568704007ebaSmrg	  fast_install=no
568804007ebaSmrg	  ;;
568904007ebaSmrg	*) no_install=yes ;;
569004007ebaSmrg	esac
569104007ebaSmrg	continue
569204007ebaSmrg	;;
569304007ebaSmrg
569404007ebaSmrg      -no-undefined)
569504007ebaSmrg	allow_undefined=no
569604007ebaSmrg	continue
569704007ebaSmrg	;;
569804007ebaSmrg
569904007ebaSmrg      -objectlist)
570004007ebaSmrg	prev=objectlist
570104007ebaSmrg	continue
570204007ebaSmrg	;;
570304007ebaSmrg
570404007ebaSmrg      -o) prev=output ;;
570504007ebaSmrg
570604007ebaSmrg      -precious-files-regex)
570704007ebaSmrg	prev=precious_regex
570804007ebaSmrg	continue
570904007ebaSmrg	;;
571004007ebaSmrg
571104007ebaSmrg      -release)
571204007ebaSmrg	prev=release
571304007ebaSmrg	continue
571404007ebaSmrg	;;
571504007ebaSmrg
571604007ebaSmrg      -rpath)
571704007ebaSmrg	prev=rpath
571804007ebaSmrg	continue
571904007ebaSmrg	;;
572004007ebaSmrg
572104007ebaSmrg      -R)
572204007ebaSmrg	prev=xrpath
572304007ebaSmrg	continue
572404007ebaSmrg	;;
572504007ebaSmrg
572604007ebaSmrg      -R*)
572704007ebaSmrg	func_stripname '-R' '' "$arg"
572804007ebaSmrg	dir=$func_stripname_result
572904007ebaSmrg	# We need an absolute path.
573004007ebaSmrg	case $dir in
573104007ebaSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
573204007ebaSmrg	=*)
573304007ebaSmrg	  func_stripname '=' '' "$dir"
573404007ebaSmrg	  dir=$lt_sysroot$func_stripname_result
573504007ebaSmrg	  ;;
573604007ebaSmrg	*)
573704007ebaSmrg	  func_fatal_error "only absolute run-paths are allowed"
573804007ebaSmrg	  ;;
573904007ebaSmrg	esac
574004007ebaSmrg	case "$xrpath " in
574104007ebaSmrg	*" $dir "*) ;;
574204007ebaSmrg	*) func_append xrpath " $dir" ;;
574304007ebaSmrg	esac
574404007ebaSmrg	continue
574504007ebaSmrg	;;
574604007ebaSmrg
574704007ebaSmrg      -shared)
574804007ebaSmrg	# The effects of -shared are defined in a previous loop.
574904007ebaSmrg	continue
575004007ebaSmrg	;;
575104007ebaSmrg
575204007ebaSmrg      -shrext)
575304007ebaSmrg	prev=shrext
575404007ebaSmrg	continue
575504007ebaSmrg	;;
575604007ebaSmrg
575704007ebaSmrg      -static | -static-libtool-libs)
575804007ebaSmrg	# The effects of -static are defined in a previous loop.
575904007ebaSmrg	# We used to do the same as -all-static on platforms that
576004007ebaSmrg	# didn't have a PIC flag, but the assumption that the effects
576104007ebaSmrg	# would be equivalent was wrong.  It would break on at least
576204007ebaSmrg	# Digital Unix and AIX.
576304007ebaSmrg	continue
576404007ebaSmrg	;;
576504007ebaSmrg
576604007ebaSmrg      -thread-safe)
576704007ebaSmrg	thread_safe=yes
576804007ebaSmrg	continue
576904007ebaSmrg	;;
577004007ebaSmrg
577104007ebaSmrg      -version-info)
577204007ebaSmrg	prev=vinfo
577304007ebaSmrg	continue
577404007ebaSmrg	;;
577504007ebaSmrg
577604007ebaSmrg      -version-number)
577704007ebaSmrg	prev=vinfo
577804007ebaSmrg	vinfo_number=yes
577904007ebaSmrg	continue
578004007ebaSmrg	;;
578104007ebaSmrg
578204007ebaSmrg      -weak)
578304007ebaSmrg        prev=weak
578404007ebaSmrg	continue
578504007ebaSmrg	;;
578604007ebaSmrg
578704007ebaSmrg      -Wc,*)
578804007ebaSmrg	func_stripname '-Wc,' '' "$arg"
578904007ebaSmrg	args=$func_stripname_result
579004007ebaSmrg	arg=
579104007ebaSmrg	save_ifs="$IFS"; IFS=','
579204007ebaSmrg	for flag in $args; do
579304007ebaSmrg	  IFS="$save_ifs"
579404007ebaSmrg          func_quote_for_eval "$flag"
579504007ebaSmrg	  func_append arg " $func_quote_for_eval_result"
579604007ebaSmrg	  func_append compiler_flags " $func_quote_for_eval_result"
579704007ebaSmrg	done
579804007ebaSmrg	IFS="$save_ifs"
579904007ebaSmrg	func_stripname ' ' '' "$arg"
580004007ebaSmrg	arg=$func_stripname_result
580104007ebaSmrg	;;
580204007ebaSmrg
580304007ebaSmrg      -Wl,*)
580404007ebaSmrg	func_stripname '-Wl,' '' "$arg"
580504007ebaSmrg	args=$func_stripname_result
580604007ebaSmrg	arg=
580704007ebaSmrg	save_ifs="$IFS"; IFS=','
580804007ebaSmrg	for flag in $args; do
580904007ebaSmrg	  IFS="$save_ifs"
581004007ebaSmrg          func_quote_for_eval "$flag"
581104007ebaSmrg	  func_append arg " $wl$func_quote_for_eval_result"
581204007ebaSmrg	  func_append compiler_flags " $wl$func_quote_for_eval_result"
581304007ebaSmrg	  func_append linker_flags " $func_quote_for_eval_result"
581404007ebaSmrg	done
581504007ebaSmrg	IFS="$save_ifs"
581604007ebaSmrg	func_stripname ' ' '' "$arg"
581704007ebaSmrg	arg=$func_stripname_result
581804007ebaSmrg	;;
581904007ebaSmrg
582004007ebaSmrg      -Xcompiler)
582104007ebaSmrg	prev=xcompiler
582204007ebaSmrg	continue
582304007ebaSmrg	;;
582404007ebaSmrg
582504007ebaSmrg      -Xlinker)
582604007ebaSmrg	prev=xlinker
582704007ebaSmrg	continue
582804007ebaSmrg	;;
582904007ebaSmrg
583004007ebaSmrg      -XCClinker)
583104007ebaSmrg	prev=xcclinker
583204007ebaSmrg	continue
583304007ebaSmrg	;;
583404007ebaSmrg
583504007ebaSmrg      # -msg_* for osf cc
583604007ebaSmrg      -msg_*)
583704007ebaSmrg	func_quote_for_eval "$arg"
583804007ebaSmrg	arg="$func_quote_for_eval_result"
583904007ebaSmrg	;;
584004007ebaSmrg
584104007ebaSmrg      # Flags to be passed through unchanged, with rationale:
584204007ebaSmrg      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
584304007ebaSmrg      # -r[0-9][0-9]*        specify processor for the SGI compiler
584404007ebaSmrg      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
584504007ebaSmrg      # +DA*, +DD*           enable 64-bit mode for the HP compiler
584604007ebaSmrg      # -q*                  compiler args for the IBM compiler
584704007ebaSmrg      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
584804007ebaSmrg      # -F/path              path to uninstalled frameworks, gcc on darwin
584904007ebaSmrg      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
585004007ebaSmrg      # @file                GCC response files
585104007ebaSmrg      # -tp=*                Portland pgcc target processor selection
585204007ebaSmrg      # --sysroot=*          for sysroot support
585304007ebaSmrg      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
585404007ebaSmrg      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
585504007ebaSmrg      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
585604007ebaSmrg      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
585704007ebaSmrg        func_quote_for_eval "$arg"
585804007ebaSmrg	arg="$func_quote_for_eval_result"
585904007ebaSmrg        func_append compile_command " $arg"
586004007ebaSmrg        func_append finalize_command " $arg"
586104007ebaSmrg        func_append compiler_flags " $arg"
586204007ebaSmrg        continue
586304007ebaSmrg        ;;
586404007ebaSmrg
586504007ebaSmrg      # Some other compiler flag.
586604007ebaSmrg      -* | +*)
586704007ebaSmrg        func_quote_for_eval "$arg"
586804007ebaSmrg	arg="$func_quote_for_eval_result"
586904007ebaSmrg	;;
587004007ebaSmrg
587104007ebaSmrg      *.$objext)
587204007ebaSmrg	# A standard object.
587304007ebaSmrg	func_append objs " $arg"
587404007ebaSmrg	;;
587504007ebaSmrg
587604007ebaSmrg      *.lo)
587704007ebaSmrg	# A libtool-controlled object.
587804007ebaSmrg
587904007ebaSmrg	# Check to see that this really is a libtool object.
588004007ebaSmrg	if func_lalib_unsafe_p "$arg"; then
588104007ebaSmrg	  pic_object=
588204007ebaSmrg	  non_pic_object=
588304007ebaSmrg
588404007ebaSmrg	  # Read the .lo file
588504007ebaSmrg	  func_source "$arg"
588604007ebaSmrg
588704007ebaSmrg	  if test -z "$pic_object" ||
588804007ebaSmrg	     test -z "$non_pic_object" ||
588904007ebaSmrg	     test "$pic_object" = none &&
589004007ebaSmrg	     test "$non_pic_object" = none; then
589104007ebaSmrg	    func_fatal_error "cannot find name of object for \`$arg'"
589204007ebaSmrg	  fi
589304007ebaSmrg
589404007ebaSmrg	  # Extract subdirectory from the argument.
589504007ebaSmrg	  func_dirname "$arg" "/" ""
589604007ebaSmrg	  xdir="$func_dirname_result"
589704007ebaSmrg
589804007ebaSmrg	  if test "$pic_object" != none; then
589904007ebaSmrg	    # Prepend the subdirectory the object is found in.
590004007ebaSmrg	    pic_object="$xdir$pic_object"
590104007ebaSmrg
590204007ebaSmrg	    if test "$prev" = dlfiles; then
590304007ebaSmrg	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
590404007ebaSmrg		func_append dlfiles " $pic_object"
590504007ebaSmrg		prev=
590604007ebaSmrg		continue
590704007ebaSmrg	      else
590804007ebaSmrg		# If libtool objects are unsupported, then we need to preload.
590904007ebaSmrg		prev=dlprefiles
591004007ebaSmrg	      fi
591104007ebaSmrg	    fi
591204007ebaSmrg
591304007ebaSmrg	    # CHECK ME:  I think I busted this.  -Ossama
591404007ebaSmrg	    if test "$prev" = dlprefiles; then
591504007ebaSmrg	      # Preload the old-style object.
591604007ebaSmrg	      func_append dlprefiles " $pic_object"
591704007ebaSmrg	      prev=
591804007ebaSmrg	    fi
591904007ebaSmrg
592004007ebaSmrg	    # A PIC object.
592104007ebaSmrg	    func_append libobjs " $pic_object"
592204007ebaSmrg	    arg="$pic_object"
592304007ebaSmrg	  fi
592404007ebaSmrg
592504007ebaSmrg	  # Non-PIC object.
592604007ebaSmrg	  if test "$non_pic_object" != none; then
592704007ebaSmrg	    # Prepend the subdirectory the object is found in.
592804007ebaSmrg	    non_pic_object="$xdir$non_pic_object"
592904007ebaSmrg
593004007ebaSmrg	    # A standard non-PIC object
593104007ebaSmrg	    func_append non_pic_objects " $non_pic_object"
593204007ebaSmrg	    if test -z "$pic_object" || test "$pic_object" = none ; then
593304007ebaSmrg	      arg="$non_pic_object"
593404007ebaSmrg	    fi
593504007ebaSmrg	  else
593604007ebaSmrg	    # If the PIC object exists, use it instead.
593704007ebaSmrg	    # $xdir was prepended to $pic_object above.
593804007ebaSmrg	    non_pic_object="$pic_object"
593904007ebaSmrg	    func_append non_pic_objects " $non_pic_object"
594004007ebaSmrg	  fi
594104007ebaSmrg	else
594204007ebaSmrg	  # Only an error if not doing a dry-run.
594304007ebaSmrg	  if $opt_dry_run; then
594404007ebaSmrg	    # Extract subdirectory from the argument.
594504007ebaSmrg	    func_dirname "$arg" "/" ""
594604007ebaSmrg	    xdir="$func_dirname_result"
594704007ebaSmrg
594804007ebaSmrg	    func_lo2o "$arg"
594904007ebaSmrg	    pic_object=$xdir$objdir/$func_lo2o_result
595004007ebaSmrg	    non_pic_object=$xdir$func_lo2o_result
595104007ebaSmrg	    func_append libobjs " $pic_object"
595204007ebaSmrg	    func_append non_pic_objects " $non_pic_object"
595304007ebaSmrg	  else
595404007ebaSmrg	    func_fatal_error "\`$arg' is not a valid libtool object"
595504007ebaSmrg	  fi
595604007ebaSmrg	fi
595704007ebaSmrg	;;
595804007ebaSmrg
595904007ebaSmrg      *.$libext)
596004007ebaSmrg	# An archive.
596104007ebaSmrg	func_append deplibs " $arg"
596204007ebaSmrg	func_append old_deplibs " $arg"
596304007ebaSmrg	continue
596404007ebaSmrg	;;
596504007ebaSmrg
596604007ebaSmrg      *.la)
596704007ebaSmrg	# A libtool-controlled library.
596804007ebaSmrg
596904007ebaSmrg	func_resolve_sysroot "$arg"
597004007ebaSmrg	if test "$prev" = dlfiles; then
597104007ebaSmrg	  # This library was specified with -dlopen.
597204007ebaSmrg	  func_append dlfiles " $func_resolve_sysroot_result"
597304007ebaSmrg	  prev=
597404007ebaSmrg	elif test "$prev" = dlprefiles; then
597504007ebaSmrg	  # The library was specified with -dlpreopen.
597604007ebaSmrg	  func_append dlprefiles " $func_resolve_sysroot_result"
597704007ebaSmrg	  prev=
597804007ebaSmrg	else
597904007ebaSmrg	  func_append deplibs " $func_resolve_sysroot_result"
598004007ebaSmrg	fi
598104007ebaSmrg	continue
598204007ebaSmrg	;;
598304007ebaSmrg
598404007ebaSmrg      # Some other compiler argument.
598504007ebaSmrg      *)
598604007ebaSmrg	# Unknown arguments in both finalize_command and compile_command need
598704007ebaSmrg	# to be aesthetically quoted because they are evaled later.
598804007ebaSmrg	func_quote_for_eval "$arg"
598904007ebaSmrg	arg="$func_quote_for_eval_result"
599004007ebaSmrg	;;
599104007ebaSmrg      esac # arg
599204007ebaSmrg
599304007ebaSmrg      # Now actually substitute the argument into the commands.
599404007ebaSmrg      if test -n "$arg"; then
599504007ebaSmrg	func_append compile_command " $arg"
599604007ebaSmrg	func_append finalize_command " $arg"
599704007ebaSmrg      fi
599804007ebaSmrg    done # argument parsing loop
599904007ebaSmrg
600004007ebaSmrg    test -n "$prev" && \
600104007ebaSmrg      func_fatal_help "the \`$prevarg' option requires an argument"
600204007ebaSmrg
600304007ebaSmrg    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
600404007ebaSmrg      eval arg=\"$export_dynamic_flag_spec\"
600504007ebaSmrg      func_append compile_command " $arg"
600604007ebaSmrg      func_append finalize_command " $arg"
600704007ebaSmrg    fi
600804007ebaSmrg
600904007ebaSmrg    oldlibs=
601004007ebaSmrg    # calculate the name of the file, without its directory
601104007ebaSmrg    func_basename "$output"
601204007ebaSmrg    outputname="$func_basename_result"
601304007ebaSmrg    libobjs_save="$libobjs"
601404007ebaSmrg
601504007ebaSmrg    if test -n "$shlibpath_var"; then
601604007ebaSmrg      # get the directories listed in $shlibpath_var
601704007ebaSmrg      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
601804007ebaSmrg    else
601904007ebaSmrg      shlib_search_path=
602004007ebaSmrg    fi
602104007ebaSmrg    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
602204007ebaSmrg    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
602304007ebaSmrg
602404007ebaSmrg    func_dirname "$output" "/" ""
602504007ebaSmrg    output_objdir="$func_dirname_result$objdir"
602604007ebaSmrg    func_to_tool_file "$output_objdir/"
602704007ebaSmrg    tool_output_objdir=$func_to_tool_file_result
602804007ebaSmrg    # Create the object directory.
602904007ebaSmrg    func_mkdir_p "$output_objdir"
603004007ebaSmrg
603104007ebaSmrg    # Determine the type of output
603204007ebaSmrg    case $output in
603304007ebaSmrg    "")
603404007ebaSmrg      func_fatal_help "you must specify an output file"
603504007ebaSmrg      ;;
603604007ebaSmrg    *.$libext) linkmode=oldlib ;;
603704007ebaSmrg    *.lo | *.$objext) linkmode=obj ;;
603804007ebaSmrg    *.la) linkmode=lib ;;
603904007ebaSmrg    *) linkmode=prog ;; # Anything else should be a program.
604004007ebaSmrg    esac
604104007ebaSmrg
604204007ebaSmrg    specialdeplibs=
604304007ebaSmrg
604404007ebaSmrg    libs=
604504007ebaSmrg    # Find all interdependent deplibs by searching for libraries
604604007ebaSmrg    # that are linked more than once (e.g. -la -lb -la)
604704007ebaSmrg    for deplib in $deplibs; do
604804007ebaSmrg      if $opt_preserve_dup_deps ; then
604904007ebaSmrg	case "$libs " in
605004007ebaSmrg	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
605104007ebaSmrg	esac
605204007ebaSmrg      fi
605304007ebaSmrg      func_append libs " $deplib"
605404007ebaSmrg    done
605504007ebaSmrg
605604007ebaSmrg    if test "$linkmode" = lib; then
605704007ebaSmrg      libs="$predeps $libs $compiler_lib_search_path $postdeps"
605804007ebaSmrg
605904007ebaSmrg      # Compute libraries that are listed more than once in $predeps
606004007ebaSmrg      # $postdeps and mark them as special (i.e., whose duplicates are
606104007ebaSmrg      # not to be eliminated).
606204007ebaSmrg      pre_post_deps=
606304007ebaSmrg      if $opt_duplicate_compiler_generated_deps; then
606404007ebaSmrg	for pre_post_dep in $predeps $postdeps; do
606504007ebaSmrg	  case "$pre_post_deps " in
606604007ebaSmrg	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
606704007ebaSmrg	  esac
606804007ebaSmrg	  func_append pre_post_deps " $pre_post_dep"
606904007ebaSmrg	done
607004007ebaSmrg      fi
607104007ebaSmrg      pre_post_deps=
607204007ebaSmrg    fi
607304007ebaSmrg
607404007ebaSmrg    deplibs=
607504007ebaSmrg    newdependency_libs=
607604007ebaSmrg    newlib_search_path=
607704007ebaSmrg    need_relink=no # whether we're linking any uninstalled libtool libraries
607804007ebaSmrg    notinst_deplibs= # not-installed libtool libraries
607904007ebaSmrg    notinst_path= # paths that contain not-installed libtool libraries
608004007ebaSmrg
608104007ebaSmrg    case $linkmode in
608204007ebaSmrg    lib)
608304007ebaSmrg	passes="conv dlpreopen link"
608404007ebaSmrg	for file in $dlfiles $dlprefiles; do
608504007ebaSmrg	  case $file in
608604007ebaSmrg	  *.la) ;;
608704007ebaSmrg	  *)
608804007ebaSmrg	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
608904007ebaSmrg	    ;;
609004007ebaSmrg	  esac
609104007ebaSmrg	done
609204007ebaSmrg	;;
609304007ebaSmrg    prog)
609404007ebaSmrg	compile_deplibs=
609504007ebaSmrg	finalize_deplibs=
609604007ebaSmrg	alldeplibs=no
609704007ebaSmrg	newdlfiles=
609804007ebaSmrg	newdlprefiles=
609904007ebaSmrg	passes="conv scan dlopen dlpreopen link"
610004007ebaSmrg	;;
610104007ebaSmrg    *)  passes="conv"
610204007ebaSmrg	;;
610304007ebaSmrg    esac
610404007ebaSmrg
610504007ebaSmrg    for pass in $passes; do
610604007ebaSmrg      # The preopen pass in lib mode reverses $deplibs; put it back here
610704007ebaSmrg      # so that -L comes before libs that need it for instance...
610804007ebaSmrg      if test "$linkmode,$pass" = "lib,link"; then
610904007ebaSmrg	## FIXME: Find the place where the list is rebuilt in the wrong
611004007ebaSmrg	##        order, and fix it there properly
611104007ebaSmrg        tmp_deplibs=
611204007ebaSmrg	for deplib in $deplibs; do
611304007ebaSmrg	  tmp_deplibs="$deplib $tmp_deplibs"
611404007ebaSmrg	done
611504007ebaSmrg	deplibs="$tmp_deplibs"
611604007ebaSmrg      fi
611704007ebaSmrg
611804007ebaSmrg      if test "$linkmode,$pass" = "lib,link" ||
611904007ebaSmrg	 test "$linkmode,$pass" = "prog,scan"; then
612004007ebaSmrg	libs="$deplibs"
612104007ebaSmrg	deplibs=
612204007ebaSmrg      fi
612304007ebaSmrg      if test "$linkmode" = prog; then
612404007ebaSmrg	case $pass in
612504007ebaSmrg	dlopen) libs="$dlfiles" ;;
612604007ebaSmrg	dlpreopen) libs="$dlprefiles" ;;
612704007ebaSmrg	link)
612804007ebaSmrg	  libs="$deplibs %DEPLIBS%"
612904007ebaSmrg	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
613004007ebaSmrg	  ;;
613104007ebaSmrg	esac
613204007ebaSmrg      fi
613304007ebaSmrg      if test "$linkmode,$pass" = "lib,dlpreopen"; then
613404007ebaSmrg	# Collect and forward deplibs of preopened libtool libs
613504007ebaSmrg	for lib in $dlprefiles; do
613604007ebaSmrg	  # Ignore non-libtool-libs
613704007ebaSmrg	  dependency_libs=
613804007ebaSmrg	  func_resolve_sysroot "$lib"
613904007ebaSmrg	  case $lib in
614004007ebaSmrg	  *.la)	func_source "$func_resolve_sysroot_result" ;;
614104007ebaSmrg	  esac
614204007ebaSmrg
614304007ebaSmrg	  # Collect preopened libtool deplibs, except any this library
614404007ebaSmrg	  # has declared as weak libs
614504007ebaSmrg	  for deplib in $dependency_libs; do
614604007ebaSmrg	    func_basename "$deplib"
614704007ebaSmrg            deplib_base=$func_basename_result
614804007ebaSmrg	    case " $weak_libs " in
614904007ebaSmrg	    *" $deplib_base "*) ;;
615004007ebaSmrg	    *) func_append deplibs " $deplib" ;;
615104007ebaSmrg	    esac
615204007ebaSmrg	  done
615304007ebaSmrg	done
615404007ebaSmrg	libs="$dlprefiles"
615504007ebaSmrg      fi
615604007ebaSmrg      if test "$pass" = dlopen; then
615704007ebaSmrg	# Collect dlpreopened libraries
615804007ebaSmrg	save_deplibs="$deplibs"
615904007ebaSmrg	deplibs=
616004007ebaSmrg      fi
616104007ebaSmrg
616204007ebaSmrg      for deplib in $libs; do
616304007ebaSmrg	lib=
616404007ebaSmrg	found=no
616504007ebaSmrg	case $deplib in
616604007ebaSmrg	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
616704007ebaSmrg        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
616804007ebaSmrg	  if test "$linkmode,$pass" = "prog,link"; then
616904007ebaSmrg	    compile_deplibs="$deplib $compile_deplibs"
617004007ebaSmrg	    finalize_deplibs="$deplib $finalize_deplibs"
617104007ebaSmrg	  else
617204007ebaSmrg	    func_append compiler_flags " $deplib"
617304007ebaSmrg	    if test "$linkmode" = lib ; then
617404007ebaSmrg		case "$new_inherited_linker_flags " in
617504007ebaSmrg		    *" $deplib "*) ;;
617604007ebaSmrg		    * ) func_append new_inherited_linker_flags " $deplib" ;;
617704007ebaSmrg		esac
617804007ebaSmrg	    fi
617904007ebaSmrg	  fi
618004007ebaSmrg	  continue
618104007ebaSmrg	  ;;
618204007ebaSmrg	-l*)
618304007ebaSmrg	  if test "$linkmode" != lib && test "$linkmode" != prog; then
618404007ebaSmrg	    func_warning "\`-l' is ignored for archives/objects"
618504007ebaSmrg	    continue
618604007ebaSmrg	  fi
618704007ebaSmrg	  func_stripname '-l' '' "$deplib"
618804007ebaSmrg	  name=$func_stripname_result
618904007ebaSmrg	  if test "$linkmode" = lib; then
619004007ebaSmrg	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
619104007ebaSmrg	  else
619204007ebaSmrg	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
619304007ebaSmrg	  fi
619404007ebaSmrg	  for searchdir in $searchdirs; do
619504007ebaSmrg	    for search_ext in .la $std_shrext .so .a; do
619604007ebaSmrg	      # Search the libtool library
619704007ebaSmrg	      lib="$searchdir/lib${name}${search_ext}"
619804007ebaSmrg	      if test -f "$lib"; then
619904007ebaSmrg		if test "$search_ext" = ".la"; then
620004007ebaSmrg		  found=yes
620104007ebaSmrg		else
620204007ebaSmrg		  found=no
620304007ebaSmrg		fi
620404007ebaSmrg		break 2
620504007ebaSmrg	      fi
620604007ebaSmrg	    done
620704007ebaSmrg	  done
620804007ebaSmrg	  if test "$found" != yes; then
620904007ebaSmrg	    # deplib doesn't seem to be a libtool library
621004007ebaSmrg	    if test "$linkmode,$pass" = "prog,link"; then
621104007ebaSmrg	      compile_deplibs="$deplib $compile_deplibs"
621204007ebaSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
621304007ebaSmrg	    else
621404007ebaSmrg	      deplibs="$deplib $deplibs"
621504007ebaSmrg	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
621604007ebaSmrg	    fi
621704007ebaSmrg	    continue
621804007ebaSmrg	  else # deplib is a libtool library
621904007ebaSmrg	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
622004007ebaSmrg	    # We need to do some special things here, and not later.
622104007ebaSmrg	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
622204007ebaSmrg	      case " $predeps $postdeps " in
622304007ebaSmrg	      *" $deplib "*)
622404007ebaSmrg		if func_lalib_p "$lib"; then
622504007ebaSmrg		  library_names=
622604007ebaSmrg		  old_library=
622704007ebaSmrg		  func_source "$lib"
622804007ebaSmrg		  for l in $old_library $library_names; do
622904007ebaSmrg		    ll="$l"
623004007ebaSmrg		  done
623104007ebaSmrg		  if test "X$ll" = "X$old_library" ; then # only static version available
623204007ebaSmrg		    found=no
623304007ebaSmrg		    func_dirname "$lib" "" "."
623404007ebaSmrg		    ladir="$func_dirname_result"
623504007ebaSmrg		    lib=$ladir/$old_library
623604007ebaSmrg		    if test "$linkmode,$pass" = "prog,link"; then
623704007ebaSmrg		      compile_deplibs="$deplib $compile_deplibs"
623804007ebaSmrg		      finalize_deplibs="$deplib $finalize_deplibs"
623904007ebaSmrg		    else
624004007ebaSmrg		      deplibs="$deplib $deplibs"
624104007ebaSmrg		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
624204007ebaSmrg		    fi
624304007ebaSmrg		    continue
624404007ebaSmrg		  fi
624504007ebaSmrg		fi
624604007ebaSmrg		;;
624704007ebaSmrg	      *) ;;
624804007ebaSmrg	      esac
624904007ebaSmrg	    fi
625004007ebaSmrg	  fi
625104007ebaSmrg	  ;; # -l
625204007ebaSmrg	*.ltframework)
625304007ebaSmrg	  if test "$linkmode,$pass" = "prog,link"; then
625404007ebaSmrg	    compile_deplibs="$deplib $compile_deplibs"
625504007ebaSmrg	    finalize_deplibs="$deplib $finalize_deplibs"
625604007ebaSmrg	  else
625704007ebaSmrg	    deplibs="$deplib $deplibs"
625804007ebaSmrg	    if test "$linkmode" = lib ; then
625904007ebaSmrg		case "$new_inherited_linker_flags " in
626004007ebaSmrg		    *" $deplib "*) ;;
626104007ebaSmrg		    * ) func_append new_inherited_linker_flags " $deplib" ;;
626204007ebaSmrg		esac
626304007ebaSmrg	    fi
626404007ebaSmrg	  fi
626504007ebaSmrg	  continue
626604007ebaSmrg	  ;;
626704007ebaSmrg	-L*)
626804007ebaSmrg	  case $linkmode in
626904007ebaSmrg	  lib)
627004007ebaSmrg	    deplibs="$deplib $deplibs"
627104007ebaSmrg	    test "$pass" = conv && continue
627204007ebaSmrg	    newdependency_libs="$deplib $newdependency_libs"
627304007ebaSmrg	    func_stripname '-L' '' "$deplib"
627404007ebaSmrg	    func_resolve_sysroot "$func_stripname_result"
627504007ebaSmrg	    func_append newlib_search_path " $func_resolve_sysroot_result"
627604007ebaSmrg	    ;;
627704007ebaSmrg	  prog)
627804007ebaSmrg	    if test "$pass" = conv; then
627904007ebaSmrg	      deplibs="$deplib $deplibs"
628004007ebaSmrg	      continue
628104007ebaSmrg	    fi
628204007ebaSmrg	    if test "$pass" = scan; then
628304007ebaSmrg	      deplibs="$deplib $deplibs"
628404007ebaSmrg	    else
628504007ebaSmrg	      compile_deplibs="$deplib $compile_deplibs"
628604007ebaSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
628704007ebaSmrg	    fi
628804007ebaSmrg	    func_stripname '-L' '' "$deplib"
628904007ebaSmrg	    func_resolve_sysroot "$func_stripname_result"
629004007ebaSmrg	    func_append newlib_search_path " $func_resolve_sysroot_result"
629104007ebaSmrg	    ;;
629204007ebaSmrg	  *)
629304007ebaSmrg	    func_warning "\`-L' is ignored for archives/objects"
629404007ebaSmrg	    ;;
629504007ebaSmrg	  esac # linkmode
629604007ebaSmrg	  continue
629704007ebaSmrg	  ;; # -L
629804007ebaSmrg	-R*)
629904007ebaSmrg	  if test "$pass" = link; then
630004007ebaSmrg	    func_stripname '-R' '' "$deplib"
630104007ebaSmrg	    func_resolve_sysroot "$func_stripname_result"
630204007ebaSmrg	    dir=$func_resolve_sysroot_result
630304007ebaSmrg	    # Make sure the xrpath contains only unique directories.
630404007ebaSmrg	    case "$xrpath " in
630504007ebaSmrg	    *" $dir "*) ;;
630604007ebaSmrg	    *) func_append xrpath " $dir" ;;
630704007ebaSmrg	    esac
630804007ebaSmrg	  fi
630904007ebaSmrg	  deplibs="$deplib $deplibs"
631004007ebaSmrg	  continue
631104007ebaSmrg	  ;;
631204007ebaSmrg	*.la)
631304007ebaSmrg	  func_resolve_sysroot "$deplib"
631404007ebaSmrg	  lib=$func_resolve_sysroot_result
631504007ebaSmrg	  ;;
631604007ebaSmrg	*.$libext)
631704007ebaSmrg	  if test "$pass" = conv; then
631804007ebaSmrg	    deplibs="$deplib $deplibs"
631904007ebaSmrg	    continue
632004007ebaSmrg	  fi
632104007ebaSmrg	  case $linkmode in
632204007ebaSmrg	  lib)
632304007ebaSmrg	    # Linking convenience modules into shared libraries is allowed,
632404007ebaSmrg	    # but linking other static libraries is non-portable.
632504007ebaSmrg	    case " $dlpreconveniencelibs " in
632604007ebaSmrg	    *" $deplib "*) ;;
632704007ebaSmrg	    *)
632804007ebaSmrg	      valid_a_lib=no
632904007ebaSmrg	      case $deplibs_check_method in
633004007ebaSmrg		match_pattern*)
633104007ebaSmrg		  set dummy $deplibs_check_method; shift
633204007ebaSmrg		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
633304007ebaSmrg		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
633404007ebaSmrg		    | $EGREP "$match_pattern_regex" > /dev/null; then
633504007ebaSmrg		    valid_a_lib=yes
633604007ebaSmrg		  fi
633704007ebaSmrg		;;
633804007ebaSmrg		pass_all)
633904007ebaSmrg		  valid_a_lib=yes
634004007ebaSmrg		;;
634104007ebaSmrg	      esac
634204007ebaSmrg	      if test "$valid_a_lib" != yes; then
634304007ebaSmrg		echo
634404007ebaSmrg		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
634504007ebaSmrg		echo "*** I have the capability to make that library automatically link in when"
634604007ebaSmrg		echo "*** you link to this library.  But I can only do this if you have a"
634704007ebaSmrg		echo "*** shared version of the library, which you do not appear to have"
634804007ebaSmrg		echo "*** because the file extensions .$libext of this argument makes me believe"
634904007ebaSmrg		echo "*** that it is just a static archive that I should not use here."
635004007ebaSmrg	      else
635104007ebaSmrg		echo
635204007ebaSmrg		$ECHO "*** Warning: Linking the shared library $output against the"
635304007ebaSmrg		$ECHO "*** static library $deplib is not portable!"
635404007ebaSmrg		deplibs="$deplib $deplibs"
635504007ebaSmrg	      fi
635604007ebaSmrg	      ;;
635704007ebaSmrg	    esac
635804007ebaSmrg	    continue
635904007ebaSmrg	    ;;
636004007ebaSmrg	  prog)
636104007ebaSmrg	    if test "$pass" != link; then
636204007ebaSmrg	      deplibs="$deplib $deplibs"
636304007ebaSmrg	    else
636404007ebaSmrg	      compile_deplibs="$deplib $compile_deplibs"
636504007ebaSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
636604007ebaSmrg	    fi
636704007ebaSmrg	    continue
636804007ebaSmrg	    ;;
636904007ebaSmrg	  esac # linkmode
637004007ebaSmrg	  ;; # *.$libext
637104007ebaSmrg	*.lo | *.$objext)
637204007ebaSmrg	  if test "$pass" = conv; then
637304007ebaSmrg	    deplibs="$deplib $deplibs"
637404007ebaSmrg	  elif test "$linkmode" = prog; then
637504007ebaSmrg	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
637604007ebaSmrg	      # If there is no dlopen support or we're linking statically,
637704007ebaSmrg	      # we need to preload.
637804007ebaSmrg	      func_append newdlprefiles " $deplib"
637904007ebaSmrg	      compile_deplibs="$deplib $compile_deplibs"
638004007ebaSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
638104007ebaSmrg	    else
638204007ebaSmrg	      func_append newdlfiles " $deplib"
638304007ebaSmrg	    fi
638404007ebaSmrg	  fi
638504007ebaSmrg	  continue
638604007ebaSmrg	  ;;
638704007ebaSmrg	%DEPLIBS%)
638804007ebaSmrg	  alldeplibs=yes
638904007ebaSmrg	  continue
639004007ebaSmrg	  ;;
639104007ebaSmrg	esac # case $deplib
639204007ebaSmrg
639304007ebaSmrg	if test "$found" = yes || test -f "$lib"; then :
639404007ebaSmrg	else
639504007ebaSmrg	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
639604007ebaSmrg	fi
639704007ebaSmrg
639804007ebaSmrg	# Check to see that this really is a libtool archive.
639904007ebaSmrg	func_lalib_unsafe_p "$lib" \
640004007ebaSmrg	  || func_fatal_error "\`$lib' is not a valid libtool archive"
640104007ebaSmrg
640204007ebaSmrg	func_dirname "$lib" "" "."
640304007ebaSmrg	ladir="$func_dirname_result"
640404007ebaSmrg
640504007ebaSmrg	dlname=
640604007ebaSmrg	dlopen=
640704007ebaSmrg	dlpreopen=
640804007ebaSmrg	libdir=
640904007ebaSmrg	library_names=
641004007ebaSmrg	old_library=
641104007ebaSmrg	inherited_linker_flags=
641204007ebaSmrg	# If the library was installed with an old release of libtool,
641304007ebaSmrg	# it will not redefine variables installed, or shouldnotlink
641404007ebaSmrg	installed=yes
641504007ebaSmrg	shouldnotlink=no
641604007ebaSmrg	avoidtemprpath=
641704007ebaSmrg
641804007ebaSmrg
641904007ebaSmrg	# Read the .la file
642004007ebaSmrg	func_source "$lib"
642104007ebaSmrg
642204007ebaSmrg	# Convert "-framework foo" to "foo.ltframework"
642304007ebaSmrg	if test -n "$inherited_linker_flags"; then
642404007ebaSmrg	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
642504007ebaSmrg	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
642604007ebaSmrg	    case " $new_inherited_linker_flags " in
642704007ebaSmrg	      *" $tmp_inherited_linker_flag "*) ;;
642804007ebaSmrg	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
642904007ebaSmrg	    esac
643004007ebaSmrg	  done
643104007ebaSmrg	fi
643204007ebaSmrg	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
643304007ebaSmrg	if test "$linkmode,$pass" = "lib,link" ||
643404007ebaSmrg	   test "$linkmode,$pass" = "prog,scan" ||
643504007ebaSmrg	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
643604007ebaSmrg	  test -n "$dlopen" && func_append dlfiles " $dlopen"
643704007ebaSmrg	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
643804007ebaSmrg	fi
643904007ebaSmrg
644004007ebaSmrg	if test "$pass" = conv; then
644104007ebaSmrg	  # Only check for convenience libraries
644204007ebaSmrg	  deplibs="$lib $deplibs"
644304007ebaSmrg	  if test -z "$libdir"; then
644404007ebaSmrg	    if test -z "$old_library"; then
644504007ebaSmrg	      func_fatal_error "cannot find name of link library for \`$lib'"
644604007ebaSmrg	    fi
644704007ebaSmrg	    # It is a libtool convenience library, so add in its objects.
644804007ebaSmrg	    func_append convenience " $ladir/$objdir/$old_library"
644904007ebaSmrg	    func_append old_convenience " $ladir/$objdir/$old_library"
645004007ebaSmrg	    tmp_libs=
645104007ebaSmrg	    for deplib in $dependency_libs; do
645204007ebaSmrg	      deplibs="$deplib $deplibs"
645304007ebaSmrg	      if $opt_preserve_dup_deps ; then
645404007ebaSmrg		case "$tmp_libs " in
645504007ebaSmrg		*" $deplib "*) func_append specialdeplibs " $deplib" ;;
645604007ebaSmrg		esac
645704007ebaSmrg	      fi
645804007ebaSmrg	      func_append tmp_libs " $deplib"
645904007ebaSmrg	    done
646004007ebaSmrg	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
646104007ebaSmrg	    func_fatal_error "\`$lib' is not a convenience library"
646204007ebaSmrg	  fi
646304007ebaSmrg	  continue
646404007ebaSmrg	fi # $pass = conv
646504007ebaSmrg
646604007ebaSmrg
646704007ebaSmrg	# Get the name of the library we link against.
646804007ebaSmrg	linklib=
646904007ebaSmrg	if test -n "$old_library" &&
647004007ebaSmrg	   { test "$prefer_static_libs" = yes ||
647104007ebaSmrg	     test "$prefer_static_libs,$installed" = "built,no"; }; then
647204007ebaSmrg	  linklib=$old_library
647304007ebaSmrg	else
647404007ebaSmrg	  for l in $old_library $library_names; do
647504007ebaSmrg	    linklib="$l"
647604007ebaSmrg	  done
647704007ebaSmrg	fi
647804007ebaSmrg	if test -z "$linklib"; then
647904007ebaSmrg	  func_fatal_error "cannot find name of link library for \`$lib'"
648004007ebaSmrg	fi
648104007ebaSmrg
648204007ebaSmrg	# This library was specified with -dlopen.
648304007ebaSmrg	if test "$pass" = dlopen; then
648404007ebaSmrg	  if test -z "$libdir"; then
648504007ebaSmrg	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
648604007ebaSmrg	  fi
648704007ebaSmrg	  if test -z "$dlname" ||
648804007ebaSmrg	     test "$dlopen_support" != yes ||
648904007ebaSmrg	     test "$build_libtool_libs" = no; then
649004007ebaSmrg	    # If there is no dlname, no dlopen support or we're linking
649104007ebaSmrg	    # statically, we need to preload.  We also need to preload any
649204007ebaSmrg	    # dependent libraries so libltdl's deplib preloader doesn't
649304007ebaSmrg	    # bomb out in the load deplibs phase.
649404007ebaSmrg	    func_append dlprefiles " $lib $dependency_libs"
649504007ebaSmrg	  else
649604007ebaSmrg	    func_append newdlfiles " $lib"
649704007ebaSmrg	  fi
649804007ebaSmrg	  continue
649904007ebaSmrg	fi # $pass = dlopen
650004007ebaSmrg
650104007ebaSmrg	# We need an absolute path.
650204007ebaSmrg	case $ladir in
650304007ebaSmrg	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
650404007ebaSmrg	*)
650504007ebaSmrg	  abs_ladir=`cd "$ladir" && pwd`
650604007ebaSmrg	  if test -z "$abs_ladir"; then
650704007ebaSmrg	    func_warning "cannot determine absolute directory name of \`$ladir'"
650804007ebaSmrg	    func_warning "passing it literally to the linker, although it might fail"
650904007ebaSmrg	    abs_ladir="$ladir"
651004007ebaSmrg	  fi
651104007ebaSmrg	  ;;
651204007ebaSmrg	esac
651304007ebaSmrg	func_basename "$lib"
651404007ebaSmrg	laname="$func_basename_result"
651504007ebaSmrg
651604007ebaSmrg	# Find the relevant object directory and library name.
651704007ebaSmrg	if test "X$installed" = Xyes; then
651804007ebaSmrg	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
651904007ebaSmrg	    func_warning "library \`$lib' was moved."
652004007ebaSmrg	    dir="$ladir"
652104007ebaSmrg	    absdir="$abs_ladir"
652204007ebaSmrg	    libdir="$abs_ladir"
652304007ebaSmrg	  else
652404007ebaSmrg	    dir="$lt_sysroot$libdir"
652504007ebaSmrg	    absdir="$lt_sysroot$libdir"
652604007ebaSmrg	  fi
652704007ebaSmrg	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
652804007ebaSmrg	else
652904007ebaSmrg	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
653004007ebaSmrg	    dir="$ladir"
653104007ebaSmrg	    absdir="$abs_ladir"
653204007ebaSmrg	    # Remove this search path later
653304007ebaSmrg	    func_append notinst_path " $abs_ladir"
653404007ebaSmrg	  else
653504007ebaSmrg	    dir="$ladir/$objdir"
653604007ebaSmrg	    absdir="$abs_ladir/$objdir"
653704007ebaSmrg	    # Remove this search path later
653804007ebaSmrg	    func_append notinst_path " $abs_ladir"
653904007ebaSmrg	  fi
654004007ebaSmrg	fi # $installed = yes
654104007ebaSmrg	func_stripname 'lib' '.la' "$laname"
654204007ebaSmrg	name=$func_stripname_result
654304007ebaSmrg
654404007ebaSmrg	# This library was specified with -dlpreopen.
654504007ebaSmrg	if test "$pass" = dlpreopen; then
654604007ebaSmrg	  if test -z "$libdir" && test "$linkmode" = prog; then
654704007ebaSmrg	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
654804007ebaSmrg	  fi
654904007ebaSmrg	  case "$host" in
655004007ebaSmrg	    # special handling for platforms with PE-DLLs.
655104007ebaSmrg	    *cygwin* | *mingw* | *cegcc* )
655204007ebaSmrg	      # Linker will automatically link against shared library if both
655304007ebaSmrg	      # static and shared are present.  Therefore, ensure we extract
655404007ebaSmrg	      # symbols from the import library if a shared library is present
655504007ebaSmrg	      # (otherwise, the dlopen module name will be incorrect).  We do
655604007ebaSmrg	      # this by putting the import library name into $newdlprefiles.
655704007ebaSmrg	      # We recover the dlopen module name by 'saving' the la file
655804007ebaSmrg	      # name in a special purpose variable, and (later) extracting the
655904007ebaSmrg	      # dlname from the la file.
656004007ebaSmrg	      if test -n "$dlname"; then
656104007ebaSmrg	        func_tr_sh "$dir/$linklib"
656204007ebaSmrg	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
656304007ebaSmrg	        func_append newdlprefiles " $dir/$linklib"
656404007ebaSmrg	      else
656504007ebaSmrg	        func_append newdlprefiles " $dir/$old_library"
656604007ebaSmrg	        # Keep a list of preopened convenience libraries to check
656704007ebaSmrg	        # that they are being used correctly in the link pass.
656804007ebaSmrg	        test -z "$libdir" && \
656904007ebaSmrg	          func_append dlpreconveniencelibs " $dir/$old_library"
657004007ebaSmrg	      fi
657104007ebaSmrg	    ;;
657204007ebaSmrg	    * )
657304007ebaSmrg	      # Prefer using a static library (so that no silly _DYNAMIC symbols
657404007ebaSmrg	      # are required to link).
657504007ebaSmrg	      if test -n "$old_library"; then
657604007ebaSmrg	        func_append newdlprefiles " $dir/$old_library"
657704007ebaSmrg	        # Keep a list of preopened convenience libraries to check
657804007ebaSmrg	        # that they are being used correctly in the link pass.
657904007ebaSmrg	        test -z "$libdir" && \
658004007ebaSmrg	          func_append dlpreconveniencelibs " $dir/$old_library"
658104007ebaSmrg	      # Otherwise, use the dlname, so that lt_dlopen finds it.
658204007ebaSmrg	      elif test -n "$dlname"; then
658304007ebaSmrg	        func_append newdlprefiles " $dir/$dlname"
658404007ebaSmrg	      else
658504007ebaSmrg	        func_append newdlprefiles " $dir/$linklib"
658604007ebaSmrg	      fi
658704007ebaSmrg	    ;;
658804007ebaSmrg	  esac
658904007ebaSmrg	fi # $pass = dlpreopen
659004007ebaSmrg
659104007ebaSmrg	if test -z "$libdir"; then
659204007ebaSmrg	  # Link the convenience library
659304007ebaSmrg	  if test "$linkmode" = lib; then
659404007ebaSmrg	    deplibs="$dir/$old_library $deplibs"
659504007ebaSmrg	  elif test "$linkmode,$pass" = "prog,link"; then
659604007ebaSmrg	    compile_deplibs="$dir/$old_library $compile_deplibs"
659704007ebaSmrg	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
659804007ebaSmrg	  else
659904007ebaSmrg	    deplibs="$lib $deplibs" # used for prog,scan pass
660004007ebaSmrg	  fi
660104007ebaSmrg	  continue
660204007ebaSmrg	fi
660304007ebaSmrg
660404007ebaSmrg
660504007ebaSmrg	if test "$linkmode" = prog && test "$pass" != link; then
660604007ebaSmrg	  func_append newlib_search_path " $ladir"
660704007ebaSmrg	  deplibs="$lib $deplibs"
660804007ebaSmrg
660904007ebaSmrg	  linkalldeplibs=no
661004007ebaSmrg	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
661104007ebaSmrg	     test "$build_libtool_libs" = no; then
661204007ebaSmrg	    linkalldeplibs=yes
661304007ebaSmrg	  fi
661404007ebaSmrg
661504007ebaSmrg	  tmp_libs=
661604007ebaSmrg	  for deplib in $dependency_libs; do
661704007ebaSmrg	    case $deplib in
661804007ebaSmrg	    -L*) func_stripname '-L' '' "$deplib"
661904007ebaSmrg	         func_resolve_sysroot "$func_stripname_result"
662004007ebaSmrg	         func_append newlib_search_path " $func_resolve_sysroot_result"
662104007ebaSmrg		 ;;
662204007ebaSmrg	    esac
662304007ebaSmrg	    # Need to link against all dependency_libs?
662404007ebaSmrg	    if test "$linkalldeplibs" = yes; then
662504007ebaSmrg	      deplibs="$deplib $deplibs"
662604007ebaSmrg	    else
662704007ebaSmrg	      # Need to hardcode shared library paths
662804007ebaSmrg	      # or/and link against static libraries
662904007ebaSmrg	      newdependency_libs="$deplib $newdependency_libs"
663004007ebaSmrg	    fi
663104007ebaSmrg	    if $opt_preserve_dup_deps ; then
663204007ebaSmrg	      case "$tmp_libs " in
663304007ebaSmrg	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
663404007ebaSmrg	      esac
663504007ebaSmrg	    fi
663604007ebaSmrg	    func_append tmp_libs " $deplib"
663704007ebaSmrg	  done # for deplib
663804007ebaSmrg	  continue
663904007ebaSmrg	fi # $linkmode = prog...
664004007ebaSmrg
664104007ebaSmrg	if test "$linkmode,$pass" = "prog,link"; then
664204007ebaSmrg	  if test -n "$library_names" &&
664304007ebaSmrg	     { { test "$prefer_static_libs" = no ||
664404007ebaSmrg	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
664504007ebaSmrg	       test -z "$old_library"; }; then
664604007ebaSmrg	    # We need to hardcode the library path
664704007ebaSmrg	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
664804007ebaSmrg	      # Make sure the rpath contains only unique directories.
664904007ebaSmrg	      case "$temp_rpath:" in
665004007ebaSmrg	      *"$absdir:"*) ;;
665104007ebaSmrg	      *) func_append temp_rpath "$absdir:" ;;
665204007ebaSmrg	      esac
665304007ebaSmrg	    fi
665404007ebaSmrg
665504007ebaSmrg	    # Hardcode the library path.
665604007ebaSmrg	    # Skip directories that are in the system default run-time
665704007ebaSmrg	    # search path.
665804007ebaSmrg	    case " $sys_lib_dlsearch_path " in
665904007ebaSmrg	    *" $absdir "*) ;;
666004007ebaSmrg	    *)
666104007ebaSmrg	      case "$compile_rpath " in
666204007ebaSmrg	      *" $absdir "*) ;;
666304007ebaSmrg	      *) func_append compile_rpath " $absdir" ;;
666404007ebaSmrg	      esac
666504007ebaSmrg	      ;;
666604007ebaSmrg	    esac
666704007ebaSmrg	    case " $sys_lib_dlsearch_path " in
666804007ebaSmrg	    *" $libdir "*) ;;
666904007ebaSmrg	    *)
667004007ebaSmrg	      case "$finalize_rpath " in
667104007ebaSmrg	      *" $libdir "*) ;;
667204007ebaSmrg	      *) func_append finalize_rpath " $libdir" ;;
667304007ebaSmrg	      esac
667404007ebaSmrg	      ;;
667504007ebaSmrg	    esac
667604007ebaSmrg	  fi # $linkmode,$pass = prog,link...
667704007ebaSmrg
667804007ebaSmrg	  if test "$alldeplibs" = yes &&
667904007ebaSmrg	     { test "$deplibs_check_method" = pass_all ||
668004007ebaSmrg	       { test "$build_libtool_libs" = yes &&
668104007ebaSmrg		 test -n "$library_names"; }; }; then
668204007ebaSmrg	    # We only need to search for static libraries
668304007ebaSmrg	    continue
668404007ebaSmrg	  fi
668504007ebaSmrg	fi
668604007ebaSmrg
668704007ebaSmrg	link_static=no # Whether the deplib will be linked statically
668804007ebaSmrg	use_static_libs=$prefer_static_libs
668904007ebaSmrg	if test "$use_static_libs" = built && test "$installed" = yes; then
669004007ebaSmrg	  use_static_libs=no
669104007ebaSmrg	fi
669204007ebaSmrg	if test -n "$library_names" &&
669304007ebaSmrg	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
669404007ebaSmrg	  case $host in
669504007ebaSmrg	  *cygwin* | *mingw* | *cegcc*)
669604007ebaSmrg	      # No point in relinking DLLs because paths are not encoded
669704007ebaSmrg	      func_append notinst_deplibs " $lib"
669804007ebaSmrg	      need_relink=no
669904007ebaSmrg	    ;;
670004007ebaSmrg	  *)
670104007ebaSmrg	    if test "$installed" = no; then
670204007ebaSmrg	      func_append notinst_deplibs " $lib"
670304007ebaSmrg	      need_relink=yes
670404007ebaSmrg	    fi
670504007ebaSmrg	    ;;
670604007ebaSmrg	  esac
670704007ebaSmrg	  # This is a shared library
670804007ebaSmrg
670904007ebaSmrg	  # Warn about portability, can't link against -module's on some
671004007ebaSmrg	  # systems (darwin).  Don't bleat about dlopened modules though!
671104007ebaSmrg	  dlopenmodule=""
671204007ebaSmrg	  for dlpremoduletest in $dlprefiles; do
671304007ebaSmrg	    if test "X$dlpremoduletest" = "X$lib"; then
671404007ebaSmrg	      dlopenmodule="$dlpremoduletest"
671504007ebaSmrg	      break
671604007ebaSmrg	    fi
671704007ebaSmrg	  done
671804007ebaSmrg	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
671904007ebaSmrg	    echo
672004007ebaSmrg	    if test "$linkmode" = prog; then
672104007ebaSmrg	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
672204007ebaSmrg	    else
672304007ebaSmrg	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
672404007ebaSmrg	    fi
672504007ebaSmrg	    $ECHO "*** $linklib is not portable!"
672604007ebaSmrg	  fi
672704007ebaSmrg	  if test "$linkmode" = lib &&
672804007ebaSmrg	     test "$hardcode_into_libs" = yes; then
672904007ebaSmrg	    # Hardcode the library path.
673004007ebaSmrg	    # Skip directories that are in the system default run-time
673104007ebaSmrg	    # search path.
673204007ebaSmrg	    case " $sys_lib_dlsearch_path " in
673304007ebaSmrg	    *" $absdir "*) ;;
673404007ebaSmrg	    *)
673504007ebaSmrg	      case "$compile_rpath " in
673604007ebaSmrg	      *" $absdir "*) ;;
673704007ebaSmrg	      *) func_append compile_rpath " $absdir" ;;
673804007ebaSmrg	      esac
673904007ebaSmrg	      ;;
674004007ebaSmrg	    esac
674104007ebaSmrg	    case " $sys_lib_dlsearch_path " in
674204007ebaSmrg	    *" $libdir "*) ;;
674304007ebaSmrg	    *)
674404007ebaSmrg	      case "$finalize_rpath " in
674504007ebaSmrg	      *" $libdir "*) ;;
674604007ebaSmrg	      *) func_append finalize_rpath " $libdir" ;;
674704007ebaSmrg	      esac
674804007ebaSmrg	      ;;
674904007ebaSmrg	    esac
675004007ebaSmrg	  fi
675104007ebaSmrg
675204007ebaSmrg	  if test -n "$old_archive_from_expsyms_cmds"; then
675304007ebaSmrg	    # figure out the soname
675404007ebaSmrg	    set dummy $library_names
675504007ebaSmrg	    shift
675604007ebaSmrg	    realname="$1"
675704007ebaSmrg	    shift
675804007ebaSmrg	    libname=`eval "\\$ECHO \"$libname_spec\""`
675904007ebaSmrg	    # use dlname if we got it. it's perfectly good, no?
676004007ebaSmrg	    if test -n "$dlname"; then
676104007ebaSmrg	      soname="$dlname"
676204007ebaSmrg	    elif test -n "$soname_spec"; then
676304007ebaSmrg	      # bleh windows
676404007ebaSmrg	      case $host in
676504007ebaSmrg	      *cygwin* | mingw* | *cegcc*)
676604007ebaSmrg	        func_arith $current - $age
676704007ebaSmrg		major=$func_arith_result
676804007ebaSmrg		versuffix="-$major"
676904007ebaSmrg		;;
677004007ebaSmrg	      esac
677104007ebaSmrg	      eval soname=\"$soname_spec\"
677204007ebaSmrg	    else
677304007ebaSmrg	      soname="$realname"
677404007ebaSmrg	    fi
677504007ebaSmrg
677604007ebaSmrg	    # Make a new name for the extract_expsyms_cmds to use
677704007ebaSmrg	    soroot="$soname"
677804007ebaSmrg	    func_basename "$soroot"
677904007ebaSmrg	    soname="$func_basename_result"
678004007ebaSmrg	    func_stripname 'lib' '.dll' "$soname"
678104007ebaSmrg	    newlib=libimp-$func_stripname_result.a
678204007ebaSmrg
678304007ebaSmrg	    # If the library has no export list, then create one now
678404007ebaSmrg	    if test -f "$output_objdir/$soname-def"; then :
678504007ebaSmrg	    else
678604007ebaSmrg	      func_verbose "extracting exported symbol list from \`$soname'"
678704007ebaSmrg	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
678804007ebaSmrg	    fi
678904007ebaSmrg
679004007ebaSmrg	    # Create $newlib
679104007ebaSmrg	    if test -f "$output_objdir/$newlib"; then :; else
679204007ebaSmrg	      func_verbose "generating import library for \`$soname'"
679304007ebaSmrg	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
679404007ebaSmrg	    fi
679504007ebaSmrg	    # make sure the library variables are pointing to the new library
679604007ebaSmrg	    dir=$output_objdir
679704007ebaSmrg	    linklib=$newlib
679804007ebaSmrg	  fi # test -n "$old_archive_from_expsyms_cmds"
679904007ebaSmrg
680004007ebaSmrg	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
680104007ebaSmrg	    add_shlibpath=
680204007ebaSmrg	    add_dir=
680304007ebaSmrg	    add=
680404007ebaSmrg	    lib_linked=yes
680504007ebaSmrg	    case $hardcode_action in
680604007ebaSmrg	    immediate | unsupported)
680704007ebaSmrg	      if test "$hardcode_direct" = no; then
680804007ebaSmrg		add="$dir/$linklib"
680904007ebaSmrg		case $host in
681004007ebaSmrg		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
681104007ebaSmrg		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
681204007ebaSmrg		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
681304007ebaSmrg		    *-*-unixware7*) add_dir="-L$dir" ;;
681404007ebaSmrg		  *-*-darwin* )
681504007ebaSmrg		    # if the lib is a (non-dlopened) module then we can not
681604007ebaSmrg		    # link against it, someone is ignoring the earlier warnings
681704007ebaSmrg		    if /usr/bin/file -L $add 2> /dev/null |
681804007ebaSmrg			 $GREP ": [^:]* bundle" >/dev/null ; then
681904007ebaSmrg		      if test "X$dlopenmodule" != "X$lib"; then
682004007ebaSmrg			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
682104007ebaSmrg			if test -z "$old_library" ; then
682204007ebaSmrg			  echo
682304007ebaSmrg			  echo "*** And there doesn't seem to be a static archive available"
682404007ebaSmrg			  echo "*** The link will probably fail, sorry"
682504007ebaSmrg			else
682604007ebaSmrg			  add="$dir/$old_library"
682704007ebaSmrg			fi
682804007ebaSmrg		      elif test -n "$old_library"; then
682904007ebaSmrg			add="$dir/$old_library"
683004007ebaSmrg		      fi
683104007ebaSmrg		    fi
683204007ebaSmrg		esac
683304007ebaSmrg	      elif test "$hardcode_minus_L" = no; then
683404007ebaSmrg		case $host in
683504007ebaSmrg		*-*-sunos*) add_shlibpath="$dir" ;;
683604007ebaSmrg		esac
683704007ebaSmrg		add_dir="-L$dir"
683804007ebaSmrg		add="-l$name"
683904007ebaSmrg	      elif test "$hardcode_shlibpath_var" = no; then
684004007ebaSmrg		add_shlibpath="$dir"
684104007ebaSmrg		add="-l$name"
684204007ebaSmrg	      else
684304007ebaSmrg		lib_linked=no
684404007ebaSmrg	      fi
684504007ebaSmrg	      ;;
684604007ebaSmrg	    relink)
684704007ebaSmrg	      if test "$hardcode_direct" = yes &&
684804007ebaSmrg	         test "$hardcode_direct_absolute" = no; then
684904007ebaSmrg		add="$dir/$linklib"
685004007ebaSmrg	      elif test "$hardcode_minus_L" = yes; then
685104007ebaSmrg		add_dir="-L$absdir"
685204007ebaSmrg		# Try looking first in the location we're being installed to.
685304007ebaSmrg		if test -n "$inst_prefix_dir"; then
685404007ebaSmrg		  case $libdir in
685504007ebaSmrg		    [\\/]*)
685604007ebaSmrg		      func_append add_dir " -L$inst_prefix_dir$libdir"
685704007ebaSmrg		      ;;
685804007ebaSmrg		  esac
685904007ebaSmrg		fi
686004007ebaSmrg		add="-l$name"
686104007ebaSmrg	      elif test "$hardcode_shlibpath_var" = yes; then
686204007ebaSmrg		add_shlibpath="$dir"
686304007ebaSmrg		add="-l$name"
686404007ebaSmrg	      else
686504007ebaSmrg		lib_linked=no
686604007ebaSmrg	      fi
686704007ebaSmrg	      ;;
686804007ebaSmrg	    *) lib_linked=no ;;
686904007ebaSmrg	    esac
687004007ebaSmrg
687104007ebaSmrg	    if test "$lib_linked" != yes; then
687204007ebaSmrg	      func_fatal_configuration "unsupported hardcode properties"
687304007ebaSmrg	    fi
687404007ebaSmrg
687504007ebaSmrg	    if test -n "$add_shlibpath"; then
687604007ebaSmrg	      case :$compile_shlibpath: in
687704007ebaSmrg	      *":$add_shlibpath:"*) ;;
687804007ebaSmrg	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
687904007ebaSmrg	      esac
688004007ebaSmrg	    fi
688104007ebaSmrg	    if test "$linkmode" = prog; then
688204007ebaSmrg	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
688304007ebaSmrg	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
688404007ebaSmrg	    else
688504007ebaSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
688604007ebaSmrg	      test -n "$add" && deplibs="$add $deplibs"
688704007ebaSmrg	      if test "$hardcode_direct" != yes &&
688804007ebaSmrg		 test "$hardcode_minus_L" != yes &&
688904007ebaSmrg		 test "$hardcode_shlibpath_var" = yes; then
689004007ebaSmrg		case :$finalize_shlibpath: in
689104007ebaSmrg		*":$libdir:"*) ;;
689204007ebaSmrg		*) func_append finalize_shlibpath "$libdir:" ;;
689304007ebaSmrg		esac
689404007ebaSmrg	      fi
689504007ebaSmrg	    fi
689604007ebaSmrg	  fi
689704007ebaSmrg
689804007ebaSmrg	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
689904007ebaSmrg	    add_shlibpath=
690004007ebaSmrg	    add_dir=
690104007ebaSmrg	    add=
690204007ebaSmrg	    # Finalize command for both is simple: just hardcode it.
690304007ebaSmrg	    if test "$hardcode_direct" = yes &&
690404007ebaSmrg	       test "$hardcode_direct_absolute" = no; then
690504007ebaSmrg	      add="$libdir/$linklib"
690604007ebaSmrg	    elif test "$hardcode_minus_L" = yes; then
690704007ebaSmrg	      add_dir="-L$libdir"
690804007ebaSmrg	      add="-l$name"
690904007ebaSmrg	    elif test "$hardcode_shlibpath_var" = yes; then
691004007ebaSmrg	      case :$finalize_shlibpath: in
691104007ebaSmrg	      *":$libdir:"*) ;;
691204007ebaSmrg	      *) func_append finalize_shlibpath "$libdir:" ;;
691304007ebaSmrg	      esac
691404007ebaSmrg	      add="-l$name"
691504007ebaSmrg	    elif test "$hardcode_automatic" = yes; then
691604007ebaSmrg	      if test -n "$inst_prefix_dir" &&
691704007ebaSmrg		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
691804007ebaSmrg		add="$inst_prefix_dir$libdir/$linklib"
691904007ebaSmrg	      else
692004007ebaSmrg		add="$libdir/$linklib"
692104007ebaSmrg	      fi
692204007ebaSmrg	    else
692304007ebaSmrg	      # We cannot seem to hardcode it, guess we'll fake it.
692404007ebaSmrg	      add_dir="-L$libdir"
692504007ebaSmrg	      # Try looking first in the location we're being installed to.
692604007ebaSmrg	      if test -n "$inst_prefix_dir"; then
692704007ebaSmrg		case $libdir in
692804007ebaSmrg		  [\\/]*)
692904007ebaSmrg		    func_append add_dir " -L$inst_prefix_dir$libdir"
693004007ebaSmrg		    ;;
693104007ebaSmrg		esac
693204007ebaSmrg	      fi
693304007ebaSmrg	      add="-l$name"
693404007ebaSmrg	    fi
693504007ebaSmrg
693604007ebaSmrg	    if test "$linkmode" = prog; then
693704007ebaSmrg	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
693804007ebaSmrg	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
693904007ebaSmrg	    else
694004007ebaSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
694104007ebaSmrg	      test -n "$add" && deplibs="$add $deplibs"
694204007ebaSmrg	    fi
694304007ebaSmrg	  fi
694404007ebaSmrg	elif test "$linkmode" = prog; then
694504007ebaSmrg	  # Here we assume that one of hardcode_direct or hardcode_minus_L
694604007ebaSmrg	  # is not unsupported.  This is valid on all known static and
694704007ebaSmrg	  # shared platforms.
694804007ebaSmrg	  if test "$hardcode_direct" != unsupported; then
694904007ebaSmrg	    test -n "$old_library" && linklib="$old_library"
695004007ebaSmrg	    compile_deplibs="$dir/$linklib $compile_deplibs"
695104007ebaSmrg	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
695204007ebaSmrg	  else
695304007ebaSmrg	    compile_deplibs="-l$name -L$dir $compile_deplibs"
695404007ebaSmrg	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
695504007ebaSmrg	  fi
695604007ebaSmrg	elif test "$build_libtool_libs" = yes; then
695704007ebaSmrg	  # Not a shared library
695804007ebaSmrg	  if test "$deplibs_check_method" != pass_all; then
695904007ebaSmrg	    # We're trying link a shared library against a static one
696004007ebaSmrg	    # but the system doesn't support it.
696104007ebaSmrg
696204007ebaSmrg	    # Just print a warning and add the library to dependency_libs so
696304007ebaSmrg	    # that the program can be linked against the static library.
696404007ebaSmrg	    echo
696504007ebaSmrg	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
696604007ebaSmrg	    echo "*** I have the capability to make that library automatically link in when"
696704007ebaSmrg	    echo "*** you link to this library.  But I can only do this if you have a"
696804007ebaSmrg	    echo "*** shared version of the library, which you do not appear to have."
696904007ebaSmrg	    if test "$module" = yes; then
697004007ebaSmrg	      echo "*** But as you try to build a module library, libtool will still create "
697104007ebaSmrg	      echo "*** a static module, that should work as long as the dlopening application"
697204007ebaSmrg	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
697304007ebaSmrg	      if test -z "$global_symbol_pipe"; then
697404007ebaSmrg		echo
697504007ebaSmrg		echo "*** However, this would only work if libtool was able to extract symbol"
697604007ebaSmrg		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
697704007ebaSmrg		echo "*** not find such a program.  So, this module is probably useless."
697804007ebaSmrg		echo "*** \`nm' from GNU binutils and a full rebuild may help."
697904007ebaSmrg	      fi
698004007ebaSmrg	      if test "$build_old_libs" = no; then
698104007ebaSmrg		build_libtool_libs=module
698204007ebaSmrg		build_old_libs=yes
698304007ebaSmrg	      else
698404007ebaSmrg		build_libtool_libs=no
698504007ebaSmrg	      fi
698604007ebaSmrg	    fi
698704007ebaSmrg	  else
698804007ebaSmrg	    deplibs="$dir/$old_library $deplibs"
698904007ebaSmrg	    link_static=yes
699004007ebaSmrg	  fi
699104007ebaSmrg	fi # link shared/static library?
699204007ebaSmrg
699304007ebaSmrg	if test "$linkmode" = lib; then
699404007ebaSmrg	  if test -n "$dependency_libs" &&
699504007ebaSmrg	     { test "$hardcode_into_libs" != yes ||
699604007ebaSmrg	       test "$build_old_libs" = yes ||
699704007ebaSmrg	       test "$link_static" = yes; }; then
699804007ebaSmrg	    # Extract -R from dependency_libs
699904007ebaSmrg	    temp_deplibs=
700004007ebaSmrg	    for libdir in $dependency_libs; do
700104007ebaSmrg	      case $libdir in
700204007ebaSmrg	      -R*) func_stripname '-R' '' "$libdir"
700304007ebaSmrg	           temp_xrpath=$func_stripname_result
700404007ebaSmrg		   case " $xrpath " in
700504007ebaSmrg		   *" $temp_xrpath "*) ;;
700604007ebaSmrg		   *) func_append xrpath " $temp_xrpath";;
700704007ebaSmrg		   esac;;
700804007ebaSmrg	      *) func_append temp_deplibs " $libdir";;
700904007ebaSmrg	      esac
701004007ebaSmrg	    done
701104007ebaSmrg	    dependency_libs="$temp_deplibs"
701204007ebaSmrg	  fi
701304007ebaSmrg
701404007ebaSmrg	  func_append newlib_search_path " $absdir"
701504007ebaSmrg	  # Link against this library
701604007ebaSmrg	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
701704007ebaSmrg	  # ... and its dependency_libs
701804007ebaSmrg	  tmp_libs=
701904007ebaSmrg	  for deplib in $dependency_libs; do
702004007ebaSmrg	    newdependency_libs="$deplib $newdependency_libs"
702104007ebaSmrg	    case $deplib in
702204007ebaSmrg              -L*) func_stripname '-L' '' "$deplib"
702304007ebaSmrg                   func_resolve_sysroot "$func_stripname_result";;
702404007ebaSmrg              *) func_resolve_sysroot "$deplib" ;;
702504007ebaSmrg            esac
702604007ebaSmrg	    if $opt_preserve_dup_deps ; then
702704007ebaSmrg	      case "$tmp_libs " in
702804007ebaSmrg	      *" $func_resolve_sysroot_result "*)
702904007ebaSmrg                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
703004007ebaSmrg	      esac
703104007ebaSmrg	    fi
703204007ebaSmrg	    func_append tmp_libs " $func_resolve_sysroot_result"
703304007ebaSmrg	  done
703404007ebaSmrg
703504007ebaSmrg	  if test "$link_all_deplibs" != no; then
703604007ebaSmrg	    # Add the search paths of all dependency libraries
703704007ebaSmrg	    for deplib in $dependency_libs; do
703804007ebaSmrg	      path=
703904007ebaSmrg	      case $deplib in
704004007ebaSmrg	      -L*) path="$deplib" ;;
704104007ebaSmrg	      *.la)
704204007ebaSmrg	        func_resolve_sysroot "$deplib"
704304007ebaSmrg	        deplib=$func_resolve_sysroot_result
704404007ebaSmrg	        func_dirname "$deplib" "" "."
704504007ebaSmrg		dir=$func_dirname_result
704604007ebaSmrg		# We need an absolute path.
704704007ebaSmrg		case $dir in
704804007ebaSmrg		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
704904007ebaSmrg		*)
705004007ebaSmrg		  absdir=`cd "$dir" && pwd`
705104007ebaSmrg		  if test -z "$absdir"; then
705204007ebaSmrg		    func_warning "cannot determine absolute directory name of \`$dir'"
705304007ebaSmrg		    absdir="$dir"
705404007ebaSmrg		  fi
705504007ebaSmrg		  ;;
705604007ebaSmrg		esac
705704007ebaSmrg		if $GREP "^installed=no" $deplib > /dev/null; then
705804007ebaSmrg		case $host in
705904007ebaSmrg		*-*-darwin*)
706004007ebaSmrg		  depdepl=
706104007ebaSmrg		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
706204007ebaSmrg		  if test -n "$deplibrary_names" ; then
706304007ebaSmrg		    for tmp in $deplibrary_names ; do
706404007ebaSmrg		      depdepl=$tmp
706504007ebaSmrg		    done
706604007ebaSmrg		    if test -f "$absdir/$objdir/$depdepl" ; then
706704007ebaSmrg		      depdepl="$absdir/$objdir/$depdepl"
706804007ebaSmrg		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
706904007ebaSmrg                      if test -z "$darwin_install_name"; then
707004007ebaSmrg                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
707104007ebaSmrg                      fi
707204007ebaSmrg		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
707304007ebaSmrg		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
707404007ebaSmrg		      path=
707504007ebaSmrg		    fi
707604007ebaSmrg		  fi
707704007ebaSmrg		  ;;
707804007ebaSmrg		*)
707904007ebaSmrg		  path="-L$absdir/$objdir"
708004007ebaSmrg		  ;;
708104007ebaSmrg		esac
708204007ebaSmrg		else
708304007ebaSmrg		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
708404007ebaSmrg		  test -z "$libdir" && \
708504007ebaSmrg		    func_fatal_error "\`$deplib' is not a valid libtool archive"
708604007ebaSmrg		  test "$absdir" != "$libdir" && \
708704007ebaSmrg		    func_warning "\`$deplib' seems to be moved"
708804007ebaSmrg
708904007ebaSmrg		  path="-L$absdir"
709004007ebaSmrg		fi
709104007ebaSmrg		;;
709204007ebaSmrg	      esac
709304007ebaSmrg	      case " $deplibs " in
709404007ebaSmrg	      *" $path "*) ;;
709504007ebaSmrg	      *) deplibs="$path $deplibs" ;;
709604007ebaSmrg	      esac
709704007ebaSmrg	    done
709804007ebaSmrg	  fi # link_all_deplibs != no
709904007ebaSmrg	fi # linkmode = lib
710004007ebaSmrg      done # for deplib in $libs
710104007ebaSmrg      if test "$pass" = link; then
710204007ebaSmrg	if test "$linkmode" = "prog"; then
710304007ebaSmrg	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
710404007ebaSmrg	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
710504007ebaSmrg	else
710604007ebaSmrg	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
710704007ebaSmrg	fi
710804007ebaSmrg      fi
710904007ebaSmrg      dependency_libs="$newdependency_libs"
711004007ebaSmrg      if test "$pass" = dlpreopen; then
711104007ebaSmrg	# Link the dlpreopened libraries before other libraries
711204007ebaSmrg	for deplib in $save_deplibs; do
711304007ebaSmrg	  deplibs="$deplib $deplibs"
711404007ebaSmrg	done
711504007ebaSmrg      fi
711604007ebaSmrg      if test "$pass" != dlopen; then
711704007ebaSmrg	if test "$pass" != conv; then
711804007ebaSmrg	  # Make sure lib_search_path contains only unique directories.
711904007ebaSmrg	  lib_search_path=
712004007ebaSmrg	  for dir in $newlib_search_path; do
712104007ebaSmrg	    case "$lib_search_path " in
712204007ebaSmrg	    *" $dir "*) ;;
712304007ebaSmrg	    *) func_append lib_search_path " $dir" ;;
712404007ebaSmrg	    esac
712504007ebaSmrg	  done
712604007ebaSmrg	  newlib_search_path=
712704007ebaSmrg	fi
712804007ebaSmrg
712904007ebaSmrg	if test "$linkmode,$pass" != "prog,link"; then
713004007ebaSmrg	  vars="deplibs"
713104007ebaSmrg	else
713204007ebaSmrg	  vars="compile_deplibs finalize_deplibs"
713304007ebaSmrg	fi
713404007ebaSmrg	for var in $vars dependency_libs; do
713504007ebaSmrg	  # Add libraries to $var in reverse order
713604007ebaSmrg	  eval tmp_libs=\"\$$var\"
713704007ebaSmrg	  new_libs=
713804007ebaSmrg	  for deplib in $tmp_libs; do
713904007ebaSmrg	    # FIXME: Pedantically, this is the right thing to do, so
714004007ebaSmrg	    #        that some nasty dependency loop isn't accidentally
714104007ebaSmrg	    #        broken:
714204007ebaSmrg	    #new_libs="$deplib $new_libs"
714304007ebaSmrg	    # Pragmatically, this seems to cause very few problems in
714404007ebaSmrg	    # practice:
714504007ebaSmrg	    case $deplib in
714604007ebaSmrg	    -L*) new_libs="$deplib $new_libs" ;;
714704007ebaSmrg	    -R*) ;;
714804007ebaSmrg	    *)
714904007ebaSmrg	      # And here is the reason: when a library appears more
715004007ebaSmrg	      # than once as an explicit dependence of a library, or
715104007ebaSmrg	      # is implicitly linked in more than once by the
715204007ebaSmrg	      # compiler, it is considered special, and multiple
715304007ebaSmrg	      # occurrences thereof are not removed.  Compare this
715404007ebaSmrg	      # with having the same library being listed as a
715504007ebaSmrg	      # dependency of multiple other libraries: in this case,
715604007ebaSmrg	      # we know (pedantically, we assume) the library does not
715704007ebaSmrg	      # need to be listed more than once, so we keep only the
715804007ebaSmrg	      # last copy.  This is not always right, but it is rare
715904007ebaSmrg	      # enough that we require users that really mean to play
716004007ebaSmrg	      # such unportable linking tricks to link the library
716104007ebaSmrg	      # using -Wl,-lname, so that libtool does not consider it
716204007ebaSmrg	      # for duplicate removal.
716304007ebaSmrg	      case " $specialdeplibs " in
716404007ebaSmrg	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
716504007ebaSmrg	      *)
716604007ebaSmrg		case " $new_libs " in
716704007ebaSmrg		*" $deplib "*) ;;
716804007ebaSmrg		*) new_libs="$deplib $new_libs" ;;
716904007ebaSmrg		esac
717004007ebaSmrg		;;
717104007ebaSmrg	      esac
717204007ebaSmrg	      ;;
717304007ebaSmrg	    esac
717404007ebaSmrg	  done
717504007ebaSmrg	  tmp_libs=
717604007ebaSmrg	  for deplib in $new_libs; do
717704007ebaSmrg	    case $deplib in
717804007ebaSmrg	    -L*)
717904007ebaSmrg	      case " $tmp_libs " in
718004007ebaSmrg	      *" $deplib "*) ;;
718104007ebaSmrg	      *) func_append tmp_libs " $deplib" ;;
718204007ebaSmrg	      esac
718304007ebaSmrg	      ;;
718404007ebaSmrg	    *) func_append tmp_libs " $deplib" ;;
718504007ebaSmrg	    esac
718604007ebaSmrg	  done
718704007ebaSmrg	  eval $var=\"$tmp_libs\"
718804007ebaSmrg	done # for var
718904007ebaSmrg      fi
719004007ebaSmrg      # Last step: remove runtime libs from dependency_libs
719104007ebaSmrg      # (they stay in deplibs)
719204007ebaSmrg      tmp_libs=
719304007ebaSmrg      for i in $dependency_libs ; do
719404007ebaSmrg	case " $predeps $postdeps $compiler_lib_search_path " in
719504007ebaSmrg	*" $i "*)
719604007ebaSmrg	  i=""
719704007ebaSmrg	  ;;
719804007ebaSmrg	esac
719904007ebaSmrg	if test -n "$i" ; then
720004007ebaSmrg	  func_append tmp_libs " $i"
720104007ebaSmrg	fi
720204007ebaSmrg      done
720304007ebaSmrg      dependency_libs=$tmp_libs
720404007ebaSmrg    done # for pass
720504007ebaSmrg    if test "$linkmode" = prog; then
720604007ebaSmrg      dlfiles="$newdlfiles"
720704007ebaSmrg    fi
720804007ebaSmrg    if test "$linkmode" = prog || test "$linkmode" = lib; then
720904007ebaSmrg      dlprefiles="$newdlprefiles"
721004007ebaSmrg    fi
721104007ebaSmrg
721204007ebaSmrg    case $linkmode in
721304007ebaSmrg    oldlib)
721404007ebaSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
721504007ebaSmrg	func_warning "\`-dlopen' is ignored for archives"
721604007ebaSmrg      fi
721704007ebaSmrg
721804007ebaSmrg      case " $deplibs" in
721904007ebaSmrg      *\ -l* | *\ -L*)
722004007ebaSmrg	func_warning "\`-l' and \`-L' are ignored for archives" ;;
722104007ebaSmrg      esac
722204007ebaSmrg
722304007ebaSmrg      test -n "$rpath" && \
722404007ebaSmrg	func_warning "\`-rpath' is ignored for archives"
722504007ebaSmrg
722604007ebaSmrg      test -n "$xrpath" && \
722704007ebaSmrg	func_warning "\`-R' is ignored for archives"
722804007ebaSmrg
722904007ebaSmrg      test -n "$vinfo" && \
723004007ebaSmrg	func_warning "\`-version-info/-version-number' is ignored for archives"
723104007ebaSmrg
723204007ebaSmrg      test -n "$release" && \
723304007ebaSmrg	func_warning "\`-release' is ignored for archives"
723404007ebaSmrg
723504007ebaSmrg      test -n "$export_symbols$export_symbols_regex" && \
723604007ebaSmrg	func_warning "\`-export-symbols' is ignored for archives"
723704007ebaSmrg
723804007ebaSmrg      # Now set the variables for building old libraries.
723904007ebaSmrg      build_libtool_libs=no
724004007ebaSmrg      oldlibs="$output"
724104007ebaSmrg      func_append objs "$old_deplibs"
724204007ebaSmrg      ;;
724304007ebaSmrg
724404007ebaSmrg    lib)
724504007ebaSmrg      # Make sure we only generate libraries of the form `libNAME.la'.
724604007ebaSmrg      case $outputname in
724704007ebaSmrg      lib*)
724804007ebaSmrg	func_stripname 'lib' '.la' "$outputname"
724904007ebaSmrg	name=$func_stripname_result
725004007ebaSmrg	eval shared_ext=\"$shrext_cmds\"
725104007ebaSmrg	eval libname=\"$libname_spec\"
725204007ebaSmrg	;;
725304007ebaSmrg      *)
725404007ebaSmrg	test "$module" = no && \
725504007ebaSmrg	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
725604007ebaSmrg
725704007ebaSmrg	if test "$need_lib_prefix" != no; then
725804007ebaSmrg	  # Add the "lib" prefix for modules if required
725904007ebaSmrg	  func_stripname '' '.la' "$outputname"
726004007ebaSmrg	  name=$func_stripname_result
726104007ebaSmrg	  eval shared_ext=\"$shrext_cmds\"
726204007ebaSmrg	  eval libname=\"$libname_spec\"
726304007ebaSmrg	else
726404007ebaSmrg	  func_stripname '' '.la' "$outputname"
726504007ebaSmrg	  libname=$func_stripname_result
726604007ebaSmrg	fi
726704007ebaSmrg	;;
726804007ebaSmrg      esac
726904007ebaSmrg
727004007ebaSmrg      if test -n "$objs"; then
727104007ebaSmrg	if test "$deplibs_check_method" != pass_all; then
727204007ebaSmrg	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
727304007ebaSmrg	else
727404007ebaSmrg	  echo
727504007ebaSmrg	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
727604007ebaSmrg	  $ECHO "*** objects $objs is not portable!"
727704007ebaSmrg	  func_append libobjs " $objs"
727804007ebaSmrg	fi
727904007ebaSmrg      fi
728004007ebaSmrg
728104007ebaSmrg      test "$dlself" != no && \
728204007ebaSmrg	func_warning "\`-dlopen self' is ignored for libtool libraries"
728304007ebaSmrg
728404007ebaSmrg      set dummy $rpath
728504007ebaSmrg      shift
728604007ebaSmrg      test "$#" -gt 1 && \
728704007ebaSmrg	func_warning "ignoring multiple \`-rpath's for a libtool library"
728804007ebaSmrg
728904007ebaSmrg      install_libdir="$1"
729004007ebaSmrg
729104007ebaSmrg      oldlibs=
729204007ebaSmrg      if test -z "$rpath"; then
729304007ebaSmrg	if test "$build_libtool_libs" = yes; then
729404007ebaSmrg	  # Building a libtool convenience library.
729504007ebaSmrg	  # Some compilers have problems with a `.al' extension so
729604007ebaSmrg	  # convenience libraries should have the same extension an
729704007ebaSmrg	  # archive normally would.
729804007ebaSmrg	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
729904007ebaSmrg	  build_libtool_libs=convenience
730004007ebaSmrg	  build_old_libs=yes
730104007ebaSmrg	fi
730204007ebaSmrg
730304007ebaSmrg	test -n "$vinfo" && \
730404007ebaSmrg	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
730504007ebaSmrg
730604007ebaSmrg	test -n "$release" && \
730704007ebaSmrg	  func_warning "\`-release' is ignored for convenience libraries"
730804007ebaSmrg      else
730904007ebaSmrg
731004007ebaSmrg	# Parse the version information argument.
731104007ebaSmrg	save_ifs="$IFS"; IFS=':'
731204007ebaSmrg	set dummy $vinfo 0 0 0
731304007ebaSmrg	shift
731404007ebaSmrg	IFS="$save_ifs"
731504007ebaSmrg
731604007ebaSmrg	test -n "$7" && \
731704007ebaSmrg	  func_fatal_help "too many parameters to \`-version-info'"
731804007ebaSmrg
731904007ebaSmrg	# convert absolute version numbers to libtool ages
732004007ebaSmrg	# this retains compatibility with .la files and attempts
732104007ebaSmrg	# to make the code below a bit more comprehensible
732204007ebaSmrg
732304007ebaSmrg	case $vinfo_number in
732404007ebaSmrg	yes)
732504007ebaSmrg	  number_major="$1"
732604007ebaSmrg	  number_minor="$2"
732704007ebaSmrg	  number_revision="$3"
732804007ebaSmrg	  #
732904007ebaSmrg	  # There are really only two kinds -- those that
733004007ebaSmrg	  # use the current revision as the major version
733104007ebaSmrg	  # and those that subtract age and use age as
733204007ebaSmrg	  # a minor version.  But, then there is irix
733304007ebaSmrg	  # which has an extra 1 added just for fun
733404007ebaSmrg	  #
733504007ebaSmrg	  case $version_type in
733604007ebaSmrg	  # correct linux to gnu/linux during the next big refactor
733704007ebaSmrg	  darwin|linux|osf|windows|none)
733804007ebaSmrg	    func_arith $number_major + $number_minor
733904007ebaSmrg	    current=$func_arith_result
734004007ebaSmrg	    age="$number_minor"
734104007ebaSmrg	    revision="$number_revision"
734204007ebaSmrg	    ;;
734304007ebaSmrg	  freebsd-aout|freebsd-elf|qnx|sunos)
734404007ebaSmrg	    current="$number_major"
734504007ebaSmrg	    revision="$number_minor"
734604007ebaSmrg	    age="0"
734704007ebaSmrg	    ;;
734804007ebaSmrg	  irix|nonstopux)
734904007ebaSmrg	    func_arith $number_major + $number_minor
735004007ebaSmrg	    current=$func_arith_result
735104007ebaSmrg	    age="$number_minor"
735204007ebaSmrg	    revision="$number_minor"
735304007ebaSmrg	    lt_irix_increment=no
735404007ebaSmrg	    ;;
735504007ebaSmrg	  *)
735604007ebaSmrg	    func_fatal_configuration "$modename: unknown library version type \`$version_type'"
735704007ebaSmrg	    ;;
735804007ebaSmrg	  esac
735904007ebaSmrg	  ;;
736004007ebaSmrg	no)
736104007ebaSmrg	  current="$1"
736204007ebaSmrg	  revision="$2"
736304007ebaSmrg	  age="$3"
736404007ebaSmrg	  ;;
736504007ebaSmrg	esac
736604007ebaSmrg
736704007ebaSmrg	# Check that each of the things are valid numbers.
736804007ebaSmrg	case $current in
736904007ebaSmrg	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]) ;;
737004007ebaSmrg	*)
737104007ebaSmrg	  func_error "CURRENT \`$current' must be a nonnegative integer"
737204007ebaSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
737304007ebaSmrg	  ;;
737404007ebaSmrg	esac
737504007ebaSmrg
737604007ebaSmrg	case $revision in
737704007ebaSmrg	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]) ;;
737804007ebaSmrg	*)
737904007ebaSmrg	  func_error "REVISION \`$revision' must be a nonnegative integer"
738004007ebaSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
738104007ebaSmrg	  ;;
738204007ebaSmrg	esac
738304007ebaSmrg
738404007ebaSmrg	case $age in
738504007ebaSmrg	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]) ;;
738604007ebaSmrg	*)
738704007ebaSmrg	  func_error "AGE \`$age' must be a nonnegative integer"
738804007ebaSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
738904007ebaSmrg	  ;;
739004007ebaSmrg	esac
739104007ebaSmrg
739204007ebaSmrg	if test "$age" -gt "$current"; then
739304007ebaSmrg	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
739404007ebaSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
739504007ebaSmrg	fi
739604007ebaSmrg
739704007ebaSmrg	# Calculate the version variables.
739804007ebaSmrg	major=
739904007ebaSmrg	versuffix=
740004007ebaSmrg	verstring=
740104007ebaSmrg	case $version_type in
740204007ebaSmrg	none) ;;
740304007ebaSmrg
740404007ebaSmrg	darwin)
740504007ebaSmrg	  # Like Linux, but with the current version available in
740604007ebaSmrg	  # verstring for coding it into the library header
740704007ebaSmrg	  func_arith $current - $age
740804007ebaSmrg	  major=.$func_arith_result
740904007ebaSmrg	  versuffix="$major.$age.$revision"
741004007ebaSmrg	  # Darwin ld doesn't like 0 for these options...
741104007ebaSmrg	  func_arith $current + 1
741204007ebaSmrg	  minor_current=$func_arith_result
741304007ebaSmrg	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
741404007ebaSmrg	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
741504007ebaSmrg	  ;;
741604007ebaSmrg
741704007ebaSmrg	freebsd-aout)
741804007ebaSmrg	  major=".$current"
741904007ebaSmrg	  versuffix=".$current.$revision";
742004007ebaSmrg	  ;;
742104007ebaSmrg
742204007ebaSmrg	freebsd-elf)
742304007ebaSmrg	  major=".$current"
742404007ebaSmrg	  versuffix=".$current"
742504007ebaSmrg	  ;;
742604007ebaSmrg
742704007ebaSmrg	irix | nonstopux)
742804007ebaSmrg	  if test "X$lt_irix_increment" = "Xno"; then
742904007ebaSmrg	    func_arith $current - $age
743004007ebaSmrg	  else
743104007ebaSmrg	    func_arith $current - $age + 1
743204007ebaSmrg	  fi
743304007ebaSmrg	  major=$func_arith_result
743404007ebaSmrg
743504007ebaSmrg	  case $version_type in
743604007ebaSmrg	    nonstopux) verstring_prefix=nonstopux ;;
743704007ebaSmrg	    *)         verstring_prefix=sgi ;;
743804007ebaSmrg	  esac
743904007ebaSmrg	  verstring="$verstring_prefix$major.$revision"
744004007ebaSmrg
744104007ebaSmrg	  # Add in all the interfaces that we are compatible with.
744204007ebaSmrg	  loop=$revision
744304007ebaSmrg	  while test "$loop" -ne 0; do
744404007ebaSmrg	    func_arith $revision - $loop
744504007ebaSmrg	    iface=$func_arith_result
744604007ebaSmrg	    func_arith $loop - 1
744704007ebaSmrg	    loop=$func_arith_result
744804007ebaSmrg	    verstring="$verstring_prefix$major.$iface:$verstring"
744904007ebaSmrg	  done
745004007ebaSmrg
745104007ebaSmrg	  # Before this point, $major must not contain `.'.
745204007ebaSmrg	  major=.$major
745304007ebaSmrg	  versuffix="$major.$revision"
745404007ebaSmrg	  ;;
745504007ebaSmrg
745604007ebaSmrg	linux) # correct to gnu/linux during the next big refactor
745704007ebaSmrg	  func_arith $current - $age
745804007ebaSmrg	  major=.$func_arith_result
745904007ebaSmrg	  versuffix="$major.$age.$revision"
746004007ebaSmrg	  ;;
746104007ebaSmrg
746204007ebaSmrg	osf)
746304007ebaSmrg	  func_arith $current - $age
746404007ebaSmrg	  major=.$func_arith_result
746504007ebaSmrg	  versuffix=".$current.$age.$revision"
746604007ebaSmrg	  verstring="$current.$age.$revision"
746704007ebaSmrg
746804007ebaSmrg	  # Add in all the interfaces that we are compatible with.
746904007ebaSmrg	  loop=$age
747004007ebaSmrg	  while test "$loop" -ne 0; do
747104007ebaSmrg	    func_arith $current - $loop
747204007ebaSmrg	    iface=$func_arith_result
747304007ebaSmrg	    func_arith $loop - 1
747404007ebaSmrg	    loop=$func_arith_result
747504007ebaSmrg	    verstring="$verstring:${iface}.0"
747604007ebaSmrg	  done
747704007ebaSmrg
747804007ebaSmrg	  # Make executables depend on our current version.
747904007ebaSmrg	  func_append verstring ":${current}.0"
748004007ebaSmrg	  ;;
748104007ebaSmrg
748204007ebaSmrg	qnx)
748304007ebaSmrg	  major=".$current"
748404007ebaSmrg	  versuffix=".$current"
748504007ebaSmrg	  ;;
748604007ebaSmrg
748704007ebaSmrg	sunos)
748804007ebaSmrg	  major=".$current"
748904007ebaSmrg	  versuffix=".$current.$revision"
749004007ebaSmrg	  ;;
749104007ebaSmrg
749204007ebaSmrg	windows)
749304007ebaSmrg	  # Use '-' rather than '.', since we only want one
749404007ebaSmrg	  # extension on DOS 8.3 filesystems.
749504007ebaSmrg	  func_arith $current - $age
749604007ebaSmrg	  major=$func_arith_result
749704007ebaSmrg	  versuffix="-$major"
749804007ebaSmrg	  ;;
749904007ebaSmrg
750004007ebaSmrg	*)
750104007ebaSmrg	  func_fatal_configuration "unknown library version type \`$version_type'"
750204007ebaSmrg	  ;;
750304007ebaSmrg	esac
750404007ebaSmrg
750504007ebaSmrg	# Clear the version info if we defaulted, and they specified a release.
750604007ebaSmrg	if test -z "$vinfo" && test -n "$release"; then
750704007ebaSmrg	  major=
750804007ebaSmrg	  case $version_type in
750904007ebaSmrg	  darwin)
751004007ebaSmrg	    # we can't check for "0.0" in archive_cmds due to quoting
751104007ebaSmrg	    # problems, so we reset it completely
751204007ebaSmrg	    verstring=
751304007ebaSmrg	    ;;
751404007ebaSmrg	  *)
751504007ebaSmrg	    verstring="0.0"
751604007ebaSmrg	    ;;
751704007ebaSmrg	  esac
751804007ebaSmrg	  if test "$need_version" = no; then
751904007ebaSmrg	    versuffix=
752004007ebaSmrg	  else
752104007ebaSmrg	    versuffix=".0.0"
752204007ebaSmrg	  fi
752304007ebaSmrg	fi
752404007ebaSmrg
752504007ebaSmrg	# Remove version info from name if versioning should be avoided
752604007ebaSmrg	if test "$avoid_version" = yes && test "$need_version" = no; then
752704007ebaSmrg	  major=
752804007ebaSmrg	  versuffix=
752904007ebaSmrg	  verstring=""
753004007ebaSmrg	fi
753104007ebaSmrg
753204007ebaSmrg	# Check to see if the archive will have undefined symbols.
753304007ebaSmrg	if test "$allow_undefined" = yes; then
753404007ebaSmrg	  if test "$allow_undefined_flag" = unsupported; then
753504007ebaSmrg	    func_warning "undefined symbols not allowed in $host shared libraries"
753604007ebaSmrg	    build_libtool_libs=no
753704007ebaSmrg	    build_old_libs=yes
753804007ebaSmrg	  fi
753904007ebaSmrg	else
754004007ebaSmrg	  # Don't allow undefined symbols.
754104007ebaSmrg	  allow_undefined_flag="$no_undefined_flag"
754204007ebaSmrg	fi
754304007ebaSmrg
754404007ebaSmrg      fi
754504007ebaSmrg
754604007ebaSmrg      func_generate_dlsyms "$libname" "$libname" "yes"
754704007ebaSmrg      func_append libobjs " $symfileobj"
754804007ebaSmrg      test "X$libobjs" = "X " && libobjs=
754904007ebaSmrg
755004007ebaSmrg      if test "$opt_mode" != relink; then
755104007ebaSmrg	# Remove our outputs, but don't remove object files since they
755204007ebaSmrg	# may have been created when compiling PIC objects.
755304007ebaSmrg	removelist=
755404007ebaSmrg	tempremovelist=`$ECHO "$output_objdir/*"`
755504007ebaSmrg	for p in $tempremovelist; do
755604007ebaSmrg	  case $p in
755704007ebaSmrg	    *.$objext | *.gcno)
755804007ebaSmrg	       ;;
755904007ebaSmrg	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
756004007ebaSmrg	       if test "X$precious_files_regex" != "X"; then
756104007ebaSmrg		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
756204007ebaSmrg		 then
756304007ebaSmrg		   continue
756404007ebaSmrg		 fi
756504007ebaSmrg	       fi
756604007ebaSmrg	       func_append removelist " $p"
756704007ebaSmrg	       ;;
756804007ebaSmrg	    *) ;;
756904007ebaSmrg	  esac
757004007ebaSmrg	done
757104007ebaSmrg	test -n "$removelist" && \
757204007ebaSmrg	  func_show_eval "${RM}r \$removelist"
757304007ebaSmrg      fi
757404007ebaSmrg
757504007ebaSmrg      # Now set the variables for building old libraries.
757604007ebaSmrg      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
757704007ebaSmrg	func_append oldlibs " $output_objdir/$libname.$libext"
757804007ebaSmrg
757904007ebaSmrg	# Transform .lo files to .o files.
758004007ebaSmrg	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
758104007ebaSmrg      fi
758204007ebaSmrg
758304007ebaSmrg      # Eliminate all temporary directories.
758404007ebaSmrg      #for path in $notinst_path; do
758504007ebaSmrg      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
758604007ebaSmrg      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
758704007ebaSmrg      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
758804007ebaSmrg      #done
758904007ebaSmrg
759004007ebaSmrg      if test -n "$xrpath"; then
759104007ebaSmrg	# If the user specified any rpath flags, then add them.
759204007ebaSmrg	temp_xrpath=
759304007ebaSmrg	for libdir in $xrpath; do
759404007ebaSmrg	  func_replace_sysroot "$libdir"
759504007ebaSmrg	  func_append temp_xrpath " -R$func_replace_sysroot_result"
759604007ebaSmrg	  case "$finalize_rpath " in
759704007ebaSmrg	  *" $libdir "*) ;;
759804007ebaSmrg	  *) func_append finalize_rpath " $libdir" ;;
759904007ebaSmrg	  esac
760004007ebaSmrg	done
760104007ebaSmrg	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
760204007ebaSmrg	  dependency_libs="$temp_xrpath $dependency_libs"
760304007ebaSmrg	fi
760404007ebaSmrg      fi
760504007ebaSmrg
760604007ebaSmrg      # Make sure dlfiles contains only unique files that won't be dlpreopened
760704007ebaSmrg      old_dlfiles="$dlfiles"
760804007ebaSmrg      dlfiles=
760904007ebaSmrg      for lib in $old_dlfiles; do
761004007ebaSmrg	case " $dlprefiles $dlfiles " in
761104007ebaSmrg	*" $lib "*) ;;
761204007ebaSmrg	*) func_append dlfiles " $lib" ;;
761304007ebaSmrg	esac
761404007ebaSmrg      done
761504007ebaSmrg
761604007ebaSmrg      # Make sure dlprefiles contains only unique files
761704007ebaSmrg      old_dlprefiles="$dlprefiles"
761804007ebaSmrg      dlprefiles=
761904007ebaSmrg      for lib in $old_dlprefiles; do
762004007ebaSmrg	case "$dlprefiles " in
762104007ebaSmrg	*" $lib "*) ;;
762204007ebaSmrg	*) func_append dlprefiles " $lib" ;;
762304007ebaSmrg	esac
762404007ebaSmrg      done
762504007ebaSmrg
762604007ebaSmrg      if test "$build_libtool_libs" = yes; then
762704007ebaSmrg	if test -n "$rpath"; then
762804007ebaSmrg	  case $host in
762904007ebaSmrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
763004007ebaSmrg	    # these systems don't actually have a c library (as such)!
763104007ebaSmrg	    ;;
763204007ebaSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
763304007ebaSmrg	    # Rhapsody C library is in the System framework
763404007ebaSmrg	    func_append deplibs " System.ltframework"
763504007ebaSmrg	    ;;
763604007ebaSmrg	  *-*-netbsd*)
763704007ebaSmrg	    # Don't link with libc until the a.out ld.so is fixed.
763804007ebaSmrg	    ;;
763904007ebaSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
764004007ebaSmrg	    # Do not include libc due to us having libc/libc_r.
764104007ebaSmrg	    ;;
764204007ebaSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
764304007ebaSmrg	    # Causes problems with __ctype
764404007ebaSmrg	    ;;
764504007ebaSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
764604007ebaSmrg	    # Compiler inserts libc in the correct place for threads to work
764704007ebaSmrg	    ;;
764804007ebaSmrg	  *)
764904007ebaSmrg	    # Add libc to deplibs on all other systems if necessary.
765004007ebaSmrg	    if test "$build_libtool_need_lc" = "yes"; then
765104007ebaSmrg	      func_append deplibs " -lc"
765204007ebaSmrg	    fi
765304007ebaSmrg	    ;;
765404007ebaSmrg	  esac
765504007ebaSmrg	fi
765604007ebaSmrg
765704007ebaSmrg	# Transform deplibs into only deplibs that can be linked in shared.
765804007ebaSmrg	name_save=$name
765904007ebaSmrg	libname_save=$libname
766004007ebaSmrg	release_save=$release
766104007ebaSmrg	versuffix_save=$versuffix
766204007ebaSmrg	major_save=$major
766304007ebaSmrg	# I'm not sure if I'm treating the release correctly.  I think
766404007ebaSmrg	# release should show up in the -l (ie -lgmp5) so we don't want to
766504007ebaSmrg	# add it in twice.  Is that correct?
766604007ebaSmrg	release=""
766704007ebaSmrg	versuffix=""
766804007ebaSmrg	major=""
766904007ebaSmrg	newdeplibs=
767004007ebaSmrg	droppeddeps=no
767104007ebaSmrg	case $deplibs_check_method in
767204007ebaSmrg	pass_all)
767304007ebaSmrg	  # Don't check for shared/static.  Everything works.
767404007ebaSmrg	  # This might be a little naive.  We might want to check
767504007ebaSmrg	  # whether the library exists or not.  But this is on
767604007ebaSmrg	  # osf3 & osf4 and I'm not really sure... Just
767704007ebaSmrg	  # implementing what was already the behavior.
767804007ebaSmrg	  newdeplibs=$deplibs
767904007ebaSmrg	  ;;
768004007ebaSmrg	test_compile)
768104007ebaSmrg	  # This code stresses the "libraries are programs" paradigm to its
768204007ebaSmrg	  # limits. Maybe even breaks it.  We compile a program, linking it
768304007ebaSmrg	  # against the deplibs as a proxy for the library.  Then we can check
768404007ebaSmrg	  # whether they linked in statically or dynamically with ldd.
768504007ebaSmrg	  $opt_dry_run || $RM conftest.c
768604007ebaSmrg	  cat > conftest.c <<EOF
768704007ebaSmrg	  int main() { return 0; }
768804007ebaSmrgEOF
768904007ebaSmrg	  $opt_dry_run || $RM conftest
769004007ebaSmrg	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
769104007ebaSmrg	    ldd_output=`ldd conftest`
769204007ebaSmrg	    for i in $deplibs; do
769304007ebaSmrg	      case $i in
769404007ebaSmrg	      -l*)
769504007ebaSmrg		func_stripname -l '' "$i"
769604007ebaSmrg		name=$func_stripname_result
769704007ebaSmrg		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
769804007ebaSmrg		  case " $predeps $postdeps " in
769904007ebaSmrg		  *" $i "*)
770004007ebaSmrg		    func_append newdeplibs " $i"
770104007ebaSmrg		    i=""
770204007ebaSmrg		    ;;
770304007ebaSmrg		  esac
770404007ebaSmrg		fi
770504007ebaSmrg		if test -n "$i" ; then
770604007ebaSmrg		  libname=`eval "\\$ECHO \"$libname_spec\""`
770704007ebaSmrg		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
770804007ebaSmrg		  set dummy $deplib_matches; shift
770904007ebaSmrg		  deplib_match=$1
771004007ebaSmrg		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
771104007ebaSmrg		    func_append newdeplibs " $i"
771204007ebaSmrg		  else
771304007ebaSmrg		    droppeddeps=yes
771404007ebaSmrg		    echo
771504007ebaSmrg		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
771604007ebaSmrg		    echo "*** I have the capability to make that library automatically link in when"
771704007ebaSmrg		    echo "*** you link to this library.  But I can only do this if you have a"
771804007ebaSmrg		    echo "*** shared version of the library, which I believe you do not have"
771904007ebaSmrg		    echo "*** because a test_compile did reveal that the linker did not use it for"
772004007ebaSmrg		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
772104007ebaSmrg		  fi
772204007ebaSmrg		fi
772304007ebaSmrg		;;
772404007ebaSmrg	      *)
772504007ebaSmrg		func_append newdeplibs " $i"
772604007ebaSmrg		;;
772704007ebaSmrg	      esac
772804007ebaSmrg	    done
772904007ebaSmrg	  else
773004007ebaSmrg	    # Error occurred in the first compile.  Let's try to salvage
773104007ebaSmrg	    # the situation: Compile a separate program for each library.
773204007ebaSmrg	    for i in $deplibs; do
773304007ebaSmrg	      case $i in
773404007ebaSmrg	      -l*)
773504007ebaSmrg		func_stripname -l '' "$i"
773604007ebaSmrg		name=$func_stripname_result
773704007ebaSmrg		$opt_dry_run || $RM conftest
773804007ebaSmrg		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
773904007ebaSmrg		  ldd_output=`ldd conftest`
774004007ebaSmrg		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
774104007ebaSmrg		    case " $predeps $postdeps " in
774204007ebaSmrg		    *" $i "*)
774304007ebaSmrg		      func_append newdeplibs " $i"
774404007ebaSmrg		      i=""
774504007ebaSmrg		      ;;
774604007ebaSmrg		    esac
774704007ebaSmrg		  fi
774804007ebaSmrg		  if test -n "$i" ; then
774904007ebaSmrg		    libname=`eval "\\$ECHO \"$libname_spec\""`
775004007ebaSmrg		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
775104007ebaSmrg		    set dummy $deplib_matches; shift
775204007ebaSmrg		    deplib_match=$1
775304007ebaSmrg		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
775404007ebaSmrg		      func_append newdeplibs " $i"
775504007ebaSmrg		    else
775604007ebaSmrg		      droppeddeps=yes
775704007ebaSmrg		      echo
775804007ebaSmrg		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
775904007ebaSmrg		      echo "*** I have the capability to make that library automatically link in when"
776004007ebaSmrg		      echo "*** you link to this library.  But I can only do this if you have a"
776104007ebaSmrg		      echo "*** shared version of the library, which you do not appear to have"
776204007ebaSmrg		      echo "*** because a test_compile did reveal that the linker did not use this one"
776304007ebaSmrg		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
776404007ebaSmrg		    fi
776504007ebaSmrg		  fi
776604007ebaSmrg		else
776704007ebaSmrg		  droppeddeps=yes
776804007ebaSmrg		  echo
776904007ebaSmrg		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
777004007ebaSmrg		  echo "*** make it link in!  You will probably need to install it or some"
777104007ebaSmrg		  echo "*** library that it depends on before this library will be fully"
777204007ebaSmrg		  echo "*** functional.  Installing it before continuing would be even better."
777304007ebaSmrg		fi
777404007ebaSmrg		;;
777504007ebaSmrg	      *)
777604007ebaSmrg		func_append newdeplibs " $i"
777704007ebaSmrg		;;
777804007ebaSmrg	      esac
777904007ebaSmrg	    done
778004007ebaSmrg	  fi
778104007ebaSmrg	  ;;
778204007ebaSmrg	file_magic*)
778304007ebaSmrg	  set dummy $deplibs_check_method; shift
778404007ebaSmrg	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
778504007ebaSmrg	  for a_deplib in $deplibs; do
778604007ebaSmrg	    case $a_deplib in
778704007ebaSmrg	    -l*)
778804007ebaSmrg	      func_stripname -l '' "$a_deplib"
778904007ebaSmrg	      name=$func_stripname_result
779004007ebaSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
779104007ebaSmrg		case " $predeps $postdeps " in
779204007ebaSmrg		*" $a_deplib "*)
779304007ebaSmrg		  func_append newdeplibs " $a_deplib"
779404007ebaSmrg		  a_deplib=""
779504007ebaSmrg		  ;;
779604007ebaSmrg		esac
779704007ebaSmrg	      fi
779804007ebaSmrg	      if test -n "$a_deplib" ; then
779904007ebaSmrg		libname=`eval "\\$ECHO \"$libname_spec\""`
780004007ebaSmrg		if test -n "$file_magic_glob"; then
780104007ebaSmrg		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
780204007ebaSmrg		else
780304007ebaSmrg		  libnameglob=$libname
780404007ebaSmrg		fi
780504007ebaSmrg		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
780604007ebaSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
780704007ebaSmrg		  if test "$want_nocaseglob" = yes; then
780804007ebaSmrg		    shopt -s nocaseglob
780904007ebaSmrg		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
781004007ebaSmrg		    $nocaseglob
781104007ebaSmrg		  else
781204007ebaSmrg		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
781304007ebaSmrg		  fi
781404007ebaSmrg		  for potent_lib in $potential_libs; do
781504007ebaSmrg		      # Follow soft links.
781604007ebaSmrg		      if ls -lLd "$potent_lib" 2>/dev/null |
781704007ebaSmrg			 $GREP " -> " >/dev/null; then
781804007ebaSmrg			continue
781904007ebaSmrg		      fi
782004007ebaSmrg		      # The statement above tries to avoid entering an
782104007ebaSmrg		      # endless loop below, in case of cyclic links.
782204007ebaSmrg		      # We might still enter an endless loop, since a link
782304007ebaSmrg		      # loop can be closed while we follow links,
782404007ebaSmrg		      # but so what?
782504007ebaSmrg		      potlib="$potent_lib"
782604007ebaSmrg		      while test -h "$potlib" 2>/dev/null; do
782704007ebaSmrg			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
782804007ebaSmrg			case $potliblink in
782904007ebaSmrg			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
783004007ebaSmrg			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
783104007ebaSmrg			esac
783204007ebaSmrg		      done
783304007ebaSmrg		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
783404007ebaSmrg			 $SED -e 10q |
783504007ebaSmrg			 $EGREP "$file_magic_regex" > /dev/null; then
783604007ebaSmrg			func_append newdeplibs " $a_deplib"
783704007ebaSmrg			a_deplib=""
783804007ebaSmrg			break 2
783904007ebaSmrg		      fi
784004007ebaSmrg		  done
784104007ebaSmrg		done
784204007ebaSmrg	      fi
784304007ebaSmrg	      if test -n "$a_deplib" ; then
784404007ebaSmrg		droppeddeps=yes
784504007ebaSmrg		echo
784604007ebaSmrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
784704007ebaSmrg		echo "*** I have the capability to make that library automatically link in when"
784804007ebaSmrg		echo "*** you link to this library.  But I can only do this if you have a"
784904007ebaSmrg		echo "*** shared version of the library, which you do not appear to have"
785004007ebaSmrg		echo "*** because I did check the linker path looking for a file starting"
785104007ebaSmrg		if test -z "$potlib" ; then
785204007ebaSmrg		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
785304007ebaSmrg		else
785404007ebaSmrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
785504007ebaSmrg		  $ECHO "*** using a file magic. Last file checked: $potlib"
785604007ebaSmrg		fi
785704007ebaSmrg	      fi
785804007ebaSmrg	      ;;
785904007ebaSmrg	    *)
786004007ebaSmrg	      # Add a -L argument.
786104007ebaSmrg	      func_append newdeplibs " $a_deplib"
786204007ebaSmrg	      ;;
786304007ebaSmrg	    esac
786404007ebaSmrg	  done # Gone through all deplibs.
786504007ebaSmrg	  ;;
786604007ebaSmrg	match_pattern*)
786704007ebaSmrg	  set dummy $deplibs_check_method; shift
786804007ebaSmrg	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
786904007ebaSmrg	  for a_deplib in $deplibs; do
787004007ebaSmrg	    case $a_deplib in
787104007ebaSmrg	    -l*)
787204007ebaSmrg	      func_stripname -l '' "$a_deplib"
787304007ebaSmrg	      name=$func_stripname_result
787404007ebaSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
787504007ebaSmrg		case " $predeps $postdeps " in
787604007ebaSmrg		*" $a_deplib "*)
787704007ebaSmrg		  func_append newdeplibs " $a_deplib"
787804007ebaSmrg		  a_deplib=""
787904007ebaSmrg		  ;;
788004007ebaSmrg		esac
788104007ebaSmrg	      fi
788204007ebaSmrg	      if test -n "$a_deplib" ; then
788304007ebaSmrg		libname=`eval "\\$ECHO \"$libname_spec\""`
788404007ebaSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
788504007ebaSmrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
788604007ebaSmrg		  for potent_lib in $potential_libs; do
788704007ebaSmrg		    potlib="$potent_lib" # see symlink-check above in file_magic test
788804007ebaSmrg		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
788904007ebaSmrg		       $EGREP "$match_pattern_regex" > /dev/null; then
789004007ebaSmrg		      func_append newdeplibs " $a_deplib"
789104007ebaSmrg		      a_deplib=""
789204007ebaSmrg		      break 2
789304007ebaSmrg		    fi
789404007ebaSmrg		  done
789504007ebaSmrg		done
789604007ebaSmrg	      fi
789704007ebaSmrg	      if test -n "$a_deplib" ; then
789804007ebaSmrg		droppeddeps=yes
789904007ebaSmrg		echo
790004007ebaSmrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
790104007ebaSmrg		echo "*** I have the capability to make that library automatically link in when"
790204007ebaSmrg		echo "*** you link to this library.  But I can only do this if you have a"
790304007ebaSmrg		echo "*** shared version of the library, which you do not appear to have"
790404007ebaSmrg		echo "*** because I did check the linker path looking for a file starting"
790504007ebaSmrg		if test -z "$potlib" ; then
790604007ebaSmrg		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
790704007ebaSmrg		else
790804007ebaSmrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
790904007ebaSmrg		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
791004007ebaSmrg		fi
791104007ebaSmrg	      fi
791204007ebaSmrg	      ;;
791304007ebaSmrg	    *)
791404007ebaSmrg	      # Add a -L argument.
791504007ebaSmrg	      func_append newdeplibs " $a_deplib"
791604007ebaSmrg	      ;;
791704007ebaSmrg	    esac
791804007ebaSmrg	  done # Gone through all deplibs.
791904007ebaSmrg	  ;;
792004007ebaSmrg	none | unknown | *)
792104007ebaSmrg	  newdeplibs=""
792204007ebaSmrg	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
792304007ebaSmrg	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
792404007ebaSmrg	    for i in $predeps $postdeps ; do
792504007ebaSmrg	      # can't use Xsed below, because $i might contain '/'
792604007ebaSmrg	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
792704007ebaSmrg	    done
792804007ebaSmrg	  fi
792904007ebaSmrg	  case $tmp_deplibs in
793004007ebaSmrg	  *[!\	\ ]*)
793104007ebaSmrg	    echo
793204007ebaSmrg	    if test "X$deplibs_check_method" = "Xnone"; then
793304007ebaSmrg	      echo "*** Warning: inter-library dependencies are not supported in this platform."
793404007ebaSmrg	    else
793504007ebaSmrg	      echo "*** Warning: inter-library dependencies are not known to be supported."
793604007ebaSmrg	    fi
793704007ebaSmrg	    echo "*** All declared inter-library dependencies are being dropped."
793804007ebaSmrg	    droppeddeps=yes
793904007ebaSmrg	    ;;
794004007ebaSmrg	  esac
794104007ebaSmrg	  ;;
794204007ebaSmrg	esac
794304007ebaSmrg	versuffix=$versuffix_save
794404007ebaSmrg	major=$major_save
794504007ebaSmrg	release=$release_save
794604007ebaSmrg	libname=$libname_save
794704007ebaSmrg	name=$name_save
794804007ebaSmrg
794904007ebaSmrg	case $host in
795004007ebaSmrg	*-*-rhapsody* | *-*-darwin1.[012])
795104007ebaSmrg	  # On Rhapsody replace the C library with the System framework
795204007ebaSmrg	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
795304007ebaSmrg	  ;;
795404007ebaSmrg	esac
795504007ebaSmrg
795604007ebaSmrg	if test "$droppeddeps" = yes; then
795704007ebaSmrg	  if test "$module" = yes; then
795804007ebaSmrg	    echo
795904007ebaSmrg	    echo "*** Warning: libtool could not satisfy all declared inter-library"
796004007ebaSmrg	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
796104007ebaSmrg	    echo "*** a static module, that should work as long as the dlopening"
796204007ebaSmrg	    echo "*** application is linked with the -dlopen flag."
796304007ebaSmrg	    if test -z "$global_symbol_pipe"; then
796404007ebaSmrg	      echo
796504007ebaSmrg	      echo "*** However, this would only work if libtool was able to extract symbol"
796604007ebaSmrg	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
796704007ebaSmrg	      echo "*** not find such a program.  So, this module is probably useless."
796804007ebaSmrg	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
796904007ebaSmrg	    fi
797004007ebaSmrg	    if test "$build_old_libs" = no; then
797104007ebaSmrg	      oldlibs="$output_objdir/$libname.$libext"
797204007ebaSmrg	      build_libtool_libs=module
797304007ebaSmrg	      build_old_libs=yes
797404007ebaSmrg	    else
797504007ebaSmrg	      build_libtool_libs=no
797604007ebaSmrg	    fi
797704007ebaSmrg	  else
797804007ebaSmrg	    echo "*** The inter-library dependencies that have been dropped here will be"
797904007ebaSmrg	    echo "*** automatically added whenever a program is linked with this library"
798004007ebaSmrg	    echo "*** or is declared to -dlopen it."
798104007ebaSmrg
798204007ebaSmrg	    if test "$allow_undefined" = no; then
798304007ebaSmrg	      echo
798404007ebaSmrg	      echo "*** Since this library must not contain undefined symbols,"
798504007ebaSmrg	      echo "*** because either the platform does not support them or"
798604007ebaSmrg	      echo "*** it was explicitly requested with -no-undefined,"
798704007ebaSmrg	      echo "*** libtool will only create a static version of it."
798804007ebaSmrg	      if test "$build_old_libs" = no; then
798904007ebaSmrg		oldlibs="$output_objdir/$libname.$libext"
799004007ebaSmrg		build_libtool_libs=module
799104007ebaSmrg		build_old_libs=yes
799204007ebaSmrg	      else
799304007ebaSmrg		build_libtool_libs=no
799404007ebaSmrg	      fi
799504007ebaSmrg	    fi
799604007ebaSmrg	  fi
799704007ebaSmrg	fi
799804007ebaSmrg	# Done checking deplibs!
799904007ebaSmrg	deplibs=$newdeplibs
800004007ebaSmrg      fi
800104007ebaSmrg      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
800204007ebaSmrg      case $host in
800304007ebaSmrg	*-*-darwin*)
800404007ebaSmrg	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
800504007ebaSmrg	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
800604007ebaSmrg	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
800704007ebaSmrg	  ;;
800804007ebaSmrg      esac
800904007ebaSmrg
801004007ebaSmrg      # move library search paths that coincide with paths to not yet
801104007ebaSmrg      # installed libraries to the beginning of the library search list
801204007ebaSmrg      new_libs=
801304007ebaSmrg      for path in $notinst_path; do
801404007ebaSmrg	case " $new_libs " in
801504007ebaSmrg	*" -L$path/$objdir "*) ;;
801604007ebaSmrg	*)
801704007ebaSmrg	  case " $deplibs " in
801804007ebaSmrg	  *" -L$path/$objdir "*)
801904007ebaSmrg	    func_append new_libs " -L$path/$objdir" ;;
802004007ebaSmrg	  esac
802104007ebaSmrg	  ;;
802204007ebaSmrg	esac
802304007ebaSmrg      done
802404007ebaSmrg      for deplib in $deplibs; do
802504007ebaSmrg	case $deplib in
802604007ebaSmrg	-L*)
802704007ebaSmrg	  case " $new_libs " in
802804007ebaSmrg	  *" $deplib "*) ;;
802904007ebaSmrg	  *) func_append new_libs " $deplib" ;;
803004007ebaSmrg	  esac
803104007ebaSmrg	  ;;
803204007ebaSmrg	*) func_append new_libs " $deplib" ;;
803304007ebaSmrg	esac
803404007ebaSmrg      done
803504007ebaSmrg      deplibs="$new_libs"
803604007ebaSmrg
803704007ebaSmrg      # All the library-specific variables (install_libdir is set above).
803804007ebaSmrg      library_names=
803904007ebaSmrg      old_library=
804004007ebaSmrg      dlname=
804104007ebaSmrg
804204007ebaSmrg      # Test again, we may have decided not to build it any more
804304007ebaSmrg      if test "$build_libtool_libs" = yes; then
804404007ebaSmrg	# Remove ${wl} instances when linking with ld.
804504007ebaSmrg	# FIXME: should test the right _cmds variable.
804604007ebaSmrg	case $archive_cmds in
804704007ebaSmrg	  *\$LD\ *) wl= ;;
804804007ebaSmrg        esac
804904007ebaSmrg	if test "$hardcode_into_libs" = yes; then
805004007ebaSmrg	  # Hardcode the library paths
805104007ebaSmrg	  hardcode_libdirs=
805204007ebaSmrg	  dep_rpath=
805304007ebaSmrg	  rpath="$finalize_rpath"
805404007ebaSmrg	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
805504007ebaSmrg	  for libdir in $rpath; do
805604007ebaSmrg	    if test -n "$hardcode_libdir_flag_spec"; then
805704007ebaSmrg	      if test -n "$hardcode_libdir_separator"; then
805804007ebaSmrg		func_replace_sysroot "$libdir"
805904007ebaSmrg		libdir=$func_replace_sysroot_result
806004007ebaSmrg		if test -z "$hardcode_libdirs"; then
806104007ebaSmrg		  hardcode_libdirs="$libdir"
806204007ebaSmrg		else
806304007ebaSmrg		  # Just accumulate the unique libdirs.
806404007ebaSmrg		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
806504007ebaSmrg		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
806604007ebaSmrg		    ;;
806704007ebaSmrg		  *)
806804007ebaSmrg		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
806904007ebaSmrg		    ;;
807004007ebaSmrg		  esac
807104007ebaSmrg		fi
807204007ebaSmrg	      else
807304007ebaSmrg		eval flag=\"$hardcode_libdir_flag_spec\"
807404007ebaSmrg		func_append dep_rpath " $flag"
807504007ebaSmrg	      fi
807604007ebaSmrg	    elif test -n "$runpath_var"; then
807704007ebaSmrg	      case "$perm_rpath " in
807804007ebaSmrg	      *" $libdir "*) ;;
807904007ebaSmrg	      *) func_append perm_rpath " $libdir" ;;
808004007ebaSmrg	      esac
808104007ebaSmrg	    fi
808204007ebaSmrg	  done
808304007ebaSmrg	  # Substitute the hardcoded libdirs into the rpath.
808404007ebaSmrg	  if test -n "$hardcode_libdir_separator" &&
808504007ebaSmrg	     test -n "$hardcode_libdirs"; then
808604007ebaSmrg	    libdir="$hardcode_libdirs"
808704007ebaSmrg	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
808804007ebaSmrg	  fi
808904007ebaSmrg	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
809004007ebaSmrg	    # We should set the runpath_var.
809104007ebaSmrg	    rpath=
809204007ebaSmrg	    for dir in $perm_rpath; do
809304007ebaSmrg	      func_append rpath "$dir:"
809404007ebaSmrg	    done
809504007ebaSmrg	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
809604007ebaSmrg	  fi
809704007ebaSmrg	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
809804007ebaSmrg	fi
809904007ebaSmrg
810004007ebaSmrg	shlibpath="$finalize_shlibpath"
810104007ebaSmrg	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
810204007ebaSmrg	if test -n "$shlibpath"; then
810304007ebaSmrg	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
810404007ebaSmrg	fi
810504007ebaSmrg
810604007ebaSmrg	# Get the real and link names of the library.
810704007ebaSmrg	eval shared_ext=\"$shrext_cmds\"
810804007ebaSmrg	eval library_names=\"$library_names_spec\"
810904007ebaSmrg	set dummy $library_names
811004007ebaSmrg	shift
811104007ebaSmrg	realname="$1"
811204007ebaSmrg	shift
811304007ebaSmrg
811404007ebaSmrg	if test -n "$soname_spec"; then
811504007ebaSmrg	  eval soname=\"$soname_spec\"
811604007ebaSmrg	else
811704007ebaSmrg	  soname="$realname"
811804007ebaSmrg	fi
811904007ebaSmrg	if test -z "$dlname"; then
812004007ebaSmrg	  dlname=$soname
812104007ebaSmrg	fi
812204007ebaSmrg
812304007ebaSmrg	lib="$output_objdir/$realname"
812404007ebaSmrg	linknames=
812504007ebaSmrg	for link
812604007ebaSmrg	do
812704007ebaSmrg	  func_append linknames " $link"
812804007ebaSmrg	done
812904007ebaSmrg
813004007ebaSmrg	# Use standard objects if they are pic
813104007ebaSmrg	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
813204007ebaSmrg	test "X$libobjs" = "X " && libobjs=
813304007ebaSmrg
813404007ebaSmrg	delfiles=
813504007ebaSmrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
813604007ebaSmrg	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
813704007ebaSmrg	  export_symbols="$output_objdir/$libname.uexp"
813804007ebaSmrg	  func_append delfiles " $export_symbols"
813904007ebaSmrg	fi
814004007ebaSmrg
814104007ebaSmrg	orig_export_symbols=
814204007ebaSmrg	case $host_os in
814304007ebaSmrg	cygwin* | mingw* | cegcc*)
814404007ebaSmrg	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
814504007ebaSmrg	    # exporting using user supplied symfile
814604007ebaSmrg	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
814704007ebaSmrg	      # and it's NOT already a .def file. Must figure out
814804007ebaSmrg	      # which of the given symbols are data symbols and tag
814904007ebaSmrg	      # them as such. So, trigger use of export_symbols_cmds.
815004007ebaSmrg	      # export_symbols gets reassigned inside the "prepare
815104007ebaSmrg	      # the list of exported symbols" if statement, so the
815204007ebaSmrg	      # include_expsyms logic still works.
815304007ebaSmrg	      orig_export_symbols="$export_symbols"
815404007ebaSmrg	      export_symbols=
815504007ebaSmrg	      always_export_symbols=yes
815604007ebaSmrg	    fi
815704007ebaSmrg	  fi
815804007ebaSmrg	  ;;
815904007ebaSmrg	esac
816004007ebaSmrg
816104007ebaSmrg	# Prepare the list of exported symbols
816204007ebaSmrg	if test -z "$export_symbols"; then
816304007ebaSmrg	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
816404007ebaSmrg	    func_verbose "generating symbol list for \`$libname.la'"
816504007ebaSmrg	    export_symbols="$output_objdir/$libname.exp"
816604007ebaSmrg	    $opt_dry_run || $RM $export_symbols
816704007ebaSmrg	    cmds=$export_symbols_cmds
816804007ebaSmrg	    save_ifs="$IFS"; IFS='~'
816904007ebaSmrg	    for cmd1 in $cmds; do
817004007ebaSmrg	      IFS="$save_ifs"
817104007ebaSmrg	      # Take the normal branch if the nm_file_list_spec branch
817204007ebaSmrg	      # doesn't work or if tool conversion is not needed.
817304007ebaSmrg	      case $nm_file_list_spec~$to_tool_file_cmd in
817404007ebaSmrg		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
817504007ebaSmrg		  try_normal_branch=yes
817604007ebaSmrg		  eval cmd=\"$cmd1\"
817704007ebaSmrg		  func_len " $cmd"
817804007ebaSmrg		  len=$func_len_result
817904007ebaSmrg		  ;;
818004007ebaSmrg		*)
818104007ebaSmrg		  try_normal_branch=no
818204007ebaSmrg		  ;;
818304007ebaSmrg	      esac
818404007ebaSmrg	      if test "$try_normal_branch" = yes \
818504007ebaSmrg		 && { test "$len" -lt "$max_cmd_len" \
818604007ebaSmrg		      || test "$max_cmd_len" -le -1; }
818704007ebaSmrg	      then
818804007ebaSmrg		func_show_eval "$cmd" 'exit $?'
818904007ebaSmrg		skipped_export=false
819004007ebaSmrg	      elif test -n "$nm_file_list_spec"; then
819104007ebaSmrg		func_basename "$output"
819204007ebaSmrg		output_la=$func_basename_result
819304007ebaSmrg		save_libobjs=$libobjs
819404007ebaSmrg		save_output=$output
819504007ebaSmrg		output=${output_objdir}/${output_la}.nm
819604007ebaSmrg		func_to_tool_file "$output"
819704007ebaSmrg		libobjs=$nm_file_list_spec$func_to_tool_file_result
819804007ebaSmrg		func_append delfiles " $output"
819904007ebaSmrg		func_verbose "creating $NM input file list: $output"
820004007ebaSmrg		for obj in $save_libobjs; do
820104007ebaSmrg		  func_to_tool_file "$obj"
820204007ebaSmrg		  $ECHO "$func_to_tool_file_result"
820304007ebaSmrg		done > "$output"
820404007ebaSmrg		eval cmd=\"$cmd1\"
820504007ebaSmrg		func_show_eval "$cmd" 'exit $?'
820604007ebaSmrg		output=$save_output
820704007ebaSmrg		libobjs=$save_libobjs
820804007ebaSmrg		skipped_export=false
820904007ebaSmrg	      else
821004007ebaSmrg		# The command line is too long to execute in one step.
821104007ebaSmrg		func_verbose "using reloadable object file for export list..."
821204007ebaSmrg		skipped_export=:
821304007ebaSmrg		# Break out early, otherwise skipped_export may be
821404007ebaSmrg		# set to false by a later but shorter cmd.
821504007ebaSmrg		break
821604007ebaSmrg	      fi
821704007ebaSmrg	    done
821804007ebaSmrg	    IFS="$save_ifs"
821904007ebaSmrg	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
822004007ebaSmrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
822104007ebaSmrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
822204007ebaSmrg	    fi
822304007ebaSmrg	  fi
822404007ebaSmrg	fi
822504007ebaSmrg
822604007ebaSmrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
822704007ebaSmrg	  tmp_export_symbols="$export_symbols"
822804007ebaSmrg	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
822904007ebaSmrg	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
823004007ebaSmrg	fi
823104007ebaSmrg
823204007ebaSmrg	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
823304007ebaSmrg	  # The given exports_symbols file has to be filtered, so filter it.
823404007ebaSmrg	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
823504007ebaSmrg	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
823604007ebaSmrg	  # 's' commands which not all seds can handle. GNU sed should be fine
823704007ebaSmrg	  # though. Also, the filter scales superlinearly with the number of
823804007ebaSmrg	  # global variables. join(1) would be nice here, but unfortunately
823904007ebaSmrg	  # isn't a blessed tool.
824004007ebaSmrg	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
824104007ebaSmrg	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
824204007ebaSmrg	  export_symbols=$output_objdir/$libname.def
824304007ebaSmrg	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
824404007ebaSmrg	fi
824504007ebaSmrg
824604007ebaSmrg	tmp_deplibs=
824704007ebaSmrg	for test_deplib in $deplibs; do
824804007ebaSmrg	  case " $convenience " in
824904007ebaSmrg	  *" $test_deplib "*) ;;
825004007ebaSmrg	  *)
825104007ebaSmrg	    func_append tmp_deplibs " $test_deplib"
825204007ebaSmrg	    ;;
825304007ebaSmrg	  esac
825404007ebaSmrg	done
825504007ebaSmrg	deplibs="$tmp_deplibs"
825604007ebaSmrg
825704007ebaSmrg	if test -n "$convenience"; then
825804007ebaSmrg	  if test -n "$whole_archive_flag_spec" &&
825904007ebaSmrg	    test "$compiler_needs_object" = yes &&
826004007ebaSmrg	    test -z "$libobjs"; then
826104007ebaSmrg	    # extract the archives, so we have objects to list.
826204007ebaSmrg	    # TODO: could optimize this to just extract one archive.
826304007ebaSmrg	    whole_archive_flag_spec=
826404007ebaSmrg	  fi
826504007ebaSmrg	  if test -n "$whole_archive_flag_spec"; then
826604007ebaSmrg	    save_libobjs=$libobjs
826704007ebaSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
826804007ebaSmrg	    test "X$libobjs" = "X " && libobjs=
826904007ebaSmrg	  else
827004007ebaSmrg	    gentop="$output_objdir/${outputname}x"
827104007ebaSmrg	    func_append generated " $gentop"
827204007ebaSmrg
827304007ebaSmrg	    func_extract_archives $gentop $convenience
827404007ebaSmrg	    func_append libobjs " $func_extract_archives_result"
827504007ebaSmrg	    test "X$libobjs" = "X " && libobjs=
827604007ebaSmrg	  fi
827704007ebaSmrg	fi
827804007ebaSmrg
827904007ebaSmrg	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
828004007ebaSmrg	  eval flag=\"$thread_safe_flag_spec\"
828104007ebaSmrg	  func_append linker_flags " $flag"
828204007ebaSmrg	fi
828304007ebaSmrg
828404007ebaSmrg	# Make a backup of the uninstalled library when relinking
828504007ebaSmrg	if test "$opt_mode" = relink; then
828604007ebaSmrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
828704007ebaSmrg	fi
828804007ebaSmrg
828904007ebaSmrg	# Do each of the archive commands.
829004007ebaSmrg	if test "$module" = yes && test -n "$module_cmds" ; then
829104007ebaSmrg	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
829204007ebaSmrg	    eval test_cmds=\"$module_expsym_cmds\"
829304007ebaSmrg	    cmds=$module_expsym_cmds
829404007ebaSmrg	  else
829504007ebaSmrg	    eval test_cmds=\"$module_cmds\"
829604007ebaSmrg	    cmds=$module_cmds
829704007ebaSmrg	  fi
829804007ebaSmrg	else
829904007ebaSmrg	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
830004007ebaSmrg	    eval test_cmds=\"$archive_expsym_cmds\"
830104007ebaSmrg	    cmds=$archive_expsym_cmds
830204007ebaSmrg	  else
830304007ebaSmrg	    eval test_cmds=\"$archive_cmds\"
830404007ebaSmrg	    cmds=$archive_cmds
830504007ebaSmrg	  fi
830604007ebaSmrg	fi
830704007ebaSmrg
830804007ebaSmrg	if test "X$skipped_export" != "X:" &&
830904007ebaSmrg	   func_len " $test_cmds" &&
831004007ebaSmrg	   len=$func_len_result &&
831104007ebaSmrg	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
831204007ebaSmrg	  :
831304007ebaSmrg	else
831404007ebaSmrg	  # The command line is too long to link in one step, link piecewise
831504007ebaSmrg	  # or, if using GNU ld and skipped_export is not :, use a linker
831604007ebaSmrg	  # script.
831704007ebaSmrg
831804007ebaSmrg	  # Save the value of $output and $libobjs because we want to
831904007ebaSmrg	  # use them later.  If we have whole_archive_flag_spec, we
832004007ebaSmrg	  # want to use save_libobjs as it was before
832104007ebaSmrg	  # whole_archive_flag_spec was expanded, because we can't
832204007ebaSmrg	  # assume the linker understands whole_archive_flag_spec.
832304007ebaSmrg	  # This may have to be revisited, in case too many
832404007ebaSmrg	  # convenience libraries get linked in and end up exceeding
832504007ebaSmrg	  # the spec.
832604007ebaSmrg	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
832704007ebaSmrg	    save_libobjs=$libobjs
832804007ebaSmrg	  fi
832904007ebaSmrg	  save_output=$output
833004007ebaSmrg	  func_basename "$output"
833104007ebaSmrg	  output_la=$func_basename_result
833204007ebaSmrg
833304007ebaSmrg	  # Clear the reloadable object creation command queue and
833404007ebaSmrg	  # initialize k to one.
833504007ebaSmrg	  test_cmds=
833604007ebaSmrg	  concat_cmds=
833704007ebaSmrg	  objlist=
833804007ebaSmrg	  last_robj=
833904007ebaSmrg	  k=1
834004007ebaSmrg
834104007ebaSmrg	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
834204007ebaSmrg	    output=${output_objdir}/${output_la}.lnkscript
834304007ebaSmrg	    func_verbose "creating GNU ld script: $output"
834404007ebaSmrg	    echo 'INPUT (' > $output
834504007ebaSmrg	    for obj in $save_libobjs
834604007ebaSmrg	    do
834704007ebaSmrg	      func_to_tool_file "$obj"
834804007ebaSmrg	      $ECHO "$func_to_tool_file_result" >> $output
834904007ebaSmrg	    done
835004007ebaSmrg	    echo ')' >> $output
835104007ebaSmrg	    func_append delfiles " $output"
835204007ebaSmrg	    func_to_tool_file "$output"
835304007ebaSmrg	    output=$func_to_tool_file_result
835404007ebaSmrg	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
835504007ebaSmrg	    output=${output_objdir}/${output_la}.lnk
835604007ebaSmrg	    func_verbose "creating linker input file list: $output"
835704007ebaSmrg	    : > $output
835804007ebaSmrg	    set x $save_libobjs
835904007ebaSmrg	    shift
836004007ebaSmrg	    firstobj=
836104007ebaSmrg	    if test "$compiler_needs_object" = yes; then
836204007ebaSmrg	      firstobj="$1 "
836304007ebaSmrg	      shift
836404007ebaSmrg	    fi
836504007ebaSmrg	    for obj
836604007ebaSmrg	    do
836704007ebaSmrg	      func_to_tool_file "$obj"
836804007ebaSmrg	      $ECHO "$func_to_tool_file_result" >> $output
836904007ebaSmrg	    done
837004007ebaSmrg	    func_append delfiles " $output"
837104007ebaSmrg	    func_to_tool_file "$output"
837204007ebaSmrg	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
837304007ebaSmrg	  else
837404007ebaSmrg	    if test -n "$save_libobjs"; then
837504007ebaSmrg	      func_verbose "creating reloadable object files..."
837604007ebaSmrg	      output=$output_objdir/$output_la-${k}.$objext
837704007ebaSmrg	      eval test_cmds=\"$reload_cmds\"
837804007ebaSmrg	      func_len " $test_cmds"
837904007ebaSmrg	      len0=$func_len_result
838004007ebaSmrg	      len=$len0
838104007ebaSmrg
838204007ebaSmrg	      # Loop over the list of objects to be linked.
838304007ebaSmrg	      for obj in $save_libobjs
838404007ebaSmrg	      do
838504007ebaSmrg		func_len " $obj"
838604007ebaSmrg		func_arith $len + $func_len_result
838704007ebaSmrg		len=$func_arith_result
838804007ebaSmrg		if test "X$objlist" = X ||
838904007ebaSmrg		   test "$len" -lt "$max_cmd_len"; then
839004007ebaSmrg		  func_append objlist " $obj"
839104007ebaSmrg		else
839204007ebaSmrg		  # The command $test_cmds is almost too long, add a
839304007ebaSmrg		  # command to the queue.
839404007ebaSmrg		  if test "$k" -eq 1 ; then
839504007ebaSmrg		    # The first file doesn't have a previous command to add.
839604007ebaSmrg		    reload_objs=$objlist
839704007ebaSmrg		    eval concat_cmds=\"$reload_cmds\"
839804007ebaSmrg		  else
839904007ebaSmrg		    # All subsequent reloadable object files will link in
840004007ebaSmrg		    # the last one created.
840104007ebaSmrg		    reload_objs="$objlist $last_robj"
840204007ebaSmrg		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
840304007ebaSmrg		  fi
840404007ebaSmrg		  last_robj=$output_objdir/$output_la-${k}.$objext
840504007ebaSmrg		  func_arith $k + 1
840604007ebaSmrg		  k=$func_arith_result
840704007ebaSmrg		  output=$output_objdir/$output_la-${k}.$objext
840804007ebaSmrg		  objlist=" $obj"
840904007ebaSmrg		  func_len " $last_robj"
841004007ebaSmrg		  func_arith $len0 + $func_len_result
841104007ebaSmrg		  len=$func_arith_result
841204007ebaSmrg		fi
841304007ebaSmrg	      done
841404007ebaSmrg	      # Handle the remaining objects by creating one last
841504007ebaSmrg	      # reloadable object file.  All subsequent reloadable object
841604007ebaSmrg	      # files will link in the last one created.
841704007ebaSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
841804007ebaSmrg	      reload_objs="$objlist $last_robj"
841904007ebaSmrg	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
842004007ebaSmrg	      if test -n "$last_robj"; then
842104007ebaSmrg	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
842204007ebaSmrg	      fi
842304007ebaSmrg	      func_append delfiles " $output"
842404007ebaSmrg
842504007ebaSmrg	    else
842604007ebaSmrg	      output=
842704007ebaSmrg	    fi
842804007ebaSmrg
842904007ebaSmrg	    if ${skipped_export-false}; then
843004007ebaSmrg	      func_verbose "generating symbol list for \`$libname.la'"
843104007ebaSmrg	      export_symbols="$output_objdir/$libname.exp"
843204007ebaSmrg	      $opt_dry_run || $RM $export_symbols
843304007ebaSmrg	      libobjs=$output
843404007ebaSmrg	      # Append the command to create the export file.
843504007ebaSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
843604007ebaSmrg	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
843704007ebaSmrg	      if test -n "$last_robj"; then
843804007ebaSmrg		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
843904007ebaSmrg	      fi
844004007ebaSmrg	    fi
844104007ebaSmrg
844204007ebaSmrg	    test -n "$save_libobjs" &&
844304007ebaSmrg	      func_verbose "creating a temporary reloadable object file: $output"
844404007ebaSmrg
844504007ebaSmrg	    # Loop through the commands generated above and execute them.
844604007ebaSmrg	    save_ifs="$IFS"; IFS='~'
844704007ebaSmrg	    for cmd in $concat_cmds; do
844804007ebaSmrg	      IFS="$save_ifs"
844904007ebaSmrg	      $opt_silent || {
845004007ebaSmrg		  func_quote_for_expand "$cmd"
845104007ebaSmrg		  eval "func_echo $func_quote_for_expand_result"
845204007ebaSmrg	      }
845304007ebaSmrg	      $opt_dry_run || eval "$cmd" || {
845404007ebaSmrg		lt_exit=$?
845504007ebaSmrg
845604007ebaSmrg		# Restore the uninstalled library and exit
845704007ebaSmrg		if test "$opt_mode" = relink; then
845804007ebaSmrg		  ( cd "$output_objdir" && \
845904007ebaSmrg		    $RM "${realname}T" && \
846004007ebaSmrg		    $MV "${realname}U" "$realname" )
846104007ebaSmrg		fi
846204007ebaSmrg
846304007ebaSmrg		exit $lt_exit
846404007ebaSmrg	      }
846504007ebaSmrg	    done
846604007ebaSmrg	    IFS="$save_ifs"
846704007ebaSmrg
846804007ebaSmrg	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
846904007ebaSmrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
847004007ebaSmrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
847104007ebaSmrg	    fi
847204007ebaSmrg	  fi
847304007ebaSmrg
847404007ebaSmrg          if ${skipped_export-false}; then
847504007ebaSmrg	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
847604007ebaSmrg	      tmp_export_symbols="$export_symbols"
847704007ebaSmrg	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
847804007ebaSmrg	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
847904007ebaSmrg	    fi
848004007ebaSmrg
848104007ebaSmrg	    if test -n "$orig_export_symbols"; then
848204007ebaSmrg	      # The given exports_symbols file has to be filtered, so filter it.
848304007ebaSmrg	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
848404007ebaSmrg	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
848504007ebaSmrg	      # 's' commands which not all seds can handle. GNU sed should be fine
848604007ebaSmrg	      # though. Also, the filter scales superlinearly with the number of
848704007ebaSmrg	      # global variables. join(1) would be nice here, but unfortunately
848804007ebaSmrg	      # isn't a blessed tool.
848904007ebaSmrg	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
849004007ebaSmrg	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
849104007ebaSmrg	      export_symbols=$output_objdir/$libname.def
849204007ebaSmrg	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
849304007ebaSmrg	    fi
849404007ebaSmrg	  fi
849504007ebaSmrg
849604007ebaSmrg	  libobjs=$output
849704007ebaSmrg	  # Restore the value of output.
849804007ebaSmrg	  output=$save_output
849904007ebaSmrg
850004007ebaSmrg	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
850104007ebaSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
850204007ebaSmrg	    test "X$libobjs" = "X " && libobjs=
850304007ebaSmrg	  fi
850404007ebaSmrg	  # Expand the library linking commands again to reset the
850504007ebaSmrg	  # value of $libobjs for piecewise linking.
850604007ebaSmrg
850704007ebaSmrg	  # Do each of the archive commands.
850804007ebaSmrg	  if test "$module" = yes && test -n "$module_cmds" ; then
850904007ebaSmrg	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
851004007ebaSmrg	      cmds=$module_expsym_cmds
851104007ebaSmrg	    else
851204007ebaSmrg	      cmds=$module_cmds
851304007ebaSmrg	    fi
851404007ebaSmrg	  else
851504007ebaSmrg	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
851604007ebaSmrg	      cmds=$archive_expsym_cmds
851704007ebaSmrg	    else
851804007ebaSmrg	      cmds=$archive_cmds
851904007ebaSmrg	    fi
852004007ebaSmrg	  fi
852104007ebaSmrg	fi
852204007ebaSmrg
852304007ebaSmrg	if test -n "$delfiles"; then
852404007ebaSmrg	  # Append the command to remove temporary files to $cmds.
852504007ebaSmrg	  eval cmds=\"\$cmds~\$RM $delfiles\"
852604007ebaSmrg	fi
852704007ebaSmrg
852804007ebaSmrg	# Add any objects from preloaded convenience libraries
852904007ebaSmrg	if test -n "$dlprefiles"; then
853004007ebaSmrg	  gentop="$output_objdir/${outputname}x"
853104007ebaSmrg	  func_append generated " $gentop"
853204007ebaSmrg
853304007ebaSmrg	  func_extract_archives $gentop $dlprefiles
853404007ebaSmrg	  func_append libobjs " $func_extract_archives_result"
853504007ebaSmrg	  test "X$libobjs" = "X " && libobjs=
853604007ebaSmrg	fi
853704007ebaSmrg
853804007ebaSmrg	save_ifs="$IFS"; IFS='~'
853904007ebaSmrg	for cmd in $cmds; do
854004007ebaSmrg	  IFS="$save_ifs"
854104007ebaSmrg	  eval cmd=\"$cmd\"
854204007ebaSmrg	  $opt_silent || {
854304007ebaSmrg	    func_quote_for_expand "$cmd"
854404007ebaSmrg	    eval "func_echo $func_quote_for_expand_result"
854504007ebaSmrg	  }
854604007ebaSmrg	  $opt_dry_run || eval "$cmd" || {
854704007ebaSmrg	    lt_exit=$?
854804007ebaSmrg
854904007ebaSmrg	    # Restore the uninstalled library and exit
855004007ebaSmrg	    if test "$opt_mode" = relink; then
855104007ebaSmrg	      ( cd "$output_objdir" && \
855204007ebaSmrg	        $RM "${realname}T" && \
855304007ebaSmrg		$MV "${realname}U" "$realname" )
855404007ebaSmrg	    fi
855504007ebaSmrg
855604007ebaSmrg	    exit $lt_exit
855704007ebaSmrg	  }
855804007ebaSmrg	done
855904007ebaSmrg	IFS="$save_ifs"
856004007ebaSmrg
856104007ebaSmrg	# Restore the uninstalled library and exit
856204007ebaSmrg	if test "$opt_mode" = relink; then
856304007ebaSmrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
856404007ebaSmrg
856504007ebaSmrg	  if test -n "$convenience"; then
856604007ebaSmrg	    if test -z "$whole_archive_flag_spec"; then
856704007ebaSmrg	      func_show_eval '${RM}r "$gentop"'
856804007ebaSmrg	    fi
856904007ebaSmrg	  fi
857004007ebaSmrg
857104007ebaSmrg	  exit $EXIT_SUCCESS
857204007ebaSmrg	fi
857304007ebaSmrg
857404007ebaSmrg	# Create links to the real library.
857504007ebaSmrg	for linkname in $linknames; do
857604007ebaSmrg	  if test "$realname" != "$linkname"; then
857704007ebaSmrg	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
857804007ebaSmrg	  fi
857904007ebaSmrg	done
858004007ebaSmrg
858104007ebaSmrg	# If -module or -export-dynamic was specified, set the dlname.
858204007ebaSmrg	if test "$module" = yes || test "$export_dynamic" = yes; then
858304007ebaSmrg	  # On all known operating systems, these are identical.
858404007ebaSmrg	  dlname="$soname"
858504007ebaSmrg	fi
858604007ebaSmrg      fi
858704007ebaSmrg      ;;
858804007ebaSmrg
858904007ebaSmrg    obj)
859004007ebaSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
859104007ebaSmrg	func_warning "\`-dlopen' is ignored for objects"
859204007ebaSmrg      fi
859304007ebaSmrg
859404007ebaSmrg      case " $deplibs" in
859504007ebaSmrg      *\ -l* | *\ -L*)
859604007ebaSmrg	func_warning "\`-l' and \`-L' are ignored for objects" ;;
859704007ebaSmrg      esac
859804007ebaSmrg
859904007ebaSmrg      test -n "$rpath" && \
860004007ebaSmrg	func_warning "\`-rpath' is ignored for objects"
860104007ebaSmrg
860204007ebaSmrg      test -n "$xrpath" && \
860304007ebaSmrg	func_warning "\`-R' is ignored for objects"
860404007ebaSmrg
860504007ebaSmrg      test -n "$vinfo" && \
860604007ebaSmrg	func_warning "\`-version-info' is ignored for objects"
860704007ebaSmrg
860804007ebaSmrg      test -n "$release" && \
860904007ebaSmrg	func_warning "\`-release' is ignored for objects"
861004007ebaSmrg
861104007ebaSmrg      case $output in
861204007ebaSmrg      *.lo)
861304007ebaSmrg	test -n "$objs$old_deplibs" && \
861404007ebaSmrg	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
861504007ebaSmrg
861604007ebaSmrg	libobj=$output
861704007ebaSmrg	func_lo2o "$libobj"
861804007ebaSmrg	obj=$func_lo2o_result
861904007ebaSmrg	;;
862004007ebaSmrg      *)
862104007ebaSmrg	libobj=
862204007ebaSmrg	obj="$output"
862304007ebaSmrg	;;
862404007ebaSmrg      esac
862504007ebaSmrg
862604007ebaSmrg      # Delete the old objects.
862704007ebaSmrg      $opt_dry_run || $RM $obj $libobj
862804007ebaSmrg
862904007ebaSmrg      # Objects from convenience libraries.  This assumes
863004007ebaSmrg      # single-version convenience libraries.  Whenever we create
863104007ebaSmrg      # different ones for PIC/non-PIC, this we'll have to duplicate
863204007ebaSmrg      # the extraction.
863304007ebaSmrg      reload_conv_objs=
863404007ebaSmrg      gentop=
863504007ebaSmrg      # reload_cmds runs $LD directly, so let us get rid of
863604007ebaSmrg      # -Wl from whole_archive_flag_spec and hope we can get by with
863704007ebaSmrg      # turning comma into space..
863804007ebaSmrg      wl=
863904007ebaSmrg
864004007ebaSmrg      if test -n "$convenience"; then
864104007ebaSmrg	if test -n "$whole_archive_flag_spec"; then
864204007ebaSmrg	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
864304007ebaSmrg	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
864404007ebaSmrg	else
864504007ebaSmrg	  gentop="$output_objdir/${obj}x"
864604007ebaSmrg	  func_append generated " $gentop"
864704007ebaSmrg
864804007ebaSmrg	  func_extract_archives $gentop $convenience
864904007ebaSmrg	  reload_conv_objs="$reload_objs $func_extract_archives_result"
865004007ebaSmrg	fi
865104007ebaSmrg      fi
865204007ebaSmrg
865304007ebaSmrg      # If we're not building shared, we need to use non_pic_objs
865404007ebaSmrg      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
865504007ebaSmrg
865604007ebaSmrg      # Create the old-style object.
865704007ebaSmrg      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
865804007ebaSmrg
865904007ebaSmrg      output="$obj"
866004007ebaSmrg      func_execute_cmds "$reload_cmds" 'exit $?'
866104007ebaSmrg
866204007ebaSmrg      # Exit if we aren't doing a library object file.
866304007ebaSmrg      if test -z "$libobj"; then
866404007ebaSmrg	if test -n "$gentop"; then
866504007ebaSmrg	  func_show_eval '${RM}r "$gentop"'
866604007ebaSmrg	fi
866704007ebaSmrg
866804007ebaSmrg	exit $EXIT_SUCCESS
866904007ebaSmrg      fi
867004007ebaSmrg
867104007ebaSmrg      if test "$build_libtool_libs" != yes; then
867204007ebaSmrg	if test -n "$gentop"; then
867304007ebaSmrg	  func_show_eval '${RM}r "$gentop"'
867404007ebaSmrg	fi
867504007ebaSmrg
867604007ebaSmrg	# Create an invalid libtool object if no PIC, so that we don't
867704007ebaSmrg	# accidentally link it into a program.
867804007ebaSmrg	# $show "echo timestamp > $libobj"
867904007ebaSmrg	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
868004007ebaSmrg	exit $EXIT_SUCCESS
868104007ebaSmrg      fi
868204007ebaSmrg
868304007ebaSmrg      if test -n "$pic_flag" || test "$pic_mode" != default; then
868404007ebaSmrg	# Only do commands if we really have different PIC objects.
868504007ebaSmrg	reload_objs="$libobjs $reload_conv_objs"
868604007ebaSmrg	output="$libobj"
868704007ebaSmrg	func_execute_cmds "$reload_cmds" 'exit $?'
868804007ebaSmrg      fi
868904007ebaSmrg
869004007ebaSmrg      if test -n "$gentop"; then
869104007ebaSmrg	func_show_eval '${RM}r "$gentop"'
869204007ebaSmrg      fi
869304007ebaSmrg
869404007ebaSmrg      exit $EXIT_SUCCESS
869504007ebaSmrg      ;;
869604007ebaSmrg
869704007ebaSmrg    prog)
869804007ebaSmrg      case $host in
869904007ebaSmrg	*cygwin*) func_stripname '' '.exe' "$output"
870004007ebaSmrg	          output=$func_stripname_result.exe;;
870104007ebaSmrg      esac
870204007ebaSmrg      test -n "$vinfo" && \
870304007ebaSmrg	func_warning "\`-version-info' is ignored for programs"
870404007ebaSmrg
870504007ebaSmrg      test -n "$release" && \
870604007ebaSmrg	func_warning "\`-release' is ignored for programs"
870704007ebaSmrg
870804007ebaSmrg      test "$preload" = yes \
870904007ebaSmrg        && test "$dlopen_support" = unknown \
871004007ebaSmrg	&& test "$dlopen_self" = unknown \
871104007ebaSmrg	&& test "$dlopen_self_static" = unknown && \
871204007ebaSmrg	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
871304007ebaSmrg
871404007ebaSmrg      case $host in
871504007ebaSmrg      *-*-rhapsody* | *-*-darwin1.[012])
871604007ebaSmrg	# On Rhapsody replace the C library is the System framework
871704007ebaSmrg	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
871804007ebaSmrg	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
871904007ebaSmrg	;;
872004007ebaSmrg      esac
872104007ebaSmrg
872204007ebaSmrg      case $host in
872304007ebaSmrg      *-*-darwin*)
872404007ebaSmrg	# Don't allow lazy linking, it breaks C++ global constructors
872504007ebaSmrg	# But is supposedly fixed on 10.4 or later (yay!).
872604007ebaSmrg	if test "$tagname" = CXX ; then
872704007ebaSmrg	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
872804007ebaSmrg	    10.[0123])
872904007ebaSmrg	      func_append compile_command " ${wl}-bind_at_load"
873004007ebaSmrg	      func_append finalize_command " ${wl}-bind_at_load"
873104007ebaSmrg	    ;;
873204007ebaSmrg	  esac
873304007ebaSmrg	fi
873404007ebaSmrg	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
873504007ebaSmrg	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
873604007ebaSmrg	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
873704007ebaSmrg	;;
873804007ebaSmrg      esac
873904007ebaSmrg
874004007ebaSmrg
874104007ebaSmrg      # move library search paths that coincide with paths to not yet
874204007ebaSmrg      # installed libraries to the beginning of the library search list
874304007ebaSmrg      new_libs=
874404007ebaSmrg      for path in $notinst_path; do
874504007ebaSmrg	case " $new_libs " in
874604007ebaSmrg	*" -L$path/$objdir "*) ;;
874704007ebaSmrg	*)
874804007ebaSmrg	  case " $compile_deplibs " in
874904007ebaSmrg	  *" -L$path/$objdir "*)
875004007ebaSmrg	    func_append new_libs " -L$path/$objdir" ;;
875104007ebaSmrg	  esac
875204007ebaSmrg	  ;;
875304007ebaSmrg	esac
875404007ebaSmrg      done
875504007ebaSmrg      for deplib in $compile_deplibs; do
875604007ebaSmrg	case $deplib in
875704007ebaSmrg	-L*)
875804007ebaSmrg	  case " $new_libs " in
875904007ebaSmrg	  *" $deplib "*) ;;
876004007ebaSmrg	  *) func_append new_libs " $deplib" ;;
876104007ebaSmrg	  esac
876204007ebaSmrg	  ;;
876304007ebaSmrg	*) func_append new_libs " $deplib" ;;
876404007ebaSmrg	esac
876504007ebaSmrg      done
876604007ebaSmrg      compile_deplibs="$new_libs"
876704007ebaSmrg
876804007ebaSmrg
876904007ebaSmrg      func_append compile_command " $compile_deplibs"
877004007ebaSmrg      func_append finalize_command " $finalize_deplibs"
877104007ebaSmrg
877204007ebaSmrg      if test -n "$rpath$xrpath"; then
877304007ebaSmrg	# If the user specified any rpath flags, then add them.
877404007ebaSmrg	for libdir in $rpath $xrpath; do
877504007ebaSmrg	  # This is the magic to use -rpath.
877604007ebaSmrg	  case "$finalize_rpath " in
877704007ebaSmrg	  *" $libdir "*) ;;
877804007ebaSmrg	  *) func_append finalize_rpath " $libdir" ;;
877904007ebaSmrg	  esac
878004007ebaSmrg	done
878104007ebaSmrg      fi
878204007ebaSmrg
878304007ebaSmrg      # Now hardcode the library paths
878404007ebaSmrg      rpath=
878504007ebaSmrg      hardcode_libdirs=
878604007ebaSmrg      for libdir in $compile_rpath $finalize_rpath; do
878704007ebaSmrg	if test -n "$hardcode_libdir_flag_spec"; then
878804007ebaSmrg	  if test -n "$hardcode_libdir_separator"; then
878904007ebaSmrg	    if test -z "$hardcode_libdirs"; then
879004007ebaSmrg	      hardcode_libdirs="$libdir"
879104007ebaSmrg	    else
879204007ebaSmrg	      # Just accumulate the unique libdirs.
879304007ebaSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
879404007ebaSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
879504007ebaSmrg		;;
879604007ebaSmrg	      *)
879704007ebaSmrg		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
879804007ebaSmrg		;;
879904007ebaSmrg	      esac
880004007ebaSmrg	    fi
880104007ebaSmrg	  else
880204007ebaSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
880304007ebaSmrg	    func_append rpath " $flag"
880404007ebaSmrg	  fi
880504007ebaSmrg	elif test -n "$runpath_var"; then
880604007ebaSmrg	  case "$perm_rpath " in
880704007ebaSmrg	  *" $libdir "*) ;;
880804007ebaSmrg	  *) func_append perm_rpath " $libdir" ;;
880904007ebaSmrg	  esac
881004007ebaSmrg	fi
881104007ebaSmrg	case $host in
881204007ebaSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
881304007ebaSmrg	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
881404007ebaSmrg	  case :$dllsearchpath: in
881504007ebaSmrg	  *":$libdir:"*) ;;
881604007ebaSmrg	  ::) dllsearchpath=$libdir;;
881704007ebaSmrg	  *) func_append dllsearchpath ":$libdir";;
881804007ebaSmrg	  esac
881904007ebaSmrg	  case :$dllsearchpath: in
882004007ebaSmrg	  *":$testbindir:"*) ;;
882104007ebaSmrg	  ::) dllsearchpath=$testbindir;;
882204007ebaSmrg	  *) func_append dllsearchpath ":$testbindir";;
882304007ebaSmrg	  esac
882404007ebaSmrg	  ;;
882504007ebaSmrg	esac
882604007ebaSmrg      done
882704007ebaSmrg      # Substitute the hardcoded libdirs into the rpath.
882804007ebaSmrg      if test -n "$hardcode_libdir_separator" &&
882904007ebaSmrg	 test -n "$hardcode_libdirs"; then
883004007ebaSmrg	libdir="$hardcode_libdirs"
883104007ebaSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
883204007ebaSmrg      fi
883304007ebaSmrg      compile_rpath="$rpath"
883404007ebaSmrg
883504007ebaSmrg      rpath=
883604007ebaSmrg      hardcode_libdirs=
883704007ebaSmrg      for libdir in $finalize_rpath; do
883804007ebaSmrg	if test -n "$hardcode_libdir_flag_spec"; then
883904007ebaSmrg	  if test -n "$hardcode_libdir_separator"; then
884004007ebaSmrg	    if test -z "$hardcode_libdirs"; then
884104007ebaSmrg	      hardcode_libdirs="$libdir"
884204007ebaSmrg	    else
884304007ebaSmrg	      # Just accumulate the unique libdirs.
884404007ebaSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
884504007ebaSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
884604007ebaSmrg		;;
884704007ebaSmrg	      *)
884804007ebaSmrg		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
884904007ebaSmrg		;;
885004007ebaSmrg	      esac
885104007ebaSmrg	    fi
885204007ebaSmrg	  else
885304007ebaSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
885404007ebaSmrg	    func_append rpath " $flag"
885504007ebaSmrg	  fi
885604007ebaSmrg	elif test -n "$runpath_var"; then
885704007ebaSmrg	  case "$finalize_perm_rpath " in
885804007ebaSmrg	  *" $libdir "*) ;;
885904007ebaSmrg	  *) func_append finalize_perm_rpath " $libdir" ;;
886004007ebaSmrg	  esac
886104007ebaSmrg	fi
886204007ebaSmrg      done
886304007ebaSmrg      # Substitute the hardcoded libdirs into the rpath.
886404007ebaSmrg      if test -n "$hardcode_libdir_separator" &&
886504007ebaSmrg	 test -n "$hardcode_libdirs"; then
886604007ebaSmrg	libdir="$hardcode_libdirs"
886704007ebaSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
886804007ebaSmrg      fi
886904007ebaSmrg      finalize_rpath="$rpath"
887004007ebaSmrg
887104007ebaSmrg      if test -n "$libobjs" && test "$build_old_libs" = yes; then
887204007ebaSmrg	# Transform all the library objects into standard objects.
887304007ebaSmrg	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
887404007ebaSmrg	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
887504007ebaSmrg      fi
887604007ebaSmrg
887704007ebaSmrg      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
887804007ebaSmrg
887904007ebaSmrg      # template prelinking step
888004007ebaSmrg      if test -n "$prelink_cmds"; then
888104007ebaSmrg	func_execute_cmds "$prelink_cmds" 'exit $?'
888204007ebaSmrg      fi
888304007ebaSmrg
888404007ebaSmrg      wrappers_required=yes
888504007ebaSmrg      case $host in
888604007ebaSmrg      *cegcc* | *mingw32ce*)
888704007ebaSmrg        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
888804007ebaSmrg        wrappers_required=no
888904007ebaSmrg        ;;
889004007ebaSmrg      *cygwin* | *mingw* )
889104007ebaSmrg        if test "$build_libtool_libs" != yes; then
889204007ebaSmrg          wrappers_required=no
889304007ebaSmrg        fi
889404007ebaSmrg        ;;
889504007ebaSmrg      *)
889604007ebaSmrg        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
889704007ebaSmrg          wrappers_required=no
889804007ebaSmrg        fi
889904007ebaSmrg        ;;
890004007ebaSmrg      esac
890104007ebaSmrg      if test "$wrappers_required" = no; then
890204007ebaSmrg	# Replace the output file specification.
890304007ebaSmrg	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
890404007ebaSmrg	link_command="$compile_command$compile_rpath"
890504007ebaSmrg
890604007ebaSmrg	# We have no uninstalled library dependencies, so finalize right now.
890704007ebaSmrg	exit_status=0
890804007ebaSmrg	func_show_eval "$link_command" 'exit_status=$?'
890904007ebaSmrg
891004007ebaSmrg	if test -n "$postlink_cmds"; then
891104007ebaSmrg	  func_to_tool_file "$output"
891204007ebaSmrg	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
891304007ebaSmrg	  func_execute_cmds "$postlink_cmds" 'exit $?'
891404007ebaSmrg	fi
891504007ebaSmrg
891604007ebaSmrg	# Delete the generated files.
891704007ebaSmrg	if test -f "$output_objdir/${outputname}S.${objext}"; then
891804007ebaSmrg	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
891904007ebaSmrg	fi
892004007ebaSmrg
892104007ebaSmrg	exit $exit_status
892204007ebaSmrg      fi
892304007ebaSmrg
892404007ebaSmrg      if test -n "$compile_shlibpath$finalize_shlibpath"; then
892504007ebaSmrg	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
892604007ebaSmrg      fi
892704007ebaSmrg      if test -n "$finalize_shlibpath"; then
892804007ebaSmrg	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
892904007ebaSmrg      fi
893004007ebaSmrg
893104007ebaSmrg      compile_var=
893204007ebaSmrg      finalize_var=
893304007ebaSmrg      if test -n "$runpath_var"; then
893404007ebaSmrg	if test -n "$perm_rpath"; then
893504007ebaSmrg	  # We should set the runpath_var.
893604007ebaSmrg	  rpath=
893704007ebaSmrg	  for dir in $perm_rpath; do
893804007ebaSmrg	    func_append rpath "$dir:"
893904007ebaSmrg	  done
894004007ebaSmrg	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
894104007ebaSmrg	fi
894204007ebaSmrg	if test -n "$finalize_perm_rpath"; then
894304007ebaSmrg	  # We should set the runpath_var.
894404007ebaSmrg	  rpath=
894504007ebaSmrg	  for dir in $finalize_perm_rpath; do
894604007ebaSmrg	    func_append rpath "$dir:"
894704007ebaSmrg	  done
894804007ebaSmrg	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
894904007ebaSmrg	fi
895004007ebaSmrg      fi
895104007ebaSmrg
895204007ebaSmrg      if test "$no_install" = yes; then
895304007ebaSmrg	# We don't need to create a wrapper script.
895404007ebaSmrg	link_command="$compile_var$compile_command$compile_rpath"
895504007ebaSmrg	# Replace the output file specification.
895604007ebaSmrg	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
895704007ebaSmrg	# Delete the old output file.
895804007ebaSmrg	$opt_dry_run || $RM $output
895904007ebaSmrg	# Link the executable and exit
896004007ebaSmrg	func_show_eval "$link_command" 'exit $?'
896104007ebaSmrg
896204007ebaSmrg	if test -n "$postlink_cmds"; then
896304007ebaSmrg	  func_to_tool_file "$output"
896404007ebaSmrg	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
896504007ebaSmrg	  func_execute_cmds "$postlink_cmds" 'exit $?'
896604007ebaSmrg	fi
896704007ebaSmrg
896804007ebaSmrg	exit $EXIT_SUCCESS
896904007ebaSmrg      fi
897004007ebaSmrg
897104007ebaSmrg      if test "$hardcode_action" = relink; then
897204007ebaSmrg	# Fast installation is not supported
897304007ebaSmrg	link_command="$compile_var$compile_command$compile_rpath"
897404007ebaSmrg	relink_command="$finalize_var$finalize_command$finalize_rpath"
897504007ebaSmrg
897604007ebaSmrg	func_warning "this platform does not like uninstalled shared libraries"
897704007ebaSmrg	func_warning "\`$output' will be relinked during installation"
897804007ebaSmrg      else
897904007ebaSmrg	if test "$fast_install" != no; then
898004007ebaSmrg	  link_command="$finalize_var$compile_command$finalize_rpath"
898104007ebaSmrg	  if test "$fast_install" = yes; then
898204007ebaSmrg	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
898304007ebaSmrg	  else
898404007ebaSmrg	    # fast_install is set to needless
898504007ebaSmrg	    relink_command=
898604007ebaSmrg	  fi
898704007ebaSmrg	else
898804007ebaSmrg	  link_command="$compile_var$compile_command$compile_rpath"
898904007ebaSmrg	  relink_command="$finalize_var$finalize_command$finalize_rpath"
899004007ebaSmrg	fi
899104007ebaSmrg      fi
899204007ebaSmrg
899304007ebaSmrg      # Replace the output file specification.
899404007ebaSmrg      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
899504007ebaSmrg
899604007ebaSmrg      # Delete the old output files.
899704007ebaSmrg      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
899804007ebaSmrg
899904007ebaSmrg      func_show_eval "$link_command" 'exit $?'
900004007ebaSmrg
900104007ebaSmrg      if test -n "$postlink_cmds"; then
900204007ebaSmrg	func_to_tool_file "$output_objdir/$outputname"
900304007ebaSmrg	postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
900404007ebaSmrg	func_execute_cmds "$postlink_cmds" 'exit $?'
900504007ebaSmrg      fi
900604007ebaSmrg
900704007ebaSmrg      # Now create the wrapper script.
900804007ebaSmrg      func_verbose "creating $output"
900904007ebaSmrg
901004007ebaSmrg      # Quote the relink command for shipping.
901104007ebaSmrg      if test -n "$relink_command"; then
901204007ebaSmrg	# Preserve any variables that may affect compiler behavior
901304007ebaSmrg	for var in $variables_saved_for_relink; do
901404007ebaSmrg	  if eval test -z \"\${$var+set}\"; then
901504007ebaSmrg	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
901604007ebaSmrg	  elif eval var_value=\$$var; test -z "$var_value"; then
901704007ebaSmrg	    relink_command="$var=; export $var; $relink_command"
901804007ebaSmrg	  else
901904007ebaSmrg	    func_quote_for_eval "$var_value"
902004007ebaSmrg	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
902104007ebaSmrg	  fi
902204007ebaSmrg	done
902304007ebaSmrg	relink_command="(cd `pwd`; $relink_command)"
902404007ebaSmrg	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
902504007ebaSmrg      fi
902604007ebaSmrg
902704007ebaSmrg      # Only actually do things if not in dry run mode.
902804007ebaSmrg      $opt_dry_run || {
902904007ebaSmrg	# win32 will think the script is a binary if it has
903004007ebaSmrg	# a .exe suffix, so we strip it off here.
903104007ebaSmrg	case $output in
903204007ebaSmrg	  *.exe) func_stripname '' '.exe' "$output"
903304007ebaSmrg	         output=$func_stripname_result ;;
903404007ebaSmrg	esac
903504007ebaSmrg	# test for cygwin because mv fails w/o .exe extensions
903604007ebaSmrg	case $host in
903704007ebaSmrg	  *cygwin*)
903804007ebaSmrg	    exeext=.exe
903904007ebaSmrg	    func_stripname '' '.exe' "$outputname"
904004007ebaSmrg	    outputname=$func_stripname_result ;;
904104007ebaSmrg	  *) exeext= ;;
904204007ebaSmrg	esac
904304007ebaSmrg	case $host in
904404007ebaSmrg	  *cygwin* | *mingw* )
904504007ebaSmrg	    func_dirname_and_basename "$output" "" "."
904604007ebaSmrg	    output_name=$func_basename_result
904704007ebaSmrg	    output_path=$func_dirname_result
904804007ebaSmrg	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
904904007ebaSmrg	    cwrapper="$output_path/$output_name.exe"
905004007ebaSmrg	    $RM $cwrappersource $cwrapper
905104007ebaSmrg	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
905204007ebaSmrg
905304007ebaSmrg	    func_emit_cwrapperexe_src > $cwrappersource
905404007ebaSmrg
905504007ebaSmrg	    # The wrapper executable is built using the $host compiler,
905604007ebaSmrg	    # because it contains $host paths and files. If cross-
905704007ebaSmrg	    # compiling, it, like the target executable, must be
905804007ebaSmrg	    # executed on the $host or under an emulation environment.
905904007ebaSmrg	    $opt_dry_run || {
906004007ebaSmrg	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
906104007ebaSmrg	      $STRIP $cwrapper
906204007ebaSmrg	    }
906304007ebaSmrg
906404007ebaSmrg	    # Now, create the wrapper script for func_source use:
906504007ebaSmrg	    func_ltwrapper_scriptname $cwrapper
906604007ebaSmrg	    $RM $func_ltwrapper_scriptname_result
906704007ebaSmrg	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
906804007ebaSmrg	    $opt_dry_run || {
906904007ebaSmrg	      # note: this script will not be executed, so do not chmod.
907004007ebaSmrg	      if test "x$build" = "x$host" ; then
907104007ebaSmrg		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
907204007ebaSmrg	      else
907304007ebaSmrg		func_emit_wrapper no > $func_ltwrapper_scriptname_result
907404007ebaSmrg	      fi
907504007ebaSmrg	    }
907604007ebaSmrg	  ;;
907704007ebaSmrg	  * )
907804007ebaSmrg	    $RM $output
907904007ebaSmrg	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
908004007ebaSmrg
908104007ebaSmrg	    func_emit_wrapper no > $output
908204007ebaSmrg	    chmod +x $output
908304007ebaSmrg	  ;;
908404007ebaSmrg	esac
908504007ebaSmrg      }
908604007ebaSmrg      exit $EXIT_SUCCESS
908704007ebaSmrg      ;;
908804007ebaSmrg    esac
908904007ebaSmrg
909004007ebaSmrg    # See if we need to build an old-fashioned archive.
909104007ebaSmrg    for oldlib in $oldlibs; do
909204007ebaSmrg
909304007ebaSmrg      if test "$build_libtool_libs" = convenience; then
909404007ebaSmrg	oldobjs="$libobjs_save $symfileobj"
909504007ebaSmrg	addlibs="$convenience"
909604007ebaSmrg	build_libtool_libs=no
909704007ebaSmrg      else
909804007ebaSmrg	if test "$build_libtool_libs" = module; then
909904007ebaSmrg	  oldobjs="$libobjs_save"
910004007ebaSmrg	  build_libtool_libs=no
910104007ebaSmrg	else
910204007ebaSmrg	  oldobjs="$old_deplibs $non_pic_objects"
910304007ebaSmrg	  if test "$preload" = yes && test -f "$symfileobj"; then
910404007ebaSmrg	    func_append oldobjs " $symfileobj"
910504007ebaSmrg	  fi
910604007ebaSmrg	fi
910704007ebaSmrg	addlibs="$old_convenience"
910804007ebaSmrg      fi
910904007ebaSmrg
911004007ebaSmrg      if test -n "$addlibs"; then
911104007ebaSmrg	gentop="$output_objdir/${outputname}x"
911204007ebaSmrg	func_append generated " $gentop"
911304007ebaSmrg
911404007ebaSmrg	func_extract_archives $gentop $addlibs
911504007ebaSmrg	func_append oldobjs " $func_extract_archives_result"
911604007ebaSmrg      fi
911704007ebaSmrg
911804007ebaSmrg      # Do each command in the archive commands.
911904007ebaSmrg      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
912004007ebaSmrg	cmds=$old_archive_from_new_cmds
912104007ebaSmrg      else
912204007ebaSmrg
912304007ebaSmrg	# Add any objects from preloaded convenience libraries
912404007ebaSmrg	if test -n "$dlprefiles"; then
912504007ebaSmrg	  gentop="$output_objdir/${outputname}x"
912604007ebaSmrg	  func_append generated " $gentop"
912704007ebaSmrg
912804007ebaSmrg	  func_extract_archives $gentop $dlprefiles
912904007ebaSmrg	  func_append oldobjs " $func_extract_archives_result"
913004007ebaSmrg	fi
913104007ebaSmrg
913204007ebaSmrg	# POSIX demands no paths to be encoded in archives.  We have
913304007ebaSmrg	# to avoid creating archives with duplicate basenames if we
913404007ebaSmrg	# might have to extract them afterwards, e.g., when creating a
913504007ebaSmrg	# static archive out of a convenience library, or when linking
913604007ebaSmrg	# the entirety of a libtool archive into another (currently
913704007ebaSmrg	# not supported by libtool).
913804007ebaSmrg	if (for obj in $oldobjs
913904007ebaSmrg	    do
914004007ebaSmrg	      func_basename "$obj"
914104007ebaSmrg	      $ECHO "$func_basename_result"
914204007ebaSmrg	    done | sort | sort -uc >/dev/null 2>&1); then
914304007ebaSmrg	  :
914404007ebaSmrg	else
914504007ebaSmrg	  echo "copying selected object files to avoid basename conflicts..."
914604007ebaSmrg	  gentop="$output_objdir/${outputname}x"
914704007ebaSmrg	  func_append generated " $gentop"
914804007ebaSmrg	  func_mkdir_p "$gentop"
914904007ebaSmrg	  save_oldobjs=$oldobjs
915004007ebaSmrg	  oldobjs=
915104007ebaSmrg	  counter=1
915204007ebaSmrg	  for obj in $save_oldobjs
915304007ebaSmrg	  do
915404007ebaSmrg	    func_basename "$obj"
915504007ebaSmrg	    objbase="$func_basename_result"
915604007ebaSmrg	    case " $oldobjs " in
915704007ebaSmrg	    " ") oldobjs=$obj ;;
915804007ebaSmrg	    *[\ /]"$objbase "*)
915904007ebaSmrg	      while :; do
916004007ebaSmrg		# Make sure we don't pick an alternate name that also
916104007ebaSmrg		# overlaps.
916204007ebaSmrg		newobj=lt$counter-$objbase
916304007ebaSmrg		func_arith $counter + 1
916404007ebaSmrg		counter=$func_arith_result
916504007ebaSmrg		case " $oldobjs " in
916604007ebaSmrg		*[\ /]"$newobj "*) ;;
916704007ebaSmrg		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
916804007ebaSmrg		esac
916904007ebaSmrg	      done
917004007ebaSmrg	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
917104007ebaSmrg	      func_append oldobjs " $gentop/$newobj"
917204007ebaSmrg	      ;;
917304007ebaSmrg	    *) func_append oldobjs " $obj" ;;
917404007ebaSmrg	    esac
917504007ebaSmrg	  done
917604007ebaSmrg	fi
917704007ebaSmrg	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
917804007ebaSmrg	tool_oldlib=$func_to_tool_file_result
917904007ebaSmrg	eval cmds=\"$old_archive_cmds\"
918004007ebaSmrg
918104007ebaSmrg	func_len " $cmds"
918204007ebaSmrg	len=$func_len_result
918304007ebaSmrg	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
918404007ebaSmrg	  cmds=$old_archive_cmds
918504007ebaSmrg	elif test -n "$archiver_list_spec"; then
918604007ebaSmrg	  func_verbose "using command file archive linking..."
918704007ebaSmrg	  for obj in $oldobjs
918804007ebaSmrg	  do
918904007ebaSmrg	    func_to_tool_file "$obj"
919004007ebaSmrg	    $ECHO "$func_to_tool_file_result"
919104007ebaSmrg	  done > $output_objdir/$libname.libcmd
919204007ebaSmrg	  func_to_tool_file "$output_objdir/$libname.libcmd"
919304007ebaSmrg	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
919404007ebaSmrg	  cmds=$old_archive_cmds
919504007ebaSmrg	else
919604007ebaSmrg	  # the command line is too long to link in one step, link in parts
919704007ebaSmrg	  func_verbose "using piecewise archive linking..."
919804007ebaSmrg	  save_RANLIB=$RANLIB
919904007ebaSmrg	  RANLIB=:
920004007ebaSmrg	  objlist=
920104007ebaSmrg	  concat_cmds=
920204007ebaSmrg	  save_oldobjs=$oldobjs
920304007ebaSmrg	  oldobjs=
920404007ebaSmrg	  # Is there a better way of finding the last object in the list?
920504007ebaSmrg	  for obj in $save_oldobjs
920604007ebaSmrg	  do
920704007ebaSmrg	    last_oldobj=$obj
920804007ebaSmrg	  done
920904007ebaSmrg	  eval test_cmds=\"$old_archive_cmds\"
921004007ebaSmrg	  func_len " $test_cmds"
921104007ebaSmrg	  len0=$func_len_result
921204007ebaSmrg	  len=$len0
921304007ebaSmrg	  for obj in $save_oldobjs
921404007ebaSmrg	  do
921504007ebaSmrg	    func_len " $obj"
921604007ebaSmrg	    func_arith $len + $func_len_result
921704007ebaSmrg	    len=$func_arith_result
921804007ebaSmrg	    func_append objlist " $obj"
921904007ebaSmrg	    if test "$len" -lt "$max_cmd_len"; then
922004007ebaSmrg	      :
922104007ebaSmrg	    else
922204007ebaSmrg	      # the above command should be used before it gets too long
922304007ebaSmrg	      oldobjs=$objlist
922404007ebaSmrg	      if test "$obj" = "$last_oldobj" ; then
922504007ebaSmrg		RANLIB=$save_RANLIB
922604007ebaSmrg	      fi
922704007ebaSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
922804007ebaSmrg	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
922904007ebaSmrg	      objlist=
923004007ebaSmrg	      len=$len0
923104007ebaSmrg	    fi
923204007ebaSmrg	  done
923304007ebaSmrg	  RANLIB=$save_RANLIB
923404007ebaSmrg	  oldobjs=$objlist
923504007ebaSmrg	  if test "X$oldobjs" = "X" ; then
923604007ebaSmrg	    eval cmds=\"\$concat_cmds\"
923704007ebaSmrg	  else
923804007ebaSmrg	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
923904007ebaSmrg	  fi
924004007ebaSmrg	fi
924104007ebaSmrg      fi
924204007ebaSmrg      func_execute_cmds "$cmds" 'exit $?'
924304007ebaSmrg    done
924404007ebaSmrg
924504007ebaSmrg    test -n "$generated" && \
924604007ebaSmrg      func_show_eval "${RM}r$generated"
924704007ebaSmrg
924804007ebaSmrg    # Now create the libtool archive.
924904007ebaSmrg    case $output in
925004007ebaSmrg    *.la)
925104007ebaSmrg      old_library=
925204007ebaSmrg      test "$build_old_libs" = yes && old_library="$libname.$libext"
925304007ebaSmrg      func_verbose "creating $output"
925404007ebaSmrg
925504007ebaSmrg      # Preserve any variables that may affect compiler behavior
925604007ebaSmrg      for var in $variables_saved_for_relink; do
925704007ebaSmrg	if eval test -z \"\${$var+set}\"; then
925804007ebaSmrg	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
925904007ebaSmrg	elif eval var_value=\$$var; test -z "$var_value"; then
926004007ebaSmrg	  relink_command="$var=; export $var; $relink_command"
926104007ebaSmrg	else
926204007ebaSmrg	  func_quote_for_eval "$var_value"
926304007ebaSmrg	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
926404007ebaSmrg	fi
926504007ebaSmrg      done
926604007ebaSmrg      # Quote the link command for shipping.
926704007ebaSmrg      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
926804007ebaSmrg      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
926904007ebaSmrg      if test "$hardcode_automatic" = yes ; then
927004007ebaSmrg	relink_command=
927104007ebaSmrg      fi
927204007ebaSmrg
927304007ebaSmrg      # Only create the output if not a dry run.
927404007ebaSmrg      $opt_dry_run || {
927504007ebaSmrg	for installed in no yes; do
927604007ebaSmrg	  if test "$installed" = yes; then
927704007ebaSmrg	    if test -z "$install_libdir"; then
927804007ebaSmrg	      break
927904007ebaSmrg	    fi
928004007ebaSmrg	    output="$output_objdir/$outputname"i
928104007ebaSmrg	    # Replace all uninstalled libtool libraries with the installed ones
928204007ebaSmrg	    newdependency_libs=
928304007ebaSmrg	    for deplib in $dependency_libs; do
928404007ebaSmrg	      case $deplib in
928504007ebaSmrg	      *.la)
928604007ebaSmrg		func_basename "$deplib"
928704007ebaSmrg		name="$func_basename_result"
928804007ebaSmrg		func_resolve_sysroot "$deplib"
928904007ebaSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
929004007ebaSmrg		test -z "$libdir" && \
929104007ebaSmrg		  func_fatal_error "\`$deplib' is not a valid libtool archive"
929204007ebaSmrg		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
929304007ebaSmrg		;;
929404007ebaSmrg	      -L*)
929504007ebaSmrg		func_stripname -L '' "$deplib"
929604007ebaSmrg		func_replace_sysroot "$func_stripname_result"
929704007ebaSmrg		func_append newdependency_libs " -L$func_replace_sysroot_result"
929804007ebaSmrg		;;
929904007ebaSmrg	      -R*)
930004007ebaSmrg		func_stripname -R '' "$deplib"
930104007ebaSmrg		func_replace_sysroot "$func_stripname_result"
930204007ebaSmrg		func_append newdependency_libs " -R$func_replace_sysroot_result"
930304007ebaSmrg		;;
930404007ebaSmrg	      *) func_append newdependency_libs " $deplib" ;;
930504007ebaSmrg	      esac
930604007ebaSmrg	    done
930704007ebaSmrg	    dependency_libs="$newdependency_libs"
930804007ebaSmrg	    newdlfiles=
930904007ebaSmrg
931004007ebaSmrg	    for lib in $dlfiles; do
931104007ebaSmrg	      case $lib in
931204007ebaSmrg	      *.la)
931304007ebaSmrg	        func_basename "$lib"
931404007ebaSmrg		name="$func_basename_result"
931504007ebaSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
931604007ebaSmrg		test -z "$libdir" && \
931704007ebaSmrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
931804007ebaSmrg		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
931904007ebaSmrg		;;
932004007ebaSmrg	      *) func_append newdlfiles " $lib" ;;
932104007ebaSmrg	      esac
932204007ebaSmrg	    done
932304007ebaSmrg	    dlfiles="$newdlfiles"
932404007ebaSmrg	    newdlprefiles=
932504007ebaSmrg	    for lib in $dlprefiles; do
932604007ebaSmrg	      case $lib in
932704007ebaSmrg	      *.la)
932804007ebaSmrg		# Only pass preopened files to the pseudo-archive (for
932904007ebaSmrg		# eventual linking with the app. that links it) if we
933004007ebaSmrg		# didn't already link the preopened objects directly into
933104007ebaSmrg		# the library:
933204007ebaSmrg		func_basename "$lib"
933304007ebaSmrg		name="$func_basename_result"
933404007ebaSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
933504007ebaSmrg		test -z "$libdir" && \
933604007ebaSmrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
933704007ebaSmrg		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
933804007ebaSmrg		;;
933904007ebaSmrg	      esac
934004007ebaSmrg	    done
934104007ebaSmrg	    dlprefiles="$newdlprefiles"
934204007ebaSmrg	  else
934304007ebaSmrg	    newdlfiles=
934404007ebaSmrg	    for lib in $dlfiles; do
934504007ebaSmrg	      case $lib in
934604007ebaSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
934704007ebaSmrg		*) abs=`pwd`"/$lib" ;;
934804007ebaSmrg	      esac
934904007ebaSmrg	      func_append newdlfiles " $abs"
935004007ebaSmrg	    done
935104007ebaSmrg	    dlfiles="$newdlfiles"
935204007ebaSmrg	    newdlprefiles=
935304007ebaSmrg	    for lib in $dlprefiles; do
935404007ebaSmrg	      case $lib in
935504007ebaSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
935604007ebaSmrg		*) abs=`pwd`"/$lib" ;;
935704007ebaSmrg	      esac
935804007ebaSmrg	      func_append newdlprefiles " $abs"
935904007ebaSmrg	    done
936004007ebaSmrg	    dlprefiles="$newdlprefiles"
936104007ebaSmrg	  fi
936204007ebaSmrg	  $RM $output
936304007ebaSmrg	  # place dlname in correct position for cygwin
936404007ebaSmrg	  # In fact, it would be nice if we could use this code for all target
936504007ebaSmrg	  # systems that can't hard-code library paths into their executables
936604007ebaSmrg	  # and that have no shared library path variable independent of PATH,
936704007ebaSmrg	  # but it turns out we can't easily determine that from inspecting
936804007ebaSmrg	  # libtool variables, so we have to hard-code the OSs to which it
936904007ebaSmrg	  # applies here; at the moment, that means platforms that use the PE
937004007ebaSmrg	  # object format with DLL files.  See the long comment at the top of
937104007ebaSmrg	  # tests/bindir.at for full details.
937204007ebaSmrg	  tdlname=$dlname
937304007ebaSmrg	  case $host,$output,$installed,$module,$dlname in
937404007ebaSmrg	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
937504007ebaSmrg	      # If a -bindir argument was supplied, place the dll there.
937604007ebaSmrg	      if test "x$bindir" != x ;
937704007ebaSmrg	      then
937804007ebaSmrg		func_relative_path "$install_libdir" "$bindir"
937904007ebaSmrg		tdlname=$func_relative_path_result$dlname
938004007ebaSmrg	      else
938104007ebaSmrg		# Otherwise fall back on heuristic.
938204007ebaSmrg		tdlname=../bin/$dlname
938304007ebaSmrg	      fi
938404007ebaSmrg	      ;;
938504007ebaSmrg	  esac
938604007ebaSmrg	  $ECHO > $output "\
938704007ebaSmrg# $outputname - a libtool library file
938804007ebaSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
938904007ebaSmrg#
939004007ebaSmrg# Please DO NOT delete this file!
939104007ebaSmrg# It is necessary for linking the library.
939204007ebaSmrg
939304007ebaSmrg# The name that we can dlopen(3).
939404007ebaSmrgdlname='$tdlname'
939504007ebaSmrg
939604007ebaSmrg# Names of this library.
939704007ebaSmrglibrary_names='$library_names'
939804007ebaSmrg
939904007ebaSmrg# The name of the static archive.
940004007ebaSmrgold_library='$old_library'
940104007ebaSmrg
940204007ebaSmrg# Linker flags that can not go in dependency_libs.
940304007ebaSmrginherited_linker_flags='$new_inherited_linker_flags'
940404007ebaSmrg
940504007ebaSmrg# Libraries that this one depends upon.
940604007ebaSmrgdependency_libs='$dependency_libs'
940704007ebaSmrg
940804007ebaSmrg# Names of additional weak libraries provided by this library
940904007ebaSmrgweak_library_names='$weak_libs'
941004007ebaSmrg
941104007ebaSmrg# Version information for $libname.
941204007ebaSmrgcurrent=$current
941304007ebaSmrgage=$age
941404007ebaSmrgrevision=$revision
941504007ebaSmrg
941604007ebaSmrg# Is this an already installed library?
941704007ebaSmrginstalled=$installed
941804007ebaSmrg
941904007ebaSmrg# Should we warn about portability when linking against -modules?
942004007ebaSmrgshouldnotlink=$module
942104007ebaSmrg
942204007ebaSmrg# Files to dlopen/dlpreopen
942304007ebaSmrgdlopen='$dlfiles'
942404007ebaSmrgdlpreopen='$dlprefiles'
942504007ebaSmrg
942604007ebaSmrg# Directory that this library needs to be installed in:
942704007ebaSmrglibdir='$install_libdir'"
942804007ebaSmrg	  if test "$installed" = no && test "$need_relink" = yes; then
942904007ebaSmrg	    $ECHO >> $output "\
943004007ebaSmrgrelink_command=\"$relink_command\""
943104007ebaSmrg	  fi
943204007ebaSmrg	done
943304007ebaSmrg      }
943404007ebaSmrg
943504007ebaSmrg      # Do a symbolic link so that the libtool archive can be found in
943604007ebaSmrg      # LD_LIBRARY_PATH before the program is installed.
943704007ebaSmrg      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
943804007ebaSmrg      ;;
943904007ebaSmrg    esac
944004007ebaSmrg    exit $EXIT_SUCCESS
944104007ebaSmrg}
944204007ebaSmrg
944304007ebaSmrg{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
944404007ebaSmrg    func_mode_link ${1+"$@"}
944504007ebaSmrg
944604007ebaSmrg
944704007ebaSmrg# func_mode_uninstall arg...
944804007ebaSmrgfunc_mode_uninstall ()
944904007ebaSmrg{
945004007ebaSmrg    $opt_debug
945104007ebaSmrg    RM="$nonopt"
945204007ebaSmrg    files=
945304007ebaSmrg    rmforce=
945404007ebaSmrg    exit_status=0
945504007ebaSmrg
945604007ebaSmrg    # This variable tells wrapper scripts just to set variables rather
945704007ebaSmrg    # than running their programs.
945804007ebaSmrg    libtool_install_magic="$magic"
945904007ebaSmrg
946004007ebaSmrg    for arg
946104007ebaSmrg    do
946204007ebaSmrg      case $arg in
946304007ebaSmrg      -f) func_append RM " $arg"; rmforce=yes ;;
946404007ebaSmrg      -*) func_append RM " $arg" ;;
946504007ebaSmrg      *) func_append files " $arg" ;;
946604007ebaSmrg      esac
946704007ebaSmrg    done
946804007ebaSmrg
946904007ebaSmrg    test -z "$RM" && \
947004007ebaSmrg      func_fatal_help "you must specify an RM program"
947104007ebaSmrg
947204007ebaSmrg    rmdirs=
947304007ebaSmrg
947404007ebaSmrg    for file in $files; do
947504007ebaSmrg      func_dirname "$file" "" "."
947604007ebaSmrg      dir="$func_dirname_result"
947704007ebaSmrg      if test "X$dir" = X.; then
947804007ebaSmrg	odir="$objdir"
947904007ebaSmrg      else
948004007ebaSmrg	odir="$dir/$objdir"
948104007ebaSmrg      fi
948204007ebaSmrg      func_basename "$file"
948304007ebaSmrg      name="$func_basename_result"
948404007ebaSmrg      test "$opt_mode" = uninstall && odir="$dir"
948504007ebaSmrg
948604007ebaSmrg      # Remember odir for removal later, being careful to avoid duplicates
948704007ebaSmrg      if test "$opt_mode" = clean; then
948804007ebaSmrg	case " $rmdirs " in
948904007ebaSmrg	  *" $odir "*) ;;
949004007ebaSmrg	  *) func_append rmdirs " $odir" ;;
949104007ebaSmrg	esac
949204007ebaSmrg      fi
949304007ebaSmrg
949404007ebaSmrg      # Don't error if the file doesn't exist and rm -f was used.
949504007ebaSmrg      if { test -L "$file"; } >/dev/null 2>&1 ||
949604007ebaSmrg	 { test -h "$file"; } >/dev/null 2>&1 ||
949704007ebaSmrg	 test -f "$file"; then
949804007ebaSmrg	:
949904007ebaSmrg      elif test -d "$file"; then
950004007ebaSmrg	exit_status=1
950104007ebaSmrg	continue
950204007ebaSmrg      elif test "$rmforce" = yes; then
950304007ebaSmrg	continue
950404007ebaSmrg      fi
950504007ebaSmrg
950604007ebaSmrg      rmfiles="$file"
950704007ebaSmrg
950804007ebaSmrg      case $name in
950904007ebaSmrg      *.la)
951004007ebaSmrg	# Possibly a libtool archive, so verify it.
951104007ebaSmrg	if func_lalib_p "$file"; then
951204007ebaSmrg	  func_source $dir/$name
951304007ebaSmrg
951404007ebaSmrg	  # Delete the libtool libraries and symlinks.
951504007ebaSmrg	  for n in $library_names; do
951604007ebaSmrg	    func_append rmfiles " $odir/$n"
951704007ebaSmrg	  done
951804007ebaSmrg	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
951904007ebaSmrg
952004007ebaSmrg	  case "$opt_mode" in
952104007ebaSmrg	  clean)
952204007ebaSmrg	    case " $library_names " in
952304007ebaSmrg	    *" $dlname "*) ;;
952404007ebaSmrg	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
952504007ebaSmrg	    esac
952604007ebaSmrg	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
952704007ebaSmrg	    ;;
952804007ebaSmrg	  uninstall)
952904007ebaSmrg	    if test -n "$library_names"; then
953004007ebaSmrg	      # Do each command in the postuninstall commands.
953104007ebaSmrg	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
953204007ebaSmrg	    fi
953304007ebaSmrg
953404007ebaSmrg	    if test -n "$old_library"; then
953504007ebaSmrg	      # Do each command in the old_postuninstall commands.
953604007ebaSmrg	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
953704007ebaSmrg	    fi
953804007ebaSmrg	    # FIXME: should reinstall the best remaining shared library.
953904007ebaSmrg	    ;;
954004007ebaSmrg	  esac
954104007ebaSmrg	fi
954204007ebaSmrg	;;
954304007ebaSmrg
954404007ebaSmrg      *.lo)
954504007ebaSmrg	# Possibly a libtool object, so verify it.
954604007ebaSmrg	if func_lalib_p "$file"; then
954704007ebaSmrg
954804007ebaSmrg	  # Read the .lo file
954904007ebaSmrg	  func_source $dir/$name
955004007ebaSmrg
955104007ebaSmrg	  # Add PIC object to the list of files to remove.
955204007ebaSmrg	  if test -n "$pic_object" &&
955304007ebaSmrg	     test "$pic_object" != none; then
955404007ebaSmrg	    func_append rmfiles " $dir/$pic_object"
955504007ebaSmrg	  fi
955604007ebaSmrg
955704007ebaSmrg	  # Add non-PIC object to the list of files to remove.
955804007ebaSmrg	  if test -n "$non_pic_object" &&
955904007ebaSmrg	     test "$non_pic_object" != none; then
956004007ebaSmrg	    func_append rmfiles " $dir/$non_pic_object"
956104007ebaSmrg	  fi
956204007ebaSmrg	fi
956304007ebaSmrg	;;
956404007ebaSmrg
956504007ebaSmrg      *)
956604007ebaSmrg	if test "$opt_mode" = clean ; then
956704007ebaSmrg	  noexename=$name
956804007ebaSmrg	  case $file in
956904007ebaSmrg	  *.exe)
957004007ebaSmrg	    func_stripname '' '.exe' "$file"
957104007ebaSmrg	    file=$func_stripname_result
957204007ebaSmrg	    func_stripname '' '.exe' "$name"
957304007ebaSmrg	    noexename=$func_stripname_result
957404007ebaSmrg	    # $file with .exe has already been added to rmfiles,
957504007ebaSmrg	    # add $file without .exe
957604007ebaSmrg	    func_append rmfiles " $file"
957704007ebaSmrg	    ;;
957804007ebaSmrg	  esac
957904007ebaSmrg	  # Do a test to see if this is a libtool program.
958004007ebaSmrg	  if func_ltwrapper_p "$file"; then
958104007ebaSmrg	    if func_ltwrapper_executable_p "$file"; then
958204007ebaSmrg	      func_ltwrapper_scriptname "$file"
958304007ebaSmrg	      relink_command=
958404007ebaSmrg	      func_source $func_ltwrapper_scriptname_result
958504007ebaSmrg	      func_append rmfiles " $func_ltwrapper_scriptname_result"
958604007ebaSmrg	    else
958704007ebaSmrg	      relink_command=
958804007ebaSmrg	      func_source $dir/$noexename
958904007ebaSmrg	    fi
959004007ebaSmrg
959104007ebaSmrg	    # note $name still contains .exe if it was in $file originally
959204007ebaSmrg	    # as does the version of $file that was added into $rmfiles
959304007ebaSmrg	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
959404007ebaSmrg	    if test "$fast_install" = yes && test -n "$relink_command"; then
959504007ebaSmrg	      func_append rmfiles " $odir/lt-$name"
959604007ebaSmrg	    fi
959704007ebaSmrg	    if test "X$noexename" != "X$name" ; then
959804007ebaSmrg	      func_append rmfiles " $odir/lt-${noexename}.c"
959904007ebaSmrg	    fi
960004007ebaSmrg	  fi
960104007ebaSmrg	fi
960204007ebaSmrg	;;
960304007ebaSmrg      esac
960404007ebaSmrg      func_show_eval "$RM $rmfiles" 'exit_status=1'
960504007ebaSmrg    done
960604007ebaSmrg
960704007ebaSmrg    # Try to remove the ${objdir}s in the directories where we deleted files
960804007ebaSmrg    for dir in $rmdirs; do
960904007ebaSmrg      if test -d "$dir"; then
961004007ebaSmrg	func_show_eval "rmdir $dir >/dev/null 2>&1"
961104007ebaSmrg      fi
961204007ebaSmrg    done
961304007ebaSmrg
961404007ebaSmrg    exit $exit_status
961504007ebaSmrg}
961604007ebaSmrg
961704007ebaSmrg{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
961804007ebaSmrg    func_mode_uninstall ${1+"$@"}
961904007ebaSmrg
962004007ebaSmrgtest -z "$opt_mode" && {
962104007ebaSmrg  help="$generic_help"
962204007ebaSmrg  func_fatal_help "you must specify a MODE"
962304007ebaSmrg}
962404007ebaSmrg
962504007ebaSmrgtest -z "$exec_cmd" && \
962604007ebaSmrg  func_fatal_help "invalid operation mode \`$opt_mode'"
962704007ebaSmrg
962804007ebaSmrgif test -n "$exec_cmd"; then
962904007ebaSmrg  eval exec "$exec_cmd"
963004007ebaSmrg  exit $EXIT_FAILURE
963104007ebaSmrgfi
963204007ebaSmrg
963304007ebaSmrgexit $exit_status
963404007ebaSmrg
963504007ebaSmrg
963604007ebaSmrg# The TAGs below are defined such that we never get into a situation
963704007ebaSmrg# in which we disable both kinds of libraries.  Given conflicting
963804007ebaSmrg# choices, we go for a static library, that is the most portable,
963904007ebaSmrg# since we can't tell whether shared libraries were disabled because
964004007ebaSmrg# the user asked for that or because the platform doesn't support
964104007ebaSmrg# them.  This is particularly important on AIX, because we don't
964204007ebaSmrg# support having both static and shared libraries enabled at the same
964304007ebaSmrg# time on that platform, so we default to a shared-only configuration.
964404007ebaSmrg# If a disable-shared tag is given, we'll fallback to a static-only
964504007ebaSmrg# configuration.  But we'll never go from static-only to shared-only.
964604007ebaSmrg
964704007ebaSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
964804007ebaSmrgbuild_libtool_libs=no
964904007ebaSmrgbuild_old_libs=yes
965004007ebaSmrg# ### END LIBTOOL TAG CONFIG: disable-shared
965104007ebaSmrg
965204007ebaSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static
965304007ebaSmrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
965404007ebaSmrg# ### END LIBTOOL TAG CONFIG: disable-static
965504007ebaSmrg
965604007ebaSmrg# Local Variables:
965704007ebaSmrg# mode:shell-script
965804007ebaSmrg# sh-indentation:2
965904007ebaSmrg# End:
966004007ebaSmrg# vi:sw=2
966104007ebaSmrg
9662