ltmain.sh revision 5f5b92ff
15f5b92ffSmrg# Generated from ltmain.m4sh.
25f5b92ffSmrg
35f5b92ffSmrg# ltmain.sh (GNU libtool) 2.2.6b
45f5b92ffSmrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
55f5b92ffSmrg
65f5b92ffSmrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
75f5b92ffSmrg# This is free software; see the source for copying conditions.  There is NO
85f5b92ffSmrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
95f5b92ffSmrg
105f5b92ffSmrg# GNU Libtool is free software; you can redistribute it and/or modify
1117a48c7cSmrg# it under the terms of the GNU General Public License as published by
1217a48c7cSmrg# the Free Software Foundation; either version 2 of the License, or
1317a48c7cSmrg# (at your option) any later version.
1417a48c7cSmrg#
155f5b92ffSmrg# As a special exception to the GNU General Public License,
165f5b92ffSmrg# if you distribute this file as part of a program or library that
175f5b92ffSmrg# is built using GNU Libtool, you may include this file under the
185f5b92ffSmrg# same distribution terms that you use for the rest of that program.
195f5b92ffSmrg#
205f5b92ffSmrg# GNU Libtool is distributed in the hope that it will be useful, but
2117a48c7cSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of
2217a48c7cSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
2317a48c7cSmrg# General Public License for more details.
2417a48c7cSmrg#
2517a48c7cSmrg# You should have received a copy of the GNU General Public License
265f5b92ffSmrg# along with GNU Libtool; see the file COPYING.  If not, a copy
275f5b92ffSmrg# can be downloaded from http://www.gnu.org/licenses/gpl.html,
285f5b92ffSmrg# or obtained by writing to the Free Software Foundation, Inc.,
295f5b92ffSmrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
3017a48c7cSmrg
315f5b92ffSmrg# Usage: $progname [OPTION]... [MODE-ARG]...
325f5b92ffSmrg#
335f5b92ffSmrg# Provide generalized library-building support services.
345f5b92ffSmrg#
355f5b92ffSmrg#     --config             show all configuration variables
365f5b92ffSmrg#     --debug              enable verbose shell tracing
375f5b92ffSmrg# -n, --dry-run            display commands without modifying any files
385f5b92ffSmrg#     --features           display basic configuration information and exit
395f5b92ffSmrg#     --mode=MODE          use operation mode MODE
405f5b92ffSmrg#     --preserve-dup-deps  don't remove duplicate dependency libraries
415f5b92ffSmrg#     --quiet, --silent    don't print informational messages
425f5b92ffSmrg#     --tag=TAG            use configuration variables from tag TAG
435f5b92ffSmrg# -v, --verbose            print informational messages (default)
445f5b92ffSmrg#     --version            print version information
455f5b92ffSmrg# -h, --help               print short or long help message
465f5b92ffSmrg#
475f5b92ffSmrg# MODE must be one of the following:
485f5b92ffSmrg#
495f5b92ffSmrg#       clean              remove files from the build directory
505f5b92ffSmrg#       compile            compile a source file into a libtool object
515f5b92ffSmrg#       execute            automatically set library path, then run a program
525f5b92ffSmrg#       finish             complete the installation of libtool libraries
535f5b92ffSmrg#       install            install libraries or executables
545f5b92ffSmrg#       link               create a library or an executable
555f5b92ffSmrg#       uninstall          remove libraries from an installed directory
565f5b92ffSmrg#
575f5b92ffSmrg# MODE-ARGS vary depending on the MODE.
585f5b92ffSmrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
595f5b92ffSmrg#
605f5b92ffSmrg# When reporting a bug, please describe a test case to reproduce it and
615f5b92ffSmrg# include the following information:
625f5b92ffSmrg#
635f5b92ffSmrg#       host-triplet:	$host
645f5b92ffSmrg#       shell:		$SHELL
655f5b92ffSmrg#       compiler:		$LTCC
665f5b92ffSmrg#       compiler flags:		$LTCFLAGS
675f5b92ffSmrg#       linker:		$LD (gnu? $with_gnu_ld)
685f5b92ffSmrg#       $progname:		(GNU libtool) 2.2.6b
695f5b92ffSmrg#       automake:		$automake_version
705f5b92ffSmrg#       autoconf:		$autoconf_version
715f5b92ffSmrg#
725f5b92ffSmrg# Report bugs to <bug-libtool@gnu.org>.
7317a48c7cSmrg
7417a48c7cSmrgPROGRAM=ltmain.sh
7517a48c7cSmrgPACKAGE=libtool
765f5b92ffSmrgVERSION=2.2.6b
775f5b92ffSmrgTIMESTAMP=""
785f5b92ffSmrgpackage_revision=1.3017
7917a48c7cSmrg
805f5b92ffSmrg# Be Bourne compatible
818e0ed500Smrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
828e0ed500Smrg  emulate sh
838e0ed500Smrg  NULLCMD=:
848e0ed500Smrg  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
858e0ed500Smrg  # is contrary to our usage.  Disable this feature.
868e0ed500Smrg  alias -g '${1+"$@"}'='"$@"'
8717a48c7cSmrg  setopt NO_GLOB_SUBST
888e0ed500Smrgelse
898e0ed500Smrg  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
9017a48c7cSmrgfi
91fbed5abfSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
92fbed5abfSmrgDUALCASE=1; export DUALCASE # for MKS sh
9317a48c7cSmrg
945f5b92ffSmrg# NLS nuisances: We save the old values to restore during execute mode.
9517a48c7cSmrg# Only set LANG and LC_ALL to C if already set.
9617a48c7cSmrg# These must not be set unconditionally because not all systems understand
9717a48c7cSmrg# e.g. LANG=C (notably SCO).
985f5b92ffSmrglt_user_locale=
995f5b92ffSmrglt_safe_locale=
100fbed5abfSmrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
1018e0ed500Smrgdo
1028e0ed500Smrg  eval "if test \"\${$lt_var+set}\" = set; then
1035f5b92ffSmrg          save_$lt_var=\$$lt_var
1045f5b92ffSmrg          $lt_var=C
105fbed5abfSmrg	  export $lt_var
1065f5b92ffSmrg	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
1075f5b92ffSmrg	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
108fbed5abfSmrg	fi"
1098e0ed500Smrgdone
11017a48c7cSmrg
1115f5b92ffSmrg$lt_unset CDPATH
1125f5b92ffSmrg
1135f5b92ffSmrg
1145f5b92ffSmrg
1155f5b92ffSmrg
1165f5b92ffSmrg
1175f5b92ffSmrg: ${CP="cp -f"}
1185f5b92ffSmrg: ${ECHO="echo"}
1195f5b92ffSmrg: ${EGREP="/bin/grep -E"}
1205f5b92ffSmrg: ${FGREP="/bin/grep -F"}
1215f5b92ffSmrg: ${GREP="/bin/grep"}
1225f5b92ffSmrg: ${LN_S="ln -s"}
1235f5b92ffSmrg: ${MAKE="make"}
1245f5b92ffSmrg: ${MKDIR="mkdir"}
1255f5b92ffSmrg: ${MV="mv -f"}
1265f5b92ffSmrg: ${RM="rm -f"}
1275f5b92ffSmrg: ${SED="/bin/sed"}
1285f5b92ffSmrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
1295f5b92ffSmrg: ${Xsed="$SED -e 1s/^X//"}
1305f5b92ffSmrg
1315f5b92ffSmrg# Global variables:
1325f5b92ffSmrgEXIT_SUCCESS=0
1335f5b92ffSmrgEXIT_FAILURE=1
1345f5b92ffSmrgEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
1355f5b92ffSmrgEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
1365f5b92ffSmrg
1375f5b92ffSmrgexit_status=$EXIT_SUCCESS
138fbed5abfSmrg
13917a48c7cSmrg# Make sure IFS has a sensible default
14017a48c7cSmrglt_nl='
14117a48c7cSmrg'
14217a48c7cSmrgIFS=" 	$lt_nl"
14317a48c7cSmrg
1445f5b92ffSmrgdirname="s,/[^/]*$,,"
1455f5b92ffSmrgbasename="s,^.*/,,"
1465f5b92ffSmrg
1475f5b92ffSmrg# func_dirname_and_basename file append nondir_replacement
1485f5b92ffSmrg# perform func_basename and func_dirname in a single function
1495f5b92ffSmrg# call:
1505f5b92ffSmrg#   dirname:  Compute the dirname of FILE.  If nonempty,
1515f5b92ffSmrg#             add APPEND to the result, otherwise set result
1525f5b92ffSmrg#             to NONDIR_REPLACEMENT.
1535f5b92ffSmrg#             value returned in "$func_dirname_result"
1545f5b92ffSmrg#   basename: Compute filename of FILE.
1555f5b92ffSmrg#             value retuned in "$func_basename_result"
1565f5b92ffSmrg# Implementation must be kept synchronized with func_dirname
1575f5b92ffSmrg# and func_basename. For efficiency, we do not delegate to
1585f5b92ffSmrg# those functions but instead duplicate the functionality here.
1595f5b92ffSmrgfunc_dirname_and_basename ()
1605f5b92ffSmrg{
1615f5b92ffSmrg  # Extract subdirectory from the argument.
1625f5b92ffSmrg  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
1635f5b92ffSmrg  if test "X$func_dirname_result" = "X${1}"; then
1645f5b92ffSmrg    func_dirname_result="${3}"
1655f5b92ffSmrg  else
1665f5b92ffSmrg    func_dirname_result="$func_dirname_result${2}"
1675f5b92ffSmrg  fi
1685f5b92ffSmrg  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
1695f5b92ffSmrg}
17017a48c7cSmrg
1715f5b92ffSmrg# Generated shell functions inserted here.
1725f5b92ffSmrg
1735f5b92ffSmrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
1745f5b92ffSmrg# is ksh but when the shell is invoked as "sh" and the current value of
1755f5b92ffSmrg# the _XPG environment variable is not equal to 1 (one), the special
1765f5b92ffSmrg# positional parameter $0, within a function call, is the name of the
1775f5b92ffSmrg# function.
1785f5b92ffSmrgprogpath="$0"
1795f5b92ffSmrg
1805f5b92ffSmrg# The name of this program:
1815f5b92ffSmrg# In the unlikely event $progname began with a '-', it would play havoc with
1825f5b92ffSmrg# func_echo (imagine progname=-n), so we prepend ./ in that case:
1835f5b92ffSmrgfunc_dirname_and_basename "$progpath"
1845f5b92ffSmrgprogname=$func_basename_result
1855f5b92ffSmrgcase $progname in
1865f5b92ffSmrg  -*) progname=./$progname ;;
1875f5b92ffSmrgesac
1885f5b92ffSmrg
1895f5b92ffSmrg# Make sure we have an absolute path for reexecution:
1905f5b92ffSmrgcase $progpath in
1915f5b92ffSmrg  [\\/]*|[A-Za-z]:\\*) ;;
1925f5b92ffSmrg  *[\\/]*)
1935f5b92ffSmrg     progdir=$func_dirname_result
1945f5b92ffSmrg     progdir=`cd "$progdir" && pwd`
1955f5b92ffSmrg     progpath="$progdir/$progname"
1965f5b92ffSmrg     ;;
1975f5b92ffSmrg  *)
1985f5b92ffSmrg     save_IFS="$IFS"
1995f5b92ffSmrg     IFS=:
2005f5b92ffSmrg     for progdir in $PATH; do
2015f5b92ffSmrg       IFS="$save_IFS"
2025f5b92ffSmrg       test -x "$progdir/$progname" && break
2035f5b92ffSmrg     done
2045f5b92ffSmrg     IFS="$save_IFS"
2055f5b92ffSmrg     test -n "$progdir" || progdir=`pwd`
2065f5b92ffSmrg     progpath="$progdir/$progname"
2075f5b92ffSmrg     ;;
2085f5b92ffSmrgesac
2095f5b92ffSmrg
2105f5b92ffSmrg# Sed substitution that helps us do robust quoting.  It backslashifies
2115f5b92ffSmrg# metacharacters that are still active within double-quoted strings.
2125f5b92ffSmrgXsed="${SED}"' -e 1s/^X//'
2135f5b92ffSmrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g'
2145f5b92ffSmrg
2155f5b92ffSmrg# Same as above, but do not quote variable references.
2165f5b92ffSmrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
2175f5b92ffSmrg
2185f5b92ffSmrg# Re-`\' parameter expansions in output of double_quote_subst that were
2195f5b92ffSmrg# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
2205f5b92ffSmrg# in input to double_quote_subst, that '$' was protected from expansion.
2215f5b92ffSmrg# Since each input `\' is now two `\'s, look for any number of runs of
2225f5b92ffSmrg# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
2235f5b92ffSmrgbs='\\'
2245f5b92ffSmrgbs2='\\\\'
2255f5b92ffSmrgbs4='\\\\\\\\'
2265f5b92ffSmrgdollar='\$'
2275f5b92ffSmrgsed_double_backslash="\
2285f5b92ffSmrg  s/$bs4/&\\
2295f5b92ffSmrg/g
2305f5b92ffSmrg  s/^$bs2$dollar/$bs&/
2315f5b92ffSmrg  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
2325f5b92ffSmrg  s/\n//g"
2335f5b92ffSmrg
2345f5b92ffSmrg# Standard options:
2355f5b92ffSmrgopt_dry_run=false
2365f5b92ffSmrgopt_help=false
2375f5b92ffSmrgopt_quiet=false
2385f5b92ffSmrgopt_verbose=false
2395f5b92ffSmrgopt_warning=:
2405f5b92ffSmrg
2415f5b92ffSmrg# func_echo arg...
2425f5b92ffSmrg# Echo program name prefixed message, along with the current mode
2435f5b92ffSmrg# name if it has been set yet.
2445f5b92ffSmrgfunc_echo ()
2455f5b92ffSmrg{
2465f5b92ffSmrg    $ECHO "$progname${mode+: }$mode: $*"
2475f5b92ffSmrg}
2485f5b92ffSmrg
2495f5b92ffSmrg# func_verbose arg...
2505f5b92ffSmrg# Echo program name prefixed message in verbose mode only.
2515f5b92ffSmrgfunc_verbose ()
2525f5b92ffSmrg{
2535f5b92ffSmrg    $opt_verbose && func_echo ${1+"$@"}
2545f5b92ffSmrg
2555f5b92ffSmrg    # A bug in bash halts the script if the last line of a function
2565f5b92ffSmrg    # fails when set -e is in force, so we need another command to
2575f5b92ffSmrg    # work around that:
2585f5b92ffSmrg    :
2595f5b92ffSmrg}
2605f5b92ffSmrg
2615f5b92ffSmrg# func_error arg...
2625f5b92ffSmrg# Echo program name prefixed message to standard error.
2635f5b92ffSmrgfunc_error ()
2645f5b92ffSmrg{
2655f5b92ffSmrg    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
2665f5b92ffSmrg}
2675f5b92ffSmrg
2685f5b92ffSmrg# func_warning arg...
2695f5b92ffSmrg# Echo program name prefixed warning message to standard error.
2705f5b92ffSmrgfunc_warning ()
2715f5b92ffSmrg{
2725f5b92ffSmrg    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
2735f5b92ffSmrg
2745f5b92ffSmrg    # bash bug again:
2755f5b92ffSmrg    :
2765f5b92ffSmrg}
2775f5b92ffSmrg
2785f5b92ffSmrg# func_fatal_error arg...
2795f5b92ffSmrg# Echo program name prefixed message to standard error, and exit.
2805f5b92ffSmrgfunc_fatal_error ()
2815f5b92ffSmrg{
2825f5b92ffSmrg    func_error ${1+"$@"}
2835f5b92ffSmrg    exit $EXIT_FAILURE
2845f5b92ffSmrg}
2855f5b92ffSmrg
2865f5b92ffSmrg# func_fatal_help arg...
2875f5b92ffSmrg# Echo program name prefixed message to standard error, followed by
2885f5b92ffSmrg# a help hint, and exit.
2895f5b92ffSmrgfunc_fatal_help ()
2905f5b92ffSmrg{
2915f5b92ffSmrg    func_error ${1+"$@"}
2925f5b92ffSmrg    func_fatal_error "$help"
2935f5b92ffSmrg}
2945f5b92ffSmrghelp="Try \`$progname --help' for more information."  ## default
2955f5b92ffSmrg
2965f5b92ffSmrg
2975f5b92ffSmrg# func_grep expression filename
2985f5b92ffSmrg# Check whether EXPRESSION matches any line of FILENAME, without output.
2995f5b92ffSmrgfunc_grep ()
3005f5b92ffSmrg{
3015f5b92ffSmrg    $GREP "$1" "$2" >/dev/null 2>&1
3025f5b92ffSmrg}
3035f5b92ffSmrg
3045f5b92ffSmrg
3055f5b92ffSmrg# func_mkdir_p directory-path
3065f5b92ffSmrg# Make sure the entire path to DIRECTORY-PATH is available.
3075f5b92ffSmrgfunc_mkdir_p ()
3085f5b92ffSmrg{
3095f5b92ffSmrg    my_directory_path="$1"
3105f5b92ffSmrg    my_dir_list=
3115f5b92ffSmrg
3125f5b92ffSmrg    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
3135f5b92ffSmrg
3145f5b92ffSmrg      # Protect directory names starting with `-'
3155f5b92ffSmrg      case $my_directory_path in
3165f5b92ffSmrg        -*) my_directory_path="./$my_directory_path" ;;
3175f5b92ffSmrg      esac
3185f5b92ffSmrg
3195f5b92ffSmrg      # While some portion of DIR does not yet exist...
3205f5b92ffSmrg      while test ! -d "$my_directory_path"; do
3215f5b92ffSmrg        # ...make a list in topmost first order.  Use a colon delimited
3225f5b92ffSmrg	# list incase some portion of path contains whitespace.
3235f5b92ffSmrg        my_dir_list="$my_directory_path:$my_dir_list"
3245f5b92ffSmrg
3255f5b92ffSmrg        # If the last portion added has no slash in it, the list is done
3265f5b92ffSmrg        case $my_directory_path in */*) ;; *) break ;; esac
3275f5b92ffSmrg
3285f5b92ffSmrg        # ...otherwise throw away the child directory and loop
3295f5b92ffSmrg        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
3305f5b92ffSmrg      done
3315f5b92ffSmrg      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
3325f5b92ffSmrg
3335f5b92ffSmrg      save_mkdir_p_IFS="$IFS"; IFS=':'
3345f5b92ffSmrg      for my_dir in $my_dir_list; do
3355f5b92ffSmrg	IFS="$save_mkdir_p_IFS"
3365f5b92ffSmrg        # mkdir can fail with a `File exist' error if two processes
3375f5b92ffSmrg        # try to create one of the directories concurrently.  Don't
3385f5b92ffSmrg        # stop in that case!
3395f5b92ffSmrg        $MKDIR "$my_dir" 2>/dev/null || :
3405f5b92ffSmrg      done
3415f5b92ffSmrg      IFS="$save_mkdir_p_IFS"
3425f5b92ffSmrg
3435f5b92ffSmrg      # Bail out if we (or some other process) failed to create a directory.
3445f5b92ffSmrg      test -d "$my_directory_path" || \
3455f5b92ffSmrg        func_fatal_error "Failed to create \`$1'"
3465f5b92ffSmrg    fi
3475f5b92ffSmrg}
34817a48c7cSmrg
34917a48c7cSmrg
35017a48c7cSmrg# func_mktempdir [string]
35117a48c7cSmrg# Make a temporary directory that won't clash with other running
35217a48c7cSmrg# libtool processes, and avoids race conditions if possible.  If
35317a48c7cSmrg# given, STRING is the basename for that directory.
35417a48c7cSmrgfunc_mktempdir ()
35517a48c7cSmrg{
35617a48c7cSmrg    my_template="${TMPDIR-/tmp}/${1-$progname}"
35717a48c7cSmrg
3585f5b92ffSmrg    if test "$opt_dry_run" = ":"; then
35917a48c7cSmrg      # Return a directory name, but don't create it in dry-run mode
36017a48c7cSmrg      my_tmpdir="${my_template}-$$"
36117a48c7cSmrg    else
36217a48c7cSmrg
36317a48c7cSmrg      # If mktemp works, use that first and foremost
36417a48c7cSmrg      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
36517a48c7cSmrg
36617a48c7cSmrg      if test ! -d "$my_tmpdir"; then
3675f5b92ffSmrg        # Failing that, at least try and use $RANDOM to avoid a race
3685f5b92ffSmrg        my_tmpdir="${my_template}-${RANDOM-0}$$"
36917a48c7cSmrg
3705f5b92ffSmrg        save_mktempdir_umask=`umask`
3715f5b92ffSmrg        umask 0077
3725f5b92ffSmrg        $MKDIR "$my_tmpdir"
3735f5b92ffSmrg        umask $save_mktempdir_umask
37417a48c7cSmrg      fi
37517a48c7cSmrg
37617a48c7cSmrg      # If we're not in dry-run mode, bomb out on failure
3775f5b92ffSmrg      test -d "$my_tmpdir" || \
3785f5b92ffSmrg        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
37917a48c7cSmrg    fi
38017a48c7cSmrg
3815f5b92ffSmrg    $ECHO "X$my_tmpdir" | $Xsed
38217a48c7cSmrg}
38317a48c7cSmrg
38417a48c7cSmrg
3855f5b92ffSmrg# func_quote_for_eval arg
3865f5b92ffSmrg# Aesthetically quote ARG to be evaled later.
3875f5b92ffSmrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
3885f5b92ffSmrg# is double-quoted, suitable for a subsequent eval, whereas
3895f5b92ffSmrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
3905f5b92ffSmrg# which are still active within double quotes backslashified.
3915f5b92ffSmrgfunc_quote_for_eval ()
39217a48c7cSmrg{
3935f5b92ffSmrg    case $1 in
3945f5b92ffSmrg      *[\\\`\"\$]*)
3955f5b92ffSmrg	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
3965f5b92ffSmrg      *)
3975f5b92ffSmrg        func_quote_for_eval_unquoted_result="$1" ;;
3985f5b92ffSmrg    esac
3995f5b92ffSmrg
4005f5b92ffSmrg    case $func_quote_for_eval_unquoted_result in
4015f5b92ffSmrg      # Double-quote args containing shell metacharacters to delay
4025f5b92ffSmrg      # word splitting, command substitution and and variable
4035f5b92ffSmrg      # expansion for a subsequent eval.
4045f5b92ffSmrg      # Many Bourne shells cannot handle close brackets correctly
4055f5b92ffSmrg      # in scan sets, so we specify it separately.
4065f5b92ffSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
4075f5b92ffSmrg        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
4085f5b92ffSmrg        ;;
4095f5b92ffSmrg      *)
4105f5b92ffSmrg        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
41117a48c7cSmrg    esac
41217a48c7cSmrg}
41317a48c7cSmrg
41417a48c7cSmrg
4155f5b92ffSmrg# func_quote_for_expand arg
4165f5b92ffSmrg# Aesthetically quote ARG to be evaled later; same as above,
4175f5b92ffSmrg# but do not quote variable references.
4185f5b92ffSmrgfunc_quote_for_expand ()
41917a48c7cSmrg{
4205f5b92ffSmrg    case $1 in
4215f5b92ffSmrg      *[\\\`\"]*)
4225f5b92ffSmrg	my_arg=`$ECHO "X$1" | $Xsed \
4235f5b92ffSmrg	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
42417a48c7cSmrg      *)
4255f5b92ffSmrg        my_arg="$1" ;;
4265f5b92ffSmrg    esac
4275f5b92ffSmrg
4285f5b92ffSmrg    case $my_arg in
4295f5b92ffSmrg      # Double-quote args containing shell metacharacters to delay
4305f5b92ffSmrg      # word splitting and command substitution for a subsequent eval.
4315f5b92ffSmrg      # Many Bourne shells cannot handle close brackets correctly
4325f5b92ffSmrg      # in scan sets, so we specify it separately.
4335f5b92ffSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
4345f5b92ffSmrg        my_arg="\"$my_arg\""
4355f5b92ffSmrg        ;;
4365f5b92ffSmrg    esac
4375f5b92ffSmrg
4385f5b92ffSmrg    func_quote_for_expand_result="$my_arg"
43917a48c7cSmrg}
44017a48c7cSmrg
44117a48c7cSmrg
4425f5b92ffSmrg# func_show_eval cmd [fail_exp]
4435f5b92ffSmrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
4445f5b92ffSmrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
4455f5b92ffSmrg# is given, then evaluate it.
4465f5b92ffSmrgfunc_show_eval ()
44717a48c7cSmrg{
4485f5b92ffSmrg    my_cmd="$1"
4495f5b92ffSmrg    my_fail_exp="${2-:}"
45017a48c7cSmrg
4515f5b92ffSmrg    ${opt_silent-false} || {
4525f5b92ffSmrg      func_quote_for_expand "$my_cmd"
4535f5b92ffSmrg      eval "func_echo $func_quote_for_expand_result"
4545f5b92ffSmrg    }
4555f5b92ffSmrg
4565f5b92ffSmrg    if ${opt_dry_run-false}; then :; else
4575f5b92ffSmrg      eval "$my_cmd"
4585f5b92ffSmrg      my_status=$?
4595f5b92ffSmrg      if test "$my_status" -eq 0; then :; else
4605f5b92ffSmrg	eval "(exit $my_status); $my_fail_exp"
4615f5b92ffSmrg      fi
46217a48c7cSmrg    fi
46317a48c7cSmrg}
46417a48c7cSmrg
4655f5b92ffSmrg
4665f5b92ffSmrg# func_show_eval_locale cmd [fail_exp]
4675f5b92ffSmrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
4685f5b92ffSmrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
4695f5b92ffSmrg# is given, then evaluate it.  Use the saved locale for evaluation.
4705f5b92ffSmrgfunc_show_eval_locale ()
47117a48c7cSmrg{
4725f5b92ffSmrg    my_cmd="$1"
4735f5b92ffSmrg    my_fail_exp="${2-:}"
4745f5b92ffSmrg
4755f5b92ffSmrg    ${opt_silent-false} || {
4765f5b92ffSmrg      func_quote_for_expand "$my_cmd"
4775f5b92ffSmrg      eval "func_echo $func_quote_for_expand_result"
4785f5b92ffSmrg    }
4795f5b92ffSmrg
4805f5b92ffSmrg    if ${opt_dry_run-false}; then :; else
4815f5b92ffSmrg      eval "$lt_user_locale
4825f5b92ffSmrg	    $my_cmd"
4835f5b92ffSmrg      my_status=$?
4845f5b92ffSmrg      eval "$lt_safe_locale"
4855f5b92ffSmrg      if test "$my_status" -eq 0; then :; else
4865f5b92ffSmrg	eval "(exit $my_status); $my_fail_exp"
4875f5b92ffSmrg      fi
48817a48c7cSmrg    fi
4895f5b92ffSmrg}
49017a48c7cSmrg
49117a48c7cSmrg
4925f5b92ffSmrg
4935f5b92ffSmrg
4945f5b92ffSmrg
4955f5b92ffSmrg# func_version
4965f5b92ffSmrg# Echo version message to standard output and exit.
4975f5b92ffSmrgfunc_version ()
4985f5b92ffSmrg{
4995f5b92ffSmrg    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
5005f5b92ffSmrg        s/^# //
5015f5b92ffSmrg	s/^# *$//
5025f5b92ffSmrg        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
5035f5b92ffSmrg        p
5045f5b92ffSmrg     }' < "$progpath"
5055f5b92ffSmrg     exit $?
5065f5b92ffSmrg}
5075f5b92ffSmrg
5085f5b92ffSmrg# func_usage
5095f5b92ffSmrg# Echo short help message to standard output and exit.
5105f5b92ffSmrgfunc_usage ()
5115f5b92ffSmrg{
5125f5b92ffSmrg    $SED -n '/^# Usage:/,/# -h/ {
5135f5b92ffSmrg        s/^# //
5145f5b92ffSmrg	s/^# *$//
5155f5b92ffSmrg	s/\$progname/'$progname'/
5165f5b92ffSmrg	p
5175f5b92ffSmrg    }' < "$progpath"
5185f5b92ffSmrg    $ECHO
5195f5b92ffSmrg    $ECHO "run \`$progname --help | more' for full usage"
5205f5b92ffSmrg    exit $?
5215f5b92ffSmrg}
5225f5b92ffSmrg
5235f5b92ffSmrg# func_help
5245f5b92ffSmrg# Echo long help message to standard output and exit.
5255f5b92ffSmrgfunc_help ()
5265f5b92ffSmrg{
5275f5b92ffSmrg    $SED -n '/^# Usage:/,/# Report bugs to/ {
5285f5b92ffSmrg        s/^# //
5295f5b92ffSmrg	s/^# *$//
5305f5b92ffSmrg	s*\$progname*'$progname'*
5315f5b92ffSmrg	s*\$host*'"$host"'*
5325f5b92ffSmrg	s*\$SHELL*'"$SHELL"'*
5335f5b92ffSmrg	s*\$LTCC*'"$LTCC"'*
5345f5b92ffSmrg	s*\$LTCFLAGS*'"$LTCFLAGS"'*
5355f5b92ffSmrg	s*\$LD*'"$LD"'*
5365f5b92ffSmrg	s/\$with_gnu_ld/'"$with_gnu_ld"'/
5375f5b92ffSmrg	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
5385f5b92ffSmrg	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
5395f5b92ffSmrg	p
5405f5b92ffSmrg     }' < "$progpath"
5415f5b92ffSmrg    exit $?
5425f5b92ffSmrg}
5435f5b92ffSmrg
5445f5b92ffSmrg# func_missing_arg argname
5455f5b92ffSmrg# Echo program name prefixed message to standard error and set global
5465f5b92ffSmrg# exit_cmd.
5475f5b92ffSmrgfunc_missing_arg ()
5485f5b92ffSmrg{
5495f5b92ffSmrg    func_error "missing argument for $1"
5505f5b92ffSmrg    exit_cmd=exit
55117a48c7cSmrg}
55217a48c7cSmrg
5535f5b92ffSmrgexit_cmd=:
55417a48c7cSmrg
55517a48c7cSmrg
5565f5b92ffSmrg
5575f5b92ffSmrg
5585f5b92ffSmrg
5595f5b92ffSmrg# Check that we have a working $ECHO.
5605f5b92ffSmrgif test "X$1" = X--no-reexec; then
5615f5b92ffSmrg  # Discard the --no-reexec flag, and continue.
56217a48c7cSmrg  shift
5635f5b92ffSmrgelif test "X$1" = X--fallback-echo; then
5645f5b92ffSmrg  # Avoid inline document here, it may be left over
5655f5b92ffSmrg  :
5665f5b92ffSmrgelif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
5675f5b92ffSmrg  # Yippee, $ECHO works!
5685f5b92ffSmrg  :
5695f5b92ffSmrgelse
5705f5b92ffSmrg  # Restart under the correct shell, and then maybe $ECHO will work.
5715f5b92ffSmrg  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
5725f5b92ffSmrgfi
57317a48c7cSmrg
5745f5b92ffSmrgif test "X$1" = X--fallback-echo; then
5755f5b92ffSmrg  # used as fallback echo
5765f5b92ffSmrg  shift
5775f5b92ffSmrg  cat <<EOF
5785f5b92ffSmrg$*
5795f5b92ffSmrgEOF
5805f5b92ffSmrg  exit $EXIT_SUCCESS
5815f5b92ffSmrgfi
58217a48c7cSmrg
5835f5b92ffSmrgmagic="%%%MAGIC variable%%%"
5845f5b92ffSmrgmagic_exe="%%%MAGIC EXE variable%%%"
58517a48c7cSmrg
5865f5b92ffSmrg# Global variables.
5875f5b92ffSmrg# $mode is unset
5885f5b92ffSmrgnonopt=
5895f5b92ffSmrgexecute_dlfiles=
5905f5b92ffSmrgpreserve_args=
5915f5b92ffSmrglo2o="s/\\.lo\$/.${objext}/"
5925f5b92ffSmrgo2lo="s/\\.${objext}\$/.lo/"
5935f5b92ffSmrgextracted_archives=
5945f5b92ffSmrgextracted_serial=0
59517a48c7cSmrg
5965f5b92ffSmrgopt_dry_run=false
5975f5b92ffSmrgopt_duplicate_deps=false
5985f5b92ffSmrgopt_silent=false
5995f5b92ffSmrgopt_debug=:
60017a48c7cSmrg
6015f5b92ffSmrg# If this variable is set in any of the actions, the command in it
6025f5b92ffSmrg# will be execed at the end.  This prevents here-documents from being
6035f5b92ffSmrg# left over by shells.
6045f5b92ffSmrgexec_cmd=
6055f5b92ffSmrg
6065f5b92ffSmrg# func_fatal_configuration arg...
6075f5b92ffSmrg# Echo program name prefixed message to standard error, followed by
6085f5b92ffSmrg# a configuration failure hint, and exit.
6095f5b92ffSmrgfunc_fatal_configuration ()
6105f5b92ffSmrg{
6115f5b92ffSmrg    func_error ${1+"$@"}
6125f5b92ffSmrg    func_error "See the $PACKAGE documentation for more information."
6135f5b92ffSmrg    func_fatal_error "Fatal configuration error."
6145f5b92ffSmrg}
61517a48c7cSmrg
616fbed5abfSmrg
6175f5b92ffSmrg# func_config
6185f5b92ffSmrg# Display the configuration for all the tags in this script.
6195f5b92ffSmrgfunc_config ()
6205f5b92ffSmrg{
6215f5b92ffSmrg    re_begincf='^# ### BEGIN LIBTOOL'
6225f5b92ffSmrg    re_endcf='^# ### END LIBTOOL'
6235f5b92ffSmrg
6245f5b92ffSmrg    # Default configuration.
6255f5b92ffSmrg    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
62617a48c7cSmrg
62717a48c7cSmrg    # Now print the configurations for the tags.
62817a48c7cSmrg    for tagname in $taglist; do
6295f5b92ffSmrg      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
63017a48c7cSmrg    done
63117a48c7cSmrg
6325f5b92ffSmrg    exit $?
6335f5b92ffSmrg}
63417a48c7cSmrg
6355f5b92ffSmrg# func_features
6365f5b92ffSmrg# Display the features supported by this script.
6375f5b92ffSmrgfunc_features ()
6385f5b92ffSmrg{
6395f5b92ffSmrg    $ECHO "host: $host"
64017a48c7cSmrg    if test "$build_libtool_libs" = yes; then
6415f5b92ffSmrg      $ECHO "enable shared libraries"
64217a48c7cSmrg    else
6435f5b92ffSmrg      $ECHO "disable shared libraries"
64417a48c7cSmrg    fi
64517a48c7cSmrg    if test "$build_old_libs" = yes; then
6465f5b92ffSmrg      $ECHO "enable static libraries"
64717a48c7cSmrg    else
6485f5b92ffSmrg      $ECHO "disable static libraries"
64917a48c7cSmrg    fi
6505f5b92ffSmrg
65117a48c7cSmrg    exit $?
6525f5b92ffSmrg}
65317a48c7cSmrg
6545f5b92ffSmrg# func_enable_tag tagname
6555f5b92ffSmrg# Verify that TAGNAME is valid, and either flag an error and exit, or
6565f5b92ffSmrg# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
6575f5b92ffSmrg# variable here.
6585f5b92ffSmrgfunc_enable_tag ()
6595f5b92ffSmrg{
6605f5b92ffSmrg  # Global variable:
6615f5b92ffSmrg  tagname="$1"
66217a48c7cSmrg
6635f5b92ffSmrg  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
6645f5b92ffSmrg  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
6655f5b92ffSmrg  sed_extractcf="/$re_begincf/,/$re_endcf/p"
66617a48c7cSmrg
6675f5b92ffSmrg  # Validate tagname.
6685f5b92ffSmrg  case $tagname in
6695f5b92ffSmrg    *[!-_A-Za-z0-9,/]*)
6705f5b92ffSmrg      func_fatal_error "invalid tag name: $tagname"
6715f5b92ffSmrg      ;;
6725f5b92ffSmrg  esac
67317a48c7cSmrg
6745f5b92ffSmrg  # Don't test for the "default" C tag, as we know it's
6755f5b92ffSmrg  # there but not specially marked.
6765f5b92ffSmrg  case $tagname in
6775f5b92ffSmrg    CC) ;;
6785f5b92ffSmrg    *)
6795f5b92ffSmrg      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
6805f5b92ffSmrg	taglist="$taglist $tagname"
6815f5b92ffSmrg
6825f5b92ffSmrg	# Evaluate the configuration.  Be careful to quote the path
6835f5b92ffSmrg	# and the sed script, to avoid splitting on whitespace, but
6845f5b92ffSmrg	# also don't use non-portable quotes within backquotes within
6855f5b92ffSmrg	# quotes we have to do it in 2 steps:
6865f5b92ffSmrg	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
6875f5b92ffSmrg	eval "$extractedcf"
6885f5b92ffSmrg      else
6895f5b92ffSmrg	func_error "ignoring unknown tag $tagname"
6905f5b92ffSmrg      fi
6915f5b92ffSmrg      ;;
6925f5b92ffSmrg  esac
6935f5b92ffSmrg}
6945f5b92ffSmrg
6955f5b92ffSmrg# Parse options once, thoroughly.  This comes as soon as possible in
6965f5b92ffSmrg# the script to make things like `libtool --version' happen quickly.
6975f5b92ffSmrg{
69817a48c7cSmrg
6995f5b92ffSmrg  # Shorthand for --mode=foo, only valid as the first argument
7005f5b92ffSmrg  case $1 in
7015f5b92ffSmrg  clean|clea|cle|cl)
7025f5b92ffSmrg    shift; set dummy --mode clean ${1+"$@"}; shift
70317a48c7cSmrg    ;;
7045f5b92ffSmrg  compile|compil|compi|comp|com|co|c)
7055f5b92ffSmrg    shift; set dummy --mode compile ${1+"$@"}; shift
70617a48c7cSmrg    ;;
7075f5b92ffSmrg  execute|execut|execu|exec|exe|ex|e)
7085f5b92ffSmrg    shift; set dummy --mode execute ${1+"$@"}; shift
70917a48c7cSmrg    ;;
7105f5b92ffSmrg  finish|finis|fini|fin|fi|f)
7115f5b92ffSmrg    shift; set dummy --mode finish ${1+"$@"}; shift
71217a48c7cSmrg    ;;
7135f5b92ffSmrg  install|instal|insta|inst|ins|in|i)
7145f5b92ffSmrg    shift; set dummy --mode install ${1+"$@"}; shift
7155f5b92ffSmrg    ;;
7165f5b92ffSmrg  link|lin|li|l)
7175f5b92ffSmrg    shift; set dummy --mode link ${1+"$@"}; shift
7185f5b92ffSmrg    ;;
7195f5b92ffSmrg  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
7205f5b92ffSmrg    shift; set dummy --mode uninstall ${1+"$@"}; shift
72117a48c7cSmrg    ;;
72217a48c7cSmrg  esac
72317a48c7cSmrg
7245f5b92ffSmrg  # Parse non-mode specific arguments:
7255f5b92ffSmrg  while test "$#" -gt 0; do
7265f5b92ffSmrg    opt="$1"
7275f5b92ffSmrg    shift
72817a48c7cSmrg
7295f5b92ffSmrg    case $opt in
7305f5b92ffSmrg      --config)		func_config					;;
73117a48c7cSmrg
7325f5b92ffSmrg      --debug)		preserve_args="$preserve_args $opt"
7335f5b92ffSmrg			func_echo "enabling shell trace mode"
7345f5b92ffSmrg			opt_debug='set -x'
7355f5b92ffSmrg			$opt_debug
7365f5b92ffSmrg			;;
73717a48c7cSmrg
7385f5b92ffSmrg      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7395f5b92ffSmrg			execute_dlfiles="$execute_dlfiles $1"
7405f5b92ffSmrg			shift
7415f5b92ffSmrg			;;
74217a48c7cSmrg
7435f5b92ffSmrg      --dry-run | -n)	opt_dry_run=:					;;
7445f5b92ffSmrg      --features)       func_features					;;
7455f5b92ffSmrg      --finish)		mode="finish"					;;
7465f5b92ffSmrg
7475f5b92ffSmrg      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7485f5b92ffSmrg			case $1 in
7495f5b92ffSmrg			  # Valid mode arguments:
7505f5b92ffSmrg			  clean)	;;
7515f5b92ffSmrg			  compile)	;;
7525f5b92ffSmrg			  execute)	;;
7535f5b92ffSmrg			  finish)	;;
7545f5b92ffSmrg			  install)	;;
7555f5b92ffSmrg			  link)		;;
7565f5b92ffSmrg			  relink)	;;
7575f5b92ffSmrg			  uninstall)	;;
7585f5b92ffSmrg
7595f5b92ffSmrg			  # Catch anything else as an error
7605f5b92ffSmrg			  *) func_error "invalid argument for $opt"
7615f5b92ffSmrg			     exit_cmd=exit
7625f5b92ffSmrg			     break
7635f5b92ffSmrg			     ;;
7645f5b92ffSmrg		        esac
7655f5b92ffSmrg
7665f5b92ffSmrg			mode="$1"
7675f5b92ffSmrg			shift
7685f5b92ffSmrg			;;
7695f5b92ffSmrg
7705f5b92ffSmrg      --preserve-dup-deps)
7715f5b92ffSmrg			opt_duplicate_deps=:				;;
7725f5b92ffSmrg
7735f5b92ffSmrg      --quiet|--silent)	preserve_args="$preserve_args $opt"
7745f5b92ffSmrg			opt_silent=:
7755f5b92ffSmrg			;;
7765f5b92ffSmrg
7775f5b92ffSmrg      --verbose| -v)	preserve_args="$preserve_args $opt"
7785f5b92ffSmrg			opt_silent=false
7795f5b92ffSmrg			;;
7805f5b92ffSmrg
7815f5b92ffSmrg      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7825f5b92ffSmrg			preserve_args="$preserve_args $opt $1"
7835f5b92ffSmrg			func_enable_tag "$1"	# tagname is set here
7845f5b92ffSmrg			shift
7855f5b92ffSmrg			;;
7865f5b92ffSmrg
7875f5b92ffSmrg      # Separate optargs to long options:
7885f5b92ffSmrg      -dlopen=*|--mode=*|--tag=*)
7895f5b92ffSmrg			func_opt_split "$opt"
7905f5b92ffSmrg			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
7915f5b92ffSmrg			shift
7925f5b92ffSmrg			;;
7935f5b92ffSmrg
7945f5b92ffSmrg      -\?|-h)		func_usage					;;
7955f5b92ffSmrg      --help)		opt_help=:					;;
7965f5b92ffSmrg      --version)	func_version					;;
7975f5b92ffSmrg
7985f5b92ffSmrg      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
7995f5b92ffSmrg
8005f5b92ffSmrg      *)		nonopt="$opt"
8015f5b92ffSmrg			break
8025f5b92ffSmrg			;;
8035f5b92ffSmrg    esac
8045f5b92ffSmrg  done
8055f5b92ffSmrg
8065f5b92ffSmrg
8075f5b92ffSmrg  case $host in
8085f5b92ffSmrg    *cygwin* | *mingw* | *pw32* | *cegcc*)
8095f5b92ffSmrg      # don't eliminate duplications in $postdeps and $predeps
8105f5b92ffSmrg      opt_duplicate_compiler_generated_deps=:
81117a48c7cSmrg      ;;
81217a48c7cSmrg    *)
8135f5b92ffSmrg      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
8145f5b92ffSmrg      ;;
8155f5b92ffSmrg  esac
81617a48c7cSmrg
8175f5b92ffSmrg  # Having warned about all mis-specified options, bail out if
8185f5b92ffSmrg  # anything was wrong.
8195f5b92ffSmrg  $exit_cmd $EXIT_FAILURE
8205f5b92ffSmrg}
8215f5b92ffSmrg
8225f5b92ffSmrg# func_check_version_match
8235f5b92ffSmrg# Ensure that we are using m4 macros, and libtool script from the same
8245f5b92ffSmrg# release of libtool.
8255f5b92ffSmrgfunc_check_version_match ()
8265f5b92ffSmrg{
8275f5b92ffSmrg  if test "$package_revision" != "$macro_revision"; then
8285f5b92ffSmrg    if test "$VERSION" != "$macro_version"; then
8295f5b92ffSmrg      if test -z "$macro_version"; then
8305f5b92ffSmrg        cat >&2 <<_LT_EOF
8315f5b92ffSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
8325f5b92ffSmrg$progname: definition of this LT_INIT comes from an older release.
8335f5b92ffSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
8345f5b92ffSmrg$progname: and run autoconf again.
8355f5b92ffSmrg_LT_EOF
8365f5b92ffSmrg      else
8375f5b92ffSmrg        cat >&2 <<_LT_EOF
8385f5b92ffSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
8395f5b92ffSmrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
8405f5b92ffSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
8415f5b92ffSmrg$progname: and run autoconf again.
8425f5b92ffSmrg_LT_EOF
84317a48c7cSmrg      fi
8445f5b92ffSmrg    else
8455f5b92ffSmrg      cat >&2 <<_LT_EOF
8465f5b92ffSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
8475f5b92ffSmrg$progname: but the definition of this LT_INIT comes from revision $macro_revision.
8485f5b92ffSmrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision
8495f5b92ffSmrg$progname: of $PACKAGE $VERSION and run autoconf again.
8505f5b92ffSmrg_LT_EOF
8515f5b92ffSmrg    fi
8525f5b92ffSmrg
8535f5b92ffSmrg    exit $EXIT_MISMATCH
8545f5b92ffSmrg  fi
8555f5b92ffSmrg}
8565f5b92ffSmrg
8575f5b92ffSmrg
8585f5b92ffSmrg## ----------- ##
8595f5b92ffSmrg##    Main.    ##
8605f5b92ffSmrg## ----------- ##
8615f5b92ffSmrg
8625f5b92ffSmrg$opt_help || {
8635f5b92ffSmrg  # Sanity checks first:
8645f5b92ffSmrg  func_check_version_match
8655f5b92ffSmrg
8665f5b92ffSmrg  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
8675f5b92ffSmrg    func_fatal_configuration "not configured to build any kind of library"
86817a48c7cSmrg  fi
86917a48c7cSmrg
8705f5b92ffSmrg  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
8715f5b92ffSmrg
8725f5b92ffSmrg
8735f5b92ffSmrg  # Darwin sucks
8745f5b92ffSmrg  eval std_shrext=\"$shrext_cmds\"
8755f5b92ffSmrg
8765f5b92ffSmrg
87717a48c7cSmrg  # Only execute mode is allowed to have -dlopen flags.
87817a48c7cSmrg  if test -n "$execute_dlfiles" && test "$mode" != execute; then
8795f5b92ffSmrg    func_error "unrecognized option \`-dlopen'"
8805f5b92ffSmrg    $ECHO "$help" 1>&2
88117a48c7cSmrg    exit $EXIT_FAILURE
88217a48c7cSmrg  fi
88317a48c7cSmrg
88417a48c7cSmrg  # Change the help message to a mode-specific one.
88517a48c7cSmrg  generic_help="$help"
8865f5b92ffSmrg  help="Try \`$progname --help --mode=$mode' for more information."
8875f5b92ffSmrg}
88817a48c7cSmrg
88917a48c7cSmrg
8905f5b92ffSmrg# func_lalib_p file
8915f5b92ffSmrg# True iff FILE is a libtool `.la' library or `.lo' object file.
8925f5b92ffSmrg# This function is only a basic sanity check; it will hardly flush out
8935f5b92ffSmrg# determined imposters.
8945f5b92ffSmrgfunc_lalib_p ()
8955f5b92ffSmrg{
8965f5b92ffSmrg    test -f "$1" &&
8975f5b92ffSmrg      $SED -e 4q "$1" 2>/dev/null \
8985f5b92ffSmrg        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
8995f5b92ffSmrg}
90017a48c7cSmrg
9015f5b92ffSmrg# func_lalib_unsafe_p file
9025f5b92ffSmrg# True iff FILE is a libtool `.la' library or `.lo' object file.
9035f5b92ffSmrg# This function implements the same check as func_lalib_p without
9045f5b92ffSmrg# resorting to external programs.  To this end, it redirects stdin and
9055f5b92ffSmrg# closes it afterwards, without saving the original file descriptor.
9065f5b92ffSmrg# As a safety measure, use it only where a negative result would be
9075f5b92ffSmrg# fatal anyway.  Works if `file' does not exist.
9085f5b92ffSmrgfunc_lalib_unsafe_p ()
9095f5b92ffSmrg{
9105f5b92ffSmrg    lalib_p=no
9115f5b92ffSmrg    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
9125f5b92ffSmrg	for lalib_p_l in 1 2 3 4
9135f5b92ffSmrg	do
9145f5b92ffSmrg	    read lalib_p_line
9155f5b92ffSmrg	    case "$lalib_p_line" in
9165f5b92ffSmrg		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
9175f5b92ffSmrg	    esac
9185f5b92ffSmrg	done
9195f5b92ffSmrg	exec 0<&5 5<&-
9205f5b92ffSmrg    fi
9215f5b92ffSmrg    test "$lalib_p" = yes
9225f5b92ffSmrg}
92317a48c7cSmrg
9245f5b92ffSmrg# func_ltwrapper_script_p file
9255f5b92ffSmrg# True iff FILE is a libtool wrapper script
9265f5b92ffSmrg# This function is only a basic sanity check; it will hardly flush out
9275f5b92ffSmrg# determined imposters.
9285f5b92ffSmrgfunc_ltwrapper_script_p ()
9295f5b92ffSmrg{
9305f5b92ffSmrg    func_lalib_p "$1"
9315f5b92ffSmrg}
93217a48c7cSmrg
9335f5b92ffSmrg# func_ltwrapper_executable_p file
9345f5b92ffSmrg# True iff FILE is a libtool wrapper executable
9355f5b92ffSmrg# This function is only a basic sanity check; it will hardly flush out
9365f5b92ffSmrg# determined imposters.
9375f5b92ffSmrgfunc_ltwrapper_executable_p ()
9385f5b92ffSmrg{
9395f5b92ffSmrg    func_ltwrapper_exec_suffix=
9405f5b92ffSmrg    case $1 in
9415f5b92ffSmrg    *.exe) ;;
9425f5b92ffSmrg    *) func_ltwrapper_exec_suffix=.exe ;;
9435f5b92ffSmrg    esac
9445f5b92ffSmrg    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
9455f5b92ffSmrg}
94617a48c7cSmrg
9475f5b92ffSmrg# func_ltwrapper_scriptname file
9485f5b92ffSmrg# Assumes file is an ltwrapper_executable
9495f5b92ffSmrg# uses $file to determine the appropriate filename for a
9505f5b92ffSmrg# temporary ltwrapper_script.
9515f5b92ffSmrgfunc_ltwrapper_scriptname ()
9525f5b92ffSmrg{
9535f5b92ffSmrg    func_ltwrapper_scriptname_result=""
9545f5b92ffSmrg    if func_ltwrapper_executable_p "$1"; then
9555f5b92ffSmrg	func_dirname_and_basename "$1" "" "."
9565f5b92ffSmrg	func_stripname '' '.exe' "$func_basename_result"
9575f5b92ffSmrg	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
9585f5b92ffSmrg    fi
9595f5b92ffSmrg}
9605f5b92ffSmrg
9615f5b92ffSmrg# func_ltwrapper_p file
9625f5b92ffSmrg# True iff FILE is a libtool wrapper script or wrapper executable
9635f5b92ffSmrg# This function is only a basic sanity check; it will hardly flush out
9645f5b92ffSmrg# determined imposters.
9655f5b92ffSmrgfunc_ltwrapper_p ()
9665f5b92ffSmrg{
9675f5b92ffSmrg    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
9685f5b92ffSmrg}
9695f5b92ffSmrg
9705f5b92ffSmrg
9715f5b92ffSmrg# func_execute_cmds commands fail_cmd
9725f5b92ffSmrg# Execute tilde-delimited COMMANDS.
9735f5b92ffSmrg# If FAIL_CMD is given, eval that upon failure.
9745f5b92ffSmrg# FAIL_CMD may read-access the current command in variable CMD!
9755f5b92ffSmrgfunc_execute_cmds ()
9765f5b92ffSmrg{
9775f5b92ffSmrg    $opt_debug
9785f5b92ffSmrg    save_ifs=$IFS; IFS='~'
9795f5b92ffSmrg    for cmd in $1; do
9805f5b92ffSmrg      IFS=$save_ifs
9815f5b92ffSmrg      eval cmd=\"$cmd\"
9825f5b92ffSmrg      func_show_eval "$cmd" "${2-:}"
9835f5b92ffSmrg    done
9845f5b92ffSmrg    IFS=$save_ifs
9855f5b92ffSmrg}
9865f5b92ffSmrg
9875f5b92ffSmrg
9885f5b92ffSmrg# func_source file
9895f5b92ffSmrg# Source FILE, adding directory component if necessary.
9905f5b92ffSmrg# Note that it is not necessary on cygwin/mingw to append a dot to
9915f5b92ffSmrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
9925f5b92ffSmrg# behavior happens only for exec(3), not for open(2)!  Also, sourcing
9935f5b92ffSmrg# `FILE.' does not work on cygwin managed mounts.
9945f5b92ffSmrgfunc_source ()
9955f5b92ffSmrg{
9965f5b92ffSmrg    $opt_debug
9975f5b92ffSmrg    case $1 in
9985f5b92ffSmrg    */* | *\\*)	. "$1" ;;
9995f5b92ffSmrg    *)		. "./$1" ;;
10005f5b92ffSmrg    esac
10015f5b92ffSmrg}
10025f5b92ffSmrg
10035f5b92ffSmrg
10045f5b92ffSmrg# func_infer_tag arg
10055f5b92ffSmrg# Infer tagged configuration to use if any are available and
10065f5b92ffSmrg# if one wasn't chosen via the "--tag" command line option.
10075f5b92ffSmrg# Only attempt this if the compiler in the base compile
10085f5b92ffSmrg# command doesn't match the default compiler.
10095f5b92ffSmrg# arg is usually of the form 'gcc ...'
10105f5b92ffSmrgfunc_infer_tag ()
10115f5b92ffSmrg{
10125f5b92ffSmrg    $opt_debug
10135f5b92ffSmrg    if test -n "$available_tags" && test -z "$tagname"; then
10145f5b92ffSmrg      CC_quoted=
10155f5b92ffSmrg      for arg in $CC; do
10165f5b92ffSmrg        func_quote_for_eval "$arg"
10175f5b92ffSmrg	CC_quoted="$CC_quoted $func_quote_for_eval_result"
10185f5b92ffSmrg      done
10195f5b92ffSmrg      case $@ in
10205f5b92ffSmrg      # Blanks in the command may have been stripped by the calling shell,
10215f5b92ffSmrg      # but not from the CC environment variable when configure was run.
10225f5b92ffSmrg      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
10235f5b92ffSmrg      # Blanks at the start of $base_compile will cause this to fail
10245f5b92ffSmrg      # if we don't check for them as well.
10255f5b92ffSmrg      *)
10265f5b92ffSmrg	for z in $available_tags; do
10275f5b92ffSmrg	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
10285f5b92ffSmrg	    # Evaluate the configuration.
10295f5b92ffSmrg	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
10305f5b92ffSmrg	    CC_quoted=
10315f5b92ffSmrg	    for arg in $CC; do
10325f5b92ffSmrg	      # Double-quote args containing other shell metacharacters.
10335f5b92ffSmrg	      func_quote_for_eval "$arg"
10345f5b92ffSmrg	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
10355f5b92ffSmrg	    done
10365f5b92ffSmrg	    case "$@ " in
10375f5b92ffSmrg	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
10385f5b92ffSmrg	      # The compiler in the base compile command matches
10395f5b92ffSmrg	      # the one in the tagged configuration.
10405f5b92ffSmrg	      # Assume this is the tagged configuration we want.
10415f5b92ffSmrg	      tagname=$z
10425f5b92ffSmrg	      break
10435f5b92ffSmrg	      ;;
10445f5b92ffSmrg	    esac
10455f5b92ffSmrg	  fi
10465f5b92ffSmrg	done
10475f5b92ffSmrg	# If $tagname still isn't set, then no tagged configuration
10485f5b92ffSmrg	# was found and let the user know that the "--tag" command
10495f5b92ffSmrg	# line option must be used.
10505f5b92ffSmrg	if test -z "$tagname"; then
10515f5b92ffSmrg	  func_echo "unable to infer tagged configuration"
10525f5b92ffSmrg	  func_fatal_error "specify a tag with \`--tag'"
10535f5b92ffSmrg#	else
10545f5b92ffSmrg#	  func_verbose "using $tagname tagged configuration"
10555f5b92ffSmrg	fi
10565f5b92ffSmrg	;;
10575f5b92ffSmrg      esac
10585f5b92ffSmrg    fi
10595f5b92ffSmrg}
10605f5b92ffSmrg
10615f5b92ffSmrg
10625f5b92ffSmrg
10635f5b92ffSmrg# func_write_libtool_object output_name pic_name nonpic_name
10645f5b92ffSmrg# Create a libtool object file (analogous to a ".la" file),
10655f5b92ffSmrg# but don't create it if we're doing a dry run.
10665f5b92ffSmrgfunc_write_libtool_object ()
10675f5b92ffSmrg{
10685f5b92ffSmrg    write_libobj=${1}
10695f5b92ffSmrg    if test "$build_libtool_libs" = yes; then
10705f5b92ffSmrg      write_lobj=\'${2}\'
10715f5b92ffSmrg    else
10725f5b92ffSmrg      write_lobj=none
10735f5b92ffSmrg    fi
10745f5b92ffSmrg
10755f5b92ffSmrg    if test "$build_old_libs" = yes; then
10765f5b92ffSmrg      write_oldobj=\'${3}\'
10775f5b92ffSmrg    else
10785f5b92ffSmrg      write_oldobj=none
10795f5b92ffSmrg    fi
10805f5b92ffSmrg
10815f5b92ffSmrg    $opt_dry_run || {
10825f5b92ffSmrg      cat >${write_libobj}T <<EOF
10835f5b92ffSmrg# $write_libobj - a libtool object file
10845f5b92ffSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
10855f5b92ffSmrg#
10865f5b92ffSmrg# Please DO NOT delete this file!
10875f5b92ffSmrg# It is necessary for linking the library.
10885f5b92ffSmrg
10895f5b92ffSmrg# Name of the PIC object.
10905f5b92ffSmrgpic_object=$write_lobj
10915f5b92ffSmrg
10925f5b92ffSmrg# Name of the non-PIC object
10935f5b92ffSmrgnon_pic_object=$write_oldobj
10945f5b92ffSmrg
10955f5b92ffSmrgEOF
10965f5b92ffSmrg      $MV "${write_libobj}T" "${write_libobj}"
10975f5b92ffSmrg    }
10985f5b92ffSmrg}
10995f5b92ffSmrg
11005f5b92ffSmrg# func_mode_compile arg...
11015f5b92ffSmrgfunc_mode_compile ()
11025f5b92ffSmrg{
11035f5b92ffSmrg    $opt_debug
11045f5b92ffSmrg    # Get the compilation command and the source file.
11055f5b92ffSmrg    base_compile=
11065f5b92ffSmrg    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
11075f5b92ffSmrg    suppress_opt=yes
11085f5b92ffSmrg    suppress_output=
11095f5b92ffSmrg    arg_mode=normal
11105f5b92ffSmrg    libobj=
11115f5b92ffSmrg    later=
11125f5b92ffSmrg    pie_flag=
11135f5b92ffSmrg
11145f5b92ffSmrg    for arg
11155f5b92ffSmrg    do
11165f5b92ffSmrg      case $arg_mode in
11175f5b92ffSmrg      arg  )
11185f5b92ffSmrg	# do not "continue".  Instead, add this to base_compile
11195f5b92ffSmrg	lastarg="$arg"
11205f5b92ffSmrg	arg_mode=normal
11215f5b92ffSmrg	;;
11225f5b92ffSmrg
11235f5b92ffSmrg      target )
11245f5b92ffSmrg	libobj="$arg"
11255f5b92ffSmrg	arg_mode=normal
11265f5b92ffSmrg	continue
11275f5b92ffSmrg	;;
11285f5b92ffSmrg
11295f5b92ffSmrg      normal )
11305f5b92ffSmrg	# Accept any command-line options.
11315f5b92ffSmrg	case $arg in
11325f5b92ffSmrg	-o)
11335f5b92ffSmrg	  test -n "$libobj" && \
11345f5b92ffSmrg	    func_fatal_error "you cannot specify \`-o' more than once"
11355f5b92ffSmrg	  arg_mode=target
11365f5b92ffSmrg	  continue
11375f5b92ffSmrg	  ;;
11385f5b92ffSmrg
11395f5b92ffSmrg	-pie | -fpie | -fPIE)
11405f5b92ffSmrg          pie_flag="$pie_flag $arg"
11415f5b92ffSmrg	  continue
11425f5b92ffSmrg	  ;;
11435f5b92ffSmrg
11445f5b92ffSmrg	-shared | -static | -prefer-pic | -prefer-non-pic)
11455f5b92ffSmrg	  later="$later $arg"
11465f5b92ffSmrg	  continue
11475f5b92ffSmrg	  ;;
11485f5b92ffSmrg
11495f5b92ffSmrg	-no-suppress)
115017a48c7cSmrg	  suppress_opt=no
115117a48c7cSmrg	  continue
115217a48c7cSmrg	  ;;
115317a48c7cSmrg
115417a48c7cSmrg	-Xcompiler)
115517a48c7cSmrg	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
115617a48c7cSmrg	  continue      #  The current "srcfile" will either be retained or
115717a48c7cSmrg	  ;;            #  replaced later.  I would guess that would be a bug.
115817a48c7cSmrg
115917a48c7cSmrg	-Wc,*)
11605f5b92ffSmrg	  func_stripname '-Wc,' '' "$arg"
11615f5b92ffSmrg	  args=$func_stripname_result
116217a48c7cSmrg	  lastarg=
116317a48c7cSmrg	  save_ifs="$IFS"; IFS=','
11645f5b92ffSmrg	  for arg in $args; do
116517a48c7cSmrg	    IFS="$save_ifs"
11665f5b92ffSmrg	    func_quote_for_eval "$arg"
11675f5b92ffSmrg	    lastarg="$lastarg $func_quote_for_eval_result"
116817a48c7cSmrg	  done
116917a48c7cSmrg	  IFS="$save_ifs"
11705f5b92ffSmrg	  func_stripname ' ' '' "$lastarg"
11715f5b92ffSmrg	  lastarg=$func_stripname_result
117217a48c7cSmrg
117317a48c7cSmrg	  # Add the arguments to base_compile.
117417a48c7cSmrg	  base_compile="$base_compile $lastarg"
117517a48c7cSmrg	  continue
117617a48c7cSmrg	  ;;
117717a48c7cSmrg
11785f5b92ffSmrg	*)
117917a48c7cSmrg	  # Accept the current argument as the source file.
118017a48c7cSmrg	  # The previous "srcfile" becomes the current argument.
118117a48c7cSmrg	  #
118217a48c7cSmrg	  lastarg="$srcfile"
118317a48c7cSmrg	  srcfile="$arg"
118417a48c7cSmrg	  ;;
118517a48c7cSmrg	esac  #  case $arg
118617a48c7cSmrg	;;
118717a48c7cSmrg      esac    #  case $arg_mode
118817a48c7cSmrg
118917a48c7cSmrg      # Aesthetically quote the previous argument.
11905f5b92ffSmrg      func_quote_for_eval "$lastarg"
11915f5b92ffSmrg      base_compile="$base_compile $func_quote_for_eval_result"
119217a48c7cSmrg    done # for arg
119317a48c7cSmrg
119417a48c7cSmrg    case $arg_mode in
119517a48c7cSmrg    arg)
11965f5b92ffSmrg      func_fatal_error "you must specify an argument for -Xcompile"
119717a48c7cSmrg      ;;
119817a48c7cSmrg    target)
11995f5b92ffSmrg      func_fatal_error "you must specify a target with \`-o'"
120017a48c7cSmrg      ;;
120117a48c7cSmrg    *)
120217a48c7cSmrg      # Get the name of the library object.
12035f5b92ffSmrg      test -z "$libobj" && {
12045f5b92ffSmrg	func_basename "$srcfile"
12055f5b92ffSmrg	libobj="$func_basename_result"
12065f5b92ffSmrg      }
120717a48c7cSmrg      ;;
120817a48c7cSmrg    esac
120917a48c7cSmrg
121017a48c7cSmrg    # Recognize several different file suffixes.
121117a48c7cSmrg    # If the user specifies -o file.o, it is replaced with file.lo
121217a48c7cSmrg    case $libobj in
12135f5b92ffSmrg    *.[cCFSifmso] | \
12145f5b92ffSmrg    *.ada | *.adb | *.ads | *.asm | \
12155f5b92ffSmrg    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
12165f5b92ffSmrg    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
12175f5b92ffSmrg      func_xform "$libobj"
12185f5b92ffSmrg      libobj=$func_xform_result
12195f5b92ffSmrg      ;;
122017a48c7cSmrg    esac
122117a48c7cSmrg
122217a48c7cSmrg    case $libobj in
12235f5b92ffSmrg    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
122417a48c7cSmrg    *)
12255f5b92ffSmrg      func_fatal_error "cannot determine name of library object from \`$libobj'"
122617a48c7cSmrg      ;;
122717a48c7cSmrg    esac
122817a48c7cSmrg
122917a48c7cSmrg    func_infer_tag $base_compile
123017a48c7cSmrg
123117a48c7cSmrg    for arg in $later; do
123217a48c7cSmrg      case $arg in
12335f5b92ffSmrg      -shared)
12345f5b92ffSmrg	test "$build_libtool_libs" != yes && \
12355f5b92ffSmrg	  func_fatal_configuration "can not build a shared library"
12365f5b92ffSmrg	build_old_libs=no
12375f5b92ffSmrg	continue
12385f5b92ffSmrg	;;
12395f5b92ffSmrg
124017a48c7cSmrg      -static)
12415f5b92ffSmrg	build_libtool_libs=no
124217a48c7cSmrg	build_old_libs=yes
124317a48c7cSmrg	continue
124417a48c7cSmrg	;;
124517a48c7cSmrg
124617a48c7cSmrg      -prefer-pic)
124717a48c7cSmrg	pic_mode=yes
124817a48c7cSmrg	continue
124917a48c7cSmrg	;;
125017a48c7cSmrg
125117a48c7cSmrg      -prefer-non-pic)
125217a48c7cSmrg	pic_mode=no
125317a48c7cSmrg	continue
125417a48c7cSmrg	;;
125517a48c7cSmrg      esac
125617a48c7cSmrg    done
125717a48c7cSmrg
12585f5b92ffSmrg    func_quote_for_eval "$libobj"
12595f5b92ffSmrg    test "X$libobj" != "X$func_quote_for_eval_result" \
12605f5b92ffSmrg      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
12615f5b92ffSmrg      && func_warning "libobj name \`$libobj' may not contain shell special characters."
12625f5b92ffSmrg    func_dirname_and_basename "$obj" "/" ""
12635f5b92ffSmrg    objname="$func_basename_result"
12645f5b92ffSmrg    xdir="$func_dirname_result"
126517a48c7cSmrg    lobj=${xdir}$objdir/$objname
126617a48c7cSmrg
12675f5b92ffSmrg    test -z "$base_compile" && \
12685f5b92ffSmrg      func_fatal_help "you must specify a compilation command"
126917a48c7cSmrg
127017a48c7cSmrg    # Delete any leftover library objects.
127117a48c7cSmrg    if test "$build_old_libs" = yes; then
127217a48c7cSmrg      removelist="$obj $lobj $libobj ${libobj}T"
127317a48c7cSmrg    else
127417a48c7cSmrg      removelist="$lobj $libobj ${libobj}T"
127517a48c7cSmrg    fi
127617a48c7cSmrg
127717a48c7cSmrg    # On Cygwin there's no "real" PIC flag so we must build both object types
127817a48c7cSmrg    case $host_os in
12795f5b92ffSmrg    cygwin* | mingw* | pw32* | os2* | cegcc*)
128017a48c7cSmrg      pic_mode=default
128117a48c7cSmrg      ;;
128217a48c7cSmrg    esac
128317a48c7cSmrg    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
128417a48c7cSmrg      # non-PIC code in shared libraries is not supported
128517a48c7cSmrg      pic_mode=default
128617a48c7cSmrg    fi
128717a48c7cSmrg
128817a48c7cSmrg    # Calculate the filename of the output object if compiler does
128917a48c7cSmrg    # not support -o with -c
129017a48c7cSmrg    if test "$compiler_c_o" = no; then
12915f5b92ffSmrg      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
129217a48c7cSmrg      lockfile="$output_obj.lock"
129317a48c7cSmrg    else
129417a48c7cSmrg      output_obj=
129517a48c7cSmrg      need_locks=no
129617a48c7cSmrg      lockfile=
129717a48c7cSmrg    fi
129817a48c7cSmrg
129917a48c7cSmrg    # Lock this critical section if it is needed
130017a48c7cSmrg    # We use this script file to make the link, it avoids creating a new file
130117a48c7cSmrg    if test "$need_locks" = yes; then
13025f5b92ffSmrg      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
13035f5b92ffSmrg	func_echo "Waiting for $lockfile to be removed"
130417a48c7cSmrg	sleep 2
130517a48c7cSmrg      done
130617a48c7cSmrg    elif test "$need_locks" = warn; then
130717a48c7cSmrg      if test -f "$lockfile"; then
13085f5b92ffSmrg	$ECHO "\
130917a48c7cSmrg*** ERROR, $lockfile exists and contains:
131017a48c7cSmrg`cat $lockfile 2>/dev/null`
131117a48c7cSmrg
131217a48c7cSmrgThis indicates that another process is trying to use the same
131317a48c7cSmrgtemporary object file, and libtool could not work around it because
131417a48c7cSmrgyour compiler does not support \`-c' and \`-o' together.  If you
131517a48c7cSmrgrepeat this compilation, it may succeed, by chance, but you had better
131617a48c7cSmrgavoid parallel builds (make -j) in this platform, or get a better
131717a48c7cSmrgcompiler."
131817a48c7cSmrg
13195f5b92ffSmrg	$opt_dry_run || $RM $removelist
132017a48c7cSmrg	exit $EXIT_FAILURE
132117a48c7cSmrg      fi
13225f5b92ffSmrg      removelist="$removelist $output_obj"
13235f5b92ffSmrg      $ECHO "$srcfile" > "$lockfile"
132417a48c7cSmrg    fi
132517a48c7cSmrg
13265f5b92ffSmrg    $opt_dry_run || $RM $removelist
13275f5b92ffSmrg    removelist="$removelist $lockfile"
13285f5b92ffSmrg    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
13295f5b92ffSmrg
133017a48c7cSmrg    if test -n "$fix_srcfile_path"; then
133117a48c7cSmrg      eval srcfile=\"$fix_srcfile_path\"
133217a48c7cSmrg    fi
13335f5b92ffSmrg    func_quote_for_eval "$srcfile"
13345f5b92ffSmrg    qsrcfile=$func_quote_for_eval_result
133517a48c7cSmrg
133617a48c7cSmrg    # Only build a PIC object if we are building libtool libraries.
133717a48c7cSmrg    if test "$build_libtool_libs" = yes; then
133817a48c7cSmrg      # Without this assignment, base_compile gets emptied.
133917a48c7cSmrg      fbsd_hideous_sh_bug=$base_compile
134017a48c7cSmrg
134117a48c7cSmrg      if test "$pic_mode" != no; then
134217a48c7cSmrg	command="$base_compile $qsrcfile $pic_flag"
134317a48c7cSmrg      else
134417a48c7cSmrg	# Don't build PIC code
134517a48c7cSmrg	command="$base_compile $qsrcfile"
134617a48c7cSmrg      fi
134717a48c7cSmrg
13485f5b92ffSmrg      func_mkdir_p "$xdir$objdir"
134917a48c7cSmrg
135017a48c7cSmrg      if test -z "$output_obj"; then
135117a48c7cSmrg	# Place PIC objects in $objdir
135217a48c7cSmrg	command="$command -o $lobj"
135317a48c7cSmrg      fi
135417a48c7cSmrg
13555f5b92ffSmrg      func_show_eval_locale "$command"	\
13565f5b92ffSmrg          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
135717a48c7cSmrg
135817a48c7cSmrg      if test "$need_locks" = warn &&
135917a48c7cSmrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
13605f5b92ffSmrg	$ECHO "\
136117a48c7cSmrg*** ERROR, $lockfile contains:
136217a48c7cSmrg`cat $lockfile 2>/dev/null`
136317a48c7cSmrg
136417a48c7cSmrgbut it should contain:
136517a48c7cSmrg$srcfile
136617a48c7cSmrg
136717a48c7cSmrgThis indicates that another process is trying to use the same
136817a48c7cSmrgtemporary object file, and libtool could not work around it because
136917a48c7cSmrgyour compiler does not support \`-c' and \`-o' together.  If you
137017a48c7cSmrgrepeat this compilation, it may succeed, by chance, but you had better
137117a48c7cSmrgavoid parallel builds (make -j) in this platform, or get a better
137217a48c7cSmrgcompiler."
137317a48c7cSmrg
13745f5b92ffSmrg	$opt_dry_run || $RM $removelist
137517a48c7cSmrg	exit $EXIT_FAILURE
137617a48c7cSmrg      fi
137717a48c7cSmrg
137817a48c7cSmrg      # Just move the object if needed, then go on to compile the next one
137917a48c7cSmrg      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
13805f5b92ffSmrg	func_show_eval '$MV "$output_obj" "$lobj"' \
13815f5b92ffSmrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
138217a48c7cSmrg      fi
138317a48c7cSmrg
138417a48c7cSmrg      # Allow error messages only from the first compilation.
138517a48c7cSmrg      if test "$suppress_opt" = yes; then
13865f5b92ffSmrg	suppress_output=' >/dev/null 2>&1'
138717a48c7cSmrg      fi
138817a48c7cSmrg    fi
138917a48c7cSmrg
139017a48c7cSmrg    # Only build a position-dependent object if we build old libraries.
139117a48c7cSmrg    if test "$build_old_libs" = yes; then
139217a48c7cSmrg      if test "$pic_mode" != yes; then
139317a48c7cSmrg	# Don't build PIC code
13945f5b92ffSmrg	command="$base_compile $qsrcfile$pie_flag"
139517a48c7cSmrg      else
139617a48c7cSmrg	command="$base_compile $qsrcfile $pic_flag"
139717a48c7cSmrg      fi
139817a48c7cSmrg      if test "$compiler_c_o" = yes; then
139917a48c7cSmrg	command="$command -o $obj"
140017a48c7cSmrg      fi
140117a48c7cSmrg
140217a48c7cSmrg      # Suppress compiler output if we already did a PIC compilation.
140317a48c7cSmrg      command="$command$suppress_output"
14045f5b92ffSmrg      func_show_eval_locale "$command" \
14055f5b92ffSmrg        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
140617a48c7cSmrg
140717a48c7cSmrg      if test "$need_locks" = warn &&
140817a48c7cSmrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
14095f5b92ffSmrg	$ECHO "\
141017a48c7cSmrg*** ERROR, $lockfile contains:
141117a48c7cSmrg`cat $lockfile 2>/dev/null`
141217a48c7cSmrg
141317a48c7cSmrgbut it should contain:
141417a48c7cSmrg$srcfile
141517a48c7cSmrg
141617a48c7cSmrgThis indicates that another process is trying to use the same
141717a48c7cSmrgtemporary object file, and libtool could not work around it because
141817a48c7cSmrgyour compiler does not support \`-c' and \`-o' together.  If you
141917a48c7cSmrgrepeat this compilation, it may succeed, by chance, but you had better
142017a48c7cSmrgavoid parallel builds (make -j) in this platform, or get a better
142117a48c7cSmrgcompiler."
142217a48c7cSmrg
14235f5b92ffSmrg	$opt_dry_run || $RM $removelist
142417a48c7cSmrg	exit $EXIT_FAILURE
142517a48c7cSmrg      fi
142617a48c7cSmrg
142717a48c7cSmrg      # Just move the object if needed
142817a48c7cSmrg      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
14295f5b92ffSmrg	func_show_eval '$MV "$output_obj" "$obj"' \
14305f5b92ffSmrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
143117a48c7cSmrg      fi
143217a48c7cSmrg    fi
143317a48c7cSmrg
14345f5b92ffSmrg    $opt_dry_run || {
14355f5b92ffSmrg      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
143617a48c7cSmrg
14375f5b92ffSmrg      # Unlock the critical section if it was locked
14385f5b92ffSmrg      if test "$need_locks" != no; then
14395f5b92ffSmrg	removelist=$lockfile
14405f5b92ffSmrg        $RM "$lockfile"
14415f5b92ffSmrg      fi
14425f5b92ffSmrg    }
144317a48c7cSmrg
144417a48c7cSmrg    exit $EXIT_SUCCESS
14455f5b92ffSmrg}
144617a48c7cSmrg
14475f5b92ffSmrg$opt_help || {
14485f5b92ffSmrgtest "$mode" = compile && func_mode_compile ${1+"$@"}
14495f5b92ffSmrg}
145017a48c7cSmrg
14515f5b92ffSmrgfunc_mode_help ()
14525f5b92ffSmrg{
14535f5b92ffSmrg    # We need to display help for each of the modes.
14545f5b92ffSmrg    case $mode in
14555f5b92ffSmrg      "")
14565f5b92ffSmrg        # Generic help is extracted from the usage comments
14575f5b92ffSmrg        # at the start of this file.
14585f5b92ffSmrg        func_help
14595f5b92ffSmrg        ;;
146017a48c7cSmrg
14615f5b92ffSmrg      clean)
14625f5b92ffSmrg        $ECHO \
14635f5b92ffSmrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
146417a48c7cSmrg
14655f5b92ffSmrgRemove files from the build directory.
146617a48c7cSmrg
14675f5b92ffSmrgRM is the name of the program to use to delete files associated with each FILE
14685f5b92ffSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
14695f5b92ffSmrgto RM.
147017a48c7cSmrg
14715f5b92ffSmrgIf FILE is a libtool library, object or program, all the files associated
14725f5b92ffSmrgwith it are deleted. Otherwise, only FILE itself is deleted using RM."
14735f5b92ffSmrg        ;;
147417a48c7cSmrg
14755f5b92ffSmrg      compile)
14765f5b92ffSmrg      $ECHO \
14775f5b92ffSmrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
147817a48c7cSmrg
14795f5b92ffSmrgCompile a source file into a libtool library object.
148017a48c7cSmrg
14815f5b92ffSmrgThis mode accepts the following additional options:
148217a48c7cSmrg
14835f5b92ffSmrg  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
14845f5b92ffSmrg  -no-suppress      do not suppress compiler output for multiple passes
14855f5b92ffSmrg  -prefer-pic       try to building PIC objects only
14865f5b92ffSmrg  -prefer-non-pic   try to building non-PIC objects only
14875f5b92ffSmrg  -shared           do not build a \`.o' file suitable for static linking
14885f5b92ffSmrg  -static           only build a \`.o' file suitable for static linking
148917a48c7cSmrg
14905f5b92ffSmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
14915f5b92ffSmrgfrom the given SOURCEFILE.
149217a48c7cSmrg
14935f5b92ffSmrgThe output file name is determined by removing the directory component from
14945f5b92ffSmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the
14955f5b92ffSmrglibrary object suffix, \`.lo'."
14965f5b92ffSmrg        ;;
149717a48c7cSmrg
14985f5b92ffSmrg      execute)
14995f5b92ffSmrg        $ECHO \
15005f5b92ffSmrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
150117a48c7cSmrg
15025f5b92ffSmrgAutomatically set library path, then run a program.
150317a48c7cSmrg
15045f5b92ffSmrgThis mode accepts the following additional options:
150517a48c7cSmrg
15065f5b92ffSmrg  -dlopen FILE      add the directory containing FILE to the library path
150717a48c7cSmrg
15085f5b92ffSmrgThis mode sets the library path environment variable according to \`-dlopen'
15095f5b92ffSmrgflags.
151017a48c7cSmrg
15115f5b92ffSmrgIf any of the ARGS are libtool executable wrappers, then they are translated
15125f5b92ffSmrginto their corresponding uninstalled binary, and any of their required library
15135f5b92ffSmrgdirectories are added to the library path.
151417a48c7cSmrg
15155f5b92ffSmrgThen, COMMAND is executed, with ARGS as arguments."
15165f5b92ffSmrg        ;;
151717a48c7cSmrg
15185f5b92ffSmrg      finish)
15195f5b92ffSmrg        $ECHO \
15205f5b92ffSmrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
152117a48c7cSmrg
15225f5b92ffSmrgComplete the installation of libtool libraries.
152317a48c7cSmrg
15245f5b92ffSmrgEach LIBDIR is a directory that contains libtool libraries.
152517a48c7cSmrg
15265f5b92ffSmrgThe commands that this mode executes may require superuser privileges.  Use
15275f5b92ffSmrgthe \`--dry-run' option if you just want to see what would be executed."
15285f5b92ffSmrg        ;;
152917a48c7cSmrg
15305f5b92ffSmrg      install)
15315f5b92ffSmrg        $ECHO \
15325f5b92ffSmrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
153317a48c7cSmrg
15345f5b92ffSmrgInstall executables or libraries.
153517a48c7cSmrg
15365f5b92ffSmrgINSTALL-COMMAND is the installation command.  The first component should be
15375f5b92ffSmrgeither the \`install' or \`cp' program.
153817a48c7cSmrg
15395f5b92ffSmrgThe following components of INSTALL-COMMAND are treated specially:
154017a48c7cSmrg
15415f5b92ffSmrg  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
154217a48c7cSmrg
15435f5b92ffSmrgThe rest of the components are interpreted as arguments to that command (only
15445f5b92ffSmrgBSD-compatible install options are recognized)."
15455f5b92ffSmrg        ;;
154617a48c7cSmrg
15475f5b92ffSmrg      link)
15485f5b92ffSmrg        $ECHO \
15495f5b92ffSmrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
155017a48c7cSmrg
15515f5b92ffSmrgLink object files or libraries together to form another library, or to
15525f5b92ffSmrgcreate an executable program.
155317a48c7cSmrg
15545f5b92ffSmrgLINK-COMMAND is a command using the C compiler that you would use to create
15555f5b92ffSmrga program from several object files.
155617a48c7cSmrg
15575f5b92ffSmrgThe following components of LINK-COMMAND are treated specially:
155817a48c7cSmrg
15595f5b92ffSmrg  -all-static       do not do any dynamic linking at all
15605f5b92ffSmrg  -avoid-version    do not add a version suffix if possible
15615f5b92ffSmrg  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
15625f5b92ffSmrg  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
15635f5b92ffSmrg  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
15645f5b92ffSmrg  -export-symbols SYMFILE
15655f5b92ffSmrg                    try to export only the symbols listed in SYMFILE
15665f5b92ffSmrg  -export-symbols-regex REGEX
15675f5b92ffSmrg                    try to export only the symbols matching REGEX
15685f5b92ffSmrg  -LLIBDIR          search LIBDIR for required installed libraries
15695f5b92ffSmrg  -lNAME            OUTPUT-FILE requires the installed library libNAME
15705f5b92ffSmrg  -module           build a library that can dlopened
15715f5b92ffSmrg  -no-fast-install  disable the fast-install mode
15725f5b92ffSmrg  -no-install       link a not-installable executable
15735f5b92ffSmrg  -no-undefined     declare that a library does not refer to external symbols
15745f5b92ffSmrg  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
15755f5b92ffSmrg  -objectlist FILE  Use a list of object files found in FILE to specify objects
15765f5b92ffSmrg  -precious-files-regex REGEX
15775f5b92ffSmrg                    don't remove output files matching REGEX
15785f5b92ffSmrg  -release RELEASE  specify package release information
15795f5b92ffSmrg  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
15805f5b92ffSmrg  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
15815f5b92ffSmrg  -shared           only do dynamic linking of libtool libraries
15825f5b92ffSmrg  -shrext SUFFIX    override the standard shared library file extension
15835f5b92ffSmrg  -static           do not do any dynamic linking of uninstalled libtool libraries
15845f5b92ffSmrg  -static-libtool-libs
15855f5b92ffSmrg                    do not do any dynamic linking of libtool libraries
15865f5b92ffSmrg  -version-info CURRENT[:REVISION[:AGE]]
15875f5b92ffSmrg                    specify library version info [each variable defaults to 0]
15885f5b92ffSmrg  -weak LIBNAME     declare that the target provides the LIBNAME interface
158917a48c7cSmrg
15905f5b92ffSmrgAll other options (arguments beginning with \`-') are ignored.
159117a48c7cSmrg
15925f5b92ffSmrgEvery other argument is treated as a filename.  Files ending in \`.la' are
15935f5b92ffSmrgtreated as uninstalled libtool libraries, other files are standard or library
15945f5b92ffSmrgobject files.
1595fbed5abfSmrg
15965f5b92ffSmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
15975f5b92ffSmrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is
15985f5b92ffSmrgrequired, except when creating a convenience library.
159917a48c7cSmrg
16005f5b92ffSmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
16015f5b92ffSmrgusing \`ar' and \`ranlib', or on Windows using \`lib'.
160217a48c7cSmrg
16035f5b92ffSmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
16045f5b92ffSmrgis created, otherwise an executable program is created."
160517a48c7cSmrg        ;;
160617a48c7cSmrg
16075f5b92ffSmrg      uninstall)
16085f5b92ffSmrg        $ECHO \
16095f5b92ffSmrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
161017a48c7cSmrg
16115f5b92ffSmrgRemove libraries from an installation directory.
161217a48c7cSmrg
16135f5b92ffSmrgRM is the name of the program to use to delete files associated with each FILE
16145f5b92ffSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
16155f5b92ffSmrgto RM.
161617a48c7cSmrg
16175f5b92ffSmrgIf FILE is a libtool library, all the files associated with it are deleted.
16185f5b92ffSmrgOtherwise, only FILE itself is deleted using RM."
16195f5b92ffSmrg        ;;
162017a48c7cSmrg
16215f5b92ffSmrg      *)
16225f5b92ffSmrg        func_fatal_help "invalid operation mode \`$mode'"
16235f5b92ffSmrg        ;;
16245f5b92ffSmrg    esac
162517a48c7cSmrg
16265f5b92ffSmrg    $ECHO
16275f5b92ffSmrg    $ECHO "Try \`$progname --help' for more information about other modes."
162817a48c7cSmrg
16295f5b92ffSmrg    exit $?
16305f5b92ffSmrg}
163117a48c7cSmrg
16325f5b92ffSmrg  # Now that we've collected a possible --mode arg, show help if necessary
16335f5b92ffSmrg  $opt_help && func_mode_help
163417a48c7cSmrg
163517a48c7cSmrg
16365f5b92ffSmrg# func_mode_execute arg...
16375f5b92ffSmrgfunc_mode_execute ()
16385f5b92ffSmrg{
16395f5b92ffSmrg    $opt_debug
16405f5b92ffSmrg    # The first argument is the command name.
16415f5b92ffSmrg    cmd="$nonopt"
16425f5b92ffSmrg    test -z "$cmd" && \
16435f5b92ffSmrg      func_fatal_help "you must specify a COMMAND"
164417a48c7cSmrg
16455f5b92ffSmrg    # Handle -dlopen flags immediately.
16465f5b92ffSmrg    for file in $execute_dlfiles; do
16475f5b92ffSmrg      test -f "$file" \
16485f5b92ffSmrg	|| func_fatal_help "\`$file' is not a file"
164917a48c7cSmrg
16505f5b92ffSmrg      dir=
16515f5b92ffSmrg      case $file in
16525f5b92ffSmrg      *.la)
16535f5b92ffSmrg	# Check to see that this really is a libtool archive.
16545f5b92ffSmrg	func_lalib_unsafe_p "$file" \
16555f5b92ffSmrg	  || func_fatal_help "\`$lib' is not a valid libtool archive"
165617a48c7cSmrg
16575f5b92ffSmrg	# Read the libtool library.
16585f5b92ffSmrg	dlname=
16595f5b92ffSmrg	library_names=
16605f5b92ffSmrg	func_source "$file"
166117a48c7cSmrg
16625f5b92ffSmrg	# Skip this library if it cannot be dlopened.
16635f5b92ffSmrg	if test -z "$dlname"; then
16645f5b92ffSmrg	  # Warn if it was a shared library.
16655f5b92ffSmrg	  test -n "$library_names" && \
16665f5b92ffSmrg	    func_warning "\`$file' was not linked with \`-export-dynamic'"
16675f5b92ffSmrg	  continue
16685f5b92ffSmrg	fi
166917a48c7cSmrg
16705f5b92ffSmrg	func_dirname "$file" "" "."
16715f5b92ffSmrg	dir="$func_dirname_result"
167217a48c7cSmrg
16735f5b92ffSmrg	if test -f "$dir/$objdir/$dlname"; then
16745f5b92ffSmrg	  dir="$dir/$objdir"
16755f5b92ffSmrg	else
16765f5b92ffSmrg	  if test ! -f "$dir/$dlname"; then
16775f5b92ffSmrg	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
16785f5b92ffSmrg	  fi
16795f5b92ffSmrg	fi
168017a48c7cSmrg	;;
168117a48c7cSmrg
16825f5b92ffSmrg      *.lo)
16835f5b92ffSmrg	# Just add the directory containing the .lo file.
16845f5b92ffSmrg	func_dirname "$file" "" "."
16855f5b92ffSmrg	dir="$func_dirname_result"
168617a48c7cSmrg	;;
168717a48c7cSmrg
16885f5b92ffSmrg      *)
16895f5b92ffSmrg	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
169017a48c7cSmrg	continue
169117a48c7cSmrg	;;
16925f5b92ffSmrg      esac
169317a48c7cSmrg
16945f5b92ffSmrg      # Get the absolute pathname.
16955f5b92ffSmrg      absdir=`cd "$dir" && pwd`
16965f5b92ffSmrg      test -n "$absdir" && dir="$absdir"
169717a48c7cSmrg
16985f5b92ffSmrg      # Now add the directory to shlibpath_var.
16995f5b92ffSmrg      if eval "test -z \"\$$shlibpath_var\""; then
17005f5b92ffSmrg	eval "$shlibpath_var=\"\$dir\""
17015f5b92ffSmrg      else
17025f5b92ffSmrg	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
17035f5b92ffSmrg      fi
17045f5b92ffSmrg    done
170517a48c7cSmrg
17065f5b92ffSmrg    # This variable tells wrapper scripts just to set shlibpath_var
17075f5b92ffSmrg    # rather than running their programs.
17085f5b92ffSmrg    libtool_execute_magic="$magic"
170917a48c7cSmrg
17105f5b92ffSmrg    # Check if any of the arguments is a wrapper script.
17115f5b92ffSmrg    args=
17125f5b92ffSmrg    for file
17135f5b92ffSmrg    do
17145f5b92ffSmrg      case $file in
17155f5b92ffSmrg      -*) ;;
17165f5b92ffSmrg      *)
17175f5b92ffSmrg	# Do a test to see if this is really a libtool program.
17185f5b92ffSmrg	if func_ltwrapper_script_p "$file"; then
17195f5b92ffSmrg	  func_source "$file"
17205f5b92ffSmrg	  # Transform arg to wrapped name.
17215f5b92ffSmrg	  file="$progdir/$program"
17225f5b92ffSmrg	elif func_ltwrapper_executable_p "$file"; then
17235f5b92ffSmrg	  func_ltwrapper_scriptname "$file"
17245f5b92ffSmrg	  func_source "$func_ltwrapper_scriptname_result"
17255f5b92ffSmrg	  # Transform arg to wrapped name.
17265f5b92ffSmrg	  file="$progdir/$program"
17275f5b92ffSmrg	fi
17285f5b92ffSmrg	;;
17295f5b92ffSmrg      esac
17305f5b92ffSmrg      # Quote arguments (to preserve shell metacharacters).
17315f5b92ffSmrg      func_quote_for_eval "$file"
17325f5b92ffSmrg      args="$args $func_quote_for_eval_result"
17335f5b92ffSmrg    done
173417a48c7cSmrg
17355f5b92ffSmrg    if test "X$opt_dry_run" = Xfalse; then
17365f5b92ffSmrg      if test -n "$shlibpath_var"; then
17375f5b92ffSmrg	# Export the shlibpath_var.
17385f5b92ffSmrg	eval "export $shlibpath_var"
17395f5b92ffSmrg      fi
174017a48c7cSmrg
17415f5b92ffSmrg      # Restore saved environment variables
17425f5b92ffSmrg      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
17435f5b92ffSmrg      do
17445f5b92ffSmrg	eval "if test \"\${save_$lt_var+set}\" = set; then
17455f5b92ffSmrg                $lt_var=\$save_$lt_var; export $lt_var
174617a48c7cSmrg	      else
17475f5b92ffSmrg		$lt_unset $lt_var
17485f5b92ffSmrg	      fi"
17495f5b92ffSmrg      done
175017a48c7cSmrg
17515f5b92ffSmrg      # Now prepare to actually exec the command.
17525f5b92ffSmrg      exec_cmd="\$cmd$args"
17535f5b92ffSmrg    else
17545f5b92ffSmrg      # Display what would be done.
17555f5b92ffSmrg      if test -n "$shlibpath_var"; then
17565f5b92ffSmrg	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
17575f5b92ffSmrg	$ECHO "export $shlibpath_var"
17585f5b92ffSmrg      fi
17595f5b92ffSmrg      $ECHO "$cmd$args"
17605f5b92ffSmrg      exit $EXIT_SUCCESS
17615f5b92ffSmrg    fi
17625f5b92ffSmrg}
176317a48c7cSmrg
17645f5b92ffSmrgtest "$mode" = execute && func_mode_execute ${1+"$@"}
176517a48c7cSmrg
176617a48c7cSmrg
17675f5b92ffSmrg# func_mode_finish arg...
17685f5b92ffSmrgfunc_mode_finish ()
17695f5b92ffSmrg{
17705f5b92ffSmrg    $opt_debug
17715f5b92ffSmrg    libdirs="$nonopt"
17725f5b92ffSmrg    admincmds=
177317a48c7cSmrg
17745f5b92ffSmrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
17755f5b92ffSmrg      for dir
17765f5b92ffSmrg      do
17775f5b92ffSmrg	libdirs="$libdirs $dir"
17785f5b92ffSmrg      done
177917a48c7cSmrg
17805f5b92ffSmrg      for libdir in $libdirs; do
17815f5b92ffSmrg	if test -n "$finish_cmds"; then
17825f5b92ffSmrg	  # Do each command in the finish commands.
17835f5b92ffSmrg	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
17845f5b92ffSmrg'"$cmd"'"'
178517a48c7cSmrg	fi
17865f5b92ffSmrg	if test -n "$finish_eval"; then
17875f5b92ffSmrg	  # Do the single finish_eval.
17885f5b92ffSmrg	  eval cmds=\"$finish_eval\"
17895f5b92ffSmrg	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
17905f5b92ffSmrg       $cmds"
17915f5b92ffSmrg	fi
17925f5b92ffSmrg      done
17935f5b92ffSmrg    fi
179417a48c7cSmrg
17955f5b92ffSmrg    # Exit here if they wanted silent mode.
17965f5b92ffSmrg    $opt_silent && exit $EXIT_SUCCESS
179717a48c7cSmrg
17985f5b92ffSmrg    $ECHO "X----------------------------------------------------------------------" | $Xsed
17995f5b92ffSmrg    $ECHO "Libraries have been installed in:"
18005f5b92ffSmrg    for libdir in $libdirs; do
18015f5b92ffSmrg      $ECHO "   $libdir"
18025f5b92ffSmrg    done
18035f5b92ffSmrg    $ECHO
18045f5b92ffSmrg    $ECHO "If you ever happen to want to link against installed libraries"
18055f5b92ffSmrg    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
18065f5b92ffSmrg    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
18075f5b92ffSmrg    $ECHO "flag during linking and do at least one of the following:"
18085f5b92ffSmrg    if test -n "$shlibpath_var"; then
18095f5b92ffSmrg      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
18105f5b92ffSmrg      $ECHO "     during execution"
18115f5b92ffSmrg    fi
18125f5b92ffSmrg    if test -n "$runpath_var"; then
18135f5b92ffSmrg      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
18145f5b92ffSmrg      $ECHO "     during linking"
18155f5b92ffSmrg    fi
18165f5b92ffSmrg    if test -n "$hardcode_libdir_flag_spec"; then
18175f5b92ffSmrg      libdir=LIBDIR
18185f5b92ffSmrg      eval flag=\"$hardcode_libdir_flag_spec\"
18195f5b92ffSmrg
18205f5b92ffSmrg      $ECHO "   - use the \`$flag' linker flag"
18215f5b92ffSmrg    fi
18225f5b92ffSmrg    if test -n "$admincmds"; then
18235f5b92ffSmrg      $ECHO "   - have your system administrator run these commands:$admincmds"
18245f5b92ffSmrg    fi
18255f5b92ffSmrg    if test -f /etc/ld.so.conf; then
18265f5b92ffSmrg      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
18275f5b92ffSmrg    fi
18285f5b92ffSmrg    $ECHO
18295f5b92ffSmrg
18305f5b92ffSmrg    $ECHO "See any operating system documentation about shared libraries for"
18315f5b92ffSmrg    case $host in
18325f5b92ffSmrg      solaris2.[6789]|solaris2.1[0-9])
18335f5b92ffSmrg        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
18345f5b92ffSmrg	$ECHO "pages."
18355f5b92ffSmrg	;;
18365f5b92ffSmrg      *)
18375f5b92ffSmrg        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
18385f5b92ffSmrg        ;;
18395f5b92ffSmrg    esac
18405f5b92ffSmrg    $ECHO "X----------------------------------------------------------------------" | $Xsed
18415f5b92ffSmrg    exit $EXIT_SUCCESS
18425f5b92ffSmrg}
18435f5b92ffSmrg
18445f5b92ffSmrgtest "$mode" = finish && func_mode_finish ${1+"$@"}
18455f5b92ffSmrg
18465f5b92ffSmrg
18475f5b92ffSmrg# func_mode_install arg...
18485f5b92ffSmrgfunc_mode_install ()
18495f5b92ffSmrg{
18505f5b92ffSmrg    $opt_debug
18515f5b92ffSmrg    # There may be an optional sh(1) argument at the beginning of
18525f5b92ffSmrg    # install_prog (especially on Windows NT).
18535f5b92ffSmrg    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
18545f5b92ffSmrg       # Allow the use of GNU shtool's install command.
18555f5b92ffSmrg       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
18565f5b92ffSmrg      # Aesthetically quote it.
18575f5b92ffSmrg      func_quote_for_eval "$nonopt"
18585f5b92ffSmrg      install_prog="$func_quote_for_eval_result "
18595f5b92ffSmrg      arg=$1
18605f5b92ffSmrg      shift
18615f5b92ffSmrg    else
18625f5b92ffSmrg      install_prog=
18635f5b92ffSmrg      arg=$nonopt
18645f5b92ffSmrg    fi
18655f5b92ffSmrg
18665f5b92ffSmrg    # The real first argument should be the name of the installation program.
18675f5b92ffSmrg    # Aesthetically quote it.
18685f5b92ffSmrg    func_quote_for_eval "$arg"
18695f5b92ffSmrg    install_prog="$install_prog$func_quote_for_eval_result"
18705f5b92ffSmrg
18715f5b92ffSmrg    # We need to accept at least all the BSD install flags.
18725f5b92ffSmrg    dest=
18735f5b92ffSmrg    files=
18745f5b92ffSmrg    opts=
18755f5b92ffSmrg    prev=
18765f5b92ffSmrg    install_type=
18775f5b92ffSmrg    isdir=no
18785f5b92ffSmrg    stripme=
18795f5b92ffSmrg    for arg
18805f5b92ffSmrg    do
18815f5b92ffSmrg      if test -n "$dest"; then
18825f5b92ffSmrg	files="$files $dest"
18835f5b92ffSmrg	dest=$arg
18845f5b92ffSmrg	continue
18855f5b92ffSmrg      fi
18865f5b92ffSmrg
18875f5b92ffSmrg      case $arg in
18885f5b92ffSmrg      -d) isdir=yes ;;
18895f5b92ffSmrg      -f)
18905f5b92ffSmrg	case " $install_prog " in
18915f5b92ffSmrg	*[\\\ /]cp\ *) ;;
18925f5b92ffSmrg	*) prev=$arg ;;
18935f5b92ffSmrg	esac
18945f5b92ffSmrg	;;
18955f5b92ffSmrg      -g | -m | -o)
18965f5b92ffSmrg	prev=$arg
18975f5b92ffSmrg	;;
18985f5b92ffSmrg      -s)
18995f5b92ffSmrg	stripme=" -s"
19005f5b92ffSmrg	continue
19015f5b92ffSmrg	;;
19025f5b92ffSmrg      -*)
19035f5b92ffSmrg	;;
19045f5b92ffSmrg      *)
19055f5b92ffSmrg	# If the previous option needed an argument, then skip it.
19065f5b92ffSmrg	if test -n "$prev"; then
190717a48c7cSmrg	  prev=
190817a48c7cSmrg	else
19095f5b92ffSmrg	  dest=$arg
19105f5b92ffSmrg	  continue
191117a48c7cSmrg	fi
191217a48c7cSmrg	;;
19135f5b92ffSmrg      esac
191417a48c7cSmrg
19155f5b92ffSmrg      # Aesthetically quote the argument.
19165f5b92ffSmrg      func_quote_for_eval "$arg"
19175f5b92ffSmrg      install_prog="$install_prog $func_quote_for_eval_result"
19185f5b92ffSmrg    done
191917a48c7cSmrg
19205f5b92ffSmrg    test -z "$install_prog" && \
19215f5b92ffSmrg      func_fatal_help "you must specify an install program"
192217a48c7cSmrg
19235f5b92ffSmrg    test -n "$prev" && \
19245f5b92ffSmrg      func_fatal_help "the \`$prev' option requires an argument"
192517a48c7cSmrg
19265f5b92ffSmrg    if test -z "$files"; then
19275f5b92ffSmrg      if test -z "$dest"; then
19285f5b92ffSmrg	func_fatal_help "no file or destination specified"
19295f5b92ffSmrg      else
19305f5b92ffSmrg	func_fatal_help "you must specify a destination"
19315f5b92ffSmrg      fi
193217a48c7cSmrg    fi
193317a48c7cSmrg
19345f5b92ffSmrg    # Strip any trailing slash from the destination.
19355f5b92ffSmrg    func_stripname '' '/' "$dest"
19365f5b92ffSmrg    dest=$func_stripname_result
193717a48c7cSmrg
19385f5b92ffSmrg    # Check to see that the destination is a directory.
19395f5b92ffSmrg    test -d "$dest" && isdir=yes
19405f5b92ffSmrg    if test "$isdir" = yes; then
19415f5b92ffSmrg      destdir="$dest"
19425f5b92ffSmrg      destname=
194317a48c7cSmrg    else
19445f5b92ffSmrg      func_dirname_and_basename "$dest" "" "."
19455f5b92ffSmrg      destdir="$func_dirname_result"
19465f5b92ffSmrg      destname="$func_basename_result"
194717a48c7cSmrg
19485f5b92ffSmrg      # Not a directory, so check to see that there is only one file specified.
19495f5b92ffSmrg      set dummy $files; shift
19505f5b92ffSmrg      test "$#" -gt 1 && \
19515f5b92ffSmrg	func_fatal_help "\`$dest' is not a directory"
195217a48c7cSmrg    fi
19535f5b92ffSmrg    case $destdir in
19545f5b92ffSmrg    [\\/]* | [A-Za-z]:[\\/]*) ;;
195517a48c7cSmrg    *)
19565f5b92ffSmrg      for file in $files; do
19575f5b92ffSmrg	case $file in
19585f5b92ffSmrg	*.lo) ;;
19595f5b92ffSmrg	*)
19605f5b92ffSmrg	  func_fatal_help "\`$destdir' must be an absolute directory name"
19615f5b92ffSmrg	  ;;
19625f5b92ffSmrg	esac
19635f5b92ffSmrg      done
196417a48c7cSmrg      ;;
196517a48c7cSmrg    esac
196617a48c7cSmrg
19675f5b92ffSmrg    # This variable tells wrapper scripts just to set variables rather
19685f5b92ffSmrg    # than running their programs.
19695f5b92ffSmrg    libtool_install_magic="$magic"
197017a48c7cSmrg
19715f5b92ffSmrg    staticlibs=
19725f5b92ffSmrg    future_libdirs=
19735f5b92ffSmrg    current_libdirs=
19745f5b92ffSmrg    for file in $files; do
197517a48c7cSmrg
19765f5b92ffSmrg      # Do each installation.
19775f5b92ffSmrg      case $file in
19785f5b92ffSmrg      *.$libext)
19795f5b92ffSmrg	# Do the static libraries later.
19805f5b92ffSmrg	staticlibs="$staticlibs $file"
19815f5b92ffSmrg	;;
19825f5b92ffSmrg
19835f5b92ffSmrg      *.la)
19845f5b92ffSmrg	# Check to see that this really is a libtool archive.
19855f5b92ffSmrg	func_lalib_unsafe_p "$file" \
19865f5b92ffSmrg	  || func_fatal_help "\`$file' is not a valid libtool archive"
19875f5b92ffSmrg
19885f5b92ffSmrg	library_names=
19895f5b92ffSmrg	old_library=
19905f5b92ffSmrg	relink_command=
19915f5b92ffSmrg	func_source "$file"
19925f5b92ffSmrg
19935f5b92ffSmrg	# Add the libdir to current_libdirs if it is the destination.
19945f5b92ffSmrg	if test "X$destdir" = "X$libdir"; then
19955f5b92ffSmrg	  case "$current_libdirs " in
19965f5b92ffSmrg	  *" $libdir "*) ;;
19975f5b92ffSmrg	  *) current_libdirs="$current_libdirs $libdir" ;;
199817a48c7cSmrg	  esac
19995f5b92ffSmrg	else
20005f5b92ffSmrg	  # Note the libdir as a future libdir.
20015f5b92ffSmrg	  case "$future_libdirs " in
20025f5b92ffSmrg	  *" $libdir "*) ;;
20035f5b92ffSmrg	  *) future_libdirs="$future_libdirs $libdir" ;;
20045f5b92ffSmrg	  esac
20055f5b92ffSmrg	fi
200617a48c7cSmrg
20075f5b92ffSmrg	func_dirname "$file" "/" ""
20085f5b92ffSmrg	dir="$func_dirname_result"
20095f5b92ffSmrg	dir="$dir$objdir"
20105f5b92ffSmrg
20115f5b92ffSmrg	if test -n "$relink_command"; then
20125f5b92ffSmrg	  # Determine the prefix the user has applied to our future dir.
20135f5b92ffSmrg	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
20145f5b92ffSmrg
20155f5b92ffSmrg	  # Don't allow the user to place us outside of our expected
20165f5b92ffSmrg	  # location b/c this prevents finding dependent libraries that
20175f5b92ffSmrg	  # are installed to the same prefix.
20185f5b92ffSmrg	  # At present, this check doesn't affect windows .dll's that
20195f5b92ffSmrg	  # are installed into $libdir/../bin (currently, that works fine)
20205f5b92ffSmrg	  # but it's something to keep an eye on.
20215f5b92ffSmrg	  test "$inst_prefix_dir" = "$destdir" && \
20225f5b92ffSmrg	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
20235f5b92ffSmrg
20245f5b92ffSmrg	  if test -n "$inst_prefix_dir"; then
20255f5b92ffSmrg	    # Stick the inst_prefix_dir data into the link command.
20265f5b92ffSmrg	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
20275f5b92ffSmrg	  else
20285f5b92ffSmrg	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
20295f5b92ffSmrg	  fi
20305f5b92ffSmrg
20315f5b92ffSmrg	  func_warning "relinking \`$file'"
20325f5b92ffSmrg	  func_show_eval "$relink_command" \
20335f5b92ffSmrg	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
20345f5b92ffSmrg	fi
20355f5b92ffSmrg
20365f5b92ffSmrg	# See the names of the shared library.
20375f5b92ffSmrg	set dummy $library_names; shift
20385f5b92ffSmrg	if test -n "$1"; then
20395f5b92ffSmrg	  realname="$1"
20405f5b92ffSmrg	  shift
20415f5b92ffSmrg
20425f5b92ffSmrg	  srcname="$realname"
20435f5b92ffSmrg	  test -n "$relink_command" && srcname="$realname"T
20445f5b92ffSmrg
20455f5b92ffSmrg	  # Install the shared library and build the symlinks.
20465f5b92ffSmrg	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
20475f5b92ffSmrg	      'exit $?'
20485f5b92ffSmrg	  tstripme="$stripme"
20495f5b92ffSmrg	  case $host_os in
20505f5b92ffSmrg	  cygwin* | mingw* | pw32* | cegcc*)
20515f5b92ffSmrg	    case $realname in
20525f5b92ffSmrg	    *.dll.a)
20535f5b92ffSmrg	      tstripme=""
20545f5b92ffSmrg	      ;;
20555f5b92ffSmrg	    esac
205617a48c7cSmrg	    ;;
205717a48c7cSmrg	  esac
20585f5b92ffSmrg	  if test -n "$tstripme" && test -n "$striplib"; then
20595f5b92ffSmrg	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
206017a48c7cSmrg	  fi
20615f5b92ffSmrg
20625f5b92ffSmrg	  if test "$#" -gt 0; then
20635f5b92ffSmrg	    # Delete the old symlinks, and create new ones.
20645f5b92ffSmrg	    # Try `ln -sf' first, because the `ln' binary might depend on
20655f5b92ffSmrg	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
20665f5b92ffSmrg	    # so we also need to try rm && ln -s.
20675f5b92ffSmrg	    for linkname
20685f5b92ffSmrg	    do
20695f5b92ffSmrg	      test "$linkname" != "$realname" \
20705f5b92ffSmrg		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
207117a48c7cSmrg	    done
207217a48c7cSmrg	  fi
207317a48c7cSmrg
20745f5b92ffSmrg	  # Do each command in the postinstall commands.
20755f5b92ffSmrg	  lib="$destdir/$realname"
20765f5b92ffSmrg	  func_execute_cmds "$postinstall_cmds" 'exit $?'
207717a48c7cSmrg	fi
207817a48c7cSmrg
20795f5b92ffSmrg	# Install the pseudo-library for information purposes.
20805f5b92ffSmrg	func_basename "$file"
20815f5b92ffSmrg	name="$func_basename_result"
20825f5b92ffSmrg	instname="$dir/$name"i
20835f5b92ffSmrg	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
208417a48c7cSmrg
20855f5b92ffSmrg	# Maybe install the static library, too.
20865f5b92ffSmrg	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
20875f5b92ffSmrg	;;
208817a48c7cSmrg
20895f5b92ffSmrg      *.lo)
20905f5b92ffSmrg	# Install (i.e. copy) a libtool object.
209117a48c7cSmrg
20925f5b92ffSmrg	# Figure out destination file name, if it wasn't already specified.
20935f5b92ffSmrg	if test -n "$destname"; then
20945f5b92ffSmrg	  destfile="$destdir/$destname"
20955f5b92ffSmrg	else
20965f5b92ffSmrg	  func_basename "$file"
20975f5b92ffSmrg	  destfile="$func_basename_result"
20985f5b92ffSmrg	  destfile="$destdir/$destfile"
209917a48c7cSmrg	fi
210017a48c7cSmrg
21015f5b92ffSmrg	# Deduce the name of the destination old-style object file.
21025f5b92ffSmrg	case $destfile in
21035f5b92ffSmrg	*.lo)
21045f5b92ffSmrg	  func_lo2o "$destfile"
21055f5b92ffSmrg	  staticdest=$func_lo2o_result
21065f5b92ffSmrg	  ;;
21075f5b92ffSmrg	*.$objext)
21085f5b92ffSmrg	  staticdest="$destfile"
21095f5b92ffSmrg	  destfile=
21105f5b92ffSmrg	  ;;
21115f5b92ffSmrg	*)
21125f5b92ffSmrg	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
21135f5b92ffSmrg	  ;;
21145f5b92ffSmrg	esac
211517a48c7cSmrg
21165f5b92ffSmrg	# Install the libtool object if requested.
21175f5b92ffSmrg	test -n "$destfile" && \
21185f5b92ffSmrg	  func_show_eval "$install_prog $file $destfile" 'exit $?'
211917a48c7cSmrg
21205f5b92ffSmrg	# Install the old object if enabled.
21215f5b92ffSmrg	if test "$build_old_libs" = yes; then
21225f5b92ffSmrg	  # Deduce the name of the old-style object file.
21235f5b92ffSmrg	  func_lo2o "$file"
21245f5b92ffSmrg	  staticobj=$func_lo2o_result
21255f5b92ffSmrg	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
212617a48c7cSmrg	fi
21275f5b92ffSmrg	exit $EXIT_SUCCESS
21285f5b92ffSmrg	;;
212917a48c7cSmrg
21305f5b92ffSmrg      *)
21315f5b92ffSmrg	# Figure out destination file name, if it wasn't already specified.
21325f5b92ffSmrg	if test -n "$destname"; then
21335f5b92ffSmrg	  destfile="$destdir/$destname"
21345f5b92ffSmrg	else
21355f5b92ffSmrg	  func_basename "$file"
21365f5b92ffSmrg	  destfile="$func_basename_result"
21375f5b92ffSmrg	  destfile="$destdir/$destfile"
21385f5b92ffSmrg	fi
213917a48c7cSmrg
21405f5b92ffSmrg	# If the file is missing, and there is a .exe on the end, strip it
21415f5b92ffSmrg	# because it is most likely a libtool script we actually want to
21425f5b92ffSmrg	# install
21435f5b92ffSmrg	stripped_ext=""
21445f5b92ffSmrg	case $file in
21455f5b92ffSmrg	  *.exe)
21465f5b92ffSmrg	    if test ! -f "$file"; then
21475f5b92ffSmrg	      func_stripname '' '.exe' "$file"
21485f5b92ffSmrg	      file=$func_stripname_result
21495f5b92ffSmrg	      stripped_ext=".exe"
21505f5b92ffSmrg	    fi
21515f5b92ffSmrg	    ;;
21525f5b92ffSmrg	esac
21535f5b92ffSmrg
21545f5b92ffSmrg	# Do a test to see if this is really a libtool program.
21555f5b92ffSmrg	case $host in
21565f5b92ffSmrg	*cygwin* | *mingw*)
21575f5b92ffSmrg	    if func_ltwrapper_executable_p "$file"; then
21585f5b92ffSmrg	      func_ltwrapper_scriptname "$file"
21595f5b92ffSmrg	      wrapper=$func_ltwrapper_scriptname_result
21605f5b92ffSmrg	    else
21615f5b92ffSmrg	      func_stripname '' '.exe' "$file"
21625f5b92ffSmrg	      wrapper=$func_stripname_result
21635f5b92ffSmrg	    fi
21645f5b92ffSmrg	    ;;
216517a48c7cSmrg	*)
21665f5b92ffSmrg	    wrapper=$file
21675f5b92ffSmrg	    ;;
21685f5b92ffSmrg	esac
21695f5b92ffSmrg	if func_ltwrapper_script_p "$wrapper"; then
21705f5b92ffSmrg	  notinst_deplibs=
21715f5b92ffSmrg	  relink_command=
21725f5b92ffSmrg
21735f5b92ffSmrg	  func_source "$wrapper"
21745f5b92ffSmrg
21755f5b92ffSmrg	  # Check the variables that should have been set.
21765f5b92ffSmrg	  test -z "$generated_by_libtool_version" && \
21775f5b92ffSmrg	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
21785f5b92ffSmrg
21795f5b92ffSmrg	  finalize=yes
21805f5b92ffSmrg	  for lib in $notinst_deplibs; do
21815f5b92ffSmrg	    # Check to see that each library is installed.
21825f5b92ffSmrg	    libdir=
21835f5b92ffSmrg	    if test -f "$lib"; then
21845f5b92ffSmrg	      func_source "$lib"
21855f5b92ffSmrg	    fi
21865f5b92ffSmrg	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
21875f5b92ffSmrg	    if test -n "$libdir" && test ! -f "$libfile"; then
21885f5b92ffSmrg	      func_warning "\`$lib' has not been installed in \`$libdir'"
21895f5b92ffSmrg	      finalize=no
21905f5b92ffSmrg	    fi
21915f5b92ffSmrg	  done
21925f5b92ffSmrg
21935f5b92ffSmrg	  relink_command=
21945f5b92ffSmrg	  func_source "$wrapper"
21955f5b92ffSmrg
21965f5b92ffSmrg	  outputname=
21975f5b92ffSmrg	  if test "$fast_install" = no && test -n "$relink_command"; then
21985f5b92ffSmrg	    $opt_dry_run || {
21995f5b92ffSmrg	      if test "$finalize" = yes; then
22005f5b92ffSmrg	        tmpdir=`func_mktempdir`
22015f5b92ffSmrg		func_basename "$file$stripped_ext"
22025f5b92ffSmrg		file="$func_basename_result"
22035f5b92ffSmrg	        outputname="$tmpdir/$file"
22045f5b92ffSmrg	        # Replace the output file specification.
22055f5b92ffSmrg	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
22065f5b92ffSmrg
22075f5b92ffSmrg	        $opt_silent || {
22085f5b92ffSmrg	          func_quote_for_expand "$relink_command"
22095f5b92ffSmrg		  eval "func_echo $func_quote_for_expand_result"
22105f5b92ffSmrg	        }
22115f5b92ffSmrg	        if eval "$relink_command"; then :
22125f5b92ffSmrg	          else
22135f5b92ffSmrg		  func_error "error: relink \`$file' with the above command before installing it"
22145f5b92ffSmrg		  $opt_dry_run || ${RM}r "$tmpdir"
22155f5b92ffSmrg		  continue
22165f5b92ffSmrg	        fi
22175f5b92ffSmrg	        file="$outputname"
22185f5b92ffSmrg	      else
22195f5b92ffSmrg	        func_warning "cannot relink \`$file'"
22205f5b92ffSmrg	      fi
22215f5b92ffSmrg	    }
22225f5b92ffSmrg	  else
22235f5b92ffSmrg	    # Install the binary that we compiled earlier.
22245f5b92ffSmrg	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
222517a48c7cSmrg	  fi
22265f5b92ffSmrg	fi
22275f5b92ffSmrg
22285f5b92ffSmrg	# remove .exe since cygwin /usr/bin/install will append another
22295f5b92ffSmrg	# one anyway
22305f5b92ffSmrg	case $install_prog,$host in
22315f5b92ffSmrg	*/usr/bin/install*,*cygwin*)
22325f5b92ffSmrg	  case $file:$destfile in
22335f5b92ffSmrg	  *.exe:*.exe)
22345f5b92ffSmrg	    # this is ok
22355f5b92ffSmrg	    ;;
22365f5b92ffSmrg	  *.exe:*)
22375f5b92ffSmrg	    destfile=$destfile.exe
22385f5b92ffSmrg	    ;;
22395f5b92ffSmrg	  *:*.exe)
22405f5b92ffSmrg	    func_stripname '' '.exe' "$destfile"
22415f5b92ffSmrg	    destfile=$func_stripname_result
22425f5b92ffSmrg	    ;;
22435f5b92ffSmrg	  esac
224417a48c7cSmrg	  ;;
224517a48c7cSmrg	esac
22465f5b92ffSmrg	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
22475f5b92ffSmrg	$opt_dry_run || if test -n "$outputname"; then
22485f5b92ffSmrg	  ${RM}r "$tmpdir"
22495f5b92ffSmrg	fi
22505f5b92ffSmrg	;;
22515f5b92ffSmrg      esac
22525f5b92ffSmrg    done
225317a48c7cSmrg
22545f5b92ffSmrg    for file in $staticlibs; do
22555f5b92ffSmrg      func_basename "$file"
22565f5b92ffSmrg      name="$func_basename_result"
22575f5b92ffSmrg
22585f5b92ffSmrg      # Set up the ranlib parameters.
22595f5b92ffSmrg      oldlib="$destdir/$name"
22605f5b92ffSmrg
22615f5b92ffSmrg      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
22625f5b92ffSmrg
22635f5b92ffSmrg      if test -n "$stripme" && test -n "$old_striplib"; then
22645f5b92ffSmrg	func_show_eval "$old_striplib $oldlib" 'exit $?'
22655f5b92ffSmrg      fi
22665f5b92ffSmrg
22675f5b92ffSmrg      # Do each command in the postinstall commands.
22685f5b92ffSmrg      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
22695f5b92ffSmrg    done
22705f5b92ffSmrg
22715f5b92ffSmrg    test -n "$future_libdirs" && \
22725f5b92ffSmrg      func_warning "remember to run \`$progname --finish$future_libdirs'"
22735f5b92ffSmrg
22745f5b92ffSmrg    if test -n "$current_libdirs"; then
22755f5b92ffSmrg      # Maybe just do a dry run.
22765f5b92ffSmrg      $opt_dry_run && current_libdirs=" -n$current_libdirs"
22775f5b92ffSmrg      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
22785f5b92ffSmrg    else
22795f5b92ffSmrg      exit $EXIT_SUCCESS
22805f5b92ffSmrg    fi
22815f5b92ffSmrg}
22825f5b92ffSmrg
22835f5b92ffSmrgtest "$mode" = install && func_mode_install ${1+"$@"}
22845f5b92ffSmrg
22855f5b92ffSmrg
22865f5b92ffSmrg# func_generate_dlsyms outputname originator pic_p
22875f5b92ffSmrg# Extract symbols from dlprefiles and create ${outputname}S.o with
22885f5b92ffSmrg# a dlpreopen symbol table.
22895f5b92ffSmrgfunc_generate_dlsyms ()
22905f5b92ffSmrg{
22915f5b92ffSmrg    $opt_debug
22925f5b92ffSmrg    my_outputname="$1"
22935f5b92ffSmrg    my_originator="$2"
22945f5b92ffSmrg    my_pic_p="${3-no}"
22955f5b92ffSmrg    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
22965f5b92ffSmrg    my_dlsyms=
22975f5b92ffSmrg
22985f5b92ffSmrg    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
22995f5b92ffSmrg      if test -n "$NM" && test -n "$global_symbol_pipe"; then
23005f5b92ffSmrg	my_dlsyms="${my_outputname}S.c"
23015f5b92ffSmrg      else
23025f5b92ffSmrg	func_error "not configured to extract global symbols from dlpreopened files"
23035f5b92ffSmrg      fi
23045f5b92ffSmrg    fi
23055f5b92ffSmrg
23065f5b92ffSmrg    if test -n "$my_dlsyms"; then
23075f5b92ffSmrg      case $my_dlsyms in
23085f5b92ffSmrg      "") ;;
23095f5b92ffSmrg      *.c)
23105f5b92ffSmrg	# Discover the nlist of each of the dlfiles.
23115f5b92ffSmrg	nlist="$output_objdir/${my_outputname}.nm"
23125f5b92ffSmrg
23135f5b92ffSmrg	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
23145f5b92ffSmrg
23155f5b92ffSmrg	# Parse the name list into a source file.
23165f5b92ffSmrg	func_verbose "creating $output_objdir/$my_dlsyms"
23175f5b92ffSmrg
23185f5b92ffSmrg	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
23195f5b92ffSmrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
23205f5b92ffSmrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
23215f5b92ffSmrg
23225f5b92ffSmrg#ifdef __cplusplus
23235f5b92ffSmrgextern \"C\" {
23245f5b92ffSmrg#endif
23255f5b92ffSmrg
23265f5b92ffSmrg/* External symbol declarations for the compiler. */\
23275f5b92ffSmrg"
23285f5b92ffSmrg
23295f5b92ffSmrg	if test "$dlself" = yes; then
23305f5b92ffSmrg	  func_verbose "generating symbol list for \`$output'"
23315f5b92ffSmrg
23325f5b92ffSmrg	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
23335f5b92ffSmrg
23345f5b92ffSmrg	  # Add our own program objects to the symbol list.
23355f5b92ffSmrg	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
23365f5b92ffSmrg	  for progfile in $progfiles; do
23375f5b92ffSmrg	    func_verbose "extracting global C symbols from \`$progfile'"
23385f5b92ffSmrg	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
23395f5b92ffSmrg	  done
23405f5b92ffSmrg
23415f5b92ffSmrg	  if test -n "$exclude_expsyms"; then
23425f5b92ffSmrg	    $opt_dry_run || {
23435f5b92ffSmrg	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
23445f5b92ffSmrg	      eval '$MV "$nlist"T "$nlist"'
23455f5b92ffSmrg	    }
234617a48c7cSmrg	  fi
23475f5b92ffSmrg
23485f5b92ffSmrg	  if test -n "$export_symbols_regex"; then
23495f5b92ffSmrg	    $opt_dry_run || {
23505f5b92ffSmrg	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
23515f5b92ffSmrg	      eval '$MV "$nlist"T "$nlist"'
23525f5b92ffSmrg	    }
23535f5b92ffSmrg	  fi
23545f5b92ffSmrg
23555f5b92ffSmrg	  # Prepare the list of exported symbols
23565f5b92ffSmrg	  if test -z "$export_symbols"; then
23575f5b92ffSmrg	    export_symbols="$output_objdir/$outputname.exp"
23585f5b92ffSmrg	    $opt_dry_run || {
23595f5b92ffSmrg	      $RM $export_symbols
23605f5b92ffSmrg	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
23615f5b92ffSmrg	      case $host in
23625f5b92ffSmrg	      *cygwin* | *mingw* | *cegcc* )
23635f5b92ffSmrg                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
23645f5b92ffSmrg                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
23655f5b92ffSmrg	        ;;
23665f5b92ffSmrg	      esac
23675f5b92ffSmrg	    }
236817a48c7cSmrg	  else
23695f5b92ffSmrg	    $opt_dry_run || {
23705f5b92ffSmrg	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
23715f5b92ffSmrg	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
23725f5b92ffSmrg	      eval '$MV "$nlist"T "$nlist"'
23735f5b92ffSmrg	      case $host in
23745f5b92ffSmrg	        *cygwin | *mingw* | *cegcc* )
23755f5b92ffSmrg	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
23765f5b92ffSmrg	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
23775f5b92ffSmrg	          ;;
23785f5b92ffSmrg	      esac
23795f5b92ffSmrg	    }
238017a48c7cSmrg	  fi
23815f5b92ffSmrg	fi
238217a48c7cSmrg
23835f5b92ffSmrg	for dlprefile in $dlprefiles; do
23845f5b92ffSmrg	  func_verbose "extracting global C symbols from \`$dlprefile'"
23855f5b92ffSmrg	  func_basename "$dlprefile"
23865f5b92ffSmrg	  name="$func_basename_result"
23875f5b92ffSmrg	  $opt_dry_run || {
23885f5b92ffSmrg	    eval '$ECHO ": $name " >> "$nlist"'
23895f5b92ffSmrg	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
23905f5b92ffSmrg	  }
23915f5b92ffSmrg	done
23925f5b92ffSmrg
23935f5b92ffSmrg	$opt_dry_run || {
23945f5b92ffSmrg	  # Make sure we have at least an empty file.
23955f5b92ffSmrg	  test -f "$nlist" || : > "$nlist"
23965f5b92ffSmrg
23975f5b92ffSmrg	  if test -n "$exclude_expsyms"; then
23985f5b92ffSmrg	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
23995f5b92ffSmrg	    $MV "$nlist"T "$nlist"
240017a48c7cSmrg	  fi
24015f5b92ffSmrg
24025f5b92ffSmrg	  # Try sorting and uniquifying the output.
24035f5b92ffSmrg	  if $GREP -v "^: " < "$nlist" |
24045f5b92ffSmrg	      if sort -k 3 </dev/null >/dev/null 2>&1; then
24055f5b92ffSmrg		sort -k 3
24065f5b92ffSmrg	      else
24075f5b92ffSmrg		sort +2
24085f5b92ffSmrg	      fi |
24095f5b92ffSmrg	      uniq > "$nlist"S; then
24105f5b92ffSmrg	    :
241117a48c7cSmrg	  else
24125f5b92ffSmrg	    $GREP -v "^: " < "$nlist" > "$nlist"S
241317a48c7cSmrg	  fi
241417a48c7cSmrg
24155f5b92ffSmrg	  if test -f "$nlist"S; then
24165f5b92ffSmrg	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
241717a48c7cSmrg	  else
24185f5b92ffSmrg	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
241917a48c7cSmrg	  fi
242017a48c7cSmrg
24215f5b92ffSmrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
242217a48c7cSmrg
24235f5b92ffSmrg/* The mapping between symbol names and symbols.  */
24245f5b92ffSmrgtypedef struct {
24255f5b92ffSmrg  const char *name;
24265f5b92ffSmrg  void *address;
24275f5b92ffSmrg} lt_dlsymlist;
24285f5b92ffSmrg"
24295f5b92ffSmrg	  case $host in
24305f5b92ffSmrg	  *cygwin* | *mingw* | *cegcc* )
24315f5b92ffSmrg	    $ECHO >> "$output_objdir/$my_dlsyms" "\
24325f5b92ffSmrg/* DATA imports from DLLs on WIN32 con't be const, because
24335f5b92ffSmrg   runtime relocations are performed -- see ld's documentation
24345f5b92ffSmrg   on pseudo-relocs.  */"
24355f5b92ffSmrg	    lt_dlsym_const= ;;
24365f5b92ffSmrg	  *osf5*)
24375f5b92ffSmrg	    echo >> "$output_objdir/$my_dlsyms" "\
24385f5b92ffSmrg/* This system does not cope well with relocations in const data */"
24395f5b92ffSmrg	    lt_dlsym_const= ;;
24405f5b92ffSmrg	  *)
24415f5b92ffSmrg	    lt_dlsym_const=const ;;
24425f5b92ffSmrg	  esac
244317a48c7cSmrg
24445f5b92ffSmrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24455f5b92ffSmrgextern $lt_dlsym_const lt_dlsymlist
24465f5b92ffSmrglt_${my_prefix}_LTX_preloaded_symbols[];
24475f5b92ffSmrg$lt_dlsym_const lt_dlsymlist
24485f5b92ffSmrglt_${my_prefix}_LTX_preloaded_symbols[] =
24495f5b92ffSmrg{\
24505f5b92ffSmrg  { \"$my_originator\", (void *) 0 },"
245117a48c7cSmrg
24525f5b92ffSmrg	  case $need_lib_prefix in
24535f5b92ffSmrg	  no)
24545f5b92ffSmrg	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
24555f5b92ffSmrg	    ;;
24565f5b92ffSmrg	  *)
24575f5b92ffSmrg	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
24585f5b92ffSmrg	    ;;
24595f5b92ffSmrg	  esac
24605f5b92ffSmrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24615f5b92ffSmrg  {0, (void *) 0}
24625f5b92ffSmrg};
246317a48c7cSmrg
24645f5b92ffSmrg/* This works around a problem in FreeBSD linker */
24655f5b92ffSmrg#ifdef FREEBSD_WORKAROUND
24665f5b92ffSmrgstatic const void *lt_preloaded_setup() {
24675f5b92ffSmrg  return lt_${my_prefix}_LTX_preloaded_symbols;
24685f5b92ffSmrg}
24695f5b92ffSmrg#endif
24705f5b92ffSmrg
24715f5b92ffSmrg#ifdef __cplusplus
24725f5b92ffSmrg}
24735f5b92ffSmrg#endif\
24745f5b92ffSmrg"
24755f5b92ffSmrg	} # !$opt_dry_run
24765f5b92ffSmrg
24775f5b92ffSmrg	pic_flag_for_symtable=
24785f5b92ffSmrg	case "$compile_command " in
24795f5b92ffSmrg	*" -static "*) ;;
24805f5b92ffSmrg	*)
24815f5b92ffSmrg	  case $host in
24825f5b92ffSmrg	  # compiling the symbol table file with pic_flag works around
24835f5b92ffSmrg	  # a FreeBSD bug that causes programs to crash when -lm is
24845f5b92ffSmrg	  # linked before any other PIC object.  But we must not use
24855f5b92ffSmrg	  # pic_flag when linking with -static.  The problem exists in
24865f5b92ffSmrg	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
24875f5b92ffSmrg	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
24885f5b92ffSmrg	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
24895f5b92ffSmrg	  *-*-hpux*)
24905f5b92ffSmrg	    pic_flag_for_symtable=" $pic_flag"  ;;
24915f5b92ffSmrg	  *)
24925f5b92ffSmrg	    if test "X$my_pic_p" != Xno; then
24935f5b92ffSmrg	      pic_flag_for_symtable=" $pic_flag"
249417a48c7cSmrg	    fi
24955f5b92ffSmrg	    ;;
24965f5b92ffSmrg	  esac
24975f5b92ffSmrg	  ;;
24985f5b92ffSmrg	esac
24995f5b92ffSmrg	symtab_cflags=
25005f5b92ffSmrg	for arg in $LTCFLAGS; do
25015f5b92ffSmrg	  case $arg in
25025f5b92ffSmrg	  -pie | -fpie | -fPIE) ;;
25035f5b92ffSmrg	  *) symtab_cflags="$symtab_cflags $arg" ;;
25045f5b92ffSmrg	  esac
25055f5b92ffSmrg	done
250617a48c7cSmrg
25075f5b92ffSmrg	# Now compile the dynamic symbol file.
25085f5b92ffSmrg	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
250917a48c7cSmrg
25105f5b92ffSmrg	# Clean up the generated files.
25115f5b92ffSmrg	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
251217a48c7cSmrg
25135f5b92ffSmrg	# Transform the symbol file into the correct name.
25145f5b92ffSmrg	symfileobj="$output_objdir/${my_outputname}S.$objext"
25155f5b92ffSmrg	case $host in
25165f5b92ffSmrg	*cygwin* | *mingw* | *cegcc* )
25175f5b92ffSmrg	  if test -f "$output_objdir/$my_outputname.def"; then
25185f5b92ffSmrg	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
25195f5b92ffSmrg	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
25205f5b92ffSmrg	  else
25215f5b92ffSmrg	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25225f5b92ffSmrg	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
252317a48c7cSmrg	  fi
25245f5b92ffSmrg	  ;;
25255f5b92ffSmrg	*)
25265f5b92ffSmrg	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25275f5b92ffSmrg	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25285f5b92ffSmrg	  ;;
25295f5b92ffSmrg	esac
25305f5b92ffSmrg	;;
25315f5b92ffSmrg      *)
25325f5b92ffSmrg	func_fatal_error "unknown suffix for \`$my_dlsyms'"
25335f5b92ffSmrg	;;
25345f5b92ffSmrg      esac
25355f5b92ffSmrg    else
25365f5b92ffSmrg      # We keep going just in case the user didn't refer to
25375f5b92ffSmrg      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
25385f5b92ffSmrg      # really was required.
253917a48c7cSmrg
25405f5b92ffSmrg      # Nullify the symbol file.
25415f5b92ffSmrg      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
25425f5b92ffSmrg      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
25435f5b92ffSmrg    fi
25445f5b92ffSmrg}
254517a48c7cSmrg
25465f5b92ffSmrg# func_win32_libid arg
25475f5b92ffSmrg# return the library type of file 'arg'
25485f5b92ffSmrg#
25495f5b92ffSmrg# Need a lot of goo to handle *both* DLLs and import libs
25505f5b92ffSmrg# Has to be a shell function in order to 'eat' the argument
25515f5b92ffSmrg# that is supplied when $file_magic_command is called.
25525f5b92ffSmrgfunc_win32_libid ()
25535f5b92ffSmrg{
25545f5b92ffSmrg  $opt_debug
25555f5b92ffSmrg  win32_libid_type="unknown"
25565f5b92ffSmrg  win32_fileres=`file -L $1 2>/dev/null`
25575f5b92ffSmrg  case $win32_fileres in
25585f5b92ffSmrg  *ar\ archive\ import\ library*) # definitely import
25595f5b92ffSmrg    win32_libid_type="x86 archive import"
25605f5b92ffSmrg    ;;
25615f5b92ffSmrg  *ar\ archive*) # could be an import, or static
25625f5b92ffSmrg    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
25635f5b92ffSmrg       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
25645f5b92ffSmrg      win32_nmres=`eval $NM -f posix -A $1 |
25655f5b92ffSmrg	$SED -n -e '
25665f5b92ffSmrg	    1,100{
25675f5b92ffSmrg		/ I /{
25685f5b92ffSmrg		    s,.*,import,
25695f5b92ffSmrg		    p
25705f5b92ffSmrg		    q
25715f5b92ffSmrg		}
25725f5b92ffSmrg	    }'`
25735f5b92ffSmrg      case $win32_nmres in
25745f5b92ffSmrg      import*)  win32_libid_type="x86 archive import";;
25755f5b92ffSmrg      *)        win32_libid_type="x86 archive static";;
25765f5b92ffSmrg      esac
25775f5b92ffSmrg    fi
25785f5b92ffSmrg    ;;
25795f5b92ffSmrg  *DLL*)
25805f5b92ffSmrg    win32_libid_type="x86 DLL"
25815f5b92ffSmrg    ;;
25825f5b92ffSmrg  *executable*) # but shell scripts are "executable" too...
25835f5b92ffSmrg    case $win32_fileres in
25845f5b92ffSmrg    *MS\ Windows\ PE\ Intel*)
25855f5b92ffSmrg      win32_libid_type="x86 DLL"
25865f5b92ffSmrg      ;;
25875f5b92ffSmrg    esac
25885f5b92ffSmrg    ;;
25895f5b92ffSmrg  esac
25905f5b92ffSmrg  $ECHO "$win32_libid_type"
25915f5b92ffSmrg}
259217a48c7cSmrg
259317a48c7cSmrg
259417a48c7cSmrg
25955f5b92ffSmrg# func_extract_an_archive dir oldlib
25965f5b92ffSmrgfunc_extract_an_archive ()
25975f5b92ffSmrg{
25985f5b92ffSmrg    $opt_debug
25995f5b92ffSmrg    f_ex_an_ar_dir="$1"; shift
26005f5b92ffSmrg    f_ex_an_ar_oldlib="$1"
26015f5b92ffSmrg    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
26025f5b92ffSmrg    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
26035f5b92ffSmrg     :
26045f5b92ffSmrg    else
26055f5b92ffSmrg      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
26065f5b92ffSmrg    fi
26075f5b92ffSmrg}
260817a48c7cSmrg
260917a48c7cSmrg
26105f5b92ffSmrg# func_extract_archives gentop oldlib ...
26115f5b92ffSmrgfunc_extract_archives ()
26125f5b92ffSmrg{
26135f5b92ffSmrg    $opt_debug
26145f5b92ffSmrg    my_gentop="$1"; shift
26155f5b92ffSmrg    my_oldlibs=${1+"$@"}
26165f5b92ffSmrg    my_oldobjs=""
26175f5b92ffSmrg    my_xlib=""
26185f5b92ffSmrg    my_xabs=""
26195f5b92ffSmrg    my_xdir=""
262017a48c7cSmrg
26215f5b92ffSmrg    for my_xlib in $my_oldlibs; do
26225f5b92ffSmrg      # Extract the objects.
26235f5b92ffSmrg      case $my_xlib in
26245f5b92ffSmrg	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
26255f5b92ffSmrg	*) my_xabs=`pwd`"/$my_xlib" ;;
26265f5b92ffSmrg      esac
26275f5b92ffSmrg      func_basename "$my_xlib"
26285f5b92ffSmrg      my_xlib="$func_basename_result"
26295f5b92ffSmrg      my_xlib_u=$my_xlib
26305f5b92ffSmrg      while :; do
26315f5b92ffSmrg        case " $extracted_archives " in
26325f5b92ffSmrg	*" $my_xlib_u "*)
26335f5b92ffSmrg	  func_arith $extracted_serial + 1
26345f5b92ffSmrg	  extracted_serial=$func_arith_result
26355f5b92ffSmrg	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
26365f5b92ffSmrg	*) break ;;
26375f5b92ffSmrg	esac
26385f5b92ffSmrg      done
26395f5b92ffSmrg      extracted_archives="$extracted_archives $my_xlib_u"
26405f5b92ffSmrg      my_xdir="$my_gentop/$my_xlib_u"
264117a48c7cSmrg
26425f5b92ffSmrg      func_mkdir_p "$my_xdir"
264317a48c7cSmrg
26445f5b92ffSmrg      case $host in
26455f5b92ffSmrg      *-darwin*)
26465f5b92ffSmrg	func_verbose "Extracting $my_xabs"
26475f5b92ffSmrg	# Do not bother doing anything if just a dry run
26485f5b92ffSmrg	$opt_dry_run || {
26495f5b92ffSmrg	  darwin_orig_dir=`pwd`
26505f5b92ffSmrg	  cd $my_xdir || exit $?
26515f5b92ffSmrg	  darwin_archive=$my_xabs
26525f5b92ffSmrg	  darwin_curdir=`pwd`
26535f5b92ffSmrg	  darwin_base_archive=`basename "$darwin_archive"`
26545f5b92ffSmrg	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
26555f5b92ffSmrg	  if test -n "$darwin_arches"; then
26565f5b92ffSmrg	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
26575f5b92ffSmrg	    darwin_arch=
26585f5b92ffSmrg	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
26595f5b92ffSmrg	    for darwin_arch in  $darwin_arches ; do
26605f5b92ffSmrg	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
26615f5b92ffSmrg	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
26625f5b92ffSmrg	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
26635f5b92ffSmrg	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
26645f5b92ffSmrg	      cd "$darwin_curdir"
26655f5b92ffSmrg	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
26665f5b92ffSmrg	    done # $darwin_arches
26675f5b92ffSmrg            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
26685f5b92ffSmrg	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
26695f5b92ffSmrg	    darwin_file=
26705f5b92ffSmrg	    darwin_files=
26715f5b92ffSmrg	    for darwin_file in $darwin_filelist; do
26725f5b92ffSmrg	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
26735f5b92ffSmrg	      $LIPO -create -output "$darwin_file" $darwin_files
26745f5b92ffSmrg	    done # $darwin_filelist
26755f5b92ffSmrg	    $RM -rf unfat-$$
26765f5b92ffSmrg	    cd "$darwin_orig_dir"
267717a48c7cSmrg	  else
26785f5b92ffSmrg	    cd $darwin_orig_dir
26795f5b92ffSmrg	    func_extract_an_archive "$my_xdir" "$my_xabs"
26805f5b92ffSmrg	  fi # $darwin_arches
26815f5b92ffSmrg	} # !$opt_dry_run
26825f5b92ffSmrg	;;
26835f5b92ffSmrg      *)
26845f5b92ffSmrg        func_extract_an_archive "$my_xdir" "$my_xabs"
26855f5b92ffSmrg	;;
26865f5b92ffSmrg      esac
26875f5b92ffSmrg      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
26885f5b92ffSmrg    done
268917a48c7cSmrg
26905f5b92ffSmrg    func_extract_archives_result="$my_oldobjs"
26915f5b92ffSmrg}
269217a48c7cSmrg
269317a48c7cSmrg
269417a48c7cSmrg
26955f5b92ffSmrg# func_emit_wrapper_part1 [arg=no]
26965f5b92ffSmrg#
26975f5b92ffSmrg# Emit the first part of a libtool wrapper script on stdout.
26985f5b92ffSmrg# For more information, see the description associated with
26995f5b92ffSmrg# func_emit_wrapper(), below.
27005f5b92ffSmrgfunc_emit_wrapper_part1 ()
27015f5b92ffSmrg{
27025f5b92ffSmrg	func_emit_wrapper_part1_arg1=no
27035f5b92ffSmrg	if test -n "$1" ; then
27045f5b92ffSmrg	  func_emit_wrapper_part1_arg1=$1
270517a48c7cSmrg	fi
270617a48c7cSmrg
27075f5b92ffSmrg	$ECHO "\
27085f5b92ffSmrg#! $SHELL
270917a48c7cSmrg
27105f5b92ffSmrg# $output - temporary wrapper script for $objdir/$outputname
27115f5b92ffSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
27125f5b92ffSmrg#
27135f5b92ffSmrg# The $output program cannot be directly executed until all the libtool
27145f5b92ffSmrg# libraries that it depends on are installed.
27155f5b92ffSmrg#
27165f5b92ffSmrg# This wrapper script should never be moved out of the build directory.
27175f5b92ffSmrg# If it is, it will not operate correctly.
271817a48c7cSmrg
27195f5b92ffSmrg# Sed substitution that helps us do robust quoting.  It backslashifies
27205f5b92ffSmrg# metacharacters that are still active within double-quoted strings.
27215f5b92ffSmrgXsed='${SED} -e 1s/^X//'
27225f5b92ffSmrgsed_quote_subst='$sed_quote_subst'
272317a48c7cSmrg
27245f5b92ffSmrg# Be Bourne compatible
27255f5b92ffSmrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
27265f5b92ffSmrg  emulate sh
27275f5b92ffSmrg  NULLCMD=:
27285f5b92ffSmrg  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
27295f5b92ffSmrg  # is contrary to our usage.  Disable this feature.
27305f5b92ffSmrg  alias -g '\${1+\"\$@\"}'='\"\$@\"'
27315f5b92ffSmrg  setopt NO_GLOB_SUBST
27325f5b92ffSmrgelse
27335f5b92ffSmrg  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
27345f5b92ffSmrgfi
27355f5b92ffSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
27365f5b92ffSmrgDUALCASE=1; export DUALCASE # for MKS sh
273717a48c7cSmrg
27385f5b92ffSmrg# The HP-UX ksh and POSIX shell print the target directory to stdout
27395f5b92ffSmrg# if CDPATH is set.
27405f5b92ffSmrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
274117a48c7cSmrg
27425f5b92ffSmrgrelink_command=\"$relink_command\"
274317a48c7cSmrg
27445f5b92ffSmrg# This environment variable determines our operation mode.
27455f5b92ffSmrgif test \"\$libtool_install_magic\" = \"$magic\"; then
27465f5b92ffSmrg  # install mode needs the following variables:
27475f5b92ffSmrg  generated_by_libtool_version='$macro_version'
27485f5b92ffSmrg  notinst_deplibs='$notinst_deplibs'
27495f5b92ffSmrgelse
27505f5b92ffSmrg  # When we are sourced in execute mode, \$file and \$ECHO are already set.
27515f5b92ffSmrg  if test \"\$libtool_execute_magic\" != \"$magic\"; then
27525f5b92ffSmrg    ECHO=\"$qecho\"
27535f5b92ffSmrg    file=\"\$0\"
27545f5b92ffSmrg    # Make sure echo works.
27555f5b92ffSmrg    if test \"X\$1\" = X--no-reexec; then
27565f5b92ffSmrg      # Discard the --no-reexec flag, and continue.
27575f5b92ffSmrg      shift
27585f5b92ffSmrg    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
27595f5b92ffSmrg      # Yippee, \$ECHO works!
27605f5b92ffSmrg      :
27615f5b92ffSmrg    else
27625f5b92ffSmrg      # Restart under the correct shell, and then maybe \$ECHO will work.
27635f5b92ffSmrg      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
27645f5b92ffSmrg    fi
27655f5b92ffSmrg  fi\
27665f5b92ffSmrg"
27675f5b92ffSmrg	$ECHO "\
276817a48c7cSmrg
27695f5b92ffSmrg  # Find the directory that this script lives in.
27705f5b92ffSmrg  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
27715f5b92ffSmrg  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
277217a48c7cSmrg
27735f5b92ffSmrg  # Follow symbolic links until we get to the real thisdir.
27745f5b92ffSmrg  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
27755f5b92ffSmrg  while test -n \"\$file\"; do
27765f5b92ffSmrg    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
277717a48c7cSmrg
27785f5b92ffSmrg    # If there was a directory component, then change thisdir.
27795f5b92ffSmrg    if test \"x\$destdir\" != \"x\$file\"; then
27805f5b92ffSmrg      case \"\$destdir\" in
27815f5b92ffSmrg      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
27825f5b92ffSmrg      *) thisdir=\"\$thisdir/\$destdir\" ;;
278317a48c7cSmrg      esac
27845f5b92ffSmrg    fi
278517a48c7cSmrg
27865f5b92ffSmrg    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
27875f5b92ffSmrg    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
27885f5b92ffSmrg  done
27895f5b92ffSmrg"
27905f5b92ffSmrg}
27915f5b92ffSmrg# end: func_emit_wrapper_part1
27925f5b92ffSmrg
27935f5b92ffSmrg# func_emit_wrapper_part2 [arg=no]
27945f5b92ffSmrg#
27955f5b92ffSmrg# Emit the second part of a libtool wrapper script on stdout.
27965f5b92ffSmrg# For more information, see the description associated with
27975f5b92ffSmrg# func_emit_wrapper(), below.
27985f5b92ffSmrgfunc_emit_wrapper_part2 ()
27995f5b92ffSmrg{
28005f5b92ffSmrg	func_emit_wrapper_part2_arg1=no
28015f5b92ffSmrg	if test -n "$1" ; then
28025f5b92ffSmrg	  func_emit_wrapper_part2_arg1=$1
280317a48c7cSmrg	fi
280417a48c7cSmrg
28055f5b92ffSmrg	$ECHO "\
280617a48c7cSmrg
28075f5b92ffSmrg  # Usually 'no', except on cygwin/mingw when embedded into
28085f5b92ffSmrg  # the cwrapper.
28095f5b92ffSmrg  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
28105f5b92ffSmrg  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
28115f5b92ffSmrg    # special case for '.'
28125f5b92ffSmrg    if test \"\$thisdir\" = \".\"; then
28135f5b92ffSmrg      thisdir=\`pwd\`
28145f5b92ffSmrg    fi
28155f5b92ffSmrg    # remove .libs from thisdir
28165f5b92ffSmrg    case \"\$thisdir\" in
28175f5b92ffSmrg    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
28185f5b92ffSmrg    $objdir )   thisdir=. ;;
28195f5b92ffSmrg    esac
28205f5b92ffSmrg  fi
28215f5b92ffSmrg
28225f5b92ffSmrg  # Try to get the absolute directory name.
28235f5b92ffSmrg  absdir=\`cd \"\$thisdir\" && pwd\`
28245f5b92ffSmrg  test -n \"\$absdir\" && thisdir=\"\$absdir\"
28255f5b92ffSmrg"
28265f5b92ffSmrg
28275f5b92ffSmrg	if test "$fast_install" = yes; then
28285f5b92ffSmrg	  $ECHO "\
28295f5b92ffSmrg  program=lt-'$outputname'$exeext
28305f5b92ffSmrg  progdir=\"\$thisdir/$objdir\"
28315f5b92ffSmrg
28325f5b92ffSmrg  if test ! -f \"\$progdir/\$program\" ||
28335f5b92ffSmrg     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
28345f5b92ffSmrg       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
28355f5b92ffSmrg
28365f5b92ffSmrg    file=\"\$\$-\$program\"
28375f5b92ffSmrg
28385f5b92ffSmrg    if test ! -d \"\$progdir\"; then
28395f5b92ffSmrg      $MKDIR \"\$progdir\"
28405f5b92ffSmrg    else
28415f5b92ffSmrg      $RM \"\$progdir/\$file\"
28425f5b92ffSmrg    fi"
28435f5b92ffSmrg
28445f5b92ffSmrg	  $ECHO "\
28455f5b92ffSmrg
28465f5b92ffSmrg    # relink executable if necessary
28475f5b92ffSmrg    if test -n \"\$relink_command\"; then
28485f5b92ffSmrg      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
28495f5b92ffSmrg      else
28505f5b92ffSmrg	$ECHO \"\$relink_command_output\" >&2
28515f5b92ffSmrg	$RM \"\$progdir/\$file\"
28525f5b92ffSmrg	exit 1
285317a48c7cSmrg      fi
28545f5b92ffSmrg    fi
285517a48c7cSmrg
28565f5b92ffSmrg    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
28575f5b92ffSmrg    { $RM \"\$progdir/\$program\";
28585f5b92ffSmrg      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
28595f5b92ffSmrg    $RM \"\$progdir/\$file\"
28605f5b92ffSmrg  fi"
28615f5b92ffSmrg	else
28625f5b92ffSmrg	  $ECHO "\
28635f5b92ffSmrg  program='$outputname'
28645f5b92ffSmrg  progdir=\"\$thisdir/$objdir\"
28655f5b92ffSmrg"
286617a48c7cSmrg	fi
286717a48c7cSmrg
28685f5b92ffSmrg	$ECHO "\
286917a48c7cSmrg
28705f5b92ffSmrg  if test -f \"\$progdir/\$program\"; then"
287117a48c7cSmrg
28725f5b92ffSmrg	# Export our shlibpath_var if we have one.
28735f5b92ffSmrg	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
28745f5b92ffSmrg	  $ECHO "\
28755f5b92ffSmrg    # Add our own library path to $shlibpath_var
28765f5b92ffSmrg    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
28775f5b92ffSmrg
28785f5b92ffSmrg    # Some systems cannot cope with colon-terminated $shlibpath_var
28795f5b92ffSmrg    # The second colon is a workaround for a bug in BeOS R4 sed
28805f5b92ffSmrg    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
288117a48c7cSmrg
28825f5b92ffSmrg    export $shlibpath_var
28835f5b92ffSmrg"
288417a48c7cSmrg	fi
288517a48c7cSmrg
28865f5b92ffSmrg	# fixup the dll searchpath if we need to.
28875f5b92ffSmrg	if test -n "$dllsearchpath"; then
28885f5b92ffSmrg	  $ECHO "\
28895f5b92ffSmrg    # Add the dll search path components to the executable PATH
28905f5b92ffSmrg    PATH=$dllsearchpath:\$PATH
28915f5b92ffSmrg"
28925f5b92ffSmrg	fi
289317a48c7cSmrg
28945f5b92ffSmrg	$ECHO "\
28955f5b92ffSmrg    if test \"\$libtool_execute_magic\" != \"$magic\"; then
28965f5b92ffSmrg      # Run the actual program with our arguments.
28975f5b92ffSmrg"
28985f5b92ffSmrg	case $host in
28995f5b92ffSmrg	# Backslashes separate directories on plain windows
29005f5b92ffSmrg	*-*-mingw | *-*-os2* | *-cegcc*)
29015f5b92ffSmrg	  $ECHO "\
29025f5b92ffSmrg      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
29035f5b92ffSmrg"
290417a48c7cSmrg	  ;;
290517a48c7cSmrg
290617a48c7cSmrg	*)
29075f5b92ffSmrg	  $ECHO "\
29085f5b92ffSmrg      exec \"\$progdir/\$program\" \${1+\"\$@\"}
29095f5b92ffSmrg"
291017a48c7cSmrg	  ;;
291117a48c7cSmrg	esac
29125f5b92ffSmrg	$ECHO "\
29135f5b92ffSmrg      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
29145f5b92ffSmrg      exit 1
29155f5b92ffSmrg    fi
29165f5b92ffSmrg  else
29175f5b92ffSmrg    # The program doesn't exist.
29185f5b92ffSmrg    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
29195f5b92ffSmrg    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
29205f5b92ffSmrg    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
29215f5b92ffSmrg    exit 1
29225f5b92ffSmrg  fi
29235f5b92ffSmrgfi\
29245f5b92ffSmrg"
29255f5b92ffSmrg}
29265f5b92ffSmrg# end: func_emit_wrapper_part2
292717a48c7cSmrg
292817a48c7cSmrg
29295f5b92ffSmrg# func_emit_wrapper [arg=no]
29305f5b92ffSmrg#
29315f5b92ffSmrg# Emit a libtool wrapper script on stdout.
29325f5b92ffSmrg# Don't directly open a file because we may want to
29335f5b92ffSmrg# incorporate the script contents within a cygwin/mingw
29345f5b92ffSmrg# wrapper executable.  Must ONLY be called from within
29355f5b92ffSmrg# func_mode_link because it depends on a number of variables
29365f5b92ffSmrg# set therein.
29375f5b92ffSmrg#
29385f5b92ffSmrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
29395f5b92ffSmrg# variable will take.  If 'yes', then the emitted script
29405f5b92ffSmrg# will assume that the directory in which it is stored is
29415f5b92ffSmrg# the $objdir directory.  This is a cygwin/mingw-specific
29425f5b92ffSmrg# behavior.
29435f5b92ffSmrgfunc_emit_wrapper ()
29445f5b92ffSmrg{
29455f5b92ffSmrg	func_emit_wrapper_arg1=no
29465f5b92ffSmrg	if test -n "$1" ; then
29475f5b92ffSmrg	  func_emit_wrapper_arg1=$1
294817a48c7cSmrg	fi
294917a48c7cSmrg
29505f5b92ffSmrg	# split this up so that func_emit_cwrapperexe_src
29515f5b92ffSmrg	# can call each part independently.
29525f5b92ffSmrg	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
29535f5b92ffSmrg	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
29545f5b92ffSmrg}
295517a48c7cSmrg
295617a48c7cSmrg
29575f5b92ffSmrg# func_to_host_path arg
29585f5b92ffSmrg#
29595f5b92ffSmrg# Convert paths to host format when used with build tools.
29605f5b92ffSmrg# Intended for use with "native" mingw (where libtool itself
29615f5b92ffSmrg# is running under the msys shell), or in the following cross-
29625f5b92ffSmrg# build environments:
29635f5b92ffSmrg#    $build          $host
29645f5b92ffSmrg#    mingw (msys)    mingw  [e.g. native]
29655f5b92ffSmrg#    cygwin          mingw
29665f5b92ffSmrg#    *nix + wine     mingw
29675f5b92ffSmrg# where wine is equipped with the `winepath' executable.
29685f5b92ffSmrg# In the native mingw case, the (msys) shell automatically
29695f5b92ffSmrg# converts paths for any non-msys applications it launches,
29705f5b92ffSmrg# but that facility isn't available from inside the cwrapper.
29715f5b92ffSmrg# Similar accommodations are necessary for $host mingw and
29725f5b92ffSmrg# $build cygwin.  Calling this function does no harm for other
29735f5b92ffSmrg# $host/$build combinations not listed above.
29745f5b92ffSmrg#
29755f5b92ffSmrg# ARG is the path (on $build) that should be converted to
29765f5b92ffSmrg# the proper representation for $host. The result is stored
29775f5b92ffSmrg# in $func_to_host_path_result.
29785f5b92ffSmrgfunc_to_host_path ()
29795f5b92ffSmrg{
29805f5b92ffSmrg  func_to_host_path_result="$1"
29815f5b92ffSmrg  if test -n "$1" ; then
29825f5b92ffSmrg    case $host in
29835f5b92ffSmrg      *mingw* )
29845f5b92ffSmrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
29855f5b92ffSmrg        case $build in
29865f5b92ffSmrg          *mingw* ) # actually, msys
29875f5b92ffSmrg            # awkward: cmd appends spaces to result
29885f5b92ffSmrg            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
29895f5b92ffSmrg            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
29905f5b92ffSmrg              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
29915f5b92ffSmrg            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
29925f5b92ffSmrg              $SED -e "$lt_sed_naive_backslashify"`
29935f5b92ffSmrg            ;;
29945f5b92ffSmrg          *cygwin* )
29955f5b92ffSmrg            func_to_host_path_tmp1=`cygpath -w "$1"`
29965f5b92ffSmrg            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
29975f5b92ffSmrg              $SED -e "$lt_sed_naive_backslashify"`
29985f5b92ffSmrg            ;;
29995f5b92ffSmrg          * )
30005f5b92ffSmrg            # Unfortunately, winepath does not exit with a non-zero
30015f5b92ffSmrg            # error code, so we are forced to check the contents of
30025f5b92ffSmrg            # stdout. On the other hand, if the command is not
30035f5b92ffSmrg            # found, the shell will set an exit code of 127 and print
30045f5b92ffSmrg            # *an error message* to stdout. So we must check for both
30055f5b92ffSmrg            # error code of zero AND non-empty stdout, which explains
30065f5b92ffSmrg            # the odd construction:
30075f5b92ffSmrg            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
30085f5b92ffSmrg            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
30095f5b92ffSmrg              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
30105f5b92ffSmrg                $SED -e "$lt_sed_naive_backslashify"`
30115f5b92ffSmrg            else
30125f5b92ffSmrg              # Allow warning below.
30135f5b92ffSmrg              func_to_host_path_result=""
30145f5b92ffSmrg            fi
30155f5b92ffSmrg            ;;
30165f5b92ffSmrg        esac
30175f5b92ffSmrg        if test -z "$func_to_host_path_result" ; then
30185f5b92ffSmrg          func_error "Could not determine host path corresponding to"
30195f5b92ffSmrg          func_error "  '$1'"
30205f5b92ffSmrg          func_error "Continuing, but uninstalled executables may not work."
30215f5b92ffSmrg          # Fallback:
30225f5b92ffSmrg          func_to_host_path_result="$1"
30235f5b92ffSmrg        fi
30245f5b92ffSmrg        ;;
30255f5b92ffSmrg    esac
30265f5b92ffSmrg  fi
30275f5b92ffSmrg}
30285f5b92ffSmrg# end: func_to_host_path
302917a48c7cSmrg
30305f5b92ffSmrg# func_to_host_pathlist arg
30315f5b92ffSmrg#
30325f5b92ffSmrg# Convert pathlists to host format when used with build tools.
30335f5b92ffSmrg# See func_to_host_path(), above. This function supports the
30345f5b92ffSmrg# following $build/$host combinations (but does no harm for
30355f5b92ffSmrg# combinations not listed here):
30365f5b92ffSmrg#    $build          $host
30375f5b92ffSmrg#    mingw (msys)    mingw  [e.g. native]
30385f5b92ffSmrg#    cygwin          mingw
30395f5b92ffSmrg#    *nix + wine     mingw
30405f5b92ffSmrg#
30415f5b92ffSmrg# Path separators are also converted from $build format to
30425f5b92ffSmrg# $host format. If ARG begins or ends with a path separator
30435f5b92ffSmrg# character, it is preserved (but converted to $host format)
30445f5b92ffSmrg# on output.
30455f5b92ffSmrg#
30465f5b92ffSmrg# ARG is a pathlist (on $build) that should be converted to
30475f5b92ffSmrg# the proper representation on $host. The result is stored
30485f5b92ffSmrg# in $func_to_host_pathlist_result.
30495f5b92ffSmrgfunc_to_host_pathlist ()
30505f5b92ffSmrg{
30515f5b92ffSmrg  func_to_host_pathlist_result="$1"
30525f5b92ffSmrg  if test -n "$1" ; then
30535f5b92ffSmrg    case $host in
30545f5b92ffSmrg      *mingw* )
30555f5b92ffSmrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
30565f5b92ffSmrg        # Remove leading and trailing path separator characters from
30575f5b92ffSmrg        # ARG. msys behavior is inconsistent here, cygpath turns them
30585f5b92ffSmrg        # into '.;' and ';.', and winepath ignores them completely.
30595f5b92ffSmrg        func_to_host_pathlist_tmp2="$1"
30605f5b92ffSmrg        # Once set for this call, this variable should not be
30615f5b92ffSmrg        # reassigned. It is used in tha fallback case.
30625f5b92ffSmrg        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
30635f5b92ffSmrg          $SED -e 's|^:*||' -e 's|:*$||'`
30645f5b92ffSmrg        case $build in
30655f5b92ffSmrg          *mingw* ) # Actually, msys.
30665f5b92ffSmrg            # Awkward: cmd appends spaces to result.
30675f5b92ffSmrg            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
30685f5b92ffSmrg            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
30695f5b92ffSmrg              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
30705f5b92ffSmrg            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
30715f5b92ffSmrg              $SED -e "$lt_sed_naive_backslashify"`
30725f5b92ffSmrg            ;;
30735f5b92ffSmrg          *cygwin* )
30745f5b92ffSmrg            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
30755f5b92ffSmrg            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
30765f5b92ffSmrg              $SED -e "$lt_sed_naive_backslashify"`
30775f5b92ffSmrg            ;;
30785f5b92ffSmrg          * )
30795f5b92ffSmrg            # unfortunately, winepath doesn't convert pathlists
30805f5b92ffSmrg            func_to_host_pathlist_result=""
30815f5b92ffSmrg            func_to_host_pathlist_oldIFS=$IFS
30825f5b92ffSmrg            IFS=:
30835f5b92ffSmrg            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
30845f5b92ffSmrg              IFS=$func_to_host_pathlist_oldIFS
30855f5b92ffSmrg              if test -n "$func_to_host_pathlist_f" ; then
30865f5b92ffSmrg                func_to_host_path "$func_to_host_pathlist_f"
30875f5b92ffSmrg                if test -n "$func_to_host_path_result" ; then
30885f5b92ffSmrg                  if test -z "$func_to_host_pathlist_result" ; then
30895f5b92ffSmrg                    func_to_host_pathlist_result="$func_to_host_path_result"
30905f5b92ffSmrg                  else
30915f5b92ffSmrg                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
30925f5b92ffSmrg                  fi
30935f5b92ffSmrg                fi
30945f5b92ffSmrg              fi
30955f5b92ffSmrg              IFS=:
30965f5b92ffSmrg            done
30975f5b92ffSmrg            IFS=$func_to_host_pathlist_oldIFS
30985f5b92ffSmrg            ;;
30995f5b92ffSmrg        esac
31005f5b92ffSmrg        if test -z "$func_to_host_pathlist_result" ; then
31015f5b92ffSmrg          func_error "Could not determine the host path(s) corresponding to"
31025f5b92ffSmrg          func_error "  '$1'"
31035f5b92ffSmrg          func_error "Continuing, but uninstalled executables may not work."
31045f5b92ffSmrg          # Fallback. This may break if $1 contains DOS-style drive
31055f5b92ffSmrg          # specifications. The fix is not to complicate the expression
31065f5b92ffSmrg          # below, but for the user to provide a working wine installation
31075f5b92ffSmrg          # with winepath so that path translation in the cross-to-mingw
31085f5b92ffSmrg          # case works properly.
31095f5b92ffSmrg          lt_replace_pathsep_nix_to_dos="s|:|;|g"
31105f5b92ffSmrg          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
31115f5b92ffSmrg            $SED -e "$lt_replace_pathsep_nix_to_dos"`
31125f5b92ffSmrg        fi
31135f5b92ffSmrg        # Now, add the leading and trailing path separators back
31145f5b92ffSmrg        case "$1" in
31155f5b92ffSmrg          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
31165f5b92ffSmrg            ;;
31175f5b92ffSmrg        esac
31185f5b92ffSmrg        case "$1" in
31195f5b92ffSmrg          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
31205f5b92ffSmrg            ;;
31215f5b92ffSmrg        esac
31225f5b92ffSmrg        ;;
31235f5b92ffSmrg    esac
31245f5b92ffSmrg  fi
31255f5b92ffSmrg}
31265f5b92ffSmrg# end: func_to_host_pathlist
312717a48c7cSmrg
31285f5b92ffSmrg# func_emit_cwrapperexe_src
31295f5b92ffSmrg# emit the source code for a wrapper executable on stdout
31305f5b92ffSmrg# Must ONLY be called from within func_mode_link because
31315f5b92ffSmrg# it depends on a number of variable set therein.
31325f5b92ffSmrgfunc_emit_cwrapperexe_src ()
31335f5b92ffSmrg{
31345f5b92ffSmrg	cat <<EOF
313517a48c7cSmrg
31365f5b92ffSmrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
31375f5b92ffSmrg   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
313817a48c7cSmrg
31395f5b92ffSmrg   The $output program cannot be directly executed until all the libtool
31405f5b92ffSmrg   libraries that it depends on are installed.
314117a48c7cSmrg
31425f5b92ffSmrg   This wrapper executable should never be moved out of the build directory.
31435f5b92ffSmrg   If it is, it will not operate correctly.
314417a48c7cSmrg
31455f5b92ffSmrg   Currently, it simply execs the wrapper *script* "$SHELL $output",
31465f5b92ffSmrg   but could eventually absorb all of the scripts functionality and
31475f5b92ffSmrg   exec $objdir/$outputname directly.
31485f5b92ffSmrg*/
31495f5b92ffSmrgEOF
31505f5b92ffSmrg	    cat <<"EOF"
31515f5b92ffSmrg#include <stdio.h>
31525f5b92ffSmrg#include <stdlib.h>
31535f5b92ffSmrg#ifdef _MSC_VER
31545f5b92ffSmrg# include <direct.h>
31555f5b92ffSmrg# include <process.h>
31565f5b92ffSmrg# include <io.h>
31575f5b92ffSmrg# define setmode _setmode
31585f5b92ffSmrg#else
31595f5b92ffSmrg# include <unistd.h>
31605f5b92ffSmrg# include <stdint.h>
31615f5b92ffSmrg# ifdef __CYGWIN__
31625f5b92ffSmrg#  include <io.h>
31635f5b92ffSmrg#  define HAVE_SETENV
31645f5b92ffSmrg#  ifdef __STRICT_ANSI__
31655f5b92ffSmrgchar *realpath (const char *, char *);
31665f5b92ffSmrgint putenv (char *);
31675f5b92ffSmrgint setenv (const char *, const char *, int);
31685f5b92ffSmrg#  endif
31695f5b92ffSmrg# endif
31705f5b92ffSmrg#endif
31715f5b92ffSmrg#include <malloc.h>
31725f5b92ffSmrg#include <stdarg.h>
31735f5b92ffSmrg#include <assert.h>
31745f5b92ffSmrg#include <string.h>
31755f5b92ffSmrg#include <ctype.h>
31765f5b92ffSmrg#include <errno.h>
31775f5b92ffSmrg#include <fcntl.h>
31785f5b92ffSmrg#include <sys/stat.h>
317917a48c7cSmrg
31805f5b92ffSmrg#if defined(PATH_MAX)
31815f5b92ffSmrg# define LT_PATHMAX PATH_MAX
31825f5b92ffSmrg#elif defined(MAXPATHLEN)
31835f5b92ffSmrg# define LT_PATHMAX MAXPATHLEN
31845f5b92ffSmrg#else
31855f5b92ffSmrg# define LT_PATHMAX 1024
31865f5b92ffSmrg#endif
318717a48c7cSmrg
31885f5b92ffSmrg#ifndef S_IXOTH
31895f5b92ffSmrg# define S_IXOTH 0
31905f5b92ffSmrg#endif
31915f5b92ffSmrg#ifndef S_IXGRP
31925f5b92ffSmrg# define S_IXGRP 0
31935f5b92ffSmrg#endif
319417a48c7cSmrg
31955f5b92ffSmrg#ifdef _MSC_VER
31965f5b92ffSmrg# define S_IXUSR _S_IEXEC
31975f5b92ffSmrg# define stat _stat
31985f5b92ffSmrg# ifndef _INTPTR_T_DEFINED
31995f5b92ffSmrg#  define intptr_t int
32005f5b92ffSmrg# endif
32015f5b92ffSmrg#endif
320217a48c7cSmrg
32035f5b92ffSmrg#ifndef DIR_SEPARATOR
32045f5b92ffSmrg# define DIR_SEPARATOR '/'
32055f5b92ffSmrg# define PATH_SEPARATOR ':'
32065f5b92ffSmrg#endif
320717a48c7cSmrg
32085f5b92ffSmrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
32095f5b92ffSmrg  defined (__OS2__)
32105f5b92ffSmrg# define HAVE_DOS_BASED_FILE_SYSTEM
32115f5b92ffSmrg# define FOPEN_WB "wb"
32125f5b92ffSmrg# ifndef DIR_SEPARATOR_2
32135f5b92ffSmrg#  define DIR_SEPARATOR_2 '\\'
32145f5b92ffSmrg# endif
32155f5b92ffSmrg# ifndef PATH_SEPARATOR_2
32165f5b92ffSmrg#  define PATH_SEPARATOR_2 ';'
32175f5b92ffSmrg# endif
32185f5b92ffSmrg#endif
321917a48c7cSmrg
32205f5b92ffSmrg#ifndef DIR_SEPARATOR_2
32215f5b92ffSmrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
32225f5b92ffSmrg#else /* DIR_SEPARATOR_2 */
32235f5b92ffSmrg# define IS_DIR_SEPARATOR(ch) \
32245f5b92ffSmrg	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
32255f5b92ffSmrg#endif /* DIR_SEPARATOR_2 */
322617a48c7cSmrg
32275f5b92ffSmrg#ifndef PATH_SEPARATOR_2
32285f5b92ffSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
32295f5b92ffSmrg#else /* PATH_SEPARATOR_2 */
32305f5b92ffSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
32315f5b92ffSmrg#endif /* PATH_SEPARATOR_2 */
323217a48c7cSmrg
32335f5b92ffSmrg#ifdef __CYGWIN__
32345f5b92ffSmrg# define FOPEN_WB "wb"
32355f5b92ffSmrg#endif
323617a48c7cSmrg
32375f5b92ffSmrg#ifndef FOPEN_WB
32385f5b92ffSmrg# define FOPEN_WB "w"
32395f5b92ffSmrg#endif
32405f5b92ffSmrg#ifndef _O_BINARY
32415f5b92ffSmrg# define _O_BINARY 0
32425f5b92ffSmrg#endif
324317a48c7cSmrg
32445f5b92ffSmrg#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
32455f5b92ffSmrg#define XFREE(stale) do { \
32465f5b92ffSmrg  if (stale) { free ((void *) stale); stale = 0; } \
32475f5b92ffSmrg} while (0)
324817a48c7cSmrg
32495f5b92ffSmrg#undef LTWRAPPER_DEBUGPRINTF
32505f5b92ffSmrg#if defined DEBUGWRAPPER
32515f5b92ffSmrg# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
32525f5b92ffSmrgstatic void
32535f5b92ffSmrgltwrapper_debugprintf (const char *fmt, ...)
32545f5b92ffSmrg{
32555f5b92ffSmrg    va_list args;
32565f5b92ffSmrg    va_start (args, fmt);
32575f5b92ffSmrg    (void) vfprintf (stderr, fmt, args);
32585f5b92ffSmrg    va_end (args);
32595f5b92ffSmrg}
32605f5b92ffSmrg#else
32615f5b92ffSmrg# define LTWRAPPER_DEBUGPRINTF(args)
32625f5b92ffSmrg#endif
326317a48c7cSmrg
32645f5b92ffSmrgconst char *program_name = NULL;
326517a48c7cSmrg
32665f5b92ffSmrgvoid *xmalloc (size_t num);
32675f5b92ffSmrgchar *xstrdup (const char *string);
32685f5b92ffSmrgconst char *base_name (const char *name);
32695f5b92ffSmrgchar *find_executable (const char *wrapper);
32705f5b92ffSmrgchar *chase_symlinks (const char *pathspec);
32715f5b92ffSmrgint make_executable (const char *path);
32725f5b92ffSmrgint check_executable (const char *path);
32735f5b92ffSmrgchar *strendzap (char *str, const char *pat);
32745f5b92ffSmrgvoid lt_fatal (const char *message, ...);
32755f5b92ffSmrgvoid lt_setenv (const char *name, const char *value);
32765f5b92ffSmrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
32775f5b92ffSmrgvoid lt_opt_process_env_set (const char *arg);
32785f5b92ffSmrgvoid lt_opt_process_env_prepend (const char *arg);
32795f5b92ffSmrgvoid lt_opt_process_env_append (const char *arg);
32805f5b92ffSmrgint lt_split_name_value (const char *arg, char** name, char** value);
32815f5b92ffSmrgvoid lt_update_exe_path (const char *name, const char *value);
32825f5b92ffSmrgvoid lt_update_lib_path (const char *name, const char *value);
32835f5b92ffSmrg
32845f5b92ffSmrgstatic const char *script_text_part1 =
32855f5b92ffSmrgEOF
328617a48c7cSmrg
32875f5b92ffSmrg	    func_emit_wrapper_part1 yes |
32885f5b92ffSmrg	        $SED -e 's/\([\\"]\)/\\\1/g' \
32895f5b92ffSmrg	             -e 's/^/  "/' -e 's/$/\\n"/'
32905f5b92ffSmrg	    echo ";"
32915f5b92ffSmrg	    cat <<EOF
329217a48c7cSmrg
32935f5b92ffSmrgstatic const char *script_text_part2 =
32945f5b92ffSmrgEOF
32955f5b92ffSmrg	    func_emit_wrapper_part2 yes |
32965f5b92ffSmrg	        $SED -e 's/\([\\"]\)/\\\1/g' \
32975f5b92ffSmrg	             -e 's/^/  "/' -e 's/$/\\n"/'
32985f5b92ffSmrg	    echo ";"
32995f5b92ffSmrg
33005f5b92ffSmrg	    cat <<EOF
33015f5b92ffSmrgconst char * MAGIC_EXE = "$magic_exe";
33025f5b92ffSmrgconst char * LIB_PATH_VARNAME = "$shlibpath_var";
33035f5b92ffSmrgEOF
330417a48c7cSmrg
33055f5b92ffSmrg	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
33065f5b92ffSmrg              func_to_host_pathlist "$temp_rpath"
33075f5b92ffSmrg	      cat <<EOF
33085f5b92ffSmrgconst char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
33095f5b92ffSmrgEOF
33105f5b92ffSmrg	    else
33115f5b92ffSmrg	      cat <<"EOF"
33125f5b92ffSmrgconst char * LIB_PATH_VALUE   = "";
33135f5b92ffSmrgEOF
331417a48c7cSmrg	    fi
331517a48c7cSmrg
33165f5b92ffSmrg	    if test -n "$dllsearchpath"; then
33175f5b92ffSmrg              func_to_host_pathlist "$dllsearchpath:"
33185f5b92ffSmrg	      cat <<EOF
33195f5b92ffSmrgconst char * EXE_PATH_VARNAME = "PATH";
33205f5b92ffSmrgconst char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
332117a48c7cSmrgEOF
332217a48c7cSmrg	    else
33235f5b92ffSmrg	      cat <<"EOF"
33245f5b92ffSmrgconst char * EXE_PATH_VARNAME = "";
33255f5b92ffSmrgconst char * EXE_PATH_VALUE   = "";
33265f5b92ffSmrgEOF
332717a48c7cSmrg	    fi
33285f5b92ffSmrg
33295f5b92ffSmrg	    if test "$fast_install" = yes; then
33305f5b92ffSmrg	      cat <<EOF
33315f5b92ffSmrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
33325f5b92ffSmrgEOF
333317a48c7cSmrg	    else
33345f5b92ffSmrg	      cat <<EOF
33355f5b92ffSmrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
33365f5b92ffSmrgEOF
333717a48c7cSmrg	    fi
333817a48c7cSmrg
333917a48c7cSmrg
33405f5b92ffSmrg	    cat <<"EOF"
334117a48c7cSmrg
33425f5b92ffSmrg#define LTWRAPPER_OPTION_PREFIX         "--lt-"
33435f5b92ffSmrg#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
334417a48c7cSmrg
33455f5b92ffSmrgstatic const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
33465f5b92ffSmrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
334717a48c7cSmrg
33485f5b92ffSmrgstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
334917a48c7cSmrg
33505f5b92ffSmrgstatic const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
33515f5b92ffSmrgstatic const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
33525f5b92ffSmrg  /* argument is putenv-style "foo=bar", value of foo is set to bar */
335317a48c7cSmrg
33545f5b92ffSmrgstatic const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
33555f5b92ffSmrgstatic const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
33565f5b92ffSmrg  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
335717a48c7cSmrg
33585f5b92ffSmrgstatic const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
33595f5b92ffSmrgstatic const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
33605f5b92ffSmrg  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
336117a48c7cSmrg
33625f5b92ffSmrgint
33635f5b92ffSmrgmain (int argc, char *argv[])
33645f5b92ffSmrg{
33655f5b92ffSmrg  char **newargz;
33665f5b92ffSmrg  int  newargc;
33675f5b92ffSmrg  char *tmp_pathspec;
33685f5b92ffSmrg  char *actual_cwrapper_path;
33695f5b92ffSmrg  char *actual_cwrapper_name;
33705f5b92ffSmrg  char *target_name;
33715f5b92ffSmrg  char *lt_argv_zero;
33725f5b92ffSmrg  intptr_t rval = 127;
337317a48c7cSmrg
33745f5b92ffSmrg  int i;
337517a48c7cSmrg
33765f5b92ffSmrg  program_name = (char *) xstrdup (base_name (argv[0]));
33775f5b92ffSmrg  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
33785f5b92ffSmrg  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
337917a48c7cSmrg
33805f5b92ffSmrg  /* very simple arg parsing; don't want to rely on getopt */
33815f5b92ffSmrg  for (i = 1; i < argc; i++)
33825f5b92ffSmrg    {
33835f5b92ffSmrg      if (strcmp (argv[i], dumpscript_opt) == 0)
33845f5b92ffSmrg	{
33855f5b92ffSmrgEOF
33865f5b92ffSmrg	    case "$host" in
33875f5b92ffSmrg	      *mingw* | *cygwin* )
33885f5b92ffSmrg		# make stdout use "unix" line endings
33895f5b92ffSmrg		echo "          setmode(1,_O_BINARY);"
33905f5b92ffSmrg		;;
33915f5b92ffSmrg	      esac
339217a48c7cSmrg
33935f5b92ffSmrg	    cat <<"EOF"
33945f5b92ffSmrg	  printf ("%s", script_text_part1);
33955f5b92ffSmrg	  printf ("%s", script_text_part2);
33965f5b92ffSmrg	  return 0;
33975f5b92ffSmrg	}
33985f5b92ffSmrg    }
339917a48c7cSmrg
34005f5b92ffSmrg  newargz = XMALLOC (char *, argc + 1);
34015f5b92ffSmrg  tmp_pathspec = find_executable (argv[0]);
34025f5b92ffSmrg  if (tmp_pathspec == NULL)
34035f5b92ffSmrg    lt_fatal ("Couldn't find %s", argv[0]);
34045f5b92ffSmrg  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
34055f5b92ffSmrg			  tmp_pathspec));
34065f5b92ffSmrg
34075f5b92ffSmrg  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
34085f5b92ffSmrg  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
34095f5b92ffSmrg			  actual_cwrapper_path));
34105f5b92ffSmrg  XFREE (tmp_pathspec);
34115f5b92ffSmrg
34125f5b92ffSmrg  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
34135f5b92ffSmrg  strendzap (actual_cwrapper_path, actual_cwrapper_name);
34145f5b92ffSmrg
34155f5b92ffSmrg  /* wrapper name transforms */
34165f5b92ffSmrg  strendzap (actual_cwrapper_name, ".exe");
34175f5b92ffSmrg  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
34185f5b92ffSmrg  XFREE (actual_cwrapper_name);
34195f5b92ffSmrg  actual_cwrapper_name = tmp_pathspec;
34205f5b92ffSmrg  tmp_pathspec = 0;
34215f5b92ffSmrg
34225f5b92ffSmrg  /* target_name transforms -- use actual target program name; might have lt- prefix */
34235f5b92ffSmrg  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
34245f5b92ffSmrg  strendzap (target_name, ".exe");
34255f5b92ffSmrg  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
34265f5b92ffSmrg  XFREE (target_name);
34275f5b92ffSmrg  target_name = tmp_pathspec;
34285f5b92ffSmrg  tmp_pathspec = 0;
34295f5b92ffSmrg
34305f5b92ffSmrg  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
34315f5b92ffSmrg			  target_name));
34325f5b92ffSmrgEOF
343317a48c7cSmrg
34345f5b92ffSmrg	    cat <<EOF
34355f5b92ffSmrg  newargz[0] =
34365f5b92ffSmrg    XMALLOC (char, (strlen (actual_cwrapper_path) +
34375f5b92ffSmrg		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
34385f5b92ffSmrg  strcpy (newargz[0], actual_cwrapper_path);
34395f5b92ffSmrg  strcat (newargz[0], "$objdir");
34405f5b92ffSmrg  strcat (newargz[0], "/");
34415f5b92ffSmrgEOF
344217a48c7cSmrg
34435f5b92ffSmrg	    cat <<"EOF"
34445f5b92ffSmrg  /* stop here, and copy so we don't have to do this twice */
34455f5b92ffSmrg  tmp_pathspec = xstrdup (newargz[0]);
344617a48c7cSmrg
34475f5b92ffSmrg  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
34485f5b92ffSmrg  strcat (newargz[0], actual_cwrapper_name);
344917a48c7cSmrg
34505f5b92ffSmrg  /* DO want the lt- prefix here if it exists, so use target_name */
34515f5b92ffSmrg  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
34525f5b92ffSmrg  XFREE (tmp_pathspec);
34535f5b92ffSmrg  tmp_pathspec = NULL;
34545f5b92ffSmrgEOF
345517a48c7cSmrg
34565f5b92ffSmrg	    case $host_os in
34575f5b92ffSmrg	      mingw*)
34585f5b92ffSmrg	    cat <<"EOF"
34595f5b92ffSmrg  {
34605f5b92ffSmrg    char* p;
34615f5b92ffSmrg    while ((p = strchr (newargz[0], '\\')) != NULL)
34625f5b92ffSmrg      {
34635f5b92ffSmrg	*p = '/';
34645f5b92ffSmrg      }
34655f5b92ffSmrg    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
34665f5b92ffSmrg      {
34675f5b92ffSmrg	*p = '/';
34685f5b92ffSmrg      }
34695f5b92ffSmrg  }
34705f5b92ffSmrgEOF
34715f5b92ffSmrg	    ;;
34725f5b92ffSmrg	    esac
347317a48c7cSmrg
34745f5b92ffSmrg	    cat <<"EOF"
34755f5b92ffSmrg  XFREE (target_name);
34765f5b92ffSmrg  XFREE (actual_cwrapper_path);
34775f5b92ffSmrg  XFREE (actual_cwrapper_name);
347817a48c7cSmrg
34795f5b92ffSmrg  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
34805f5b92ffSmrg  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
34815f5b92ffSmrg  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
34825f5b92ffSmrg  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
348317a48c7cSmrg
34845f5b92ffSmrg  newargc=0;
34855f5b92ffSmrg  for (i = 1; i < argc; i++)
34865f5b92ffSmrg    {
34875f5b92ffSmrg      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
34885f5b92ffSmrg        {
34895f5b92ffSmrg          if (argv[i][env_set_opt_len] == '=')
34905f5b92ffSmrg            {
34915f5b92ffSmrg              const char *p = argv[i] + env_set_opt_len + 1;
34925f5b92ffSmrg              lt_opt_process_env_set (p);
34935f5b92ffSmrg            }
34945f5b92ffSmrg          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
34955f5b92ffSmrg            {
34965f5b92ffSmrg              lt_opt_process_env_set (argv[++i]); /* don't copy */
34975f5b92ffSmrg            }
34985f5b92ffSmrg          else
34995f5b92ffSmrg            lt_fatal ("%s missing required argument", env_set_opt);
35005f5b92ffSmrg          continue;
35015f5b92ffSmrg        }
35025f5b92ffSmrg      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
35035f5b92ffSmrg        {
35045f5b92ffSmrg          if (argv[i][env_prepend_opt_len] == '=')
35055f5b92ffSmrg            {
35065f5b92ffSmrg              const char *p = argv[i] + env_prepend_opt_len + 1;
35075f5b92ffSmrg              lt_opt_process_env_prepend (p);
35085f5b92ffSmrg            }
35095f5b92ffSmrg          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
35105f5b92ffSmrg            {
35115f5b92ffSmrg              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
35125f5b92ffSmrg            }
35135f5b92ffSmrg          else
35145f5b92ffSmrg            lt_fatal ("%s missing required argument", env_prepend_opt);
35155f5b92ffSmrg          continue;
35165f5b92ffSmrg        }
35175f5b92ffSmrg      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
35185f5b92ffSmrg        {
35195f5b92ffSmrg          if (argv[i][env_append_opt_len] == '=')
35205f5b92ffSmrg            {
35215f5b92ffSmrg              const char *p = argv[i] + env_append_opt_len + 1;
35225f5b92ffSmrg              lt_opt_process_env_append (p);
35235f5b92ffSmrg            }
35245f5b92ffSmrg          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
35255f5b92ffSmrg            {
35265f5b92ffSmrg              lt_opt_process_env_append (argv[++i]); /* don't copy */
35275f5b92ffSmrg            }
35285f5b92ffSmrg          else
35295f5b92ffSmrg            lt_fatal ("%s missing required argument", env_append_opt);
35305f5b92ffSmrg          continue;
35315f5b92ffSmrg        }
35325f5b92ffSmrg      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
35335f5b92ffSmrg        {
35345f5b92ffSmrg          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
35355f5b92ffSmrg             namespace, but it is not one of the ones we know about and
35365f5b92ffSmrg             have already dealt with, above (inluding dump-script), then
35375f5b92ffSmrg             report an error. Otherwise, targets might begin to believe
35385f5b92ffSmrg             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
35395f5b92ffSmrg             namespace. The first time any user complains about this, we'll
35405f5b92ffSmrg             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
35415f5b92ffSmrg             or a configure.ac-settable value.
35425f5b92ffSmrg           */
35435f5b92ffSmrg          lt_fatal ("Unrecognized option in %s namespace: '%s'",
35445f5b92ffSmrg                    ltwrapper_option_prefix, argv[i]);
35455f5b92ffSmrg        }
35465f5b92ffSmrg      /* otherwise ... */
35475f5b92ffSmrg      newargz[++newargc] = xstrdup (argv[i]);
35485f5b92ffSmrg    }
35495f5b92ffSmrg  newargz[++newargc] = NULL;
355017a48c7cSmrg
35515f5b92ffSmrg  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
35525f5b92ffSmrg  for (i = 0; i < newargc; i++)
35535f5b92ffSmrg    {
35545f5b92ffSmrg      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
35555f5b92ffSmrg    }
355617a48c7cSmrg
35575f5b92ffSmrgEOF
355817a48c7cSmrg
35595f5b92ffSmrg	    case $host_os in
35605f5b92ffSmrg	      mingw*)
35615f5b92ffSmrg		cat <<"EOF"
35625f5b92ffSmrg  /* execv doesn't actually work on mingw as expected on unix */
35635f5b92ffSmrg  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
35645f5b92ffSmrg  if (rval == -1)
35655f5b92ffSmrg    {
35665f5b92ffSmrg      /* failed to start process */
35675f5b92ffSmrg      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
35685f5b92ffSmrg      return 127;
35695f5b92ffSmrg    }
35705f5b92ffSmrg  return rval;
35715f5b92ffSmrgEOF
35725f5b92ffSmrg		;;
35735f5b92ffSmrg	      *)
35745f5b92ffSmrg		cat <<"EOF"
35755f5b92ffSmrg  execv (lt_argv_zero, newargz);
35765f5b92ffSmrg  return rval; /* =127, but avoids unused variable warning */
35775f5b92ffSmrgEOF
35785f5b92ffSmrg		;;
35795f5b92ffSmrg	    esac
358017a48c7cSmrg
35815f5b92ffSmrg	    cat <<"EOF"
35825f5b92ffSmrg}
358317a48c7cSmrg
35845f5b92ffSmrgvoid *
35855f5b92ffSmrgxmalloc (size_t num)
35865f5b92ffSmrg{
35875f5b92ffSmrg  void *p = (void *) malloc (num);
35885f5b92ffSmrg  if (!p)
35895f5b92ffSmrg    lt_fatal ("Memory exhausted");
359017a48c7cSmrg
35915f5b92ffSmrg  return p;
35925f5b92ffSmrg}
359317a48c7cSmrg
35945f5b92ffSmrgchar *
35955f5b92ffSmrgxstrdup (const char *string)
35965f5b92ffSmrg{
35975f5b92ffSmrg  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
35985f5b92ffSmrg			  string) : NULL;
35995f5b92ffSmrg}
360017a48c7cSmrg
36015f5b92ffSmrgconst char *
36025f5b92ffSmrgbase_name (const char *name)
36035f5b92ffSmrg{
36045f5b92ffSmrg  const char *base;
360517a48c7cSmrg
36065f5b92ffSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36075f5b92ffSmrg  /* Skip over the disk name in MSDOS pathnames. */
36085f5b92ffSmrg  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
36095f5b92ffSmrg    name += 2;
36105f5b92ffSmrg#endif
361117a48c7cSmrg
36125f5b92ffSmrg  for (base = name; *name; name++)
36135f5b92ffSmrg    if (IS_DIR_SEPARATOR (*name))
36145f5b92ffSmrg      base = name + 1;
36155f5b92ffSmrg  return base;
36165f5b92ffSmrg}
361717a48c7cSmrg
36185f5b92ffSmrgint
36195f5b92ffSmrgcheck_executable (const char *path)
36205f5b92ffSmrg{
36215f5b92ffSmrg  struct stat st;
362217a48c7cSmrg
36235f5b92ffSmrg  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
36245f5b92ffSmrg			  path ? (*path ? path : "EMPTY!") : "NULL!"));
36255f5b92ffSmrg  if ((!path) || (!*path))
36265f5b92ffSmrg    return 0;
362717a48c7cSmrg
36285f5b92ffSmrg  if ((stat (path, &st) >= 0)
36295f5b92ffSmrg      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
36305f5b92ffSmrg    return 1;
36315f5b92ffSmrg  else
36325f5b92ffSmrg    return 0;
36335f5b92ffSmrg}
363417a48c7cSmrg
36355f5b92ffSmrgint
36365f5b92ffSmrgmake_executable (const char *path)
36375f5b92ffSmrg{
36385f5b92ffSmrg  int rval = 0;
36395f5b92ffSmrg  struct stat st;
364017a48c7cSmrg
36415f5b92ffSmrg  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
36425f5b92ffSmrg			  path ? (*path ? path : "EMPTY!") : "NULL!"));
36435f5b92ffSmrg  if ((!path) || (!*path))
36445f5b92ffSmrg    return 0;
364517a48c7cSmrg
36465f5b92ffSmrg  if (stat (path, &st) >= 0)
36475f5b92ffSmrg    {
36485f5b92ffSmrg      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
36495f5b92ffSmrg    }
36505f5b92ffSmrg  return rval;
36515f5b92ffSmrg}
365217a48c7cSmrg
36535f5b92ffSmrg/* Searches for the full path of the wrapper.  Returns
36545f5b92ffSmrg   newly allocated full path name if found, NULL otherwise
36555f5b92ffSmrg   Does not chase symlinks, even on platforms that support them.
36565f5b92ffSmrg*/
36575f5b92ffSmrgchar *
36585f5b92ffSmrgfind_executable (const char *wrapper)
36595f5b92ffSmrg{
36605f5b92ffSmrg  int has_slash = 0;
36615f5b92ffSmrg  const char *p;
36625f5b92ffSmrg  const char *p_next;
36635f5b92ffSmrg  /* static buffer for getcwd */
36645f5b92ffSmrg  char tmp[LT_PATHMAX + 1];
36655f5b92ffSmrg  int tmp_len;
36665f5b92ffSmrg  char *concat_name;
366717a48c7cSmrg
36685f5b92ffSmrg  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
36695f5b92ffSmrg			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
367017a48c7cSmrg
36715f5b92ffSmrg  if ((wrapper == NULL) || (*wrapper == '\0'))
36725f5b92ffSmrg    return NULL;
367317a48c7cSmrg
36745f5b92ffSmrg  /* Absolute path? */
36755f5b92ffSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36765f5b92ffSmrg  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
36775f5b92ffSmrg    {
36785f5b92ffSmrg      concat_name = xstrdup (wrapper);
36795f5b92ffSmrg      if (check_executable (concat_name))
36805f5b92ffSmrg	return concat_name;
36815f5b92ffSmrg      XFREE (concat_name);
36825f5b92ffSmrg    }
36835f5b92ffSmrg  else
36845f5b92ffSmrg    {
36855f5b92ffSmrg#endif
36865f5b92ffSmrg      if (IS_DIR_SEPARATOR (wrapper[0]))
36875f5b92ffSmrg	{
36885f5b92ffSmrg	  concat_name = xstrdup (wrapper);
36895f5b92ffSmrg	  if (check_executable (concat_name))
36905f5b92ffSmrg	    return concat_name;
36915f5b92ffSmrg	  XFREE (concat_name);
36925f5b92ffSmrg	}
36935f5b92ffSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36945f5b92ffSmrg    }
36955f5b92ffSmrg#endif
369617a48c7cSmrg
36975f5b92ffSmrg  for (p = wrapper; *p; p++)
36985f5b92ffSmrg    if (*p == '/')
36995f5b92ffSmrg      {
37005f5b92ffSmrg	has_slash = 1;
37015f5b92ffSmrg	break;
37025f5b92ffSmrg      }
37035f5b92ffSmrg  if (!has_slash)
37045f5b92ffSmrg    {
37055f5b92ffSmrg      /* no slashes; search PATH */
37065f5b92ffSmrg      const char *path = getenv ("PATH");
37075f5b92ffSmrg      if (path != NULL)
37085f5b92ffSmrg	{
37095f5b92ffSmrg	  for (p = path; *p; p = p_next)
37105f5b92ffSmrg	    {
37115f5b92ffSmrg	      const char *q;
37125f5b92ffSmrg	      size_t p_len;
37135f5b92ffSmrg	      for (q = p; *q; q++)
37145f5b92ffSmrg		if (IS_PATH_SEPARATOR (*q))
37155f5b92ffSmrg		  break;
37165f5b92ffSmrg	      p_len = q - p;
37175f5b92ffSmrg	      p_next = (*q == '\0' ? q : q + 1);
37185f5b92ffSmrg	      if (p_len == 0)
37195f5b92ffSmrg		{
37205f5b92ffSmrg		  /* empty path: current directory */
37215f5b92ffSmrg		  if (getcwd (tmp, LT_PATHMAX) == NULL)
37225f5b92ffSmrg		    lt_fatal ("getcwd failed");
37235f5b92ffSmrg		  tmp_len = strlen (tmp);
37245f5b92ffSmrg		  concat_name =
37255f5b92ffSmrg		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
37265f5b92ffSmrg		  memcpy (concat_name, tmp, tmp_len);
37275f5b92ffSmrg		  concat_name[tmp_len] = '/';
37285f5b92ffSmrg		  strcpy (concat_name + tmp_len + 1, wrapper);
37295f5b92ffSmrg		}
37305f5b92ffSmrg	      else
37315f5b92ffSmrg		{
37325f5b92ffSmrg		  concat_name =
37335f5b92ffSmrg		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
37345f5b92ffSmrg		  memcpy (concat_name, p, p_len);
37355f5b92ffSmrg		  concat_name[p_len] = '/';
37365f5b92ffSmrg		  strcpy (concat_name + p_len + 1, wrapper);
37375f5b92ffSmrg		}
37385f5b92ffSmrg	      if (check_executable (concat_name))
37395f5b92ffSmrg		return concat_name;
37405f5b92ffSmrg	      XFREE (concat_name);
37415f5b92ffSmrg	    }
37425f5b92ffSmrg	}
37435f5b92ffSmrg      /* not found in PATH; assume curdir */
37445f5b92ffSmrg    }
37455f5b92ffSmrg  /* Relative path | not found in path: prepend cwd */
37465f5b92ffSmrg  if (getcwd (tmp, LT_PATHMAX) == NULL)
37475f5b92ffSmrg    lt_fatal ("getcwd failed");
37485f5b92ffSmrg  tmp_len = strlen (tmp);
37495f5b92ffSmrg  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
37505f5b92ffSmrg  memcpy (concat_name, tmp, tmp_len);
37515f5b92ffSmrg  concat_name[tmp_len] = '/';
37525f5b92ffSmrg  strcpy (concat_name + tmp_len + 1, wrapper);
375317a48c7cSmrg
37545f5b92ffSmrg  if (check_executable (concat_name))
37555f5b92ffSmrg    return concat_name;
37565f5b92ffSmrg  XFREE (concat_name);
37575f5b92ffSmrg  return NULL;
37585f5b92ffSmrg}
375917a48c7cSmrg
37605f5b92ffSmrgchar *
37615f5b92ffSmrgchase_symlinks (const char *pathspec)
37625f5b92ffSmrg{
37635f5b92ffSmrg#ifndef S_ISLNK
37645f5b92ffSmrg  return xstrdup (pathspec);
37655f5b92ffSmrg#else
37665f5b92ffSmrg  char buf[LT_PATHMAX];
37675f5b92ffSmrg  struct stat s;
37685f5b92ffSmrg  char *tmp_pathspec = xstrdup (pathspec);
37695f5b92ffSmrg  char *p;
37705f5b92ffSmrg  int has_symlinks = 0;
37715f5b92ffSmrg  while (strlen (tmp_pathspec) && !has_symlinks)
37725f5b92ffSmrg    {
37735f5b92ffSmrg      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
37745f5b92ffSmrg			      tmp_pathspec));
37755f5b92ffSmrg      if (lstat (tmp_pathspec, &s) == 0)
37765f5b92ffSmrg	{
37775f5b92ffSmrg	  if (S_ISLNK (s.st_mode) != 0)
37785f5b92ffSmrg	    {
37795f5b92ffSmrg	      has_symlinks = 1;
37805f5b92ffSmrg	      break;
37815f5b92ffSmrg	    }
378217a48c7cSmrg
37835f5b92ffSmrg	  /* search backwards for last DIR_SEPARATOR */
37845f5b92ffSmrg	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
37855f5b92ffSmrg	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
37865f5b92ffSmrg	    p--;
37875f5b92ffSmrg	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
37885f5b92ffSmrg	    {
37895f5b92ffSmrg	      /* no more DIR_SEPARATORS left */
37905f5b92ffSmrg	      break;
37915f5b92ffSmrg	    }
37925f5b92ffSmrg	  *p = '\0';
37935f5b92ffSmrg	}
37945f5b92ffSmrg      else
37955f5b92ffSmrg	{
37965f5b92ffSmrg	  char *errstr = strerror (errno);
37975f5b92ffSmrg	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
37985f5b92ffSmrg	}
37995f5b92ffSmrg    }
38005f5b92ffSmrg  XFREE (tmp_pathspec);
380117a48c7cSmrg
38025f5b92ffSmrg  if (!has_symlinks)
38035f5b92ffSmrg    {
38045f5b92ffSmrg      return xstrdup (pathspec);
38055f5b92ffSmrg    }
380617a48c7cSmrg
38075f5b92ffSmrg  tmp_pathspec = realpath (pathspec, buf);
38085f5b92ffSmrg  if (tmp_pathspec == 0)
38095f5b92ffSmrg    {
38105f5b92ffSmrg      lt_fatal ("Could not follow symlinks for %s", pathspec);
38115f5b92ffSmrg    }
38125f5b92ffSmrg  return xstrdup (tmp_pathspec);
38135f5b92ffSmrg#endif
38145f5b92ffSmrg}
381517a48c7cSmrg
38165f5b92ffSmrgchar *
38175f5b92ffSmrgstrendzap (char *str, const char *pat)
38185f5b92ffSmrg{
38195f5b92ffSmrg  size_t len, patlen;
382017a48c7cSmrg
38215f5b92ffSmrg  assert (str != NULL);
38225f5b92ffSmrg  assert (pat != NULL);
382317a48c7cSmrg
38245f5b92ffSmrg  len = strlen (str);
38255f5b92ffSmrg  patlen = strlen (pat);
382617a48c7cSmrg
38275f5b92ffSmrg  if (patlen <= len)
38285f5b92ffSmrg    {
38295f5b92ffSmrg      str += len - patlen;
38305f5b92ffSmrg      if (strcmp (str, pat) == 0)
38315f5b92ffSmrg	*str = '\0';
38325f5b92ffSmrg    }
38335f5b92ffSmrg  return str;
38345f5b92ffSmrg}
383517a48c7cSmrg
38365f5b92ffSmrgstatic void
38375f5b92ffSmrglt_error_core (int exit_status, const char *mode,
38385f5b92ffSmrg	       const char *message, va_list ap)
38395f5b92ffSmrg{
38405f5b92ffSmrg  fprintf (stderr, "%s: %s: ", program_name, mode);
38415f5b92ffSmrg  vfprintf (stderr, message, ap);
38425f5b92ffSmrg  fprintf (stderr, ".\n");
384317a48c7cSmrg
38445f5b92ffSmrg  if (exit_status >= 0)
38455f5b92ffSmrg    exit (exit_status);
38465f5b92ffSmrg}
384717a48c7cSmrg
38485f5b92ffSmrgvoid
38495f5b92ffSmrglt_fatal (const char *message, ...)
38505f5b92ffSmrg{
38515f5b92ffSmrg  va_list ap;
38525f5b92ffSmrg  va_start (ap, message);
38535f5b92ffSmrg  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
38545f5b92ffSmrg  va_end (ap);
38555f5b92ffSmrg}
385617a48c7cSmrg
38575f5b92ffSmrgvoid
38585f5b92ffSmrglt_setenv (const char *name, const char *value)
38595f5b92ffSmrg{
38605f5b92ffSmrg  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
38615f5b92ffSmrg                          (name ? name : "<NULL>"),
38625f5b92ffSmrg                          (value ? value : "<NULL>")));
38635f5b92ffSmrg  {
38645f5b92ffSmrg#ifdef HAVE_SETENV
38655f5b92ffSmrg    /* always make a copy, for consistency with !HAVE_SETENV */
38665f5b92ffSmrg    char *str = xstrdup (value);
38675f5b92ffSmrg    setenv (name, str, 1);
38685f5b92ffSmrg#else
38695f5b92ffSmrg    int len = strlen (name) + 1 + strlen (value) + 1;
38705f5b92ffSmrg    char *str = XMALLOC (char, len);
38715f5b92ffSmrg    sprintf (str, "%s=%s", name, value);
38725f5b92ffSmrg    if (putenv (str) != EXIT_SUCCESS)
38735f5b92ffSmrg      {
38745f5b92ffSmrg        XFREE (str);
38755f5b92ffSmrg      }
38765f5b92ffSmrg#endif
38775f5b92ffSmrg  }
38785f5b92ffSmrg}
387917a48c7cSmrg
38805f5b92ffSmrgchar *
38815f5b92ffSmrglt_extend_str (const char *orig_value, const char *add, int to_end)
38825f5b92ffSmrg{
38835f5b92ffSmrg  char *new_value;
38845f5b92ffSmrg  if (orig_value && *orig_value)
38855f5b92ffSmrg    {
38865f5b92ffSmrg      int orig_value_len = strlen (orig_value);
38875f5b92ffSmrg      int add_len = strlen (add);
38885f5b92ffSmrg      new_value = XMALLOC (char, add_len + orig_value_len + 1);
38895f5b92ffSmrg      if (to_end)
38905f5b92ffSmrg        {
38915f5b92ffSmrg          strcpy (new_value, orig_value);
38925f5b92ffSmrg          strcpy (new_value + orig_value_len, add);
38935f5b92ffSmrg        }
38945f5b92ffSmrg      else
38955f5b92ffSmrg        {
38965f5b92ffSmrg          strcpy (new_value, add);
38975f5b92ffSmrg          strcpy (new_value + add_len, orig_value);
38985f5b92ffSmrg        }
38995f5b92ffSmrg    }
39005f5b92ffSmrg  else
39015f5b92ffSmrg    {
39025f5b92ffSmrg      new_value = xstrdup (add);
39035f5b92ffSmrg    }
39045f5b92ffSmrg  return new_value;
39055f5b92ffSmrg}
390617a48c7cSmrg
39075f5b92ffSmrgint
39085f5b92ffSmrglt_split_name_value (const char *arg, char** name, char** value)
39095f5b92ffSmrg{
39105f5b92ffSmrg  const char *p;
39115f5b92ffSmrg  int len;
39125f5b92ffSmrg  if (!arg || !*arg)
39135f5b92ffSmrg    return 1;
391417a48c7cSmrg
39155f5b92ffSmrg  p = strchr (arg, (int)'=');
391617a48c7cSmrg
39175f5b92ffSmrg  if (!p)
39185f5b92ffSmrg    return 1;
391917a48c7cSmrg
39205f5b92ffSmrg  *value = xstrdup (++p);
392117a48c7cSmrg
39225f5b92ffSmrg  len = strlen (arg) - strlen (*value);
39235f5b92ffSmrg  *name = XMALLOC (char, len);
39245f5b92ffSmrg  strncpy (*name, arg, len-1);
39255f5b92ffSmrg  (*name)[len - 1] = '\0';
392617a48c7cSmrg
39275f5b92ffSmrg  return 0;
39285f5b92ffSmrg}
392917a48c7cSmrg
39305f5b92ffSmrgvoid
39315f5b92ffSmrglt_opt_process_env_set (const char *arg)
39325f5b92ffSmrg{
39335f5b92ffSmrg  char *name = NULL;
39345f5b92ffSmrg  char *value = NULL;
393517a48c7cSmrg
39365f5b92ffSmrg  if (lt_split_name_value (arg, &name, &value) != 0)
39375f5b92ffSmrg    {
39385f5b92ffSmrg      XFREE (name);
39395f5b92ffSmrg      XFREE (value);
39405f5b92ffSmrg      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
39415f5b92ffSmrg    }
394217a48c7cSmrg
39435f5b92ffSmrg  lt_setenv (name, value);
39445f5b92ffSmrg  XFREE (name);
39455f5b92ffSmrg  XFREE (value);
39465f5b92ffSmrg}
394717a48c7cSmrg
39485f5b92ffSmrgvoid
39495f5b92ffSmrglt_opt_process_env_prepend (const char *arg)
39505f5b92ffSmrg{
39515f5b92ffSmrg  char *name = NULL;
39525f5b92ffSmrg  char *value = NULL;
39535f5b92ffSmrg  char *new_value = NULL;
395417a48c7cSmrg
39555f5b92ffSmrg  if (lt_split_name_value (arg, &name, &value) != 0)
39565f5b92ffSmrg    {
39575f5b92ffSmrg      XFREE (name);
39585f5b92ffSmrg      XFREE (value);
39595f5b92ffSmrg      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
39605f5b92ffSmrg    }
396117a48c7cSmrg
39625f5b92ffSmrg  new_value = lt_extend_str (getenv (name), value, 0);
39635f5b92ffSmrg  lt_setenv (name, new_value);
39645f5b92ffSmrg  XFREE (new_value);
39655f5b92ffSmrg  XFREE (name);
39665f5b92ffSmrg  XFREE (value);
39675f5b92ffSmrg}
396817a48c7cSmrg
39695f5b92ffSmrgvoid
39705f5b92ffSmrglt_opt_process_env_append (const char *arg)
39715f5b92ffSmrg{
39725f5b92ffSmrg  char *name = NULL;
39735f5b92ffSmrg  char *value = NULL;
39745f5b92ffSmrg  char *new_value = NULL;
397517a48c7cSmrg
39765f5b92ffSmrg  if (lt_split_name_value (arg, &name, &value) != 0)
39775f5b92ffSmrg    {
39785f5b92ffSmrg      XFREE (name);
39795f5b92ffSmrg      XFREE (value);
39805f5b92ffSmrg      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
39815f5b92ffSmrg    }
398217a48c7cSmrg
39835f5b92ffSmrg  new_value = lt_extend_str (getenv (name), value, 1);
39845f5b92ffSmrg  lt_setenv (name, new_value);
39855f5b92ffSmrg  XFREE (new_value);
39865f5b92ffSmrg  XFREE (name);
39875f5b92ffSmrg  XFREE (value);
39885f5b92ffSmrg}
398917a48c7cSmrg
39905f5b92ffSmrgvoid
39915f5b92ffSmrglt_update_exe_path (const char *name, const char *value)
39925f5b92ffSmrg{
39935f5b92ffSmrg  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
39945f5b92ffSmrg                          (name ? name : "<NULL>"),
39955f5b92ffSmrg                          (value ? value : "<NULL>")));
399617a48c7cSmrg
39975f5b92ffSmrg  if (name && *name && value && *value)
39985f5b92ffSmrg    {
39995f5b92ffSmrg      char *new_value = lt_extend_str (getenv (name), value, 0);
40005f5b92ffSmrg      /* some systems can't cope with a ':'-terminated path #' */
40015f5b92ffSmrg      int len = strlen (new_value);
40025f5b92ffSmrg      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
40035f5b92ffSmrg        {
40045f5b92ffSmrg          new_value[len-1] = '\0';
40055f5b92ffSmrg        }
40065f5b92ffSmrg      lt_setenv (name, new_value);
40075f5b92ffSmrg      XFREE (new_value);
40085f5b92ffSmrg    }
40095f5b92ffSmrg}
401017a48c7cSmrg
40115f5b92ffSmrgvoid
40125f5b92ffSmrglt_update_lib_path (const char *name, const char *value)
40135f5b92ffSmrg{
40145f5b92ffSmrg  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
40155f5b92ffSmrg                          (name ? name : "<NULL>"),
40165f5b92ffSmrg                          (value ? value : "<NULL>")));
401717a48c7cSmrg
40185f5b92ffSmrg  if (name && *name && value && *value)
40195f5b92ffSmrg    {
40205f5b92ffSmrg      char *new_value = lt_extend_str (getenv (name), value, 0);
40215f5b92ffSmrg      lt_setenv (name, new_value);
40225f5b92ffSmrg      XFREE (new_value);
40235f5b92ffSmrg    }
40245f5b92ffSmrg}
402517a48c7cSmrg
402617a48c7cSmrg
40275f5b92ffSmrgEOF
40285f5b92ffSmrg}
40295f5b92ffSmrg# end: func_emit_cwrapperexe_src
403017a48c7cSmrg
40315f5b92ffSmrg# func_mode_link arg...
40325f5b92ffSmrgfunc_mode_link ()
40335f5b92ffSmrg{
40345f5b92ffSmrg    $opt_debug
40355f5b92ffSmrg    case $host in
40365f5b92ffSmrg    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
40375f5b92ffSmrg      # It is impossible to link a dll without this setting, and
40385f5b92ffSmrg      # we shouldn't force the makefile maintainer to figure out
40395f5b92ffSmrg      # which system we are compiling for in order to pass an extra
40405f5b92ffSmrg      # flag for every libtool invocation.
40415f5b92ffSmrg      # allow_undefined=no
404217a48c7cSmrg
40435f5b92ffSmrg      # FIXME: Unfortunately, there are problems with the above when trying
40445f5b92ffSmrg      # to make a dll which has undefined symbols, in which case not
40455f5b92ffSmrg      # even a static library is built.  For now, we need to specify
40465f5b92ffSmrg      # -no-undefined on the libtool link line when we can be certain
40475f5b92ffSmrg      # that all symbols are satisfied, otherwise we get a static library.
40485f5b92ffSmrg      allow_undefined=yes
40495f5b92ffSmrg      ;;
40505f5b92ffSmrg    *)
40515f5b92ffSmrg      allow_undefined=yes
40525f5b92ffSmrg      ;;
40535f5b92ffSmrg    esac
40545f5b92ffSmrg    libtool_args=$nonopt
40555f5b92ffSmrg    base_compile="$nonopt $@"
40565f5b92ffSmrg    compile_command=$nonopt
40575f5b92ffSmrg    finalize_command=$nonopt
405817a48c7cSmrg
40595f5b92ffSmrg    compile_rpath=
40605f5b92ffSmrg    finalize_rpath=
40615f5b92ffSmrg    compile_shlibpath=
40625f5b92ffSmrg    finalize_shlibpath=
40635f5b92ffSmrg    convenience=
40645f5b92ffSmrg    old_convenience=
40655f5b92ffSmrg    deplibs=
40665f5b92ffSmrg    old_deplibs=
40675f5b92ffSmrg    compiler_flags=
40685f5b92ffSmrg    linker_flags=
40695f5b92ffSmrg    dllsearchpath=
40705f5b92ffSmrg    lib_search_path=`pwd`
40715f5b92ffSmrg    inst_prefix_dir=
40725f5b92ffSmrg    new_inherited_linker_flags=
407317a48c7cSmrg
40745f5b92ffSmrg    avoid_version=no
40755f5b92ffSmrg    dlfiles=
40765f5b92ffSmrg    dlprefiles=
40775f5b92ffSmrg    dlself=no
40785f5b92ffSmrg    export_dynamic=no
40795f5b92ffSmrg    export_symbols=
40805f5b92ffSmrg    export_symbols_regex=
40815f5b92ffSmrg    generated=
40825f5b92ffSmrg    libobjs=
40835f5b92ffSmrg    ltlibs=
40845f5b92ffSmrg    module=no
40855f5b92ffSmrg    no_install=no
40865f5b92ffSmrg    objs=
40875f5b92ffSmrg    non_pic_objects=
40885f5b92ffSmrg    precious_files_regex=
40895f5b92ffSmrg    prefer_static_libs=no
40905f5b92ffSmrg    preload=no
40915f5b92ffSmrg    prev=
40925f5b92ffSmrg    prevarg=
40935f5b92ffSmrg    release=
40945f5b92ffSmrg    rpath=
40955f5b92ffSmrg    xrpath=
40965f5b92ffSmrg    perm_rpath=
40975f5b92ffSmrg    temp_rpath=
40985f5b92ffSmrg    thread_safe=no
40995f5b92ffSmrg    vinfo=
41005f5b92ffSmrg    vinfo_number=no
41015f5b92ffSmrg    weak_libs=
41025f5b92ffSmrg    single_module="${wl}-single_module"
41035f5b92ffSmrg    func_infer_tag $base_compile
41045f5b92ffSmrg
41055f5b92ffSmrg    # We need to know -static, to get the right output filenames.
41065f5b92ffSmrg    for arg
41075f5b92ffSmrg    do
41085f5b92ffSmrg      case $arg in
41095f5b92ffSmrg      -shared)
41105f5b92ffSmrg	test "$build_libtool_libs" != yes && \
41115f5b92ffSmrg	  func_fatal_configuration "can not build a shared library"
41125f5b92ffSmrg	build_old_libs=no
41135f5b92ffSmrg	break
41145f5b92ffSmrg	;;
41155f5b92ffSmrg      -all-static | -static | -static-libtool-libs)
41165f5b92ffSmrg	case $arg in
41175f5b92ffSmrg	-all-static)
41185f5b92ffSmrg	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
41195f5b92ffSmrg	    func_warning "complete static linking is impossible in this configuration"
41205f5b92ffSmrg	  fi
41215f5b92ffSmrg	  if test -n "$link_static_flag"; then
41225f5b92ffSmrg	    dlopen_self=$dlopen_self_static
41235f5b92ffSmrg	  fi
41245f5b92ffSmrg	  prefer_static_libs=yes
41255f5b92ffSmrg	  ;;
41265f5b92ffSmrg	-static)
41275f5b92ffSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
41285f5b92ffSmrg	    dlopen_self=$dlopen_self_static
41295f5b92ffSmrg	  fi
41305f5b92ffSmrg	  prefer_static_libs=built
41315f5b92ffSmrg	  ;;
41325f5b92ffSmrg	-static-libtool-libs)
41335f5b92ffSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
41345f5b92ffSmrg	    dlopen_self=$dlopen_self_static
413517a48c7cSmrg	  fi
41365f5b92ffSmrg	  prefer_static_libs=yes
41375f5b92ffSmrg	  ;;
41385f5b92ffSmrg	esac
41395f5b92ffSmrg	build_libtool_libs=no
41405f5b92ffSmrg	build_old_libs=yes
41415f5b92ffSmrg	break
41425f5b92ffSmrg	;;
41435f5b92ffSmrg      esac
41445f5b92ffSmrg    done
414517a48c7cSmrg
41465f5b92ffSmrg    # See if our shared archives depend on static archives.
41475f5b92ffSmrg    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
414817a48c7cSmrg
41495f5b92ffSmrg    # Go through the arguments, transforming them on the way.
41505f5b92ffSmrg    while test "$#" -gt 0; do
41515f5b92ffSmrg      arg="$1"
41525f5b92ffSmrg      shift
41535f5b92ffSmrg      func_quote_for_eval "$arg"
41545f5b92ffSmrg      qarg=$func_quote_for_eval_unquoted_result
41555f5b92ffSmrg      func_append libtool_args " $func_quote_for_eval_result"
415617a48c7cSmrg
41575f5b92ffSmrg      # If the previous option needs an argument, assign it.
41585f5b92ffSmrg      if test -n "$prev"; then
41595f5b92ffSmrg	case $prev in
41605f5b92ffSmrg	output)
41615f5b92ffSmrg	  func_append compile_command " @OUTPUT@"
41625f5b92ffSmrg	  func_append finalize_command " @OUTPUT@"
41635f5b92ffSmrg	  ;;
41645f5b92ffSmrg	esac
416517a48c7cSmrg
41665f5b92ffSmrg	case $prev in
41675f5b92ffSmrg	dlfiles|dlprefiles)
41685f5b92ffSmrg	  if test "$preload" = no; then
41695f5b92ffSmrg	    # Add the symbol object into the linking commands.
41705f5b92ffSmrg	    func_append compile_command " @SYMFILE@"
41715f5b92ffSmrg	    func_append finalize_command " @SYMFILE@"
41725f5b92ffSmrg	    preload=yes
41735f5b92ffSmrg	  fi
41745f5b92ffSmrg	  case $arg in
41755f5b92ffSmrg	  *.la | *.lo) ;;  # We handle these cases below.
41765f5b92ffSmrg	  force)
41775f5b92ffSmrg	    if test "$dlself" = no; then
41785f5b92ffSmrg	      dlself=needless
41795f5b92ffSmrg	      export_dynamic=yes
41805f5b92ffSmrg	    fi
41815f5b92ffSmrg	    prev=
41825f5b92ffSmrg	    continue
41835f5b92ffSmrg	    ;;
41845f5b92ffSmrg	  self)
41855f5b92ffSmrg	    if test "$prev" = dlprefiles; then
41865f5b92ffSmrg	      dlself=yes
41875f5b92ffSmrg	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
41885f5b92ffSmrg	      dlself=yes
418917a48c7cSmrg	    else
41905f5b92ffSmrg	      dlself=needless
41915f5b92ffSmrg	      export_dynamic=yes
419217a48c7cSmrg	    fi
41935f5b92ffSmrg	    prev=
41945f5b92ffSmrg	    continue
41955f5b92ffSmrg	    ;;
41965f5b92ffSmrg	  *)
41975f5b92ffSmrg	    if test "$prev" = dlfiles; then
41985f5b92ffSmrg	      dlfiles="$dlfiles $arg"
419917a48c7cSmrg	    else
42005f5b92ffSmrg	      dlprefiles="$dlprefiles $arg"
420117a48c7cSmrg	    fi
42025f5b92ffSmrg	    prev=
42035f5b92ffSmrg	    continue
42045f5b92ffSmrg	    ;;
42055f5b92ffSmrg	  esac
42065f5b92ffSmrg	  ;;
42075f5b92ffSmrg	expsyms)
42085f5b92ffSmrg	  export_symbols="$arg"
42095f5b92ffSmrg	  test -f "$arg" \
42105f5b92ffSmrg	    || func_fatal_error "symbol file \`$arg' does not exist"
42115f5b92ffSmrg	  prev=
42125f5b92ffSmrg	  continue
42135f5b92ffSmrg	  ;;
42145f5b92ffSmrg	expsyms_regex)
42155f5b92ffSmrg	  export_symbols_regex="$arg"
42165f5b92ffSmrg	  prev=
42175f5b92ffSmrg	  continue
42185f5b92ffSmrg	  ;;
42195f5b92ffSmrg	framework)
422017a48c7cSmrg	  case $host in
42215f5b92ffSmrg	    *-*-darwin*)
42225f5b92ffSmrg	      case "$deplibs " in
42235f5b92ffSmrg		*" $qarg.ltframework "*) ;;
42245f5b92ffSmrg		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
42255f5b92ffSmrg		   ;;
42265f5b92ffSmrg	      esac
42275f5b92ffSmrg	      ;;
422817a48c7cSmrg	  esac
42295f5b92ffSmrg	  prev=
42305f5b92ffSmrg	  continue
423117a48c7cSmrg	  ;;
42325f5b92ffSmrg	inst_prefix)
42335f5b92ffSmrg	  inst_prefix_dir="$arg"
42345f5b92ffSmrg	  prev=
42355f5b92ffSmrg	  continue
423617a48c7cSmrg	  ;;
42375f5b92ffSmrg	objectlist)
42385f5b92ffSmrg	  if test -f "$arg"; then
42395f5b92ffSmrg	    save_arg=$arg
42405f5b92ffSmrg	    moreargs=
42415f5b92ffSmrg	    for fil in `cat "$save_arg"`
42425f5b92ffSmrg	    do
42435f5b92ffSmrg#	      moreargs="$moreargs $fil"
42445f5b92ffSmrg	      arg=$fil
42455f5b92ffSmrg	      # A libtool-controlled object.
424617a48c7cSmrg
42475f5b92ffSmrg	      # Check to see that this really is a libtool object.
42485f5b92ffSmrg	      if func_lalib_unsafe_p "$arg"; then
42495f5b92ffSmrg		pic_object=
42505f5b92ffSmrg		non_pic_object=
425117a48c7cSmrg
42525f5b92ffSmrg		# Read the .lo file
42535f5b92ffSmrg		func_source "$arg"
425417a48c7cSmrg
42555f5b92ffSmrg		if test -z "$pic_object" ||
42565f5b92ffSmrg		   test -z "$non_pic_object" ||
42575f5b92ffSmrg		   test "$pic_object" = none &&
42585f5b92ffSmrg		   test "$non_pic_object" = none; then
42595f5b92ffSmrg		  func_fatal_error "cannot find name of object for \`$arg'"
42605f5b92ffSmrg		fi
426117a48c7cSmrg
42625f5b92ffSmrg		# Extract subdirectory from the argument.
42635f5b92ffSmrg		func_dirname "$arg" "/" ""
42645f5b92ffSmrg		xdir="$func_dirname_result"
426517a48c7cSmrg
42665f5b92ffSmrg		if test "$pic_object" != none; then
42675f5b92ffSmrg		  # Prepend the subdirectory the object is found in.
42685f5b92ffSmrg		  pic_object="$xdir$pic_object"
426917a48c7cSmrg
42705f5b92ffSmrg		  if test "$prev" = dlfiles; then
42715f5b92ffSmrg		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
42725f5b92ffSmrg		      dlfiles="$dlfiles $pic_object"
42735f5b92ffSmrg		      prev=
42745f5b92ffSmrg		      continue
42755f5b92ffSmrg		    else
42765f5b92ffSmrg		      # If libtool objects are unsupported, then we need to preload.
42775f5b92ffSmrg		      prev=dlprefiles
42785f5b92ffSmrg		    fi
42795f5b92ffSmrg		  fi
428017a48c7cSmrg
42815f5b92ffSmrg		  # CHECK ME:  I think I busted this.  -Ossama
42825f5b92ffSmrg		  if test "$prev" = dlprefiles; then
42835f5b92ffSmrg		    # Preload the old-style object.
42845f5b92ffSmrg		    dlprefiles="$dlprefiles $pic_object"
42855f5b92ffSmrg		    prev=
42865f5b92ffSmrg		  fi
428717a48c7cSmrg
42885f5b92ffSmrg		  # A PIC object.
42895f5b92ffSmrg		  func_append libobjs " $pic_object"
42905f5b92ffSmrg		  arg="$pic_object"
42915f5b92ffSmrg		fi
429217a48c7cSmrg
42935f5b92ffSmrg		# Non-PIC object.
42945f5b92ffSmrg		if test "$non_pic_object" != none; then
42955f5b92ffSmrg		  # Prepend the subdirectory the object is found in.
42965f5b92ffSmrg		  non_pic_object="$xdir$non_pic_object"
429717a48c7cSmrg
42985f5b92ffSmrg		  # A standard non-PIC object
42995f5b92ffSmrg		  func_append non_pic_objects " $non_pic_object"
43005f5b92ffSmrg		  if test -z "$pic_object" || test "$pic_object" = none ; then
43015f5b92ffSmrg		    arg="$non_pic_object"
43025f5b92ffSmrg		  fi
43035f5b92ffSmrg		else
43045f5b92ffSmrg		  # If the PIC object exists, use it instead.
43055f5b92ffSmrg		  # $xdir was prepended to $pic_object above.
43065f5b92ffSmrg		  non_pic_object="$pic_object"
43075f5b92ffSmrg		  func_append non_pic_objects " $non_pic_object"
43085f5b92ffSmrg		fi
43095f5b92ffSmrg	      else
43105f5b92ffSmrg		# Only an error if not doing a dry-run.
43115f5b92ffSmrg		if $opt_dry_run; then
43125f5b92ffSmrg		  # Extract subdirectory from the argument.
43135f5b92ffSmrg		  func_dirname "$arg" "/" ""
43145f5b92ffSmrg		  xdir="$func_dirname_result"
43155f5b92ffSmrg
43165f5b92ffSmrg		  func_lo2o "$arg"
43175f5b92ffSmrg		  pic_object=$xdir$objdir/$func_lo2o_result
43185f5b92ffSmrg		  non_pic_object=$xdir$func_lo2o_result
43195f5b92ffSmrg		  func_append libobjs " $pic_object"
43205f5b92ffSmrg		  func_append non_pic_objects " $non_pic_object"
43215f5b92ffSmrg	        else
43225f5b92ffSmrg		  func_fatal_error "\`$arg' is not a valid libtool object"
43235f5b92ffSmrg		fi
43245f5b92ffSmrg	      fi
43255f5b92ffSmrg	    done
432617a48c7cSmrg	  else
43275f5b92ffSmrg	    func_fatal_error "link input file \`$arg' does not exist"
432817a48c7cSmrg	  fi
43295f5b92ffSmrg	  arg=$save_arg
43305f5b92ffSmrg	  prev=
43315f5b92ffSmrg	  continue
43325f5b92ffSmrg	  ;;
43335f5b92ffSmrg	precious_regex)
43345f5b92ffSmrg	  precious_files_regex="$arg"
43355f5b92ffSmrg	  prev=
43365f5b92ffSmrg	  continue
43375f5b92ffSmrg	  ;;
43385f5b92ffSmrg	release)
43395f5b92ffSmrg	  release="-$arg"
43405f5b92ffSmrg	  prev=
43415f5b92ffSmrg	  continue
43425f5b92ffSmrg	  ;;
43435f5b92ffSmrg	rpath | xrpath)
43445f5b92ffSmrg	  # We need an absolute path.
43455f5b92ffSmrg	  case $arg in
43465f5b92ffSmrg	  [\\/]* | [A-Za-z]:[\\/]*) ;;
43475f5b92ffSmrg	  *)
43485f5b92ffSmrg	    func_fatal_error "only absolute run-paths are allowed"
43495f5b92ffSmrg	    ;;
43505f5b92ffSmrg	  esac
43515f5b92ffSmrg	  if test "$prev" = rpath; then
43525f5b92ffSmrg	    case "$rpath " in
43535f5b92ffSmrg	    *" $arg "*) ;;
43545f5b92ffSmrg	    *) rpath="$rpath $arg" ;;
43555f5b92ffSmrg	    esac
435617a48c7cSmrg	  else
43575f5b92ffSmrg	    case "$xrpath " in
43585f5b92ffSmrg	    *" $arg "*) ;;
43595f5b92ffSmrg	    *) xrpath="$xrpath $arg" ;;
43605f5b92ffSmrg	    esac
436117a48c7cSmrg	  fi
43625f5b92ffSmrg	  prev=
43635f5b92ffSmrg	  continue
43645f5b92ffSmrg	  ;;
43655f5b92ffSmrg	shrext)
43665f5b92ffSmrg	  shrext_cmds="$arg"
43675f5b92ffSmrg	  prev=
43685f5b92ffSmrg	  continue
43695f5b92ffSmrg	  ;;
43705f5b92ffSmrg	weak)
43715f5b92ffSmrg	  weak_libs="$weak_libs $arg"
43725f5b92ffSmrg	  prev=
43735f5b92ffSmrg	  continue
43745f5b92ffSmrg	  ;;
43755f5b92ffSmrg	xcclinker)
43765f5b92ffSmrg	  linker_flags="$linker_flags $qarg"
43775f5b92ffSmrg	  compiler_flags="$compiler_flags $qarg"
43785f5b92ffSmrg	  prev=
43795f5b92ffSmrg	  func_append compile_command " $qarg"
43805f5b92ffSmrg	  func_append finalize_command " $qarg"
43815f5b92ffSmrg	  continue
43825f5b92ffSmrg	  ;;
43835f5b92ffSmrg	xcompiler)
43845f5b92ffSmrg	  compiler_flags="$compiler_flags $qarg"
43855f5b92ffSmrg	  prev=
43865f5b92ffSmrg	  func_append compile_command " $qarg"
43875f5b92ffSmrg	  func_append finalize_command " $qarg"
43885f5b92ffSmrg	  continue
43895f5b92ffSmrg	  ;;
43905f5b92ffSmrg	xlinker)
43915f5b92ffSmrg	  linker_flags="$linker_flags $qarg"
43925f5b92ffSmrg	  compiler_flags="$compiler_flags $wl$qarg"
43935f5b92ffSmrg	  prev=
43945f5b92ffSmrg	  func_append compile_command " $wl$qarg"
43955f5b92ffSmrg	  func_append finalize_command " $wl$qarg"
43965f5b92ffSmrg	  continue
43975f5b92ffSmrg	  ;;
43985f5b92ffSmrg	*)
43995f5b92ffSmrg	  eval "$prev=\"\$arg\""
44005f5b92ffSmrg	  prev=
44015f5b92ffSmrg	  continue
44025f5b92ffSmrg	  ;;
440317a48c7cSmrg	esac
44045f5b92ffSmrg      fi # test -n "$prev"
440517a48c7cSmrg
44065f5b92ffSmrg      prevarg="$arg"
440717a48c7cSmrg
44085f5b92ffSmrg      case $arg in
44095f5b92ffSmrg      -all-static)
44105f5b92ffSmrg	if test -n "$link_static_flag"; then
44115f5b92ffSmrg	  # See comment for -static flag below, for more details.
44125f5b92ffSmrg	  func_append compile_command " $link_static_flag"
44135f5b92ffSmrg	  func_append finalize_command " $link_static_flag"
44145f5b92ffSmrg	fi
44155f5b92ffSmrg	continue
44165f5b92ffSmrg	;;
441717a48c7cSmrg
44185f5b92ffSmrg      -allow-undefined)
44195f5b92ffSmrg	# FIXME: remove this flag sometime in the future.
44205f5b92ffSmrg	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
44215f5b92ffSmrg	;;
442217a48c7cSmrg
44235f5b92ffSmrg      -avoid-version)
44245f5b92ffSmrg	avoid_version=yes
44255f5b92ffSmrg	continue
44265f5b92ffSmrg	;;
442717a48c7cSmrg
44285f5b92ffSmrg      -dlopen)
44295f5b92ffSmrg	prev=dlfiles
44305f5b92ffSmrg	continue
44315f5b92ffSmrg	;;
443217a48c7cSmrg
44335f5b92ffSmrg      -dlpreopen)
44345f5b92ffSmrg	prev=dlprefiles
44355f5b92ffSmrg	continue
44365f5b92ffSmrg	;;
443717a48c7cSmrg
44385f5b92ffSmrg      -export-dynamic)
44395f5b92ffSmrg	export_dynamic=yes
44405f5b92ffSmrg	continue
44415f5b92ffSmrg	;;
444217a48c7cSmrg
44435f5b92ffSmrg      -export-symbols | -export-symbols-regex)
44445f5b92ffSmrg	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
44455f5b92ffSmrg	  func_fatal_error "more than one -exported-symbols argument is not allowed"
44465f5b92ffSmrg	fi
44475f5b92ffSmrg	if test "X$arg" = "X-export-symbols"; then
44485f5b92ffSmrg	  prev=expsyms
44495f5b92ffSmrg	else
44505f5b92ffSmrg	  prev=expsyms_regex
44515f5b92ffSmrg	fi
44525f5b92ffSmrg	continue
44535f5b92ffSmrg	;;
445417a48c7cSmrg
44555f5b92ffSmrg      -framework)
44565f5b92ffSmrg	prev=framework
44575f5b92ffSmrg	continue
44585f5b92ffSmrg	;;
445917a48c7cSmrg
44605f5b92ffSmrg      -inst-prefix-dir)
44615f5b92ffSmrg	prev=inst_prefix
44625f5b92ffSmrg	continue
44635f5b92ffSmrg	;;
446417a48c7cSmrg
44655f5b92ffSmrg      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
44665f5b92ffSmrg      # so, if we see these flags be careful not to treat them like -L
44675f5b92ffSmrg      -L[A-Z][A-Z]*:*)
44685f5b92ffSmrg	case $with_gcc/$host in
44695f5b92ffSmrg	no/*-*-irix* | /*-*-irix*)
44705f5b92ffSmrg	  func_append compile_command " $arg"
44715f5b92ffSmrg	  func_append finalize_command " $arg"
44725f5b92ffSmrg	  ;;
44735f5b92ffSmrg	esac
44745f5b92ffSmrg	continue
44755f5b92ffSmrg	;;
447617a48c7cSmrg
44775f5b92ffSmrg      -L*)
44785f5b92ffSmrg	func_stripname '-L' '' "$arg"
44795f5b92ffSmrg	dir=$func_stripname_result
44805f5b92ffSmrg	if test -z "$dir"; then
44815f5b92ffSmrg	  if test "$#" -gt 0; then
44825f5b92ffSmrg	    func_fatal_error "require no space between \`-L' and \`$1'"
44835f5b92ffSmrg	  else
44845f5b92ffSmrg	    func_fatal_error "need path for \`-L' option"
44855f5b92ffSmrg	  fi
44865f5b92ffSmrg	fi
44875f5b92ffSmrg	# We need an absolute path.
44885f5b92ffSmrg	case $dir in
44895f5b92ffSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
44905f5b92ffSmrg	*)
44915f5b92ffSmrg	  absdir=`cd "$dir" && pwd`
44925f5b92ffSmrg	  test -z "$absdir" && \
44935f5b92ffSmrg	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
44945f5b92ffSmrg	  dir="$absdir"
44955f5b92ffSmrg	  ;;
44965f5b92ffSmrg	esac
44975f5b92ffSmrg	case "$deplibs " in
44985f5b92ffSmrg	*" -L$dir "*) ;;
44995f5b92ffSmrg	*)
45005f5b92ffSmrg	  deplibs="$deplibs -L$dir"
45015f5b92ffSmrg	  lib_search_path="$lib_search_path $dir"
45025f5b92ffSmrg	  ;;
45035f5b92ffSmrg	esac
45045f5b92ffSmrg	case $host in
45055f5b92ffSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
45065f5b92ffSmrg	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
45075f5b92ffSmrg	  case :$dllsearchpath: in
45085f5b92ffSmrg	  *":$dir:"*) ;;
45095f5b92ffSmrg	  ::) dllsearchpath=$dir;;
45105f5b92ffSmrg	  *) dllsearchpath="$dllsearchpath:$dir";;
45115f5b92ffSmrg	  esac
45125f5b92ffSmrg	  case :$dllsearchpath: in
45135f5b92ffSmrg	  *":$testbindir:"*) ;;
45145f5b92ffSmrg	  ::) dllsearchpath=$testbindir;;
45155f5b92ffSmrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
45165f5b92ffSmrg	  esac
45175f5b92ffSmrg	  ;;
45185f5b92ffSmrg	esac
45195f5b92ffSmrg	continue
45205f5b92ffSmrg	;;
452117a48c7cSmrg
45225f5b92ffSmrg      -l*)
45235f5b92ffSmrg	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
45245f5b92ffSmrg	  case $host in
45255f5b92ffSmrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
45265f5b92ffSmrg	    # These systems don't actually have a C or math library (as such)
45275f5b92ffSmrg	    continue
45285f5b92ffSmrg	    ;;
45295f5b92ffSmrg	  *-*-os2*)
45305f5b92ffSmrg	    # These systems don't actually have a C library (as such)
45315f5b92ffSmrg	    test "X$arg" = "X-lc" && continue
45325f5b92ffSmrg	    ;;
45335f5b92ffSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
45345f5b92ffSmrg	    # Do not include libc due to us having libc/libc_r.
45355f5b92ffSmrg	    test "X$arg" = "X-lc" && continue
45365f5b92ffSmrg	    ;;
45375f5b92ffSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
45385f5b92ffSmrg	    # Rhapsody C and math libraries are in the System framework
45395f5b92ffSmrg	    deplibs="$deplibs System.ltframework"
45405f5b92ffSmrg	    continue
45415f5b92ffSmrg	    ;;
45425f5b92ffSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
45435f5b92ffSmrg	    # Causes problems with __ctype
45445f5b92ffSmrg	    test "X$arg" = "X-lc" && continue
45455f5b92ffSmrg	    ;;
45465f5b92ffSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
45475f5b92ffSmrg	    # Compiler inserts libc in the correct place for threads to work
45485f5b92ffSmrg	    test "X$arg" = "X-lc" && continue
45495f5b92ffSmrg	    ;;
45505f5b92ffSmrg	  esac
45515f5b92ffSmrg	elif test "X$arg" = "X-lc_r"; then
45525f5b92ffSmrg	 case $host in
45535f5b92ffSmrg	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
45545f5b92ffSmrg	   # Do not include libc_r directly, use -pthread flag.
45555f5b92ffSmrg	   continue
45565f5b92ffSmrg	   ;;
45575f5b92ffSmrg	 esac
45585f5b92ffSmrg	fi
45595f5b92ffSmrg	deplibs="$deplibs $arg"
45605f5b92ffSmrg	continue
45615f5b92ffSmrg	;;
456217a48c7cSmrg
45635f5b92ffSmrg      -module)
45645f5b92ffSmrg	module=yes
45655f5b92ffSmrg	continue
45665f5b92ffSmrg	;;
456717a48c7cSmrg
45685f5b92ffSmrg      # Tru64 UNIX uses -model [arg] to determine the layout of C++
45695f5b92ffSmrg      # classes, name mangling, and exception handling.
45705f5b92ffSmrg      # Darwin uses the -arch flag to determine output architecture.
45715f5b92ffSmrg      -model|-arch|-isysroot)
45725f5b92ffSmrg	compiler_flags="$compiler_flags $arg"
45735f5b92ffSmrg	func_append compile_command " $arg"
45745f5b92ffSmrg	func_append finalize_command " $arg"
45755f5b92ffSmrg	prev=xcompiler
45765f5b92ffSmrg	continue
45775f5b92ffSmrg	;;
457817a48c7cSmrg
45795f5b92ffSmrg      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
45805f5b92ffSmrg	compiler_flags="$compiler_flags $arg"
45815f5b92ffSmrg	func_append compile_command " $arg"
45825f5b92ffSmrg	func_append finalize_command " $arg"
45835f5b92ffSmrg	case "$new_inherited_linker_flags " in
45845f5b92ffSmrg	    *" $arg "*) ;;
45855f5b92ffSmrg	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
45865f5b92ffSmrg	esac
45875f5b92ffSmrg	continue
45885f5b92ffSmrg	;;
458917a48c7cSmrg
45905f5b92ffSmrg      -multi_module)
45915f5b92ffSmrg	single_module="${wl}-multi_module"
45925f5b92ffSmrg	continue
45935f5b92ffSmrg	;;
459417a48c7cSmrg
45955f5b92ffSmrg      -no-fast-install)
45965f5b92ffSmrg	fast_install=no
45975f5b92ffSmrg	continue
45985f5b92ffSmrg	;;
459917a48c7cSmrg
46005f5b92ffSmrg      -no-install)
46015f5b92ffSmrg	case $host in
46025f5b92ffSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
46035f5b92ffSmrg	  # The PATH hackery in wrapper scripts is required on Windows
46045f5b92ffSmrg	  # and Darwin in order for the loader to find any dlls it needs.
46055f5b92ffSmrg	  func_warning "\`-no-install' is ignored for $host"
46065f5b92ffSmrg	  func_warning "assuming \`-no-fast-install' instead"
46075f5b92ffSmrg	  fast_install=no
46085f5b92ffSmrg	  ;;
46095f5b92ffSmrg	*) no_install=yes ;;
46105f5b92ffSmrg	esac
46115f5b92ffSmrg	continue
46125f5b92ffSmrg	;;
461317a48c7cSmrg
46145f5b92ffSmrg      -no-undefined)
46155f5b92ffSmrg	allow_undefined=no
46165f5b92ffSmrg	continue
46175f5b92ffSmrg	;;
461817a48c7cSmrg
46195f5b92ffSmrg      -objectlist)
46205f5b92ffSmrg	prev=objectlist
46215f5b92ffSmrg	continue
46225f5b92ffSmrg	;;
462317a48c7cSmrg
46245f5b92ffSmrg      -o) prev=output ;;
462517a48c7cSmrg
46265f5b92ffSmrg      -precious-files-regex)
46275f5b92ffSmrg	prev=precious_regex
46285f5b92ffSmrg	continue
46295f5b92ffSmrg	;;
463017a48c7cSmrg
46315f5b92ffSmrg      -release)
46325f5b92ffSmrg	prev=release
46335f5b92ffSmrg	continue
46345f5b92ffSmrg	;;
463517a48c7cSmrg
46365f5b92ffSmrg      -rpath)
46375f5b92ffSmrg	prev=rpath
46385f5b92ffSmrg	continue
46395f5b92ffSmrg	;;
464017a48c7cSmrg
46415f5b92ffSmrg      -R)
46425f5b92ffSmrg	prev=xrpath
46435f5b92ffSmrg	continue
46445f5b92ffSmrg	;;
464517a48c7cSmrg
46465f5b92ffSmrg      -R*)
46475f5b92ffSmrg	func_stripname '-R' '' "$arg"
46485f5b92ffSmrg	dir=$func_stripname_result
46495f5b92ffSmrg	# We need an absolute path.
46505f5b92ffSmrg	case $dir in
46515f5b92ffSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
46525f5b92ffSmrg	*)
46535f5b92ffSmrg	  func_fatal_error "only absolute run-paths are allowed"
46545f5b92ffSmrg	  ;;
46555f5b92ffSmrg	esac
46565f5b92ffSmrg	case "$xrpath " in
46575f5b92ffSmrg	*" $dir "*) ;;
46585f5b92ffSmrg	*) xrpath="$xrpath $dir" ;;
46595f5b92ffSmrg	esac
46605f5b92ffSmrg	continue
46615f5b92ffSmrg	;;
466217a48c7cSmrg
46635f5b92ffSmrg      -shared)
46645f5b92ffSmrg	# The effects of -shared are defined in a previous loop.
46655f5b92ffSmrg	continue
46665f5b92ffSmrg	;;
466717a48c7cSmrg
46685f5b92ffSmrg      -shrext)
46695f5b92ffSmrg	prev=shrext
46705f5b92ffSmrg	continue
46715f5b92ffSmrg	;;
467217a48c7cSmrg
46735f5b92ffSmrg      -static | -static-libtool-libs)
46745f5b92ffSmrg	# The effects of -static are defined in a previous loop.
46755f5b92ffSmrg	# We used to do the same as -all-static on platforms that
46765f5b92ffSmrg	# didn't have a PIC flag, but the assumption that the effects
46775f5b92ffSmrg	# would be equivalent was wrong.  It would break on at least
46785f5b92ffSmrg	# Digital Unix and AIX.
46795f5b92ffSmrg	continue
46805f5b92ffSmrg	;;
468117a48c7cSmrg
46825f5b92ffSmrg      -thread-safe)
46835f5b92ffSmrg	thread_safe=yes
46845f5b92ffSmrg	continue
46855f5b92ffSmrg	;;
468617a48c7cSmrg
46875f5b92ffSmrg      -version-info)
46885f5b92ffSmrg	prev=vinfo
46895f5b92ffSmrg	continue
46905f5b92ffSmrg	;;
469117a48c7cSmrg
46925f5b92ffSmrg      -version-number)
46935f5b92ffSmrg	prev=vinfo
46945f5b92ffSmrg	vinfo_number=yes
46955f5b92ffSmrg	continue
46965f5b92ffSmrg	;;
469717a48c7cSmrg
46985f5b92ffSmrg      -weak)
46995f5b92ffSmrg        prev=weak
47005f5b92ffSmrg	continue
47015f5b92ffSmrg	;;
470217a48c7cSmrg
47035f5b92ffSmrg      -Wc,*)
47045f5b92ffSmrg	func_stripname '-Wc,' '' "$arg"
47055f5b92ffSmrg	args=$func_stripname_result
47065f5b92ffSmrg	arg=
47075f5b92ffSmrg	save_ifs="$IFS"; IFS=','
47085f5b92ffSmrg	for flag in $args; do
47095f5b92ffSmrg	  IFS="$save_ifs"
47105f5b92ffSmrg          func_quote_for_eval "$flag"
47115f5b92ffSmrg	  arg="$arg $wl$func_quote_for_eval_result"
47125f5b92ffSmrg	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
47135f5b92ffSmrg	done
47145f5b92ffSmrg	IFS="$save_ifs"
47155f5b92ffSmrg	func_stripname ' ' '' "$arg"
47165f5b92ffSmrg	arg=$func_stripname_result
47175f5b92ffSmrg	;;
471817a48c7cSmrg
47195f5b92ffSmrg      -Wl,*)
47205f5b92ffSmrg	func_stripname '-Wl,' '' "$arg"
47215f5b92ffSmrg	args=$func_stripname_result
47225f5b92ffSmrg	arg=
47235f5b92ffSmrg	save_ifs="$IFS"; IFS=','
47245f5b92ffSmrg	for flag in $args; do
47255f5b92ffSmrg	  IFS="$save_ifs"
47265f5b92ffSmrg          func_quote_for_eval "$flag"
47275f5b92ffSmrg	  arg="$arg $wl$func_quote_for_eval_result"
47285f5b92ffSmrg	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
47295f5b92ffSmrg	  linker_flags="$linker_flags $func_quote_for_eval_result"
47305f5b92ffSmrg	done
47315f5b92ffSmrg	IFS="$save_ifs"
47325f5b92ffSmrg	func_stripname ' ' '' "$arg"
47335f5b92ffSmrg	arg=$func_stripname_result
47345f5b92ffSmrg	;;
473517a48c7cSmrg
47365f5b92ffSmrg      -Xcompiler)
47375f5b92ffSmrg	prev=xcompiler
47385f5b92ffSmrg	continue
47395f5b92ffSmrg	;;
474017a48c7cSmrg
47415f5b92ffSmrg      -Xlinker)
47425f5b92ffSmrg	prev=xlinker
47435f5b92ffSmrg	continue
47445f5b92ffSmrg	;;
474517a48c7cSmrg
47465f5b92ffSmrg      -XCClinker)
47475f5b92ffSmrg	prev=xcclinker
47485f5b92ffSmrg	continue
47495f5b92ffSmrg	;;
475017a48c7cSmrg
47515f5b92ffSmrg      # -msg_* for osf cc
47525f5b92ffSmrg      -msg_*)
47535f5b92ffSmrg	func_quote_for_eval "$arg"
47545f5b92ffSmrg	arg="$func_quote_for_eval_result"
47555f5b92ffSmrg	;;
475617a48c7cSmrg
47575f5b92ffSmrg      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
47585f5b92ffSmrg      # -r[0-9][0-9]* specifies the processor on the SGI compiler
47595f5b92ffSmrg      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
47605f5b92ffSmrg      # +DA*, +DD* enable 64-bit mode on the HP compiler
47615f5b92ffSmrg      # -q* pass through compiler args for the IBM compiler
47625f5b92ffSmrg      # -m*, -t[45]*, -txscale* pass through architecture-specific
47635f5b92ffSmrg      # compiler args for GCC
47645f5b92ffSmrg      # -F/path gives path to uninstalled frameworks, gcc on darwin
47655f5b92ffSmrg      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
47665f5b92ffSmrg      # @file GCC response files
47675f5b92ffSmrg      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
47685f5b92ffSmrg      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
47695f5b92ffSmrg        func_quote_for_eval "$arg"
47705f5b92ffSmrg	arg="$func_quote_for_eval_result"
47715f5b92ffSmrg        func_append compile_command " $arg"
47725f5b92ffSmrg        func_append finalize_command " $arg"
47735f5b92ffSmrg        compiler_flags="$compiler_flags $arg"
47745f5b92ffSmrg        continue
47755f5b92ffSmrg        ;;
477617a48c7cSmrg
47775f5b92ffSmrg      # Some other compiler flag.
47785f5b92ffSmrg      -* | +*)
47795f5b92ffSmrg        func_quote_for_eval "$arg"
47805f5b92ffSmrg	arg="$func_quote_for_eval_result"
47815f5b92ffSmrg	;;
478217a48c7cSmrg
47835f5b92ffSmrg      *.$objext)
47845f5b92ffSmrg	# A standard object.
47855f5b92ffSmrg	objs="$objs $arg"
47865f5b92ffSmrg	;;
478717a48c7cSmrg
47885f5b92ffSmrg      *.lo)
47895f5b92ffSmrg	# A libtool-controlled object.
479017a48c7cSmrg
47915f5b92ffSmrg	# Check to see that this really is a libtool object.
47925f5b92ffSmrg	if func_lalib_unsafe_p "$arg"; then
47935f5b92ffSmrg	  pic_object=
47945f5b92ffSmrg	  non_pic_object=
479517a48c7cSmrg
47965f5b92ffSmrg	  # Read the .lo file
47975f5b92ffSmrg	  func_source "$arg"
479817a48c7cSmrg
47995f5b92ffSmrg	  if test -z "$pic_object" ||
48005f5b92ffSmrg	     test -z "$non_pic_object" ||
48015f5b92ffSmrg	     test "$pic_object" = none &&
48025f5b92ffSmrg	     test "$non_pic_object" = none; then
48035f5b92ffSmrg	    func_fatal_error "cannot find name of object for \`$arg'"
48045f5b92ffSmrg	  fi
480517a48c7cSmrg
48065f5b92ffSmrg	  # Extract subdirectory from the argument.
48075f5b92ffSmrg	  func_dirname "$arg" "/" ""
48085f5b92ffSmrg	  xdir="$func_dirname_result"
48098e0ed500Smrg
48105f5b92ffSmrg	  if test "$pic_object" != none; then
48115f5b92ffSmrg	    # Prepend the subdirectory the object is found in.
48125f5b92ffSmrg	    pic_object="$xdir$pic_object"
481317a48c7cSmrg
48145f5b92ffSmrg	    if test "$prev" = dlfiles; then
48155f5b92ffSmrg	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
48165f5b92ffSmrg		dlfiles="$dlfiles $pic_object"
48175f5b92ffSmrg		prev=
48185f5b92ffSmrg		continue
48195f5b92ffSmrg	      else
48205f5b92ffSmrg		# If libtool objects are unsupported, then we need to preload.
48215f5b92ffSmrg		prev=dlprefiles
48225f5b92ffSmrg	      fi
48235f5b92ffSmrg	    fi
482417a48c7cSmrg
48255f5b92ffSmrg	    # CHECK ME:  I think I busted this.  -Ossama
48265f5b92ffSmrg	    if test "$prev" = dlprefiles; then
48275f5b92ffSmrg	      # Preload the old-style object.
48285f5b92ffSmrg	      dlprefiles="$dlprefiles $pic_object"
48295f5b92ffSmrg	      prev=
48305f5b92ffSmrg	    fi
483117a48c7cSmrg
48325f5b92ffSmrg	    # A PIC object.
48335f5b92ffSmrg	    func_append libobjs " $pic_object"
48345f5b92ffSmrg	    arg="$pic_object"
48355f5b92ffSmrg	  fi
483617a48c7cSmrg
48375f5b92ffSmrg	  # Non-PIC object.
48385f5b92ffSmrg	  if test "$non_pic_object" != none; then
48395f5b92ffSmrg	    # Prepend the subdirectory the object is found in.
48405f5b92ffSmrg	    non_pic_object="$xdir$non_pic_object"
484117a48c7cSmrg
48425f5b92ffSmrg	    # A standard non-PIC object
48435f5b92ffSmrg	    func_append non_pic_objects " $non_pic_object"
48445f5b92ffSmrg	    if test -z "$pic_object" || test "$pic_object" = none ; then
48455f5b92ffSmrg	      arg="$non_pic_object"
48465f5b92ffSmrg	    fi
48475f5b92ffSmrg	  else
48485f5b92ffSmrg	    # If the PIC object exists, use it instead.
48495f5b92ffSmrg	    # $xdir was prepended to $pic_object above.
48505f5b92ffSmrg	    non_pic_object="$pic_object"
48515f5b92ffSmrg	    func_append non_pic_objects " $non_pic_object"
48525f5b92ffSmrg	  fi
48535f5b92ffSmrg	else
48545f5b92ffSmrg	  # Only an error if not doing a dry-run.
48555f5b92ffSmrg	  if $opt_dry_run; then
48565f5b92ffSmrg	    # Extract subdirectory from the argument.
48575f5b92ffSmrg	    func_dirname "$arg" "/" ""
48585f5b92ffSmrg	    xdir="$func_dirname_result"
48595f5b92ffSmrg
48605f5b92ffSmrg	    func_lo2o "$arg"
48615f5b92ffSmrg	    pic_object=$xdir$objdir/$func_lo2o_result
48625f5b92ffSmrg	    non_pic_object=$xdir$func_lo2o_result
48635f5b92ffSmrg	    func_append libobjs " $pic_object"
48645f5b92ffSmrg	    func_append non_pic_objects " $non_pic_object"
48655f5b92ffSmrg	  else
48665f5b92ffSmrg	    func_fatal_error "\`$arg' is not a valid libtool object"
48675f5b92ffSmrg	  fi
48685f5b92ffSmrg	fi
48695f5b92ffSmrg	;;
487017a48c7cSmrg
48715f5b92ffSmrg      *.$libext)
48725f5b92ffSmrg	# An archive.
48735f5b92ffSmrg	deplibs="$deplibs $arg"
48745f5b92ffSmrg	old_deplibs="$old_deplibs $arg"
48755f5b92ffSmrg	continue
48765f5b92ffSmrg	;;
48775f5b92ffSmrg
48785f5b92ffSmrg      *.la)
48795f5b92ffSmrg	# A libtool-controlled library.
48805f5b92ffSmrg
48815f5b92ffSmrg	if test "$prev" = dlfiles; then
48825f5b92ffSmrg	  # This library was specified with -dlopen.
48835f5b92ffSmrg	  dlfiles="$dlfiles $arg"
48845f5b92ffSmrg	  prev=
48855f5b92ffSmrg	elif test "$prev" = dlprefiles; then
48865f5b92ffSmrg	  # The library was specified with -dlpreopen.
48875f5b92ffSmrg	  dlprefiles="$dlprefiles $arg"
48885f5b92ffSmrg	  prev=
48895f5b92ffSmrg	else
48905f5b92ffSmrg	  deplibs="$deplibs $arg"
48915f5b92ffSmrg	fi
48925f5b92ffSmrg	continue
48935f5b92ffSmrg	;;
48945f5b92ffSmrg
48955f5b92ffSmrg      # Some other compiler argument.
48965f5b92ffSmrg      *)
48975f5b92ffSmrg	# Unknown arguments in both finalize_command and compile_command need
48985f5b92ffSmrg	# to be aesthetically quoted because they are evaled later.
48995f5b92ffSmrg	func_quote_for_eval "$arg"
49005f5b92ffSmrg	arg="$func_quote_for_eval_result"
49015f5b92ffSmrg	;;
49025f5b92ffSmrg      esac # arg
49035f5b92ffSmrg
49045f5b92ffSmrg      # Now actually substitute the argument into the commands.
49055f5b92ffSmrg      if test -n "$arg"; then
49065f5b92ffSmrg	func_append compile_command " $arg"
49075f5b92ffSmrg	func_append finalize_command " $arg"
49085f5b92ffSmrg      fi
49095f5b92ffSmrg    done # argument parsing loop
49105f5b92ffSmrg
49115f5b92ffSmrg    test -n "$prev" && \
49125f5b92ffSmrg      func_fatal_help "the \`$prevarg' option requires an argument"
49135f5b92ffSmrg
49145f5b92ffSmrg    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
49155f5b92ffSmrg      eval arg=\"$export_dynamic_flag_spec\"
49165f5b92ffSmrg      func_append compile_command " $arg"
49175f5b92ffSmrg      func_append finalize_command " $arg"
49185f5b92ffSmrg    fi
49195f5b92ffSmrg
49205f5b92ffSmrg    oldlibs=
49215f5b92ffSmrg    # calculate the name of the file, without its directory
49225f5b92ffSmrg    func_basename "$output"
49235f5b92ffSmrg    outputname="$func_basename_result"
49245f5b92ffSmrg    libobjs_save="$libobjs"
49255f5b92ffSmrg
49265f5b92ffSmrg    if test -n "$shlibpath_var"; then
49275f5b92ffSmrg      # get the directories listed in $shlibpath_var
49285f5b92ffSmrg      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
49295f5b92ffSmrg    else
49305f5b92ffSmrg      shlib_search_path=
49315f5b92ffSmrg    fi
49325f5b92ffSmrg    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
49335f5b92ffSmrg    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
49345f5b92ffSmrg
49355f5b92ffSmrg    func_dirname "$output" "/" ""
49365f5b92ffSmrg    output_objdir="$func_dirname_result$objdir"
49375f5b92ffSmrg    # Create the object directory.
49385f5b92ffSmrg    func_mkdir_p "$output_objdir"
49395f5b92ffSmrg
49405f5b92ffSmrg    # Determine the type of output
49415f5b92ffSmrg    case $output in
49425f5b92ffSmrg    "")
49435f5b92ffSmrg      func_fatal_help "you must specify an output file"
49445f5b92ffSmrg      ;;
49455f5b92ffSmrg    *.$libext) linkmode=oldlib ;;
49465f5b92ffSmrg    *.lo | *.$objext) linkmode=obj ;;
49475f5b92ffSmrg    *.la) linkmode=lib ;;
49485f5b92ffSmrg    *) linkmode=prog ;; # Anything else should be a program.
49495f5b92ffSmrg    esac
49505f5b92ffSmrg
49515f5b92ffSmrg    specialdeplibs=
49525f5b92ffSmrg
49535f5b92ffSmrg    libs=
49545f5b92ffSmrg    # Find all interdependent deplibs by searching for libraries
49555f5b92ffSmrg    # that are linked more than once (e.g. -la -lb -la)
49565f5b92ffSmrg    for deplib in $deplibs; do
49575f5b92ffSmrg      if $opt_duplicate_deps ; then
49585f5b92ffSmrg	case "$libs " in
49595f5b92ffSmrg	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
49605f5b92ffSmrg	esac
49615f5b92ffSmrg      fi
49625f5b92ffSmrg      libs="$libs $deplib"
49635f5b92ffSmrg    done
49645f5b92ffSmrg
49655f5b92ffSmrg    if test "$linkmode" = lib; then
49665f5b92ffSmrg      libs="$predeps $libs $compiler_lib_search_path $postdeps"
49675f5b92ffSmrg
49685f5b92ffSmrg      # Compute libraries that are listed more than once in $predeps
49695f5b92ffSmrg      # $postdeps and mark them as special (i.e., whose duplicates are
49705f5b92ffSmrg      # not to be eliminated).
49715f5b92ffSmrg      pre_post_deps=
49725f5b92ffSmrg      if $opt_duplicate_compiler_generated_deps; then
49735f5b92ffSmrg	for pre_post_dep in $predeps $postdeps; do
49745f5b92ffSmrg	  case "$pre_post_deps " in
49755f5b92ffSmrg	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
49765f5b92ffSmrg	  esac
49775f5b92ffSmrg	  pre_post_deps="$pre_post_deps $pre_post_dep"
49785f5b92ffSmrg	done
49795f5b92ffSmrg      fi
49805f5b92ffSmrg      pre_post_deps=
49815f5b92ffSmrg    fi
49825f5b92ffSmrg
49835f5b92ffSmrg    deplibs=
49845f5b92ffSmrg    newdependency_libs=
49855f5b92ffSmrg    newlib_search_path=
49865f5b92ffSmrg    need_relink=no # whether we're linking any uninstalled libtool libraries
49875f5b92ffSmrg    notinst_deplibs= # not-installed libtool libraries
49885f5b92ffSmrg    notinst_path= # paths that contain not-installed libtool libraries
49895f5b92ffSmrg
49905f5b92ffSmrg    case $linkmode in
49915f5b92ffSmrg    lib)
49925f5b92ffSmrg	passes="conv dlpreopen link"
49935f5b92ffSmrg	for file in $dlfiles $dlprefiles; do
49945f5b92ffSmrg	  case $file in
49955f5b92ffSmrg	  *.la) ;;
49965f5b92ffSmrg	  *)
49975f5b92ffSmrg	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
49985f5b92ffSmrg	    ;;
49995f5b92ffSmrg	  esac
50005f5b92ffSmrg	done
50015f5b92ffSmrg	;;
50025f5b92ffSmrg    prog)
50035f5b92ffSmrg	compile_deplibs=
50045f5b92ffSmrg	finalize_deplibs=
50055f5b92ffSmrg	alldeplibs=no
50065f5b92ffSmrg	newdlfiles=
50075f5b92ffSmrg	newdlprefiles=
50085f5b92ffSmrg	passes="conv scan dlopen dlpreopen link"
50095f5b92ffSmrg	;;
50105f5b92ffSmrg    *)  passes="conv"
50115f5b92ffSmrg	;;
50125f5b92ffSmrg    esac
50135f5b92ffSmrg
50145f5b92ffSmrg    for pass in $passes; do
50155f5b92ffSmrg      # The preopen pass in lib mode reverses $deplibs; put it back here
50165f5b92ffSmrg      # so that -L comes before libs that need it for instance...
50175f5b92ffSmrg      if test "$linkmode,$pass" = "lib,link"; then
50185f5b92ffSmrg	## FIXME: Find the place where the list is rebuilt in the wrong
50195f5b92ffSmrg	##        order, and fix it there properly
50205f5b92ffSmrg        tmp_deplibs=
50215f5b92ffSmrg	for deplib in $deplibs; do
50225f5b92ffSmrg	  tmp_deplibs="$deplib $tmp_deplibs"
50235f5b92ffSmrg	done
50245f5b92ffSmrg	deplibs="$tmp_deplibs"
50255f5b92ffSmrg      fi
50265f5b92ffSmrg
50275f5b92ffSmrg      if test "$linkmode,$pass" = "lib,link" ||
50285f5b92ffSmrg	 test "$linkmode,$pass" = "prog,scan"; then
50295f5b92ffSmrg	libs="$deplibs"
50305f5b92ffSmrg	deplibs=
50315f5b92ffSmrg      fi
50325f5b92ffSmrg      if test "$linkmode" = prog; then
50335f5b92ffSmrg	case $pass in
50345f5b92ffSmrg	dlopen) libs="$dlfiles" ;;
50355f5b92ffSmrg	dlpreopen) libs="$dlprefiles" ;;
50365f5b92ffSmrg	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
50375f5b92ffSmrg	esac
50385f5b92ffSmrg      fi
50395f5b92ffSmrg      if test "$linkmode,$pass" = "lib,dlpreopen"; then
50405f5b92ffSmrg	# Collect and forward deplibs of preopened libtool libs
50415f5b92ffSmrg	for lib in $dlprefiles; do
50425f5b92ffSmrg	  # Ignore non-libtool-libs
50435f5b92ffSmrg	  dependency_libs=
50445f5b92ffSmrg	  case $lib in
50455f5b92ffSmrg	  *.la)	func_source "$lib" ;;
50465f5b92ffSmrg	  esac
50475f5b92ffSmrg
50485f5b92ffSmrg	  # Collect preopened libtool deplibs, except any this library
50495f5b92ffSmrg	  # has declared as weak libs
50505f5b92ffSmrg	  for deplib in $dependency_libs; do
50515f5b92ffSmrg            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
50525f5b92ffSmrg	    case " $weak_libs " in
50535f5b92ffSmrg	    *" $deplib_base "*) ;;
50545f5b92ffSmrg	    *) deplibs="$deplibs $deplib" ;;
50555f5b92ffSmrg	    esac
50565f5b92ffSmrg	  done
50575f5b92ffSmrg	done
50585f5b92ffSmrg	libs="$dlprefiles"
50595f5b92ffSmrg      fi
50605f5b92ffSmrg      if test "$pass" = dlopen; then
50615f5b92ffSmrg	# Collect dlpreopened libraries
50625f5b92ffSmrg	save_deplibs="$deplibs"
50635f5b92ffSmrg	deplibs=
50645f5b92ffSmrg      fi
50655f5b92ffSmrg
50665f5b92ffSmrg      for deplib in $libs; do
50675f5b92ffSmrg	lib=
50685f5b92ffSmrg	found=no
50695f5b92ffSmrg	case $deplib in
50705f5b92ffSmrg	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
50715f5b92ffSmrg	  if test "$linkmode,$pass" = "prog,link"; then
50725f5b92ffSmrg	    compile_deplibs="$deplib $compile_deplibs"
50735f5b92ffSmrg	    finalize_deplibs="$deplib $finalize_deplibs"
50745f5b92ffSmrg	  else
50755f5b92ffSmrg	    compiler_flags="$compiler_flags $deplib"
50765f5b92ffSmrg	    if test "$linkmode" = lib ; then
50775f5b92ffSmrg		case "$new_inherited_linker_flags " in
50785f5b92ffSmrg		    *" $deplib "*) ;;
50795f5b92ffSmrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
50805f5b92ffSmrg		esac
50815f5b92ffSmrg	    fi
50825f5b92ffSmrg	  fi
50835f5b92ffSmrg	  continue
50845f5b92ffSmrg	  ;;
50855f5b92ffSmrg	-l*)
50865f5b92ffSmrg	  if test "$linkmode" != lib && test "$linkmode" != prog; then
50875f5b92ffSmrg	    func_warning "\`-l' is ignored for archives/objects"
50885f5b92ffSmrg	    continue
50895f5b92ffSmrg	  fi
50905f5b92ffSmrg	  func_stripname '-l' '' "$deplib"
50915f5b92ffSmrg	  name=$func_stripname_result
50925f5b92ffSmrg	  if test "$linkmode" = lib; then
50935f5b92ffSmrg	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
50945f5b92ffSmrg	  else
50955f5b92ffSmrg	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
50965f5b92ffSmrg	  fi
50975f5b92ffSmrg	  for searchdir in $searchdirs; do
50985f5b92ffSmrg	    for search_ext in .la $std_shrext .so .a; do
50995f5b92ffSmrg	      # Search the libtool library
51005f5b92ffSmrg	      lib="$searchdir/lib${name}${search_ext}"
51015f5b92ffSmrg	      if test -f "$lib"; then
51025f5b92ffSmrg		if test "$search_ext" = ".la"; then
51035f5b92ffSmrg		  found=yes
51045f5b92ffSmrg		else
51055f5b92ffSmrg		  found=no
51065f5b92ffSmrg		fi
51075f5b92ffSmrg		break 2
51085f5b92ffSmrg	      fi
51095f5b92ffSmrg	    done
51105f5b92ffSmrg	  done
51115f5b92ffSmrg	  if test "$found" != yes; then
51125f5b92ffSmrg	    # deplib doesn't seem to be a libtool library
51135f5b92ffSmrg	    if test "$linkmode,$pass" = "prog,link"; then
51145f5b92ffSmrg	      compile_deplibs="$deplib $compile_deplibs"
51155f5b92ffSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
51165f5b92ffSmrg	    else
51175f5b92ffSmrg	      deplibs="$deplib $deplibs"
51185f5b92ffSmrg	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
51195f5b92ffSmrg	    fi
51205f5b92ffSmrg	    continue
51215f5b92ffSmrg	  else # deplib is a libtool library
51225f5b92ffSmrg	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
51235f5b92ffSmrg	    # We need to do some special things here, and not later.
51245f5b92ffSmrg	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
51255f5b92ffSmrg	      case " $predeps $postdeps " in
51265f5b92ffSmrg	      *" $deplib "*)
51275f5b92ffSmrg		if func_lalib_p "$lib"; then
51285f5b92ffSmrg		  library_names=
51295f5b92ffSmrg		  old_library=
51305f5b92ffSmrg		  func_source "$lib"
51315f5b92ffSmrg		  for l in $old_library $library_names; do
51325f5b92ffSmrg		    ll="$l"
51335f5b92ffSmrg		  done
51345f5b92ffSmrg		  if test "X$ll" = "X$old_library" ; then # only static version available
51355f5b92ffSmrg		    found=no
51365f5b92ffSmrg		    func_dirname "$lib" "" "."
51375f5b92ffSmrg		    ladir="$func_dirname_result"
51385f5b92ffSmrg		    lib=$ladir/$old_library
51395f5b92ffSmrg		    if test "$linkmode,$pass" = "prog,link"; then
51405f5b92ffSmrg		      compile_deplibs="$deplib $compile_deplibs"
51415f5b92ffSmrg		      finalize_deplibs="$deplib $finalize_deplibs"
51425f5b92ffSmrg		    else
51435f5b92ffSmrg		      deplibs="$deplib $deplibs"
51445f5b92ffSmrg		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
51455f5b92ffSmrg		    fi
51465f5b92ffSmrg		    continue
51475f5b92ffSmrg		  fi
51485f5b92ffSmrg		fi
51495f5b92ffSmrg		;;
51505f5b92ffSmrg	      *) ;;
51515f5b92ffSmrg	      esac
51525f5b92ffSmrg	    fi
51535f5b92ffSmrg	  fi
51545f5b92ffSmrg	  ;; # -l
51555f5b92ffSmrg	*.ltframework)
51565f5b92ffSmrg	  if test "$linkmode,$pass" = "prog,link"; then
51575f5b92ffSmrg	    compile_deplibs="$deplib $compile_deplibs"
51585f5b92ffSmrg	    finalize_deplibs="$deplib $finalize_deplibs"
51595f5b92ffSmrg	  else
51605f5b92ffSmrg	    deplibs="$deplib $deplibs"
51615f5b92ffSmrg	    if test "$linkmode" = lib ; then
51625f5b92ffSmrg		case "$new_inherited_linker_flags " in
51635f5b92ffSmrg		    *" $deplib "*) ;;
51645f5b92ffSmrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
51655f5b92ffSmrg		esac
51665f5b92ffSmrg	    fi
51675f5b92ffSmrg	  fi
51685f5b92ffSmrg	  continue
51695f5b92ffSmrg	  ;;
51705f5b92ffSmrg	-L*)
51715f5b92ffSmrg	  case $linkmode in
51725f5b92ffSmrg	  lib)
51735f5b92ffSmrg	    deplibs="$deplib $deplibs"
51745f5b92ffSmrg	    test "$pass" = conv && continue
51755f5b92ffSmrg	    newdependency_libs="$deplib $newdependency_libs"
51765f5b92ffSmrg	    func_stripname '-L' '' "$deplib"
51775f5b92ffSmrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
51785f5b92ffSmrg	    ;;
51795f5b92ffSmrg	  prog)
51805f5b92ffSmrg	    if test "$pass" = conv; then
51815f5b92ffSmrg	      deplibs="$deplib $deplibs"
51825f5b92ffSmrg	      continue
51835f5b92ffSmrg	    fi
51845f5b92ffSmrg	    if test "$pass" = scan; then
51855f5b92ffSmrg	      deplibs="$deplib $deplibs"
51865f5b92ffSmrg	    else
51875f5b92ffSmrg	      compile_deplibs="$deplib $compile_deplibs"
51885f5b92ffSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
51895f5b92ffSmrg	    fi
51905f5b92ffSmrg	    func_stripname '-L' '' "$deplib"
51915f5b92ffSmrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
51925f5b92ffSmrg	    ;;
51935f5b92ffSmrg	  *)
51945f5b92ffSmrg	    func_warning "\`-L' is ignored for archives/objects"
51955f5b92ffSmrg	    ;;
51965f5b92ffSmrg	  esac # linkmode
51975f5b92ffSmrg	  continue
51985f5b92ffSmrg	  ;; # -L
51995f5b92ffSmrg	-R*)
52005f5b92ffSmrg	  if test "$pass" = link; then
52015f5b92ffSmrg	    func_stripname '-R' '' "$deplib"
52025f5b92ffSmrg	    dir=$func_stripname_result
52035f5b92ffSmrg	    # Make sure the xrpath contains only unique directories.
52045f5b92ffSmrg	    case "$xrpath " in
52055f5b92ffSmrg	    *" $dir "*) ;;
52065f5b92ffSmrg	    *) xrpath="$xrpath $dir" ;;
52075f5b92ffSmrg	    esac
52085f5b92ffSmrg	  fi
52095f5b92ffSmrg	  deplibs="$deplib $deplibs"
52105f5b92ffSmrg	  continue
52115f5b92ffSmrg	  ;;
52125f5b92ffSmrg	*.la) lib="$deplib" ;;
52135f5b92ffSmrg	*.$libext)
52145f5b92ffSmrg	  if test "$pass" = conv; then
52155f5b92ffSmrg	    deplibs="$deplib $deplibs"
52165f5b92ffSmrg	    continue
52175f5b92ffSmrg	  fi
52185f5b92ffSmrg	  case $linkmode in
52195f5b92ffSmrg	  lib)
52205f5b92ffSmrg	    # Linking convenience modules into shared libraries is allowed,
52215f5b92ffSmrg	    # but linking other static libraries is non-portable.
52225f5b92ffSmrg	    case " $dlpreconveniencelibs " in
52235f5b92ffSmrg	    *" $deplib "*) ;;
52245f5b92ffSmrg	    *)
52255f5b92ffSmrg	      valid_a_lib=no
52265f5b92ffSmrg	      case $deplibs_check_method in
52275f5b92ffSmrg		match_pattern*)
52285f5b92ffSmrg		  set dummy $deplibs_check_method; shift
52295f5b92ffSmrg		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
52305f5b92ffSmrg		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
52315f5b92ffSmrg		    | $EGREP "$match_pattern_regex" > /dev/null; then
52325f5b92ffSmrg		    valid_a_lib=yes
52335f5b92ffSmrg		  fi
52345f5b92ffSmrg		;;
52355f5b92ffSmrg		pass_all)
52365f5b92ffSmrg		  valid_a_lib=yes
52375f5b92ffSmrg		;;
52385f5b92ffSmrg	      esac
52395f5b92ffSmrg	      if test "$valid_a_lib" != yes; then
52405f5b92ffSmrg		$ECHO
52415f5b92ffSmrg		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
52425f5b92ffSmrg		$ECHO "*** I have the capability to make that library automatically link in when"
52435f5b92ffSmrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
52445f5b92ffSmrg		$ECHO "*** shared version of the library, which you do not appear to have"
52455f5b92ffSmrg		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
52465f5b92ffSmrg		$ECHO "*** that it is just a static archive that I should not use here."
52475f5b92ffSmrg	      else
52485f5b92ffSmrg		$ECHO
52495f5b92ffSmrg		$ECHO "*** Warning: Linking the shared library $output against the"
52505f5b92ffSmrg		$ECHO "*** static library $deplib is not portable!"
52515f5b92ffSmrg		deplibs="$deplib $deplibs"
52525f5b92ffSmrg	      fi
52535f5b92ffSmrg	      ;;
52545f5b92ffSmrg	    esac
52555f5b92ffSmrg	    continue
52565f5b92ffSmrg	    ;;
52575f5b92ffSmrg	  prog)
52585f5b92ffSmrg	    if test "$pass" != link; then
52595f5b92ffSmrg	      deplibs="$deplib $deplibs"
52605f5b92ffSmrg	    else
52615f5b92ffSmrg	      compile_deplibs="$deplib $compile_deplibs"
52625f5b92ffSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
52635f5b92ffSmrg	    fi
52645f5b92ffSmrg	    continue
52655f5b92ffSmrg	    ;;
52665f5b92ffSmrg	  esac # linkmode
52675f5b92ffSmrg	  ;; # *.$libext
52685f5b92ffSmrg	*.lo | *.$objext)
52695f5b92ffSmrg	  if test "$pass" = conv; then
52705f5b92ffSmrg	    deplibs="$deplib $deplibs"
52715f5b92ffSmrg	  elif test "$linkmode" = prog; then
52725f5b92ffSmrg	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
52735f5b92ffSmrg	      # If there is no dlopen support or we're linking statically,
52745f5b92ffSmrg	      # we need to preload.
52755f5b92ffSmrg	      newdlprefiles="$newdlprefiles $deplib"
52765f5b92ffSmrg	      compile_deplibs="$deplib $compile_deplibs"
52775f5b92ffSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
52785f5b92ffSmrg	    else
52795f5b92ffSmrg	      newdlfiles="$newdlfiles $deplib"
52805f5b92ffSmrg	    fi
52815f5b92ffSmrg	  fi
52825f5b92ffSmrg	  continue
52835f5b92ffSmrg	  ;;
52845f5b92ffSmrg	%DEPLIBS%)
52855f5b92ffSmrg	  alldeplibs=yes
52865f5b92ffSmrg	  continue
52875f5b92ffSmrg	  ;;
52885f5b92ffSmrg	esac # case $deplib
52895f5b92ffSmrg
52905f5b92ffSmrg	if test "$found" = yes || test -f "$lib"; then :
52915f5b92ffSmrg	else
52925f5b92ffSmrg	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
52935f5b92ffSmrg	fi
52945f5b92ffSmrg
52955f5b92ffSmrg	# Check to see that this really is a libtool archive.
52965f5b92ffSmrg	func_lalib_unsafe_p "$lib" \
52975f5b92ffSmrg	  || func_fatal_error "\`$lib' is not a valid libtool archive"
52985f5b92ffSmrg
52995f5b92ffSmrg	func_dirname "$lib" "" "."
53005f5b92ffSmrg	ladir="$func_dirname_result"
53015f5b92ffSmrg
53025f5b92ffSmrg	dlname=
53035f5b92ffSmrg	dlopen=
53045f5b92ffSmrg	dlpreopen=
53055f5b92ffSmrg	libdir=
53065f5b92ffSmrg	library_names=
53075f5b92ffSmrg	old_library=
53085f5b92ffSmrg	inherited_linker_flags=
53095f5b92ffSmrg	# If the library was installed with an old release of libtool,
53105f5b92ffSmrg	# it will not redefine variables installed, or shouldnotlink
53115f5b92ffSmrg	installed=yes
53125f5b92ffSmrg	shouldnotlink=no
53135f5b92ffSmrg	avoidtemprpath=
53145f5b92ffSmrg
53155f5b92ffSmrg
53165f5b92ffSmrg	# Read the .la file
53175f5b92ffSmrg	func_source "$lib"
53185f5b92ffSmrg
53195f5b92ffSmrg	# Convert "-framework foo" to "foo.ltframework"
53205f5b92ffSmrg	if test -n "$inherited_linker_flags"; then
53215f5b92ffSmrg	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
53225f5b92ffSmrg	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
53235f5b92ffSmrg	    case " $new_inherited_linker_flags " in
53245f5b92ffSmrg	      *" $tmp_inherited_linker_flag "*) ;;
53255f5b92ffSmrg	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
53265f5b92ffSmrg	    esac
53275f5b92ffSmrg	  done
53285f5b92ffSmrg	fi
53295f5b92ffSmrg	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
53305f5b92ffSmrg	if test "$linkmode,$pass" = "lib,link" ||
53315f5b92ffSmrg	   test "$linkmode,$pass" = "prog,scan" ||
53325f5b92ffSmrg	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
53335f5b92ffSmrg	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
53345f5b92ffSmrg	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
53355f5b92ffSmrg	fi
53365f5b92ffSmrg
53375f5b92ffSmrg	if test "$pass" = conv; then
53385f5b92ffSmrg	  # Only check for convenience libraries
53395f5b92ffSmrg	  deplibs="$lib $deplibs"
53405f5b92ffSmrg	  if test -z "$libdir"; then
53415f5b92ffSmrg	    if test -z "$old_library"; then
53425f5b92ffSmrg	      func_fatal_error "cannot find name of link library for \`$lib'"
53435f5b92ffSmrg	    fi
53445f5b92ffSmrg	    # It is a libtool convenience library, so add in its objects.
53455f5b92ffSmrg	    convenience="$convenience $ladir/$objdir/$old_library"
53465f5b92ffSmrg	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
53475f5b92ffSmrg	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
53485f5b92ffSmrg	    func_fatal_error "\`$lib' is not a convenience library"
53495f5b92ffSmrg	  fi
53505f5b92ffSmrg	  tmp_libs=
53515f5b92ffSmrg	  for deplib in $dependency_libs; do
53525f5b92ffSmrg	    deplibs="$deplib $deplibs"
53535f5b92ffSmrg	    if $opt_duplicate_deps ; then
53545f5b92ffSmrg	      case "$tmp_libs " in
53555f5b92ffSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
53565f5b92ffSmrg	      esac
53575f5b92ffSmrg	    fi
53585f5b92ffSmrg	    tmp_libs="$tmp_libs $deplib"
53595f5b92ffSmrg	  done
53605f5b92ffSmrg	  continue
53615f5b92ffSmrg	fi # $pass = conv
53625f5b92ffSmrg
53635f5b92ffSmrg
53645f5b92ffSmrg	# Get the name of the library we link against.
53655f5b92ffSmrg	linklib=
53665f5b92ffSmrg	for l in $old_library $library_names; do
53675f5b92ffSmrg	  linklib="$l"
53685f5b92ffSmrg	done
53695f5b92ffSmrg	if test -z "$linklib"; then
53705f5b92ffSmrg	  func_fatal_error "cannot find name of link library for \`$lib'"
53715f5b92ffSmrg	fi
53725f5b92ffSmrg
53735f5b92ffSmrg	# This library was specified with -dlopen.
53745f5b92ffSmrg	if test "$pass" = dlopen; then
53755f5b92ffSmrg	  if test -z "$libdir"; then
53765f5b92ffSmrg	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
53775f5b92ffSmrg	  fi
53785f5b92ffSmrg	  if test -z "$dlname" ||
53795f5b92ffSmrg	     test "$dlopen_support" != yes ||
53805f5b92ffSmrg	     test "$build_libtool_libs" = no; then
53815f5b92ffSmrg	    # If there is no dlname, no dlopen support or we're linking
53825f5b92ffSmrg	    # statically, we need to preload.  We also need to preload any
53835f5b92ffSmrg	    # dependent libraries so libltdl's deplib preloader doesn't
53845f5b92ffSmrg	    # bomb out in the load deplibs phase.
53855f5b92ffSmrg	    dlprefiles="$dlprefiles $lib $dependency_libs"
53865f5b92ffSmrg	  else
53875f5b92ffSmrg	    newdlfiles="$newdlfiles $lib"
53885f5b92ffSmrg	  fi
53895f5b92ffSmrg	  continue
53905f5b92ffSmrg	fi # $pass = dlopen
53915f5b92ffSmrg
53925f5b92ffSmrg	# We need an absolute path.
53935f5b92ffSmrg	case $ladir in
53945f5b92ffSmrg	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
53955f5b92ffSmrg	*)
53965f5b92ffSmrg	  abs_ladir=`cd "$ladir" && pwd`
53975f5b92ffSmrg	  if test -z "$abs_ladir"; then
53985f5b92ffSmrg	    func_warning "cannot determine absolute directory name of \`$ladir'"
53995f5b92ffSmrg	    func_warning "passing it literally to the linker, although it might fail"
54005f5b92ffSmrg	    abs_ladir="$ladir"
54015f5b92ffSmrg	  fi
54025f5b92ffSmrg	  ;;
54035f5b92ffSmrg	esac
54045f5b92ffSmrg	func_basename "$lib"
54055f5b92ffSmrg	laname="$func_basename_result"
54065f5b92ffSmrg
54075f5b92ffSmrg	# Find the relevant object directory and library name.
54085f5b92ffSmrg	if test "X$installed" = Xyes; then
54095f5b92ffSmrg	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
54105f5b92ffSmrg	    func_warning "library \`$lib' was moved."
54115f5b92ffSmrg	    dir="$ladir"
54125f5b92ffSmrg	    absdir="$abs_ladir"
54135f5b92ffSmrg	    libdir="$abs_ladir"
54145f5b92ffSmrg	  else
54155f5b92ffSmrg	    dir="$libdir"
54165f5b92ffSmrg	    absdir="$libdir"
54175f5b92ffSmrg	  fi
54185f5b92ffSmrg	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
54195f5b92ffSmrg	else
54205f5b92ffSmrg	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
54215f5b92ffSmrg	    dir="$ladir"
54225f5b92ffSmrg	    absdir="$abs_ladir"
54235f5b92ffSmrg	    # Remove this search path later
54245f5b92ffSmrg	    notinst_path="$notinst_path $abs_ladir"
54255f5b92ffSmrg	  else
54265f5b92ffSmrg	    dir="$ladir/$objdir"
54275f5b92ffSmrg	    absdir="$abs_ladir/$objdir"
54285f5b92ffSmrg	    # Remove this search path later
54295f5b92ffSmrg	    notinst_path="$notinst_path $abs_ladir"
54305f5b92ffSmrg	  fi
54315f5b92ffSmrg	fi # $installed = yes
54325f5b92ffSmrg	func_stripname 'lib' '.la' "$laname"
54335f5b92ffSmrg	name=$func_stripname_result
54345f5b92ffSmrg
54355f5b92ffSmrg	# This library was specified with -dlpreopen.
54365f5b92ffSmrg	if test "$pass" = dlpreopen; then
54375f5b92ffSmrg	  if test -z "$libdir" && test "$linkmode" = prog; then
54385f5b92ffSmrg	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
54395f5b92ffSmrg	  fi
54405f5b92ffSmrg	  # Prefer using a static library (so that no silly _DYNAMIC symbols
54415f5b92ffSmrg	  # are required to link).
54425f5b92ffSmrg	  if test -n "$old_library"; then
54435f5b92ffSmrg	    newdlprefiles="$newdlprefiles $dir/$old_library"
54445f5b92ffSmrg	    # Keep a list of preopened convenience libraries to check
54455f5b92ffSmrg	    # that they are being used correctly in the link pass.
54465f5b92ffSmrg	    test -z "$libdir" && \
54475f5b92ffSmrg		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
54485f5b92ffSmrg	  # Otherwise, use the dlname, so that lt_dlopen finds it.
54495f5b92ffSmrg	  elif test -n "$dlname"; then
54505f5b92ffSmrg	    newdlprefiles="$newdlprefiles $dir/$dlname"
54515f5b92ffSmrg	  else
54525f5b92ffSmrg	    newdlprefiles="$newdlprefiles $dir/$linklib"
54535f5b92ffSmrg	  fi
54545f5b92ffSmrg	fi # $pass = dlpreopen
54555f5b92ffSmrg
54565f5b92ffSmrg	if test -z "$libdir"; then
54575f5b92ffSmrg	  # Link the convenience library
54585f5b92ffSmrg	  if test "$linkmode" = lib; then
54595f5b92ffSmrg	    deplibs="$dir/$old_library $deplibs"
54605f5b92ffSmrg	  elif test "$linkmode,$pass" = "prog,link"; then
54615f5b92ffSmrg	    compile_deplibs="$dir/$old_library $compile_deplibs"
54625f5b92ffSmrg	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
54635f5b92ffSmrg	  else
54645f5b92ffSmrg	    deplibs="$lib $deplibs" # used for prog,scan pass
54655f5b92ffSmrg	  fi
54665f5b92ffSmrg	  continue
54675f5b92ffSmrg	fi
54685f5b92ffSmrg
54695f5b92ffSmrg
54705f5b92ffSmrg	if test "$linkmode" = prog && test "$pass" != link; then
54715f5b92ffSmrg	  newlib_search_path="$newlib_search_path $ladir"
54725f5b92ffSmrg	  deplibs="$lib $deplibs"
54735f5b92ffSmrg
54745f5b92ffSmrg	  linkalldeplibs=no
54755f5b92ffSmrg	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
54765f5b92ffSmrg	     test "$build_libtool_libs" = no; then
54775f5b92ffSmrg	    linkalldeplibs=yes
54785f5b92ffSmrg	  fi
54795f5b92ffSmrg
54805f5b92ffSmrg	  tmp_libs=
54815f5b92ffSmrg	  for deplib in $dependency_libs; do
54825f5b92ffSmrg	    case $deplib in
54835f5b92ffSmrg	    -L*) func_stripname '-L' '' "$deplib"
54845f5b92ffSmrg	         newlib_search_path="$newlib_search_path $func_stripname_result"
54855f5b92ffSmrg		 ;;
54865f5b92ffSmrg	    esac
54875f5b92ffSmrg	    # Need to link against all dependency_libs?
54885f5b92ffSmrg	    if test "$linkalldeplibs" = yes; then
54895f5b92ffSmrg	      deplibs="$deplib $deplibs"
54905f5b92ffSmrg	    else
54915f5b92ffSmrg	      # Need to hardcode shared library paths
54925f5b92ffSmrg	      # or/and link against static libraries
54935f5b92ffSmrg	      newdependency_libs="$deplib $newdependency_libs"
54945f5b92ffSmrg	    fi
54955f5b92ffSmrg	    if $opt_duplicate_deps ; then
54965f5b92ffSmrg	      case "$tmp_libs " in
54975f5b92ffSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
54985f5b92ffSmrg	      esac
54995f5b92ffSmrg	    fi
55005f5b92ffSmrg	    tmp_libs="$tmp_libs $deplib"
55015f5b92ffSmrg	  done # for deplib
55025f5b92ffSmrg	  continue
55035f5b92ffSmrg	fi # $linkmode = prog...
55045f5b92ffSmrg
55055f5b92ffSmrg	if test "$linkmode,$pass" = "prog,link"; then
55065f5b92ffSmrg	  if test -n "$library_names" &&
55075f5b92ffSmrg	     { { test "$prefer_static_libs" = no ||
55085f5b92ffSmrg	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
55095f5b92ffSmrg	       test -z "$old_library"; }; then
55105f5b92ffSmrg	    # We need to hardcode the library path
55115f5b92ffSmrg	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
55125f5b92ffSmrg	      # Make sure the rpath contains only unique directories.
55135f5b92ffSmrg	      case "$temp_rpath:" in
55145f5b92ffSmrg	      *"$absdir:"*) ;;
55155f5b92ffSmrg	      *) temp_rpath="$temp_rpath$absdir:" ;;
55165f5b92ffSmrg	      esac
55175f5b92ffSmrg	    fi
55185f5b92ffSmrg
55195f5b92ffSmrg	    # Hardcode the library path.
55205f5b92ffSmrg	    # Skip directories that are in the system default run-time
55215f5b92ffSmrg	    # search path.
55225f5b92ffSmrg	    case " $sys_lib_dlsearch_path " in
55235f5b92ffSmrg	    *" $absdir "*) ;;
55245f5b92ffSmrg	    *)
55255f5b92ffSmrg	      case "$compile_rpath " in
55265f5b92ffSmrg	      *" $absdir "*) ;;
55275f5b92ffSmrg	      *) compile_rpath="$compile_rpath $absdir"
55285f5b92ffSmrg	      esac
55295f5b92ffSmrg	      ;;
55305f5b92ffSmrg	    esac
55315f5b92ffSmrg	    case " $sys_lib_dlsearch_path " in
55325f5b92ffSmrg	    *" $libdir "*) ;;
55335f5b92ffSmrg	    *)
55345f5b92ffSmrg	      case "$finalize_rpath " in
55355f5b92ffSmrg	      *" $libdir "*) ;;
55365f5b92ffSmrg	      *) finalize_rpath="$finalize_rpath $libdir"
55375f5b92ffSmrg	      esac
55385f5b92ffSmrg	      ;;
55395f5b92ffSmrg	    esac
55405f5b92ffSmrg	  fi # $linkmode,$pass = prog,link...
55415f5b92ffSmrg
55425f5b92ffSmrg	  if test "$alldeplibs" = yes &&
55435f5b92ffSmrg	     { test "$deplibs_check_method" = pass_all ||
55445f5b92ffSmrg	       { test "$build_libtool_libs" = yes &&
55455f5b92ffSmrg		 test -n "$library_names"; }; }; then
55465f5b92ffSmrg	    # We only need to search for static libraries
55475f5b92ffSmrg	    continue
55485f5b92ffSmrg	  fi
55495f5b92ffSmrg	fi
55505f5b92ffSmrg
55515f5b92ffSmrg	link_static=no # Whether the deplib will be linked statically
55525f5b92ffSmrg	use_static_libs=$prefer_static_libs
55535f5b92ffSmrg	if test "$use_static_libs" = built && test "$installed" = yes; then
55545f5b92ffSmrg	  use_static_libs=no
55555f5b92ffSmrg	fi
55565f5b92ffSmrg	if test -n "$library_names" &&
55575f5b92ffSmrg	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
55585f5b92ffSmrg	  case $host in
55595f5b92ffSmrg	  *cygwin* | *mingw* | *cegcc*)
55605f5b92ffSmrg	      # No point in relinking DLLs because paths are not encoded
55615f5b92ffSmrg	      notinst_deplibs="$notinst_deplibs $lib"
55625f5b92ffSmrg	      need_relink=no
55635f5b92ffSmrg	    ;;
55645f5b92ffSmrg	  *)
55655f5b92ffSmrg	    if test "$installed" = no; then
55665f5b92ffSmrg	      notinst_deplibs="$notinst_deplibs $lib"
55675f5b92ffSmrg	      need_relink=yes
55685f5b92ffSmrg	    fi
55695f5b92ffSmrg	    ;;
55705f5b92ffSmrg	  esac
55715f5b92ffSmrg	  # This is a shared library
55725f5b92ffSmrg
55735f5b92ffSmrg	  # Warn about portability, can't link against -module's on some
55745f5b92ffSmrg	  # systems (darwin).  Don't bleat about dlopened modules though!
55755f5b92ffSmrg	  dlopenmodule=""
55765f5b92ffSmrg	  for dlpremoduletest in $dlprefiles; do
55775f5b92ffSmrg	    if test "X$dlpremoduletest" = "X$lib"; then
55785f5b92ffSmrg	      dlopenmodule="$dlpremoduletest"
55795f5b92ffSmrg	      break
55805f5b92ffSmrg	    fi
55815f5b92ffSmrg	  done
55825f5b92ffSmrg	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
55835f5b92ffSmrg	    $ECHO
55845f5b92ffSmrg	    if test "$linkmode" = prog; then
55855f5b92ffSmrg	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
55865f5b92ffSmrg	    else
55875f5b92ffSmrg	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
55885f5b92ffSmrg	    fi
55895f5b92ffSmrg	    $ECHO "*** $linklib is not portable!"
55905f5b92ffSmrg	  fi
55915f5b92ffSmrg	  if test "$linkmode" = lib &&
55925f5b92ffSmrg	     test "$hardcode_into_libs" = yes; then
55935f5b92ffSmrg	    # Hardcode the library path.
55945f5b92ffSmrg	    # Skip directories that are in the system default run-time
55955f5b92ffSmrg	    # search path.
55965f5b92ffSmrg	    case " $sys_lib_dlsearch_path " in
55975f5b92ffSmrg	    *" $absdir "*) ;;
55985f5b92ffSmrg	    *)
55995f5b92ffSmrg	      case "$compile_rpath " in
56005f5b92ffSmrg	      *" $absdir "*) ;;
56015f5b92ffSmrg	      *) compile_rpath="$compile_rpath $absdir"
56025f5b92ffSmrg	      esac
56035f5b92ffSmrg	      ;;
56045f5b92ffSmrg	    esac
56055f5b92ffSmrg	    case " $sys_lib_dlsearch_path " in
56065f5b92ffSmrg	    *" $libdir "*) ;;
56075f5b92ffSmrg	    *)
56085f5b92ffSmrg	      case "$finalize_rpath " in
56095f5b92ffSmrg	      *" $libdir "*) ;;
56105f5b92ffSmrg	      *) finalize_rpath="$finalize_rpath $libdir"
56115f5b92ffSmrg	      esac
56125f5b92ffSmrg	      ;;
56135f5b92ffSmrg	    esac
56145f5b92ffSmrg	  fi
56155f5b92ffSmrg
56165f5b92ffSmrg	  if test -n "$old_archive_from_expsyms_cmds"; then
56175f5b92ffSmrg	    # figure out the soname
56185f5b92ffSmrg	    set dummy $library_names
56195f5b92ffSmrg	    shift
56205f5b92ffSmrg	    realname="$1"
56215f5b92ffSmrg	    shift
56225f5b92ffSmrg	    libname=`eval "\\$ECHO \"$libname_spec\""`
56235f5b92ffSmrg	    # use dlname if we got it. it's perfectly good, no?
56245f5b92ffSmrg	    if test -n "$dlname"; then
56255f5b92ffSmrg	      soname="$dlname"
56265f5b92ffSmrg	    elif test -n "$soname_spec"; then
56275f5b92ffSmrg	      # bleh windows
56285f5b92ffSmrg	      case $host in
56295f5b92ffSmrg	      *cygwin* | mingw* | *cegcc*)
56305f5b92ffSmrg	        func_arith $current - $age
56315f5b92ffSmrg		major=$func_arith_result
56325f5b92ffSmrg		versuffix="-$major"
56335f5b92ffSmrg		;;
56345f5b92ffSmrg	      esac
56355f5b92ffSmrg	      eval soname=\"$soname_spec\"
56365f5b92ffSmrg	    else
56375f5b92ffSmrg	      soname="$realname"
56385f5b92ffSmrg	    fi
56395f5b92ffSmrg
56405f5b92ffSmrg	    # Make a new name for the extract_expsyms_cmds to use
56415f5b92ffSmrg	    soroot="$soname"
56425f5b92ffSmrg	    func_basename "$soroot"
56435f5b92ffSmrg	    soname="$func_basename_result"
56445f5b92ffSmrg	    func_stripname 'lib' '.dll' "$soname"
56455f5b92ffSmrg	    newlib=libimp-$func_stripname_result.a
56465f5b92ffSmrg
56475f5b92ffSmrg	    # If the library has no export list, then create one now
56485f5b92ffSmrg	    if test -f "$output_objdir/$soname-def"; then :
56495f5b92ffSmrg	    else
56505f5b92ffSmrg	      func_verbose "extracting exported symbol list from \`$soname'"
56515f5b92ffSmrg	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
56525f5b92ffSmrg	    fi
56535f5b92ffSmrg
56545f5b92ffSmrg	    # Create $newlib
56555f5b92ffSmrg	    if test -f "$output_objdir/$newlib"; then :; else
56565f5b92ffSmrg	      func_verbose "generating import library for \`$soname'"
56575f5b92ffSmrg	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
56585f5b92ffSmrg	    fi
56595f5b92ffSmrg	    # make sure the library variables are pointing to the new library
56605f5b92ffSmrg	    dir=$output_objdir
56615f5b92ffSmrg	    linklib=$newlib
56625f5b92ffSmrg	  fi # test -n "$old_archive_from_expsyms_cmds"
56635f5b92ffSmrg
56645f5b92ffSmrg	  if test "$linkmode" = prog || test "$mode" != relink; then
56655f5b92ffSmrg	    add_shlibpath=
56665f5b92ffSmrg	    add_dir=
56675f5b92ffSmrg	    add=
56685f5b92ffSmrg	    lib_linked=yes
56695f5b92ffSmrg	    case $hardcode_action in
56705f5b92ffSmrg	    immediate | unsupported)
56715f5b92ffSmrg	      if test "$hardcode_direct" = no; then
56725f5b92ffSmrg		add="$dir/$linklib"
56735f5b92ffSmrg		case $host in
56745f5b92ffSmrg		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
56755f5b92ffSmrg		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
56765f5b92ffSmrg		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
56775f5b92ffSmrg		    *-*-unixware7*) add_dir="-L$dir" ;;
56785f5b92ffSmrg		  *-*-darwin* )
56795f5b92ffSmrg		    # if the lib is a (non-dlopened) module then we can not
56805f5b92ffSmrg		    # link against it, someone is ignoring the earlier warnings
56815f5b92ffSmrg		    if /usr/bin/file -L $add 2> /dev/null |
56825f5b92ffSmrg			 $GREP ": [^:]* bundle" >/dev/null ; then
56835f5b92ffSmrg		      if test "X$dlopenmodule" != "X$lib"; then
56845f5b92ffSmrg			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
56855f5b92ffSmrg			if test -z "$old_library" ; then
56865f5b92ffSmrg			  $ECHO
56875f5b92ffSmrg			  $ECHO "*** And there doesn't seem to be a static archive available"
56885f5b92ffSmrg			  $ECHO "*** The link will probably fail, sorry"
56895f5b92ffSmrg			else
56905f5b92ffSmrg			  add="$dir/$old_library"
56915f5b92ffSmrg			fi
56925f5b92ffSmrg		      elif test -n "$old_library"; then
56935f5b92ffSmrg			add="$dir/$old_library"
56945f5b92ffSmrg		      fi
56955f5b92ffSmrg		    fi
56965f5b92ffSmrg		esac
56975f5b92ffSmrg	      elif test "$hardcode_minus_L" = no; then
56985f5b92ffSmrg		case $host in
56995f5b92ffSmrg		*-*-sunos*) add_shlibpath="$dir" ;;
57005f5b92ffSmrg		esac
57015f5b92ffSmrg		add_dir="-L$dir"
57025f5b92ffSmrg		add="-l$name"
57035f5b92ffSmrg	      elif test "$hardcode_shlibpath_var" = no; then
57045f5b92ffSmrg		add_shlibpath="$dir"
57055f5b92ffSmrg		add="-l$name"
57065f5b92ffSmrg	      else
57075f5b92ffSmrg		lib_linked=no
57085f5b92ffSmrg	      fi
57095f5b92ffSmrg	      ;;
57105f5b92ffSmrg	    relink)
57115f5b92ffSmrg	      if test "$hardcode_direct" = yes &&
57125f5b92ffSmrg	         test "$hardcode_direct_absolute" = no; then
57135f5b92ffSmrg		add="$dir/$linklib"
57145f5b92ffSmrg	      elif test "$hardcode_minus_L" = yes; then
57155f5b92ffSmrg		add_dir="-L$dir"
57165f5b92ffSmrg		# Try looking first in the location we're being installed to.
57175f5b92ffSmrg		if test -n "$inst_prefix_dir"; then
57185f5b92ffSmrg		  case $libdir in
57195f5b92ffSmrg		    [\\/]*)
57205f5b92ffSmrg		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
57215f5b92ffSmrg		      ;;
57225f5b92ffSmrg		  esac
57235f5b92ffSmrg		fi
57245f5b92ffSmrg		add="-l$name"
57255f5b92ffSmrg	      elif test "$hardcode_shlibpath_var" = yes; then
57265f5b92ffSmrg		add_shlibpath="$dir"
57275f5b92ffSmrg		add="-l$name"
57285f5b92ffSmrg	      else
57295f5b92ffSmrg		lib_linked=no
57305f5b92ffSmrg	      fi
57315f5b92ffSmrg	      ;;
57325f5b92ffSmrg	    *) lib_linked=no ;;
57335f5b92ffSmrg	    esac
57345f5b92ffSmrg
57355f5b92ffSmrg	    if test "$lib_linked" != yes; then
57365f5b92ffSmrg	      func_fatal_configuration "unsupported hardcode properties"
57375f5b92ffSmrg	    fi
57385f5b92ffSmrg
57395f5b92ffSmrg	    if test -n "$add_shlibpath"; then
57405f5b92ffSmrg	      case :$compile_shlibpath: in
57415f5b92ffSmrg	      *":$add_shlibpath:"*) ;;
57425f5b92ffSmrg	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
57435f5b92ffSmrg	      esac
57445f5b92ffSmrg	    fi
57455f5b92ffSmrg	    if test "$linkmode" = prog; then
57465f5b92ffSmrg	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
57475f5b92ffSmrg	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
57485f5b92ffSmrg	    else
57495f5b92ffSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
57505f5b92ffSmrg	      test -n "$add" && deplibs="$add $deplibs"
57515f5b92ffSmrg	      if test "$hardcode_direct" != yes &&
57525f5b92ffSmrg		 test "$hardcode_minus_L" != yes &&
57535f5b92ffSmrg		 test "$hardcode_shlibpath_var" = yes; then
57545f5b92ffSmrg		case :$finalize_shlibpath: in
57555f5b92ffSmrg		*":$libdir:"*) ;;
57565f5b92ffSmrg		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
57575f5b92ffSmrg		esac
57585f5b92ffSmrg	      fi
57595f5b92ffSmrg	    fi
57605f5b92ffSmrg	  fi
57615f5b92ffSmrg
57625f5b92ffSmrg	  if test "$linkmode" = prog || test "$mode" = relink; then
57635f5b92ffSmrg	    add_shlibpath=
57645f5b92ffSmrg	    add_dir=
57655f5b92ffSmrg	    add=
57665f5b92ffSmrg	    # Finalize command for both is simple: just hardcode it.
57675f5b92ffSmrg	    if test "$hardcode_direct" = yes &&
57685f5b92ffSmrg	       test "$hardcode_direct_absolute" = no; then
57695f5b92ffSmrg	      add="$libdir/$linklib"
57705f5b92ffSmrg	    elif test "$hardcode_minus_L" = yes; then
57715f5b92ffSmrg	      add_dir="-L$libdir"
57725f5b92ffSmrg	      add="-l$name"
57735f5b92ffSmrg	    elif test "$hardcode_shlibpath_var" = yes; then
57745f5b92ffSmrg	      case :$finalize_shlibpath: in
57755f5b92ffSmrg	      *":$libdir:"*) ;;
57765f5b92ffSmrg	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
57775f5b92ffSmrg	      esac
57785f5b92ffSmrg	      add="-l$name"
57795f5b92ffSmrg	    elif test "$hardcode_automatic" = yes; then
57805f5b92ffSmrg	      if test -n "$inst_prefix_dir" &&
57815f5b92ffSmrg		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
57825f5b92ffSmrg		add="$inst_prefix_dir$libdir/$linklib"
57835f5b92ffSmrg	      else
57845f5b92ffSmrg		add="$libdir/$linklib"
57855f5b92ffSmrg	      fi
57865f5b92ffSmrg	    else
57875f5b92ffSmrg	      # We cannot seem to hardcode it, guess we'll fake it.
57885f5b92ffSmrg	      add_dir="-L$libdir"
57895f5b92ffSmrg	      # Try looking first in the location we're being installed to.
57905f5b92ffSmrg	      if test -n "$inst_prefix_dir"; then
57915f5b92ffSmrg		case $libdir in
57925f5b92ffSmrg		  [\\/]*)
57935f5b92ffSmrg		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
57945f5b92ffSmrg		    ;;
57955f5b92ffSmrg		esac
57965f5b92ffSmrg	      fi
57975f5b92ffSmrg	      add="-l$name"
57985f5b92ffSmrg	    fi
57995f5b92ffSmrg
58005f5b92ffSmrg	    if test "$linkmode" = prog; then
58015f5b92ffSmrg	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
58025f5b92ffSmrg	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
58035f5b92ffSmrg	    else
58045f5b92ffSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
58055f5b92ffSmrg	      test -n "$add" && deplibs="$add $deplibs"
58065f5b92ffSmrg	    fi
58075f5b92ffSmrg	  fi
58085f5b92ffSmrg	elif test "$linkmode" = prog; then
58095f5b92ffSmrg	  # Here we assume that one of hardcode_direct or hardcode_minus_L
58105f5b92ffSmrg	  # is not unsupported.  This is valid on all known static and
58115f5b92ffSmrg	  # shared platforms.
58125f5b92ffSmrg	  if test "$hardcode_direct" != unsupported; then
58135f5b92ffSmrg	    test -n "$old_library" && linklib="$old_library"
58145f5b92ffSmrg	    compile_deplibs="$dir/$linklib $compile_deplibs"
58155f5b92ffSmrg	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
58165f5b92ffSmrg	  else
58175f5b92ffSmrg	    compile_deplibs="-l$name -L$dir $compile_deplibs"
58185f5b92ffSmrg	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
58195f5b92ffSmrg	  fi
58205f5b92ffSmrg	elif test "$build_libtool_libs" = yes; then
58215f5b92ffSmrg	  # Not a shared library
58225f5b92ffSmrg	  if test "$deplibs_check_method" != pass_all; then
58235f5b92ffSmrg	    # We're trying link a shared library against a static one
58245f5b92ffSmrg	    # but the system doesn't support it.
58255f5b92ffSmrg
58265f5b92ffSmrg	    # Just print a warning and add the library to dependency_libs so
58275f5b92ffSmrg	    # that the program can be linked against the static library.
58285f5b92ffSmrg	    $ECHO
58295f5b92ffSmrg	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
58305f5b92ffSmrg	    $ECHO "*** I have the capability to make that library automatically link in when"
58315f5b92ffSmrg	    $ECHO "*** you link to this library.  But I can only do this if you have a"
58325f5b92ffSmrg	    $ECHO "*** shared version of the library, which you do not appear to have."
58335f5b92ffSmrg	    if test "$module" = yes; then
58345f5b92ffSmrg	      $ECHO "*** But as you try to build a module library, libtool will still create "
58355f5b92ffSmrg	      $ECHO "*** a static module, that should work as long as the dlopening application"
58365f5b92ffSmrg	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
58375f5b92ffSmrg	      if test -z "$global_symbol_pipe"; then
58385f5b92ffSmrg		$ECHO
58395f5b92ffSmrg		$ECHO "*** However, this would only work if libtool was able to extract symbol"
58405f5b92ffSmrg		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
58415f5b92ffSmrg		$ECHO "*** not find such a program.  So, this module is probably useless."
58425f5b92ffSmrg		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
58435f5b92ffSmrg	      fi
58445f5b92ffSmrg	      if test "$build_old_libs" = no; then
58455f5b92ffSmrg		build_libtool_libs=module
58465f5b92ffSmrg		build_old_libs=yes
58475f5b92ffSmrg	      else
58485f5b92ffSmrg		build_libtool_libs=no
58495f5b92ffSmrg	      fi
58505f5b92ffSmrg	    fi
58515f5b92ffSmrg	  else
58525f5b92ffSmrg	    deplibs="$dir/$old_library $deplibs"
58535f5b92ffSmrg	    link_static=yes
58545f5b92ffSmrg	  fi
58555f5b92ffSmrg	fi # link shared/static library?
58565f5b92ffSmrg
58575f5b92ffSmrg	if test "$linkmode" = lib; then
58585f5b92ffSmrg	  if test -n "$dependency_libs" &&
58595f5b92ffSmrg	     { test "$hardcode_into_libs" != yes ||
58605f5b92ffSmrg	       test "$build_old_libs" = yes ||
58615f5b92ffSmrg	       test "$link_static" = yes; }; then
58625f5b92ffSmrg	    # Extract -R from dependency_libs
58635f5b92ffSmrg	    temp_deplibs=
58645f5b92ffSmrg	    for libdir in $dependency_libs; do
58655f5b92ffSmrg	      case $libdir in
58665f5b92ffSmrg	      -R*) func_stripname '-R' '' "$libdir"
58675f5b92ffSmrg	           temp_xrpath=$func_stripname_result
58685f5b92ffSmrg		   case " $xrpath " in
58695f5b92ffSmrg		   *" $temp_xrpath "*) ;;
58705f5b92ffSmrg		   *) xrpath="$xrpath $temp_xrpath";;
58715f5b92ffSmrg		   esac;;
58725f5b92ffSmrg	      *) temp_deplibs="$temp_deplibs $libdir";;
58735f5b92ffSmrg	      esac
58745f5b92ffSmrg	    done
58755f5b92ffSmrg	    dependency_libs="$temp_deplibs"
58765f5b92ffSmrg	  fi
58775f5b92ffSmrg
58785f5b92ffSmrg	  newlib_search_path="$newlib_search_path $absdir"
58795f5b92ffSmrg	  # Link against this library
58805f5b92ffSmrg	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
58815f5b92ffSmrg	  # ... and its dependency_libs
58825f5b92ffSmrg	  tmp_libs=
58835f5b92ffSmrg	  for deplib in $dependency_libs; do
58845f5b92ffSmrg	    newdependency_libs="$deplib $newdependency_libs"
58855f5b92ffSmrg	    if $opt_duplicate_deps ; then
58865f5b92ffSmrg	      case "$tmp_libs " in
58875f5b92ffSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
58885f5b92ffSmrg	      esac
58895f5b92ffSmrg	    fi
58905f5b92ffSmrg	    tmp_libs="$tmp_libs $deplib"
58915f5b92ffSmrg	  done
58925f5b92ffSmrg
58935f5b92ffSmrg	  if test "$link_all_deplibs" != no; then
58945f5b92ffSmrg	    # Add the search paths of all dependency libraries
58955f5b92ffSmrg	    for deplib in $dependency_libs; do
58965f5b92ffSmrg	      case $deplib in
58975f5b92ffSmrg	      -L*) path="$deplib" ;;
58985f5b92ffSmrg	      *.la)
58995f5b92ffSmrg	        func_dirname "$deplib" "" "."
59005f5b92ffSmrg		dir="$func_dirname_result"
59015f5b92ffSmrg		# We need an absolute path.
59025f5b92ffSmrg		case $dir in
59035f5b92ffSmrg		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
59045f5b92ffSmrg		*)
59055f5b92ffSmrg		  absdir=`cd "$dir" && pwd`
59065f5b92ffSmrg		  if test -z "$absdir"; then
59075f5b92ffSmrg		    func_warning "cannot determine absolute directory name of \`$dir'"
59085f5b92ffSmrg		    absdir="$dir"
59095f5b92ffSmrg		  fi
59105f5b92ffSmrg		  ;;
59115f5b92ffSmrg		esac
59125f5b92ffSmrg		if $GREP "^installed=no" $deplib > /dev/null; then
59135f5b92ffSmrg		case $host in
59145f5b92ffSmrg		*-*-darwin*)
59155f5b92ffSmrg		  depdepl=
59165f5b92ffSmrg		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
59175f5b92ffSmrg		  if test -n "$deplibrary_names" ; then
59185f5b92ffSmrg		    for tmp in $deplibrary_names ; do
59195f5b92ffSmrg		      depdepl=$tmp
59205f5b92ffSmrg		    done
59215f5b92ffSmrg		    if test -f "$absdir/$objdir/$depdepl" ; then
59225f5b92ffSmrg		      depdepl="$absdir/$objdir/$depdepl"
59235f5b92ffSmrg		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
59245f5b92ffSmrg                      if test -z "$darwin_install_name"; then
59255f5b92ffSmrg                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
59265f5b92ffSmrg                      fi
59275f5b92ffSmrg		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
59285f5b92ffSmrg		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
59295f5b92ffSmrg		      path=
59305f5b92ffSmrg		    fi
59315f5b92ffSmrg		  fi
59325f5b92ffSmrg		  ;;
59335f5b92ffSmrg		*)
59345f5b92ffSmrg		  path="-L$absdir/$objdir"
59355f5b92ffSmrg		  ;;
59365f5b92ffSmrg		esac
59375f5b92ffSmrg		else
59385f5b92ffSmrg		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
59395f5b92ffSmrg		  test -z "$libdir" && \
59405f5b92ffSmrg		    func_fatal_error "\`$deplib' is not a valid libtool archive"
59415f5b92ffSmrg		  test "$absdir" != "$libdir" && \
59425f5b92ffSmrg		    func_warning "\`$deplib' seems to be moved"
59435f5b92ffSmrg
59445f5b92ffSmrg		  path="-L$absdir"
59455f5b92ffSmrg		fi
59465f5b92ffSmrg		;;
59475f5b92ffSmrg	      esac
59485f5b92ffSmrg	      case " $deplibs " in
59495f5b92ffSmrg	      *" $path "*) ;;
59505f5b92ffSmrg	      *) deplibs="$path $deplibs" ;;
59515f5b92ffSmrg	      esac
59525f5b92ffSmrg	    done
59535f5b92ffSmrg	  fi # link_all_deplibs != no
59545f5b92ffSmrg	fi # linkmode = lib
59555f5b92ffSmrg      done # for deplib in $libs
59565f5b92ffSmrg      if test "$pass" = link; then
59575f5b92ffSmrg	if test "$linkmode" = "prog"; then
59585f5b92ffSmrg	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
59595f5b92ffSmrg	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
59605f5b92ffSmrg	else
59615f5b92ffSmrg	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
59625f5b92ffSmrg	fi
59635f5b92ffSmrg      fi
59645f5b92ffSmrg      dependency_libs="$newdependency_libs"
59655f5b92ffSmrg      if test "$pass" = dlpreopen; then
59665f5b92ffSmrg	# Link the dlpreopened libraries before other libraries
59675f5b92ffSmrg	for deplib in $save_deplibs; do
59685f5b92ffSmrg	  deplibs="$deplib $deplibs"
59695f5b92ffSmrg	done
59705f5b92ffSmrg      fi
59715f5b92ffSmrg      if test "$pass" != dlopen; then
59725f5b92ffSmrg	if test "$pass" != conv; then
59735f5b92ffSmrg	  # Make sure lib_search_path contains only unique directories.
59745f5b92ffSmrg	  lib_search_path=
59755f5b92ffSmrg	  for dir in $newlib_search_path; do
59765f5b92ffSmrg	    case "$lib_search_path " in
59775f5b92ffSmrg	    *" $dir "*) ;;
59785f5b92ffSmrg	    *) lib_search_path="$lib_search_path $dir" ;;
59795f5b92ffSmrg	    esac
59805f5b92ffSmrg	  done
59815f5b92ffSmrg	  newlib_search_path=
59825f5b92ffSmrg	fi
59835f5b92ffSmrg
59845f5b92ffSmrg	if test "$linkmode,$pass" != "prog,link"; then
59855f5b92ffSmrg	  vars="deplibs"
59865f5b92ffSmrg	else
59875f5b92ffSmrg	  vars="compile_deplibs finalize_deplibs"
59885f5b92ffSmrg	fi
59895f5b92ffSmrg	for var in $vars dependency_libs; do
59905f5b92ffSmrg	  # Add libraries to $var in reverse order
59915f5b92ffSmrg	  eval tmp_libs=\"\$$var\"
59925f5b92ffSmrg	  new_libs=
59935f5b92ffSmrg	  for deplib in $tmp_libs; do
59945f5b92ffSmrg	    # FIXME: Pedantically, this is the right thing to do, so
59955f5b92ffSmrg	    #        that some nasty dependency loop isn't accidentally
59965f5b92ffSmrg	    #        broken:
59975f5b92ffSmrg	    #new_libs="$deplib $new_libs"
59985f5b92ffSmrg	    # Pragmatically, this seems to cause very few problems in
59995f5b92ffSmrg	    # practice:
60005f5b92ffSmrg	    case $deplib in
60015f5b92ffSmrg	    -L*) new_libs="$deplib $new_libs" ;;
60025f5b92ffSmrg	    -R*) ;;
60035f5b92ffSmrg	    *)
60045f5b92ffSmrg	      # And here is the reason: when a library appears more
60055f5b92ffSmrg	      # than once as an explicit dependence of a library, or
60065f5b92ffSmrg	      # is implicitly linked in more than once by the
60075f5b92ffSmrg	      # compiler, it is considered special, and multiple
60085f5b92ffSmrg	      # occurrences thereof are not removed.  Compare this
60095f5b92ffSmrg	      # with having the same library being listed as a
60105f5b92ffSmrg	      # dependency of multiple other libraries: in this case,
60115f5b92ffSmrg	      # we know (pedantically, we assume) the library does not
60125f5b92ffSmrg	      # need to be listed more than once, so we keep only the
60135f5b92ffSmrg	      # last copy.  This is not always right, but it is rare
60145f5b92ffSmrg	      # enough that we require users that really mean to play
60155f5b92ffSmrg	      # such unportable linking tricks to link the library
60165f5b92ffSmrg	      # using -Wl,-lname, so that libtool does not consider it
60175f5b92ffSmrg	      # for duplicate removal.
60185f5b92ffSmrg	      case " $specialdeplibs " in
60195f5b92ffSmrg	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
60205f5b92ffSmrg	      *)
60215f5b92ffSmrg		case " $new_libs " in
60225f5b92ffSmrg		*" $deplib "*) ;;
60235f5b92ffSmrg		*) new_libs="$deplib $new_libs" ;;
60245f5b92ffSmrg		esac
60255f5b92ffSmrg		;;
60265f5b92ffSmrg	      esac
60275f5b92ffSmrg	      ;;
60285f5b92ffSmrg	    esac
60295f5b92ffSmrg	  done
60305f5b92ffSmrg	  tmp_libs=
60315f5b92ffSmrg	  for deplib in $new_libs; do
60325f5b92ffSmrg	    case $deplib in
60335f5b92ffSmrg	    -L*)
60345f5b92ffSmrg	      case " $tmp_libs " in
60355f5b92ffSmrg	      *" $deplib "*) ;;
60365f5b92ffSmrg	      *) tmp_libs="$tmp_libs $deplib" ;;
60375f5b92ffSmrg	      esac
60385f5b92ffSmrg	      ;;
60395f5b92ffSmrg	    *) tmp_libs="$tmp_libs $deplib" ;;
60405f5b92ffSmrg	    esac
60415f5b92ffSmrg	  done
60425f5b92ffSmrg	  eval $var=\"$tmp_libs\"
60435f5b92ffSmrg	done # for var
60445f5b92ffSmrg      fi
60455f5b92ffSmrg      # Last step: remove runtime libs from dependency_libs
60465f5b92ffSmrg      # (they stay in deplibs)
60475f5b92ffSmrg      tmp_libs=
60485f5b92ffSmrg      for i in $dependency_libs ; do
60495f5b92ffSmrg	case " $predeps $postdeps $compiler_lib_search_path " in
60505f5b92ffSmrg	*" $i "*)
60515f5b92ffSmrg	  i=""
60525f5b92ffSmrg	  ;;
60535f5b92ffSmrg	esac
60545f5b92ffSmrg	if test -n "$i" ; then
60555f5b92ffSmrg	  tmp_libs="$tmp_libs $i"
60565f5b92ffSmrg	fi
60575f5b92ffSmrg      done
60585f5b92ffSmrg      dependency_libs=$tmp_libs
60595f5b92ffSmrg    done # for pass
60605f5b92ffSmrg    if test "$linkmode" = prog; then
60615f5b92ffSmrg      dlfiles="$newdlfiles"
60625f5b92ffSmrg    fi
60635f5b92ffSmrg    if test "$linkmode" = prog || test "$linkmode" = lib; then
60645f5b92ffSmrg      dlprefiles="$newdlprefiles"
60655f5b92ffSmrg    fi
60665f5b92ffSmrg
60675f5b92ffSmrg    case $linkmode in
60685f5b92ffSmrg    oldlib)
60695f5b92ffSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
60705f5b92ffSmrg	func_warning "\`-dlopen' is ignored for archives"
60715f5b92ffSmrg      fi
60725f5b92ffSmrg
60735f5b92ffSmrg      case " $deplibs" in
60745f5b92ffSmrg      *\ -l* | *\ -L*)
60755f5b92ffSmrg	func_warning "\`-l' and \`-L' are ignored for archives" ;;
60765f5b92ffSmrg      esac
60775f5b92ffSmrg
60785f5b92ffSmrg      test -n "$rpath" && \
60795f5b92ffSmrg	func_warning "\`-rpath' is ignored for archives"
60805f5b92ffSmrg
60815f5b92ffSmrg      test -n "$xrpath" && \
60825f5b92ffSmrg	func_warning "\`-R' is ignored for archives"
60835f5b92ffSmrg
60845f5b92ffSmrg      test -n "$vinfo" && \
60855f5b92ffSmrg	func_warning "\`-version-info/-version-number' is ignored for archives"
60865f5b92ffSmrg
60875f5b92ffSmrg      test -n "$release" && \
60885f5b92ffSmrg	func_warning "\`-release' is ignored for archives"
60895f5b92ffSmrg
60905f5b92ffSmrg      test -n "$export_symbols$export_symbols_regex" && \
60915f5b92ffSmrg	func_warning "\`-export-symbols' is ignored for archives"
60925f5b92ffSmrg
60935f5b92ffSmrg      # Now set the variables for building old libraries.
60945f5b92ffSmrg      build_libtool_libs=no
60955f5b92ffSmrg      oldlibs="$output"
60965f5b92ffSmrg      objs="$objs$old_deplibs"
60975f5b92ffSmrg      ;;
60985f5b92ffSmrg
60995f5b92ffSmrg    lib)
61005f5b92ffSmrg      # Make sure we only generate libraries of the form `libNAME.la'.
61015f5b92ffSmrg      case $outputname in
61025f5b92ffSmrg      lib*)
61035f5b92ffSmrg	func_stripname 'lib' '.la' "$outputname"
61045f5b92ffSmrg	name=$func_stripname_result
61055f5b92ffSmrg	eval shared_ext=\"$shrext_cmds\"
61065f5b92ffSmrg	eval libname=\"$libname_spec\"
61075f5b92ffSmrg	;;
61085f5b92ffSmrg      *)
61095f5b92ffSmrg	test "$module" = no && \
61105f5b92ffSmrg	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
61115f5b92ffSmrg
61125f5b92ffSmrg	if test "$need_lib_prefix" != no; then
61135f5b92ffSmrg	  # Add the "lib" prefix for modules if required
61145f5b92ffSmrg	  func_stripname '' '.la' "$outputname"
61155f5b92ffSmrg	  name=$func_stripname_result
61165f5b92ffSmrg	  eval shared_ext=\"$shrext_cmds\"
61175f5b92ffSmrg	  eval libname=\"$libname_spec\"
61185f5b92ffSmrg	else
61195f5b92ffSmrg	  func_stripname '' '.la' "$outputname"
61205f5b92ffSmrg	  libname=$func_stripname_result
61215f5b92ffSmrg	fi
61225f5b92ffSmrg	;;
61235f5b92ffSmrg      esac
61245f5b92ffSmrg
61255f5b92ffSmrg      if test -n "$objs"; then
61265f5b92ffSmrg	if test "$deplibs_check_method" != pass_all; then
61275f5b92ffSmrg	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
61285f5b92ffSmrg	else
61295f5b92ffSmrg	  $ECHO
61305f5b92ffSmrg	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
61315f5b92ffSmrg	  $ECHO "*** objects $objs is not portable!"
61325f5b92ffSmrg	  libobjs="$libobjs $objs"
61335f5b92ffSmrg	fi
61345f5b92ffSmrg      fi
61355f5b92ffSmrg
61365f5b92ffSmrg      test "$dlself" != no && \
61375f5b92ffSmrg	func_warning "\`-dlopen self' is ignored for libtool libraries"
61385f5b92ffSmrg
61395f5b92ffSmrg      set dummy $rpath
61405f5b92ffSmrg      shift
61415f5b92ffSmrg      test "$#" -gt 1 && \
61425f5b92ffSmrg	func_warning "ignoring multiple \`-rpath's for a libtool library"
61435f5b92ffSmrg
61445f5b92ffSmrg      install_libdir="$1"
61455f5b92ffSmrg
61465f5b92ffSmrg      oldlibs=
61475f5b92ffSmrg      if test -z "$rpath"; then
61485f5b92ffSmrg	if test "$build_libtool_libs" = yes; then
61495f5b92ffSmrg	  # Building a libtool convenience library.
61505f5b92ffSmrg	  # Some compilers have problems with a `.al' extension so
61515f5b92ffSmrg	  # convenience libraries should have the same extension an
61525f5b92ffSmrg	  # archive normally would.
61535f5b92ffSmrg	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
61545f5b92ffSmrg	  build_libtool_libs=convenience
61555f5b92ffSmrg	  build_old_libs=yes
61565f5b92ffSmrg	fi
61575f5b92ffSmrg
61585f5b92ffSmrg	test -n "$vinfo" && \
61595f5b92ffSmrg	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
61605f5b92ffSmrg
61615f5b92ffSmrg	test -n "$release" && \
61625f5b92ffSmrg	  func_warning "\`-release' is ignored for convenience libraries"
61635f5b92ffSmrg      else
61645f5b92ffSmrg
61655f5b92ffSmrg	# Parse the version information argument.
61665f5b92ffSmrg	save_ifs="$IFS"; IFS=':'
61675f5b92ffSmrg	set dummy $vinfo 0 0 0
61685f5b92ffSmrg	shift
61695f5b92ffSmrg	IFS="$save_ifs"
61705f5b92ffSmrg
61715f5b92ffSmrg	test -n "$7" && \
61725f5b92ffSmrg	  func_fatal_help "too many parameters to \`-version-info'"
61735f5b92ffSmrg
61745f5b92ffSmrg	# convert absolute version numbers to libtool ages
61755f5b92ffSmrg	# this retains compatibility with .la files and attempts
61765f5b92ffSmrg	# to make the code below a bit more comprehensible
61775f5b92ffSmrg
61785f5b92ffSmrg	case $vinfo_number in
61795f5b92ffSmrg	yes)
61805f5b92ffSmrg	  number_major="$1"
61815f5b92ffSmrg	  number_minor="$2"
61825f5b92ffSmrg	  number_revision="$3"
61835f5b92ffSmrg	  #
61845f5b92ffSmrg	  # There are really only two kinds -- those that
61855f5b92ffSmrg	  # use the current revision as the major version
61865f5b92ffSmrg	  # and those that subtract age and use age as
61875f5b92ffSmrg	  # a minor version.  But, then there is irix
61885f5b92ffSmrg	  # which has an extra 1 added just for fun
61895f5b92ffSmrg	  #
61905f5b92ffSmrg	  case $version_type in
61915f5b92ffSmrg	  darwin|linux|osf|windows|none)
61925f5b92ffSmrg	    func_arith $number_major + $number_minor
61935f5b92ffSmrg	    current=$func_arith_result
61945f5b92ffSmrg	    age="$number_minor"
61955f5b92ffSmrg	    revision="$number_revision"
61965f5b92ffSmrg	    ;;
61975f5b92ffSmrg	  freebsd-aout|freebsd-elf|sunos)
61985f5b92ffSmrg	    current="$number_major"
61995f5b92ffSmrg	    revision="$number_minor"
62005f5b92ffSmrg	    age="0"
62015f5b92ffSmrg	    ;;
62025f5b92ffSmrg	  irix|nonstopux)
62035f5b92ffSmrg	    func_arith $number_major + $number_minor
62045f5b92ffSmrg	    current=$func_arith_result
62055f5b92ffSmrg	    age="$number_minor"
62065f5b92ffSmrg	    revision="$number_minor"
62075f5b92ffSmrg	    lt_irix_increment=no
62085f5b92ffSmrg	    ;;
62095f5b92ffSmrg	  esac
62105f5b92ffSmrg	  ;;
62115f5b92ffSmrg	no)
62125f5b92ffSmrg	  current="$1"
62135f5b92ffSmrg	  revision="$2"
62145f5b92ffSmrg	  age="$3"
62155f5b92ffSmrg	  ;;
62165f5b92ffSmrg	esac
62175f5b92ffSmrg
62185f5b92ffSmrg	# Check that each of the things are valid numbers.
62195f5b92ffSmrg	case $current in
62205f5b92ffSmrg	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]) ;;
62215f5b92ffSmrg	*)
62225f5b92ffSmrg	  func_error "CURRENT \`$current' must be a nonnegative integer"
62235f5b92ffSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
62245f5b92ffSmrg	  ;;
62255f5b92ffSmrg	esac
62265f5b92ffSmrg
62275f5b92ffSmrg	case $revision in
62285f5b92ffSmrg	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]) ;;
62295f5b92ffSmrg	*)
62305f5b92ffSmrg	  func_error "REVISION \`$revision' must be a nonnegative integer"
62315f5b92ffSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
62325f5b92ffSmrg	  ;;
62335f5b92ffSmrg	esac
62345f5b92ffSmrg
62355f5b92ffSmrg	case $age in
62365f5b92ffSmrg	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]) ;;
62375f5b92ffSmrg	*)
62385f5b92ffSmrg	  func_error "AGE \`$age' must be a nonnegative integer"
62395f5b92ffSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
62405f5b92ffSmrg	  ;;
62415f5b92ffSmrg	esac
62425f5b92ffSmrg
62435f5b92ffSmrg	if test "$age" -gt "$current"; then
62445f5b92ffSmrg	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
62455f5b92ffSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
62465f5b92ffSmrg	fi
62475f5b92ffSmrg
62485f5b92ffSmrg	# Calculate the version variables.
62495f5b92ffSmrg	major=
62505f5b92ffSmrg	versuffix=
62515f5b92ffSmrg	verstring=
62525f5b92ffSmrg	case $version_type in
62535f5b92ffSmrg	none) ;;
62545f5b92ffSmrg
62555f5b92ffSmrg	darwin)
62565f5b92ffSmrg	  # Like Linux, but with the current version available in
62575f5b92ffSmrg	  # verstring for coding it into the library header
62585f5b92ffSmrg	  func_arith $current - $age
62595f5b92ffSmrg	  major=.$func_arith_result
62605f5b92ffSmrg	  versuffix="$major.$age.$revision"
62615f5b92ffSmrg	  # Darwin ld doesn't like 0 for these options...
62625f5b92ffSmrg	  func_arith $current + 1
62635f5b92ffSmrg	  minor_current=$func_arith_result
62645f5b92ffSmrg	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
62655f5b92ffSmrg	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
62665f5b92ffSmrg	  ;;
62675f5b92ffSmrg
62685f5b92ffSmrg	freebsd-aout)
62695f5b92ffSmrg	  major=".$current"
62705f5b92ffSmrg	  versuffix=".$current.$revision";
62715f5b92ffSmrg	  ;;
62725f5b92ffSmrg
62735f5b92ffSmrg	freebsd-elf)
62745f5b92ffSmrg	  major=".$current"
62755f5b92ffSmrg	  versuffix=".$current"
62765f5b92ffSmrg	  ;;
62775f5b92ffSmrg
62785f5b92ffSmrg	irix | nonstopux)
62795f5b92ffSmrg	  if test "X$lt_irix_increment" = "Xno"; then
62805f5b92ffSmrg	    func_arith $current - $age
62815f5b92ffSmrg	  else
62825f5b92ffSmrg	    func_arith $current - $age + 1
62835f5b92ffSmrg	  fi
62845f5b92ffSmrg	  major=$func_arith_result
62855f5b92ffSmrg
62865f5b92ffSmrg	  case $version_type in
62875f5b92ffSmrg	    nonstopux) verstring_prefix=nonstopux ;;
62885f5b92ffSmrg	    *)         verstring_prefix=sgi ;;
62895f5b92ffSmrg	  esac
62905f5b92ffSmrg	  verstring="$verstring_prefix$major.$revision"
62915f5b92ffSmrg
62925f5b92ffSmrg	  # Add in all the interfaces that we are compatible with.
62935f5b92ffSmrg	  loop=$revision
62945f5b92ffSmrg	  while test "$loop" -ne 0; do
62955f5b92ffSmrg	    func_arith $revision - $loop
62965f5b92ffSmrg	    iface=$func_arith_result
62975f5b92ffSmrg	    func_arith $loop - 1
62985f5b92ffSmrg	    loop=$func_arith_result
62995f5b92ffSmrg	    verstring="$verstring_prefix$major.$iface:$verstring"
63005f5b92ffSmrg	  done
63015f5b92ffSmrg
63025f5b92ffSmrg	  # Before this point, $major must not contain `.'.
63035f5b92ffSmrg	  major=.$major
63045f5b92ffSmrg	  versuffix="$major.$revision"
63055f5b92ffSmrg	  ;;
63065f5b92ffSmrg
63075f5b92ffSmrg	linux)
63085f5b92ffSmrg	  func_arith $current - $age
63095f5b92ffSmrg	  major=.$func_arith_result
63105f5b92ffSmrg	  versuffix="$major.$age.$revision"
63115f5b92ffSmrg	  ;;
63125f5b92ffSmrg
63135f5b92ffSmrg	osf)
63145f5b92ffSmrg	  func_arith $current - $age
63155f5b92ffSmrg	  major=.$func_arith_result
63165f5b92ffSmrg	  versuffix=".$current.$age.$revision"
63175f5b92ffSmrg	  verstring="$current.$age.$revision"
63185f5b92ffSmrg
63195f5b92ffSmrg	  # Add in all the interfaces that we are compatible with.
63205f5b92ffSmrg	  loop=$age
63215f5b92ffSmrg	  while test "$loop" -ne 0; do
63225f5b92ffSmrg	    func_arith $current - $loop
63235f5b92ffSmrg	    iface=$func_arith_result
63245f5b92ffSmrg	    func_arith $loop - 1
63255f5b92ffSmrg	    loop=$func_arith_result
63265f5b92ffSmrg	    verstring="$verstring:${iface}.0"
63275f5b92ffSmrg	  done
63285f5b92ffSmrg
63295f5b92ffSmrg	  # Make executables depend on our current version.
63305f5b92ffSmrg	  verstring="$verstring:${current}.0"
63315f5b92ffSmrg	  ;;
63325f5b92ffSmrg
63335f5b92ffSmrg	qnx)
63345f5b92ffSmrg	  major=".$current"
63355f5b92ffSmrg	  versuffix=".$current"
63365f5b92ffSmrg	  ;;
63375f5b92ffSmrg
63385f5b92ffSmrg	sunos)
63395f5b92ffSmrg	  major=".$current"
63405f5b92ffSmrg	  versuffix=".$current.$revision"
63415f5b92ffSmrg	  ;;
63425f5b92ffSmrg
63435f5b92ffSmrg	windows)
63445f5b92ffSmrg	  # Use '-' rather than '.', since we only want one
63455f5b92ffSmrg	  # extension on DOS 8.3 filesystems.
63465f5b92ffSmrg	  func_arith $current - $age
63475f5b92ffSmrg	  major=$func_arith_result
63485f5b92ffSmrg	  versuffix="-$major"
63495f5b92ffSmrg	  ;;
63505f5b92ffSmrg
63515f5b92ffSmrg	*)
63525f5b92ffSmrg	  func_fatal_configuration "unknown library version type \`$version_type'"
63535f5b92ffSmrg	  ;;
63545f5b92ffSmrg	esac
63555f5b92ffSmrg
63565f5b92ffSmrg	# Clear the version info if we defaulted, and they specified a release.
63575f5b92ffSmrg	if test -z "$vinfo" && test -n "$release"; then
63585f5b92ffSmrg	  major=
63595f5b92ffSmrg	  case $version_type in
63605f5b92ffSmrg	  darwin)
63615f5b92ffSmrg	    # we can't check for "0.0" in archive_cmds due to quoting
63625f5b92ffSmrg	    # problems, so we reset it completely
63635f5b92ffSmrg	    verstring=
63645f5b92ffSmrg	    ;;
63655f5b92ffSmrg	  *)
63665f5b92ffSmrg	    verstring="0.0"
63675f5b92ffSmrg	    ;;
63685f5b92ffSmrg	  esac
63695f5b92ffSmrg	  if test "$need_version" = no; then
63705f5b92ffSmrg	    versuffix=
63715f5b92ffSmrg	  else
63725f5b92ffSmrg	    versuffix=".0.0"
63735f5b92ffSmrg	  fi
63745f5b92ffSmrg	fi
63755f5b92ffSmrg
63765f5b92ffSmrg	# Remove version info from name if versioning should be avoided
63775f5b92ffSmrg	if test "$avoid_version" = yes && test "$need_version" = no; then
63785f5b92ffSmrg	  major=
63795f5b92ffSmrg	  versuffix=
63805f5b92ffSmrg	  verstring=""
63815f5b92ffSmrg	fi
63825f5b92ffSmrg
63835f5b92ffSmrg	# Check to see if the archive will have undefined symbols.
63845f5b92ffSmrg	if test "$allow_undefined" = yes; then
63855f5b92ffSmrg	  if test "$allow_undefined_flag" = unsupported; then
63865f5b92ffSmrg	    func_warning "undefined symbols not allowed in $host shared libraries"
63875f5b92ffSmrg	    build_libtool_libs=no
63885f5b92ffSmrg	    build_old_libs=yes
63895f5b92ffSmrg	  fi
63905f5b92ffSmrg	else
63915f5b92ffSmrg	  # Don't allow undefined symbols.
63925f5b92ffSmrg	  allow_undefined_flag="$no_undefined_flag"
63935f5b92ffSmrg	fi
63945f5b92ffSmrg
63955f5b92ffSmrg      fi
63965f5b92ffSmrg
63975f5b92ffSmrg      func_generate_dlsyms "$libname" "$libname" "yes"
63985f5b92ffSmrg      libobjs="$libobjs $symfileobj"
63995f5b92ffSmrg      test "X$libobjs" = "X " && libobjs=
64005f5b92ffSmrg
64015f5b92ffSmrg      if test "$mode" != relink; then
64025f5b92ffSmrg	# Remove our outputs, but don't remove object files since they
64035f5b92ffSmrg	# may have been created when compiling PIC objects.
64045f5b92ffSmrg	removelist=
64055f5b92ffSmrg	tempremovelist=`$ECHO "$output_objdir/*"`
64065f5b92ffSmrg	for p in $tempremovelist; do
64075f5b92ffSmrg	  case $p in
64085f5b92ffSmrg	    *.$objext | *.gcno)
64095f5b92ffSmrg	       ;;
64105f5b92ffSmrg	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
64115f5b92ffSmrg	       if test "X$precious_files_regex" != "X"; then
64125f5b92ffSmrg		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
64135f5b92ffSmrg		 then
64145f5b92ffSmrg		   continue
64155f5b92ffSmrg		 fi
64165f5b92ffSmrg	       fi
64175f5b92ffSmrg	       removelist="$removelist $p"
64185f5b92ffSmrg	       ;;
64195f5b92ffSmrg	    *) ;;
64205f5b92ffSmrg	  esac
64215f5b92ffSmrg	done
64225f5b92ffSmrg	test -n "$removelist" && \
64235f5b92ffSmrg	  func_show_eval "${RM}r \$removelist"
64245f5b92ffSmrg      fi
64255f5b92ffSmrg
64265f5b92ffSmrg      # Now set the variables for building old libraries.
64275f5b92ffSmrg      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
64285f5b92ffSmrg	oldlibs="$oldlibs $output_objdir/$libname.$libext"
64295f5b92ffSmrg
64305f5b92ffSmrg	# Transform .lo files to .o files.
64315f5b92ffSmrg	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
64325f5b92ffSmrg      fi
64335f5b92ffSmrg
64345f5b92ffSmrg      # Eliminate all temporary directories.
64355f5b92ffSmrg      #for path in $notinst_path; do
64365f5b92ffSmrg      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
64375f5b92ffSmrg      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
64385f5b92ffSmrg      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
64395f5b92ffSmrg      #done
64405f5b92ffSmrg
64415f5b92ffSmrg      if test -n "$xrpath"; then
64425f5b92ffSmrg	# If the user specified any rpath flags, then add them.
64435f5b92ffSmrg	temp_xrpath=
64445f5b92ffSmrg	for libdir in $xrpath; do
64455f5b92ffSmrg	  temp_xrpath="$temp_xrpath -R$libdir"
64465f5b92ffSmrg	  case "$finalize_rpath " in
64475f5b92ffSmrg	  *" $libdir "*) ;;
64485f5b92ffSmrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
64495f5b92ffSmrg	  esac
64505f5b92ffSmrg	done
64515f5b92ffSmrg	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
64525f5b92ffSmrg	  dependency_libs="$temp_xrpath $dependency_libs"
64535f5b92ffSmrg	fi
64545f5b92ffSmrg      fi
64555f5b92ffSmrg
64565f5b92ffSmrg      # Make sure dlfiles contains only unique files that won't be dlpreopened
64575f5b92ffSmrg      old_dlfiles="$dlfiles"
64585f5b92ffSmrg      dlfiles=
64595f5b92ffSmrg      for lib in $old_dlfiles; do
64605f5b92ffSmrg	case " $dlprefiles $dlfiles " in
64615f5b92ffSmrg	*" $lib "*) ;;
64625f5b92ffSmrg	*) dlfiles="$dlfiles $lib" ;;
64635f5b92ffSmrg	esac
64645f5b92ffSmrg      done
64655f5b92ffSmrg
64665f5b92ffSmrg      # Make sure dlprefiles contains only unique files
64675f5b92ffSmrg      old_dlprefiles="$dlprefiles"
64685f5b92ffSmrg      dlprefiles=
64695f5b92ffSmrg      for lib in $old_dlprefiles; do
64705f5b92ffSmrg	case "$dlprefiles " in
64715f5b92ffSmrg	*" $lib "*) ;;
64725f5b92ffSmrg	*) dlprefiles="$dlprefiles $lib" ;;
64735f5b92ffSmrg	esac
64745f5b92ffSmrg      done
64755f5b92ffSmrg
64765f5b92ffSmrg      if test "$build_libtool_libs" = yes; then
64775f5b92ffSmrg	if test -n "$rpath"; then
64785f5b92ffSmrg	  case $host in
64795f5b92ffSmrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
64805f5b92ffSmrg	    # these systems don't actually have a c library (as such)!
64815f5b92ffSmrg	    ;;
64825f5b92ffSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
64835f5b92ffSmrg	    # Rhapsody C library is in the System framework
64845f5b92ffSmrg	    deplibs="$deplibs System.ltframework"
64855f5b92ffSmrg	    ;;
64865f5b92ffSmrg	  *-*-netbsd*)
64875f5b92ffSmrg	    # Don't link with libc until the a.out ld.so is fixed.
64885f5b92ffSmrg	    ;;
64895f5b92ffSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
64905f5b92ffSmrg	    # Do not include libc due to us having libc/libc_r.
64915f5b92ffSmrg	    ;;
64925f5b92ffSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
64935f5b92ffSmrg	    # Causes problems with __ctype
64945f5b92ffSmrg	    ;;
64955f5b92ffSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
64965f5b92ffSmrg	    # Compiler inserts libc in the correct place for threads to work
64975f5b92ffSmrg	    ;;
64985f5b92ffSmrg	  *)
64995f5b92ffSmrg	    # Add libc to deplibs on all other systems if necessary.
65005f5b92ffSmrg	    if test "$build_libtool_need_lc" = "yes"; then
65015f5b92ffSmrg	      deplibs="$deplibs -lc"
65025f5b92ffSmrg	    fi
65035f5b92ffSmrg	    ;;
65045f5b92ffSmrg	  esac
65055f5b92ffSmrg	fi
65065f5b92ffSmrg
65075f5b92ffSmrg	# Transform deplibs into only deplibs that can be linked in shared.
65085f5b92ffSmrg	name_save=$name
65095f5b92ffSmrg	libname_save=$libname
65105f5b92ffSmrg	release_save=$release
65115f5b92ffSmrg	versuffix_save=$versuffix
65125f5b92ffSmrg	major_save=$major
65135f5b92ffSmrg	# I'm not sure if I'm treating the release correctly.  I think
65145f5b92ffSmrg	# release should show up in the -l (ie -lgmp5) so we don't want to
65155f5b92ffSmrg	# add it in twice.  Is that correct?
65165f5b92ffSmrg	release=""
65175f5b92ffSmrg	versuffix=""
65185f5b92ffSmrg	major=""
65195f5b92ffSmrg	newdeplibs=
65205f5b92ffSmrg	droppeddeps=no
65215f5b92ffSmrg	case $deplibs_check_method in
65225f5b92ffSmrg	pass_all)
65235f5b92ffSmrg	  # Don't check for shared/static.  Everything works.
65245f5b92ffSmrg	  # This might be a little naive.  We might want to check
65255f5b92ffSmrg	  # whether the library exists or not.  But this is on
65265f5b92ffSmrg	  # osf3 & osf4 and I'm not really sure... Just
65275f5b92ffSmrg	  # implementing what was already the behavior.
65285f5b92ffSmrg	  newdeplibs=$deplibs
65295f5b92ffSmrg	  ;;
65305f5b92ffSmrg	test_compile)
65315f5b92ffSmrg	  # This code stresses the "libraries are programs" paradigm to its
65325f5b92ffSmrg	  # limits. Maybe even breaks it.  We compile a program, linking it
65335f5b92ffSmrg	  # against the deplibs as a proxy for the library.  Then we can check
65345f5b92ffSmrg	  # whether they linked in statically or dynamically with ldd.
65355f5b92ffSmrg	  $opt_dry_run || $RM conftest.c
65365f5b92ffSmrg	  cat > conftest.c <<EOF
65375f5b92ffSmrg	  int main() { return 0; }
65385f5b92ffSmrgEOF
65395f5b92ffSmrg	  $opt_dry_run || $RM conftest
65405f5b92ffSmrg	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
65415f5b92ffSmrg	    ldd_output=`ldd conftest`
65425f5b92ffSmrg	    for i in $deplibs; do
65435f5b92ffSmrg	      case $i in
65445f5b92ffSmrg	      -l*)
65455f5b92ffSmrg		func_stripname -l '' "$i"
65465f5b92ffSmrg		name=$func_stripname_result
65475f5b92ffSmrg		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
65485f5b92ffSmrg		  case " $predeps $postdeps " in
65495f5b92ffSmrg		  *" $i "*)
65505f5b92ffSmrg		    newdeplibs="$newdeplibs $i"
65515f5b92ffSmrg		    i=""
65525f5b92ffSmrg		    ;;
65535f5b92ffSmrg		  esac
65545f5b92ffSmrg		fi
65555f5b92ffSmrg		if test -n "$i" ; then
65565f5b92ffSmrg		  libname=`eval "\\$ECHO \"$libname_spec\""`
65575f5b92ffSmrg		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
65585f5b92ffSmrg		  set dummy $deplib_matches; shift
65595f5b92ffSmrg		  deplib_match=$1
65605f5b92ffSmrg		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
65615f5b92ffSmrg		    newdeplibs="$newdeplibs $i"
65625f5b92ffSmrg		  else
65635f5b92ffSmrg		    droppeddeps=yes
65645f5b92ffSmrg		    $ECHO
65655f5b92ffSmrg		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
65665f5b92ffSmrg		    $ECHO "*** I have the capability to make that library automatically link in when"
65675f5b92ffSmrg		    $ECHO "*** you link to this library.  But I can only do this if you have a"
65685f5b92ffSmrg		    $ECHO "*** shared version of the library, which I believe you do not have"
65695f5b92ffSmrg		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
65705f5b92ffSmrg		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
65715f5b92ffSmrg		  fi
65725f5b92ffSmrg		fi
65735f5b92ffSmrg		;;
65745f5b92ffSmrg	      *)
65755f5b92ffSmrg		newdeplibs="$newdeplibs $i"
65765f5b92ffSmrg		;;
65775f5b92ffSmrg	      esac
65785f5b92ffSmrg	    done
65795f5b92ffSmrg	  else
65805f5b92ffSmrg	    # Error occurred in the first compile.  Let's try to salvage
65815f5b92ffSmrg	    # the situation: Compile a separate program for each library.
65825f5b92ffSmrg	    for i in $deplibs; do
65835f5b92ffSmrg	      case $i in
65845f5b92ffSmrg	      -l*)
65855f5b92ffSmrg		func_stripname -l '' "$i"
65865f5b92ffSmrg		name=$func_stripname_result
65875f5b92ffSmrg		$opt_dry_run || $RM conftest
65885f5b92ffSmrg		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
65895f5b92ffSmrg		  ldd_output=`ldd conftest`
65905f5b92ffSmrg		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
65915f5b92ffSmrg		    case " $predeps $postdeps " in
65925f5b92ffSmrg		    *" $i "*)
65935f5b92ffSmrg		      newdeplibs="$newdeplibs $i"
65945f5b92ffSmrg		      i=""
65955f5b92ffSmrg		      ;;
65965f5b92ffSmrg		    esac
65975f5b92ffSmrg		  fi
65985f5b92ffSmrg		  if test -n "$i" ; then
65995f5b92ffSmrg		    libname=`eval "\\$ECHO \"$libname_spec\""`
66005f5b92ffSmrg		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
66015f5b92ffSmrg		    set dummy $deplib_matches; shift
66025f5b92ffSmrg		    deplib_match=$1
66035f5b92ffSmrg		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
66045f5b92ffSmrg		      newdeplibs="$newdeplibs $i"
66055f5b92ffSmrg		    else
66065f5b92ffSmrg		      droppeddeps=yes
66075f5b92ffSmrg		      $ECHO
66085f5b92ffSmrg		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
66095f5b92ffSmrg		      $ECHO "*** I have the capability to make that library automatically link in when"
66105f5b92ffSmrg		      $ECHO "*** you link to this library.  But I can only do this if you have a"
66115f5b92ffSmrg		      $ECHO "*** shared version of the library, which you do not appear to have"
66125f5b92ffSmrg		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
66135f5b92ffSmrg		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
66145f5b92ffSmrg		    fi
66155f5b92ffSmrg		  fi
66165f5b92ffSmrg		else
66175f5b92ffSmrg		  droppeddeps=yes
66185f5b92ffSmrg		  $ECHO
66195f5b92ffSmrg		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
66205f5b92ffSmrg		  $ECHO "*** make it link in!  You will probably need to install it or some"
66215f5b92ffSmrg		  $ECHO "*** library that it depends on before this library will be fully"
66225f5b92ffSmrg		  $ECHO "*** functional.  Installing it before continuing would be even better."
66235f5b92ffSmrg		fi
66245f5b92ffSmrg		;;
66255f5b92ffSmrg	      *)
66265f5b92ffSmrg		newdeplibs="$newdeplibs $i"
66275f5b92ffSmrg		;;
66285f5b92ffSmrg	      esac
66295f5b92ffSmrg	    done
66305f5b92ffSmrg	  fi
66315f5b92ffSmrg	  ;;
66325f5b92ffSmrg	file_magic*)
66335f5b92ffSmrg	  set dummy $deplibs_check_method; shift
66345f5b92ffSmrg	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
66355f5b92ffSmrg	  for a_deplib in $deplibs; do
66365f5b92ffSmrg	    case $a_deplib in
66375f5b92ffSmrg	    -l*)
66385f5b92ffSmrg	      func_stripname -l '' "$a_deplib"
66395f5b92ffSmrg	      name=$func_stripname_result
66405f5b92ffSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
66415f5b92ffSmrg		case " $predeps $postdeps " in
66425f5b92ffSmrg		*" $a_deplib "*)
66435f5b92ffSmrg		  newdeplibs="$newdeplibs $a_deplib"
66445f5b92ffSmrg		  a_deplib=""
66455f5b92ffSmrg		  ;;
66465f5b92ffSmrg		esac
66475f5b92ffSmrg	      fi
66485f5b92ffSmrg	      if test -n "$a_deplib" ; then
66495f5b92ffSmrg		libname=`eval "\\$ECHO \"$libname_spec\""`
66505f5b92ffSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
66515f5b92ffSmrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
66525f5b92ffSmrg		  for potent_lib in $potential_libs; do
66535f5b92ffSmrg		      # Follow soft links.
66545f5b92ffSmrg		      if ls -lLd "$potent_lib" 2>/dev/null |
66555f5b92ffSmrg			 $GREP " -> " >/dev/null; then
66565f5b92ffSmrg			continue
66575f5b92ffSmrg		      fi
66585f5b92ffSmrg		      # The statement above tries to avoid entering an
66595f5b92ffSmrg		      # endless loop below, in case of cyclic links.
66605f5b92ffSmrg		      # We might still enter an endless loop, since a link
66615f5b92ffSmrg		      # loop can be closed while we follow links,
66625f5b92ffSmrg		      # but so what?
66635f5b92ffSmrg		      potlib="$potent_lib"
66645f5b92ffSmrg		      while test -h "$potlib" 2>/dev/null; do
66655f5b92ffSmrg			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
66665f5b92ffSmrg			case $potliblink in
66675f5b92ffSmrg			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
66685f5b92ffSmrg			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
66695f5b92ffSmrg			esac
66705f5b92ffSmrg		      done
66715f5b92ffSmrg		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
66725f5b92ffSmrg			 $SED -e 10q |
66735f5b92ffSmrg			 $EGREP "$file_magic_regex" > /dev/null; then
66745f5b92ffSmrg			newdeplibs="$newdeplibs $a_deplib"
66755f5b92ffSmrg			a_deplib=""
66765f5b92ffSmrg			break 2
66775f5b92ffSmrg		      fi
66785f5b92ffSmrg		  done
66795f5b92ffSmrg		done
66805f5b92ffSmrg	      fi
66815f5b92ffSmrg	      if test -n "$a_deplib" ; then
66825f5b92ffSmrg		droppeddeps=yes
66835f5b92ffSmrg		$ECHO
66845f5b92ffSmrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
66855f5b92ffSmrg		$ECHO "*** I have the capability to make that library automatically link in when"
66865f5b92ffSmrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
66875f5b92ffSmrg		$ECHO "*** shared version of the library, which you do not appear to have"
66885f5b92ffSmrg		$ECHO "*** because I did check the linker path looking for a file starting"
66895f5b92ffSmrg		if test -z "$potlib" ; then
66905f5b92ffSmrg		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
66915f5b92ffSmrg		else
66925f5b92ffSmrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
66935f5b92ffSmrg		  $ECHO "*** using a file magic. Last file checked: $potlib"
66945f5b92ffSmrg		fi
66955f5b92ffSmrg	      fi
66965f5b92ffSmrg	      ;;
66975f5b92ffSmrg	    *)
66985f5b92ffSmrg	      # Add a -L argument.
66995f5b92ffSmrg	      newdeplibs="$newdeplibs $a_deplib"
67005f5b92ffSmrg	      ;;
67015f5b92ffSmrg	    esac
67025f5b92ffSmrg	  done # Gone through all deplibs.
67035f5b92ffSmrg	  ;;
67045f5b92ffSmrg	match_pattern*)
67055f5b92ffSmrg	  set dummy $deplibs_check_method; shift
67065f5b92ffSmrg	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
67075f5b92ffSmrg	  for a_deplib in $deplibs; do
67085f5b92ffSmrg	    case $a_deplib in
67095f5b92ffSmrg	    -l*)
67105f5b92ffSmrg	      func_stripname -l '' "$a_deplib"
67115f5b92ffSmrg	      name=$func_stripname_result
67125f5b92ffSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
67135f5b92ffSmrg		case " $predeps $postdeps " in
67145f5b92ffSmrg		*" $a_deplib "*)
67155f5b92ffSmrg		  newdeplibs="$newdeplibs $a_deplib"
67165f5b92ffSmrg		  a_deplib=""
67175f5b92ffSmrg		  ;;
67185f5b92ffSmrg		esac
67195f5b92ffSmrg	      fi
67205f5b92ffSmrg	      if test -n "$a_deplib" ; then
67215f5b92ffSmrg		libname=`eval "\\$ECHO \"$libname_spec\""`
67225f5b92ffSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
67235f5b92ffSmrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
67245f5b92ffSmrg		  for potent_lib in $potential_libs; do
67255f5b92ffSmrg		    potlib="$potent_lib" # see symlink-check above in file_magic test
67265f5b92ffSmrg		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
67275f5b92ffSmrg		       $EGREP "$match_pattern_regex" > /dev/null; then
67285f5b92ffSmrg		      newdeplibs="$newdeplibs $a_deplib"
67295f5b92ffSmrg		      a_deplib=""
67305f5b92ffSmrg		      break 2
67315f5b92ffSmrg		    fi
67325f5b92ffSmrg		  done
67335f5b92ffSmrg		done
67345f5b92ffSmrg	      fi
67355f5b92ffSmrg	      if test -n "$a_deplib" ; then
67365f5b92ffSmrg		droppeddeps=yes
67375f5b92ffSmrg		$ECHO
67385f5b92ffSmrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
67395f5b92ffSmrg		$ECHO "*** I have the capability to make that library automatically link in when"
67405f5b92ffSmrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
67415f5b92ffSmrg		$ECHO "*** shared version of the library, which you do not appear to have"
67425f5b92ffSmrg		$ECHO "*** because I did check the linker path looking for a file starting"
67435f5b92ffSmrg		if test -z "$potlib" ; then
67445f5b92ffSmrg		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
67455f5b92ffSmrg		else
67465f5b92ffSmrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
67475f5b92ffSmrg		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
67485f5b92ffSmrg		fi
67495f5b92ffSmrg	      fi
67505f5b92ffSmrg	      ;;
67515f5b92ffSmrg	    *)
67525f5b92ffSmrg	      # Add a -L argument.
67535f5b92ffSmrg	      newdeplibs="$newdeplibs $a_deplib"
67545f5b92ffSmrg	      ;;
67555f5b92ffSmrg	    esac
67565f5b92ffSmrg	  done # Gone through all deplibs.
67575f5b92ffSmrg	  ;;
67585f5b92ffSmrg	none | unknown | *)
67595f5b92ffSmrg	  newdeplibs=""
67605f5b92ffSmrg	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
67615f5b92ffSmrg	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
67625f5b92ffSmrg	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
67635f5b92ffSmrg	    for i in $predeps $postdeps ; do
67645f5b92ffSmrg	      # can't use Xsed below, because $i might contain '/'
67655f5b92ffSmrg	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
67665f5b92ffSmrg	    done
67675f5b92ffSmrg	  fi
67685f5b92ffSmrg	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
67695f5b92ffSmrg	     $GREP . >/dev/null; then
67705f5b92ffSmrg	    $ECHO
67715f5b92ffSmrg	    if test "X$deplibs_check_method" = "Xnone"; then
67725f5b92ffSmrg	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
67735f5b92ffSmrg	    else
67745f5b92ffSmrg	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
67755f5b92ffSmrg	    fi
67765f5b92ffSmrg	    $ECHO "*** All declared inter-library dependencies are being dropped."
67775f5b92ffSmrg	    droppeddeps=yes
67785f5b92ffSmrg	  fi
67795f5b92ffSmrg	  ;;
67805f5b92ffSmrg	esac
67815f5b92ffSmrg	versuffix=$versuffix_save
67825f5b92ffSmrg	major=$major_save
67835f5b92ffSmrg	release=$release_save
67845f5b92ffSmrg	libname=$libname_save
67855f5b92ffSmrg	name=$name_save
67865f5b92ffSmrg
67875f5b92ffSmrg	case $host in
67885f5b92ffSmrg	*-*-rhapsody* | *-*-darwin1.[012])
67895f5b92ffSmrg	  # On Rhapsody replace the C library with the System framework
67905f5b92ffSmrg	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
67915f5b92ffSmrg	  ;;
67925f5b92ffSmrg	esac
67935f5b92ffSmrg
67945f5b92ffSmrg	if test "$droppeddeps" = yes; then
67955f5b92ffSmrg	  if test "$module" = yes; then
67965f5b92ffSmrg	    $ECHO
67975f5b92ffSmrg	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
67985f5b92ffSmrg	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
67995f5b92ffSmrg	    $ECHO "*** a static module, that should work as long as the dlopening"
68005f5b92ffSmrg	    $ECHO "*** application is linked with the -dlopen flag."
68015f5b92ffSmrg	    if test -z "$global_symbol_pipe"; then
68025f5b92ffSmrg	      $ECHO
68035f5b92ffSmrg	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
68045f5b92ffSmrg	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
68055f5b92ffSmrg	      $ECHO "*** not find such a program.  So, this module is probably useless."
68065f5b92ffSmrg	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
68075f5b92ffSmrg	    fi
68085f5b92ffSmrg	    if test "$build_old_libs" = no; then
68095f5b92ffSmrg	      oldlibs="$output_objdir/$libname.$libext"
68105f5b92ffSmrg	      build_libtool_libs=module
68115f5b92ffSmrg	      build_old_libs=yes
68125f5b92ffSmrg	    else
68135f5b92ffSmrg	      build_libtool_libs=no
68145f5b92ffSmrg	    fi
68155f5b92ffSmrg	  else
68165f5b92ffSmrg	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
68175f5b92ffSmrg	    $ECHO "*** automatically added whenever a program is linked with this library"
68185f5b92ffSmrg	    $ECHO "*** or is declared to -dlopen it."
68195f5b92ffSmrg
68205f5b92ffSmrg	    if test "$allow_undefined" = no; then
68215f5b92ffSmrg	      $ECHO
68225f5b92ffSmrg	      $ECHO "*** Since this library must not contain undefined symbols,"
68235f5b92ffSmrg	      $ECHO "*** because either the platform does not support them or"
68245f5b92ffSmrg	      $ECHO "*** it was explicitly requested with -no-undefined,"
68255f5b92ffSmrg	      $ECHO "*** libtool will only create a static version of it."
68265f5b92ffSmrg	      if test "$build_old_libs" = no; then
68275f5b92ffSmrg		oldlibs="$output_objdir/$libname.$libext"
68285f5b92ffSmrg		build_libtool_libs=module
68295f5b92ffSmrg		build_old_libs=yes
68305f5b92ffSmrg	      else
68315f5b92ffSmrg		build_libtool_libs=no
68325f5b92ffSmrg	      fi
68335f5b92ffSmrg	    fi
68345f5b92ffSmrg	  fi
68355f5b92ffSmrg	fi
68365f5b92ffSmrg	# Done checking deplibs!
68375f5b92ffSmrg	deplibs=$newdeplibs
68385f5b92ffSmrg      fi
68395f5b92ffSmrg      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
68405f5b92ffSmrg      case $host in
68415f5b92ffSmrg	*-*-darwin*)
68425f5b92ffSmrg	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68435f5b92ffSmrg	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68445f5b92ffSmrg	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68455f5b92ffSmrg	  ;;
68465f5b92ffSmrg      esac
68475f5b92ffSmrg
68485f5b92ffSmrg      # move library search paths that coincide with paths to not yet
68495f5b92ffSmrg      # installed libraries to the beginning of the library search list
68505f5b92ffSmrg      new_libs=
68515f5b92ffSmrg      for path in $notinst_path; do
68525f5b92ffSmrg	case " $new_libs " in
68535f5b92ffSmrg	*" -L$path/$objdir "*) ;;
68545f5b92ffSmrg	*)
68555f5b92ffSmrg	  case " $deplibs " in
68565f5b92ffSmrg	  *" -L$path/$objdir "*)
68575f5b92ffSmrg	    new_libs="$new_libs -L$path/$objdir" ;;
68585f5b92ffSmrg	  esac
68595f5b92ffSmrg	  ;;
68605f5b92ffSmrg	esac
68615f5b92ffSmrg      done
68625f5b92ffSmrg      for deplib in $deplibs; do
68635f5b92ffSmrg	case $deplib in
68645f5b92ffSmrg	-L*)
68655f5b92ffSmrg	  case " $new_libs " in
68665f5b92ffSmrg	  *" $deplib "*) ;;
68675f5b92ffSmrg	  *) new_libs="$new_libs $deplib" ;;
68685f5b92ffSmrg	  esac
68695f5b92ffSmrg	  ;;
68705f5b92ffSmrg	*) new_libs="$new_libs $deplib" ;;
68715f5b92ffSmrg	esac
68725f5b92ffSmrg      done
68735f5b92ffSmrg      deplibs="$new_libs"
68745f5b92ffSmrg
68755f5b92ffSmrg      # All the library-specific variables (install_libdir is set above).
68765f5b92ffSmrg      library_names=
68775f5b92ffSmrg      old_library=
68785f5b92ffSmrg      dlname=
68795f5b92ffSmrg
68805f5b92ffSmrg      # Test again, we may have decided not to build it any more
68815f5b92ffSmrg      if test "$build_libtool_libs" = yes; then
68825f5b92ffSmrg	if test "$hardcode_into_libs" = yes; then
68835f5b92ffSmrg	  # Hardcode the library paths
68845f5b92ffSmrg	  hardcode_libdirs=
68855f5b92ffSmrg	  dep_rpath=
68865f5b92ffSmrg	  rpath="$finalize_rpath"
68875f5b92ffSmrg	  test "$mode" != relink && rpath="$compile_rpath$rpath"
68885f5b92ffSmrg	  for libdir in $rpath; do
68895f5b92ffSmrg	    if test -n "$hardcode_libdir_flag_spec"; then
68905f5b92ffSmrg	      if test -n "$hardcode_libdir_separator"; then
68915f5b92ffSmrg		if test -z "$hardcode_libdirs"; then
68925f5b92ffSmrg		  hardcode_libdirs="$libdir"
68935f5b92ffSmrg		else
68945f5b92ffSmrg		  # Just accumulate the unique libdirs.
68955f5b92ffSmrg		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
68965f5b92ffSmrg		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
68975f5b92ffSmrg		    ;;
68985f5b92ffSmrg		  *)
68995f5b92ffSmrg		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
69005f5b92ffSmrg		    ;;
69015f5b92ffSmrg		  esac
69025f5b92ffSmrg		fi
69035f5b92ffSmrg	      else
69045f5b92ffSmrg		eval flag=\"$hardcode_libdir_flag_spec\"
69055f5b92ffSmrg		dep_rpath="$dep_rpath $flag"
69065f5b92ffSmrg	      fi
69075f5b92ffSmrg	    elif test -n "$runpath_var"; then
69085f5b92ffSmrg	      case "$perm_rpath " in
69095f5b92ffSmrg	      *" $libdir "*) ;;
69105f5b92ffSmrg	      *) perm_rpath="$perm_rpath $libdir" ;;
69115f5b92ffSmrg	      esac
69125f5b92ffSmrg	    fi
69135f5b92ffSmrg	  done
69145f5b92ffSmrg	  # Substitute the hardcoded libdirs into the rpath.
69155f5b92ffSmrg	  if test -n "$hardcode_libdir_separator" &&
69165f5b92ffSmrg	     test -n "$hardcode_libdirs"; then
69175f5b92ffSmrg	    libdir="$hardcode_libdirs"
69185f5b92ffSmrg	    if test -n "$hardcode_libdir_flag_spec_ld"; then
69195f5b92ffSmrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
69205f5b92ffSmrg	    else
69215f5b92ffSmrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
69225f5b92ffSmrg	    fi
69235f5b92ffSmrg	  fi
69245f5b92ffSmrg	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
69255f5b92ffSmrg	    # We should set the runpath_var.
69265f5b92ffSmrg	    rpath=
69275f5b92ffSmrg	    for dir in $perm_rpath; do
69285f5b92ffSmrg	      rpath="$rpath$dir:"
69295f5b92ffSmrg	    done
69305f5b92ffSmrg	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
69315f5b92ffSmrg	  fi
69325f5b92ffSmrg	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
69335f5b92ffSmrg	fi
693417a48c7cSmrg
69355f5b92ffSmrg	shlibpath="$finalize_shlibpath"
69365f5b92ffSmrg	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
69375f5b92ffSmrg	if test -n "$shlibpath"; then
69385f5b92ffSmrg	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
69395f5b92ffSmrg	fi
694017a48c7cSmrg
69415f5b92ffSmrg	# Get the real and link names of the library.
69425f5b92ffSmrg	eval shared_ext=\"$shrext_cmds\"
69435f5b92ffSmrg	eval library_names=\"$library_names_spec\"
69445f5b92ffSmrg	set dummy $library_names
69455f5b92ffSmrg	shift
69465f5b92ffSmrg	realname="$1"
69475f5b92ffSmrg	shift
694817a48c7cSmrg
69495f5b92ffSmrg	if test -n "$soname_spec"; then
69505f5b92ffSmrg	  eval soname=\"$soname_spec\"
69515f5b92ffSmrg	else
69525f5b92ffSmrg	  soname="$realname"
69535f5b92ffSmrg	fi
69545f5b92ffSmrg	if test -z "$dlname"; then
69555f5b92ffSmrg	  dlname=$soname
69565f5b92ffSmrg	fi
695717a48c7cSmrg
69585f5b92ffSmrg	lib="$output_objdir/$realname"
69595f5b92ffSmrg	linknames=
69605f5b92ffSmrg	for link
69615f5b92ffSmrg	do
69625f5b92ffSmrg	  linknames="$linknames $link"
69635f5b92ffSmrg	done
696417a48c7cSmrg
69655f5b92ffSmrg	# Use standard objects if they are pic
69665f5b92ffSmrg	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
69675f5b92ffSmrg	test "X$libobjs" = "X " && libobjs=
696817a48c7cSmrg
69695f5b92ffSmrg	delfiles=
69705f5b92ffSmrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
69715f5b92ffSmrg	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
69725f5b92ffSmrg	  export_symbols="$output_objdir/$libname.uexp"
69735f5b92ffSmrg	  delfiles="$delfiles $export_symbols"
69745f5b92ffSmrg	fi
697517a48c7cSmrg
69765f5b92ffSmrg	orig_export_symbols=
69775f5b92ffSmrg	case $host_os in
69785f5b92ffSmrg	cygwin* | mingw* | cegcc*)
69795f5b92ffSmrg	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
69805f5b92ffSmrg	    # exporting using user supplied symfile
69815f5b92ffSmrg	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
69825f5b92ffSmrg	      # and it's NOT already a .def file. Must figure out
69835f5b92ffSmrg	      # which of the given symbols are data symbols and tag
69845f5b92ffSmrg	      # them as such. So, trigger use of export_symbols_cmds.
69855f5b92ffSmrg	      # export_symbols gets reassigned inside the "prepare
69865f5b92ffSmrg	      # the list of exported symbols" if statement, so the
69875f5b92ffSmrg	      # include_expsyms logic still works.
69885f5b92ffSmrg	      orig_export_symbols="$export_symbols"
69895f5b92ffSmrg	      export_symbols=
69905f5b92ffSmrg	      always_export_symbols=yes
69915f5b92ffSmrg	    fi
69925f5b92ffSmrg	  fi
69935f5b92ffSmrg	  ;;
69945f5b92ffSmrg	esac
699517a48c7cSmrg
69965f5b92ffSmrg	# Prepare the list of exported symbols
69975f5b92ffSmrg	if test -z "$export_symbols"; then
69985f5b92ffSmrg	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
69995f5b92ffSmrg	    func_verbose "generating symbol list for \`$libname.la'"
70005f5b92ffSmrg	    export_symbols="$output_objdir/$libname.exp"
70015f5b92ffSmrg	    $opt_dry_run || $RM $export_symbols
70025f5b92ffSmrg	    cmds=$export_symbols_cmds
70035f5b92ffSmrg	    save_ifs="$IFS"; IFS='~'
70045f5b92ffSmrg	    for cmd in $cmds; do
70055f5b92ffSmrg	      IFS="$save_ifs"
70065f5b92ffSmrg	      eval cmd=\"$cmd\"
70075f5b92ffSmrg	      func_len " $cmd"
70085f5b92ffSmrg	      len=$func_len_result
70095f5b92ffSmrg	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
70105f5b92ffSmrg		func_show_eval "$cmd" 'exit $?'
70115f5b92ffSmrg		skipped_export=false
70125f5b92ffSmrg	      else
70135f5b92ffSmrg		# The command line is too long to execute in one step.
70145f5b92ffSmrg		func_verbose "using reloadable object file for export list..."
70155f5b92ffSmrg		skipped_export=:
70165f5b92ffSmrg		# Break out early, otherwise skipped_export may be
70175f5b92ffSmrg		# set to false by a later but shorter cmd.
70185f5b92ffSmrg		break
70195f5b92ffSmrg	      fi
70205f5b92ffSmrg	    done
70215f5b92ffSmrg	    IFS="$save_ifs"
70225f5b92ffSmrg	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
70235f5b92ffSmrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
70245f5b92ffSmrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
70255f5b92ffSmrg	    fi
70265f5b92ffSmrg	  fi
702717a48c7cSmrg	fi
702817a48c7cSmrg
70295f5b92ffSmrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
70305f5b92ffSmrg	  tmp_export_symbols="$export_symbols"
70315f5b92ffSmrg	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
70325f5b92ffSmrg	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
70335f5b92ffSmrg	fi
703417a48c7cSmrg
70355f5b92ffSmrg	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
70365f5b92ffSmrg	  # The given exports_symbols file has to be filtered, so filter it.
70375f5b92ffSmrg	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
70385f5b92ffSmrg	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
70395f5b92ffSmrg	  # 's' commands which not all seds can handle. GNU sed should be fine
70405f5b92ffSmrg	  # though. Also, the filter scales superlinearly with the number of
70415f5b92ffSmrg	  # global variables. join(1) would be nice here, but unfortunately
70425f5b92ffSmrg	  # isn't a blessed tool.
70435f5b92ffSmrg	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
70445f5b92ffSmrg	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
70455f5b92ffSmrg	  export_symbols=$output_objdir/$libname.def
70465f5b92ffSmrg	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
70475f5b92ffSmrg	fi
704817a48c7cSmrg
70495f5b92ffSmrg	tmp_deplibs=
70505f5b92ffSmrg	for test_deplib in $deplibs; do
70515f5b92ffSmrg	  case " $convenience " in
70525f5b92ffSmrg	  *" $test_deplib "*) ;;
70535f5b92ffSmrg	  *)
70545f5b92ffSmrg	    tmp_deplibs="$tmp_deplibs $test_deplib"
70555f5b92ffSmrg	    ;;
70565f5b92ffSmrg	  esac
70575f5b92ffSmrg	done
70585f5b92ffSmrg	deplibs="$tmp_deplibs"
705917a48c7cSmrg
70605f5b92ffSmrg	if test -n "$convenience"; then
70615f5b92ffSmrg	  if test -n "$whole_archive_flag_spec" &&
70625f5b92ffSmrg	    test "$compiler_needs_object" = yes &&
70635f5b92ffSmrg	    test -z "$libobjs"; then
70645f5b92ffSmrg	    # extract the archives, so we have objects to list.
70655f5b92ffSmrg	    # TODO: could optimize this to just extract one archive.
70665f5b92ffSmrg	    whole_archive_flag_spec=
70675f5b92ffSmrg	  fi
70685f5b92ffSmrg	  if test -n "$whole_archive_flag_spec"; then
70695f5b92ffSmrg	    save_libobjs=$libobjs
70705f5b92ffSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
70715f5b92ffSmrg	    test "X$libobjs" = "X " && libobjs=
70725f5b92ffSmrg	  else
70735f5b92ffSmrg	    gentop="$output_objdir/${outputname}x"
70745f5b92ffSmrg	    generated="$generated $gentop"
707517a48c7cSmrg
70765f5b92ffSmrg	    func_extract_archives $gentop $convenience
70775f5b92ffSmrg	    libobjs="$libobjs $func_extract_archives_result"
70785f5b92ffSmrg	    test "X$libobjs" = "X " && libobjs=
70795f5b92ffSmrg	  fi
708017a48c7cSmrg	fi
708117a48c7cSmrg
70825f5b92ffSmrg	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
70835f5b92ffSmrg	  eval flag=\"$thread_safe_flag_spec\"
70845f5b92ffSmrg	  linker_flags="$linker_flags $flag"
708517a48c7cSmrg	fi
708617a48c7cSmrg
70875f5b92ffSmrg	# Make a backup of the uninstalled library when relinking
70885f5b92ffSmrg	if test "$mode" = relink; then
70895f5b92ffSmrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
70905f5b92ffSmrg	fi
709117a48c7cSmrg
70925f5b92ffSmrg	# Do each of the archive commands.
70935f5b92ffSmrg	if test "$module" = yes && test -n "$module_cmds" ; then
70945f5b92ffSmrg	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
70955f5b92ffSmrg	    eval test_cmds=\"$module_expsym_cmds\"
70965f5b92ffSmrg	    cmds=$module_expsym_cmds
70975f5b92ffSmrg	  else
70985f5b92ffSmrg	    eval test_cmds=\"$module_cmds\"
70995f5b92ffSmrg	    cmds=$module_cmds
71005f5b92ffSmrg	  fi
710117a48c7cSmrg	else
71025f5b92ffSmrg	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
71035f5b92ffSmrg	    eval test_cmds=\"$archive_expsym_cmds\"
71045f5b92ffSmrg	    cmds=$archive_expsym_cmds
71055f5b92ffSmrg	  else
71065f5b92ffSmrg	    eval test_cmds=\"$archive_cmds\"
71075f5b92ffSmrg	    cmds=$archive_cmds
71085f5b92ffSmrg	  fi
710917a48c7cSmrg	fi
711017a48c7cSmrg
71115f5b92ffSmrg	if test "X$skipped_export" != "X:" &&
71125f5b92ffSmrg	   func_len " $test_cmds" &&
71135f5b92ffSmrg	   len=$func_len_result &&
71145f5b92ffSmrg	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
71155f5b92ffSmrg	  :
71165f5b92ffSmrg	else
71175f5b92ffSmrg	  # The command line is too long to link in one step, link piecewise
71185f5b92ffSmrg	  # or, if using GNU ld and skipped_export is not :, use a linker
71195f5b92ffSmrg	  # script.
712017a48c7cSmrg
71215f5b92ffSmrg	  # Save the value of $output and $libobjs because we want to
71225f5b92ffSmrg	  # use them later.  If we have whole_archive_flag_spec, we
71235f5b92ffSmrg	  # want to use save_libobjs as it was before
71245f5b92ffSmrg	  # whole_archive_flag_spec was expanded, because we can't
71255f5b92ffSmrg	  # assume the linker understands whole_archive_flag_spec.
71265f5b92ffSmrg	  # This may have to be revisited, in case too many
71275f5b92ffSmrg	  # convenience libraries get linked in and end up exceeding
71285f5b92ffSmrg	  # the spec.
71295f5b92ffSmrg	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
71305f5b92ffSmrg	    save_libobjs=$libobjs
71315f5b92ffSmrg	  fi
71325f5b92ffSmrg	  save_output=$output
71335f5b92ffSmrg	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
713417a48c7cSmrg
71355f5b92ffSmrg	  # Clear the reloadable object creation command queue and
71365f5b92ffSmrg	  # initialize k to one.
71375f5b92ffSmrg	  test_cmds=
71385f5b92ffSmrg	  concat_cmds=
71395f5b92ffSmrg	  objlist=
71405f5b92ffSmrg	  last_robj=
71415f5b92ffSmrg	  k=1
71425f5b92ffSmrg
71435f5b92ffSmrg	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
71445f5b92ffSmrg	    output=${output_objdir}/${output_la}.lnkscript
71455f5b92ffSmrg	    func_verbose "creating GNU ld script: $output"
71465f5b92ffSmrg	    $ECHO 'INPUT (' > $output
71475f5b92ffSmrg	    for obj in $save_libobjs
714817a48c7cSmrg	    do
71495f5b92ffSmrg	      $ECHO "$obj" >> $output
71505f5b92ffSmrg	    done
71515f5b92ffSmrg	    $ECHO ')' >> $output
71525f5b92ffSmrg	    delfiles="$delfiles $output"
71535f5b92ffSmrg	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
71545f5b92ffSmrg	    output=${output_objdir}/${output_la}.lnk
71555f5b92ffSmrg	    func_verbose "creating linker input file list: $output"
71565f5b92ffSmrg	    : > $output
71575f5b92ffSmrg	    set x $save_libobjs
71585f5b92ffSmrg	    shift
71595f5b92ffSmrg	    firstobj=
71605f5b92ffSmrg	    if test "$compiler_needs_object" = yes; then
71615f5b92ffSmrg	      firstobj="$1 "
71625f5b92ffSmrg	      shift
71635f5b92ffSmrg	    fi
71645f5b92ffSmrg	    for obj
71655f5b92ffSmrg	    do
71665f5b92ffSmrg	      $ECHO "$obj" >> $output
71675f5b92ffSmrg	    done
71685f5b92ffSmrg	    delfiles="$delfiles $output"
71695f5b92ffSmrg	    output=$firstobj\"$file_list_spec$output\"
71705f5b92ffSmrg	  else
71715f5b92ffSmrg	    if test -n "$save_libobjs"; then
71725f5b92ffSmrg	      func_verbose "creating reloadable object files..."
71735f5b92ffSmrg	      output=$output_objdir/$output_la-${k}.$objext
71745f5b92ffSmrg	      eval test_cmds=\"$reload_cmds\"
71755f5b92ffSmrg	      func_len " $test_cmds"
71765f5b92ffSmrg	      len0=$func_len_result
71775f5b92ffSmrg	      len=$len0
71785f5b92ffSmrg
71795f5b92ffSmrg	      # Loop over the list of objects to be linked.
71805f5b92ffSmrg	      for obj in $save_libobjs
71815f5b92ffSmrg	      do
71825f5b92ffSmrg		func_len " $obj"
71835f5b92ffSmrg		func_arith $len + $func_len_result
71845f5b92ffSmrg		len=$func_arith_result
71855f5b92ffSmrg		if test "X$objlist" = X ||
71865f5b92ffSmrg		   test "$len" -lt "$max_cmd_len"; then
71875f5b92ffSmrg		  func_append objlist " $obj"
71885f5b92ffSmrg		else
71895f5b92ffSmrg		  # The command $test_cmds is almost too long, add a
71905f5b92ffSmrg		  # command to the queue.
71915f5b92ffSmrg		  if test "$k" -eq 1 ; then
71925f5b92ffSmrg		    # The first file doesn't have a previous command to add.
71935f5b92ffSmrg		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
71945f5b92ffSmrg		  else
71955f5b92ffSmrg		    # All subsequent reloadable object files will link in
71965f5b92ffSmrg		    # the last one created.
71975f5b92ffSmrg		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
71985f5b92ffSmrg		  fi
71995f5b92ffSmrg		  last_robj=$output_objdir/$output_la-${k}.$objext
72005f5b92ffSmrg		  func_arith $k + 1
72015f5b92ffSmrg		  k=$func_arith_result
72025f5b92ffSmrg		  output=$output_objdir/$output_la-${k}.$objext
72035f5b92ffSmrg		  objlist=$obj
72045f5b92ffSmrg		  func_len " $last_robj"
72055f5b92ffSmrg		  func_arith $len0 + $func_len_result
72065f5b92ffSmrg		  len=$func_arith_result
72075f5b92ffSmrg		fi
72085f5b92ffSmrg	      done
72095f5b92ffSmrg	      # Handle the remaining objects by creating one last
72105f5b92ffSmrg	      # reloadable object file.  All subsequent reloadable object
72115f5b92ffSmrg	      # files will link in the last one created.
72125f5b92ffSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
72135f5b92ffSmrg	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
72145f5b92ffSmrg	      if test -n "$last_robj"; then
72155f5b92ffSmrg	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
72165f5b92ffSmrg	      fi
72175f5b92ffSmrg	      delfiles="$delfiles $output"
721817a48c7cSmrg
72195f5b92ffSmrg	    else
72205f5b92ffSmrg	      output=
72215f5b92ffSmrg	    fi
722217a48c7cSmrg
72235f5b92ffSmrg	    if ${skipped_export-false}; then
72245f5b92ffSmrg	      func_verbose "generating symbol list for \`$libname.la'"
72255f5b92ffSmrg	      export_symbols="$output_objdir/$libname.exp"
72265f5b92ffSmrg	      $opt_dry_run || $RM $export_symbols
72275f5b92ffSmrg	      libobjs=$output
72285f5b92ffSmrg	      # Append the command to create the export file.
72295f5b92ffSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
72305f5b92ffSmrg	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
72315f5b92ffSmrg	      if test -n "$last_robj"; then
72325f5b92ffSmrg		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
72335f5b92ffSmrg	      fi
723417a48c7cSmrg	    fi
723517a48c7cSmrg
72365f5b92ffSmrg	    test -n "$save_libobjs" &&
72375f5b92ffSmrg	      func_verbose "creating a temporary reloadable object file: $output"
723817a48c7cSmrg
72395f5b92ffSmrg	    # Loop through the commands generated above and execute them.
72405f5b92ffSmrg	    save_ifs="$IFS"; IFS='~'
72415f5b92ffSmrg	    for cmd in $concat_cmds; do
72425f5b92ffSmrg	      IFS="$save_ifs"
72435f5b92ffSmrg	      $opt_silent || {
72445f5b92ffSmrg		  func_quote_for_expand "$cmd"
72455f5b92ffSmrg		  eval "func_echo $func_quote_for_expand_result"
72465f5b92ffSmrg	      }
72475f5b92ffSmrg	      $opt_dry_run || eval "$cmd" || {
72485f5b92ffSmrg		lt_exit=$?
72495f5b92ffSmrg
72505f5b92ffSmrg		# Restore the uninstalled library and exit
72515f5b92ffSmrg		if test "$mode" = relink; then
72525f5b92ffSmrg		  ( cd "$output_objdir" && \
72535f5b92ffSmrg		    $RM "${realname}T" && \
72545f5b92ffSmrg		    $MV "${realname}U" "$realname" )
72555f5b92ffSmrg		fi
725617a48c7cSmrg
72575f5b92ffSmrg		exit $lt_exit
72585f5b92ffSmrg	      }
72595f5b92ffSmrg	    done
72605f5b92ffSmrg	    IFS="$save_ifs"
726117a48c7cSmrg
72625f5b92ffSmrg	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
72635f5b92ffSmrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
72645f5b92ffSmrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
726517a48c7cSmrg	    fi
726617a48c7cSmrg	  fi
726717a48c7cSmrg
72685f5b92ffSmrg          if ${skipped_export-false}; then
72695f5b92ffSmrg	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
72705f5b92ffSmrg	      tmp_export_symbols="$export_symbols"
72715f5b92ffSmrg	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
72725f5b92ffSmrg	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
72735f5b92ffSmrg	    fi
727417a48c7cSmrg
72755f5b92ffSmrg	    if test -n "$orig_export_symbols"; then
72765f5b92ffSmrg	      # The given exports_symbols file has to be filtered, so filter it.
72775f5b92ffSmrg	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
72785f5b92ffSmrg	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
72795f5b92ffSmrg	      # 's' commands which not all seds can handle. GNU sed should be fine
72805f5b92ffSmrg	      # though. Also, the filter scales superlinearly with the number of
72815f5b92ffSmrg	      # global variables. join(1) would be nice here, but unfortunately
72825f5b92ffSmrg	      # isn't a blessed tool.
72835f5b92ffSmrg	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
72845f5b92ffSmrg	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
72855f5b92ffSmrg	      export_symbols=$output_objdir/$libname.def
72865f5b92ffSmrg	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
72875f5b92ffSmrg	    fi
72885f5b92ffSmrg	  fi
728917a48c7cSmrg
72905f5b92ffSmrg	  libobjs=$output
72915f5b92ffSmrg	  # Restore the value of output.
72925f5b92ffSmrg	  output=$save_output
729317a48c7cSmrg
72945f5b92ffSmrg	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
72955f5b92ffSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
72965f5b92ffSmrg	    test "X$libobjs" = "X " && libobjs=
72975f5b92ffSmrg	  fi
72985f5b92ffSmrg	  # Expand the library linking commands again to reset the
72995f5b92ffSmrg	  # value of $libobjs for piecewise linking.
730017a48c7cSmrg
73015f5b92ffSmrg	  # Do each of the archive commands.
73025f5b92ffSmrg	  if test "$module" = yes && test -n "$module_cmds" ; then
73035f5b92ffSmrg	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
73045f5b92ffSmrg	      cmds=$module_expsym_cmds
73055f5b92ffSmrg	    else
73065f5b92ffSmrg	      cmds=$module_cmds
730717a48c7cSmrg	    fi
730817a48c7cSmrg	  else
73095f5b92ffSmrg	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
73105f5b92ffSmrg	      cmds=$archive_expsym_cmds
73115f5b92ffSmrg	    else
73125f5b92ffSmrg	      cmds=$archive_cmds
73135f5b92ffSmrg	    fi
731417a48c7cSmrg	  fi
73155f5b92ffSmrg	fi
731617a48c7cSmrg
73175f5b92ffSmrg	if test -n "$delfiles"; then
73185f5b92ffSmrg	  # Append the command to remove temporary files to $cmds.
73195f5b92ffSmrg	  eval cmds=\"\$cmds~\$RM $delfiles\"
73205f5b92ffSmrg	fi
732117a48c7cSmrg
73225f5b92ffSmrg	# Add any objects from preloaded convenience libraries
73235f5b92ffSmrg	if test -n "$dlprefiles"; then
73245f5b92ffSmrg	  gentop="$output_objdir/${outputname}x"
73255f5b92ffSmrg	  generated="$generated $gentop"
732617a48c7cSmrg
73275f5b92ffSmrg	  func_extract_archives $gentop $dlprefiles
73285f5b92ffSmrg	  libobjs="$libobjs $func_extract_archives_result"
73295f5b92ffSmrg	  test "X$libobjs" = "X " && libobjs=
73305f5b92ffSmrg	fi
733117a48c7cSmrg
73325f5b92ffSmrg	save_ifs="$IFS"; IFS='~'
73335f5b92ffSmrg	for cmd in $cmds; do
73345f5b92ffSmrg	  IFS="$save_ifs"
73355f5b92ffSmrg	  eval cmd=\"$cmd\"
73365f5b92ffSmrg	  $opt_silent || {
73375f5b92ffSmrg	    func_quote_for_expand "$cmd"
73385f5b92ffSmrg	    eval "func_echo $func_quote_for_expand_result"
73395f5b92ffSmrg	  }
73405f5b92ffSmrg	  $opt_dry_run || eval "$cmd" || {
73415f5b92ffSmrg	    lt_exit=$?
734217a48c7cSmrg
73435f5b92ffSmrg	    # Restore the uninstalled library and exit
73445f5b92ffSmrg	    if test "$mode" = relink; then
73455f5b92ffSmrg	      ( cd "$output_objdir" && \
73465f5b92ffSmrg	        $RM "${realname}T" && \
73475f5b92ffSmrg		$MV "${realname}U" "$realname" )
73485f5b92ffSmrg	    fi
734917a48c7cSmrg
73505f5b92ffSmrg	    exit $lt_exit
73515f5b92ffSmrg	  }
73525f5b92ffSmrg	done
73535f5b92ffSmrg	IFS="$save_ifs"
735417a48c7cSmrg
73555f5b92ffSmrg	# Restore the uninstalled library and exit
73565f5b92ffSmrg	if test "$mode" = relink; then
73575f5b92ffSmrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
735817a48c7cSmrg
73595f5b92ffSmrg	  if test -n "$convenience"; then
73605f5b92ffSmrg	    if test -z "$whole_archive_flag_spec"; then
73615f5b92ffSmrg	      func_show_eval '${RM}r "$gentop"'
73625f5b92ffSmrg	    fi
73635f5b92ffSmrg	  fi
736417a48c7cSmrg
73655f5b92ffSmrg	  exit $EXIT_SUCCESS
73665f5b92ffSmrg	fi
73675f5b92ffSmrg
73685f5b92ffSmrg	# Create links to the real library.
73695f5b92ffSmrg	for linkname in $linknames; do
73705f5b92ffSmrg	  if test "$realname" != "$linkname"; then
73715f5b92ffSmrg	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
737217a48c7cSmrg	  fi
737317a48c7cSmrg	done
737417a48c7cSmrg
73755f5b92ffSmrg	# If -module or -export-dynamic was specified, set the dlname.
73765f5b92ffSmrg	if test "$module" = yes || test "$export_dynamic" = yes; then
73775f5b92ffSmrg	  # On all known operating systems, these are identical.
73785f5b92ffSmrg	  dlname="$soname"
73795f5b92ffSmrg	fi
73805f5b92ffSmrg      fi
738117a48c7cSmrg      ;;
738217a48c7cSmrg
73835f5b92ffSmrg    obj)
73845f5b92ffSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
73855f5b92ffSmrg	func_warning "\`-dlopen' is ignored for objects"
73865f5b92ffSmrg      fi
738717a48c7cSmrg
73885f5b92ffSmrg      case " $deplibs" in
73895f5b92ffSmrg      *\ -l* | *\ -L*)
73905f5b92ffSmrg	func_warning "\`-l' and \`-L' are ignored for objects" ;;
739117a48c7cSmrg      esac
739217a48c7cSmrg
73935f5b92ffSmrg      test -n "$rpath" && \
73945f5b92ffSmrg	func_warning "\`-rpath' is ignored for objects"
73955f5b92ffSmrg
73965f5b92ffSmrg      test -n "$xrpath" && \
73975f5b92ffSmrg	func_warning "\`-R' is ignored for objects"
739817a48c7cSmrg
73995f5b92ffSmrg      test -n "$vinfo" && \
74005f5b92ffSmrg	func_warning "\`-version-info' is ignored for objects"
740117a48c7cSmrg
74025f5b92ffSmrg      test -n "$release" && \
74035f5b92ffSmrg	func_warning "\`-release' is ignored for objects"
74045f5b92ffSmrg
74055f5b92ffSmrg      case $output in
74065f5b92ffSmrg      *.lo)
74075f5b92ffSmrg	test -n "$objs$old_deplibs" && \
74085f5b92ffSmrg	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
74095f5b92ffSmrg
74105f5b92ffSmrg	libobj=$output
74115f5b92ffSmrg	func_lo2o "$libobj"
74125f5b92ffSmrg	obj=$func_lo2o_result
741317a48c7cSmrg	;;
741417a48c7cSmrg      *)
74155f5b92ffSmrg	libobj=
74165f5b92ffSmrg	obj="$output"
741717a48c7cSmrg	;;
741817a48c7cSmrg      esac
741917a48c7cSmrg
74205f5b92ffSmrg      # Delete the old objects.
74215f5b92ffSmrg      $opt_dry_run || $RM $obj $libobj
742217a48c7cSmrg
74235f5b92ffSmrg      # Objects from convenience libraries.  This assumes
74245f5b92ffSmrg      # single-version convenience libraries.  Whenever we create
74255f5b92ffSmrg      # different ones for PIC/non-PIC, this we'll have to duplicate
74265f5b92ffSmrg      # the extraction.
74275f5b92ffSmrg      reload_conv_objs=
74285f5b92ffSmrg      gentop=
74295f5b92ffSmrg      # reload_cmds runs $LD directly, so let us get rid of
74305f5b92ffSmrg      # -Wl from whole_archive_flag_spec and hope we can get by with
74315f5b92ffSmrg      # turning comma into space..
74325f5b92ffSmrg      wl=
743317a48c7cSmrg
74345f5b92ffSmrg      if test -n "$convenience"; then
74355f5b92ffSmrg	if test -n "$whole_archive_flag_spec"; then
74365f5b92ffSmrg	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
74375f5b92ffSmrg	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
74385f5b92ffSmrg	else
74395f5b92ffSmrg	  gentop="$output_objdir/${obj}x"
74405f5b92ffSmrg	  generated="$generated $gentop"
744117a48c7cSmrg
74425f5b92ffSmrg	  func_extract_archives $gentop $convenience
74435f5b92ffSmrg	  reload_conv_objs="$reload_objs $func_extract_archives_result"
74445f5b92ffSmrg	fi
744517a48c7cSmrg      fi
744617a48c7cSmrg
74475f5b92ffSmrg      # Create the old-style object.
74485f5b92ffSmrg      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
744917a48c7cSmrg
74505f5b92ffSmrg      output="$obj"
74515f5b92ffSmrg      func_execute_cmds "$reload_cmds" 'exit $?'
745217a48c7cSmrg
74535f5b92ffSmrg      # Exit if we aren't doing a library object file.
74545f5b92ffSmrg      if test -z "$libobj"; then
74555f5b92ffSmrg	if test -n "$gentop"; then
74565f5b92ffSmrg	  func_show_eval '${RM}r "$gentop"'
74575f5b92ffSmrg	fi
74585f5b92ffSmrg
74595f5b92ffSmrg	exit $EXIT_SUCCESS
746017a48c7cSmrg      fi
74615f5b92ffSmrg
74625f5b92ffSmrg      if test "$build_libtool_libs" != yes; then
74635f5b92ffSmrg	if test -n "$gentop"; then
74645f5b92ffSmrg	  func_show_eval '${RM}r "$gentop"'
74655f5b92ffSmrg	fi
74665f5b92ffSmrg
74675f5b92ffSmrg	# Create an invalid libtool object if no PIC, so that we don't
74685f5b92ffSmrg	# accidentally link it into a program.
74695f5b92ffSmrg	# $show "echo timestamp > $libobj"
74705f5b92ffSmrg	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
74715f5b92ffSmrg	exit $EXIT_SUCCESS
74725f5b92ffSmrg      fi
74735f5b92ffSmrg
74745f5b92ffSmrg      if test -n "$pic_flag" || test "$pic_mode" != default; then
74755f5b92ffSmrg	# Only do commands if we really have different PIC objects.
74765f5b92ffSmrg	reload_objs="$libobjs $reload_conv_objs"
74775f5b92ffSmrg	output="$libobj"
74785f5b92ffSmrg	func_execute_cmds "$reload_cmds" 'exit $?'
74795f5b92ffSmrg      fi
74805f5b92ffSmrg
74815f5b92ffSmrg      if test -n "$gentop"; then
74825f5b92ffSmrg	func_show_eval '${RM}r "$gentop"'
74835f5b92ffSmrg      fi
74845f5b92ffSmrg
74855f5b92ffSmrg      exit $EXIT_SUCCESS
748617a48c7cSmrg      ;;
748717a48c7cSmrg
74885f5b92ffSmrg    prog)
74895f5b92ffSmrg      case $host in
74905f5b92ffSmrg	*cygwin*) func_stripname '' '.exe' "$output"
74915f5b92ffSmrg	          output=$func_stripname_result.exe;;
74925f5b92ffSmrg      esac
74935f5b92ffSmrg      test -n "$vinfo" && \
74945f5b92ffSmrg	func_warning "\`-version-info' is ignored for programs"
749517a48c7cSmrg
74965f5b92ffSmrg      test -n "$release" && \
74975f5b92ffSmrg	func_warning "\`-release' is ignored for programs"
749817a48c7cSmrg
74995f5b92ffSmrg      test "$preload" = yes \
75005f5b92ffSmrg        && test "$dlopen_support" = unknown \
75015f5b92ffSmrg	&& test "$dlopen_self" = unknown \
75025f5b92ffSmrg	&& test "$dlopen_self_static" = unknown && \
75035f5b92ffSmrg	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
75045f5b92ffSmrg
75055f5b92ffSmrg      case $host in
75065f5b92ffSmrg      *-*-rhapsody* | *-*-darwin1.[012])
75075f5b92ffSmrg	# On Rhapsody replace the C library is the System framework
75085f5b92ffSmrg	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
75095f5b92ffSmrg	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
751017a48c7cSmrg	;;
75115f5b92ffSmrg      esac
751217a48c7cSmrg
75135f5b92ffSmrg      case $host in
75145f5b92ffSmrg      *-*-darwin*)
75155f5b92ffSmrg	# Don't allow lazy linking, it breaks C++ global constructors
75165f5b92ffSmrg	# But is supposedly fixed on 10.4 or later (yay!).
75175f5b92ffSmrg	if test "$tagname" = CXX ; then
75185f5b92ffSmrg	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
75195f5b92ffSmrg	    10.[0123])
75205f5b92ffSmrg	      compile_command="$compile_command ${wl}-bind_at_load"
75215f5b92ffSmrg	      finalize_command="$finalize_command ${wl}-bind_at_load"
75225f5b92ffSmrg	    ;;
75235f5b92ffSmrg	  esac
752417a48c7cSmrg	fi
75255f5b92ffSmrg	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
75265f5b92ffSmrg	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
75275f5b92ffSmrg	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
75285f5b92ffSmrg	;;
75295f5b92ffSmrg      esac
753017a48c7cSmrg
753117a48c7cSmrg
75325f5b92ffSmrg      # move library search paths that coincide with paths to not yet
75335f5b92ffSmrg      # installed libraries to the beginning of the library search list
75345f5b92ffSmrg      new_libs=
75355f5b92ffSmrg      for path in $notinst_path; do
75365f5b92ffSmrg	case " $new_libs " in
75375f5b92ffSmrg	*" -L$path/$objdir "*) ;;
75385f5b92ffSmrg	*)
75395f5b92ffSmrg	  case " $compile_deplibs " in
75405f5b92ffSmrg	  *" -L$path/$objdir "*)
75415f5b92ffSmrg	    new_libs="$new_libs -L$path/$objdir" ;;
754217a48c7cSmrg	  esac
75435f5b92ffSmrg	  ;;
75445f5b92ffSmrg	esac
75455f5b92ffSmrg      done
75465f5b92ffSmrg      for deplib in $compile_deplibs; do
75475f5b92ffSmrg	case $deplib in
75485f5b92ffSmrg	-L*)
75495f5b92ffSmrg	  case " $new_libs " in
75505f5b92ffSmrg	  *" $deplib "*) ;;
75515f5b92ffSmrg	  *) new_libs="$new_libs $deplib" ;;
755217a48c7cSmrg	  esac
75535f5b92ffSmrg	  ;;
75545f5b92ffSmrg	*) new_libs="$new_libs $deplib" ;;
75555f5b92ffSmrg	esac
75565f5b92ffSmrg      done
75575f5b92ffSmrg      compile_deplibs="$new_libs"
755817a48c7cSmrg
755917a48c7cSmrg
75605f5b92ffSmrg      compile_command="$compile_command $compile_deplibs"
75615f5b92ffSmrg      finalize_command="$finalize_command $finalize_deplibs"
756217a48c7cSmrg
75635f5b92ffSmrg      if test -n "$rpath$xrpath"; then
75645f5b92ffSmrg	# If the user specified any rpath flags, then add them.
75655f5b92ffSmrg	for libdir in $rpath $xrpath; do
75665f5b92ffSmrg	  # This is the magic to use -rpath.
75675f5b92ffSmrg	  case "$finalize_rpath " in
75685f5b92ffSmrg	  *" $libdir "*) ;;
75695f5b92ffSmrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
75705f5b92ffSmrg	  esac
75715f5b92ffSmrg	done
75725f5b92ffSmrg      fi
757317a48c7cSmrg
75745f5b92ffSmrg      # Now hardcode the library paths
75755f5b92ffSmrg      rpath=
75765f5b92ffSmrg      hardcode_libdirs=
75775f5b92ffSmrg      for libdir in $compile_rpath $finalize_rpath; do
75785f5b92ffSmrg	if test -n "$hardcode_libdir_flag_spec"; then
75795f5b92ffSmrg	  if test -n "$hardcode_libdir_separator"; then
75805f5b92ffSmrg	    if test -z "$hardcode_libdirs"; then
75815f5b92ffSmrg	      hardcode_libdirs="$libdir"
75825f5b92ffSmrg	    else
75835f5b92ffSmrg	      # Just accumulate the unique libdirs.
75845f5b92ffSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
75855f5b92ffSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
75865f5b92ffSmrg		;;
75875f5b92ffSmrg	      *)
75885f5b92ffSmrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
75895f5b92ffSmrg		;;
75905f5b92ffSmrg	      esac
75915f5b92ffSmrg	    fi
759217a48c7cSmrg	  else
75935f5b92ffSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
75945f5b92ffSmrg	    rpath="$rpath $flag"
759517a48c7cSmrg	  fi
75965f5b92ffSmrg	elif test -n "$runpath_var"; then
75975f5b92ffSmrg	  case "$perm_rpath " in
75985f5b92ffSmrg	  *" $libdir "*) ;;
75995f5b92ffSmrg	  *) perm_rpath="$perm_rpath $libdir" ;;
76005f5b92ffSmrg	  esac
76015f5b92ffSmrg	fi
76025f5b92ffSmrg	case $host in
76035f5b92ffSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
76045f5b92ffSmrg	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
76055f5b92ffSmrg	  case :$dllsearchpath: in
76065f5b92ffSmrg	  *":$libdir:"*) ;;
76075f5b92ffSmrg	  ::) dllsearchpath=$libdir;;
76085f5b92ffSmrg	  *) dllsearchpath="$dllsearchpath:$libdir";;
76095f5b92ffSmrg	  esac
76105f5b92ffSmrg	  case :$dllsearchpath: in
76115f5b92ffSmrg	  *":$testbindir:"*) ;;
76125f5b92ffSmrg	  ::) dllsearchpath=$testbindir;;
76135f5b92ffSmrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
76145f5b92ffSmrg	  esac
76155f5b92ffSmrg	  ;;
76165f5b92ffSmrg	esac
76175f5b92ffSmrg      done
76185f5b92ffSmrg      # Substitute the hardcoded libdirs into the rpath.
76195f5b92ffSmrg      if test -n "$hardcode_libdir_separator" &&
76205f5b92ffSmrg	 test -n "$hardcode_libdirs"; then
76215f5b92ffSmrg	libdir="$hardcode_libdirs"
76225f5b92ffSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
76235f5b92ffSmrg      fi
76245f5b92ffSmrg      compile_rpath="$rpath"
762517a48c7cSmrg
76265f5b92ffSmrg      rpath=
76275f5b92ffSmrg      hardcode_libdirs=
76285f5b92ffSmrg      for libdir in $finalize_rpath; do
76295f5b92ffSmrg	if test -n "$hardcode_libdir_flag_spec"; then
76305f5b92ffSmrg	  if test -n "$hardcode_libdir_separator"; then
76315f5b92ffSmrg	    if test -z "$hardcode_libdirs"; then
76325f5b92ffSmrg	      hardcode_libdirs="$libdir"
76335f5b92ffSmrg	    else
76345f5b92ffSmrg	      # Just accumulate the unique libdirs.
76355f5b92ffSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
76365f5b92ffSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
76375f5b92ffSmrg		;;
76385f5b92ffSmrg	      *)
76395f5b92ffSmrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
76405f5b92ffSmrg		;;
76415f5b92ffSmrg	      esac
76425f5b92ffSmrg	    fi
764317a48c7cSmrg	  else
76445f5b92ffSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
76455f5b92ffSmrg	    rpath="$rpath $flag"
764617a48c7cSmrg	  fi
76475f5b92ffSmrg	elif test -n "$runpath_var"; then
76485f5b92ffSmrg	  case "$finalize_perm_rpath " in
76495f5b92ffSmrg	  *" $libdir "*) ;;
76505f5b92ffSmrg	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
76515f5b92ffSmrg	  esac
765217a48c7cSmrg	fi
76535f5b92ffSmrg      done
76545f5b92ffSmrg      # Substitute the hardcoded libdirs into the rpath.
76555f5b92ffSmrg      if test -n "$hardcode_libdir_separator" &&
76565f5b92ffSmrg	 test -n "$hardcode_libdirs"; then
76575f5b92ffSmrg	libdir="$hardcode_libdirs"
76585f5b92ffSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
76595f5b92ffSmrg      fi
76605f5b92ffSmrg      finalize_rpath="$rpath"
766117a48c7cSmrg
76625f5b92ffSmrg      if test -n "$libobjs" && test "$build_old_libs" = yes; then
76635f5b92ffSmrg	# Transform all the library objects into standard objects.
76645f5b92ffSmrg	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
76655f5b92ffSmrg	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
76665f5b92ffSmrg      fi
766717a48c7cSmrg
76685f5b92ffSmrg      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
766917a48c7cSmrg
76705f5b92ffSmrg      # template prelinking step
76715f5b92ffSmrg      if test -n "$prelink_cmds"; then
76725f5b92ffSmrg	func_execute_cmds "$prelink_cmds" 'exit $?'
76735f5b92ffSmrg      fi
767417a48c7cSmrg
76755f5b92ffSmrg      wrappers_required=yes
76765f5b92ffSmrg      case $host in
76775f5b92ffSmrg      *cygwin* | *mingw* )
76785f5b92ffSmrg        if test "$build_libtool_libs" != yes; then
76795f5b92ffSmrg          wrappers_required=no
76805f5b92ffSmrg        fi
76815f5b92ffSmrg        ;;
76825f5b92ffSmrg      *cegcc)
76835f5b92ffSmrg        # Disable wrappers for cegcc, we are cross compiling anyway.
76845f5b92ffSmrg        wrappers_required=no
76855f5b92ffSmrg        ;;
76865f5b92ffSmrg      *)
76875f5b92ffSmrg        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
76885f5b92ffSmrg          wrappers_required=no
76895f5b92ffSmrg        fi
76905f5b92ffSmrg        ;;
76915f5b92ffSmrg      esac
76925f5b92ffSmrg      if test "$wrappers_required" = no; then
76935f5b92ffSmrg	# Replace the output file specification.
76945f5b92ffSmrg	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
76955f5b92ffSmrg	link_command="$compile_command$compile_rpath"
769617a48c7cSmrg
76975f5b92ffSmrg	# We have no uninstalled library dependencies, so finalize right now.
76985f5b92ffSmrg	exit_status=0
76995f5b92ffSmrg	func_show_eval "$link_command" 'exit_status=$?'
770017a48c7cSmrg
77015f5b92ffSmrg	# Delete the generated files.
77025f5b92ffSmrg	if test -f "$output_objdir/${outputname}S.${objext}"; then
77035f5b92ffSmrg	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
770417a48c7cSmrg	fi
770517a48c7cSmrg
77065f5b92ffSmrg	exit $exit_status
77075f5b92ffSmrg      fi
770817a48c7cSmrg
77095f5b92ffSmrg      if test -n "$compile_shlibpath$finalize_shlibpath"; then
77105f5b92ffSmrg	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
77115f5b92ffSmrg      fi
77125f5b92ffSmrg      if test -n "$finalize_shlibpath"; then
77135f5b92ffSmrg	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
77145f5b92ffSmrg      fi
771517a48c7cSmrg
77165f5b92ffSmrg      compile_var=
77175f5b92ffSmrg      finalize_var=
77185f5b92ffSmrg      if test -n "$runpath_var"; then
77195f5b92ffSmrg	if test -n "$perm_rpath"; then
77205f5b92ffSmrg	  # We should set the runpath_var.
77215f5b92ffSmrg	  rpath=
77225f5b92ffSmrg	  for dir in $perm_rpath; do
77235f5b92ffSmrg	    rpath="$rpath$dir:"
77245f5b92ffSmrg	  done
77255f5b92ffSmrg	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
772617a48c7cSmrg	fi
77275f5b92ffSmrg	if test -n "$finalize_perm_rpath"; then
77285f5b92ffSmrg	  # We should set the runpath_var.
77295f5b92ffSmrg	  rpath=
77305f5b92ffSmrg	  for dir in $finalize_perm_rpath; do
77315f5b92ffSmrg	    rpath="$rpath$dir:"
77325f5b92ffSmrg	  done
77335f5b92ffSmrg	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
773417a48c7cSmrg	fi
77355f5b92ffSmrg      fi
773617a48c7cSmrg
77375f5b92ffSmrg      if test "$no_install" = yes; then
77385f5b92ffSmrg	# We don't need to create a wrapper script.
77395f5b92ffSmrg	link_command="$compile_var$compile_command$compile_rpath"
77405f5b92ffSmrg	# Replace the output file specification.
77415f5b92ffSmrg	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
77425f5b92ffSmrg	# Delete the old output file.
77435f5b92ffSmrg	$opt_dry_run || $RM $output
77445f5b92ffSmrg	# Link the executable and exit
77455f5b92ffSmrg	func_show_eval "$link_command" 'exit $?'
774617a48c7cSmrg	exit $EXIT_SUCCESS
77475f5b92ffSmrg      fi
774817a48c7cSmrg
77495f5b92ffSmrg      if test "$hardcode_action" = relink; then
77505f5b92ffSmrg	# Fast installation is not supported
77515f5b92ffSmrg	link_command="$compile_var$compile_command$compile_rpath"
77525f5b92ffSmrg	relink_command="$finalize_var$finalize_command$finalize_rpath"
77535f5b92ffSmrg
77545f5b92ffSmrg	func_warning "this platform does not like uninstalled shared libraries"
77555f5b92ffSmrg	func_warning "\`$output' will be relinked during installation"
77565f5b92ffSmrg      else
77575f5b92ffSmrg	if test "$fast_install" != no; then
77585f5b92ffSmrg	  link_command="$finalize_var$compile_command$finalize_rpath"
77595f5b92ffSmrg	  if test "$fast_install" = yes; then
77605f5b92ffSmrg	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
77615f5b92ffSmrg	  else
77625f5b92ffSmrg	    # fast_install is set to needless
77635f5b92ffSmrg	    relink_command=
77645f5b92ffSmrg	  fi
776517a48c7cSmrg	else
77665f5b92ffSmrg	  link_command="$compile_var$compile_command$compile_rpath"
77675f5b92ffSmrg	  relink_command="$finalize_var$finalize_command$finalize_rpath"
776817a48c7cSmrg	fi
77695f5b92ffSmrg      fi
777017a48c7cSmrg
77715f5b92ffSmrg      # Replace the output file specification.
77725f5b92ffSmrg      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
777317a48c7cSmrg
77745f5b92ffSmrg      # Delete the old output files.
77755f5b92ffSmrg      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
777617a48c7cSmrg
77775f5b92ffSmrg      func_show_eval "$link_command" 'exit $?'
777817a48c7cSmrg
77795f5b92ffSmrg      # Now create the wrapper script.
77805f5b92ffSmrg      func_verbose "creating $output"
778117a48c7cSmrg
77825f5b92ffSmrg      # Quote the relink command for shipping.
77835f5b92ffSmrg      if test -n "$relink_command"; then
77845f5b92ffSmrg	# Preserve any variables that may affect compiler behavior
77855f5b92ffSmrg	for var in $variables_saved_for_relink; do
77865f5b92ffSmrg	  if eval test -z \"\${$var+set}\"; then
77875f5b92ffSmrg	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
77885f5b92ffSmrg	  elif eval var_value=\$$var; test -z "$var_value"; then
77895f5b92ffSmrg	    relink_command="$var=; export $var; $relink_command"
779017a48c7cSmrg	  else
77915f5b92ffSmrg	    func_quote_for_eval "$var_value"
77925f5b92ffSmrg	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
779317a48c7cSmrg	  fi
77945f5b92ffSmrg	done
77955f5b92ffSmrg	relink_command="(cd `pwd`; $relink_command)"
77965f5b92ffSmrg	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
77975f5b92ffSmrg      fi
779817a48c7cSmrg
77995f5b92ffSmrg      # Quote $ECHO for shipping.
78005f5b92ffSmrg      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
78015f5b92ffSmrg	case $progpath in
78025f5b92ffSmrg	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
78035f5b92ffSmrg	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
78045f5b92ffSmrg	esac
78055f5b92ffSmrg	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
78065f5b92ffSmrg      else
78075f5b92ffSmrg	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
78085f5b92ffSmrg      fi
78095f5b92ffSmrg
78105f5b92ffSmrg      # Only actually do things if not in dry run mode.
78115f5b92ffSmrg      $opt_dry_run || {
78125f5b92ffSmrg	# win32 will think the script is a binary if it has
78135f5b92ffSmrg	# a .exe suffix, so we strip it off here.
78145f5b92ffSmrg	case $output in
78155f5b92ffSmrg	  *.exe) func_stripname '' '.exe' "$output"
78165f5b92ffSmrg	         output=$func_stripname_result ;;
78175f5b92ffSmrg	esac
78185f5b92ffSmrg	# test for cygwin because mv fails w/o .exe extensions
78195f5b92ffSmrg	case $host in
78205f5b92ffSmrg	  *cygwin*)
78215f5b92ffSmrg	    exeext=.exe
78225f5b92ffSmrg	    func_stripname '' '.exe' "$outputname"
78235f5b92ffSmrg	    outputname=$func_stripname_result ;;
78245f5b92ffSmrg	  *) exeext= ;;
782517a48c7cSmrg	esac
78265f5b92ffSmrg	case $host in
78275f5b92ffSmrg	  *cygwin* | *mingw* )
78285f5b92ffSmrg	    func_dirname_and_basename "$output" "" "."
78295f5b92ffSmrg	    output_name=$func_basename_result
78305f5b92ffSmrg	    output_path=$func_dirname_result
78315f5b92ffSmrg	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
78325f5b92ffSmrg	    cwrapper="$output_path/$output_name.exe"
78335f5b92ffSmrg	    $RM $cwrappersource $cwrapper
78345f5b92ffSmrg	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
78355f5b92ffSmrg
78365f5b92ffSmrg	    func_emit_cwrapperexe_src > $cwrappersource
78375f5b92ffSmrg
78385f5b92ffSmrg	    # The wrapper executable is built using the $host compiler,
78395f5b92ffSmrg	    # because it contains $host paths and files. If cross-
78405f5b92ffSmrg	    # compiling, it, like the target executable, must be
78415f5b92ffSmrg	    # executed on the $host or under an emulation environment.
78425f5b92ffSmrg	    $opt_dry_run || {
78435f5b92ffSmrg	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
78445f5b92ffSmrg	      $STRIP $cwrapper
78455f5b92ffSmrg	    }
784617a48c7cSmrg
78475f5b92ffSmrg	    # Now, create the wrapper script for func_source use:
78485f5b92ffSmrg	    func_ltwrapper_scriptname $cwrapper
78495f5b92ffSmrg	    $RM $func_ltwrapper_scriptname_result
78505f5b92ffSmrg	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
78515f5b92ffSmrg	    $opt_dry_run || {
78525f5b92ffSmrg	      # note: this script will not be executed, so do not chmod.
78535f5b92ffSmrg	      if test "x$build" = "x$host" ; then
78545f5b92ffSmrg		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
78555f5b92ffSmrg	      else
78565f5b92ffSmrg		func_emit_wrapper no > $func_ltwrapper_scriptname_result
78575f5b92ffSmrg	      fi
78585f5b92ffSmrg	    }
78595f5b92ffSmrg	  ;;
78605f5b92ffSmrg	  * )
78615f5b92ffSmrg	    $RM $output
78625f5b92ffSmrg	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
786317a48c7cSmrg
78645f5b92ffSmrg	    func_emit_wrapper no > $output
78655f5b92ffSmrg	    chmod +x $output
78665f5b92ffSmrg	  ;;
78675f5b92ffSmrg	esac
78685f5b92ffSmrg      }
78695f5b92ffSmrg      exit $EXIT_SUCCESS
78705f5b92ffSmrg      ;;
78715f5b92ffSmrg    esac
787217a48c7cSmrg
78735f5b92ffSmrg    # See if we need to build an old-fashioned archive.
78745f5b92ffSmrg    for oldlib in $oldlibs; do
787517a48c7cSmrg
78765f5b92ffSmrg      if test "$build_libtool_libs" = convenience; then
78775f5b92ffSmrg	oldobjs="$libobjs_save $symfileobj"
78785f5b92ffSmrg	addlibs="$convenience"
78795f5b92ffSmrg	build_libtool_libs=no
78805f5b92ffSmrg      else
78815f5b92ffSmrg	if test "$build_libtool_libs" = module; then
78825f5b92ffSmrg	  oldobjs="$libobjs_save"
78835f5b92ffSmrg	  build_libtool_libs=no
78845f5b92ffSmrg	else
78855f5b92ffSmrg	  oldobjs="$old_deplibs $non_pic_objects"
78865f5b92ffSmrg	  if test "$preload" = yes && test -f "$symfileobj"; then
78875f5b92ffSmrg	    oldobjs="$oldobjs $symfileobj"
78885f5b92ffSmrg	  fi
78895f5b92ffSmrg	fi
78905f5b92ffSmrg	addlibs="$old_convenience"
789117a48c7cSmrg      fi
789217a48c7cSmrg
78935f5b92ffSmrg      if test -n "$addlibs"; then
78945f5b92ffSmrg	gentop="$output_objdir/${outputname}x"
78955f5b92ffSmrg	generated="$generated $gentop"
789617a48c7cSmrg
78975f5b92ffSmrg	func_extract_archives $gentop $addlibs
78985f5b92ffSmrg	oldobjs="$oldobjs $func_extract_archives_result"
78995f5b92ffSmrg      fi
790017a48c7cSmrg
79015f5b92ffSmrg      # Do each command in the archive commands.
79025f5b92ffSmrg      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
79035f5b92ffSmrg	cmds=$old_archive_from_new_cmds
79045f5b92ffSmrg      else
790517a48c7cSmrg
79065f5b92ffSmrg	# Add any objects from preloaded convenience libraries
79075f5b92ffSmrg	if test -n "$dlprefiles"; then
79085f5b92ffSmrg	  gentop="$output_objdir/${outputname}x"
79095f5b92ffSmrg	  generated="$generated $gentop"
791017a48c7cSmrg
79115f5b92ffSmrg	  func_extract_archives $gentop $dlprefiles
79125f5b92ffSmrg	  oldobjs="$oldobjs $func_extract_archives_result"
79135f5b92ffSmrg	fi
791417a48c7cSmrg
79155f5b92ffSmrg	# POSIX demands no paths to be encoded in archives.  We have
79165f5b92ffSmrg	# to avoid creating archives with duplicate basenames if we
79175f5b92ffSmrg	# might have to extract them afterwards, e.g., when creating a
79185f5b92ffSmrg	# static archive out of a convenience library, or when linking
79195f5b92ffSmrg	# the entirety of a libtool archive into another (currently
79205f5b92ffSmrg	# not supported by libtool).
79215f5b92ffSmrg	if (for obj in $oldobjs
79225f5b92ffSmrg	    do
79235f5b92ffSmrg	      func_basename "$obj"
79245f5b92ffSmrg	      $ECHO "$func_basename_result"
79255f5b92ffSmrg	    done | sort | sort -uc >/dev/null 2>&1); then
79265f5b92ffSmrg	  :
79275f5b92ffSmrg	else
79285f5b92ffSmrg	  $ECHO "copying selected object files to avoid basename conflicts..."
79295f5b92ffSmrg	  gentop="$output_objdir/${outputname}x"
79305f5b92ffSmrg	  generated="$generated $gentop"
79315f5b92ffSmrg	  func_mkdir_p "$gentop"
79325f5b92ffSmrg	  save_oldobjs=$oldobjs
79335f5b92ffSmrg	  oldobjs=
79345f5b92ffSmrg	  counter=1
79355f5b92ffSmrg	  for obj in $save_oldobjs
79365f5b92ffSmrg	  do
79375f5b92ffSmrg	    func_basename "$obj"
79385f5b92ffSmrg	    objbase="$func_basename_result"
79395f5b92ffSmrg	    case " $oldobjs " in
79405f5b92ffSmrg	    " ") oldobjs=$obj ;;
79415f5b92ffSmrg	    *[\ /]"$objbase "*)
79425f5b92ffSmrg	      while :; do
79435f5b92ffSmrg		# Make sure we don't pick an alternate name that also
79445f5b92ffSmrg		# overlaps.
79455f5b92ffSmrg		newobj=lt$counter-$objbase
79465f5b92ffSmrg		func_arith $counter + 1
79475f5b92ffSmrg		counter=$func_arith_result
79485f5b92ffSmrg		case " $oldobjs " in
79495f5b92ffSmrg		*[\ /]"$newobj "*) ;;
79505f5b92ffSmrg		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
79515f5b92ffSmrg		esac
79525f5b92ffSmrg	      done
79535f5b92ffSmrg	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
79545f5b92ffSmrg	      oldobjs="$oldobjs $gentop/$newobj"
79555f5b92ffSmrg	      ;;
79565f5b92ffSmrg	    *) oldobjs="$oldobjs $obj" ;;
79575f5b92ffSmrg	    esac
795817a48c7cSmrg	  done
795917a48c7cSmrg	fi
79605f5b92ffSmrg	eval cmds=\"$old_archive_cmds\"
796117a48c7cSmrg
79625f5b92ffSmrg	func_len " $cmds"
79635f5b92ffSmrg	len=$func_len_result
79645f5b92ffSmrg	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
79655f5b92ffSmrg	  cmds=$old_archive_cmds
79665f5b92ffSmrg	else
79675f5b92ffSmrg	  # the command line is too long to link in one step, link in parts
79685f5b92ffSmrg	  func_verbose "using piecewise archive linking..."
79695f5b92ffSmrg	  save_RANLIB=$RANLIB
79705f5b92ffSmrg	  RANLIB=:
79715f5b92ffSmrg	  objlist=
79725f5b92ffSmrg	  concat_cmds=
79735f5b92ffSmrg	  save_oldobjs=$oldobjs
79745f5b92ffSmrg	  oldobjs=
79755f5b92ffSmrg	  # Is there a better way of finding the last object in the list?
79765f5b92ffSmrg	  for obj in $save_oldobjs
79775f5b92ffSmrg	  do
79785f5b92ffSmrg	    last_oldobj=$obj
79795f5b92ffSmrg	  done
79805f5b92ffSmrg	  eval test_cmds=\"$old_archive_cmds\"
79815f5b92ffSmrg	  func_len " $test_cmds"
79825f5b92ffSmrg	  len0=$func_len_result
79835f5b92ffSmrg	  len=$len0
79845f5b92ffSmrg	  for obj in $save_oldobjs
79855f5b92ffSmrg	  do
79865f5b92ffSmrg	    func_len " $obj"
79875f5b92ffSmrg	    func_arith $len + $func_len_result
79885f5b92ffSmrg	    len=$func_arith_result
79895f5b92ffSmrg	    func_append objlist " $obj"
79905f5b92ffSmrg	    if test "$len" -lt "$max_cmd_len"; then
79915f5b92ffSmrg	      :
79925f5b92ffSmrg	    else
79935f5b92ffSmrg	      # the above command should be used before it gets too long
79945f5b92ffSmrg	      oldobjs=$objlist
79955f5b92ffSmrg	      if test "$obj" = "$last_oldobj" ; then
79965f5b92ffSmrg		RANLIB=$save_RANLIB
79975f5b92ffSmrg	      fi
79985f5b92ffSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
79995f5b92ffSmrg	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
80005f5b92ffSmrg	      objlist=
80015f5b92ffSmrg	      len=$len0
80025f5b92ffSmrg	    fi
80035f5b92ffSmrg	  done
80045f5b92ffSmrg	  RANLIB=$save_RANLIB
80055f5b92ffSmrg	  oldobjs=$objlist
80065f5b92ffSmrg	  if test "X$oldobjs" = "X" ; then
80075f5b92ffSmrg	    eval cmds=\"\$concat_cmds\"
80085f5b92ffSmrg	  else
80095f5b92ffSmrg	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
80105f5b92ffSmrg	  fi
80115f5b92ffSmrg	fi
80125f5b92ffSmrg      fi
80135f5b92ffSmrg      func_execute_cmds "$cmds" 'exit $?'
801417a48c7cSmrg    done
801517a48c7cSmrg
80165f5b92ffSmrg    test -n "$generated" && \
80175f5b92ffSmrg      func_show_eval "${RM}r$generated"
801817a48c7cSmrg
80195f5b92ffSmrg    # Now create the libtool archive.
80205f5b92ffSmrg    case $output in
80215f5b92ffSmrg    *.la)
80225f5b92ffSmrg      old_library=
80235f5b92ffSmrg      test "$build_old_libs" = yes && old_library="$libname.$libext"
80245f5b92ffSmrg      func_verbose "creating $output"
802517a48c7cSmrg
80265f5b92ffSmrg      # Preserve any variables that may affect compiler behavior
80275f5b92ffSmrg      for var in $variables_saved_for_relink; do
80285f5b92ffSmrg	if eval test -z \"\${$var+set}\"; then
80295f5b92ffSmrg	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
80305f5b92ffSmrg	elif eval var_value=\$$var; test -z "$var_value"; then
80315f5b92ffSmrg	  relink_command="$var=; export $var; $relink_command"
803217a48c7cSmrg	else
80335f5b92ffSmrg	  func_quote_for_eval "$var_value"
80345f5b92ffSmrg	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
803517a48c7cSmrg	fi
80365f5b92ffSmrg      done
80375f5b92ffSmrg      # Quote the link command for shipping.
80385f5b92ffSmrg      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
80395f5b92ffSmrg      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
80405f5b92ffSmrg      if test "$hardcode_automatic" = yes ; then
80415f5b92ffSmrg	relink_command=
80425f5b92ffSmrg      fi
804317a48c7cSmrg
80445f5b92ffSmrg      # Only create the output if not a dry run.
80455f5b92ffSmrg      $opt_dry_run || {
80465f5b92ffSmrg	for installed in no yes; do
80475f5b92ffSmrg	  if test "$installed" = yes; then
80485f5b92ffSmrg	    if test -z "$install_libdir"; then
80495f5b92ffSmrg	      break
80505f5b92ffSmrg	    fi
80515f5b92ffSmrg	    output="$output_objdir/$outputname"i
80525f5b92ffSmrg	    # Replace all uninstalled libtool libraries with the installed ones
80535f5b92ffSmrg	    newdependency_libs=
80545f5b92ffSmrg	    for deplib in $dependency_libs; do
80555f5b92ffSmrg	      case $deplib in
80565f5b92ffSmrg	      *.la)
80575f5b92ffSmrg		func_basename "$deplib"
80585f5b92ffSmrg		name="$func_basename_result"
80595f5b92ffSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
80605f5b92ffSmrg		test -z "$libdir" && \
80615f5b92ffSmrg		  func_fatal_error "\`$deplib' is not a valid libtool archive"
80625f5b92ffSmrg		newdependency_libs="$newdependency_libs $libdir/$name"
80635f5b92ffSmrg		;;
80645f5b92ffSmrg	      *) newdependency_libs="$newdependency_libs $deplib" ;;
80655f5b92ffSmrg	      esac
80665f5b92ffSmrg	    done
80675f5b92ffSmrg	    dependency_libs="$newdependency_libs"
80685f5b92ffSmrg	    newdlfiles=
80695f5b92ffSmrg
80705f5b92ffSmrg	    for lib in $dlfiles; do
80715f5b92ffSmrg	      case $lib in
80725f5b92ffSmrg	      *.la)
80735f5b92ffSmrg	        func_basename "$lib"
80745f5b92ffSmrg		name="$func_basename_result"
80755f5b92ffSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
80765f5b92ffSmrg		test -z "$libdir" && \
80775f5b92ffSmrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
80785f5b92ffSmrg		newdlfiles="$newdlfiles $libdir/$name"
80795f5b92ffSmrg		;;
80805f5b92ffSmrg	      *) newdlfiles="$newdlfiles $lib" ;;
80815f5b92ffSmrg	      esac
80825f5b92ffSmrg	    done
80835f5b92ffSmrg	    dlfiles="$newdlfiles"
80845f5b92ffSmrg	    newdlprefiles=
80855f5b92ffSmrg	    for lib in $dlprefiles; do
80865f5b92ffSmrg	      case $lib in
80875f5b92ffSmrg	      *.la)
80885f5b92ffSmrg		# Only pass preopened files to the pseudo-archive (for
80895f5b92ffSmrg		# eventual linking with the app. that links it) if we
80905f5b92ffSmrg		# didn't already link the preopened objects directly into
80915f5b92ffSmrg		# the library:
80925f5b92ffSmrg		func_basename "$lib"
80935f5b92ffSmrg		name="$func_basename_result"
80945f5b92ffSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
80955f5b92ffSmrg		test -z "$libdir" && \
80965f5b92ffSmrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
80975f5b92ffSmrg		newdlprefiles="$newdlprefiles $libdir/$name"
80985f5b92ffSmrg		;;
80995f5b92ffSmrg	      esac
81005f5b92ffSmrg	    done
81015f5b92ffSmrg	    dlprefiles="$newdlprefiles"
81025f5b92ffSmrg	  else
81035f5b92ffSmrg	    newdlfiles=
81045f5b92ffSmrg	    for lib in $dlfiles; do
81055f5b92ffSmrg	      case $lib in
81065f5b92ffSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
81075f5b92ffSmrg		*) abs=`pwd`"/$lib" ;;
81085f5b92ffSmrg	      esac
81095f5b92ffSmrg	      newdlfiles="$newdlfiles $abs"
81105f5b92ffSmrg	    done
81115f5b92ffSmrg	    dlfiles="$newdlfiles"
81125f5b92ffSmrg	    newdlprefiles=
81135f5b92ffSmrg	    for lib in $dlprefiles; do
81145f5b92ffSmrg	      case $lib in
81155f5b92ffSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
81165f5b92ffSmrg		*) abs=`pwd`"/$lib" ;;
81175f5b92ffSmrg	      esac
81185f5b92ffSmrg	      newdlprefiles="$newdlprefiles $abs"
81195f5b92ffSmrg	    done
81205f5b92ffSmrg	    dlprefiles="$newdlprefiles"
81215f5b92ffSmrg	  fi
81225f5b92ffSmrg	  $RM $output
81235f5b92ffSmrg	  # place dlname in correct position for cygwin
81245f5b92ffSmrg	  tdlname=$dlname
81255f5b92ffSmrg	  case $host,$output,$installed,$module,$dlname in
81265f5b92ffSmrg	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
81275f5b92ffSmrg	  esac
81285f5b92ffSmrg	  $ECHO > $output "\
81295f5b92ffSmrg# $outputname - a libtool library file
81305f5b92ffSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
81315f5b92ffSmrg#
81325f5b92ffSmrg# Please DO NOT delete this file!
81335f5b92ffSmrg# It is necessary for linking the library.
813417a48c7cSmrg
81355f5b92ffSmrg# The name that we can dlopen(3).
81365f5b92ffSmrgdlname='$tdlname'
813717a48c7cSmrg
81385f5b92ffSmrg# Names of this library.
81395f5b92ffSmrglibrary_names='$library_names'
814017a48c7cSmrg
81415f5b92ffSmrg# The name of the static archive.
81425f5b92ffSmrgold_library='$old_library'
814317a48c7cSmrg
81445f5b92ffSmrg# Linker flags that can not go in dependency_libs.
81455f5b92ffSmrginherited_linker_flags='$new_inherited_linker_flags'
814617a48c7cSmrg
81475f5b92ffSmrg# Libraries that this one depends upon.
81485f5b92ffSmrgdependency_libs='$dependency_libs'
814917a48c7cSmrg
81505f5b92ffSmrg# Names of additional weak libraries provided by this library
81515f5b92ffSmrgweak_library_names='$weak_libs'
815217a48c7cSmrg
81535f5b92ffSmrg# Version information for $libname.
81545f5b92ffSmrgcurrent=$current
81555f5b92ffSmrgage=$age
81565f5b92ffSmrgrevision=$revision
815717a48c7cSmrg
81585f5b92ffSmrg# Is this an already installed library?
81595f5b92ffSmrginstalled=$installed
816017a48c7cSmrg
81615f5b92ffSmrg# Should we warn about portability when linking against -modules?
81625f5b92ffSmrgshouldnotlink=$module
816317a48c7cSmrg
81645f5b92ffSmrg# Files to dlopen/dlpreopen
81655f5b92ffSmrgdlopen='$dlfiles'
81665f5b92ffSmrgdlpreopen='$dlprefiles'
816717a48c7cSmrg
81685f5b92ffSmrg# Directory that this library needs to be installed in:
81695f5b92ffSmrglibdir='$install_libdir'"
81705f5b92ffSmrg	  if test "$installed" = no && test "$need_relink" = yes; then
81715f5b92ffSmrg	    $ECHO >> $output "\
81725f5b92ffSmrgrelink_command=\"$relink_command\""
81735f5b92ffSmrg	  fi
81745f5b92ffSmrg	done
81755f5b92ffSmrg      }
817617a48c7cSmrg
81775f5b92ffSmrg      # Do a symbolic link so that the libtool archive can be found in
81785f5b92ffSmrg      # LD_LIBRARY_PATH before the program is installed.
81795f5b92ffSmrg      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
81805f5b92ffSmrg      ;;
81815f5b92ffSmrg    esac
81825f5b92ffSmrg    exit $EXIT_SUCCESS
81835f5b92ffSmrg}
818417a48c7cSmrg
81855f5b92ffSmrg{ test "$mode" = link || test "$mode" = relink; } &&
81865f5b92ffSmrg    func_mode_link ${1+"$@"}
81878e0ed500Smrg
818817a48c7cSmrg
81895f5b92ffSmrg# func_mode_uninstall arg...
81905f5b92ffSmrgfunc_mode_uninstall ()
81915f5b92ffSmrg{
81925f5b92ffSmrg    $opt_debug
81935f5b92ffSmrg    RM="$nonopt"
819417a48c7cSmrg    files=
819517a48c7cSmrg    rmforce=
819617a48c7cSmrg    exit_status=0
819717a48c7cSmrg
819817a48c7cSmrg    # This variable tells wrapper scripts just to set variables rather
819917a48c7cSmrg    # than running their programs.
820017a48c7cSmrg    libtool_install_magic="$magic"
820117a48c7cSmrg
820217a48c7cSmrg    for arg
820317a48c7cSmrg    do
820417a48c7cSmrg      case $arg in
82055f5b92ffSmrg      -f) RM="$RM $arg"; rmforce=yes ;;
82065f5b92ffSmrg      -*) RM="$RM $arg" ;;
820717a48c7cSmrg      *) files="$files $arg" ;;
820817a48c7cSmrg      esac
820917a48c7cSmrg    done
821017a48c7cSmrg
82115f5b92ffSmrg    test -z "$RM" && \
82125f5b92ffSmrg      func_fatal_help "you must specify an RM program"
821317a48c7cSmrg
821417a48c7cSmrg    rmdirs=
821517a48c7cSmrg
821617a48c7cSmrg    origobjdir="$objdir"
821717a48c7cSmrg    for file in $files; do
82185f5b92ffSmrg      func_dirname "$file" "" "."
82195f5b92ffSmrg      dir="$func_dirname_result"
82205f5b92ffSmrg      if test "X$dir" = X.; then
822117a48c7cSmrg	objdir="$origobjdir"
822217a48c7cSmrg      else
822317a48c7cSmrg	objdir="$dir/$origobjdir"
822417a48c7cSmrg      fi
82255f5b92ffSmrg      func_basename "$file"
82265f5b92ffSmrg      name="$func_basename_result"
822717a48c7cSmrg      test "$mode" = uninstall && objdir="$dir"
822817a48c7cSmrg
822917a48c7cSmrg      # Remember objdir for removal later, being careful to avoid duplicates
823017a48c7cSmrg      if test "$mode" = clean; then
823117a48c7cSmrg	case " $rmdirs " in
823217a48c7cSmrg	  *" $objdir "*) ;;
823317a48c7cSmrg	  *) rmdirs="$rmdirs $objdir" ;;
823417a48c7cSmrg	esac
823517a48c7cSmrg      fi
823617a48c7cSmrg
823717a48c7cSmrg      # Don't error if the file doesn't exist and rm -f was used.
82385f5b92ffSmrg      if { test -L "$file"; } >/dev/null 2>&1 ||
82395f5b92ffSmrg	 { test -h "$file"; } >/dev/null 2>&1 ||
82405f5b92ffSmrg	 test -f "$file"; then
824117a48c7cSmrg	:
824217a48c7cSmrg      elif test -d "$file"; then
824317a48c7cSmrg	exit_status=1
824417a48c7cSmrg	continue
824517a48c7cSmrg      elif test "$rmforce" = yes; then
824617a48c7cSmrg	continue
824717a48c7cSmrg      fi
824817a48c7cSmrg
824917a48c7cSmrg      rmfiles="$file"
825017a48c7cSmrg
825117a48c7cSmrg      case $name in
825217a48c7cSmrg      *.la)
825317a48c7cSmrg	# Possibly a libtool archive, so verify it.
82545f5b92ffSmrg	if func_lalib_p "$file"; then
82555f5b92ffSmrg	  func_source $dir/$name
825617a48c7cSmrg
825717a48c7cSmrg	  # Delete the libtool libraries and symlinks.
825817a48c7cSmrg	  for n in $library_names; do
825917a48c7cSmrg	    rmfiles="$rmfiles $objdir/$n"
826017a48c7cSmrg	  done
826117a48c7cSmrg	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
826217a48c7cSmrg
826317a48c7cSmrg	  case "$mode" in
826417a48c7cSmrg	  clean)
826517a48c7cSmrg	    case "  $library_names " in
826617a48c7cSmrg	    # "  " in the beginning catches empty $dlname
826717a48c7cSmrg	    *" $dlname "*) ;;
826817a48c7cSmrg	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
826917a48c7cSmrg	    esac
82705f5b92ffSmrg	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
827117a48c7cSmrg	    ;;
827217a48c7cSmrg	  uninstall)
827317a48c7cSmrg	    if test -n "$library_names"; then
827417a48c7cSmrg	      # Do each command in the postuninstall commands.
82755f5b92ffSmrg	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
827617a48c7cSmrg	    fi
827717a48c7cSmrg
827817a48c7cSmrg	    if test -n "$old_library"; then
827917a48c7cSmrg	      # Do each command in the old_postuninstall commands.
82805f5b92ffSmrg	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
828117a48c7cSmrg	    fi
828217a48c7cSmrg	    # FIXME: should reinstall the best remaining shared library.
828317a48c7cSmrg	    ;;
828417a48c7cSmrg	  esac
828517a48c7cSmrg	fi
828617a48c7cSmrg	;;
828717a48c7cSmrg
828817a48c7cSmrg      *.lo)
828917a48c7cSmrg	# Possibly a libtool object, so verify it.
82905f5b92ffSmrg	if func_lalib_p "$file"; then
829117a48c7cSmrg
829217a48c7cSmrg	  # Read the .lo file
82935f5b92ffSmrg	  func_source $dir/$name
829417a48c7cSmrg
829517a48c7cSmrg	  # Add PIC object to the list of files to remove.
82965f5b92ffSmrg	  if test -n "$pic_object" &&
82975f5b92ffSmrg	     test "$pic_object" != none; then
829817a48c7cSmrg	    rmfiles="$rmfiles $dir/$pic_object"
829917a48c7cSmrg	  fi
830017a48c7cSmrg
830117a48c7cSmrg	  # Add non-PIC object to the list of files to remove.
83025f5b92ffSmrg	  if test -n "$non_pic_object" &&
83035f5b92ffSmrg	     test "$non_pic_object" != none; then
830417a48c7cSmrg	    rmfiles="$rmfiles $dir/$non_pic_object"
830517a48c7cSmrg	  fi
830617a48c7cSmrg	fi
830717a48c7cSmrg	;;
830817a48c7cSmrg
830917a48c7cSmrg      *)
831017a48c7cSmrg	if test "$mode" = clean ; then
831117a48c7cSmrg	  noexename=$name
831217a48c7cSmrg	  case $file in
831317a48c7cSmrg	  *.exe)
83145f5b92ffSmrg	    func_stripname '' '.exe' "$file"
83155f5b92ffSmrg	    file=$func_stripname_result
83165f5b92ffSmrg	    func_stripname '' '.exe' "$name"
83175f5b92ffSmrg	    noexename=$func_stripname_result
831817a48c7cSmrg	    # $file with .exe has already been added to rmfiles,
831917a48c7cSmrg	    # add $file without .exe
832017a48c7cSmrg	    rmfiles="$rmfiles $file"
832117a48c7cSmrg	    ;;
832217a48c7cSmrg	  esac
832317a48c7cSmrg	  # Do a test to see if this is a libtool program.
83245f5b92ffSmrg	  if func_ltwrapper_p "$file"; then
83255f5b92ffSmrg	    if func_ltwrapper_executable_p "$file"; then
83265f5b92ffSmrg	      func_ltwrapper_scriptname "$file"
83275f5b92ffSmrg	      relink_command=
83285f5b92ffSmrg	      func_source $func_ltwrapper_scriptname_result
83295f5b92ffSmrg	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
83305f5b92ffSmrg	    else
83315f5b92ffSmrg	      relink_command=
83325f5b92ffSmrg	      func_source $dir/$noexename
83335f5b92ffSmrg	    fi
833417a48c7cSmrg
833517a48c7cSmrg	    # note $name still contains .exe if it was in $file originally
833617a48c7cSmrg	    # as does the version of $file that was added into $rmfiles
833717a48c7cSmrg	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
833817a48c7cSmrg	    if test "$fast_install" = yes && test -n "$relink_command"; then
833917a48c7cSmrg	      rmfiles="$rmfiles $objdir/lt-$name"
834017a48c7cSmrg	    fi
834117a48c7cSmrg	    if test "X$noexename" != "X$name" ; then
834217a48c7cSmrg	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
834317a48c7cSmrg	    fi
834417a48c7cSmrg	  fi
834517a48c7cSmrg	fi
834617a48c7cSmrg	;;
834717a48c7cSmrg      esac
83485f5b92ffSmrg      func_show_eval "$RM $rmfiles" 'exit_status=1'
834917a48c7cSmrg    done
835017a48c7cSmrg    objdir="$origobjdir"
835117a48c7cSmrg
835217a48c7cSmrg    # Try to remove the ${objdir}s in the directories where we deleted files
835317a48c7cSmrg    for dir in $rmdirs; do
835417a48c7cSmrg      if test -d "$dir"; then
83555f5b92ffSmrg	func_show_eval "rmdir $dir >/dev/null 2>&1"
835617a48c7cSmrg      fi
835717a48c7cSmrg    done
835817a48c7cSmrg
835917a48c7cSmrg    exit $exit_status
83605f5b92ffSmrg}
836117a48c7cSmrg
83625f5b92ffSmrg{ test "$mode" = uninstall || test "$mode" = clean; } &&
83635f5b92ffSmrg    func_mode_uninstall ${1+"$@"}
836417a48c7cSmrg
83655f5b92ffSmrgtest -z "$mode" && {
83665f5b92ffSmrg  help="$generic_help"
83675f5b92ffSmrg  func_fatal_help "you must specify a MODE"
83685f5b92ffSmrg}
83695f5b92ffSmrg
83705f5b92ffSmrgtest -z "$exec_cmd" && \
83715f5b92ffSmrg  func_fatal_help "invalid operation mode \`$mode'"
837217a48c7cSmrg
837317a48c7cSmrgif test -n "$exec_cmd"; then
83745f5b92ffSmrg  eval exec "$exec_cmd"
837517a48c7cSmrg  exit $EXIT_FAILURE
837617a48c7cSmrgfi
837717a48c7cSmrg
83785f5b92ffSmrgexit $exit_status
837917a48c7cSmrg
838017a48c7cSmrg
838117a48c7cSmrg# The TAGs below are defined such that we never get into a situation
838217a48c7cSmrg# in which we disable both kinds of libraries.  Given conflicting
838317a48c7cSmrg# choices, we go for a static library, that is the most portable,
838417a48c7cSmrg# since we can't tell whether shared libraries were disabled because
838517a48c7cSmrg# the user asked for that or because the platform doesn't support
838617a48c7cSmrg# them.  This is particularly important on AIX, because we don't
838717a48c7cSmrg# support having both static and shared libraries enabled at the same
838817a48c7cSmrg# time on that platform, so we default to a shared-only configuration.
838917a48c7cSmrg# If a disable-shared tag is given, we'll fallback to a static-only
839017a48c7cSmrg# configuration.  But we'll never go from static-only to shared-only.
839117a48c7cSmrg
839217a48c7cSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
83935f5b92ffSmrgbuild_libtool_libs=no
83945f5b92ffSmrgbuild_old_libs=yes
839517a48c7cSmrg# ### END LIBTOOL TAG CONFIG: disable-shared
839617a48c7cSmrg
839717a48c7cSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static
83985f5b92ffSmrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
839917a48c7cSmrg# ### END LIBTOOL TAG CONFIG: disable-static
840017a48c7cSmrg
840117a48c7cSmrg# Local Variables:
840217a48c7cSmrg# mode:shell-script
840317a48c7cSmrg# sh-indentation:2
840417a48c7cSmrg# End:
84055f5b92ffSmrg# vi:sw=2
84065f5b92ffSmrg
8407