ltmain.sh revision 72313efb
172313efbSmrg# Generated from ltmain.m4sh.
272313efbSmrg
372313efbSmrg# ltmain.sh (GNU libtool) 2.2.6
472313efbSmrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
572313efbSmrg
672313efbSmrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
772313efbSmrg# This is free software; see the source for copying conditions.  There is NO
872313efbSmrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
972313efbSmrg
1072313efbSmrg# GNU Libtool is free software; you can redistribute it and/or modify
11bdcaa8d0Smrg# it under the terms of the GNU General Public License as published by
12bdcaa8d0Smrg# the Free Software Foundation; either version 2 of the License, or
13bdcaa8d0Smrg# (at your option) any later version.
14bdcaa8d0Smrg#
1572313efbSmrg# As a special exception to the GNU General Public License,
1672313efbSmrg# if you distribute this file as part of a program or library that
1772313efbSmrg# is built using GNU Libtool, you may include this file under the
1872313efbSmrg# same distribution terms that you use for the rest of that program.
1972313efbSmrg#
2072313efbSmrg# GNU Libtool is distributed in the hope that it will be useful, but
21bdcaa8d0Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
22bdcaa8d0Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
23bdcaa8d0Smrg# General Public License for more details.
24bdcaa8d0Smrg#
25bdcaa8d0Smrg# You should have received a copy of the GNU General Public License
2672313efbSmrg# along with GNU Libtool; see the file COPYING.  If not, a copy
2772313efbSmrg# can be downloaded from http://www.gnu.org/licenses/gpl.html,
2872313efbSmrg# or obtained by writing to the Free Software Foundation, Inc.,
2972313efbSmrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
3072313efbSmrg
3172313efbSmrg# Usage: $progname [OPTION]... [MODE-ARG]...
3272313efbSmrg#
3372313efbSmrg# Provide generalized library-building support services.
34bdcaa8d0Smrg#
3572313efbSmrg#     --config             show all configuration variables
3672313efbSmrg#     --debug              enable verbose shell tracing
3772313efbSmrg# -n, --dry-run            display commands without modifying any files
3872313efbSmrg#     --features           display basic configuration information and exit
3972313efbSmrg#     --mode=MODE          use operation mode MODE
4072313efbSmrg#     --preserve-dup-deps  don't remove duplicate dependency libraries
4172313efbSmrg#     --quiet, --silent    don't print informational messages
4272313efbSmrg#     --tag=TAG            use configuration variables from tag TAG
4372313efbSmrg# -v, --verbose            print informational messages (default)
4472313efbSmrg#     --version            print version information
4572313efbSmrg# -h, --help               print short or long help message
4672313efbSmrg#
4772313efbSmrg# MODE must be one of the following:
4872313efbSmrg#
4972313efbSmrg#       clean              remove files from the build directory
5072313efbSmrg#       compile            compile a source file into a libtool object
5172313efbSmrg#       execute            automatically set library path, then run a program
5272313efbSmrg#       finish             complete the installation of libtool libraries
5372313efbSmrg#       install            install libraries or executables
5472313efbSmrg#       link               create a library or an executable
5572313efbSmrg#       uninstall          remove libraries from an installed directory
5672313efbSmrg#
5772313efbSmrg# MODE-ARGS vary depending on the MODE.
5872313efbSmrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
5972313efbSmrg#
6072313efbSmrg# When reporting a bug, please describe a test case to reproduce it and
6172313efbSmrg# include the following information:
6272313efbSmrg#
6372313efbSmrg#       host-triplet:	$host
6472313efbSmrg#       shell:		$SHELL
6572313efbSmrg#       compiler:		$LTCC
6672313efbSmrg#       compiler flags:		$LTCFLAGS
6772313efbSmrg#       linker:		$LD (gnu? $with_gnu_ld)
6872313efbSmrg#       $progname:		(GNU libtool) 2.2.6
6972313efbSmrg#       automake:		$automake_version
7072313efbSmrg#       autoconf:		$autoconf_version
7172313efbSmrg#
7272313efbSmrg# Report bugs to <bug-libtool@gnu.org>.
7372313efbSmrg
7472313efbSmrgPROGRAM=ltmain.sh
7572313efbSmrgPACKAGE=libtool
7672313efbSmrgVERSION=2.2.6
7772313efbSmrgTIMESTAMP=""
7872313efbSmrgpackage_revision=1.3012
7972313efbSmrg
8072313efbSmrg# Be Bourne compatible
8172313efbSmrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
8272313efbSmrg  emulate sh
8372313efbSmrg  NULLCMD=:
8472313efbSmrg  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
8572313efbSmrg  # is contrary to our usage.  Disable this feature.
8672313efbSmrg  alias -g '${1+"$@"}'='"$@"'
8772313efbSmrg  setopt NO_GLOB_SUBST
8872313efbSmrgelse
8972313efbSmrg  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
9072313efbSmrgfi
9172313efbSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
9272313efbSmrgDUALCASE=1; export DUALCASE # for MKS sh
9372313efbSmrg
9472313efbSmrg# NLS nuisances: We save the old values to restore during execute mode.
9572313efbSmrg# Only set LANG and LC_ALL to C if already set.
9672313efbSmrg# These must not be set unconditionally because not all systems understand
9772313efbSmrg# e.g. LANG=C (notably SCO).
9872313efbSmrglt_user_locale=
9972313efbSmrglt_safe_locale=
10072313efbSmrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
10172313efbSmrgdo
10272313efbSmrg  eval "if test \"\${$lt_var+set}\" = set; then
10372313efbSmrg          save_$lt_var=\$$lt_var
10472313efbSmrg          $lt_var=C
10572313efbSmrg	  export $lt_var
10672313efbSmrg	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
10772313efbSmrg	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
10872313efbSmrg	fi"
10972313efbSmrgdone
11072313efbSmrg
11172313efbSmrg$lt_unset CDPATH
11272313efbSmrg
11372313efbSmrg
11472313efbSmrg
11572313efbSmrg
11672313efbSmrg
11772313efbSmrg: ${CP="cp -f"}
11872313efbSmrg: ${ECHO="echo"}
11972313efbSmrg: ${EGREP="/bin/grep -E"}
12072313efbSmrg: ${FGREP="/bin/grep -F"}
12172313efbSmrg: ${GREP="/bin/grep"}
12272313efbSmrg: ${LN_S="ln -s"}
12372313efbSmrg: ${MAKE="make"}
12472313efbSmrg: ${MKDIR="mkdir"}
12572313efbSmrg: ${MV="mv -f"}
12672313efbSmrg: ${RM="rm -f"}
12772313efbSmrg: ${SED="/bin/sed"}
12872313efbSmrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
12972313efbSmrg: ${Xsed="$SED -e 1s/^X//"}
130bdcaa8d0Smrg
13172313efbSmrg# Global variables:
13272313efbSmrgEXIT_SUCCESS=0
13372313efbSmrgEXIT_FAILURE=1
13472313efbSmrgEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
13572313efbSmrgEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
13672313efbSmrg
13772313efbSmrgexit_status=$EXIT_SUCCESS
13872313efbSmrg
13972313efbSmrg# Make sure IFS has a sensible default
14072313efbSmrglt_nl='
14172313efbSmrg'
14272313efbSmrgIFS=" 	$lt_nl"
14372313efbSmrg
14472313efbSmrgdirname="s,/[^/]*$,,"
14572313efbSmrgbasename="s,^.*/,,"
14672313efbSmrg
14772313efbSmrg# func_dirname_and_basename file append nondir_replacement
14872313efbSmrg# perform func_basename and func_dirname in a single function
14972313efbSmrg# call:
15072313efbSmrg#   dirname:  Compute the dirname of FILE.  If nonempty,
15172313efbSmrg#             add APPEND to the result, otherwise set result
15272313efbSmrg#             to NONDIR_REPLACEMENT.
15372313efbSmrg#             value returned in "$func_dirname_result"
15472313efbSmrg#   basename: Compute filename of FILE.
15572313efbSmrg#             value retuned in "$func_basename_result"
15672313efbSmrg# Implementation must be kept synchronized with func_dirname
15772313efbSmrg# and func_basename. For efficiency, we do not delegate to
15872313efbSmrg# those functions but instead duplicate the functionality here.
15972313efbSmrgfunc_dirname_and_basename ()
16072313efbSmrg{
16172313efbSmrg  # Extract subdirectory from the argument.
16272313efbSmrg  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
16372313efbSmrg  if test "X$func_dirname_result" = "X${1}"; then
16472313efbSmrg    func_dirname_result="${3}"
16572313efbSmrg  else
16672313efbSmrg    func_dirname_result="$func_dirname_result${2}"
16772313efbSmrg  fi
16872313efbSmrg  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
16972313efbSmrg}
17072313efbSmrg
17172313efbSmrg# Generated shell functions inserted here.
172bdcaa8d0Smrg
173bdcaa8d0Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
174bdcaa8d0Smrg# is ksh but when the shell is invoked as "sh" and the current value of
175bdcaa8d0Smrg# the _XPG environment variable is not equal to 1 (one), the special
176bdcaa8d0Smrg# positional parameter $0, within a function call, is the name of the
177bdcaa8d0Smrg# function.
178bdcaa8d0Smrgprogpath="$0"
179bdcaa8d0Smrg
180bdcaa8d0Smrg# The name of this program:
18172313efbSmrg# In the unlikely event $progname began with a '-', it would play havoc with
18272313efbSmrg# func_echo (imagine progname=-n), so we prepend ./ in that case:
18372313efbSmrgfunc_dirname_and_basename "$progpath"
18472313efbSmrgprogname=$func_basename_result
18572313efbSmrgcase $progname in
18672313efbSmrg  -*) progname=./$progname ;;
18772313efbSmrgesac
188bdcaa8d0Smrg
18972313efbSmrg# Make sure we have an absolute path for reexecution:
19072313efbSmrgcase $progpath in
19172313efbSmrg  [\\/]*|[A-Za-z]:\\*) ;;
19272313efbSmrg  *[\\/]*)
19372313efbSmrg     progdir=$func_dirname_result
19472313efbSmrg     progdir=`cd "$progdir" && pwd`
19572313efbSmrg     progpath="$progdir/$progname"
19672313efbSmrg     ;;
19772313efbSmrg  *)
19872313efbSmrg     save_IFS="$IFS"
19972313efbSmrg     IFS=:
20072313efbSmrg     for progdir in $PATH; do
20172313efbSmrg       IFS="$save_IFS"
20272313efbSmrg       test -x "$progdir/$progname" && break
20372313efbSmrg     done
20472313efbSmrg     IFS="$save_IFS"
20572313efbSmrg     test -n "$progdir" || progdir=`pwd`
20672313efbSmrg     progpath="$progdir/$progname"
20772313efbSmrg     ;;
20872313efbSmrgesac
209bdcaa8d0Smrg
21072313efbSmrg# Sed substitution that helps us do robust quoting.  It backslashifies
21172313efbSmrg# metacharacters that are still active within double-quoted strings.
21272313efbSmrgXsed="${SED}"' -e 1s/^X//'
21372313efbSmrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g'
21472313efbSmrg
21572313efbSmrg# Same as above, but do not quote variable references.
21672313efbSmrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
21772313efbSmrg
21872313efbSmrg# Re-`\' parameter expansions in output of double_quote_subst that were
21972313efbSmrg# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
22072313efbSmrg# in input to double_quote_subst, that '$' was protected from expansion.
22172313efbSmrg# Since each input `\' is now two `\'s, look for any number of runs of
22272313efbSmrg# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
22372313efbSmrgbs='\\'
22472313efbSmrgbs2='\\\\'
22572313efbSmrgbs4='\\\\\\\\'
22672313efbSmrgdollar='\$'
22772313efbSmrgsed_double_backslash="\
22872313efbSmrg  s/$bs4/&\\
22972313efbSmrg/g
23072313efbSmrg  s/^$bs2$dollar/$bs&/
23172313efbSmrg  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
23272313efbSmrg  s/\n//g"
23372313efbSmrg
23472313efbSmrg# Standard options:
23572313efbSmrgopt_dry_run=false
23672313efbSmrgopt_help=false
23772313efbSmrgopt_quiet=false
23872313efbSmrgopt_verbose=false
23972313efbSmrgopt_warning=:
24072313efbSmrg
24172313efbSmrg# func_echo arg...
24272313efbSmrg# Echo program name prefixed message, along with the current mode
24372313efbSmrg# name if it has been set yet.
24472313efbSmrgfunc_echo ()
24572313efbSmrg{
24672313efbSmrg    $ECHO "$progname${mode+: }$mode: $*"
24772313efbSmrg}
248bdcaa8d0Smrg
24972313efbSmrg# func_verbose arg...
25072313efbSmrg# Echo program name prefixed message in verbose mode only.
25172313efbSmrgfunc_verbose ()
25272313efbSmrg{
25372313efbSmrg    $opt_verbose && func_echo ${1+"$@"}
254bdcaa8d0Smrg
25572313efbSmrg    # A bug in bash halts the script if the last line of a function
25672313efbSmrg    # fails when set -e is in force, so we need another command to
25772313efbSmrg    # work around that:
25872313efbSmrg    :
25972313efbSmrg}
260bdcaa8d0Smrg
26172313efbSmrg# func_error arg...
26272313efbSmrg# Echo program name prefixed message to standard error.
26372313efbSmrgfunc_error ()
26472313efbSmrg{
26572313efbSmrg    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
26672313efbSmrg}
267bdcaa8d0Smrg
26872313efbSmrg# func_warning arg...
26972313efbSmrg# Echo program name prefixed warning message to standard error.
27072313efbSmrgfunc_warning ()
27172313efbSmrg{
27272313efbSmrg    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
273bdcaa8d0Smrg
27472313efbSmrg    # bash bug again:
27572313efbSmrg    :
27672313efbSmrg}
277bdcaa8d0Smrg
27872313efbSmrg# func_fatal_error arg...
27972313efbSmrg# Echo program name prefixed message to standard error, and exit.
28072313efbSmrgfunc_fatal_error ()
28172313efbSmrg{
28272313efbSmrg    func_error ${1+"$@"}
28372313efbSmrg    exit $EXIT_FAILURE
28472313efbSmrg}
285bdcaa8d0Smrg
28672313efbSmrg# func_fatal_help arg...
28772313efbSmrg# Echo program name prefixed message to standard error, followed by
28872313efbSmrg# a help hint, and exit.
28972313efbSmrgfunc_fatal_help ()
29072313efbSmrg{
29172313efbSmrg    func_error ${1+"$@"}
29272313efbSmrg    func_fatal_error "$help"
29372313efbSmrg}
29472313efbSmrghelp="Try \`$progname --help' for more information."  ## default
295bdcaa8d0Smrg
296bdcaa8d0Smrg
29772313efbSmrg# func_grep expression filename
29872313efbSmrg# Check whether EXPRESSION matches any line of FILENAME, without output.
29972313efbSmrgfunc_grep ()
30072313efbSmrg{
30172313efbSmrg    $GREP "$1" "$2" >/dev/null 2>&1
30272313efbSmrg}
30372313efbSmrg
30472313efbSmrg
30572313efbSmrg# func_mkdir_p directory-path
30672313efbSmrg# Make sure the entire path to DIRECTORY-PATH is available.
30772313efbSmrgfunc_mkdir_p ()
30872313efbSmrg{
30972313efbSmrg    my_directory_path="$1"
31072313efbSmrg    my_dir_list=
31172313efbSmrg
31272313efbSmrg    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
31372313efbSmrg
31472313efbSmrg      # Protect directory names starting with `-'
31572313efbSmrg      case $my_directory_path in
31672313efbSmrg        -*) my_directory_path="./$my_directory_path" ;;
31772313efbSmrg      esac
31872313efbSmrg
31972313efbSmrg      # While some portion of DIR does not yet exist...
32072313efbSmrg      while test ! -d "$my_directory_path"; do
32172313efbSmrg        # ...make a list in topmost first order.  Use a colon delimited
32272313efbSmrg	# list incase some portion of path contains whitespace.
32372313efbSmrg        my_dir_list="$my_directory_path:$my_dir_list"
32472313efbSmrg
32572313efbSmrg        # If the last portion added has no slash in it, the list is done
32672313efbSmrg        case $my_directory_path in */*) ;; *) break ;; esac
32772313efbSmrg
32872313efbSmrg        # ...otherwise throw away the child directory and loop
32972313efbSmrg        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
33072313efbSmrg      done
33172313efbSmrg      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
33272313efbSmrg
33372313efbSmrg      save_mkdir_p_IFS="$IFS"; IFS=':'
33472313efbSmrg      for my_dir in $my_dir_list; do
33572313efbSmrg	IFS="$save_mkdir_p_IFS"
33672313efbSmrg        # mkdir can fail with a `File exist' error if two processes
33772313efbSmrg        # try to create one of the directories concurrently.  Don't
33872313efbSmrg        # stop in that case!
33972313efbSmrg        $MKDIR "$my_dir" 2>/dev/null || :
34072313efbSmrg      done
34172313efbSmrg      IFS="$save_mkdir_p_IFS"
34272313efbSmrg
34372313efbSmrg      # Bail out if we (or some other process) failed to create a directory.
34472313efbSmrg      test -d "$my_directory_path" || \
34572313efbSmrg        func_fatal_error "Failed to create \`$1'"
34672313efbSmrg    fi
34772313efbSmrg}
348bdcaa8d0Smrg
349bdcaa8d0Smrg
350bdcaa8d0Smrg# func_mktempdir [string]
351bdcaa8d0Smrg# Make a temporary directory that won't clash with other running
352bdcaa8d0Smrg# libtool processes, and avoids race conditions if possible.  If
353bdcaa8d0Smrg# given, STRING is the basename for that directory.
354bdcaa8d0Smrgfunc_mktempdir ()
355bdcaa8d0Smrg{
356bdcaa8d0Smrg    my_template="${TMPDIR-/tmp}/${1-$progname}"
357bdcaa8d0Smrg
35872313efbSmrg    if test "$opt_dry_run" = ":"; then
359bdcaa8d0Smrg      # Return a directory name, but don't create it in dry-run mode
360bdcaa8d0Smrg      my_tmpdir="${my_template}-$$"
361bdcaa8d0Smrg    else
362bdcaa8d0Smrg
363bdcaa8d0Smrg      # If mktemp works, use that first and foremost
364bdcaa8d0Smrg      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
365bdcaa8d0Smrg
366bdcaa8d0Smrg      if test ! -d "$my_tmpdir"; then
36772313efbSmrg        # Failing that, at least try and use $RANDOM to avoid a race
36872313efbSmrg        my_tmpdir="${my_template}-${RANDOM-0}$$"
369bdcaa8d0Smrg
37072313efbSmrg        save_mktempdir_umask=`umask`
37172313efbSmrg        umask 0077
37272313efbSmrg        $MKDIR "$my_tmpdir"
37372313efbSmrg        umask $save_mktempdir_umask
374bdcaa8d0Smrg      fi
375bdcaa8d0Smrg
376bdcaa8d0Smrg      # If we're not in dry-run mode, bomb out on failure
37772313efbSmrg      test -d "$my_tmpdir" || \
37872313efbSmrg        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
379bdcaa8d0Smrg    fi
380bdcaa8d0Smrg
38172313efbSmrg    $ECHO "X$my_tmpdir" | $Xsed
382bdcaa8d0Smrg}
383bdcaa8d0Smrg
384bdcaa8d0Smrg
38572313efbSmrg# func_quote_for_eval arg
38672313efbSmrg# Aesthetically quote ARG to be evaled later.
38772313efbSmrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
38872313efbSmrg# is double-quoted, suitable for a subsequent eval, whereas
38972313efbSmrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
39072313efbSmrg# which are still active within double quotes backslashified.
39172313efbSmrgfunc_quote_for_eval ()
392bdcaa8d0Smrg{
39372313efbSmrg    case $1 in
39472313efbSmrg      *[\\\`\"\$]*)
39572313efbSmrg	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
39672313efbSmrg      *)
39772313efbSmrg        func_quote_for_eval_unquoted_result="$1" ;;
39872313efbSmrg    esac
39972313efbSmrg
40072313efbSmrg    case $func_quote_for_eval_unquoted_result in
40172313efbSmrg      # Double-quote args containing shell metacharacters to delay
40272313efbSmrg      # word splitting, command substitution and and variable
40372313efbSmrg      # expansion for a subsequent eval.
40472313efbSmrg      # Many Bourne shells cannot handle close brackets correctly
40572313efbSmrg      # in scan sets, so we specify it separately.
40672313efbSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
40772313efbSmrg        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
40872313efbSmrg        ;;
40972313efbSmrg      *)
41072313efbSmrg        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
411bdcaa8d0Smrg    esac
412bdcaa8d0Smrg}
413bdcaa8d0Smrg
414bdcaa8d0Smrg
41572313efbSmrg# func_quote_for_expand arg
41672313efbSmrg# Aesthetically quote ARG to be evaled later; same as above,
41772313efbSmrg# but do not quote variable references.
41872313efbSmrgfunc_quote_for_expand ()
419bdcaa8d0Smrg{
42072313efbSmrg    case $1 in
42172313efbSmrg      *[\\\`\"]*)
42272313efbSmrg	my_arg=`$ECHO "X$1" | $Xsed \
42372313efbSmrg	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
424bdcaa8d0Smrg      *)
42572313efbSmrg        my_arg="$1" ;;
42672313efbSmrg    esac
42772313efbSmrg
42872313efbSmrg    case $my_arg in
42972313efbSmrg      # Double-quote args containing shell metacharacters to delay
43072313efbSmrg      # word splitting and command substitution for a subsequent eval.
43172313efbSmrg      # Many Bourne shells cannot handle close brackets correctly
43272313efbSmrg      # in scan sets, so we specify it separately.
43372313efbSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
43472313efbSmrg        my_arg="\"$my_arg\""
43572313efbSmrg        ;;
43672313efbSmrg    esac
43772313efbSmrg
43872313efbSmrg    func_quote_for_expand_result="$my_arg"
439bdcaa8d0Smrg}
440bdcaa8d0Smrg
441bdcaa8d0Smrg
44272313efbSmrg# func_show_eval cmd [fail_exp]
44372313efbSmrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
44472313efbSmrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
44572313efbSmrg# is given, then evaluate it.
44672313efbSmrgfunc_show_eval ()
447bdcaa8d0Smrg{
44872313efbSmrg    my_cmd="$1"
44972313efbSmrg    my_fail_exp="${2-:}"
450bdcaa8d0Smrg
45172313efbSmrg    ${opt_silent-false} || {
45272313efbSmrg      func_quote_for_expand "$my_cmd"
45372313efbSmrg      eval "func_echo $func_quote_for_expand_result"
45472313efbSmrg    }
45572313efbSmrg
45672313efbSmrg    if ${opt_dry_run-false}; then :; else
45772313efbSmrg      eval "$my_cmd"
45872313efbSmrg      my_status=$?
45972313efbSmrg      if test "$my_status" -eq 0; then :; else
46072313efbSmrg	eval "(exit $my_status); $my_fail_exp"
46172313efbSmrg      fi
462bdcaa8d0Smrg    fi
463bdcaa8d0Smrg}
464bdcaa8d0Smrg
46572313efbSmrg
46672313efbSmrg# func_show_eval_locale cmd [fail_exp]
46772313efbSmrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
46872313efbSmrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
46972313efbSmrg# is given, then evaluate it.  Use the saved locale for evaluation.
47072313efbSmrgfunc_show_eval_locale ()
471bdcaa8d0Smrg{
47272313efbSmrg    my_cmd="$1"
47372313efbSmrg    my_fail_exp="${2-:}"
474bdcaa8d0Smrg
47572313efbSmrg    ${opt_silent-false} || {
47672313efbSmrg      func_quote_for_expand "$my_cmd"
47772313efbSmrg      eval "func_echo $func_quote_for_expand_result"
47872313efbSmrg    }
47972313efbSmrg
48072313efbSmrg    if ${opt_dry_run-false}; then :; else
48172313efbSmrg      eval "$lt_user_locale
48272313efbSmrg	    $my_cmd"
48372313efbSmrg      my_status=$?
48472313efbSmrg      eval "$lt_safe_locale"
48572313efbSmrg      if test "$my_status" -eq 0; then :; else
48672313efbSmrg	eval "(exit $my_status); $my_fail_exp"
487bdcaa8d0Smrg      fi
48872313efbSmrg    fi
489bdcaa8d0Smrg}
490bdcaa8d0Smrg
491bdcaa8d0Smrg
492bdcaa8d0Smrg
49372313efbSmrg
49472313efbSmrg
49572313efbSmrg# func_version
49672313efbSmrg# Echo version message to standard output and exit.
49772313efbSmrgfunc_version ()
49872313efbSmrg{
49972313efbSmrg    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
50072313efbSmrg        s/^# //
50172313efbSmrg	s/^# *$//
50272313efbSmrg        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
50372313efbSmrg        p
50472313efbSmrg     }' < "$progpath"
50572313efbSmrg     exit $?
50672313efbSmrg}
50772313efbSmrg
50872313efbSmrg# func_usage
50972313efbSmrg# Echo short help message to standard output and exit.
51072313efbSmrgfunc_usage ()
51172313efbSmrg{
51272313efbSmrg    $SED -n '/^# Usage:/,/# -h/ {
51372313efbSmrg        s/^# //
51472313efbSmrg	s/^# *$//
51572313efbSmrg	s/\$progname/'$progname'/
51672313efbSmrg	p
51772313efbSmrg    }' < "$progpath"
51872313efbSmrg    $ECHO
51972313efbSmrg    $ECHO "run \`$progname --help | more' for full usage"
52072313efbSmrg    exit $?
52172313efbSmrg}
52272313efbSmrg
52372313efbSmrg# func_help
52472313efbSmrg# Echo long help message to standard output and exit.
52572313efbSmrgfunc_help ()
52672313efbSmrg{
52772313efbSmrg    $SED -n '/^# Usage:/,/# Report bugs to/ {
52872313efbSmrg        s/^# //
52972313efbSmrg	s/^# *$//
53072313efbSmrg	s*\$progname*'$progname'*
53172313efbSmrg	s*\$host*'"$host"'*
53272313efbSmrg	s*\$SHELL*'"$SHELL"'*
53372313efbSmrg	s*\$LTCC*'"$LTCC"'*
53472313efbSmrg	s*\$LTCFLAGS*'"$LTCFLAGS"'*
53572313efbSmrg	s*\$LD*'"$LD"'*
53672313efbSmrg	s/\$with_gnu_ld/'"$with_gnu_ld"'/
53772313efbSmrg	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
53872313efbSmrg	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
53972313efbSmrg	p
54072313efbSmrg     }' < "$progpath"
54172313efbSmrg    exit $?
54272313efbSmrg}
54372313efbSmrg
54472313efbSmrg# func_missing_arg argname
54572313efbSmrg# Echo program name prefixed message to standard error and set global
54672313efbSmrg# exit_cmd.
54772313efbSmrgfunc_missing_arg ()
54872313efbSmrg{
54972313efbSmrg    func_error "missing argument for $1"
55072313efbSmrg    exit_cmd=exit
55172313efbSmrg}
55272313efbSmrg
55372313efbSmrgexit_cmd=:
55472313efbSmrg
55572313efbSmrg
55672313efbSmrg
55772313efbSmrg
55872313efbSmrg
55972313efbSmrg# Check that we have a working $ECHO.
56072313efbSmrgif test "X$1" = X--no-reexec; then
56172313efbSmrg  # Discard the --no-reexec flag, and continue.
562bdcaa8d0Smrg  shift
56372313efbSmrgelif test "X$1" = X--fallback-echo; then
56472313efbSmrg  # Avoid inline document here, it may be left over
56572313efbSmrg  :
56672313efbSmrgelif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
56772313efbSmrg  # Yippee, $ECHO works!
56872313efbSmrg  :
56972313efbSmrgelse
57072313efbSmrg  # Restart under the correct shell, and then maybe $ECHO will work.
57172313efbSmrg  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
57272313efbSmrgfi
573bdcaa8d0Smrg
57472313efbSmrgif test "X$1" = X--fallback-echo; then
57572313efbSmrg  # used as fallback echo
57672313efbSmrg  shift
57772313efbSmrg  cat <<EOF
57872313efbSmrg$*
57972313efbSmrgEOF
58072313efbSmrg  exit $EXIT_SUCCESS
58172313efbSmrgfi
582bdcaa8d0Smrg
58372313efbSmrgmagic="%%%MAGIC variable%%%"
58472313efbSmrgmagic_exe="%%%MAGIC EXE variable%%%"
585bdcaa8d0Smrg
58672313efbSmrg# Global variables.
58772313efbSmrg# $mode is unset
58872313efbSmrgnonopt=
58972313efbSmrgexecute_dlfiles=
59072313efbSmrgpreserve_args=
59172313efbSmrglo2o="s/\\.lo\$/.${objext}/"
59272313efbSmrgo2lo="s/\\.${objext}\$/.lo/"
59372313efbSmrgextracted_archives=
59472313efbSmrgextracted_serial=0
595bdcaa8d0Smrg
59672313efbSmrgopt_dry_run=false
59772313efbSmrgopt_duplicate_deps=false
59872313efbSmrgopt_silent=false
59972313efbSmrgopt_debug=:
600bdcaa8d0Smrg
60172313efbSmrg# If this variable is set in any of the actions, the command in it
60272313efbSmrg# will be execed at the end.  This prevents here-documents from being
60372313efbSmrg# left over by shells.
60472313efbSmrgexec_cmd=
605bdcaa8d0Smrg
60672313efbSmrg# func_fatal_configuration arg...
60772313efbSmrg# Echo program name prefixed message to standard error, followed by
60872313efbSmrg# a configuration failure hint, and exit.
60972313efbSmrgfunc_fatal_configuration ()
61072313efbSmrg{
61172313efbSmrg    func_error ${1+"$@"}
61272313efbSmrg    func_error "See the $PACKAGE documentation for more information."
61372313efbSmrg    func_fatal_error "Fatal configuration error."
61472313efbSmrg}
61572313efbSmrg
61672313efbSmrg
61772313efbSmrg# func_config
61872313efbSmrg# Display the configuration for all the tags in this script.
61972313efbSmrgfunc_config ()
62072313efbSmrg{
62172313efbSmrg    re_begincf='^# ### BEGIN LIBTOOL'
62272313efbSmrg    re_endcf='^# ### END LIBTOOL'
62372313efbSmrg
62472313efbSmrg    # Default configuration.
62572313efbSmrg    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
626bdcaa8d0Smrg
627bdcaa8d0Smrg    # Now print the configurations for the tags.
628bdcaa8d0Smrg    for tagname in $taglist; do
62972313efbSmrg      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
630bdcaa8d0Smrg    done
631bdcaa8d0Smrg
63272313efbSmrg    exit $?
63372313efbSmrg}
634bdcaa8d0Smrg
63572313efbSmrg# func_features
63672313efbSmrg# Display the features supported by this script.
63772313efbSmrgfunc_features ()
63872313efbSmrg{
63972313efbSmrg    $ECHO "host: $host"
640bdcaa8d0Smrg    if test "$build_libtool_libs" = yes; then
64172313efbSmrg      $ECHO "enable shared libraries"
642bdcaa8d0Smrg    else
64372313efbSmrg      $ECHO "disable shared libraries"
644bdcaa8d0Smrg    fi
645bdcaa8d0Smrg    if test "$build_old_libs" = yes; then
64672313efbSmrg      $ECHO "enable static libraries"
647bdcaa8d0Smrg    else
64872313efbSmrg      $ECHO "disable static libraries"
649bdcaa8d0Smrg    fi
65072313efbSmrg
651bdcaa8d0Smrg    exit $?
65272313efbSmrg}
65372313efbSmrg
65472313efbSmrg# func_enable_tag tagname
65572313efbSmrg# Verify that TAGNAME is valid, and either flag an error and exit, or
65672313efbSmrg# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
65772313efbSmrg# variable here.
65872313efbSmrgfunc_enable_tag ()
65972313efbSmrg{
66072313efbSmrg  # Global variable:
66172313efbSmrg  tagname="$1"
662bdcaa8d0Smrg
66372313efbSmrg  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
66472313efbSmrg  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
66572313efbSmrg  sed_extractcf="/$re_begincf/,/$re_endcf/p"
666bdcaa8d0Smrg
66772313efbSmrg  # Validate tagname.
66872313efbSmrg  case $tagname in
66972313efbSmrg    *[!-_A-Za-z0-9,/]*)
67072313efbSmrg      func_fatal_error "invalid tag name: $tagname"
67172313efbSmrg      ;;
67272313efbSmrg  esac
673bdcaa8d0Smrg
67472313efbSmrg  # Don't test for the "default" C tag, as we know it's
67572313efbSmrg  # there but not specially marked.
67672313efbSmrg  case $tagname in
67772313efbSmrg    CC) ;;
67872313efbSmrg    *)
67972313efbSmrg      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
68072313efbSmrg	taglist="$taglist $tagname"
68172313efbSmrg
68272313efbSmrg	# Evaluate the configuration.  Be careful to quote the path
68372313efbSmrg	# and the sed script, to avoid splitting on whitespace, but
68472313efbSmrg	# also don't use non-portable quotes within backquotes within
68572313efbSmrg	# quotes we have to do it in 2 steps:
68672313efbSmrg	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
68772313efbSmrg	eval "$extractedcf"
68872313efbSmrg      else
68972313efbSmrg	func_error "ignoring unknown tag $tagname"
69072313efbSmrg      fi
69172313efbSmrg      ;;
69272313efbSmrg  esac
69372313efbSmrg}
694bdcaa8d0Smrg
69572313efbSmrg# Parse options once, thoroughly.  This comes as soon as possible in
69672313efbSmrg# the script to make things like `libtool --version' happen quickly.
69772313efbSmrg{
698bdcaa8d0Smrg
69972313efbSmrg  # Shorthand for --mode=foo, only valid as the first argument
70072313efbSmrg  case $1 in
70172313efbSmrg  clean|clea|cle|cl)
70272313efbSmrg    shift; set dummy --mode clean ${1+"$@"}; shift
703bdcaa8d0Smrg    ;;
70472313efbSmrg  compile|compil|compi|comp|com|co|c)
70572313efbSmrg    shift; set dummy --mode compile ${1+"$@"}; shift
706bdcaa8d0Smrg    ;;
70772313efbSmrg  execute|execut|execu|exec|exe|ex|e)
70872313efbSmrg    shift; set dummy --mode execute ${1+"$@"}; shift
709bdcaa8d0Smrg    ;;
71072313efbSmrg  finish|finis|fini|fin|fi|f)
71172313efbSmrg    shift; set dummy --mode finish ${1+"$@"}; shift
712bdcaa8d0Smrg    ;;
71372313efbSmrg  install|instal|insta|inst|ins|in|i)
71472313efbSmrg    shift; set dummy --mode install ${1+"$@"}; shift
71572313efbSmrg    ;;
71672313efbSmrg  link|lin|li|l)
71772313efbSmrg    shift; set dummy --mode link ${1+"$@"}; shift
71872313efbSmrg    ;;
71972313efbSmrg  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
72072313efbSmrg    shift; set dummy --mode uninstall ${1+"$@"}; shift
721bdcaa8d0Smrg    ;;
722bdcaa8d0Smrg  esac
723bdcaa8d0Smrg
72472313efbSmrg  # Parse non-mode specific arguments:
72572313efbSmrg  while test "$#" -gt 0; do
72672313efbSmrg    opt="$1"
72772313efbSmrg    shift
728bdcaa8d0Smrg
72972313efbSmrg    case $opt in
73072313efbSmrg      --config)		func_config					;;
731bdcaa8d0Smrg
73272313efbSmrg      --debug)		preserve_args="$preserve_args $opt"
73372313efbSmrg			func_echo "enabling shell trace mode"
73472313efbSmrg			opt_debug='set -x'
73572313efbSmrg			$opt_debug
73672313efbSmrg			;;
737bdcaa8d0Smrg
73872313efbSmrg      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
73972313efbSmrg			execute_dlfiles="$execute_dlfiles $1"
74072313efbSmrg			shift
74172313efbSmrg			;;
742bdcaa8d0Smrg
74372313efbSmrg      --dry-run | -n)	opt_dry_run=:					;;
74472313efbSmrg      --features)       func_features					;;
74572313efbSmrg      --finish)		mode="finish"					;;
74672313efbSmrg
74772313efbSmrg      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
74872313efbSmrg			case $1 in
74972313efbSmrg			  # Valid mode arguments:
75072313efbSmrg			  clean)	;;
75172313efbSmrg			  compile)	;;
75272313efbSmrg			  execute)	;;
75372313efbSmrg			  finish)	;;
75472313efbSmrg			  install)	;;
75572313efbSmrg			  link)		;;
75672313efbSmrg			  relink)	;;
75772313efbSmrg			  uninstall)	;;
75872313efbSmrg
75972313efbSmrg			  # Catch anything else as an error
76072313efbSmrg			  *) func_error "invalid argument for $opt"
76172313efbSmrg			     exit_cmd=exit
76272313efbSmrg			     break
76372313efbSmrg			     ;;
76472313efbSmrg		        esac
76572313efbSmrg
76672313efbSmrg			mode="$1"
76772313efbSmrg			shift
76872313efbSmrg			;;
76972313efbSmrg
77072313efbSmrg      --preserve-dup-deps)
77172313efbSmrg			opt_duplicate_deps=:				;;
77272313efbSmrg
77372313efbSmrg      --quiet|--silent)	preserve_args="$preserve_args $opt"
77472313efbSmrg			opt_silent=:
77572313efbSmrg			;;
77672313efbSmrg
77772313efbSmrg      --verbose| -v)	preserve_args="$preserve_args $opt"
77872313efbSmrg			opt_silent=false
77972313efbSmrg			;;
78072313efbSmrg
78172313efbSmrg      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
78272313efbSmrg			preserve_args="$preserve_args $opt $1"
78372313efbSmrg			func_enable_tag "$1"	# tagname is set here
78472313efbSmrg			shift
78572313efbSmrg			;;
78672313efbSmrg
78772313efbSmrg      # Separate optargs to long options:
78872313efbSmrg      -dlopen=*|--mode=*|--tag=*)
78972313efbSmrg			func_opt_split "$opt"
79072313efbSmrg			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
79172313efbSmrg			shift
79272313efbSmrg			;;
79372313efbSmrg
79472313efbSmrg      -\?|-h)		func_usage					;;
79572313efbSmrg      --help)		opt_help=:					;;
79672313efbSmrg      --version)	func_version					;;
79772313efbSmrg
79872313efbSmrg      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
79972313efbSmrg
80072313efbSmrg      *)		nonopt="$opt"
80172313efbSmrg			break
80272313efbSmrg			;;
80372313efbSmrg    esac
80472313efbSmrg  done
80572313efbSmrg
80672313efbSmrg
80772313efbSmrg  case $host in
80872313efbSmrg    *cygwin* | *mingw* | *pw32* | *cegcc*)
80972313efbSmrg      # don't eliminate duplications in $postdeps and $predeps
81072313efbSmrg      opt_duplicate_compiler_generated_deps=:
811bdcaa8d0Smrg      ;;
812bdcaa8d0Smrg    *)
81372313efbSmrg      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
81472313efbSmrg      ;;
81572313efbSmrg  esac
816bdcaa8d0Smrg
81772313efbSmrg  # Having warned about all mis-specified options, bail out if
81872313efbSmrg  # anything was wrong.
81972313efbSmrg  $exit_cmd $EXIT_FAILURE
82072313efbSmrg}
82172313efbSmrg
82272313efbSmrg# func_check_version_match
82372313efbSmrg# Ensure that we are using m4 macros, and libtool script from the same
82472313efbSmrg# release of libtool.
82572313efbSmrgfunc_check_version_match ()
82672313efbSmrg{
82772313efbSmrg  if test "$package_revision" != "$macro_revision"; then
82872313efbSmrg    if test "$VERSION" != "$macro_version"; then
82972313efbSmrg      if test -z "$macro_version"; then
83072313efbSmrg        cat >&2 <<_LT_EOF
83172313efbSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
83272313efbSmrg$progname: definition of this LT_INIT comes from an older release.
83372313efbSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
83472313efbSmrg$progname: and run autoconf again.
83572313efbSmrg_LT_EOF
83672313efbSmrg      else
83772313efbSmrg        cat >&2 <<_LT_EOF
83872313efbSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
83972313efbSmrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
84072313efbSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
84172313efbSmrg$progname: and run autoconf again.
84272313efbSmrg_LT_EOF
843bdcaa8d0Smrg      fi
84472313efbSmrg    else
84572313efbSmrg      cat >&2 <<_LT_EOF
84672313efbSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
84772313efbSmrg$progname: but the definition of this LT_INIT comes from revision $macro_revision.
84872313efbSmrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision
84972313efbSmrg$progname: of $PACKAGE $VERSION and run autoconf again.
85072313efbSmrg_LT_EOF
85172313efbSmrg    fi
85272313efbSmrg
85372313efbSmrg    exit $EXIT_MISMATCH
85472313efbSmrg  fi
85572313efbSmrg}
85672313efbSmrg
85772313efbSmrg
85872313efbSmrg## ----------- ##
85972313efbSmrg##    Main.    ##
86072313efbSmrg## ----------- ##
86172313efbSmrg
86272313efbSmrg$opt_help || {
86372313efbSmrg  # Sanity checks first:
86472313efbSmrg  func_check_version_match
86572313efbSmrg
86672313efbSmrg  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
86772313efbSmrg    func_fatal_configuration "not configured to build any kind of library"
868bdcaa8d0Smrg  fi
869bdcaa8d0Smrg
87072313efbSmrg  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
87172313efbSmrg
87272313efbSmrg
87372313efbSmrg  # Darwin sucks
87472313efbSmrg  eval std_shrext=\"$shrext_cmds\"
87572313efbSmrg
87672313efbSmrg
877bdcaa8d0Smrg  # Only execute mode is allowed to have -dlopen flags.
878bdcaa8d0Smrg  if test -n "$execute_dlfiles" && test "$mode" != execute; then
87972313efbSmrg    func_error "unrecognized option \`-dlopen'"
88072313efbSmrg    $ECHO "$help" 1>&2
881bdcaa8d0Smrg    exit $EXIT_FAILURE
882bdcaa8d0Smrg  fi
883bdcaa8d0Smrg
884bdcaa8d0Smrg  # Change the help message to a mode-specific one.
885bdcaa8d0Smrg  generic_help="$help"
88672313efbSmrg  help="Try \`$progname --help --mode=$mode' for more information."
88772313efbSmrg}
888bdcaa8d0Smrg
889bdcaa8d0Smrg
89072313efbSmrg# func_lalib_p file
89172313efbSmrg# True iff FILE is a libtool `.la' library or `.lo' object file.
89272313efbSmrg# This function is only a basic sanity check; it will hardly flush out
89372313efbSmrg# determined imposters.
89472313efbSmrgfunc_lalib_p ()
89572313efbSmrg{
89672313efbSmrg    test -f "$1" &&
89772313efbSmrg      $SED -e 4q "$1" 2>/dev/null \
89872313efbSmrg        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
89972313efbSmrg}
900bdcaa8d0Smrg
90172313efbSmrg# func_lalib_unsafe_p file
90272313efbSmrg# True iff FILE is a libtool `.la' library or `.lo' object file.
90372313efbSmrg# This function implements the same check as func_lalib_p without
90472313efbSmrg# resorting to external programs.  To this end, it redirects stdin and
90572313efbSmrg# closes it afterwards, without saving the original file descriptor.
90672313efbSmrg# As a safety measure, use it only where a negative result would be
90772313efbSmrg# fatal anyway.  Works if `file' does not exist.
90872313efbSmrgfunc_lalib_unsafe_p ()
90972313efbSmrg{
91072313efbSmrg    lalib_p=no
91172313efbSmrg    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
91272313efbSmrg	for lalib_p_l in 1 2 3 4
91372313efbSmrg	do
91472313efbSmrg	    read lalib_p_line
91572313efbSmrg	    case "$lalib_p_line" in
91672313efbSmrg		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
91772313efbSmrg	    esac
91872313efbSmrg	done
91972313efbSmrg	exec 0<&5 5<&-
92072313efbSmrg    fi
92172313efbSmrg    test "$lalib_p" = yes
92272313efbSmrg}
923bdcaa8d0Smrg
92472313efbSmrg# func_ltwrapper_script_p file
92572313efbSmrg# True iff FILE is a libtool wrapper script
92672313efbSmrg# This function is only a basic sanity check; it will hardly flush out
92772313efbSmrg# determined imposters.
92872313efbSmrgfunc_ltwrapper_script_p ()
92972313efbSmrg{
93072313efbSmrg    func_lalib_p "$1"
93172313efbSmrg}
932bdcaa8d0Smrg
93372313efbSmrg# func_ltwrapper_executable_p file
93472313efbSmrg# True iff FILE is a libtool wrapper executable
93572313efbSmrg# This function is only a basic sanity check; it will hardly flush out
93672313efbSmrg# determined imposters.
93772313efbSmrgfunc_ltwrapper_executable_p ()
93872313efbSmrg{
93972313efbSmrg    func_ltwrapper_exec_suffix=
94072313efbSmrg    case $1 in
94172313efbSmrg    *.exe) ;;
94272313efbSmrg    *) func_ltwrapper_exec_suffix=.exe ;;
94372313efbSmrg    esac
94472313efbSmrg    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
94572313efbSmrg}
946bdcaa8d0Smrg
94772313efbSmrg# func_ltwrapper_scriptname file
94872313efbSmrg# Assumes file is an ltwrapper_executable
94972313efbSmrg# uses $file to determine the appropriate filename for a
95072313efbSmrg# temporary ltwrapper_script.
95172313efbSmrgfunc_ltwrapper_scriptname ()
95272313efbSmrg{
95372313efbSmrg    func_ltwrapper_scriptname_result=""
95472313efbSmrg    if func_ltwrapper_executable_p "$1"; then
95572313efbSmrg	func_dirname_and_basename "$1" "" "."
95672313efbSmrg	func_stripname '' '.exe' "$func_basename_result"
95772313efbSmrg	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
95872313efbSmrg    fi
95972313efbSmrg}
960bdcaa8d0Smrg
96172313efbSmrg# func_ltwrapper_p file
96272313efbSmrg# True iff FILE is a libtool wrapper script or wrapper executable
96372313efbSmrg# This function is only a basic sanity check; it will hardly flush out
96472313efbSmrg# determined imposters.
96572313efbSmrgfunc_ltwrapper_p ()
96672313efbSmrg{
96772313efbSmrg    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
96872313efbSmrg}
969bdcaa8d0Smrg
970bdcaa8d0Smrg
97172313efbSmrg# func_execute_cmds commands fail_cmd
97272313efbSmrg# Execute tilde-delimited COMMANDS.
97372313efbSmrg# If FAIL_CMD is given, eval that upon failure.
97472313efbSmrg# FAIL_CMD may read-access the current command in variable CMD!
97572313efbSmrgfunc_execute_cmds ()
97672313efbSmrg{
97772313efbSmrg    $opt_debug
97872313efbSmrg    save_ifs=$IFS; IFS='~'
97972313efbSmrg    for cmd in $1; do
98072313efbSmrg      IFS=$save_ifs
98172313efbSmrg      eval cmd=\"$cmd\"
98272313efbSmrg      func_show_eval "$cmd" "${2-:}"
98372313efbSmrg    done
98472313efbSmrg    IFS=$save_ifs
98572313efbSmrg}
98672313efbSmrg
98772313efbSmrg
98872313efbSmrg# func_source file
98972313efbSmrg# Source FILE, adding directory component if necessary.
99072313efbSmrg# Note that it is not necessary on cygwin/mingw to append a dot to
99172313efbSmrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
99272313efbSmrg# behavior happens only for exec(3), not for open(2)!  Also, sourcing
99372313efbSmrg# `FILE.' does not work on cygwin managed mounts.
99472313efbSmrgfunc_source ()
99572313efbSmrg{
99672313efbSmrg    $opt_debug
99772313efbSmrg    case $1 in
99872313efbSmrg    */* | *\\*)	. "$1" ;;
99972313efbSmrg    *)		. "./$1" ;;
100072313efbSmrg    esac
100172313efbSmrg}
100272313efbSmrg
100372313efbSmrg
100472313efbSmrg# func_infer_tag arg
100572313efbSmrg# Infer tagged configuration to use if any are available and
100672313efbSmrg# if one wasn't chosen via the "--tag" command line option.
100772313efbSmrg# Only attempt this if the compiler in the base compile
100872313efbSmrg# command doesn't match the default compiler.
100972313efbSmrg# arg is usually of the form 'gcc ...'
101072313efbSmrgfunc_infer_tag ()
101172313efbSmrg{
101272313efbSmrg    $opt_debug
101372313efbSmrg    if test -n "$available_tags" && test -z "$tagname"; then
101472313efbSmrg      CC_quoted=
101572313efbSmrg      for arg in $CC; do
101672313efbSmrg        func_quote_for_eval "$arg"
101772313efbSmrg	CC_quoted="$CC_quoted $func_quote_for_eval_result"
101872313efbSmrg      done
101972313efbSmrg      case $@ in
102072313efbSmrg      # Blanks in the command may have been stripped by the calling shell,
102172313efbSmrg      # but not from the CC environment variable when configure was run.
102272313efbSmrg      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
102372313efbSmrg      # Blanks at the start of $base_compile will cause this to fail
102472313efbSmrg      # if we don't check for them as well.
102572313efbSmrg      *)
102672313efbSmrg	for z in $available_tags; do
102772313efbSmrg	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
102872313efbSmrg	    # Evaluate the configuration.
102972313efbSmrg	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
103072313efbSmrg	    CC_quoted=
103172313efbSmrg	    for arg in $CC; do
103272313efbSmrg	      # Double-quote args containing other shell metacharacters.
103372313efbSmrg	      func_quote_for_eval "$arg"
103472313efbSmrg	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
103572313efbSmrg	    done
103672313efbSmrg	    case "$@ " in
103772313efbSmrg	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
103872313efbSmrg	      # The compiler in the base compile command matches
103972313efbSmrg	      # the one in the tagged configuration.
104072313efbSmrg	      # Assume this is the tagged configuration we want.
104172313efbSmrg	      tagname=$z
104272313efbSmrg	      break
104372313efbSmrg	      ;;
1044bdcaa8d0Smrg	    esac
104572313efbSmrg	  fi
104672313efbSmrg	done
104772313efbSmrg	# If $tagname still isn't set, then no tagged configuration
104872313efbSmrg	# was found and let the user know that the "--tag" command
104972313efbSmrg	# line option must be used.
105072313efbSmrg	if test -z "$tagname"; then
105172313efbSmrg	  func_echo "unable to infer tagged configuration"
105272313efbSmrg	  func_fatal_error "specify a tag with \`--tag'"
105372313efbSmrg#	else
105472313efbSmrg#	  func_verbose "using $tagname tagged configuration"
105572313efbSmrg	fi
105672313efbSmrg	;;
105772313efbSmrg      esac
105872313efbSmrg    fi
105972313efbSmrg}
106072313efbSmrg
106172313efbSmrg
106272313efbSmrg
106372313efbSmrg# func_write_libtool_object output_name pic_name nonpic_name
106472313efbSmrg# Create a libtool object file (analogous to a ".la" file),
106572313efbSmrg# but don't create it if we're doing a dry run.
106672313efbSmrgfunc_write_libtool_object ()
106772313efbSmrg{
106872313efbSmrg    write_libobj=${1}
106972313efbSmrg    if test "$build_libtool_libs" = yes; then
107072313efbSmrg      write_lobj=\'${2}\'
107172313efbSmrg    else
107272313efbSmrg      write_lobj=none
107372313efbSmrg    fi
107472313efbSmrg
107572313efbSmrg    if test "$build_old_libs" = yes; then
107672313efbSmrg      write_oldobj=\'${3}\'
107772313efbSmrg    else
107872313efbSmrg      write_oldobj=none
107972313efbSmrg    fi
108072313efbSmrg
108172313efbSmrg    $opt_dry_run || {
108272313efbSmrg      cat >${write_libobj}T <<EOF
108372313efbSmrg# $write_libobj - a libtool object file
108472313efbSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
108572313efbSmrg#
108672313efbSmrg# Please DO NOT delete this file!
108772313efbSmrg# It is necessary for linking the library.
108872313efbSmrg
108972313efbSmrg# Name of the PIC object.
109072313efbSmrgpic_object=$write_lobj
109172313efbSmrg
109272313efbSmrg# Name of the non-PIC object
109372313efbSmrgnon_pic_object=$write_oldobj
109472313efbSmrg
109572313efbSmrgEOF
109672313efbSmrg      $MV "${write_libobj}T" "${write_libobj}"
109772313efbSmrg    }
109872313efbSmrg}
109972313efbSmrg
110072313efbSmrg# func_mode_compile arg...
110172313efbSmrgfunc_mode_compile ()
110272313efbSmrg{
110372313efbSmrg    $opt_debug
110472313efbSmrg    # Get the compilation command and the source file.
110572313efbSmrg    base_compile=
110672313efbSmrg    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
110772313efbSmrg    suppress_opt=yes
110872313efbSmrg    suppress_output=
110972313efbSmrg    arg_mode=normal
111072313efbSmrg    libobj=
111172313efbSmrg    later=
111272313efbSmrg    pie_flag=
111372313efbSmrg
111472313efbSmrg    for arg
111572313efbSmrg    do
111672313efbSmrg      case $arg_mode in
111772313efbSmrg      arg  )
111872313efbSmrg	# do not "continue".  Instead, add this to base_compile
111972313efbSmrg	lastarg="$arg"
112072313efbSmrg	arg_mode=normal
112172313efbSmrg	;;
112272313efbSmrg
112372313efbSmrg      target )
112472313efbSmrg	libobj="$arg"
112572313efbSmrg	arg_mode=normal
112672313efbSmrg	continue
112772313efbSmrg	;;
112872313efbSmrg
112972313efbSmrg      normal )
113072313efbSmrg	# Accept any command-line options.
113172313efbSmrg	case $arg in
113272313efbSmrg	-o)
113372313efbSmrg	  test -n "$libobj" && \
113472313efbSmrg	    func_fatal_error "you cannot specify \`-o' more than once"
113572313efbSmrg	  arg_mode=target
113672313efbSmrg	  continue
113772313efbSmrg	  ;;
113872313efbSmrg
113972313efbSmrg	-pie | -fpie | -fPIE)
114072313efbSmrg          pie_flag="$pie_flag $arg"
114172313efbSmrg	  continue
114272313efbSmrg	  ;;
114372313efbSmrg
114472313efbSmrg	-shared | -static | -prefer-pic | -prefer-non-pic)
114572313efbSmrg	  later="$later $arg"
114672313efbSmrg	  continue
114772313efbSmrg	  ;;
114872313efbSmrg
114972313efbSmrg	-no-suppress)
115072313efbSmrg	  suppress_opt=no
115172313efbSmrg	  continue
115272313efbSmrg	  ;;
115372313efbSmrg
115472313efbSmrg	-Xcompiler)
115572313efbSmrg	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
115672313efbSmrg	  continue      #  The current "srcfile" will either be retained or
115772313efbSmrg	  ;;            #  replaced later.  I would guess that would be a bug.
115872313efbSmrg
115972313efbSmrg	-Wc,*)
116072313efbSmrg	  func_stripname '-Wc,' '' "$arg"
116172313efbSmrg	  args=$func_stripname_result
116272313efbSmrg	  lastarg=
116372313efbSmrg	  save_ifs="$IFS"; IFS=','
116472313efbSmrg	  for arg in $args; do
116572313efbSmrg	    IFS="$save_ifs"
116672313efbSmrg	    func_quote_for_eval "$arg"
116772313efbSmrg	    lastarg="$lastarg $func_quote_for_eval_result"
1168bdcaa8d0Smrg	  done
1169bdcaa8d0Smrg	  IFS="$save_ifs"
117072313efbSmrg	  func_stripname ' ' '' "$lastarg"
117172313efbSmrg	  lastarg=$func_stripname_result
1172bdcaa8d0Smrg
1173bdcaa8d0Smrg	  # Add the arguments to base_compile.
1174bdcaa8d0Smrg	  base_compile="$base_compile $lastarg"
1175bdcaa8d0Smrg	  continue
1176bdcaa8d0Smrg	  ;;
1177bdcaa8d0Smrg
117872313efbSmrg	*)
1179bdcaa8d0Smrg	  # Accept the current argument as the source file.
1180bdcaa8d0Smrg	  # The previous "srcfile" becomes the current argument.
1181bdcaa8d0Smrg	  #
1182bdcaa8d0Smrg	  lastarg="$srcfile"
1183bdcaa8d0Smrg	  srcfile="$arg"
1184bdcaa8d0Smrg	  ;;
1185bdcaa8d0Smrg	esac  #  case $arg
1186bdcaa8d0Smrg	;;
1187bdcaa8d0Smrg      esac    #  case $arg_mode
1188bdcaa8d0Smrg
1189bdcaa8d0Smrg      # Aesthetically quote the previous argument.
119072313efbSmrg      func_quote_for_eval "$lastarg"
119172313efbSmrg      base_compile="$base_compile $func_quote_for_eval_result"
1192bdcaa8d0Smrg    done # for arg
1193bdcaa8d0Smrg
1194bdcaa8d0Smrg    case $arg_mode in
1195bdcaa8d0Smrg    arg)
119672313efbSmrg      func_fatal_error "you must specify an argument for -Xcompile"
1197bdcaa8d0Smrg      ;;
1198bdcaa8d0Smrg    target)
119972313efbSmrg      func_fatal_error "you must specify a target with \`-o'"
1200bdcaa8d0Smrg      ;;
1201bdcaa8d0Smrg    *)
1202bdcaa8d0Smrg      # Get the name of the library object.
120372313efbSmrg      test -z "$libobj" && {
120472313efbSmrg	func_basename "$srcfile"
120572313efbSmrg	libobj="$func_basename_result"
120672313efbSmrg      }
1207bdcaa8d0Smrg      ;;
1208bdcaa8d0Smrg    esac
1209bdcaa8d0Smrg
1210bdcaa8d0Smrg    # Recognize several different file suffixes.
1211bdcaa8d0Smrg    # If the user specifies -o file.o, it is replaced with file.lo
1212bdcaa8d0Smrg    case $libobj in
121372313efbSmrg    *.[cCFSifmso] | \
121472313efbSmrg    *.ada | *.adb | *.ads | *.asm | \
121572313efbSmrg    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
121672313efbSmrg    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
121772313efbSmrg      func_xform "$libobj"
121872313efbSmrg      libobj=$func_xform_result
121972313efbSmrg      ;;
1220bdcaa8d0Smrg    esac
1221bdcaa8d0Smrg
1222bdcaa8d0Smrg    case $libobj in
122372313efbSmrg    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
1224bdcaa8d0Smrg    *)
122572313efbSmrg      func_fatal_error "cannot determine name of library object from \`$libobj'"
1226bdcaa8d0Smrg      ;;
1227bdcaa8d0Smrg    esac
1228bdcaa8d0Smrg
1229bdcaa8d0Smrg    func_infer_tag $base_compile
1230bdcaa8d0Smrg
1231bdcaa8d0Smrg    for arg in $later; do
1232bdcaa8d0Smrg      case $arg in
123372313efbSmrg      -shared)
123472313efbSmrg	test "$build_libtool_libs" != yes && \
123572313efbSmrg	  func_fatal_configuration "can not build a shared library"
123672313efbSmrg	build_old_libs=no
123772313efbSmrg	continue
123872313efbSmrg	;;
123972313efbSmrg
1240bdcaa8d0Smrg      -static)
124172313efbSmrg	build_libtool_libs=no
1242bdcaa8d0Smrg	build_old_libs=yes
1243bdcaa8d0Smrg	continue
1244bdcaa8d0Smrg	;;
1245bdcaa8d0Smrg
1246bdcaa8d0Smrg      -prefer-pic)
1247bdcaa8d0Smrg	pic_mode=yes
1248bdcaa8d0Smrg	continue
1249bdcaa8d0Smrg	;;
1250bdcaa8d0Smrg
1251bdcaa8d0Smrg      -prefer-non-pic)
1252bdcaa8d0Smrg	pic_mode=no
1253bdcaa8d0Smrg	continue
1254bdcaa8d0Smrg	;;
1255bdcaa8d0Smrg      esac
1256bdcaa8d0Smrg    done
1257bdcaa8d0Smrg
125872313efbSmrg    func_quote_for_eval "$libobj"
125972313efbSmrg    test "X$libobj" != "X$func_quote_for_eval_result" \
126072313efbSmrg      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
126172313efbSmrg      && func_warning "libobj name \`$libobj' may not contain shell special characters."
126272313efbSmrg    func_dirname_and_basename "$obj" "/" ""
126372313efbSmrg    objname="$func_basename_result"
126472313efbSmrg    xdir="$func_dirname_result"
1265bdcaa8d0Smrg    lobj=${xdir}$objdir/$objname
1266bdcaa8d0Smrg
126772313efbSmrg    test -z "$base_compile" && \
126872313efbSmrg      func_fatal_help "you must specify a compilation command"
1269bdcaa8d0Smrg
1270bdcaa8d0Smrg    # Delete any leftover library objects.
1271bdcaa8d0Smrg    if test "$build_old_libs" = yes; then
1272bdcaa8d0Smrg      removelist="$obj $lobj $libobj ${libobj}T"
1273bdcaa8d0Smrg    else
1274bdcaa8d0Smrg      removelist="$lobj $libobj ${libobj}T"
1275bdcaa8d0Smrg    fi
1276bdcaa8d0Smrg
1277bdcaa8d0Smrg    # On Cygwin there's no "real" PIC flag so we must build both object types
1278bdcaa8d0Smrg    case $host_os in
127972313efbSmrg    cygwin* | mingw* | pw32* | os2* | cegcc*)
1280bdcaa8d0Smrg      pic_mode=default
1281bdcaa8d0Smrg      ;;
1282bdcaa8d0Smrg    esac
1283bdcaa8d0Smrg    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
1284bdcaa8d0Smrg      # non-PIC code in shared libraries is not supported
1285bdcaa8d0Smrg      pic_mode=default
1286bdcaa8d0Smrg    fi
1287bdcaa8d0Smrg
1288bdcaa8d0Smrg    # Calculate the filename of the output object if compiler does
1289bdcaa8d0Smrg    # not support -o with -c
1290bdcaa8d0Smrg    if test "$compiler_c_o" = no; then
129172313efbSmrg      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
1292bdcaa8d0Smrg      lockfile="$output_obj.lock"
1293bdcaa8d0Smrg    else
1294bdcaa8d0Smrg      output_obj=
1295bdcaa8d0Smrg      need_locks=no
1296bdcaa8d0Smrg      lockfile=
1297bdcaa8d0Smrg    fi
1298bdcaa8d0Smrg
1299bdcaa8d0Smrg    # Lock this critical section if it is needed
1300bdcaa8d0Smrg    # We use this script file to make the link, it avoids creating a new file
1301bdcaa8d0Smrg    if test "$need_locks" = yes; then
130272313efbSmrg      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
130372313efbSmrg	func_echo "Waiting for $lockfile to be removed"
1304bdcaa8d0Smrg	sleep 2
1305bdcaa8d0Smrg      done
1306bdcaa8d0Smrg    elif test "$need_locks" = warn; then
1307bdcaa8d0Smrg      if test -f "$lockfile"; then
130872313efbSmrg	$ECHO "\
1309bdcaa8d0Smrg*** ERROR, $lockfile exists and contains:
1310bdcaa8d0Smrg`cat $lockfile 2>/dev/null`
1311bdcaa8d0Smrg
1312bdcaa8d0SmrgThis indicates that another process is trying to use the same
1313bdcaa8d0Smrgtemporary object file, and libtool could not work around it because
1314bdcaa8d0Smrgyour compiler does not support \`-c' and \`-o' together.  If you
1315bdcaa8d0Smrgrepeat this compilation, it may succeed, by chance, but you had better
1316bdcaa8d0Smrgavoid parallel builds (make -j) in this platform, or get a better
1317bdcaa8d0Smrgcompiler."
1318bdcaa8d0Smrg
131972313efbSmrg	$opt_dry_run || $RM $removelist
1320bdcaa8d0Smrg	exit $EXIT_FAILURE
1321bdcaa8d0Smrg      fi
132272313efbSmrg      removelist="$removelist $output_obj"
132372313efbSmrg      $ECHO "$srcfile" > "$lockfile"
1324bdcaa8d0Smrg    fi
1325bdcaa8d0Smrg
132672313efbSmrg    $opt_dry_run || $RM $removelist
132772313efbSmrg    removelist="$removelist $lockfile"
132872313efbSmrg    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
132972313efbSmrg
1330bdcaa8d0Smrg    if test -n "$fix_srcfile_path"; then
1331bdcaa8d0Smrg      eval srcfile=\"$fix_srcfile_path\"
1332bdcaa8d0Smrg    fi
133372313efbSmrg    func_quote_for_eval "$srcfile"
133472313efbSmrg    qsrcfile=$func_quote_for_eval_result
1335bdcaa8d0Smrg
1336bdcaa8d0Smrg    # Only build a PIC object if we are building libtool libraries.
1337bdcaa8d0Smrg    if test "$build_libtool_libs" = yes; then
1338bdcaa8d0Smrg      # Without this assignment, base_compile gets emptied.
1339bdcaa8d0Smrg      fbsd_hideous_sh_bug=$base_compile
1340bdcaa8d0Smrg
1341bdcaa8d0Smrg      if test "$pic_mode" != no; then
1342bdcaa8d0Smrg	command="$base_compile $qsrcfile $pic_flag"
1343bdcaa8d0Smrg      else
1344bdcaa8d0Smrg	# Don't build PIC code
1345bdcaa8d0Smrg	command="$base_compile $qsrcfile"
1346bdcaa8d0Smrg      fi
1347bdcaa8d0Smrg
134872313efbSmrg      func_mkdir_p "$xdir$objdir"
1349bdcaa8d0Smrg
1350bdcaa8d0Smrg      if test -z "$output_obj"; then
1351bdcaa8d0Smrg	# Place PIC objects in $objdir
1352bdcaa8d0Smrg	command="$command -o $lobj"
1353bdcaa8d0Smrg      fi
1354bdcaa8d0Smrg
135572313efbSmrg      func_show_eval_locale "$command"	\
135672313efbSmrg          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
1357bdcaa8d0Smrg
1358bdcaa8d0Smrg      if test "$need_locks" = warn &&
1359bdcaa8d0Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
136072313efbSmrg	$ECHO "\
1361bdcaa8d0Smrg*** ERROR, $lockfile contains:
1362bdcaa8d0Smrg`cat $lockfile 2>/dev/null`
1363bdcaa8d0Smrg
1364bdcaa8d0Smrgbut it should contain:
1365bdcaa8d0Smrg$srcfile
1366bdcaa8d0Smrg
1367bdcaa8d0SmrgThis indicates that another process is trying to use the same
1368bdcaa8d0Smrgtemporary object file, and libtool could not work around it because
1369bdcaa8d0Smrgyour compiler does not support \`-c' and \`-o' together.  If you
1370bdcaa8d0Smrgrepeat this compilation, it may succeed, by chance, but you had better
1371bdcaa8d0Smrgavoid parallel builds (make -j) in this platform, or get a better
1372bdcaa8d0Smrgcompiler."
1373bdcaa8d0Smrg
137472313efbSmrg	$opt_dry_run || $RM $removelist
1375bdcaa8d0Smrg	exit $EXIT_FAILURE
1376bdcaa8d0Smrg      fi
1377bdcaa8d0Smrg
1378bdcaa8d0Smrg      # Just move the object if needed, then go on to compile the next one
1379bdcaa8d0Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
138072313efbSmrg	func_show_eval '$MV "$output_obj" "$lobj"' \
138172313efbSmrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
1382bdcaa8d0Smrg      fi
1383bdcaa8d0Smrg
1384bdcaa8d0Smrg      # Allow error messages only from the first compilation.
1385bdcaa8d0Smrg      if test "$suppress_opt" = yes; then
138672313efbSmrg	suppress_output=' >/dev/null 2>&1'
1387bdcaa8d0Smrg      fi
1388bdcaa8d0Smrg    fi
1389bdcaa8d0Smrg
1390bdcaa8d0Smrg    # Only build a position-dependent object if we build old libraries.
1391bdcaa8d0Smrg    if test "$build_old_libs" = yes; then
1392bdcaa8d0Smrg      if test "$pic_mode" != yes; then
1393bdcaa8d0Smrg	# Don't build PIC code
139472313efbSmrg	command="$base_compile $qsrcfile$pie_flag"
1395bdcaa8d0Smrg      else
1396bdcaa8d0Smrg	command="$base_compile $qsrcfile $pic_flag"
1397bdcaa8d0Smrg      fi
1398bdcaa8d0Smrg      if test "$compiler_c_o" = yes; then
1399bdcaa8d0Smrg	command="$command -o $obj"
1400bdcaa8d0Smrg      fi
1401bdcaa8d0Smrg
1402bdcaa8d0Smrg      # Suppress compiler output if we already did a PIC compilation.
1403bdcaa8d0Smrg      command="$command$suppress_output"
140472313efbSmrg      func_show_eval_locale "$command" \
140572313efbSmrg        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
1406bdcaa8d0Smrg
1407bdcaa8d0Smrg      if test "$need_locks" = warn &&
1408bdcaa8d0Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
140972313efbSmrg	$ECHO "\
1410bdcaa8d0Smrg*** ERROR, $lockfile contains:
1411bdcaa8d0Smrg`cat $lockfile 2>/dev/null`
1412bdcaa8d0Smrg
1413bdcaa8d0Smrgbut it should contain:
1414bdcaa8d0Smrg$srcfile
1415bdcaa8d0Smrg
1416bdcaa8d0SmrgThis indicates that another process is trying to use the same
1417bdcaa8d0Smrgtemporary object file, and libtool could not work around it because
1418bdcaa8d0Smrgyour compiler does not support \`-c' and \`-o' together.  If you
1419bdcaa8d0Smrgrepeat this compilation, it may succeed, by chance, but you had better
1420bdcaa8d0Smrgavoid parallel builds (make -j) in this platform, or get a better
1421bdcaa8d0Smrgcompiler."
1422bdcaa8d0Smrg
142372313efbSmrg	$opt_dry_run || $RM $removelist
1424bdcaa8d0Smrg	exit $EXIT_FAILURE
1425bdcaa8d0Smrg      fi
1426bdcaa8d0Smrg
1427bdcaa8d0Smrg      # Just move the object if needed
1428bdcaa8d0Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
142972313efbSmrg	func_show_eval '$MV "$output_obj" "$obj"' \
143072313efbSmrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
1431bdcaa8d0Smrg      fi
1432bdcaa8d0Smrg    fi
1433bdcaa8d0Smrg
143472313efbSmrg    $opt_dry_run || {
143572313efbSmrg      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
1436bdcaa8d0Smrg
143772313efbSmrg      # Unlock the critical section if it was locked
143872313efbSmrg      if test "$need_locks" != no; then
143972313efbSmrg	removelist=$lockfile
144072313efbSmrg        $RM "$lockfile"
144172313efbSmrg      fi
144272313efbSmrg    }
1443bdcaa8d0Smrg
1444bdcaa8d0Smrg    exit $EXIT_SUCCESS
144572313efbSmrg}
1446bdcaa8d0Smrg
144772313efbSmrg$opt_help || {
144872313efbSmrgtest "$mode" = compile && func_mode_compile ${1+"$@"}
144972313efbSmrg}
1450bdcaa8d0Smrg
145172313efbSmrgfunc_mode_help ()
145272313efbSmrg{
145372313efbSmrg    # We need to display help for each of the modes.
145472313efbSmrg    case $mode in
145572313efbSmrg      "")
145672313efbSmrg        # Generic help is extracted from the usage comments
145772313efbSmrg        # at the start of this file.
145872313efbSmrg        func_help
145972313efbSmrg        ;;
1460bdcaa8d0Smrg
146172313efbSmrg      clean)
146272313efbSmrg        $ECHO \
146372313efbSmrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
1464bdcaa8d0Smrg
146572313efbSmrgRemove files from the build directory.
1466bdcaa8d0Smrg
146772313efbSmrgRM is the name of the program to use to delete files associated with each FILE
146872313efbSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
146972313efbSmrgto RM.
1470bdcaa8d0Smrg
147172313efbSmrgIf FILE is a libtool library, object or program, all the files associated
147272313efbSmrgwith it are deleted. Otherwise, only FILE itself is deleted using RM."
147372313efbSmrg        ;;
1474bdcaa8d0Smrg
147572313efbSmrg      compile)
147672313efbSmrg      $ECHO \
147772313efbSmrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
1478bdcaa8d0Smrg
147972313efbSmrgCompile a source file into a libtool library object.
1480bdcaa8d0Smrg
148172313efbSmrgThis mode accepts the following additional options:
1482bdcaa8d0Smrg
148372313efbSmrg  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
148472313efbSmrg  -no-suppress      do not suppress compiler output for multiple passes
148572313efbSmrg  -prefer-pic       try to building PIC objects only
148672313efbSmrg  -prefer-non-pic   try to building non-PIC objects only
148772313efbSmrg  -shared           do not build a \`.o' file suitable for static linking
148872313efbSmrg  -static           only build a \`.o' file suitable for static linking
1489bdcaa8d0Smrg
149072313efbSmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
149172313efbSmrgfrom the given SOURCEFILE.
1492bdcaa8d0Smrg
149372313efbSmrgThe output file name is determined by removing the directory component from
149472313efbSmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the
149572313efbSmrglibrary object suffix, \`.lo'."
149672313efbSmrg        ;;
1497bdcaa8d0Smrg
149872313efbSmrg      execute)
149972313efbSmrg        $ECHO \
150072313efbSmrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
1501bdcaa8d0Smrg
150272313efbSmrgAutomatically set library path, then run a program.
1503bdcaa8d0Smrg
150472313efbSmrgThis mode accepts the following additional options:
1505bdcaa8d0Smrg
150672313efbSmrg  -dlopen FILE      add the directory containing FILE to the library path
1507bdcaa8d0Smrg
150872313efbSmrgThis mode sets the library path environment variable according to \`-dlopen'
150972313efbSmrgflags.
1510bdcaa8d0Smrg
151172313efbSmrgIf any of the ARGS are libtool executable wrappers, then they are translated
151272313efbSmrginto their corresponding uninstalled binary, and any of their required library
151372313efbSmrgdirectories are added to the library path.
1514bdcaa8d0Smrg
151572313efbSmrgThen, COMMAND is executed, with ARGS as arguments."
151672313efbSmrg        ;;
1517bdcaa8d0Smrg
151872313efbSmrg      finish)
151972313efbSmrg        $ECHO \
152072313efbSmrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
1521bdcaa8d0Smrg
152272313efbSmrgComplete the installation of libtool libraries.
1523bdcaa8d0Smrg
152472313efbSmrgEach LIBDIR is a directory that contains libtool libraries.
1525bdcaa8d0Smrg
152672313efbSmrgThe commands that this mode executes may require superuser privileges.  Use
152772313efbSmrgthe \`--dry-run' option if you just want to see what would be executed."
152872313efbSmrg        ;;
1529bdcaa8d0Smrg
153072313efbSmrg      install)
153172313efbSmrg        $ECHO \
153272313efbSmrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
1533bdcaa8d0Smrg
153472313efbSmrgInstall executables or libraries.
1535bdcaa8d0Smrg
153672313efbSmrgINSTALL-COMMAND is the installation command.  The first component should be
153772313efbSmrgeither the \`install' or \`cp' program.
1538bdcaa8d0Smrg
153972313efbSmrgThe following components of INSTALL-COMMAND are treated specially:
1540bdcaa8d0Smrg
154172313efbSmrg  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
1542bdcaa8d0Smrg
154372313efbSmrgThe rest of the components are interpreted as arguments to that command (only
154472313efbSmrgBSD-compatible install options are recognized)."
154572313efbSmrg        ;;
1546bdcaa8d0Smrg
154772313efbSmrg      link)
154872313efbSmrg        $ECHO \
154972313efbSmrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
1550bdcaa8d0Smrg
155172313efbSmrgLink object files or libraries together to form another library, or to
155272313efbSmrgcreate an executable program.
1553bdcaa8d0Smrg
155472313efbSmrgLINK-COMMAND is a command using the C compiler that you would use to create
155572313efbSmrga program from several object files.
1556bdcaa8d0Smrg
155772313efbSmrgThe following components of LINK-COMMAND are treated specially:
1558bdcaa8d0Smrg
155972313efbSmrg  -all-static       do not do any dynamic linking at all
156072313efbSmrg  -avoid-version    do not add a version suffix if possible
156172313efbSmrg  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
156272313efbSmrg  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
156372313efbSmrg  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
156472313efbSmrg  -export-symbols SYMFILE
156572313efbSmrg                    try to export only the symbols listed in SYMFILE
156672313efbSmrg  -export-symbols-regex REGEX
156772313efbSmrg                    try to export only the symbols matching REGEX
156872313efbSmrg  -LLIBDIR          search LIBDIR for required installed libraries
156972313efbSmrg  -lNAME            OUTPUT-FILE requires the installed library libNAME
157072313efbSmrg  -module           build a library that can dlopened
157172313efbSmrg  -no-fast-install  disable the fast-install mode
157272313efbSmrg  -no-install       link a not-installable executable
157372313efbSmrg  -no-undefined     declare that a library does not refer to external symbols
157472313efbSmrg  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
157572313efbSmrg  -objectlist FILE  Use a list of object files found in FILE to specify objects
157672313efbSmrg  -precious-files-regex REGEX
157772313efbSmrg                    don't remove output files matching REGEX
157872313efbSmrg  -release RELEASE  specify package release information
157972313efbSmrg  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
158072313efbSmrg  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
158172313efbSmrg  -shared           only do dynamic linking of libtool libraries
158272313efbSmrg  -shrext SUFFIX    override the standard shared library file extension
158372313efbSmrg  -static           do not do any dynamic linking of uninstalled libtool libraries
158472313efbSmrg  -static-libtool-libs
158572313efbSmrg                    do not do any dynamic linking of libtool libraries
158672313efbSmrg  -version-info CURRENT[:REVISION[:AGE]]
158772313efbSmrg                    specify library version info [each variable defaults to 0]
158872313efbSmrg  -weak LIBNAME     declare that the target provides the LIBNAME interface
1589bdcaa8d0Smrg
159072313efbSmrgAll other options (arguments beginning with \`-') are ignored.
1591bdcaa8d0Smrg
159272313efbSmrgEvery other argument is treated as a filename.  Files ending in \`.la' are
159372313efbSmrgtreated as uninstalled libtool libraries, other files are standard or library
159472313efbSmrgobject files.
1595bdcaa8d0Smrg
159672313efbSmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
159772313efbSmrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is
159872313efbSmrgrequired, except when creating a convenience library.
1599bdcaa8d0Smrg
160072313efbSmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
160172313efbSmrgusing \`ar' and \`ranlib', or on Windows using \`lib'.
1602bdcaa8d0Smrg
160372313efbSmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
160472313efbSmrgis created, otherwise an executable program is created."
1605bdcaa8d0Smrg        ;;
1606bdcaa8d0Smrg
160772313efbSmrg      uninstall)
160872313efbSmrg        $ECHO \
160972313efbSmrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
1610bdcaa8d0Smrg
161172313efbSmrgRemove libraries from an installation directory.
1612bdcaa8d0Smrg
161372313efbSmrgRM is the name of the program to use to delete files associated with each FILE
161472313efbSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
161572313efbSmrgto RM.
1616bdcaa8d0Smrg
161772313efbSmrgIf FILE is a libtool library, all the files associated with it are deleted.
161872313efbSmrgOtherwise, only FILE itself is deleted using RM."
161972313efbSmrg        ;;
1620bdcaa8d0Smrg
162172313efbSmrg      *)
162272313efbSmrg        func_fatal_help "invalid operation mode \`$mode'"
162372313efbSmrg        ;;
162472313efbSmrg    esac
1625bdcaa8d0Smrg
162672313efbSmrg    $ECHO
162772313efbSmrg    $ECHO "Try \`$progname --help' for more information about other modes."
1628bdcaa8d0Smrg
162972313efbSmrg    exit $?
163072313efbSmrg}
1631bdcaa8d0Smrg
163272313efbSmrg  # Now that we've collected a possible --mode arg, show help if necessary
163372313efbSmrg  $opt_help && func_mode_help
1634bdcaa8d0Smrg
1635bdcaa8d0Smrg
163672313efbSmrg# func_mode_execute arg...
163772313efbSmrgfunc_mode_execute ()
163872313efbSmrg{
163972313efbSmrg    $opt_debug
164072313efbSmrg    # The first argument is the command name.
164172313efbSmrg    cmd="$nonopt"
164272313efbSmrg    test -z "$cmd" && \
164372313efbSmrg      func_fatal_help "you must specify a COMMAND"
1644bdcaa8d0Smrg
164572313efbSmrg    # Handle -dlopen flags immediately.
164672313efbSmrg    for file in $execute_dlfiles; do
164772313efbSmrg      test -f "$file" \
164872313efbSmrg	|| func_fatal_help "\`$file' is not a file"
1649bdcaa8d0Smrg
165072313efbSmrg      dir=
165172313efbSmrg      case $file in
165272313efbSmrg      *.la)
165372313efbSmrg	# Check to see that this really is a libtool archive.
165472313efbSmrg	func_lalib_unsafe_p "$file" \
165572313efbSmrg	  || func_fatal_help "\`$lib' is not a valid libtool archive"
1656bdcaa8d0Smrg
165772313efbSmrg	# Read the libtool library.
165872313efbSmrg	dlname=
165972313efbSmrg	library_names=
166072313efbSmrg	func_source "$file"
1661bdcaa8d0Smrg
166272313efbSmrg	# Skip this library if it cannot be dlopened.
166372313efbSmrg	if test -z "$dlname"; then
166472313efbSmrg	  # Warn if it was a shared library.
166572313efbSmrg	  test -n "$library_names" && \
166672313efbSmrg	    func_warning "\`$file' was not linked with \`-export-dynamic'"
166772313efbSmrg	  continue
166872313efbSmrg	fi
1669bdcaa8d0Smrg
167072313efbSmrg	func_dirname "$file" "" "."
167172313efbSmrg	dir="$func_dirname_result"
1672bdcaa8d0Smrg
167372313efbSmrg	if test -f "$dir/$objdir/$dlname"; then
167472313efbSmrg	  dir="$dir/$objdir"
167572313efbSmrg	else
167672313efbSmrg	  if test ! -f "$dir/$dlname"; then
167772313efbSmrg	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
167872313efbSmrg	  fi
167972313efbSmrg	fi
1680bdcaa8d0Smrg	;;
1681bdcaa8d0Smrg
168272313efbSmrg      *.lo)
168372313efbSmrg	# Just add the directory containing the .lo file.
168472313efbSmrg	func_dirname "$file" "" "."
168572313efbSmrg	dir="$func_dirname_result"
1686bdcaa8d0Smrg	;;
1687bdcaa8d0Smrg
168872313efbSmrg      *)
168972313efbSmrg	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
1690bdcaa8d0Smrg	continue
1691bdcaa8d0Smrg	;;
169272313efbSmrg      esac
1693bdcaa8d0Smrg
169472313efbSmrg      # Get the absolute pathname.
169572313efbSmrg      absdir=`cd "$dir" && pwd`
169672313efbSmrg      test -n "$absdir" && dir="$absdir"
1697bdcaa8d0Smrg
169872313efbSmrg      # Now add the directory to shlibpath_var.
169972313efbSmrg      if eval "test -z \"\$$shlibpath_var\""; then
170072313efbSmrg	eval "$shlibpath_var=\"\$dir\""
170172313efbSmrg      else
170272313efbSmrg	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
170372313efbSmrg      fi
170472313efbSmrg    done
1705bdcaa8d0Smrg
170672313efbSmrg    # This variable tells wrapper scripts just to set shlibpath_var
170772313efbSmrg    # rather than running their programs.
170872313efbSmrg    libtool_execute_magic="$magic"
1709bdcaa8d0Smrg
171072313efbSmrg    # Check if any of the arguments is a wrapper script.
171172313efbSmrg    args=
171272313efbSmrg    for file
171372313efbSmrg    do
171472313efbSmrg      case $file in
171572313efbSmrg      -*) ;;
171672313efbSmrg      *)
171772313efbSmrg	# Do a test to see if this is really a libtool program.
171872313efbSmrg	if func_ltwrapper_script_p "$file"; then
171972313efbSmrg	  func_source "$file"
172072313efbSmrg	  # Transform arg to wrapped name.
172172313efbSmrg	  file="$progdir/$program"
172272313efbSmrg	elif func_ltwrapper_executable_p "$file"; then
172372313efbSmrg	  func_ltwrapper_scriptname "$file"
172472313efbSmrg	  func_source "$func_ltwrapper_scriptname_result"
172572313efbSmrg	  # Transform arg to wrapped name.
172672313efbSmrg	  file="$progdir/$program"
172772313efbSmrg	fi
172872313efbSmrg	;;
172972313efbSmrg      esac
173072313efbSmrg      # Quote arguments (to preserve shell metacharacters).
173172313efbSmrg      func_quote_for_eval "$file"
173272313efbSmrg      args="$args $func_quote_for_eval_result"
173372313efbSmrg    done
1734bdcaa8d0Smrg
173572313efbSmrg    if test "X$opt_dry_run" = Xfalse; then
173672313efbSmrg      if test -n "$shlibpath_var"; then
173772313efbSmrg	# Export the shlibpath_var.
173872313efbSmrg	eval "export $shlibpath_var"
173972313efbSmrg      fi
1740bdcaa8d0Smrg
174172313efbSmrg      # Restore saved environment variables
174272313efbSmrg      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
174372313efbSmrg      do
174472313efbSmrg	eval "if test \"\${save_$lt_var+set}\" = set; then
174572313efbSmrg                $lt_var=\$save_$lt_var; export $lt_var
174672313efbSmrg	      else
174772313efbSmrg		$lt_unset $lt_var
174872313efbSmrg	      fi"
174972313efbSmrg      done
1750bdcaa8d0Smrg
175172313efbSmrg      # Now prepare to actually exec the command.
175272313efbSmrg      exec_cmd="\$cmd$args"
175372313efbSmrg    else
175472313efbSmrg      # Display what would be done.
175572313efbSmrg      if test -n "$shlibpath_var"; then
175672313efbSmrg	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
175772313efbSmrg	$ECHO "export $shlibpath_var"
175872313efbSmrg      fi
175972313efbSmrg      $ECHO "$cmd$args"
176072313efbSmrg      exit $EXIT_SUCCESS
176172313efbSmrg    fi
176272313efbSmrg}
1763bdcaa8d0Smrg
176472313efbSmrgtest "$mode" = execute && func_mode_execute ${1+"$@"}
1765bdcaa8d0Smrg
1766bdcaa8d0Smrg
176772313efbSmrg# func_mode_finish arg...
176872313efbSmrgfunc_mode_finish ()
176972313efbSmrg{
177072313efbSmrg    $opt_debug
177172313efbSmrg    libdirs="$nonopt"
177272313efbSmrg    admincmds=
1773bdcaa8d0Smrg
177472313efbSmrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
177572313efbSmrg      for dir
177672313efbSmrg      do
177772313efbSmrg	libdirs="$libdirs $dir"
177872313efbSmrg      done
1779bdcaa8d0Smrg
178072313efbSmrg      for libdir in $libdirs; do
178172313efbSmrg	if test -n "$finish_cmds"; then
178272313efbSmrg	  # Do each command in the finish commands.
178372313efbSmrg	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
178472313efbSmrg'"$cmd"'"'
178572313efbSmrg	fi
178672313efbSmrg	if test -n "$finish_eval"; then
178772313efbSmrg	  # Do the single finish_eval.
178872313efbSmrg	  eval cmds=\"$finish_eval\"
178972313efbSmrg	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
179072313efbSmrg       $cmds"
179172313efbSmrg	fi
179272313efbSmrg      done
179372313efbSmrg    fi
1794bdcaa8d0Smrg
179572313efbSmrg    # Exit here if they wanted silent mode.
179672313efbSmrg    $opt_silent && exit $EXIT_SUCCESS
1797bdcaa8d0Smrg
179872313efbSmrg    $ECHO "X----------------------------------------------------------------------" | $Xsed
179972313efbSmrg    $ECHO "Libraries have been installed in:"
180072313efbSmrg    for libdir in $libdirs; do
180172313efbSmrg      $ECHO "   $libdir"
180272313efbSmrg    done
180372313efbSmrg    $ECHO
180472313efbSmrg    $ECHO "If you ever happen to want to link against installed libraries"
180572313efbSmrg    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
180672313efbSmrg    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
180772313efbSmrg    $ECHO "flag during linking and do at least one of the following:"
180872313efbSmrg    if test -n "$shlibpath_var"; then
180972313efbSmrg      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
181072313efbSmrg      $ECHO "     during execution"
181172313efbSmrg    fi
181272313efbSmrg    if test -n "$runpath_var"; then
181372313efbSmrg      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
181472313efbSmrg      $ECHO "     during linking"
181572313efbSmrg    fi
181672313efbSmrg    if test -n "$hardcode_libdir_flag_spec"; then
181772313efbSmrg      libdir=LIBDIR
181872313efbSmrg      eval flag=\"$hardcode_libdir_flag_spec\"
1819bdcaa8d0Smrg
182072313efbSmrg      $ECHO "   - use the \`$flag' linker flag"
182172313efbSmrg    fi
182272313efbSmrg    if test -n "$admincmds"; then
182372313efbSmrg      $ECHO "   - have your system administrator run these commands:$admincmds"
182472313efbSmrg    fi
182572313efbSmrg    if test -f /etc/ld.so.conf; then
182672313efbSmrg      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
182772313efbSmrg    fi
182872313efbSmrg    $ECHO
1829bdcaa8d0Smrg
183072313efbSmrg    $ECHO "See any operating system documentation about shared libraries for"
183172313efbSmrg    case $host in
183272313efbSmrg      solaris2.[6789]|solaris2.1[0-9])
183372313efbSmrg        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
183472313efbSmrg	$ECHO "pages."
1835bdcaa8d0Smrg	;;
183672313efbSmrg      *)
183772313efbSmrg        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
183872313efbSmrg        ;;
183972313efbSmrg    esac
184072313efbSmrg    $ECHO "X----------------------------------------------------------------------" | $Xsed
184172313efbSmrg    exit $EXIT_SUCCESS
184272313efbSmrg}
1843bdcaa8d0Smrg
184472313efbSmrgtest "$mode" = finish && func_mode_finish ${1+"$@"}
1845bdcaa8d0Smrg
1846bdcaa8d0Smrg
184772313efbSmrg# func_mode_install arg...
184872313efbSmrgfunc_mode_install ()
184972313efbSmrg{
185072313efbSmrg    $opt_debug
185172313efbSmrg    # There may be an optional sh(1) argument at the beginning of
185272313efbSmrg    # install_prog (especially on Windows NT).
185372313efbSmrg    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
185472313efbSmrg       # Allow the use of GNU shtool's install command.
185572313efbSmrg       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
185672313efbSmrg      # Aesthetically quote it.
185772313efbSmrg      func_quote_for_eval "$nonopt"
185872313efbSmrg      install_prog="$func_quote_for_eval_result "
185972313efbSmrg      arg=$1
186072313efbSmrg      shift
186172313efbSmrg    else
186272313efbSmrg      install_prog=
186372313efbSmrg      arg=$nonopt
186472313efbSmrg    fi
1865bdcaa8d0Smrg
186672313efbSmrg    # The real first argument should be the name of the installation program.
186772313efbSmrg    # Aesthetically quote it.
186872313efbSmrg    func_quote_for_eval "$arg"
186972313efbSmrg    install_prog="$install_prog$func_quote_for_eval_result"
187072313efbSmrg
187172313efbSmrg    # We need to accept at least all the BSD install flags.
187272313efbSmrg    dest=
187372313efbSmrg    files=
187472313efbSmrg    opts=
187572313efbSmrg    prev=
187672313efbSmrg    install_type=
187772313efbSmrg    isdir=no
187872313efbSmrg    stripme=
187972313efbSmrg    for arg
188072313efbSmrg    do
188172313efbSmrg      if test -n "$dest"; then
188272313efbSmrg	files="$files $dest"
188372313efbSmrg	dest=$arg
188472313efbSmrg	continue
1885bdcaa8d0Smrg      fi
1886bdcaa8d0Smrg
188772313efbSmrg      case $arg in
188872313efbSmrg      -d) isdir=yes ;;
188972313efbSmrg      -f)
189072313efbSmrg	case " $install_prog " in
189172313efbSmrg	*[\\\ /]cp\ *) ;;
189272313efbSmrg	*) prev=$arg ;;
189372313efbSmrg	esac
189472313efbSmrg	;;
189572313efbSmrg      -g | -m | -o)
189672313efbSmrg	prev=$arg
189772313efbSmrg	;;
189872313efbSmrg      -s)
189972313efbSmrg	stripme=" -s"
190072313efbSmrg	continue
190172313efbSmrg	;;
190272313efbSmrg      -*)
190372313efbSmrg	;;
190472313efbSmrg      *)
190572313efbSmrg	# If the previous option needed an argument, then skip it.
190672313efbSmrg	if test -n "$prev"; then
190772313efbSmrg	  prev=
190872313efbSmrg	else
190972313efbSmrg	  dest=$arg
191072313efbSmrg	  continue
191172313efbSmrg	fi
191272313efbSmrg	;;
191372313efbSmrg      esac
1914bdcaa8d0Smrg
191572313efbSmrg      # Aesthetically quote the argument.
191672313efbSmrg      func_quote_for_eval "$arg"
191772313efbSmrg      install_prog="$install_prog $func_quote_for_eval_result"
191872313efbSmrg    done
1919bdcaa8d0Smrg
192072313efbSmrg    test -z "$install_prog" && \
192172313efbSmrg      func_fatal_help "you must specify an install program"
1922bdcaa8d0Smrg
192372313efbSmrg    test -n "$prev" && \
192472313efbSmrg      func_fatal_help "the \`$prev' option requires an argument"
1925bdcaa8d0Smrg
192672313efbSmrg    if test -z "$files"; then
192772313efbSmrg      if test -z "$dest"; then
192872313efbSmrg	func_fatal_help "no file or destination specified"
192972313efbSmrg      else
193072313efbSmrg	func_fatal_help "you must specify a destination"
1931bdcaa8d0Smrg      fi
1932bdcaa8d0Smrg    fi
1933bdcaa8d0Smrg
193472313efbSmrg    # Strip any trailing slash from the destination.
193572313efbSmrg    func_stripname '' '/' "$dest"
193672313efbSmrg    dest=$func_stripname_result
1937bdcaa8d0Smrg
193872313efbSmrg    # Check to see that the destination is a directory.
193972313efbSmrg    test -d "$dest" && isdir=yes
194072313efbSmrg    if test "$isdir" = yes; then
194172313efbSmrg      destdir="$dest"
194272313efbSmrg      destname=
194372313efbSmrg    else
194472313efbSmrg      func_dirname_and_basename "$dest" "" "."
194572313efbSmrg      destdir="$func_dirname_result"
194672313efbSmrg      destname="$func_basename_result"
194772313efbSmrg
194872313efbSmrg      # Not a directory, so check to see that there is only one file specified.
194972313efbSmrg      set dummy $files; shift
195072313efbSmrg      test "$#" -gt 1 && \
195172313efbSmrg	func_fatal_help "\`$dest' is not a directory"
195272313efbSmrg    fi
195372313efbSmrg    case $destdir in
195472313efbSmrg    [\\/]* | [A-Za-z]:[\\/]*) ;;
1955bdcaa8d0Smrg    *)
195672313efbSmrg      for file in $files; do
195772313efbSmrg	case $file in
195872313efbSmrg	*.lo) ;;
195972313efbSmrg	*)
196072313efbSmrg	  func_fatal_help "\`$destdir' must be an absolute directory name"
196172313efbSmrg	  ;;
196272313efbSmrg	esac
196372313efbSmrg      done
1964bdcaa8d0Smrg      ;;
1965bdcaa8d0Smrg    esac
1966bdcaa8d0Smrg
196772313efbSmrg    # This variable tells wrapper scripts just to set variables rather
196872313efbSmrg    # than running their programs.
196972313efbSmrg    libtool_install_magic="$magic"
1970bdcaa8d0Smrg
197172313efbSmrg    staticlibs=
197272313efbSmrg    future_libdirs=
197372313efbSmrg    current_libdirs=
197472313efbSmrg    for file in $files; do
1975bdcaa8d0Smrg
197672313efbSmrg      # Do each installation.
197772313efbSmrg      case $file in
197872313efbSmrg      *.$libext)
197972313efbSmrg	# Do the static libraries later.
198072313efbSmrg	staticlibs="$staticlibs $file"
198172313efbSmrg	;;
198272313efbSmrg
198372313efbSmrg      *.la)
198472313efbSmrg	# Check to see that this really is a libtool archive.
198572313efbSmrg	func_lalib_unsafe_p "$file" \
198672313efbSmrg	  || func_fatal_help "\`$file' is not a valid libtool archive"
198772313efbSmrg
198872313efbSmrg	library_names=
198972313efbSmrg	old_library=
199072313efbSmrg	relink_command=
199172313efbSmrg	func_source "$file"
199272313efbSmrg
199372313efbSmrg	# Add the libdir to current_libdirs if it is the destination.
199472313efbSmrg	if test "X$destdir" = "X$libdir"; then
199572313efbSmrg	  case "$current_libdirs " in
199672313efbSmrg	  *" $libdir "*) ;;
199772313efbSmrg	  *) current_libdirs="$current_libdirs $libdir" ;;
1998bdcaa8d0Smrg	  esac
199972313efbSmrg	else
200072313efbSmrg	  # Note the libdir as a future libdir.
200172313efbSmrg	  case "$future_libdirs " in
200272313efbSmrg	  *" $libdir "*) ;;
200372313efbSmrg	  *) future_libdirs="$future_libdirs $libdir" ;;
200472313efbSmrg	  esac
200572313efbSmrg	fi
2006bdcaa8d0Smrg
200772313efbSmrg	func_dirname "$file" "/" ""
200872313efbSmrg	dir="$func_dirname_result"
200972313efbSmrg	dir="$dir$objdir"
201072313efbSmrg
201172313efbSmrg	if test -n "$relink_command"; then
201272313efbSmrg	  # Determine the prefix the user has applied to our future dir.
201372313efbSmrg	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
201472313efbSmrg
201572313efbSmrg	  # Don't allow the user to place us outside of our expected
201672313efbSmrg	  # location b/c this prevents finding dependent libraries that
201772313efbSmrg	  # are installed to the same prefix.
201872313efbSmrg	  # At present, this check doesn't affect windows .dll's that
201972313efbSmrg	  # are installed into $libdir/../bin (currently, that works fine)
202072313efbSmrg	  # but it's something to keep an eye on.
202172313efbSmrg	  test "$inst_prefix_dir" = "$destdir" && \
202272313efbSmrg	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
202372313efbSmrg
202472313efbSmrg	  if test -n "$inst_prefix_dir"; then
202572313efbSmrg	    # Stick the inst_prefix_dir data into the link command.
202672313efbSmrg	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
202772313efbSmrg	  else
202872313efbSmrg	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
202972313efbSmrg	  fi
203072313efbSmrg
203172313efbSmrg	  func_warning "relinking \`$file'"
203272313efbSmrg	  func_show_eval "$relink_command" \
203372313efbSmrg	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
203472313efbSmrg	fi
203572313efbSmrg
203672313efbSmrg	# See the names of the shared library.
203772313efbSmrg	set dummy $library_names; shift
203872313efbSmrg	if test -n "$1"; then
203972313efbSmrg	  realname="$1"
204072313efbSmrg	  shift
204172313efbSmrg
204272313efbSmrg	  srcname="$realname"
204372313efbSmrg	  test -n "$relink_command" && srcname="$realname"T
204472313efbSmrg
204572313efbSmrg	  # Install the shared library and build the symlinks.
204672313efbSmrg	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
204772313efbSmrg	      'exit $?'
204872313efbSmrg	  tstripme="$stripme"
204972313efbSmrg	  case $host_os in
205072313efbSmrg	  cygwin* | mingw* | pw32* | cegcc*)
205172313efbSmrg	    case $realname in
205272313efbSmrg	    *.dll.a)
205372313efbSmrg	      tstripme=""
205472313efbSmrg	      ;;
205572313efbSmrg	    esac
2056bdcaa8d0Smrg	    ;;
2057bdcaa8d0Smrg	  esac
205872313efbSmrg	  if test -n "$tstripme" && test -n "$striplib"; then
205972313efbSmrg	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
2060bdcaa8d0Smrg	  fi
206172313efbSmrg
206272313efbSmrg	  if test "$#" -gt 0; then
206372313efbSmrg	    # Delete the old symlinks, and create new ones.
206472313efbSmrg	    # Try `ln -sf' first, because the `ln' binary might depend on
206572313efbSmrg	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
206672313efbSmrg	    # so we also need to try rm && ln -s.
206772313efbSmrg	    for linkname
206872313efbSmrg	    do
206972313efbSmrg	      test "$linkname" != "$realname" \
207072313efbSmrg		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
2071bdcaa8d0Smrg	    done
2072bdcaa8d0Smrg	  fi
2073bdcaa8d0Smrg
207472313efbSmrg	  # Do each command in the postinstall commands.
207572313efbSmrg	  lib="$destdir/$realname"
207672313efbSmrg	  func_execute_cmds "$postinstall_cmds" 'exit $?'
2077bdcaa8d0Smrg	fi
2078bdcaa8d0Smrg
207972313efbSmrg	# Install the pseudo-library for information purposes.
208072313efbSmrg	func_basename "$file"
208172313efbSmrg	name="$func_basename_result"
208272313efbSmrg	instname="$dir/$name"i
208372313efbSmrg	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
2084bdcaa8d0Smrg
208572313efbSmrg	# Maybe install the static library, too.
208672313efbSmrg	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
208772313efbSmrg	;;
2088bdcaa8d0Smrg
208972313efbSmrg      *.lo)
209072313efbSmrg	# Install (i.e. copy) a libtool object.
2091bdcaa8d0Smrg
209272313efbSmrg	# Figure out destination file name, if it wasn't already specified.
209372313efbSmrg	if test -n "$destname"; then
209472313efbSmrg	  destfile="$destdir/$destname"
209572313efbSmrg	else
209672313efbSmrg	  func_basename "$file"
209772313efbSmrg	  destfile="$func_basename_result"
209872313efbSmrg	  destfile="$destdir/$destfile"
209972313efbSmrg	fi
210072313efbSmrg
210172313efbSmrg	# Deduce the name of the destination old-style object file.
210272313efbSmrg	case $destfile in
210372313efbSmrg	*.lo)
210472313efbSmrg	  func_lo2o "$destfile"
210572313efbSmrg	  staticdest=$func_lo2o_result
210672313efbSmrg	  ;;
210772313efbSmrg	*.$objext)
210872313efbSmrg	  staticdest="$destfile"
210972313efbSmrg	  destfile=
211072313efbSmrg	  ;;
211172313efbSmrg	*)
211272313efbSmrg	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
211372313efbSmrg	  ;;
2114bdcaa8d0Smrg	esac
2115bdcaa8d0Smrg
211672313efbSmrg	# Install the libtool object if requested.
211772313efbSmrg	test -n "$destfile" && \
211872313efbSmrg	  func_show_eval "$install_prog $file $destfile" 'exit $?'
211972313efbSmrg
212072313efbSmrg	# Install the old object if enabled.
212172313efbSmrg	if test "$build_old_libs" = yes; then
212272313efbSmrg	  # Deduce the name of the old-style object file.
212372313efbSmrg	  func_lo2o "$file"
212472313efbSmrg	  staticobj=$func_lo2o_result
212572313efbSmrg	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
2126bdcaa8d0Smrg	fi
212772313efbSmrg	exit $EXIT_SUCCESS
212872313efbSmrg	;;
2129bdcaa8d0Smrg
213072313efbSmrg      *)
213172313efbSmrg	# Figure out destination file name, if it wasn't already specified.
213272313efbSmrg	if test -n "$destname"; then
213372313efbSmrg	  destfile="$destdir/$destname"
213472313efbSmrg	else
213572313efbSmrg	  func_basename "$file"
213672313efbSmrg	  destfile="$func_basename_result"
213772313efbSmrg	  destfile="$destdir/$destfile"
213872313efbSmrg	fi
213972313efbSmrg
214072313efbSmrg	# If the file is missing, and there is a .exe on the end, strip it
214172313efbSmrg	# because it is most likely a libtool script we actually want to
214272313efbSmrg	# install
214372313efbSmrg	stripped_ext=""
214472313efbSmrg	case $file in
214572313efbSmrg	  *.exe)
214672313efbSmrg	    if test ! -f "$file"; then
214772313efbSmrg	      func_stripname '' '.exe' "$file"
214872313efbSmrg	      file=$func_stripname_result
214972313efbSmrg	      stripped_ext=".exe"
2150bdcaa8d0Smrg	    fi
215172313efbSmrg	    ;;
215272313efbSmrg	esac
2153bdcaa8d0Smrg
215472313efbSmrg	# Do a test to see if this is really a libtool program.
215572313efbSmrg	case $host in
215672313efbSmrg	*cygwin* | *mingw*)
215772313efbSmrg	    if func_ltwrapper_executable_p "$file"; then
215872313efbSmrg	      func_ltwrapper_scriptname "$file"
215972313efbSmrg	      wrapper=$func_ltwrapper_scriptname_result
216072313efbSmrg	    else
216172313efbSmrg	      func_stripname '' '.exe' "$file"
216272313efbSmrg	      wrapper=$func_stripname_result
216372313efbSmrg	    fi
216472313efbSmrg	    ;;
216572313efbSmrg	*)
216672313efbSmrg	    wrapper=$file
216772313efbSmrg	    ;;
216872313efbSmrg	esac
216972313efbSmrg	if func_ltwrapper_script_p "$wrapper"; then
217072313efbSmrg	  notinst_deplibs=
217172313efbSmrg	  relink_command=
2172bdcaa8d0Smrg
217372313efbSmrg	  func_source "$wrapper"
2174bdcaa8d0Smrg
217572313efbSmrg	  # Check the variables that should have been set.
217672313efbSmrg	  test -z "$generated_by_libtool_version" && \
217772313efbSmrg	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
217872313efbSmrg
217972313efbSmrg	  finalize=yes
218072313efbSmrg	  for lib in $notinst_deplibs; do
218172313efbSmrg	    # Check to see that each library is installed.
218272313efbSmrg	    libdir=
218372313efbSmrg	    if test -f "$lib"; then
218472313efbSmrg	      func_source "$lib"
218572313efbSmrg	    fi
218672313efbSmrg	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
218772313efbSmrg	    if test -n "$libdir" && test ! -f "$libfile"; then
218872313efbSmrg	      func_warning "\`$lib' has not been installed in \`$libdir'"
218972313efbSmrg	      finalize=no
219072313efbSmrg	    fi
219172313efbSmrg	  done
219272313efbSmrg
219372313efbSmrg	  relink_command=
219472313efbSmrg	  func_source "$wrapper"
219572313efbSmrg
219672313efbSmrg	  outputname=
219772313efbSmrg	  if test "$fast_install" = no && test -n "$relink_command"; then
219872313efbSmrg	    $opt_dry_run || {
219972313efbSmrg	      if test "$finalize" = yes; then
220072313efbSmrg	        tmpdir=`func_mktempdir`
220172313efbSmrg		func_basename "$file$stripped_ext"
220272313efbSmrg		file="$func_basename_result"
220372313efbSmrg	        outputname="$tmpdir/$file"
220472313efbSmrg	        # Replace the output file specification.
220572313efbSmrg	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
220672313efbSmrg
220772313efbSmrg	        $opt_silent || {
220872313efbSmrg	          func_quote_for_expand "$relink_command"
220972313efbSmrg		  eval "func_echo $func_quote_for_expand_result"
221072313efbSmrg	        }
221172313efbSmrg	        if eval "$relink_command"; then :
221272313efbSmrg	          else
221372313efbSmrg		  func_error "error: relink \`$file' with the above command before installing it"
221472313efbSmrg		  $opt_dry_run || ${RM}r "$tmpdir"
221572313efbSmrg		  continue
221672313efbSmrg	        fi
221772313efbSmrg	        file="$outputname"
221872313efbSmrg	      else
221972313efbSmrg	        func_warning "cannot relink \`$file'"
222072313efbSmrg	      fi
222172313efbSmrg	    }
2222bdcaa8d0Smrg	  else
222372313efbSmrg	    # Install the binary that we compiled earlier.
222472313efbSmrg	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
2225bdcaa8d0Smrg	  fi
222672313efbSmrg	fi
2227bdcaa8d0Smrg
222872313efbSmrg	# remove .exe since cygwin /usr/bin/install will append another
222972313efbSmrg	# one anyway
223072313efbSmrg	case $install_prog,$host in
223172313efbSmrg	*/usr/bin/install*,*cygwin*)
223272313efbSmrg	  case $file:$destfile in
223372313efbSmrg	  *.exe:*.exe)
223472313efbSmrg	    # this is ok
223572313efbSmrg	    ;;
223672313efbSmrg	  *.exe:*)
223772313efbSmrg	    destfile=$destfile.exe
223872313efbSmrg	    ;;
223972313efbSmrg	  *:*.exe)
224072313efbSmrg	    func_stripname '' '.exe' "$destfile"
224172313efbSmrg	    destfile=$func_stripname_result
224272313efbSmrg	    ;;
224372313efbSmrg	  esac
2244bdcaa8d0Smrg	  ;;
2245bdcaa8d0Smrg	esac
224672313efbSmrg	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
224772313efbSmrg	$opt_dry_run || if test -n "$outputname"; then
224872313efbSmrg	  ${RM}r "$tmpdir"
224972313efbSmrg	fi
225072313efbSmrg	;;
225172313efbSmrg      esac
225272313efbSmrg    done
2253bdcaa8d0Smrg
225472313efbSmrg    for file in $staticlibs; do
225572313efbSmrg      func_basename "$file"
225672313efbSmrg      name="$func_basename_result"
2257bdcaa8d0Smrg
225872313efbSmrg      # Set up the ranlib parameters.
225972313efbSmrg      oldlib="$destdir/$name"
2260bdcaa8d0Smrg
226172313efbSmrg      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
2262bdcaa8d0Smrg
226372313efbSmrg      if test -n "$stripme" && test -n "$old_striplib"; then
226472313efbSmrg	func_show_eval "$old_striplib $oldlib" 'exit $?'
226572313efbSmrg      fi
2266bdcaa8d0Smrg
226772313efbSmrg      # Do each command in the postinstall commands.
226872313efbSmrg      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
226972313efbSmrg    done
2270bdcaa8d0Smrg
227172313efbSmrg    test -n "$future_libdirs" && \
227272313efbSmrg      func_warning "remember to run \`$progname --finish$future_libdirs'"
2273bdcaa8d0Smrg
227472313efbSmrg    if test -n "$current_libdirs"; then
227572313efbSmrg      # Maybe just do a dry run.
227672313efbSmrg      $opt_dry_run && current_libdirs=" -n$current_libdirs"
227772313efbSmrg      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
227872313efbSmrg    else
227972313efbSmrg      exit $EXIT_SUCCESS
228072313efbSmrg    fi
228172313efbSmrg}
2282bdcaa8d0Smrg
228372313efbSmrgtest "$mode" = install && func_mode_install ${1+"$@"}
2284bdcaa8d0Smrg
2285bdcaa8d0Smrg
228672313efbSmrg# func_generate_dlsyms outputname originator pic_p
228772313efbSmrg# Extract symbols from dlprefiles and create ${outputname}S.o with
228872313efbSmrg# a dlpreopen symbol table.
228972313efbSmrgfunc_generate_dlsyms ()
229072313efbSmrg{
229172313efbSmrg    $opt_debug
229272313efbSmrg    my_outputname="$1"
229372313efbSmrg    my_originator="$2"
229472313efbSmrg    my_pic_p="${3-no}"
229572313efbSmrg    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
229672313efbSmrg    my_dlsyms=
229772313efbSmrg
229872313efbSmrg    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
229972313efbSmrg      if test -n "$NM" && test -n "$global_symbol_pipe"; then
230072313efbSmrg	my_dlsyms="${my_outputname}S.c"
230172313efbSmrg      else
230272313efbSmrg	func_error "not configured to extract global symbols from dlpreopened files"
230372313efbSmrg      fi
230472313efbSmrg    fi
2305bdcaa8d0Smrg
230672313efbSmrg    if test -n "$my_dlsyms"; then
230772313efbSmrg      case $my_dlsyms in
230872313efbSmrg      "") ;;
230972313efbSmrg      *.c)
231072313efbSmrg	# Discover the nlist of each of the dlfiles.
231172313efbSmrg	nlist="$output_objdir/${my_outputname}.nm"
231272313efbSmrg
231372313efbSmrg	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
231472313efbSmrg
231572313efbSmrg	# Parse the name list into a source file.
231672313efbSmrg	func_verbose "creating $output_objdir/$my_dlsyms"
231772313efbSmrg
231872313efbSmrg	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
231972313efbSmrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
232072313efbSmrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
232172313efbSmrg
232272313efbSmrg#ifdef __cplusplus
232372313efbSmrgextern \"C\" {
232472313efbSmrg#endif
232572313efbSmrg
232672313efbSmrg/* External symbol declarations for the compiler. */\
232772313efbSmrg"
232872313efbSmrg
232972313efbSmrg	if test "$dlself" = yes; then
233072313efbSmrg	  func_verbose "generating symbol list for \`$output'"
233172313efbSmrg
233272313efbSmrg	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
233372313efbSmrg
233472313efbSmrg	  # Add our own program objects to the symbol list.
233572313efbSmrg	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
233672313efbSmrg	  for progfile in $progfiles; do
233772313efbSmrg	    func_verbose "extracting global C symbols from \`$progfile'"
233872313efbSmrg	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
233972313efbSmrg	  done
234072313efbSmrg
234172313efbSmrg	  if test -n "$exclude_expsyms"; then
234272313efbSmrg	    $opt_dry_run || {
234372313efbSmrg	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
234472313efbSmrg	      eval '$MV "$nlist"T "$nlist"'
234572313efbSmrg	    }
2346bdcaa8d0Smrg	  fi
2347bdcaa8d0Smrg
234872313efbSmrg	  if test -n "$export_symbols_regex"; then
234972313efbSmrg	    $opt_dry_run || {
235072313efbSmrg	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
235172313efbSmrg	      eval '$MV "$nlist"T "$nlist"'
235272313efbSmrg	    }
2353bdcaa8d0Smrg	  fi
235472313efbSmrg
235572313efbSmrg	  # Prepare the list of exported symbols
235672313efbSmrg	  if test -z "$export_symbols"; then
235772313efbSmrg	    export_symbols="$output_objdir/$outputname.exp"
235872313efbSmrg	    $opt_dry_run || {
235972313efbSmrg	      $RM $export_symbols
236072313efbSmrg	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
236172313efbSmrg	      case $host in
236272313efbSmrg	      *cygwin* | *mingw* | *cegcc* )
236372313efbSmrg                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
236472313efbSmrg                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
236572313efbSmrg	        ;;
2366bdcaa8d0Smrg	      esac
236772313efbSmrg	    }
236872313efbSmrg	  else
236972313efbSmrg	    $opt_dry_run || {
237072313efbSmrg	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
237172313efbSmrg	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
237272313efbSmrg	      eval '$MV "$nlist"T "$nlist"'
237372313efbSmrg	      case $host in
237472313efbSmrg	        *cygwin | *mingw* | *cegcc* )
237572313efbSmrg	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
237672313efbSmrg	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
237772313efbSmrg	          ;;
2378bdcaa8d0Smrg	      esac
237972313efbSmrg	    }
2380bdcaa8d0Smrg	  fi
238172313efbSmrg	fi
2382bdcaa8d0Smrg
238372313efbSmrg	for dlprefile in $dlprefiles; do
238472313efbSmrg	  func_verbose "extracting global C symbols from \`$dlprefile'"
238572313efbSmrg	  func_basename "$dlprefile"
238672313efbSmrg	  name="$func_basename_result"
238772313efbSmrg	  $opt_dry_run || {
238872313efbSmrg	    eval '$ECHO ": $name " >> "$nlist"'
238972313efbSmrg	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
239072313efbSmrg	  }
239172313efbSmrg	done
2392bdcaa8d0Smrg
239372313efbSmrg	$opt_dry_run || {
239472313efbSmrg	  # Make sure we have at least an empty file.
239572313efbSmrg	  test -f "$nlist" || : > "$nlist"
2396bdcaa8d0Smrg
239772313efbSmrg	  if test -n "$exclude_expsyms"; then
239872313efbSmrg	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
239972313efbSmrg	    $MV "$nlist"T "$nlist"
2400bdcaa8d0Smrg	  fi
2401bdcaa8d0Smrg
240272313efbSmrg	  # Try sorting and uniquifying the output.
240372313efbSmrg	  if $GREP -v "^: " < "$nlist" |
240472313efbSmrg	      if sort -k 3 </dev/null >/dev/null 2>&1; then
240572313efbSmrg		sort -k 3
2406bdcaa8d0Smrg	      else
240772313efbSmrg		sort +2
240872313efbSmrg	      fi |
240972313efbSmrg	      uniq > "$nlist"S; then
241072313efbSmrg	    :
2411bdcaa8d0Smrg	  else
241272313efbSmrg	    $GREP -v "^: " < "$nlist" > "$nlist"S
2413bdcaa8d0Smrg	  fi
2414bdcaa8d0Smrg
241572313efbSmrg	  if test -f "$nlist"S; then
241672313efbSmrg	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
2417bdcaa8d0Smrg	  else
241872313efbSmrg	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
2419bdcaa8d0Smrg	  fi
2420bdcaa8d0Smrg
242172313efbSmrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
2422bdcaa8d0Smrg
242372313efbSmrg/* The mapping between symbol names and symbols.  */
242472313efbSmrgtypedef struct {
242572313efbSmrg  const char *name;
242672313efbSmrg  void *address;
242772313efbSmrg} lt_dlsymlist;
242872313efbSmrg"
242972313efbSmrg	  case $host in
243072313efbSmrg	  *cygwin* | *mingw* | *cegcc* )
243172313efbSmrg	    $ECHO >> "$output_objdir/$my_dlsyms" "\
243272313efbSmrg/* DATA imports from DLLs on WIN32 con't be const, because
243372313efbSmrg   runtime relocations are performed -- see ld's documentation
243472313efbSmrg   on pseudo-relocs.  */"
243572313efbSmrg	    lt_dlsym_const= ;;
243672313efbSmrg	  *osf5*)
243772313efbSmrg	    echo >> "$output_objdir/$my_dlsyms" "\
243872313efbSmrg/* This system does not cope well with relocations in const data */"
243972313efbSmrg	    lt_dlsym_const= ;;
244072313efbSmrg	  *)
244172313efbSmrg	    lt_dlsym_const=const ;;
244272313efbSmrg	  esac
244372313efbSmrg
244472313efbSmrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
244572313efbSmrgextern $lt_dlsym_const lt_dlsymlist
244672313efbSmrglt_${my_prefix}_LTX_preloaded_symbols[];
244772313efbSmrg$lt_dlsym_const lt_dlsymlist
244872313efbSmrglt_${my_prefix}_LTX_preloaded_symbols[] =
244972313efbSmrg{\
245072313efbSmrg  { \"$my_originator\", (void *) 0 },"
245172313efbSmrg
245272313efbSmrg	  case $need_lib_prefix in
245372313efbSmrg	  no)
245472313efbSmrg	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
245572313efbSmrg	    ;;
245672313efbSmrg	  *)
245772313efbSmrg	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
245872313efbSmrg	    ;;
245972313efbSmrg	  esac
246072313efbSmrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
246172313efbSmrg  {0, (void *) 0}
246272313efbSmrg};
246372313efbSmrg
246472313efbSmrg/* This works around a problem in FreeBSD linker */
246572313efbSmrg#ifdef FREEBSD_WORKAROUND
246672313efbSmrgstatic const void *lt_preloaded_setup() {
246772313efbSmrg  return lt_${my_prefix}_LTX_preloaded_symbols;
246872313efbSmrg}
246972313efbSmrg#endif
247072313efbSmrg
247172313efbSmrg#ifdef __cplusplus
247272313efbSmrg}
247372313efbSmrg#endif\
247472313efbSmrg"
247572313efbSmrg	} # !$opt_dry_run
247672313efbSmrg
247772313efbSmrg	pic_flag_for_symtable=
247872313efbSmrg	case "$compile_command " in
247972313efbSmrg	*" -static "*) ;;
248072313efbSmrg	*)
248172313efbSmrg	  case $host in
248272313efbSmrg	  # compiling the symbol table file with pic_flag works around
248372313efbSmrg	  # a FreeBSD bug that causes programs to crash when -lm is
248472313efbSmrg	  # linked before any other PIC object.  But we must not use
248572313efbSmrg	  # pic_flag when linking with -static.  The problem exists in
248672313efbSmrg	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
248772313efbSmrg	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
248872313efbSmrg	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
248972313efbSmrg	  *-*-hpux*)
249072313efbSmrg	    pic_flag_for_symtable=" $pic_flag"  ;;
249172313efbSmrg	  *)
249272313efbSmrg	    if test "X$my_pic_p" != Xno; then
249372313efbSmrg	      pic_flag_for_symtable=" $pic_flag"
2494bdcaa8d0Smrg	    fi
249572313efbSmrg	    ;;
249672313efbSmrg	  esac
249772313efbSmrg	  ;;
249872313efbSmrg	esac
249972313efbSmrg	symtab_cflags=
250072313efbSmrg	for arg in $LTCFLAGS; do
250172313efbSmrg	  case $arg in
250272313efbSmrg	  -pie | -fpie | -fPIE) ;;
250372313efbSmrg	  *) symtab_cflags="$symtab_cflags $arg" ;;
250472313efbSmrg	  esac
250572313efbSmrg	done
2506bdcaa8d0Smrg
250772313efbSmrg	# Now compile the dynamic symbol file.
250872313efbSmrg	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
2509bdcaa8d0Smrg
251072313efbSmrg	# Clean up the generated files.
251172313efbSmrg	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
251272313efbSmrg
251372313efbSmrg	# Transform the symbol file into the correct name.
251472313efbSmrg	symfileobj="$output_objdir/${my_outputname}S.$objext"
251572313efbSmrg	case $host in
251672313efbSmrg	*cygwin* | *mingw* | *cegcc* )
251772313efbSmrg	  if test -f "$output_objdir/$my_outputname.def"; then
251872313efbSmrg	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
251972313efbSmrg	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
252072313efbSmrg	  else
252172313efbSmrg	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
252272313efbSmrg	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
252372313efbSmrg	  fi
252472313efbSmrg	  ;;
252572313efbSmrg	*)
252672313efbSmrg	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
252772313efbSmrg	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
2528bdcaa8d0Smrg	  ;;
2529bdcaa8d0Smrg	esac
253072313efbSmrg	;;
253172313efbSmrg      *)
253272313efbSmrg	func_fatal_error "unknown suffix for \`$my_dlsyms'"
253372313efbSmrg	;;
253472313efbSmrg      esac
253572313efbSmrg    else
253672313efbSmrg      # We keep going just in case the user didn't refer to
253772313efbSmrg      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
253872313efbSmrg      # really was required.
253972313efbSmrg
254072313efbSmrg      # Nullify the symbol file.
254172313efbSmrg      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
254272313efbSmrg      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
2543bdcaa8d0Smrg    fi
254472313efbSmrg}
2545bdcaa8d0Smrg
254672313efbSmrg# func_win32_libid arg
254772313efbSmrg# return the library type of file 'arg'
254872313efbSmrg#
254972313efbSmrg# Need a lot of goo to handle *both* DLLs and import libs
255072313efbSmrg# Has to be a shell function in order to 'eat' the argument
255172313efbSmrg# that is supplied when $file_magic_command is called.
255272313efbSmrgfunc_win32_libid ()
255372313efbSmrg{
255472313efbSmrg  $opt_debug
255572313efbSmrg  win32_libid_type="unknown"
255672313efbSmrg  win32_fileres=`file -L $1 2>/dev/null`
255772313efbSmrg  case $win32_fileres in
255872313efbSmrg  *ar\ archive\ import\ library*) # definitely import
255972313efbSmrg    win32_libid_type="x86 archive import"
256072313efbSmrg    ;;
256172313efbSmrg  *ar\ archive*) # could be an import, or static
256272313efbSmrg    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
256372313efbSmrg       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
256472313efbSmrg      win32_nmres=`eval $NM -f posix -A $1 |
256572313efbSmrg	$SED -n -e '
256672313efbSmrg	    1,100{
256772313efbSmrg		/ I /{
256872313efbSmrg		    s,.*,import,
256972313efbSmrg		    p
257072313efbSmrg		    q
257172313efbSmrg		}
257272313efbSmrg	    }'`
257372313efbSmrg      case $win32_nmres in
257472313efbSmrg      import*)  win32_libid_type="x86 archive import";;
257572313efbSmrg      *)        win32_libid_type="x86 archive static";;
257672313efbSmrg      esac
257772313efbSmrg    fi
257872313efbSmrg    ;;
257972313efbSmrg  *DLL*)
258072313efbSmrg    win32_libid_type="x86 DLL"
258172313efbSmrg    ;;
258272313efbSmrg  *executable*) # but shell scripts are "executable" too...
258372313efbSmrg    case $win32_fileres in
258472313efbSmrg    *MS\ Windows\ PE\ Intel*)
258572313efbSmrg      win32_libid_type="x86 DLL"
258672313efbSmrg      ;;
258772313efbSmrg    esac
258872313efbSmrg    ;;
258972313efbSmrg  esac
259072313efbSmrg  $ECHO "$win32_libid_type"
259172313efbSmrg}
2592bdcaa8d0Smrg
2593bdcaa8d0Smrg
2594bdcaa8d0Smrg
259572313efbSmrg# func_extract_an_archive dir oldlib
259672313efbSmrgfunc_extract_an_archive ()
259772313efbSmrg{
259872313efbSmrg    $opt_debug
259972313efbSmrg    f_ex_an_ar_dir="$1"; shift
260072313efbSmrg    f_ex_an_ar_oldlib="$1"
260172313efbSmrg    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
260272313efbSmrg    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
260372313efbSmrg     :
260472313efbSmrg    else
260572313efbSmrg      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
260672313efbSmrg    fi
260772313efbSmrg}
2608bdcaa8d0Smrg
2609bdcaa8d0Smrg
261072313efbSmrg# func_extract_archives gentop oldlib ...
261172313efbSmrgfunc_extract_archives ()
261272313efbSmrg{
261372313efbSmrg    $opt_debug
261472313efbSmrg    my_gentop="$1"; shift
261572313efbSmrg    my_oldlibs=${1+"$@"}
261672313efbSmrg    my_oldobjs=""
261772313efbSmrg    my_xlib=""
261872313efbSmrg    my_xabs=""
261972313efbSmrg    my_xdir=""
2620bdcaa8d0Smrg
262172313efbSmrg    for my_xlib in $my_oldlibs; do
262272313efbSmrg      # Extract the objects.
262372313efbSmrg      case $my_xlib in
262472313efbSmrg	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
262572313efbSmrg	*) my_xabs=`pwd`"/$my_xlib" ;;
262672313efbSmrg      esac
262772313efbSmrg      func_basename "$my_xlib"
262872313efbSmrg      my_xlib="$func_basename_result"
262972313efbSmrg      my_xlib_u=$my_xlib
263072313efbSmrg      while :; do
263172313efbSmrg        case " $extracted_archives " in
263272313efbSmrg	*" $my_xlib_u "*)
263372313efbSmrg	  func_arith $extracted_serial + 1
263472313efbSmrg	  extracted_serial=$func_arith_result
263572313efbSmrg	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
263672313efbSmrg	*) break ;;
263772313efbSmrg	esac
263872313efbSmrg      done
263972313efbSmrg      extracted_archives="$extracted_archives $my_xlib_u"
264072313efbSmrg      my_xdir="$my_gentop/$my_xlib_u"
2641bdcaa8d0Smrg
264272313efbSmrg      func_mkdir_p "$my_xdir"
2643bdcaa8d0Smrg
264472313efbSmrg      case $host in
264572313efbSmrg      *-darwin*)
264672313efbSmrg	func_verbose "Extracting $my_xabs"
264772313efbSmrg	# Do not bother doing anything if just a dry run
264872313efbSmrg	$opt_dry_run || {
264972313efbSmrg	  darwin_orig_dir=`pwd`
265072313efbSmrg	  cd $my_xdir || exit $?
265172313efbSmrg	  darwin_archive=$my_xabs
265272313efbSmrg	  darwin_curdir=`pwd`
265372313efbSmrg	  darwin_base_archive=`basename "$darwin_archive"`
265472313efbSmrg	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
265572313efbSmrg	  if test -n "$darwin_arches"; then
265672313efbSmrg	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
265772313efbSmrg	    darwin_arch=
265872313efbSmrg	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
265972313efbSmrg	    for darwin_arch in  $darwin_arches ; do
266072313efbSmrg	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
266172313efbSmrg	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
266272313efbSmrg	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
266372313efbSmrg	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
266472313efbSmrg	      cd "$darwin_curdir"
266572313efbSmrg	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
266672313efbSmrg	    done # $darwin_arches
266772313efbSmrg            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
266872313efbSmrg	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
266972313efbSmrg	    darwin_file=
267072313efbSmrg	    darwin_files=
267172313efbSmrg	    for darwin_file in $darwin_filelist; do
267272313efbSmrg	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
267372313efbSmrg	      $LIPO -create -output "$darwin_file" $darwin_files
267472313efbSmrg	    done # $darwin_filelist
267572313efbSmrg	    $RM -rf unfat-$$
267672313efbSmrg	    cd "$darwin_orig_dir"
267772313efbSmrg	  else
267872313efbSmrg	    cd $darwin_orig_dir
267972313efbSmrg	    func_extract_an_archive "$my_xdir" "$my_xabs"
268072313efbSmrg	  fi # $darwin_arches
268172313efbSmrg	} # !$opt_dry_run
268272313efbSmrg	;;
268372313efbSmrg      *)
268472313efbSmrg        func_extract_an_archive "$my_xdir" "$my_xabs"
268572313efbSmrg	;;
2686bdcaa8d0Smrg      esac
268772313efbSmrg      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
268872313efbSmrg    done
2689bdcaa8d0Smrg
269072313efbSmrg    func_extract_archives_result="$my_oldobjs"
269172313efbSmrg}
2692bdcaa8d0Smrg
2693bdcaa8d0Smrg
2694bdcaa8d0Smrg
269572313efbSmrg# func_emit_wrapper_part1 [arg=no]
269672313efbSmrg#
269772313efbSmrg# Emit the first part of a libtool wrapper script on stdout.
269872313efbSmrg# For more information, see the description associated with
269972313efbSmrg# func_emit_wrapper(), below.
270072313efbSmrgfunc_emit_wrapper_part1 ()
270172313efbSmrg{
270272313efbSmrg	func_emit_wrapper_part1_arg1=no
270372313efbSmrg	if test -n "$1" ; then
270472313efbSmrg	  func_emit_wrapper_part1_arg1=$1
2705bdcaa8d0Smrg	fi
2706bdcaa8d0Smrg
270772313efbSmrg	$ECHO "\
270872313efbSmrg#! $SHELL
2709bdcaa8d0Smrg
271072313efbSmrg# $output - temporary wrapper script for $objdir/$outputname
271172313efbSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
271272313efbSmrg#
271372313efbSmrg# The $output program cannot be directly executed until all the libtool
271472313efbSmrg# libraries that it depends on are installed.
271572313efbSmrg#
271672313efbSmrg# This wrapper script should never be moved out of the build directory.
271772313efbSmrg# If it is, it will not operate correctly.
2718bdcaa8d0Smrg
271972313efbSmrg# Sed substitution that helps us do robust quoting.  It backslashifies
272072313efbSmrg# metacharacters that are still active within double-quoted strings.
272172313efbSmrgXsed='${SED} -e 1s/^X//'
272272313efbSmrgsed_quote_subst='$sed_quote_subst'
2723bdcaa8d0Smrg
272472313efbSmrg# Be Bourne compatible
272572313efbSmrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
272672313efbSmrg  emulate sh
272772313efbSmrg  NULLCMD=:
272872313efbSmrg  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
272972313efbSmrg  # is contrary to our usage.  Disable this feature.
273072313efbSmrg  alias -g '\${1+\"\$@\"}'='\"\$@\"'
273172313efbSmrg  setopt NO_GLOB_SUBST
273272313efbSmrgelse
273372313efbSmrg  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
273472313efbSmrgfi
273572313efbSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
273672313efbSmrgDUALCASE=1; export DUALCASE # for MKS sh
2737bdcaa8d0Smrg
273872313efbSmrg# The HP-UX ksh and POSIX shell print the target directory to stdout
273972313efbSmrg# if CDPATH is set.
274072313efbSmrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
2741bdcaa8d0Smrg
274272313efbSmrgrelink_command=\"$relink_command\"
2743bdcaa8d0Smrg
274472313efbSmrg# This environment variable determines our operation mode.
274572313efbSmrgif test \"\$libtool_install_magic\" = \"$magic\"; then
274672313efbSmrg  # install mode needs the following variables:
274772313efbSmrg  generated_by_libtool_version='$macro_version'
274872313efbSmrg  notinst_deplibs='$notinst_deplibs'
274972313efbSmrgelse
275072313efbSmrg  # When we are sourced in execute mode, \$file and \$ECHO are already set.
275172313efbSmrg  if test \"\$libtool_execute_magic\" != \"$magic\"; then
275272313efbSmrg    ECHO=\"$qecho\"
275372313efbSmrg    file=\"\$0\"
275472313efbSmrg    # Make sure echo works.
275572313efbSmrg    if test \"X\$1\" = X--no-reexec; then
275672313efbSmrg      # Discard the --no-reexec flag, and continue.
275772313efbSmrg      shift
275872313efbSmrg    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
275972313efbSmrg      # Yippee, \$ECHO works!
276072313efbSmrg      :
276172313efbSmrg    else
276272313efbSmrg      # Restart under the correct shell, and then maybe \$ECHO will work.
276372313efbSmrg      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
276472313efbSmrg    fi
276572313efbSmrg  fi\
276672313efbSmrg"
276772313efbSmrg	$ECHO "\
2768bdcaa8d0Smrg
276972313efbSmrg  # Find the directory that this script lives in.
277072313efbSmrg  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
277172313efbSmrg  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
2772bdcaa8d0Smrg
277372313efbSmrg  # Follow symbolic links until we get to the real thisdir.
277472313efbSmrg  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
277572313efbSmrg  while test -n \"\$file\"; do
277672313efbSmrg    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
2777bdcaa8d0Smrg
277872313efbSmrg    # If there was a directory component, then change thisdir.
277972313efbSmrg    if test \"x\$destdir\" != \"x\$file\"; then
278072313efbSmrg      case \"\$destdir\" in
278172313efbSmrg      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
278272313efbSmrg      *) thisdir=\"\$thisdir/\$destdir\" ;;
278372313efbSmrg      esac
278472313efbSmrg    fi
2785bdcaa8d0Smrg
278672313efbSmrg    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
278772313efbSmrg    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
278872313efbSmrg  done
278972313efbSmrg"
279072313efbSmrg}
279172313efbSmrg# end: func_emit_wrapper_part1
2792bdcaa8d0Smrg
279372313efbSmrg# func_emit_wrapper_part2 [arg=no]
279472313efbSmrg#
279572313efbSmrg# Emit the second part of a libtool wrapper script on stdout.
279672313efbSmrg# For more information, see the description associated with
279772313efbSmrg# func_emit_wrapper(), below.
279872313efbSmrgfunc_emit_wrapper_part2 ()
279972313efbSmrg{
280072313efbSmrg	func_emit_wrapper_part2_arg1=no
280172313efbSmrg	if test -n "$1" ; then
280272313efbSmrg	  func_emit_wrapper_part2_arg1=$1
280372313efbSmrg	fi
2804bdcaa8d0Smrg
280572313efbSmrg	$ECHO "\
2806bdcaa8d0Smrg
280772313efbSmrg  # Usually 'no', except on cygwin/mingw when embedded into
280872313efbSmrg  # the cwrapper.
280972313efbSmrg  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
281072313efbSmrg  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
281172313efbSmrg    # special case for '.'
281272313efbSmrg    if test \"\$thisdir\" = \".\"; then
281372313efbSmrg      thisdir=\`pwd\`
281472313efbSmrg    fi
281572313efbSmrg    # remove .libs from thisdir
281672313efbSmrg    case \"\$thisdir\" in
281772313efbSmrg    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
281872313efbSmrg    $objdir )   thisdir=. ;;
281972313efbSmrg    esac
282072313efbSmrg  fi
2821bdcaa8d0Smrg
282272313efbSmrg  # Try to get the absolute directory name.
282372313efbSmrg  absdir=\`cd \"\$thisdir\" && pwd\`
282472313efbSmrg  test -n \"\$absdir\" && thisdir=\"\$absdir\"
282572313efbSmrg"
2826bdcaa8d0Smrg
282772313efbSmrg	if test "$fast_install" = yes; then
282872313efbSmrg	  $ECHO "\
282972313efbSmrg  program=lt-'$outputname'$exeext
283072313efbSmrg  progdir=\"\$thisdir/$objdir\"
2831bdcaa8d0Smrg
283272313efbSmrg  if test ! -f \"\$progdir/\$program\" ||
283372313efbSmrg     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
283472313efbSmrg       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
2835bdcaa8d0Smrg
283672313efbSmrg    file=\"\$\$-\$program\"
2837bdcaa8d0Smrg
283872313efbSmrg    if test ! -d \"\$progdir\"; then
283972313efbSmrg      $MKDIR \"\$progdir\"
284072313efbSmrg    else
284172313efbSmrg      $RM \"\$progdir/\$file\"
284272313efbSmrg    fi"
2843bdcaa8d0Smrg
284472313efbSmrg	  $ECHO "\
2845bdcaa8d0Smrg
284672313efbSmrg    # relink executable if necessary
284772313efbSmrg    if test -n \"\$relink_command\"; then
284872313efbSmrg      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
284972313efbSmrg      else
285072313efbSmrg	$ECHO \"\$relink_command_output\" >&2
285172313efbSmrg	$RM \"\$progdir/\$file\"
285272313efbSmrg	exit 1
285372313efbSmrg      fi
285472313efbSmrg    fi
2855bdcaa8d0Smrg
285672313efbSmrg    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
285772313efbSmrg    { $RM \"\$progdir/\$program\";
285872313efbSmrg      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
285972313efbSmrg    $RM \"\$progdir/\$file\"
286072313efbSmrg  fi"
286172313efbSmrg	else
286272313efbSmrg	  $ECHO "\
286372313efbSmrg  program='$outputname'
286472313efbSmrg  progdir=\"\$thisdir/$objdir\"
286572313efbSmrg"
286672313efbSmrg	fi
2867bdcaa8d0Smrg
286872313efbSmrg	$ECHO "\
2869bdcaa8d0Smrg
287072313efbSmrg  if test -f \"\$progdir/\$program\"; then"
2871bdcaa8d0Smrg
287272313efbSmrg	# Export our shlibpath_var if we have one.
287372313efbSmrg	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
287472313efbSmrg	  $ECHO "\
287572313efbSmrg    # Add our own library path to $shlibpath_var
287672313efbSmrg    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
2877bdcaa8d0Smrg
287872313efbSmrg    # Some systems cannot cope with colon-terminated $shlibpath_var
287972313efbSmrg    # The second colon is a workaround for a bug in BeOS R4 sed
288072313efbSmrg    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
2881bdcaa8d0Smrg
288272313efbSmrg    export $shlibpath_var
288372313efbSmrg"
2884bdcaa8d0Smrg	fi
2885bdcaa8d0Smrg
288672313efbSmrg	# fixup the dll searchpath if we need to.
288772313efbSmrg	if test -n "$dllsearchpath"; then
288872313efbSmrg	  $ECHO "\
288972313efbSmrg    # Add the dll search path components to the executable PATH
289072313efbSmrg    PATH=$dllsearchpath:\$PATH
289172313efbSmrg"
2892bdcaa8d0Smrg	fi
2893bdcaa8d0Smrg
289472313efbSmrg	$ECHO "\
289572313efbSmrg    if test \"\$libtool_execute_magic\" != \"$magic\"; then
289672313efbSmrg      # Run the actual program with our arguments.
289772313efbSmrg"
289872313efbSmrg	case $host in
289972313efbSmrg	# Backslashes separate directories on plain windows
290072313efbSmrg	*-*-mingw | *-*-os2* | *-cegcc*)
290172313efbSmrg	  $ECHO "\
290272313efbSmrg      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
290372313efbSmrg"
290472313efbSmrg	  ;;
290572313efbSmrg
290672313efbSmrg	*)
290772313efbSmrg	  $ECHO "\
290872313efbSmrg      exec \"\$progdir/\$program\" \${1+\"\$@\"}
290972313efbSmrg"
291072313efbSmrg	  ;;
291172313efbSmrg	esac
291272313efbSmrg	$ECHO "\
291372313efbSmrg      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
291472313efbSmrg      exit 1
291572313efbSmrg    fi
291672313efbSmrg  else
291772313efbSmrg    # The program doesn't exist.
291872313efbSmrg    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
291972313efbSmrg    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
292072313efbSmrg    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
292172313efbSmrg    exit 1
292272313efbSmrg  fi
292372313efbSmrgfi\
292472313efbSmrg"
292572313efbSmrg}
292672313efbSmrg# end: func_emit_wrapper_part2
292772313efbSmrg
292872313efbSmrg
292972313efbSmrg# func_emit_wrapper [arg=no]
293072313efbSmrg#
293172313efbSmrg# Emit a libtool wrapper script on stdout.
293272313efbSmrg# Don't directly open a file because we may want to
293372313efbSmrg# incorporate the script contents within a cygwin/mingw
293472313efbSmrg# wrapper executable.  Must ONLY be called from within
293572313efbSmrg# func_mode_link because it depends on a number of variables
293672313efbSmrg# set therein.
293772313efbSmrg#
293872313efbSmrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
293972313efbSmrg# variable will take.  If 'yes', then the emitted script
294072313efbSmrg# will assume that the directory in which it is stored is
294172313efbSmrg# the $objdir directory.  This is a cygwin/mingw-specific
294272313efbSmrg# behavior.
294372313efbSmrgfunc_emit_wrapper ()
294472313efbSmrg{
294572313efbSmrg	func_emit_wrapper_arg1=no
294672313efbSmrg	if test -n "$1" ; then
294772313efbSmrg	  func_emit_wrapper_arg1=$1
2948bdcaa8d0Smrg	fi
2949bdcaa8d0Smrg
295072313efbSmrg	# split this up so that func_emit_cwrapperexe_src
295172313efbSmrg	# can call each part independently.
295272313efbSmrg	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
295372313efbSmrg	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
295472313efbSmrg}
2955bdcaa8d0Smrg
2956bdcaa8d0Smrg
295772313efbSmrg# func_to_host_path arg
295872313efbSmrg#
295972313efbSmrg# Convert paths to host format when used with build tools.
296072313efbSmrg# Intended for use with "native" mingw (where libtool itself
296172313efbSmrg# is running under the msys shell), or in the following cross-
296272313efbSmrg# build environments:
296372313efbSmrg#    $build          $host
296472313efbSmrg#    mingw (msys)    mingw  [e.g. native]
296572313efbSmrg#    cygwin          mingw
296672313efbSmrg#    *nix + wine     mingw
296772313efbSmrg# where wine is equipped with the `winepath' executable.
296872313efbSmrg# In the native mingw case, the (msys) shell automatically
296972313efbSmrg# converts paths for any non-msys applications it launches,
297072313efbSmrg# but that facility isn't available from inside the cwrapper.
297172313efbSmrg# Similar accommodations are necessary for $host mingw and
297272313efbSmrg# $build cygwin.  Calling this function does no harm for other
297372313efbSmrg# $host/$build combinations not listed above.
297472313efbSmrg#
297572313efbSmrg# ARG is the path (on $build) that should be converted to
297672313efbSmrg# the proper representation for $host. The result is stored
297772313efbSmrg# in $func_to_host_path_result.
297872313efbSmrgfunc_to_host_path ()
297972313efbSmrg{
298072313efbSmrg  func_to_host_path_result="$1"
298172313efbSmrg  if test -n "$1" ; then
298272313efbSmrg    case $host in
298372313efbSmrg      *mingw* )
298472313efbSmrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
298572313efbSmrg        case $build in
298672313efbSmrg          *mingw* ) # actually, msys
298772313efbSmrg            # awkward: cmd appends spaces to result
298872313efbSmrg            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
298972313efbSmrg            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
299072313efbSmrg              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
299172313efbSmrg            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
299272313efbSmrg              $SED -e "$lt_sed_naive_backslashify"`
299372313efbSmrg            ;;
299472313efbSmrg          *cygwin* )
299572313efbSmrg            func_to_host_path_tmp1=`cygpath -w "$1"`
299672313efbSmrg            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
299772313efbSmrg              $SED -e "$lt_sed_naive_backslashify"`
299872313efbSmrg            ;;
299972313efbSmrg          * )
300072313efbSmrg            # Unfortunately, winepath does not exit with a non-zero
300172313efbSmrg            # error code, so we are forced to check the contents of
300272313efbSmrg            # stdout. On the other hand, if the command is not
300372313efbSmrg            # found, the shell will set an exit code of 127 and print
300472313efbSmrg            # *an error message* to stdout. So we must check for both
300572313efbSmrg            # error code of zero AND non-empty stdout, which explains
300672313efbSmrg            # the odd construction:
300772313efbSmrg            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
300872313efbSmrg            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
300972313efbSmrg              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
301072313efbSmrg                $SED -e "$lt_sed_naive_backslashify"`
301172313efbSmrg            else
301272313efbSmrg              # Allow warning below.
301372313efbSmrg              func_to_host_path_result=""
301472313efbSmrg            fi
301572313efbSmrg            ;;
301672313efbSmrg        esac
301772313efbSmrg        if test -z "$func_to_host_path_result" ; then
301872313efbSmrg          func_error "Could not determine host path corresponding to"
301972313efbSmrg          func_error "  '$1'"
302072313efbSmrg          func_error "Continuing, but uninstalled executables may not work."
302172313efbSmrg          # Fallback:
302272313efbSmrg          func_to_host_path_result="$1"
302372313efbSmrg        fi
302472313efbSmrg        ;;
302572313efbSmrg    esac
302672313efbSmrg  fi
302772313efbSmrg}
302872313efbSmrg# end: func_to_host_path
3029bdcaa8d0Smrg
303072313efbSmrg# func_to_host_pathlist arg
303172313efbSmrg#
303272313efbSmrg# Convert pathlists to host format when used with build tools.
303372313efbSmrg# See func_to_host_path(), above. This function supports the
303472313efbSmrg# following $build/$host combinations (but does no harm for
303572313efbSmrg# combinations not listed here):
303672313efbSmrg#    $build          $host
303772313efbSmrg#    mingw (msys)    mingw  [e.g. native]
303872313efbSmrg#    cygwin          mingw
303972313efbSmrg#    *nix + wine     mingw
304072313efbSmrg#
304172313efbSmrg# Path separators are also converted from $build format to
304272313efbSmrg# $host format. If ARG begins or ends with a path separator
304372313efbSmrg# character, it is preserved (but converted to $host format)
304472313efbSmrg# on output.
304572313efbSmrg#
304672313efbSmrg# ARG is a pathlist (on $build) that should be converted to
304772313efbSmrg# the proper representation on $host. The result is stored
304872313efbSmrg# in $func_to_host_pathlist_result.
304972313efbSmrgfunc_to_host_pathlist ()
305072313efbSmrg{
305172313efbSmrg  func_to_host_pathlist_result="$1"
305272313efbSmrg  if test -n "$1" ; then
305372313efbSmrg    case $host in
305472313efbSmrg      *mingw* )
305572313efbSmrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
305672313efbSmrg        # Remove leading and trailing path separator characters from
305772313efbSmrg        # ARG. msys behavior is inconsistent here, cygpath turns them
305872313efbSmrg        # into '.;' and ';.', and winepath ignores them completely.
305972313efbSmrg        func_to_host_pathlist_tmp2="$1"
306072313efbSmrg        # Once set for this call, this variable should not be
306172313efbSmrg        # reassigned. It is used in tha fallback case.
306272313efbSmrg        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
306372313efbSmrg          $SED -e 's|^:*||' -e 's|:*$||'`
306472313efbSmrg        case $build in
306572313efbSmrg          *mingw* ) # Actually, msys.
306672313efbSmrg            # Awkward: cmd appends spaces to result.
306772313efbSmrg            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
306872313efbSmrg            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
306972313efbSmrg              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
307072313efbSmrg            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
307172313efbSmrg              $SED -e "$lt_sed_naive_backslashify"`
307272313efbSmrg            ;;
307372313efbSmrg          *cygwin* )
307472313efbSmrg            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
307572313efbSmrg            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
307672313efbSmrg              $SED -e "$lt_sed_naive_backslashify"`
307772313efbSmrg            ;;
307872313efbSmrg          * )
307972313efbSmrg            # unfortunately, winepath doesn't convert pathlists
308072313efbSmrg            func_to_host_pathlist_result=""
308172313efbSmrg            func_to_host_pathlist_oldIFS=$IFS
308272313efbSmrg            IFS=:
308372313efbSmrg            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
308472313efbSmrg              IFS=$func_to_host_pathlist_oldIFS
308572313efbSmrg              if test -n "$func_to_host_pathlist_f" ; then
308672313efbSmrg                func_to_host_path "$func_to_host_pathlist_f"
308772313efbSmrg                if test -n "$func_to_host_path_result" ; then
308872313efbSmrg                  if test -z "$func_to_host_pathlist_result" ; then
308972313efbSmrg                    func_to_host_pathlist_result="$func_to_host_path_result"
309072313efbSmrg                  else
309172313efbSmrg                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
309272313efbSmrg                  fi
309372313efbSmrg                fi
309472313efbSmrg              fi
309572313efbSmrg              IFS=:
309672313efbSmrg            done
309772313efbSmrg            IFS=$func_to_host_pathlist_oldIFS
309872313efbSmrg            ;;
309972313efbSmrg        esac
310072313efbSmrg        if test -z "$func_to_host_pathlist_result" ; then
310172313efbSmrg          func_error "Could not determine the host path(s) corresponding to"
310272313efbSmrg          func_error "  '$1'"
310372313efbSmrg          func_error "Continuing, but uninstalled executables may not work."
310472313efbSmrg          # Fallback. This may break if $1 contains DOS-style drive
310572313efbSmrg          # specifications. The fix is not to complicate the expression
310672313efbSmrg          # below, but for the user to provide a working wine installation
310772313efbSmrg          # with winepath so that path translation in the cross-to-mingw
310872313efbSmrg          # case works properly.
310972313efbSmrg          lt_replace_pathsep_nix_to_dos="s|:|;|g"
311072313efbSmrg          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
311172313efbSmrg            $SED -e "$lt_replace_pathsep_nix_to_dos"`
311272313efbSmrg        fi
311372313efbSmrg        # Now, add the leading and trailing path separators back
311472313efbSmrg        case "$1" in
311572313efbSmrg          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
311672313efbSmrg            ;;
311772313efbSmrg        esac
311872313efbSmrg        case "$1" in
311972313efbSmrg          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
312072313efbSmrg            ;;
312172313efbSmrg        esac
312272313efbSmrg        ;;
312372313efbSmrg    esac
312472313efbSmrg  fi
312572313efbSmrg}
312672313efbSmrg# end: func_to_host_pathlist
3127bdcaa8d0Smrg
312872313efbSmrg# func_emit_cwrapperexe_src
312972313efbSmrg# emit the source code for a wrapper executable on stdout
313072313efbSmrg# Must ONLY be called from within func_mode_link because
313172313efbSmrg# it depends on a number of variable set therein.
313272313efbSmrgfunc_emit_cwrapperexe_src ()
313372313efbSmrg{
313472313efbSmrg	cat <<EOF
3135bdcaa8d0Smrg
313672313efbSmrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
313772313efbSmrg   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
3138bdcaa8d0Smrg
313972313efbSmrg   The $output program cannot be directly executed until all the libtool
314072313efbSmrg   libraries that it depends on are installed.
3141bdcaa8d0Smrg
314272313efbSmrg   This wrapper executable should never be moved out of the build directory.
314372313efbSmrg   If it is, it will not operate correctly.
314472313efbSmrg
314572313efbSmrg   Currently, it simply execs the wrapper *script* "$SHELL $output",
314672313efbSmrg   but could eventually absorb all of the scripts functionality and
314772313efbSmrg   exec $objdir/$outputname directly.
314872313efbSmrg*/
314972313efbSmrgEOF
315072313efbSmrg	    cat <<"EOF"
315172313efbSmrg#include <stdio.h>
315272313efbSmrg#include <stdlib.h>
315372313efbSmrg#ifdef _MSC_VER
315472313efbSmrg# include <direct.h>
315572313efbSmrg# include <process.h>
315672313efbSmrg# include <io.h>
315772313efbSmrg# define setmode _setmode
315872313efbSmrg#else
315972313efbSmrg# include <unistd.h>
316072313efbSmrg# include <stdint.h>
316172313efbSmrg# ifdef __CYGWIN__
316272313efbSmrg#  include <io.h>
316372313efbSmrg#  define HAVE_SETENV
316472313efbSmrg#  ifdef __STRICT_ANSI__
316572313efbSmrgchar *realpath (const char *, char *);
316672313efbSmrgint putenv (char *);
316772313efbSmrgint setenv (const char *, const char *, int);
316872313efbSmrg#  endif
316972313efbSmrg# endif
317072313efbSmrg#endif
317172313efbSmrg#include <malloc.h>
317272313efbSmrg#include <stdarg.h>
317372313efbSmrg#include <assert.h>
317472313efbSmrg#include <string.h>
317572313efbSmrg#include <ctype.h>
317672313efbSmrg#include <errno.h>
317772313efbSmrg#include <fcntl.h>
317872313efbSmrg#include <sys/stat.h>
317972313efbSmrg
318072313efbSmrg#if defined(PATH_MAX)
318172313efbSmrg# define LT_PATHMAX PATH_MAX
318272313efbSmrg#elif defined(MAXPATHLEN)
318372313efbSmrg# define LT_PATHMAX MAXPATHLEN
318472313efbSmrg#else
318572313efbSmrg# define LT_PATHMAX 1024
318672313efbSmrg#endif
318772313efbSmrg
318872313efbSmrg#ifndef S_IXOTH
318972313efbSmrg# define S_IXOTH 0
319072313efbSmrg#endif
319172313efbSmrg#ifndef S_IXGRP
319272313efbSmrg# define S_IXGRP 0
319372313efbSmrg#endif
319472313efbSmrg
319572313efbSmrg#ifdef _MSC_VER
319672313efbSmrg# define S_IXUSR _S_IEXEC
319772313efbSmrg# define stat _stat
319872313efbSmrg# ifndef _INTPTR_T_DEFINED
319972313efbSmrg#  define intptr_t int
320072313efbSmrg# endif
320172313efbSmrg#endif
320272313efbSmrg
320372313efbSmrg#ifndef DIR_SEPARATOR
320472313efbSmrg# define DIR_SEPARATOR '/'
320572313efbSmrg# define PATH_SEPARATOR ':'
320672313efbSmrg#endif
320772313efbSmrg
320872313efbSmrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
320972313efbSmrg  defined (__OS2__)
321072313efbSmrg# define HAVE_DOS_BASED_FILE_SYSTEM
321172313efbSmrg# define FOPEN_WB "wb"
321272313efbSmrg# ifndef DIR_SEPARATOR_2
321372313efbSmrg#  define DIR_SEPARATOR_2 '\\'
321472313efbSmrg# endif
321572313efbSmrg# ifndef PATH_SEPARATOR_2
321672313efbSmrg#  define PATH_SEPARATOR_2 ';'
321772313efbSmrg# endif
321872313efbSmrg#endif
321972313efbSmrg
322072313efbSmrg#ifndef DIR_SEPARATOR_2
322172313efbSmrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
322272313efbSmrg#else /* DIR_SEPARATOR_2 */
322372313efbSmrg# define IS_DIR_SEPARATOR(ch) \
322472313efbSmrg	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
322572313efbSmrg#endif /* DIR_SEPARATOR_2 */
322672313efbSmrg
322772313efbSmrg#ifndef PATH_SEPARATOR_2
322872313efbSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
322972313efbSmrg#else /* PATH_SEPARATOR_2 */
323072313efbSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
323172313efbSmrg#endif /* PATH_SEPARATOR_2 */
323272313efbSmrg
323372313efbSmrg#ifdef __CYGWIN__
323472313efbSmrg# define FOPEN_WB "wb"
323572313efbSmrg#endif
323672313efbSmrg
323772313efbSmrg#ifndef FOPEN_WB
323872313efbSmrg# define FOPEN_WB "w"
323972313efbSmrg#endif
324072313efbSmrg#ifndef _O_BINARY
324172313efbSmrg# define _O_BINARY 0
324272313efbSmrg#endif
324372313efbSmrg
324472313efbSmrg#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
324572313efbSmrg#define XFREE(stale) do { \
324672313efbSmrg  if (stale) { free ((void *) stale); stale = 0; } \
324772313efbSmrg} while (0)
324872313efbSmrg
324972313efbSmrg#undef LTWRAPPER_DEBUGPRINTF
325072313efbSmrg#if defined DEBUGWRAPPER
325172313efbSmrg# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
325272313efbSmrgstatic void
325372313efbSmrgltwrapper_debugprintf (const char *fmt, ...)
325472313efbSmrg{
325572313efbSmrg    va_list args;
325672313efbSmrg    va_start (args, fmt);
325772313efbSmrg    (void) vfprintf (stderr, fmt, args);
325872313efbSmrg    va_end (args);
325972313efbSmrg}
326072313efbSmrg#else
326172313efbSmrg# define LTWRAPPER_DEBUGPRINTF(args)
326272313efbSmrg#endif
326372313efbSmrg
326472313efbSmrgconst char *program_name = NULL;
326572313efbSmrg
326672313efbSmrgvoid *xmalloc (size_t num);
326772313efbSmrgchar *xstrdup (const char *string);
326872313efbSmrgconst char *base_name (const char *name);
326972313efbSmrgchar *find_executable (const char *wrapper);
327072313efbSmrgchar *chase_symlinks (const char *pathspec);
327172313efbSmrgint make_executable (const char *path);
327272313efbSmrgint check_executable (const char *path);
327372313efbSmrgchar *strendzap (char *str, const char *pat);
327472313efbSmrgvoid lt_fatal (const char *message, ...);
327572313efbSmrgvoid lt_setenv (const char *name, const char *value);
327672313efbSmrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
327772313efbSmrgvoid lt_opt_process_env_set (const char *arg);
327872313efbSmrgvoid lt_opt_process_env_prepend (const char *arg);
327972313efbSmrgvoid lt_opt_process_env_append (const char *arg);
328072313efbSmrgint lt_split_name_value (const char *arg, char** name, char** value);
328172313efbSmrgvoid lt_update_exe_path (const char *name, const char *value);
328272313efbSmrgvoid lt_update_lib_path (const char *name, const char *value);
328372313efbSmrg
328472313efbSmrgstatic const char *script_text_part1 =
328572313efbSmrgEOF
328672313efbSmrg
328772313efbSmrg	    func_emit_wrapper_part1 yes |
328872313efbSmrg	        $SED -e 's/\([\\"]\)/\\\1/g' \
328972313efbSmrg	             -e 's/^/  "/' -e 's/$/\\n"/'
329072313efbSmrg	    echo ";"
329172313efbSmrg	    cat <<EOF
329272313efbSmrg
329372313efbSmrgstatic const char *script_text_part2 =
329472313efbSmrgEOF
329572313efbSmrg	    func_emit_wrapper_part2 yes |
329672313efbSmrg	        $SED -e 's/\([\\"]\)/\\\1/g' \
329772313efbSmrg	             -e 's/^/  "/' -e 's/$/\\n"/'
329872313efbSmrg	    echo ";"
329972313efbSmrg
330072313efbSmrg	    cat <<EOF
330172313efbSmrgconst char * MAGIC_EXE = "$magic_exe";
330272313efbSmrgconst char * LIB_PATH_VARNAME = "$shlibpath_var";
330372313efbSmrgEOF
330472313efbSmrg
330572313efbSmrg	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
330672313efbSmrg              func_to_host_pathlist "$temp_rpath"
330772313efbSmrg	      cat <<EOF
330872313efbSmrgconst char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
3309bdcaa8d0SmrgEOF
3310bdcaa8d0Smrg	    else
331172313efbSmrg	      cat <<"EOF"
331272313efbSmrgconst char * LIB_PATH_VALUE   = "";
331372313efbSmrgEOF
3314bdcaa8d0Smrg	    fi
331572313efbSmrg
331672313efbSmrg	    if test -n "$dllsearchpath"; then
331772313efbSmrg              func_to_host_pathlist "$dllsearchpath:"
331872313efbSmrg	      cat <<EOF
331972313efbSmrgconst char * EXE_PATH_VARNAME = "PATH";
332072313efbSmrgconst char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
332172313efbSmrgEOF
3322bdcaa8d0Smrg	    else
332372313efbSmrg	      cat <<"EOF"
332472313efbSmrgconst char * EXE_PATH_VARNAME = "";
332572313efbSmrgconst char * EXE_PATH_VALUE   = "";
332672313efbSmrgEOF
3327bdcaa8d0Smrg	    fi
332872313efbSmrg
332972313efbSmrg	    if test "$fast_install" = yes; then
333072313efbSmrg	      cat <<EOF
333172313efbSmrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
333272313efbSmrgEOF
3333bdcaa8d0Smrg	    else
333472313efbSmrg	      cat <<EOF
333572313efbSmrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
333672313efbSmrgEOF
3337bdcaa8d0Smrg	    fi
3338bdcaa8d0Smrg
3339bdcaa8d0Smrg
334072313efbSmrg	    cat <<"EOF"
3341bdcaa8d0Smrg
334272313efbSmrg#define LTWRAPPER_OPTION_PREFIX         "--lt-"
334372313efbSmrg#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
3344bdcaa8d0Smrg
334572313efbSmrgstatic const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
334672313efbSmrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
3347bdcaa8d0Smrg
334872313efbSmrgstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
3349bdcaa8d0Smrg
335072313efbSmrgstatic const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
335172313efbSmrgstatic const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
335272313efbSmrg  /* argument is putenv-style "foo=bar", value of foo is set to bar */
3353bdcaa8d0Smrg
335472313efbSmrgstatic const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
335572313efbSmrgstatic const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
335672313efbSmrg  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
3357bdcaa8d0Smrg
335872313efbSmrgstatic const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
335972313efbSmrgstatic const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
336072313efbSmrg  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
3361bdcaa8d0Smrg
336272313efbSmrgint
336372313efbSmrgmain (int argc, char *argv[])
336472313efbSmrg{
336572313efbSmrg  char **newargz;
336672313efbSmrg  int  newargc;
336772313efbSmrg  char *tmp_pathspec;
336872313efbSmrg  char *actual_cwrapper_path;
336972313efbSmrg  char *actual_cwrapper_name;
337072313efbSmrg  char *target_name;
337172313efbSmrg  char *lt_argv_zero;
337272313efbSmrg  intptr_t rval = 127;
3373bdcaa8d0Smrg
337472313efbSmrg  int i;
3375bdcaa8d0Smrg
337672313efbSmrg  program_name = (char *) xstrdup (base_name (argv[0]));
337772313efbSmrg  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
337872313efbSmrg  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
3379bdcaa8d0Smrg
338072313efbSmrg  /* very simple arg parsing; don't want to rely on getopt */
338172313efbSmrg  for (i = 1; i < argc; i++)
338272313efbSmrg    {
338372313efbSmrg      if (strcmp (argv[i], dumpscript_opt) == 0)
338472313efbSmrg	{
338572313efbSmrgEOF
338672313efbSmrg	    case "$host" in
338772313efbSmrg	      *mingw* | *cygwin* )
338872313efbSmrg		# make stdout use "unix" line endings
338972313efbSmrg		echo "          setmode(1,_O_BINARY);"
339072313efbSmrg		;;
339172313efbSmrg	      esac
3392bdcaa8d0Smrg
339372313efbSmrg	    cat <<"EOF"
339472313efbSmrg	  printf ("%s", script_text_part1);
339572313efbSmrg	  printf ("%s", script_text_part2);
339672313efbSmrg	  return 0;
339772313efbSmrg	}
339872313efbSmrg    }
3399bdcaa8d0Smrg
340072313efbSmrg  newargz = XMALLOC (char *, argc + 1);
340172313efbSmrg  tmp_pathspec = find_executable (argv[0]);
340272313efbSmrg  if (tmp_pathspec == NULL)
340372313efbSmrg    lt_fatal ("Couldn't find %s", argv[0]);
340472313efbSmrg  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
340572313efbSmrg			  tmp_pathspec));
340672313efbSmrg
340772313efbSmrg  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
340872313efbSmrg  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
340972313efbSmrg			  actual_cwrapper_path));
341072313efbSmrg  XFREE (tmp_pathspec);
341172313efbSmrg
341272313efbSmrg  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
341372313efbSmrg  strendzap (actual_cwrapper_path, actual_cwrapper_name);
341472313efbSmrg
341572313efbSmrg  /* wrapper name transforms */
341672313efbSmrg  strendzap (actual_cwrapper_name, ".exe");
341772313efbSmrg  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
341872313efbSmrg  XFREE (actual_cwrapper_name);
341972313efbSmrg  actual_cwrapper_name = tmp_pathspec;
342072313efbSmrg  tmp_pathspec = 0;
342172313efbSmrg
342272313efbSmrg  /* target_name transforms -- use actual target program name; might have lt- prefix */
342372313efbSmrg  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
342472313efbSmrg  strendzap (target_name, ".exe");
342572313efbSmrg  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
342672313efbSmrg  XFREE (target_name);
342772313efbSmrg  target_name = tmp_pathspec;
342872313efbSmrg  tmp_pathspec = 0;
342972313efbSmrg
343072313efbSmrg  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
343172313efbSmrg			  target_name));
343272313efbSmrgEOF
3433bdcaa8d0Smrg
343472313efbSmrg	    cat <<EOF
343572313efbSmrg  newargz[0] =
343672313efbSmrg    XMALLOC (char, (strlen (actual_cwrapper_path) +
343772313efbSmrg		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
343872313efbSmrg  strcpy (newargz[0], actual_cwrapper_path);
343972313efbSmrg  strcat (newargz[0], "$objdir");
344072313efbSmrg  strcat (newargz[0], "/");
344172313efbSmrgEOF
3442bdcaa8d0Smrg
344372313efbSmrg	    cat <<"EOF"
344472313efbSmrg  /* stop here, and copy so we don't have to do this twice */
344572313efbSmrg  tmp_pathspec = xstrdup (newargz[0]);
3446bdcaa8d0Smrg
344772313efbSmrg  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
344872313efbSmrg  strcat (newargz[0], actual_cwrapper_name);
3449bdcaa8d0Smrg
345072313efbSmrg  /* DO want the lt- prefix here if it exists, so use target_name */
345172313efbSmrg  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
345272313efbSmrg  XFREE (tmp_pathspec);
345372313efbSmrg  tmp_pathspec = NULL;
345472313efbSmrgEOF
3455bdcaa8d0Smrg
345672313efbSmrg	    case $host_os in
345772313efbSmrg	      mingw*)
345872313efbSmrg	    cat <<"EOF"
345972313efbSmrg  {
346072313efbSmrg    char* p;
346172313efbSmrg    while ((p = strchr (newargz[0], '\\')) != NULL)
346272313efbSmrg      {
346372313efbSmrg	*p = '/';
346472313efbSmrg      }
346572313efbSmrg    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
346672313efbSmrg      {
346772313efbSmrg	*p = '/';
346872313efbSmrg      }
346972313efbSmrg  }
347072313efbSmrgEOF
347172313efbSmrg	    ;;
347272313efbSmrg	    esac
3473bdcaa8d0Smrg
347472313efbSmrg	    cat <<"EOF"
347572313efbSmrg  XFREE (target_name);
347672313efbSmrg  XFREE (actual_cwrapper_path);
347772313efbSmrg  XFREE (actual_cwrapper_name);
3478bdcaa8d0Smrg
347972313efbSmrg  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
348072313efbSmrg  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
348172313efbSmrg  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
348272313efbSmrg  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
3483bdcaa8d0Smrg
348472313efbSmrg  newargc=0;
348572313efbSmrg  for (i = 1; i < argc; i++)
348672313efbSmrg    {
348772313efbSmrg      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
348872313efbSmrg        {
348972313efbSmrg          if (argv[i][env_set_opt_len] == '=')
349072313efbSmrg            {
349172313efbSmrg              const char *p = argv[i] + env_set_opt_len + 1;
349272313efbSmrg              lt_opt_process_env_set (p);
349372313efbSmrg            }
349472313efbSmrg          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
349572313efbSmrg            {
349672313efbSmrg              lt_opt_process_env_set (argv[++i]); /* don't copy */
349772313efbSmrg            }
349872313efbSmrg          else
349972313efbSmrg            lt_fatal ("%s missing required argument", env_set_opt);
350072313efbSmrg          continue;
350172313efbSmrg        }
350272313efbSmrg      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
350372313efbSmrg        {
350472313efbSmrg          if (argv[i][env_prepend_opt_len] == '=')
350572313efbSmrg            {
350672313efbSmrg              const char *p = argv[i] + env_prepend_opt_len + 1;
350772313efbSmrg              lt_opt_process_env_prepend (p);
350872313efbSmrg            }
350972313efbSmrg          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
351072313efbSmrg            {
351172313efbSmrg              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
351272313efbSmrg            }
351372313efbSmrg          else
351472313efbSmrg            lt_fatal ("%s missing required argument", env_prepend_opt);
351572313efbSmrg          continue;
351672313efbSmrg        }
351772313efbSmrg      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
351872313efbSmrg        {
351972313efbSmrg          if (argv[i][env_append_opt_len] == '=')
352072313efbSmrg            {
352172313efbSmrg              const char *p = argv[i] + env_append_opt_len + 1;
352272313efbSmrg              lt_opt_process_env_append (p);
352372313efbSmrg            }
352472313efbSmrg          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
352572313efbSmrg            {
352672313efbSmrg              lt_opt_process_env_append (argv[++i]); /* don't copy */
352772313efbSmrg            }
352872313efbSmrg          else
352972313efbSmrg            lt_fatal ("%s missing required argument", env_append_opt);
353072313efbSmrg          continue;
353172313efbSmrg        }
353272313efbSmrg      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
353372313efbSmrg        {
353472313efbSmrg          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
353572313efbSmrg             namespace, but it is not one of the ones we know about and
353672313efbSmrg             have already dealt with, above (inluding dump-script), then
353772313efbSmrg             report an error. Otherwise, targets might begin to believe
353872313efbSmrg             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
353972313efbSmrg             namespace. The first time any user complains about this, we'll
354072313efbSmrg             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
354172313efbSmrg             or a configure.ac-settable value.
354272313efbSmrg           */
354372313efbSmrg          lt_fatal ("Unrecognized option in %s namespace: '%s'",
354472313efbSmrg                    ltwrapper_option_prefix, argv[i]);
354572313efbSmrg        }
354672313efbSmrg      /* otherwise ... */
354772313efbSmrg      newargz[++newargc] = xstrdup (argv[i]);
354872313efbSmrg    }
354972313efbSmrg  newargz[++newargc] = NULL;
3550bdcaa8d0Smrg
355172313efbSmrg  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
355272313efbSmrg  for (i = 0; i < newargc; i++)
355372313efbSmrg    {
355472313efbSmrg      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
355572313efbSmrg    }
3556bdcaa8d0Smrg
355772313efbSmrgEOF
3558bdcaa8d0Smrg
355972313efbSmrg	    case $host_os in
356072313efbSmrg	      mingw*)
356172313efbSmrg		cat <<"EOF"
356272313efbSmrg  /* execv doesn't actually work on mingw as expected on unix */
356372313efbSmrg  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
356472313efbSmrg  if (rval == -1)
356572313efbSmrg    {
356672313efbSmrg      /* failed to start process */
356772313efbSmrg      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
356872313efbSmrg      return 127;
356972313efbSmrg    }
357072313efbSmrg  return rval;
357172313efbSmrgEOF
357272313efbSmrg		;;
357372313efbSmrg	      *)
357472313efbSmrg		cat <<"EOF"
357572313efbSmrg  execv (lt_argv_zero, newargz);
357672313efbSmrg  return rval; /* =127, but avoids unused variable warning */
357772313efbSmrgEOF
357872313efbSmrg		;;
357972313efbSmrg	    esac
3580bdcaa8d0Smrg
358172313efbSmrg	    cat <<"EOF"
358272313efbSmrg}
3583bdcaa8d0Smrg
358472313efbSmrgvoid *
358572313efbSmrgxmalloc (size_t num)
358672313efbSmrg{
358772313efbSmrg  void *p = (void *) malloc (num);
358872313efbSmrg  if (!p)
358972313efbSmrg    lt_fatal ("Memory exhausted");
3590bdcaa8d0Smrg
359172313efbSmrg  return p;
359272313efbSmrg}
3593bdcaa8d0Smrg
359472313efbSmrgchar *
359572313efbSmrgxstrdup (const char *string)
359672313efbSmrg{
359772313efbSmrg  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
359872313efbSmrg			  string) : NULL;
359972313efbSmrg}
3600bdcaa8d0Smrg
360172313efbSmrgconst char *
360272313efbSmrgbase_name (const char *name)
360372313efbSmrg{
360472313efbSmrg  const char *base;
3605bdcaa8d0Smrg
360672313efbSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
360772313efbSmrg  /* Skip over the disk name in MSDOS pathnames. */
360872313efbSmrg  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
360972313efbSmrg    name += 2;
361072313efbSmrg#endif
3611bdcaa8d0Smrg
361272313efbSmrg  for (base = name; *name; name++)
361372313efbSmrg    if (IS_DIR_SEPARATOR (*name))
361472313efbSmrg      base = name + 1;
361572313efbSmrg  return base;
361672313efbSmrg}
3617bdcaa8d0Smrg
361872313efbSmrgint
361972313efbSmrgcheck_executable (const char *path)
362072313efbSmrg{
362172313efbSmrg  struct stat st;
3622bdcaa8d0Smrg
362372313efbSmrg  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
362472313efbSmrg			  path ? (*path ? path : "EMPTY!") : "NULL!"));
362572313efbSmrg  if ((!path) || (!*path))
362672313efbSmrg    return 0;
3627bdcaa8d0Smrg
362872313efbSmrg  if ((stat (path, &st) >= 0)
362972313efbSmrg      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
363072313efbSmrg    return 1;
363172313efbSmrg  else
363272313efbSmrg    return 0;
363372313efbSmrg}
3634bdcaa8d0Smrg
363572313efbSmrgint
363672313efbSmrgmake_executable (const char *path)
363772313efbSmrg{
363872313efbSmrg  int rval = 0;
363972313efbSmrg  struct stat st;
3640bdcaa8d0Smrg
364172313efbSmrg  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
364272313efbSmrg			  path ? (*path ? path : "EMPTY!") : "NULL!"));
364372313efbSmrg  if ((!path) || (!*path))
364472313efbSmrg    return 0;
3645bdcaa8d0Smrg
364672313efbSmrg  if (stat (path, &st) >= 0)
364772313efbSmrg    {
364872313efbSmrg      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
364972313efbSmrg    }
365072313efbSmrg  return rval;
365172313efbSmrg}
3652bdcaa8d0Smrg
365372313efbSmrg/* Searches for the full path of the wrapper.  Returns
365472313efbSmrg   newly allocated full path name if found, NULL otherwise
365572313efbSmrg   Does not chase symlinks, even on platforms that support them.
365672313efbSmrg*/
365772313efbSmrgchar *
365872313efbSmrgfind_executable (const char *wrapper)
365972313efbSmrg{
366072313efbSmrg  int has_slash = 0;
366172313efbSmrg  const char *p;
366272313efbSmrg  const char *p_next;
366372313efbSmrg  /* static buffer for getcwd */
366472313efbSmrg  char tmp[LT_PATHMAX + 1];
366572313efbSmrg  int tmp_len;
366672313efbSmrg  char *concat_name;
3667bdcaa8d0Smrg
366872313efbSmrg  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
366972313efbSmrg			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
3670bdcaa8d0Smrg
367172313efbSmrg  if ((wrapper == NULL) || (*wrapper == '\0'))
367272313efbSmrg    return NULL;
3673bdcaa8d0Smrg
367472313efbSmrg  /* Absolute path? */
367572313efbSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
367672313efbSmrg  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
367772313efbSmrg    {
367872313efbSmrg      concat_name = xstrdup (wrapper);
367972313efbSmrg      if (check_executable (concat_name))
368072313efbSmrg	return concat_name;
368172313efbSmrg      XFREE (concat_name);
368272313efbSmrg    }
368372313efbSmrg  else
368472313efbSmrg    {
368572313efbSmrg#endif
368672313efbSmrg      if (IS_DIR_SEPARATOR (wrapper[0]))
368772313efbSmrg	{
368872313efbSmrg	  concat_name = xstrdup (wrapper);
368972313efbSmrg	  if (check_executable (concat_name))
369072313efbSmrg	    return concat_name;
369172313efbSmrg	  XFREE (concat_name);
369272313efbSmrg	}
369372313efbSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
369472313efbSmrg    }
369572313efbSmrg#endif
3696bdcaa8d0Smrg
369772313efbSmrg  for (p = wrapper; *p; p++)
369872313efbSmrg    if (*p == '/')
369972313efbSmrg      {
370072313efbSmrg	has_slash = 1;
370172313efbSmrg	break;
370272313efbSmrg      }
370372313efbSmrg  if (!has_slash)
370472313efbSmrg    {
370572313efbSmrg      /* no slashes; search PATH */
370672313efbSmrg      const char *path = getenv ("PATH");
370772313efbSmrg      if (path != NULL)
370872313efbSmrg	{
370972313efbSmrg	  for (p = path; *p; p = p_next)
371072313efbSmrg	    {
371172313efbSmrg	      const char *q;
371272313efbSmrg	      size_t p_len;
371372313efbSmrg	      for (q = p; *q; q++)
371472313efbSmrg		if (IS_PATH_SEPARATOR (*q))
371572313efbSmrg		  break;
371672313efbSmrg	      p_len = q - p;
371772313efbSmrg	      p_next = (*q == '\0' ? q : q + 1);
371872313efbSmrg	      if (p_len == 0)
371972313efbSmrg		{
372072313efbSmrg		  /* empty path: current directory */
372172313efbSmrg		  if (getcwd (tmp, LT_PATHMAX) == NULL)
372272313efbSmrg		    lt_fatal ("getcwd failed");
372372313efbSmrg		  tmp_len = strlen (tmp);
372472313efbSmrg		  concat_name =
372572313efbSmrg		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
372672313efbSmrg		  memcpy (concat_name, tmp, tmp_len);
372772313efbSmrg		  concat_name[tmp_len] = '/';
372872313efbSmrg		  strcpy (concat_name + tmp_len + 1, wrapper);
372972313efbSmrg		}
373072313efbSmrg	      else
373172313efbSmrg		{
373272313efbSmrg		  concat_name =
373372313efbSmrg		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
373472313efbSmrg		  memcpy (concat_name, p, p_len);
373572313efbSmrg		  concat_name[p_len] = '/';
373672313efbSmrg		  strcpy (concat_name + p_len + 1, wrapper);
373772313efbSmrg		}
373872313efbSmrg	      if (check_executable (concat_name))
373972313efbSmrg		return concat_name;
374072313efbSmrg	      XFREE (concat_name);
374172313efbSmrg	    }
374272313efbSmrg	}
374372313efbSmrg      /* not found in PATH; assume curdir */
374472313efbSmrg    }
374572313efbSmrg  /* Relative path | not found in path: prepend cwd */
374672313efbSmrg  if (getcwd (tmp, LT_PATHMAX) == NULL)
374772313efbSmrg    lt_fatal ("getcwd failed");
374872313efbSmrg  tmp_len = strlen (tmp);
374972313efbSmrg  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
375072313efbSmrg  memcpy (concat_name, tmp, tmp_len);
375172313efbSmrg  concat_name[tmp_len] = '/';
375272313efbSmrg  strcpy (concat_name + tmp_len + 1, wrapper);
3753bdcaa8d0Smrg
375472313efbSmrg  if (check_executable (concat_name))
375572313efbSmrg    return concat_name;
375672313efbSmrg  XFREE (concat_name);
375772313efbSmrg  return NULL;
375872313efbSmrg}
3759bdcaa8d0Smrg
376072313efbSmrgchar *
376172313efbSmrgchase_symlinks (const char *pathspec)
376272313efbSmrg{
376372313efbSmrg#ifndef S_ISLNK
376472313efbSmrg  return xstrdup (pathspec);
376572313efbSmrg#else
376672313efbSmrg  char buf[LT_PATHMAX];
376772313efbSmrg  struct stat s;
376872313efbSmrg  char *tmp_pathspec = xstrdup (pathspec);
376972313efbSmrg  char *p;
377072313efbSmrg  int has_symlinks = 0;
377172313efbSmrg  while (strlen (tmp_pathspec) && !has_symlinks)
377272313efbSmrg    {
377372313efbSmrg      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
377472313efbSmrg			      tmp_pathspec));
377572313efbSmrg      if (lstat (tmp_pathspec, &s) == 0)
377672313efbSmrg	{
377772313efbSmrg	  if (S_ISLNK (s.st_mode) != 0)
377872313efbSmrg	    {
377972313efbSmrg	      has_symlinks = 1;
378072313efbSmrg	      break;
378172313efbSmrg	    }
3782bdcaa8d0Smrg
378372313efbSmrg	  /* search backwards for last DIR_SEPARATOR */
378472313efbSmrg	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
378572313efbSmrg	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
378672313efbSmrg	    p--;
378772313efbSmrg	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
378872313efbSmrg	    {
378972313efbSmrg	      /* no more DIR_SEPARATORS left */
379072313efbSmrg	      break;
379172313efbSmrg	    }
379272313efbSmrg	  *p = '\0';
379372313efbSmrg	}
379472313efbSmrg      else
379572313efbSmrg	{
379672313efbSmrg	  char *errstr = strerror (errno);
379772313efbSmrg	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
379872313efbSmrg	}
379972313efbSmrg    }
380072313efbSmrg  XFREE (tmp_pathspec);
3801bdcaa8d0Smrg
380272313efbSmrg  if (!has_symlinks)
380372313efbSmrg    {
380472313efbSmrg      return xstrdup (pathspec);
380572313efbSmrg    }
3806bdcaa8d0Smrg
380772313efbSmrg  tmp_pathspec = realpath (pathspec, buf);
380872313efbSmrg  if (tmp_pathspec == 0)
380972313efbSmrg    {
381072313efbSmrg      lt_fatal ("Could not follow symlinks for %s", pathspec);
381172313efbSmrg    }
381272313efbSmrg  return xstrdup (tmp_pathspec);
381372313efbSmrg#endif
381472313efbSmrg}
3815bdcaa8d0Smrg
381672313efbSmrgchar *
381772313efbSmrgstrendzap (char *str, const char *pat)
381872313efbSmrg{
381972313efbSmrg  size_t len, patlen;
3820bdcaa8d0Smrg
382172313efbSmrg  assert (str != NULL);
382272313efbSmrg  assert (pat != NULL);
3823bdcaa8d0Smrg
382472313efbSmrg  len = strlen (str);
382572313efbSmrg  patlen = strlen (pat);
3826bdcaa8d0Smrg
382772313efbSmrg  if (patlen <= len)
382872313efbSmrg    {
382972313efbSmrg      str += len - patlen;
383072313efbSmrg      if (strcmp (str, pat) == 0)
383172313efbSmrg	*str = '\0';
383272313efbSmrg    }
383372313efbSmrg  return str;
383472313efbSmrg}
3835bdcaa8d0Smrg
383672313efbSmrgstatic void
383772313efbSmrglt_error_core (int exit_status, const char *mode,
383872313efbSmrg	       const char *message, va_list ap)
383972313efbSmrg{
384072313efbSmrg  fprintf (stderr, "%s: %s: ", program_name, mode);
384172313efbSmrg  vfprintf (stderr, message, ap);
384272313efbSmrg  fprintf (stderr, ".\n");
3843bdcaa8d0Smrg
384472313efbSmrg  if (exit_status >= 0)
384572313efbSmrg    exit (exit_status);
384672313efbSmrg}
3847bdcaa8d0Smrg
384872313efbSmrgvoid
384972313efbSmrglt_fatal (const char *message, ...)
385072313efbSmrg{
385172313efbSmrg  va_list ap;
385272313efbSmrg  va_start (ap, message);
385372313efbSmrg  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
385472313efbSmrg  va_end (ap);
385572313efbSmrg}
3856bdcaa8d0Smrg
385772313efbSmrgvoid
385872313efbSmrglt_setenv (const char *name, const char *value)
385972313efbSmrg{
386072313efbSmrg  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
386172313efbSmrg                          (name ? name : "<NULL>"),
386272313efbSmrg                          (value ? value : "<NULL>")));
386372313efbSmrg  {
386472313efbSmrg#ifdef HAVE_SETENV
386572313efbSmrg    /* always make a copy, for consistency with !HAVE_SETENV */
386672313efbSmrg    char *str = xstrdup (value);
386772313efbSmrg    setenv (name, str, 1);
386872313efbSmrg#else
386972313efbSmrg    int len = strlen (name) + 1 + strlen (value) + 1;
387072313efbSmrg    char *str = XMALLOC (char, len);
387172313efbSmrg    sprintf (str, "%s=%s", name, value);
387272313efbSmrg    if (putenv (str) != EXIT_SUCCESS)
387372313efbSmrg      {
387472313efbSmrg        XFREE (str);
387572313efbSmrg      }
387672313efbSmrg#endif
387772313efbSmrg  }
387872313efbSmrg}
3879bdcaa8d0Smrg
388072313efbSmrgchar *
388172313efbSmrglt_extend_str (const char *orig_value, const char *add, int to_end)
388272313efbSmrg{
388372313efbSmrg  char *new_value;
388472313efbSmrg  if (orig_value && *orig_value)
388572313efbSmrg    {
388672313efbSmrg      int orig_value_len = strlen (orig_value);
388772313efbSmrg      int add_len = strlen (add);
388872313efbSmrg      new_value = XMALLOC (char, add_len + orig_value_len + 1);
388972313efbSmrg      if (to_end)
389072313efbSmrg        {
389172313efbSmrg          strcpy (new_value, orig_value);
389272313efbSmrg          strcpy (new_value + orig_value_len, add);
389372313efbSmrg        }
389472313efbSmrg      else
389572313efbSmrg        {
389672313efbSmrg          strcpy (new_value, add);
389772313efbSmrg          strcpy (new_value + add_len, orig_value);
389872313efbSmrg        }
389972313efbSmrg    }
390072313efbSmrg  else
390172313efbSmrg    {
390272313efbSmrg      new_value = xstrdup (add);
390372313efbSmrg    }
390472313efbSmrg  return new_value;
390572313efbSmrg}
3906bdcaa8d0Smrg
390772313efbSmrgint
390872313efbSmrglt_split_name_value (const char *arg, char** name, char** value)
390972313efbSmrg{
391072313efbSmrg  const char *p;
391172313efbSmrg  int len;
391272313efbSmrg  if (!arg || !*arg)
391372313efbSmrg    return 1;
3914bdcaa8d0Smrg
391572313efbSmrg  p = strchr (arg, (int)'=');
3916bdcaa8d0Smrg
391772313efbSmrg  if (!p)
391872313efbSmrg    return 1;
3919bdcaa8d0Smrg
392072313efbSmrg  *value = xstrdup (++p);
3921bdcaa8d0Smrg
392272313efbSmrg  len = strlen (arg) - strlen (*value);
392372313efbSmrg  *name = XMALLOC (char, len);
392472313efbSmrg  strncpy (*name, arg, len-1);
392572313efbSmrg  (*name)[len - 1] = '\0';
3926bdcaa8d0Smrg
392772313efbSmrg  return 0;
392872313efbSmrg}
3929bdcaa8d0Smrg
393072313efbSmrgvoid
393172313efbSmrglt_opt_process_env_set (const char *arg)
393272313efbSmrg{
393372313efbSmrg  char *name = NULL;
393472313efbSmrg  char *value = NULL;
3935bdcaa8d0Smrg
393672313efbSmrg  if (lt_split_name_value (arg, &name, &value) != 0)
393772313efbSmrg    {
393872313efbSmrg      XFREE (name);
393972313efbSmrg      XFREE (value);
394072313efbSmrg      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
394172313efbSmrg    }
3942bdcaa8d0Smrg
394372313efbSmrg  lt_setenv (name, value);
394472313efbSmrg  XFREE (name);
394572313efbSmrg  XFREE (value);
394672313efbSmrg}
3947bdcaa8d0Smrg
394872313efbSmrgvoid
394972313efbSmrglt_opt_process_env_prepend (const char *arg)
395072313efbSmrg{
395172313efbSmrg  char *name = NULL;
395272313efbSmrg  char *value = NULL;
395372313efbSmrg  char *new_value = NULL;
3954bdcaa8d0Smrg
395572313efbSmrg  if (lt_split_name_value (arg, &name, &value) != 0)
395672313efbSmrg    {
395772313efbSmrg      XFREE (name);
395872313efbSmrg      XFREE (value);
395972313efbSmrg      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
396072313efbSmrg    }
3961bdcaa8d0Smrg
396272313efbSmrg  new_value = lt_extend_str (getenv (name), value, 0);
396372313efbSmrg  lt_setenv (name, new_value);
396472313efbSmrg  XFREE (new_value);
396572313efbSmrg  XFREE (name);
396672313efbSmrg  XFREE (value);
396772313efbSmrg}
3968bdcaa8d0Smrg
396972313efbSmrgvoid
397072313efbSmrglt_opt_process_env_append (const char *arg)
397172313efbSmrg{
397272313efbSmrg  char *name = NULL;
397372313efbSmrg  char *value = NULL;
397472313efbSmrg  char *new_value = NULL;
3975bdcaa8d0Smrg
397672313efbSmrg  if (lt_split_name_value (arg, &name, &value) != 0)
397772313efbSmrg    {
397872313efbSmrg      XFREE (name);
397972313efbSmrg      XFREE (value);
398072313efbSmrg      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
398172313efbSmrg    }
3982bdcaa8d0Smrg
398372313efbSmrg  new_value = lt_extend_str (getenv (name), value, 1);
398472313efbSmrg  lt_setenv (name, new_value);
398572313efbSmrg  XFREE (new_value);
398672313efbSmrg  XFREE (name);
398772313efbSmrg  XFREE (value);
398872313efbSmrg}
3989bdcaa8d0Smrg
399072313efbSmrgvoid
399172313efbSmrglt_update_exe_path (const char *name, const char *value)
399272313efbSmrg{
399372313efbSmrg  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
399472313efbSmrg                          (name ? name : "<NULL>"),
399572313efbSmrg                          (value ? value : "<NULL>")));
3996bdcaa8d0Smrg
399772313efbSmrg  if (name && *name && value && *value)
399872313efbSmrg    {
399972313efbSmrg      char *new_value = lt_extend_str (getenv (name), value, 0);
400072313efbSmrg      /* some systems can't cope with a ':'-terminated path #' */
400172313efbSmrg      int len = strlen (new_value);
400272313efbSmrg      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
400372313efbSmrg        {
400472313efbSmrg          new_value[len-1] = '\0';
400572313efbSmrg        }
400672313efbSmrg      lt_setenv (name, new_value);
400772313efbSmrg      XFREE (new_value);
400872313efbSmrg    }
400972313efbSmrg}
4010bdcaa8d0Smrg
401172313efbSmrgvoid
401272313efbSmrglt_update_lib_path (const char *name, const char *value)
401372313efbSmrg{
401472313efbSmrg  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
401572313efbSmrg                          (name ? name : "<NULL>"),
401672313efbSmrg                          (value ? value : "<NULL>")));
4017bdcaa8d0Smrg
401872313efbSmrg  if (name && *name && value && *value)
401972313efbSmrg    {
402072313efbSmrg      char *new_value = lt_extend_str (getenv (name), value, 0);
402172313efbSmrg      lt_setenv (name, new_value);
402272313efbSmrg      XFREE (new_value);
402372313efbSmrg    }
402472313efbSmrg}
4025bdcaa8d0Smrg
4026bdcaa8d0Smrg
402772313efbSmrgEOF
402872313efbSmrg}
402972313efbSmrg# end: func_emit_cwrapperexe_src
4030bdcaa8d0Smrg
403172313efbSmrg# func_mode_link arg...
403272313efbSmrgfunc_mode_link ()
403372313efbSmrg{
403472313efbSmrg    $opt_debug
403572313efbSmrg    case $host in
403672313efbSmrg    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
403772313efbSmrg      # It is impossible to link a dll without this setting, and
403872313efbSmrg      # we shouldn't force the makefile maintainer to figure out
403972313efbSmrg      # which system we are compiling for in order to pass an extra
404072313efbSmrg      # flag for every libtool invocation.
404172313efbSmrg      # allow_undefined=no
4042bdcaa8d0Smrg
404372313efbSmrg      # FIXME: Unfortunately, there are problems with the above when trying
404472313efbSmrg      # to make a dll which has undefined symbols, in which case not
404572313efbSmrg      # even a static library is built.  For now, we need to specify
404672313efbSmrg      # -no-undefined on the libtool link line when we can be certain
404772313efbSmrg      # that all symbols are satisfied, otherwise we get a static library.
404872313efbSmrg      allow_undefined=yes
404972313efbSmrg      ;;
405072313efbSmrg    *)
405172313efbSmrg      allow_undefined=yes
405272313efbSmrg      ;;
405372313efbSmrg    esac
405472313efbSmrg    libtool_args=$nonopt
405572313efbSmrg    base_compile="$nonopt $@"
405672313efbSmrg    compile_command=$nonopt
405772313efbSmrg    finalize_command=$nonopt
4058bdcaa8d0Smrg
405972313efbSmrg    compile_rpath=
406072313efbSmrg    finalize_rpath=
406172313efbSmrg    compile_shlibpath=
406272313efbSmrg    finalize_shlibpath=
406372313efbSmrg    convenience=
406472313efbSmrg    old_convenience=
406572313efbSmrg    deplibs=
406672313efbSmrg    old_deplibs=
406772313efbSmrg    compiler_flags=
406872313efbSmrg    linker_flags=
406972313efbSmrg    dllsearchpath=
407072313efbSmrg    lib_search_path=`pwd`
407172313efbSmrg    inst_prefix_dir=
407272313efbSmrg    new_inherited_linker_flags=
4073bdcaa8d0Smrg
407472313efbSmrg    avoid_version=no
407572313efbSmrg    dlfiles=
407672313efbSmrg    dlprefiles=
407772313efbSmrg    dlself=no
407872313efbSmrg    export_dynamic=no
407972313efbSmrg    export_symbols=
408072313efbSmrg    export_symbols_regex=
408172313efbSmrg    generated=
408272313efbSmrg    libobjs=
408372313efbSmrg    ltlibs=
408472313efbSmrg    module=no
408572313efbSmrg    no_install=no
408672313efbSmrg    objs=
408772313efbSmrg    non_pic_objects=
408872313efbSmrg    precious_files_regex=
408972313efbSmrg    prefer_static_libs=no
409072313efbSmrg    preload=no
409172313efbSmrg    prev=
409272313efbSmrg    prevarg=
409372313efbSmrg    release=
409472313efbSmrg    rpath=
409572313efbSmrg    xrpath=
409672313efbSmrg    perm_rpath=
409772313efbSmrg    temp_rpath=
409872313efbSmrg    thread_safe=no
409972313efbSmrg    vinfo=
410072313efbSmrg    vinfo_number=no
410172313efbSmrg    weak_libs=
410272313efbSmrg    single_module="${wl}-single_module"
410372313efbSmrg    func_infer_tag $base_compile
4104bdcaa8d0Smrg
410572313efbSmrg    # We need to know -static, to get the right output filenames.
410672313efbSmrg    for arg
410772313efbSmrg    do
410872313efbSmrg      case $arg in
410972313efbSmrg      -shared)
411072313efbSmrg	test "$build_libtool_libs" != yes && \
411172313efbSmrg	  func_fatal_configuration "can not build a shared library"
411272313efbSmrg	build_old_libs=no
411372313efbSmrg	break
411472313efbSmrg	;;
411572313efbSmrg      -all-static | -static | -static-libtool-libs)
411672313efbSmrg	case $arg in
411772313efbSmrg	-all-static)
411872313efbSmrg	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
411972313efbSmrg	    func_warning "complete static linking is impossible in this configuration"
4120bdcaa8d0Smrg	  fi
412172313efbSmrg	  if test -n "$link_static_flag"; then
412272313efbSmrg	    dlopen_self=$dlopen_self_static
4123bdcaa8d0Smrg	  fi
412472313efbSmrg	  prefer_static_libs=yes
4125bdcaa8d0Smrg	  ;;
412672313efbSmrg	-static)
412772313efbSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
412872313efbSmrg	    dlopen_self=$dlopen_self_static
412972313efbSmrg	  fi
413072313efbSmrg	  prefer_static_libs=built
413172313efbSmrg	  ;;
413272313efbSmrg	-static-libtool-libs)
413372313efbSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
413472313efbSmrg	    dlopen_self=$dlopen_self_static
413572313efbSmrg	  fi
413672313efbSmrg	  prefer_static_libs=yes
4137bdcaa8d0Smrg	  ;;
4138bdcaa8d0Smrg	esac
413972313efbSmrg	build_libtool_libs=no
414072313efbSmrg	build_old_libs=yes
414172313efbSmrg	break
414272313efbSmrg	;;
414372313efbSmrg      esac
414472313efbSmrg    done
4145bdcaa8d0Smrg
414672313efbSmrg    # See if our shared archives depend on static archives.
414772313efbSmrg    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
4148bdcaa8d0Smrg
414972313efbSmrg    # Go through the arguments, transforming them on the way.
415072313efbSmrg    while test "$#" -gt 0; do
415172313efbSmrg      arg="$1"
415272313efbSmrg      shift
415372313efbSmrg      func_quote_for_eval "$arg"
415472313efbSmrg      qarg=$func_quote_for_eval_unquoted_result
415572313efbSmrg      func_append libtool_args " $func_quote_for_eval_result"
4156bdcaa8d0Smrg
415772313efbSmrg      # If the previous option needs an argument, assign it.
415872313efbSmrg      if test -n "$prev"; then
415972313efbSmrg	case $prev in
416072313efbSmrg	output)
416172313efbSmrg	  func_append compile_command " @OUTPUT@"
416272313efbSmrg	  func_append finalize_command " @OUTPUT@"
416372313efbSmrg	  ;;
416472313efbSmrg	esac
4165bdcaa8d0Smrg
416672313efbSmrg	case $prev in
416772313efbSmrg	dlfiles|dlprefiles)
416872313efbSmrg	  if test "$preload" = no; then
416972313efbSmrg	    # Add the symbol object into the linking commands.
417072313efbSmrg	    func_append compile_command " @SYMFILE@"
417172313efbSmrg	    func_append finalize_command " @SYMFILE@"
417272313efbSmrg	    preload=yes
417372313efbSmrg	  fi
417472313efbSmrg	  case $arg in
417572313efbSmrg	  *.la | *.lo) ;;  # We handle these cases below.
417672313efbSmrg	  force)
417772313efbSmrg	    if test "$dlself" = no; then
417872313efbSmrg	      dlself=needless
417972313efbSmrg	      export_dynamic=yes
418072313efbSmrg	    fi
418172313efbSmrg	    prev=
418272313efbSmrg	    continue
418372313efbSmrg	    ;;
418472313efbSmrg	  self)
418572313efbSmrg	    if test "$prev" = dlprefiles; then
418672313efbSmrg	      dlself=yes
418772313efbSmrg	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
418872313efbSmrg	      dlself=yes
418972313efbSmrg	    else
419072313efbSmrg	      dlself=needless
419172313efbSmrg	      export_dynamic=yes
419272313efbSmrg	    fi
419372313efbSmrg	    prev=
419472313efbSmrg	    continue
4195bdcaa8d0Smrg	    ;;
4196bdcaa8d0Smrg	  *)
419772313efbSmrg	    if test "$prev" = dlfiles; then
419872313efbSmrg	      dlfiles="$dlfiles $arg"
419972313efbSmrg	    else
420072313efbSmrg	      dlprefiles="$dlprefiles $arg"
420172313efbSmrg	    fi
420272313efbSmrg	    prev=
420372313efbSmrg	    continue
4204bdcaa8d0Smrg	    ;;
4205bdcaa8d0Smrg	  esac
420672313efbSmrg	  ;;
420772313efbSmrg	expsyms)
420872313efbSmrg	  export_symbols="$arg"
420972313efbSmrg	  test -f "$arg" \
421072313efbSmrg	    || func_fatal_error "symbol file \`$arg' does not exist"
421172313efbSmrg	  prev=
421272313efbSmrg	  continue
421372313efbSmrg	  ;;
421472313efbSmrg	expsyms_regex)
421572313efbSmrg	  export_symbols_regex="$arg"
421672313efbSmrg	  prev=
421772313efbSmrg	  continue
421872313efbSmrg	  ;;
421972313efbSmrg	framework)
422072313efbSmrg	  case $host in
422172313efbSmrg	    *-*-darwin*)
422272313efbSmrg	      case "$deplibs " in
422372313efbSmrg		*" $qarg.ltframework "*) ;;
422472313efbSmrg		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
422572313efbSmrg		   ;;
422672313efbSmrg	      esac
422772313efbSmrg	      ;;
422872313efbSmrg	  esac
422972313efbSmrg	  prev=
423072313efbSmrg	  continue
423172313efbSmrg	  ;;
423272313efbSmrg	inst_prefix)
423372313efbSmrg	  inst_prefix_dir="$arg"
423472313efbSmrg	  prev=
423572313efbSmrg	  continue
423672313efbSmrg	  ;;
423772313efbSmrg	objectlist)
423872313efbSmrg	  if test -f "$arg"; then
423972313efbSmrg	    save_arg=$arg
424072313efbSmrg	    moreargs=
424172313efbSmrg	    for fil in `cat "$save_arg"`
424272313efbSmrg	    do
424372313efbSmrg#	      moreargs="$moreargs $fil"
424472313efbSmrg	      arg=$fil
424572313efbSmrg	      # A libtool-controlled object.
4246bdcaa8d0Smrg
424772313efbSmrg	      # Check to see that this really is a libtool object.
424872313efbSmrg	      if func_lalib_unsafe_p "$arg"; then
424972313efbSmrg		pic_object=
425072313efbSmrg		non_pic_object=
4251bdcaa8d0Smrg
425272313efbSmrg		# Read the .lo file
425372313efbSmrg		func_source "$arg"
4254bdcaa8d0Smrg
425572313efbSmrg		if test -z "$pic_object" ||
425672313efbSmrg		   test -z "$non_pic_object" ||
425772313efbSmrg		   test "$pic_object" = none &&
425872313efbSmrg		   test "$non_pic_object" = none; then
425972313efbSmrg		  func_fatal_error "cannot find name of object for \`$arg'"
426072313efbSmrg		fi
4261bdcaa8d0Smrg
426272313efbSmrg		# Extract subdirectory from the argument.
426372313efbSmrg		func_dirname "$arg" "/" ""
426472313efbSmrg		xdir="$func_dirname_result"
4265bdcaa8d0Smrg
426672313efbSmrg		if test "$pic_object" != none; then
426772313efbSmrg		  # Prepend the subdirectory the object is found in.
426872313efbSmrg		  pic_object="$xdir$pic_object"
4269bdcaa8d0Smrg
427072313efbSmrg		  if test "$prev" = dlfiles; then
427172313efbSmrg		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
427272313efbSmrg		      dlfiles="$dlfiles $pic_object"
427372313efbSmrg		      prev=
427472313efbSmrg		      continue
427572313efbSmrg		    else
427672313efbSmrg		      # If libtool objects are unsupported, then we need to preload.
427772313efbSmrg		      prev=dlprefiles
427872313efbSmrg		    fi
427972313efbSmrg		  fi
4280bdcaa8d0Smrg
428172313efbSmrg		  # CHECK ME:  I think I busted this.  -Ossama
428272313efbSmrg		  if test "$prev" = dlprefiles; then
428372313efbSmrg		    # Preload the old-style object.
428472313efbSmrg		    dlprefiles="$dlprefiles $pic_object"
428572313efbSmrg		    prev=
428672313efbSmrg		  fi
4287bdcaa8d0Smrg
428872313efbSmrg		  # A PIC object.
428972313efbSmrg		  func_append libobjs " $pic_object"
429072313efbSmrg		  arg="$pic_object"
429172313efbSmrg		fi
4292bdcaa8d0Smrg
429372313efbSmrg		# Non-PIC object.
429472313efbSmrg		if test "$non_pic_object" != none; then
429572313efbSmrg		  # Prepend the subdirectory the object is found in.
429672313efbSmrg		  non_pic_object="$xdir$non_pic_object"
4297bdcaa8d0Smrg
429872313efbSmrg		  # A standard non-PIC object
429972313efbSmrg		  func_append non_pic_objects " $non_pic_object"
430072313efbSmrg		  if test -z "$pic_object" || test "$pic_object" = none ; then
430172313efbSmrg		    arg="$non_pic_object"
430272313efbSmrg		  fi
430372313efbSmrg		else
430472313efbSmrg		  # If the PIC object exists, use it instead.
430572313efbSmrg		  # $xdir was prepended to $pic_object above.
430672313efbSmrg		  non_pic_object="$pic_object"
430772313efbSmrg		  func_append non_pic_objects " $non_pic_object"
430872313efbSmrg		fi
430972313efbSmrg	      else
431072313efbSmrg		# Only an error if not doing a dry-run.
431172313efbSmrg		if $opt_dry_run; then
431272313efbSmrg		  # Extract subdirectory from the argument.
431372313efbSmrg		  func_dirname "$arg" "/" ""
431472313efbSmrg		  xdir="$func_dirname_result"
431572313efbSmrg
431672313efbSmrg		  func_lo2o "$arg"
431772313efbSmrg		  pic_object=$xdir$objdir/$func_lo2o_result
431872313efbSmrg		  non_pic_object=$xdir$func_lo2o_result
431972313efbSmrg		  func_append libobjs " $pic_object"
432072313efbSmrg		  func_append non_pic_objects " $non_pic_object"
432172313efbSmrg	        else
432272313efbSmrg		  func_fatal_error "\`$arg' is not a valid libtool object"
432372313efbSmrg		fi
432472313efbSmrg	      fi
432572313efbSmrg	    done
432672313efbSmrg	  else
432772313efbSmrg	    func_fatal_error "link input file \`$arg' does not exist"
432872313efbSmrg	  fi
432972313efbSmrg	  arg=$save_arg
433072313efbSmrg	  prev=
433172313efbSmrg	  continue
433272313efbSmrg	  ;;
433372313efbSmrg	precious_regex)
433472313efbSmrg	  precious_files_regex="$arg"
433572313efbSmrg	  prev=
433672313efbSmrg	  continue
433772313efbSmrg	  ;;
433872313efbSmrg	release)
433972313efbSmrg	  release="-$arg"
434072313efbSmrg	  prev=
434172313efbSmrg	  continue
434272313efbSmrg	  ;;
434372313efbSmrg	rpath | xrpath)
434472313efbSmrg	  # We need an absolute path.
434572313efbSmrg	  case $arg in
434672313efbSmrg	  [\\/]* | [A-Za-z]:[\\/]*) ;;
434772313efbSmrg	  *)
434872313efbSmrg	    func_fatal_error "only absolute run-paths are allowed"
434972313efbSmrg	    ;;
435072313efbSmrg	  esac
435172313efbSmrg	  if test "$prev" = rpath; then
435272313efbSmrg	    case "$rpath " in
435372313efbSmrg	    *" $arg "*) ;;
435472313efbSmrg	    *) rpath="$rpath $arg" ;;
435572313efbSmrg	    esac
435672313efbSmrg	  else
435772313efbSmrg	    case "$xrpath " in
435872313efbSmrg	    *" $arg "*) ;;
435972313efbSmrg	    *) xrpath="$xrpath $arg" ;;
436072313efbSmrg	    esac
436172313efbSmrg	  fi
436272313efbSmrg	  prev=
436372313efbSmrg	  continue
436472313efbSmrg	  ;;
436572313efbSmrg	shrext)
436672313efbSmrg	  shrext_cmds="$arg"
436772313efbSmrg	  prev=
436872313efbSmrg	  continue
436972313efbSmrg	  ;;
437072313efbSmrg	weak)
437172313efbSmrg	  weak_libs="$weak_libs $arg"
437272313efbSmrg	  prev=
437372313efbSmrg	  continue
437472313efbSmrg	  ;;
437572313efbSmrg	xcclinker)
437672313efbSmrg	  linker_flags="$linker_flags $qarg"
437772313efbSmrg	  compiler_flags="$compiler_flags $qarg"
437872313efbSmrg	  prev=
437972313efbSmrg	  func_append compile_command " $qarg"
438072313efbSmrg	  func_append finalize_command " $qarg"
438172313efbSmrg	  continue
438272313efbSmrg	  ;;
438372313efbSmrg	xcompiler)
438472313efbSmrg	  compiler_flags="$compiler_flags $qarg"
438572313efbSmrg	  prev=
438672313efbSmrg	  func_append compile_command " $qarg"
438772313efbSmrg	  func_append finalize_command " $qarg"
438872313efbSmrg	  continue
438972313efbSmrg	  ;;
439072313efbSmrg	xlinker)
439172313efbSmrg	  linker_flags="$linker_flags $qarg"
439272313efbSmrg	  compiler_flags="$compiler_flags $wl$qarg"
439372313efbSmrg	  prev=
439472313efbSmrg	  func_append compile_command " $wl$qarg"
439572313efbSmrg	  func_append finalize_command " $wl$qarg"
439672313efbSmrg	  continue
439772313efbSmrg	  ;;
439872313efbSmrg	*)
439972313efbSmrg	  eval "$prev=\"\$arg\""
440072313efbSmrg	  prev=
440172313efbSmrg	  continue
440272313efbSmrg	  ;;
4403bdcaa8d0Smrg	esac
440472313efbSmrg      fi # test -n "$prev"
4405bdcaa8d0Smrg
440672313efbSmrg      prevarg="$arg"
4407bdcaa8d0Smrg
440872313efbSmrg      case $arg in
440972313efbSmrg      -all-static)
441072313efbSmrg	if test -n "$link_static_flag"; then
441172313efbSmrg	  # See comment for -static flag below, for more details.
441272313efbSmrg	  func_append compile_command " $link_static_flag"
441372313efbSmrg	  func_append finalize_command " $link_static_flag"
441472313efbSmrg	fi
441572313efbSmrg	continue
441672313efbSmrg	;;
4417bdcaa8d0Smrg
441872313efbSmrg      -allow-undefined)
441972313efbSmrg	# FIXME: remove this flag sometime in the future.
442072313efbSmrg	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
442172313efbSmrg	;;
4422bdcaa8d0Smrg
442372313efbSmrg      -avoid-version)
442472313efbSmrg	avoid_version=yes
442572313efbSmrg	continue
442672313efbSmrg	;;
4427bdcaa8d0Smrg
442872313efbSmrg      -dlopen)
442972313efbSmrg	prev=dlfiles
443072313efbSmrg	continue
443172313efbSmrg	;;
4432bdcaa8d0Smrg
443372313efbSmrg      -dlpreopen)
443472313efbSmrg	prev=dlprefiles
443572313efbSmrg	continue
443672313efbSmrg	;;
4437bdcaa8d0Smrg
443872313efbSmrg      -export-dynamic)
443972313efbSmrg	export_dynamic=yes
444072313efbSmrg	continue
444172313efbSmrg	;;
4442bdcaa8d0Smrg
444372313efbSmrg      -export-symbols | -export-symbols-regex)
444472313efbSmrg	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
444572313efbSmrg	  func_fatal_error "more than one -exported-symbols argument is not allowed"
444672313efbSmrg	fi
444772313efbSmrg	if test "X$arg" = "X-export-symbols"; then
444872313efbSmrg	  prev=expsyms
444972313efbSmrg	else
445072313efbSmrg	  prev=expsyms_regex
445172313efbSmrg	fi
445272313efbSmrg	continue
445372313efbSmrg	;;
4454bdcaa8d0Smrg
445572313efbSmrg      -framework)
445672313efbSmrg	prev=framework
445772313efbSmrg	continue
445872313efbSmrg	;;
4459bdcaa8d0Smrg
446072313efbSmrg      -inst-prefix-dir)
446172313efbSmrg	prev=inst_prefix
446272313efbSmrg	continue
446372313efbSmrg	;;
4464bdcaa8d0Smrg
446572313efbSmrg      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
446672313efbSmrg      # so, if we see these flags be careful not to treat them like -L
446772313efbSmrg      -L[A-Z][A-Z]*:*)
446872313efbSmrg	case $with_gcc/$host in
446972313efbSmrg	no/*-*-irix* | /*-*-irix*)
447072313efbSmrg	  func_append compile_command " $arg"
447172313efbSmrg	  func_append finalize_command " $arg"
447272313efbSmrg	  ;;
447372313efbSmrg	esac
447472313efbSmrg	continue
447572313efbSmrg	;;
4476bdcaa8d0Smrg
447772313efbSmrg      -L*)
447872313efbSmrg	func_stripname '-L' '' "$arg"
447972313efbSmrg	dir=$func_stripname_result
448072313efbSmrg	if test -z "$dir"; then
448172313efbSmrg	  if test "$#" -gt 0; then
448272313efbSmrg	    func_fatal_error "require no space between \`-L' and \`$1'"
448372313efbSmrg	  else
448472313efbSmrg	    func_fatal_error "need path for \`-L' option"
448572313efbSmrg	  fi
448672313efbSmrg	fi
448772313efbSmrg	# We need an absolute path.
448872313efbSmrg	case $dir in
448972313efbSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
449072313efbSmrg	*)
449172313efbSmrg	  absdir=`cd "$dir" && pwd`
449272313efbSmrg	  test -z "$absdir" && \
449372313efbSmrg	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
449472313efbSmrg	  dir="$absdir"
449572313efbSmrg	  ;;
449672313efbSmrg	esac
449772313efbSmrg	case "$deplibs " in
449872313efbSmrg	*" -L$dir "*) ;;
449972313efbSmrg	*)
450072313efbSmrg	  deplibs="$deplibs -L$dir"
450172313efbSmrg	  lib_search_path="$lib_search_path $dir"
450272313efbSmrg	  ;;
450372313efbSmrg	esac
450472313efbSmrg	case $host in
450572313efbSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
450672313efbSmrg	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
450772313efbSmrg	  case :$dllsearchpath: in
450872313efbSmrg	  *":$dir:"*) ;;
450972313efbSmrg	  ::) dllsearchpath=$dir;;
451072313efbSmrg	  *) dllsearchpath="$dllsearchpath:$dir";;
451172313efbSmrg	  esac
451272313efbSmrg	  case :$dllsearchpath: in
451372313efbSmrg	  *":$testbindir:"*) ;;
451472313efbSmrg	  ::) dllsearchpath=$testbindir;;
451572313efbSmrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
451672313efbSmrg	  esac
451772313efbSmrg	  ;;
451872313efbSmrg	esac
451972313efbSmrg	continue
452072313efbSmrg	;;
4521bdcaa8d0Smrg
452272313efbSmrg      -l*)
452372313efbSmrg	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
452472313efbSmrg	  case $host in
452572313efbSmrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
452672313efbSmrg	    # These systems don't actually have a C or math library (as such)
452772313efbSmrg	    continue
452872313efbSmrg	    ;;
452972313efbSmrg	  *-*-os2*)
453072313efbSmrg	    # These systems don't actually have a C library (as such)
453172313efbSmrg	    test "X$arg" = "X-lc" && continue
453272313efbSmrg	    ;;
453372313efbSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
453472313efbSmrg	    # Do not include libc due to us having libc/libc_r.
453572313efbSmrg	    test "X$arg" = "X-lc" && continue
453672313efbSmrg	    ;;
453772313efbSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
453872313efbSmrg	    # Rhapsody C and math libraries are in the System framework
453972313efbSmrg	    deplibs="$deplibs System.ltframework"
454072313efbSmrg	    continue
454172313efbSmrg	    ;;
454272313efbSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
454372313efbSmrg	    # Causes problems with __ctype
454472313efbSmrg	    test "X$arg" = "X-lc" && continue
454572313efbSmrg	    ;;
454672313efbSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
454772313efbSmrg	    # Compiler inserts libc in the correct place for threads to work
454872313efbSmrg	    test "X$arg" = "X-lc" && continue
454972313efbSmrg	    ;;
455072313efbSmrg	  esac
455172313efbSmrg	elif test "X$arg" = "X-lc_r"; then
455272313efbSmrg	 case $host in
455372313efbSmrg	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
455472313efbSmrg	   # Do not include libc_r directly, use -pthread flag.
455572313efbSmrg	   continue
455672313efbSmrg	   ;;
455772313efbSmrg	 esac
455872313efbSmrg	fi
455972313efbSmrg	deplibs="$deplibs $arg"
456072313efbSmrg	continue
456172313efbSmrg	;;
4562bdcaa8d0Smrg
456372313efbSmrg      -module)
456472313efbSmrg	module=yes
456572313efbSmrg	continue
456672313efbSmrg	;;
4567bdcaa8d0Smrg
456872313efbSmrg      # Tru64 UNIX uses -model [arg] to determine the layout of C++
456972313efbSmrg      # classes, name mangling, and exception handling.
457072313efbSmrg      # Darwin uses the -arch flag to determine output architecture.
457172313efbSmrg      -model|-arch|-isysroot)
457272313efbSmrg	compiler_flags="$compiler_flags $arg"
457372313efbSmrg	func_append compile_command " $arg"
457472313efbSmrg	func_append finalize_command " $arg"
457572313efbSmrg	prev=xcompiler
457672313efbSmrg	continue
457772313efbSmrg	;;
4578bdcaa8d0Smrg
457972313efbSmrg      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
458072313efbSmrg	compiler_flags="$compiler_flags $arg"
458172313efbSmrg	func_append compile_command " $arg"
458272313efbSmrg	func_append finalize_command " $arg"
458372313efbSmrg	case "$new_inherited_linker_flags " in
458472313efbSmrg	    *" $arg "*) ;;
458572313efbSmrg	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
458672313efbSmrg	esac
458772313efbSmrg	continue
458872313efbSmrg	;;
4589bdcaa8d0Smrg
459072313efbSmrg      -multi_module)
459172313efbSmrg	single_module="${wl}-multi_module"
459272313efbSmrg	continue
459372313efbSmrg	;;
4594bdcaa8d0Smrg
459572313efbSmrg      -no-fast-install)
459672313efbSmrg	fast_install=no
459772313efbSmrg	continue
459872313efbSmrg	;;
4599bdcaa8d0Smrg
460072313efbSmrg      -no-install)
460172313efbSmrg	case $host in
460272313efbSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
460372313efbSmrg	  # The PATH hackery in wrapper scripts is required on Windows
460472313efbSmrg	  # and Darwin in order for the loader to find any dlls it needs.
460572313efbSmrg	  func_warning "\`-no-install' is ignored for $host"
460672313efbSmrg	  func_warning "assuming \`-no-fast-install' instead"
460772313efbSmrg	  fast_install=no
460872313efbSmrg	  ;;
460972313efbSmrg	*) no_install=yes ;;
461072313efbSmrg	esac
461172313efbSmrg	continue
461272313efbSmrg	;;
4613bdcaa8d0Smrg
461472313efbSmrg      -no-undefined)
461572313efbSmrg	allow_undefined=no
461672313efbSmrg	continue
461772313efbSmrg	;;
4618bdcaa8d0Smrg
461972313efbSmrg      -objectlist)
462072313efbSmrg	prev=objectlist
462172313efbSmrg	continue
462272313efbSmrg	;;
4623bdcaa8d0Smrg
462472313efbSmrg      -o) prev=output ;;
4625bdcaa8d0Smrg
462672313efbSmrg      -precious-files-regex)
462772313efbSmrg	prev=precious_regex
462872313efbSmrg	continue
462972313efbSmrg	;;
4630bdcaa8d0Smrg
463172313efbSmrg      -release)
463272313efbSmrg	prev=release
463372313efbSmrg	continue
463472313efbSmrg	;;
4635bdcaa8d0Smrg
463672313efbSmrg      -rpath)
463772313efbSmrg	prev=rpath
463872313efbSmrg	continue
463972313efbSmrg	;;
4640bdcaa8d0Smrg
464172313efbSmrg      -R)
464272313efbSmrg	prev=xrpath
464372313efbSmrg	continue
464472313efbSmrg	;;
4645bdcaa8d0Smrg
464672313efbSmrg      -R*)
464772313efbSmrg	func_stripname '-R' '' "$arg"
464872313efbSmrg	dir=$func_stripname_result
464972313efbSmrg	# We need an absolute path.
465072313efbSmrg	case $dir in
465172313efbSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
465272313efbSmrg	*)
465372313efbSmrg	  func_fatal_error "only absolute run-paths are allowed"
465472313efbSmrg	  ;;
465572313efbSmrg	esac
465672313efbSmrg	case "$xrpath " in
465772313efbSmrg	*" $dir "*) ;;
465872313efbSmrg	*) xrpath="$xrpath $dir" ;;
465972313efbSmrg	esac
466072313efbSmrg	continue
466172313efbSmrg	;;
4662bdcaa8d0Smrg
466372313efbSmrg      -shared)
466472313efbSmrg	# The effects of -shared are defined in a previous loop.
466572313efbSmrg	continue
466672313efbSmrg	;;
4667bdcaa8d0Smrg
466872313efbSmrg      -shrext)
466972313efbSmrg	prev=shrext
467072313efbSmrg	continue
467172313efbSmrg	;;
4672bdcaa8d0Smrg
467372313efbSmrg      -static | -static-libtool-libs)
467472313efbSmrg	# The effects of -static are defined in a previous loop.
467572313efbSmrg	# We used to do the same as -all-static on platforms that
467672313efbSmrg	# didn't have a PIC flag, but the assumption that the effects
467772313efbSmrg	# would be equivalent was wrong.  It would break on at least
467872313efbSmrg	# Digital Unix and AIX.
467972313efbSmrg	continue
468072313efbSmrg	;;
4681bdcaa8d0Smrg
468272313efbSmrg      -thread-safe)
468372313efbSmrg	thread_safe=yes
468472313efbSmrg	continue
468572313efbSmrg	;;
4686bdcaa8d0Smrg
468772313efbSmrg      -version-info)
468872313efbSmrg	prev=vinfo
468972313efbSmrg	continue
469072313efbSmrg	;;
4691bdcaa8d0Smrg
469272313efbSmrg      -version-number)
469372313efbSmrg	prev=vinfo
469472313efbSmrg	vinfo_number=yes
469572313efbSmrg	continue
469672313efbSmrg	;;
4697bdcaa8d0Smrg
469872313efbSmrg      -weak)
469972313efbSmrg        prev=weak
470072313efbSmrg	continue
470172313efbSmrg	;;
4702bdcaa8d0Smrg
470372313efbSmrg      -Wc,*)
470472313efbSmrg	func_stripname '-Wc,' '' "$arg"
470572313efbSmrg	args=$func_stripname_result
470672313efbSmrg	arg=
470772313efbSmrg	save_ifs="$IFS"; IFS=','
470872313efbSmrg	for flag in $args; do
470972313efbSmrg	  IFS="$save_ifs"
471072313efbSmrg          func_quote_for_eval "$flag"
471172313efbSmrg	  arg="$arg $wl$func_quote_for_eval_result"
471272313efbSmrg	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
471372313efbSmrg	done
471472313efbSmrg	IFS="$save_ifs"
471572313efbSmrg	func_stripname ' ' '' "$arg"
471672313efbSmrg	arg=$func_stripname_result
471772313efbSmrg	;;
4718bdcaa8d0Smrg
471972313efbSmrg      -Wl,*)
472072313efbSmrg	func_stripname '-Wl,' '' "$arg"
472172313efbSmrg	args=$func_stripname_result
472272313efbSmrg	arg=
472372313efbSmrg	save_ifs="$IFS"; IFS=','
472472313efbSmrg	for flag in $args; do
472572313efbSmrg	  IFS="$save_ifs"
472672313efbSmrg          func_quote_for_eval "$flag"
472772313efbSmrg	  arg="$arg $wl$func_quote_for_eval_result"
472872313efbSmrg	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
472972313efbSmrg	  linker_flags="$linker_flags $func_quote_for_eval_result"
473072313efbSmrg	done
473172313efbSmrg	IFS="$save_ifs"
473272313efbSmrg	func_stripname ' ' '' "$arg"
473372313efbSmrg	arg=$func_stripname_result
473472313efbSmrg	;;
4735bdcaa8d0Smrg
473672313efbSmrg      -Xcompiler)
473772313efbSmrg	prev=xcompiler
473872313efbSmrg	continue
473972313efbSmrg	;;
4740bdcaa8d0Smrg
474172313efbSmrg      -Xlinker)
474272313efbSmrg	prev=xlinker
474372313efbSmrg	continue
474472313efbSmrg	;;
4745bdcaa8d0Smrg
474672313efbSmrg      -XCClinker)
474772313efbSmrg	prev=xcclinker
474872313efbSmrg	continue
474972313efbSmrg	;;
4750bdcaa8d0Smrg
475172313efbSmrg      # -msg_* for osf cc
475272313efbSmrg      -msg_*)
475372313efbSmrg	func_quote_for_eval "$arg"
475472313efbSmrg	arg="$func_quote_for_eval_result"
475572313efbSmrg	;;
4756bdcaa8d0Smrg
475772313efbSmrg      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
475872313efbSmrg      # -r[0-9][0-9]* specifies the processor on the SGI compiler
475972313efbSmrg      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
476072313efbSmrg      # +DA*, +DD* enable 64-bit mode on the HP compiler
476172313efbSmrg      # -q* pass through compiler args for the IBM compiler
476272313efbSmrg      # -m*, -t[45]*, -txscale* pass through architecture-specific
476372313efbSmrg      # compiler args for GCC
476472313efbSmrg      # -F/path gives path to uninstalled frameworks, gcc on darwin
476572313efbSmrg      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
476672313efbSmrg      # @file GCC response files
476772313efbSmrg      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
476872313efbSmrg      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
476972313efbSmrg        func_quote_for_eval "$arg"
477072313efbSmrg	arg="$func_quote_for_eval_result"
477172313efbSmrg        func_append compile_command " $arg"
477272313efbSmrg        func_append finalize_command " $arg"
477372313efbSmrg        compiler_flags="$compiler_flags $arg"
477472313efbSmrg        continue
477572313efbSmrg        ;;
4776bdcaa8d0Smrg
477772313efbSmrg      # Some other compiler flag.
477872313efbSmrg      -* | +*)
477972313efbSmrg        func_quote_for_eval "$arg"
478072313efbSmrg	arg="$func_quote_for_eval_result"
478172313efbSmrg	;;
4782bdcaa8d0Smrg
478372313efbSmrg      *.$objext)
478472313efbSmrg	# A standard object.
478572313efbSmrg	objs="$objs $arg"
478672313efbSmrg	;;
4787bdcaa8d0Smrg
478872313efbSmrg      *.lo)
478972313efbSmrg	# A libtool-controlled object.
4790bdcaa8d0Smrg
479172313efbSmrg	# Check to see that this really is a libtool object.
479272313efbSmrg	if func_lalib_unsafe_p "$arg"; then
479372313efbSmrg	  pic_object=
479472313efbSmrg	  non_pic_object=
479572313efbSmrg
479672313efbSmrg	  # Read the .lo file
479772313efbSmrg	  func_source "$arg"
479872313efbSmrg
479972313efbSmrg	  if test -z "$pic_object" ||
480072313efbSmrg	     test -z "$non_pic_object" ||
480172313efbSmrg	     test "$pic_object" = none &&
480272313efbSmrg	     test "$non_pic_object" = none; then
480372313efbSmrg	    func_fatal_error "cannot find name of object for \`$arg'"
480472313efbSmrg	  fi
480572313efbSmrg
480672313efbSmrg	  # Extract subdirectory from the argument.
480772313efbSmrg	  func_dirname "$arg" "/" ""
480872313efbSmrg	  xdir="$func_dirname_result"
480972313efbSmrg
481072313efbSmrg	  if test "$pic_object" != none; then
481172313efbSmrg	    # Prepend the subdirectory the object is found in.
481272313efbSmrg	    pic_object="$xdir$pic_object"
481372313efbSmrg
481472313efbSmrg	    if test "$prev" = dlfiles; then
481572313efbSmrg	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
481672313efbSmrg		dlfiles="$dlfiles $pic_object"
481772313efbSmrg		prev=
481872313efbSmrg		continue
481972313efbSmrg	      else
482072313efbSmrg		# If libtool objects are unsupported, then we need to preload.
482172313efbSmrg		prev=dlprefiles
482272313efbSmrg	      fi
482372313efbSmrg	    fi
482472313efbSmrg
482572313efbSmrg	    # CHECK ME:  I think I busted this.  -Ossama
482672313efbSmrg	    if test "$prev" = dlprefiles; then
482772313efbSmrg	      # Preload the old-style object.
482872313efbSmrg	      dlprefiles="$dlprefiles $pic_object"
482972313efbSmrg	      prev=
483072313efbSmrg	    fi
483172313efbSmrg
483272313efbSmrg	    # A PIC object.
483372313efbSmrg	    func_append libobjs " $pic_object"
483472313efbSmrg	    arg="$pic_object"
483572313efbSmrg	  fi
483672313efbSmrg
483772313efbSmrg	  # Non-PIC object.
483872313efbSmrg	  if test "$non_pic_object" != none; then
483972313efbSmrg	    # Prepend the subdirectory the object is found in.
484072313efbSmrg	    non_pic_object="$xdir$non_pic_object"
484172313efbSmrg
484272313efbSmrg	    # A standard non-PIC object
484372313efbSmrg	    func_append non_pic_objects " $non_pic_object"
484472313efbSmrg	    if test -z "$pic_object" || test "$pic_object" = none ; then
484572313efbSmrg	      arg="$non_pic_object"
484672313efbSmrg	    fi
484772313efbSmrg	  else
484872313efbSmrg	    # If the PIC object exists, use it instead.
484972313efbSmrg	    # $xdir was prepended to $pic_object above.
485072313efbSmrg	    non_pic_object="$pic_object"
485172313efbSmrg	    func_append non_pic_objects " $non_pic_object"
485272313efbSmrg	  fi
485372313efbSmrg	else
485472313efbSmrg	  # Only an error if not doing a dry-run.
485572313efbSmrg	  if $opt_dry_run; then
485672313efbSmrg	    # Extract subdirectory from the argument.
485772313efbSmrg	    func_dirname "$arg" "/" ""
485872313efbSmrg	    xdir="$func_dirname_result"
485972313efbSmrg
486072313efbSmrg	    func_lo2o "$arg"
486172313efbSmrg	    pic_object=$xdir$objdir/$func_lo2o_result
486272313efbSmrg	    non_pic_object=$xdir$func_lo2o_result
486372313efbSmrg	    func_append libobjs " $pic_object"
486472313efbSmrg	    func_append non_pic_objects " $non_pic_object"
486572313efbSmrg	  else
486672313efbSmrg	    func_fatal_error "\`$arg' is not a valid libtool object"
486772313efbSmrg	  fi
486872313efbSmrg	fi
486972313efbSmrg	;;
487072313efbSmrg
487172313efbSmrg      *.$libext)
487272313efbSmrg	# An archive.
487372313efbSmrg	deplibs="$deplibs $arg"
487472313efbSmrg	old_deplibs="$old_deplibs $arg"
487572313efbSmrg	continue
487672313efbSmrg	;;
487772313efbSmrg
487872313efbSmrg      *.la)
487972313efbSmrg	# A libtool-controlled library.
488072313efbSmrg
488172313efbSmrg	if test "$prev" = dlfiles; then
488272313efbSmrg	  # This library was specified with -dlopen.
488372313efbSmrg	  dlfiles="$dlfiles $arg"
488472313efbSmrg	  prev=
488572313efbSmrg	elif test "$prev" = dlprefiles; then
488672313efbSmrg	  # The library was specified with -dlpreopen.
488772313efbSmrg	  dlprefiles="$dlprefiles $arg"
488872313efbSmrg	  prev=
488972313efbSmrg	else
489072313efbSmrg	  deplibs="$deplibs $arg"
489172313efbSmrg	fi
489272313efbSmrg	continue
489372313efbSmrg	;;
489472313efbSmrg
489572313efbSmrg      # Some other compiler argument.
489672313efbSmrg      *)
489772313efbSmrg	# Unknown arguments in both finalize_command and compile_command need
489872313efbSmrg	# to be aesthetically quoted because they are evaled later.
489972313efbSmrg	func_quote_for_eval "$arg"
490072313efbSmrg	arg="$func_quote_for_eval_result"
490172313efbSmrg	;;
490272313efbSmrg      esac # arg
490372313efbSmrg
490472313efbSmrg      # Now actually substitute the argument into the commands.
490572313efbSmrg      if test -n "$arg"; then
490672313efbSmrg	func_append compile_command " $arg"
490772313efbSmrg	func_append finalize_command " $arg"
490872313efbSmrg      fi
490972313efbSmrg    done # argument parsing loop
491072313efbSmrg
491172313efbSmrg    test -n "$prev" && \
491272313efbSmrg      func_fatal_help "the \`$prevarg' option requires an argument"
491372313efbSmrg
491472313efbSmrg    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
491572313efbSmrg      eval arg=\"$export_dynamic_flag_spec\"
491672313efbSmrg      func_append compile_command " $arg"
491772313efbSmrg      func_append finalize_command " $arg"
491872313efbSmrg    fi
491972313efbSmrg
492072313efbSmrg    oldlibs=
492172313efbSmrg    # calculate the name of the file, without its directory
492272313efbSmrg    func_basename "$output"
492372313efbSmrg    outputname="$func_basename_result"
492472313efbSmrg    libobjs_save="$libobjs"
492572313efbSmrg
492672313efbSmrg    if test -n "$shlibpath_var"; then
492772313efbSmrg      # get the directories listed in $shlibpath_var
492872313efbSmrg      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
4929bdcaa8d0Smrg    else
493072313efbSmrg      shlib_search_path=
4931bdcaa8d0Smrg    fi
493272313efbSmrg    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
493372313efbSmrg    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
4934bdcaa8d0Smrg
493572313efbSmrg    func_dirname "$output" "/" ""
493672313efbSmrg    output_objdir="$func_dirname_result$objdir"
493772313efbSmrg    # Create the object directory.
493872313efbSmrg    func_mkdir_p "$output_objdir"
4939bdcaa8d0Smrg
494072313efbSmrg    # Determine the type of output
494172313efbSmrg    case $output in
494272313efbSmrg    "")
494372313efbSmrg      func_fatal_help "you must specify an output file"
494472313efbSmrg      ;;
494572313efbSmrg    *.$libext) linkmode=oldlib ;;
494672313efbSmrg    *.lo | *.$objext) linkmode=obj ;;
494772313efbSmrg    *.la) linkmode=lib ;;
494872313efbSmrg    *) linkmode=prog ;; # Anything else should be a program.
494972313efbSmrg    esac
495072313efbSmrg
495172313efbSmrg    specialdeplibs=
495272313efbSmrg
495372313efbSmrg    libs=
495472313efbSmrg    # Find all interdependent deplibs by searching for libraries
495572313efbSmrg    # that are linked more than once (e.g. -la -lb -la)
495672313efbSmrg    for deplib in $deplibs; do
495772313efbSmrg      if $opt_duplicate_deps ; then
495872313efbSmrg	case "$libs " in
495972313efbSmrg	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
496072313efbSmrg	esac
496172313efbSmrg      fi
496272313efbSmrg      libs="$libs $deplib"
496372313efbSmrg    done
496472313efbSmrg
496572313efbSmrg    if test "$linkmode" = lib; then
496672313efbSmrg      libs="$predeps $libs $compiler_lib_search_path $postdeps"
496772313efbSmrg
496872313efbSmrg      # Compute libraries that are listed more than once in $predeps
496972313efbSmrg      # $postdeps and mark them as special (i.e., whose duplicates are
497072313efbSmrg      # not to be eliminated).
497172313efbSmrg      pre_post_deps=
497272313efbSmrg      if $opt_duplicate_compiler_generated_deps; then
497372313efbSmrg	for pre_post_dep in $predeps $postdeps; do
497472313efbSmrg	  case "$pre_post_deps " in
497572313efbSmrg	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
497672313efbSmrg	  esac
497772313efbSmrg	  pre_post_deps="$pre_post_deps $pre_post_dep"
497872313efbSmrg	done
497972313efbSmrg      fi
498072313efbSmrg      pre_post_deps=
498172313efbSmrg    fi
498272313efbSmrg
498372313efbSmrg    deplibs=
498472313efbSmrg    newdependency_libs=
498572313efbSmrg    newlib_search_path=
498672313efbSmrg    need_relink=no # whether we're linking any uninstalled libtool libraries
498772313efbSmrg    notinst_deplibs= # not-installed libtool libraries
498872313efbSmrg    notinst_path= # paths that contain not-installed libtool libraries
498972313efbSmrg
499072313efbSmrg    case $linkmode in
499172313efbSmrg    lib)
499272313efbSmrg	passes="conv dlpreopen link"
499372313efbSmrg	for file in $dlfiles $dlprefiles; do
499472313efbSmrg	  case $file in
499572313efbSmrg	  *.la) ;;
499672313efbSmrg	  *)
499772313efbSmrg	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
499872313efbSmrg	    ;;
499972313efbSmrg	  esac
500072313efbSmrg	done
500172313efbSmrg	;;
500272313efbSmrg    prog)
500372313efbSmrg	compile_deplibs=
500472313efbSmrg	finalize_deplibs=
500572313efbSmrg	alldeplibs=no
500672313efbSmrg	newdlfiles=
500772313efbSmrg	newdlprefiles=
500872313efbSmrg	passes="conv scan dlopen dlpreopen link"
500972313efbSmrg	;;
501072313efbSmrg    *)  passes="conv"
501172313efbSmrg	;;
501272313efbSmrg    esac
501372313efbSmrg
501472313efbSmrg    for pass in $passes; do
501572313efbSmrg      # The preopen pass in lib mode reverses $deplibs; put it back here
501672313efbSmrg      # so that -L comes before libs that need it for instance...
501772313efbSmrg      if test "$linkmode,$pass" = "lib,link"; then
501872313efbSmrg	## FIXME: Find the place where the list is rebuilt in the wrong
501972313efbSmrg	##        order, and fix it there properly
502072313efbSmrg        tmp_deplibs=
502172313efbSmrg	for deplib in $deplibs; do
502272313efbSmrg	  tmp_deplibs="$deplib $tmp_deplibs"
502372313efbSmrg	done
502472313efbSmrg	deplibs="$tmp_deplibs"
502572313efbSmrg      fi
502672313efbSmrg
502772313efbSmrg      if test "$linkmode,$pass" = "lib,link" ||
502872313efbSmrg	 test "$linkmode,$pass" = "prog,scan"; then
502972313efbSmrg	libs="$deplibs"
503072313efbSmrg	deplibs=
503172313efbSmrg      fi
503272313efbSmrg      if test "$linkmode" = prog; then
503372313efbSmrg	case $pass in
503472313efbSmrg	dlopen) libs="$dlfiles" ;;
503572313efbSmrg	dlpreopen) libs="$dlprefiles" ;;
503672313efbSmrg	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
503772313efbSmrg	esac
503872313efbSmrg      fi
503972313efbSmrg      if test "$linkmode,$pass" = "lib,dlpreopen"; then
504072313efbSmrg	# Collect and forward deplibs of preopened libtool libs
504172313efbSmrg	for lib in $dlprefiles; do
504272313efbSmrg	  # Ignore non-libtool-libs
504372313efbSmrg	  dependency_libs=
504472313efbSmrg	  case $lib in
504572313efbSmrg	  *.la)	func_source "$lib" ;;
504672313efbSmrg	  esac
504772313efbSmrg
504872313efbSmrg	  # Collect preopened libtool deplibs, except any this library
504972313efbSmrg	  # has declared as weak libs
505072313efbSmrg	  for deplib in $dependency_libs; do
505172313efbSmrg            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
505272313efbSmrg	    case " $weak_libs " in
505372313efbSmrg	    *" $deplib_base "*) ;;
505472313efbSmrg	    *) deplibs="$deplibs $deplib" ;;
505572313efbSmrg	    esac
505672313efbSmrg	  done
505772313efbSmrg	done
505872313efbSmrg	libs="$dlprefiles"
505972313efbSmrg      fi
506072313efbSmrg      if test "$pass" = dlopen; then
506172313efbSmrg	# Collect dlpreopened libraries
506272313efbSmrg	save_deplibs="$deplibs"
506372313efbSmrg	deplibs=
506472313efbSmrg      fi
506572313efbSmrg
506672313efbSmrg      for deplib in $libs; do
506772313efbSmrg	lib=
506872313efbSmrg	found=no
506972313efbSmrg	case $deplib in
507072313efbSmrg	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
507172313efbSmrg	  if test "$linkmode,$pass" = "prog,link"; then
507272313efbSmrg	    compile_deplibs="$deplib $compile_deplibs"
507372313efbSmrg	    finalize_deplibs="$deplib $finalize_deplibs"
507472313efbSmrg	  else
507572313efbSmrg	    compiler_flags="$compiler_flags $deplib"
507672313efbSmrg	    if test "$linkmode" = lib ; then
507772313efbSmrg		case "$new_inherited_linker_flags " in
507872313efbSmrg		    *" $deplib "*) ;;
507972313efbSmrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
508072313efbSmrg		esac
508172313efbSmrg	    fi
508272313efbSmrg	  fi
508372313efbSmrg	  continue
508472313efbSmrg	  ;;
508572313efbSmrg	-l*)
508672313efbSmrg	  if test "$linkmode" != lib && test "$linkmode" != prog; then
508772313efbSmrg	    func_warning "\`-l' is ignored for archives/objects"
508872313efbSmrg	    continue
508972313efbSmrg	  fi
509072313efbSmrg	  func_stripname '-l' '' "$deplib"
509172313efbSmrg	  name=$func_stripname_result
509272313efbSmrg	  if test "$linkmode" = lib; then
509372313efbSmrg	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
509472313efbSmrg	  else
509572313efbSmrg	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
509672313efbSmrg	  fi
509772313efbSmrg	  for searchdir in $searchdirs; do
509872313efbSmrg	    for search_ext in .la $std_shrext .so .a; do
509972313efbSmrg	      # Search the libtool library
510072313efbSmrg	      lib="$searchdir/lib${name}${search_ext}"
510172313efbSmrg	      if test -f "$lib"; then
510272313efbSmrg		if test "$search_ext" = ".la"; then
510372313efbSmrg		  found=yes
510472313efbSmrg		else
510572313efbSmrg		  found=no
510672313efbSmrg		fi
510772313efbSmrg		break 2
510872313efbSmrg	      fi
510972313efbSmrg	    done
511072313efbSmrg	  done
511172313efbSmrg	  if test "$found" != yes; then
511272313efbSmrg	    # deplib doesn't seem to be a libtool library
511372313efbSmrg	    if test "$linkmode,$pass" = "prog,link"; then
511472313efbSmrg	      compile_deplibs="$deplib $compile_deplibs"
511572313efbSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
511672313efbSmrg	    else
511772313efbSmrg	      deplibs="$deplib $deplibs"
511872313efbSmrg	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
511972313efbSmrg	    fi
512072313efbSmrg	    continue
512172313efbSmrg	  else # deplib is a libtool library
512272313efbSmrg	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
512372313efbSmrg	    # We need to do some special things here, and not later.
512472313efbSmrg	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
512572313efbSmrg	      case " $predeps $postdeps " in
512672313efbSmrg	      *" $deplib "*)
512772313efbSmrg		if func_lalib_p "$lib"; then
512872313efbSmrg		  library_names=
512972313efbSmrg		  old_library=
513072313efbSmrg		  func_source "$lib"
513172313efbSmrg		  for l in $old_library $library_names; do
513272313efbSmrg		    ll="$l"
513372313efbSmrg		  done
513472313efbSmrg		  if test "X$ll" = "X$old_library" ; then # only static version available
513572313efbSmrg		    found=no
513672313efbSmrg		    func_dirname "$lib" "" "."
513772313efbSmrg		    ladir="$func_dirname_result"
513872313efbSmrg		    lib=$ladir/$old_library
513972313efbSmrg		    if test "$linkmode,$pass" = "prog,link"; then
514072313efbSmrg		      compile_deplibs="$deplib $compile_deplibs"
514172313efbSmrg		      finalize_deplibs="$deplib $finalize_deplibs"
514272313efbSmrg		    else
514372313efbSmrg		      deplibs="$deplib $deplibs"
514472313efbSmrg		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
514572313efbSmrg		    fi
514672313efbSmrg		    continue
514772313efbSmrg		  fi
514872313efbSmrg		fi
514972313efbSmrg		;;
515072313efbSmrg	      *) ;;
515172313efbSmrg	      esac
515272313efbSmrg	    fi
515372313efbSmrg	  fi
515472313efbSmrg	  ;; # -l
515572313efbSmrg	*.ltframework)
515672313efbSmrg	  if test "$linkmode,$pass" = "prog,link"; then
515772313efbSmrg	    compile_deplibs="$deplib $compile_deplibs"
515872313efbSmrg	    finalize_deplibs="$deplib $finalize_deplibs"
515972313efbSmrg	  else
516072313efbSmrg	    deplibs="$deplib $deplibs"
516172313efbSmrg	    if test "$linkmode" = lib ; then
516272313efbSmrg		case "$new_inherited_linker_flags " in
516372313efbSmrg		    *" $deplib "*) ;;
516472313efbSmrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
516572313efbSmrg		esac
516672313efbSmrg	    fi
516772313efbSmrg	  fi
516872313efbSmrg	  continue
516972313efbSmrg	  ;;
517072313efbSmrg	-L*)
517172313efbSmrg	  case $linkmode in
517272313efbSmrg	  lib)
517372313efbSmrg	    deplibs="$deplib $deplibs"
517472313efbSmrg	    test "$pass" = conv && continue
517572313efbSmrg	    newdependency_libs="$deplib $newdependency_libs"
517672313efbSmrg	    func_stripname '-L' '' "$deplib"
517772313efbSmrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
517872313efbSmrg	    ;;
517972313efbSmrg	  prog)
518072313efbSmrg	    if test "$pass" = conv; then
518172313efbSmrg	      deplibs="$deplib $deplibs"
518272313efbSmrg	      continue
518372313efbSmrg	    fi
518472313efbSmrg	    if test "$pass" = scan; then
518572313efbSmrg	      deplibs="$deplib $deplibs"
518672313efbSmrg	    else
518772313efbSmrg	      compile_deplibs="$deplib $compile_deplibs"
518872313efbSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
518972313efbSmrg	    fi
519072313efbSmrg	    func_stripname '-L' '' "$deplib"
519172313efbSmrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
519272313efbSmrg	    ;;
519372313efbSmrg	  *)
519472313efbSmrg	    func_warning "\`-L' is ignored for archives/objects"
519572313efbSmrg	    ;;
519672313efbSmrg	  esac # linkmode
519772313efbSmrg	  continue
519872313efbSmrg	  ;; # -L
519972313efbSmrg	-R*)
520072313efbSmrg	  if test "$pass" = link; then
520172313efbSmrg	    func_stripname '-R' '' "$deplib"
520272313efbSmrg	    dir=$func_stripname_result
520372313efbSmrg	    # Make sure the xrpath contains only unique directories.
520472313efbSmrg	    case "$xrpath " in
520572313efbSmrg	    *" $dir "*) ;;
520672313efbSmrg	    *) xrpath="$xrpath $dir" ;;
520772313efbSmrg	    esac
520872313efbSmrg	  fi
520972313efbSmrg	  deplibs="$deplib $deplibs"
521072313efbSmrg	  continue
521172313efbSmrg	  ;;
521272313efbSmrg	*.la) lib="$deplib" ;;
521372313efbSmrg	*.$libext)
521472313efbSmrg	  if test "$pass" = conv; then
521572313efbSmrg	    deplibs="$deplib $deplibs"
521672313efbSmrg	    continue
521772313efbSmrg	  fi
521872313efbSmrg	  case $linkmode in
521972313efbSmrg	  lib)
522072313efbSmrg	    # Linking convenience modules into shared libraries is allowed,
522172313efbSmrg	    # but linking other static libraries is non-portable.
522272313efbSmrg	    case " $dlpreconveniencelibs " in
522372313efbSmrg	    *" $deplib "*) ;;
522472313efbSmrg	    *)
522572313efbSmrg	      valid_a_lib=no
522672313efbSmrg	      case $deplibs_check_method in
522772313efbSmrg		match_pattern*)
522872313efbSmrg		  set dummy $deplibs_check_method; shift
522972313efbSmrg		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
523072313efbSmrg		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
523172313efbSmrg		    | $EGREP "$match_pattern_regex" > /dev/null; then
523272313efbSmrg		    valid_a_lib=yes
523372313efbSmrg		  fi
523472313efbSmrg		;;
523572313efbSmrg		pass_all)
523672313efbSmrg		  valid_a_lib=yes
523772313efbSmrg		;;
523872313efbSmrg	      esac
523972313efbSmrg	      if test "$valid_a_lib" != yes; then
524072313efbSmrg		$ECHO
524172313efbSmrg		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
524272313efbSmrg		$ECHO "*** I have the capability to make that library automatically link in when"
524372313efbSmrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
524472313efbSmrg		$ECHO "*** shared version of the library, which you do not appear to have"
524572313efbSmrg		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
524672313efbSmrg		$ECHO "*** that it is just a static archive that I should not use here."
524772313efbSmrg	      else
524872313efbSmrg		$ECHO
524972313efbSmrg		$ECHO "*** Warning: Linking the shared library $output against the"
525072313efbSmrg		$ECHO "*** static library $deplib is not portable!"
525172313efbSmrg		deplibs="$deplib $deplibs"
525272313efbSmrg	      fi
525372313efbSmrg	      ;;
525472313efbSmrg	    esac
525572313efbSmrg	    continue
525672313efbSmrg	    ;;
525772313efbSmrg	  prog)
525872313efbSmrg	    if test "$pass" != link; then
525972313efbSmrg	      deplibs="$deplib $deplibs"
526072313efbSmrg	    else
526172313efbSmrg	      compile_deplibs="$deplib $compile_deplibs"
526272313efbSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
526372313efbSmrg	    fi
526472313efbSmrg	    continue
526572313efbSmrg	    ;;
526672313efbSmrg	  esac # linkmode
526772313efbSmrg	  ;; # *.$libext
526872313efbSmrg	*.lo | *.$objext)
526972313efbSmrg	  if test "$pass" = conv; then
527072313efbSmrg	    deplibs="$deplib $deplibs"
527172313efbSmrg	  elif test "$linkmode" = prog; then
527272313efbSmrg	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
527372313efbSmrg	      # If there is no dlopen support or we're linking statically,
527472313efbSmrg	      # we need to preload.
527572313efbSmrg	      newdlprefiles="$newdlprefiles $deplib"
527672313efbSmrg	      compile_deplibs="$deplib $compile_deplibs"
527772313efbSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
527872313efbSmrg	    else
527972313efbSmrg	      newdlfiles="$newdlfiles $deplib"
528072313efbSmrg	    fi
528172313efbSmrg	  fi
528272313efbSmrg	  continue
528372313efbSmrg	  ;;
528472313efbSmrg	%DEPLIBS%)
528572313efbSmrg	  alldeplibs=yes
528672313efbSmrg	  continue
528772313efbSmrg	  ;;
528872313efbSmrg	esac # case $deplib
528972313efbSmrg
529072313efbSmrg	if test "$found" = yes || test -f "$lib"; then :
529172313efbSmrg	else
529272313efbSmrg	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
529372313efbSmrg	fi
529472313efbSmrg
529572313efbSmrg	# Check to see that this really is a libtool archive.
529672313efbSmrg	func_lalib_unsafe_p "$lib" \
529772313efbSmrg	  || func_fatal_error "\`$lib' is not a valid libtool archive"
529872313efbSmrg
529972313efbSmrg	func_dirname "$lib" "" "."
530072313efbSmrg	ladir="$func_dirname_result"
530172313efbSmrg
530272313efbSmrg	dlname=
530372313efbSmrg	dlopen=
530472313efbSmrg	dlpreopen=
530572313efbSmrg	libdir=
530672313efbSmrg	library_names=
530772313efbSmrg	old_library=
530872313efbSmrg	inherited_linker_flags=
530972313efbSmrg	# If the library was installed with an old release of libtool,
531072313efbSmrg	# it will not redefine variables installed, or shouldnotlink
531172313efbSmrg	installed=yes
531272313efbSmrg	shouldnotlink=no
531372313efbSmrg	avoidtemprpath=
531472313efbSmrg
531572313efbSmrg
531672313efbSmrg	# Read the .la file
531772313efbSmrg	func_source "$lib"
531872313efbSmrg
531972313efbSmrg	# Convert "-framework foo" to "foo.ltframework"
532072313efbSmrg	if test -n "$inherited_linker_flags"; then
532172313efbSmrg	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
532272313efbSmrg	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
532372313efbSmrg	    case " $new_inherited_linker_flags " in
532472313efbSmrg	      *" $tmp_inherited_linker_flag "*) ;;
532572313efbSmrg	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
532672313efbSmrg	    esac
532772313efbSmrg	  done
532872313efbSmrg	fi
532972313efbSmrg	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
533072313efbSmrg	if test "$linkmode,$pass" = "lib,link" ||
533172313efbSmrg	   test "$linkmode,$pass" = "prog,scan" ||
533272313efbSmrg	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
533372313efbSmrg	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
533472313efbSmrg	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
533572313efbSmrg	fi
533672313efbSmrg
533772313efbSmrg	if test "$pass" = conv; then
533872313efbSmrg	  # Only check for convenience libraries
533972313efbSmrg	  deplibs="$lib $deplibs"
534072313efbSmrg	  if test -z "$libdir"; then
534172313efbSmrg	    if test -z "$old_library"; then
534272313efbSmrg	      func_fatal_error "cannot find name of link library for \`$lib'"
534372313efbSmrg	    fi
534472313efbSmrg	    # It is a libtool convenience library, so add in its objects.
534572313efbSmrg	    convenience="$convenience $ladir/$objdir/$old_library"
534672313efbSmrg	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
534772313efbSmrg	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
534872313efbSmrg	    func_fatal_error "\`$lib' is not a convenience library"
534972313efbSmrg	  fi
535072313efbSmrg	  tmp_libs=
535172313efbSmrg	  for deplib in $dependency_libs; do
535272313efbSmrg	    deplibs="$deplib $deplibs"
535372313efbSmrg	    if $opt_duplicate_deps ; then
535472313efbSmrg	      case "$tmp_libs " in
535572313efbSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
535672313efbSmrg	      esac
535772313efbSmrg	    fi
535872313efbSmrg	    tmp_libs="$tmp_libs $deplib"
535972313efbSmrg	  done
536072313efbSmrg	  continue
536172313efbSmrg	fi # $pass = conv
536272313efbSmrg
536372313efbSmrg
536472313efbSmrg	# Get the name of the library we link against.
536572313efbSmrg	linklib=
536672313efbSmrg	for l in $old_library $library_names; do
536772313efbSmrg	  linklib="$l"
536872313efbSmrg	done
536972313efbSmrg	if test -z "$linklib"; then
537072313efbSmrg	  func_fatal_error "cannot find name of link library for \`$lib'"
537172313efbSmrg	fi
537272313efbSmrg
537372313efbSmrg	# This library was specified with -dlopen.
537472313efbSmrg	if test "$pass" = dlopen; then
537572313efbSmrg	  if test -z "$libdir"; then
537672313efbSmrg	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
537772313efbSmrg	  fi
537872313efbSmrg	  if test -z "$dlname" ||
537972313efbSmrg	     test "$dlopen_support" != yes ||
538072313efbSmrg	     test "$build_libtool_libs" = no; then
538172313efbSmrg	    # If there is no dlname, no dlopen support or we're linking
538272313efbSmrg	    # statically, we need to preload.  We also need to preload any
538372313efbSmrg	    # dependent libraries so libltdl's deplib preloader doesn't
538472313efbSmrg	    # bomb out in the load deplibs phase.
538572313efbSmrg	    dlprefiles="$dlprefiles $lib $dependency_libs"
538672313efbSmrg	  else
538772313efbSmrg	    newdlfiles="$newdlfiles $lib"
538872313efbSmrg	  fi
538972313efbSmrg	  continue
539072313efbSmrg	fi # $pass = dlopen
539172313efbSmrg
539272313efbSmrg	# We need an absolute path.
539372313efbSmrg	case $ladir in
539472313efbSmrg	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
539572313efbSmrg	*)
539672313efbSmrg	  abs_ladir=`cd "$ladir" && pwd`
539772313efbSmrg	  if test -z "$abs_ladir"; then
539872313efbSmrg	    func_warning "cannot determine absolute directory name of \`$ladir'"
539972313efbSmrg	    func_warning "passing it literally to the linker, although it might fail"
540072313efbSmrg	    abs_ladir="$ladir"
540172313efbSmrg	  fi
540272313efbSmrg	  ;;
540372313efbSmrg	esac
540472313efbSmrg	func_basename "$lib"
540572313efbSmrg	laname="$func_basename_result"
540672313efbSmrg
540772313efbSmrg	# Find the relevant object directory and library name.
540872313efbSmrg	if test "X$installed" = Xyes; then
540972313efbSmrg	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
541072313efbSmrg	    func_warning "library \`$lib' was moved."
541172313efbSmrg	    dir="$ladir"
541272313efbSmrg	    absdir="$abs_ladir"
541372313efbSmrg	    libdir="$abs_ladir"
541472313efbSmrg	  else
541572313efbSmrg	    dir="$libdir"
541672313efbSmrg	    absdir="$libdir"
541772313efbSmrg	  fi
541872313efbSmrg	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
541972313efbSmrg	else
542072313efbSmrg	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
542172313efbSmrg	    dir="$ladir"
542272313efbSmrg	    absdir="$abs_ladir"
542372313efbSmrg	    # Remove this search path later
542472313efbSmrg	    notinst_path="$notinst_path $abs_ladir"
542572313efbSmrg	  else
542672313efbSmrg	    dir="$ladir/$objdir"
542772313efbSmrg	    absdir="$abs_ladir/$objdir"
542872313efbSmrg	    # Remove this search path later
542972313efbSmrg	    notinst_path="$notinst_path $abs_ladir"
543072313efbSmrg	  fi
543172313efbSmrg	fi # $installed = yes
543272313efbSmrg	func_stripname 'lib' '.la' "$laname"
543372313efbSmrg	name=$func_stripname_result
543472313efbSmrg
543572313efbSmrg	# This library was specified with -dlpreopen.
543672313efbSmrg	if test "$pass" = dlpreopen; then
543772313efbSmrg	  if test -z "$libdir" && test "$linkmode" = prog; then
543872313efbSmrg	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
543972313efbSmrg	  fi
544072313efbSmrg	  # Prefer using a static library (so that no silly _DYNAMIC symbols
544172313efbSmrg	  # are required to link).
544272313efbSmrg	  if test -n "$old_library"; then
544372313efbSmrg	    newdlprefiles="$newdlprefiles $dir/$old_library"
544472313efbSmrg	    # Keep a list of preopened convenience libraries to check
544572313efbSmrg	    # that they are being used correctly in the link pass.
544672313efbSmrg	    test -z "$libdir" && \
544772313efbSmrg		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
544872313efbSmrg	  # Otherwise, use the dlname, so that lt_dlopen finds it.
544972313efbSmrg	  elif test -n "$dlname"; then
545072313efbSmrg	    newdlprefiles="$newdlprefiles $dir/$dlname"
545172313efbSmrg	  else
545272313efbSmrg	    newdlprefiles="$newdlprefiles $dir/$linklib"
545372313efbSmrg	  fi
545472313efbSmrg	fi # $pass = dlpreopen
545572313efbSmrg
545672313efbSmrg	if test -z "$libdir"; then
545772313efbSmrg	  # Link the convenience library
545872313efbSmrg	  if test "$linkmode" = lib; then
545972313efbSmrg	    deplibs="$dir/$old_library $deplibs"
546072313efbSmrg	  elif test "$linkmode,$pass" = "prog,link"; then
546172313efbSmrg	    compile_deplibs="$dir/$old_library $compile_deplibs"
546272313efbSmrg	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
546372313efbSmrg	  else
546472313efbSmrg	    deplibs="$lib $deplibs" # used for prog,scan pass
546572313efbSmrg	  fi
546672313efbSmrg	  continue
546772313efbSmrg	fi
546872313efbSmrg
546972313efbSmrg
547072313efbSmrg	if test "$linkmode" = prog && test "$pass" != link; then
547172313efbSmrg	  newlib_search_path="$newlib_search_path $ladir"
547272313efbSmrg	  deplibs="$lib $deplibs"
547372313efbSmrg
547472313efbSmrg	  linkalldeplibs=no
547572313efbSmrg	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
547672313efbSmrg	     test "$build_libtool_libs" = no; then
547772313efbSmrg	    linkalldeplibs=yes
547872313efbSmrg	  fi
547972313efbSmrg
548072313efbSmrg	  tmp_libs=
548172313efbSmrg	  for deplib in $dependency_libs; do
548272313efbSmrg	    case $deplib in
548372313efbSmrg	    -L*) func_stripname '-L' '' "$deplib"
548472313efbSmrg	         newlib_search_path="$newlib_search_path $func_stripname_result"
548572313efbSmrg		 ;;
548672313efbSmrg	    esac
548772313efbSmrg	    # Need to link against all dependency_libs?
548872313efbSmrg	    if test "$linkalldeplibs" = yes; then
548972313efbSmrg	      deplibs="$deplib $deplibs"
549072313efbSmrg	    else
549172313efbSmrg	      # Need to hardcode shared library paths
549272313efbSmrg	      # or/and link against static libraries
549372313efbSmrg	      newdependency_libs="$deplib $newdependency_libs"
549472313efbSmrg	    fi
549572313efbSmrg	    if $opt_duplicate_deps ; then
549672313efbSmrg	      case "$tmp_libs " in
549772313efbSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
549872313efbSmrg	      esac
549972313efbSmrg	    fi
550072313efbSmrg	    tmp_libs="$tmp_libs $deplib"
550172313efbSmrg	  done # for deplib
550272313efbSmrg	  continue
550372313efbSmrg	fi # $linkmode = prog...
550472313efbSmrg
550572313efbSmrg	if test "$linkmode,$pass" = "prog,link"; then
550672313efbSmrg	  if test -n "$library_names" &&
550772313efbSmrg	     { { test "$prefer_static_libs" = no ||
550872313efbSmrg	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
550972313efbSmrg	       test -z "$old_library"; }; then
551072313efbSmrg	    # We need to hardcode the library path
551172313efbSmrg	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
551272313efbSmrg	      # Make sure the rpath contains only unique directories.
551372313efbSmrg	      case "$temp_rpath:" in
551472313efbSmrg	      *"$absdir:"*) ;;
551572313efbSmrg	      *) temp_rpath="$temp_rpath$absdir:" ;;
551672313efbSmrg	      esac
551772313efbSmrg	    fi
551872313efbSmrg
551972313efbSmrg	    # Hardcode the library path.
552072313efbSmrg	    # Skip directories that are in the system default run-time
552172313efbSmrg	    # search path.
552272313efbSmrg	    case " $sys_lib_dlsearch_path " in
552372313efbSmrg	    *" $absdir "*) ;;
552472313efbSmrg	    *)
552572313efbSmrg	      case "$compile_rpath " in
552672313efbSmrg	      *" $absdir "*) ;;
552772313efbSmrg	      *) compile_rpath="$compile_rpath $absdir"
552872313efbSmrg	      esac
552972313efbSmrg	      ;;
553072313efbSmrg	    esac
553172313efbSmrg	    case " $sys_lib_dlsearch_path " in
553272313efbSmrg	    *" $libdir "*) ;;
553372313efbSmrg	    *)
553472313efbSmrg	      case "$finalize_rpath " in
553572313efbSmrg	      *" $libdir "*) ;;
553672313efbSmrg	      *) finalize_rpath="$finalize_rpath $libdir"
553772313efbSmrg	      esac
553872313efbSmrg	      ;;
553972313efbSmrg	    esac
554072313efbSmrg	  fi # $linkmode,$pass = prog,link...
554172313efbSmrg
554272313efbSmrg	  if test "$alldeplibs" = yes &&
554372313efbSmrg	     { test "$deplibs_check_method" = pass_all ||
554472313efbSmrg	       { test "$build_libtool_libs" = yes &&
554572313efbSmrg		 test -n "$library_names"; }; }; then
554672313efbSmrg	    # We only need to search for static libraries
554772313efbSmrg	    continue
554872313efbSmrg	  fi
554972313efbSmrg	fi
555072313efbSmrg
555172313efbSmrg	link_static=no # Whether the deplib will be linked statically
555272313efbSmrg	use_static_libs=$prefer_static_libs
555372313efbSmrg	if test "$use_static_libs" = built && test "$installed" = yes; then
555472313efbSmrg	  use_static_libs=no
555572313efbSmrg	fi
555672313efbSmrg	if test -n "$library_names" &&
555772313efbSmrg	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
555872313efbSmrg	  case $host in
555972313efbSmrg	  *cygwin* | *mingw* | *cegcc*)
556072313efbSmrg	      # No point in relinking DLLs because paths are not encoded
556172313efbSmrg	      notinst_deplibs="$notinst_deplibs $lib"
556272313efbSmrg	      need_relink=no
556372313efbSmrg	    ;;
556472313efbSmrg	  *)
556572313efbSmrg	    if test "$installed" = no; then
556672313efbSmrg	      notinst_deplibs="$notinst_deplibs $lib"
556772313efbSmrg	      need_relink=yes
556872313efbSmrg	    fi
556972313efbSmrg	    ;;
557072313efbSmrg	  esac
557172313efbSmrg	  # This is a shared library
557272313efbSmrg
557372313efbSmrg	  # Warn about portability, can't link against -module's on some
557472313efbSmrg	  # systems (darwin).  Don't bleat about dlopened modules though!
557572313efbSmrg	  dlopenmodule=""
557672313efbSmrg	  for dlpremoduletest in $dlprefiles; do
557772313efbSmrg	    if test "X$dlpremoduletest" = "X$lib"; then
557872313efbSmrg	      dlopenmodule="$dlpremoduletest"
557972313efbSmrg	      break
558072313efbSmrg	    fi
558172313efbSmrg	  done
558272313efbSmrg	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
558372313efbSmrg	    $ECHO
558472313efbSmrg	    if test "$linkmode" = prog; then
558572313efbSmrg	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
558672313efbSmrg	    else
558772313efbSmrg	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
558872313efbSmrg	    fi
558972313efbSmrg	    $ECHO "*** $linklib is not portable!"
559072313efbSmrg	  fi
559172313efbSmrg	  if test "$linkmode" = lib &&
559272313efbSmrg	     test "$hardcode_into_libs" = yes; then
559372313efbSmrg	    # Hardcode the library path.
559472313efbSmrg	    # Skip directories that are in the system default run-time
559572313efbSmrg	    # search path.
559672313efbSmrg	    case " $sys_lib_dlsearch_path " in
559772313efbSmrg	    *" $absdir "*) ;;
559872313efbSmrg	    *)
559972313efbSmrg	      case "$compile_rpath " in
560072313efbSmrg	      *" $absdir "*) ;;
560172313efbSmrg	      *) compile_rpath="$compile_rpath $absdir"
560272313efbSmrg	      esac
560372313efbSmrg	      ;;
560472313efbSmrg	    esac
560572313efbSmrg	    case " $sys_lib_dlsearch_path " in
560672313efbSmrg	    *" $libdir "*) ;;
560772313efbSmrg	    *)
560872313efbSmrg	      case "$finalize_rpath " in
560972313efbSmrg	      *" $libdir "*) ;;
561072313efbSmrg	      *) finalize_rpath="$finalize_rpath $libdir"
561172313efbSmrg	      esac
561272313efbSmrg	      ;;
561372313efbSmrg	    esac
561472313efbSmrg	  fi
561572313efbSmrg
561672313efbSmrg	  if test -n "$old_archive_from_expsyms_cmds"; then
561772313efbSmrg	    # figure out the soname
561872313efbSmrg	    set dummy $library_names
561972313efbSmrg	    shift
562072313efbSmrg	    realname="$1"
562172313efbSmrg	    shift
562272313efbSmrg	    libname=`eval "\\$ECHO \"$libname_spec\""`
562372313efbSmrg	    # use dlname if we got it. it's perfectly good, no?
562472313efbSmrg	    if test -n "$dlname"; then
562572313efbSmrg	      soname="$dlname"
562672313efbSmrg	    elif test -n "$soname_spec"; then
562772313efbSmrg	      # bleh windows
562872313efbSmrg	      case $host in
562972313efbSmrg	      *cygwin* | mingw* | *cegcc*)
563072313efbSmrg	        func_arith $current - $age
563172313efbSmrg		major=$func_arith_result
563272313efbSmrg		versuffix="-$major"
563372313efbSmrg		;;
563472313efbSmrg	      esac
563572313efbSmrg	      eval soname=\"$soname_spec\"
563672313efbSmrg	    else
563772313efbSmrg	      soname="$realname"
563872313efbSmrg	    fi
563972313efbSmrg
564072313efbSmrg	    # Make a new name for the extract_expsyms_cmds to use
564172313efbSmrg	    soroot="$soname"
564272313efbSmrg	    func_basename "$soroot"
564372313efbSmrg	    soname="$func_basename_result"
564472313efbSmrg	    func_stripname 'lib' '.dll' "$soname"
564572313efbSmrg	    newlib=libimp-$func_stripname_result.a
564672313efbSmrg
564772313efbSmrg	    # If the library has no export list, then create one now
564872313efbSmrg	    if test -f "$output_objdir/$soname-def"; then :
564972313efbSmrg	    else
565072313efbSmrg	      func_verbose "extracting exported symbol list from \`$soname'"
565172313efbSmrg	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
565272313efbSmrg	    fi
565372313efbSmrg
565472313efbSmrg	    # Create $newlib
565572313efbSmrg	    if test -f "$output_objdir/$newlib"; then :; else
565672313efbSmrg	      func_verbose "generating import library for \`$soname'"
565772313efbSmrg	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
565872313efbSmrg	    fi
565972313efbSmrg	    # make sure the library variables are pointing to the new library
566072313efbSmrg	    dir=$output_objdir
566172313efbSmrg	    linklib=$newlib
566272313efbSmrg	  fi # test -n "$old_archive_from_expsyms_cmds"
566372313efbSmrg
566472313efbSmrg	  if test "$linkmode" = prog || test "$mode" != relink; then
566572313efbSmrg	    add_shlibpath=
566672313efbSmrg	    add_dir=
566772313efbSmrg	    add=
566872313efbSmrg	    lib_linked=yes
566972313efbSmrg	    case $hardcode_action in
567072313efbSmrg	    immediate | unsupported)
567172313efbSmrg	      if test "$hardcode_direct" = no; then
567272313efbSmrg		add="$dir/$linklib"
567372313efbSmrg		case $host in
567472313efbSmrg		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
567572313efbSmrg		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
567672313efbSmrg		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
567772313efbSmrg		    *-*-unixware7*) add_dir="-L$dir" ;;
567872313efbSmrg		  *-*-darwin* )
567972313efbSmrg		    # if the lib is a (non-dlopened) module then we can not
568072313efbSmrg		    # link against it, someone is ignoring the earlier warnings
568172313efbSmrg		    if /usr/bin/file -L $add 2> /dev/null |
568272313efbSmrg			 $GREP ": [^:]* bundle" >/dev/null ; then
568372313efbSmrg		      if test "X$dlopenmodule" != "X$lib"; then
568472313efbSmrg			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
568572313efbSmrg			if test -z "$old_library" ; then
568672313efbSmrg			  $ECHO
568772313efbSmrg			  $ECHO "*** And there doesn't seem to be a static archive available"
568872313efbSmrg			  $ECHO "*** The link will probably fail, sorry"
568972313efbSmrg			else
569072313efbSmrg			  add="$dir/$old_library"
569172313efbSmrg			fi
569272313efbSmrg		      elif test -n "$old_library"; then
569372313efbSmrg			add="$dir/$old_library"
569472313efbSmrg		      fi
569572313efbSmrg		    fi
569672313efbSmrg		esac
569772313efbSmrg	      elif test "$hardcode_minus_L" = no; then
569872313efbSmrg		case $host in
569972313efbSmrg		*-*-sunos*) add_shlibpath="$dir" ;;
570072313efbSmrg		esac
570172313efbSmrg		add_dir="-L$dir"
570272313efbSmrg		add="-l$name"
570372313efbSmrg	      elif test "$hardcode_shlibpath_var" = no; then
570472313efbSmrg		add_shlibpath="$dir"
570572313efbSmrg		add="-l$name"
570672313efbSmrg	      else
570772313efbSmrg		lib_linked=no
570872313efbSmrg	      fi
570972313efbSmrg	      ;;
571072313efbSmrg	    relink)
571172313efbSmrg	      if test "$hardcode_direct" = yes &&
571272313efbSmrg	         test "$hardcode_direct_absolute" = no; then
571372313efbSmrg		add="$dir/$linklib"
571472313efbSmrg	      elif test "$hardcode_minus_L" = yes; then
571572313efbSmrg		add_dir="-L$dir"
571672313efbSmrg		# Try looking first in the location we're being installed to.
571772313efbSmrg		if test -n "$inst_prefix_dir"; then
571872313efbSmrg		  case $libdir in
571972313efbSmrg		    [\\/]*)
572072313efbSmrg		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
572172313efbSmrg		      ;;
572272313efbSmrg		  esac
572372313efbSmrg		fi
572472313efbSmrg		add="-l$name"
572572313efbSmrg	      elif test "$hardcode_shlibpath_var" = yes; then
572672313efbSmrg		add_shlibpath="$dir"
572772313efbSmrg		add="-l$name"
572872313efbSmrg	      else
572972313efbSmrg		lib_linked=no
573072313efbSmrg	      fi
573172313efbSmrg	      ;;
573272313efbSmrg	    *) lib_linked=no ;;
573372313efbSmrg	    esac
573472313efbSmrg
573572313efbSmrg	    if test "$lib_linked" != yes; then
573672313efbSmrg	      func_fatal_configuration "unsupported hardcode properties"
573772313efbSmrg	    fi
573872313efbSmrg
573972313efbSmrg	    if test -n "$add_shlibpath"; then
574072313efbSmrg	      case :$compile_shlibpath: in
574172313efbSmrg	      *":$add_shlibpath:"*) ;;
574272313efbSmrg	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
574372313efbSmrg	      esac
574472313efbSmrg	    fi
574572313efbSmrg	    if test "$linkmode" = prog; then
574672313efbSmrg	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
574772313efbSmrg	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
574872313efbSmrg	    else
574972313efbSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
575072313efbSmrg	      test -n "$add" && deplibs="$add $deplibs"
575172313efbSmrg	      if test "$hardcode_direct" != yes &&
575272313efbSmrg		 test "$hardcode_minus_L" != yes &&
575372313efbSmrg		 test "$hardcode_shlibpath_var" = yes; then
575472313efbSmrg		case :$finalize_shlibpath: in
575572313efbSmrg		*":$libdir:"*) ;;
575672313efbSmrg		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
575772313efbSmrg		esac
575872313efbSmrg	      fi
575972313efbSmrg	    fi
576072313efbSmrg	  fi
576172313efbSmrg
576272313efbSmrg	  if test "$linkmode" = prog || test "$mode" = relink; then
576372313efbSmrg	    add_shlibpath=
576472313efbSmrg	    add_dir=
576572313efbSmrg	    add=
576672313efbSmrg	    # Finalize command for both is simple: just hardcode it.
576772313efbSmrg	    if test "$hardcode_direct" = yes &&
576872313efbSmrg	       test "$hardcode_direct_absolute" = no; then
576972313efbSmrg	      add="$libdir/$linklib"
577072313efbSmrg	    elif test "$hardcode_minus_L" = yes; then
577172313efbSmrg	      add_dir="-L$libdir"
577272313efbSmrg	      add="-l$name"
577372313efbSmrg	    elif test "$hardcode_shlibpath_var" = yes; then
577472313efbSmrg	      case :$finalize_shlibpath: in
577572313efbSmrg	      *":$libdir:"*) ;;
577672313efbSmrg	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
577772313efbSmrg	      esac
577872313efbSmrg	      add="-l$name"
577972313efbSmrg	    elif test "$hardcode_automatic" = yes; then
578072313efbSmrg	      if test -n "$inst_prefix_dir" &&
578172313efbSmrg		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
578272313efbSmrg		add="$inst_prefix_dir$libdir/$linklib"
578372313efbSmrg	      else
578472313efbSmrg		add="$libdir/$linklib"
578572313efbSmrg	      fi
578672313efbSmrg	    else
578772313efbSmrg	      # We cannot seem to hardcode it, guess we'll fake it.
578872313efbSmrg	      add_dir="-L$libdir"
578972313efbSmrg	      # Try looking first in the location we're being installed to.
579072313efbSmrg	      if test -n "$inst_prefix_dir"; then
579172313efbSmrg		case $libdir in
579272313efbSmrg		  [\\/]*)
579372313efbSmrg		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
579472313efbSmrg		    ;;
579572313efbSmrg		esac
579672313efbSmrg	      fi
579772313efbSmrg	      add="-l$name"
579872313efbSmrg	    fi
579972313efbSmrg
580072313efbSmrg	    if test "$linkmode" = prog; then
580172313efbSmrg	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
580272313efbSmrg	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
580372313efbSmrg	    else
580472313efbSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
580572313efbSmrg	      test -n "$add" && deplibs="$add $deplibs"
580672313efbSmrg	    fi
580772313efbSmrg	  fi
580872313efbSmrg	elif test "$linkmode" = prog; then
580972313efbSmrg	  # Here we assume that one of hardcode_direct or hardcode_minus_L
581072313efbSmrg	  # is not unsupported.  This is valid on all known static and
581172313efbSmrg	  # shared platforms.
581272313efbSmrg	  if test "$hardcode_direct" != unsupported; then
581372313efbSmrg	    test -n "$old_library" && linklib="$old_library"
581472313efbSmrg	    compile_deplibs="$dir/$linklib $compile_deplibs"
581572313efbSmrg	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
581672313efbSmrg	  else
581772313efbSmrg	    compile_deplibs="-l$name -L$dir $compile_deplibs"
581872313efbSmrg	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
581972313efbSmrg	  fi
582072313efbSmrg	elif test "$build_libtool_libs" = yes; then
582172313efbSmrg	  # Not a shared library
582272313efbSmrg	  if test "$deplibs_check_method" != pass_all; then
582372313efbSmrg	    # We're trying link a shared library against a static one
582472313efbSmrg	    # but the system doesn't support it.
582572313efbSmrg
582672313efbSmrg	    # Just print a warning and add the library to dependency_libs so
582772313efbSmrg	    # that the program can be linked against the static library.
582872313efbSmrg	    $ECHO
582972313efbSmrg	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
583072313efbSmrg	    $ECHO "*** I have the capability to make that library automatically link in when"
583172313efbSmrg	    $ECHO "*** you link to this library.  But I can only do this if you have a"
583272313efbSmrg	    $ECHO "*** shared version of the library, which you do not appear to have."
583372313efbSmrg	    if test "$module" = yes; then
583472313efbSmrg	      $ECHO "*** But as you try to build a module library, libtool will still create "
583572313efbSmrg	      $ECHO "*** a static module, that should work as long as the dlopening application"
583672313efbSmrg	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
583772313efbSmrg	      if test -z "$global_symbol_pipe"; then
583872313efbSmrg		$ECHO
583972313efbSmrg		$ECHO "*** However, this would only work if libtool was able to extract symbol"
584072313efbSmrg		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
584172313efbSmrg		$ECHO "*** not find such a program.  So, this module is probably useless."
584272313efbSmrg		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
584372313efbSmrg	      fi
584472313efbSmrg	      if test "$build_old_libs" = no; then
584572313efbSmrg		build_libtool_libs=module
584672313efbSmrg		build_old_libs=yes
584772313efbSmrg	      else
584872313efbSmrg		build_libtool_libs=no
584972313efbSmrg	      fi
585072313efbSmrg	    fi
585172313efbSmrg	  else
585272313efbSmrg	    deplibs="$dir/$old_library $deplibs"
585372313efbSmrg	    link_static=yes
585472313efbSmrg	  fi
585572313efbSmrg	fi # link shared/static library?
585672313efbSmrg
585772313efbSmrg	if test "$linkmode" = lib; then
585872313efbSmrg	  if test -n "$dependency_libs" &&
585972313efbSmrg	     { test "$hardcode_into_libs" != yes ||
586072313efbSmrg	       test "$build_old_libs" = yes ||
586172313efbSmrg	       test "$link_static" = yes; }; then
586272313efbSmrg	    # Extract -R from dependency_libs
586372313efbSmrg	    temp_deplibs=
586472313efbSmrg	    for libdir in $dependency_libs; do
586572313efbSmrg	      case $libdir in
586672313efbSmrg	      -R*) func_stripname '-R' '' "$libdir"
586772313efbSmrg	           temp_xrpath=$func_stripname_result
586872313efbSmrg		   case " $xrpath " in
586972313efbSmrg		   *" $temp_xrpath "*) ;;
587072313efbSmrg		   *) xrpath="$xrpath $temp_xrpath";;
587172313efbSmrg		   esac;;
587272313efbSmrg	      *) temp_deplibs="$temp_deplibs $libdir";;
587372313efbSmrg	      esac
587472313efbSmrg	    done
587572313efbSmrg	    dependency_libs="$temp_deplibs"
587672313efbSmrg	  fi
587772313efbSmrg
587872313efbSmrg	  newlib_search_path="$newlib_search_path $absdir"
587972313efbSmrg	  # Link against this library
588072313efbSmrg	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
588172313efbSmrg	  # ... and its dependency_libs
588272313efbSmrg	  tmp_libs=
588372313efbSmrg	  for deplib in $dependency_libs; do
588472313efbSmrg	    newdependency_libs="$deplib $newdependency_libs"
588572313efbSmrg	    if $opt_duplicate_deps ; then
588672313efbSmrg	      case "$tmp_libs " in
588772313efbSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
588872313efbSmrg	      esac
588972313efbSmrg	    fi
589072313efbSmrg	    tmp_libs="$tmp_libs $deplib"
589172313efbSmrg	  done
589272313efbSmrg
589372313efbSmrg	  if test "$link_all_deplibs" != no; then
589472313efbSmrg	    # Add the search paths of all dependency libraries
589572313efbSmrg	    for deplib in $dependency_libs; do
589672313efbSmrg	      case $deplib in
589772313efbSmrg	      -L*) path="$deplib" ;;
589872313efbSmrg	      *.la)
589972313efbSmrg	        func_dirname "$deplib" "" "."
590072313efbSmrg		dir="$func_dirname_result"
590172313efbSmrg		# We need an absolute path.
590272313efbSmrg		case $dir in
590372313efbSmrg		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
590472313efbSmrg		*)
590572313efbSmrg		  absdir=`cd "$dir" && pwd`
590672313efbSmrg		  if test -z "$absdir"; then
590772313efbSmrg		    func_warning "cannot determine absolute directory name of \`$dir'"
590872313efbSmrg		    absdir="$dir"
590972313efbSmrg		  fi
591072313efbSmrg		  ;;
591172313efbSmrg		esac
591272313efbSmrg		if $GREP "^installed=no" $deplib > /dev/null; then
591372313efbSmrg		case $host in
591472313efbSmrg		*-*-darwin*)
591572313efbSmrg		  depdepl=
591672313efbSmrg		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
591772313efbSmrg		  if test -n "$deplibrary_names" ; then
591872313efbSmrg		    for tmp in $deplibrary_names ; do
591972313efbSmrg		      depdepl=$tmp
592072313efbSmrg		    done
592172313efbSmrg		    if test -f "$absdir/$objdir/$depdepl" ; then
592272313efbSmrg		      depdepl="$absdir/$objdir/$depdepl"
592372313efbSmrg		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
592472313efbSmrg                      if test -z "$darwin_install_name"; then
592572313efbSmrg                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
592672313efbSmrg                      fi
592772313efbSmrg		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
592872313efbSmrg		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
592972313efbSmrg		      path=
593072313efbSmrg		    fi
593172313efbSmrg		  fi
593272313efbSmrg		  ;;
593372313efbSmrg		*)
593472313efbSmrg		  path="-L$absdir/$objdir"
593572313efbSmrg		  ;;
593672313efbSmrg		esac
593772313efbSmrg		else
593872313efbSmrg		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
593972313efbSmrg		  test -z "$libdir" && \
594072313efbSmrg		    func_fatal_error "\`$deplib' is not a valid libtool archive"
594172313efbSmrg		  test "$absdir" != "$libdir" && \
594272313efbSmrg		    func_warning "\`$deplib' seems to be moved"
594372313efbSmrg
594472313efbSmrg		  path="-L$absdir"
594572313efbSmrg		fi
594672313efbSmrg		;;
594772313efbSmrg	      esac
594872313efbSmrg	      case " $deplibs " in
594972313efbSmrg	      *" $path "*) ;;
595072313efbSmrg	      *) deplibs="$path $deplibs" ;;
595172313efbSmrg	      esac
595272313efbSmrg	    done
595372313efbSmrg	  fi # link_all_deplibs != no
595472313efbSmrg	fi # linkmode = lib
595572313efbSmrg      done # for deplib in $libs
595672313efbSmrg      if test "$pass" = link; then
595772313efbSmrg	if test "$linkmode" = "prog"; then
595872313efbSmrg	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
595972313efbSmrg	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
596072313efbSmrg	else
596172313efbSmrg	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
596272313efbSmrg	fi
596372313efbSmrg      fi
596472313efbSmrg      dependency_libs="$newdependency_libs"
596572313efbSmrg      if test "$pass" = dlpreopen; then
596672313efbSmrg	# Link the dlpreopened libraries before other libraries
596772313efbSmrg	for deplib in $save_deplibs; do
596872313efbSmrg	  deplibs="$deplib $deplibs"
596972313efbSmrg	done
597072313efbSmrg      fi
597172313efbSmrg      if test "$pass" != dlopen; then
597272313efbSmrg	if test "$pass" != conv; then
597372313efbSmrg	  # Make sure lib_search_path contains only unique directories.
597472313efbSmrg	  lib_search_path=
597572313efbSmrg	  for dir in $newlib_search_path; do
597672313efbSmrg	    case "$lib_search_path " in
597772313efbSmrg	    *" $dir "*) ;;
597872313efbSmrg	    *) lib_search_path="$lib_search_path $dir" ;;
597972313efbSmrg	    esac
598072313efbSmrg	  done
598172313efbSmrg	  newlib_search_path=
598272313efbSmrg	fi
598372313efbSmrg
598472313efbSmrg	if test "$linkmode,$pass" != "prog,link"; then
598572313efbSmrg	  vars="deplibs"
598672313efbSmrg	else
598772313efbSmrg	  vars="compile_deplibs finalize_deplibs"
598872313efbSmrg	fi
598972313efbSmrg	for var in $vars dependency_libs; do
599072313efbSmrg	  # Add libraries to $var in reverse order
599172313efbSmrg	  eval tmp_libs=\"\$$var\"
599272313efbSmrg	  new_libs=
599372313efbSmrg	  for deplib in $tmp_libs; do
599472313efbSmrg	    # FIXME: Pedantically, this is the right thing to do, so
599572313efbSmrg	    #        that some nasty dependency loop isn't accidentally
599672313efbSmrg	    #        broken:
599772313efbSmrg	    #new_libs="$deplib $new_libs"
599872313efbSmrg	    # Pragmatically, this seems to cause very few problems in
599972313efbSmrg	    # practice:
600072313efbSmrg	    case $deplib in
600172313efbSmrg	    -L*) new_libs="$deplib $new_libs" ;;
600272313efbSmrg	    -R*) ;;
600372313efbSmrg	    *)
600472313efbSmrg	      # And here is the reason: when a library appears more
600572313efbSmrg	      # than once as an explicit dependence of a library, or
600672313efbSmrg	      # is implicitly linked in more than once by the
600772313efbSmrg	      # compiler, it is considered special, and multiple
600872313efbSmrg	      # occurrences thereof are not removed.  Compare this
600972313efbSmrg	      # with having the same library being listed as a
601072313efbSmrg	      # dependency of multiple other libraries: in this case,
601172313efbSmrg	      # we know (pedantically, we assume) the library does not
601272313efbSmrg	      # need to be listed more than once, so we keep only the
601372313efbSmrg	      # last copy.  This is not always right, but it is rare
601472313efbSmrg	      # enough that we require users that really mean to play
601572313efbSmrg	      # such unportable linking tricks to link the library
601672313efbSmrg	      # using -Wl,-lname, so that libtool does not consider it
601772313efbSmrg	      # for duplicate removal.
601872313efbSmrg	      case " $specialdeplibs " in
601972313efbSmrg	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
602072313efbSmrg	      *)
602172313efbSmrg		case " $new_libs " in
602272313efbSmrg		*" $deplib "*) ;;
602372313efbSmrg		*) new_libs="$deplib $new_libs" ;;
602472313efbSmrg		esac
602572313efbSmrg		;;
602672313efbSmrg	      esac
602772313efbSmrg	      ;;
602872313efbSmrg	    esac
602972313efbSmrg	  done
603072313efbSmrg	  tmp_libs=
603172313efbSmrg	  for deplib in $new_libs; do
603272313efbSmrg	    case $deplib in
603372313efbSmrg	    -L*)
603472313efbSmrg	      case " $tmp_libs " in
603572313efbSmrg	      *" $deplib "*) ;;
603672313efbSmrg	      *) tmp_libs="$tmp_libs $deplib" ;;
603772313efbSmrg	      esac
603872313efbSmrg	      ;;
603972313efbSmrg	    *) tmp_libs="$tmp_libs $deplib" ;;
604072313efbSmrg	    esac
604172313efbSmrg	  done
604272313efbSmrg	  eval $var=\"$tmp_libs\"
604372313efbSmrg	done # for var
604472313efbSmrg      fi
604572313efbSmrg      # Last step: remove runtime libs from dependency_libs
604672313efbSmrg      # (they stay in deplibs)
604772313efbSmrg      tmp_libs=
604872313efbSmrg      for i in $dependency_libs ; do
604972313efbSmrg	case " $predeps $postdeps $compiler_lib_search_path " in
605072313efbSmrg	*" $i "*)
605172313efbSmrg	  i=""
605272313efbSmrg	  ;;
605372313efbSmrg	esac
605472313efbSmrg	if test -n "$i" ; then
605572313efbSmrg	  tmp_libs="$tmp_libs $i"
605672313efbSmrg	fi
605772313efbSmrg      done
605872313efbSmrg      dependency_libs=$tmp_libs
605972313efbSmrg    done # for pass
606072313efbSmrg    if test "$linkmode" = prog; then
606172313efbSmrg      dlfiles="$newdlfiles"
606272313efbSmrg    fi
606372313efbSmrg    if test "$linkmode" = prog || test "$linkmode" = lib; then
606472313efbSmrg      dlprefiles="$newdlprefiles"
606572313efbSmrg    fi
606672313efbSmrg
606772313efbSmrg    case $linkmode in
606872313efbSmrg    oldlib)
606972313efbSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
607072313efbSmrg	func_warning "\`-dlopen' is ignored for archives"
607172313efbSmrg      fi
607272313efbSmrg
607372313efbSmrg      case " $deplibs" in
607472313efbSmrg      *\ -l* | *\ -L*)
607572313efbSmrg	func_warning "\`-l' and \`-L' are ignored for archives" ;;
607672313efbSmrg      esac
607772313efbSmrg
607872313efbSmrg      test -n "$rpath" && \
607972313efbSmrg	func_warning "\`-rpath' is ignored for archives"
608072313efbSmrg
608172313efbSmrg      test -n "$xrpath" && \
608272313efbSmrg	func_warning "\`-R' is ignored for archives"
608372313efbSmrg
608472313efbSmrg      test -n "$vinfo" && \
608572313efbSmrg	func_warning "\`-version-info/-version-number' is ignored for archives"
608672313efbSmrg
608772313efbSmrg      test -n "$release" && \
608872313efbSmrg	func_warning "\`-release' is ignored for archives"
608972313efbSmrg
609072313efbSmrg      test -n "$export_symbols$export_symbols_regex" && \
609172313efbSmrg	func_warning "\`-export-symbols' is ignored for archives"
609272313efbSmrg
609372313efbSmrg      # Now set the variables for building old libraries.
609472313efbSmrg      build_libtool_libs=no
609572313efbSmrg      oldlibs="$output"
609672313efbSmrg      objs="$objs$old_deplibs"
609772313efbSmrg      ;;
609872313efbSmrg
609972313efbSmrg    lib)
610072313efbSmrg      # Make sure we only generate libraries of the form `libNAME.la'.
610172313efbSmrg      case $outputname in
610272313efbSmrg      lib*)
610372313efbSmrg	func_stripname 'lib' '.la' "$outputname"
610472313efbSmrg	name=$func_stripname_result
610572313efbSmrg	eval shared_ext=\"$shrext_cmds\"
610672313efbSmrg	eval libname=\"$libname_spec\"
610772313efbSmrg	;;
610872313efbSmrg      *)
610972313efbSmrg	test "$module" = no && \
611072313efbSmrg	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
611172313efbSmrg
611272313efbSmrg	if test "$need_lib_prefix" != no; then
611372313efbSmrg	  # Add the "lib" prefix for modules if required
611472313efbSmrg	  func_stripname '' '.la' "$outputname"
611572313efbSmrg	  name=$func_stripname_result
611672313efbSmrg	  eval shared_ext=\"$shrext_cmds\"
611772313efbSmrg	  eval libname=\"$libname_spec\"
611872313efbSmrg	else
611972313efbSmrg	  func_stripname '' '.la' "$outputname"
612072313efbSmrg	  libname=$func_stripname_result
612172313efbSmrg	fi
612272313efbSmrg	;;
612372313efbSmrg      esac
612472313efbSmrg
612572313efbSmrg      if test -n "$objs"; then
612672313efbSmrg	if test "$deplibs_check_method" != pass_all; then
612772313efbSmrg	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
612872313efbSmrg	else
612972313efbSmrg	  $ECHO
613072313efbSmrg	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
613172313efbSmrg	  $ECHO "*** objects $objs is not portable!"
613272313efbSmrg	  libobjs="$libobjs $objs"
613372313efbSmrg	fi
613472313efbSmrg      fi
613572313efbSmrg
613672313efbSmrg      test "$dlself" != no && \
613772313efbSmrg	func_warning "\`-dlopen self' is ignored for libtool libraries"
613872313efbSmrg
613972313efbSmrg      set dummy $rpath
614072313efbSmrg      shift
614172313efbSmrg      test "$#" -gt 1 && \
614272313efbSmrg	func_warning "ignoring multiple \`-rpath's for a libtool library"
614372313efbSmrg
614472313efbSmrg      install_libdir="$1"
614572313efbSmrg
614672313efbSmrg      oldlibs=
614772313efbSmrg      if test -z "$rpath"; then
614872313efbSmrg	if test "$build_libtool_libs" = yes; then
614972313efbSmrg	  # Building a libtool convenience library.
615072313efbSmrg	  # Some compilers have problems with a `.al' extension so
615172313efbSmrg	  # convenience libraries should have the same extension an
615272313efbSmrg	  # archive normally would.
615372313efbSmrg	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
615472313efbSmrg	  build_libtool_libs=convenience
615572313efbSmrg	  build_old_libs=yes
615672313efbSmrg	fi
615772313efbSmrg
615872313efbSmrg	test -n "$vinfo" && \
615972313efbSmrg	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
616072313efbSmrg
616172313efbSmrg	test -n "$release" && \
616272313efbSmrg	  func_warning "\`-release' is ignored for convenience libraries"
616372313efbSmrg      else
616472313efbSmrg
616572313efbSmrg	# Parse the version information argument.
616672313efbSmrg	save_ifs="$IFS"; IFS=':'
616772313efbSmrg	set dummy $vinfo 0 0 0
616872313efbSmrg	shift
616972313efbSmrg	IFS="$save_ifs"
617072313efbSmrg
617172313efbSmrg	test -n "$7" && \
617272313efbSmrg	  func_fatal_help "too many parameters to \`-version-info'"
617372313efbSmrg
617472313efbSmrg	# convert absolute version numbers to libtool ages
617572313efbSmrg	# this retains compatibility with .la files and attempts
617672313efbSmrg	# to make the code below a bit more comprehensible
617772313efbSmrg
617872313efbSmrg	case $vinfo_number in
617972313efbSmrg	yes)
618072313efbSmrg	  number_major="$1"
618172313efbSmrg	  number_minor="$2"
618272313efbSmrg	  number_revision="$3"
618372313efbSmrg	  #
618472313efbSmrg	  # There are really only two kinds -- those that
618572313efbSmrg	  # use the current revision as the major version
618672313efbSmrg	  # and those that subtract age and use age as
618772313efbSmrg	  # a minor version.  But, then there is irix
618872313efbSmrg	  # which has an extra 1 added just for fun
618972313efbSmrg	  #
619072313efbSmrg	  case $version_type in
619172313efbSmrg	  darwin|linux|osf|windows|none)
619272313efbSmrg	    func_arith $number_major + $number_minor
619372313efbSmrg	    current=$func_arith_result
619472313efbSmrg	    age="$number_minor"
619572313efbSmrg	    revision="$number_revision"
619672313efbSmrg	    ;;
619772313efbSmrg	  freebsd-aout|freebsd-elf|sunos)
619872313efbSmrg	    current="$number_major"
619972313efbSmrg	    revision="$number_minor"
620072313efbSmrg	    age="0"
620172313efbSmrg	    ;;
620272313efbSmrg	  irix|nonstopux)
620372313efbSmrg	    func_arith $number_major + $number_minor
620472313efbSmrg	    current=$func_arith_result
620572313efbSmrg	    age="$number_minor"
620672313efbSmrg	    revision="$number_minor"
620772313efbSmrg	    lt_irix_increment=no
620872313efbSmrg	    ;;
620972313efbSmrg	  esac
621072313efbSmrg	  ;;
621172313efbSmrg	no)
621272313efbSmrg	  current="$1"
621372313efbSmrg	  revision="$2"
621472313efbSmrg	  age="$3"
621572313efbSmrg	  ;;
621672313efbSmrg	esac
621772313efbSmrg
621872313efbSmrg	# Check that each of the things are valid numbers.
621972313efbSmrg	case $current in
622072313efbSmrg	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]) ;;
622172313efbSmrg	*)
622272313efbSmrg	  func_error "CURRENT \`$current' must be a nonnegative integer"
622372313efbSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
622472313efbSmrg	  ;;
622572313efbSmrg	esac
622672313efbSmrg
622772313efbSmrg	case $revision in
622872313efbSmrg	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]) ;;
622972313efbSmrg	*)
623072313efbSmrg	  func_error "REVISION \`$revision' must be a nonnegative integer"
623172313efbSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
623272313efbSmrg	  ;;
623372313efbSmrg	esac
623472313efbSmrg
623572313efbSmrg	case $age in
623672313efbSmrg	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]) ;;
623772313efbSmrg	*)
623872313efbSmrg	  func_error "AGE \`$age' must be a nonnegative integer"
623972313efbSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
624072313efbSmrg	  ;;
624172313efbSmrg	esac
624272313efbSmrg
624372313efbSmrg	if test "$age" -gt "$current"; then
624472313efbSmrg	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
624572313efbSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
624672313efbSmrg	fi
624772313efbSmrg
624872313efbSmrg	# Calculate the version variables.
624972313efbSmrg	major=
625072313efbSmrg	versuffix=
625172313efbSmrg	verstring=
625272313efbSmrg	case $version_type in
625372313efbSmrg	none) ;;
625472313efbSmrg
625572313efbSmrg	darwin)
625672313efbSmrg	  # Like Linux, but with the current version available in
625772313efbSmrg	  # verstring for coding it into the library header
625872313efbSmrg	  func_arith $current - $age
625972313efbSmrg	  major=.$func_arith_result
626072313efbSmrg	  versuffix="$major.$age.$revision"
626172313efbSmrg	  # Darwin ld doesn't like 0 for these options...
626272313efbSmrg	  func_arith $current + 1
626372313efbSmrg	  minor_current=$func_arith_result
626472313efbSmrg	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
626572313efbSmrg	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
626672313efbSmrg	  ;;
626772313efbSmrg
626872313efbSmrg	freebsd-aout)
626972313efbSmrg	  major=".$current"
627072313efbSmrg	  versuffix=".$current.$revision";
627172313efbSmrg	  ;;
627272313efbSmrg
627372313efbSmrg	freebsd-elf)
627472313efbSmrg	  major=".$current"
627572313efbSmrg	  versuffix=".$current"
627672313efbSmrg	  ;;
627772313efbSmrg
627872313efbSmrg	irix | nonstopux)
627972313efbSmrg	  if test "X$lt_irix_increment" = "Xno"; then
628072313efbSmrg	    func_arith $current - $age
628172313efbSmrg	  else
628272313efbSmrg	    func_arith $current - $age + 1
628372313efbSmrg	  fi
628472313efbSmrg	  major=$func_arith_result
628572313efbSmrg
628672313efbSmrg	  case $version_type in
628772313efbSmrg	    nonstopux) verstring_prefix=nonstopux ;;
628872313efbSmrg	    *)         verstring_prefix=sgi ;;
628972313efbSmrg	  esac
629072313efbSmrg	  verstring="$verstring_prefix$major.$revision"
629172313efbSmrg
629272313efbSmrg	  # Add in all the interfaces that we are compatible with.
629372313efbSmrg	  loop=$revision
629472313efbSmrg	  while test "$loop" -ne 0; do
629572313efbSmrg	    func_arith $revision - $loop
629672313efbSmrg	    iface=$func_arith_result
629772313efbSmrg	    func_arith $loop - 1
629872313efbSmrg	    loop=$func_arith_result
629972313efbSmrg	    verstring="$verstring_prefix$major.$iface:$verstring"
630072313efbSmrg	  done
630172313efbSmrg
630272313efbSmrg	  # Before this point, $major must not contain `.'.
630372313efbSmrg	  major=.$major
630472313efbSmrg	  versuffix="$major.$revision"
630572313efbSmrg	  ;;
630672313efbSmrg
630772313efbSmrg	linux)
630872313efbSmrg	  func_arith $current - $age
630972313efbSmrg	  major=.$func_arith_result
631072313efbSmrg	  versuffix="$major.$age.$revision"
631172313efbSmrg	  ;;
631272313efbSmrg
631372313efbSmrg	osf)
631472313efbSmrg	  func_arith $current - $age
631572313efbSmrg	  major=.$func_arith_result
631672313efbSmrg	  versuffix=".$current.$age.$revision"
631772313efbSmrg	  verstring="$current.$age.$revision"
631872313efbSmrg
631972313efbSmrg	  # Add in all the interfaces that we are compatible with.
632072313efbSmrg	  loop=$age
632172313efbSmrg	  while test "$loop" -ne 0; do
632272313efbSmrg	    func_arith $current - $loop
632372313efbSmrg	    iface=$func_arith_result
632472313efbSmrg	    func_arith $loop - 1
632572313efbSmrg	    loop=$func_arith_result
632672313efbSmrg	    verstring="$verstring:${iface}.0"
632772313efbSmrg	  done
632872313efbSmrg
632972313efbSmrg	  # Make executables depend on our current version.
633072313efbSmrg	  verstring="$verstring:${current}.0"
633172313efbSmrg	  ;;
633272313efbSmrg
633372313efbSmrg	qnx)
633472313efbSmrg	  major=".$current"
633572313efbSmrg	  versuffix=".$current"
633672313efbSmrg	  ;;
633772313efbSmrg
633872313efbSmrg	sunos)
633972313efbSmrg	  major=".$current"
634072313efbSmrg	  versuffix=".$current.$revision"
634172313efbSmrg	  ;;
634272313efbSmrg
634372313efbSmrg	windows)
634472313efbSmrg	  # Use '-' rather than '.', since we only want one
634572313efbSmrg	  # extension on DOS 8.3 filesystems.
634672313efbSmrg	  func_arith $current - $age
634772313efbSmrg	  major=$func_arith_result
634872313efbSmrg	  versuffix="-$major"
634972313efbSmrg	  ;;
635072313efbSmrg
635172313efbSmrg	*)
635272313efbSmrg	  func_fatal_configuration "unknown library version type \`$version_type'"
635372313efbSmrg	  ;;
635472313efbSmrg	esac
635572313efbSmrg
635672313efbSmrg	# Clear the version info if we defaulted, and they specified a release.
635772313efbSmrg	if test -z "$vinfo" && test -n "$release"; then
635872313efbSmrg	  major=
635972313efbSmrg	  case $version_type in
636072313efbSmrg	  darwin)
636172313efbSmrg	    # we can't check for "0.0" in archive_cmds due to quoting
636272313efbSmrg	    # problems, so we reset it completely
636372313efbSmrg	    verstring=
636472313efbSmrg	    ;;
636572313efbSmrg	  *)
636672313efbSmrg	    verstring="0.0"
636772313efbSmrg	    ;;
636872313efbSmrg	  esac
636972313efbSmrg	  if test "$need_version" = no; then
637072313efbSmrg	    versuffix=
637172313efbSmrg	  else
637272313efbSmrg	    versuffix=".0.0"
637372313efbSmrg	  fi
637472313efbSmrg	fi
637572313efbSmrg
637672313efbSmrg	# Remove version info from name if versioning should be avoided
637772313efbSmrg	if test "$avoid_version" = yes && test "$need_version" = no; then
637872313efbSmrg	  major=
637972313efbSmrg	  versuffix=
638072313efbSmrg	  verstring=""
638172313efbSmrg	fi
638272313efbSmrg
638372313efbSmrg	# Check to see if the archive will have undefined symbols.
638472313efbSmrg	if test "$allow_undefined" = yes; then
638572313efbSmrg	  if test "$allow_undefined_flag" = unsupported; then
638672313efbSmrg	    func_warning "undefined symbols not allowed in $host shared libraries"
638772313efbSmrg	    build_libtool_libs=no
638872313efbSmrg	    build_old_libs=yes
638972313efbSmrg	  fi
639072313efbSmrg	else
639172313efbSmrg	  # Don't allow undefined symbols.
639272313efbSmrg	  allow_undefined_flag="$no_undefined_flag"
639372313efbSmrg	fi
639472313efbSmrg
639572313efbSmrg      fi
639672313efbSmrg
639772313efbSmrg      func_generate_dlsyms "$libname" "$libname" "yes"
639872313efbSmrg      libobjs="$libobjs $symfileobj"
639972313efbSmrg      test "X$libobjs" = "X " && libobjs=
640072313efbSmrg
640172313efbSmrg      if test "$mode" != relink; then
640272313efbSmrg	# Remove our outputs, but don't remove object files since they
640372313efbSmrg	# may have been created when compiling PIC objects.
640472313efbSmrg	removelist=
640572313efbSmrg	tempremovelist=`$ECHO "$output_objdir/*"`
640672313efbSmrg	for p in $tempremovelist; do
640772313efbSmrg	  case $p in
640872313efbSmrg	    *.$objext | *.gcno)
640972313efbSmrg	       ;;
641072313efbSmrg	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
641172313efbSmrg	       if test "X$precious_files_regex" != "X"; then
641272313efbSmrg		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
641372313efbSmrg		 then
641472313efbSmrg		   continue
641572313efbSmrg		 fi
641672313efbSmrg	       fi
641772313efbSmrg	       removelist="$removelist $p"
641872313efbSmrg	       ;;
641972313efbSmrg	    *) ;;
642072313efbSmrg	  esac
642172313efbSmrg	done
642272313efbSmrg	test -n "$removelist" && \
642372313efbSmrg	  func_show_eval "${RM}r \$removelist"
642472313efbSmrg      fi
642572313efbSmrg
642672313efbSmrg      # Now set the variables for building old libraries.
642772313efbSmrg      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
642872313efbSmrg	oldlibs="$oldlibs $output_objdir/$libname.$libext"
642972313efbSmrg
643072313efbSmrg	# Transform .lo files to .o files.
643172313efbSmrg	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
643272313efbSmrg      fi
643372313efbSmrg
643472313efbSmrg      # Eliminate all temporary directories.
643572313efbSmrg      #for path in $notinst_path; do
643672313efbSmrg      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
643772313efbSmrg      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
643872313efbSmrg      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
643972313efbSmrg      #done
644072313efbSmrg
644172313efbSmrg      if test -n "$xrpath"; then
644272313efbSmrg	# If the user specified any rpath flags, then add them.
644372313efbSmrg	temp_xrpath=
644472313efbSmrg	for libdir in $xrpath; do
644572313efbSmrg	  temp_xrpath="$temp_xrpath -R$libdir"
644672313efbSmrg	  case "$finalize_rpath " in
644772313efbSmrg	  *" $libdir "*) ;;
644872313efbSmrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
644972313efbSmrg	  esac
645072313efbSmrg	done
645172313efbSmrg	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
645272313efbSmrg	  dependency_libs="$temp_xrpath $dependency_libs"
645372313efbSmrg	fi
645472313efbSmrg      fi
645572313efbSmrg
645672313efbSmrg      # Make sure dlfiles contains only unique files that won't be dlpreopened
645772313efbSmrg      old_dlfiles="$dlfiles"
645872313efbSmrg      dlfiles=
645972313efbSmrg      for lib in $old_dlfiles; do
646072313efbSmrg	case " $dlprefiles $dlfiles " in
646172313efbSmrg	*" $lib "*) ;;
646272313efbSmrg	*) dlfiles="$dlfiles $lib" ;;
646372313efbSmrg	esac
646472313efbSmrg      done
646572313efbSmrg
646672313efbSmrg      # Make sure dlprefiles contains only unique files
646772313efbSmrg      old_dlprefiles="$dlprefiles"
646872313efbSmrg      dlprefiles=
646972313efbSmrg      for lib in $old_dlprefiles; do
647072313efbSmrg	case "$dlprefiles " in
647172313efbSmrg	*" $lib "*) ;;
647272313efbSmrg	*) dlprefiles="$dlprefiles $lib" ;;
647372313efbSmrg	esac
647472313efbSmrg      done
647572313efbSmrg
647672313efbSmrg      if test "$build_libtool_libs" = yes; then
647772313efbSmrg	if test -n "$rpath"; then
647872313efbSmrg	  case $host in
647972313efbSmrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
648072313efbSmrg	    # these systems don't actually have a c library (as such)!
648172313efbSmrg	    ;;
648272313efbSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
648372313efbSmrg	    # Rhapsody C library is in the System framework
648472313efbSmrg	    deplibs="$deplibs System.ltframework"
648572313efbSmrg	    ;;
648672313efbSmrg	  *-*-netbsd*)
648772313efbSmrg	    # Don't link with libc until the a.out ld.so is fixed.
648872313efbSmrg	    ;;
648972313efbSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
649072313efbSmrg	    # Do not include libc due to us having libc/libc_r.
649172313efbSmrg	    ;;
649272313efbSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
649372313efbSmrg	    # Causes problems with __ctype
649472313efbSmrg	    ;;
649572313efbSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
649672313efbSmrg	    # Compiler inserts libc in the correct place for threads to work
649772313efbSmrg	    ;;
649872313efbSmrg	  *)
649972313efbSmrg	    # Add libc to deplibs on all other systems if necessary.
650072313efbSmrg	    if test "$build_libtool_need_lc" = "yes"; then
650172313efbSmrg	      deplibs="$deplibs -lc"
650272313efbSmrg	    fi
650372313efbSmrg	    ;;
650472313efbSmrg	  esac
650572313efbSmrg	fi
650672313efbSmrg
650772313efbSmrg	# Transform deplibs into only deplibs that can be linked in shared.
650872313efbSmrg	name_save=$name
650972313efbSmrg	libname_save=$libname
651072313efbSmrg	release_save=$release
651172313efbSmrg	versuffix_save=$versuffix
651272313efbSmrg	major_save=$major
651372313efbSmrg	# I'm not sure if I'm treating the release correctly.  I think
651472313efbSmrg	# release should show up in the -l (ie -lgmp5) so we don't want to
651572313efbSmrg	# add it in twice.  Is that correct?
651672313efbSmrg	release=""
651772313efbSmrg	versuffix=""
651872313efbSmrg	major=""
651972313efbSmrg	newdeplibs=
652072313efbSmrg	droppeddeps=no
652172313efbSmrg	case $deplibs_check_method in
652272313efbSmrg	pass_all)
652372313efbSmrg	  # Don't check for shared/static.  Everything works.
652472313efbSmrg	  # This might be a little naive.  We might want to check
652572313efbSmrg	  # whether the library exists or not.  But this is on
652672313efbSmrg	  # osf3 & osf4 and I'm not really sure... Just
652772313efbSmrg	  # implementing what was already the behavior.
652872313efbSmrg	  newdeplibs=$deplibs
652972313efbSmrg	  ;;
653072313efbSmrg	test_compile)
653172313efbSmrg	  # This code stresses the "libraries are programs" paradigm to its
653272313efbSmrg	  # limits. Maybe even breaks it.  We compile a program, linking it
653372313efbSmrg	  # against the deplibs as a proxy for the library.  Then we can check
653472313efbSmrg	  # whether they linked in statically or dynamically with ldd.
653572313efbSmrg	  $opt_dry_run || $RM conftest.c
653672313efbSmrg	  cat > conftest.c <<EOF
653772313efbSmrg	  int main() { return 0; }
653872313efbSmrgEOF
653972313efbSmrg	  $opt_dry_run || $RM conftest
654072313efbSmrg	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
654172313efbSmrg	    ldd_output=`ldd conftest`
654272313efbSmrg	    for i in $deplibs; do
654372313efbSmrg	      case $i in
654472313efbSmrg	      -l*)
654572313efbSmrg		func_stripname -l '' "$i"
654672313efbSmrg		name=$func_stripname_result
654772313efbSmrg		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
654872313efbSmrg		  case " $predeps $postdeps " in
654972313efbSmrg		  *" $i "*)
655072313efbSmrg		    newdeplibs="$newdeplibs $i"
655172313efbSmrg		    i=""
655272313efbSmrg		    ;;
655372313efbSmrg		  esac
655472313efbSmrg		fi
655572313efbSmrg		if test -n "$i" ; then
655672313efbSmrg		  libname=`eval "\\$ECHO \"$libname_spec\""`
655772313efbSmrg		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
655872313efbSmrg		  set dummy $deplib_matches; shift
655972313efbSmrg		  deplib_match=$1
656072313efbSmrg		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
656172313efbSmrg		    newdeplibs="$newdeplibs $i"
656272313efbSmrg		  else
656372313efbSmrg		    droppeddeps=yes
656472313efbSmrg		    $ECHO
656572313efbSmrg		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
656672313efbSmrg		    $ECHO "*** I have the capability to make that library automatically link in when"
656772313efbSmrg		    $ECHO "*** you link to this library.  But I can only do this if you have a"
656872313efbSmrg		    $ECHO "*** shared version of the library, which I believe you do not have"
656972313efbSmrg		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
657072313efbSmrg		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
657172313efbSmrg		  fi
657272313efbSmrg		fi
657372313efbSmrg		;;
657472313efbSmrg	      *)
657572313efbSmrg		newdeplibs="$newdeplibs $i"
657672313efbSmrg		;;
657772313efbSmrg	      esac
657872313efbSmrg	    done
657972313efbSmrg	  else
658072313efbSmrg	    # Error occurred in the first compile.  Let's try to salvage
658172313efbSmrg	    # the situation: Compile a separate program for each library.
658272313efbSmrg	    for i in $deplibs; do
658372313efbSmrg	      case $i in
658472313efbSmrg	      -l*)
658572313efbSmrg		func_stripname -l '' "$i"
658672313efbSmrg		name=$func_stripname_result
658772313efbSmrg		$opt_dry_run || $RM conftest
658872313efbSmrg		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
658972313efbSmrg		  ldd_output=`ldd conftest`
659072313efbSmrg		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
659172313efbSmrg		    case " $predeps $postdeps " in
659272313efbSmrg		    *" $i "*)
659372313efbSmrg		      newdeplibs="$newdeplibs $i"
659472313efbSmrg		      i=""
659572313efbSmrg		      ;;
659672313efbSmrg		    esac
659772313efbSmrg		  fi
659872313efbSmrg		  if test -n "$i" ; then
659972313efbSmrg		    libname=`eval "\\$ECHO \"$libname_spec\""`
660072313efbSmrg		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
660172313efbSmrg		    set dummy $deplib_matches; shift
660272313efbSmrg		    deplib_match=$1
660372313efbSmrg		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
660472313efbSmrg		      newdeplibs="$newdeplibs $i"
660572313efbSmrg		    else
660672313efbSmrg		      droppeddeps=yes
660772313efbSmrg		      $ECHO
660872313efbSmrg		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
660972313efbSmrg		      $ECHO "*** I have the capability to make that library automatically link in when"
661072313efbSmrg		      $ECHO "*** you link to this library.  But I can only do this if you have a"
661172313efbSmrg		      $ECHO "*** shared version of the library, which you do not appear to have"
661272313efbSmrg		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
661372313efbSmrg		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
661472313efbSmrg		    fi
661572313efbSmrg		  fi
661672313efbSmrg		else
661772313efbSmrg		  droppeddeps=yes
661872313efbSmrg		  $ECHO
661972313efbSmrg		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
662072313efbSmrg		  $ECHO "*** make it link in!  You will probably need to install it or some"
662172313efbSmrg		  $ECHO "*** library that it depends on before this library will be fully"
662272313efbSmrg		  $ECHO "*** functional.  Installing it before continuing would be even better."
662372313efbSmrg		fi
662472313efbSmrg		;;
662572313efbSmrg	      *)
662672313efbSmrg		newdeplibs="$newdeplibs $i"
662772313efbSmrg		;;
662872313efbSmrg	      esac
662972313efbSmrg	    done
663072313efbSmrg	  fi
663172313efbSmrg	  ;;
663272313efbSmrg	file_magic*)
663372313efbSmrg	  set dummy $deplibs_check_method; shift
663472313efbSmrg	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
663572313efbSmrg	  for a_deplib in $deplibs; do
663672313efbSmrg	    case $a_deplib in
663772313efbSmrg	    -l*)
663872313efbSmrg	      func_stripname -l '' "$a_deplib"
663972313efbSmrg	      name=$func_stripname_result
664072313efbSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
664172313efbSmrg		case " $predeps $postdeps " in
664272313efbSmrg		*" $a_deplib "*)
664372313efbSmrg		  newdeplibs="$newdeplibs $a_deplib"
664472313efbSmrg		  a_deplib=""
664572313efbSmrg		  ;;
664672313efbSmrg		esac
664772313efbSmrg	      fi
664872313efbSmrg	      if test -n "$a_deplib" ; then
664972313efbSmrg		libname=`eval "\\$ECHO \"$libname_spec\""`
665072313efbSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
665172313efbSmrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
665272313efbSmrg		  for potent_lib in $potential_libs; do
665372313efbSmrg		      # Follow soft links.
665472313efbSmrg		      if ls -lLd "$potent_lib" 2>/dev/null |
665572313efbSmrg			 $GREP " -> " >/dev/null; then
665672313efbSmrg			continue
665772313efbSmrg		      fi
665872313efbSmrg		      # The statement above tries to avoid entering an
665972313efbSmrg		      # endless loop below, in case of cyclic links.
666072313efbSmrg		      # We might still enter an endless loop, since a link
666172313efbSmrg		      # loop can be closed while we follow links,
666272313efbSmrg		      # but so what?
666372313efbSmrg		      potlib="$potent_lib"
666472313efbSmrg		      while test -h "$potlib" 2>/dev/null; do
666572313efbSmrg			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
666672313efbSmrg			case $potliblink in
666772313efbSmrg			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
666872313efbSmrg			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
666972313efbSmrg			esac
667072313efbSmrg		      done
667172313efbSmrg		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
667272313efbSmrg			 $SED -e 10q |
667372313efbSmrg			 $EGREP "$file_magic_regex" > /dev/null; then
667472313efbSmrg			newdeplibs="$newdeplibs $a_deplib"
667572313efbSmrg			a_deplib=""
667672313efbSmrg			break 2
667772313efbSmrg		      fi
667872313efbSmrg		  done
667972313efbSmrg		done
668072313efbSmrg	      fi
668172313efbSmrg	      if test -n "$a_deplib" ; then
668272313efbSmrg		droppeddeps=yes
668372313efbSmrg		$ECHO
668472313efbSmrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
668572313efbSmrg		$ECHO "*** I have the capability to make that library automatically link in when"
668672313efbSmrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
668772313efbSmrg		$ECHO "*** shared version of the library, which you do not appear to have"
668872313efbSmrg		$ECHO "*** because I did check the linker path looking for a file starting"
668972313efbSmrg		if test -z "$potlib" ; then
669072313efbSmrg		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
669172313efbSmrg		else
669272313efbSmrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
669372313efbSmrg		  $ECHO "*** using a file magic. Last file checked: $potlib"
669472313efbSmrg		fi
669572313efbSmrg	      fi
669672313efbSmrg	      ;;
669772313efbSmrg	    *)
669872313efbSmrg	      # Add a -L argument.
669972313efbSmrg	      newdeplibs="$newdeplibs $a_deplib"
670072313efbSmrg	      ;;
670172313efbSmrg	    esac
670272313efbSmrg	  done # Gone through all deplibs.
670372313efbSmrg	  ;;
670472313efbSmrg	match_pattern*)
670572313efbSmrg	  set dummy $deplibs_check_method; shift
670672313efbSmrg	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
670772313efbSmrg	  for a_deplib in $deplibs; do
670872313efbSmrg	    case $a_deplib in
670972313efbSmrg	    -l*)
671072313efbSmrg	      func_stripname -l '' "$a_deplib"
671172313efbSmrg	      name=$func_stripname_result
671272313efbSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
671372313efbSmrg		case " $predeps $postdeps " in
671472313efbSmrg		*" $a_deplib "*)
671572313efbSmrg		  newdeplibs="$newdeplibs $a_deplib"
671672313efbSmrg		  a_deplib=""
671772313efbSmrg		  ;;
671872313efbSmrg		esac
671972313efbSmrg	      fi
672072313efbSmrg	      if test -n "$a_deplib" ; then
672172313efbSmrg		libname=`eval "\\$ECHO \"$libname_spec\""`
672272313efbSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
672372313efbSmrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
672472313efbSmrg		  for potent_lib in $potential_libs; do
672572313efbSmrg		    potlib="$potent_lib" # see symlink-check above in file_magic test
672672313efbSmrg		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
672772313efbSmrg		       $EGREP "$match_pattern_regex" > /dev/null; then
672872313efbSmrg		      newdeplibs="$newdeplibs $a_deplib"
672972313efbSmrg		      a_deplib=""
673072313efbSmrg		      break 2
673172313efbSmrg		    fi
673272313efbSmrg		  done
673372313efbSmrg		done
673472313efbSmrg	      fi
673572313efbSmrg	      if test -n "$a_deplib" ; then
673672313efbSmrg		droppeddeps=yes
673772313efbSmrg		$ECHO
673872313efbSmrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
673972313efbSmrg		$ECHO "*** I have the capability to make that library automatically link in when"
674072313efbSmrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
674172313efbSmrg		$ECHO "*** shared version of the library, which you do not appear to have"
674272313efbSmrg		$ECHO "*** because I did check the linker path looking for a file starting"
674372313efbSmrg		if test -z "$potlib" ; then
674472313efbSmrg		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
674572313efbSmrg		else
674672313efbSmrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
674772313efbSmrg		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
674872313efbSmrg		fi
674972313efbSmrg	      fi
675072313efbSmrg	      ;;
675172313efbSmrg	    *)
675272313efbSmrg	      # Add a -L argument.
675372313efbSmrg	      newdeplibs="$newdeplibs $a_deplib"
675472313efbSmrg	      ;;
675572313efbSmrg	    esac
675672313efbSmrg	  done # Gone through all deplibs.
675772313efbSmrg	  ;;
675872313efbSmrg	none | unknown | *)
675972313efbSmrg	  newdeplibs=""
676072313efbSmrg	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
676172313efbSmrg	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
676272313efbSmrg	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
676372313efbSmrg	    for i in $predeps $postdeps ; do
676472313efbSmrg	      # can't use Xsed below, because $i might contain '/'
676572313efbSmrg	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
676672313efbSmrg	    done
676772313efbSmrg	  fi
676872313efbSmrg	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
676972313efbSmrg	     $GREP . >/dev/null; then
677072313efbSmrg	    $ECHO
677172313efbSmrg	    if test "X$deplibs_check_method" = "Xnone"; then
677272313efbSmrg	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
677372313efbSmrg	    else
677472313efbSmrg	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
677572313efbSmrg	    fi
677672313efbSmrg	    $ECHO "*** All declared inter-library dependencies are being dropped."
677772313efbSmrg	    droppeddeps=yes
677872313efbSmrg	  fi
677972313efbSmrg	  ;;
678072313efbSmrg	esac
678172313efbSmrg	versuffix=$versuffix_save
678272313efbSmrg	major=$major_save
678372313efbSmrg	release=$release_save
678472313efbSmrg	libname=$libname_save
678572313efbSmrg	name=$name_save
678672313efbSmrg
678772313efbSmrg	case $host in
678872313efbSmrg	*-*-rhapsody* | *-*-darwin1.[012])
678972313efbSmrg	  # On Rhapsody replace the C library with the System framework
679072313efbSmrg	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
679172313efbSmrg	  ;;
679272313efbSmrg	esac
679372313efbSmrg
679472313efbSmrg	if test "$droppeddeps" = yes; then
679572313efbSmrg	  if test "$module" = yes; then
679672313efbSmrg	    $ECHO
679772313efbSmrg	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
679872313efbSmrg	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
679972313efbSmrg	    $ECHO "*** a static module, that should work as long as the dlopening"
680072313efbSmrg	    $ECHO "*** application is linked with the -dlopen flag."
680172313efbSmrg	    if test -z "$global_symbol_pipe"; then
680272313efbSmrg	      $ECHO
680372313efbSmrg	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
680472313efbSmrg	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
680572313efbSmrg	      $ECHO "*** not find such a program.  So, this module is probably useless."
680672313efbSmrg	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
680772313efbSmrg	    fi
680872313efbSmrg	    if test "$build_old_libs" = no; then
680972313efbSmrg	      oldlibs="$output_objdir/$libname.$libext"
681072313efbSmrg	      build_libtool_libs=module
681172313efbSmrg	      build_old_libs=yes
681272313efbSmrg	    else
681372313efbSmrg	      build_libtool_libs=no
681472313efbSmrg	    fi
681572313efbSmrg	  else
681672313efbSmrg	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
681772313efbSmrg	    $ECHO "*** automatically added whenever a program is linked with this library"
681872313efbSmrg	    $ECHO "*** or is declared to -dlopen it."
681972313efbSmrg
682072313efbSmrg	    if test "$allow_undefined" = no; then
682172313efbSmrg	      $ECHO
682272313efbSmrg	      $ECHO "*** Since this library must not contain undefined symbols,"
682372313efbSmrg	      $ECHO "*** because either the platform does not support them or"
682472313efbSmrg	      $ECHO "*** it was explicitly requested with -no-undefined,"
682572313efbSmrg	      $ECHO "*** libtool will only create a static version of it."
682672313efbSmrg	      if test "$build_old_libs" = no; then
682772313efbSmrg		oldlibs="$output_objdir/$libname.$libext"
682872313efbSmrg		build_libtool_libs=module
682972313efbSmrg		build_old_libs=yes
683072313efbSmrg	      else
683172313efbSmrg		build_libtool_libs=no
683272313efbSmrg	      fi
683372313efbSmrg	    fi
683472313efbSmrg	  fi
683572313efbSmrg	fi
683672313efbSmrg	# Done checking deplibs!
683772313efbSmrg	deplibs=$newdeplibs
683872313efbSmrg      fi
683972313efbSmrg      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
684072313efbSmrg      case $host in
684172313efbSmrg	*-*-darwin*)
684272313efbSmrg	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
684372313efbSmrg	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
684472313efbSmrg	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
684572313efbSmrg	  ;;
684672313efbSmrg      esac
684772313efbSmrg
684872313efbSmrg      # move library search paths that coincide with paths to not yet
684972313efbSmrg      # installed libraries to the beginning of the library search list
685072313efbSmrg      new_libs=
685172313efbSmrg      for path in $notinst_path; do
685272313efbSmrg	case " $new_libs " in
685372313efbSmrg	*" -L$path/$objdir "*) ;;
685472313efbSmrg	*)
685572313efbSmrg	  case " $deplibs " in
685672313efbSmrg	  *" -L$path/$objdir "*)
685772313efbSmrg	    new_libs="$new_libs -L$path/$objdir" ;;
685872313efbSmrg	  esac
685972313efbSmrg	  ;;
686072313efbSmrg	esac
686172313efbSmrg      done
686272313efbSmrg      for deplib in $deplibs; do
686372313efbSmrg	case $deplib in
686472313efbSmrg	-L*)
686572313efbSmrg	  case " $new_libs " in
686672313efbSmrg	  *" $deplib "*) ;;
686772313efbSmrg	  *) new_libs="$new_libs $deplib" ;;
686872313efbSmrg	  esac
686972313efbSmrg	  ;;
687072313efbSmrg	*) new_libs="$new_libs $deplib" ;;
687172313efbSmrg	esac
687272313efbSmrg      done
687372313efbSmrg      deplibs="$new_libs"
687472313efbSmrg
687572313efbSmrg      # All the library-specific variables (install_libdir is set above).
687672313efbSmrg      library_names=
687772313efbSmrg      old_library=
687872313efbSmrg      dlname=
687972313efbSmrg
688072313efbSmrg      # Test again, we may have decided not to build it any more
688172313efbSmrg      if test "$build_libtool_libs" = yes; then
688272313efbSmrg	if test "$hardcode_into_libs" = yes; then
688372313efbSmrg	  # Hardcode the library paths
688472313efbSmrg	  hardcode_libdirs=
688572313efbSmrg	  dep_rpath=
688672313efbSmrg	  rpath="$finalize_rpath"
688772313efbSmrg	  test "$mode" != relink && rpath="$compile_rpath$rpath"
688872313efbSmrg	  for libdir in $rpath; do
688972313efbSmrg	    if test -n "$hardcode_libdir_flag_spec"; then
689072313efbSmrg	      if test -n "$hardcode_libdir_separator"; then
689172313efbSmrg		if test -z "$hardcode_libdirs"; then
689272313efbSmrg		  hardcode_libdirs="$libdir"
689372313efbSmrg		else
689472313efbSmrg		  # Just accumulate the unique libdirs.
689572313efbSmrg		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
689672313efbSmrg		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
689772313efbSmrg		    ;;
689872313efbSmrg		  *)
689972313efbSmrg		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
690072313efbSmrg		    ;;
690172313efbSmrg		  esac
690272313efbSmrg		fi
690372313efbSmrg	      else
690472313efbSmrg		eval flag=\"$hardcode_libdir_flag_spec\"
690572313efbSmrg		dep_rpath="$dep_rpath $flag"
690672313efbSmrg	      fi
690772313efbSmrg	    elif test -n "$runpath_var"; then
690872313efbSmrg	      case "$perm_rpath " in
690972313efbSmrg	      *" $libdir "*) ;;
691072313efbSmrg	      *) perm_rpath="$perm_rpath $libdir" ;;
691172313efbSmrg	      esac
691272313efbSmrg	    fi
691372313efbSmrg	  done
691472313efbSmrg	  # Substitute the hardcoded libdirs into the rpath.
691572313efbSmrg	  if test -n "$hardcode_libdir_separator" &&
691672313efbSmrg	     test -n "$hardcode_libdirs"; then
691772313efbSmrg	    libdir="$hardcode_libdirs"
691872313efbSmrg	    if test -n "$hardcode_libdir_flag_spec_ld"; then
691972313efbSmrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
692072313efbSmrg	    else
692172313efbSmrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
692272313efbSmrg	    fi
692372313efbSmrg	  fi
692472313efbSmrg	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
692572313efbSmrg	    # We should set the runpath_var.
692672313efbSmrg	    rpath=
692772313efbSmrg	    for dir in $perm_rpath; do
692872313efbSmrg	      rpath="$rpath$dir:"
692972313efbSmrg	    done
693072313efbSmrg	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
693172313efbSmrg	  fi
693272313efbSmrg	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
693372313efbSmrg	fi
6934bdcaa8d0Smrg
693572313efbSmrg	shlibpath="$finalize_shlibpath"
693672313efbSmrg	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
693772313efbSmrg	if test -n "$shlibpath"; then
693872313efbSmrg	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
693972313efbSmrg	fi
6940bdcaa8d0Smrg
694172313efbSmrg	# Get the real and link names of the library.
694272313efbSmrg	eval shared_ext=\"$shrext_cmds\"
694372313efbSmrg	eval library_names=\"$library_names_spec\"
694472313efbSmrg	set dummy $library_names
694572313efbSmrg	shift
694672313efbSmrg	realname="$1"
694772313efbSmrg	shift
6948bdcaa8d0Smrg
694972313efbSmrg	if test -n "$soname_spec"; then
695072313efbSmrg	  eval soname=\"$soname_spec\"
695172313efbSmrg	else
695272313efbSmrg	  soname="$realname"
695372313efbSmrg	fi
695472313efbSmrg	if test -z "$dlname"; then
695572313efbSmrg	  dlname=$soname
695672313efbSmrg	fi
6957bdcaa8d0Smrg
695872313efbSmrg	lib="$output_objdir/$realname"
695972313efbSmrg	linknames=
696072313efbSmrg	for link
696172313efbSmrg	do
696272313efbSmrg	  linknames="$linknames $link"
696372313efbSmrg	done
6964bdcaa8d0Smrg
696572313efbSmrg	# Use standard objects if they are pic
696672313efbSmrg	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
696772313efbSmrg	test "X$libobjs" = "X " && libobjs=
6968bdcaa8d0Smrg
696972313efbSmrg	delfiles=
697072313efbSmrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
697172313efbSmrg	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
697272313efbSmrg	  export_symbols="$output_objdir/$libname.uexp"
697372313efbSmrg	  delfiles="$delfiles $export_symbols"
697472313efbSmrg	fi
6975bdcaa8d0Smrg
697672313efbSmrg	orig_export_symbols=
697772313efbSmrg	case $host_os in
697872313efbSmrg	cygwin* | mingw* | cegcc*)
697972313efbSmrg	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
698072313efbSmrg	    # exporting using user supplied symfile
698172313efbSmrg	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
698272313efbSmrg	      # and it's NOT already a .def file. Must figure out
698372313efbSmrg	      # which of the given symbols are data symbols and tag
698472313efbSmrg	      # them as such. So, trigger use of export_symbols_cmds.
698572313efbSmrg	      # export_symbols gets reassigned inside the "prepare
698672313efbSmrg	      # the list of exported symbols" if statement, so the
698772313efbSmrg	      # include_expsyms logic still works.
698872313efbSmrg	      orig_export_symbols="$export_symbols"
698972313efbSmrg	      export_symbols=
699072313efbSmrg	      always_export_symbols=yes
699172313efbSmrg	    fi
699272313efbSmrg	  fi
699372313efbSmrg	  ;;
699472313efbSmrg	esac
6995bdcaa8d0Smrg
699672313efbSmrg	# Prepare the list of exported symbols
699772313efbSmrg	if test -z "$export_symbols"; then
699872313efbSmrg	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
699972313efbSmrg	    func_verbose "generating symbol list for \`$libname.la'"
700072313efbSmrg	    export_symbols="$output_objdir/$libname.exp"
700172313efbSmrg	    $opt_dry_run || $RM $export_symbols
700272313efbSmrg	    cmds=$export_symbols_cmds
700372313efbSmrg	    save_ifs="$IFS"; IFS='~'
700472313efbSmrg	    for cmd in $cmds; do
700572313efbSmrg	      IFS="$save_ifs"
700672313efbSmrg	      eval cmd=\"$cmd\"
700772313efbSmrg	      func_len " $cmd"
700872313efbSmrg	      len=$func_len_result
700972313efbSmrg	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
701072313efbSmrg		func_show_eval "$cmd" 'exit $?'
701172313efbSmrg		skipped_export=false
701272313efbSmrg	      else
701372313efbSmrg		# The command line is too long to execute in one step.
701472313efbSmrg		func_verbose "using reloadable object file for export list..."
701572313efbSmrg		skipped_export=:
701672313efbSmrg		# Break out early, otherwise skipped_export may be
701772313efbSmrg		# set to false by a later but shorter cmd.
701872313efbSmrg		break
701972313efbSmrg	      fi
702072313efbSmrg	    done
702172313efbSmrg	    IFS="$save_ifs"
702272313efbSmrg	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
702372313efbSmrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
702472313efbSmrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
702572313efbSmrg	    fi
702672313efbSmrg	  fi
702772313efbSmrg	fi
7028bdcaa8d0Smrg
702972313efbSmrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
703072313efbSmrg	  tmp_export_symbols="$export_symbols"
703172313efbSmrg	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
703272313efbSmrg	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
703372313efbSmrg	fi
7034bdcaa8d0Smrg
703572313efbSmrg	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
703672313efbSmrg	  # The given exports_symbols file has to be filtered, so filter it.
703772313efbSmrg	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
703872313efbSmrg	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
703972313efbSmrg	  # 's' commands which not all seds can handle. GNU sed should be fine
704072313efbSmrg	  # though. Also, the filter scales superlinearly with the number of
704172313efbSmrg	  # global variables. join(1) would be nice here, but unfortunately
704272313efbSmrg	  # isn't a blessed tool.
704372313efbSmrg	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
704472313efbSmrg	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
704572313efbSmrg	  export_symbols=$output_objdir/$libname.def
704672313efbSmrg	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
7047bdcaa8d0Smrg	fi
7048bdcaa8d0Smrg
704972313efbSmrg	tmp_deplibs=
705072313efbSmrg	for test_deplib in $deplibs; do
705172313efbSmrg	  case " $convenience " in
705272313efbSmrg	  *" $test_deplib "*) ;;
705372313efbSmrg	  *)
705472313efbSmrg	    tmp_deplibs="$tmp_deplibs $test_deplib"
705572313efbSmrg	    ;;
705672313efbSmrg	  esac
705772313efbSmrg	done
705872313efbSmrg	deplibs="$tmp_deplibs"
7059bdcaa8d0Smrg
706072313efbSmrg	if test -n "$convenience"; then
706172313efbSmrg	  if test -n "$whole_archive_flag_spec" &&
706272313efbSmrg	    test "$compiler_needs_object" = yes &&
706372313efbSmrg	    test -z "$libobjs"; then
706472313efbSmrg	    # extract the archives, so we have objects to list.
706572313efbSmrg	    # TODO: could optimize this to just extract one archive.
706672313efbSmrg	    whole_archive_flag_spec=
706772313efbSmrg	  fi
706872313efbSmrg	  if test -n "$whole_archive_flag_spec"; then
706972313efbSmrg	    save_libobjs=$libobjs
707072313efbSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
707172313efbSmrg	    test "X$libobjs" = "X " && libobjs=
707272313efbSmrg	  else
707372313efbSmrg	    gentop="$output_objdir/${outputname}x"
707472313efbSmrg	    generated="$generated $gentop"
7075bdcaa8d0Smrg
707672313efbSmrg	    func_extract_archives $gentop $convenience
707772313efbSmrg	    libobjs="$libobjs $func_extract_archives_result"
707872313efbSmrg	    test "X$libobjs" = "X " && libobjs=
707972313efbSmrg	  fi
708072313efbSmrg	fi
7081bdcaa8d0Smrg
708272313efbSmrg	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
708372313efbSmrg	  eval flag=\"$thread_safe_flag_spec\"
708472313efbSmrg	  linker_flags="$linker_flags $flag"
708572313efbSmrg	fi
7086bdcaa8d0Smrg
708772313efbSmrg	# Make a backup of the uninstalled library when relinking
708872313efbSmrg	if test "$mode" = relink; then
708972313efbSmrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
7090bdcaa8d0Smrg	fi
7091bdcaa8d0Smrg
709272313efbSmrg	# Do each of the archive commands.
709372313efbSmrg	if test "$module" = yes && test -n "$module_cmds" ; then
709472313efbSmrg	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
709572313efbSmrg	    eval test_cmds=\"$module_expsym_cmds\"
709672313efbSmrg	    cmds=$module_expsym_cmds
709772313efbSmrg	  else
709872313efbSmrg	    eval test_cmds=\"$module_cmds\"
709972313efbSmrg	    cmds=$module_cmds
710072313efbSmrg	  fi
710172313efbSmrg	else
710272313efbSmrg	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
710372313efbSmrg	    eval test_cmds=\"$archive_expsym_cmds\"
710472313efbSmrg	    cmds=$archive_expsym_cmds
710572313efbSmrg	  else
710672313efbSmrg	    eval test_cmds=\"$archive_cmds\"
710772313efbSmrg	    cmds=$archive_cmds
710872313efbSmrg	  fi
7109bdcaa8d0Smrg	fi
7110bdcaa8d0Smrg
711172313efbSmrg	if test "X$skipped_export" != "X:" &&
711272313efbSmrg	   func_len " $test_cmds" &&
711372313efbSmrg	   len=$func_len_result &&
711472313efbSmrg	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
711572313efbSmrg	  :
711672313efbSmrg	else
711772313efbSmrg	  # The command line is too long to link in one step, link piecewise
711872313efbSmrg	  # or, if using GNU ld and skipped_export is not :, use a linker
711972313efbSmrg	  # script.
7120bdcaa8d0Smrg
712172313efbSmrg	  # Save the value of $output and $libobjs because we want to
712272313efbSmrg	  # use them later.  If we have whole_archive_flag_spec, we
712372313efbSmrg	  # want to use save_libobjs as it was before
712472313efbSmrg	  # whole_archive_flag_spec was expanded, because we can't
712572313efbSmrg	  # assume the linker understands whole_archive_flag_spec.
712672313efbSmrg	  # This may have to be revisited, in case too many
712772313efbSmrg	  # convenience libraries get linked in and end up exceeding
712872313efbSmrg	  # the spec.
712972313efbSmrg	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
713072313efbSmrg	    save_libobjs=$libobjs
713172313efbSmrg	  fi
713272313efbSmrg	  save_output=$output
713372313efbSmrg	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
7134bdcaa8d0Smrg
713572313efbSmrg	  # Clear the reloadable object creation command queue and
713672313efbSmrg	  # initialize k to one.
713772313efbSmrg	  test_cmds=
713872313efbSmrg	  concat_cmds=
713972313efbSmrg	  objlist=
714072313efbSmrg	  last_robj=
714172313efbSmrg	  k=1
7142bdcaa8d0Smrg
714372313efbSmrg	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
714472313efbSmrg	    output=${output_objdir}/${output_la}.lnkscript
714572313efbSmrg	    func_verbose "creating GNU ld script: $output"
714672313efbSmrg	    $ECHO 'INPUT (' > $output
714772313efbSmrg	    for obj in $save_libobjs
714872313efbSmrg	    do
714972313efbSmrg	      $ECHO "$obj" >> $output
715072313efbSmrg	    done
715172313efbSmrg	    $ECHO ')' >> $output
715272313efbSmrg	    delfiles="$delfiles $output"
715372313efbSmrg	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
715472313efbSmrg	    output=${output_objdir}/${output_la}.lnk
715572313efbSmrg	    func_verbose "creating linker input file list: $output"
715672313efbSmrg	    : > $output
715772313efbSmrg	    set x $save_libobjs
715872313efbSmrg	    shift
715972313efbSmrg	    firstobj=
716072313efbSmrg	    if test "$compiler_needs_object" = yes; then
716172313efbSmrg	      firstobj="$1 "
716272313efbSmrg	      shift
716372313efbSmrg	    fi
716472313efbSmrg	    for obj
716572313efbSmrg	    do
716672313efbSmrg	      $ECHO "$obj" >> $output
716772313efbSmrg	    done
716872313efbSmrg	    delfiles="$delfiles $output"
716972313efbSmrg	    output=$firstobj\"$file_list_spec$output\"
717072313efbSmrg	  else
717172313efbSmrg	    if test -n "$save_libobjs"; then
717272313efbSmrg	      func_verbose "creating reloadable object files..."
717372313efbSmrg	      output=$output_objdir/$output_la-${k}.$objext
717472313efbSmrg	      eval test_cmds=\"$reload_cmds\"
717572313efbSmrg	      func_len " $test_cmds"
717672313efbSmrg	      len0=$func_len_result
717772313efbSmrg	      len=$len0
717872313efbSmrg
717972313efbSmrg	      # Loop over the list of objects to be linked.
718072313efbSmrg	      for obj in $save_libobjs
718172313efbSmrg	      do
718272313efbSmrg		func_len " $obj"
718372313efbSmrg		func_arith $len + $func_len_result
718472313efbSmrg		len=$func_arith_result
718572313efbSmrg		if test "X$objlist" = X ||
718672313efbSmrg		   test "$len" -lt "$max_cmd_len"; then
718772313efbSmrg		  func_append objlist " $obj"
718872313efbSmrg		else
718972313efbSmrg		  # The command $test_cmds is almost too long, add a
719072313efbSmrg		  # command to the queue.
719172313efbSmrg		  if test "$k" -eq 1 ; then
719272313efbSmrg		    # The first file doesn't have a previous command to add.
719372313efbSmrg		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
719472313efbSmrg		  else
719572313efbSmrg		    # All subsequent reloadable object files will link in
719672313efbSmrg		    # the last one created.
719772313efbSmrg		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
719872313efbSmrg		  fi
719972313efbSmrg		  last_robj=$output_objdir/$output_la-${k}.$objext
720072313efbSmrg		  func_arith $k + 1
720172313efbSmrg		  k=$func_arith_result
720272313efbSmrg		  output=$output_objdir/$output_la-${k}.$objext
720372313efbSmrg		  objlist=$obj
720472313efbSmrg		  func_len " $last_robj"
720572313efbSmrg		  func_arith $len0 + $func_len_result
720672313efbSmrg		  len=$func_arith_result
720772313efbSmrg		fi
720872313efbSmrg	      done
720972313efbSmrg	      # Handle the remaining objects by creating one last
721072313efbSmrg	      # reloadable object file.  All subsequent reloadable object
721172313efbSmrg	      # files will link in the last one created.
721272313efbSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
721372313efbSmrg	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
721472313efbSmrg	      if test -n "$last_robj"; then
721572313efbSmrg	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
721672313efbSmrg	      fi
721772313efbSmrg	      delfiles="$delfiles $output"
7218bdcaa8d0Smrg
721972313efbSmrg	    else
722072313efbSmrg	      output=
722172313efbSmrg	    fi
7222bdcaa8d0Smrg
722372313efbSmrg	    if ${skipped_export-false}; then
722472313efbSmrg	      func_verbose "generating symbol list for \`$libname.la'"
722572313efbSmrg	      export_symbols="$output_objdir/$libname.exp"
722672313efbSmrg	      $opt_dry_run || $RM $export_symbols
722772313efbSmrg	      libobjs=$output
722872313efbSmrg	      # Append the command to create the export file.
722972313efbSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
723072313efbSmrg	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
723172313efbSmrg	      if test -n "$last_robj"; then
723272313efbSmrg		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
723372313efbSmrg	      fi
723472313efbSmrg	    fi
7235bdcaa8d0Smrg
723672313efbSmrg	    test -n "$save_libobjs" &&
723772313efbSmrg	      func_verbose "creating a temporary reloadable object file: $output"
7238bdcaa8d0Smrg
723972313efbSmrg	    # Loop through the commands generated above and execute them.
724072313efbSmrg	    save_ifs="$IFS"; IFS='~'
724172313efbSmrg	    for cmd in $concat_cmds; do
724272313efbSmrg	      IFS="$save_ifs"
724372313efbSmrg	      $opt_silent || {
724472313efbSmrg		  func_quote_for_expand "$cmd"
724572313efbSmrg		  eval "func_echo $func_quote_for_expand_result"
724672313efbSmrg	      }
724772313efbSmrg	      $opt_dry_run || eval "$cmd" || {
724872313efbSmrg		lt_exit=$?
724972313efbSmrg
725072313efbSmrg		# Restore the uninstalled library and exit
725172313efbSmrg		if test "$mode" = relink; then
725272313efbSmrg		  ( cd "$output_objdir" && \
725372313efbSmrg		    $RM "${realname}T" && \
725472313efbSmrg		    $MV "${realname}U" "$realname" )
725572313efbSmrg		fi
7256bdcaa8d0Smrg
725772313efbSmrg		exit $lt_exit
725872313efbSmrg	      }
725972313efbSmrg	    done
726072313efbSmrg	    IFS="$save_ifs"
726172313efbSmrg
726272313efbSmrg	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
726372313efbSmrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
726472313efbSmrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
7265bdcaa8d0Smrg	    fi
7266bdcaa8d0Smrg	  fi
7267bdcaa8d0Smrg
726872313efbSmrg          if ${skipped_export-false}; then
726972313efbSmrg	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
727072313efbSmrg	      tmp_export_symbols="$export_symbols"
727172313efbSmrg	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
727272313efbSmrg	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
727372313efbSmrg	    fi
7274bdcaa8d0Smrg
727572313efbSmrg	    if test -n "$orig_export_symbols"; then
727672313efbSmrg	      # The given exports_symbols file has to be filtered, so filter it.
727772313efbSmrg	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
727872313efbSmrg	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
727972313efbSmrg	      # 's' commands which not all seds can handle. GNU sed should be fine
728072313efbSmrg	      # though. Also, the filter scales superlinearly with the number of
728172313efbSmrg	      # global variables. join(1) would be nice here, but unfortunately
728272313efbSmrg	      # isn't a blessed tool.
728372313efbSmrg	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
728472313efbSmrg	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
728572313efbSmrg	      export_symbols=$output_objdir/$libname.def
728672313efbSmrg	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
728772313efbSmrg	    fi
728872313efbSmrg	  fi
7289bdcaa8d0Smrg
729072313efbSmrg	  libobjs=$output
729172313efbSmrg	  # Restore the value of output.
729272313efbSmrg	  output=$save_output
7293bdcaa8d0Smrg
729472313efbSmrg	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
729572313efbSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
729672313efbSmrg	    test "X$libobjs" = "X " && libobjs=
729772313efbSmrg	  fi
729872313efbSmrg	  # Expand the library linking commands again to reset the
729972313efbSmrg	  # value of $libobjs for piecewise linking.
730072313efbSmrg
730172313efbSmrg	  # Do each of the archive commands.
730272313efbSmrg	  if test "$module" = yes && test -n "$module_cmds" ; then
730372313efbSmrg	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
730472313efbSmrg	      cmds=$module_expsym_cmds
7305bdcaa8d0Smrg	    else
730672313efbSmrg	      cmds=$module_cmds
7307bdcaa8d0Smrg	    fi
7308bdcaa8d0Smrg	  else
730972313efbSmrg	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
731072313efbSmrg	      cmds=$archive_expsym_cmds
731172313efbSmrg	    else
731272313efbSmrg	      cmds=$archive_cmds
731372313efbSmrg	    fi
7314bdcaa8d0Smrg	  fi
7315bdcaa8d0Smrg	fi
7316bdcaa8d0Smrg
731772313efbSmrg	if test -n "$delfiles"; then
731872313efbSmrg	  # Append the command to remove temporary files to $cmds.
731972313efbSmrg	  eval cmds=\"\$cmds~\$RM $delfiles\"
732072313efbSmrg	fi
7321bdcaa8d0Smrg
732272313efbSmrg	# Add any objects from preloaded convenience libraries
732372313efbSmrg	if test -n "$dlprefiles"; then
732472313efbSmrg	  gentop="$output_objdir/${outputname}x"
732572313efbSmrg	  generated="$generated $gentop"
7326bdcaa8d0Smrg
732772313efbSmrg	  func_extract_archives $gentop $dlprefiles
732872313efbSmrg	  libobjs="$libobjs $func_extract_archives_result"
732972313efbSmrg	  test "X$libobjs" = "X " && libobjs=
7330bdcaa8d0Smrg	fi
7331bdcaa8d0Smrg
733272313efbSmrg	save_ifs="$IFS"; IFS='~'
733372313efbSmrg	for cmd in $cmds; do
733472313efbSmrg	  IFS="$save_ifs"
733572313efbSmrg	  eval cmd=\"$cmd\"
733672313efbSmrg	  $opt_silent || {
733772313efbSmrg	    func_quote_for_expand "$cmd"
733872313efbSmrg	    eval "func_echo $func_quote_for_expand_result"
733972313efbSmrg	  }
734072313efbSmrg	  $opt_dry_run || eval "$cmd" || {
734172313efbSmrg	    lt_exit=$?
7342bdcaa8d0Smrg
734372313efbSmrg	    # Restore the uninstalled library and exit
734472313efbSmrg	    if test "$mode" = relink; then
734572313efbSmrg	      ( cd "$output_objdir" && \
734672313efbSmrg	        $RM "${realname}T" && \
734772313efbSmrg		$MV "${realname}U" "$realname" )
734872313efbSmrg	    fi
734972313efbSmrg
735072313efbSmrg	    exit $lt_exit
735172313efbSmrg	  }
735272313efbSmrg	done
735372313efbSmrg	IFS="$save_ifs"
735472313efbSmrg
735572313efbSmrg	# Restore the uninstalled library and exit
735672313efbSmrg	if test "$mode" = relink; then
735772313efbSmrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
735872313efbSmrg
735972313efbSmrg	  if test -n "$convenience"; then
736072313efbSmrg	    if test -z "$whole_archive_flag_spec"; then
736172313efbSmrg	      func_show_eval '${RM}r "$gentop"'
7362bdcaa8d0Smrg	    fi
7363bdcaa8d0Smrg	  fi
7364bdcaa8d0Smrg
736572313efbSmrg	  exit $EXIT_SUCCESS
736672313efbSmrg	fi
7367bdcaa8d0Smrg
736872313efbSmrg	# Create links to the real library.
736972313efbSmrg	for linkname in $linknames; do
737072313efbSmrg	  if test "$realname" != "$linkname"; then
737172313efbSmrg	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
737272313efbSmrg	  fi
737372313efbSmrg	done
737472313efbSmrg
737572313efbSmrg	# If -module or -export-dynamic was specified, set the dlname.
737672313efbSmrg	if test "$module" = yes || test "$export_dynamic" = yes; then
737772313efbSmrg	  # On all known operating systems, these are identical.
737872313efbSmrg	  dlname="$soname"
737972313efbSmrg	fi
738072313efbSmrg      fi
738172313efbSmrg      ;;
738272313efbSmrg
738372313efbSmrg    obj)
738472313efbSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
738572313efbSmrg	func_warning "\`-dlopen' is ignored for objects"
738672313efbSmrg      fi
738772313efbSmrg
738872313efbSmrg      case " $deplibs" in
738972313efbSmrg      *\ -l* | *\ -L*)
739072313efbSmrg	func_warning "\`-l' and \`-L' are ignored for objects" ;;
739172313efbSmrg      esac
739272313efbSmrg
739372313efbSmrg      test -n "$rpath" && \
739472313efbSmrg	func_warning "\`-rpath' is ignored for objects"
739572313efbSmrg
739672313efbSmrg      test -n "$xrpath" && \
739772313efbSmrg	func_warning "\`-R' is ignored for objects"
739872313efbSmrg
739972313efbSmrg      test -n "$vinfo" && \
740072313efbSmrg	func_warning "\`-version-info' is ignored for objects"
740172313efbSmrg
740272313efbSmrg      test -n "$release" && \
740372313efbSmrg	func_warning "\`-release' is ignored for objects"
740472313efbSmrg
740572313efbSmrg      case $output in
740672313efbSmrg      *.lo)
740772313efbSmrg	test -n "$objs$old_deplibs" && \
740872313efbSmrg	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
740972313efbSmrg
741072313efbSmrg	libobj=$output
741172313efbSmrg	func_lo2o "$libobj"
741272313efbSmrg	obj=$func_lo2o_result
741372313efbSmrg	;;
741472313efbSmrg      *)
741572313efbSmrg	libobj=
741672313efbSmrg	obj="$output"
741772313efbSmrg	;;
741872313efbSmrg      esac
741972313efbSmrg
742072313efbSmrg      # Delete the old objects.
742172313efbSmrg      $opt_dry_run || $RM $obj $libobj
742272313efbSmrg
742372313efbSmrg      # Objects from convenience libraries.  This assumes
742472313efbSmrg      # single-version convenience libraries.  Whenever we create
742572313efbSmrg      # different ones for PIC/non-PIC, this we'll have to duplicate
742672313efbSmrg      # the extraction.
742772313efbSmrg      reload_conv_objs=
742872313efbSmrg      gentop=
742972313efbSmrg      # reload_cmds runs $LD directly, so let us get rid of
743072313efbSmrg      # -Wl from whole_archive_flag_spec and hope we can get by with
743172313efbSmrg      # turning comma into space..
743272313efbSmrg      wl=
743372313efbSmrg
743472313efbSmrg      if test -n "$convenience"; then
743572313efbSmrg	if test -n "$whole_archive_flag_spec"; then
743672313efbSmrg	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
743772313efbSmrg	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
743872313efbSmrg	else
743972313efbSmrg	  gentop="$output_objdir/${obj}x"
744072313efbSmrg	  generated="$generated $gentop"
744172313efbSmrg
744272313efbSmrg	  func_extract_archives $gentop $convenience
744372313efbSmrg	  reload_conv_objs="$reload_objs $func_extract_archives_result"
744472313efbSmrg	fi
744572313efbSmrg      fi
7446bdcaa8d0Smrg
744772313efbSmrg      # Create the old-style object.
744872313efbSmrg      reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
7449bdcaa8d0Smrg
745072313efbSmrg      output="$obj"
745172313efbSmrg      func_execute_cmds "$reload_cmds" 'exit $?'
7452bdcaa8d0Smrg
745372313efbSmrg      # Exit if we aren't doing a library object file.
745472313efbSmrg      if test -z "$libobj"; then
745572313efbSmrg	if test -n "$gentop"; then
745672313efbSmrg	  func_show_eval '${RM}r "$gentop"'
745772313efbSmrg	fi
7458bdcaa8d0Smrg
745972313efbSmrg	exit $EXIT_SUCCESS
746072313efbSmrg      fi
7461bdcaa8d0Smrg
746272313efbSmrg      if test "$build_libtool_libs" != yes; then
746372313efbSmrg	if test -n "$gentop"; then
746472313efbSmrg	  func_show_eval '${RM}r "$gentop"'
746572313efbSmrg	fi
7466bdcaa8d0Smrg
746772313efbSmrg	# Create an invalid libtool object if no PIC, so that we don't
746872313efbSmrg	# accidentally link it into a program.
746972313efbSmrg	# $show "echo timestamp > $libobj"
747072313efbSmrg	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
747172313efbSmrg	exit $EXIT_SUCCESS
747272313efbSmrg      fi
7473bdcaa8d0Smrg
747472313efbSmrg      if test -n "$pic_flag" || test "$pic_mode" != default; then
747572313efbSmrg	# Only do commands if we really have different PIC objects.
747672313efbSmrg	reload_objs="$libobjs $reload_conv_objs"
747772313efbSmrg	output="$libobj"
747872313efbSmrg	func_execute_cmds "$reload_cmds" 'exit $?'
7479bdcaa8d0Smrg      fi
7480bdcaa8d0Smrg
748172313efbSmrg      if test -n "$gentop"; then
748272313efbSmrg	func_show_eval '${RM}r "$gentop"'
748372313efbSmrg      fi
7484bdcaa8d0Smrg
748572313efbSmrg      exit $EXIT_SUCCESS
748672313efbSmrg      ;;
7487bdcaa8d0Smrg
748872313efbSmrg    prog)
748972313efbSmrg      case $host in
749072313efbSmrg	*cygwin*) func_stripname '' '.exe' "$output"
749172313efbSmrg	          output=$func_stripname_result.exe;;
7492bdcaa8d0Smrg      esac
749372313efbSmrg      test -n "$vinfo" && \
749472313efbSmrg	func_warning "\`-version-info' is ignored for programs"
7495bdcaa8d0Smrg
749672313efbSmrg      test -n "$release" && \
749772313efbSmrg	func_warning "\`-release' is ignored for programs"
7498bdcaa8d0Smrg
749972313efbSmrg      test "$preload" = yes \
750072313efbSmrg        && test "$dlopen_support" = unknown \
750172313efbSmrg	&& test "$dlopen_self" = unknown \
750272313efbSmrg	&& test "$dlopen_self_static" = unknown && \
750372313efbSmrg	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
7504bdcaa8d0Smrg
750572313efbSmrg      case $host in
750672313efbSmrg      *-*-rhapsody* | *-*-darwin1.[012])
750772313efbSmrg	# On Rhapsody replace the C library is the System framework
750872313efbSmrg	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
750972313efbSmrg	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
7510bdcaa8d0Smrg	;;
7511bdcaa8d0Smrg      esac
7512bdcaa8d0Smrg
751372313efbSmrg      case $host in
751472313efbSmrg      *-*-darwin*)
751572313efbSmrg	# Don't allow lazy linking, it breaks C++ global constructors
751672313efbSmrg	# But is supposedly fixed on 10.4 or later (yay!).
751772313efbSmrg	if test "$tagname" = CXX ; then
751872313efbSmrg	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
751972313efbSmrg	    10.[0123])
752072313efbSmrg	      compile_command="$compile_command ${wl}-bind_at_load"
752172313efbSmrg	      finalize_command="$finalize_command ${wl}-bind_at_load"
752272313efbSmrg	    ;;
752372313efbSmrg	  esac
752472313efbSmrg	fi
752572313efbSmrg	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
752672313efbSmrg	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
752772313efbSmrg	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
7528bdcaa8d0Smrg	;;
7529bdcaa8d0Smrg      esac
7530bdcaa8d0Smrg
7531bdcaa8d0Smrg
753272313efbSmrg      # move library search paths that coincide with paths to not yet
753372313efbSmrg      # installed libraries to the beginning of the library search list
753472313efbSmrg      new_libs=
753572313efbSmrg      for path in $notinst_path; do
753672313efbSmrg	case " $new_libs " in
753772313efbSmrg	*" -L$path/$objdir "*) ;;
7538bdcaa8d0Smrg	*)
753972313efbSmrg	  case " $compile_deplibs " in
754072313efbSmrg	  *" -L$path/$objdir "*)
754172313efbSmrg	    new_libs="$new_libs -L$path/$objdir" ;;
754272313efbSmrg	  esac
7543bdcaa8d0Smrg	  ;;
7544bdcaa8d0Smrg	esac
7545bdcaa8d0Smrg      done
754672313efbSmrg      for deplib in $compile_deplibs; do
754772313efbSmrg	case $deplib in
754872313efbSmrg	-L*)
754972313efbSmrg	  case " $new_libs " in
755072313efbSmrg	  *" $deplib "*) ;;
755172313efbSmrg	  *) new_libs="$new_libs $deplib" ;;
755272313efbSmrg	  esac
755372313efbSmrg	  ;;
755472313efbSmrg	*) new_libs="$new_libs $deplib" ;;
755572313efbSmrg	esac
755672313efbSmrg      done
755772313efbSmrg      compile_deplibs="$new_libs"
7558bdcaa8d0Smrg
7559bdcaa8d0Smrg
756072313efbSmrg      compile_command="$compile_command $compile_deplibs"
756172313efbSmrg      finalize_command="$finalize_command $finalize_deplibs"
7562bdcaa8d0Smrg
756372313efbSmrg      if test -n "$rpath$xrpath"; then
756472313efbSmrg	# If the user specified any rpath flags, then add them.
756572313efbSmrg	for libdir in $rpath $xrpath; do
756672313efbSmrg	  # This is the magic to use -rpath.
756772313efbSmrg	  case "$finalize_rpath " in
756872313efbSmrg	  *" $libdir "*) ;;
756972313efbSmrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
757072313efbSmrg	  esac
757172313efbSmrg	done
757272313efbSmrg      fi
7573bdcaa8d0Smrg
757472313efbSmrg      # Now hardcode the library paths
757572313efbSmrg      rpath=
757672313efbSmrg      hardcode_libdirs=
757772313efbSmrg      for libdir in $compile_rpath $finalize_rpath; do
757872313efbSmrg	if test -n "$hardcode_libdir_flag_spec"; then
757972313efbSmrg	  if test -n "$hardcode_libdir_separator"; then
758072313efbSmrg	    if test -z "$hardcode_libdirs"; then
758172313efbSmrg	      hardcode_libdirs="$libdir"
758272313efbSmrg	    else
758372313efbSmrg	      # Just accumulate the unique libdirs.
758472313efbSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
758572313efbSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
758672313efbSmrg		;;
758772313efbSmrg	      *)
758872313efbSmrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
758972313efbSmrg		;;
759072313efbSmrg	      esac
759172313efbSmrg	    fi
759272313efbSmrg	  else
759372313efbSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
759472313efbSmrg	    rpath="$rpath $flag"
759572313efbSmrg	  fi
759672313efbSmrg	elif test -n "$runpath_var"; then
759772313efbSmrg	  case "$perm_rpath " in
7598bdcaa8d0Smrg	  *" $libdir "*) ;;
759972313efbSmrg	  *) perm_rpath="$perm_rpath $libdir" ;;
7600bdcaa8d0Smrg	  esac
760172313efbSmrg	fi
760272313efbSmrg	case $host in
760372313efbSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
760472313efbSmrg	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
760572313efbSmrg	  case :$dllsearchpath: in
760672313efbSmrg	  *":$libdir:"*) ;;
760772313efbSmrg	  ::) dllsearchpath=$libdir;;
760872313efbSmrg	  *) dllsearchpath="$dllsearchpath:$libdir";;
760972313efbSmrg	  esac
761072313efbSmrg	  case :$dllsearchpath: in
761172313efbSmrg	  *":$testbindir:"*) ;;
761272313efbSmrg	  ::) dllsearchpath=$testbindir;;
761372313efbSmrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
761472313efbSmrg	  esac
761572313efbSmrg	  ;;
761672313efbSmrg	esac
761772313efbSmrg      done
761872313efbSmrg      # Substitute the hardcoded libdirs into the rpath.
761972313efbSmrg      if test -n "$hardcode_libdir_separator" &&
762072313efbSmrg	 test -n "$hardcode_libdirs"; then
762172313efbSmrg	libdir="$hardcode_libdirs"
762272313efbSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
762372313efbSmrg      fi
762472313efbSmrg      compile_rpath="$rpath"
762572313efbSmrg
762672313efbSmrg      rpath=
762772313efbSmrg      hardcode_libdirs=
762872313efbSmrg      for libdir in $finalize_rpath; do
762972313efbSmrg	if test -n "$hardcode_libdir_flag_spec"; then
763072313efbSmrg	  if test -n "$hardcode_libdir_separator"; then
763172313efbSmrg	    if test -z "$hardcode_libdirs"; then
763272313efbSmrg	      hardcode_libdirs="$libdir"
763372313efbSmrg	    else
763472313efbSmrg	      # Just accumulate the unique libdirs.
763572313efbSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
763672313efbSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
763772313efbSmrg		;;
763872313efbSmrg	      *)
763972313efbSmrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
764072313efbSmrg		;;
764172313efbSmrg	      esac
764272313efbSmrg	    fi
764372313efbSmrg	  else
764472313efbSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
764572313efbSmrg	    rpath="$rpath $flag"
764672313efbSmrg	  fi
764772313efbSmrg	elif test -n "$runpath_var"; then
764872313efbSmrg	  case "$finalize_perm_rpath " in
7649bdcaa8d0Smrg	  *" $libdir "*) ;;
765072313efbSmrg	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
7651bdcaa8d0Smrg	  esac
7652bdcaa8d0Smrg	fi
765372313efbSmrg      done
765472313efbSmrg      # Substitute the hardcoded libdirs into the rpath.
765572313efbSmrg      if test -n "$hardcode_libdir_separator" &&
765672313efbSmrg	 test -n "$hardcode_libdirs"; then
765772313efbSmrg	libdir="$hardcode_libdirs"
765872313efbSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
765972313efbSmrg      fi
766072313efbSmrg      finalize_rpath="$rpath"
7661bdcaa8d0Smrg
766272313efbSmrg      if test -n "$libobjs" && test "$build_old_libs" = yes; then
766372313efbSmrg	# Transform all the library objects into standard objects.
766472313efbSmrg	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
766572313efbSmrg	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
766672313efbSmrg      fi
7667bdcaa8d0Smrg
766872313efbSmrg      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
7669bdcaa8d0Smrg
767072313efbSmrg      # template prelinking step
767172313efbSmrg      if test -n "$prelink_cmds"; then
767272313efbSmrg	func_execute_cmds "$prelink_cmds" 'exit $?'
767372313efbSmrg      fi
7674bdcaa8d0Smrg
767572313efbSmrg      wrappers_required=yes
767672313efbSmrg      case $host in
767772313efbSmrg      *cygwin* | *mingw* )
767872313efbSmrg        if test "$build_libtool_libs" != yes; then
767972313efbSmrg          wrappers_required=no
768072313efbSmrg        fi
768172313efbSmrg        ;;
768272313efbSmrg      *cegcc)
768372313efbSmrg        # Disable wrappers for cegcc, we are cross compiling anyway.
768472313efbSmrg        wrappers_required=no
768572313efbSmrg        ;;
768672313efbSmrg      *)
768772313efbSmrg        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
768872313efbSmrg          wrappers_required=no
768972313efbSmrg        fi
769072313efbSmrg        ;;
769172313efbSmrg      esac
769272313efbSmrg      if test "$wrappers_required" = no; then
769372313efbSmrg	# Replace the output file specification.
769472313efbSmrg	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
769572313efbSmrg	link_command="$compile_command$compile_rpath"
7696bdcaa8d0Smrg
769772313efbSmrg	# We have no uninstalled library dependencies, so finalize right now.
769872313efbSmrg	exit_status=0
769972313efbSmrg	func_show_eval "$link_command" 'exit_status=$?'
7700bdcaa8d0Smrg
770172313efbSmrg	# Delete the generated files.
770272313efbSmrg	if test -f "$output_objdir/${outputname}S.${objext}"; then
770372313efbSmrg	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
770472313efbSmrg	fi
7705bdcaa8d0Smrg
770672313efbSmrg	exit $exit_status
770772313efbSmrg      fi
7708bdcaa8d0Smrg
770972313efbSmrg      if test -n "$compile_shlibpath$finalize_shlibpath"; then
771072313efbSmrg	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
771172313efbSmrg      fi
771272313efbSmrg      if test -n "$finalize_shlibpath"; then
771372313efbSmrg	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
771472313efbSmrg      fi
7715bdcaa8d0Smrg
771672313efbSmrg      compile_var=
771772313efbSmrg      finalize_var=
771872313efbSmrg      if test -n "$runpath_var"; then
771972313efbSmrg	if test -n "$perm_rpath"; then
772072313efbSmrg	  # We should set the runpath_var.
772172313efbSmrg	  rpath=
772272313efbSmrg	  for dir in $perm_rpath; do
772372313efbSmrg	    rpath="$rpath$dir:"
7724bdcaa8d0Smrg	  done
772572313efbSmrg	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
7726bdcaa8d0Smrg	fi
772772313efbSmrg	if test -n "$finalize_perm_rpath"; then
772872313efbSmrg	  # We should set the runpath_var.
772972313efbSmrg	  rpath=
773072313efbSmrg	  for dir in $finalize_perm_rpath; do
773172313efbSmrg	    rpath="$rpath$dir:"
773272313efbSmrg	  done
773372313efbSmrg	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
773472313efbSmrg	fi
773572313efbSmrg      fi
7736bdcaa8d0Smrg
773772313efbSmrg      if test "$no_install" = yes; then
773872313efbSmrg	# We don't need to create a wrapper script.
773972313efbSmrg	link_command="$compile_var$compile_command$compile_rpath"
774072313efbSmrg	# Replace the output file specification.
774172313efbSmrg	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
774272313efbSmrg	# Delete the old output file.
774372313efbSmrg	$opt_dry_run || $RM $output
774472313efbSmrg	# Link the executable and exit
774572313efbSmrg	func_show_eval "$link_command" 'exit $?'
774672313efbSmrg	exit $EXIT_SUCCESS
774772313efbSmrg      fi
7748bdcaa8d0Smrg
774972313efbSmrg      if test "$hardcode_action" = relink; then
775072313efbSmrg	# Fast installation is not supported
775172313efbSmrg	link_command="$compile_var$compile_command$compile_rpath"
775272313efbSmrg	relink_command="$finalize_var$finalize_command$finalize_rpath"
7753bdcaa8d0Smrg
775472313efbSmrg	func_warning "this platform does not like uninstalled shared libraries"
775572313efbSmrg	func_warning "\`$output' will be relinked during installation"
775672313efbSmrg      else
775772313efbSmrg	if test "$fast_install" != no; then
775872313efbSmrg	  link_command="$finalize_var$compile_command$finalize_rpath"
775972313efbSmrg	  if test "$fast_install" = yes; then
776072313efbSmrg	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
776172313efbSmrg	  else
776272313efbSmrg	    # fast_install is set to needless
776372313efbSmrg	    relink_command=
776472313efbSmrg	  fi
7765bdcaa8d0Smrg	else
776672313efbSmrg	  link_command="$compile_var$compile_command$compile_rpath"
776772313efbSmrg	  relink_command="$finalize_var$finalize_command$finalize_rpath"
7768bdcaa8d0Smrg	fi
776972313efbSmrg      fi
7770bdcaa8d0Smrg
777172313efbSmrg      # Replace the output file specification.
777272313efbSmrg      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
7773bdcaa8d0Smrg
777472313efbSmrg      # Delete the old output files.
777572313efbSmrg      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
7776bdcaa8d0Smrg
777772313efbSmrg      func_show_eval "$link_command" 'exit $?'
7778bdcaa8d0Smrg
777972313efbSmrg      # Now create the wrapper script.
778072313efbSmrg      func_verbose "creating $output"
7781bdcaa8d0Smrg
778272313efbSmrg      # Quote the relink command for shipping.
778372313efbSmrg      if test -n "$relink_command"; then
778472313efbSmrg	# Preserve any variables that may affect compiler behavior
778572313efbSmrg	for var in $variables_saved_for_relink; do
778672313efbSmrg	  if eval test -z \"\${$var+set}\"; then
778772313efbSmrg	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
778872313efbSmrg	  elif eval var_value=\$$var; test -z "$var_value"; then
778972313efbSmrg	    relink_command="$var=; export $var; $relink_command"
779072313efbSmrg	  else
779172313efbSmrg	    func_quote_for_eval "$var_value"
779272313efbSmrg	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
779372313efbSmrg	  fi
779472313efbSmrg	done
779572313efbSmrg	relink_command="(cd `pwd`; $relink_command)"
779672313efbSmrg	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
779772313efbSmrg      fi
7798bdcaa8d0Smrg
779972313efbSmrg      # Quote $ECHO for shipping.
780072313efbSmrg      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
780172313efbSmrg	case $progpath in
780272313efbSmrg	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
780372313efbSmrg	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
7804bdcaa8d0Smrg	esac
780572313efbSmrg	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
780672313efbSmrg      else
780772313efbSmrg	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
780872313efbSmrg      fi
7809bdcaa8d0Smrg
781072313efbSmrg      # Only actually do things if not in dry run mode.
781172313efbSmrg      $opt_dry_run || {
781272313efbSmrg	# win32 will think the script is a binary if it has
781372313efbSmrg	# a .exe suffix, so we strip it off here.
781472313efbSmrg	case $output in
781572313efbSmrg	  *.exe) func_stripname '' '.exe' "$output"
781672313efbSmrg	         output=$func_stripname_result ;;
781772313efbSmrg	esac
781872313efbSmrg	# test for cygwin because mv fails w/o .exe extensions
7819bdcaa8d0Smrg	case $host in
782072313efbSmrg	  *cygwin*)
782172313efbSmrg	    exeext=.exe
782272313efbSmrg	    func_stripname '' '.exe' "$outputname"
782372313efbSmrg	    outputname=$func_stripname_result ;;
782472313efbSmrg	  *) exeext= ;;
7825bdcaa8d0Smrg	esac
782672313efbSmrg	case $host in
782772313efbSmrg	  *cygwin* | *mingw* )
782872313efbSmrg	    func_dirname_and_basename "$output" "" "."
782972313efbSmrg	    output_name=$func_basename_result
783072313efbSmrg	    output_path=$func_dirname_result
783172313efbSmrg	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
783272313efbSmrg	    cwrapper="$output_path/$output_name.exe"
783372313efbSmrg	    $RM $cwrappersource $cwrapper
783472313efbSmrg	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
783572313efbSmrg
783672313efbSmrg	    func_emit_cwrapperexe_src > $cwrappersource
783772313efbSmrg
783872313efbSmrg	    # The wrapper executable is built using the $host compiler,
783972313efbSmrg	    # because it contains $host paths and files. If cross-
784072313efbSmrg	    # compiling, it, like the target executable, must be
784172313efbSmrg	    # executed on the $host or under an emulation environment.
784272313efbSmrg	    $opt_dry_run || {
784372313efbSmrg	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
784472313efbSmrg	      $STRIP $cwrapper
784572313efbSmrg	    }
7846bdcaa8d0Smrg
784772313efbSmrg	    # Now, create the wrapper script for func_source use:
784872313efbSmrg	    func_ltwrapper_scriptname $cwrapper
784972313efbSmrg	    $RM $func_ltwrapper_scriptname_result
785072313efbSmrg	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
785172313efbSmrg	    $opt_dry_run || {
785272313efbSmrg	      # note: this script will not be executed, so do not chmod.
785372313efbSmrg	      if test "x$build" = "x$host" ; then
785472313efbSmrg		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
7855bdcaa8d0Smrg	      else
785672313efbSmrg		func_emit_wrapper no > $func_ltwrapper_scriptname_result
7857bdcaa8d0Smrg	      fi
785872313efbSmrg	    }
785972313efbSmrg	  ;;
786072313efbSmrg	  * )
786172313efbSmrg	    $RM $output
786272313efbSmrg	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
7863bdcaa8d0Smrg
786472313efbSmrg	    func_emit_wrapper no > $output
786572313efbSmrg	    chmod +x $output
7866bdcaa8d0Smrg	  ;;
7867bdcaa8d0Smrg	esac
786872313efbSmrg      }
786972313efbSmrg      exit $EXIT_SUCCESS
787072313efbSmrg      ;;
787172313efbSmrg    esac
7872bdcaa8d0Smrg
787372313efbSmrg    # See if we need to build an old-fashioned archive.
787472313efbSmrg    for oldlib in $oldlibs; do
7875bdcaa8d0Smrg
787672313efbSmrg      if test "$build_libtool_libs" = convenience; then
787772313efbSmrg	oldobjs="$libobjs_save $symfileobj"
787872313efbSmrg	addlibs="$convenience"
787972313efbSmrg	build_libtool_libs=no
788072313efbSmrg      else
788172313efbSmrg	if test "$build_libtool_libs" = module; then
788272313efbSmrg	  oldobjs="$libobjs_save"
788372313efbSmrg	  build_libtool_libs=no
788472313efbSmrg	else
788572313efbSmrg	  oldobjs="$old_deplibs $non_pic_objects"
788672313efbSmrg	  if test "$preload" = yes && test -f "$symfileobj"; then
788772313efbSmrg	    oldobjs="$oldobjs $symfileobj"
788872313efbSmrg	  fi
788972313efbSmrg	fi
789072313efbSmrg	addlibs="$old_convenience"
7891bdcaa8d0Smrg      fi
7892bdcaa8d0Smrg
789372313efbSmrg      if test -n "$addlibs"; then
789472313efbSmrg	gentop="$output_objdir/${outputname}x"
789572313efbSmrg	generated="$generated $gentop"
7896bdcaa8d0Smrg
789772313efbSmrg	func_extract_archives $gentop $addlibs
789872313efbSmrg	oldobjs="$oldobjs $func_extract_archives_result"
789972313efbSmrg      fi
7900bdcaa8d0Smrg
790172313efbSmrg      # Do each command in the archive commands.
790272313efbSmrg      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
790372313efbSmrg	cmds=$old_archive_from_new_cmds
790472313efbSmrg      else
7905bdcaa8d0Smrg
790672313efbSmrg	# Add any objects from preloaded convenience libraries
790772313efbSmrg	if test -n "$dlprefiles"; then
790872313efbSmrg	  gentop="$output_objdir/${outputname}x"
790972313efbSmrg	  generated="$generated $gentop"
7910bdcaa8d0Smrg
791172313efbSmrg	  func_extract_archives $gentop $dlprefiles
791272313efbSmrg	  oldobjs="$oldobjs $func_extract_archives_result"
791372313efbSmrg	fi
7914bdcaa8d0Smrg
791572313efbSmrg	# POSIX demands no paths to be encoded in archives.  We have
791672313efbSmrg	# to avoid creating archives with duplicate basenames if we
791772313efbSmrg	# might have to extract them afterwards, e.g., when creating a
791872313efbSmrg	# static archive out of a convenience library, or when linking
791972313efbSmrg	# the entirety of a libtool archive into another (currently
792072313efbSmrg	# not supported by libtool).
792172313efbSmrg	if (for obj in $oldobjs
792272313efbSmrg	    do
792372313efbSmrg	      func_basename "$obj"
792472313efbSmrg	      $ECHO "$func_basename_result"
792572313efbSmrg	    done | sort | sort -uc >/dev/null 2>&1); then
792672313efbSmrg	  :
792772313efbSmrg	else
792872313efbSmrg	  $ECHO "copying selected object files to avoid basename conflicts..."
792972313efbSmrg	  gentop="$output_objdir/${outputname}x"
793072313efbSmrg	  generated="$generated $gentop"
793172313efbSmrg	  func_mkdir_p "$gentop"
793272313efbSmrg	  save_oldobjs=$oldobjs
793372313efbSmrg	  oldobjs=
793472313efbSmrg	  counter=1
793572313efbSmrg	  for obj in $save_oldobjs
793672313efbSmrg	  do
793772313efbSmrg	    func_basename "$obj"
793872313efbSmrg	    objbase="$func_basename_result"
793972313efbSmrg	    case " $oldobjs " in
794072313efbSmrg	    " ") oldobjs=$obj ;;
794172313efbSmrg	    *[\ /]"$objbase "*)
794272313efbSmrg	      while :; do
794372313efbSmrg		# Make sure we don't pick an alternate name that also
794472313efbSmrg		# overlaps.
794572313efbSmrg		newobj=lt$counter-$objbase
794672313efbSmrg		func_arith $counter + 1
794772313efbSmrg		counter=$func_arith_result
794872313efbSmrg		case " $oldobjs " in
794972313efbSmrg		*[\ /]"$newobj "*) ;;
795072313efbSmrg		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
795172313efbSmrg		esac
795272313efbSmrg	      done
795372313efbSmrg	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
795472313efbSmrg	      oldobjs="$oldobjs $gentop/$newobj"
795572313efbSmrg	      ;;
795672313efbSmrg	    *) oldobjs="$oldobjs $obj" ;;
795772313efbSmrg	    esac
7958bdcaa8d0Smrg	  done
7959bdcaa8d0Smrg	fi
796072313efbSmrg	eval cmds=\"$old_archive_cmds\"
7961bdcaa8d0Smrg
796272313efbSmrg	func_len " $cmds"
796372313efbSmrg	len=$func_len_result
796472313efbSmrg	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
796572313efbSmrg	  cmds=$old_archive_cmds
796672313efbSmrg	else
796772313efbSmrg	  # the command line is too long to link in one step, link in parts
796872313efbSmrg	  func_verbose "using piecewise archive linking..."
796972313efbSmrg	  save_RANLIB=$RANLIB
797072313efbSmrg	  RANLIB=:
797172313efbSmrg	  objlist=
797272313efbSmrg	  concat_cmds=
797372313efbSmrg	  save_oldobjs=$oldobjs
797472313efbSmrg	  oldobjs=
797572313efbSmrg	  # Is there a better way of finding the last object in the list?
797672313efbSmrg	  for obj in $save_oldobjs
797772313efbSmrg	  do
797872313efbSmrg	    last_oldobj=$obj
797972313efbSmrg	  done
798072313efbSmrg	  eval test_cmds=\"$old_archive_cmds\"
798172313efbSmrg	  func_len " $test_cmds"
798272313efbSmrg	  len0=$func_len_result
798372313efbSmrg	  len=$len0
798472313efbSmrg	  for obj in $save_oldobjs
798572313efbSmrg	  do
798672313efbSmrg	    func_len " $obj"
798772313efbSmrg	    func_arith $len + $func_len_result
798872313efbSmrg	    len=$func_arith_result
798972313efbSmrg	    func_append objlist " $obj"
799072313efbSmrg	    if test "$len" -lt "$max_cmd_len"; then
799172313efbSmrg	      :
799272313efbSmrg	    else
799372313efbSmrg	      # the above command should be used before it gets too long
799472313efbSmrg	      oldobjs=$objlist
799572313efbSmrg	      if test "$obj" = "$last_oldobj" ; then
799672313efbSmrg		RANLIB=$save_RANLIB
799772313efbSmrg	      fi
799872313efbSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
799972313efbSmrg	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
800072313efbSmrg	      objlist=
800172313efbSmrg	      len=$len0
800272313efbSmrg	    fi
800372313efbSmrg	  done
800472313efbSmrg	  RANLIB=$save_RANLIB
800572313efbSmrg	  oldobjs=$objlist
800672313efbSmrg	  if test "X$oldobjs" = "X" ; then
800772313efbSmrg	    eval cmds=\"\$concat_cmds\"
800872313efbSmrg	  else
800972313efbSmrg	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
801072313efbSmrg	  fi
801172313efbSmrg	fi
801272313efbSmrg      fi
801372313efbSmrg      func_execute_cmds "$cmds" 'exit $?'
8014bdcaa8d0Smrg    done
8015bdcaa8d0Smrg
801672313efbSmrg    test -n "$generated" && \
801772313efbSmrg      func_show_eval "${RM}r$generated"
8018bdcaa8d0Smrg
801972313efbSmrg    # Now create the libtool archive.
802072313efbSmrg    case $output in
802172313efbSmrg    *.la)
802272313efbSmrg      old_library=
802372313efbSmrg      test "$build_old_libs" = yes && old_library="$libname.$libext"
802472313efbSmrg      func_verbose "creating $output"
8025bdcaa8d0Smrg
802672313efbSmrg      # Preserve any variables that may affect compiler behavior
802772313efbSmrg      for var in $variables_saved_for_relink; do
802872313efbSmrg	if eval test -z \"\${$var+set}\"; then
802972313efbSmrg	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
803072313efbSmrg	elif eval var_value=\$$var; test -z "$var_value"; then
803172313efbSmrg	  relink_command="$var=; export $var; $relink_command"
8032bdcaa8d0Smrg	else
803372313efbSmrg	  func_quote_for_eval "$var_value"
803472313efbSmrg	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
8035bdcaa8d0Smrg	fi
803672313efbSmrg      done
803772313efbSmrg      # Quote the link command for shipping.
803872313efbSmrg      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
803972313efbSmrg      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
804072313efbSmrg      if test "$hardcode_automatic" = yes ; then
804172313efbSmrg	relink_command=
804272313efbSmrg      fi
8043bdcaa8d0Smrg
804472313efbSmrg      # Only create the output if not a dry run.
804572313efbSmrg      $opt_dry_run || {
804672313efbSmrg	for installed in no yes; do
804772313efbSmrg	  if test "$installed" = yes; then
804872313efbSmrg	    if test -z "$install_libdir"; then
804972313efbSmrg	      break
805072313efbSmrg	    fi
805172313efbSmrg	    output="$output_objdir/$outputname"i
805272313efbSmrg	    # Replace all uninstalled libtool libraries with the installed ones
805372313efbSmrg	    newdependency_libs=
805472313efbSmrg	    for deplib in $dependency_libs; do
805572313efbSmrg	      case $deplib in
805672313efbSmrg	      *.la)
805772313efbSmrg		func_basename "$deplib"
805872313efbSmrg		name="$func_basename_result"
805972313efbSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
806072313efbSmrg		test -z "$libdir" && \
806172313efbSmrg		  func_fatal_error "\`$deplib' is not a valid libtool archive"
806272313efbSmrg		newdependency_libs="$newdependency_libs $libdir/$name"
806372313efbSmrg		;;
806472313efbSmrg	      *) newdependency_libs="$newdependency_libs $deplib" ;;
806572313efbSmrg	      esac
806672313efbSmrg	    done
806772313efbSmrg	    dependency_libs="$newdependency_libs"
806872313efbSmrg	    newdlfiles=
806972313efbSmrg
807072313efbSmrg	    for lib in $dlfiles; do
807172313efbSmrg	      case $lib in
807272313efbSmrg	      *.la)
807372313efbSmrg	        func_basename "$lib"
807472313efbSmrg		name="$func_basename_result"
807572313efbSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
807672313efbSmrg		test -z "$libdir" && \
807772313efbSmrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
807872313efbSmrg		newdlfiles="$newdlfiles $libdir/$name"
807972313efbSmrg		;;
808072313efbSmrg	      *) newdlfiles="$newdlfiles $lib" ;;
808172313efbSmrg	      esac
808272313efbSmrg	    done
808372313efbSmrg	    dlfiles="$newdlfiles"
808472313efbSmrg	    newdlprefiles=
808572313efbSmrg	    for lib in $dlprefiles; do
808672313efbSmrg	      case $lib in
808772313efbSmrg	      *.la)
808872313efbSmrg		# Only pass preopened files to the pseudo-archive (for
808972313efbSmrg		# eventual linking with the app. that links it) if we
809072313efbSmrg		# didn't already link the preopened objects directly into
809172313efbSmrg		# the library:
809272313efbSmrg		func_basename "$lib"
809372313efbSmrg		name="$func_basename_result"
809472313efbSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
809572313efbSmrg		test -z "$libdir" && \
809672313efbSmrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
809772313efbSmrg		newdlprefiles="$newdlprefiles $libdir/$name"
809872313efbSmrg		;;
809972313efbSmrg	      esac
810072313efbSmrg	    done
810172313efbSmrg	    dlprefiles="$newdlprefiles"
810272313efbSmrg	  else
810372313efbSmrg	    newdlfiles=
810472313efbSmrg	    for lib in $dlfiles; do
810572313efbSmrg	      case $lib in
810672313efbSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
810772313efbSmrg		*) abs=`pwd`"/$lib" ;;
810872313efbSmrg	      esac
810972313efbSmrg	      newdlfiles="$newdlfiles $abs"
811072313efbSmrg	    done
811172313efbSmrg	    dlfiles="$newdlfiles"
811272313efbSmrg	    newdlprefiles=
811372313efbSmrg	    for lib in $dlprefiles; do
811472313efbSmrg	      case $lib in
811572313efbSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
811672313efbSmrg		*) abs=`pwd`"/$lib" ;;
811772313efbSmrg	      esac
811872313efbSmrg	      newdlprefiles="$newdlprefiles $abs"
811972313efbSmrg	    done
812072313efbSmrg	    dlprefiles="$newdlprefiles"
812172313efbSmrg	  fi
812272313efbSmrg	  $RM $output
812372313efbSmrg	  # place dlname in correct position for cygwin
812472313efbSmrg	  tdlname=$dlname
812572313efbSmrg	  case $host,$output,$installed,$module,$dlname in
812672313efbSmrg	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
812772313efbSmrg	  esac
812872313efbSmrg	  $ECHO > $output "\
812972313efbSmrg# $outputname - a libtool library file
813072313efbSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
813172313efbSmrg#
813272313efbSmrg# Please DO NOT delete this file!
813372313efbSmrg# It is necessary for linking the library.
8134bdcaa8d0Smrg
813572313efbSmrg# The name that we can dlopen(3).
813672313efbSmrgdlname='$tdlname'
8137bdcaa8d0Smrg
813872313efbSmrg# Names of this library.
813972313efbSmrglibrary_names='$library_names'
8140bdcaa8d0Smrg
814172313efbSmrg# The name of the static archive.
814272313efbSmrgold_library='$old_library'
8143bdcaa8d0Smrg
814472313efbSmrg# Linker flags that can not go in dependency_libs.
814572313efbSmrginherited_linker_flags='$new_inherited_linker_flags'
8146bdcaa8d0Smrg
814772313efbSmrg# Libraries that this one depends upon.
814872313efbSmrgdependency_libs='$dependency_libs'
8149bdcaa8d0Smrg
815072313efbSmrg# Names of additional weak libraries provided by this library
815172313efbSmrgweak_library_names='$weak_libs'
8152bdcaa8d0Smrg
815372313efbSmrg# Version information for $libname.
815472313efbSmrgcurrent=$current
815572313efbSmrgage=$age
815672313efbSmrgrevision=$revision
8157bdcaa8d0Smrg
815872313efbSmrg# Is this an already installed library?
815972313efbSmrginstalled=$installed
8160bdcaa8d0Smrg
816172313efbSmrg# Should we warn about portability when linking against -modules?
816272313efbSmrgshouldnotlink=$module
8163bdcaa8d0Smrg
816472313efbSmrg# Files to dlopen/dlpreopen
816572313efbSmrgdlopen='$dlfiles'
816672313efbSmrgdlpreopen='$dlprefiles'
8167bdcaa8d0Smrg
816872313efbSmrg# Directory that this library needs to be installed in:
816972313efbSmrglibdir='$install_libdir'"
817072313efbSmrg	  if test "$installed" = no && test "$need_relink" = yes; then
817172313efbSmrg	    $ECHO >> $output "\
817272313efbSmrgrelink_command=\"$relink_command\""
817372313efbSmrg	  fi
817472313efbSmrg	done
817572313efbSmrg      }
8176bdcaa8d0Smrg
817772313efbSmrg      # Do a symbolic link so that the libtool archive can be found in
817872313efbSmrg      # LD_LIBRARY_PATH before the program is installed.
817972313efbSmrg      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
818072313efbSmrg      ;;
818172313efbSmrg    esac
818272313efbSmrg    exit $EXIT_SUCCESS
818372313efbSmrg}
8184bdcaa8d0Smrg
818572313efbSmrg{ test "$mode" = link || test "$mode" = relink; } &&
818672313efbSmrg    func_mode_link ${1+"$@"}
8187bdcaa8d0Smrg
8188bdcaa8d0Smrg
818972313efbSmrg# func_mode_uninstall arg...
819072313efbSmrgfunc_mode_uninstall ()
819172313efbSmrg{
819272313efbSmrg    $opt_debug
819372313efbSmrg    RM="$nonopt"
8194bdcaa8d0Smrg    files=
8195bdcaa8d0Smrg    rmforce=
8196bdcaa8d0Smrg    exit_status=0
8197bdcaa8d0Smrg
8198bdcaa8d0Smrg    # This variable tells wrapper scripts just to set variables rather
8199bdcaa8d0Smrg    # than running their programs.
8200bdcaa8d0Smrg    libtool_install_magic="$magic"
8201bdcaa8d0Smrg
8202bdcaa8d0Smrg    for arg
8203bdcaa8d0Smrg    do
8204bdcaa8d0Smrg      case $arg in
820572313efbSmrg      -f) RM="$RM $arg"; rmforce=yes ;;
820672313efbSmrg      -*) RM="$RM $arg" ;;
8207bdcaa8d0Smrg      *) files="$files $arg" ;;
8208bdcaa8d0Smrg      esac
8209bdcaa8d0Smrg    done
8210bdcaa8d0Smrg
821172313efbSmrg    test -z "$RM" && \
821272313efbSmrg      func_fatal_help "you must specify an RM program"
8213bdcaa8d0Smrg
8214bdcaa8d0Smrg    rmdirs=
8215bdcaa8d0Smrg
8216bdcaa8d0Smrg    origobjdir="$objdir"
8217bdcaa8d0Smrg    for file in $files; do
821872313efbSmrg      func_dirname "$file" "" "."
821972313efbSmrg      dir="$func_dirname_result"
822072313efbSmrg      if test "X$dir" = X.; then
8221bdcaa8d0Smrg	objdir="$origobjdir"
8222bdcaa8d0Smrg      else
8223bdcaa8d0Smrg	objdir="$dir/$origobjdir"
8224bdcaa8d0Smrg      fi
822572313efbSmrg      func_basename "$file"
822672313efbSmrg      name="$func_basename_result"
8227bdcaa8d0Smrg      test "$mode" = uninstall && objdir="$dir"
8228bdcaa8d0Smrg
8229bdcaa8d0Smrg      # Remember objdir for removal later, being careful to avoid duplicates
8230bdcaa8d0Smrg      if test "$mode" = clean; then
8231bdcaa8d0Smrg	case " $rmdirs " in
8232bdcaa8d0Smrg	  *" $objdir "*) ;;
8233bdcaa8d0Smrg	  *) rmdirs="$rmdirs $objdir" ;;
8234bdcaa8d0Smrg	esac
8235bdcaa8d0Smrg      fi
8236bdcaa8d0Smrg
8237bdcaa8d0Smrg      # Don't error if the file doesn't exist and rm -f was used.
823872313efbSmrg      if { test -L "$file"; } >/dev/null 2>&1 ||
823972313efbSmrg	 { test -h "$file"; } >/dev/null 2>&1 ||
824072313efbSmrg	 test -f "$file"; then
8241bdcaa8d0Smrg	:
8242bdcaa8d0Smrg      elif test -d "$file"; then
8243bdcaa8d0Smrg	exit_status=1
8244bdcaa8d0Smrg	continue
8245bdcaa8d0Smrg      elif test "$rmforce" = yes; then
8246bdcaa8d0Smrg	continue
8247bdcaa8d0Smrg      fi
8248bdcaa8d0Smrg
8249bdcaa8d0Smrg      rmfiles="$file"
8250bdcaa8d0Smrg
8251bdcaa8d0Smrg      case $name in
8252bdcaa8d0Smrg      *.la)
8253bdcaa8d0Smrg	# Possibly a libtool archive, so verify it.
825472313efbSmrg	if func_lalib_p "$file"; then
825572313efbSmrg	  func_source $dir/$name
8256bdcaa8d0Smrg
8257bdcaa8d0Smrg	  # Delete the libtool libraries and symlinks.
8258bdcaa8d0Smrg	  for n in $library_names; do
8259bdcaa8d0Smrg	    rmfiles="$rmfiles $objdir/$n"
8260bdcaa8d0Smrg	  done
8261bdcaa8d0Smrg	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
8262bdcaa8d0Smrg
8263bdcaa8d0Smrg	  case "$mode" in
8264bdcaa8d0Smrg	  clean)
8265bdcaa8d0Smrg	    case "  $library_names " in
8266bdcaa8d0Smrg	    # "  " in the beginning catches empty $dlname
8267bdcaa8d0Smrg	    *" $dlname "*) ;;
8268bdcaa8d0Smrg	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
8269bdcaa8d0Smrg	    esac
827072313efbSmrg	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
8271bdcaa8d0Smrg	    ;;
8272bdcaa8d0Smrg	  uninstall)
8273bdcaa8d0Smrg	    if test -n "$library_names"; then
8274bdcaa8d0Smrg	      # Do each command in the postuninstall commands.
827572313efbSmrg	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
8276bdcaa8d0Smrg	    fi
8277bdcaa8d0Smrg
8278bdcaa8d0Smrg	    if test -n "$old_library"; then
8279bdcaa8d0Smrg	      # Do each command in the old_postuninstall commands.
828072313efbSmrg	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
8281bdcaa8d0Smrg	    fi
8282bdcaa8d0Smrg	    # FIXME: should reinstall the best remaining shared library.
8283bdcaa8d0Smrg	    ;;
8284bdcaa8d0Smrg	  esac
8285bdcaa8d0Smrg	fi
8286bdcaa8d0Smrg	;;
8287bdcaa8d0Smrg
8288bdcaa8d0Smrg      *.lo)
8289bdcaa8d0Smrg	# Possibly a libtool object, so verify it.
829072313efbSmrg	if func_lalib_p "$file"; then
8291bdcaa8d0Smrg
8292bdcaa8d0Smrg	  # Read the .lo file
829372313efbSmrg	  func_source $dir/$name
8294bdcaa8d0Smrg
8295bdcaa8d0Smrg	  # Add PIC object to the list of files to remove.
829672313efbSmrg	  if test -n "$pic_object" &&
829772313efbSmrg	     test "$pic_object" != none; then
8298bdcaa8d0Smrg	    rmfiles="$rmfiles $dir/$pic_object"
8299bdcaa8d0Smrg	  fi
8300bdcaa8d0Smrg
8301bdcaa8d0Smrg	  # Add non-PIC object to the list of files to remove.
830272313efbSmrg	  if test -n "$non_pic_object" &&
830372313efbSmrg	     test "$non_pic_object" != none; then
8304bdcaa8d0Smrg	    rmfiles="$rmfiles $dir/$non_pic_object"
8305bdcaa8d0Smrg	  fi
8306bdcaa8d0Smrg	fi
8307bdcaa8d0Smrg	;;
8308bdcaa8d0Smrg
8309bdcaa8d0Smrg      *)
8310bdcaa8d0Smrg	if test "$mode" = clean ; then
8311bdcaa8d0Smrg	  noexename=$name
8312bdcaa8d0Smrg	  case $file in
8313bdcaa8d0Smrg	  *.exe)
831472313efbSmrg	    func_stripname '' '.exe' "$file"
831572313efbSmrg	    file=$func_stripname_result
831672313efbSmrg	    func_stripname '' '.exe' "$name"
831772313efbSmrg	    noexename=$func_stripname_result
8318bdcaa8d0Smrg	    # $file with .exe has already been added to rmfiles,
8319bdcaa8d0Smrg	    # add $file without .exe
8320bdcaa8d0Smrg	    rmfiles="$rmfiles $file"
8321bdcaa8d0Smrg	    ;;
8322bdcaa8d0Smrg	  esac
8323bdcaa8d0Smrg	  # Do a test to see if this is a libtool program.
832472313efbSmrg	  if func_ltwrapper_p "$file"; then
832572313efbSmrg	    if func_ltwrapper_executable_p "$file"; then
832672313efbSmrg	      func_ltwrapper_scriptname "$file"
832772313efbSmrg	      relink_command=
832872313efbSmrg	      func_source $func_ltwrapper_scriptname_result
832972313efbSmrg	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
833072313efbSmrg	    else
833172313efbSmrg	      relink_command=
833272313efbSmrg	      func_source $dir/$noexename
833372313efbSmrg	    fi
8334bdcaa8d0Smrg
8335bdcaa8d0Smrg	    # note $name still contains .exe if it was in $file originally
8336bdcaa8d0Smrg	    # as does the version of $file that was added into $rmfiles
8337bdcaa8d0Smrg	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
8338bdcaa8d0Smrg	    if test "$fast_install" = yes && test -n "$relink_command"; then
8339bdcaa8d0Smrg	      rmfiles="$rmfiles $objdir/lt-$name"
8340bdcaa8d0Smrg	    fi
8341bdcaa8d0Smrg	    if test "X$noexename" != "X$name" ; then
8342bdcaa8d0Smrg	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
8343bdcaa8d0Smrg	    fi
8344bdcaa8d0Smrg	  fi
8345bdcaa8d0Smrg	fi
8346bdcaa8d0Smrg	;;
8347bdcaa8d0Smrg      esac
834872313efbSmrg      func_show_eval "$RM $rmfiles" 'exit_status=1'
8349bdcaa8d0Smrg    done
8350bdcaa8d0Smrg    objdir="$origobjdir"
8351bdcaa8d0Smrg
8352bdcaa8d0Smrg    # Try to remove the ${objdir}s in the directories where we deleted files
8353bdcaa8d0Smrg    for dir in $rmdirs; do
8354bdcaa8d0Smrg      if test -d "$dir"; then
835572313efbSmrg	func_show_eval "rmdir $dir >/dev/null 2>&1"
8356bdcaa8d0Smrg      fi
8357bdcaa8d0Smrg    done
8358bdcaa8d0Smrg
8359bdcaa8d0Smrg    exit $exit_status
836072313efbSmrg}
8361bdcaa8d0Smrg
836272313efbSmrg{ test "$mode" = uninstall || test "$mode" = clean; } &&
836372313efbSmrg    func_mode_uninstall ${1+"$@"}
8364bdcaa8d0Smrg
836572313efbSmrgtest -z "$mode" && {
836672313efbSmrg  help="$generic_help"
836772313efbSmrg  func_fatal_help "you must specify a MODE"
836872313efbSmrg}
836972313efbSmrg
837072313efbSmrgtest -z "$exec_cmd" && \
837172313efbSmrg  func_fatal_help "invalid operation mode \`$mode'"
8372bdcaa8d0Smrg
8373bdcaa8d0Smrgif test -n "$exec_cmd"; then
837472313efbSmrg  eval exec "$exec_cmd"
8375bdcaa8d0Smrg  exit $EXIT_FAILURE
8376bdcaa8d0Smrgfi
8377bdcaa8d0Smrg
837872313efbSmrgexit $exit_status
8379bdcaa8d0Smrg
8380bdcaa8d0Smrg
8381bdcaa8d0Smrg# The TAGs below are defined such that we never get into a situation
8382bdcaa8d0Smrg# in which we disable both kinds of libraries.  Given conflicting
8383bdcaa8d0Smrg# choices, we go for a static library, that is the most portable,
8384bdcaa8d0Smrg# since we can't tell whether shared libraries were disabled because
8385bdcaa8d0Smrg# the user asked for that or because the platform doesn't support
8386bdcaa8d0Smrg# them.  This is particularly important on AIX, because we don't
8387bdcaa8d0Smrg# support having both static and shared libraries enabled at the same
8388bdcaa8d0Smrg# time on that platform, so we default to a shared-only configuration.
8389bdcaa8d0Smrg# If a disable-shared tag is given, we'll fallback to a static-only
8390bdcaa8d0Smrg# configuration.  But we'll never go from static-only to shared-only.
8391bdcaa8d0Smrg
8392bdcaa8d0Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
839372313efbSmrgbuild_libtool_libs=no
839472313efbSmrgbuild_old_libs=yes
8395bdcaa8d0Smrg# ### END LIBTOOL TAG CONFIG: disable-shared
8396bdcaa8d0Smrg
8397bdcaa8d0Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static
839872313efbSmrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
8399bdcaa8d0Smrg# ### END LIBTOOL TAG CONFIG: disable-static
8400bdcaa8d0Smrg
8401bdcaa8d0Smrg# Local Variables:
8402bdcaa8d0Smrg# mode:shell-script
8403bdcaa8d0Smrg# sh-indentation:2
8404bdcaa8d0Smrg# End:
840572313efbSmrg# vi:sw=2
840672313efbSmrg
8407