ltmain.sh revision 4642e01f
14642e01fSmrg# Generated from ltmain.m4sh.
24642e01fSmrg
34642e01fSmrg# ltmain.sh (GNU libtool) 2.2.6
44642e01fSmrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
54642e01fSmrg
64642e01fSmrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
74642e01fSmrg# This is free software; see the source for copying conditions.  There is NO
84642e01fSmrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
94642e01fSmrg
104642e01fSmrg# GNU Libtool is free software; you can redistribute it and/or modify
1105b261ecSmrg# it under the terms of the GNU General Public License as published by
1205b261ecSmrg# the Free Software Foundation; either version 2 of the License, or
1305b261ecSmrg# (at your option) any later version.
1405b261ecSmrg#
154642e01fSmrg# As a special exception to the GNU General Public License,
164642e01fSmrg# if you distribute this file as part of a program or library that
174642e01fSmrg# is built using GNU Libtool, you may include this file under the
184642e01fSmrg# same distribution terms that you use for the rest of that program.
194642e01fSmrg#
204642e01fSmrg# GNU Libtool is distributed in the hope that it will be useful, but
2105b261ecSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of
2205b261ecSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
2305b261ecSmrg# General Public License for more details.
2405b261ecSmrg#
2505b261ecSmrg# You should have received a copy of the GNU General Public License
264642e01fSmrg# along with GNU Libtool; see the file COPYING.  If not, a copy
274642e01fSmrg# can be downloaded from http://www.gnu.org/licenses/gpl.html,
284642e01fSmrg# or obtained by writing to the Free Software Foundation, Inc.,
294642e01fSmrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
3005b261ecSmrg
314642e01fSmrg# Usage: $progname [OPTION]... [MODE-ARG]...
324642e01fSmrg#
334642e01fSmrg# Provide generalized library-building support services.
344642e01fSmrg#
354642e01fSmrg#     --config             show all configuration variables
364642e01fSmrg#     --debug              enable verbose shell tracing
374642e01fSmrg# -n, --dry-run            display commands without modifying any files
384642e01fSmrg#     --features           display basic configuration information and exit
394642e01fSmrg#     --mode=MODE          use operation mode MODE
404642e01fSmrg#     --preserve-dup-deps  don't remove duplicate dependency libraries
414642e01fSmrg#     --quiet, --silent    don't print informational messages
424642e01fSmrg#     --tag=TAG            use configuration variables from tag TAG
434642e01fSmrg# -v, --verbose            print informational messages (default)
444642e01fSmrg#     --version            print version information
454642e01fSmrg# -h, --help               print short or long help message
464642e01fSmrg#
474642e01fSmrg# MODE must be one of the following:
484642e01fSmrg#
494642e01fSmrg#       clean              remove files from the build directory
504642e01fSmrg#       compile            compile a source file into a libtool object
514642e01fSmrg#       execute            automatically set library path, then run a program
524642e01fSmrg#       finish             complete the installation of libtool libraries
534642e01fSmrg#       install            install libraries or executables
544642e01fSmrg#       link               create a library or an executable
554642e01fSmrg#       uninstall          remove libraries from an installed directory
564642e01fSmrg#
574642e01fSmrg# MODE-ARGS vary depending on the MODE.
584642e01fSmrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
594642e01fSmrg#
604642e01fSmrg# When reporting a bug, please describe a test case to reproduce it and
614642e01fSmrg# include the following information:
624642e01fSmrg#
634642e01fSmrg#       host-triplet:	$host
644642e01fSmrg#       shell:		$SHELL
654642e01fSmrg#       compiler:		$LTCC
664642e01fSmrg#       compiler flags:		$LTCFLAGS
674642e01fSmrg#       linker:		$LD (gnu? $with_gnu_ld)
684642e01fSmrg#       $progname:		(GNU libtool) 2.2.6 Debian-2.2.6a-4
694642e01fSmrg#       automake:		$automake_version
704642e01fSmrg#       autoconf:		$autoconf_version
714642e01fSmrg#
724642e01fSmrg# Report bugs to <bug-libtool@gnu.org>.
7305b261ecSmrg
7405b261ecSmrgPROGRAM=ltmain.sh
7505b261ecSmrgPACKAGE=libtool
764642e01fSmrgVERSION="2.2.6 Debian-2.2.6a-4"
774642e01fSmrgTIMESTAMP=""
784642e01fSmrgpackage_revision=1.3012
7905b261ecSmrg
804642e01fSmrg# Be Bourne compatible
8105b261ecSmrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
8205b261ecSmrg  emulate sh
8305b261ecSmrg  NULLCMD=:
8405b261ecSmrg  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
8505b261ecSmrg  # is contrary to our usage.  Disable this feature.
8605b261ecSmrg  alias -g '${1+"$@"}'='"$@"'
8705b261ecSmrg  setopt NO_GLOB_SUBST
8805b261ecSmrgelse
8905b261ecSmrg  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
9005b261ecSmrgfi
9105b261ecSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
9205b261ecSmrgDUALCASE=1; export DUALCASE # for MKS sh
9305b261ecSmrg
944642e01fSmrg# NLS nuisances: We save the old values to restore during execute mode.
9505b261ecSmrg# Only set LANG and LC_ALL to C if already set.
9605b261ecSmrg# These must not be set unconditionally because not all systems understand
9705b261ecSmrg# e.g. LANG=C (notably SCO).
984642e01fSmrglt_user_locale=
994642e01fSmrglt_safe_locale=
10005b261ecSmrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
10105b261ecSmrgdo
10205b261ecSmrg  eval "if test \"\${$lt_var+set}\" = set; then
1034642e01fSmrg          save_$lt_var=\$$lt_var
1044642e01fSmrg          $lt_var=C
10505b261ecSmrg	  export $lt_var
1064642e01fSmrg	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
1074642e01fSmrg	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
10805b261ecSmrg	fi"
10905b261ecSmrgdone
11005b261ecSmrg
1114642e01fSmrg$lt_unset CDPATH
1124642e01fSmrg
1134642e01fSmrg
1144642e01fSmrg
1154642e01fSmrg
1164642e01fSmrg
1174642e01fSmrg: ${CP="cp -f"}
1184642e01fSmrg: ${ECHO="echo"}
1194642e01fSmrg: ${EGREP="/bin/grep -E"}
1204642e01fSmrg: ${FGREP="/bin/grep -F"}
1214642e01fSmrg: ${GREP="/bin/grep"}
1224642e01fSmrg: ${LN_S="ln -s"}
1234642e01fSmrg: ${MAKE="make"}
1244642e01fSmrg: ${MKDIR="mkdir"}
1254642e01fSmrg: ${MV="mv -f"}
1264642e01fSmrg: ${RM="rm -f"}
1274642e01fSmrg: ${SED="/bin/sed"}
1284642e01fSmrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
1294642e01fSmrg: ${Xsed="$SED -e 1s/^X//"}
1304642e01fSmrg
1314642e01fSmrg# Global variables:
1324642e01fSmrgEXIT_SUCCESS=0
1334642e01fSmrgEXIT_FAILURE=1
1344642e01fSmrgEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
1354642e01fSmrgEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
1364642e01fSmrg
1374642e01fSmrgexit_status=$EXIT_SUCCESS
13805b261ecSmrg
13905b261ecSmrg# Make sure IFS has a sensible default
14005b261ecSmrglt_nl='
14105b261ecSmrg'
14205b261ecSmrgIFS=" 	$lt_nl"
14305b261ecSmrg
1444642e01fSmrgdirname="s,/[^/]*$,,"
1454642e01fSmrgbasename="s,^.*/,,"
1464642e01fSmrg
1474642e01fSmrg# func_dirname_and_basename file append nondir_replacement
1484642e01fSmrg# perform func_basename and func_dirname in a single function
1494642e01fSmrg# call:
1504642e01fSmrg#   dirname:  Compute the dirname of FILE.  If nonempty,
1514642e01fSmrg#             add APPEND to the result, otherwise set result
1524642e01fSmrg#             to NONDIR_REPLACEMENT.
1534642e01fSmrg#             value returned in "$func_dirname_result"
1544642e01fSmrg#   basename: Compute filename of FILE.
1554642e01fSmrg#             value retuned in "$func_basename_result"
1564642e01fSmrg# Implementation must be kept synchronized with func_dirname
1574642e01fSmrg# and func_basename. For efficiency, we do not delegate to
1584642e01fSmrg# those functions but instead duplicate the functionality here.
1594642e01fSmrgfunc_dirname_and_basename ()
1604642e01fSmrg{
1614642e01fSmrg  # Extract subdirectory from the argument.
1624642e01fSmrg  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
1634642e01fSmrg  if test "X$func_dirname_result" = "X${1}"; then
1644642e01fSmrg    func_dirname_result="${3}"
1654642e01fSmrg  else
1664642e01fSmrg    func_dirname_result="$func_dirname_result${2}"
1674642e01fSmrg  fi
1684642e01fSmrg  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
1694642e01fSmrg}
17005b261ecSmrg
1714642e01fSmrg# Generated shell functions inserted here.
1724642e01fSmrg
1734642e01fSmrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
1744642e01fSmrg# is ksh but when the shell is invoked as "sh" and the current value of
1754642e01fSmrg# the _XPG environment variable is not equal to 1 (one), the special
1764642e01fSmrg# positional parameter $0, within a function call, is the name of the
1774642e01fSmrg# function.
1784642e01fSmrgprogpath="$0"
1794642e01fSmrg
1804642e01fSmrg# The name of this program:
1814642e01fSmrg# In the unlikely event $progname began with a '-', it would play havoc with
1824642e01fSmrg# func_echo (imagine progname=-n), so we prepend ./ in that case:
1834642e01fSmrgfunc_dirname_and_basename "$progpath"
1844642e01fSmrgprogname=$func_basename_result
1854642e01fSmrgcase $progname in
1864642e01fSmrg  -*) progname=./$progname ;;
1874642e01fSmrgesac
1884642e01fSmrg
1894642e01fSmrg# Make sure we have an absolute path for reexecution:
1904642e01fSmrgcase $progpath in
1914642e01fSmrg  [\\/]*|[A-Za-z]:\\*) ;;
1924642e01fSmrg  *[\\/]*)
1934642e01fSmrg     progdir=$func_dirname_result
1944642e01fSmrg     progdir=`cd "$progdir" && pwd`
1954642e01fSmrg     progpath="$progdir/$progname"
1964642e01fSmrg     ;;
1974642e01fSmrg  *)
1984642e01fSmrg     save_IFS="$IFS"
1994642e01fSmrg     IFS=:
2004642e01fSmrg     for progdir in $PATH; do
2014642e01fSmrg       IFS="$save_IFS"
2024642e01fSmrg       test -x "$progdir/$progname" && break
2034642e01fSmrg     done
2044642e01fSmrg     IFS="$save_IFS"
2054642e01fSmrg     test -n "$progdir" || progdir=`pwd`
2064642e01fSmrg     progpath="$progdir/$progname"
2074642e01fSmrg     ;;
2084642e01fSmrgesac
2094642e01fSmrg
2104642e01fSmrg# Sed substitution that helps us do robust quoting.  It backslashifies
2114642e01fSmrg# metacharacters that are still active within double-quoted strings.
2124642e01fSmrgXsed="${SED}"' -e 1s/^X//'
2134642e01fSmrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g'
2144642e01fSmrg
2154642e01fSmrg# Same as above, but do not quote variable references.
2164642e01fSmrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
2174642e01fSmrg
2184642e01fSmrg# Re-`\' parameter expansions in output of double_quote_subst that were
2194642e01fSmrg# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
2204642e01fSmrg# in input to double_quote_subst, that '$' was protected from expansion.
2214642e01fSmrg# Since each input `\' is now two `\'s, look for any number of runs of
2224642e01fSmrg# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
2234642e01fSmrgbs='\\'
2244642e01fSmrgbs2='\\\\'
2254642e01fSmrgbs4='\\\\\\\\'
2264642e01fSmrgdollar='\$'
2274642e01fSmrgsed_double_backslash="\
2284642e01fSmrg  s/$bs4/&\\
2294642e01fSmrg/g
2304642e01fSmrg  s/^$bs2$dollar/$bs&/
2314642e01fSmrg  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
2324642e01fSmrg  s/\n//g"
2334642e01fSmrg
2344642e01fSmrg# Standard options:
2354642e01fSmrgopt_dry_run=false
2364642e01fSmrgopt_help=false
2374642e01fSmrgopt_quiet=false
2384642e01fSmrgopt_verbose=false
2394642e01fSmrgopt_warning=:
2404642e01fSmrg
2414642e01fSmrg# func_echo arg...
2424642e01fSmrg# Echo program name prefixed message, along with the current mode
2434642e01fSmrg# name if it has been set yet.
2444642e01fSmrgfunc_echo ()
2454642e01fSmrg{
2464642e01fSmrg    $ECHO "$progname${mode+: }$mode: $*"
2474642e01fSmrg}
2484642e01fSmrg
2494642e01fSmrg# func_verbose arg...
2504642e01fSmrg# Echo program name prefixed message in verbose mode only.
2514642e01fSmrgfunc_verbose ()
2524642e01fSmrg{
2534642e01fSmrg    $opt_verbose && func_echo ${1+"$@"}
2544642e01fSmrg
2554642e01fSmrg    # A bug in bash halts the script if the last line of a function
2564642e01fSmrg    # fails when set -e is in force, so we need another command to
2574642e01fSmrg    # work around that:
2584642e01fSmrg    :
2594642e01fSmrg}
2604642e01fSmrg
2614642e01fSmrg# func_error arg...
2624642e01fSmrg# Echo program name prefixed message to standard error.
2634642e01fSmrgfunc_error ()
2644642e01fSmrg{
2654642e01fSmrg    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
2664642e01fSmrg}
2674642e01fSmrg
2684642e01fSmrg# func_warning arg...
2694642e01fSmrg# Echo program name prefixed warning message to standard error.
2704642e01fSmrgfunc_warning ()
2714642e01fSmrg{
2724642e01fSmrg    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
2734642e01fSmrg
2744642e01fSmrg    # bash bug again:
2754642e01fSmrg    :
2764642e01fSmrg}
2774642e01fSmrg
2784642e01fSmrg# func_fatal_error arg...
2794642e01fSmrg# Echo program name prefixed message to standard error, and exit.
2804642e01fSmrgfunc_fatal_error ()
2814642e01fSmrg{
2824642e01fSmrg    func_error ${1+"$@"}
2834642e01fSmrg    exit $EXIT_FAILURE
2844642e01fSmrg}
2854642e01fSmrg
2864642e01fSmrg# func_fatal_help arg...
2874642e01fSmrg# Echo program name prefixed message to standard error, followed by
2884642e01fSmrg# a help hint, and exit.
2894642e01fSmrgfunc_fatal_help ()
2904642e01fSmrg{
2914642e01fSmrg    func_error ${1+"$@"}
2924642e01fSmrg    func_fatal_error "$help"
2934642e01fSmrg}
2944642e01fSmrghelp="Try \`$progname --help' for more information."  ## default
2954642e01fSmrg
2964642e01fSmrg
2974642e01fSmrg# func_grep expression filename
2984642e01fSmrg# Check whether EXPRESSION matches any line of FILENAME, without output.
2994642e01fSmrgfunc_grep ()
3004642e01fSmrg{
3014642e01fSmrg    $GREP "$1" "$2" >/dev/null 2>&1
3024642e01fSmrg}
3034642e01fSmrg
3044642e01fSmrg
3054642e01fSmrg# func_mkdir_p directory-path
3064642e01fSmrg# Make sure the entire path to DIRECTORY-PATH is available.
3074642e01fSmrgfunc_mkdir_p ()
3084642e01fSmrg{
3094642e01fSmrg    my_directory_path="$1"
3104642e01fSmrg    my_dir_list=
3114642e01fSmrg
3124642e01fSmrg    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
3134642e01fSmrg
3144642e01fSmrg      # Protect directory names starting with `-'
3154642e01fSmrg      case $my_directory_path in
3164642e01fSmrg        -*) my_directory_path="./$my_directory_path" ;;
3174642e01fSmrg      esac
3184642e01fSmrg
3194642e01fSmrg      # While some portion of DIR does not yet exist...
3204642e01fSmrg      while test ! -d "$my_directory_path"; do
3214642e01fSmrg        # ...make a list in topmost first order.  Use a colon delimited
3224642e01fSmrg	# list incase some portion of path contains whitespace.
3234642e01fSmrg        my_dir_list="$my_directory_path:$my_dir_list"
3244642e01fSmrg
3254642e01fSmrg        # If the last portion added has no slash in it, the list is done
3264642e01fSmrg        case $my_directory_path in */*) ;; *) break ;; esac
3274642e01fSmrg
3284642e01fSmrg        # ...otherwise throw away the child directory and loop
3294642e01fSmrg        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
3304642e01fSmrg      done
3314642e01fSmrg      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
3324642e01fSmrg
3334642e01fSmrg      save_mkdir_p_IFS="$IFS"; IFS=':'
3344642e01fSmrg      for my_dir in $my_dir_list; do
3354642e01fSmrg	IFS="$save_mkdir_p_IFS"
3364642e01fSmrg        # mkdir can fail with a `File exist' error if two processes
3374642e01fSmrg        # try to create one of the directories concurrently.  Don't
3384642e01fSmrg        # stop in that case!
3394642e01fSmrg        $MKDIR "$my_dir" 2>/dev/null || :
3404642e01fSmrg      done
3414642e01fSmrg      IFS="$save_mkdir_p_IFS"
3424642e01fSmrg
3434642e01fSmrg      # Bail out if we (or some other process) failed to create a directory.
3444642e01fSmrg      test -d "$my_directory_path" || \
3454642e01fSmrg        func_fatal_error "Failed to create \`$1'"
3464642e01fSmrg    fi
3474642e01fSmrg}
34805b261ecSmrg
34905b261ecSmrg
35005b261ecSmrg# func_mktempdir [string]
35105b261ecSmrg# Make a temporary directory that won't clash with other running
35205b261ecSmrg# libtool processes, and avoids race conditions if possible.  If
35305b261ecSmrg# given, STRING is the basename for that directory.
35405b261ecSmrgfunc_mktempdir ()
35505b261ecSmrg{
35605b261ecSmrg    my_template="${TMPDIR-/tmp}/${1-$progname}"
35705b261ecSmrg
3584642e01fSmrg    if test "$opt_dry_run" = ":"; then
35905b261ecSmrg      # Return a directory name, but don't create it in dry-run mode
36005b261ecSmrg      my_tmpdir="${my_template}-$$"
36105b261ecSmrg    else
36205b261ecSmrg
36305b261ecSmrg      # If mktemp works, use that first and foremost
36405b261ecSmrg      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
36505b261ecSmrg
36605b261ecSmrg      if test ! -d "$my_tmpdir"; then
3674642e01fSmrg        # Failing that, at least try and use $RANDOM to avoid a race
3684642e01fSmrg        my_tmpdir="${my_template}-${RANDOM-0}$$"
36905b261ecSmrg
3704642e01fSmrg        save_mktempdir_umask=`umask`
3714642e01fSmrg        umask 0077
3724642e01fSmrg        $MKDIR "$my_tmpdir"
3734642e01fSmrg        umask $save_mktempdir_umask
37405b261ecSmrg      fi
37505b261ecSmrg
37605b261ecSmrg      # If we're not in dry-run mode, bomb out on failure
3774642e01fSmrg      test -d "$my_tmpdir" || \
3784642e01fSmrg        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
37905b261ecSmrg    fi
38005b261ecSmrg
3814642e01fSmrg    $ECHO "X$my_tmpdir" | $Xsed
38205b261ecSmrg}
38305b261ecSmrg
38405b261ecSmrg
3854642e01fSmrg# func_quote_for_eval arg
3864642e01fSmrg# Aesthetically quote ARG to be evaled later.
3874642e01fSmrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
3884642e01fSmrg# is double-quoted, suitable for a subsequent eval, whereas
3894642e01fSmrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
3904642e01fSmrg# which are still active within double quotes backslashified.
3914642e01fSmrgfunc_quote_for_eval ()
39205b261ecSmrg{
3934642e01fSmrg    case $1 in
3944642e01fSmrg      *[\\\`\"\$]*)
3954642e01fSmrg	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
3964642e01fSmrg      *)
3974642e01fSmrg        func_quote_for_eval_unquoted_result="$1" ;;
3984642e01fSmrg    esac
3994642e01fSmrg
4004642e01fSmrg    case $func_quote_for_eval_unquoted_result in
4014642e01fSmrg      # Double-quote args containing shell metacharacters to delay
4024642e01fSmrg      # word splitting, command substitution and and variable
4034642e01fSmrg      # expansion for a subsequent eval.
4044642e01fSmrg      # Many Bourne shells cannot handle close brackets correctly
4054642e01fSmrg      # in scan sets, so we specify it separately.
4064642e01fSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
4074642e01fSmrg        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
4084642e01fSmrg        ;;
4094642e01fSmrg      *)
4104642e01fSmrg        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
41105b261ecSmrg    esac
41205b261ecSmrg}
41305b261ecSmrg
41405b261ecSmrg
4154642e01fSmrg# func_quote_for_expand arg
4164642e01fSmrg# Aesthetically quote ARG to be evaled later; same as above,
4174642e01fSmrg# but do not quote variable references.
4184642e01fSmrgfunc_quote_for_expand ()
41905b261ecSmrg{
4204642e01fSmrg    case $1 in
4214642e01fSmrg      *[\\\`\"]*)
4224642e01fSmrg	my_arg=`$ECHO "X$1" | $Xsed \
4234642e01fSmrg	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
42405b261ecSmrg      *)
4254642e01fSmrg        my_arg="$1" ;;
4264642e01fSmrg    esac
4274642e01fSmrg
4284642e01fSmrg    case $my_arg in
4294642e01fSmrg      # Double-quote args containing shell metacharacters to delay
4304642e01fSmrg      # word splitting and command substitution for a subsequent eval.
4314642e01fSmrg      # Many Bourne shells cannot handle close brackets correctly
4324642e01fSmrg      # in scan sets, so we specify it separately.
4334642e01fSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
4344642e01fSmrg        my_arg="\"$my_arg\""
4354642e01fSmrg        ;;
4364642e01fSmrg    esac
4374642e01fSmrg
4384642e01fSmrg    func_quote_for_expand_result="$my_arg"
43905b261ecSmrg}
44005b261ecSmrg
44105b261ecSmrg
4424642e01fSmrg# func_show_eval cmd [fail_exp]
4434642e01fSmrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
4444642e01fSmrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
4454642e01fSmrg# is given, then evaluate it.
4464642e01fSmrgfunc_show_eval ()
44705b261ecSmrg{
4484642e01fSmrg    my_cmd="$1"
4494642e01fSmrg    my_fail_exp="${2-:}"
45005b261ecSmrg
4514642e01fSmrg    ${opt_silent-false} || {
4524642e01fSmrg      func_quote_for_expand "$my_cmd"
4534642e01fSmrg      eval "func_echo $func_quote_for_expand_result"
4544642e01fSmrg    }
4554642e01fSmrg
4564642e01fSmrg    if ${opt_dry_run-false}; then :; else
4574642e01fSmrg      eval "$my_cmd"
4584642e01fSmrg      my_status=$?
4594642e01fSmrg      if test "$my_status" -eq 0; then :; else
4604642e01fSmrg	eval "(exit $my_status); $my_fail_exp"
4614642e01fSmrg      fi
46205b261ecSmrg    fi
46305b261ecSmrg}
46405b261ecSmrg
4654642e01fSmrg
4664642e01fSmrg# func_show_eval_locale cmd [fail_exp]
4674642e01fSmrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
4684642e01fSmrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
4694642e01fSmrg# is given, then evaluate it.  Use the saved locale for evaluation.
4704642e01fSmrgfunc_show_eval_locale ()
47105b261ecSmrg{
4724642e01fSmrg    my_cmd="$1"
4734642e01fSmrg    my_fail_exp="${2-:}"
4744642e01fSmrg
4754642e01fSmrg    ${opt_silent-false} || {
4764642e01fSmrg      func_quote_for_expand "$my_cmd"
4774642e01fSmrg      eval "func_echo $func_quote_for_expand_result"
4784642e01fSmrg    }
4794642e01fSmrg
4804642e01fSmrg    if ${opt_dry_run-false}; then :; else
4814642e01fSmrg      eval "$lt_user_locale
4824642e01fSmrg	    $my_cmd"
4834642e01fSmrg      my_status=$?
4844642e01fSmrg      eval "$lt_safe_locale"
4854642e01fSmrg      if test "$my_status" -eq 0; then :; else
4864642e01fSmrg	eval "(exit $my_status); $my_fail_exp"
4874642e01fSmrg      fi
48805b261ecSmrg    fi
4894642e01fSmrg}
49005b261ecSmrg
49105b261ecSmrg
4924642e01fSmrg
4934642e01fSmrg
4944642e01fSmrg
4954642e01fSmrg# func_version
4964642e01fSmrg# Echo version message to standard output and exit.
4974642e01fSmrgfunc_version ()
4984642e01fSmrg{
4994642e01fSmrg    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
5004642e01fSmrg        s/^# //
5014642e01fSmrg	s/^# *$//
5024642e01fSmrg        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
5034642e01fSmrg        p
5044642e01fSmrg     }' < "$progpath"
5054642e01fSmrg     exit $?
5064642e01fSmrg}
5074642e01fSmrg
5084642e01fSmrg# func_usage
5094642e01fSmrg# Echo short help message to standard output and exit.
5104642e01fSmrgfunc_usage ()
5114642e01fSmrg{
5124642e01fSmrg    $SED -n '/^# Usage:/,/# -h/ {
5134642e01fSmrg        s/^# //
5144642e01fSmrg	s/^# *$//
5154642e01fSmrg	s/\$progname/'$progname'/
5164642e01fSmrg	p
5174642e01fSmrg    }' < "$progpath"
5184642e01fSmrg    $ECHO
5194642e01fSmrg    $ECHO "run \`$progname --help | more' for full usage"
5204642e01fSmrg    exit $?
5214642e01fSmrg}
5224642e01fSmrg
5234642e01fSmrg# func_help
5244642e01fSmrg# Echo long help message to standard output and exit.
5254642e01fSmrgfunc_help ()
5264642e01fSmrg{
5274642e01fSmrg    $SED -n '/^# Usage:/,/# Report bugs to/ {
5284642e01fSmrg        s/^# //
5294642e01fSmrg	s/^# *$//
5304642e01fSmrg	s*\$progname*'$progname'*
5314642e01fSmrg	s*\$host*'"$host"'*
5324642e01fSmrg	s*\$SHELL*'"$SHELL"'*
5334642e01fSmrg	s*\$LTCC*'"$LTCC"'*
5344642e01fSmrg	s*\$LTCFLAGS*'"$LTCFLAGS"'*
5354642e01fSmrg	s*\$LD*'"$LD"'*
5364642e01fSmrg	s/\$with_gnu_ld/'"$with_gnu_ld"'/
5374642e01fSmrg	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
5384642e01fSmrg	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
5394642e01fSmrg	p
5404642e01fSmrg     }' < "$progpath"
5414642e01fSmrg    exit $?
5424642e01fSmrg}
5434642e01fSmrg
5444642e01fSmrg# func_missing_arg argname
5454642e01fSmrg# Echo program name prefixed message to standard error and set global
5464642e01fSmrg# exit_cmd.
5474642e01fSmrgfunc_missing_arg ()
5484642e01fSmrg{
5494642e01fSmrg    func_error "missing argument for $1"
5504642e01fSmrg    exit_cmd=exit
55105b261ecSmrg}
55205b261ecSmrg
5534642e01fSmrgexit_cmd=:
55405b261ecSmrg
55505b261ecSmrg
5564642e01fSmrg
5574642e01fSmrg
5584642e01fSmrg
5594642e01fSmrg# Check that we have a working $ECHO.
5604642e01fSmrgif test "X$1" = X--no-reexec; then
5614642e01fSmrg  # Discard the --no-reexec flag, and continue.
56205b261ecSmrg  shift
5634642e01fSmrgelif test "X$1" = X--fallback-echo; then
5644642e01fSmrg  # Avoid inline document here, it may be left over
5654642e01fSmrg  :
5664642e01fSmrgelif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
5674642e01fSmrg  # Yippee, $ECHO works!
5684642e01fSmrg  :
5694642e01fSmrgelse
5704642e01fSmrg  # Restart under the correct shell, and then maybe $ECHO will work.
5714642e01fSmrg  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
5724642e01fSmrgfi
57305b261ecSmrg
5744642e01fSmrgif test "X$1" = X--fallback-echo; then
5754642e01fSmrg  # used as fallback echo
5764642e01fSmrg  shift
5774642e01fSmrg  cat <<EOF
5784642e01fSmrg$*
5794642e01fSmrgEOF
5804642e01fSmrg  exit $EXIT_SUCCESS
5814642e01fSmrgfi
58205b261ecSmrg
5834642e01fSmrgmagic="%%%MAGIC variable%%%"
5844642e01fSmrgmagic_exe="%%%MAGIC EXE variable%%%"
58505b261ecSmrg
5864642e01fSmrg# Global variables.
5874642e01fSmrg# $mode is unset
5884642e01fSmrgnonopt=
5894642e01fSmrgexecute_dlfiles=
5904642e01fSmrgpreserve_args=
5914642e01fSmrglo2o="s/\\.lo\$/.${objext}/"
5924642e01fSmrgo2lo="s/\\.${objext}\$/.lo/"
5934642e01fSmrgextracted_archives=
5944642e01fSmrgextracted_serial=0
59505b261ecSmrg
5964642e01fSmrgopt_dry_run=false
5974642e01fSmrgopt_duplicate_deps=false
5984642e01fSmrgopt_silent=false
5994642e01fSmrgopt_debug=:
60005b261ecSmrg
6014642e01fSmrg# If this variable is set in any of the actions, the command in it
6024642e01fSmrg# will be execed at the end.  This prevents here-documents from being
6034642e01fSmrg# left over by shells.
6044642e01fSmrgexec_cmd=
6054642e01fSmrg
6064642e01fSmrg# func_fatal_configuration arg...
6074642e01fSmrg# Echo program name prefixed message to standard error, followed by
6084642e01fSmrg# a configuration failure hint, and exit.
6094642e01fSmrgfunc_fatal_configuration ()
6104642e01fSmrg{
6114642e01fSmrg    func_error ${1+"$@"}
6124642e01fSmrg    func_error "See the $PACKAGE documentation for more information."
6134642e01fSmrg    func_fatal_error "Fatal configuration error."
6144642e01fSmrg}
61505b261ecSmrg
61605b261ecSmrg
6174642e01fSmrg# func_config
6184642e01fSmrg# Display the configuration for all the tags in this script.
6194642e01fSmrgfunc_config ()
6204642e01fSmrg{
6214642e01fSmrg    re_begincf='^# ### BEGIN LIBTOOL'
6224642e01fSmrg    re_endcf='^# ### END LIBTOOL'
6234642e01fSmrg
6244642e01fSmrg    # Default configuration.
6254642e01fSmrg    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
62605b261ecSmrg
62705b261ecSmrg    # Now print the configurations for the tags.
62805b261ecSmrg    for tagname in $taglist; do
6294642e01fSmrg      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
63005b261ecSmrg    done
63105b261ecSmrg
6324642e01fSmrg    exit $?
6334642e01fSmrg}
63405b261ecSmrg
6354642e01fSmrg# func_features
6364642e01fSmrg# Display the features supported by this script.
6374642e01fSmrgfunc_features ()
6384642e01fSmrg{
6394642e01fSmrg    $ECHO "host: $host"
64005b261ecSmrg    if test "$build_libtool_libs" = yes; then
6414642e01fSmrg      $ECHO "enable shared libraries"
64205b261ecSmrg    else
6434642e01fSmrg      $ECHO "disable shared libraries"
64405b261ecSmrg    fi
64505b261ecSmrg    if test "$build_old_libs" = yes; then
6464642e01fSmrg      $ECHO "enable static libraries"
64705b261ecSmrg    else
6484642e01fSmrg      $ECHO "disable static libraries"
64905b261ecSmrg    fi
6504642e01fSmrg
65105b261ecSmrg    exit $?
6524642e01fSmrg}
65305b261ecSmrg
6544642e01fSmrg# func_enable_tag tagname
6554642e01fSmrg# Verify that TAGNAME is valid, and either flag an error and exit, or
6564642e01fSmrg# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
6574642e01fSmrg# variable here.
6584642e01fSmrgfunc_enable_tag ()
6594642e01fSmrg{
6604642e01fSmrg  # Global variable:
6614642e01fSmrg  tagname="$1"
66205b261ecSmrg
6634642e01fSmrg  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
6644642e01fSmrg  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
6654642e01fSmrg  sed_extractcf="/$re_begincf/,/$re_endcf/p"
66605b261ecSmrg
6674642e01fSmrg  # Validate tagname.
6684642e01fSmrg  case $tagname in
6694642e01fSmrg    *[!-_A-Za-z0-9,/]*)
6704642e01fSmrg      func_fatal_error "invalid tag name: $tagname"
6714642e01fSmrg      ;;
6724642e01fSmrg  esac
67305b261ecSmrg
6744642e01fSmrg  # Don't test for the "default" C tag, as we know it's
6754642e01fSmrg  # there but not specially marked.
6764642e01fSmrg  case $tagname in
6774642e01fSmrg    CC) ;;
6784642e01fSmrg    *)
6794642e01fSmrg      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
6804642e01fSmrg	taglist="$taglist $tagname"
6814642e01fSmrg
6824642e01fSmrg	# Evaluate the configuration.  Be careful to quote the path
6834642e01fSmrg	# and the sed script, to avoid splitting on whitespace, but
6844642e01fSmrg	# also don't use non-portable quotes within backquotes within
6854642e01fSmrg	# quotes we have to do it in 2 steps:
6864642e01fSmrg	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
6874642e01fSmrg	eval "$extractedcf"
6884642e01fSmrg      else
6894642e01fSmrg	func_error "ignoring unknown tag $tagname"
6904642e01fSmrg      fi
6914642e01fSmrg      ;;
6924642e01fSmrg  esac
6934642e01fSmrg}
6944642e01fSmrg
6954642e01fSmrg# Parse options once, thoroughly.  This comes as soon as possible in
6964642e01fSmrg# the script to make things like `libtool --version' happen quickly.
6974642e01fSmrg{
69805b261ecSmrg
6994642e01fSmrg  # Shorthand for --mode=foo, only valid as the first argument
7004642e01fSmrg  case $1 in
7014642e01fSmrg  clean|clea|cle|cl)
7024642e01fSmrg    shift; set dummy --mode clean ${1+"$@"}; shift
70305b261ecSmrg    ;;
7044642e01fSmrg  compile|compil|compi|comp|com|co|c)
7054642e01fSmrg    shift; set dummy --mode compile ${1+"$@"}; shift
70605b261ecSmrg    ;;
7074642e01fSmrg  execute|execut|execu|exec|exe|ex|e)
7084642e01fSmrg    shift; set dummy --mode execute ${1+"$@"}; shift
70905b261ecSmrg    ;;
7104642e01fSmrg  finish|finis|fini|fin|fi|f)
7114642e01fSmrg    shift; set dummy --mode finish ${1+"$@"}; shift
71205b261ecSmrg    ;;
7134642e01fSmrg  install|instal|insta|inst|ins|in|i)
7144642e01fSmrg    shift; set dummy --mode install ${1+"$@"}; shift
7154642e01fSmrg    ;;
7164642e01fSmrg  link|lin|li|l)
7174642e01fSmrg    shift; set dummy --mode link ${1+"$@"}; shift
7184642e01fSmrg    ;;
7194642e01fSmrg  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
7204642e01fSmrg    shift; set dummy --mode uninstall ${1+"$@"}; shift
72105b261ecSmrg    ;;
72205b261ecSmrg  esac
72305b261ecSmrg
7244642e01fSmrg  # Parse non-mode specific arguments:
7254642e01fSmrg  while test "$#" -gt 0; do
7264642e01fSmrg    opt="$1"
7274642e01fSmrg    shift
72805b261ecSmrg
7294642e01fSmrg    case $opt in
7304642e01fSmrg      --config)		func_config					;;
73105b261ecSmrg
7324642e01fSmrg      --debug)		preserve_args="$preserve_args $opt"
7334642e01fSmrg			func_echo "enabling shell trace mode"
7344642e01fSmrg			opt_debug='set -x'
7354642e01fSmrg			$opt_debug
7364642e01fSmrg			;;
73705b261ecSmrg
7384642e01fSmrg      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7394642e01fSmrg			execute_dlfiles="$execute_dlfiles $1"
7404642e01fSmrg			shift
7414642e01fSmrg			;;
74205b261ecSmrg
7434642e01fSmrg      --dry-run | -n)	opt_dry_run=:					;;
7444642e01fSmrg      --features)       func_features					;;
7454642e01fSmrg      --finish)		mode="finish"					;;
7464642e01fSmrg
7474642e01fSmrg      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7484642e01fSmrg			case $1 in
7494642e01fSmrg			  # Valid mode arguments:
7504642e01fSmrg			  clean)	;;
7514642e01fSmrg			  compile)	;;
7524642e01fSmrg			  execute)	;;
7534642e01fSmrg			  finish)	;;
7544642e01fSmrg			  install)	;;
7554642e01fSmrg			  link)		;;
7564642e01fSmrg			  relink)	;;
7574642e01fSmrg			  uninstall)	;;
7584642e01fSmrg
7594642e01fSmrg			  # Catch anything else as an error
7604642e01fSmrg			  *) func_error "invalid argument for $opt"
7614642e01fSmrg			     exit_cmd=exit
7624642e01fSmrg			     break
7634642e01fSmrg			     ;;
7644642e01fSmrg		        esac
7654642e01fSmrg
7664642e01fSmrg			mode="$1"
7674642e01fSmrg			shift
7684642e01fSmrg			;;
7694642e01fSmrg
7704642e01fSmrg      --preserve-dup-deps)
7714642e01fSmrg			opt_duplicate_deps=:				;;
7724642e01fSmrg
7734642e01fSmrg      --quiet|--silent)	preserve_args="$preserve_args $opt"
7744642e01fSmrg			opt_silent=:
7754642e01fSmrg			;;
7764642e01fSmrg
7774642e01fSmrg      --verbose| -v)	preserve_args="$preserve_args $opt"
7784642e01fSmrg			opt_silent=false
7794642e01fSmrg			;;
7804642e01fSmrg
7814642e01fSmrg      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7824642e01fSmrg			preserve_args="$preserve_args $opt $1"
7834642e01fSmrg			func_enable_tag "$1"	# tagname is set here
7844642e01fSmrg			shift
7854642e01fSmrg			;;
7864642e01fSmrg
7874642e01fSmrg      # Separate optargs to long options:
7884642e01fSmrg      -dlopen=*|--mode=*|--tag=*)
7894642e01fSmrg			func_opt_split "$opt"
7904642e01fSmrg			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
7914642e01fSmrg			shift
7924642e01fSmrg			;;
7934642e01fSmrg
7944642e01fSmrg      -\?|-h)		func_usage					;;
7954642e01fSmrg      --help)		opt_help=:					;;
7964642e01fSmrg      --version)	func_version					;;
7974642e01fSmrg
7984642e01fSmrg      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
7994642e01fSmrg
8004642e01fSmrg      *)		nonopt="$opt"
8014642e01fSmrg			break
8024642e01fSmrg			;;
8034642e01fSmrg    esac
8044642e01fSmrg  done
8054642e01fSmrg
8064642e01fSmrg
8074642e01fSmrg  case $host in
8084642e01fSmrg    *cygwin* | *mingw* | *pw32* | *cegcc*)
8094642e01fSmrg      # don't eliminate duplications in $postdeps and $predeps
8104642e01fSmrg      opt_duplicate_compiler_generated_deps=:
81105b261ecSmrg      ;;
81205b261ecSmrg    *)
8134642e01fSmrg      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
8144642e01fSmrg      ;;
8154642e01fSmrg  esac
81605b261ecSmrg
8174642e01fSmrg  # Having warned about all mis-specified options, bail out if
8184642e01fSmrg  # anything was wrong.
8194642e01fSmrg  $exit_cmd $EXIT_FAILURE
8204642e01fSmrg}
8214642e01fSmrg
8224642e01fSmrg# func_check_version_match
8234642e01fSmrg# Ensure that we are using m4 macros, and libtool script from the same
8244642e01fSmrg# release of libtool.
8254642e01fSmrgfunc_check_version_match ()
8264642e01fSmrg{
8274642e01fSmrg  if test "$package_revision" != "$macro_revision"; then
8284642e01fSmrg    if test "$VERSION" != "$macro_version"; then
8294642e01fSmrg      if test -z "$macro_version"; then
8304642e01fSmrg        cat >&2 <<_LT_EOF
8314642e01fSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
8324642e01fSmrg$progname: definition of this LT_INIT comes from an older release.
8334642e01fSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
8344642e01fSmrg$progname: and run autoconf again.
8354642e01fSmrg_LT_EOF
8364642e01fSmrg      else
8374642e01fSmrg        cat >&2 <<_LT_EOF
8384642e01fSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
8394642e01fSmrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
8404642e01fSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
8414642e01fSmrg$progname: and run autoconf again.
8424642e01fSmrg_LT_EOF
84305b261ecSmrg      fi
8444642e01fSmrg    else
8454642e01fSmrg      cat >&2 <<_LT_EOF
8464642e01fSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
8474642e01fSmrg$progname: but the definition of this LT_INIT comes from revision $macro_revision.
8484642e01fSmrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision
8494642e01fSmrg$progname: of $PACKAGE $VERSION and run autoconf again.
8504642e01fSmrg_LT_EOF
8514642e01fSmrg    fi
8524642e01fSmrg
8534642e01fSmrg    exit $EXIT_MISMATCH
8544642e01fSmrg  fi
8554642e01fSmrg}
8564642e01fSmrg
8574642e01fSmrg
8584642e01fSmrg## ----------- ##
8594642e01fSmrg##    Main.    ##
8604642e01fSmrg## ----------- ##
8614642e01fSmrg
8624642e01fSmrg$opt_help || {
8634642e01fSmrg  # Sanity checks first:
8644642e01fSmrg  func_check_version_match
8654642e01fSmrg
8664642e01fSmrg  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
8674642e01fSmrg    func_fatal_configuration "not configured to build any kind of library"
86805b261ecSmrg  fi
86905b261ecSmrg
8704642e01fSmrg  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
8714642e01fSmrg
8724642e01fSmrg
8734642e01fSmrg  # Darwin sucks
8744642e01fSmrg  eval std_shrext=\"$shrext_cmds\"
8754642e01fSmrg
8764642e01fSmrg
87705b261ecSmrg  # Only execute mode is allowed to have -dlopen flags.
87805b261ecSmrg  if test -n "$execute_dlfiles" && test "$mode" != execute; then
8794642e01fSmrg    func_error "unrecognized option \`-dlopen'"
8804642e01fSmrg    $ECHO "$help" 1>&2
88105b261ecSmrg    exit $EXIT_FAILURE
88205b261ecSmrg  fi
88305b261ecSmrg
88405b261ecSmrg  # Change the help message to a mode-specific one.
88505b261ecSmrg  generic_help="$help"
8864642e01fSmrg  help="Try \`$progname --help --mode=$mode' for more information."
8874642e01fSmrg}
88805b261ecSmrg
88905b261ecSmrg
8904642e01fSmrg# func_lalib_p file
8914642e01fSmrg# True iff FILE is a libtool `.la' library or `.lo' object file.
8924642e01fSmrg# This function is only a basic sanity check; it will hardly flush out
8934642e01fSmrg# determined imposters.
8944642e01fSmrgfunc_lalib_p ()
8954642e01fSmrg{
8964642e01fSmrg    test -f "$1" &&
8974642e01fSmrg      $SED -e 4q "$1" 2>/dev/null \
8984642e01fSmrg        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
8994642e01fSmrg}
90005b261ecSmrg
9014642e01fSmrg# func_lalib_unsafe_p file
9024642e01fSmrg# True iff FILE is a libtool `.la' library or `.lo' object file.
9034642e01fSmrg# This function implements the same check as func_lalib_p without
9044642e01fSmrg# resorting to external programs.  To this end, it redirects stdin and
9054642e01fSmrg# closes it afterwards, without saving the original file descriptor.
9064642e01fSmrg# As a safety measure, use it only where a negative result would be
9074642e01fSmrg# fatal anyway.  Works if `file' does not exist.
9084642e01fSmrgfunc_lalib_unsafe_p ()
9094642e01fSmrg{
9104642e01fSmrg    lalib_p=no
9114642e01fSmrg    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
9124642e01fSmrg	for lalib_p_l in 1 2 3 4
9134642e01fSmrg	do
9144642e01fSmrg	    read lalib_p_line
9154642e01fSmrg	    case "$lalib_p_line" in
9164642e01fSmrg		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
9174642e01fSmrg	    esac
9184642e01fSmrg	done
9194642e01fSmrg	exec 0<&5 5<&-
9204642e01fSmrg    fi
9214642e01fSmrg    test "$lalib_p" = yes
9224642e01fSmrg}
92305b261ecSmrg
9244642e01fSmrg# func_ltwrapper_script_p file
9254642e01fSmrg# True iff FILE is a libtool wrapper script
9264642e01fSmrg# This function is only a basic sanity check; it will hardly flush out
9274642e01fSmrg# determined imposters.
9284642e01fSmrgfunc_ltwrapper_script_p ()
9294642e01fSmrg{
9304642e01fSmrg    func_lalib_p "$1"
9314642e01fSmrg}
93205b261ecSmrg
9334642e01fSmrg# func_ltwrapper_executable_p file
9344642e01fSmrg# True iff FILE is a libtool wrapper executable
9354642e01fSmrg# This function is only a basic sanity check; it will hardly flush out
9364642e01fSmrg# determined imposters.
9374642e01fSmrgfunc_ltwrapper_executable_p ()
9384642e01fSmrg{
9394642e01fSmrg    func_ltwrapper_exec_suffix=
9404642e01fSmrg    case $1 in
9414642e01fSmrg    *.exe) ;;
9424642e01fSmrg    *) func_ltwrapper_exec_suffix=.exe ;;
9434642e01fSmrg    esac
9444642e01fSmrg    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
9454642e01fSmrg}
94605b261ecSmrg
9474642e01fSmrg# func_ltwrapper_scriptname file
9484642e01fSmrg# Assumes file is an ltwrapper_executable
9494642e01fSmrg# uses $file to determine the appropriate filename for a
9504642e01fSmrg# temporary ltwrapper_script.
9514642e01fSmrgfunc_ltwrapper_scriptname ()
9524642e01fSmrg{
9534642e01fSmrg    func_ltwrapper_scriptname_result=""
9544642e01fSmrg    if func_ltwrapper_executable_p "$1"; then
9554642e01fSmrg	func_dirname_and_basename "$1" "" "."
9564642e01fSmrg	func_stripname '' '.exe' "$func_basename_result"
9574642e01fSmrg	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
9584642e01fSmrg    fi
9594642e01fSmrg}
9604642e01fSmrg
9614642e01fSmrg# func_ltwrapper_p file
9624642e01fSmrg# True iff FILE is a libtool wrapper script or wrapper executable
9634642e01fSmrg# This function is only a basic sanity check; it will hardly flush out
9644642e01fSmrg# determined imposters.
9654642e01fSmrgfunc_ltwrapper_p ()
9664642e01fSmrg{
9674642e01fSmrg    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
9684642e01fSmrg}
9694642e01fSmrg
9704642e01fSmrg
9714642e01fSmrg# func_execute_cmds commands fail_cmd
9724642e01fSmrg# Execute tilde-delimited COMMANDS.
9734642e01fSmrg# If FAIL_CMD is given, eval that upon failure.
9744642e01fSmrg# FAIL_CMD may read-access the current command in variable CMD!
9754642e01fSmrgfunc_execute_cmds ()
9764642e01fSmrg{
9774642e01fSmrg    $opt_debug
9784642e01fSmrg    save_ifs=$IFS; IFS='~'
9794642e01fSmrg    for cmd in $1; do
9804642e01fSmrg      IFS=$save_ifs
9814642e01fSmrg      eval cmd=\"$cmd\"
9824642e01fSmrg      func_show_eval "$cmd" "${2-:}"
9834642e01fSmrg    done
9844642e01fSmrg    IFS=$save_ifs
9854642e01fSmrg}
9864642e01fSmrg
9874642e01fSmrg
9884642e01fSmrg# func_source file
9894642e01fSmrg# Source FILE, adding directory component if necessary.
9904642e01fSmrg# Note that it is not necessary on cygwin/mingw to append a dot to
9914642e01fSmrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
9924642e01fSmrg# behavior happens only for exec(3), not for open(2)!  Also, sourcing
9934642e01fSmrg# `FILE.' does not work on cygwin managed mounts.
9944642e01fSmrgfunc_source ()
9954642e01fSmrg{
9964642e01fSmrg    $opt_debug
9974642e01fSmrg    case $1 in
9984642e01fSmrg    */* | *\\*)	. "$1" ;;
9994642e01fSmrg    *)		. "./$1" ;;
10004642e01fSmrg    esac
10014642e01fSmrg}
10024642e01fSmrg
10034642e01fSmrg
10044642e01fSmrg# func_infer_tag arg
10054642e01fSmrg# Infer tagged configuration to use if any are available and
10064642e01fSmrg# if one wasn't chosen via the "--tag" command line option.
10074642e01fSmrg# Only attempt this if the compiler in the base compile
10084642e01fSmrg# command doesn't match the default compiler.
10094642e01fSmrg# arg is usually of the form 'gcc ...'
10104642e01fSmrgfunc_infer_tag ()
10114642e01fSmrg{
10124642e01fSmrg    $opt_debug
10134642e01fSmrg    if test -n "$available_tags" && test -z "$tagname"; then
10144642e01fSmrg      CC_quoted=
10154642e01fSmrg      for arg in $CC; do
10164642e01fSmrg        func_quote_for_eval "$arg"
10174642e01fSmrg	CC_quoted="$CC_quoted $func_quote_for_eval_result"
10184642e01fSmrg      done
10194642e01fSmrg      case $@ in
10204642e01fSmrg      # Blanks in the command may have been stripped by the calling shell,
10214642e01fSmrg      # but not from the CC environment variable when configure was run.
10224642e01fSmrg      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
10234642e01fSmrg      # Blanks at the start of $base_compile will cause this to fail
10244642e01fSmrg      # if we don't check for them as well.
10254642e01fSmrg      *)
10264642e01fSmrg	for z in $available_tags; do
10274642e01fSmrg	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
10284642e01fSmrg	    # Evaluate the configuration.
10294642e01fSmrg	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
10304642e01fSmrg	    CC_quoted=
10314642e01fSmrg	    for arg in $CC; do
10324642e01fSmrg	      # Double-quote args containing other shell metacharacters.
10334642e01fSmrg	      func_quote_for_eval "$arg"
10344642e01fSmrg	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
10354642e01fSmrg	    done
10364642e01fSmrg	    case "$@ " in
10374642e01fSmrg	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
10384642e01fSmrg	      # The compiler in the base compile command matches
10394642e01fSmrg	      # the one in the tagged configuration.
10404642e01fSmrg	      # Assume this is the tagged configuration we want.
10414642e01fSmrg	      tagname=$z
10424642e01fSmrg	      break
10434642e01fSmrg	      ;;
10444642e01fSmrg	    esac
10454642e01fSmrg	  fi
10464642e01fSmrg	done
10474642e01fSmrg	# If $tagname still isn't set, then no tagged configuration
10484642e01fSmrg	# was found and let the user know that the "--tag" command
10494642e01fSmrg	# line option must be used.
10504642e01fSmrg	if test -z "$tagname"; then
10514642e01fSmrg	  func_echo "unable to infer tagged configuration"
10524642e01fSmrg	  func_fatal_error "specify a tag with \`--tag'"
10534642e01fSmrg#	else
10544642e01fSmrg#	  func_verbose "using $tagname tagged configuration"
10554642e01fSmrg	fi
10564642e01fSmrg	;;
10574642e01fSmrg      esac
10584642e01fSmrg    fi
10594642e01fSmrg}
10604642e01fSmrg
10614642e01fSmrg
10624642e01fSmrg
10634642e01fSmrg# func_write_libtool_object output_name pic_name nonpic_name
10644642e01fSmrg# Create a libtool object file (analogous to a ".la" file),
10654642e01fSmrg# but don't create it if we're doing a dry run.
10664642e01fSmrgfunc_write_libtool_object ()
10674642e01fSmrg{
10684642e01fSmrg    write_libobj=${1}
10694642e01fSmrg    if test "$build_libtool_libs" = yes; then
10704642e01fSmrg      write_lobj=\'${2}\'
10714642e01fSmrg    else
10724642e01fSmrg      write_lobj=none
10734642e01fSmrg    fi
10744642e01fSmrg
10754642e01fSmrg    if test "$build_old_libs" = yes; then
10764642e01fSmrg      write_oldobj=\'${3}\'
10774642e01fSmrg    else
10784642e01fSmrg      write_oldobj=none
10794642e01fSmrg    fi
10804642e01fSmrg
10814642e01fSmrg    $opt_dry_run || {
10824642e01fSmrg      cat >${write_libobj}T <<EOF
10834642e01fSmrg# $write_libobj - a libtool object file
10844642e01fSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
10854642e01fSmrg#
10864642e01fSmrg# Please DO NOT delete this file!
10874642e01fSmrg# It is necessary for linking the library.
10884642e01fSmrg
10894642e01fSmrg# Name of the PIC object.
10904642e01fSmrgpic_object=$write_lobj
10914642e01fSmrg
10924642e01fSmrg# Name of the non-PIC object
10934642e01fSmrgnon_pic_object=$write_oldobj
10944642e01fSmrg
10954642e01fSmrgEOF
10964642e01fSmrg      $MV "${write_libobj}T" "${write_libobj}"
10974642e01fSmrg    }
10984642e01fSmrg}
10994642e01fSmrg
11004642e01fSmrg# func_mode_compile arg...
11014642e01fSmrgfunc_mode_compile ()
11024642e01fSmrg{
11034642e01fSmrg    $opt_debug
11044642e01fSmrg    # Get the compilation command and the source file.
11054642e01fSmrg    base_compile=
11064642e01fSmrg    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
11074642e01fSmrg    suppress_opt=yes
11084642e01fSmrg    suppress_output=
11094642e01fSmrg    arg_mode=normal
11104642e01fSmrg    libobj=
11114642e01fSmrg    later=
11124642e01fSmrg    pie_flag=
11134642e01fSmrg
11144642e01fSmrg    for arg
11154642e01fSmrg    do
11164642e01fSmrg      case $arg_mode in
11174642e01fSmrg      arg  )
11184642e01fSmrg	# do not "continue".  Instead, add this to base_compile
11194642e01fSmrg	lastarg="$arg"
11204642e01fSmrg	arg_mode=normal
11214642e01fSmrg	;;
11224642e01fSmrg
11234642e01fSmrg      target )
11244642e01fSmrg	libobj="$arg"
11254642e01fSmrg	arg_mode=normal
11264642e01fSmrg	continue
11274642e01fSmrg	;;
11284642e01fSmrg
11294642e01fSmrg      normal )
11304642e01fSmrg	# Accept any command-line options.
11314642e01fSmrg	case $arg in
11324642e01fSmrg	-o)
11334642e01fSmrg	  test -n "$libobj" && \
11344642e01fSmrg	    func_fatal_error "you cannot specify \`-o' more than once"
11354642e01fSmrg	  arg_mode=target
11364642e01fSmrg	  continue
11374642e01fSmrg	  ;;
11384642e01fSmrg
11394642e01fSmrg	-pie | -fpie | -fPIE)
11404642e01fSmrg          pie_flag="$pie_flag $arg"
11414642e01fSmrg	  continue
11424642e01fSmrg	  ;;
11434642e01fSmrg
11444642e01fSmrg	-shared | -static | -prefer-pic | -prefer-non-pic)
11454642e01fSmrg	  later="$later $arg"
11464642e01fSmrg	  continue
11474642e01fSmrg	  ;;
11484642e01fSmrg
11494642e01fSmrg	-no-suppress)
115005b261ecSmrg	  suppress_opt=no
115105b261ecSmrg	  continue
115205b261ecSmrg	  ;;
115305b261ecSmrg
115405b261ecSmrg	-Xcompiler)
115505b261ecSmrg	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
115605b261ecSmrg	  continue      #  The current "srcfile" will either be retained or
115705b261ecSmrg	  ;;            #  replaced later.  I would guess that would be a bug.
115805b261ecSmrg
115905b261ecSmrg	-Wc,*)
11604642e01fSmrg	  func_stripname '-Wc,' '' "$arg"
11614642e01fSmrg	  args=$func_stripname_result
116205b261ecSmrg	  lastarg=
116305b261ecSmrg	  save_ifs="$IFS"; IFS=','
11644642e01fSmrg	  for arg in $args; do
116505b261ecSmrg	    IFS="$save_ifs"
11664642e01fSmrg	    func_quote_for_eval "$arg"
11674642e01fSmrg	    lastarg="$lastarg $func_quote_for_eval_result"
116805b261ecSmrg	  done
116905b261ecSmrg	  IFS="$save_ifs"
11704642e01fSmrg	  func_stripname ' ' '' "$lastarg"
11714642e01fSmrg	  lastarg=$func_stripname_result
117205b261ecSmrg
117305b261ecSmrg	  # Add the arguments to base_compile.
117405b261ecSmrg	  base_compile="$base_compile $lastarg"
117505b261ecSmrg	  continue
117605b261ecSmrg	  ;;
117705b261ecSmrg
11784642e01fSmrg	*)
117905b261ecSmrg	  # Accept the current argument as the source file.
118005b261ecSmrg	  # The previous "srcfile" becomes the current argument.
118105b261ecSmrg	  #
118205b261ecSmrg	  lastarg="$srcfile"
118305b261ecSmrg	  srcfile="$arg"
118405b261ecSmrg	  ;;
118505b261ecSmrg	esac  #  case $arg
118605b261ecSmrg	;;
118705b261ecSmrg      esac    #  case $arg_mode
118805b261ecSmrg
118905b261ecSmrg      # Aesthetically quote the previous argument.
11904642e01fSmrg      func_quote_for_eval "$lastarg"
11914642e01fSmrg      base_compile="$base_compile $func_quote_for_eval_result"
119205b261ecSmrg    done # for arg
119305b261ecSmrg
119405b261ecSmrg    case $arg_mode in
119505b261ecSmrg    arg)
11964642e01fSmrg      func_fatal_error "you must specify an argument for -Xcompile"
119705b261ecSmrg      ;;
119805b261ecSmrg    target)
11994642e01fSmrg      func_fatal_error "you must specify a target with \`-o'"
120005b261ecSmrg      ;;
120105b261ecSmrg    *)
120205b261ecSmrg      # Get the name of the library object.
12034642e01fSmrg      test -z "$libobj" && {
12044642e01fSmrg	func_basename "$srcfile"
12054642e01fSmrg	libobj="$func_basename_result"
12064642e01fSmrg      }
120705b261ecSmrg      ;;
120805b261ecSmrg    esac
120905b261ecSmrg
121005b261ecSmrg    # Recognize several different file suffixes.
121105b261ecSmrg    # If the user specifies -o file.o, it is replaced with file.lo
121205b261ecSmrg    case $libobj in
12134642e01fSmrg    *.[cCFSifmso] | \
12144642e01fSmrg    *.ada | *.adb | *.ads | *.asm | \
12154642e01fSmrg    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
12164642e01fSmrg    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
12174642e01fSmrg      func_xform "$libobj"
12184642e01fSmrg      libobj=$func_xform_result
12194642e01fSmrg      ;;
122005b261ecSmrg    esac
122105b261ecSmrg
122205b261ecSmrg    case $libobj in
12234642e01fSmrg    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
122405b261ecSmrg    *)
12254642e01fSmrg      func_fatal_error "cannot determine name of library object from \`$libobj'"
122605b261ecSmrg      ;;
122705b261ecSmrg    esac
122805b261ecSmrg
122905b261ecSmrg    func_infer_tag $base_compile
123005b261ecSmrg
123105b261ecSmrg    for arg in $later; do
123205b261ecSmrg      case $arg in
12334642e01fSmrg      -shared)
12344642e01fSmrg	test "$build_libtool_libs" != yes && \
12354642e01fSmrg	  func_fatal_configuration "can not build a shared library"
12364642e01fSmrg	build_old_libs=no
12374642e01fSmrg	continue
12384642e01fSmrg	;;
12394642e01fSmrg
124005b261ecSmrg      -static)
12414642e01fSmrg	build_libtool_libs=no
124205b261ecSmrg	build_old_libs=yes
124305b261ecSmrg	continue
124405b261ecSmrg	;;
124505b261ecSmrg
124605b261ecSmrg      -prefer-pic)
124705b261ecSmrg	pic_mode=yes
124805b261ecSmrg	continue
124905b261ecSmrg	;;
125005b261ecSmrg
125105b261ecSmrg      -prefer-non-pic)
125205b261ecSmrg	pic_mode=no
125305b261ecSmrg	continue
125405b261ecSmrg	;;
125505b261ecSmrg      esac
125605b261ecSmrg    done
125705b261ecSmrg
12584642e01fSmrg    func_quote_for_eval "$libobj"
12594642e01fSmrg    test "X$libobj" != "X$func_quote_for_eval_result" \
12604642e01fSmrg      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
12614642e01fSmrg      && func_warning "libobj name \`$libobj' may not contain shell special characters."
12624642e01fSmrg    func_dirname_and_basename "$obj" "/" ""
12634642e01fSmrg    objname="$func_basename_result"
12644642e01fSmrg    xdir="$func_dirname_result"
126505b261ecSmrg    lobj=${xdir}$objdir/$objname
126605b261ecSmrg
12674642e01fSmrg    test -z "$base_compile" && \
12684642e01fSmrg      func_fatal_help "you must specify a compilation command"
126905b261ecSmrg
127005b261ecSmrg    # Delete any leftover library objects.
127105b261ecSmrg    if test "$build_old_libs" = yes; then
127205b261ecSmrg      removelist="$obj $lobj $libobj ${libobj}T"
127305b261ecSmrg    else
127405b261ecSmrg      removelist="$lobj $libobj ${libobj}T"
127505b261ecSmrg    fi
127605b261ecSmrg
127705b261ecSmrg    # On Cygwin there's no "real" PIC flag so we must build both object types
127805b261ecSmrg    case $host_os in
12794642e01fSmrg    cygwin* | mingw* | pw32* | os2* | cegcc*)
128005b261ecSmrg      pic_mode=default
128105b261ecSmrg      ;;
128205b261ecSmrg    esac
128305b261ecSmrg    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
128405b261ecSmrg      # non-PIC code in shared libraries is not supported
128505b261ecSmrg      pic_mode=default
128605b261ecSmrg    fi
128705b261ecSmrg
128805b261ecSmrg    # Calculate the filename of the output object if compiler does
128905b261ecSmrg    # not support -o with -c
129005b261ecSmrg    if test "$compiler_c_o" = no; then
12914642e01fSmrg      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
129205b261ecSmrg      lockfile="$output_obj.lock"
129305b261ecSmrg    else
129405b261ecSmrg      output_obj=
129505b261ecSmrg      need_locks=no
129605b261ecSmrg      lockfile=
129705b261ecSmrg    fi
129805b261ecSmrg
129905b261ecSmrg    # Lock this critical section if it is needed
130005b261ecSmrg    # We use this script file to make the link, it avoids creating a new file
130105b261ecSmrg    if test "$need_locks" = yes; then
13024642e01fSmrg      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
13034642e01fSmrg	func_echo "Waiting for $lockfile to be removed"
130405b261ecSmrg	sleep 2
130505b261ecSmrg      done
130605b261ecSmrg    elif test "$need_locks" = warn; then
130705b261ecSmrg      if test -f "$lockfile"; then
13084642e01fSmrg	$ECHO "\
130905b261ecSmrg*** ERROR, $lockfile exists and contains:
131005b261ecSmrg`cat $lockfile 2>/dev/null`
131105b261ecSmrg
131205b261ecSmrgThis indicates that another process is trying to use the same
131305b261ecSmrgtemporary object file, and libtool could not work around it because
131405b261ecSmrgyour compiler does not support \`-c' and \`-o' together.  If you
131505b261ecSmrgrepeat this compilation, it may succeed, by chance, but you had better
131605b261ecSmrgavoid parallel builds (make -j) in this platform, or get a better
131705b261ecSmrgcompiler."
131805b261ecSmrg
13194642e01fSmrg	$opt_dry_run || $RM $removelist
132005b261ecSmrg	exit $EXIT_FAILURE
132105b261ecSmrg      fi
13224642e01fSmrg      removelist="$removelist $output_obj"
13234642e01fSmrg      $ECHO "$srcfile" > "$lockfile"
132405b261ecSmrg    fi
132505b261ecSmrg
13264642e01fSmrg    $opt_dry_run || $RM $removelist
13274642e01fSmrg    removelist="$removelist $lockfile"
13284642e01fSmrg    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
13294642e01fSmrg
133005b261ecSmrg    if test -n "$fix_srcfile_path"; then
133105b261ecSmrg      eval srcfile=\"$fix_srcfile_path\"
133205b261ecSmrg    fi
13334642e01fSmrg    func_quote_for_eval "$srcfile"
13344642e01fSmrg    qsrcfile=$func_quote_for_eval_result
133505b261ecSmrg
133605b261ecSmrg    # Only build a PIC object if we are building libtool libraries.
133705b261ecSmrg    if test "$build_libtool_libs" = yes; then
133805b261ecSmrg      # Without this assignment, base_compile gets emptied.
133905b261ecSmrg      fbsd_hideous_sh_bug=$base_compile
134005b261ecSmrg
134105b261ecSmrg      if test "$pic_mode" != no; then
134205b261ecSmrg	command="$base_compile $qsrcfile $pic_flag"
134305b261ecSmrg      else
134405b261ecSmrg	# Don't build PIC code
134505b261ecSmrg	command="$base_compile $qsrcfile"
134605b261ecSmrg      fi
134705b261ecSmrg
13484642e01fSmrg      func_mkdir_p "$xdir$objdir"
134905b261ecSmrg
135005b261ecSmrg      if test -z "$output_obj"; then
135105b261ecSmrg	# Place PIC objects in $objdir
135205b261ecSmrg	command="$command -o $lobj"
135305b261ecSmrg      fi
135405b261ecSmrg
13554642e01fSmrg      func_show_eval_locale "$command"	\
13564642e01fSmrg          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
135705b261ecSmrg
135805b261ecSmrg      if test "$need_locks" = warn &&
135905b261ecSmrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
13604642e01fSmrg	$ECHO "\
136105b261ecSmrg*** ERROR, $lockfile contains:
136205b261ecSmrg`cat $lockfile 2>/dev/null`
136305b261ecSmrg
136405b261ecSmrgbut it should contain:
136505b261ecSmrg$srcfile
136605b261ecSmrg
136705b261ecSmrgThis indicates that another process is trying to use the same
136805b261ecSmrgtemporary object file, and libtool could not work around it because
136905b261ecSmrgyour compiler does not support \`-c' and \`-o' together.  If you
137005b261ecSmrgrepeat this compilation, it may succeed, by chance, but you had better
137105b261ecSmrgavoid parallel builds (make -j) in this platform, or get a better
137205b261ecSmrgcompiler."
137305b261ecSmrg
13744642e01fSmrg	$opt_dry_run || $RM $removelist
137505b261ecSmrg	exit $EXIT_FAILURE
137605b261ecSmrg      fi
137705b261ecSmrg
137805b261ecSmrg      # Just move the object if needed, then go on to compile the next one
137905b261ecSmrg      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
13804642e01fSmrg	func_show_eval '$MV "$output_obj" "$lobj"' \
13814642e01fSmrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
138205b261ecSmrg      fi
138305b261ecSmrg
138405b261ecSmrg      # Allow error messages only from the first compilation.
138505b261ecSmrg      if test "$suppress_opt" = yes; then
13864642e01fSmrg	suppress_output=' >/dev/null 2>&1'
138705b261ecSmrg      fi
138805b261ecSmrg    fi
138905b261ecSmrg
139005b261ecSmrg    # Only build a position-dependent object if we build old libraries.
139105b261ecSmrg    if test "$build_old_libs" = yes; then
139205b261ecSmrg      if test "$pic_mode" != yes; then
139305b261ecSmrg	# Don't build PIC code
13944642e01fSmrg	command="$base_compile $qsrcfile$pie_flag"
139505b261ecSmrg      else
139605b261ecSmrg	command="$base_compile $qsrcfile $pic_flag"
139705b261ecSmrg      fi
139805b261ecSmrg      if test "$compiler_c_o" = yes; then
139905b261ecSmrg	command="$command -o $obj"
140005b261ecSmrg      fi
140105b261ecSmrg
140205b261ecSmrg      # Suppress compiler output if we already did a PIC compilation.
140305b261ecSmrg      command="$command$suppress_output"
14044642e01fSmrg      func_show_eval_locale "$command" \
14054642e01fSmrg        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
140605b261ecSmrg
140705b261ecSmrg      if test "$need_locks" = warn &&
140805b261ecSmrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
14094642e01fSmrg	$ECHO "\
141005b261ecSmrg*** ERROR, $lockfile contains:
141105b261ecSmrg`cat $lockfile 2>/dev/null`
141205b261ecSmrg
141305b261ecSmrgbut it should contain:
141405b261ecSmrg$srcfile
141505b261ecSmrg
141605b261ecSmrgThis indicates that another process is trying to use the same
141705b261ecSmrgtemporary object file, and libtool could not work around it because
141805b261ecSmrgyour compiler does not support \`-c' and \`-o' together.  If you
141905b261ecSmrgrepeat this compilation, it may succeed, by chance, but you had better
142005b261ecSmrgavoid parallel builds (make -j) in this platform, or get a better
142105b261ecSmrgcompiler."
142205b261ecSmrg
14234642e01fSmrg	$opt_dry_run || $RM $removelist
142405b261ecSmrg	exit $EXIT_FAILURE
142505b261ecSmrg      fi
142605b261ecSmrg
142705b261ecSmrg      # Just move the object if needed
142805b261ecSmrg      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
14294642e01fSmrg	func_show_eval '$MV "$output_obj" "$obj"' \
14304642e01fSmrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
143105b261ecSmrg      fi
143205b261ecSmrg    fi
143305b261ecSmrg
14344642e01fSmrg    $opt_dry_run || {
14354642e01fSmrg      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
143605b261ecSmrg
14374642e01fSmrg      # Unlock the critical section if it was locked
14384642e01fSmrg      if test "$need_locks" != no; then
14394642e01fSmrg	removelist=$lockfile
14404642e01fSmrg        $RM "$lockfile"
14414642e01fSmrg      fi
14424642e01fSmrg    }
144305b261ecSmrg
144405b261ecSmrg    exit $EXIT_SUCCESS
14454642e01fSmrg}
144605b261ecSmrg
14474642e01fSmrg$opt_help || {
14484642e01fSmrgtest "$mode" = compile && func_mode_compile ${1+"$@"}
14494642e01fSmrg}
145005b261ecSmrg
14514642e01fSmrgfunc_mode_help ()
14524642e01fSmrg{
14534642e01fSmrg    # We need to display help for each of the modes.
14544642e01fSmrg    case $mode in
14554642e01fSmrg      "")
14564642e01fSmrg        # Generic help is extracted from the usage comments
14574642e01fSmrg        # at the start of this file.
14584642e01fSmrg        func_help
14594642e01fSmrg        ;;
146005b261ecSmrg
14614642e01fSmrg      clean)
14624642e01fSmrg        $ECHO \
14634642e01fSmrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
146405b261ecSmrg
14654642e01fSmrgRemove files from the build directory.
146605b261ecSmrg
14674642e01fSmrgRM is the name of the program to use to delete files associated with each FILE
14684642e01fSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
14694642e01fSmrgto RM.
147005b261ecSmrg
14714642e01fSmrgIf FILE is a libtool library, object or program, all the files associated
14724642e01fSmrgwith it are deleted. Otherwise, only FILE itself is deleted using RM."
14734642e01fSmrg        ;;
147405b261ecSmrg
14754642e01fSmrg      compile)
14764642e01fSmrg      $ECHO \
14774642e01fSmrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
147805b261ecSmrg
14794642e01fSmrgCompile a source file into a libtool library object.
148005b261ecSmrg
14814642e01fSmrgThis mode accepts the following additional options:
148205b261ecSmrg
14834642e01fSmrg  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
14844642e01fSmrg  -no-suppress      do not suppress compiler output for multiple passes
14854642e01fSmrg  -prefer-pic       try to building PIC objects only
14864642e01fSmrg  -prefer-non-pic   try to building non-PIC objects only
14874642e01fSmrg  -shared           do not build a \`.o' file suitable for static linking
14884642e01fSmrg  -static           only build a \`.o' file suitable for static linking
148905b261ecSmrg
14904642e01fSmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
14914642e01fSmrgfrom the given SOURCEFILE.
149205b261ecSmrg
14934642e01fSmrgThe output file name is determined by removing the directory component from
14944642e01fSmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the
14954642e01fSmrglibrary object suffix, \`.lo'."
14964642e01fSmrg        ;;
149705b261ecSmrg
14984642e01fSmrg      execute)
14994642e01fSmrg        $ECHO \
15004642e01fSmrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
150105b261ecSmrg
15024642e01fSmrgAutomatically set library path, then run a program.
150305b261ecSmrg
15044642e01fSmrgThis mode accepts the following additional options:
150505b261ecSmrg
15064642e01fSmrg  -dlopen FILE      add the directory containing FILE to the library path
150705b261ecSmrg
15084642e01fSmrgThis mode sets the library path environment variable according to \`-dlopen'
15094642e01fSmrgflags.
151005b261ecSmrg
15114642e01fSmrgIf any of the ARGS are libtool executable wrappers, then they are translated
15124642e01fSmrginto their corresponding uninstalled binary, and any of their required library
15134642e01fSmrgdirectories are added to the library path.
151405b261ecSmrg
15154642e01fSmrgThen, COMMAND is executed, with ARGS as arguments."
15164642e01fSmrg        ;;
151705b261ecSmrg
15184642e01fSmrg      finish)
15194642e01fSmrg        $ECHO \
15204642e01fSmrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
152105b261ecSmrg
15224642e01fSmrgComplete the installation of libtool libraries.
152305b261ecSmrg
15244642e01fSmrgEach LIBDIR is a directory that contains libtool libraries.
152505b261ecSmrg
15264642e01fSmrgThe commands that this mode executes may require superuser privileges.  Use
15274642e01fSmrgthe \`--dry-run' option if you just want to see what would be executed."
15284642e01fSmrg        ;;
152905b261ecSmrg
15304642e01fSmrg      install)
15314642e01fSmrg        $ECHO \
15324642e01fSmrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
153305b261ecSmrg
15344642e01fSmrgInstall executables or libraries.
153505b261ecSmrg
15364642e01fSmrgINSTALL-COMMAND is the installation command.  The first component should be
15374642e01fSmrgeither the \`install' or \`cp' program.
153805b261ecSmrg
15394642e01fSmrgThe following components of INSTALL-COMMAND are treated specially:
154005b261ecSmrg
15414642e01fSmrg  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
154205b261ecSmrg
15434642e01fSmrgThe rest of the components are interpreted as arguments to that command (only
15444642e01fSmrgBSD-compatible install options are recognized)."
15454642e01fSmrg        ;;
154605b261ecSmrg
15474642e01fSmrg      link)
15484642e01fSmrg        $ECHO \
15494642e01fSmrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
155005b261ecSmrg
15514642e01fSmrgLink object files or libraries together to form another library, or to
15524642e01fSmrgcreate an executable program.
155305b261ecSmrg
15544642e01fSmrgLINK-COMMAND is a command using the C compiler that you would use to create
15554642e01fSmrga program from several object files.
155605b261ecSmrg
15574642e01fSmrgThe following components of LINK-COMMAND are treated specially:
155805b261ecSmrg
15594642e01fSmrg  -all-static       do not do any dynamic linking at all
15604642e01fSmrg  -avoid-version    do not add a version suffix if possible
15614642e01fSmrg  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
15624642e01fSmrg  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
15634642e01fSmrg  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
15644642e01fSmrg  -export-symbols SYMFILE
15654642e01fSmrg                    try to export only the symbols listed in SYMFILE
15664642e01fSmrg  -export-symbols-regex REGEX
15674642e01fSmrg                    try to export only the symbols matching REGEX
15684642e01fSmrg  -LLIBDIR          search LIBDIR for required installed libraries
15694642e01fSmrg  -lNAME            OUTPUT-FILE requires the installed library libNAME
15704642e01fSmrg  -module           build a library that can dlopened
15714642e01fSmrg  -no-fast-install  disable the fast-install mode
15724642e01fSmrg  -no-install       link a not-installable executable
15734642e01fSmrg  -no-undefined     declare that a library does not refer to external symbols
15744642e01fSmrg  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
15754642e01fSmrg  -objectlist FILE  Use a list of object files found in FILE to specify objects
15764642e01fSmrg  -precious-files-regex REGEX
15774642e01fSmrg                    don't remove output files matching REGEX
15784642e01fSmrg  -release RELEASE  specify package release information
15794642e01fSmrg  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
15804642e01fSmrg  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
15814642e01fSmrg  -shared           only do dynamic linking of libtool libraries
15824642e01fSmrg  -shrext SUFFIX    override the standard shared library file extension
15834642e01fSmrg  -static           do not do any dynamic linking of uninstalled libtool libraries
15844642e01fSmrg  -static-libtool-libs
15854642e01fSmrg                    do not do any dynamic linking of libtool libraries
15864642e01fSmrg  -version-info CURRENT[:REVISION[:AGE]]
15874642e01fSmrg                    specify library version info [each variable defaults to 0]
15884642e01fSmrg  -weak LIBNAME     declare that the target provides the LIBNAME interface
158905b261ecSmrg
15904642e01fSmrgAll other options (arguments beginning with \`-') are ignored.
159105b261ecSmrg
15924642e01fSmrgEvery other argument is treated as a filename.  Files ending in \`.la' are
15934642e01fSmrgtreated as uninstalled libtool libraries, other files are standard or library
15944642e01fSmrgobject files.
159505b261ecSmrg
15964642e01fSmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
15974642e01fSmrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is
15984642e01fSmrgrequired, except when creating a convenience library.
159905b261ecSmrg
16004642e01fSmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
16014642e01fSmrgusing \`ar' and \`ranlib', or on Windows using \`lib'.
160205b261ecSmrg
16034642e01fSmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
16044642e01fSmrgis created, otherwise an executable program is created."
160505b261ecSmrg        ;;
160605b261ecSmrg
16074642e01fSmrg      uninstall)
16084642e01fSmrg        $ECHO \
16094642e01fSmrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
161005b261ecSmrg
16114642e01fSmrgRemove libraries from an installation directory.
161205b261ecSmrg
16134642e01fSmrgRM is the name of the program to use to delete files associated with each FILE
16144642e01fSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
16154642e01fSmrgto RM.
161605b261ecSmrg
16174642e01fSmrgIf FILE is a libtool library, all the files associated with it are deleted.
16184642e01fSmrgOtherwise, only FILE itself is deleted using RM."
16194642e01fSmrg        ;;
162005b261ecSmrg
16214642e01fSmrg      *)
16224642e01fSmrg        func_fatal_help "invalid operation mode \`$mode'"
16234642e01fSmrg        ;;
16244642e01fSmrg    esac
162505b261ecSmrg
16264642e01fSmrg    $ECHO
16274642e01fSmrg    $ECHO "Try \`$progname --help' for more information about other modes."
162805b261ecSmrg
16294642e01fSmrg    exit $?
16304642e01fSmrg}
163105b261ecSmrg
16324642e01fSmrg  # Now that we've collected a possible --mode arg, show help if necessary
16334642e01fSmrg  $opt_help && func_mode_help
163405b261ecSmrg
163505b261ecSmrg
16364642e01fSmrg# func_mode_execute arg...
16374642e01fSmrgfunc_mode_execute ()
16384642e01fSmrg{
16394642e01fSmrg    $opt_debug
16404642e01fSmrg    # The first argument is the command name.
16414642e01fSmrg    cmd="$nonopt"
16424642e01fSmrg    test -z "$cmd" && \
16434642e01fSmrg      func_fatal_help "you must specify a COMMAND"
164405b261ecSmrg
16454642e01fSmrg    # Handle -dlopen flags immediately.
16464642e01fSmrg    for file in $execute_dlfiles; do
16474642e01fSmrg      test -f "$file" \
16484642e01fSmrg	|| func_fatal_help "\`$file' is not a file"
164905b261ecSmrg
16504642e01fSmrg      dir=
16514642e01fSmrg      case $file in
16524642e01fSmrg      *.la)
16534642e01fSmrg	# Check to see that this really is a libtool archive.
16544642e01fSmrg	func_lalib_unsafe_p "$file" \
16554642e01fSmrg	  || func_fatal_help "\`$lib' is not a valid libtool archive"
165605b261ecSmrg
16574642e01fSmrg	# Read the libtool library.
16584642e01fSmrg	dlname=
16594642e01fSmrg	library_names=
16604642e01fSmrg	func_source "$file"
166105b261ecSmrg
16624642e01fSmrg	# Skip this library if it cannot be dlopened.
16634642e01fSmrg	if test -z "$dlname"; then
16644642e01fSmrg	  # Warn if it was a shared library.
16654642e01fSmrg	  test -n "$library_names" && \
16664642e01fSmrg	    func_warning "\`$file' was not linked with \`-export-dynamic'"
16674642e01fSmrg	  continue
16684642e01fSmrg	fi
166905b261ecSmrg
16704642e01fSmrg	func_dirname "$file" "" "."
16714642e01fSmrg	dir="$func_dirname_result"
167205b261ecSmrg
16734642e01fSmrg	if test -f "$dir/$objdir/$dlname"; then
16744642e01fSmrg	  dir="$dir/$objdir"
16754642e01fSmrg	else
16764642e01fSmrg	  if test ! -f "$dir/$dlname"; then
16774642e01fSmrg	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
16784642e01fSmrg	  fi
16794642e01fSmrg	fi
168005b261ecSmrg	;;
168105b261ecSmrg
16824642e01fSmrg      *.lo)
16834642e01fSmrg	# Just add the directory containing the .lo file.
16844642e01fSmrg	func_dirname "$file" "" "."
16854642e01fSmrg	dir="$func_dirname_result"
168605b261ecSmrg	;;
168705b261ecSmrg
16884642e01fSmrg      *)
16894642e01fSmrg	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
169005b261ecSmrg	continue
169105b261ecSmrg	;;
16924642e01fSmrg      esac
169305b261ecSmrg
16944642e01fSmrg      # Get the absolute pathname.
16954642e01fSmrg      absdir=`cd "$dir" && pwd`
16964642e01fSmrg      test -n "$absdir" && dir="$absdir"
169705b261ecSmrg
16984642e01fSmrg      # Now add the directory to shlibpath_var.
16994642e01fSmrg      if eval "test -z \"\$$shlibpath_var\""; then
17004642e01fSmrg	eval "$shlibpath_var=\"\$dir\""
17014642e01fSmrg      else
17024642e01fSmrg	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
17034642e01fSmrg      fi
17044642e01fSmrg    done
170505b261ecSmrg
17064642e01fSmrg    # This variable tells wrapper scripts just to set shlibpath_var
17074642e01fSmrg    # rather than running their programs.
17084642e01fSmrg    libtool_execute_magic="$magic"
170905b261ecSmrg
17104642e01fSmrg    # Check if any of the arguments is a wrapper script.
17114642e01fSmrg    args=
17124642e01fSmrg    for file
17134642e01fSmrg    do
17144642e01fSmrg      case $file in
17154642e01fSmrg      -*) ;;
17164642e01fSmrg      *)
17174642e01fSmrg	# Do a test to see if this is really a libtool program.
17184642e01fSmrg	if func_ltwrapper_script_p "$file"; then
17194642e01fSmrg	  func_source "$file"
17204642e01fSmrg	  # Transform arg to wrapped name.
17214642e01fSmrg	  file="$progdir/$program"
17224642e01fSmrg	elif func_ltwrapper_executable_p "$file"; then
17234642e01fSmrg	  func_ltwrapper_scriptname "$file"
17244642e01fSmrg	  func_source "$func_ltwrapper_scriptname_result"
17254642e01fSmrg	  # Transform arg to wrapped name.
17264642e01fSmrg	  file="$progdir/$program"
17274642e01fSmrg	fi
17284642e01fSmrg	;;
17294642e01fSmrg      esac
17304642e01fSmrg      # Quote arguments (to preserve shell metacharacters).
17314642e01fSmrg      func_quote_for_eval "$file"
17324642e01fSmrg      args="$args $func_quote_for_eval_result"
17334642e01fSmrg    done
173405b261ecSmrg
17354642e01fSmrg    if test "X$opt_dry_run" = Xfalse; then
17364642e01fSmrg      if test -n "$shlibpath_var"; then
17374642e01fSmrg	# Export the shlibpath_var.
17384642e01fSmrg	eval "export $shlibpath_var"
17394642e01fSmrg      fi
174005b261ecSmrg
17414642e01fSmrg      # Restore saved environment variables
17424642e01fSmrg      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
17434642e01fSmrg      do
17444642e01fSmrg	eval "if test \"\${save_$lt_var+set}\" = set; then
17454642e01fSmrg                $lt_var=\$save_$lt_var; export $lt_var
174605b261ecSmrg	      else
17474642e01fSmrg		$lt_unset $lt_var
17484642e01fSmrg	      fi"
17494642e01fSmrg      done
175005b261ecSmrg
17514642e01fSmrg      # Now prepare to actually exec the command.
17524642e01fSmrg      exec_cmd="\$cmd$args"
17534642e01fSmrg    else
17544642e01fSmrg      # Display what would be done.
17554642e01fSmrg      if test -n "$shlibpath_var"; then
17564642e01fSmrg	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
17574642e01fSmrg	$ECHO "export $shlibpath_var"
17584642e01fSmrg      fi
17594642e01fSmrg      $ECHO "$cmd$args"
17604642e01fSmrg      exit $EXIT_SUCCESS
17614642e01fSmrg    fi
17624642e01fSmrg}
176305b261ecSmrg
17644642e01fSmrgtest "$mode" = execute && func_mode_execute ${1+"$@"}
176505b261ecSmrg
176605b261ecSmrg
17674642e01fSmrg# func_mode_finish arg...
17684642e01fSmrgfunc_mode_finish ()
17694642e01fSmrg{
17704642e01fSmrg    $opt_debug
17714642e01fSmrg    libdirs="$nonopt"
17724642e01fSmrg    admincmds=
177305b261ecSmrg
17744642e01fSmrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
17754642e01fSmrg      for dir
17764642e01fSmrg      do
17774642e01fSmrg	libdirs="$libdirs $dir"
17784642e01fSmrg      done
177905b261ecSmrg
17804642e01fSmrg      for libdir in $libdirs; do
17814642e01fSmrg	if test -n "$finish_cmds"; then
17824642e01fSmrg	  # Do each command in the finish commands.
17834642e01fSmrg	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
17844642e01fSmrg'"$cmd"'"'
178505b261ecSmrg	fi
17864642e01fSmrg	if test -n "$finish_eval"; then
17874642e01fSmrg	  # Do the single finish_eval.
17884642e01fSmrg	  eval cmds=\"$finish_eval\"
17894642e01fSmrg	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
17904642e01fSmrg       $cmds"
17914642e01fSmrg	fi
17924642e01fSmrg      done
17934642e01fSmrg    fi
179405b261ecSmrg
17954642e01fSmrg    # Exit here if they wanted silent mode.
17964642e01fSmrg    $opt_silent && exit $EXIT_SUCCESS
179705b261ecSmrg
17984642e01fSmrg    $ECHO "X----------------------------------------------------------------------" | $Xsed
17994642e01fSmrg    $ECHO "Libraries have been installed in:"
18004642e01fSmrg    for libdir in $libdirs; do
18014642e01fSmrg      $ECHO "   $libdir"
18024642e01fSmrg    done
18034642e01fSmrg    $ECHO
18044642e01fSmrg    $ECHO "If you ever happen to want to link against installed libraries"
18054642e01fSmrg    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
18064642e01fSmrg    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
18074642e01fSmrg    $ECHO "flag during linking and do at least one of the following:"
18084642e01fSmrg    if test -n "$shlibpath_var"; then
18094642e01fSmrg      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
18104642e01fSmrg      $ECHO "     during execution"
18114642e01fSmrg    fi
18124642e01fSmrg    if test -n "$runpath_var"; then
18134642e01fSmrg      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
18144642e01fSmrg      $ECHO "     during linking"
18154642e01fSmrg    fi
18164642e01fSmrg    if test -n "$hardcode_libdir_flag_spec"; then
18174642e01fSmrg      libdir=LIBDIR
18184642e01fSmrg      eval flag=\"$hardcode_libdir_flag_spec\"
18194642e01fSmrg
18204642e01fSmrg      $ECHO "   - use the \`$flag' linker flag"
18214642e01fSmrg    fi
18224642e01fSmrg    if test -n "$admincmds"; then
18234642e01fSmrg      $ECHO "   - have your system administrator run these commands:$admincmds"
18244642e01fSmrg    fi
18254642e01fSmrg    if test -f /etc/ld.so.conf; then
18264642e01fSmrg      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
18274642e01fSmrg    fi
18284642e01fSmrg    $ECHO
18294642e01fSmrg
18304642e01fSmrg    $ECHO "See any operating system documentation about shared libraries for"
18314642e01fSmrg    case $host in
18324642e01fSmrg      solaris2.[6789]|solaris2.1[0-9])
18334642e01fSmrg        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
18344642e01fSmrg	$ECHO "pages."
18354642e01fSmrg	;;
18364642e01fSmrg      *)
18374642e01fSmrg        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
18384642e01fSmrg        ;;
18394642e01fSmrg    esac
18404642e01fSmrg    $ECHO "X----------------------------------------------------------------------" | $Xsed
18414642e01fSmrg    exit $EXIT_SUCCESS
18424642e01fSmrg}
18434642e01fSmrg
18444642e01fSmrgtest "$mode" = finish && func_mode_finish ${1+"$@"}
18454642e01fSmrg
18464642e01fSmrg
18474642e01fSmrg# func_mode_install arg...
18484642e01fSmrgfunc_mode_install ()
18494642e01fSmrg{
18504642e01fSmrg    $opt_debug
18514642e01fSmrg    # There may be an optional sh(1) argument at the beginning of
18524642e01fSmrg    # install_prog (especially on Windows NT).
18534642e01fSmrg    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
18544642e01fSmrg       # Allow the use of GNU shtool's install command.
18554642e01fSmrg       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
18564642e01fSmrg      # Aesthetically quote it.
18574642e01fSmrg      func_quote_for_eval "$nonopt"
18584642e01fSmrg      install_prog="$func_quote_for_eval_result "
18594642e01fSmrg      arg=$1
18604642e01fSmrg      shift
18614642e01fSmrg    else
18624642e01fSmrg      install_prog=
18634642e01fSmrg      arg=$nonopt
18644642e01fSmrg    fi
18654642e01fSmrg
18664642e01fSmrg    # The real first argument should be the name of the installation program.
18674642e01fSmrg    # Aesthetically quote it.
18684642e01fSmrg    func_quote_for_eval "$arg"
18694642e01fSmrg    install_prog="$install_prog$func_quote_for_eval_result"
18704642e01fSmrg
18714642e01fSmrg    # We need to accept at least all the BSD install flags.
18724642e01fSmrg    dest=
18734642e01fSmrg    files=
18744642e01fSmrg    opts=
18754642e01fSmrg    prev=
18764642e01fSmrg    install_type=
18774642e01fSmrg    isdir=no
18784642e01fSmrg    stripme=
18794642e01fSmrg    for arg
18804642e01fSmrg    do
18814642e01fSmrg      if test -n "$dest"; then
18824642e01fSmrg	files="$files $dest"
18834642e01fSmrg	dest=$arg
18844642e01fSmrg	continue
18854642e01fSmrg      fi
18864642e01fSmrg
18874642e01fSmrg      case $arg in
18884642e01fSmrg      -d) isdir=yes ;;
18894642e01fSmrg      -f)
18904642e01fSmrg	case " $install_prog " in
18914642e01fSmrg	*[\\\ /]cp\ *) ;;
18924642e01fSmrg	*) prev=$arg ;;
18934642e01fSmrg	esac
18944642e01fSmrg	;;
18954642e01fSmrg      -g | -m | -o)
18964642e01fSmrg	prev=$arg
18974642e01fSmrg	;;
18984642e01fSmrg      -s)
18994642e01fSmrg	stripme=" -s"
19004642e01fSmrg	continue
19014642e01fSmrg	;;
19024642e01fSmrg      -*)
19034642e01fSmrg	;;
19044642e01fSmrg      *)
19054642e01fSmrg	# If the previous option needed an argument, then skip it.
19064642e01fSmrg	if test -n "$prev"; then
190705b261ecSmrg	  prev=
190805b261ecSmrg	else
19094642e01fSmrg	  dest=$arg
19104642e01fSmrg	  continue
191105b261ecSmrg	fi
191205b261ecSmrg	;;
19134642e01fSmrg      esac
191405b261ecSmrg
19154642e01fSmrg      # Aesthetically quote the argument.
19164642e01fSmrg      func_quote_for_eval "$arg"
19174642e01fSmrg      install_prog="$install_prog $func_quote_for_eval_result"
19184642e01fSmrg    done
191905b261ecSmrg
19204642e01fSmrg    test -z "$install_prog" && \
19214642e01fSmrg      func_fatal_help "you must specify an install program"
192205b261ecSmrg
19234642e01fSmrg    test -n "$prev" && \
19244642e01fSmrg      func_fatal_help "the \`$prev' option requires an argument"
192505b261ecSmrg
19264642e01fSmrg    if test -z "$files"; then
19274642e01fSmrg      if test -z "$dest"; then
19284642e01fSmrg	func_fatal_help "no file or destination specified"
19294642e01fSmrg      else
19304642e01fSmrg	func_fatal_help "you must specify a destination"
19314642e01fSmrg      fi
193205b261ecSmrg    fi
193305b261ecSmrg
19344642e01fSmrg    # Strip any trailing slash from the destination.
19354642e01fSmrg    func_stripname '' '/' "$dest"
19364642e01fSmrg    dest=$func_stripname_result
193705b261ecSmrg
19384642e01fSmrg    # Check to see that the destination is a directory.
19394642e01fSmrg    test -d "$dest" && isdir=yes
19404642e01fSmrg    if test "$isdir" = yes; then
19414642e01fSmrg      destdir="$dest"
19424642e01fSmrg      destname=
194305b261ecSmrg    else
19444642e01fSmrg      func_dirname_and_basename "$dest" "" "."
19454642e01fSmrg      destdir="$func_dirname_result"
19464642e01fSmrg      destname="$func_basename_result"
194705b261ecSmrg
19484642e01fSmrg      # Not a directory, so check to see that there is only one file specified.
19494642e01fSmrg      set dummy $files; shift
19504642e01fSmrg      test "$#" -gt 1 && \
19514642e01fSmrg	func_fatal_help "\`$dest' is not a directory"
195205b261ecSmrg    fi
19534642e01fSmrg    case $destdir in
19544642e01fSmrg    [\\/]* | [A-Za-z]:[\\/]*) ;;
195505b261ecSmrg    *)
19564642e01fSmrg      for file in $files; do
19574642e01fSmrg	case $file in
19584642e01fSmrg	*.lo) ;;
19594642e01fSmrg	*)
19604642e01fSmrg	  func_fatal_help "\`$destdir' must be an absolute directory name"
19614642e01fSmrg	  ;;
19624642e01fSmrg	esac
19634642e01fSmrg      done
196405b261ecSmrg      ;;
196505b261ecSmrg    esac
196605b261ecSmrg
19674642e01fSmrg    # This variable tells wrapper scripts just to set variables rather
19684642e01fSmrg    # than running their programs.
19694642e01fSmrg    libtool_install_magic="$magic"
197005b261ecSmrg
19714642e01fSmrg    staticlibs=
19724642e01fSmrg    future_libdirs=
19734642e01fSmrg    current_libdirs=
19744642e01fSmrg    for file in $files; do
197505b261ecSmrg
19764642e01fSmrg      # Do each installation.
19774642e01fSmrg      case $file in
19784642e01fSmrg      *.$libext)
19794642e01fSmrg	# Do the static libraries later.
19804642e01fSmrg	staticlibs="$staticlibs $file"
19814642e01fSmrg	;;
19824642e01fSmrg
19834642e01fSmrg      *.la)
19844642e01fSmrg	# Check to see that this really is a libtool archive.
19854642e01fSmrg	func_lalib_unsafe_p "$file" \
19864642e01fSmrg	  || func_fatal_help "\`$file' is not a valid libtool archive"
19874642e01fSmrg
19884642e01fSmrg	library_names=
19894642e01fSmrg	old_library=
19904642e01fSmrg	relink_command=
19914642e01fSmrg	func_source "$file"
19924642e01fSmrg
19934642e01fSmrg	# Add the libdir to current_libdirs if it is the destination.
19944642e01fSmrg	if test "X$destdir" = "X$libdir"; then
19954642e01fSmrg	  case "$current_libdirs " in
19964642e01fSmrg	  *" $libdir "*) ;;
19974642e01fSmrg	  *) current_libdirs="$current_libdirs $libdir" ;;
199805b261ecSmrg	  esac
19994642e01fSmrg	else
20004642e01fSmrg	  # Note the libdir as a future libdir.
20014642e01fSmrg	  case "$future_libdirs " in
20024642e01fSmrg	  *" $libdir "*) ;;
20034642e01fSmrg	  *) future_libdirs="$future_libdirs $libdir" ;;
20044642e01fSmrg	  esac
20054642e01fSmrg	fi
200605b261ecSmrg
20074642e01fSmrg	func_dirname "$file" "/" ""
20084642e01fSmrg	dir="$func_dirname_result"
20094642e01fSmrg	dir="$dir$objdir"
20104642e01fSmrg
20114642e01fSmrg	if test -n "$relink_command"; then
20124642e01fSmrg	  # Determine the prefix the user has applied to our future dir.
20134642e01fSmrg	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
20144642e01fSmrg
20154642e01fSmrg	  # Don't allow the user to place us outside of our expected
20164642e01fSmrg	  # location b/c this prevents finding dependent libraries that
20174642e01fSmrg	  # are installed to the same prefix.
20184642e01fSmrg	  # At present, this check doesn't affect windows .dll's that
20194642e01fSmrg	  # are installed into $libdir/../bin (currently, that works fine)
20204642e01fSmrg	  # but it's something to keep an eye on.
20214642e01fSmrg	  test "$inst_prefix_dir" = "$destdir" && \
20224642e01fSmrg	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
20234642e01fSmrg
20244642e01fSmrg	  if test -n "$inst_prefix_dir"; then
20254642e01fSmrg	    # Stick the inst_prefix_dir data into the link command.
20264642e01fSmrg	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
20274642e01fSmrg	  else
20284642e01fSmrg	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
20294642e01fSmrg	  fi
20304642e01fSmrg
20314642e01fSmrg	  func_warning "relinking \`$file'"
20324642e01fSmrg	  func_show_eval "$relink_command" \
20334642e01fSmrg	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
20344642e01fSmrg	fi
20354642e01fSmrg
20364642e01fSmrg	# See the names of the shared library.
20374642e01fSmrg	set dummy $library_names; shift
20384642e01fSmrg	if test -n "$1"; then
20394642e01fSmrg	  realname="$1"
20404642e01fSmrg	  shift
20414642e01fSmrg
20424642e01fSmrg	  srcname="$realname"
20434642e01fSmrg	  test -n "$relink_command" && srcname="$realname"T
20444642e01fSmrg
20454642e01fSmrg	  # Install the shared library and build the symlinks.
20464642e01fSmrg	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
20474642e01fSmrg	      'exit $?'
20484642e01fSmrg	  tstripme="$stripme"
20494642e01fSmrg	  case $host_os in
20504642e01fSmrg	  cygwin* | mingw* | pw32* | cegcc*)
20514642e01fSmrg	    case $realname in
20524642e01fSmrg	    *.dll.a)
20534642e01fSmrg	      tstripme=""
20544642e01fSmrg	      ;;
20554642e01fSmrg	    esac
205605b261ecSmrg	    ;;
205705b261ecSmrg	  esac
20584642e01fSmrg	  if test -n "$tstripme" && test -n "$striplib"; then
20594642e01fSmrg	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
206005b261ecSmrg	  fi
20614642e01fSmrg
20624642e01fSmrg	  if test "$#" -gt 0; then
20634642e01fSmrg	    # Delete the old symlinks, and create new ones.
20644642e01fSmrg	    # Try `ln -sf' first, because the `ln' binary might depend on
20654642e01fSmrg	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
20664642e01fSmrg	    # so we also need to try rm && ln -s.
20674642e01fSmrg	    for linkname
20684642e01fSmrg	    do
20694642e01fSmrg	      test "$linkname" != "$realname" \
20704642e01fSmrg		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
207105b261ecSmrg	    done
207205b261ecSmrg	  fi
207305b261ecSmrg
20744642e01fSmrg	  # Do each command in the postinstall commands.
20754642e01fSmrg	  lib="$destdir/$realname"
20764642e01fSmrg	  func_execute_cmds "$postinstall_cmds" 'exit $?'
207705b261ecSmrg	fi
207805b261ecSmrg
20794642e01fSmrg	# Install the pseudo-library for information purposes.
20804642e01fSmrg	func_basename "$file"
20814642e01fSmrg	name="$func_basename_result"
20824642e01fSmrg	instname="$dir/$name"i
20834642e01fSmrg	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
208405b261ecSmrg
20854642e01fSmrg	# Maybe install the static library, too.
20864642e01fSmrg	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
20874642e01fSmrg	;;
208805b261ecSmrg
20894642e01fSmrg      *.lo)
20904642e01fSmrg	# Install (i.e. copy) a libtool object.
209105b261ecSmrg
20924642e01fSmrg	# Figure out destination file name, if it wasn't already specified.
20934642e01fSmrg	if test -n "$destname"; then
20944642e01fSmrg	  destfile="$destdir/$destname"
20954642e01fSmrg	else
20964642e01fSmrg	  func_basename "$file"
20974642e01fSmrg	  destfile="$func_basename_result"
20984642e01fSmrg	  destfile="$destdir/$destfile"
20994642e01fSmrg	fi
21004642e01fSmrg
21014642e01fSmrg	# Deduce the name of the destination old-style object file.
21024642e01fSmrg	case $destfile in
21034642e01fSmrg	*.lo)
21044642e01fSmrg	  func_lo2o "$destfile"
21054642e01fSmrg	  staticdest=$func_lo2o_result
21064642e01fSmrg	  ;;
21074642e01fSmrg	*.$objext)
21084642e01fSmrg	  staticdest="$destfile"
21094642e01fSmrg	  destfile=
21104642e01fSmrg	  ;;
21114642e01fSmrg	*)
21124642e01fSmrg	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
21134642e01fSmrg	  ;;
211405b261ecSmrg	esac
211505b261ecSmrg
21164642e01fSmrg	# Install the libtool object if requested.
21174642e01fSmrg	test -n "$destfile" && \
21184642e01fSmrg	  func_show_eval "$install_prog $file $destfile" 'exit $?'
21194642e01fSmrg
21204642e01fSmrg	# Install the old object if enabled.
21214642e01fSmrg	if test "$build_old_libs" = yes; then
21224642e01fSmrg	  # Deduce the name of the old-style object file.
21234642e01fSmrg	  func_lo2o "$file"
21244642e01fSmrg	  staticobj=$func_lo2o_result
21254642e01fSmrg	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
212605b261ecSmrg	fi
21274642e01fSmrg	exit $EXIT_SUCCESS
21284642e01fSmrg	;;
212905b261ecSmrg
21304642e01fSmrg      *)
21314642e01fSmrg	# Figure out destination file name, if it wasn't already specified.
21324642e01fSmrg	if test -n "$destname"; then
21334642e01fSmrg	  destfile="$destdir/$destname"
21344642e01fSmrg	else
21354642e01fSmrg	  func_basename "$file"
21364642e01fSmrg	  destfile="$func_basename_result"
21374642e01fSmrg	  destfile="$destdir/$destfile"
21384642e01fSmrg	fi
213905b261ecSmrg
21404642e01fSmrg	# If the file is missing, and there is a .exe on the end, strip it
21414642e01fSmrg	# because it is most likely a libtool script we actually want to
21424642e01fSmrg	# install
21434642e01fSmrg	stripped_ext=""
21444642e01fSmrg	case $file in
21454642e01fSmrg	  *.exe)
21464642e01fSmrg	    if test ! -f "$file"; then
21474642e01fSmrg	      func_stripname '' '.exe' "$file"
21484642e01fSmrg	      file=$func_stripname_result
21494642e01fSmrg	      stripped_ext=".exe"
21504642e01fSmrg	    fi
21514642e01fSmrg	    ;;
21524642e01fSmrg	esac
215305b261ecSmrg
21544642e01fSmrg	# Do a test to see if this is really a libtool program.
21554642e01fSmrg	case $host in
21564642e01fSmrg	*cygwin* | *mingw*)
21574642e01fSmrg	    if func_ltwrapper_executable_p "$file"; then
21584642e01fSmrg	      func_ltwrapper_scriptname "$file"
21594642e01fSmrg	      wrapper=$func_ltwrapper_scriptname_result
21604642e01fSmrg	    else
21614642e01fSmrg	      func_stripname '' '.exe' "$file"
21624642e01fSmrg	      wrapper=$func_stripname_result
21634642e01fSmrg	    fi
21644642e01fSmrg	    ;;
21654642e01fSmrg	*)
21664642e01fSmrg	    wrapper=$file
21674642e01fSmrg	    ;;
21684642e01fSmrg	esac
21694642e01fSmrg	if func_ltwrapper_script_p "$wrapper"; then
21704642e01fSmrg	  notinst_deplibs=
21714642e01fSmrg	  relink_command=
217205b261ecSmrg
21734642e01fSmrg	  func_source "$wrapper"
21744642e01fSmrg
21754642e01fSmrg	  # Check the variables that should have been set.
21764642e01fSmrg	  test -z "$generated_by_libtool_version" && \
21774642e01fSmrg	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
21784642e01fSmrg
21794642e01fSmrg	  finalize=yes
21804642e01fSmrg	  for lib in $notinst_deplibs; do
21814642e01fSmrg	    # Check to see that each library is installed.
21824642e01fSmrg	    libdir=
21834642e01fSmrg	    if test -f "$lib"; then
21844642e01fSmrg	      func_source "$lib"
21854642e01fSmrg	    fi
21864642e01fSmrg	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
21874642e01fSmrg	    if test -n "$libdir" && test ! -f "$libfile"; then
21884642e01fSmrg	      func_warning "\`$lib' has not been installed in \`$libdir'"
21894642e01fSmrg	      finalize=no
21904642e01fSmrg	    fi
21914642e01fSmrg	  done
21924642e01fSmrg
21934642e01fSmrg	  relink_command=
21944642e01fSmrg	  func_source "$wrapper"
21954642e01fSmrg
21964642e01fSmrg	  outputname=
21974642e01fSmrg	  if test "$fast_install" = no && test -n "$relink_command"; then
21984642e01fSmrg	    $opt_dry_run || {
21994642e01fSmrg	      if test "$finalize" = yes; then
22004642e01fSmrg	        tmpdir=`func_mktempdir`
22014642e01fSmrg		func_basename "$file$stripped_ext"
22024642e01fSmrg		file="$func_basename_result"
22034642e01fSmrg	        outputname="$tmpdir/$file"
22044642e01fSmrg	        # Replace the output file specification.
22054642e01fSmrg	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
22064642e01fSmrg
22074642e01fSmrg	        $opt_silent || {
22084642e01fSmrg	          func_quote_for_expand "$relink_command"
22094642e01fSmrg		  eval "func_echo $func_quote_for_expand_result"
22104642e01fSmrg	        }
22114642e01fSmrg	        if eval "$relink_command"; then :
22124642e01fSmrg	          else
22134642e01fSmrg		  func_error "error: relink \`$file' with the above command before installing it"
22144642e01fSmrg		  $opt_dry_run || ${RM}r "$tmpdir"
22154642e01fSmrg		  continue
22164642e01fSmrg	        fi
22174642e01fSmrg	        file="$outputname"
22184642e01fSmrg	      else
22194642e01fSmrg	        func_warning "cannot relink \`$file'"
22204642e01fSmrg	      fi
22214642e01fSmrg	    }
222205b261ecSmrg	  else
22234642e01fSmrg	    # Install the binary that we compiled earlier.
22244642e01fSmrg	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
222505b261ecSmrg	  fi
22264642e01fSmrg	fi
222705b261ecSmrg
22284642e01fSmrg	# remove .exe since cygwin /usr/bin/install will append another
22294642e01fSmrg	# one anyway
22304642e01fSmrg	case $install_prog,$host in
22314642e01fSmrg	*/usr/bin/install*,*cygwin*)
22324642e01fSmrg	  case $file:$destfile in
22334642e01fSmrg	  *.exe:*.exe)
22344642e01fSmrg	    # this is ok
22354642e01fSmrg	    ;;
22364642e01fSmrg	  *.exe:*)
22374642e01fSmrg	    destfile=$destfile.exe
22384642e01fSmrg	    ;;
22394642e01fSmrg	  *:*.exe)
22404642e01fSmrg	    func_stripname '' '.exe' "$destfile"
22414642e01fSmrg	    destfile=$func_stripname_result
22424642e01fSmrg	    ;;
22434642e01fSmrg	  esac
224405b261ecSmrg	  ;;
224505b261ecSmrg	esac
22464642e01fSmrg	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
22474642e01fSmrg	$opt_dry_run || if test -n "$outputname"; then
22484642e01fSmrg	  ${RM}r "$tmpdir"
22494642e01fSmrg	fi
22504642e01fSmrg	;;
22514642e01fSmrg      esac
22524642e01fSmrg    done
225305b261ecSmrg
22544642e01fSmrg    for file in $staticlibs; do
22554642e01fSmrg      func_basename "$file"
22564642e01fSmrg      name="$func_basename_result"
22574642e01fSmrg
22584642e01fSmrg      # Set up the ranlib parameters.
22594642e01fSmrg      oldlib="$destdir/$name"
22604642e01fSmrg
22614642e01fSmrg      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
22624642e01fSmrg
22634642e01fSmrg      if test -n "$stripme" && test -n "$old_striplib"; then
22644642e01fSmrg	func_show_eval "$old_striplib $oldlib" 'exit $?'
22654642e01fSmrg      fi
22664642e01fSmrg
22674642e01fSmrg      # Do each command in the postinstall commands.
22684642e01fSmrg      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
22694642e01fSmrg    done
22704642e01fSmrg
22714642e01fSmrg    test -n "$future_libdirs" && \
22724642e01fSmrg      func_warning "remember to run \`$progname --finish$future_libdirs'"
22734642e01fSmrg
22744642e01fSmrg    if test -n "$current_libdirs"; then
22754642e01fSmrg      # Maybe just do a dry run.
22764642e01fSmrg      $opt_dry_run && current_libdirs=" -n$current_libdirs"
22774642e01fSmrg      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
22784642e01fSmrg    else
22794642e01fSmrg      exit $EXIT_SUCCESS
22804642e01fSmrg    fi
22814642e01fSmrg}
22824642e01fSmrg
22834642e01fSmrgtest "$mode" = install && func_mode_install ${1+"$@"}
22844642e01fSmrg
22854642e01fSmrg
22864642e01fSmrg# func_generate_dlsyms outputname originator pic_p
22874642e01fSmrg# Extract symbols from dlprefiles and create ${outputname}S.o with
22884642e01fSmrg# a dlpreopen symbol table.
22894642e01fSmrgfunc_generate_dlsyms ()
22904642e01fSmrg{
22914642e01fSmrg    $opt_debug
22924642e01fSmrg    my_outputname="$1"
22934642e01fSmrg    my_originator="$2"
22944642e01fSmrg    my_pic_p="${3-no}"
22954642e01fSmrg    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
22964642e01fSmrg    my_dlsyms=
22974642e01fSmrg
22984642e01fSmrg    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
22994642e01fSmrg      if test -n "$NM" && test -n "$global_symbol_pipe"; then
23004642e01fSmrg	my_dlsyms="${my_outputname}S.c"
23014642e01fSmrg      else
23024642e01fSmrg	func_error "not configured to extract global symbols from dlpreopened files"
23034642e01fSmrg      fi
23044642e01fSmrg    fi
23054642e01fSmrg
23064642e01fSmrg    if test -n "$my_dlsyms"; then
23074642e01fSmrg      case $my_dlsyms in
23084642e01fSmrg      "") ;;
23094642e01fSmrg      *.c)
23104642e01fSmrg	# Discover the nlist of each of the dlfiles.
23114642e01fSmrg	nlist="$output_objdir/${my_outputname}.nm"
23124642e01fSmrg
23134642e01fSmrg	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
23144642e01fSmrg
23154642e01fSmrg	# Parse the name list into a source file.
23164642e01fSmrg	func_verbose "creating $output_objdir/$my_dlsyms"
23174642e01fSmrg
23184642e01fSmrg	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
23194642e01fSmrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
23204642e01fSmrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
23214642e01fSmrg
23224642e01fSmrg#ifdef __cplusplus
23234642e01fSmrgextern \"C\" {
23244642e01fSmrg#endif
23254642e01fSmrg
23264642e01fSmrg/* External symbol declarations for the compiler. */\
23274642e01fSmrg"
23284642e01fSmrg
23294642e01fSmrg	if test "$dlself" = yes; then
23304642e01fSmrg	  func_verbose "generating symbol list for \`$output'"
23314642e01fSmrg
23324642e01fSmrg	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
23334642e01fSmrg
23344642e01fSmrg	  # Add our own program objects to the symbol list.
23354642e01fSmrg	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
23364642e01fSmrg	  for progfile in $progfiles; do
23374642e01fSmrg	    func_verbose "extracting global C symbols from \`$progfile'"
23384642e01fSmrg	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
23394642e01fSmrg	  done
23404642e01fSmrg
23414642e01fSmrg	  if test -n "$exclude_expsyms"; then
23424642e01fSmrg	    $opt_dry_run || {
23434642e01fSmrg	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
23444642e01fSmrg	      eval '$MV "$nlist"T "$nlist"'
23454642e01fSmrg	    }
234605b261ecSmrg	  fi
23474642e01fSmrg
23484642e01fSmrg	  if test -n "$export_symbols_regex"; then
23494642e01fSmrg	    $opt_dry_run || {
23504642e01fSmrg	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
23514642e01fSmrg	      eval '$MV "$nlist"T "$nlist"'
23524642e01fSmrg	    }
23534642e01fSmrg	  fi
23544642e01fSmrg
23554642e01fSmrg	  # Prepare the list of exported symbols
23564642e01fSmrg	  if test -z "$export_symbols"; then
23574642e01fSmrg	    export_symbols="$output_objdir/$outputname.exp"
23584642e01fSmrg	    $opt_dry_run || {
23594642e01fSmrg	      $RM $export_symbols
23604642e01fSmrg	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
23614642e01fSmrg	      case $host in
23624642e01fSmrg	      *cygwin* | *mingw* | *cegcc* )
23634642e01fSmrg                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
23644642e01fSmrg                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
23654642e01fSmrg	        ;;
23664642e01fSmrg	      esac
23674642e01fSmrg	    }
236805b261ecSmrg	  else
23694642e01fSmrg	    $opt_dry_run || {
23704642e01fSmrg	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
23714642e01fSmrg	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
23724642e01fSmrg	      eval '$MV "$nlist"T "$nlist"'
23734642e01fSmrg	      case $host in
23744642e01fSmrg	        *cygwin | *mingw* | *cegcc* )
23754642e01fSmrg	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
23764642e01fSmrg	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
23774642e01fSmrg	          ;;
23784642e01fSmrg	      esac
23794642e01fSmrg	    }
238005b261ecSmrg	  fi
23814642e01fSmrg	fi
238205b261ecSmrg
23834642e01fSmrg	for dlprefile in $dlprefiles; do
23844642e01fSmrg	  func_verbose "extracting global C symbols from \`$dlprefile'"
23854642e01fSmrg	  func_basename "$dlprefile"
23864642e01fSmrg	  name="$func_basename_result"
23874642e01fSmrg	  $opt_dry_run || {
23884642e01fSmrg	    eval '$ECHO ": $name " >> "$nlist"'
23894642e01fSmrg	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
23904642e01fSmrg	  }
23914642e01fSmrg	done
23924642e01fSmrg
23934642e01fSmrg	$opt_dry_run || {
23944642e01fSmrg	  # Make sure we have at least an empty file.
23954642e01fSmrg	  test -f "$nlist" || : > "$nlist"
23964642e01fSmrg
23974642e01fSmrg	  if test -n "$exclude_expsyms"; then
23984642e01fSmrg	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
23994642e01fSmrg	    $MV "$nlist"T "$nlist"
240005b261ecSmrg	  fi
24014642e01fSmrg
24024642e01fSmrg	  # Try sorting and uniquifying the output.
24034642e01fSmrg	  if $GREP -v "^: " < "$nlist" |
24044642e01fSmrg	      if sort -k 3 </dev/null >/dev/null 2>&1; then
24054642e01fSmrg		sort -k 3
24064642e01fSmrg	      else
24074642e01fSmrg		sort +2
24084642e01fSmrg	      fi |
24094642e01fSmrg	      uniq > "$nlist"S; then
24104642e01fSmrg	    :
241105b261ecSmrg	  else
24124642e01fSmrg	    $GREP -v "^: " < "$nlist" > "$nlist"S
241305b261ecSmrg	  fi
241405b261ecSmrg
24154642e01fSmrg	  if test -f "$nlist"S; then
24164642e01fSmrg	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
241705b261ecSmrg	  else
24184642e01fSmrg	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
241905b261ecSmrg	  fi
242005b261ecSmrg
24214642e01fSmrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
242205b261ecSmrg
24234642e01fSmrg/* The mapping between symbol names and symbols.  */
24244642e01fSmrgtypedef struct {
24254642e01fSmrg  const char *name;
24264642e01fSmrg  void *address;
24274642e01fSmrg} lt_dlsymlist;
24284642e01fSmrg"
24294642e01fSmrg	  case $host in
24304642e01fSmrg	  *cygwin* | *mingw* | *cegcc* )
24314642e01fSmrg	    $ECHO >> "$output_objdir/$my_dlsyms" "\
24324642e01fSmrg/* DATA imports from DLLs on WIN32 con't be const, because
24334642e01fSmrg   runtime relocations are performed -- see ld's documentation
24344642e01fSmrg   on pseudo-relocs.  */"
24354642e01fSmrg	    lt_dlsym_const= ;;
24364642e01fSmrg	  *osf5*)
24374642e01fSmrg	    echo >> "$output_objdir/$my_dlsyms" "\
24384642e01fSmrg/* This system does not cope well with relocations in const data */"
24394642e01fSmrg	    lt_dlsym_const= ;;
24404642e01fSmrg	  *)
24414642e01fSmrg	    lt_dlsym_const=const ;;
24424642e01fSmrg	  esac
244305b261ecSmrg
24444642e01fSmrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24454642e01fSmrgextern $lt_dlsym_const lt_dlsymlist
24464642e01fSmrglt_${my_prefix}_LTX_preloaded_symbols[];
24474642e01fSmrg$lt_dlsym_const lt_dlsymlist
24484642e01fSmrglt_${my_prefix}_LTX_preloaded_symbols[] =
24494642e01fSmrg{\
24504642e01fSmrg  { \"$my_originator\", (void *) 0 },"
245105b261ecSmrg
24524642e01fSmrg	  case $need_lib_prefix in
24534642e01fSmrg	  no)
24544642e01fSmrg	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
24554642e01fSmrg	    ;;
24564642e01fSmrg	  *)
24574642e01fSmrg	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
24584642e01fSmrg	    ;;
24594642e01fSmrg	  esac
24604642e01fSmrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24614642e01fSmrg  {0, (void *) 0}
24624642e01fSmrg};
246305b261ecSmrg
24644642e01fSmrg/* This works around a problem in FreeBSD linker */
24654642e01fSmrg#ifdef FREEBSD_WORKAROUND
24664642e01fSmrgstatic const void *lt_preloaded_setup() {
24674642e01fSmrg  return lt_${my_prefix}_LTX_preloaded_symbols;
24684642e01fSmrg}
24694642e01fSmrg#endif
24704642e01fSmrg
24714642e01fSmrg#ifdef __cplusplus
24724642e01fSmrg}
24734642e01fSmrg#endif\
24744642e01fSmrg"
24754642e01fSmrg	} # !$opt_dry_run
24764642e01fSmrg
24774642e01fSmrg	pic_flag_for_symtable=
24784642e01fSmrg	case "$compile_command " in
24794642e01fSmrg	*" -static "*) ;;
24804642e01fSmrg	*)
24814642e01fSmrg	  case $host in
24824642e01fSmrg	  # compiling the symbol table file with pic_flag works around
24834642e01fSmrg	  # a FreeBSD bug that causes programs to crash when -lm is
24844642e01fSmrg	  # linked before any other PIC object.  But we must not use
24854642e01fSmrg	  # pic_flag when linking with -static.  The problem exists in
24864642e01fSmrg	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
24874642e01fSmrg	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
24884642e01fSmrg	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
24894642e01fSmrg	  *-*-hpux*)
24904642e01fSmrg	    pic_flag_for_symtable=" $pic_flag"  ;;
24914642e01fSmrg	  *)
24924642e01fSmrg	    if test "X$my_pic_p" != Xno; then
24934642e01fSmrg	      pic_flag_for_symtable=" $pic_flag"
249405b261ecSmrg	    fi
24954642e01fSmrg	    ;;
24964642e01fSmrg	  esac
24974642e01fSmrg	  ;;
24984642e01fSmrg	esac
24994642e01fSmrg	symtab_cflags=
25004642e01fSmrg	for arg in $LTCFLAGS; do
25014642e01fSmrg	  case $arg in
25024642e01fSmrg	  -pie | -fpie | -fPIE) ;;
25034642e01fSmrg	  *) symtab_cflags="$symtab_cflags $arg" ;;
25044642e01fSmrg	  esac
25054642e01fSmrg	done
250605b261ecSmrg
25074642e01fSmrg	# Now compile the dynamic symbol file.
25084642e01fSmrg	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
250905b261ecSmrg
25104642e01fSmrg	# Clean up the generated files.
25114642e01fSmrg	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
251205b261ecSmrg
25134642e01fSmrg	# Transform the symbol file into the correct name.
25144642e01fSmrg	symfileobj="$output_objdir/${my_outputname}S.$objext"
25154642e01fSmrg	case $host in
25164642e01fSmrg	*cygwin* | *mingw* | *cegcc* )
25174642e01fSmrg	  if test -f "$output_objdir/$my_outputname.def"; then
25184642e01fSmrg	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
25194642e01fSmrg	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
25204642e01fSmrg	  else
25214642e01fSmrg	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25224642e01fSmrg	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
252305b261ecSmrg	  fi
25244642e01fSmrg	  ;;
25254642e01fSmrg	*)
25264642e01fSmrg	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25274642e01fSmrg	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25284642e01fSmrg	  ;;
25294642e01fSmrg	esac
25304642e01fSmrg	;;
25314642e01fSmrg      *)
25324642e01fSmrg	func_fatal_error "unknown suffix for \`$my_dlsyms'"
25334642e01fSmrg	;;
25344642e01fSmrg      esac
25354642e01fSmrg    else
25364642e01fSmrg      # We keep going just in case the user didn't refer to
25374642e01fSmrg      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
25384642e01fSmrg      # really was required.
253905b261ecSmrg
25404642e01fSmrg      # Nullify the symbol file.
25414642e01fSmrg      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
25424642e01fSmrg      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
25434642e01fSmrg    fi
25444642e01fSmrg}
254505b261ecSmrg
25464642e01fSmrg# func_win32_libid arg
25474642e01fSmrg# return the library type of file 'arg'
25484642e01fSmrg#
25494642e01fSmrg# Need a lot of goo to handle *both* DLLs and import libs
25504642e01fSmrg# Has to be a shell function in order to 'eat' the argument
25514642e01fSmrg# that is supplied when $file_magic_command is called.
25524642e01fSmrgfunc_win32_libid ()
25534642e01fSmrg{
25544642e01fSmrg  $opt_debug
25554642e01fSmrg  win32_libid_type="unknown"
25564642e01fSmrg  win32_fileres=`file -L $1 2>/dev/null`
25574642e01fSmrg  case $win32_fileres in
25584642e01fSmrg  *ar\ archive\ import\ library*) # definitely import
25594642e01fSmrg    win32_libid_type="x86 archive import"
25604642e01fSmrg    ;;
25614642e01fSmrg  *ar\ archive*) # could be an import, or static
25624642e01fSmrg    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
25634642e01fSmrg       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
25644642e01fSmrg      win32_nmres=`eval $NM -f posix -A $1 |
25654642e01fSmrg	$SED -n -e '
25664642e01fSmrg	    1,100{
25674642e01fSmrg		/ I /{
25684642e01fSmrg		    s,.*,import,
25694642e01fSmrg		    p
25704642e01fSmrg		    q
25714642e01fSmrg		}
25724642e01fSmrg	    }'`
25734642e01fSmrg      case $win32_nmres in
25744642e01fSmrg      import*)  win32_libid_type="x86 archive import";;
25754642e01fSmrg      *)        win32_libid_type="x86 archive static";;
25764642e01fSmrg      esac
25774642e01fSmrg    fi
25784642e01fSmrg    ;;
25794642e01fSmrg  *DLL*)
25804642e01fSmrg    win32_libid_type="x86 DLL"
25814642e01fSmrg    ;;
25824642e01fSmrg  *executable*) # but shell scripts are "executable" too...
25834642e01fSmrg    case $win32_fileres in
25844642e01fSmrg    *MS\ Windows\ PE\ Intel*)
25854642e01fSmrg      win32_libid_type="x86 DLL"
25864642e01fSmrg      ;;
25874642e01fSmrg    esac
25884642e01fSmrg    ;;
25894642e01fSmrg  esac
25904642e01fSmrg  $ECHO "$win32_libid_type"
25914642e01fSmrg}
259205b261ecSmrg
259305b261ecSmrg
259405b261ecSmrg
25954642e01fSmrg# func_extract_an_archive dir oldlib
25964642e01fSmrgfunc_extract_an_archive ()
25974642e01fSmrg{
25984642e01fSmrg    $opt_debug
25994642e01fSmrg    f_ex_an_ar_dir="$1"; shift
26004642e01fSmrg    f_ex_an_ar_oldlib="$1"
26014642e01fSmrg    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
26024642e01fSmrg    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
26034642e01fSmrg     :
26044642e01fSmrg    else
26054642e01fSmrg      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
26064642e01fSmrg    fi
26074642e01fSmrg}
260805b261ecSmrg
260905b261ecSmrg
26104642e01fSmrg# func_extract_archives gentop oldlib ...
26114642e01fSmrgfunc_extract_archives ()
26124642e01fSmrg{
26134642e01fSmrg    $opt_debug
26144642e01fSmrg    my_gentop="$1"; shift
26154642e01fSmrg    my_oldlibs=${1+"$@"}
26164642e01fSmrg    my_oldobjs=""
26174642e01fSmrg    my_xlib=""
26184642e01fSmrg    my_xabs=""
26194642e01fSmrg    my_xdir=""
262005b261ecSmrg
26214642e01fSmrg    for my_xlib in $my_oldlibs; do
26224642e01fSmrg      # Extract the objects.
26234642e01fSmrg      case $my_xlib in
26244642e01fSmrg	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
26254642e01fSmrg	*) my_xabs=`pwd`"/$my_xlib" ;;
26264642e01fSmrg      esac
26274642e01fSmrg      func_basename "$my_xlib"
26284642e01fSmrg      my_xlib="$func_basename_result"
26294642e01fSmrg      my_xlib_u=$my_xlib
26304642e01fSmrg      while :; do
26314642e01fSmrg        case " $extracted_archives " in
26324642e01fSmrg	*" $my_xlib_u "*)
26334642e01fSmrg	  func_arith $extracted_serial + 1
26344642e01fSmrg	  extracted_serial=$func_arith_result
26354642e01fSmrg	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
26364642e01fSmrg	*) break ;;
26374642e01fSmrg	esac
26384642e01fSmrg      done
26394642e01fSmrg      extracted_archives="$extracted_archives $my_xlib_u"
26404642e01fSmrg      my_xdir="$my_gentop/$my_xlib_u"
264105b261ecSmrg
26424642e01fSmrg      func_mkdir_p "$my_xdir"
264305b261ecSmrg
26444642e01fSmrg      case $host in
26454642e01fSmrg      *-darwin*)
26464642e01fSmrg	func_verbose "Extracting $my_xabs"
26474642e01fSmrg	# Do not bother doing anything if just a dry run
26484642e01fSmrg	$opt_dry_run || {
26494642e01fSmrg	  darwin_orig_dir=`pwd`
26504642e01fSmrg	  cd $my_xdir || exit $?
26514642e01fSmrg	  darwin_archive=$my_xabs
26524642e01fSmrg	  darwin_curdir=`pwd`
26534642e01fSmrg	  darwin_base_archive=`basename "$darwin_archive"`
26544642e01fSmrg	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
26554642e01fSmrg	  if test -n "$darwin_arches"; then
26564642e01fSmrg	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
26574642e01fSmrg	    darwin_arch=
26584642e01fSmrg	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
26594642e01fSmrg	    for darwin_arch in  $darwin_arches ; do
26604642e01fSmrg	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
26614642e01fSmrg	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
26624642e01fSmrg	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
26634642e01fSmrg	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
26644642e01fSmrg	      cd "$darwin_curdir"
26654642e01fSmrg	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
26664642e01fSmrg	    done # $darwin_arches
26674642e01fSmrg            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
26684642e01fSmrg	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
26694642e01fSmrg	    darwin_file=
26704642e01fSmrg	    darwin_files=
26714642e01fSmrg	    for darwin_file in $darwin_filelist; do
26724642e01fSmrg	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
26734642e01fSmrg	      $LIPO -create -output "$darwin_file" $darwin_files
26744642e01fSmrg	    done # $darwin_filelist
26754642e01fSmrg	    $RM -rf unfat-$$
26764642e01fSmrg	    cd "$darwin_orig_dir"
267705b261ecSmrg	  else
26784642e01fSmrg	    cd $darwin_orig_dir
26794642e01fSmrg	    func_extract_an_archive "$my_xdir" "$my_xabs"
26804642e01fSmrg	  fi # $darwin_arches
26814642e01fSmrg	} # !$opt_dry_run
26824642e01fSmrg	;;
26834642e01fSmrg      *)
26844642e01fSmrg        func_extract_an_archive "$my_xdir" "$my_xabs"
26854642e01fSmrg	;;
26864642e01fSmrg      esac
26874642e01fSmrg      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
26884642e01fSmrg    done
268905b261ecSmrg
26904642e01fSmrg    func_extract_archives_result="$my_oldobjs"
26914642e01fSmrg}
269205b261ecSmrg
269305b261ecSmrg
269405b261ecSmrg
26954642e01fSmrg# func_emit_wrapper_part1 [arg=no]
26964642e01fSmrg#
26974642e01fSmrg# Emit the first part of a libtool wrapper script on stdout.
26984642e01fSmrg# For more information, see the description associated with
26994642e01fSmrg# func_emit_wrapper(), below.
27004642e01fSmrgfunc_emit_wrapper_part1 ()
27014642e01fSmrg{
27024642e01fSmrg	func_emit_wrapper_part1_arg1=no
27034642e01fSmrg	if test -n "$1" ; then
27044642e01fSmrg	  func_emit_wrapper_part1_arg1=$1
270505b261ecSmrg	fi
270605b261ecSmrg
27074642e01fSmrg	$ECHO "\
27084642e01fSmrg#! $SHELL
270905b261ecSmrg
27104642e01fSmrg# $output - temporary wrapper script for $objdir/$outputname
27114642e01fSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
27124642e01fSmrg#
27134642e01fSmrg# The $output program cannot be directly executed until all the libtool
27144642e01fSmrg# libraries that it depends on are installed.
27154642e01fSmrg#
27164642e01fSmrg# This wrapper script should never be moved out of the build directory.
27174642e01fSmrg# If it is, it will not operate correctly.
271805b261ecSmrg
27194642e01fSmrg# Sed substitution that helps us do robust quoting.  It backslashifies
27204642e01fSmrg# metacharacters that are still active within double-quoted strings.
27214642e01fSmrgXsed='${SED} -e 1s/^X//'
27224642e01fSmrgsed_quote_subst='$sed_quote_subst'
272305b261ecSmrg
27244642e01fSmrg# Be Bourne compatible
27254642e01fSmrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
27264642e01fSmrg  emulate sh
27274642e01fSmrg  NULLCMD=:
27284642e01fSmrg  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
27294642e01fSmrg  # is contrary to our usage.  Disable this feature.
27304642e01fSmrg  alias -g '\${1+\"\$@\"}'='\"\$@\"'
27314642e01fSmrg  setopt NO_GLOB_SUBST
27324642e01fSmrgelse
27334642e01fSmrg  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
27344642e01fSmrgfi
27354642e01fSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
27364642e01fSmrgDUALCASE=1; export DUALCASE # for MKS sh
273705b261ecSmrg
27384642e01fSmrg# The HP-UX ksh and POSIX shell print the target directory to stdout
27394642e01fSmrg# if CDPATH is set.
27404642e01fSmrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
274105b261ecSmrg
27424642e01fSmrgrelink_command=\"$relink_command\"
274305b261ecSmrg
27444642e01fSmrg# This environment variable determines our operation mode.
27454642e01fSmrgif test \"\$libtool_install_magic\" = \"$magic\"; then
27464642e01fSmrg  # install mode needs the following variables:
27474642e01fSmrg  generated_by_libtool_version='$macro_version'
27484642e01fSmrg  notinst_deplibs='$notinst_deplibs'
27494642e01fSmrgelse
27504642e01fSmrg  # When we are sourced in execute mode, \$file and \$ECHO are already set.
27514642e01fSmrg  if test \"\$libtool_execute_magic\" != \"$magic\"; then
27524642e01fSmrg    ECHO=\"$qecho\"
27534642e01fSmrg    file=\"\$0\"
27544642e01fSmrg    # Make sure echo works.
27554642e01fSmrg    if test \"X\$1\" = X--no-reexec; then
27564642e01fSmrg      # Discard the --no-reexec flag, and continue.
27574642e01fSmrg      shift
27584642e01fSmrg    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
27594642e01fSmrg      # Yippee, \$ECHO works!
27604642e01fSmrg      :
27614642e01fSmrg    else
27624642e01fSmrg      # Restart under the correct shell, and then maybe \$ECHO will work.
27634642e01fSmrg      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
27644642e01fSmrg    fi
27654642e01fSmrg  fi\
27664642e01fSmrg"
27674642e01fSmrg	$ECHO "\
276805b261ecSmrg
27694642e01fSmrg  # Find the directory that this script lives in.
27704642e01fSmrg  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
27714642e01fSmrg  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
277205b261ecSmrg
27734642e01fSmrg  # Follow symbolic links until we get to the real thisdir.
27744642e01fSmrg  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
27754642e01fSmrg  while test -n \"\$file\"; do
27764642e01fSmrg    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
277705b261ecSmrg
27784642e01fSmrg    # If there was a directory component, then change thisdir.
27794642e01fSmrg    if test \"x\$destdir\" != \"x\$file\"; then
27804642e01fSmrg      case \"\$destdir\" in
27814642e01fSmrg      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
27824642e01fSmrg      *) thisdir=\"\$thisdir/\$destdir\" ;;
278305b261ecSmrg      esac
27844642e01fSmrg    fi
278505b261ecSmrg
27864642e01fSmrg    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
27874642e01fSmrg    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
27884642e01fSmrg  done
27894642e01fSmrg"
27904642e01fSmrg}
27914642e01fSmrg# end: func_emit_wrapper_part1
27924642e01fSmrg
27934642e01fSmrg# func_emit_wrapper_part2 [arg=no]
27944642e01fSmrg#
27954642e01fSmrg# Emit the second part of a libtool wrapper script on stdout.
27964642e01fSmrg# For more information, see the description associated with
27974642e01fSmrg# func_emit_wrapper(), below.
27984642e01fSmrgfunc_emit_wrapper_part2 ()
27994642e01fSmrg{
28004642e01fSmrg	func_emit_wrapper_part2_arg1=no
28014642e01fSmrg	if test -n "$1" ; then
28024642e01fSmrg	  func_emit_wrapper_part2_arg1=$1
280305b261ecSmrg	fi
280405b261ecSmrg
28054642e01fSmrg	$ECHO "\
280605b261ecSmrg
28074642e01fSmrg  # Usually 'no', except on cygwin/mingw when embedded into
28084642e01fSmrg  # the cwrapper.
28094642e01fSmrg  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
28104642e01fSmrg  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
28114642e01fSmrg    # special case for '.'
28124642e01fSmrg    if test \"\$thisdir\" = \".\"; then
28134642e01fSmrg      thisdir=\`pwd\`
28144642e01fSmrg    fi
28154642e01fSmrg    # remove .libs from thisdir
28164642e01fSmrg    case \"\$thisdir\" in
28174642e01fSmrg    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
28184642e01fSmrg    $objdir )   thisdir=. ;;
28194642e01fSmrg    esac
28204642e01fSmrg  fi
28214642e01fSmrg
28224642e01fSmrg  # Try to get the absolute directory name.
28234642e01fSmrg  absdir=\`cd \"\$thisdir\" && pwd\`
28244642e01fSmrg  test -n \"\$absdir\" && thisdir=\"\$absdir\"
28254642e01fSmrg"
28264642e01fSmrg
28274642e01fSmrg	if test "$fast_install" = yes; then
28284642e01fSmrg	  $ECHO "\
28294642e01fSmrg  program=lt-'$outputname'$exeext
28304642e01fSmrg  progdir=\"\$thisdir/$objdir\"
28314642e01fSmrg
28324642e01fSmrg  if test ! -f \"\$progdir/\$program\" ||
28334642e01fSmrg     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
28344642e01fSmrg       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
28354642e01fSmrg
28364642e01fSmrg    file=\"\$\$-\$program\"
28374642e01fSmrg
28384642e01fSmrg    if test ! -d \"\$progdir\"; then
28394642e01fSmrg      $MKDIR \"\$progdir\"
28404642e01fSmrg    else
28414642e01fSmrg      $RM \"\$progdir/\$file\"
28424642e01fSmrg    fi"
28434642e01fSmrg
28444642e01fSmrg	  $ECHO "\
28454642e01fSmrg
28464642e01fSmrg    # relink executable if necessary
28474642e01fSmrg    if test -n \"\$relink_command\"; then
28484642e01fSmrg      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
28494642e01fSmrg      else
28504642e01fSmrg	$ECHO \"\$relink_command_output\" >&2
28514642e01fSmrg	$RM \"\$progdir/\$file\"
28524642e01fSmrg	exit 1
285305b261ecSmrg      fi
28544642e01fSmrg    fi
285505b261ecSmrg
28564642e01fSmrg    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
28574642e01fSmrg    { $RM \"\$progdir/\$program\";
28584642e01fSmrg      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
28594642e01fSmrg    $RM \"\$progdir/\$file\"
28604642e01fSmrg  fi"
28614642e01fSmrg	else
28624642e01fSmrg	  $ECHO "\
28634642e01fSmrg  program='$outputname'
28644642e01fSmrg  progdir=\"\$thisdir/$objdir\"
28654642e01fSmrg"
286605b261ecSmrg	fi
286705b261ecSmrg
28684642e01fSmrg	$ECHO "\
286905b261ecSmrg
28704642e01fSmrg  if test -f \"\$progdir/\$program\"; then"
287105b261ecSmrg
28724642e01fSmrg	# Export our shlibpath_var if we have one.
28734642e01fSmrg	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
28744642e01fSmrg	  $ECHO "\
28754642e01fSmrg    # Add our own library path to $shlibpath_var
28764642e01fSmrg    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
287705b261ecSmrg
28784642e01fSmrg    # Some systems cannot cope with colon-terminated $shlibpath_var
28794642e01fSmrg    # The second colon is a workaround for a bug in BeOS R4 sed
28804642e01fSmrg    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
28814642e01fSmrg
28824642e01fSmrg    export $shlibpath_var
28834642e01fSmrg"
288405b261ecSmrg	fi
288505b261ecSmrg
28864642e01fSmrg	# fixup the dll searchpath if we need to.
28874642e01fSmrg	if test -n "$dllsearchpath"; then
28884642e01fSmrg	  $ECHO "\
28894642e01fSmrg    # Add the dll search path components to the executable PATH
28904642e01fSmrg    PATH=$dllsearchpath:\$PATH
28914642e01fSmrg"
28924642e01fSmrg	fi
289305b261ecSmrg
28944642e01fSmrg	$ECHO "\
28954642e01fSmrg    if test \"\$libtool_execute_magic\" != \"$magic\"; then
28964642e01fSmrg      # Run the actual program with our arguments.
28974642e01fSmrg"
28984642e01fSmrg	case $host in
28994642e01fSmrg	# Backslashes separate directories on plain windows
29004642e01fSmrg	*-*-mingw | *-*-os2* | *-cegcc*)
29014642e01fSmrg	  $ECHO "\
29024642e01fSmrg      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
29034642e01fSmrg"
290405b261ecSmrg	  ;;
290505b261ecSmrg
290605b261ecSmrg	*)
29074642e01fSmrg	  $ECHO "\
29084642e01fSmrg      exec \"\$progdir/\$program\" \${1+\"\$@\"}
29094642e01fSmrg"
291005b261ecSmrg	  ;;
291105b261ecSmrg	esac
29124642e01fSmrg	$ECHO "\
29134642e01fSmrg      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
29144642e01fSmrg      exit 1
29154642e01fSmrg    fi
29164642e01fSmrg  else
29174642e01fSmrg    # The program doesn't exist.
29184642e01fSmrg    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
29194642e01fSmrg    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
29204642e01fSmrg    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
29214642e01fSmrg    exit 1
29224642e01fSmrg  fi
29234642e01fSmrgfi\
29244642e01fSmrg"
29254642e01fSmrg}
29264642e01fSmrg# end: func_emit_wrapper_part2
292705b261ecSmrg
292805b261ecSmrg
29294642e01fSmrg# func_emit_wrapper [arg=no]
29304642e01fSmrg#
29314642e01fSmrg# Emit a libtool wrapper script on stdout.
29324642e01fSmrg# Don't directly open a file because we may want to
29334642e01fSmrg# incorporate the script contents within a cygwin/mingw
29344642e01fSmrg# wrapper executable.  Must ONLY be called from within
29354642e01fSmrg# func_mode_link because it depends on a number of variables
29364642e01fSmrg# set therein.
29374642e01fSmrg#
29384642e01fSmrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
29394642e01fSmrg# variable will take.  If 'yes', then the emitted script
29404642e01fSmrg# will assume that the directory in which it is stored is
29414642e01fSmrg# the $objdir directory.  This is a cygwin/mingw-specific
29424642e01fSmrg# behavior.
29434642e01fSmrgfunc_emit_wrapper ()
29444642e01fSmrg{
29454642e01fSmrg	func_emit_wrapper_arg1=no
29464642e01fSmrg	if test -n "$1" ; then
29474642e01fSmrg	  func_emit_wrapper_arg1=$1
294805b261ecSmrg	fi
294905b261ecSmrg
29504642e01fSmrg	# split this up so that func_emit_cwrapperexe_src
29514642e01fSmrg	# can call each part independently.
29524642e01fSmrg	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
29534642e01fSmrg	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
29544642e01fSmrg}
295505b261ecSmrg
295605b261ecSmrg
29574642e01fSmrg# func_to_host_path arg
29584642e01fSmrg#
29594642e01fSmrg# Convert paths to host format when used with build tools.
29604642e01fSmrg# Intended for use with "native" mingw (where libtool itself
29614642e01fSmrg# is running under the msys shell), or in the following cross-
29624642e01fSmrg# build environments:
29634642e01fSmrg#    $build          $host
29644642e01fSmrg#    mingw (msys)    mingw  [e.g. native]
29654642e01fSmrg#    cygwin          mingw
29664642e01fSmrg#    *nix + wine     mingw
29674642e01fSmrg# where wine is equipped with the `winepath' executable.
29684642e01fSmrg# In the native mingw case, the (msys) shell automatically
29694642e01fSmrg# converts paths for any non-msys applications it launches,
29704642e01fSmrg# but that facility isn't available from inside the cwrapper.
29714642e01fSmrg# Similar accommodations are necessary for $host mingw and
29724642e01fSmrg# $build cygwin.  Calling this function does no harm for other
29734642e01fSmrg# $host/$build combinations not listed above.
29744642e01fSmrg#
29754642e01fSmrg# ARG is the path (on $build) that should be converted to
29764642e01fSmrg# the proper representation for $host. The result is stored
29774642e01fSmrg# in $func_to_host_path_result.
29784642e01fSmrgfunc_to_host_path ()
29794642e01fSmrg{
29804642e01fSmrg  func_to_host_path_result="$1"
29814642e01fSmrg  if test -n "$1" ; then
29824642e01fSmrg    case $host in
29834642e01fSmrg      *mingw* )
29844642e01fSmrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
29854642e01fSmrg        case $build in
29864642e01fSmrg          *mingw* ) # actually, msys
29874642e01fSmrg            # awkward: cmd appends spaces to result
29884642e01fSmrg            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
29894642e01fSmrg            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
29904642e01fSmrg              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
29914642e01fSmrg            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
29924642e01fSmrg              $SED -e "$lt_sed_naive_backslashify"`
29934642e01fSmrg            ;;
29944642e01fSmrg          *cygwin* )
29954642e01fSmrg            func_to_host_path_tmp1=`cygpath -w "$1"`
29964642e01fSmrg            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
29974642e01fSmrg              $SED -e "$lt_sed_naive_backslashify"`
29984642e01fSmrg            ;;
29994642e01fSmrg          * )
30004642e01fSmrg            # Unfortunately, winepath does not exit with a non-zero
30014642e01fSmrg            # error code, so we are forced to check the contents of
30024642e01fSmrg            # stdout. On the other hand, if the command is not
30034642e01fSmrg            # found, the shell will set an exit code of 127 and print
30044642e01fSmrg            # *an error message* to stdout. So we must check for both
30054642e01fSmrg            # error code of zero AND non-empty stdout, which explains
30064642e01fSmrg            # the odd construction:
30074642e01fSmrg            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
30084642e01fSmrg            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
30094642e01fSmrg              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
30104642e01fSmrg                $SED -e "$lt_sed_naive_backslashify"`
30114642e01fSmrg            else
30124642e01fSmrg              # Allow warning below.
30134642e01fSmrg              func_to_host_path_result=""
30144642e01fSmrg            fi
30154642e01fSmrg            ;;
30164642e01fSmrg        esac
30174642e01fSmrg        if test -z "$func_to_host_path_result" ; then
30184642e01fSmrg          func_error "Could not determine host path corresponding to"
30194642e01fSmrg          func_error "  '$1'"
30204642e01fSmrg          func_error "Continuing, but uninstalled executables may not work."
30214642e01fSmrg          # Fallback:
30224642e01fSmrg          func_to_host_path_result="$1"
30234642e01fSmrg        fi
30244642e01fSmrg        ;;
30254642e01fSmrg    esac
30264642e01fSmrg  fi
30274642e01fSmrg}
30284642e01fSmrg# end: func_to_host_path
302905b261ecSmrg
30304642e01fSmrg# func_to_host_pathlist arg
30314642e01fSmrg#
30324642e01fSmrg# Convert pathlists to host format when used with build tools.
30334642e01fSmrg# See func_to_host_path(), above. This function supports the
30344642e01fSmrg# following $build/$host combinations (but does no harm for
30354642e01fSmrg# combinations not listed here):
30364642e01fSmrg#    $build          $host
30374642e01fSmrg#    mingw (msys)    mingw  [e.g. native]
30384642e01fSmrg#    cygwin          mingw
30394642e01fSmrg#    *nix + wine     mingw
30404642e01fSmrg#
30414642e01fSmrg# Path separators are also converted from $build format to
30424642e01fSmrg# $host format. If ARG begins or ends with a path separator
30434642e01fSmrg# character, it is preserved (but converted to $host format)
30444642e01fSmrg# on output.
30454642e01fSmrg#
30464642e01fSmrg# ARG is a pathlist (on $build) that should be converted to
30474642e01fSmrg# the proper representation on $host. The result is stored
30484642e01fSmrg# in $func_to_host_pathlist_result.
30494642e01fSmrgfunc_to_host_pathlist ()
30504642e01fSmrg{
30514642e01fSmrg  func_to_host_pathlist_result="$1"
30524642e01fSmrg  if test -n "$1" ; then
30534642e01fSmrg    case $host in
30544642e01fSmrg      *mingw* )
30554642e01fSmrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
30564642e01fSmrg        # Remove leading and trailing path separator characters from
30574642e01fSmrg        # ARG. msys behavior is inconsistent here, cygpath turns them
30584642e01fSmrg        # into '.;' and ';.', and winepath ignores them completely.
30594642e01fSmrg        func_to_host_pathlist_tmp2="$1"
30604642e01fSmrg        # Once set for this call, this variable should not be
30614642e01fSmrg        # reassigned. It is used in tha fallback case.
30624642e01fSmrg        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
30634642e01fSmrg          $SED -e 's|^:*||' -e 's|:*$||'`
30644642e01fSmrg        case $build in
30654642e01fSmrg          *mingw* ) # Actually, msys.
30664642e01fSmrg            # Awkward: cmd appends spaces to result.
30674642e01fSmrg            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
30684642e01fSmrg            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
30694642e01fSmrg              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
30704642e01fSmrg            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
30714642e01fSmrg              $SED -e "$lt_sed_naive_backslashify"`
30724642e01fSmrg            ;;
30734642e01fSmrg          *cygwin* )
30744642e01fSmrg            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
30754642e01fSmrg            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
30764642e01fSmrg              $SED -e "$lt_sed_naive_backslashify"`
30774642e01fSmrg            ;;
30784642e01fSmrg          * )
30794642e01fSmrg            # unfortunately, winepath doesn't convert pathlists
30804642e01fSmrg            func_to_host_pathlist_result=""
30814642e01fSmrg            func_to_host_pathlist_oldIFS=$IFS
30824642e01fSmrg            IFS=:
30834642e01fSmrg            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
30844642e01fSmrg              IFS=$func_to_host_pathlist_oldIFS
30854642e01fSmrg              if test -n "$func_to_host_pathlist_f" ; then
30864642e01fSmrg                func_to_host_path "$func_to_host_pathlist_f"
30874642e01fSmrg                if test -n "$func_to_host_path_result" ; then
30884642e01fSmrg                  if test -z "$func_to_host_pathlist_result" ; then
30894642e01fSmrg                    func_to_host_pathlist_result="$func_to_host_path_result"
30904642e01fSmrg                  else
30914642e01fSmrg                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
30924642e01fSmrg                  fi
30934642e01fSmrg                fi
30944642e01fSmrg              fi
30954642e01fSmrg              IFS=:
30964642e01fSmrg            done
30974642e01fSmrg            IFS=$func_to_host_pathlist_oldIFS
30984642e01fSmrg            ;;
30994642e01fSmrg        esac
31004642e01fSmrg        if test -z "$func_to_host_pathlist_result" ; then
31014642e01fSmrg          func_error "Could not determine the host path(s) corresponding to"
31024642e01fSmrg          func_error "  '$1'"
31034642e01fSmrg          func_error "Continuing, but uninstalled executables may not work."
31044642e01fSmrg          # Fallback. This may break if $1 contains DOS-style drive
31054642e01fSmrg          # specifications. The fix is not to complicate the expression
31064642e01fSmrg          # below, but for the user to provide a working wine installation
31074642e01fSmrg          # with winepath so that path translation in the cross-to-mingw
31084642e01fSmrg          # case works properly.
31094642e01fSmrg          lt_replace_pathsep_nix_to_dos="s|:|;|g"
31104642e01fSmrg          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
31114642e01fSmrg            $SED -e "$lt_replace_pathsep_nix_to_dos"`
31124642e01fSmrg        fi
31134642e01fSmrg        # Now, add the leading and trailing path separators back
31144642e01fSmrg        case "$1" in
31154642e01fSmrg          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
31164642e01fSmrg            ;;
31174642e01fSmrg        esac
31184642e01fSmrg        case "$1" in
31194642e01fSmrg          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
31204642e01fSmrg            ;;
31214642e01fSmrg        esac
31224642e01fSmrg        ;;
31234642e01fSmrg    esac
31244642e01fSmrg  fi
31254642e01fSmrg}
31264642e01fSmrg# end: func_to_host_pathlist
312705b261ecSmrg
31284642e01fSmrg# func_emit_cwrapperexe_src
31294642e01fSmrg# emit the source code for a wrapper executable on stdout
31304642e01fSmrg# Must ONLY be called from within func_mode_link because
31314642e01fSmrg# it depends on a number of variable set therein.
31324642e01fSmrgfunc_emit_cwrapperexe_src ()
31334642e01fSmrg{
31344642e01fSmrg	cat <<EOF
313505b261ecSmrg
31364642e01fSmrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
31374642e01fSmrg   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
313805b261ecSmrg
31394642e01fSmrg   The $output program cannot be directly executed until all the libtool
31404642e01fSmrg   libraries that it depends on are installed.
314105b261ecSmrg
31424642e01fSmrg   This wrapper executable should never be moved out of the build directory.
31434642e01fSmrg   If it is, it will not operate correctly.
314405b261ecSmrg
31454642e01fSmrg   Currently, it simply execs the wrapper *script* "$SHELL $output",
31464642e01fSmrg   but could eventually absorb all of the scripts functionality and
31474642e01fSmrg   exec $objdir/$outputname directly.
31484642e01fSmrg*/
31494642e01fSmrgEOF
31504642e01fSmrg	    cat <<"EOF"
31514642e01fSmrg#include <stdio.h>
31524642e01fSmrg#include <stdlib.h>
31534642e01fSmrg#ifdef _MSC_VER
31544642e01fSmrg# include <direct.h>
31554642e01fSmrg# include <process.h>
31564642e01fSmrg# include <io.h>
31574642e01fSmrg# define setmode _setmode
31584642e01fSmrg#else
31594642e01fSmrg# include <unistd.h>
31604642e01fSmrg# include <stdint.h>
31614642e01fSmrg# ifdef __CYGWIN__
31624642e01fSmrg#  include <io.h>
31634642e01fSmrg#  define HAVE_SETENV
31644642e01fSmrg#  ifdef __STRICT_ANSI__
31654642e01fSmrgchar *realpath (const char *, char *);
31664642e01fSmrgint putenv (char *);
31674642e01fSmrgint setenv (const char *, const char *, int);
31684642e01fSmrg#  endif
31694642e01fSmrg# endif
31704642e01fSmrg#endif
31714642e01fSmrg#include <malloc.h>
31724642e01fSmrg#include <stdarg.h>
31734642e01fSmrg#include <assert.h>
31744642e01fSmrg#include <string.h>
31754642e01fSmrg#include <ctype.h>
31764642e01fSmrg#include <errno.h>
31774642e01fSmrg#include <fcntl.h>
31784642e01fSmrg#include <sys/stat.h>
317905b261ecSmrg
31804642e01fSmrg#if defined(PATH_MAX)
31814642e01fSmrg# define LT_PATHMAX PATH_MAX
31824642e01fSmrg#elif defined(MAXPATHLEN)
31834642e01fSmrg# define LT_PATHMAX MAXPATHLEN
31844642e01fSmrg#else
31854642e01fSmrg# define LT_PATHMAX 1024
31864642e01fSmrg#endif
318705b261ecSmrg
31884642e01fSmrg#ifndef S_IXOTH
31894642e01fSmrg# define S_IXOTH 0
31904642e01fSmrg#endif
31914642e01fSmrg#ifndef S_IXGRP
31924642e01fSmrg# define S_IXGRP 0
31934642e01fSmrg#endif
319405b261ecSmrg
31954642e01fSmrg#ifdef _MSC_VER
31964642e01fSmrg# define S_IXUSR _S_IEXEC
31974642e01fSmrg# define stat _stat
31984642e01fSmrg# ifndef _INTPTR_T_DEFINED
31994642e01fSmrg#  define intptr_t int
32004642e01fSmrg# endif
32014642e01fSmrg#endif
320205b261ecSmrg
32034642e01fSmrg#ifndef DIR_SEPARATOR
32044642e01fSmrg# define DIR_SEPARATOR '/'
32054642e01fSmrg# define PATH_SEPARATOR ':'
32064642e01fSmrg#endif
320705b261ecSmrg
32084642e01fSmrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
32094642e01fSmrg  defined (__OS2__)
32104642e01fSmrg# define HAVE_DOS_BASED_FILE_SYSTEM
32114642e01fSmrg# define FOPEN_WB "wb"
32124642e01fSmrg# ifndef DIR_SEPARATOR_2
32134642e01fSmrg#  define DIR_SEPARATOR_2 '\\'
32144642e01fSmrg# endif
32154642e01fSmrg# ifndef PATH_SEPARATOR_2
32164642e01fSmrg#  define PATH_SEPARATOR_2 ';'
32174642e01fSmrg# endif
32184642e01fSmrg#endif
321905b261ecSmrg
32204642e01fSmrg#ifndef DIR_SEPARATOR_2
32214642e01fSmrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
32224642e01fSmrg#else /* DIR_SEPARATOR_2 */
32234642e01fSmrg# define IS_DIR_SEPARATOR(ch) \
32244642e01fSmrg	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
32254642e01fSmrg#endif /* DIR_SEPARATOR_2 */
322605b261ecSmrg
32274642e01fSmrg#ifndef PATH_SEPARATOR_2
32284642e01fSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
32294642e01fSmrg#else /* PATH_SEPARATOR_2 */
32304642e01fSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
32314642e01fSmrg#endif /* PATH_SEPARATOR_2 */
323205b261ecSmrg
32334642e01fSmrg#ifdef __CYGWIN__
32344642e01fSmrg# define FOPEN_WB "wb"
32354642e01fSmrg#endif
323605b261ecSmrg
32374642e01fSmrg#ifndef FOPEN_WB
32384642e01fSmrg# define FOPEN_WB "w"
32394642e01fSmrg#endif
32404642e01fSmrg#ifndef _O_BINARY
32414642e01fSmrg# define _O_BINARY 0
32424642e01fSmrg#endif
324305b261ecSmrg
32444642e01fSmrg#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
32454642e01fSmrg#define XFREE(stale) do { \
32464642e01fSmrg  if (stale) { free ((void *) stale); stale = 0; } \
32474642e01fSmrg} while (0)
324805b261ecSmrg
32494642e01fSmrg#undef LTWRAPPER_DEBUGPRINTF
32504642e01fSmrg#if defined DEBUGWRAPPER
32514642e01fSmrg# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
32524642e01fSmrgstatic void
32534642e01fSmrgltwrapper_debugprintf (const char *fmt, ...)
32544642e01fSmrg{
32554642e01fSmrg    va_list args;
32564642e01fSmrg    va_start (args, fmt);
32574642e01fSmrg    (void) vfprintf (stderr, fmt, args);
32584642e01fSmrg    va_end (args);
32594642e01fSmrg}
32604642e01fSmrg#else
32614642e01fSmrg# define LTWRAPPER_DEBUGPRINTF(args)
32624642e01fSmrg#endif
326305b261ecSmrg
32644642e01fSmrgconst char *program_name = NULL;
326505b261ecSmrg
32664642e01fSmrgvoid *xmalloc (size_t num);
32674642e01fSmrgchar *xstrdup (const char *string);
32684642e01fSmrgconst char *base_name (const char *name);
32694642e01fSmrgchar *find_executable (const char *wrapper);
32704642e01fSmrgchar *chase_symlinks (const char *pathspec);
32714642e01fSmrgint make_executable (const char *path);
32724642e01fSmrgint check_executable (const char *path);
32734642e01fSmrgchar *strendzap (char *str, const char *pat);
32744642e01fSmrgvoid lt_fatal (const char *message, ...);
32754642e01fSmrgvoid lt_setenv (const char *name, const char *value);
32764642e01fSmrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
32774642e01fSmrgvoid lt_opt_process_env_set (const char *arg);
32784642e01fSmrgvoid lt_opt_process_env_prepend (const char *arg);
32794642e01fSmrgvoid lt_opt_process_env_append (const char *arg);
32804642e01fSmrgint lt_split_name_value (const char *arg, char** name, char** value);
32814642e01fSmrgvoid lt_update_exe_path (const char *name, const char *value);
32824642e01fSmrgvoid lt_update_lib_path (const char *name, const char *value);
32834642e01fSmrg
32844642e01fSmrgstatic const char *script_text_part1 =
32854642e01fSmrgEOF
328605b261ecSmrg
32874642e01fSmrg	    func_emit_wrapper_part1 yes |
32884642e01fSmrg	        $SED -e 's/\([\\"]\)/\\\1/g' \
32894642e01fSmrg	             -e 's/^/  "/' -e 's/$/\\n"/'
32904642e01fSmrg	    echo ";"
32914642e01fSmrg	    cat <<EOF
329205b261ecSmrg
32934642e01fSmrgstatic const char *script_text_part2 =
32944642e01fSmrgEOF
32954642e01fSmrg	    func_emit_wrapper_part2 yes |
32964642e01fSmrg	        $SED -e 's/\([\\"]\)/\\\1/g' \
32974642e01fSmrg	             -e 's/^/  "/' -e 's/$/\\n"/'
32984642e01fSmrg	    echo ";"
32994642e01fSmrg
33004642e01fSmrg	    cat <<EOF
33014642e01fSmrgconst char * MAGIC_EXE = "$magic_exe";
33024642e01fSmrgconst char * LIB_PATH_VARNAME = "$shlibpath_var";
33034642e01fSmrgEOF
330405b261ecSmrg
33054642e01fSmrg	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
33064642e01fSmrg              func_to_host_pathlist "$temp_rpath"
33074642e01fSmrg	      cat <<EOF
33084642e01fSmrgconst char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
33094642e01fSmrgEOF
33104642e01fSmrg	    else
33114642e01fSmrg	      cat <<"EOF"
33124642e01fSmrgconst char * LIB_PATH_VALUE   = "";
33134642e01fSmrgEOF
331405b261ecSmrg	    fi
331505b261ecSmrg
33164642e01fSmrg	    if test -n "$dllsearchpath"; then
33174642e01fSmrg              func_to_host_pathlist "$dllsearchpath:"
33184642e01fSmrg	      cat <<EOF
33194642e01fSmrgconst char * EXE_PATH_VARNAME = "PATH";
33204642e01fSmrgconst char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
332105b261ecSmrgEOF
332205b261ecSmrg	    else
33234642e01fSmrg	      cat <<"EOF"
33244642e01fSmrgconst char * EXE_PATH_VARNAME = "";
33254642e01fSmrgconst char * EXE_PATH_VALUE   = "";
33264642e01fSmrgEOF
332705b261ecSmrg	    fi
33284642e01fSmrg
33294642e01fSmrg	    if test "$fast_install" = yes; then
33304642e01fSmrg	      cat <<EOF
33314642e01fSmrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
33324642e01fSmrgEOF
333305b261ecSmrg	    else
33344642e01fSmrg	      cat <<EOF
33354642e01fSmrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
33364642e01fSmrgEOF
333705b261ecSmrg	    fi
333805b261ecSmrg
333905b261ecSmrg
33404642e01fSmrg	    cat <<"EOF"
334105b261ecSmrg
33424642e01fSmrg#define LTWRAPPER_OPTION_PREFIX         "--lt-"
33434642e01fSmrg#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
334405b261ecSmrg
33454642e01fSmrgstatic const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
33464642e01fSmrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
334705b261ecSmrg
33484642e01fSmrgstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
334905b261ecSmrg
33504642e01fSmrgstatic const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
33514642e01fSmrgstatic const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
33524642e01fSmrg  /* argument is putenv-style "foo=bar", value of foo is set to bar */
335305b261ecSmrg
33544642e01fSmrgstatic const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
33554642e01fSmrgstatic const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
33564642e01fSmrg  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
335705b261ecSmrg
33584642e01fSmrgstatic const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
33594642e01fSmrgstatic const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
33604642e01fSmrg  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
336105b261ecSmrg
33624642e01fSmrgint
33634642e01fSmrgmain (int argc, char *argv[])
33644642e01fSmrg{
33654642e01fSmrg  char **newargz;
33664642e01fSmrg  int  newargc;
33674642e01fSmrg  char *tmp_pathspec;
33684642e01fSmrg  char *actual_cwrapper_path;
33694642e01fSmrg  char *actual_cwrapper_name;
33704642e01fSmrg  char *target_name;
33714642e01fSmrg  char *lt_argv_zero;
33724642e01fSmrg  intptr_t rval = 127;
337305b261ecSmrg
33744642e01fSmrg  int i;
337505b261ecSmrg
33764642e01fSmrg  program_name = (char *) xstrdup (base_name (argv[0]));
33774642e01fSmrg  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
33784642e01fSmrg  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
337905b261ecSmrg
33804642e01fSmrg  /* very simple arg parsing; don't want to rely on getopt */
33814642e01fSmrg  for (i = 1; i < argc; i++)
33824642e01fSmrg    {
33834642e01fSmrg      if (strcmp (argv[i], dumpscript_opt) == 0)
33844642e01fSmrg	{
33854642e01fSmrgEOF
33864642e01fSmrg	    case "$host" in
33874642e01fSmrg	      *mingw* | *cygwin* )
33884642e01fSmrg		# make stdout use "unix" line endings
33894642e01fSmrg		echo "          setmode(1,_O_BINARY);"
33904642e01fSmrg		;;
33914642e01fSmrg	      esac
339205b261ecSmrg
33934642e01fSmrg	    cat <<"EOF"
33944642e01fSmrg	  printf ("%s", script_text_part1);
33954642e01fSmrg	  printf ("%s", script_text_part2);
33964642e01fSmrg	  return 0;
33974642e01fSmrg	}
33984642e01fSmrg    }
339905b261ecSmrg
34004642e01fSmrg  newargz = XMALLOC (char *, argc + 1);
34014642e01fSmrg  tmp_pathspec = find_executable (argv[0]);
34024642e01fSmrg  if (tmp_pathspec == NULL)
34034642e01fSmrg    lt_fatal ("Couldn't find %s", argv[0]);
34044642e01fSmrg  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
34054642e01fSmrg			  tmp_pathspec));
34064642e01fSmrg
34074642e01fSmrg  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
34084642e01fSmrg  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
34094642e01fSmrg			  actual_cwrapper_path));
34104642e01fSmrg  XFREE (tmp_pathspec);
34114642e01fSmrg
34124642e01fSmrg  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
34134642e01fSmrg  strendzap (actual_cwrapper_path, actual_cwrapper_name);
34144642e01fSmrg
34154642e01fSmrg  /* wrapper name transforms */
34164642e01fSmrg  strendzap (actual_cwrapper_name, ".exe");
34174642e01fSmrg  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
34184642e01fSmrg  XFREE (actual_cwrapper_name);
34194642e01fSmrg  actual_cwrapper_name = tmp_pathspec;
34204642e01fSmrg  tmp_pathspec = 0;
34214642e01fSmrg
34224642e01fSmrg  /* target_name transforms -- use actual target program name; might have lt- prefix */
34234642e01fSmrg  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
34244642e01fSmrg  strendzap (target_name, ".exe");
34254642e01fSmrg  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
34264642e01fSmrg  XFREE (target_name);
34274642e01fSmrg  target_name = tmp_pathspec;
34284642e01fSmrg  tmp_pathspec = 0;
34294642e01fSmrg
34304642e01fSmrg  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
34314642e01fSmrg			  target_name));
34324642e01fSmrgEOF
343305b261ecSmrg
34344642e01fSmrg	    cat <<EOF
34354642e01fSmrg  newargz[0] =
34364642e01fSmrg    XMALLOC (char, (strlen (actual_cwrapper_path) +
34374642e01fSmrg		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
34384642e01fSmrg  strcpy (newargz[0], actual_cwrapper_path);
34394642e01fSmrg  strcat (newargz[0], "$objdir");
34404642e01fSmrg  strcat (newargz[0], "/");
34414642e01fSmrgEOF
344205b261ecSmrg
34434642e01fSmrg	    cat <<"EOF"
34444642e01fSmrg  /* stop here, and copy so we don't have to do this twice */
34454642e01fSmrg  tmp_pathspec = xstrdup (newargz[0]);
344605b261ecSmrg
34474642e01fSmrg  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
34484642e01fSmrg  strcat (newargz[0], actual_cwrapper_name);
344905b261ecSmrg
34504642e01fSmrg  /* DO want the lt- prefix here if it exists, so use target_name */
34514642e01fSmrg  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
34524642e01fSmrg  XFREE (tmp_pathspec);
34534642e01fSmrg  tmp_pathspec = NULL;
34544642e01fSmrgEOF
345505b261ecSmrg
34564642e01fSmrg	    case $host_os in
34574642e01fSmrg	      mingw*)
34584642e01fSmrg	    cat <<"EOF"
34594642e01fSmrg  {
34604642e01fSmrg    char* p;
34614642e01fSmrg    while ((p = strchr (newargz[0], '\\')) != NULL)
34624642e01fSmrg      {
34634642e01fSmrg	*p = '/';
34644642e01fSmrg      }
34654642e01fSmrg    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
34664642e01fSmrg      {
34674642e01fSmrg	*p = '/';
34684642e01fSmrg      }
34694642e01fSmrg  }
34704642e01fSmrgEOF
34714642e01fSmrg	    ;;
34724642e01fSmrg	    esac
347305b261ecSmrg
34744642e01fSmrg	    cat <<"EOF"
34754642e01fSmrg  XFREE (target_name);
34764642e01fSmrg  XFREE (actual_cwrapper_path);
34774642e01fSmrg  XFREE (actual_cwrapper_name);
347805b261ecSmrg
34794642e01fSmrg  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
34804642e01fSmrg  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
34814642e01fSmrg  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
34824642e01fSmrg  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
348305b261ecSmrg
34844642e01fSmrg  newargc=0;
34854642e01fSmrg  for (i = 1; i < argc; i++)
34864642e01fSmrg    {
34874642e01fSmrg      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
34884642e01fSmrg        {
34894642e01fSmrg          if (argv[i][env_set_opt_len] == '=')
34904642e01fSmrg            {
34914642e01fSmrg              const char *p = argv[i] + env_set_opt_len + 1;
34924642e01fSmrg              lt_opt_process_env_set (p);
34934642e01fSmrg            }
34944642e01fSmrg          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
34954642e01fSmrg            {
34964642e01fSmrg              lt_opt_process_env_set (argv[++i]); /* don't copy */
34974642e01fSmrg            }
34984642e01fSmrg          else
34994642e01fSmrg            lt_fatal ("%s missing required argument", env_set_opt);
35004642e01fSmrg          continue;
35014642e01fSmrg        }
35024642e01fSmrg      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
35034642e01fSmrg        {
35044642e01fSmrg          if (argv[i][env_prepend_opt_len] == '=')
35054642e01fSmrg            {
35064642e01fSmrg              const char *p = argv[i] + env_prepend_opt_len + 1;
35074642e01fSmrg              lt_opt_process_env_prepend (p);
35084642e01fSmrg            }
35094642e01fSmrg          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
35104642e01fSmrg            {
35114642e01fSmrg              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
35124642e01fSmrg            }
35134642e01fSmrg          else
35144642e01fSmrg            lt_fatal ("%s missing required argument", env_prepend_opt);
35154642e01fSmrg          continue;
35164642e01fSmrg        }
35174642e01fSmrg      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
35184642e01fSmrg        {
35194642e01fSmrg          if (argv[i][env_append_opt_len] == '=')
35204642e01fSmrg            {
35214642e01fSmrg              const char *p = argv[i] + env_append_opt_len + 1;
35224642e01fSmrg              lt_opt_process_env_append (p);
35234642e01fSmrg            }
35244642e01fSmrg          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
35254642e01fSmrg            {
35264642e01fSmrg              lt_opt_process_env_append (argv[++i]); /* don't copy */
35274642e01fSmrg            }
35284642e01fSmrg          else
35294642e01fSmrg            lt_fatal ("%s missing required argument", env_append_opt);
35304642e01fSmrg          continue;
35314642e01fSmrg        }
35324642e01fSmrg      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
35334642e01fSmrg        {
35344642e01fSmrg          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
35354642e01fSmrg             namespace, but it is not one of the ones we know about and
35364642e01fSmrg             have already dealt with, above (inluding dump-script), then
35374642e01fSmrg             report an error. Otherwise, targets might begin to believe
35384642e01fSmrg             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
35394642e01fSmrg             namespace. The first time any user complains about this, we'll
35404642e01fSmrg             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
35414642e01fSmrg             or a configure.ac-settable value.
35424642e01fSmrg           */
35434642e01fSmrg          lt_fatal ("Unrecognized option in %s namespace: '%s'",
35444642e01fSmrg                    ltwrapper_option_prefix, argv[i]);
35454642e01fSmrg        }
35464642e01fSmrg      /* otherwise ... */
35474642e01fSmrg      newargz[++newargc] = xstrdup (argv[i]);
35484642e01fSmrg    }
35494642e01fSmrg  newargz[++newargc] = NULL;
355005b261ecSmrg
35514642e01fSmrg  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
35524642e01fSmrg  for (i = 0; i < newargc; i++)
35534642e01fSmrg    {
35544642e01fSmrg      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
35554642e01fSmrg    }
355605b261ecSmrg
35574642e01fSmrgEOF
355805b261ecSmrg
35594642e01fSmrg	    case $host_os in
35604642e01fSmrg	      mingw*)
35614642e01fSmrg		cat <<"EOF"
35624642e01fSmrg  /* execv doesn't actually work on mingw as expected on unix */
35634642e01fSmrg  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
35644642e01fSmrg  if (rval == -1)
35654642e01fSmrg    {
35664642e01fSmrg      /* failed to start process */
35674642e01fSmrg      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
35684642e01fSmrg      return 127;
35694642e01fSmrg    }
35704642e01fSmrg  return rval;
35714642e01fSmrgEOF
35724642e01fSmrg		;;
35734642e01fSmrg	      *)
35744642e01fSmrg		cat <<"EOF"
35754642e01fSmrg  execv (lt_argv_zero, newargz);
35764642e01fSmrg  return rval; /* =127, but avoids unused variable warning */
35774642e01fSmrgEOF
35784642e01fSmrg		;;
35794642e01fSmrg	    esac
358005b261ecSmrg
35814642e01fSmrg	    cat <<"EOF"
35824642e01fSmrg}
358305b261ecSmrg
35844642e01fSmrgvoid *
35854642e01fSmrgxmalloc (size_t num)
35864642e01fSmrg{
35874642e01fSmrg  void *p = (void *) malloc (num);
35884642e01fSmrg  if (!p)
35894642e01fSmrg    lt_fatal ("Memory exhausted");
359005b261ecSmrg
35914642e01fSmrg  return p;
35924642e01fSmrg}
359305b261ecSmrg
35944642e01fSmrgchar *
35954642e01fSmrgxstrdup (const char *string)
35964642e01fSmrg{
35974642e01fSmrg  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
35984642e01fSmrg			  string) : NULL;
35994642e01fSmrg}
360005b261ecSmrg
36014642e01fSmrgconst char *
36024642e01fSmrgbase_name (const char *name)
36034642e01fSmrg{
36044642e01fSmrg  const char *base;
360505b261ecSmrg
36064642e01fSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36074642e01fSmrg  /* Skip over the disk name in MSDOS pathnames. */
36084642e01fSmrg  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
36094642e01fSmrg    name += 2;
36104642e01fSmrg#endif
361105b261ecSmrg
36124642e01fSmrg  for (base = name; *name; name++)
36134642e01fSmrg    if (IS_DIR_SEPARATOR (*name))
36144642e01fSmrg      base = name + 1;
36154642e01fSmrg  return base;
36164642e01fSmrg}
361705b261ecSmrg
36184642e01fSmrgint
36194642e01fSmrgcheck_executable (const char *path)
36204642e01fSmrg{
36214642e01fSmrg  struct stat st;
362205b261ecSmrg
36234642e01fSmrg  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
36244642e01fSmrg			  path ? (*path ? path : "EMPTY!") : "NULL!"));
36254642e01fSmrg  if ((!path) || (!*path))
36264642e01fSmrg    return 0;
362705b261ecSmrg
36284642e01fSmrg  if ((stat (path, &st) >= 0)
36294642e01fSmrg      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
36304642e01fSmrg    return 1;
36314642e01fSmrg  else
36324642e01fSmrg    return 0;
36334642e01fSmrg}
363405b261ecSmrg
36354642e01fSmrgint
36364642e01fSmrgmake_executable (const char *path)
36374642e01fSmrg{
36384642e01fSmrg  int rval = 0;
36394642e01fSmrg  struct stat st;
364005b261ecSmrg
36414642e01fSmrg  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
36424642e01fSmrg			  path ? (*path ? path : "EMPTY!") : "NULL!"));
36434642e01fSmrg  if ((!path) || (!*path))
36444642e01fSmrg    return 0;
364505b261ecSmrg
36464642e01fSmrg  if (stat (path, &st) >= 0)
36474642e01fSmrg    {
36484642e01fSmrg      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
36494642e01fSmrg    }
36504642e01fSmrg  return rval;
36514642e01fSmrg}
365205b261ecSmrg
36534642e01fSmrg/* Searches for the full path of the wrapper.  Returns
36544642e01fSmrg   newly allocated full path name if found, NULL otherwise
36554642e01fSmrg   Does not chase symlinks, even on platforms that support them.
36564642e01fSmrg*/
36574642e01fSmrgchar *
36584642e01fSmrgfind_executable (const char *wrapper)
36594642e01fSmrg{
36604642e01fSmrg  int has_slash = 0;
36614642e01fSmrg  const char *p;
36624642e01fSmrg  const char *p_next;
36634642e01fSmrg  /* static buffer for getcwd */
36644642e01fSmrg  char tmp[LT_PATHMAX + 1];
36654642e01fSmrg  int tmp_len;
36664642e01fSmrg  char *concat_name;
366705b261ecSmrg
36684642e01fSmrg  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
36694642e01fSmrg			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
367005b261ecSmrg
36714642e01fSmrg  if ((wrapper == NULL) || (*wrapper == '\0'))
36724642e01fSmrg    return NULL;
367305b261ecSmrg
36744642e01fSmrg  /* Absolute path? */
36754642e01fSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36764642e01fSmrg  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
36774642e01fSmrg    {
36784642e01fSmrg      concat_name = xstrdup (wrapper);
36794642e01fSmrg      if (check_executable (concat_name))
36804642e01fSmrg	return concat_name;
36814642e01fSmrg      XFREE (concat_name);
36824642e01fSmrg    }
36834642e01fSmrg  else
36844642e01fSmrg    {
36854642e01fSmrg#endif
36864642e01fSmrg      if (IS_DIR_SEPARATOR (wrapper[0]))
36874642e01fSmrg	{
36884642e01fSmrg	  concat_name = xstrdup (wrapper);
36894642e01fSmrg	  if (check_executable (concat_name))
36904642e01fSmrg	    return concat_name;
36914642e01fSmrg	  XFREE (concat_name);
36924642e01fSmrg	}
36934642e01fSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36944642e01fSmrg    }
36954642e01fSmrg#endif
369605b261ecSmrg
36974642e01fSmrg  for (p = wrapper; *p; p++)
36984642e01fSmrg    if (*p == '/')
36994642e01fSmrg      {
37004642e01fSmrg	has_slash = 1;
37014642e01fSmrg	break;
37024642e01fSmrg      }
37034642e01fSmrg  if (!has_slash)
37044642e01fSmrg    {
37054642e01fSmrg      /* no slashes; search PATH */
37064642e01fSmrg      const char *path = getenv ("PATH");
37074642e01fSmrg      if (path != NULL)
37084642e01fSmrg	{
37094642e01fSmrg	  for (p = path; *p; p = p_next)
37104642e01fSmrg	    {
37114642e01fSmrg	      const char *q;
37124642e01fSmrg	      size_t p_len;
37134642e01fSmrg	      for (q = p; *q; q++)
37144642e01fSmrg		if (IS_PATH_SEPARATOR (*q))
37154642e01fSmrg		  break;
37164642e01fSmrg	      p_len = q - p;
37174642e01fSmrg	      p_next = (*q == '\0' ? q : q + 1);
37184642e01fSmrg	      if (p_len == 0)
37194642e01fSmrg		{
37204642e01fSmrg		  /* empty path: current directory */
37214642e01fSmrg		  if (getcwd (tmp, LT_PATHMAX) == NULL)
37224642e01fSmrg		    lt_fatal ("getcwd failed");
37234642e01fSmrg		  tmp_len = strlen (tmp);
37244642e01fSmrg		  concat_name =
37254642e01fSmrg		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
37264642e01fSmrg		  memcpy (concat_name, tmp, tmp_len);
37274642e01fSmrg		  concat_name[tmp_len] = '/';
37284642e01fSmrg		  strcpy (concat_name + tmp_len + 1, wrapper);
37294642e01fSmrg		}
37304642e01fSmrg	      else
37314642e01fSmrg		{
37324642e01fSmrg		  concat_name =
37334642e01fSmrg		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
37344642e01fSmrg		  memcpy (concat_name, p, p_len);
37354642e01fSmrg		  concat_name[p_len] = '/';
37364642e01fSmrg		  strcpy (concat_name + p_len + 1, wrapper);
37374642e01fSmrg		}
37384642e01fSmrg	      if (check_executable (concat_name))
37394642e01fSmrg		return concat_name;
37404642e01fSmrg	      XFREE (concat_name);
37414642e01fSmrg	    }
37424642e01fSmrg	}
37434642e01fSmrg      /* not found in PATH; assume curdir */
37444642e01fSmrg    }
37454642e01fSmrg  /* Relative path | not found in path: prepend cwd */
37464642e01fSmrg  if (getcwd (tmp, LT_PATHMAX) == NULL)
37474642e01fSmrg    lt_fatal ("getcwd failed");
37484642e01fSmrg  tmp_len = strlen (tmp);
37494642e01fSmrg  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
37504642e01fSmrg  memcpy (concat_name, tmp, tmp_len);
37514642e01fSmrg  concat_name[tmp_len] = '/';
37524642e01fSmrg  strcpy (concat_name + tmp_len + 1, wrapper);
375305b261ecSmrg
37544642e01fSmrg  if (check_executable (concat_name))
37554642e01fSmrg    return concat_name;
37564642e01fSmrg  XFREE (concat_name);
37574642e01fSmrg  return NULL;
37584642e01fSmrg}
375905b261ecSmrg
37604642e01fSmrgchar *
37614642e01fSmrgchase_symlinks (const char *pathspec)
37624642e01fSmrg{
37634642e01fSmrg#ifndef S_ISLNK
37644642e01fSmrg  return xstrdup (pathspec);
37654642e01fSmrg#else
37664642e01fSmrg  char buf[LT_PATHMAX];
37674642e01fSmrg  struct stat s;
37684642e01fSmrg  char *tmp_pathspec = xstrdup (pathspec);
37694642e01fSmrg  char *p;
37704642e01fSmrg  int has_symlinks = 0;
37714642e01fSmrg  while (strlen (tmp_pathspec) && !has_symlinks)
37724642e01fSmrg    {
37734642e01fSmrg      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
37744642e01fSmrg			      tmp_pathspec));
37754642e01fSmrg      if (lstat (tmp_pathspec, &s) == 0)
37764642e01fSmrg	{
37774642e01fSmrg	  if (S_ISLNK (s.st_mode) != 0)
37784642e01fSmrg	    {
37794642e01fSmrg	      has_symlinks = 1;
37804642e01fSmrg	      break;
37814642e01fSmrg	    }
378205b261ecSmrg
37834642e01fSmrg	  /* search backwards for last DIR_SEPARATOR */
37844642e01fSmrg	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
37854642e01fSmrg	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
37864642e01fSmrg	    p--;
37874642e01fSmrg	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
37884642e01fSmrg	    {
37894642e01fSmrg	      /* no more DIR_SEPARATORS left */
37904642e01fSmrg	      break;
37914642e01fSmrg	    }
37924642e01fSmrg	  *p = '\0';
37934642e01fSmrg	}
37944642e01fSmrg      else
37954642e01fSmrg	{
37964642e01fSmrg	  char *errstr = strerror (errno);
37974642e01fSmrg	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
37984642e01fSmrg	}
37994642e01fSmrg    }
38004642e01fSmrg  XFREE (tmp_pathspec);
380105b261ecSmrg
38024642e01fSmrg  if (!has_symlinks)
38034642e01fSmrg    {
38044642e01fSmrg      return xstrdup (pathspec);
38054642e01fSmrg    }
380605b261ecSmrg
38074642e01fSmrg  tmp_pathspec = realpath (pathspec, buf);
38084642e01fSmrg  if (tmp_pathspec == 0)
38094642e01fSmrg    {
38104642e01fSmrg      lt_fatal ("Could not follow symlinks for %s", pathspec);
38114642e01fSmrg    }
38124642e01fSmrg  return xstrdup (tmp_pathspec);
38134642e01fSmrg#endif
38144642e01fSmrg}
381505b261ecSmrg
38164642e01fSmrgchar *
38174642e01fSmrgstrendzap (char *str, const char *pat)
38184642e01fSmrg{
38194642e01fSmrg  size_t len, patlen;
382005b261ecSmrg
38214642e01fSmrg  assert (str != NULL);
38224642e01fSmrg  assert (pat != NULL);
382305b261ecSmrg
38244642e01fSmrg  len = strlen (str);
38254642e01fSmrg  patlen = strlen (pat);
382605b261ecSmrg
38274642e01fSmrg  if (patlen <= len)
38284642e01fSmrg    {
38294642e01fSmrg      str += len - patlen;
38304642e01fSmrg      if (strcmp (str, pat) == 0)
38314642e01fSmrg	*str = '\0';
38324642e01fSmrg    }
38334642e01fSmrg  return str;
38344642e01fSmrg}
383505b261ecSmrg
38364642e01fSmrgstatic void
38374642e01fSmrglt_error_core (int exit_status, const char *mode,
38384642e01fSmrg	       const char *message, va_list ap)
38394642e01fSmrg{
38404642e01fSmrg  fprintf (stderr, "%s: %s: ", program_name, mode);
38414642e01fSmrg  vfprintf (stderr, message, ap);
38424642e01fSmrg  fprintf (stderr, ".\n");
384305b261ecSmrg
38444642e01fSmrg  if (exit_status >= 0)
38454642e01fSmrg    exit (exit_status);
38464642e01fSmrg}
384705b261ecSmrg
38484642e01fSmrgvoid
38494642e01fSmrglt_fatal (const char *message, ...)
38504642e01fSmrg{
38514642e01fSmrg  va_list ap;
38524642e01fSmrg  va_start (ap, message);
38534642e01fSmrg  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
38544642e01fSmrg  va_end (ap);
38554642e01fSmrg}
385605b261ecSmrg
38574642e01fSmrgvoid
38584642e01fSmrglt_setenv (const char *name, const char *value)
38594642e01fSmrg{
38604642e01fSmrg  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
38614642e01fSmrg                          (name ? name : "<NULL>"),
38624642e01fSmrg                          (value ? value : "<NULL>")));
38634642e01fSmrg  {
38644642e01fSmrg#ifdef HAVE_SETENV
38654642e01fSmrg    /* always make a copy, for consistency with !HAVE_SETENV */
38664642e01fSmrg    char *str = xstrdup (value);
38674642e01fSmrg    setenv (name, str, 1);
38684642e01fSmrg#else
38694642e01fSmrg    int len = strlen (name) + 1 + strlen (value) + 1;
38704642e01fSmrg    char *str = XMALLOC (char, len);
38714642e01fSmrg    sprintf (str, "%s=%s", name, value);
38724642e01fSmrg    if (putenv (str) != EXIT_SUCCESS)
38734642e01fSmrg      {
38744642e01fSmrg        XFREE (str);
38754642e01fSmrg      }
38764642e01fSmrg#endif
38774642e01fSmrg  }
38784642e01fSmrg}
387905b261ecSmrg
38804642e01fSmrgchar *
38814642e01fSmrglt_extend_str (const char *orig_value, const char *add, int to_end)
38824642e01fSmrg{
38834642e01fSmrg  char *new_value;
38844642e01fSmrg  if (orig_value && *orig_value)
38854642e01fSmrg    {
38864642e01fSmrg      int orig_value_len = strlen (orig_value);
38874642e01fSmrg      int add_len = strlen (add);
38884642e01fSmrg      new_value = XMALLOC (char, add_len + orig_value_len + 1);
38894642e01fSmrg      if (to_end)
38904642e01fSmrg        {
38914642e01fSmrg          strcpy (new_value, orig_value);
38924642e01fSmrg          strcpy (new_value + orig_value_len, add);
38934642e01fSmrg        }
38944642e01fSmrg      else
38954642e01fSmrg        {
38964642e01fSmrg          strcpy (new_value, add);
38974642e01fSmrg          strcpy (new_value + add_len, orig_value);
38984642e01fSmrg        }
38994642e01fSmrg    }
39004642e01fSmrg  else
39014642e01fSmrg    {
39024642e01fSmrg      new_value = xstrdup (add);
39034642e01fSmrg    }
39044642e01fSmrg  return new_value;
39054642e01fSmrg}
390605b261ecSmrg
39074642e01fSmrgint
39084642e01fSmrglt_split_name_value (const char *arg, char** name, char** value)
39094642e01fSmrg{
39104642e01fSmrg  const char *p;
39114642e01fSmrg  int len;
39124642e01fSmrg  if (!arg || !*arg)
39134642e01fSmrg    return 1;
391405b261ecSmrg
39154642e01fSmrg  p = strchr (arg, (int)'=');
391605b261ecSmrg
39174642e01fSmrg  if (!p)
39184642e01fSmrg    return 1;
391905b261ecSmrg
39204642e01fSmrg  *value = xstrdup (++p);
392105b261ecSmrg
39224642e01fSmrg  len = strlen (arg) - strlen (*value);
39234642e01fSmrg  *name = XMALLOC (char, len);
39244642e01fSmrg  strncpy (*name, arg, len-1);
39254642e01fSmrg  (*name)[len - 1] = '\0';
392605b261ecSmrg
39274642e01fSmrg  return 0;
39284642e01fSmrg}
392905b261ecSmrg
39304642e01fSmrgvoid
39314642e01fSmrglt_opt_process_env_set (const char *arg)
39324642e01fSmrg{
39334642e01fSmrg  char *name = NULL;
39344642e01fSmrg  char *value = NULL;
393505b261ecSmrg
39364642e01fSmrg  if (lt_split_name_value (arg, &name, &value) != 0)
39374642e01fSmrg    {
39384642e01fSmrg      XFREE (name);
39394642e01fSmrg      XFREE (value);
39404642e01fSmrg      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
39414642e01fSmrg    }
394205b261ecSmrg
39434642e01fSmrg  lt_setenv (name, value);
39444642e01fSmrg  XFREE (name);
39454642e01fSmrg  XFREE (value);
39464642e01fSmrg}
394705b261ecSmrg
39484642e01fSmrgvoid
39494642e01fSmrglt_opt_process_env_prepend (const char *arg)
39504642e01fSmrg{
39514642e01fSmrg  char *name = NULL;
39524642e01fSmrg  char *value = NULL;
39534642e01fSmrg  char *new_value = NULL;
395405b261ecSmrg
39554642e01fSmrg  if (lt_split_name_value (arg, &name, &value) != 0)
39564642e01fSmrg    {
39574642e01fSmrg      XFREE (name);
39584642e01fSmrg      XFREE (value);
39594642e01fSmrg      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
39604642e01fSmrg    }
396105b261ecSmrg
39624642e01fSmrg  new_value = lt_extend_str (getenv (name), value, 0);
39634642e01fSmrg  lt_setenv (name, new_value);
39644642e01fSmrg  XFREE (new_value);
39654642e01fSmrg  XFREE (name);
39664642e01fSmrg  XFREE (value);
39674642e01fSmrg}
396805b261ecSmrg
39694642e01fSmrgvoid
39704642e01fSmrglt_opt_process_env_append (const char *arg)
39714642e01fSmrg{
39724642e01fSmrg  char *name = NULL;
39734642e01fSmrg  char *value = NULL;
39744642e01fSmrg  char *new_value = NULL;
397505b261ecSmrg
39764642e01fSmrg  if (lt_split_name_value (arg, &name, &value) != 0)
39774642e01fSmrg    {
39784642e01fSmrg      XFREE (name);
39794642e01fSmrg      XFREE (value);
39804642e01fSmrg      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
39814642e01fSmrg    }
398205b261ecSmrg
39834642e01fSmrg  new_value = lt_extend_str (getenv (name), value, 1);
39844642e01fSmrg  lt_setenv (name, new_value);
39854642e01fSmrg  XFREE (new_value);
39864642e01fSmrg  XFREE (name);
39874642e01fSmrg  XFREE (value);
39884642e01fSmrg}
398905b261ecSmrg
39904642e01fSmrgvoid
39914642e01fSmrglt_update_exe_path (const char *name, const char *value)
39924642e01fSmrg{
39934642e01fSmrg  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
39944642e01fSmrg                          (name ? name : "<NULL>"),
39954642e01fSmrg                          (value ? value : "<NULL>")));
399605b261ecSmrg
39974642e01fSmrg  if (name && *name && value && *value)
39984642e01fSmrg    {
39994642e01fSmrg      char *new_value = lt_extend_str (getenv (name), value, 0);
40004642e01fSmrg      /* some systems can't cope with a ':'-terminated path #' */
40014642e01fSmrg      int len = strlen (new_value);
40024642e01fSmrg      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
40034642e01fSmrg        {
40044642e01fSmrg          new_value[len-1] = '\0';
40054642e01fSmrg        }
40064642e01fSmrg      lt_setenv (name, new_value);
40074642e01fSmrg      XFREE (new_value);
40084642e01fSmrg    }
40094642e01fSmrg}
401005b261ecSmrg
40114642e01fSmrgvoid
40124642e01fSmrglt_update_lib_path (const char *name, const char *value)
40134642e01fSmrg{
40144642e01fSmrg  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
40154642e01fSmrg                          (name ? name : "<NULL>"),
40164642e01fSmrg                          (value ? value : "<NULL>")));
401705b261ecSmrg
40184642e01fSmrg  if (name && *name && value && *value)
40194642e01fSmrg    {
40204642e01fSmrg      char *new_value = lt_extend_str (getenv (name), value, 0);
40214642e01fSmrg      lt_setenv (name, new_value);
40224642e01fSmrg      XFREE (new_value);
40234642e01fSmrg    }
40244642e01fSmrg}
402505b261ecSmrg
402605b261ecSmrg
40274642e01fSmrgEOF
40284642e01fSmrg}
40294642e01fSmrg# end: func_emit_cwrapperexe_src
403005b261ecSmrg
40314642e01fSmrg# func_mode_link arg...
40324642e01fSmrgfunc_mode_link ()
40334642e01fSmrg{
40344642e01fSmrg    $opt_debug
40354642e01fSmrg    case $host in
40364642e01fSmrg    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
40374642e01fSmrg      # It is impossible to link a dll without this setting, and
40384642e01fSmrg      # we shouldn't force the makefile maintainer to figure out
40394642e01fSmrg      # which system we are compiling for in order to pass an extra
40404642e01fSmrg      # flag for every libtool invocation.
40414642e01fSmrg      # allow_undefined=no
404205b261ecSmrg
40434642e01fSmrg      # FIXME: Unfortunately, there are problems with the above when trying
40444642e01fSmrg      # to make a dll which has undefined symbols, in which case not
40454642e01fSmrg      # even a static library is built.  For now, we need to specify
40464642e01fSmrg      # -no-undefined on the libtool link line when we can be certain
40474642e01fSmrg      # that all symbols are satisfied, otherwise we get a static library.
40484642e01fSmrg      allow_undefined=yes
40494642e01fSmrg      ;;
40504642e01fSmrg    *)
40514642e01fSmrg      allow_undefined=yes
40524642e01fSmrg      ;;
40534642e01fSmrg    esac
40544642e01fSmrg    libtool_args=$nonopt
40554642e01fSmrg    base_compile="$nonopt $@"
40564642e01fSmrg    compile_command=$nonopt
40574642e01fSmrg    finalize_command=$nonopt
405805b261ecSmrg
40594642e01fSmrg    compile_rpath=
40604642e01fSmrg    finalize_rpath=
40614642e01fSmrg    compile_shlibpath=
40624642e01fSmrg    finalize_shlibpath=
40634642e01fSmrg    convenience=
40644642e01fSmrg    old_convenience=
40654642e01fSmrg    deplibs=
40664642e01fSmrg    old_deplibs=
40674642e01fSmrg    compiler_flags=
40684642e01fSmrg    linker_flags=
40694642e01fSmrg    dllsearchpath=
40704642e01fSmrg    lib_search_path=`pwd`
40714642e01fSmrg    inst_prefix_dir=
40724642e01fSmrg    new_inherited_linker_flags=
407305b261ecSmrg
40744642e01fSmrg    avoid_version=no
40754642e01fSmrg    dlfiles=
40764642e01fSmrg    dlprefiles=
40774642e01fSmrg    dlself=no
40784642e01fSmrg    export_dynamic=no
40794642e01fSmrg    export_symbols=
40804642e01fSmrg    export_symbols_regex=
40814642e01fSmrg    generated=
40824642e01fSmrg    libobjs=
40834642e01fSmrg    ltlibs=
40844642e01fSmrg    module=no
40854642e01fSmrg    no_install=no
40864642e01fSmrg    objs=
40874642e01fSmrg    non_pic_objects=
40884642e01fSmrg    precious_files_regex=
40894642e01fSmrg    prefer_static_libs=no
40904642e01fSmrg    preload=no
40914642e01fSmrg    prev=
40924642e01fSmrg    prevarg=
40934642e01fSmrg    release=
40944642e01fSmrg    rpath=
40954642e01fSmrg    xrpath=
40964642e01fSmrg    perm_rpath=
40974642e01fSmrg    temp_rpath=
40984642e01fSmrg    thread_safe=no
40994642e01fSmrg    vinfo=
41004642e01fSmrg    vinfo_number=no
41014642e01fSmrg    weak_libs=
41024642e01fSmrg    single_module="${wl}-single_module"
41034642e01fSmrg    func_infer_tag $base_compile
410405b261ecSmrg
41054642e01fSmrg    # We need to know -static, to get the right output filenames.
41064642e01fSmrg    for arg
41074642e01fSmrg    do
41084642e01fSmrg      case $arg in
41094642e01fSmrg      -shared)
41104642e01fSmrg	test "$build_libtool_libs" != yes && \
41114642e01fSmrg	  func_fatal_configuration "can not build a shared library"
41124642e01fSmrg	build_old_libs=no
41134642e01fSmrg	break
41144642e01fSmrg	;;
41154642e01fSmrg      -all-static | -static | -static-libtool-libs)
41164642e01fSmrg	case $arg in
41174642e01fSmrg	-all-static)
41184642e01fSmrg	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
41194642e01fSmrg	    func_warning "complete static linking is impossible in this configuration"
41204642e01fSmrg	  fi
41214642e01fSmrg	  if test -n "$link_static_flag"; then
41224642e01fSmrg	    dlopen_self=$dlopen_self_static
41234642e01fSmrg	  fi
41244642e01fSmrg	  prefer_static_libs=yes
41254642e01fSmrg	  ;;
41264642e01fSmrg	-static)
41274642e01fSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
41284642e01fSmrg	    dlopen_self=$dlopen_self_static
41294642e01fSmrg	  fi
41304642e01fSmrg	  prefer_static_libs=built
41314642e01fSmrg	  ;;
41324642e01fSmrg	-static-libtool-libs)
41334642e01fSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
41344642e01fSmrg	    dlopen_self=$dlopen_self_static
41354642e01fSmrg	  fi
41364642e01fSmrg	  prefer_static_libs=yes
41374642e01fSmrg	  ;;
41384642e01fSmrg	esac
41394642e01fSmrg	build_libtool_libs=no
41404642e01fSmrg	build_old_libs=yes
41414642e01fSmrg	break
41424642e01fSmrg	;;
41434642e01fSmrg      esac
41444642e01fSmrg    done
414505b261ecSmrg
41464642e01fSmrg    # See if our shared archives depend on static archives.
41474642e01fSmrg    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
414805b261ecSmrg
41494642e01fSmrg    # Go through the arguments, transforming them on the way.
41504642e01fSmrg    while test "$#" -gt 0; do
41514642e01fSmrg      arg="$1"
41524642e01fSmrg      shift
41534642e01fSmrg      func_quote_for_eval "$arg"
41544642e01fSmrg      qarg=$func_quote_for_eval_unquoted_result
41554642e01fSmrg      func_append libtool_args " $func_quote_for_eval_result"
415605b261ecSmrg
41574642e01fSmrg      # If the previous option needs an argument, assign it.
41584642e01fSmrg      if test -n "$prev"; then
41594642e01fSmrg	case $prev in
41604642e01fSmrg	output)
41614642e01fSmrg	  func_append compile_command " @OUTPUT@"
41624642e01fSmrg	  func_append finalize_command " @OUTPUT@"
41634642e01fSmrg	  ;;
41644642e01fSmrg	esac
416505b261ecSmrg
41664642e01fSmrg	case $prev in
41674642e01fSmrg	dlfiles|dlprefiles)
41684642e01fSmrg	  if test "$preload" = no; then
41694642e01fSmrg	    # Add the symbol object into the linking commands.
41704642e01fSmrg	    func_append compile_command " @SYMFILE@"
41714642e01fSmrg	    func_append finalize_command " @SYMFILE@"
41724642e01fSmrg	    preload=yes
417305b261ecSmrg	  fi
41744642e01fSmrg	  case $arg in
41754642e01fSmrg	  *.la | *.lo) ;;  # We handle these cases below.
41764642e01fSmrg	  force)
41774642e01fSmrg	    if test "$dlself" = no; then
41784642e01fSmrg	      dlself=needless
41794642e01fSmrg	      export_dynamic=yes
41804642e01fSmrg	    fi
41814642e01fSmrg	    prev=
41824642e01fSmrg	    continue
41834642e01fSmrg	    ;;
41844642e01fSmrg	  self)
41854642e01fSmrg	    if test "$prev" = dlprefiles; then
41864642e01fSmrg	      dlself=yes
41874642e01fSmrg	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
41884642e01fSmrg	      dlself=yes
41894642e01fSmrg	    else
41904642e01fSmrg	      dlself=needless
41914642e01fSmrg	      export_dynamic=yes
41924642e01fSmrg	    fi
41934642e01fSmrg	    prev=
41944642e01fSmrg	    continue
41954642e01fSmrg	    ;;
41964642e01fSmrg	  *)
41974642e01fSmrg	    if test "$prev" = dlfiles; then
41984642e01fSmrg	      dlfiles="$dlfiles $arg"
41994642e01fSmrg	    else
42004642e01fSmrg	      dlprefiles="$dlprefiles $arg"
42014642e01fSmrg	    fi
42024642e01fSmrg	    prev=
42034642e01fSmrg	    continue
42044642e01fSmrg	    ;;
42054642e01fSmrg	  esac
42064642e01fSmrg	  ;;
42074642e01fSmrg	expsyms)
42084642e01fSmrg	  export_symbols="$arg"
42094642e01fSmrg	  test -f "$arg" \
42104642e01fSmrg	    || func_fatal_error "symbol file \`$arg' does not exist"
42114642e01fSmrg	  prev=
42124642e01fSmrg	  continue
42134642e01fSmrg	  ;;
42144642e01fSmrg	expsyms_regex)
42154642e01fSmrg	  export_symbols_regex="$arg"
42164642e01fSmrg	  prev=
42174642e01fSmrg	  continue
42184642e01fSmrg	  ;;
42194642e01fSmrg	framework)
422005b261ecSmrg	  case $host in
42214642e01fSmrg	    *-*-darwin*)
42224642e01fSmrg	      case "$deplibs " in
42234642e01fSmrg		*" $qarg.ltframework "*) ;;
42244642e01fSmrg		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
42254642e01fSmrg		   ;;
42264642e01fSmrg	      esac
42274642e01fSmrg	      ;;
422805b261ecSmrg	  esac
42294642e01fSmrg	  prev=
42304642e01fSmrg	  continue
423105b261ecSmrg	  ;;
42324642e01fSmrg	inst_prefix)
42334642e01fSmrg	  inst_prefix_dir="$arg"
42344642e01fSmrg	  prev=
42354642e01fSmrg	  continue
423605b261ecSmrg	  ;;
42374642e01fSmrg	objectlist)
42384642e01fSmrg	  if test -f "$arg"; then
42394642e01fSmrg	    save_arg=$arg
42404642e01fSmrg	    moreargs=
42414642e01fSmrg	    for fil in `cat "$save_arg"`
42424642e01fSmrg	    do
42434642e01fSmrg#	      moreargs="$moreargs $fil"
42444642e01fSmrg	      arg=$fil
42454642e01fSmrg	      # A libtool-controlled object.
424605b261ecSmrg
42474642e01fSmrg	      # Check to see that this really is a libtool object.
42484642e01fSmrg	      if func_lalib_unsafe_p "$arg"; then
42494642e01fSmrg		pic_object=
42504642e01fSmrg		non_pic_object=
425105b261ecSmrg
42524642e01fSmrg		# Read the .lo file
42534642e01fSmrg		func_source "$arg"
425405b261ecSmrg
42554642e01fSmrg		if test -z "$pic_object" ||
42564642e01fSmrg		   test -z "$non_pic_object" ||
42574642e01fSmrg		   test "$pic_object" = none &&
42584642e01fSmrg		   test "$non_pic_object" = none; then
42594642e01fSmrg		  func_fatal_error "cannot find name of object for \`$arg'"
42604642e01fSmrg		fi
426105b261ecSmrg
42624642e01fSmrg		# Extract subdirectory from the argument.
42634642e01fSmrg		func_dirname "$arg" "/" ""
42644642e01fSmrg		xdir="$func_dirname_result"
426505b261ecSmrg
42664642e01fSmrg		if test "$pic_object" != none; then
42674642e01fSmrg		  # Prepend the subdirectory the object is found in.
42684642e01fSmrg		  pic_object="$xdir$pic_object"
426905b261ecSmrg
42704642e01fSmrg		  if test "$prev" = dlfiles; then
42714642e01fSmrg		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
42724642e01fSmrg		      dlfiles="$dlfiles $pic_object"
42734642e01fSmrg		      prev=
42744642e01fSmrg		      continue
42754642e01fSmrg		    else
42764642e01fSmrg		      # If libtool objects are unsupported, then we need to preload.
42774642e01fSmrg		      prev=dlprefiles
42784642e01fSmrg		    fi
42794642e01fSmrg		  fi
428005b261ecSmrg
42814642e01fSmrg		  # CHECK ME:  I think I busted this.  -Ossama
42824642e01fSmrg		  if test "$prev" = dlprefiles; then
42834642e01fSmrg		    # Preload the old-style object.
42844642e01fSmrg		    dlprefiles="$dlprefiles $pic_object"
42854642e01fSmrg		    prev=
42864642e01fSmrg		  fi
428705b261ecSmrg
42884642e01fSmrg		  # A PIC object.
42894642e01fSmrg		  func_append libobjs " $pic_object"
42904642e01fSmrg		  arg="$pic_object"
42914642e01fSmrg		fi
429205b261ecSmrg
42934642e01fSmrg		# Non-PIC object.
42944642e01fSmrg		if test "$non_pic_object" != none; then
42954642e01fSmrg		  # Prepend the subdirectory the object is found in.
42964642e01fSmrg		  non_pic_object="$xdir$non_pic_object"
429705b261ecSmrg
42984642e01fSmrg		  # A standard non-PIC object
42994642e01fSmrg		  func_append non_pic_objects " $non_pic_object"
43004642e01fSmrg		  if test -z "$pic_object" || test "$pic_object" = none ; then
43014642e01fSmrg		    arg="$non_pic_object"
43024642e01fSmrg		  fi
43034642e01fSmrg		else
43044642e01fSmrg		  # If the PIC object exists, use it instead.
43054642e01fSmrg		  # $xdir was prepended to $pic_object above.
43064642e01fSmrg		  non_pic_object="$pic_object"
43074642e01fSmrg		  func_append non_pic_objects " $non_pic_object"
43084642e01fSmrg		fi
43094642e01fSmrg	      else
43104642e01fSmrg		# Only an error if not doing a dry-run.
43114642e01fSmrg		if $opt_dry_run; then
43124642e01fSmrg		  # Extract subdirectory from the argument.
43134642e01fSmrg		  func_dirname "$arg" "/" ""
43144642e01fSmrg		  xdir="$func_dirname_result"
43154642e01fSmrg
43164642e01fSmrg		  func_lo2o "$arg"
43174642e01fSmrg		  pic_object=$xdir$objdir/$func_lo2o_result
43184642e01fSmrg		  non_pic_object=$xdir$func_lo2o_result
43194642e01fSmrg		  func_append libobjs " $pic_object"
43204642e01fSmrg		  func_append non_pic_objects " $non_pic_object"
43214642e01fSmrg	        else
43224642e01fSmrg		  func_fatal_error "\`$arg' is not a valid libtool object"
43234642e01fSmrg		fi
43244642e01fSmrg	      fi
43254642e01fSmrg	    done
432605b261ecSmrg	  else
43274642e01fSmrg	    func_fatal_error "link input file \`$arg' does not exist"
432805b261ecSmrg	  fi
43294642e01fSmrg	  arg=$save_arg
43304642e01fSmrg	  prev=
43314642e01fSmrg	  continue
43324642e01fSmrg	  ;;
43334642e01fSmrg	precious_regex)
43344642e01fSmrg	  precious_files_regex="$arg"
43354642e01fSmrg	  prev=
43364642e01fSmrg	  continue
43374642e01fSmrg	  ;;
43384642e01fSmrg	release)
43394642e01fSmrg	  release="-$arg"
43404642e01fSmrg	  prev=
43414642e01fSmrg	  continue
43424642e01fSmrg	  ;;
43434642e01fSmrg	rpath | xrpath)
43444642e01fSmrg	  # We need an absolute path.
43454642e01fSmrg	  case $arg in
43464642e01fSmrg	  [\\/]* | [A-Za-z]:[\\/]*) ;;
43474642e01fSmrg	  *)
43484642e01fSmrg	    func_fatal_error "only absolute run-paths are allowed"
43494642e01fSmrg	    ;;
43504642e01fSmrg	  esac
43514642e01fSmrg	  if test "$prev" = rpath; then
43524642e01fSmrg	    case "$rpath " in
43534642e01fSmrg	    *" $arg "*) ;;
43544642e01fSmrg	    *) rpath="$rpath $arg" ;;
43554642e01fSmrg	    esac
435605b261ecSmrg	  else
43574642e01fSmrg	    case "$xrpath " in
43584642e01fSmrg	    *" $arg "*) ;;
43594642e01fSmrg	    *) xrpath="$xrpath $arg" ;;
43604642e01fSmrg	    esac
436105b261ecSmrg	  fi
43624642e01fSmrg	  prev=
43634642e01fSmrg	  continue
43644642e01fSmrg	  ;;
43654642e01fSmrg	shrext)
43664642e01fSmrg	  shrext_cmds="$arg"
43674642e01fSmrg	  prev=
43684642e01fSmrg	  continue
43694642e01fSmrg	  ;;
43704642e01fSmrg	weak)
43714642e01fSmrg	  weak_libs="$weak_libs $arg"
43724642e01fSmrg	  prev=
43734642e01fSmrg	  continue
43744642e01fSmrg	  ;;
43754642e01fSmrg	xcclinker)
43764642e01fSmrg	  linker_flags="$linker_flags $qarg"
43774642e01fSmrg	  compiler_flags="$compiler_flags $qarg"
43784642e01fSmrg	  prev=
43794642e01fSmrg	  func_append compile_command " $qarg"
43804642e01fSmrg	  func_append finalize_command " $qarg"
43814642e01fSmrg	  continue
43824642e01fSmrg	  ;;
43834642e01fSmrg	xcompiler)
43844642e01fSmrg	  compiler_flags="$compiler_flags $qarg"
43854642e01fSmrg	  prev=
43864642e01fSmrg	  func_append compile_command " $qarg"
43874642e01fSmrg	  func_append finalize_command " $qarg"
43884642e01fSmrg	  continue
43894642e01fSmrg	  ;;
43904642e01fSmrg	xlinker)
43914642e01fSmrg	  linker_flags="$linker_flags $qarg"
43924642e01fSmrg	  compiler_flags="$compiler_flags $wl$qarg"
43934642e01fSmrg	  prev=
43944642e01fSmrg	  func_append compile_command " $wl$qarg"
43954642e01fSmrg	  func_append finalize_command " $wl$qarg"
43964642e01fSmrg	  continue
43974642e01fSmrg	  ;;
43984642e01fSmrg	*)
43994642e01fSmrg	  eval "$prev=\"\$arg\""
44004642e01fSmrg	  prev=
44014642e01fSmrg	  continue
44024642e01fSmrg	  ;;
440305b261ecSmrg	esac
44044642e01fSmrg      fi # test -n "$prev"
440505b261ecSmrg
44064642e01fSmrg      prevarg="$arg"
440705b261ecSmrg
44084642e01fSmrg      case $arg in
44094642e01fSmrg      -all-static)
44104642e01fSmrg	if test -n "$link_static_flag"; then
44114642e01fSmrg	  # See comment for -static flag below, for more details.
44124642e01fSmrg	  func_append compile_command " $link_static_flag"
44134642e01fSmrg	  func_append finalize_command " $link_static_flag"
44144642e01fSmrg	fi
44154642e01fSmrg	continue
44164642e01fSmrg	;;
441705b261ecSmrg
44184642e01fSmrg      -allow-undefined)
44194642e01fSmrg	# FIXME: remove this flag sometime in the future.
44204642e01fSmrg	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
44214642e01fSmrg	;;
442205b261ecSmrg
44234642e01fSmrg      -avoid-version)
44244642e01fSmrg	avoid_version=yes
44254642e01fSmrg	continue
44264642e01fSmrg	;;
442705b261ecSmrg
44284642e01fSmrg      -dlopen)
44294642e01fSmrg	prev=dlfiles
44304642e01fSmrg	continue
44314642e01fSmrg	;;
443205b261ecSmrg
44334642e01fSmrg      -dlpreopen)
44344642e01fSmrg	prev=dlprefiles
44354642e01fSmrg	continue
44364642e01fSmrg	;;
443705b261ecSmrg
44384642e01fSmrg      -export-dynamic)
44394642e01fSmrg	export_dynamic=yes
44404642e01fSmrg	continue
44414642e01fSmrg	;;
444205b261ecSmrg
44434642e01fSmrg      -export-symbols | -export-symbols-regex)
44444642e01fSmrg	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
44454642e01fSmrg	  func_fatal_error "more than one -exported-symbols argument is not allowed"
44464642e01fSmrg	fi
44474642e01fSmrg	if test "X$arg" = "X-export-symbols"; then
44484642e01fSmrg	  prev=expsyms
44494642e01fSmrg	else
44504642e01fSmrg	  prev=expsyms_regex
44514642e01fSmrg	fi
44524642e01fSmrg	continue
44534642e01fSmrg	;;
445405b261ecSmrg
44554642e01fSmrg      -framework)
44564642e01fSmrg	prev=framework
44574642e01fSmrg	continue
44584642e01fSmrg	;;
445905b261ecSmrg
44604642e01fSmrg      -inst-prefix-dir)
44614642e01fSmrg	prev=inst_prefix
44624642e01fSmrg	continue
44634642e01fSmrg	;;
446405b261ecSmrg
44654642e01fSmrg      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
44664642e01fSmrg      # so, if we see these flags be careful not to treat them like -L
44674642e01fSmrg      -L[A-Z][A-Z]*:*)
44684642e01fSmrg	case $with_gcc/$host in
44694642e01fSmrg	no/*-*-irix* | /*-*-irix*)
44704642e01fSmrg	  func_append compile_command " $arg"
44714642e01fSmrg	  func_append finalize_command " $arg"
44724642e01fSmrg	  ;;
44734642e01fSmrg	esac
44744642e01fSmrg	continue
44754642e01fSmrg	;;
447605b261ecSmrg
44774642e01fSmrg      -L*)
44784642e01fSmrg	func_stripname '-L' '' "$arg"
44794642e01fSmrg	dir=$func_stripname_result
44804642e01fSmrg	if test -z "$dir"; then
44814642e01fSmrg	  if test "$#" -gt 0; then
44824642e01fSmrg	    func_fatal_error "require no space between \`-L' and \`$1'"
44834642e01fSmrg	  else
44844642e01fSmrg	    func_fatal_error "need path for \`-L' option"
44854642e01fSmrg	  fi
44864642e01fSmrg	fi
44874642e01fSmrg	# We need an absolute path.
44884642e01fSmrg	case $dir in
44894642e01fSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
44904642e01fSmrg	*)
44914642e01fSmrg	  absdir=`cd "$dir" && pwd`
44924642e01fSmrg	  test -z "$absdir" && \
44934642e01fSmrg	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
44944642e01fSmrg	  dir="$absdir"
44954642e01fSmrg	  ;;
44964642e01fSmrg	esac
44974642e01fSmrg	case "$deplibs " in
44984642e01fSmrg	*" -L$dir "*) ;;
44994642e01fSmrg	*)
45004642e01fSmrg	  deplibs="$deplibs -L$dir"
45014642e01fSmrg	  lib_search_path="$lib_search_path $dir"
45024642e01fSmrg	  ;;
45034642e01fSmrg	esac
45044642e01fSmrg	case $host in
45054642e01fSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
45064642e01fSmrg	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
45074642e01fSmrg	  case :$dllsearchpath: in
45084642e01fSmrg	  *":$dir:"*) ;;
45094642e01fSmrg	  ::) dllsearchpath=$dir;;
45104642e01fSmrg	  *) dllsearchpath="$dllsearchpath:$dir";;
45114642e01fSmrg	  esac
45124642e01fSmrg	  case :$dllsearchpath: in
45134642e01fSmrg	  *":$testbindir:"*) ;;
45144642e01fSmrg	  ::) dllsearchpath=$testbindir;;
45154642e01fSmrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
45164642e01fSmrg	  esac
45174642e01fSmrg	  ;;
45184642e01fSmrg	esac
45194642e01fSmrg	continue
45204642e01fSmrg	;;
452105b261ecSmrg
45224642e01fSmrg      -l*)
45234642e01fSmrg	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
45244642e01fSmrg	  case $host in
45254642e01fSmrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
45264642e01fSmrg	    # These systems don't actually have a C or math library (as such)
45274642e01fSmrg	    continue
45284642e01fSmrg	    ;;
45294642e01fSmrg	  *-*-os2*)
45304642e01fSmrg	    # These systems don't actually have a C library (as such)
45314642e01fSmrg	    test "X$arg" = "X-lc" && continue
45324642e01fSmrg	    ;;
45334642e01fSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
45344642e01fSmrg	    # Do not include libc due to us having libc/libc_r.
45354642e01fSmrg	    test "X$arg" = "X-lc" && continue
45364642e01fSmrg	    ;;
45374642e01fSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
45384642e01fSmrg	    # Rhapsody C and math libraries are in the System framework
45394642e01fSmrg	    deplibs="$deplibs System.ltframework"
45404642e01fSmrg	    continue
45414642e01fSmrg	    ;;
45424642e01fSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
45434642e01fSmrg	    # Causes problems with __ctype
45444642e01fSmrg	    test "X$arg" = "X-lc" && continue
45454642e01fSmrg	    ;;
45464642e01fSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
45474642e01fSmrg	    # Compiler inserts libc in the correct place for threads to work
45484642e01fSmrg	    test "X$arg" = "X-lc" && continue
45494642e01fSmrg	    ;;
45504642e01fSmrg	  esac
45514642e01fSmrg	elif test "X$arg" = "X-lc_r"; then
45524642e01fSmrg	 case $host in
45534642e01fSmrg	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
45544642e01fSmrg	   # Do not include libc_r directly, use -pthread flag.
45554642e01fSmrg	   continue
45564642e01fSmrg	   ;;
45574642e01fSmrg	 esac
45584642e01fSmrg	fi
45594642e01fSmrg	deplibs="$deplibs $arg"
45604642e01fSmrg	continue
45614642e01fSmrg	;;
456205b261ecSmrg
45634642e01fSmrg      -module)
45644642e01fSmrg	module=yes
45654642e01fSmrg	continue
45664642e01fSmrg	;;
456705b261ecSmrg
45684642e01fSmrg      # Tru64 UNIX uses -model [arg] to determine the layout of C++
45694642e01fSmrg      # classes, name mangling, and exception handling.
45704642e01fSmrg      # Darwin uses the -arch flag to determine output architecture.
45714642e01fSmrg      -model|-arch|-isysroot)
45724642e01fSmrg	compiler_flags="$compiler_flags $arg"
45734642e01fSmrg	func_append compile_command " $arg"
45744642e01fSmrg	func_append finalize_command " $arg"
45754642e01fSmrg	prev=xcompiler
45764642e01fSmrg	continue
45774642e01fSmrg	;;
457805b261ecSmrg
45794642e01fSmrg      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
45804642e01fSmrg	compiler_flags="$compiler_flags $arg"
45814642e01fSmrg	func_append compile_command " $arg"
45824642e01fSmrg	func_append finalize_command " $arg"
45834642e01fSmrg	case "$new_inherited_linker_flags " in
45844642e01fSmrg	    *" $arg "*) ;;
45854642e01fSmrg	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
45864642e01fSmrg	esac
45874642e01fSmrg	continue
45884642e01fSmrg	;;
458905b261ecSmrg
45904642e01fSmrg      -multi_module)
45914642e01fSmrg	single_module="${wl}-multi_module"
45924642e01fSmrg	continue
45934642e01fSmrg	;;
459405b261ecSmrg
45954642e01fSmrg      -no-fast-install)
45964642e01fSmrg	fast_install=no
45974642e01fSmrg	continue
45984642e01fSmrg	;;
459905b261ecSmrg
46004642e01fSmrg      -no-install)
46014642e01fSmrg	case $host in
46024642e01fSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
46034642e01fSmrg	  # The PATH hackery in wrapper scripts is required on Windows
46044642e01fSmrg	  # and Darwin in order for the loader to find any dlls it needs.
46054642e01fSmrg	  func_warning "\`-no-install' is ignored for $host"
46064642e01fSmrg	  func_warning "assuming \`-no-fast-install' instead"
46074642e01fSmrg	  fast_install=no
46084642e01fSmrg	  ;;
46094642e01fSmrg	*) no_install=yes ;;
46104642e01fSmrg	esac
46114642e01fSmrg	continue
46124642e01fSmrg	;;
461305b261ecSmrg
46144642e01fSmrg      -no-undefined)
46154642e01fSmrg	allow_undefined=no
46164642e01fSmrg	continue
46174642e01fSmrg	;;
461805b261ecSmrg
46194642e01fSmrg      -objectlist)
46204642e01fSmrg	prev=objectlist
46214642e01fSmrg	continue
46224642e01fSmrg	;;
462305b261ecSmrg
46244642e01fSmrg      -o) prev=output ;;
462505b261ecSmrg
46264642e01fSmrg      -precious-files-regex)
46274642e01fSmrg	prev=precious_regex
46284642e01fSmrg	continue
46294642e01fSmrg	;;
463005b261ecSmrg
46314642e01fSmrg      -release)
46324642e01fSmrg	prev=release
46334642e01fSmrg	continue
46344642e01fSmrg	;;
463505b261ecSmrg
46364642e01fSmrg      -rpath)
46374642e01fSmrg	prev=rpath
46384642e01fSmrg	continue
46394642e01fSmrg	;;
464005b261ecSmrg
46414642e01fSmrg      -R)
46424642e01fSmrg	prev=xrpath
46434642e01fSmrg	continue
46444642e01fSmrg	;;
464505b261ecSmrg
46464642e01fSmrg      -R*)
46474642e01fSmrg	func_stripname '-R' '' "$arg"
46484642e01fSmrg	dir=$func_stripname_result
46494642e01fSmrg	# We need an absolute path.
46504642e01fSmrg	case $dir in
46514642e01fSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
46524642e01fSmrg	*)
46534642e01fSmrg	  func_fatal_error "only absolute run-paths are allowed"
46544642e01fSmrg	  ;;
46554642e01fSmrg	esac
46564642e01fSmrg	case "$xrpath " in
46574642e01fSmrg	*" $dir "*) ;;
46584642e01fSmrg	*) xrpath="$xrpath $dir" ;;
46594642e01fSmrg	esac
46604642e01fSmrg	continue
46614642e01fSmrg	;;
466205b261ecSmrg
46634642e01fSmrg      -shared)
46644642e01fSmrg	# The effects of -shared are defined in a previous loop.
46654642e01fSmrg	continue
46664642e01fSmrg	;;
466705b261ecSmrg
46684642e01fSmrg      -shrext)
46694642e01fSmrg	prev=shrext
46704642e01fSmrg	continue
46714642e01fSmrg	;;
467205b261ecSmrg
46734642e01fSmrg      -static | -static-libtool-libs)
46744642e01fSmrg	# The effects of -static are defined in a previous loop.
46754642e01fSmrg	# We used to do the same as -all-static on platforms that
46764642e01fSmrg	# didn't have a PIC flag, but the assumption that the effects
46774642e01fSmrg	# would be equivalent was wrong.  It would break on at least
46784642e01fSmrg	# Digital Unix and AIX.
46794642e01fSmrg	continue
46804642e01fSmrg	;;
468105b261ecSmrg
46824642e01fSmrg      -thread-safe)
46834642e01fSmrg	thread_safe=yes
46844642e01fSmrg	continue
46854642e01fSmrg	;;
468605b261ecSmrg
46874642e01fSmrg      -version-info)
46884642e01fSmrg	prev=vinfo
46894642e01fSmrg	continue
46904642e01fSmrg	;;
469105b261ecSmrg
46924642e01fSmrg      -version-number)
46934642e01fSmrg	prev=vinfo
46944642e01fSmrg	vinfo_number=yes
46954642e01fSmrg	continue
46964642e01fSmrg	;;
469705b261ecSmrg
46984642e01fSmrg      -weak)
46994642e01fSmrg        prev=weak
47004642e01fSmrg	continue
47014642e01fSmrg	;;
470205b261ecSmrg
47034642e01fSmrg      -Wc,*)
47044642e01fSmrg	func_stripname '-Wc,' '' "$arg"
47054642e01fSmrg	args=$func_stripname_result
47064642e01fSmrg	arg=
47074642e01fSmrg	save_ifs="$IFS"; IFS=','
47084642e01fSmrg	for flag in $args; do
47094642e01fSmrg	  IFS="$save_ifs"
47104642e01fSmrg          func_quote_for_eval "$flag"
47114642e01fSmrg	  arg="$arg $wl$func_quote_for_eval_result"
47124642e01fSmrg	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
47134642e01fSmrg	done
47144642e01fSmrg	IFS="$save_ifs"
47154642e01fSmrg	func_stripname ' ' '' "$arg"
47164642e01fSmrg	arg=$func_stripname_result
47174642e01fSmrg	;;
471805b261ecSmrg
47194642e01fSmrg      -Wl,*)
47204642e01fSmrg	func_stripname '-Wl,' '' "$arg"
47214642e01fSmrg	args=$func_stripname_result
47224642e01fSmrg	arg=
47234642e01fSmrg	save_ifs="$IFS"; IFS=','
47244642e01fSmrg	for flag in $args; do
47254642e01fSmrg	  IFS="$save_ifs"
47264642e01fSmrg          func_quote_for_eval "$flag"
47274642e01fSmrg	  arg="$arg $wl$func_quote_for_eval_result"
47284642e01fSmrg	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
47294642e01fSmrg	  linker_flags="$linker_flags $func_quote_for_eval_result"
47304642e01fSmrg	done
47314642e01fSmrg	IFS="$save_ifs"
47324642e01fSmrg	func_stripname ' ' '' "$arg"
47334642e01fSmrg	arg=$func_stripname_result
47344642e01fSmrg	;;
473505b261ecSmrg
47364642e01fSmrg      -Xcompiler)
47374642e01fSmrg	prev=xcompiler
47384642e01fSmrg	continue
47394642e01fSmrg	;;
474005b261ecSmrg
47414642e01fSmrg      -Xlinker)
47424642e01fSmrg	prev=xlinker
47434642e01fSmrg	continue
47444642e01fSmrg	;;
474505b261ecSmrg
47464642e01fSmrg      -XCClinker)
47474642e01fSmrg	prev=xcclinker
47484642e01fSmrg	continue
47494642e01fSmrg	;;
475005b261ecSmrg
47514642e01fSmrg      # -msg_* for osf cc
47524642e01fSmrg      -msg_*)
47534642e01fSmrg	func_quote_for_eval "$arg"
47544642e01fSmrg	arg="$func_quote_for_eval_result"
47554642e01fSmrg	;;
475605b261ecSmrg
47574642e01fSmrg      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
47584642e01fSmrg      # -r[0-9][0-9]* specifies the processor on the SGI compiler
47594642e01fSmrg      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
47604642e01fSmrg      # +DA*, +DD* enable 64-bit mode on the HP compiler
47614642e01fSmrg      # -q* pass through compiler args for the IBM compiler
47624642e01fSmrg      # -m*, -t[45]*, -txscale* pass through architecture-specific
47634642e01fSmrg      # compiler args for GCC
47644642e01fSmrg      # -F/path gives path to uninstalled frameworks, gcc on darwin
47654642e01fSmrg      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
47664642e01fSmrg      # @file GCC response files
47674642e01fSmrg      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
47684642e01fSmrg      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
47694642e01fSmrg        func_quote_for_eval "$arg"
47704642e01fSmrg	arg="$func_quote_for_eval_result"
47714642e01fSmrg        func_append compile_command " $arg"
47724642e01fSmrg        func_append finalize_command " $arg"
47734642e01fSmrg        compiler_flags="$compiler_flags $arg"
47744642e01fSmrg        continue
47754642e01fSmrg        ;;
477605b261ecSmrg
47774642e01fSmrg      # Some other compiler flag.
47784642e01fSmrg      -* | +*)
47794642e01fSmrg        func_quote_for_eval "$arg"
47804642e01fSmrg	arg="$func_quote_for_eval_result"
47814642e01fSmrg	;;
478205b261ecSmrg
47834642e01fSmrg      *.$objext)
47844642e01fSmrg	# A standard object.
47854642e01fSmrg	objs="$objs $arg"
47864642e01fSmrg	;;
478705b261ecSmrg
47884642e01fSmrg      *.lo)
47894642e01fSmrg	# A libtool-controlled object.
479005b261ecSmrg
47914642e01fSmrg	# Check to see that this really is a libtool object.
47924642e01fSmrg	if func_lalib_unsafe_p "$arg"; then
47934642e01fSmrg	  pic_object=
47944642e01fSmrg	  non_pic_object=
479505b261ecSmrg
47964642e01fSmrg	  # Read the .lo file
47974642e01fSmrg	  func_source "$arg"
479805b261ecSmrg
47994642e01fSmrg	  if test -z "$pic_object" ||
48004642e01fSmrg	     test -z "$non_pic_object" ||
48014642e01fSmrg	     test "$pic_object" = none &&
48024642e01fSmrg	     test "$non_pic_object" = none; then
48034642e01fSmrg	    func_fatal_error "cannot find name of object for \`$arg'"
48044642e01fSmrg	  fi
480505b261ecSmrg
48064642e01fSmrg	  # Extract subdirectory from the argument.
48074642e01fSmrg	  func_dirname "$arg" "/" ""
48084642e01fSmrg	  xdir="$func_dirname_result"
480905b261ecSmrg
48104642e01fSmrg	  if test "$pic_object" != none; then
48114642e01fSmrg	    # Prepend the subdirectory the object is found in.
48124642e01fSmrg	    pic_object="$xdir$pic_object"
481305b261ecSmrg
48144642e01fSmrg	    if test "$prev" = dlfiles; then
48154642e01fSmrg	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
48164642e01fSmrg		dlfiles="$dlfiles $pic_object"
48174642e01fSmrg		prev=
48184642e01fSmrg		continue
48194642e01fSmrg	      else
48204642e01fSmrg		# If libtool objects are unsupported, then we need to preload.
48214642e01fSmrg		prev=dlprefiles
48224642e01fSmrg	      fi
48234642e01fSmrg	    fi
482405b261ecSmrg
48254642e01fSmrg	    # CHECK ME:  I think I busted this.  -Ossama
48264642e01fSmrg	    if test "$prev" = dlprefiles; then
48274642e01fSmrg	      # Preload the old-style object.
48284642e01fSmrg	      dlprefiles="$dlprefiles $pic_object"
48294642e01fSmrg	      prev=
48304642e01fSmrg	    fi
483105b261ecSmrg
48324642e01fSmrg	    # A PIC object.
48334642e01fSmrg	    func_append libobjs " $pic_object"
48344642e01fSmrg	    arg="$pic_object"
48354642e01fSmrg	  fi
483605b261ecSmrg
48374642e01fSmrg	  # Non-PIC object.
48384642e01fSmrg	  if test "$non_pic_object" != none; then
48394642e01fSmrg	    # Prepend the subdirectory the object is found in.
48404642e01fSmrg	    non_pic_object="$xdir$non_pic_object"
484105b261ecSmrg
48424642e01fSmrg	    # A standard non-PIC object
48434642e01fSmrg	    func_append non_pic_objects " $non_pic_object"
48444642e01fSmrg	    if test -z "$pic_object" || test "$pic_object" = none ; then
48454642e01fSmrg	      arg="$non_pic_object"
48464642e01fSmrg	    fi
48474642e01fSmrg	  else
48484642e01fSmrg	    # If the PIC object exists, use it instead.
48494642e01fSmrg	    # $xdir was prepended to $pic_object above.
48504642e01fSmrg	    non_pic_object="$pic_object"
48514642e01fSmrg	    func_append non_pic_objects " $non_pic_object"
48524642e01fSmrg	  fi
48534642e01fSmrg	else
48544642e01fSmrg	  # Only an error if not doing a dry-run.
48554642e01fSmrg	  if $opt_dry_run; then
48564642e01fSmrg	    # Extract subdirectory from the argument.
48574642e01fSmrg	    func_dirname "$arg" "/" ""
48584642e01fSmrg	    xdir="$func_dirname_result"
48594642e01fSmrg
48604642e01fSmrg	    func_lo2o "$arg"
48614642e01fSmrg	    pic_object=$xdir$objdir/$func_lo2o_result
48624642e01fSmrg	    non_pic_object=$xdir$func_lo2o_result
48634642e01fSmrg	    func_append libobjs " $pic_object"
48644642e01fSmrg	    func_append non_pic_objects " $non_pic_object"
48654642e01fSmrg	  else
48664642e01fSmrg	    func_fatal_error "\`$arg' is not a valid libtool object"
48674642e01fSmrg	  fi
48684642e01fSmrg	fi
48694642e01fSmrg	;;
48704642e01fSmrg
48714642e01fSmrg      *.$libext)
48724642e01fSmrg	# An archive.
48734642e01fSmrg	deplibs="$deplibs $arg"
48744642e01fSmrg	old_deplibs="$old_deplibs $arg"
48754642e01fSmrg	continue
48764642e01fSmrg	;;
48774642e01fSmrg
48784642e01fSmrg      *.la)
48794642e01fSmrg	# A libtool-controlled library.
48804642e01fSmrg
48814642e01fSmrg	if test "$prev" = dlfiles; then
48824642e01fSmrg	  # This library was specified with -dlopen.
48834642e01fSmrg	  dlfiles="$dlfiles $arg"
48844642e01fSmrg	  prev=
48854642e01fSmrg	elif test "$prev" = dlprefiles; then
48864642e01fSmrg	  # The library was specified with -dlpreopen.
48874642e01fSmrg	  dlprefiles="$dlprefiles $arg"
48884642e01fSmrg	  prev=
48894642e01fSmrg	else
48904642e01fSmrg	  deplibs="$deplibs $arg"
48914642e01fSmrg	fi
48924642e01fSmrg	continue
48934642e01fSmrg	;;
48944642e01fSmrg
48954642e01fSmrg      # Some other compiler argument.
48964642e01fSmrg      *)
48974642e01fSmrg	# Unknown arguments in both finalize_command and compile_command need
48984642e01fSmrg	# to be aesthetically quoted because they are evaled later.
48994642e01fSmrg	func_quote_for_eval "$arg"
49004642e01fSmrg	arg="$func_quote_for_eval_result"
49014642e01fSmrg	;;
49024642e01fSmrg      esac # arg
49034642e01fSmrg
49044642e01fSmrg      # Now actually substitute the argument into the commands.
49054642e01fSmrg      if test -n "$arg"; then
49064642e01fSmrg	func_append compile_command " $arg"
49074642e01fSmrg	func_append finalize_command " $arg"
49084642e01fSmrg      fi
49094642e01fSmrg    done # argument parsing loop
49104642e01fSmrg
49114642e01fSmrg    test -n "$prev" && \
49124642e01fSmrg      func_fatal_help "the \`$prevarg' option requires an argument"
49134642e01fSmrg
49144642e01fSmrg    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
49154642e01fSmrg      eval arg=\"$export_dynamic_flag_spec\"
49164642e01fSmrg      func_append compile_command " $arg"
49174642e01fSmrg      func_append finalize_command " $arg"
49184642e01fSmrg    fi
49194642e01fSmrg
49204642e01fSmrg    oldlibs=
49214642e01fSmrg    # calculate the name of the file, without its directory
49224642e01fSmrg    func_basename "$output"
49234642e01fSmrg    outputname="$func_basename_result"
49244642e01fSmrg    libobjs_save="$libobjs"
49254642e01fSmrg
49264642e01fSmrg    if test -n "$shlibpath_var"; then
49274642e01fSmrg      # get the directories listed in $shlibpath_var
49284642e01fSmrg      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
49294642e01fSmrg    else
49304642e01fSmrg      shlib_search_path=
49314642e01fSmrg    fi
49324642e01fSmrg    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
49334642e01fSmrg    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
49344642e01fSmrg
49354642e01fSmrg    func_dirname "$output" "/" ""
49364642e01fSmrg    output_objdir="$func_dirname_result$objdir"
49374642e01fSmrg    # Create the object directory.
49384642e01fSmrg    func_mkdir_p "$output_objdir"
49394642e01fSmrg
49404642e01fSmrg    # Determine the type of output
49414642e01fSmrg    case $output in
49424642e01fSmrg    "")
49434642e01fSmrg      func_fatal_help "you must specify an output file"
49444642e01fSmrg      ;;
49454642e01fSmrg    *.$libext) linkmode=oldlib ;;
49464642e01fSmrg    *.lo | *.$objext) linkmode=obj ;;
49474642e01fSmrg    *.la) linkmode=lib ;;
49484642e01fSmrg    *) linkmode=prog ;; # Anything else should be a program.
49494642e01fSmrg    esac
49504642e01fSmrg
49514642e01fSmrg    specialdeplibs=
49524642e01fSmrg
49534642e01fSmrg    libs=
49544642e01fSmrg    # Find all interdependent deplibs by searching for libraries
49554642e01fSmrg    # that are linked more than once (e.g. -la -lb -la)
49564642e01fSmrg    for deplib in $deplibs; do
49574642e01fSmrg      if $opt_duplicate_deps ; then
49584642e01fSmrg	case "$libs " in
49594642e01fSmrg	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
49604642e01fSmrg	esac
49614642e01fSmrg      fi
49624642e01fSmrg      libs="$libs $deplib"
49634642e01fSmrg    done
49644642e01fSmrg
49654642e01fSmrg    if test "$linkmode" = lib; then
49664642e01fSmrg      libs="$predeps $libs $compiler_lib_search_path $postdeps"
49674642e01fSmrg
49684642e01fSmrg      # Compute libraries that are listed more than once in $predeps
49694642e01fSmrg      # $postdeps and mark them as special (i.e., whose duplicates are
49704642e01fSmrg      # not to be eliminated).
49714642e01fSmrg      pre_post_deps=
49724642e01fSmrg      if $opt_duplicate_compiler_generated_deps; then
49734642e01fSmrg	for pre_post_dep in $predeps $postdeps; do
49744642e01fSmrg	  case "$pre_post_deps " in
49754642e01fSmrg	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
49764642e01fSmrg	  esac
49774642e01fSmrg	  pre_post_deps="$pre_post_deps $pre_post_dep"
49784642e01fSmrg	done
49794642e01fSmrg      fi
49804642e01fSmrg      pre_post_deps=
49814642e01fSmrg    fi
49824642e01fSmrg
49834642e01fSmrg    deplibs=
49844642e01fSmrg    newdependency_libs=
49854642e01fSmrg    newlib_search_path=
49864642e01fSmrg    need_relink=no # whether we're linking any uninstalled libtool libraries
49874642e01fSmrg    notinst_deplibs= # not-installed libtool libraries
49884642e01fSmrg    notinst_path= # paths that contain not-installed libtool libraries
49894642e01fSmrg
49904642e01fSmrg    case $linkmode in
49914642e01fSmrg    lib)
49924642e01fSmrg	passes="conv dlpreopen link"
49934642e01fSmrg	for file in $dlfiles $dlprefiles; do
49944642e01fSmrg	  case $file in
49954642e01fSmrg	  *.la) ;;
49964642e01fSmrg	  *)
49974642e01fSmrg	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
49984642e01fSmrg	    ;;
49994642e01fSmrg	  esac
50004642e01fSmrg	done
50014642e01fSmrg	;;
50024642e01fSmrg    prog)
50034642e01fSmrg	compile_deplibs=
50044642e01fSmrg	finalize_deplibs=
50054642e01fSmrg	alldeplibs=no
50064642e01fSmrg	newdlfiles=
50074642e01fSmrg	newdlprefiles=
50084642e01fSmrg	passes="conv scan dlopen dlpreopen link"
50094642e01fSmrg	;;
50104642e01fSmrg    *)  passes="conv"
50114642e01fSmrg	;;
50124642e01fSmrg    esac
50134642e01fSmrg
50144642e01fSmrg    for pass in $passes; do
50154642e01fSmrg      # The preopen pass in lib mode reverses $deplibs; put it back here
50164642e01fSmrg      # so that -L comes before libs that need it for instance...
50174642e01fSmrg      if test "$linkmode,$pass" = "lib,link"; then
50184642e01fSmrg	## FIXME: Find the place where the list is rebuilt in the wrong
50194642e01fSmrg	##        order, and fix it there properly
50204642e01fSmrg        tmp_deplibs=
50214642e01fSmrg	for deplib in $deplibs; do
50224642e01fSmrg	  tmp_deplibs="$deplib $tmp_deplibs"
50234642e01fSmrg	done
50244642e01fSmrg	deplibs="$tmp_deplibs"
50254642e01fSmrg      fi
50264642e01fSmrg
50274642e01fSmrg      if test "$linkmode,$pass" = "lib,link" ||
50284642e01fSmrg	 test "$linkmode,$pass" = "prog,scan"; then
50294642e01fSmrg	libs="$deplibs"
50304642e01fSmrg	deplibs=
50314642e01fSmrg      fi
50324642e01fSmrg      if test "$linkmode" = prog; then
50334642e01fSmrg	case $pass in
50344642e01fSmrg	dlopen) libs="$dlfiles" ;;
50354642e01fSmrg	dlpreopen) libs="$dlprefiles" ;;
50364642e01fSmrg	link)
50374642e01fSmrg	  libs="$deplibs %DEPLIBS%"
50384642e01fSmrg	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
50394642e01fSmrg	  ;;
50404642e01fSmrg	esac
50414642e01fSmrg      fi
50424642e01fSmrg      if test "$linkmode,$pass" = "lib,dlpreopen"; then
50434642e01fSmrg	# Collect and forward deplibs of preopened libtool libs
50444642e01fSmrg	for lib in $dlprefiles; do
50454642e01fSmrg	  # Ignore non-libtool-libs
50464642e01fSmrg	  dependency_libs=
50474642e01fSmrg	  case $lib in
50484642e01fSmrg	  *.la)	func_source "$lib" ;;
50494642e01fSmrg	  esac
50504642e01fSmrg
50514642e01fSmrg	  # Collect preopened libtool deplibs, except any this library
50524642e01fSmrg	  # has declared as weak libs
50534642e01fSmrg	  for deplib in $dependency_libs; do
50544642e01fSmrg            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
50554642e01fSmrg	    case " $weak_libs " in
50564642e01fSmrg	    *" $deplib_base "*) ;;
50574642e01fSmrg	    *) deplibs="$deplibs $deplib" ;;
50584642e01fSmrg	    esac
50594642e01fSmrg	  done
50604642e01fSmrg	done
50614642e01fSmrg	libs="$dlprefiles"
50624642e01fSmrg      fi
50634642e01fSmrg      if test "$pass" = dlopen; then
50644642e01fSmrg	# Collect dlpreopened libraries
50654642e01fSmrg	save_deplibs="$deplibs"
50664642e01fSmrg	deplibs=
50674642e01fSmrg      fi
50684642e01fSmrg
50694642e01fSmrg      for deplib in $libs; do
50704642e01fSmrg	lib=
50714642e01fSmrg	found=no
50724642e01fSmrg	case $deplib in
50734642e01fSmrg	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
50744642e01fSmrg	  if test "$linkmode,$pass" = "prog,link"; then
50754642e01fSmrg	    compile_deplibs="$deplib $compile_deplibs"
50764642e01fSmrg	    finalize_deplibs="$deplib $finalize_deplibs"
50774642e01fSmrg	  else
50784642e01fSmrg	    compiler_flags="$compiler_flags $deplib"
50794642e01fSmrg	    if test "$linkmode" = lib ; then
50804642e01fSmrg		case "$new_inherited_linker_flags " in
50814642e01fSmrg		    *" $deplib "*) ;;
50824642e01fSmrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
50834642e01fSmrg		esac
50844642e01fSmrg	    fi
50854642e01fSmrg	  fi
50864642e01fSmrg	  continue
50874642e01fSmrg	  ;;
50884642e01fSmrg	-l*)
50894642e01fSmrg	  if test "$linkmode" != lib && test "$linkmode" != prog; then
50904642e01fSmrg	    func_warning "\`-l' is ignored for archives/objects"
50914642e01fSmrg	    continue
50924642e01fSmrg	  fi
50934642e01fSmrg	  func_stripname '-l' '' "$deplib"
50944642e01fSmrg	  name=$func_stripname_result
50954642e01fSmrg	  if test "$linkmode" = lib; then
50964642e01fSmrg	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
50974642e01fSmrg	  else
50984642e01fSmrg	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
50994642e01fSmrg	  fi
51004642e01fSmrg	  for searchdir in $searchdirs; do
51014642e01fSmrg	    for search_ext in .la $std_shrext .so .a; do
51024642e01fSmrg	      # Search the libtool library
51034642e01fSmrg	      lib="$searchdir/lib${name}${search_ext}"
51044642e01fSmrg	      if test -f "$lib"; then
51054642e01fSmrg		if test "$search_ext" = ".la"; then
51064642e01fSmrg		  found=yes
51074642e01fSmrg		else
51084642e01fSmrg		  found=no
51094642e01fSmrg		fi
51104642e01fSmrg		break 2
51114642e01fSmrg	      fi
51124642e01fSmrg	    done
51134642e01fSmrg	  done
51144642e01fSmrg	  if test "$found" != yes; then
51154642e01fSmrg	    # deplib doesn't seem to be a libtool library
51164642e01fSmrg	    if test "$linkmode,$pass" = "prog,link"; then
51174642e01fSmrg	      compile_deplibs="$deplib $compile_deplibs"
51184642e01fSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
51194642e01fSmrg	    else
51204642e01fSmrg	      deplibs="$deplib $deplibs"
51214642e01fSmrg	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
51224642e01fSmrg	    fi
51234642e01fSmrg	    continue
51244642e01fSmrg	  else # deplib is a libtool library
51254642e01fSmrg	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
51264642e01fSmrg	    # We need to do some special things here, and not later.
51274642e01fSmrg	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
51284642e01fSmrg	      case " $predeps $postdeps " in
51294642e01fSmrg	      *" $deplib "*)
51304642e01fSmrg		if func_lalib_p "$lib"; then
51314642e01fSmrg		  library_names=
51324642e01fSmrg		  old_library=
51334642e01fSmrg		  func_source "$lib"
51344642e01fSmrg		  for l in $old_library $library_names; do
51354642e01fSmrg		    ll="$l"
51364642e01fSmrg		  done
51374642e01fSmrg		  if test "X$ll" = "X$old_library" ; then # only static version available
51384642e01fSmrg		    found=no
51394642e01fSmrg		    func_dirname "$lib" "" "."
51404642e01fSmrg		    ladir="$func_dirname_result"
51414642e01fSmrg		    lib=$ladir/$old_library
51424642e01fSmrg		    if test "$linkmode,$pass" = "prog,link"; then
51434642e01fSmrg		      compile_deplibs="$deplib $compile_deplibs"
51444642e01fSmrg		      finalize_deplibs="$deplib $finalize_deplibs"
51454642e01fSmrg		    else
51464642e01fSmrg		      deplibs="$deplib $deplibs"
51474642e01fSmrg		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
51484642e01fSmrg		    fi
51494642e01fSmrg		    continue
51504642e01fSmrg		  fi
51514642e01fSmrg		fi
51524642e01fSmrg		;;
51534642e01fSmrg	      *) ;;
51544642e01fSmrg	      esac
51554642e01fSmrg	    fi
51564642e01fSmrg	  fi
51574642e01fSmrg	  ;; # -l
51584642e01fSmrg	*.ltframework)
51594642e01fSmrg	  if test "$linkmode,$pass" = "prog,link"; then
51604642e01fSmrg	    compile_deplibs="$deplib $compile_deplibs"
51614642e01fSmrg	    finalize_deplibs="$deplib $finalize_deplibs"
51624642e01fSmrg	  else
51634642e01fSmrg	    deplibs="$deplib $deplibs"
51644642e01fSmrg	    if test "$linkmode" = lib ; then
51654642e01fSmrg		case "$new_inherited_linker_flags " in
51664642e01fSmrg		    *" $deplib "*) ;;
51674642e01fSmrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
51684642e01fSmrg		esac
51694642e01fSmrg	    fi
51704642e01fSmrg	  fi
51714642e01fSmrg	  continue
51724642e01fSmrg	  ;;
51734642e01fSmrg	-L*)
51744642e01fSmrg	  case $linkmode in
51754642e01fSmrg	  lib)
51764642e01fSmrg	    deplibs="$deplib $deplibs"
51774642e01fSmrg	    test "$pass" = conv && continue
51784642e01fSmrg	    newdependency_libs="$deplib $newdependency_libs"
51794642e01fSmrg	    func_stripname '-L' '' "$deplib"
51804642e01fSmrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
51814642e01fSmrg	    ;;
51824642e01fSmrg	  prog)
51834642e01fSmrg	    if test "$pass" = conv; then
51844642e01fSmrg	      deplibs="$deplib $deplibs"
51854642e01fSmrg	      continue
51864642e01fSmrg	    fi
51874642e01fSmrg	    if test "$pass" = scan; then
51884642e01fSmrg	      deplibs="$deplib $deplibs"
51894642e01fSmrg	    else
51904642e01fSmrg	      compile_deplibs="$deplib $compile_deplibs"
51914642e01fSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
51924642e01fSmrg	    fi
51934642e01fSmrg	    func_stripname '-L' '' "$deplib"
51944642e01fSmrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
51954642e01fSmrg	    ;;
51964642e01fSmrg	  *)
51974642e01fSmrg	    func_warning "\`-L' is ignored for archives/objects"
51984642e01fSmrg	    ;;
51994642e01fSmrg	  esac # linkmode
52004642e01fSmrg	  continue
52014642e01fSmrg	  ;; # -L
52024642e01fSmrg	-R*)
52034642e01fSmrg	  if test "$pass" = link; then
52044642e01fSmrg	    func_stripname '-R' '' "$deplib"
52054642e01fSmrg	    dir=$func_stripname_result
52064642e01fSmrg	    # Make sure the xrpath contains only unique directories.
52074642e01fSmrg	    case "$xrpath " in
52084642e01fSmrg	    *" $dir "*) ;;
52094642e01fSmrg	    *) xrpath="$xrpath $dir" ;;
52104642e01fSmrg	    esac
52114642e01fSmrg	  fi
52124642e01fSmrg	  deplibs="$deplib $deplibs"
52134642e01fSmrg	  continue
52144642e01fSmrg	  ;;
52154642e01fSmrg	*.la) lib="$deplib" ;;
52164642e01fSmrg	*.$libext)
52174642e01fSmrg	  if test "$pass" = conv; then
52184642e01fSmrg	    deplibs="$deplib $deplibs"
52194642e01fSmrg	    continue
52204642e01fSmrg	  fi
52214642e01fSmrg	  case $linkmode in
52224642e01fSmrg	  lib)
52234642e01fSmrg	    # Linking convenience modules into shared libraries is allowed,
52244642e01fSmrg	    # but linking other static libraries is non-portable.
52254642e01fSmrg	    case " $dlpreconveniencelibs " in
52264642e01fSmrg	    *" $deplib "*) ;;
52274642e01fSmrg	    *)
52284642e01fSmrg	      valid_a_lib=no
52294642e01fSmrg	      case $deplibs_check_method in
52304642e01fSmrg		match_pattern*)
52314642e01fSmrg		  set dummy $deplibs_check_method; shift
52324642e01fSmrg		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
52334642e01fSmrg		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
52344642e01fSmrg		    | $EGREP "$match_pattern_regex" > /dev/null; then
52354642e01fSmrg		    valid_a_lib=yes
52364642e01fSmrg		  fi
52374642e01fSmrg		;;
52384642e01fSmrg		pass_all)
52394642e01fSmrg		  valid_a_lib=yes
52404642e01fSmrg		;;
52414642e01fSmrg	      esac
52424642e01fSmrg	      if test "$valid_a_lib" != yes; then
52434642e01fSmrg		$ECHO
52444642e01fSmrg		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
52454642e01fSmrg		$ECHO "*** I have the capability to make that library automatically link in when"
52464642e01fSmrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
52474642e01fSmrg		$ECHO "*** shared version of the library, which you do not appear to have"
52484642e01fSmrg		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
52494642e01fSmrg		$ECHO "*** that it is just a static archive that I should not use here."
52504642e01fSmrg	      else
52514642e01fSmrg		$ECHO
52524642e01fSmrg		$ECHO "*** Warning: Linking the shared library $output against the"
52534642e01fSmrg		$ECHO "*** static library $deplib is not portable!"
52544642e01fSmrg		deplibs="$deplib $deplibs"
52554642e01fSmrg	      fi
52564642e01fSmrg	      ;;
52574642e01fSmrg	    esac
52584642e01fSmrg	    continue
52594642e01fSmrg	    ;;
52604642e01fSmrg	  prog)
52614642e01fSmrg	    if test "$pass" != link; then
52624642e01fSmrg	      deplibs="$deplib $deplibs"
52634642e01fSmrg	    else
52644642e01fSmrg	      compile_deplibs="$deplib $compile_deplibs"
52654642e01fSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
52664642e01fSmrg	    fi
52674642e01fSmrg	    continue
52684642e01fSmrg	    ;;
52694642e01fSmrg	  esac # linkmode
52704642e01fSmrg	  ;; # *.$libext
52714642e01fSmrg	*.lo | *.$objext)
52724642e01fSmrg	  if test "$pass" = conv; then
52734642e01fSmrg	    deplibs="$deplib $deplibs"
52744642e01fSmrg	  elif test "$linkmode" = prog; then
52754642e01fSmrg	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
52764642e01fSmrg	      # If there is no dlopen support or we're linking statically,
52774642e01fSmrg	      # we need to preload.
52784642e01fSmrg	      newdlprefiles="$newdlprefiles $deplib"
52794642e01fSmrg	      compile_deplibs="$deplib $compile_deplibs"
52804642e01fSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
52814642e01fSmrg	    else
52824642e01fSmrg	      newdlfiles="$newdlfiles $deplib"
52834642e01fSmrg	    fi
52844642e01fSmrg	  fi
52854642e01fSmrg	  continue
52864642e01fSmrg	  ;;
52874642e01fSmrg	%DEPLIBS%)
52884642e01fSmrg	  alldeplibs=yes
52894642e01fSmrg	  continue
52904642e01fSmrg	  ;;
52914642e01fSmrg	esac # case $deplib
52924642e01fSmrg
52934642e01fSmrg	if test "$found" = yes || test -f "$lib"; then :
52944642e01fSmrg	else
52954642e01fSmrg	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
52964642e01fSmrg	fi
52974642e01fSmrg
52984642e01fSmrg	# Check to see that this really is a libtool archive.
52994642e01fSmrg	func_lalib_unsafe_p "$lib" \
53004642e01fSmrg	  || func_fatal_error "\`$lib' is not a valid libtool archive"
53014642e01fSmrg
53024642e01fSmrg	func_dirname "$lib" "" "."
53034642e01fSmrg	ladir="$func_dirname_result"
53044642e01fSmrg
53054642e01fSmrg	dlname=
53064642e01fSmrg	dlopen=
53074642e01fSmrg	dlpreopen=
53084642e01fSmrg	libdir=
53094642e01fSmrg	library_names=
53104642e01fSmrg	old_library=
53114642e01fSmrg	inherited_linker_flags=
53124642e01fSmrg	# If the library was installed with an old release of libtool,
53134642e01fSmrg	# it will not redefine variables installed, or shouldnotlink
53144642e01fSmrg	installed=yes
53154642e01fSmrg	shouldnotlink=no
53164642e01fSmrg	avoidtemprpath=
53174642e01fSmrg
53184642e01fSmrg
53194642e01fSmrg	# Read the .la file
53204642e01fSmrg	func_source "$lib"
53214642e01fSmrg
53224642e01fSmrg	# Convert "-framework foo" to "foo.ltframework"
53234642e01fSmrg	if test -n "$inherited_linker_flags"; then
53244642e01fSmrg	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
53254642e01fSmrg	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
53264642e01fSmrg	    case " $new_inherited_linker_flags " in
53274642e01fSmrg	      *" $tmp_inherited_linker_flag "*) ;;
53284642e01fSmrg	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
53294642e01fSmrg	    esac
53304642e01fSmrg	  done
53314642e01fSmrg	fi
53324642e01fSmrg	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
53334642e01fSmrg	if test "$linkmode,$pass" = "lib,link" ||
53344642e01fSmrg	   test "$linkmode,$pass" = "prog,scan" ||
53354642e01fSmrg	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
53364642e01fSmrg	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
53374642e01fSmrg	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
53384642e01fSmrg	fi
53394642e01fSmrg
53404642e01fSmrg	if test "$pass" = conv; then
53414642e01fSmrg	  # Only check for convenience libraries
53424642e01fSmrg	  deplibs="$lib $deplibs"
53434642e01fSmrg	  if test -z "$libdir"; then
53444642e01fSmrg	    if test -z "$old_library"; then
53454642e01fSmrg	      func_fatal_error "cannot find name of link library for \`$lib'"
53464642e01fSmrg	    fi
53474642e01fSmrg	    # It is a libtool convenience library, so add in its objects.
53484642e01fSmrg	    convenience="$convenience $ladir/$objdir/$old_library"
53494642e01fSmrg	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
53504642e01fSmrg	    tmp_libs=
53514642e01fSmrg	    for deplib in $dependency_libs; do
53524642e01fSmrg	      deplibs="$deplib $deplibs"
53534642e01fSmrg	      if $opt_duplicate_deps ; then
53544642e01fSmrg		case "$tmp_libs " in
53554642e01fSmrg		*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
53564642e01fSmrg		esac
53574642e01fSmrg	      fi
53584642e01fSmrg	      tmp_libs="$tmp_libs $deplib"
53594642e01fSmrg	    done
53604642e01fSmrg	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
53614642e01fSmrg	    func_fatal_error "\`$lib' is not a convenience library"
53624642e01fSmrg	  fi
53634642e01fSmrg	  continue
53644642e01fSmrg	fi # $pass = conv
53654642e01fSmrg
53664642e01fSmrg
53674642e01fSmrg	# Get the name of the library we link against.
53684642e01fSmrg	linklib=
53694642e01fSmrg	for l in $old_library $library_names; do
53704642e01fSmrg	  linklib="$l"
53714642e01fSmrg	done
53724642e01fSmrg	if test -z "$linklib"; then
53734642e01fSmrg	  func_fatal_error "cannot find name of link library for \`$lib'"
53744642e01fSmrg	fi
53754642e01fSmrg
53764642e01fSmrg	# This library was specified with -dlopen.
53774642e01fSmrg	if test "$pass" = dlopen; then
53784642e01fSmrg	  if test -z "$libdir"; then
53794642e01fSmrg	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
53804642e01fSmrg	  fi
53814642e01fSmrg	  if test -z "$dlname" ||
53824642e01fSmrg	     test "$dlopen_support" != yes ||
53834642e01fSmrg	     test "$build_libtool_libs" = no; then
53844642e01fSmrg	    # If there is no dlname, no dlopen support or we're linking
53854642e01fSmrg	    # statically, we need to preload.  We also need to preload any
53864642e01fSmrg	    # dependent libraries so libltdl's deplib preloader doesn't
53874642e01fSmrg	    # bomb out in the load deplibs phase.
53884642e01fSmrg	    dlprefiles="$dlprefiles $lib $dependency_libs"
53894642e01fSmrg	  else
53904642e01fSmrg	    newdlfiles="$newdlfiles $lib"
53914642e01fSmrg	  fi
53924642e01fSmrg	  continue
53934642e01fSmrg	fi # $pass = dlopen
53944642e01fSmrg
53954642e01fSmrg	# We need an absolute path.
53964642e01fSmrg	case $ladir in
53974642e01fSmrg	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
53984642e01fSmrg	*)
53994642e01fSmrg	  abs_ladir=`cd "$ladir" && pwd`
54004642e01fSmrg	  if test -z "$abs_ladir"; then
54014642e01fSmrg	    func_warning "cannot determine absolute directory name of \`$ladir'"
54024642e01fSmrg	    func_warning "passing it literally to the linker, although it might fail"
54034642e01fSmrg	    abs_ladir="$ladir"
54044642e01fSmrg	  fi
54054642e01fSmrg	  ;;
54064642e01fSmrg	esac
54074642e01fSmrg	func_basename "$lib"
54084642e01fSmrg	laname="$func_basename_result"
54094642e01fSmrg
54104642e01fSmrg	# Find the relevant object directory and library name.
54114642e01fSmrg	if test "X$installed" = Xyes; then
54124642e01fSmrg	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
54134642e01fSmrg	    func_warning "library \`$lib' was moved."
54144642e01fSmrg	    dir="$ladir"
54154642e01fSmrg	    absdir="$abs_ladir"
54164642e01fSmrg	    libdir="$abs_ladir"
54174642e01fSmrg	  else
54184642e01fSmrg	    dir="$libdir"
54194642e01fSmrg	    absdir="$libdir"
54204642e01fSmrg	  fi
54214642e01fSmrg	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
54224642e01fSmrg	else
54234642e01fSmrg	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
54244642e01fSmrg	    dir="$ladir"
54254642e01fSmrg	    absdir="$abs_ladir"
54264642e01fSmrg	    # Remove this search path later
54274642e01fSmrg	    notinst_path="$notinst_path $abs_ladir"
54284642e01fSmrg	  else
54294642e01fSmrg	    dir="$ladir/$objdir"
54304642e01fSmrg	    absdir="$abs_ladir/$objdir"
54314642e01fSmrg	    # Remove this search path later
54324642e01fSmrg	    notinst_path="$notinst_path $abs_ladir"
54334642e01fSmrg	  fi
54344642e01fSmrg	fi # $installed = yes
54354642e01fSmrg	func_stripname 'lib' '.la' "$laname"
54364642e01fSmrg	name=$func_stripname_result
54374642e01fSmrg
54384642e01fSmrg	# This library was specified with -dlpreopen.
54394642e01fSmrg	if test "$pass" = dlpreopen; then
54404642e01fSmrg	  if test -z "$libdir" && test "$linkmode" = prog; then
54414642e01fSmrg	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
54424642e01fSmrg	  fi
54434642e01fSmrg	  # Prefer using a static library (so that no silly _DYNAMIC symbols
54444642e01fSmrg	  # are required to link).
54454642e01fSmrg	  if test -n "$old_library"; then
54464642e01fSmrg	    newdlprefiles="$newdlprefiles $dir/$old_library"
54474642e01fSmrg	    # Keep a list of preopened convenience libraries to check
54484642e01fSmrg	    # that they are being used correctly in the link pass.
54494642e01fSmrg	    test -z "$libdir" && \
54504642e01fSmrg		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
54514642e01fSmrg	  # Otherwise, use the dlname, so that lt_dlopen finds it.
54524642e01fSmrg	  elif test -n "$dlname"; then
54534642e01fSmrg	    newdlprefiles="$newdlprefiles $dir/$dlname"
54544642e01fSmrg	  else
54554642e01fSmrg	    newdlprefiles="$newdlprefiles $dir/$linklib"
54564642e01fSmrg	  fi
54574642e01fSmrg	fi # $pass = dlpreopen
54584642e01fSmrg
54594642e01fSmrg	if test -z "$libdir"; then
54604642e01fSmrg	  # Link the convenience library
54614642e01fSmrg	  if test "$linkmode" = lib; then
54624642e01fSmrg	    deplibs="$dir/$old_library $deplibs"
54634642e01fSmrg	  elif test "$linkmode,$pass" = "prog,link"; then
54644642e01fSmrg	    compile_deplibs="$dir/$old_library $compile_deplibs"
54654642e01fSmrg	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
54664642e01fSmrg	  else
54674642e01fSmrg	    deplibs="$lib $deplibs" # used for prog,scan pass
54684642e01fSmrg	  fi
54694642e01fSmrg	  continue
54704642e01fSmrg	fi
54714642e01fSmrg
54724642e01fSmrg
54734642e01fSmrg	if test "$linkmode" = prog && test "$pass" != link; then
54744642e01fSmrg	  newlib_search_path="$newlib_search_path $ladir"
54754642e01fSmrg	  deplibs="$lib $deplibs"
54764642e01fSmrg
54774642e01fSmrg	  linkalldeplibs=no
54784642e01fSmrg	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
54794642e01fSmrg	     test "$build_libtool_libs" = no; then
54804642e01fSmrg	    linkalldeplibs=yes
54814642e01fSmrg	  fi
54824642e01fSmrg
54834642e01fSmrg	  tmp_libs=
54844642e01fSmrg	  for deplib in $dependency_libs; do
54854642e01fSmrg	    case $deplib in
54864642e01fSmrg	    -L*) func_stripname '-L' '' "$deplib"
54874642e01fSmrg	         newlib_search_path="$newlib_search_path $func_stripname_result"
54884642e01fSmrg		 ;;
54894642e01fSmrg	    esac
54904642e01fSmrg	    # Need to link against all dependency_libs?
54914642e01fSmrg	    if test "$linkalldeplibs" = yes; then
54924642e01fSmrg	      deplibs="$deplib $deplibs"
54934642e01fSmrg	    else
54944642e01fSmrg	      # Need to hardcode shared library paths
54954642e01fSmrg	      # or/and link against static libraries
54964642e01fSmrg	      newdependency_libs="$deplib $newdependency_libs"
54974642e01fSmrg	    fi
54984642e01fSmrg	    if $opt_duplicate_deps ; then
54994642e01fSmrg	      case "$tmp_libs " in
55004642e01fSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
55014642e01fSmrg	      esac
55024642e01fSmrg	    fi
55034642e01fSmrg	    tmp_libs="$tmp_libs $deplib"
55044642e01fSmrg	  done # for deplib
55054642e01fSmrg	  continue
55064642e01fSmrg	fi # $linkmode = prog...
55074642e01fSmrg
55084642e01fSmrg	if test "$linkmode,$pass" = "prog,link"; then
55094642e01fSmrg	  if test -n "$library_names" &&
55104642e01fSmrg	     { { test "$prefer_static_libs" = no ||
55114642e01fSmrg	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
55124642e01fSmrg	       test -z "$old_library"; }; then
55134642e01fSmrg	    # We need to hardcode the library path
55144642e01fSmrg	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
55154642e01fSmrg	      # Make sure the rpath contains only unique directories.
55164642e01fSmrg	      case "$temp_rpath:" in
55174642e01fSmrg	      *"$absdir:"*) ;;
55184642e01fSmrg	      *) temp_rpath="$temp_rpath$absdir:" ;;
55194642e01fSmrg	      esac
55204642e01fSmrg	    fi
55214642e01fSmrg
55224642e01fSmrg	    # Hardcode the library path.
55234642e01fSmrg	    # Skip directories that are in the system default run-time
55244642e01fSmrg	    # search path.
55254642e01fSmrg	    case " $sys_lib_dlsearch_path " in
55264642e01fSmrg	    *" $absdir "*) ;;
55274642e01fSmrg	    *)
55284642e01fSmrg	      case "$compile_rpath " in
55294642e01fSmrg	      *" $absdir "*) ;;
55304642e01fSmrg	      *) compile_rpath="$compile_rpath $absdir"
55314642e01fSmrg	      esac
55324642e01fSmrg	      ;;
55334642e01fSmrg	    esac
55344642e01fSmrg	    case " $sys_lib_dlsearch_path " in
55354642e01fSmrg	    *" $libdir "*) ;;
55364642e01fSmrg	    *)
55374642e01fSmrg	      case "$finalize_rpath " in
55384642e01fSmrg	      *" $libdir "*) ;;
55394642e01fSmrg	      *) finalize_rpath="$finalize_rpath $libdir"
55404642e01fSmrg	      esac
55414642e01fSmrg	      ;;
55424642e01fSmrg	    esac
55434642e01fSmrg	  fi # $linkmode,$pass = prog,link...
55444642e01fSmrg
55454642e01fSmrg	  if test "$alldeplibs" = yes &&
55464642e01fSmrg	     { test "$deplibs_check_method" = pass_all ||
55474642e01fSmrg	       { test "$build_libtool_libs" = yes &&
55484642e01fSmrg		 test -n "$library_names"; }; }; then
55494642e01fSmrg	    # We only need to search for static libraries
55504642e01fSmrg	    continue
55514642e01fSmrg	  fi
55524642e01fSmrg	fi
55534642e01fSmrg
55544642e01fSmrg	link_static=no # Whether the deplib will be linked statically
55554642e01fSmrg	use_static_libs=$prefer_static_libs
55564642e01fSmrg	if test "$use_static_libs" = built && test "$installed" = yes; then
55574642e01fSmrg	  use_static_libs=no
55584642e01fSmrg	fi
55594642e01fSmrg	if test -n "$library_names" &&
55604642e01fSmrg	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
55614642e01fSmrg	  case $host in
55624642e01fSmrg	  *cygwin* | *mingw* | *cegcc*)
55634642e01fSmrg	      # No point in relinking DLLs because paths are not encoded
55644642e01fSmrg	      notinst_deplibs="$notinst_deplibs $lib"
55654642e01fSmrg	      need_relink=no
55664642e01fSmrg	    ;;
55674642e01fSmrg	  *)
55684642e01fSmrg	    if test "$installed" = no; then
55694642e01fSmrg	      notinst_deplibs="$notinst_deplibs $lib"
55704642e01fSmrg	      need_relink=yes
55714642e01fSmrg	    fi
55724642e01fSmrg	    ;;
55734642e01fSmrg	  esac
55744642e01fSmrg	  # This is a shared library
55754642e01fSmrg
55764642e01fSmrg	  # Warn about portability, can't link against -module's on some
55774642e01fSmrg	  # systems (darwin).  Don't bleat about dlopened modules though!
55784642e01fSmrg	  dlopenmodule=""
55794642e01fSmrg	  for dlpremoduletest in $dlprefiles; do
55804642e01fSmrg	    if test "X$dlpremoduletest" = "X$lib"; then
55814642e01fSmrg	      dlopenmodule="$dlpremoduletest"
55824642e01fSmrg	      break
55834642e01fSmrg	    fi
55844642e01fSmrg	  done
55854642e01fSmrg	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
55864642e01fSmrg	    $ECHO
55874642e01fSmrg	    if test "$linkmode" = prog; then
55884642e01fSmrg	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
55894642e01fSmrg	    else
55904642e01fSmrg	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
55914642e01fSmrg	    fi
55924642e01fSmrg	    $ECHO "*** $linklib is not portable!"
55934642e01fSmrg	  fi
55944642e01fSmrg	  if test "$linkmode" = lib &&
55954642e01fSmrg	     test "$hardcode_into_libs" = yes; then
55964642e01fSmrg	    # Hardcode the library path.
55974642e01fSmrg	    # Skip directories that are in the system default run-time
55984642e01fSmrg	    # search path.
55994642e01fSmrg	    case " $sys_lib_dlsearch_path " in
56004642e01fSmrg	    *" $absdir "*) ;;
56014642e01fSmrg	    *)
56024642e01fSmrg	      case "$compile_rpath " in
56034642e01fSmrg	      *" $absdir "*) ;;
56044642e01fSmrg	      *) compile_rpath="$compile_rpath $absdir"
56054642e01fSmrg	      esac
56064642e01fSmrg	      ;;
56074642e01fSmrg	    esac
56084642e01fSmrg	    case " $sys_lib_dlsearch_path " in
56094642e01fSmrg	    *" $libdir "*) ;;
56104642e01fSmrg	    *)
56114642e01fSmrg	      case "$finalize_rpath " in
56124642e01fSmrg	      *" $libdir "*) ;;
56134642e01fSmrg	      *) finalize_rpath="$finalize_rpath $libdir"
56144642e01fSmrg	      esac
56154642e01fSmrg	      ;;
56164642e01fSmrg	    esac
56174642e01fSmrg	  fi
56184642e01fSmrg
56194642e01fSmrg	  if test -n "$old_archive_from_expsyms_cmds"; then
56204642e01fSmrg	    # figure out the soname
56214642e01fSmrg	    set dummy $library_names
56224642e01fSmrg	    shift
56234642e01fSmrg	    realname="$1"
56244642e01fSmrg	    shift
56254642e01fSmrg	    libname=`eval "\\$ECHO \"$libname_spec\""`
56264642e01fSmrg	    # use dlname if we got it. it's perfectly good, no?
56274642e01fSmrg	    if test -n "$dlname"; then
56284642e01fSmrg	      soname="$dlname"
56294642e01fSmrg	    elif test -n "$soname_spec"; then
56304642e01fSmrg	      # bleh windows
56314642e01fSmrg	      case $host in
56324642e01fSmrg	      *cygwin* | mingw* | *cegcc*)
56334642e01fSmrg	        func_arith $current - $age
56344642e01fSmrg		major=$func_arith_result
56354642e01fSmrg		versuffix="-$major"
56364642e01fSmrg		;;
56374642e01fSmrg	      esac
56384642e01fSmrg	      eval soname=\"$soname_spec\"
56394642e01fSmrg	    else
56404642e01fSmrg	      soname="$realname"
56414642e01fSmrg	    fi
56424642e01fSmrg
56434642e01fSmrg	    # Make a new name for the extract_expsyms_cmds to use
56444642e01fSmrg	    soroot="$soname"
56454642e01fSmrg	    func_basename "$soroot"
56464642e01fSmrg	    soname="$func_basename_result"
56474642e01fSmrg	    func_stripname 'lib' '.dll' "$soname"
56484642e01fSmrg	    newlib=libimp-$func_stripname_result.a
56494642e01fSmrg
56504642e01fSmrg	    # If the library has no export list, then create one now
56514642e01fSmrg	    if test -f "$output_objdir/$soname-def"; then :
56524642e01fSmrg	    else
56534642e01fSmrg	      func_verbose "extracting exported symbol list from \`$soname'"
56544642e01fSmrg	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
56554642e01fSmrg	    fi
56564642e01fSmrg
56574642e01fSmrg	    # Create $newlib
56584642e01fSmrg	    if test -f "$output_objdir/$newlib"; then :; else
56594642e01fSmrg	      func_verbose "generating import library for \`$soname'"
56604642e01fSmrg	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
56614642e01fSmrg	    fi
56624642e01fSmrg	    # make sure the library variables are pointing to the new library
56634642e01fSmrg	    dir=$output_objdir
56644642e01fSmrg	    linklib=$newlib
56654642e01fSmrg	  fi # test -n "$old_archive_from_expsyms_cmds"
56664642e01fSmrg
56674642e01fSmrg	  if test "$linkmode" = prog || test "$mode" != relink; then
56684642e01fSmrg	    add_shlibpath=
56694642e01fSmrg	    add_dir=
56704642e01fSmrg	    add=
56714642e01fSmrg	    lib_linked=yes
56724642e01fSmrg	    case $hardcode_action in
56734642e01fSmrg	    immediate | unsupported)
56744642e01fSmrg	      if test "$hardcode_direct" = no; then
56754642e01fSmrg		add="$dir/$linklib"
56764642e01fSmrg		case $host in
56774642e01fSmrg		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
56784642e01fSmrg		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
56794642e01fSmrg		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
56804642e01fSmrg		    *-*-unixware7*) add_dir="-L$dir" ;;
56814642e01fSmrg		  *-*-darwin* )
56824642e01fSmrg		    # if the lib is a (non-dlopened) module then we can not
56834642e01fSmrg		    # link against it, someone is ignoring the earlier warnings
56844642e01fSmrg		    if /usr/bin/file -L $add 2> /dev/null |
56854642e01fSmrg			 $GREP ": [^:]* bundle" >/dev/null ; then
56864642e01fSmrg		      if test "X$dlopenmodule" != "X$lib"; then
56874642e01fSmrg			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
56884642e01fSmrg			if test -z "$old_library" ; then
56894642e01fSmrg			  $ECHO
56904642e01fSmrg			  $ECHO "*** And there doesn't seem to be a static archive available"
56914642e01fSmrg			  $ECHO "*** The link will probably fail, sorry"
56924642e01fSmrg			else
56934642e01fSmrg			  add="$dir/$old_library"
56944642e01fSmrg			fi
56954642e01fSmrg		      elif test -n "$old_library"; then
56964642e01fSmrg			add="$dir/$old_library"
56974642e01fSmrg		      fi
56984642e01fSmrg		    fi
56994642e01fSmrg		esac
57004642e01fSmrg	      elif test "$hardcode_minus_L" = no; then
57014642e01fSmrg		case $host in
57024642e01fSmrg		*-*-sunos*) add_shlibpath="$dir" ;;
57034642e01fSmrg		esac
57044642e01fSmrg		add_dir="-L$dir"
57054642e01fSmrg		add="-l$name"
57064642e01fSmrg	      elif test "$hardcode_shlibpath_var" = no; then
57074642e01fSmrg		add_shlibpath="$dir"
57084642e01fSmrg		add="-l$name"
57094642e01fSmrg	      else
57104642e01fSmrg		lib_linked=no
57114642e01fSmrg	      fi
57124642e01fSmrg	      ;;
57134642e01fSmrg	    relink)
57144642e01fSmrg	      if test "$hardcode_direct" = yes &&
57154642e01fSmrg	         test "$hardcode_direct_absolute" = no; then
57164642e01fSmrg		add="$dir/$linklib"
57174642e01fSmrg	      elif test "$hardcode_minus_L" = yes; then
57184642e01fSmrg		add_dir="-L$dir"
57194642e01fSmrg		# Try looking first in the location we're being installed to.
57204642e01fSmrg		if test -n "$inst_prefix_dir"; then
57214642e01fSmrg		  case $libdir in
57224642e01fSmrg		    [\\/]*)
57234642e01fSmrg		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
57244642e01fSmrg		      ;;
57254642e01fSmrg		  esac
57264642e01fSmrg		fi
57274642e01fSmrg		add="-l$name"
57284642e01fSmrg	      elif test "$hardcode_shlibpath_var" = yes; then
57294642e01fSmrg		add_shlibpath="$dir"
57304642e01fSmrg		add="-l$name"
57314642e01fSmrg	      else
57324642e01fSmrg		lib_linked=no
57334642e01fSmrg	      fi
57344642e01fSmrg	      ;;
57354642e01fSmrg	    *) lib_linked=no ;;
57364642e01fSmrg	    esac
57374642e01fSmrg
57384642e01fSmrg	    if test "$lib_linked" != yes; then
57394642e01fSmrg	      func_fatal_configuration "unsupported hardcode properties"
57404642e01fSmrg	    fi
57414642e01fSmrg
57424642e01fSmrg	    if test -n "$add_shlibpath"; then
57434642e01fSmrg	      case :$compile_shlibpath: in
57444642e01fSmrg	      *":$add_shlibpath:"*) ;;
57454642e01fSmrg	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
57464642e01fSmrg	      esac
57474642e01fSmrg	    fi
57484642e01fSmrg	    if test "$linkmode" = prog; then
57494642e01fSmrg	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
57504642e01fSmrg	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
57514642e01fSmrg	    else
57524642e01fSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
57534642e01fSmrg	      test -n "$add" && deplibs="$add $deplibs"
57544642e01fSmrg	      if test "$hardcode_direct" != yes &&
57554642e01fSmrg		 test "$hardcode_minus_L" != yes &&
57564642e01fSmrg		 test "$hardcode_shlibpath_var" = yes; then
57574642e01fSmrg		case :$finalize_shlibpath: in
57584642e01fSmrg		*":$libdir:"*) ;;
57594642e01fSmrg		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
57604642e01fSmrg		esac
57614642e01fSmrg	      fi
57624642e01fSmrg	    fi
57634642e01fSmrg	  fi
57644642e01fSmrg
57654642e01fSmrg	  if test "$linkmode" = prog || test "$mode" = relink; then
57664642e01fSmrg	    add_shlibpath=
57674642e01fSmrg	    add_dir=
57684642e01fSmrg	    add=
57694642e01fSmrg	    # Finalize command for both is simple: just hardcode it.
57704642e01fSmrg	    if test "$hardcode_direct" = yes &&
57714642e01fSmrg	       test "$hardcode_direct_absolute" = no; then
57724642e01fSmrg	      add="$libdir/$linklib"
57734642e01fSmrg	    elif test "$hardcode_minus_L" = yes; then
57744642e01fSmrg	      add_dir="-L$libdir"
57754642e01fSmrg	      add="-l$name"
57764642e01fSmrg	    elif test "$hardcode_shlibpath_var" = yes; then
57774642e01fSmrg	      case :$finalize_shlibpath: in
57784642e01fSmrg	      *":$libdir:"*) ;;
57794642e01fSmrg	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
57804642e01fSmrg	      esac
57814642e01fSmrg	      add="-l$name"
57824642e01fSmrg	    elif test "$hardcode_automatic" = yes; then
57834642e01fSmrg	      if test -n "$inst_prefix_dir" &&
57844642e01fSmrg		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
57854642e01fSmrg		add="$inst_prefix_dir$libdir/$linklib"
57864642e01fSmrg	      else
57874642e01fSmrg		add="$libdir/$linklib"
57884642e01fSmrg	      fi
57894642e01fSmrg	    else
57904642e01fSmrg	      # We cannot seem to hardcode it, guess we'll fake it.
57914642e01fSmrg	      add_dir="-L$libdir"
57924642e01fSmrg	      # Try looking first in the location we're being installed to.
57934642e01fSmrg	      if test -n "$inst_prefix_dir"; then
57944642e01fSmrg		case $libdir in
57954642e01fSmrg		  [\\/]*)
57964642e01fSmrg		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
57974642e01fSmrg		    ;;
57984642e01fSmrg		esac
57994642e01fSmrg	      fi
58004642e01fSmrg	      add="-l$name"
58014642e01fSmrg	    fi
58024642e01fSmrg
58034642e01fSmrg	    if test "$linkmode" = prog; then
58044642e01fSmrg	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
58054642e01fSmrg	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
58064642e01fSmrg	    else
58074642e01fSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
58084642e01fSmrg	      test -n "$add" && deplibs="$add $deplibs"
58094642e01fSmrg	    fi
58104642e01fSmrg	  fi
58114642e01fSmrg	elif test "$linkmode" = prog; then
58124642e01fSmrg	  # Here we assume that one of hardcode_direct or hardcode_minus_L
58134642e01fSmrg	  # is not unsupported.  This is valid on all known static and
58144642e01fSmrg	  # shared platforms.
58154642e01fSmrg	  if test "$hardcode_direct" != unsupported; then
58164642e01fSmrg	    test -n "$old_library" && linklib="$old_library"
58174642e01fSmrg	    compile_deplibs="$dir/$linklib $compile_deplibs"
58184642e01fSmrg	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
58194642e01fSmrg	  else
58204642e01fSmrg	    compile_deplibs="-l$name -L$dir $compile_deplibs"
58214642e01fSmrg	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
58224642e01fSmrg	  fi
58234642e01fSmrg	elif test "$build_libtool_libs" = yes; then
58244642e01fSmrg	  # Not a shared library
58254642e01fSmrg	  if test "$deplibs_check_method" != pass_all; then
58264642e01fSmrg	    # We're trying link a shared library against a static one
58274642e01fSmrg	    # but the system doesn't support it.
58284642e01fSmrg
58294642e01fSmrg	    # Just print a warning and add the library to dependency_libs so
58304642e01fSmrg	    # that the program can be linked against the static library.
58314642e01fSmrg	    $ECHO
58324642e01fSmrg	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
58334642e01fSmrg	    $ECHO "*** I have the capability to make that library automatically link in when"
58344642e01fSmrg	    $ECHO "*** you link to this library.  But I can only do this if you have a"
58354642e01fSmrg	    $ECHO "*** shared version of the library, which you do not appear to have."
58364642e01fSmrg	    if test "$module" = yes; then
58374642e01fSmrg	      $ECHO "*** But as you try to build a module library, libtool will still create "
58384642e01fSmrg	      $ECHO "*** a static module, that should work as long as the dlopening application"
58394642e01fSmrg	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
58404642e01fSmrg	      if test -z "$global_symbol_pipe"; then
58414642e01fSmrg		$ECHO
58424642e01fSmrg		$ECHO "*** However, this would only work if libtool was able to extract symbol"
58434642e01fSmrg		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
58444642e01fSmrg		$ECHO "*** not find such a program.  So, this module is probably useless."
58454642e01fSmrg		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
58464642e01fSmrg	      fi
58474642e01fSmrg	      if test "$build_old_libs" = no; then
58484642e01fSmrg		build_libtool_libs=module
58494642e01fSmrg		build_old_libs=yes
58504642e01fSmrg	      else
58514642e01fSmrg		build_libtool_libs=no
58524642e01fSmrg	      fi
58534642e01fSmrg	    fi
58544642e01fSmrg	  else
58554642e01fSmrg	    deplibs="$dir/$old_library $deplibs"
58564642e01fSmrg	    link_static=yes
58574642e01fSmrg	  fi
58584642e01fSmrg	fi # link shared/static library?
58594642e01fSmrg
58604642e01fSmrg	if test "$linkmode" = lib; then
58614642e01fSmrg	  if test -n "$dependency_libs" &&
58624642e01fSmrg	     { test "$hardcode_into_libs" != yes ||
58634642e01fSmrg	       test "$build_old_libs" = yes ||
58644642e01fSmrg	       test "$link_static" = yes; }; then
58654642e01fSmrg	    # Extract -R from dependency_libs
58664642e01fSmrg	    temp_deplibs=
58674642e01fSmrg	    for libdir in $dependency_libs; do
58684642e01fSmrg	      case $libdir in
58694642e01fSmrg	      -R*) func_stripname '-R' '' "$libdir"
58704642e01fSmrg	           temp_xrpath=$func_stripname_result
58714642e01fSmrg		   case " $xrpath " in
58724642e01fSmrg		   *" $temp_xrpath "*) ;;
58734642e01fSmrg		   *) xrpath="$xrpath $temp_xrpath";;
58744642e01fSmrg		   esac;;
58754642e01fSmrg	      *) temp_deplibs="$temp_deplibs $libdir";;
58764642e01fSmrg	      esac
58774642e01fSmrg	    done
58784642e01fSmrg	    dependency_libs="$temp_deplibs"
58794642e01fSmrg	  fi
58804642e01fSmrg
58814642e01fSmrg	  newlib_search_path="$newlib_search_path $absdir"
58824642e01fSmrg	  # Link against this library
58834642e01fSmrg	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
58844642e01fSmrg	  # ... and its dependency_libs
58854642e01fSmrg	  tmp_libs=
58864642e01fSmrg	  for deplib in $dependency_libs; do
58874642e01fSmrg	    newdependency_libs="$deplib $newdependency_libs"
58884642e01fSmrg	    if $opt_duplicate_deps ; then
58894642e01fSmrg	      case "$tmp_libs " in
58904642e01fSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
58914642e01fSmrg	      esac
58924642e01fSmrg	    fi
58934642e01fSmrg	    tmp_libs="$tmp_libs $deplib"
58944642e01fSmrg	  done
58954642e01fSmrg
58964642e01fSmrg	  if test "$link_all_deplibs" != no; then
58974642e01fSmrg	    # Add the search paths of all dependency libraries
58984642e01fSmrg	    for deplib in $dependency_libs; do
58994642e01fSmrg	      path=
59004642e01fSmrg	      case $deplib in
59014642e01fSmrg	      -L*) path="$deplib" ;;
59024642e01fSmrg	      *.la)
59034642e01fSmrg	        func_dirname "$deplib" "" "."
59044642e01fSmrg		dir="$func_dirname_result"
59054642e01fSmrg		# We need an absolute path.
59064642e01fSmrg		case $dir in
59074642e01fSmrg		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
59084642e01fSmrg		*)
59094642e01fSmrg		  absdir=`cd "$dir" && pwd`
59104642e01fSmrg		  if test -z "$absdir"; then
59114642e01fSmrg		    func_warning "cannot determine absolute directory name of \`$dir'"
59124642e01fSmrg		    absdir="$dir"
59134642e01fSmrg		  fi
59144642e01fSmrg		  ;;
59154642e01fSmrg		esac
59164642e01fSmrg		if $GREP "^installed=no" $deplib > /dev/null; then
59174642e01fSmrg		case $host in
59184642e01fSmrg		*-*-darwin*)
59194642e01fSmrg		  depdepl=
59204642e01fSmrg		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
59214642e01fSmrg		  if test -n "$deplibrary_names" ; then
59224642e01fSmrg		    for tmp in $deplibrary_names ; do
59234642e01fSmrg		      depdepl=$tmp
59244642e01fSmrg		    done
59254642e01fSmrg		    if test -f "$absdir/$objdir/$depdepl" ; then
59264642e01fSmrg		      depdepl="$absdir/$objdir/$depdepl"
59274642e01fSmrg		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
59284642e01fSmrg                      if test -z "$darwin_install_name"; then
59294642e01fSmrg                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
59304642e01fSmrg                      fi
59314642e01fSmrg		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
59324642e01fSmrg		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
59334642e01fSmrg		      path=
59344642e01fSmrg		    fi
59354642e01fSmrg		  fi
59364642e01fSmrg		  ;;
59374642e01fSmrg		*)
59384642e01fSmrg		  path="-L$absdir/$objdir"
59394642e01fSmrg		  ;;
59404642e01fSmrg		esac
59414642e01fSmrg		else
59424642e01fSmrg		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
59434642e01fSmrg		  test -z "$libdir" && \
59444642e01fSmrg		    func_fatal_error "\`$deplib' is not a valid libtool archive"
59454642e01fSmrg		  test "$absdir" != "$libdir" && \
59464642e01fSmrg		    func_warning "\`$deplib' seems to be moved"
59474642e01fSmrg
59484642e01fSmrg		  path="-L$absdir"
59494642e01fSmrg		fi
59504642e01fSmrg		;;
59514642e01fSmrg	      esac
59524642e01fSmrg	      case " $deplibs " in
59534642e01fSmrg	      *" $path "*) ;;
59544642e01fSmrg	      *) deplibs="$path $deplibs" ;;
59554642e01fSmrg	      esac
59564642e01fSmrg	    done
59574642e01fSmrg	  fi # link_all_deplibs != no
59584642e01fSmrg	fi # linkmode = lib
59594642e01fSmrg      done # for deplib in $libs
59604642e01fSmrg      if test "$pass" = link; then
59614642e01fSmrg	if test "$linkmode" = "prog"; then
59624642e01fSmrg	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
59634642e01fSmrg	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
59644642e01fSmrg	else
59654642e01fSmrg	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
59664642e01fSmrg	fi
59674642e01fSmrg      fi
59684642e01fSmrg      dependency_libs="$newdependency_libs"
59694642e01fSmrg      if test "$pass" = dlpreopen; then
59704642e01fSmrg	# Link the dlpreopened libraries before other libraries
59714642e01fSmrg	for deplib in $save_deplibs; do
59724642e01fSmrg	  deplibs="$deplib $deplibs"
59734642e01fSmrg	done
59744642e01fSmrg      fi
59754642e01fSmrg      if test "$pass" != dlopen; then
59764642e01fSmrg	if test "$pass" != conv; then
59774642e01fSmrg	  # Make sure lib_search_path contains only unique directories.
59784642e01fSmrg	  lib_search_path=
59794642e01fSmrg	  for dir in $newlib_search_path; do
59804642e01fSmrg	    case "$lib_search_path " in
59814642e01fSmrg	    *" $dir "*) ;;
59824642e01fSmrg	    *) lib_search_path="$lib_search_path $dir" ;;
59834642e01fSmrg	    esac
59844642e01fSmrg	  done
59854642e01fSmrg	  newlib_search_path=
59864642e01fSmrg	fi
59874642e01fSmrg
59884642e01fSmrg	if test "$linkmode,$pass" != "prog,link"; then
59894642e01fSmrg	  vars="deplibs"
59904642e01fSmrg	else
59914642e01fSmrg	  vars="compile_deplibs finalize_deplibs"
59924642e01fSmrg	fi
59934642e01fSmrg	for var in $vars dependency_libs; do
59944642e01fSmrg	  # Add libraries to $var in reverse order
59954642e01fSmrg	  eval tmp_libs=\"\$$var\"
59964642e01fSmrg	  new_libs=
59974642e01fSmrg	  for deplib in $tmp_libs; do
59984642e01fSmrg	    # FIXME: Pedantically, this is the right thing to do, so
59994642e01fSmrg	    #        that some nasty dependency loop isn't accidentally
60004642e01fSmrg	    #        broken:
60014642e01fSmrg	    #new_libs="$deplib $new_libs"
60024642e01fSmrg	    # Pragmatically, this seems to cause very few problems in
60034642e01fSmrg	    # practice:
60044642e01fSmrg	    case $deplib in
60054642e01fSmrg	    -L*) new_libs="$deplib $new_libs" ;;
60064642e01fSmrg	    -R*) ;;
60074642e01fSmrg	    *)
60084642e01fSmrg	      # And here is the reason: when a library appears more
60094642e01fSmrg	      # than once as an explicit dependence of a library, or
60104642e01fSmrg	      # is implicitly linked in more than once by the
60114642e01fSmrg	      # compiler, it is considered special, and multiple
60124642e01fSmrg	      # occurrences thereof are not removed.  Compare this
60134642e01fSmrg	      # with having the same library being listed as a
60144642e01fSmrg	      # dependency of multiple other libraries: in this case,
60154642e01fSmrg	      # we know (pedantically, we assume) the library does not
60164642e01fSmrg	      # need to be listed more than once, so we keep only the
60174642e01fSmrg	      # last copy.  This is not always right, but it is rare
60184642e01fSmrg	      # enough that we require users that really mean to play
60194642e01fSmrg	      # such unportable linking tricks to link the library
60204642e01fSmrg	      # using -Wl,-lname, so that libtool does not consider it
60214642e01fSmrg	      # for duplicate removal.
60224642e01fSmrg	      case " $specialdeplibs " in
60234642e01fSmrg	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
60244642e01fSmrg	      *)
60254642e01fSmrg		case " $new_libs " in
60264642e01fSmrg		*" $deplib "*) ;;
60274642e01fSmrg		*) new_libs="$deplib $new_libs" ;;
60284642e01fSmrg		esac
60294642e01fSmrg		;;
60304642e01fSmrg	      esac
60314642e01fSmrg	      ;;
60324642e01fSmrg	    esac
60334642e01fSmrg	  done
60344642e01fSmrg	  tmp_libs=
60354642e01fSmrg	  for deplib in $new_libs; do
60364642e01fSmrg	    case $deplib in
60374642e01fSmrg	    -L*)
60384642e01fSmrg	      case " $tmp_libs " in
60394642e01fSmrg	      *" $deplib "*) ;;
60404642e01fSmrg	      *) tmp_libs="$tmp_libs $deplib" ;;
60414642e01fSmrg	      esac
60424642e01fSmrg	      ;;
60434642e01fSmrg	    *) tmp_libs="$tmp_libs $deplib" ;;
60444642e01fSmrg	    esac
60454642e01fSmrg	  done
60464642e01fSmrg	  eval $var=\"$tmp_libs\"
60474642e01fSmrg	done # for var
60484642e01fSmrg      fi
60494642e01fSmrg      # Last step: remove runtime libs from dependency_libs
60504642e01fSmrg      # (they stay in deplibs)
60514642e01fSmrg      tmp_libs=
60524642e01fSmrg      for i in $dependency_libs ; do
60534642e01fSmrg	case " $predeps $postdeps $compiler_lib_search_path " in
60544642e01fSmrg	*" $i "*)
60554642e01fSmrg	  i=""
60564642e01fSmrg	  ;;
60574642e01fSmrg	esac
60584642e01fSmrg	if test -n "$i" ; then
60594642e01fSmrg	  tmp_libs="$tmp_libs $i"
60604642e01fSmrg	fi
60614642e01fSmrg      done
60624642e01fSmrg      dependency_libs=$tmp_libs
60634642e01fSmrg    done # for pass
60644642e01fSmrg    if test "$linkmode" = prog; then
60654642e01fSmrg      dlfiles="$newdlfiles"
60664642e01fSmrg    fi
60674642e01fSmrg    if test "$linkmode" = prog || test "$linkmode" = lib; then
60684642e01fSmrg      dlprefiles="$newdlprefiles"
60694642e01fSmrg    fi
60704642e01fSmrg
60714642e01fSmrg    case $linkmode in
60724642e01fSmrg    oldlib)
60734642e01fSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
60744642e01fSmrg	func_warning "\`-dlopen' is ignored for archives"
60754642e01fSmrg      fi
60764642e01fSmrg
60774642e01fSmrg      case " $deplibs" in
60784642e01fSmrg      *\ -l* | *\ -L*)
60794642e01fSmrg	func_warning "\`-l' and \`-L' are ignored for archives" ;;
60804642e01fSmrg      esac
60814642e01fSmrg
60824642e01fSmrg      test -n "$rpath" && \
60834642e01fSmrg	func_warning "\`-rpath' is ignored for archives"
60844642e01fSmrg
60854642e01fSmrg      test -n "$xrpath" && \
60864642e01fSmrg	func_warning "\`-R' is ignored for archives"
60874642e01fSmrg
60884642e01fSmrg      test -n "$vinfo" && \
60894642e01fSmrg	func_warning "\`-version-info/-version-number' is ignored for archives"
60904642e01fSmrg
60914642e01fSmrg      test -n "$release" && \
60924642e01fSmrg	func_warning "\`-release' is ignored for archives"
60934642e01fSmrg
60944642e01fSmrg      test -n "$export_symbols$export_symbols_regex" && \
60954642e01fSmrg	func_warning "\`-export-symbols' is ignored for archives"
60964642e01fSmrg
60974642e01fSmrg      # Now set the variables for building old libraries.
60984642e01fSmrg      build_libtool_libs=no
60994642e01fSmrg      oldlibs="$output"
61004642e01fSmrg      objs="$objs$old_deplibs"
61014642e01fSmrg      ;;
61024642e01fSmrg
61034642e01fSmrg    lib)
61044642e01fSmrg      # Make sure we only generate libraries of the form `libNAME.la'.
61054642e01fSmrg      case $outputname in
61064642e01fSmrg      lib*)
61074642e01fSmrg	func_stripname 'lib' '.la' "$outputname"
61084642e01fSmrg	name=$func_stripname_result
61094642e01fSmrg	eval shared_ext=\"$shrext_cmds\"
61104642e01fSmrg	eval libname=\"$libname_spec\"
61114642e01fSmrg	;;
61124642e01fSmrg      *)
61134642e01fSmrg	test "$module" = no && \
61144642e01fSmrg	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
61154642e01fSmrg
61164642e01fSmrg	if test "$need_lib_prefix" != no; then
61174642e01fSmrg	  # Add the "lib" prefix for modules if required
61184642e01fSmrg	  func_stripname '' '.la' "$outputname"
61194642e01fSmrg	  name=$func_stripname_result
61204642e01fSmrg	  eval shared_ext=\"$shrext_cmds\"
61214642e01fSmrg	  eval libname=\"$libname_spec\"
61224642e01fSmrg	else
61234642e01fSmrg	  func_stripname '' '.la' "$outputname"
61244642e01fSmrg	  libname=$func_stripname_result
61254642e01fSmrg	fi
61264642e01fSmrg	;;
61274642e01fSmrg      esac
61284642e01fSmrg
61294642e01fSmrg      if test -n "$objs"; then
61304642e01fSmrg	if test "$deplibs_check_method" != pass_all; then
61314642e01fSmrg	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
61324642e01fSmrg	else
61334642e01fSmrg	  $ECHO
61344642e01fSmrg	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
61354642e01fSmrg	  $ECHO "*** objects $objs is not portable!"
61364642e01fSmrg	  libobjs="$libobjs $objs"
61374642e01fSmrg	fi
61384642e01fSmrg      fi
61394642e01fSmrg
61404642e01fSmrg      test "$dlself" != no && \
61414642e01fSmrg	func_warning "\`-dlopen self' is ignored for libtool libraries"
61424642e01fSmrg
61434642e01fSmrg      set dummy $rpath
61444642e01fSmrg      shift
61454642e01fSmrg      test "$#" -gt 1 && \
61464642e01fSmrg	func_warning "ignoring multiple \`-rpath's for a libtool library"
61474642e01fSmrg
61484642e01fSmrg      install_libdir="$1"
61494642e01fSmrg
61504642e01fSmrg      oldlibs=
61514642e01fSmrg      if test -z "$rpath"; then
61524642e01fSmrg	if test "$build_libtool_libs" = yes; then
61534642e01fSmrg	  # Building a libtool convenience library.
61544642e01fSmrg	  # Some compilers have problems with a `.al' extension so
61554642e01fSmrg	  # convenience libraries should have the same extension an
61564642e01fSmrg	  # archive normally would.
61574642e01fSmrg	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
61584642e01fSmrg	  build_libtool_libs=convenience
61594642e01fSmrg	  build_old_libs=yes
61604642e01fSmrg	fi
61614642e01fSmrg
61624642e01fSmrg	test -n "$vinfo" && \
61634642e01fSmrg	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
61644642e01fSmrg
61654642e01fSmrg	test -n "$release" && \
61664642e01fSmrg	  func_warning "\`-release' is ignored for convenience libraries"
61674642e01fSmrg      else
61684642e01fSmrg
61694642e01fSmrg	# Parse the version information argument.
61704642e01fSmrg	save_ifs="$IFS"; IFS=':'
61714642e01fSmrg	set dummy $vinfo 0 0 0
61724642e01fSmrg	shift
61734642e01fSmrg	IFS="$save_ifs"
61744642e01fSmrg
61754642e01fSmrg	test -n "$7" && \
61764642e01fSmrg	  func_fatal_help "too many parameters to \`-version-info'"
61774642e01fSmrg
61784642e01fSmrg	# convert absolute version numbers to libtool ages
61794642e01fSmrg	# this retains compatibility with .la files and attempts
61804642e01fSmrg	# to make the code below a bit more comprehensible
61814642e01fSmrg
61824642e01fSmrg	case $vinfo_number in
61834642e01fSmrg	yes)
61844642e01fSmrg	  number_major="$1"
61854642e01fSmrg	  number_minor="$2"
61864642e01fSmrg	  number_revision="$3"
61874642e01fSmrg	  #
61884642e01fSmrg	  # There are really only two kinds -- those that
61894642e01fSmrg	  # use the current revision as the major version
61904642e01fSmrg	  # and those that subtract age and use age as
61914642e01fSmrg	  # a minor version.  But, then there is irix
61924642e01fSmrg	  # which has an extra 1 added just for fun
61934642e01fSmrg	  #
61944642e01fSmrg	  case $version_type in
61954642e01fSmrg	  darwin|linux|osf|windows|none)
61964642e01fSmrg	    func_arith $number_major + $number_minor
61974642e01fSmrg	    current=$func_arith_result
61984642e01fSmrg	    age="$number_minor"
61994642e01fSmrg	    revision="$number_revision"
62004642e01fSmrg	    ;;
62014642e01fSmrg	  freebsd-aout|freebsd-elf|sunos)
62024642e01fSmrg	    current="$number_major"
62034642e01fSmrg	    revision="$number_minor"
62044642e01fSmrg	    age="0"
62054642e01fSmrg	    ;;
62064642e01fSmrg	  irix|nonstopux)
62074642e01fSmrg	    func_arith $number_major + $number_minor
62084642e01fSmrg	    current=$func_arith_result
62094642e01fSmrg	    age="$number_minor"
62104642e01fSmrg	    revision="$number_minor"
62114642e01fSmrg	    lt_irix_increment=no
62124642e01fSmrg	    ;;
62134642e01fSmrg	  *)
62144642e01fSmrg	    func_fatal_configuration "$modename: unknown library version type \`$version_type'"
62154642e01fSmrg	    ;;
62164642e01fSmrg	  esac
62174642e01fSmrg	  ;;
62184642e01fSmrg	no)
62194642e01fSmrg	  current="$1"
62204642e01fSmrg	  revision="$2"
62214642e01fSmrg	  age="$3"
62224642e01fSmrg	  ;;
62234642e01fSmrg	esac
62244642e01fSmrg
62254642e01fSmrg	# Check that each of the things are valid numbers.
62264642e01fSmrg	case $current in
62274642e01fSmrg	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]) ;;
62284642e01fSmrg	*)
62294642e01fSmrg	  func_error "CURRENT \`$current' must be a nonnegative integer"
62304642e01fSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
62314642e01fSmrg	  ;;
62324642e01fSmrg	esac
62334642e01fSmrg
62344642e01fSmrg	case $revision in
62354642e01fSmrg	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]) ;;
62364642e01fSmrg	*)
62374642e01fSmrg	  func_error "REVISION \`$revision' must be a nonnegative integer"
62384642e01fSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
62394642e01fSmrg	  ;;
62404642e01fSmrg	esac
62414642e01fSmrg
62424642e01fSmrg	case $age in
62434642e01fSmrg	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]) ;;
62444642e01fSmrg	*)
62454642e01fSmrg	  func_error "AGE \`$age' must be a nonnegative integer"
62464642e01fSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
62474642e01fSmrg	  ;;
62484642e01fSmrg	esac
62494642e01fSmrg
62504642e01fSmrg	if test "$age" -gt "$current"; then
62514642e01fSmrg	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
62524642e01fSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
62534642e01fSmrg	fi
62544642e01fSmrg
62554642e01fSmrg	# Calculate the version variables.
62564642e01fSmrg	major=
62574642e01fSmrg	versuffix=
62584642e01fSmrg	verstring=
62594642e01fSmrg	case $version_type in
62604642e01fSmrg	none) ;;
62614642e01fSmrg
62624642e01fSmrg	darwin)
62634642e01fSmrg	  # Like Linux, but with the current version available in
62644642e01fSmrg	  # verstring for coding it into the library header
62654642e01fSmrg	  func_arith $current - $age
62664642e01fSmrg	  major=.$func_arith_result
62674642e01fSmrg	  versuffix="$major.$age.$revision"
62684642e01fSmrg	  # Darwin ld doesn't like 0 for these options...
62694642e01fSmrg	  func_arith $current + 1
62704642e01fSmrg	  minor_current=$func_arith_result
62714642e01fSmrg	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
62724642e01fSmrg	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
62734642e01fSmrg	  ;;
62744642e01fSmrg
62754642e01fSmrg	freebsd-aout)
62764642e01fSmrg	  major=".$current"
62774642e01fSmrg	  versuffix=".$current.$revision";
62784642e01fSmrg	  ;;
62794642e01fSmrg
62804642e01fSmrg	freebsd-elf)
62814642e01fSmrg	  major=".$current"
62824642e01fSmrg	  versuffix=".$current"
62834642e01fSmrg	  ;;
62844642e01fSmrg
62854642e01fSmrg	irix | nonstopux)
62864642e01fSmrg	  if test "X$lt_irix_increment" = "Xno"; then
62874642e01fSmrg	    func_arith $current - $age
62884642e01fSmrg	  else
62894642e01fSmrg	    func_arith $current - $age + 1
62904642e01fSmrg	  fi
62914642e01fSmrg	  major=$func_arith_result
62924642e01fSmrg
62934642e01fSmrg	  case $version_type in
62944642e01fSmrg	    nonstopux) verstring_prefix=nonstopux ;;
62954642e01fSmrg	    *)         verstring_prefix=sgi ;;
62964642e01fSmrg	  esac
62974642e01fSmrg	  verstring="$verstring_prefix$major.$revision"
62984642e01fSmrg
62994642e01fSmrg	  # Add in all the interfaces that we are compatible with.
63004642e01fSmrg	  loop=$revision
63014642e01fSmrg	  while test "$loop" -ne 0; do
63024642e01fSmrg	    func_arith $revision - $loop
63034642e01fSmrg	    iface=$func_arith_result
63044642e01fSmrg	    func_arith $loop - 1
63054642e01fSmrg	    loop=$func_arith_result
63064642e01fSmrg	    verstring="$verstring_prefix$major.$iface:$verstring"
63074642e01fSmrg	  done
63084642e01fSmrg
63094642e01fSmrg	  # Before this point, $major must not contain `.'.
63104642e01fSmrg	  major=.$major
63114642e01fSmrg	  versuffix="$major.$revision"
63124642e01fSmrg	  ;;
63134642e01fSmrg
63144642e01fSmrg	linux)
63154642e01fSmrg	  func_arith $current - $age
63164642e01fSmrg	  major=.$func_arith_result
63174642e01fSmrg	  versuffix="$major.$age.$revision"
63184642e01fSmrg	  ;;
63194642e01fSmrg
63204642e01fSmrg	osf)
63214642e01fSmrg	  func_arith $current - $age
63224642e01fSmrg	  major=.$func_arith_result
63234642e01fSmrg	  versuffix=".$current.$age.$revision"
63244642e01fSmrg	  verstring="$current.$age.$revision"
63254642e01fSmrg
63264642e01fSmrg	  # Add in all the interfaces that we are compatible with.
63274642e01fSmrg	  loop=$age
63284642e01fSmrg	  while test "$loop" -ne 0; do
63294642e01fSmrg	    func_arith $current - $loop
63304642e01fSmrg	    iface=$func_arith_result
63314642e01fSmrg	    func_arith $loop - 1
63324642e01fSmrg	    loop=$func_arith_result
63334642e01fSmrg	    verstring="$verstring:${iface}.0"
63344642e01fSmrg	  done
63354642e01fSmrg
63364642e01fSmrg	  # Make executables depend on our current version.
63374642e01fSmrg	  verstring="$verstring:${current}.0"
63384642e01fSmrg	  ;;
63394642e01fSmrg
63404642e01fSmrg	qnx)
63414642e01fSmrg	  major=".$current"
63424642e01fSmrg	  versuffix=".$current"
63434642e01fSmrg	  ;;
63444642e01fSmrg
63454642e01fSmrg	sunos)
63464642e01fSmrg	  major=".$current"
63474642e01fSmrg	  versuffix=".$current.$revision"
63484642e01fSmrg	  ;;
63494642e01fSmrg
63504642e01fSmrg	windows)
63514642e01fSmrg	  # Use '-' rather than '.', since we only want one
63524642e01fSmrg	  # extension on DOS 8.3 filesystems.
63534642e01fSmrg	  func_arith $current - $age
63544642e01fSmrg	  major=$func_arith_result
63554642e01fSmrg	  versuffix="-$major"
63564642e01fSmrg	  ;;
63574642e01fSmrg
63584642e01fSmrg	*)
63594642e01fSmrg	  func_fatal_configuration "unknown library version type \`$version_type'"
63604642e01fSmrg	  ;;
63614642e01fSmrg	esac
63624642e01fSmrg
63634642e01fSmrg	# Clear the version info if we defaulted, and they specified a release.
63644642e01fSmrg	if test -z "$vinfo" && test -n "$release"; then
63654642e01fSmrg	  major=
63664642e01fSmrg	  case $version_type in
63674642e01fSmrg	  darwin)
63684642e01fSmrg	    # we can't check for "0.0" in archive_cmds due to quoting
63694642e01fSmrg	    # problems, so we reset it completely
63704642e01fSmrg	    verstring=
63714642e01fSmrg	    ;;
63724642e01fSmrg	  *)
63734642e01fSmrg	    verstring="0.0"
63744642e01fSmrg	    ;;
63754642e01fSmrg	  esac
63764642e01fSmrg	  if test "$need_version" = no; then
63774642e01fSmrg	    versuffix=
63784642e01fSmrg	  else
63794642e01fSmrg	    versuffix=".0.0"
63804642e01fSmrg	  fi
63814642e01fSmrg	fi
63824642e01fSmrg
63834642e01fSmrg	# Remove version info from name if versioning should be avoided
63844642e01fSmrg	if test "$avoid_version" = yes && test "$need_version" = no; then
63854642e01fSmrg	  major=
63864642e01fSmrg	  versuffix=
63874642e01fSmrg	  verstring=""
63884642e01fSmrg	fi
63894642e01fSmrg
63904642e01fSmrg	# Check to see if the archive will have undefined symbols.
63914642e01fSmrg	if test "$allow_undefined" = yes; then
63924642e01fSmrg	  if test "$allow_undefined_flag" = unsupported; then
63934642e01fSmrg	    func_warning "undefined symbols not allowed in $host shared libraries"
63944642e01fSmrg	    build_libtool_libs=no
63954642e01fSmrg	    build_old_libs=yes
63964642e01fSmrg	  fi
63974642e01fSmrg	else
63984642e01fSmrg	  # Don't allow undefined symbols.
63994642e01fSmrg	  allow_undefined_flag="$no_undefined_flag"
64004642e01fSmrg	fi
64014642e01fSmrg
64024642e01fSmrg      fi
64034642e01fSmrg
64044642e01fSmrg      func_generate_dlsyms "$libname" "$libname" "yes"
64054642e01fSmrg      libobjs="$libobjs $symfileobj"
64064642e01fSmrg      test "X$libobjs" = "X " && libobjs=
64074642e01fSmrg
64084642e01fSmrg      if test "$mode" != relink; then
64094642e01fSmrg	# Remove our outputs, but don't remove object files since they
64104642e01fSmrg	# may have been created when compiling PIC objects.
64114642e01fSmrg	removelist=
64124642e01fSmrg	tempremovelist=`$ECHO "$output_objdir/*"`
64134642e01fSmrg	for p in $tempremovelist; do
64144642e01fSmrg	  case $p in
64154642e01fSmrg	    *.$objext | *.gcno)
64164642e01fSmrg	       ;;
64174642e01fSmrg	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
64184642e01fSmrg	       if test "X$precious_files_regex" != "X"; then
64194642e01fSmrg		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
64204642e01fSmrg		 then
64214642e01fSmrg		   continue
64224642e01fSmrg		 fi
64234642e01fSmrg	       fi
64244642e01fSmrg	       removelist="$removelist $p"
64254642e01fSmrg	       ;;
64264642e01fSmrg	    *) ;;
64274642e01fSmrg	  esac
64284642e01fSmrg	done
64294642e01fSmrg	test -n "$removelist" && \
64304642e01fSmrg	  func_show_eval "${RM}r \$removelist"
64314642e01fSmrg      fi
64324642e01fSmrg
64334642e01fSmrg      # Now set the variables for building old libraries.
64344642e01fSmrg      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
64354642e01fSmrg	oldlibs="$oldlibs $output_objdir/$libname.$libext"
64364642e01fSmrg
64374642e01fSmrg	# Transform .lo files to .o files.
64384642e01fSmrg	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
64394642e01fSmrg      fi
64404642e01fSmrg
64414642e01fSmrg      # Eliminate all temporary directories.
64424642e01fSmrg      #for path in $notinst_path; do
64434642e01fSmrg      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
64444642e01fSmrg      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
64454642e01fSmrg      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
64464642e01fSmrg      #done
64474642e01fSmrg
64484642e01fSmrg      if test -n "$xrpath"; then
64494642e01fSmrg	# If the user specified any rpath flags, then add them.
64504642e01fSmrg	temp_xrpath=
64514642e01fSmrg	for libdir in $xrpath; do
64524642e01fSmrg	  temp_xrpath="$temp_xrpath -R$libdir"
64534642e01fSmrg	  case "$finalize_rpath " in
64544642e01fSmrg	  *" $libdir "*) ;;
64554642e01fSmrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
64564642e01fSmrg	  esac
64574642e01fSmrg	done
64584642e01fSmrg	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
64594642e01fSmrg	  dependency_libs="$temp_xrpath $dependency_libs"
64604642e01fSmrg	fi
64614642e01fSmrg      fi
64624642e01fSmrg
64634642e01fSmrg      # Make sure dlfiles contains only unique files that won't be dlpreopened
64644642e01fSmrg      old_dlfiles="$dlfiles"
64654642e01fSmrg      dlfiles=
64664642e01fSmrg      for lib in $old_dlfiles; do
64674642e01fSmrg	case " $dlprefiles $dlfiles " in
64684642e01fSmrg	*" $lib "*) ;;
64694642e01fSmrg	*) dlfiles="$dlfiles $lib" ;;
64704642e01fSmrg	esac
64714642e01fSmrg      done
64724642e01fSmrg
64734642e01fSmrg      # Make sure dlprefiles contains only unique files
64744642e01fSmrg      old_dlprefiles="$dlprefiles"
64754642e01fSmrg      dlprefiles=
64764642e01fSmrg      for lib in $old_dlprefiles; do
64774642e01fSmrg	case "$dlprefiles " in
64784642e01fSmrg	*" $lib "*) ;;
64794642e01fSmrg	*) dlprefiles="$dlprefiles $lib" ;;
64804642e01fSmrg	esac
64814642e01fSmrg      done
64824642e01fSmrg
64834642e01fSmrg      if test "$build_libtool_libs" = yes; then
64844642e01fSmrg	if test -n "$rpath"; then
64854642e01fSmrg	  case $host in
64864642e01fSmrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
64874642e01fSmrg	    # these systems don't actually have a c library (as such)!
64884642e01fSmrg	    ;;
64894642e01fSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
64904642e01fSmrg	    # Rhapsody C library is in the System framework
64914642e01fSmrg	    deplibs="$deplibs System.ltframework"
64924642e01fSmrg	    ;;
64934642e01fSmrg	  *-*-netbsd*)
64944642e01fSmrg	    # Don't link with libc until the a.out ld.so is fixed.
64954642e01fSmrg	    ;;
64964642e01fSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
64974642e01fSmrg	    # Do not include libc due to us having libc/libc_r.
64984642e01fSmrg	    ;;
64994642e01fSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
65004642e01fSmrg	    # Causes problems with __ctype
65014642e01fSmrg	    ;;
65024642e01fSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
65034642e01fSmrg	    # Compiler inserts libc in the correct place for threads to work
65044642e01fSmrg	    ;;
65054642e01fSmrg	  *)
65064642e01fSmrg	    # Add libc to deplibs on all other systems if necessary.
65074642e01fSmrg	    if test "$build_libtool_need_lc" = "yes"; then
65084642e01fSmrg	      deplibs="$deplibs -lc"
65094642e01fSmrg	    fi
65104642e01fSmrg	    ;;
65114642e01fSmrg	  esac
65124642e01fSmrg	fi
65134642e01fSmrg
65144642e01fSmrg	# Transform deplibs into only deplibs that can be linked in shared.
65154642e01fSmrg	name_save=$name
65164642e01fSmrg	libname_save=$libname
65174642e01fSmrg	release_save=$release
65184642e01fSmrg	versuffix_save=$versuffix
65194642e01fSmrg	major_save=$major
65204642e01fSmrg	# I'm not sure if I'm treating the release correctly.  I think
65214642e01fSmrg	# release should show up in the -l (ie -lgmp5) so we don't want to
65224642e01fSmrg	# add it in twice.  Is that correct?
65234642e01fSmrg	release=""
65244642e01fSmrg	versuffix=""
65254642e01fSmrg	major=""
65264642e01fSmrg	newdeplibs=
65274642e01fSmrg	droppeddeps=no
65284642e01fSmrg	case $deplibs_check_method in
65294642e01fSmrg	pass_all)
65304642e01fSmrg	  # Don't check for shared/static.  Everything works.
65314642e01fSmrg	  # This might be a little naive.  We might want to check
65324642e01fSmrg	  # whether the library exists or not.  But this is on
65334642e01fSmrg	  # osf3 & osf4 and I'm not really sure... Just
65344642e01fSmrg	  # implementing what was already the behavior.
65354642e01fSmrg	  newdeplibs=$deplibs
65364642e01fSmrg	  ;;
65374642e01fSmrg	test_compile)
65384642e01fSmrg	  # This code stresses the "libraries are programs" paradigm to its
65394642e01fSmrg	  # limits. Maybe even breaks it.  We compile a program, linking it
65404642e01fSmrg	  # against the deplibs as a proxy for the library.  Then we can check
65414642e01fSmrg	  # whether they linked in statically or dynamically with ldd.
65424642e01fSmrg	  $opt_dry_run || $RM conftest.c
65434642e01fSmrg	  cat > conftest.c <<EOF
65444642e01fSmrg	  int main() { return 0; }
65454642e01fSmrgEOF
65464642e01fSmrg	  $opt_dry_run || $RM conftest
65474642e01fSmrg	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
65484642e01fSmrg	    ldd_output=`ldd conftest`
65494642e01fSmrg	    for i in $deplibs; do
65504642e01fSmrg	      case $i in
65514642e01fSmrg	      -l*)
65524642e01fSmrg		func_stripname -l '' "$i"
65534642e01fSmrg		name=$func_stripname_result
65544642e01fSmrg		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
65554642e01fSmrg		  case " $predeps $postdeps " in
65564642e01fSmrg		  *" $i "*)
65574642e01fSmrg		    newdeplibs="$newdeplibs $i"
65584642e01fSmrg		    i=""
65594642e01fSmrg		    ;;
65604642e01fSmrg		  esac
65614642e01fSmrg		fi
65624642e01fSmrg		if test -n "$i" ; then
65634642e01fSmrg		  libname=`eval "\\$ECHO \"$libname_spec\""`
65644642e01fSmrg		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
65654642e01fSmrg		  set dummy $deplib_matches; shift
65664642e01fSmrg		  deplib_match=$1
65674642e01fSmrg		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
65684642e01fSmrg		    newdeplibs="$newdeplibs $i"
65694642e01fSmrg		  else
65704642e01fSmrg		    droppeddeps=yes
65714642e01fSmrg		    $ECHO
65724642e01fSmrg		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
65734642e01fSmrg		    $ECHO "*** I have the capability to make that library automatically link in when"
65744642e01fSmrg		    $ECHO "*** you link to this library.  But I can only do this if you have a"
65754642e01fSmrg		    $ECHO "*** shared version of the library, which I believe you do not have"
65764642e01fSmrg		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
65774642e01fSmrg		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
65784642e01fSmrg		  fi
65794642e01fSmrg		fi
65804642e01fSmrg		;;
65814642e01fSmrg	      *)
65824642e01fSmrg		newdeplibs="$newdeplibs $i"
65834642e01fSmrg		;;
65844642e01fSmrg	      esac
65854642e01fSmrg	    done
65864642e01fSmrg	  else
65874642e01fSmrg	    # Error occurred in the first compile.  Let's try to salvage
65884642e01fSmrg	    # the situation: Compile a separate program for each library.
65894642e01fSmrg	    for i in $deplibs; do
65904642e01fSmrg	      case $i in
65914642e01fSmrg	      -l*)
65924642e01fSmrg		func_stripname -l '' "$i"
65934642e01fSmrg		name=$func_stripname_result
65944642e01fSmrg		$opt_dry_run || $RM conftest
65954642e01fSmrg		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
65964642e01fSmrg		  ldd_output=`ldd conftest`
65974642e01fSmrg		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
65984642e01fSmrg		    case " $predeps $postdeps " in
65994642e01fSmrg		    *" $i "*)
66004642e01fSmrg		      newdeplibs="$newdeplibs $i"
66014642e01fSmrg		      i=""
66024642e01fSmrg		      ;;
66034642e01fSmrg		    esac
66044642e01fSmrg		  fi
66054642e01fSmrg		  if test -n "$i" ; then
66064642e01fSmrg		    libname=`eval "\\$ECHO \"$libname_spec\""`
66074642e01fSmrg		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
66084642e01fSmrg		    set dummy $deplib_matches; shift
66094642e01fSmrg		    deplib_match=$1
66104642e01fSmrg		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
66114642e01fSmrg		      newdeplibs="$newdeplibs $i"
66124642e01fSmrg		    else
66134642e01fSmrg		      droppeddeps=yes
66144642e01fSmrg		      $ECHO
66154642e01fSmrg		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
66164642e01fSmrg		      $ECHO "*** I have the capability to make that library automatically link in when"
66174642e01fSmrg		      $ECHO "*** you link to this library.  But I can only do this if you have a"
66184642e01fSmrg		      $ECHO "*** shared version of the library, which you do not appear to have"
66194642e01fSmrg		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
66204642e01fSmrg		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
66214642e01fSmrg		    fi
66224642e01fSmrg		  fi
66234642e01fSmrg		else
66244642e01fSmrg		  droppeddeps=yes
66254642e01fSmrg		  $ECHO
66264642e01fSmrg		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
66274642e01fSmrg		  $ECHO "*** make it link in!  You will probably need to install it or some"
66284642e01fSmrg		  $ECHO "*** library that it depends on before this library will be fully"
66294642e01fSmrg		  $ECHO "*** functional.  Installing it before continuing would be even better."
66304642e01fSmrg		fi
66314642e01fSmrg		;;
66324642e01fSmrg	      *)
66334642e01fSmrg		newdeplibs="$newdeplibs $i"
66344642e01fSmrg		;;
66354642e01fSmrg	      esac
66364642e01fSmrg	    done
66374642e01fSmrg	  fi
66384642e01fSmrg	  ;;
66394642e01fSmrg	file_magic*)
66404642e01fSmrg	  set dummy $deplibs_check_method; shift
66414642e01fSmrg	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
66424642e01fSmrg	  for a_deplib in $deplibs; do
66434642e01fSmrg	    case $a_deplib in
66444642e01fSmrg	    -l*)
66454642e01fSmrg	      func_stripname -l '' "$a_deplib"
66464642e01fSmrg	      name=$func_stripname_result
66474642e01fSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
66484642e01fSmrg		case " $predeps $postdeps " in
66494642e01fSmrg		*" $a_deplib "*)
66504642e01fSmrg		  newdeplibs="$newdeplibs $a_deplib"
66514642e01fSmrg		  a_deplib=""
66524642e01fSmrg		  ;;
66534642e01fSmrg		esac
66544642e01fSmrg	      fi
66554642e01fSmrg	      if test -n "$a_deplib" ; then
66564642e01fSmrg		libname=`eval "\\$ECHO \"$libname_spec\""`
66574642e01fSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
66584642e01fSmrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
66594642e01fSmrg		  for potent_lib in $potential_libs; do
66604642e01fSmrg		      # Follow soft links.
66614642e01fSmrg		      if ls -lLd "$potent_lib" 2>/dev/null |
66624642e01fSmrg			 $GREP " -> " >/dev/null; then
66634642e01fSmrg			continue
66644642e01fSmrg		      fi
66654642e01fSmrg		      # The statement above tries to avoid entering an
66664642e01fSmrg		      # endless loop below, in case of cyclic links.
66674642e01fSmrg		      # We might still enter an endless loop, since a link
66684642e01fSmrg		      # loop can be closed while we follow links,
66694642e01fSmrg		      # but so what?
66704642e01fSmrg		      potlib="$potent_lib"
66714642e01fSmrg		      while test -h "$potlib" 2>/dev/null; do
66724642e01fSmrg			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
66734642e01fSmrg			case $potliblink in
66744642e01fSmrg			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
66754642e01fSmrg			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
66764642e01fSmrg			esac
66774642e01fSmrg		      done
66784642e01fSmrg		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
66794642e01fSmrg			 $SED -e 10q |
66804642e01fSmrg			 $EGREP "$file_magic_regex" > /dev/null; then
66814642e01fSmrg			newdeplibs="$newdeplibs $a_deplib"
66824642e01fSmrg			a_deplib=""
66834642e01fSmrg			break 2
66844642e01fSmrg		      fi
66854642e01fSmrg		  done
66864642e01fSmrg		done
66874642e01fSmrg	      fi
66884642e01fSmrg	      if test -n "$a_deplib" ; then
66894642e01fSmrg		droppeddeps=yes
66904642e01fSmrg		$ECHO
66914642e01fSmrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
66924642e01fSmrg		$ECHO "*** I have the capability to make that library automatically link in when"
66934642e01fSmrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
66944642e01fSmrg		$ECHO "*** shared version of the library, which you do not appear to have"
66954642e01fSmrg		$ECHO "*** because I did check the linker path looking for a file starting"
66964642e01fSmrg		if test -z "$potlib" ; then
66974642e01fSmrg		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
66984642e01fSmrg		else
66994642e01fSmrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
67004642e01fSmrg		  $ECHO "*** using a file magic. Last file checked: $potlib"
67014642e01fSmrg		fi
67024642e01fSmrg	      fi
67034642e01fSmrg	      ;;
67044642e01fSmrg	    *)
67054642e01fSmrg	      # Add a -L argument.
67064642e01fSmrg	      newdeplibs="$newdeplibs $a_deplib"
67074642e01fSmrg	      ;;
67084642e01fSmrg	    esac
67094642e01fSmrg	  done # Gone through all deplibs.
67104642e01fSmrg	  ;;
67114642e01fSmrg	match_pattern*)
67124642e01fSmrg	  set dummy $deplibs_check_method; shift
67134642e01fSmrg	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
67144642e01fSmrg	  for a_deplib in $deplibs; do
67154642e01fSmrg	    case $a_deplib in
67164642e01fSmrg	    -l*)
67174642e01fSmrg	      func_stripname -l '' "$a_deplib"
67184642e01fSmrg	      name=$func_stripname_result
67194642e01fSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
67204642e01fSmrg		case " $predeps $postdeps " in
67214642e01fSmrg		*" $a_deplib "*)
67224642e01fSmrg		  newdeplibs="$newdeplibs $a_deplib"
67234642e01fSmrg		  a_deplib=""
67244642e01fSmrg		  ;;
67254642e01fSmrg		esac
67264642e01fSmrg	      fi
67274642e01fSmrg	      if test -n "$a_deplib" ; then
67284642e01fSmrg		libname=`eval "\\$ECHO \"$libname_spec\""`
67294642e01fSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
67304642e01fSmrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
67314642e01fSmrg		  for potent_lib in $potential_libs; do
67324642e01fSmrg		    potlib="$potent_lib" # see symlink-check above in file_magic test
67334642e01fSmrg		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
67344642e01fSmrg		       $EGREP "$match_pattern_regex" > /dev/null; then
67354642e01fSmrg		      newdeplibs="$newdeplibs $a_deplib"
67364642e01fSmrg		      a_deplib=""
67374642e01fSmrg		      break 2
67384642e01fSmrg		    fi
67394642e01fSmrg		  done
67404642e01fSmrg		done
67414642e01fSmrg	      fi
67424642e01fSmrg	      if test -n "$a_deplib" ; then
67434642e01fSmrg		droppeddeps=yes
67444642e01fSmrg		$ECHO
67454642e01fSmrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
67464642e01fSmrg		$ECHO "*** I have the capability to make that library automatically link in when"
67474642e01fSmrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
67484642e01fSmrg		$ECHO "*** shared version of the library, which you do not appear to have"
67494642e01fSmrg		$ECHO "*** because I did check the linker path looking for a file starting"
67504642e01fSmrg		if test -z "$potlib" ; then
67514642e01fSmrg		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
67524642e01fSmrg		else
67534642e01fSmrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
67544642e01fSmrg		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
67554642e01fSmrg		fi
67564642e01fSmrg	      fi
67574642e01fSmrg	      ;;
67584642e01fSmrg	    *)
67594642e01fSmrg	      # Add a -L argument.
67604642e01fSmrg	      newdeplibs="$newdeplibs $a_deplib"
67614642e01fSmrg	      ;;
67624642e01fSmrg	    esac
67634642e01fSmrg	  done # Gone through all deplibs.
67644642e01fSmrg	  ;;
67654642e01fSmrg	none | unknown | *)
67664642e01fSmrg	  newdeplibs=""
67674642e01fSmrg	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
67684642e01fSmrg	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
67694642e01fSmrg	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
67704642e01fSmrg	    for i in $predeps $postdeps ; do
67714642e01fSmrg	      # can't use Xsed below, because $i might contain '/'
67724642e01fSmrg	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
67734642e01fSmrg	    done
67744642e01fSmrg	  fi
67754642e01fSmrg	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
67764642e01fSmrg	     $GREP . >/dev/null; then
67774642e01fSmrg	    $ECHO
67784642e01fSmrg	    if test "X$deplibs_check_method" = "Xnone"; then
67794642e01fSmrg	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
67804642e01fSmrg	    else
67814642e01fSmrg	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
67824642e01fSmrg	    fi
67834642e01fSmrg	    $ECHO "*** All declared inter-library dependencies are being dropped."
67844642e01fSmrg	    droppeddeps=yes
67854642e01fSmrg	  fi
67864642e01fSmrg	  ;;
67874642e01fSmrg	esac
67884642e01fSmrg	versuffix=$versuffix_save
67894642e01fSmrg	major=$major_save
67904642e01fSmrg	release=$release_save
67914642e01fSmrg	libname=$libname_save
67924642e01fSmrg	name=$name_save
67934642e01fSmrg
67944642e01fSmrg	case $host in
67954642e01fSmrg	*-*-rhapsody* | *-*-darwin1.[012])
67964642e01fSmrg	  # On Rhapsody replace the C library with the System framework
67974642e01fSmrg	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
67984642e01fSmrg	  ;;
67994642e01fSmrg	esac
68004642e01fSmrg
68014642e01fSmrg	if test "$droppeddeps" = yes; then
68024642e01fSmrg	  if test "$module" = yes; then
68034642e01fSmrg	    $ECHO
68044642e01fSmrg	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
68054642e01fSmrg	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
68064642e01fSmrg	    $ECHO "*** a static module, that should work as long as the dlopening"
68074642e01fSmrg	    $ECHO "*** application is linked with the -dlopen flag."
68084642e01fSmrg	    if test -z "$global_symbol_pipe"; then
68094642e01fSmrg	      $ECHO
68104642e01fSmrg	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
68114642e01fSmrg	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
68124642e01fSmrg	      $ECHO "*** not find such a program.  So, this module is probably useless."
68134642e01fSmrg	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
68144642e01fSmrg	    fi
68154642e01fSmrg	    if test "$build_old_libs" = no; then
68164642e01fSmrg	      oldlibs="$output_objdir/$libname.$libext"
68174642e01fSmrg	      build_libtool_libs=module
68184642e01fSmrg	      build_old_libs=yes
68194642e01fSmrg	    else
68204642e01fSmrg	      build_libtool_libs=no
68214642e01fSmrg	    fi
68224642e01fSmrg	  else
68234642e01fSmrg	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
68244642e01fSmrg	    $ECHO "*** automatically added whenever a program is linked with this library"
68254642e01fSmrg	    $ECHO "*** or is declared to -dlopen it."
68264642e01fSmrg
68274642e01fSmrg	    if test "$allow_undefined" = no; then
68284642e01fSmrg	      $ECHO
68294642e01fSmrg	      $ECHO "*** Since this library must not contain undefined symbols,"
68304642e01fSmrg	      $ECHO "*** because either the platform does not support them or"
68314642e01fSmrg	      $ECHO "*** it was explicitly requested with -no-undefined,"
68324642e01fSmrg	      $ECHO "*** libtool will only create a static version of it."
68334642e01fSmrg	      if test "$build_old_libs" = no; then
68344642e01fSmrg		oldlibs="$output_objdir/$libname.$libext"
68354642e01fSmrg		build_libtool_libs=module
68364642e01fSmrg		build_old_libs=yes
68374642e01fSmrg	      else
68384642e01fSmrg		build_libtool_libs=no
68394642e01fSmrg	      fi
68404642e01fSmrg	    fi
68414642e01fSmrg	  fi
68424642e01fSmrg	fi
68434642e01fSmrg	# Done checking deplibs!
68444642e01fSmrg	deplibs=$newdeplibs
68454642e01fSmrg      fi
68464642e01fSmrg      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
68474642e01fSmrg      case $host in
68484642e01fSmrg	*-*-darwin*)
68494642e01fSmrg	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68504642e01fSmrg	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68514642e01fSmrg	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68524642e01fSmrg	  ;;
68534642e01fSmrg      esac
68544642e01fSmrg
68554642e01fSmrg      # move library search paths that coincide with paths to not yet
68564642e01fSmrg      # installed libraries to the beginning of the library search list
68574642e01fSmrg      new_libs=
68584642e01fSmrg      for path in $notinst_path; do
68594642e01fSmrg	case " $new_libs " in
68604642e01fSmrg	*" -L$path/$objdir "*) ;;
68614642e01fSmrg	*)
68624642e01fSmrg	  case " $deplibs " in
68634642e01fSmrg	  *" -L$path/$objdir "*)
68644642e01fSmrg	    new_libs="$new_libs -L$path/$objdir" ;;
68654642e01fSmrg	  esac
68664642e01fSmrg	  ;;
68674642e01fSmrg	esac
68684642e01fSmrg      done
68694642e01fSmrg      for deplib in $deplibs; do
68704642e01fSmrg	case $deplib in
68714642e01fSmrg	-L*)
68724642e01fSmrg	  case " $new_libs " in
68734642e01fSmrg	  *" $deplib "*) ;;
68744642e01fSmrg	  *) new_libs="$new_libs $deplib" ;;
68754642e01fSmrg	  esac
68764642e01fSmrg	  ;;
68774642e01fSmrg	*) new_libs="$new_libs $deplib" ;;
68784642e01fSmrg	esac
68794642e01fSmrg      done
68804642e01fSmrg      deplibs="$new_libs"
68814642e01fSmrg
68824642e01fSmrg      # All the library-specific variables (install_libdir is set above).
68834642e01fSmrg      library_names=
68844642e01fSmrg      old_library=
68854642e01fSmrg      dlname=
68864642e01fSmrg
68874642e01fSmrg      # Test again, we may have decided not to build it any more
68884642e01fSmrg      if test "$build_libtool_libs" = yes; then
68894642e01fSmrg	if test "$hardcode_into_libs" = yes; then
68904642e01fSmrg	  # Hardcode the library paths
68914642e01fSmrg	  hardcode_libdirs=
68924642e01fSmrg	  dep_rpath=
68934642e01fSmrg	  rpath="$finalize_rpath"
68944642e01fSmrg	  test "$mode" != relink && rpath="$compile_rpath$rpath"
68954642e01fSmrg	  for libdir in $rpath; do
68964642e01fSmrg	    if test -n "$hardcode_libdir_flag_spec"; then
68974642e01fSmrg	      if test -n "$hardcode_libdir_separator"; then
68984642e01fSmrg		if test -z "$hardcode_libdirs"; then
68994642e01fSmrg		  hardcode_libdirs="$libdir"
69004642e01fSmrg		else
69014642e01fSmrg		  # Just accumulate the unique libdirs.
69024642e01fSmrg		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
69034642e01fSmrg		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
69044642e01fSmrg		    ;;
69054642e01fSmrg		  *)
69064642e01fSmrg		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
69074642e01fSmrg		    ;;
69084642e01fSmrg		  esac
69094642e01fSmrg		fi
69104642e01fSmrg	      else
69114642e01fSmrg		eval flag=\"$hardcode_libdir_flag_spec\"
69124642e01fSmrg		dep_rpath="$dep_rpath $flag"
69134642e01fSmrg	      fi
69144642e01fSmrg	    elif test -n "$runpath_var"; then
69154642e01fSmrg	      case "$perm_rpath " in
69164642e01fSmrg	      *" $libdir "*) ;;
69174642e01fSmrg	      *) perm_rpath="$perm_rpath $libdir" ;;
69184642e01fSmrg	      esac
69194642e01fSmrg	    fi
69204642e01fSmrg	  done
69214642e01fSmrg	  # Substitute the hardcoded libdirs into the rpath.
69224642e01fSmrg	  if test -n "$hardcode_libdir_separator" &&
69234642e01fSmrg	     test -n "$hardcode_libdirs"; then
69244642e01fSmrg	    libdir="$hardcode_libdirs"
69254642e01fSmrg	    if test -n "$hardcode_libdir_flag_spec_ld"; then
69264642e01fSmrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
69274642e01fSmrg	    else
69284642e01fSmrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
69294642e01fSmrg	    fi
69304642e01fSmrg	  fi
69314642e01fSmrg	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
69324642e01fSmrg	    # We should set the runpath_var.
69334642e01fSmrg	    rpath=
69344642e01fSmrg	    for dir in $perm_rpath; do
69354642e01fSmrg	      rpath="$rpath$dir:"
69364642e01fSmrg	    done
69374642e01fSmrg	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
69384642e01fSmrg	  fi
69394642e01fSmrg	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
69404642e01fSmrg	fi
694105b261ecSmrg
69424642e01fSmrg	shlibpath="$finalize_shlibpath"
69434642e01fSmrg	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
69444642e01fSmrg	if test -n "$shlibpath"; then
69454642e01fSmrg	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
69464642e01fSmrg	fi
694705b261ecSmrg
69484642e01fSmrg	# Get the real and link names of the library.
69494642e01fSmrg	eval shared_ext=\"$shrext_cmds\"
69504642e01fSmrg	eval library_names=\"$library_names_spec\"
69514642e01fSmrg	set dummy $library_names
69524642e01fSmrg	shift
69534642e01fSmrg	realname="$1"
69544642e01fSmrg	shift
695505b261ecSmrg
69564642e01fSmrg	if test -n "$soname_spec"; then
69574642e01fSmrg	  eval soname=\"$soname_spec\"
69584642e01fSmrg	else
69594642e01fSmrg	  soname="$realname"
69604642e01fSmrg	fi
69614642e01fSmrg	if test -z "$dlname"; then
69624642e01fSmrg	  dlname=$soname
69634642e01fSmrg	fi
696405b261ecSmrg
69654642e01fSmrg	lib="$output_objdir/$realname"
69664642e01fSmrg	linknames=
69674642e01fSmrg	for link
69684642e01fSmrg	do
69694642e01fSmrg	  linknames="$linknames $link"
69704642e01fSmrg	done
697105b261ecSmrg
69724642e01fSmrg	# Use standard objects if they are pic
69734642e01fSmrg	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
69744642e01fSmrg	test "X$libobjs" = "X " && libobjs=
697505b261ecSmrg
69764642e01fSmrg	delfiles=
69774642e01fSmrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
69784642e01fSmrg	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
69794642e01fSmrg	  export_symbols="$output_objdir/$libname.uexp"
69804642e01fSmrg	  delfiles="$delfiles $export_symbols"
69814642e01fSmrg	fi
698205b261ecSmrg
69834642e01fSmrg	orig_export_symbols=
69844642e01fSmrg	case $host_os in
69854642e01fSmrg	cygwin* | mingw* | cegcc*)
69864642e01fSmrg	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
69874642e01fSmrg	    # exporting using user supplied symfile
69884642e01fSmrg	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
69894642e01fSmrg	      # and it's NOT already a .def file. Must figure out
69904642e01fSmrg	      # which of the given symbols are data symbols and tag
69914642e01fSmrg	      # them as such. So, trigger use of export_symbols_cmds.
69924642e01fSmrg	      # export_symbols gets reassigned inside the "prepare
69934642e01fSmrg	      # the list of exported symbols" if statement, so the
69944642e01fSmrg	      # include_expsyms logic still works.
69954642e01fSmrg	      orig_export_symbols="$export_symbols"
69964642e01fSmrg	      export_symbols=
69974642e01fSmrg	      always_export_symbols=yes
69984642e01fSmrg	    fi
69994642e01fSmrg	  fi
70004642e01fSmrg	  ;;
70014642e01fSmrg	esac
700205b261ecSmrg
70034642e01fSmrg	# Prepare the list of exported symbols
70044642e01fSmrg	if test -z "$export_symbols"; then
70054642e01fSmrg	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
70064642e01fSmrg	    func_verbose "generating symbol list for \`$libname.la'"
70074642e01fSmrg	    export_symbols="$output_objdir/$libname.exp"
70084642e01fSmrg	    $opt_dry_run || $RM $export_symbols
70094642e01fSmrg	    cmds=$export_symbols_cmds
70104642e01fSmrg	    save_ifs="$IFS"; IFS='~'
70114642e01fSmrg	    for cmd in $cmds; do
70124642e01fSmrg	      IFS="$save_ifs"
70134642e01fSmrg	      eval cmd=\"$cmd\"
70144642e01fSmrg	      func_len " $cmd"
70154642e01fSmrg	      len=$func_len_result
70164642e01fSmrg	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
70174642e01fSmrg		func_show_eval "$cmd" 'exit $?'
70184642e01fSmrg		skipped_export=false
70194642e01fSmrg	      else
70204642e01fSmrg		# The command line is too long to execute in one step.
70214642e01fSmrg		func_verbose "using reloadable object file for export list..."
70224642e01fSmrg		skipped_export=:
70234642e01fSmrg		# Break out early, otherwise skipped_export may be
70244642e01fSmrg		# set to false by a later but shorter cmd.
70254642e01fSmrg		break
70264642e01fSmrg	      fi
70274642e01fSmrg	    done
70284642e01fSmrg	    IFS="$save_ifs"
70294642e01fSmrg	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
70304642e01fSmrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
70314642e01fSmrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
70324642e01fSmrg	    fi
70334642e01fSmrg	  fi
703405b261ecSmrg	fi
703505b261ecSmrg
70364642e01fSmrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
70374642e01fSmrg	  tmp_export_symbols="$export_symbols"
70384642e01fSmrg	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
70394642e01fSmrg	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
70404642e01fSmrg	fi
704105b261ecSmrg
70424642e01fSmrg	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
70434642e01fSmrg	  # The given exports_symbols file has to be filtered, so filter it.
70444642e01fSmrg	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
70454642e01fSmrg	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
70464642e01fSmrg	  # 's' commands which not all seds can handle. GNU sed should be fine
70474642e01fSmrg	  # though. Also, the filter scales superlinearly with the number of
70484642e01fSmrg	  # global variables. join(1) would be nice here, but unfortunately
70494642e01fSmrg	  # isn't a blessed tool.
70504642e01fSmrg	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
70514642e01fSmrg	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
70524642e01fSmrg	  export_symbols=$output_objdir/$libname.def
70534642e01fSmrg	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
70544642e01fSmrg	fi
705505b261ecSmrg
70564642e01fSmrg	tmp_deplibs=
70574642e01fSmrg	for test_deplib in $deplibs; do
70584642e01fSmrg	  case " $convenience " in
70594642e01fSmrg	  *" $test_deplib "*) ;;
70604642e01fSmrg	  *)
70614642e01fSmrg	    tmp_deplibs="$tmp_deplibs $test_deplib"
70624642e01fSmrg	    ;;
70634642e01fSmrg	  esac
70644642e01fSmrg	done
70654642e01fSmrg	deplibs="$tmp_deplibs"
706605b261ecSmrg
70674642e01fSmrg	if test -n "$convenience"; then
70684642e01fSmrg	  if test -n "$whole_archive_flag_spec" &&
70694642e01fSmrg	    test "$compiler_needs_object" = yes &&
70704642e01fSmrg	    test -z "$libobjs"; then
70714642e01fSmrg	    # extract the archives, so we have objects to list.
70724642e01fSmrg	    # TODO: could optimize this to just extract one archive.
70734642e01fSmrg	    whole_archive_flag_spec=
70744642e01fSmrg	  fi
70754642e01fSmrg	  if test -n "$whole_archive_flag_spec"; then
70764642e01fSmrg	    save_libobjs=$libobjs
70774642e01fSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
70784642e01fSmrg	    test "X$libobjs" = "X " && libobjs=
70794642e01fSmrg	  else
70804642e01fSmrg	    gentop="$output_objdir/${outputname}x"
70814642e01fSmrg	    generated="$generated $gentop"
708205b261ecSmrg
70834642e01fSmrg	    func_extract_archives $gentop $convenience
70844642e01fSmrg	    libobjs="$libobjs $func_extract_archives_result"
70854642e01fSmrg	    test "X$libobjs" = "X " && libobjs=
70864642e01fSmrg	  fi
708705b261ecSmrg	fi
708805b261ecSmrg
70894642e01fSmrg	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
70904642e01fSmrg	  eval flag=\"$thread_safe_flag_spec\"
70914642e01fSmrg	  linker_flags="$linker_flags $flag"
709205b261ecSmrg	fi
709305b261ecSmrg
70944642e01fSmrg	# Make a backup of the uninstalled library when relinking
70954642e01fSmrg	if test "$mode" = relink; then
70964642e01fSmrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
70974642e01fSmrg	fi
709805b261ecSmrg
70994642e01fSmrg	# Do each of the archive commands.
71004642e01fSmrg	if test "$module" = yes && test -n "$module_cmds" ; then
71014642e01fSmrg	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
71024642e01fSmrg	    eval test_cmds=\"$module_expsym_cmds\"
71034642e01fSmrg	    cmds=$module_expsym_cmds
71044642e01fSmrg	  else
71054642e01fSmrg	    eval test_cmds=\"$module_cmds\"
71064642e01fSmrg	    cmds=$module_cmds
71074642e01fSmrg	  fi
710805b261ecSmrg	else
71094642e01fSmrg	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
71104642e01fSmrg	    eval test_cmds=\"$archive_expsym_cmds\"
71114642e01fSmrg	    cmds=$archive_expsym_cmds
71124642e01fSmrg	  else
71134642e01fSmrg	    eval test_cmds=\"$archive_cmds\"
71144642e01fSmrg	    cmds=$archive_cmds
71154642e01fSmrg	  fi
711605b261ecSmrg	fi
711705b261ecSmrg
71184642e01fSmrg	if test "X$skipped_export" != "X:" &&
71194642e01fSmrg	   func_len " $test_cmds" &&
71204642e01fSmrg	   len=$func_len_result &&
71214642e01fSmrg	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
71224642e01fSmrg	  :
71234642e01fSmrg	else
71244642e01fSmrg	  # The command line is too long to link in one step, link piecewise
71254642e01fSmrg	  # or, if using GNU ld and skipped_export is not :, use a linker
71264642e01fSmrg	  # script.
712705b261ecSmrg
71284642e01fSmrg	  # Save the value of $output and $libobjs because we want to
71294642e01fSmrg	  # use them later.  If we have whole_archive_flag_spec, we
71304642e01fSmrg	  # want to use save_libobjs as it was before
71314642e01fSmrg	  # whole_archive_flag_spec was expanded, because we can't
71324642e01fSmrg	  # assume the linker understands whole_archive_flag_spec.
71334642e01fSmrg	  # This may have to be revisited, in case too many
71344642e01fSmrg	  # convenience libraries get linked in and end up exceeding
71354642e01fSmrg	  # the spec.
71364642e01fSmrg	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
71374642e01fSmrg	    save_libobjs=$libobjs
71384642e01fSmrg	  fi
71394642e01fSmrg	  save_output=$output
71404642e01fSmrg	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
714105b261ecSmrg
71424642e01fSmrg	  # Clear the reloadable object creation command queue and
71434642e01fSmrg	  # initialize k to one.
71444642e01fSmrg	  test_cmds=
71454642e01fSmrg	  concat_cmds=
71464642e01fSmrg	  objlist=
71474642e01fSmrg	  last_robj=
71484642e01fSmrg	  k=1
71494642e01fSmrg
71504642e01fSmrg	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
71514642e01fSmrg	    output=${output_objdir}/${output_la}.lnkscript
71524642e01fSmrg	    func_verbose "creating GNU ld script: $output"
71534642e01fSmrg	    $ECHO 'INPUT (' > $output
71544642e01fSmrg	    for obj in $save_libobjs
715505b261ecSmrg	    do
71564642e01fSmrg	      $ECHO "$obj" >> $output
71574642e01fSmrg	    done
71584642e01fSmrg	    $ECHO ')' >> $output
71594642e01fSmrg	    delfiles="$delfiles $output"
71604642e01fSmrg	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
71614642e01fSmrg	    output=${output_objdir}/${output_la}.lnk
71624642e01fSmrg	    func_verbose "creating linker input file list: $output"
71634642e01fSmrg	    : > $output
71644642e01fSmrg	    set x $save_libobjs
71654642e01fSmrg	    shift
71664642e01fSmrg	    firstobj=
71674642e01fSmrg	    if test "$compiler_needs_object" = yes; then
71684642e01fSmrg	      firstobj="$1 "
71694642e01fSmrg	      shift
71704642e01fSmrg	    fi
71714642e01fSmrg	    for obj
71724642e01fSmrg	    do
71734642e01fSmrg	      $ECHO "$obj" >> $output
71744642e01fSmrg	    done
71754642e01fSmrg	    delfiles="$delfiles $output"
71764642e01fSmrg	    output=$firstobj\"$file_list_spec$output\"
71774642e01fSmrg	  else
71784642e01fSmrg	    if test -n "$save_libobjs"; then
71794642e01fSmrg	      func_verbose "creating reloadable object files..."
71804642e01fSmrg	      output=$output_objdir/$output_la-${k}.$objext
71814642e01fSmrg	      eval test_cmds=\"$reload_cmds\"
71824642e01fSmrg	      func_len " $test_cmds"
71834642e01fSmrg	      len0=$func_len_result
71844642e01fSmrg	      len=$len0
71854642e01fSmrg
71864642e01fSmrg	      # Loop over the list of objects to be linked.
71874642e01fSmrg	      for obj in $save_libobjs
71884642e01fSmrg	      do
71894642e01fSmrg		func_len " $obj"
71904642e01fSmrg		func_arith $len + $func_len_result
71914642e01fSmrg		len=$func_arith_result
71924642e01fSmrg		if test "X$objlist" = X ||
71934642e01fSmrg		   test "$len" -lt "$max_cmd_len"; then
71944642e01fSmrg		  func_append objlist " $obj"
71954642e01fSmrg		else
71964642e01fSmrg		  # The command $test_cmds is almost too long, add a
71974642e01fSmrg		  # command to the queue.
71984642e01fSmrg		  if test "$k" -eq 1 ; then
71994642e01fSmrg		    # The first file doesn't have a previous command to add.
72004642e01fSmrg		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
72014642e01fSmrg		  else
72024642e01fSmrg		    # All subsequent reloadable object files will link in
72034642e01fSmrg		    # the last one created.
72044642e01fSmrg		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
72054642e01fSmrg		  fi
72064642e01fSmrg		  last_robj=$output_objdir/$output_la-${k}.$objext
72074642e01fSmrg		  func_arith $k + 1
72084642e01fSmrg		  k=$func_arith_result
72094642e01fSmrg		  output=$output_objdir/$output_la-${k}.$objext
72104642e01fSmrg		  objlist=$obj
72114642e01fSmrg		  func_len " $last_robj"
72124642e01fSmrg		  func_arith $len0 + $func_len_result
72134642e01fSmrg		  len=$func_arith_result
72144642e01fSmrg		fi
72154642e01fSmrg	      done
72164642e01fSmrg	      # Handle the remaining objects by creating one last
72174642e01fSmrg	      # reloadable object file.  All subsequent reloadable object
72184642e01fSmrg	      # files will link in the last one created.
72194642e01fSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
72204642e01fSmrg	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
72214642e01fSmrg	      if test -n "$last_robj"; then
72224642e01fSmrg	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
72234642e01fSmrg	      fi
72244642e01fSmrg	      delfiles="$delfiles $output"
722505b261ecSmrg
72264642e01fSmrg	    else
72274642e01fSmrg	      output=
72284642e01fSmrg	    fi
722905b261ecSmrg
72304642e01fSmrg	    if ${skipped_export-false}; then
72314642e01fSmrg	      func_verbose "generating symbol list for \`$libname.la'"
72324642e01fSmrg	      export_symbols="$output_objdir/$libname.exp"
72334642e01fSmrg	      $opt_dry_run || $RM $export_symbols
72344642e01fSmrg	      libobjs=$output
72354642e01fSmrg	      # Append the command to create the export file.
72364642e01fSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
72374642e01fSmrg	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
72384642e01fSmrg	      if test -n "$last_robj"; then
72394642e01fSmrg		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
72404642e01fSmrg	      fi
724105b261ecSmrg	    fi
724205b261ecSmrg
72434642e01fSmrg	    test -n "$save_libobjs" &&
72444642e01fSmrg	      func_verbose "creating a temporary reloadable object file: $output"
724505b261ecSmrg
72464642e01fSmrg	    # Loop through the commands generated above and execute them.
72474642e01fSmrg	    save_ifs="$IFS"; IFS='~'
72484642e01fSmrg	    for cmd in $concat_cmds; do
72494642e01fSmrg	      IFS="$save_ifs"
72504642e01fSmrg	      $opt_silent || {
72514642e01fSmrg		  func_quote_for_expand "$cmd"
72524642e01fSmrg		  eval "func_echo $func_quote_for_expand_result"
72534642e01fSmrg	      }
72544642e01fSmrg	      $opt_dry_run || eval "$cmd" || {
72554642e01fSmrg		lt_exit=$?
72564642e01fSmrg
72574642e01fSmrg		# Restore the uninstalled library and exit
72584642e01fSmrg		if test "$mode" = relink; then
72594642e01fSmrg		  ( cd "$output_objdir" && \
72604642e01fSmrg		    $RM "${realname}T" && \
72614642e01fSmrg		    $MV "${realname}U" "$realname" )
72624642e01fSmrg		fi
726305b261ecSmrg
72644642e01fSmrg		exit $lt_exit
72654642e01fSmrg	      }
72664642e01fSmrg	    done
72674642e01fSmrg	    IFS="$save_ifs"
726805b261ecSmrg
72694642e01fSmrg	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
72704642e01fSmrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
72714642e01fSmrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
727205b261ecSmrg	    fi
727305b261ecSmrg	  fi
727405b261ecSmrg
72754642e01fSmrg          if ${skipped_export-false}; then
72764642e01fSmrg	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
72774642e01fSmrg	      tmp_export_symbols="$export_symbols"
72784642e01fSmrg	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
72794642e01fSmrg	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
72804642e01fSmrg	    fi
728105b261ecSmrg
72824642e01fSmrg	    if test -n "$orig_export_symbols"; then
72834642e01fSmrg	      # The given exports_symbols file has to be filtered, so filter it.
72844642e01fSmrg	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
72854642e01fSmrg	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
72864642e01fSmrg	      # 's' commands which not all seds can handle. GNU sed should be fine
72874642e01fSmrg	      # though. Also, the filter scales superlinearly with the number of
72884642e01fSmrg	      # global variables. join(1) would be nice here, but unfortunately
72894642e01fSmrg	      # isn't a blessed tool.
72904642e01fSmrg	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
72914642e01fSmrg	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
72924642e01fSmrg	      export_symbols=$output_objdir/$libname.def
72934642e01fSmrg	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
72944642e01fSmrg	    fi
72954642e01fSmrg	  fi
729605b261ecSmrg
72974642e01fSmrg	  libobjs=$output
72984642e01fSmrg	  # Restore the value of output.
72994642e01fSmrg	  output=$save_output
730005b261ecSmrg
73014642e01fSmrg	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
73024642e01fSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
73034642e01fSmrg	    test "X$libobjs" = "X " && libobjs=
73044642e01fSmrg	  fi
73054642e01fSmrg	  # Expand the library linking commands again to reset the
73064642e01fSmrg	  # value of $libobjs for piecewise linking.
730705b261ecSmrg
73084642e01fSmrg	  # Do each of the archive commands.
73094642e01fSmrg	  if test "$module" = yes && test -n "$module_cmds" ; then
73104642e01fSmrg	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
73114642e01fSmrg	      cmds=$module_expsym_cmds
73124642e01fSmrg	    else
73134642e01fSmrg	      cmds=$module_cmds
731405b261ecSmrg	    fi
731505b261ecSmrg	  else
73164642e01fSmrg	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
73174642e01fSmrg	      cmds=$archive_expsym_cmds
73184642e01fSmrg	    else
73194642e01fSmrg	      cmds=$archive_cmds
73204642e01fSmrg	    fi
732105b261ecSmrg	  fi
73224642e01fSmrg	fi
732305b261ecSmrg
73244642e01fSmrg	if test -n "$delfiles"; then
73254642e01fSmrg	  # Append the command to remove temporary files to $cmds.
73264642e01fSmrg	  eval cmds=\"\$cmds~\$RM $delfiles\"
73274642e01fSmrg	fi
732805b261ecSmrg
73294642e01fSmrg	# Add any objects from preloaded convenience libraries
73304642e01fSmrg	if test -n "$dlprefiles"; then
73314642e01fSmrg	  gentop="$output_objdir/${outputname}x"
73324642e01fSmrg	  generated="$generated $gentop"
733305b261ecSmrg
73344642e01fSmrg	  func_extract_archives $gentop $dlprefiles
73354642e01fSmrg	  libobjs="$libobjs $func_extract_archives_result"
73364642e01fSmrg	  test "X$libobjs" = "X " && libobjs=
73374642e01fSmrg	fi
733805b261ecSmrg
73394642e01fSmrg	save_ifs="$IFS"; IFS='~'
73404642e01fSmrg	for cmd in $cmds; do
73414642e01fSmrg	  IFS="$save_ifs"
73424642e01fSmrg	  eval cmd=\"$cmd\"
73434642e01fSmrg	  $opt_silent || {
73444642e01fSmrg	    func_quote_for_expand "$cmd"
73454642e01fSmrg	    eval "func_echo $func_quote_for_expand_result"
73464642e01fSmrg	  }
73474642e01fSmrg	  $opt_dry_run || eval "$cmd" || {
73484642e01fSmrg	    lt_exit=$?
734905b261ecSmrg
73504642e01fSmrg	    # Restore the uninstalled library and exit
73514642e01fSmrg	    if test "$mode" = relink; then
73524642e01fSmrg	      ( cd "$output_objdir" && \
73534642e01fSmrg	        $RM "${realname}T" && \
73544642e01fSmrg		$MV "${realname}U" "$realname" )
73554642e01fSmrg	    fi
735605b261ecSmrg
73574642e01fSmrg	    exit $lt_exit
73584642e01fSmrg	  }
73594642e01fSmrg	done
73604642e01fSmrg	IFS="$save_ifs"
736105b261ecSmrg
73624642e01fSmrg	# Restore the uninstalled library and exit
73634642e01fSmrg	if test "$mode" = relink; then
73644642e01fSmrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
736505b261ecSmrg
73664642e01fSmrg	  if test -n "$convenience"; then
73674642e01fSmrg	    if test -z "$whole_archive_flag_spec"; then
73684642e01fSmrg	      func_show_eval '${RM}r "$gentop"'
73694642e01fSmrg	    fi
73704642e01fSmrg	  fi
737105b261ecSmrg
73724642e01fSmrg	  exit $EXIT_SUCCESS
73734642e01fSmrg	fi
73744642e01fSmrg
73754642e01fSmrg	# Create links to the real library.
73764642e01fSmrg	for linkname in $linknames; do
73774642e01fSmrg	  if test "$realname" != "$linkname"; then
73784642e01fSmrg	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
737905b261ecSmrg	  fi
738005b261ecSmrg	done
738105b261ecSmrg
73824642e01fSmrg	# If -module or -export-dynamic was specified, set the dlname.
73834642e01fSmrg	if test "$module" = yes || test "$export_dynamic" = yes; then
73844642e01fSmrg	  # On all known operating systems, these are identical.
73854642e01fSmrg	  dlname="$soname"
73864642e01fSmrg	fi
73874642e01fSmrg      fi
738805b261ecSmrg      ;;
738905b261ecSmrg
73904642e01fSmrg    obj)
73914642e01fSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
73924642e01fSmrg	func_warning "\`-dlopen' is ignored for objects"
73934642e01fSmrg      fi
739405b261ecSmrg
73954642e01fSmrg      case " $deplibs" in
73964642e01fSmrg      *\ -l* | *\ -L*)
73974642e01fSmrg	func_warning "\`-l' and \`-L' are ignored for objects" ;;
739805b261ecSmrg      esac
739905b261ecSmrg
74004642e01fSmrg      test -n "$rpath" && \
74014642e01fSmrg	func_warning "\`-rpath' is ignored for objects"
74024642e01fSmrg
74034642e01fSmrg      test -n "$xrpath" && \
74044642e01fSmrg	func_warning "\`-R' is ignored for objects"
740505b261ecSmrg
74064642e01fSmrg      test -n "$vinfo" && \
74074642e01fSmrg	func_warning "\`-version-info' is ignored for objects"
740805b261ecSmrg
74094642e01fSmrg      test -n "$release" && \
74104642e01fSmrg	func_warning "\`-release' is ignored for objects"
74114642e01fSmrg
74124642e01fSmrg      case $output in
74134642e01fSmrg      *.lo)
74144642e01fSmrg	test -n "$objs$old_deplibs" && \
74154642e01fSmrg	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
74164642e01fSmrg
74174642e01fSmrg	libobj=$output
74184642e01fSmrg	func_lo2o "$libobj"
74194642e01fSmrg	obj=$func_lo2o_result
742005b261ecSmrg	;;
742105b261ecSmrg      *)
74224642e01fSmrg	libobj=
74234642e01fSmrg	obj="$output"
742405b261ecSmrg	;;
742505b261ecSmrg      esac
742605b261ecSmrg
74274642e01fSmrg      # Delete the old objects.
74284642e01fSmrg      $opt_dry_run || $RM $obj $libobj
742905b261ecSmrg
74304642e01fSmrg      # Objects from convenience libraries.  This assumes
74314642e01fSmrg      # single-version convenience libraries.  Whenever we create
74324642e01fSmrg      # different ones for PIC/non-PIC, this we'll have to duplicate
74334642e01fSmrg      # the extraction.
74344642e01fSmrg      reload_conv_objs=
74354642e01fSmrg      gentop=
74364642e01fSmrg      # reload_cmds runs $LD directly, so let us get rid of
74374642e01fSmrg      # -Wl from whole_archive_flag_spec and hope we can get by with
74384642e01fSmrg      # turning comma into space..
74394642e01fSmrg      wl=
744005b261ecSmrg
74414642e01fSmrg      if test -n "$convenience"; then
74424642e01fSmrg	if test -n "$whole_archive_flag_spec"; then
74434642e01fSmrg	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
74444642e01fSmrg	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
74454642e01fSmrg	else
74464642e01fSmrg	  gentop="$output_objdir/${obj}x"
74474642e01fSmrg	  generated="$generated $gentop"
744805b261ecSmrg
74494642e01fSmrg	  func_extract_archives $gentop $convenience
74504642e01fSmrg	  reload_conv_objs="$reload_objs $func_extract_archives_result"
74514642e01fSmrg	fi
745205b261ecSmrg      fi
745305b261ecSmrg
74544642e01fSmrg      # Create the old-style object.
74554642e01fSmrg      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
745605b261ecSmrg
74574642e01fSmrg      output="$obj"
74584642e01fSmrg      func_execute_cmds "$reload_cmds" 'exit $?'
745905b261ecSmrg
74604642e01fSmrg      # Exit if we aren't doing a library object file.
74614642e01fSmrg      if test -z "$libobj"; then
74624642e01fSmrg	if test -n "$gentop"; then
74634642e01fSmrg	  func_show_eval '${RM}r "$gentop"'
74644642e01fSmrg	fi
74654642e01fSmrg
74664642e01fSmrg	exit $EXIT_SUCCESS
746705b261ecSmrg      fi
74684642e01fSmrg
74694642e01fSmrg      if test "$build_libtool_libs" != yes; then
74704642e01fSmrg	if test -n "$gentop"; then
74714642e01fSmrg	  func_show_eval '${RM}r "$gentop"'
74724642e01fSmrg	fi
74734642e01fSmrg
74744642e01fSmrg	# Create an invalid libtool object if no PIC, so that we don't
74754642e01fSmrg	# accidentally link it into a program.
74764642e01fSmrg	# $show "echo timestamp > $libobj"
74774642e01fSmrg	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
74784642e01fSmrg	exit $EXIT_SUCCESS
74794642e01fSmrg      fi
74804642e01fSmrg
74814642e01fSmrg      if test -n "$pic_flag" || test "$pic_mode" != default; then
74824642e01fSmrg	# Only do commands if we really have different PIC objects.
74834642e01fSmrg	reload_objs="$libobjs $reload_conv_objs"
74844642e01fSmrg	output="$libobj"
74854642e01fSmrg	func_execute_cmds "$reload_cmds" 'exit $?'
74864642e01fSmrg      fi
74874642e01fSmrg
74884642e01fSmrg      if test -n "$gentop"; then
74894642e01fSmrg	func_show_eval '${RM}r "$gentop"'
74904642e01fSmrg      fi
74914642e01fSmrg
74924642e01fSmrg      exit $EXIT_SUCCESS
749305b261ecSmrg      ;;
749405b261ecSmrg
74954642e01fSmrg    prog)
74964642e01fSmrg      case $host in
74974642e01fSmrg	*cygwin*) func_stripname '' '.exe' "$output"
74984642e01fSmrg	          output=$func_stripname_result.exe;;
74994642e01fSmrg      esac
75004642e01fSmrg      test -n "$vinfo" && \
75014642e01fSmrg	func_warning "\`-version-info' is ignored for programs"
750205b261ecSmrg
75034642e01fSmrg      test -n "$release" && \
75044642e01fSmrg	func_warning "\`-release' is ignored for programs"
750505b261ecSmrg
75064642e01fSmrg      test "$preload" = yes \
75074642e01fSmrg        && test "$dlopen_support" = unknown \
75084642e01fSmrg	&& test "$dlopen_self" = unknown \
75094642e01fSmrg	&& test "$dlopen_self_static" = unknown && \
75104642e01fSmrg	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
75114642e01fSmrg
75124642e01fSmrg      case $host in
75134642e01fSmrg      *-*-rhapsody* | *-*-darwin1.[012])
75144642e01fSmrg	# On Rhapsody replace the C library is the System framework
75154642e01fSmrg	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
75164642e01fSmrg	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
751705b261ecSmrg	;;
75184642e01fSmrg      esac
751905b261ecSmrg
75204642e01fSmrg      case $host in
75214642e01fSmrg      *-*-darwin*)
75224642e01fSmrg	# Don't allow lazy linking, it breaks C++ global constructors
75234642e01fSmrg	# But is supposedly fixed on 10.4 or later (yay!).
75244642e01fSmrg	if test "$tagname" = CXX ; then
75254642e01fSmrg	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
75264642e01fSmrg	    10.[0123])
75274642e01fSmrg	      compile_command="$compile_command ${wl}-bind_at_load"
75284642e01fSmrg	      finalize_command="$finalize_command ${wl}-bind_at_load"
75294642e01fSmrg	    ;;
75304642e01fSmrg	  esac
753105b261ecSmrg	fi
75324642e01fSmrg	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
75334642e01fSmrg	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
75344642e01fSmrg	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
75354642e01fSmrg	;;
75364642e01fSmrg      esac
753705b261ecSmrg
753805b261ecSmrg
75394642e01fSmrg      # move library search paths that coincide with paths to not yet
75404642e01fSmrg      # installed libraries to the beginning of the library search list
75414642e01fSmrg      new_libs=
75424642e01fSmrg      for path in $notinst_path; do
75434642e01fSmrg	case " $new_libs " in
75444642e01fSmrg	*" -L$path/$objdir "*) ;;
75454642e01fSmrg	*)
75464642e01fSmrg	  case " $compile_deplibs " in
75474642e01fSmrg	  *" -L$path/$objdir "*)
75484642e01fSmrg	    new_libs="$new_libs -L$path/$objdir" ;;
754905b261ecSmrg	  esac
75504642e01fSmrg	  ;;
75514642e01fSmrg	esac
75524642e01fSmrg      done
75534642e01fSmrg      for deplib in $compile_deplibs; do
75544642e01fSmrg	case $deplib in
75554642e01fSmrg	-L*)
75564642e01fSmrg	  case " $new_libs " in
75574642e01fSmrg	  *" $deplib "*) ;;
75584642e01fSmrg	  *) new_libs="$new_libs $deplib" ;;
755905b261ecSmrg	  esac
75604642e01fSmrg	  ;;
75614642e01fSmrg	*) new_libs="$new_libs $deplib" ;;
75624642e01fSmrg	esac
75634642e01fSmrg      done
75644642e01fSmrg      compile_deplibs="$new_libs"
756505b261ecSmrg
756605b261ecSmrg
75674642e01fSmrg      compile_command="$compile_command $compile_deplibs"
75684642e01fSmrg      finalize_command="$finalize_command $finalize_deplibs"
756905b261ecSmrg
75704642e01fSmrg      if test -n "$rpath$xrpath"; then
75714642e01fSmrg	# If the user specified any rpath flags, then add them.
75724642e01fSmrg	for libdir in $rpath $xrpath; do
75734642e01fSmrg	  # This is the magic to use -rpath.
75744642e01fSmrg	  case "$finalize_rpath " in
75754642e01fSmrg	  *" $libdir "*) ;;
75764642e01fSmrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
75774642e01fSmrg	  esac
75784642e01fSmrg	done
75794642e01fSmrg      fi
758005b261ecSmrg
75814642e01fSmrg      # Now hardcode the library paths
75824642e01fSmrg      rpath=
75834642e01fSmrg      hardcode_libdirs=
75844642e01fSmrg      for libdir in $compile_rpath $finalize_rpath; do
75854642e01fSmrg	if test -n "$hardcode_libdir_flag_spec"; then
75864642e01fSmrg	  if test -n "$hardcode_libdir_separator"; then
75874642e01fSmrg	    if test -z "$hardcode_libdirs"; then
75884642e01fSmrg	      hardcode_libdirs="$libdir"
75894642e01fSmrg	    else
75904642e01fSmrg	      # Just accumulate the unique libdirs.
75914642e01fSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
75924642e01fSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
75934642e01fSmrg		;;
75944642e01fSmrg	      *)
75954642e01fSmrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
75964642e01fSmrg		;;
75974642e01fSmrg	      esac
75984642e01fSmrg	    fi
759905b261ecSmrg	  else
76004642e01fSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
76014642e01fSmrg	    rpath="$rpath $flag"
760205b261ecSmrg	  fi
76034642e01fSmrg	elif test -n "$runpath_var"; then
76044642e01fSmrg	  case "$perm_rpath " in
76054642e01fSmrg	  *" $libdir "*) ;;
76064642e01fSmrg	  *) perm_rpath="$perm_rpath $libdir" ;;
76074642e01fSmrg	  esac
76084642e01fSmrg	fi
76094642e01fSmrg	case $host in
76104642e01fSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
76114642e01fSmrg	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
76124642e01fSmrg	  case :$dllsearchpath: in
76134642e01fSmrg	  *":$libdir:"*) ;;
76144642e01fSmrg	  ::) dllsearchpath=$libdir;;
76154642e01fSmrg	  *) dllsearchpath="$dllsearchpath:$libdir";;
76164642e01fSmrg	  esac
76174642e01fSmrg	  case :$dllsearchpath: in
76184642e01fSmrg	  *":$testbindir:"*) ;;
76194642e01fSmrg	  ::) dllsearchpath=$testbindir;;
76204642e01fSmrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
76214642e01fSmrg	  esac
76224642e01fSmrg	  ;;
76234642e01fSmrg	esac
76244642e01fSmrg      done
76254642e01fSmrg      # Substitute the hardcoded libdirs into the rpath.
76264642e01fSmrg      if test -n "$hardcode_libdir_separator" &&
76274642e01fSmrg	 test -n "$hardcode_libdirs"; then
76284642e01fSmrg	libdir="$hardcode_libdirs"
76294642e01fSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
76304642e01fSmrg      fi
76314642e01fSmrg      compile_rpath="$rpath"
763205b261ecSmrg
76334642e01fSmrg      rpath=
76344642e01fSmrg      hardcode_libdirs=
76354642e01fSmrg      for libdir in $finalize_rpath; do
76364642e01fSmrg	if test -n "$hardcode_libdir_flag_spec"; then
76374642e01fSmrg	  if test -n "$hardcode_libdir_separator"; then
76384642e01fSmrg	    if test -z "$hardcode_libdirs"; then
76394642e01fSmrg	      hardcode_libdirs="$libdir"
76404642e01fSmrg	    else
76414642e01fSmrg	      # Just accumulate the unique libdirs.
76424642e01fSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
76434642e01fSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
76444642e01fSmrg		;;
76454642e01fSmrg	      *)
76464642e01fSmrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
76474642e01fSmrg		;;
76484642e01fSmrg	      esac
76494642e01fSmrg	    fi
765005b261ecSmrg	  else
76514642e01fSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
76524642e01fSmrg	    rpath="$rpath $flag"
765305b261ecSmrg	  fi
76544642e01fSmrg	elif test -n "$runpath_var"; then
76554642e01fSmrg	  case "$finalize_perm_rpath " in
76564642e01fSmrg	  *" $libdir "*) ;;
76574642e01fSmrg	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
76584642e01fSmrg	  esac
765905b261ecSmrg	fi
76604642e01fSmrg      done
76614642e01fSmrg      # Substitute the hardcoded libdirs into the rpath.
76624642e01fSmrg      if test -n "$hardcode_libdir_separator" &&
76634642e01fSmrg	 test -n "$hardcode_libdirs"; then
76644642e01fSmrg	libdir="$hardcode_libdirs"
76654642e01fSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
76664642e01fSmrg      fi
76674642e01fSmrg      finalize_rpath="$rpath"
766805b261ecSmrg
76694642e01fSmrg      if test -n "$libobjs" && test "$build_old_libs" = yes; then
76704642e01fSmrg	# Transform all the library objects into standard objects.
76714642e01fSmrg	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
76724642e01fSmrg	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
76734642e01fSmrg      fi
767405b261ecSmrg
76754642e01fSmrg      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
767605b261ecSmrg
76774642e01fSmrg      # template prelinking step
76784642e01fSmrg      if test -n "$prelink_cmds"; then
76794642e01fSmrg	func_execute_cmds "$prelink_cmds" 'exit $?'
76804642e01fSmrg      fi
768105b261ecSmrg
76824642e01fSmrg      wrappers_required=yes
76834642e01fSmrg      case $host in
76844642e01fSmrg      *cygwin* | *mingw* )
76854642e01fSmrg        if test "$build_libtool_libs" != yes; then
76864642e01fSmrg          wrappers_required=no
76874642e01fSmrg        fi
76884642e01fSmrg        ;;
76894642e01fSmrg      *cegcc)
76904642e01fSmrg        # Disable wrappers for cegcc, we are cross compiling anyway.
76914642e01fSmrg        wrappers_required=no
76924642e01fSmrg        ;;
76934642e01fSmrg      *)
76944642e01fSmrg        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
76954642e01fSmrg          wrappers_required=no
76964642e01fSmrg        fi
76974642e01fSmrg        ;;
76984642e01fSmrg      esac
76994642e01fSmrg      if test "$wrappers_required" = no; then
77004642e01fSmrg	# Replace the output file specification.
77014642e01fSmrg	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
77024642e01fSmrg	link_command="$compile_command$compile_rpath"
770305b261ecSmrg
77044642e01fSmrg	# We have no uninstalled library dependencies, so finalize right now.
77054642e01fSmrg	exit_status=0
77064642e01fSmrg	func_show_eval "$link_command" 'exit_status=$?'
770705b261ecSmrg
77084642e01fSmrg	# Delete the generated files.
77094642e01fSmrg	if test -f "$output_objdir/${outputname}S.${objext}"; then
77104642e01fSmrg	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
771105b261ecSmrg	fi
771205b261ecSmrg
77134642e01fSmrg	exit $exit_status
77144642e01fSmrg      fi
771505b261ecSmrg
77164642e01fSmrg      if test -n "$compile_shlibpath$finalize_shlibpath"; then
77174642e01fSmrg	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
77184642e01fSmrg      fi
77194642e01fSmrg      if test -n "$finalize_shlibpath"; then
77204642e01fSmrg	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
77214642e01fSmrg      fi
772205b261ecSmrg
77234642e01fSmrg      compile_var=
77244642e01fSmrg      finalize_var=
77254642e01fSmrg      if test -n "$runpath_var"; then
77264642e01fSmrg	if test -n "$perm_rpath"; then
77274642e01fSmrg	  # We should set the runpath_var.
77284642e01fSmrg	  rpath=
77294642e01fSmrg	  for dir in $perm_rpath; do
77304642e01fSmrg	    rpath="$rpath$dir:"
77314642e01fSmrg	  done
77324642e01fSmrg	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
773305b261ecSmrg	fi
77344642e01fSmrg	if test -n "$finalize_perm_rpath"; then
77354642e01fSmrg	  # We should set the runpath_var.
77364642e01fSmrg	  rpath=
77374642e01fSmrg	  for dir in $finalize_perm_rpath; do
77384642e01fSmrg	    rpath="$rpath$dir:"
77394642e01fSmrg	  done
77404642e01fSmrg	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
774105b261ecSmrg	fi
77424642e01fSmrg      fi
774305b261ecSmrg
77444642e01fSmrg      if test "$no_install" = yes; then
77454642e01fSmrg	# We don't need to create a wrapper script.
77464642e01fSmrg	link_command="$compile_var$compile_command$compile_rpath"
77474642e01fSmrg	# Replace the output file specification.
77484642e01fSmrg	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
77494642e01fSmrg	# Delete the old output file.
77504642e01fSmrg	$opt_dry_run || $RM $output
77514642e01fSmrg	# Link the executable and exit
77524642e01fSmrg	func_show_eval "$link_command" 'exit $?'
775305b261ecSmrg	exit $EXIT_SUCCESS
77544642e01fSmrg      fi
775505b261ecSmrg
77564642e01fSmrg      if test "$hardcode_action" = relink; then
77574642e01fSmrg	# Fast installation is not supported
77584642e01fSmrg	link_command="$compile_var$compile_command$compile_rpath"
77594642e01fSmrg	relink_command="$finalize_var$finalize_command$finalize_rpath"
77604642e01fSmrg
77614642e01fSmrg	func_warning "this platform does not like uninstalled shared libraries"
77624642e01fSmrg	func_warning "\`$output' will be relinked during installation"
77634642e01fSmrg      else
77644642e01fSmrg	if test "$fast_install" != no; then
77654642e01fSmrg	  link_command="$finalize_var$compile_command$finalize_rpath"
77664642e01fSmrg	  if test "$fast_install" = yes; then
77674642e01fSmrg	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
77684642e01fSmrg	  else
77694642e01fSmrg	    # fast_install is set to needless
77704642e01fSmrg	    relink_command=
77714642e01fSmrg	  fi
777205b261ecSmrg	else
77734642e01fSmrg	  link_command="$compile_var$compile_command$compile_rpath"
77744642e01fSmrg	  relink_command="$finalize_var$finalize_command$finalize_rpath"
777505b261ecSmrg	fi
77764642e01fSmrg      fi
777705b261ecSmrg
77784642e01fSmrg      # Replace the output file specification.
77794642e01fSmrg      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
778005b261ecSmrg
77814642e01fSmrg      # Delete the old output files.
77824642e01fSmrg      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
778305b261ecSmrg
77844642e01fSmrg      func_show_eval "$link_command" 'exit $?'
778505b261ecSmrg
77864642e01fSmrg      # Now create the wrapper script.
77874642e01fSmrg      func_verbose "creating $output"
778805b261ecSmrg
77894642e01fSmrg      # Quote the relink command for shipping.
77904642e01fSmrg      if test -n "$relink_command"; then
77914642e01fSmrg	# Preserve any variables that may affect compiler behavior
77924642e01fSmrg	for var in $variables_saved_for_relink; do
77934642e01fSmrg	  if eval test -z \"\${$var+set}\"; then
77944642e01fSmrg	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
77954642e01fSmrg	  elif eval var_value=\$$var; test -z "$var_value"; then
77964642e01fSmrg	    relink_command="$var=; export $var; $relink_command"
779705b261ecSmrg	  else
77984642e01fSmrg	    func_quote_for_eval "$var_value"
77994642e01fSmrg	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
780005b261ecSmrg	  fi
78014642e01fSmrg	done
78024642e01fSmrg	relink_command="(cd `pwd`; $relink_command)"
78034642e01fSmrg	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
78044642e01fSmrg      fi
780505b261ecSmrg
78064642e01fSmrg      # Quote $ECHO for shipping.
78074642e01fSmrg      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
78084642e01fSmrg	case $progpath in
78094642e01fSmrg	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
78104642e01fSmrg	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
78114642e01fSmrg	esac
78124642e01fSmrg	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
78134642e01fSmrg      else
78144642e01fSmrg	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
78154642e01fSmrg      fi
78164642e01fSmrg
78174642e01fSmrg      # Only actually do things if not in dry run mode.
78184642e01fSmrg      $opt_dry_run || {
78194642e01fSmrg	# win32 will think the script is a binary if it has
78204642e01fSmrg	# a .exe suffix, so we strip it off here.
78214642e01fSmrg	case $output in
78224642e01fSmrg	  *.exe) func_stripname '' '.exe' "$output"
78234642e01fSmrg	         output=$func_stripname_result ;;
78244642e01fSmrg	esac
78254642e01fSmrg	# test for cygwin because mv fails w/o .exe extensions
78264642e01fSmrg	case $host in
78274642e01fSmrg	  *cygwin*)
78284642e01fSmrg	    exeext=.exe
78294642e01fSmrg	    func_stripname '' '.exe' "$outputname"
78304642e01fSmrg	    outputname=$func_stripname_result ;;
78314642e01fSmrg	  *) exeext= ;;
783205b261ecSmrg	esac
78334642e01fSmrg	case $host in
78344642e01fSmrg	  *cygwin* | *mingw* )
78354642e01fSmrg	    func_dirname_and_basename "$output" "" "."
78364642e01fSmrg	    output_name=$func_basename_result
78374642e01fSmrg	    output_path=$func_dirname_result
78384642e01fSmrg	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
78394642e01fSmrg	    cwrapper="$output_path/$output_name.exe"
78404642e01fSmrg	    $RM $cwrappersource $cwrapper
78414642e01fSmrg	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
78424642e01fSmrg
78434642e01fSmrg	    func_emit_cwrapperexe_src > $cwrappersource
78444642e01fSmrg
78454642e01fSmrg	    # The wrapper executable is built using the $host compiler,
78464642e01fSmrg	    # because it contains $host paths and files. If cross-
78474642e01fSmrg	    # compiling, it, like the target executable, must be
78484642e01fSmrg	    # executed on the $host or under an emulation environment.
78494642e01fSmrg	    $opt_dry_run || {
78504642e01fSmrg	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
78514642e01fSmrg	      $STRIP $cwrapper
78524642e01fSmrg	    }
785305b261ecSmrg
78544642e01fSmrg	    # Now, create the wrapper script for func_source use:
78554642e01fSmrg	    func_ltwrapper_scriptname $cwrapper
78564642e01fSmrg	    $RM $func_ltwrapper_scriptname_result
78574642e01fSmrg	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
78584642e01fSmrg	    $opt_dry_run || {
78594642e01fSmrg	      # note: this script will not be executed, so do not chmod.
78604642e01fSmrg	      if test "x$build" = "x$host" ; then
78614642e01fSmrg		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
78624642e01fSmrg	      else
78634642e01fSmrg		func_emit_wrapper no > $func_ltwrapper_scriptname_result
78644642e01fSmrg	      fi
78654642e01fSmrg	    }
78664642e01fSmrg	  ;;
78674642e01fSmrg	  * )
78684642e01fSmrg	    $RM $output
78694642e01fSmrg	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
787005b261ecSmrg
78714642e01fSmrg	    func_emit_wrapper no > $output
78724642e01fSmrg	    chmod +x $output
78734642e01fSmrg	  ;;
78744642e01fSmrg	esac
78754642e01fSmrg      }
78764642e01fSmrg      exit $EXIT_SUCCESS
78774642e01fSmrg      ;;
78784642e01fSmrg    esac
787905b261ecSmrg
78804642e01fSmrg    # See if we need to build an old-fashioned archive.
78814642e01fSmrg    for oldlib in $oldlibs; do
788205b261ecSmrg
78834642e01fSmrg      if test "$build_libtool_libs" = convenience; then
78844642e01fSmrg	oldobjs="$libobjs_save $symfileobj"
78854642e01fSmrg	addlibs="$convenience"
78864642e01fSmrg	build_libtool_libs=no
78874642e01fSmrg      else
78884642e01fSmrg	if test "$build_libtool_libs" = module; then
78894642e01fSmrg	  oldobjs="$libobjs_save"
78904642e01fSmrg	  build_libtool_libs=no
78914642e01fSmrg	else
78924642e01fSmrg	  oldobjs="$old_deplibs $non_pic_objects"
78934642e01fSmrg	  if test "$preload" = yes && test -f "$symfileobj"; then
78944642e01fSmrg	    oldobjs="$oldobjs $symfileobj"
78954642e01fSmrg	  fi
78964642e01fSmrg	fi
78974642e01fSmrg	addlibs="$old_convenience"
789805b261ecSmrg      fi
789905b261ecSmrg
79004642e01fSmrg      if test -n "$addlibs"; then
79014642e01fSmrg	gentop="$output_objdir/${outputname}x"
79024642e01fSmrg	generated="$generated $gentop"
790305b261ecSmrg
79044642e01fSmrg	func_extract_archives $gentop $addlibs
79054642e01fSmrg	oldobjs="$oldobjs $func_extract_archives_result"
79064642e01fSmrg      fi
790705b261ecSmrg
79084642e01fSmrg      # Do each command in the archive commands.
79094642e01fSmrg      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
79104642e01fSmrg	cmds=$old_archive_from_new_cmds
79114642e01fSmrg      else
791205b261ecSmrg
79134642e01fSmrg	# Add any objects from preloaded convenience libraries
79144642e01fSmrg	if test -n "$dlprefiles"; then
79154642e01fSmrg	  gentop="$output_objdir/${outputname}x"
79164642e01fSmrg	  generated="$generated $gentop"
791705b261ecSmrg
79184642e01fSmrg	  func_extract_archives $gentop $dlprefiles
79194642e01fSmrg	  oldobjs="$oldobjs $func_extract_archives_result"
79204642e01fSmrg	fi
792105b261ecSmrg
79224642e01fSmrg	# POSIX demands no paths to be encoded in archives.  We have
79234642e01fSmrg	# to avoid creating archives with duplicate basenames if we
79244642e01fSmrg	# might have to extract them afterwards, e.g., when creating a
79254642e01fSmrg	# static archive out of a convenience library, or when linking
79264642e01fSmrg	# the entirety of a libtool archive into another (currently
79274642e01fSmrg	# not supported by libtool).
79284642e01fSmrg	if (for obj in $oldobjs
79294642e01fSmrg	    do
79304642e01fSmrg	      func_basename "$obj"
79314642e01fSmrg	      $ECHO "$func_basename_result"
79324642e01fSmrg	    done | sort | sort -uc >/dev/null 2>&1); then
79334642e01fSmrg	  :
79344642e01fSmrg	else
79354642e01fSmrg	  $ECHO "copying selected object files to avoid basename conflicts..."
79364642e01fSmrg	  gentop="$output_objdir/${outputname}x"
79374642e01fSmrg	  generated="$generated $gentop"
79384642e01fSmrg	  func_mkdir_p "$gentop"
79394642e01fSmrg	  save_oldobjs=$oldobjs
79404642e01fSmrg	  oldobjs=
79414642e01fSmrg	  counter=1
79424642e01fSmrg	  for obj in $save_oldobjs
79434642e01fSmrg	  do
79444642e01fSmrg	    func_basename "$obj"
79454642e01fSmrg	    objbase="$func_basename_result"
79464642e01fSmrg	    case " $oldobjs " in
79474642e01fSmrg	    " ") oldobjs=$obj ;;
79484642e01fSmrg	    *[\ /]"$objbase "*)
79494642e01fSmrg	      while :; do
79504642e01fSmrg		# Make sure we don't pick an alternate name that also
79514642e01fSmrg		# overlaps.
79524642e01fSmrg		newobj=lt$counter-$objbase
79534642e01fSmrg		func_arith $counter + 1
79544642e01fSmrg		counter=$func_arith_result
79554642e01fSmrg		case " $oldobjs " in
79564642e01fSmrg		*[\ /]"$newobj "*) ;;
79574642e01fSmrg		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
79584642e01fSmrg		esac
79594642e01fSmrg	      done
79604642e01fSmrg	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
79614642e01fSmrg	      oldobjs="$oldobjs $gentop/$newobj"
79624642e01fSmrg	      ;;
79634642e01fSmrg	    *) oldobjs="$oldobjs $obj" ;;
79644642e01fSmrg	    esac
796505b261ecSmrg	  done
796605b261ecSmrg	fi
79674642e01fSmrg	eval cmds=\"$old_archive_cmds\"
796805b261ecSmrg
79694642e01fSmrg	func_len " $cmds"
79704642e01fSmrg	len=$func_len_result
79714642e01fSmrg	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
79724642e01fSmrg	  cmds=$old_archive_cmds
79734642e01fSmrg	else
79744642e01fSmrg	  # the command line is too long to link in one step, link in parts
79754642e01fSmrg	  func_verbose "using piecewise archive linking..."
79764642e01fSmrg	  save_RANLIB=$RANLIB
79774642e01fSmrg	  RANLIB=:
79784642e01fSmrg	  objlist=
79794642e01fSmrg	  concat_cmds=
79804642e01fSmrg	  save_oldobjs=$oldobjs
79814642e01fSmrg	  oldobjs=
79824642e01fSmrg	  # Is there a better way of finding the last object in the list?
79834642e01fSmrg	  for obj in $save_oldobjs
79844642e01fSmrg	  do
79854642e01fSmrg	    last_oldobj=$obj
79864642e01fSmrg	  done
79874642e01fSmrg	  eval test_cmds=\"$old_archive_cmds\"
79884642e01fSmrg	  func_len " $test_cmds"
79894642e01fSmrg	  len0=$func_len_result
79904642e01fSmrg	  len=$len0
79914642e01fSmrg	  for obj in $save_oldobjs
79924642e01fSmrg	  do
79934642e01fSmrg	    func_len " $obj"
79944642e01fSmrg	    func_arith $len + $func_len_result
79954642e01fSmrg	    len=$func_arith_result
79964642e01fSmrg	    func_append objlist " $obj"
79974642e01fSmrg	    if test "$len" -lt "$max_cmd_len"; then
79984642e01fSmrg	      :
79994642e01fSmrg	    else
80004642e01fSmrg	      # the above command should be used before it gets too long
80014642e01fSmrg	      oldobjs=$objlist
80024642e01fSmrg	      if test "$obj" = "$last_oldobj" ; then
80034642e01fSmrg		RANLIB=$save_RANLIB
80044642e01fSmrg	      fi
80054642e01fSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
80064642e01fSmrg	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
80074642e01fSmrg	      objlist=
80084642e01fSmrg	      len=$len0
80094642e01fSmrg	    fi
80104642e01fSmrg	  done
80114642e01fSmrg	  RANLIB=$save_RANLIB
80124642e01fSmrg	  oldobjs=$objlist
80134642e01fSmrg	  if test "X$oldobjs" = "X" ; then
80144642e01fSmrg	    eval cmds=\"\$concat_cmds\"
80154642e01fSmrg	  else
80164642e01fSmrg	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
80174642e01fSmrg	  fi
80184642e01fSmrg	fi
80194642e01fSmrg      fi
80204642e01fSmrg      func_execute_cmds "$cmds" 'exit $?'
802105b261ecSmrg    done
802205b261ecSmrg
80234642e01fSmrg    test -n "$generated" && \
80244642e01fSmrg      func_show_eval "${RM}r$generated"
802505b261ecSmrg
80264642e01fSmrg    # Now create the libtool archive.
80274642e01fSmrg    case $output in
80284642e01fSmrg    *.la)
80294642e01fSmrg      old_library=
80304642e01fSmrg      test "$build_old_libs" = yes && old_library="$libname.$libext"
80314642e01fSmrg      func_verbose "creating $output"
803205b261ecSmrg
80334642e01fSmrg      # Preserve any variables that may affect compiler behavior
80344642e01fSmrg      for var in $variables_saved_for_relink; do
80354642e01fSmrg	if eval test -z \"\${$var+set}\"; then
80364642e01fSmrg	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
80374642e01fSmrg	elif eval var_value=\$$var; test -z "$var_value"; then
80384642e01fSmrg	  relink_command="$var=; export $var; $relink_command"
803905b261ecSmrg	else
80404642e01fSmrg	  func_quote_for_eval "$var_value"
80414642e01fSmrg	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
804205b261ecSmrg	fi
80434642e01fSmrg      done
80444642e01fSmrg      # Quote the link command for shipping.
80454642e01fSmrg      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
80464642e01fSmrg      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
80474642e01fSmrg      if test "$hardcode_automatic" = yes ; then
80484642e01fSmrg	relink_command=
80494642e01fSmrg      fi
805005b261ecSmrg
80514642e01fSmrg      # Only create the output if not a dry run.
80524642e01fSmrg      $opt_dry_run || {
80534642e01fSmrg	for installed in no yes; do
80544642e01fSmrg	  if test "$installed" = yes; then
80554642e01fSmrg	    if test -z "$install_libdir"; then
80564642e01fSmrg	      break
80574642e01fSmrg	    fi
80584642e01fSmrg	    output="$output_objdir/$outputname"i
80594642e01fSmrg	    # Replace all uninstalled libtool libraries with the installed ones
80604642e01fSmrg	    newdependency_libs=
80614642e01fSmrg	    for deplib in $dependency_libs; do
80624642e01fSmrg	      case $deplib in
80634642e01fSmrg	      *.la)
80644642e01fSmrg		func_basename "$deplib"
80654642e01fSmrg		name="$func_basename_result"
80664642e01fSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
80674642e01fSmrg		test -z "$libdir" && \
80684642e01fSmrg		  func_fatal_error "\`$deplib' is not a valid libtool archive"
80694642e01fSmrg		newdependency_libs="$newdependency_libs $libdir/$name"
80704642e01fSmrg		;;
80714642e01fSmrg	      *) newdependency_libs="$newdependency_libs $deplib" ;;
80724642e01fSmrg	      esac
80734642e01fSmrg	    done
80744642e01fSmrg	    dependency_libs="$newdependency_libs"
80754642e01fSmrg	    newdlfiles=
80764642e01fSmrg
80774642e01fSmrg	    for lib in $dlfiles; do
80784642e01fSmrg	      case $lib in
80794642e01fSmrg	      *.la)
80804642e01fSmrg	        func_basename "$lib"
80814642e01fSmrg		name="$func_basename_result"
80824642e01fSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
80834642e01fSmrg		test -z "$libdir" && \
80844642e01fSmrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
80854642e01fSmrg		newdlfiles="$newdlfiles $libdir/$name"
80864642e01fSmrg		;;
80874642e01fSmrg	      *) newdlfiles="$newdlfiles $lib" ;;
80884642e01fSmrg	      esac
80894642e01fSmrg	    done
80904642e01fSmrg	    dlfiles="$newdlfiles"
80914642e01fSmrg	    newdlprefiles=
80924642e01fSmrg	    for lib in $dlprefiles; do
80934642e01fSmrg	      case $lib in
80944642e01fSmrg	      *.la)
80954642e01fSmrg		# Only pass preopened files to the pseudo-archive (for
80964642e01fSmrg		# eventual linking with the app. that links it) if we
80974642e01fSmrg		# didn't already link the preopened objects directly into
80984642e01fSmrg		# the library:
80994642e01fSmrg		func_basename "$lib"
81004642e01fSmrg		name="$func_basename_result"
81014642e01fSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
81024642e01fSmrg		test -z "$libdir" && \
81034642e01fSmrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
81044642e01fSmrg		newdlprefiles="$newdlprefiles $libdir/$name"
81054642e01fSmrg		;;
81064642e01fSmrg	      esac
81074642e01fSmrg	    done
81084642e01fSmrg	    dlprefiles="$newdlprefiles"
81094642e01fSmrg	  else
81104642e01fSmrg	    newdlfiles=
81114642e01fSmrg	    for lib in $dlfiles; do
81124642e01fSmrg	      case $lib in
81134642e01fSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
81144642e01fSmrg		*) abs=`pwd`"/$lib" ;;
81154642e01fSmrg	      esac
81164642e01fSmrg	      newdlfiles="$newdlfiles $abs"
81174642e01fSmrg	    done
81184642e01fSmrg	    dlfiles="$newdlfiles"
81194642e01fSmrg	    newdlprefiles=
81204642e01fSmrg	    for lib in $dlprefiles; do
81214642e01fSmrg	      case $lib in
81224642e01fSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
81234642e01fSmrg		*) abs=`pwd`"/$lib" ;;
81244642e01fSmrg	      esac
81254642e01fSmrg	      newdlprefiles="$newdlprefiles $abs"
81264642e01fSmrg	    done
81274642e01fSmrg	    dlprefiles="$newdlprefiles"
81284642e01fSmrg	  fi
81294642e01fSmrg	  $RM $output
81304642e01fSmrg	  # place dlname in correct position for cygwin
81314642e01fSmrg	  tdlname=$dlname
81324642e01fSmrg	  case $host,$output,$installed,$module,$dlname in
81334642e01fSmrg	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
81344642e01fSmrg	  esac
81354642e01fSmrg	  $ECHO > $output "\
81364642e01fSmrg# $outputname - a libtool library file
81374642e01fSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
81384642e01fSmrg#
81394642e01fSmrg# Please DO NOT delete this file!
81404642e01fSmrg# It is necessary for linking the library.
814105b261ecSmrg
81424642e01fSmrg# The name that we can dlopen(3).
81434642e01fSmrgdlname='$tdlname'
814405b261ecSmrg
81454642e01fSmrg# Names of this library.
81464642e01fSmrglibrary_names='$library_names'
814705b261ecSmrg
81484642e01fSmrg# The name of the static archive.
81494642e01fSmrgold_library='$old_library'
815005b261ecSmrg
81514642e01fSmrg# Linker flags that can not go in dependency_libs.
81524642e01fSmrginherited_linker_flags='$new_inherited_linker_flags'
815305b261ecSmrg
81544642e01fSmrg# Libraries that this one depends upon.
81554642e01fSmrgdependency_libs='$dependency_libs'
815605b261ecSmrg
81574642e01fSmrg# Names of additional weak libraries provided by this library
81584642e01fSmrgweak_library_names='$weak_libs'
815905b261ecSmrg
81604642e01fSmrg# Version information for $libname.
81614642e01fSmrgcurrent=$current
81624642e01fSmrgage=$age
81634642e01fSmrgrevision=$revision
816405b261ecSmrg
81654642e01fSmrg# Is this an already installed library?
81664642e01fSmrginstalled=$installed
816705b261ecSmrg
81684642e01fSmrg# Should we warn about portability when linking against -modules?
81694642e01fSmrgshouldnotlink=$module
817005b261ecSmrg
81714642e01fSmrg# Files to dlopen/dlpreopen
81724642e01fSmrgdlopen='$dlfiles'
81734642e01fSmrgdlpreopen='$dlprefiles'
817405b261ecSmrg
81754642e01fSmrg# Directory that this library needs to be installed in:
81764642e01fSmrglibdir='$install_libdir'"
81774642e01fSmrg	  if test "$installed" = no && test "$need_relink" = yes; then
81784642e01fSmrg	    $ECHO >> $output "\
81794642e01fSmrgrelink_command=\"$relink_command\""
81804642e01fSmrg	  fi
81814642e01fSmrg	done
81824642e01fSmrg      }
818305b261ecSmrg
81844642e01fSmrg      # Do a symbolic link so that the libtool archive can be found in
81854642e01fSmrg      # LD_LIBRARY_PATH before the program is installed.
81864642e01fSmrg      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
81874642e01fSmrg      ;;
81884642e01fSmrg    esac
81894642e01fSmrg    exit $EXIT_SUCCESS
81904642e01fSmrg}
819105b261ecSmrg
81924642e01fSmrg{ test "$mode" = link || test "$mode" = relink; } &&
81934642e01fSmrg    func_mode_link ${1+"$@"}
819405b261ecSmrg
819505b261ecSmrg
81964642e01fSmrg# func_mode_uninstall arg...
81974642e01fSmrgfunc_mode_uninstall ()
81984642e01fSmrg{
81994642e01fSmrg    $opt_debug
82004642e01fSmrg    RM="$nonopt"
820105b261ecSmrg    files=
820205b261ecSmrg    rmforce=
820305b261ecSmrg    exit_status=0
820405b261ecSmrg
820505b261ecSmrg    # This variable tells wrapper scripts just to set variables rather
820605b261ecSmrg    # than running their programs.
820705b261ecSmrg    libtool_install_magic="$magic"
820805b261ecSmrg
820905b261ecSmrg    for arg
821005b261ecSmrg    do
821105b261ecSmrg      case $arg in
82124642e01fSmrg      -f) RM="$RM $arg"; rmforce=yes ;;
82134642e01fSmrg      -*) RM="$RM $arg" ;;
821405b261ecSmrg      *) files="$files $arg" ;;
821505b261ecSmrg      esac
821605b261ecSmrg    done
821705b261ecSmrg
82184642e01fSmrg    test -z "$RM" && \
82194642e01fSmrg      func_fatal_help "you must specify an RM program"
822005b261ecSmrg
822105b261ecSmrg    rmdirs=
822205b261ecSmrg
822305b261ecSmrg    origobjdir="$objdir"
822405b261ecSmrg    for file in $files; do
82254642e01fSmrg      func_dirname "$file" "" "."
82264642e01fSmrg      dir="$func_dirname_result"
82274642e01fSmrg      if test "X$dir" = X.; then
822805b261ecSmrg	objdir="$origobjdir"
822905b261ecSmrg      else
823005b261ecSmrg	objdir="$dir/$origobjdir"
823105b261ecSmrg      fi
82324642e01fSmrg      func_basename "$file"
82334642e01fSmrg      name="$func_basename_result"
823405b261ecSmrg      test "$mode" = uninstall && objdir="$dir"
823505b261ecSmrg
823605b261ecSmrg      # Remember objdir for removal later, being careful to avoid duplicates
823705b261ecSmrg      if test "$mode" = clean; then
823805b261ecSmrg	case " $rmdirs " in
823905b261ecSmrg	  *" $objdir "*) ;;
824005b261ecSmrg	  *) rmdirs="$rmdirs $objdir" ;;
824105b261ecSmrg	esac
824205b261ecSmrg      fi
824305b261ecSmrg
824405b261ecSmrg      # Don't error if the file doesn't exist and rm -f was used.
82454642e01fSmrg      if { test -L "$file"; } >/dev/null 2>&1 ||
82464642e01fSmrg	 { test -h "$file"; } >/dev/null 2>&1 ||
82474642e01fSmrg	 test -f "$file"; then
824805b261ecSmrg	:
824905b261ecSmrg      elif test -d "$file"; then
825005b261ecSmrg	exit_status=1
825105b261ecSmrg	continue
825205b261ecSmrg      elif test "$rmforce" = yes; then
825305b261ecSmrg	continue
825405b261ecSmrg      fi
825505b261ecSmrg
825605b261ecSmrg      rmfiles="$file"
825705b261ecSmrg
825805b261ecSmrg      case $name in
825905b261ecSmrg      *.la)
826005b261ecSmrg	# Possibly a libtool archive, so verify it.
82614642e01fSmrg	if func_lalib_p "$file"; then
82624642e01fSmrg	  func_source $dir/$name
826305b261ecSmrg
826405b261ecSmrg	  # Delete the libtool libraries and symlinks.
826505b261ecSmrg	  for n in $library_names; do
826605b261ecSmrg	    rmfiles="$rmfiles $objdir/$n"
826705b261ecSmrg	  done
826805b261ecSmrg	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
826905b261ecSmrg
827005b261ecSmrg	  case "$mode" in
827105b261ecSmrg	  clean)
827205b261ecSmrg	    case "  $library_names " in
827305b261ecSmrg	    # "  " in the beginning catches empty $dlname
827405b261ecSmrg	    *" $dlname "*) ;;
827505b261ecSmrg	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
827605b261ecSmrg	    esac
82774642e01fSmrg	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
827805b261ecSmrg	    ;;
827905b261ecSmrg	  uninstall)
828005b261ecSmrg	    if test -n "$library_names"; then
828105b261ecSmrg	      # Do each command in the postuninstall commands.
82824642e01fSmrg	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
828305b261ecSmrg	    fi
828405b261ecSmrg
828505b261ecSmrg	    if test -n "$old_library"; then
828605b261ecSmrg	      # Do each command in the old_postuninstall commands.
82874642e01fSmrg	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
828805b261ecSmrg	    fi
828905b261ecSmrg	    # FIXME: should reinstall the best remaining shared library.
829005b261ecSmrg	    ;;
829105b261ecSmrg	  esac
829205b261ecSmrg	fi
829305b261ecSmrg	;;
829405b261ecSmrg
829505b261ecSmrg      *.lo)
829605b261ecSmrg	# Possibly a libtool object, so verify it.
82974642e01fSmrg	if func_lalib_p "$file"; then
829805b261ecSmrg
829905b261ecSmrg	  # Read the .lo file
83004642e01fSmrg	  func_source $dir/$name
830105b261ecSmrg
830205b261ecSmrg	  # Add PIC object to the list of files to remove.
83034642e01fSmrg	  if test -n "$pic_object" &&
83044642e01fSmrg	     test "$pic_object" != none; then
830505b261ecSmrg	    rmfiles="$rmfiles $dir/$pic_object"
830605b261ecSmrg	  fi
830705b261ecSmrg
830805b261ecSmrg	  # Add non-PIC object to the list of files to remove.
83094642e01fSmrg	  if test -n "$non_pic_object" &&
83104642e01fSmrg	     test "$non_pic_object" != none; then
831105b261ecSmrg	    rmfiles="$rmfiles $dir/$non_pic_object"
831205b261ecSmrg	  fi
831305b261ecSmrg	fi
831405b261ecSmrg	;;
831505b261ecSmrg
831605b261ecSmrg      *)
831705b261ecSmrg	if test "$mode" = clean ; then
831805b261ecSmrg	  noexename=$name
831905b261ecSmrg	  case $file in
832005b261ecSmrg	  *.exe)
83214642e01fSmrg	    func_stripname '' '.exe' "$file"
83224642e01fSmrg	    file=$func_stripname_result
83234642e01fSmrg	    func_stripname '' '.exe' "$name"
83244642e01fSmrg	    noexename=$func_stripname_result
832505b261ecSmrg	    # $file with .exe has already been added to rmfiles,
832605b261ecSmrg	    # add $file without .exe
832705b261ecSmrg	    rmfiles="$rmfiles $file"
832805b261ecSmrg	    ;;
832905b261ecSmrg	  esac
833005b261ecSmrg	  # Do a test to see if this is a libtool program.
83314642e01fSmrg	  if func_ltwrapper_p "$file"; then
83324642e01fSmrg	    if func_ltwrapper_executable_p "$file"; then
83334642e01fSmrg	      func_ltwrapper_scriptname "$file"
83344642e01fSmrg	      relink_command=
83354642e01fSmrg	      func_source $func_ltwrapper_scriptname_result
83364642e01fSmrg	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
83374642e01fSmrg	    else
83384642e01fSmrg	      relink_command=
83394642e01fSmrg	      func_source $dir/$noexename
83404642e01fSmrg	    fi
834105b261ecSmrg
834205b261ecSmrg	    # note $name still contains .exe if it was in $file originally
834305b261ecSmrg	    # as does the version of $file that was added into $rmfiles
834405b261ecSmrg	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
834505b261ecSmrg	    if test "$fast_install" = yes && test -n "$relink_command"; then
834605b261ecSmrg	      rmfiles="$rmfiles $objdir/lt-$name"
834705b261ecSmrg	    fi
834805b261ecSmrg	    if test "X$noexename" != "X$name" ; then
834905b261ecSmrg	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
835005b261ecSmrg	    fi
835105b261ecSmrg	  fi
835205b261ecSmrg	fi
835305b261ecSmrg	;;
835405b261ecSmrg      esac
83554642e01fSmrg      func_show_eval "$RM $rmfiles" 'exit_status=1'
835605b261ecSmrg    done
835705b261ecSmrg    objdir="$origobjdir"
835805b261ecSmrg
835905b261ecSmrg    # Try to remove the ${objdir}s in the directories where we deleted files
836005b261ecSmrg    for dir in $rmdirs; do
836105b261ecSmrg      if test -d "$dir"; then
83624642e01fSmrg	func_show_eval "rmdir $dir >/dev/null 2>&1"
836305b261ecSmrg      fi
836405b261ecSmrg    done
836505b261ecSmrg
836605b261ecSmrg    exit $exit_status
83674642e01fSmrg}
836805b261ecSmrg
83694642e01fSmrg{ test "$mode" = uninstall || test "$mode" = clean; } &&
83704642e01fSmrg    func_mode_uninstall ${1+"$@"}
837105b261ecSmrg
83724642e01fSmrgtest -z "$mode" && {
83734642e01fSmrg  help="$generic_help"
83744642e01fSmrg  func_fatal_help "you must specify a MODE"
83754642e01fSmrg}
83764642e01fSmrg
83774642e01fSmrgtest -z "$exec_cmd" && \
83784642e01fSmrg  func_fatal_help "invalid operation mode \`$mode'"
837905b261ecSmrg
838005b261ecSmrgif test -n "$exec_cmd"; then
83814642e01fSmrg  eval exec "$exec_cmd"
838205b261ecSmrg  exit $EXIT_FAILURE
838305b261ecSmrgfi
838405b261ecSmrg
83854642e01fSmrgexit $exit_status
838605b261ecSmrg
838705b261ecSmrg
838805b261ecSmrg# The TAGs below are defined such that we never get into a situation
838905b261ecSmrg# in which we disable both kinds of libraries.  Given conflicting
839005b261ecSmrg# choices, we go for a static library, that is the most portable,
839105b261ecSmrg# since we can't tell whether shared libraries were disabled because
839205b261ecSmrg# the user asked for that or because the platform doesn't support
839305b261ecSmrg# them.  This is particularly important on AIX, because we don't
839405b261ecSmrg# support having both static and shared libraries enabled at the same
839505b261ecSmrg# time on that platform, so we default to a shared-only configuration.
839605b261ecSmrg# If a disable-shared tag is given, we'll fallback to a static-only
839705b261ecSmrg# configuration.  But we'll never go from static-only to shared-only.
839805b261ecSmrg
839905b261ecSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
84004642e01fSmrgbuild_libtool_libs=no
84014642e01fSmrgbuild_old_libs=yes
840205b261ecSmrg# ### END LIBTOOL TAG CONFIG: disable-shared
840305b261ecSmrg
840405b261ecSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static
84054642e01fSmrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
840605b261ecSmrg# ### END LIBTOOL TAG CONFIG: disable-static
840705b261ecSmrg
840805b261ecSmrg# Local Variables:
840905b261ecSmrg# mode:shell-script
841005b261ecSmrg# sh-indentation:2
841105b261ecSmrg# End:
84124642e01fSmrg# vi:sw=2
84134642e01fSmrg
8414