ltmain.sh revision 1473d951
11473d951Smrg# Generated from ltmain.m4sh.
21473d951Smrg
31473d951Smrg# ltmain.sh (GNU libtool) 2.2.6
41473d951Smrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
51473d951Smrg
61473d951Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
71473d951Smrg# This is free software; see the source for copying conditions.  There is NO
81473d951Smrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
91473d951Smrg
101473d951Smrg# GNU Libtool is free software; you can redistribute it and/or modify
11ab47cfaaSmrg# it under the terms of the GNU General Public License as published by
12ab47cfaaSmrg# the Free Software Foundation; either version 2 of the License, or
13ab47cfaaSmrg# (at your option) any later version.
14ab47cfaaSmrg#
151473d951Smrg# As a special exception to the GNU General Public License,
161473d951Smrg# if you distribute this file as part of a program or library that
171473d951Smrg# is built using GNU Libtool, you may include this file under the
181473d951Smrg# same distribution terms that you use for the rest of that program.
191473d951Smrg#
201473d951Smrg# GNU Libtool is distributed in the hope that it will be useful, but
21ab47cfaaSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of
22ab47cfaaSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
23ab47cfaaSmrg# General Public License for more details.
24ab47cfaaSmrg#
25ab47cfaaSmrg# You should have received a copy of the GNU General Public License
261473d951Smrg# along with GNU Libtool; see the file COPYING.  If not, a copy
271473d951Smrg# can be downloaded from http://www.gnu.org/licenses/gpl.html,
281473d951Smrg# or obtained by writing to the Free Software Foundation, Inc.,
291473d951Smrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
30ab47cfaaSmrg
311473d951Smrg# Usage: $progname [OPTION]... [MODE-ARG]...
321473d951Smrg#
331473d951Smrg# Provide generalized library-building support services.
341473d951Smrg#
351473d951Smrg#     --config             show all configuration variables
361473d951Smrg#     --debug              enable verbose shell tracing
371473d951Smrg# -n, --dry-run            display commands without modifying any files
381473d951Smrg#     --features           display basic configuration information and exit
391473d951Smrg#     --mode=MODE          use operation mode MODE
401473d951Smrg#     --preserve-dup-deps  don't remove duplicate dependency libraries
411473d951Smrg#     --quiet, --silent    don't print informational messages
421473d951Smrg#     --tag=TAG            use configuration variables from tag TAG
431473d951Smrg# -v, --verbose            print informational messages (default)
441473d951Smrg#     --version            print version information
451473d951Smrg# -h, --help               print short or long help message
461473d951Smrg#
471473d951Smrg# MODE must be one of the following:
481473d951Smrg#
491473d951Smrg#       clean              remove files from the build directory
501473d951Smrg#       compile            compile a source file into a libtool object
511473d951Smrg#       execute            automatically set library path, then run a program
521473d951Smrg#       finish             complete the installation of libtool libraries
531473d951Smrg#       install            install libraries or executables
541473d951Smrg#       link               create a library or an executable
551473d951Smrg#       uninstall          remove libraries from an installed directory
561473d951Smrg#
571473d951Smrg# MODE-ARGS vary depending on the MODE.
581473d951Smrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
591473d951Smrg#
601473d951Smrg# When reporting a bug, please describe a test case to reproduce it and
611473d951Smrg# include the following information:
621473d951Smrg#
631473d951Smrg#       host-triplet:	$host
641473d951Smrg#       shell:		$SHELL
651473d951Smrg#       compiler:		$LTCC
661473d951Smrg#       compiler flags:		$LTCFLAGS
671473d951Smrg#       linker:		$LD (gnu? $with_gnu_ld)
681473d951Smrg#       $progname:		(GNU libtool) 2.2.6
691473d951Smrg#       automake:		$automake_version
701473d951Smrg#       autoconf:		$autoconf_version
711473d951Smrg#
721473d951Smrg# Report bugs to <bug-libtool@gnu.org>.
73ab47cfaaSmrg
74ab47cfaaSmrgPROGRAM=ltmain.sh
75ab47cfaaSmrgPACKAGE=libtool
761473d951SmrgVERSION=2.2.6
771473d951SmrgTIMESTAMP=""
781473d951Smrgpackage_revision=1.3012
798697ee19Smrg
801473d951Smrg# Be Bourne compatible
818697ee19Smrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
828697ee19Smrg  emulate sh
838697ee19Smrg  NULLCMD=:
848697ee19Smrg  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
858697ee19Smrg  # is contrary to our usage.  Disable this feature.
868697ee19Smrg  alias -g '${1+"$@"}'='"$@"'
87ab47cfaaSmrg  setopt NO_GLOB_SUBST
888697ee19Smrgelse
898697ee19Smrg  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
90ab47cfaaSmrgfi
918697ee19SmrgBIN_SH=xpg4; export BIN_SH # for Tru64
928697ee19SmrgDUALCASE=1; export DUALCASE # for MKS sh
93ab47cfaaSmrg
941473d951Smrg# NLS nuisances: We save the old values to restore during execute mode.
95ab47cfaaSmrg# Only set LANG and LC_ALL to C if already set.
96ab47cfaaSmrg# These must not be set unconditionally because not all systems understand
97ab47cfaaSmrg# e.g. LANG=C (notably SCO).
981473d951Smrglt_user_locale=
991473d951Smrglt_safe_locale=
1001473d951Smrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
1018697ee19Smrgdo
1028697ee19Smrg  eval "if test \"\${$lt_var+set}\" = set; then
1031473d951Smrg          save_$lt_var=\$$lt_var
1041473d951Smrg          $lt_var=C
1058697ee19Smrg	  export $lt_var
1061473d951Smrg	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
1071473d951Smrg	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
1088697ee19Smrg	fi"
1098697ee19Smrgdone
110ab47cfaaSmrg
1111473d951Smrg$lt_unset CDPATH
1121473d951Smrg
1131473d951Smrg
1141473d951Smrg
1151473d951Smrg
1161473d951Smrg
1171473d951Smrg: ${CP="cp -f"}
1181473d951Smrg: ${ECHO="echo"}
1191473d951Smrg: ${EGREP="/bin/grep -E"}
1201473d951Smrg: ${FGREP="/bin/grep -F"}
1211473d951Smrg: ${GREP="/bin/grep"}
1221473d951Smrg: ${LN_S="ln -s"}
1231473d951Smrg: ${MAKE="make"}
1241473d951Smrg: ${MKDIR="mkdir"}
1251473d951Smrg: ${MV="mv -f"}
1261473d951Smrg: ${RM="rm -f"}
1271473d951Smrg: ${SED="/bin/sed"}
1281473d951Smrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
1291473d951Smrg: ${Xsed="$SED -e 1s/^X//"}
1301473d951Smrg
1311473d951Smrg# Global variables:
1321473d951SmrgEXIT_SUCCESS=0
1331473d951SmrgEXIT_FAILURE=1
1341473d951SmrgEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
1351473d951SmrgEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
1361473d951Smrg
1371473d951Smrgexit_status=$EXIT_SUCCESS
1381473d951Smrg
139ab47cfaaSmrg# Make sure IFS has a sensible default
140ab47cfaaSmrglt_nl='
141ab47cfaaSmrg'
142ab47cfaaSmrgIFS=" 	$lt_nl"
143ab47cfaaSmrg
1441473d951Smrgdirname="s,/[^/]*$,,"
1451473d951Smrgbasename="s,^.*/,,"
1461473d951Smrg
1471473d951Smrg# func_dirname_and_basename file append nondir_replacement
1481473d951Smrg# perform func_basename and func_dirname in a single function
1491473d951Smrg# call:
1501473d951Smrg#   dirname:  Compute the dirname of FILE.  If nonempty,
1511473d951Smrg#             add APPEND to the result, otherwise set result
1521473d951Smrg#             to NONDIR_REPLACEMENT.
1531473d951Smrg#             value returned in "$func_dirname_result"
1541473d951Smrg#   basename: Compute filename of FILE.
1551473d951Smrg#             value retuned in "$func_basename_result"
1561473d951Smrg# Implementation must be kept synchronized with func_dirname
1571473d951Smrg# and func_basename. For efficiency, we do not delegate to
1581473d951Smrg# those functions but instead duplicate the functionality here.
1591473d951Smrgfunc_dirname_and_basename ()
1601473d951Smrg{
1611473d951Smrg  # Extract subdirectory from the argument.
1621473d951Smrg  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
1631473d951Smrg  if test "X$func_dirname_result" = "X${1}"; then
1641473d951Smrg    func_dirname_result="${3}"
1651473d951Smrg  else
1661473d951Smrg    func_dirname_result="$func_dirname_result${2}"
1671473d951Smrg  fi
1681473d951Smrg  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
1691473d951Smrg}
170ab47cfaaSmrg
1711473d951Smrg# Generated shell functions inserted here.
1721473d951Smrg
1731473d951Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
1741473d951Smrg# is ksh but when the shell is invoked as "sh" and the current value of
1751473d951Smrg# the _XPG environment variable is not equal to 1 (one), the special
1761473d951Smrg# positional parameter $0, within a function call, is the name of the
1771473d951Smrg# function.
1781473d951Smrgprogpath="$0"
1791473d951Smrg
1801473d951Smrg# The name of this program:
1811473d951Smrg# In the unlikely event $progname began with a '-', it would play havoc with
1821473d951Smrg# func_echo (imagine progname=-n), so we prepend ./ in that case:
1831473d951Smrgfunc_dirname_and_basename "$progpath"
1841473d951Smrgprogname=$func_basename_result
1851473d951Smrgcase $progname in
1861473d951Smrg  -*) progname=./$progname ;;
1871473d951Smrgesac
1881473d951Smrg
1891473d951Smrg# Make sure we have an absolute path for reexecution:
1901473d951Smrgcase $progpath in
1911473d951Smrg  [\\/]*|[A-Za-z]:\\*) ;;
1921473d951Smrg  *[\\/]*)
1931473d951Smrg     progdir=$func_dirname_result
1941473d951Smrg     progdir=`cd "$progdir" && pwd`
1951473d951Smrg     progpath="$progdir/$progname"
1961473d951Smrg     ;;
1971473d951Smrg  *)
1981473d951Smrg     save_IFS="$IFS"
1991473d951Smrg     IFS=:
2001473d951Smrg     for progdir in $PATH; do
2011473d951Smrg       IFS="$save_IFS"
2021473d951Smrg       test -x "$progdir/$progname" && break
2031473d951Smrg     done
2041473d951Smrg     IFS="$save_IFS"
2051473d951Smrg     test -n "$progdir" || progdir=`pwd`
2061473d951Smrg     progpath="$progdir/$progname"
2071473d951Smrg     ;;
2081473d951Smrgesac
2091473d951Smrg
2101473d951Smrg# Sed substitution that helps us do robust quoting.  It backslashifies
2111473d951Smrg# metacharacters that are still active within double-quoted strings.
2121473d951SmrgXsed="${SED}"' -e 1s/^X//'
2131473d951Smrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g'
2141473d951Smrg
2151473d951Smrg# Same as above, but do not quote variable references.
2161473d951Smrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
2171473d951Smrg
2181473d951Smrg# Re-`\' parameter expansions in output of double_quote_subst that were
2191473d951Smrg# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
2201473d951Smrg# in input to double_quote_subst, that '$' was protected from expansion.
2211473d951Smrg# Since each input `\' is now two `\'s, look for any number of runs of
2221473d951Smrg# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
2231473d951Smrgbs='\\'
2241473d951Smrgbs2='\\\\'
2251473d951Smrgbs4='\\\\\\\\'
2261473d951Smrgdollar='\$'
2271473d951Smrgsed_double_backslash="\
2281473d951Smrg  s/$bs4/&\\
2291473d951Smrg/g
2301473d951Smrg  s/^$bs2$dollar/$bs&/
2311473d951Smrg  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
2321473d951Smrg  s/\n//g"
2331473d951Smrg
2341473d951Smrg# Standard options:
2351473d951Smrgopt_dry_run=false
2361473d951Smrgopt_help=false
2371473d951Smrgopt_quiet=false
2381473d951Smrgopt_verbose=false
2391473d951Smrgopt_warning=:
2401473d951Smrg
2411473d951Smrg# func_echo arg...
2421473d951Smrg# Echo program name prefixed message, along with the current mode
2431473d951Smrg# name if it has been set yet.
2441473d951Smrgfunc_echo ()
2451473d951Smrg{
2461473d951Smrg    $ECHO "$progname${mode+: }$mode: $*"
2471473d951Smrg}
2481473d951Smrg
2491473d951Smrg# func_verbose arg...
2501473d951Smrg# Echo program name prefixed message in verbose mode only.
2511473d951Smrgfunc_verbose ()
2521473d951Smrg{
2531473d951Smrg    $opt_verbose && func_echo ${1+"$@"}
2541473d951Smrg
2551473d951Smrg    # A bug in bash halts the script if the last line of a function
2561473d951Smrg    # fails when set -e is in force, so we need another command to
2571473d951Smrg    # work around that:
2581473d951Smrg    :
2591473d951Smrg}
2601473d951Smrg
2611473d951Smrg# func_error arg...
2621473d951Smrg# Echo program name prefixed message to standard error.
2631473d951Smrgfunc_error ()
2641473d951Smrg{
2651473d951Smrg    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
2661473d951Smrg}
2671473d951Smrg
2681473d951Smrg# func_warning arg...
2691473d951Smrg# Echo program name prefixed warning message to standard error.
2701473d951Smrgfunc_warning ()
2711473d951Smrg{
2721473d951Smrg    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
2731473d951Smrg
2741473d951Smrg    # bash bug again:
2751473d951Smrg    :
2761473d951Smrg}
2771473d951Smrg
2781473d951Smrg# func_fatal_error arg...
2791473d951Smrg# Echo program name prefixed message to standard error, and exit.
2801473d951Smrgfunc_fatal_error ()
2811473d951Smrg{
2821473d951Smrg    func_error ${1+"$@"}
2831473d951Smrg    exit $EXIT_FAILURE
2841473d951Smrg}
2851473d951Smrg
2861473d951Smrg# func_fatal_help arg...
2871473d951Smrg# Echo program name prefixed message to standard error, followed by
2881473d951Smrg# a help hint, and exit.
2891473d951Smrgfunc_fatal_help ()
2901473d951Smrg{
2911473d951Smrg    func_error ${1+"$@"}
2921473d951Smrg    func_fatal_error "$help"
2931473d951Smrg}
2941473d951Smrghelp="Try \`$progname --help' for more information."  ## default
2951473d951Smrg
2961473d951Smrg
2971473d951Smrg# func_grep expression filename
2981473d951Smrg# Check whether EXPRESSION matches any line of FILENAME, without output.
2991473d951Smrgfunc_grep ()
3001473d951Smrg{
3011473d951Smrg    $GREP "$1" "$2" >/dev/null 2>&1
3021473d951Smrg}
3031473d951Smrg
3041473d951Smrg
3051473d951Smrg# func_mkdir_p directory-path
3061473d951Smrg# Make sure the entire path to DIRECTORY-PATH is available.
3071473d951Smrgfunc_mkdir_p ()
3081473d951Smrg{
3091473d951Smrg    my_directory_path="$1"
3101473d951Smrg    my_dir_list=
3111473d951Smrg
3121473d951Smrg    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
3131473d951Smrg
3141473d951Smrg      # Protect directory names starting with `-'
3151473d951Smrg      case $my_directory_path in
3161473d951Smrg        -*) my_directory_path="./$my_directory_path" ;;
3171473d951Smrg      esac
3181473d951Smrg
3191473d951Smrg      # While some portion of DIR does not yet exist...
3201473d951Smrg      while test ! -d "$my_directory_path"; do
3211473d951Smrg        # ...make a list in topmost first order.  Use a colon delimited
3221473d951Smrg	# list incase some portion of path contains whitespace.
3231473d951Smrg        my_dir_list="$my_directory_path:$my_dir_list"
3241473d951Smrg
3251473d951Smrg        # If the last portion added has no slash in it, the list is done
3261473d951Smrg        case $my_directory_path in */*) ;; *) break ;; esac
3271473d951Smrg
3281473d951Smrg        # ...otherwise throw away the child directory and loop
3291473d951Smrg        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
3301473d951Smrg      done
3311473d951Smrg      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
3321473d951Smrg
3331473d951Smrg      save_mkdir_p_IFS="$IFS"; IFS=':'
3341473d951Smrg      for my_dir in $my_dir_list; do
3351473d951Smrg	IFS="$save_mkdir_p_IFS"
3361473d951Smrg        # mkdir can fail with a `File exist' error if two processes
3371473d951Smrg        # try to create one of the directories concurrently.  Don't
3381473d951Smrg        # stop in that case!
3391473d951Smrg        $MKDIR "$my_dir" 2>/dev/null || :
3401473d951Smrg      done
3411473d951Smrg      IFS="$save_mkdir_p_IFS"
3421473d951Smrg
3431473d951Smrg      # Bail out if we (or some other process) failed to create a directory.
3441473d951Smrg      test -d "$my_directory_path" || \
3451473d951Smrg        func_fatal_error "Failed to create \`$1'"
3461473d951Smrg    fi
3471473d951Smrg}
348ab47cfaaSmrg
349ab47cfaaSmrg
350ab47cfaaSmrg# func_mktempdir [string]
351ab47cfaaSmrg# Make a temporary directory that won't clash with other running
352ab47cfaaSmrg# libtool processes, and avoids race conditions if possible.  If
353ab47cfaaSmrg# given, STRING is the basename for that directory.
354ab47cfaaSmrgfunc_mktempdir ()
355ab47cfaaSmrg{
356ab47cfaaSmrg    my_template="${TMPDIR-/tmp}/${1-$progname}"
357ab47cfaaSmrg
3581473d951Smrg    if test "$opt_dry_run" = ":"; then
359ab47cfaaSmrg      # Return a directory name, but don't create it in dry-run mode
360ab47cfaaSmrg      my_tmpdir="${my_template}-$$"
361ab47cfaaSmrg    else
362ab47cfaaSmrg
363ab47cfaaSmrg      # If mktemp works, use that first and foremost
364ab47cfaaSmrg      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
365ab47cfaaSmrg
366ab47cfaaSmrg      if test ! -d "$my_tmpdir"; then
3671473d951Smrg        # Failing that, at least try and use $RANDOM to avoid a race
3681473d951Smrg        my_tmpdir="${my_template}-${RANDOM-0}$$"
369ab47cfaaSmrg
3701473d951Smrg        save_mktempdir_umask=`umask`
3711473d951Smrg        umask 0077
3721473d951Smrg        $MKDIR "$my_tmpdir"
3731473d951Smrg        umask $save_mktempdir_umask
374ab47cfaaSmrg      fi
375ab47cfaaSmrg
376ab47cfaaSmrg      # If we're not in dry-run mode, bomb out on failure
3771473d951Smrg      test -d "$my_tmpdir" || \
3781473d951Smrg        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
379ab47cfaaSmrg    fi
380ab47cfaaSmrg
3811473d951Smrg    $ECHO "X$my_tmpdir" | $Xsed
382ab47cfaaSmrg}
383ab47cfaaSmrg
384ab47cfaaSmrg
3851473d951Smrg# func_quote_for_eval arg
3861473d951Smrg# Aesthetically quote ARG to be evaled later.
3871473d951Smrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
3881473d951Smrg# is double-quoted, suitable for a subsequent eval, whereas
3891473d951Smrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
3901473d951Smrg# which are still active within double quotes backslashified.
3911473d951Smrgfunc_quote_for_eval ()
392ab47cfaaSmrg{
3931473d951Smrg    case $1 in
3941473d951Smrg      *[\\\`\"\$]*)
3951473d951Smrg	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
3961473d951Smrg      *)
3971473d951Smrg        func_quote_for_eval_unquoted_result="$1" ;;
3981473d951Smrg    esac
3991473d951Smrg
4001473d951Smrg    case $func_quote_for_eval_unquoted_result in
4011473d951Smrg      # Double-quote args containing shell metacharacters to delay
4021473d951Smrg      # word splitting, command substitution and and variable
4031473d951Smrg      # expansion for a subsequent eval.
4041473d951Smrg      # Many Bourne shells cannot handle close brackets correctly
4051473d951Smrg      # in scan sets, so we specify it separately.
4061473d951Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
4071473d951Smrg        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
4081473d951Smrg        ;;
4091473d951Smrg      *)
4101473d951Smrg        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
411ab47cfaaSmrg    esac
412ab47cfaaSmrg}
413ab47cfaaSmrg
414ab47cfaaSmrg
4151473d951Smrg# func_quote_for_expand arg
4161473d951Smrg# Aesthetically quote ARG to be evaled later; same as above,
4171473d951Smrg# but do not quote variable references.
4181473d951Smrgfunc_quote_for_expand ()
419ab47cfaaSmrg{
4201473d951Smrg    case $1 in
4211473d951Smrg      *[\\\`\"]*)
4221473d951Smrg	my_arg=`$ECHO "X$1" | $Xsed \
4231473d951Smrg	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
424ab47cfaaSmrg      *)
4251473d951Smrg        my_arg="$1" ;;
4261473d951Smrg    esac
4271473d951Smrg
4281473d951Smrg    case $my_arg in
4291473d951Smrg      # Double-quote args containing shell metacharacters to delay
4301473d951Smrg      # word splitting and command substitution for a subsequent eval.
4311473d951Smrg      # Many Bourne shells cannot handle close brackets correctly
4321473d951Smrg      # in scan sets, so we specify it separately.
4331473d951Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
4341473d951Smrg        my_arg="\"$my_arg\""
4351473d951Smrg        ;;
4361473d951Smrg    esac
4371473d951Smrg
4381473d951Smrg    func_quote_for_expand_result="$my_arg"
439ab47cfaaSmrg}
440ab47cfaaSmrg
441ab47cfaaSmrg
4421473d951Smrg# func_show_eval cmd [fail_exp]
4431473d951Smrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
4441473d951Smrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
4451473d951Smrg# is given, then evaluate it.
4461473d951Smrgfunc_show_eval ()
447ab47cfaaSmrg{
4481473d951Smrg    my_cmd="$1"
4491473d951Smrg    my_fail_exp="${2-:}"
450ab47cfaaSmrg
4511473d951Smrg    ${opt_silent-false} || {
4521473d951Smrg      func_quote_for_expand "$my_cmd"
4531473d951Smrg      eval "func_echo $func_quote_for_expand_result"
4541473d951Smrg    }
4551473d951Smrg
4561473d951Smrg    if ${opt_dry_run-false}; then :; else
4571473d951Smrg      eval "$my_cmd"
4581473d951Smrg      my_status=$?
4591473d951Smrg      if test "$my_status" -eq 0; then :; else
4601473d951Smrg	eval "(exit $my_status); $my_fail_exp"
4611473d951Smrg      fi
462ab47cfaaSmrg    fi
463ab47cfaaSmrg}
464ab47cfaaSmrg
4651473d951Smrg
4661473d951Smrg# func_show_eval_locale cmd [fail_exp]
4671473d951Smrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
4681473d951Smrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
4691473d951Smrg# is given, then evaluate it.  Use the saved locale for evaluation.
4701473d951Smrgfunc_show_eval_locale ()
471ab47cfaaSmrg{
4721473d951Smrg    my_cmd="$1"
4731473d951Smrg    my_fail_exp="${2-:}"
4741473d951Smrg
4751473d951Smrg    ${opt_silent-false} || {
4761473d951Smrg      func_quote_for_expand "$my_cmd"
4771473d951Smrg      eval "func_echo $func_quote_for_expand_result"
4781473d951Smrg    }
4791473d951Smrg
4801473d951Smrg    if ${opt_dry_run-false}; then :; else
4811473d951Smrg      eval "$lt_user_locale
4821473d951Smrg	    $my_cmd"
4831473d951Smrg      my_status=$?
4841473d951Smrg      eval "$lt_safe_locale"
4851473d951Smrg      if test "$my_status" -eq 0; then :; else
4861473d951Smrg	eval "(exit $my_status); $my_fail_exp"
4871473d951Smrg      fi
488ab47cfaaSmrg    fi
4891473d951Smrg}
490ab47cfaaSmrg
491ab47cfaaSmrg
4921473d951Smrg
4931473d951Smrg
4941473d951Smrg
4951473d951Smrg# func_version
4961473d951Smrg# Echo version message to standard output and exit.
4971473d951Smrgfunc_version ()
4981473d951Smrg{
4991473d951Smrg    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
5001473d951Smrg        s/^# //
5011473d951Smrg	s/^# *$//
5021473d951Smrg        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
5031473d951Smrg        p
5041473d951Smrg     }' < "$progpath"
5051473d951Smrg     exit $?
5061473d951Smrg}
5071473d951Smrg
5081473d951Smrg# func_usage
5091473d951Smrg# Echo short help message to standard output and exit.
5101473d951Smrgfunc_usage ()
5111473d951Smrg{
5121473d951Smrg    $SED -n '/^# Usage:/,/# -h/ {
5131473d951Smrg        s/^# //
5141473d951Smrg	s/^# *$//
5151473d951Smrg	s/\$progname/'$progname'/
5161473d951Smrg	p
5171473d951Smrg    }' < "$progpath"
5181473d951Smrg    $ECHO
5191473d951Smrg    $ECHO "run \`$progname --help | more' for full usage"
5201473d951Smrg    exit $?
5211473d951Smrg}
5221473d951Smrg
5231473d951Smrg# func_help
5241473d951Smrg# Echo long help message to standard output and exit.
5251473d951Smrgfunc_help ()
5261473d951Smrg{
5271473d951Smrg    $SED -n '/^# Usage:/,/# Report bugs to/ {
5281473d951Smrg        s/^# //
5291473d951Smrg	s/^# *$//
5301473d951Smrg	s*\$progname*'$progname'*
5311473d951Smrg	s*\$host*'"$host"'*
5321473d951Smrg	s*\$SHELL*'"$SHELL"'*
5331473d951Smrg	s*\$LTCC*'"$LTCC"'*
5341473d951Smrg	s*\$LTCFLAGS*'"$LTCFLAGS"'*
5351473d951Smrg	s*\$LD*'"$LD"'*
5361473d951Smrg	s/\$with_gnu_ld/'"$with_gnu_ld"'/
5371473d951Smrg	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
5381473d951Smrg	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
5391473d951Smrg	p
5401473d951Smrg     }' < "$progpath"
5411473d951Smrg    exit $?
5421473d951Smrg}
5431473d951Smrg
5441473d951Smrg# func_missing_arg argname
5451473d951Smrg# Echo program name prefixed message to standard error and set global
5461473d951Smrg# exit_cmd.
5471473d951Smrgfunc_missing_arg ()
5481473d951Smrg{
5491473d951Smrg    func_error "missing argument for $1"
5501473d951Smrg    exit_cmd=exit
551ab47cfaaSmrg}
552ab47cfaaSmrg
5531473d951Smrgexit_cmd=:
554ab47cfaaSmrg
555ab47cfaaSmrg
5561473d951Smrg
5571473d951Smrg
5581473d951Smrg
5591473d951Smrg# Check that we have a working $ECHO.
5601473d951Smrgif test "X$1" = X--no-reexec; then
5611473d951Smrg  # Discard the --no-reexec flag, and continue.
562ab47cfaaSmrg  shift
5631473d951Smrgelif test "X$1" = X--fallback-echo; then
5641473d951Smrg  # Avoid inline document here, it may be left over
5651473d951Smrg  :
5661473d951Smrgelif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
5671473d951Smrg  # Yippee, $ECHO works!
5681473d951Smrg  :
5691473d951Smrgelse
5701473d951Smrg  # Restart under the correct shell, and then maybe $ECHO will work.
5711473d951Smrg  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
5721473d951Smrgfi
573ab47cfaaSmrg
5741473d951Smrgif test "X$1" = X--fallback-echo; then
5751473d951Smrg  # used as fallback echo
5761473d951Smrg  shift
5771473d951Smrg  cat <<EOF
5781473d951Smrg$*
5791473d951SmrgEOF
5801473d951Smrg  exit $EXIT_SUCCESS
5811473d951Smrgfi
582ab47cfaaSmrg
5831473d951Smrgmagic="%%%MAGIC variable%%%"
5841473d951Smrgmagic_exe="%%%MAGIC EXE variable%%%"
585ab47cfaaSmrg
5861473d951Smrg# Global variables.
5871473d951Smrg# $mode is unset
5881473d951Smrgnonopt=
5891473d951Smrgexecute_dlfiles=
5901473d951Smrgpreserve_args=
5911473d951Smrglo2o="s/\\.lo\$/.${objext}/"
5921473d951Smrgo2lo="s/\\.${objext}\$/.lo/"
5931473d951Smrgextracted_archives=
5941473d951Smrgextracted_serial=0
595ab47cfaaSmrg
5961473d951Smrgopt_dry_run=false
5971473d951Smrgopt_duplicate_deps=false
5981473d951Smrgopt_silent=false
5991473d951Smrgopt_debug=:
600ab47cfaaSmrg
6011473d951Smrg# If this variable is set in any of the actions, the command in it
6021473d951Smrg# will be execed at the end.  This prevents here-documents from being
6031473d951Smrg# left over by shells.
6041473d951Smrgexec_cmd=
6051473d951Smrg
6061473d951Smrg# func_fatal_configuration arg...
6071473d951Smrg# Echo program name prefixed message to standard error, followed by
6081473d951Smrg# a configuration failure hint, and exit.
6091473d951Smrgfunc_fatal_configuration ()
6101473d951Smrg{
6111473d951Smrg    func_error ${1+"$@"}
6121473d951Smrg    func_error "See the $PACKAGE documentation for more information."
6131473d951Smrg    func_fatal_error "Fatal configuration error."
6141473d951Smrg}
615ab47cfaaSmrg
6168697ee19Smrg
6171473d951Smrg# func_config
6181473d951Smrg# Display the configuration for all the tags in this script.
6191473d951Smrgfunc_config ()
6201473d951Smrg{
6211473d951Smrg    re_begincf='^# ### BEGIN LIBTOOL'
6221473d951Smrg    re_endcf='^# ### END LIBTOOL'
6231473d951Smrg
6241473d951Smrg    # Default configuration.
6251473d951Smrg    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
626ab47cfaaSmrg
627ab47cfaaSmrg    # Now print the configurations for the tags.
628ab47cfaaSmrg    for tagname in $taglist; do
6291473d951Smrg      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
630ab47cfaaSmrg    done
631ab47cfaaSmrg
6321473d951Smrg    exit $?
6331473d951Smrg}
634ab47cfaaSmrg
6351473d951Smrg# func_features
6361473d951Smrg# Display the features supported by this script.
6371473d951Smrgfunc_features ()
6381473d951Smrg{
6391473d951Smrg    $ECHO "host: $host"
640ab47cfaaSmrg    if test "$build_libtool_libs" = yes; then
6411473d951Smrg      $ECHO "enable shared libraries"
642ab47cfaaSmrg    else
6431473d951Smrg      $ECHO "disable shared libraries"
644ab47cfaaSmrg    fi
645ab47cfaaSmrg    if test "$build_old_libs" = yes; then
6461473d951Smrg      $ECHO "enable static libraries"
647ab47cfaaSmrg    else
6481473d951Smrg      $ECHO "disable static libraries"
649ab47cfaaSmrg    fi
6501473d951Smrg
651ab47cfaaSmrg    exit $?
6521473d951Smrg}
653ab47cfaaSmrg
6541473d951Smrg# func_enable_tag tagname
6551473d951Smrg# Verify that TAGNAME is valid, and either flag an error and exit, or
6561473d951Smrg# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
6571473d951Smrg# variable here.
6581473d951Smrgfunc_enable_tag ()
6591473d951Smrg{
6601473d951Smrg  # Global variable:
6611473d951Smrg  tagname="$1"
662ab47cfaaSmrg
6631473d951Smrg  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
6641473d951Smrg  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
6651473d951Smrg  sed_extractcf="/$re_begincf/,/$re_endcf/p"
666ab47cfaaSmrg
6671473d951Smrg  # Validate tagname.
6681473d951Smrg  case $tagname in
6691473d951Smrg    *[!-_A-Za-z0-9,/]*)
6701473d951Smrg      func_fatal_error "invalid tag name: $tagname"
6711473d951Smrg      ;;
6721473d951Smrg  esac
673ab47cfaaSmrg
6741473d951Smrg  # Don't test for the "default" C tag, as we know it's
6751473d951Smrg  # there but not specially marked.
6761473d951Smrg  case $tagname in
6771473d951Smrg    CC) ;;
6781473d951Smrg    *)
6791473d951Smrg      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
6801473d951Smrg	taglist="$taglist $tagname"
6811473d951Smrg
6821473d951Smrg	# Evaluate the configuration.  Be careful to quote the path
6831473d951Smrg	# and the sed script, to avoid splitting on whitespace, but
6841473d951Smrg	# also don't use non-portable quotes within backquotes within
6851473d951Smrg	# quotes we have to do it in 2 steps:
6861473d951Smrg	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
6871473d951Smrg	eval "$extractedcf"
6881473d951Smrg      else
6891473d951Smrg	func_error "ignoring unknown tag $tagname"
6901473d951Smrg      fi
6911473d951Smrg      ;;
6921473d951Smrg  esac
6931473d951Smrg}
6941473d951Smrg
6951473d951Smrg# Parse options once, thoroughly.  This comes as soon as possible in
6961473d951Smrg# the script to make things like `libtool --version' happen quickly.
6971473d951Smrg{
698ab47cfaaSmrg
6991473d951Smrg  # Shorthand for --mode=foo, only valid as the first argument
7001473d951Smrg  case $1 in
7011473d951Smrg  clean|clea|cle|cl)
7021473d951Smrg    shift; set dummy --mode clean ${1+"$@"}; shift
703ab47cfaaSmrg    ;;
7041473d951Smrg  compile|compil|compi|comp|com|co|c)
7051473d951Smrg    shift; set dummy --mode compile ${1+"$@"}; shift
706ab47cfaaSmrg    ;;
7071473d951Smrg  execute|execut|execu|exec|exe|ex|e)
7081473d951Smrg    shift; set dummy --mode execute ${1+"$@"}; shift
709ab47cfaaSmrg    ;;
7101473d951Smrg  finish|finis|fini|fin|fi|f)
7111473d951Smrg    shift; set dummy --mode finish ${1+"$@"}; shift
712ab47cfaaSmrg    ;;
7131473d951Smrg  install|instal|insta|inst|ins|in|i)
7141473d951Smrg    shift; set dummy --mode install ${1+"$@"}; shift
7151473d951Smrg    ;;
7161473d951Smrg  link|lin|li|l)
7171473d951Smrg    shift; set dummy --mode link ${1+"$@"}; shift
7181473d951Smrg    ;;
7191473d951Smrg  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
7201473d951Smrg    shift; set dummy --mode uninstall ${1+"$@"}; shift
721ab47cfaaSmrg    ;;
722ab47cfaaSmrg  esac
723ab47cfaaSmrg
7241473d951Smrg  # Parse non-mode specific arguments:
7251473d951Smrg  while test "$#" -gt 0; do
7261473d951Smrg    opt="$1"
7271473d951Smrg    shift
728ab47cfaaSmrg
7291473d951Smrg    case $opt in
7301473d951Smrg      --config)		func_config					;;
731ab47cfaaSmrg
7321473d951Smrg      --debug)		preserve_args="$preserve_args $opt"
7331473d951Smrg			func_echo "enabling shell trace mode"
7341473d951Smrg			opt_debug='set -x'
7351473d951Smrg			$opt_debug
7361473d951Smrg			;;
737ab47cfaaSmrg
7381473d951Smrg      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7391473d951Smrg			execute_dlfiles="$execute_dlfiles $1"
7401473d951Smrg			shift
7411473d951Smrg			;;
742ab47cfaaSmrg
7431473d951Smrg      --dry-run | -n)	opt_dry_run=:					;;
7441473d951Smrg      --features)       func_features					;;
7451473d951Smrg      --finish)		mode="finish"					;;
7461473d951Smrg
7471473d951Smrg      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7481473d951Smrg			case $1 in
7491473d951Smrg			  # Valid mode arguments:
7501473d951Smrg			  clean)	;;
7511473d951Smrg			  compile)	;;
7521473d951Smrg			  execute)	;;
7531473d951Smrg			  finish)	;;
7541473d951Smrg			  install)	;;
7551473d951Smrg			  link)		;;
7561473d951Smrg			  relink)	;;
7571473d951Smrg			  uninstall)	;;
7581473d951Smrg
7591473d951Smrg			  # Catch anything else as an error
7601473d951Smrg			  *) func_error "invalid argument for $opt"
7611473d951Smrg			     exit_cmd=exit
7621473d951Smrg			     break
7631473d951Smrg			     ;;
7641473d951Smrg		        esac
7651473d951Smrg
7661473d951Smrg			mode="$1"
7671473d951Smrg			shift
7681473d951Smrg			;;
7691473d951Smrg
7701473d951Smrg      --preserve-dup-deps)
7711473d951Smrg			opt_duplicate_deps=:				;;
7721473d951Smrg
7731473d951Smrg      --quiet|--silent)	preserve_args="$preserve_args $opt"
7741473d951Smrg			opt_silent=:
7751473d951Smrg			;;
7761473d951Smrg
7771473d951Smrg      --verbose| -v)	preserve_args="$preserve_args $opt"
7781473d951Smrg			opt_silent=false
7791473d951Smrg			;;
7801473d951Smrg
7811473d951Smrg      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7821473d951Smrg			preserve_args="$preserve_args $opt $1"
7831473d951Smrg			func_enable_tag "$1"	# tagname is set here
7841473d951Smrg			shift
7851473d951Smrg			;;
7861473d951Smrg
7871473d951Smrg      # Separate optargs to long options:
7881473d951Smrg      -dlopen=*|--mode=*|--tag=*)
7891473d951Smrg			func_opt_split "$opt"
7901473d951Smrg			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
7911473d951Smrg			shift
7921473d951Smrg			;;
7931473d951Smrg
7941473d951Smrg      -\?|-h)		func_usage					;;
7951473d951Smrg      --help)		opt_help=:					;;
7961473d951Smrg      --version)	func_version					;;
7971473d951Smrg
7981473d951Smrg      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
7991473d951Smrg
8001473d951Smrg      *)		nonopt="$opt"
8011473d951Smrg			break
8021473d951Smrg			;;
8031473d951Smrg    esac
8041473d951Smrg  done
8051473d951Smrg
8061473d951Smrg
8071473d951Smrg  case $host in
8081473d951Smrg    *cygwin* | *mingw* | *pw32* | *cegcc*)
8091473d951Smrg      # don't eliminate duplications in $postdeps and $predeps
8101473d951Smrg      opt_duplicate_compiler_generated_deps=:
811ab47cfaaSmrg      ;;
812ab47cfaaSmrg    *)
8131473d951Smrg      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
8141473d951Smrg      ;;
8151473d951Smrg  esac
816ab47cfaaSmrg
8171473d951Smrg  # Having warned about all mis-specified options, bail out if
8181473d951Smrg  # anything was wrong.
8191473d951Smrg  $exit_cmd $EXIT_FAILURE
8201473d951Smrg}
8211473d951Smrg
8221473d951Smrg# func_check_version_match
8231473d951Smrg# Ensure that we are using m4 macros, and libtool script from the same
8241473d951Smrg# release of libtool.
8251473d951Smrgfunc_check_version_match ()
8261473d951Smrg{
8271473d951Smrg  if test "$package_revision" != "$macro_revision"; then
8281473d951Smrg    if test "$VERSION" != "$macro_version"; then
8291473d951Smrg      if test -z "$macro_version"; then
8301473d951Smrg        cat >&2 <<_LT_EOF
8311473d951Smrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
8321473d951Smrg$progname: definition of this LT_INIT comes from an older release.
8331473d951Smrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
8341473d951Smrg$progname: and run autoconf again.
8351473d951Smrg_LT_EOF
8361473d951Smrg      else
8371473d951Smrg        cat >&2 <<_LT_EOF
8381473d951Smrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
8391473d951Smrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
8401473d951Smrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
8411473d951Smrg$progname: and run autoconf again.
8421473d951Smrg_LT_EOF
843ab47cfaaSmrg      fi
8441473d951Smrg    else
8451473d951Smrg      cat >&2 <<_LT_EOF
8461473d951Smrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
8471473d951Smrg$progname: but the definition of this LT_INIT comes from revision $macro_revision.
8481473d951Smrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision
8491473d951Smrg$progname: of $PACKAGE $VERSION and run autoconf again.
8501473d951Smrg_LT_EOF
8511473d951Smrg    fi
8521473d951Smrg
8531473d951Smrg    exit $EXIT_MISMATCH
8541473d951Smrg  fi
8551473d951Smrg}
8561473d951Smrg
8571473d951Smrg
8581473d951Smrg## ----------- ##
8591473d951Smrg##    Main.    ##
8601473d951Smrg## ----------- ##
8611473d951Smrg
8621473d951Smrg$opt_help || {
8631473d951Smrg  # Sanity checks first:
8641473d951Smrg  func_check_version_match
8651473d951Smrg
8661473d951Smrg  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
8671473d951Smrg    func_fatal_configuration "not configured to build any kind of library"
868ab47cfaaSmrg  fi
869ab47cfaaSmrg
8701473d951Smrg  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
8711473d951Smrg
8721473d951Smrg
8731473d951Smrg  # Darwin sucks
8741473d951Smrg  eval std_shrext=\"$shrext_cmds\"
8751473d951Smrg
8761473d951Smrg
877ab47cfaaSmrg  # Only execute mode is allowed to have -dlopen flags.
878ab47cfaaSmrg  if test -n "$execute_dlfiles" && test "$mode" != execute; then
8791473d951Smrg    func_error "unrecognized option \`-dlopen'"
8801473d951Smrg    $ECHO "$help" 1>&2
881ab47cfaaSmrg    exit $EXIT_FAILURE
882ab47cfaaSmrg  fi
883ab47cfaaSmrg
884ab47cfaaSmrg  # Change the help message to a mode-specific one.
885ab47cfaaSmrg  generic_help="$help"
8861473d951Smrg  help="Try \`$progname --help --mode=$mode' for more information."
8871473d951Smrg}
888ab47cfaaSmrg
889ab47cfaaSmrg
8901473d951Smrg# func_lalib_p file
8911473d951Smrg# True iff FILE is a libtool `.la' library or `.lo' object file.
8921473d951Smrg# This function is only a basic sanity check; it will hardly flush out
8931473d951Smrg# determined imposters.
8941473d951Smrgfunc_lalib_p ()
8951473d951Smrg{
8961473d951Smrg    test -f "$1" &&
8971473d951Smrg      $SED -e 4q "$1" 2>/dev/null \
8981473d951Smrg        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
8991473d951Smrg}
900ab47cfaaSmrg
9011473d951Smrg# func_lalib_unsafe_p file
9021473d951Smrg# True iff FILE is a libtool `.la' library or `.lo' object file.
9031473d951Smrg# This function implements the same check as func_lalib_p without
9041473d951Smrg# resorting to external programs.  To this end, it redirects stdin and
9051473d951Smrg# closes it afterwards, without saving the original file descriptor.
9061473d951Smrg# As a safety measure, use it only where a negative result would be
9071473d951Smrg# fatal anyway.  Works if `file' does not exist.
9081473d951Smrgfunc_lalib_unsafe_p ()
9091473d951Smrg{
9101473d951Smrg    lalib_p=no
9111473d951Smrg    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
9121473d951Smrg	for lalib_p_l in 1 2 3 4
9131473d951Smrg	do
9141473d951Smrg	    read lalib_p_line
9151473d951Smrg	    case "$lalib_p_line" in
9161473d951Smrg		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
9171473d951Smrg	    esac
9181473d951Smrg	done
9191473d951Smrg	exec 0<&5 5<&-
9201473d951Smrg    fi
9211473d951Smrg    test "$lalib_p" = yes
9221473d951Smrg}
923ab47cfaaSmrg
9241473d951Smrg# func_ltwrapper_script_p file
9251473d951Smrg# True iff FILE is a libtool wrapper script
9261473d951Smrg# This function is only a basic sanity check; it will hardly flush out
9271473d951Smrg# determined imposters.
9281473d951Smrgfunc_ltwrapper_script_p ()
9291473d951Smrg{
9301473d951Smrg    func_lalib_p "$1"
9311473d951Smrg}
932ab47cfaaSmrg
9331473d951Smrg# func_ltwrapper_executable_p file
9341473d951Smrg# True iff FILE is a libtool wrapper executable
9351473d951Smrg# This function is only a basic sanity check; it will hardly flush out
9361473d951Smrg# determined imposters.
9371473d951Smrgfunc_ltwrapper_executable_p ()
9381473d951Smrg{
9391473d951Smrg    func_ltwrapper_exec_suffix=
9401473d951Smrg    case $1 in
9411473d951Smrg    *.exe) ;;
9421473d951Smrg    *) func_ltwrapper_exec_suffix=.exe ;;
9431473d951Smrg    esac
9441473d951Smrg    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
9451473d951Smrg}
946ab47cfaaSmrg
9471473d951Smrg# func_ltwrapper_scriptname file
9481473d951Smrg# Assumes file is an ltwrapper_executable
9491473d951Smrg# uses $file to determine the appropriate filename for a
9501473d951Smrg# temporary ltwrapper_script.
9511473d951Smrgfunc_ltwrapper_scriptname ()
9521473d951Smrg{
9531473d951Smrg    func_ltwrapper_scriptname_result=""
9541473d951Smrg    if func_ltwrapper_executable_p "$1"; then
9551473d951Smrg	func_dirname_and_basename "$1" "" "."
9561473d951Smrg	func_stripname '' '.exe' "$func_basename_result"
9571473d951Smrg	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
9581473d951Smrg    fi
9591473d951Smrg}
9601473d951Smrg
9611473d951Smrg# func_ltwrapper_p file
9621473d951Smrg# True iff FILE is a libtool wrapper script or wrapper executable
9631473d951Smrg# This function is only a basic sanity check; it will hardly flush out
9641473d951Smrg# determined imposters.
9651473d951Smrgfunc_ltwrapper_p ()
9661473d951Smrg{
9671473d951Smrg    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
9681473d951Smrg}
9691473d951Smrg
9701473d951Smrg
9711473d951Smrg# func_execute_cmds commands fail_cmd
9721473d951Smrg# Execute tilde-delimited COMMANDS.
9731473d951Smrg# If FAIL_CMD is given, eval that upon failure.
9741473d951Smrg# FAIL_CMD may read-access the current command in variable CMD!
9751473d951Smrgfunc_execute_cmds ()
9761473d951Smrg{
9771473d951Smrg    $opt_debug
9781473d951Smrg    save_ifs=$IFS; IFS='~'
9791473d951Smrg    for cmd in $1; do
9801473d951Smrg      IFS=$save_ifs
9811473d951Smrg      eval cmd=\"$cmd\"
9821473d951Smrg      func_show_eval "$cmd" "${2-:}"
9831473d951Smrg    done
9841473d951Smrg    IFS=$save_ifs
9851473d951Smrg}
9861473d951Smrg
9871473d951Smrg
9881473d951Smrg# func_source file
9891473d951Smrg# Source FILE, adding directory component if necessary.
9901473d951Smrg# Note that it is not necessary on cygwin/mingw to append a dot to
9911473d951Smrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
9921473d951Smrg# behavior happens only for exec(3), not for open(2)!  Also, sourcing
9931473d951Smrg# `FILE.' does not work on cygwin managed mounts.
9941473d951Smrgfunc_source ()
9951473d951Smrg{
9961473d951Smrg    $opt_debug
9971473d951Smrg    case $1 in
9981473d951Smrg    */* | *\\*)	. "$1" ;;
9991473d951Smrg    *)		. "./$1" ;;
10001473d951Smrg    esac
10011473d951Smrg}
10021473d951Smrg
10031473d951Smrg
10041473d951Smrg# func_infer_tag arg
10051473d951Smrg# Infer tagged configuration to use if any are available and
10061473d951Smrg# if one wasn't chosen via the "--tag" command line option.
10071473d951Smrg# Only attempt this if the compiler in the base compile
10081473d951Smrg# command doesn't match the default compiler.
10091473d951Smrg# arg is usually of the form 'gcc ...'
10101473d951Smrgfunc_infer_tag ()
10111473d951Smrg{
10121473d951Smrg    $opt_debug
10131473d951Smrg    if test -n "$available_tags" && test -z "$tagname"; then
10141473d951Smrg      CC_quoted=
10151473d951Smrg      for arg in $CC; do
10161473d951Smrg        func_quote_for_eval "$arg"
10171473d951Smrg	CC_quoted="$CC_quoted $func_quote_for_eval_result"
10181473d951Smrg      done
10191473d951Smrg      case $@ in
10201473d951Smrg      # Blanks in the command may have been stripped by the calling shell,
10211473d951Smrg      # but not from the CC environment variable when configure was run.
10221473d951Smrg      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
10231473d951Smrg      # Blanks at the start of $base_compile will cause this to fail
10241473d951Smrg      # if we don't check for them as well.
10251473d951Smrg      *)
10261473d951Smrg	for z in $available_tags; do
10271473d951Smrg	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
10281473d951Smrg	    # Evaluate the configuration.
10291473d951Smrg	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
10301473d951Smrg	    CC_quoted=
10311473d951Smrg	    for arg in $CC; do
10321473d951Smrg	      # Double-quote args containing other shell metacharacters.
10331473d951Smrg	      func_quote_for_eval "$arg"
10341473d951Smrg	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
10351473d951Smrg	    done
10361473d951Smrg	    case "$@ " in
10371473d951Smrg	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
10381473d951Smrg	      # The compiler in the base compile command matches
10391473d951Smrg	      # the one in the tagged configuration.
10401473d951Smrg	      # Assume this is the tagged configuration we want.
10411473d951Smrg	      tagname=$z
10421473d951Smrg	      break
10431473d951Smrg	      ;;
10441473d951Smrg	    esac
10451473d951Smrg	  fi
10461473d951Smrg	done
10471473d951Smrg	# If $tagname still isn't set, then no tagged configuration
10481473d951Smrg	# was found and let the user know that the "--tag" command
10491473d951Smrg	# line option must be used.
10501473d951Smrg	if test -z "$tagname"; then
10511473d951Smrg	  func_echo "unable to infer tagged configuration"
10521473d951Smrg	  func_fatal_error "specify a tag with \`--tag'"
10531473d951Smrg#	else
10541473d951Smrg#	  func_verbose "using $tagname tagged configuration"
10551473d951Smrg	fi
10561473d951Smrg	;;
10571473d951Smrg      esac
10581473d951Smrg    fi
10591473d951Smrg}
10601473d951Smrg
10611473d951Smrg
10621473d951Smrg
10631473d951Smrg# func_write_libtool_object output_name pic_name nonpic_name
10641473d951Smrg# Create a libtool object file (analogous to a ".la" file),
10651473d951Smrg# but don't create it if we're doing a dry run.
10661473d951Smrgfunc_write_libtool_object ()
10671473d951Smrg{
10681473d951Smrg    write_libobj=${1}
10691473d951Smrg    if test "$build_libtool_libs" = yes; then
10701473d951Smrg      write_lobj=\'${2}\'
10711473d951Smrg    else
10721473d951Smrg      write_lobj=none
10731473d951Smrg    fi
10741473d951Smrg
10751473d951Smrg    if test "$build_old_libs" = yes; then
10761473d951Smrg      write_oldobj=\'${3}\'
10771473d951Smrg    else
10781473d951Smrg      write_oldobj=none
10791473d951Smrg    fi
10801473d951Smrg
10811473d951Smrg    $opt_dry_run || {
10821473d951Smrg      cat >${write_libobj}T <<EOF
10831473d951Smrg# $write_libobj - a libtool object file
10841473d951Smrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
10851473d951Smrg#
10861473d951Smrg# Please DO NOT delete this file!
10871473d951Smrg# It is necessary for linking the library.
10881473d951Smrg
10891473d951Smrg# Name of the PIC object.
10901473d951Smrgpic_object=$write_lobj
10911473d951Smrg
10921473d951Smrg# Name of the non-PIC object
10931473d951Smrgnon_pic_object=$write_oldobj
10941473d951Smrg
10951473d951SmrgEOF
10961473d951Smrg      $MV "${write_libobj}T" "${write_libobj}"
10971473d951Smrg    }
10981473d951Smrg}
10991473d951Smrg
11001473d951Smrg# func_mode_compile arg...
11011473d951Smrgfunc_mode_compile ()
11021473d951Smrg{
11031473d951Smrg    $opt_debug
11041473d951Smrg    # Get the compilation command and the source file.
11051473d951Smrg    base_compile=
11061473d951Smrg    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
11071473d951Smrg    suppress_opt=yes
11081473d951Smrg    suppress_output=
11091473d951Smrg    arg_mode=normal
11101473d951Smrg    libobj=
11111473d951Smrg    later=
11121473d951Smrg    pie_flag=
11131473d951Smrg
11141473d951Smrg    for arg
11151473d951Smrg    do
11161473d951Smrg      case $arg_mode in
11171473d951Smrg      arg  )
11181473d951Smrg	# do not "continue".  Instead, add this to base_compile
11191473d951Smrg	lastarg="$arg"
11201473d951Smrg	arg_mode=normal
11211473d951Smrg	;;
11221473d951Smrg
11231473d951Smrg      target )
11241473d951Smrg	libobj="$arg"
11251473d951Smrg	arg_mode=normal
11261473d951Smrg	continue
11271473d951Smrg	;;
11281473d951Smrg
11291473d951Smrg      normal )
11301473d951Smrg	# Accept any command-line options.
11311473d951Smrg	case $arg in
11321473d951Smrg	-o)
11331473d951Smrg	  test -n "$libobj" && \
11341473d951Smrg	    func_fatal_error "you cannot specify \`-o' more than once"
11351473d951Smrg	  arg_mode=target
11361473d951Smrg	  continue
11371473d951Smrg	  ;;
11381473d951Smrg
11391473d951Smrg	-pie | -fpie | -fPIE)
11401473d951Smrg          pie_flag="$pie_flag $arg"
11411473d951Smrg	  continue
11421473d951Smrg	  ;;
11431473d951Smrg
11441473d951Smrg	-shared | -static | -prefer-pic | -prefer-non-pic)
11451473d951Smrg	  later="$later $arg"
11461473d951Smrg	  continue
11471473d951Smrg	  ;;
11481473d951Smrg
11491473d951Smrg	-no-suppress)
1150ab47cfaaSmrg	  suppress_opt=no
1151ab47cfaaSmrg	  continue
1152ab47cfaaSmrg	  ;;
1153ab47cfaaSmrg
1154ab47cfaaSmrg	-Xcompiler)
1155ab47cfaaSmrg	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
1156ab47cfaaSmrg	  continue      #  The current "srcfile" will either be retained or
1157ab47cfaaSmrg	  ;;            #  replaced later.  I would guess that would be a bug.
1158ab47cfaaSmrg
1159ab47cfaaSmrg	-Wc,*)
11601473d951Smrg	  func_stripname '-Wc,' '' "$arg"
11611473d951Smrg	  args=$func_stripname_result
1162ab47cfaaSmrg	  lastarg=
1163ab47cfaaSmrg	  save_ifs="$IFS"; IFS=','
11641473d951Smrg	  for arg in $args; do
1165ab47cfaaSmrg	    IFS="$save_ifs"
11661473d951Smrg	    func_quote_for_eval "$arg"
11671473d951Smrg	    lastarg="$lastarg $func_quote_for_eval_result"
1168ab47cfaaSmrg	  done
1169ab47cfaaSmrg	  IFS="$save_ifs"
11701473d951Smrg	  func_stripname ' ' '' "$lastarg"
11711473d951Smrg	  lastarg=$func_stripname_result
1172ab47cfaaSmrg
1173ab47cfaaSmrg	  # Add the arguments to base_compile.
1174ab47cfaaSmrg	  base_compile="$base_compile $lastarg"
1175ab47cfaaSmrg	  continue
1176ab47cfaaSmrg	  ;;
1177ab47cfaaSmrg
11781473d951Smrg	*)
1179ab47cfaaSmrg	  # Accept the current argument as the source file.
1180ab47cfaaSmrg	  # The previous "srcfile" becomes the current argument.
1181ab47cfaaSmrg	  #
1182ab47cfaaSmrg	  lastarg="$srcfile"
1183ab47cfaaSmrg	  srcfile="$arg"
1184ab47cfaaSmrg	  ;;
1185ab47cfaaSmrg	esac  #  case $arg
1186ab47cfaaSmrg	;;
1187ab47cfaaSmrg      esac    #  case $arg_mode
1188ab47cfaaSmrg
1189ab47cfaaSmrg      # Aesthetically quote the previous argument.
11901473d951Smrg      func_quote_for_eval "$lastarg"
11911473d951Smrg      base_compile="$base_compile $func_quote_for_eval_result"
1192ab47cfaaSmrg    done # for arg
1193ab47cfaaSmrg
1194ab47cfaaSmrg    case $arg_mode in
1195ab47cfaaSmrg    arg)
11961473d951Smrg      func_fatal_error "you must specify an argument for -Xcompile"
1197ab47cfaaSmrg      ;;
1198ab47cfaaSmrg    target)
11991473d951Smrg      func_fatal_error "you must specify a target with \`-o'"
1200ab47cfaaSmrg      ;;
1201ab47cfaaSmrg    *)
1202ab47cfaaSmrg      # Get the name of the library object.
12031473d951Smrg      test -z "$libobj" && {
12041473d951Smrg	func_basename "$srcfile"
12051473d951Smrg	libobj="$func_basename_result"
12061473d951Smrg      }
1207ab47cfaaSmrg      ;;
1208ab47cfaaSmrg    esac
1209ab47cfaaSmrg
1210ab47cfaaSmrg    # Recognize several different file suffixes.
1211ab47cfaaSmrg    # If the user specifies -o file.o, it is replaced with file.lo
1212ab47cfaaSmrg    case $libobj in
12131473d951Smrg    *.[cCFSifmso] | \
12141473d951Smrg    *.ada | *.adb | *.ads | *.asm | \
12151473d951Smrg    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
12161473d951Smrg    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
12171473d951Smrg      func_xform "$libobj"
12181473d951Smrg      libobj=$func_xform_result
12191473d951Smrg      ;;
1220ab47cfaaSmrg    esac
1221ab47cfaaSmrg
1222ab47cfaaSmrg    case $libobj in
12231473d951Smrg    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
1224ab47cfaaSmrg    *)
12251473d951Smrg      func_fatal_error "cannot determine name of library object from \`$libobj'"
1226ab47cfaaSmrg      ;;
1227ab47cfaaSmrg    esac
1228ab47cfaaSmrg
1229ab47cfaaSmrg    func_infer_tag $base_compile
1230ab47cfaaSmrg
1231ab47cfaaSmrg    for arg in $later; do
1232ab47cfaaSmrg      case $arg in
12331473d951Smrg      -shared)
12341473d951Smrg	test "$build_libtool_libs" != yes && \
12351473d951Smrg	  func_fatal_configuration "can not build a shared library"
12361473d951Smrg	build_old_libs=no
12371473d951Smrg	continue
12381473d951Smrg	;;
12391473d951Smrg
1240ab47cfaaSmrg      -static)
12411473d951Smrg	build_libtool_libs=no
1242ab47cfaaSmrg	build_old_libs=yes
1243ab47cfaaSmrg	continue
1244ab47cfaaSmrg	;;
1245ab47cfaaSmrg
1246ab47cfaaSmrg      -prefer-pic)
1247ab47cfaaSmrg	pic_mode=yes
1248ab47cfaaSmrg	continue
1249ab47cfaaSmrg	;;
1250ab47cfaaSmrg
1251ab47cfaaSmrg      -prefer-non-pic)
1252ab47cfaaSmrg	pic_mode=no
1253ab47cfaaSmrg	continue
1254ab47cfaaSmrg	;;
1255ab47cfaaSmrg      esac
1256ab47cfaaSmrg    done
1257ab47cfaaSmrg
12581473d951Smrg    func_quote_for_eval "$libobj"
12591473d951Smrg    test "X$libobj" != "X$func_quote_for_eval_result" \
12601473d951Smrg      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
12611473d951Smrg      && func_warning "libobj name \`$libobj' may not contain shell special characters."
12621473d951Smrg    func_dirname_and_basename "$obj" "/" ""
12631473d951Smrg    objname="$func_basename_result"
12641473d951Smrg    xdir="$func_dirname_result"
1265ab47cfaaSmrg    lobj=${xdir}$objdir/$objname
1266ab47cfaaSmrg
12671473d951Smrg    test -z "$base_compile" && \
12681473d951Smrg      func_fatal_help "you must specify a compilation command"
1269ab47cfaaSmrg
1270ab47cfaaSmrg    # Delete any leftover library objects.
1271ab47cfaaSmrg    if test "$build_old_libs" = yes; then
1272ab47cfaaSmrg      removelist="$obj $lobj $libobj ${libobj}T"
1273ab47cfaaSmrg    else
1274ab47cfaaSmrg      removelist="$lobj $libobj ${libobj}T"
1275ab47cfaaSmrg    fi
1276ab47cfaaSmrg
1277ab47cfaaSmrg    # On Cygwin there's no "real" PIC flag so we must build both object types
1278ab47cfaaSmrg    case $host_os in
12791473d951Smrg    cygwin* | mingw* | pw32* | os2* | cegcc*)
1280ab47cfaaSmrg      pic_mode=default
1281ab47cfaaSmrg      ;;
1282ab47cfaaSmrg    esac
1283ab47cfaaSmrg    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
1284ab47cfaaSmrg      # non-PIC code in shared libraries is not supported
1285ab47cfaaSmrg      pic_mode=default
1286ab47cfaaSmrg    fi
1287ab47cfaaSmrg
1288ab47cfaaSmrg    # Calculate the filename of the output object if compiler does
1289ab47cfaaSmrg    # not support -o with -c
1290ab47cfaaSmrg    if test "$compiler_c_o" = no; then
12911473d951Smrg      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
1292ab47cfaaSmrg      lockfile="$output_obj.lock"
1293ab47cfaaSmrg    else
1294ab47cfaaSmrg      output_obj=
1295ab47cfaaSmrg      need_locks=no
1296ab47cfaaSmrg      lockfile=
1297ab47cfaaSmrg    fi
1298ab47cfaaSmrg
1299ab47cfaaSmrg    # Lock this critical section if it is needed
1300ab47cfaaSmrg    # We use this script file to make the link, it avoids creating a new file
1301ab47cfaaSmrg    if test "$need_locks" = yes; then
13021473d951Smrg      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
13031473d951Smrg	func_echo "Waiting for $lockfile to be removed"
1304ab47cfaaSmrg	sleep 2
1305ab47cfaaSmrg      done
1306ab47cfaaSmrg    elif test "$need_locks" = warn; then
1307ab47cfaaSmrg      if test -f "$lockfile"; then
13081473d951Smrg	$ECHO "\
1309ab47cfaaSmrg*** ERROR, $lockfile exists and contains:
1310ab47cfaaSmrg`cat $lockfile 2>/dev/null`
1311ab47cfaaSmrg
1312ab47cfaaSmrgThis indicates that another process is trying to use the same
1313ab47cfaaSmrgtemporary object file, and libtool could not work around it because
1314ab47cfaaSmrgyour compiler does not support \`-c' and \`-o' together.  If you
1315ab47cfaaSmrgrepeat this compilation, it may succeed, by chance, but you had better
1316ab47cfaaSmrgavoid parallel builds (make -j) in this platform, or get a better
1317ab47cfaaSmrgcompiler."
1318ab47cfaaSmrg
13191473d951Smrg	$opt_dry_run || $RM $removelist
1320ab47cfaaSmrg	exit $EXIT_FAILURE
1321ab47cfaaSmrg      fi
13221473d951Smrg      removelist="$removelist $output_obj"
13231473d951Smrg      $ECHO "$srcfile" > "$lockfile"
1324ab47cfaaSmrg    fi
1325ab47cfaaSmrg
13261473d951Smrg    $opt_dry_run || $RM $removelist
13271473d951Smrg    removelist="$removelist $lockfile"
13281473d951Smrg    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
13291473d951Smrg
1330ab47cfaaSmrg    if test -n "$fix_srcfile_path"; then
1331ab47cfaaSmrg      eval srcfile=\"$fix_srcfile_path\"
1332ab47cfaaSmrg    fi
13331473d951Smrg    func_quote_for_eval "$srcfile"
13341473d951Smrg    qsrcfile=$func_quote_for_eval_result
1335ab47cfaaSmrg
1336ab47cfaaSmrg    # Only build a PIC object if we are building libtool libraries.
1337ab47cfaaSmrg    if test "$build_libtool_libs" = yes; then
1338ab47cfaaSmrg      # Without this assignment, base_compile gets emptied.
1339ab47cfaaSmrg      fbsd_hideous_sh_bug=$base_compile
1340ab47cfaaSmrg
1341ab47cfaaSmrg      if test "$pic_mode" != no; then
1342ab47cfaaSmrg	command="$base_compile $qsrcfile $pic_flag"
1343ab47cfaaSmrg      else
1344ab47cfaaSmrg	# Don't build PIC code
1345ab47cfaaSmrg	command="$base_compile $qsrcfile"
1346ab47cfaaSmrg      fi
1347ab47cfaaSmrg
13481473d951Smrg      func_mkdir_p "$xdir$objdir"
1349ab47cfaaSmrg
1350ab47cfaaSmrg      if test -z "$output_obj"; then
1351ab47cfaaSmrg	# Place PIC objects in $objdir
1352ab47cfaaSmrg	command="$command -o $lobj"
1353ab47cfaaSmrg      fi
1354ab47cfaaSmrg
13551473d951Smrg      func_show_eval_locale "$command"	\
13561473d951Smrg          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
1357ab47cfaaSmrg
1358ab47cfaaSmrg      if test "$need_locks" = warn &&
1359ab47cfaaSmrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
13601473d951Smrg	$ECHO "\
1361ab47cfaaSmrg*** ERROR, $lockfile contains:
1362ab47cfaaSmrg`cat $lockfile 2>/dev/null`
1363ab47cfaaSmrg
1364ab47cfaaSmrgbut it should contain:
1365ab47cfaaSmrg$srcfile
1366ab47cfaaSmrg
1367ab47cfaaSmrgThis indicates that another process is trying to use the same
1368ab47cfaaSmrgtemporary object file, and libtool could not work around it because
1369ab47cfaaSmrgyour compiler does not support \`-c' and \`-o' together.  If you
1370ab47cfaaSmrgrepeat this compilation, it may succeed, by chance, but you had better
1371ab47cfaaSmrgavoid parallel builds (make -j) in this platform, or get a better
1372ab47cfaaSmrgcompiler."
1373ab47cfaaSmrg
13741473d951Smrg	$opt_dry_run || $RM $removelist
1375ab47cfaaSmrg	exit $EXIT_FAILURE
1376ab47cfaaSmrg      fi
1377ab47cfaaSmrg
1378ab47cfaaSmrg      # Just move the object if needed, then go on to compile the next one
1379ab47cfaaSmrg      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
13801473d951Smrg	func_show_eval '$MV "$output_obj" "$lobj"' \
13811473d951Smrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
1382ab47cfaaSmrg      fi
1383ab47cfaaSmrg
1384ab47cfaaSmrg      # Allow error messages only from the first compilation.
1385ab47cfaaSmrg      if test "$suppress_opt" = yes; then
13861473d951Smrg	suppress_output=' >/dev/null 2>&1'
1387ab47cfaaSmrg      fi
1388ab47cfaaSmrg    fi
1389ab47cfaaSmrg
1390ab47cfaaSmrg    # Only build a position-dependent object if we build old libraries.
1391ab47cfaaSmrg    if test "$build_old_libs" = yes; then
1392ab47cfaaSmrg      if test "$pic_mode" != yes; then
1393ab47cfaaSmrg	# Don't build PIC code
13941473d951Smrg	command="$base_compile $qsrcfile$pie_flag"
1395ab47cfaaSmrg      else
1396ab47cfaaSmrg	command="$base_compile $qsrcfile $pic_flag"
1397ab47cfaaSmrg      fi
1398ab47cfaaSmrg      if test "$compiler_c_o" = yes; then
1399ab47cfaaSmrg	command="$command -o $obj"
1400ab47cfaaSmrg      fi
1401ab47cfaaSmrg
1402ab47cfaaSmrg      # Suppress compiler output if we already did a PIC compilation.
1403ab47cfaaSmrg      command="$command$suppress_output"
14041473d951Smrg      func_show_eval_locale "$command" \
14051473d951Smrg        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
1406ab47cfaaSmrg
1407ab47cfaaSmrg      if test "$need_locks" = warn &&
1408ab47cfaaSmrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
14091473d951Smrg	$ECHO "\
1410ab47cfaaSmrg*** ERROR, $lockfile contains:
1411ab47cfaaSmrg`cat $lockfile 2>/dev/null`
1412ab47cfaaSmrg
1413ab47cfaaSmrgbut it should contain:
1414ab47cfaaSmrg$srcfile
1415ab47cfaaSmrg
1416ab47cfaaSmrgThis indicates that another process is trying to use the same
1417ab47cfaaSmrgtemporary object file, and libtool could not work around it because
1418ab47cfaaSmrgyour compiler does not support \`-c' and \`-o' together.  If you
1419ab47cfaaSmrgrepeat this compilation, it may succeed, by chance, but you had better
1420ab47cfaaSmrgavoid parallel builds (make -j) in this platform, or get a better
1421ab47cfaaSmrgcompiler."
1422ab47cfaaSmrg
14231473d951Smrg	$opt_dry_run || $RM $removelist
1424ab47cfaaSmrg	exit $EXIT_FAILURE
1425ab47cfaaSmrg      fi
1426ab47cfaaSmrg
1427ab47cfaaSmrg      # Just move the object if needed
1428ab47cfaaSmrg      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
14291473d951Smrg	func_show_eval '$MV "$output_obj" "$obj"' \
14301473d951Smrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
1431ab47cfaaSmrg      fi
1432ab47cfaaSmrg    fi
1433ab47cfaaSmrg
14341473d951Smrg    $opt_dry_run || {
14351473d951Smrg      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
1436ab47cfaaSmrg
14371473d951Smrg      # Unlock the critical section if it was locked
14381473d951Smrg      if test "$need_locks" != no; then
14391473d951Smrg	removelist=$lockfile
14401473d951Smrg        $RM "$lockfile"
14411473d951Smrg      fi
14421473d951Smrg    }
1443ab47cfaaSmrg
1444ab47cfaaSmrg    exit $EXIT_SUCCESS
14451473d951Smrg}
1446ab47cfaaSmrg
14471473d951Smrg$opt_help || {
14481473d951Smrgtest "$mode" = compile && func_mode_compile ${1+"$@"}
14491473d951Smrg}
1450ab47cfaaSmrg
14511473d951Smrgfunc_mode_help ()
14521473d951Smrg{
14531473d951Smrg    # We need to display help for each of the modes.
14541473d951Smrg    case $mode in
14551473d951Smrg      "")
14561473d951Smrg        # Generic help is extracted from the usage comments
14571473d951Smrg        # at the start of this file.
14581473d951Smrg        func_help
14591473d951Smrg        ;;
1460ab47cfaaSmrg
14611473d951Smrg      clean)
14621473d951Smrg        $ECHO \
14631473d951Smrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
1464ab47cfaaSmrg
14651473d951SmrgRemove files from the build directory.
1466ab47cfaaSmrg
14671473d951SmrgRM is the name of the program to use to delete files associated with each FILE
14681473d951Smrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
14691473d951Smrgto RM.
1470ab47cfaaSmrg
14711473d951SmrgIf FILE is a libtool library, object or program, all the files associated
14721473d951Smrgwith it are deleted. Otherwise, only FILE itself is deleted using RM."
14731473d951Smrg        ;;
1474ab47cfaaSmrg
14751473d951Smrg      compile)
14761473d951Smrg      $ECHO \
14771473d951Smrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
1478ab47cfaaSmrg
14791473d951SmrgCompile a source file into a libtool library object.
1480ab47cfaaSmrg
14811473d951SmrgThis mode accepts the following additional options:
1482ab47cfaaSmrg
14831473d951Smrg  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
14841473d951Smrg  -no-suppress      do not suppress compiler output for multiple passes
14851473d951Smrg  -prefer-pic       try to building PIC objects only
14861473d951Smrg  -prefer-non-pic   try to building non-PIC objects only
14871473d951Smrg  -shared           do not build a \`.o' file suitable for static linking
14881473d951Smrg  -static           only build a \`.o' file suitable for static linking
1489ab47cfaaSmrg
14901473d951SmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
14911473d951Smrgfrom the given SOURCEFILE.
1492ab47cfaaSmrg
14931473d951SmrgThe output file name is determined by removing the directory component from
14941473d951SmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the
14951473d951Smrglibrary object suffix, \`.lo'."
14961473d951Smrg        ;;
1497ab47cfaaSmrg
14981473d951Smrg      execute)
14991473d951Smrg        $ECHO \
15001473d951Smrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
1501ab47cfaaSmrg
15021473d951SmrgAutomatically set library path, then run a program.
1503ab47cfaaSmrg
15041473d951SmrgThis mode accepts the following additional options:
1505ab47cfaaSmrg
15061473d951Smrg  -dlopen FILE      add the directory containing FILE to the library path
1507ab47cfaaSmrg
15081473d951SmrgThis mode sets the library path environment variable according to \`-dlopen'
15091473d951Smrgflags.
1510ab47cfaaSmrg
15111473d951SmrgIf any of the ARGS are libtool executable wrappers, then they are translated
15121473d951Smrginto their corresponding uninstalled binary, and any of their required library
15131473d951Smrgdirectories are added to the library path.
1514ab47cfaaSmrg
15151473d951SmrgThen, COMMAND is executed, with ARGS as arguments."
15161473d951Smrg        ;;
1517ab47cfaaSmrg
15181473d951Smrg      finish)
15191473d951Smrg        $ECHO \
15201473d951Smrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
1521ab47cfaaSmrg
15221473d951SmrgComplete the installation of libtool libraries.
1523ab47cfaaSmrg
15241473d951SmrgEach LIBDIR is a directory that contains libtool libraries.
1525ab47cfaaSmrg
15261473d951SmrgThe commands that this mode executes may require superuser privileges.  Use
15271473d951Smrgthe \`--dry-run' option if you just want to see what would be executed."
15281473d951Smrg        ;;
1529ab47cfaaSmrg
15301473d951Smrg      install)
15311473d951Smrg        $ECHO \
15321473d951Smrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
1533ab47cfaaSmrg
15341473d951SmrgInstall executables or libraries.
1535ab47cfaaSmrg
15361473d951SmrgINSTALL-COMMAND is the installation command.  The first component should be
15371473d951Smrgeither the \`install' or \`cp' program.
1538ab47cfaaSmrg
15391473d951SmrgThe following components of INSTALL-COMMAND are treated specially:
1540ab47cfaaSmrg
15411473d951Smrg  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
1542ab47cfaaSmrg
15431473d951SmrgThe rest of the components are interpreted as arguments to that command (only
15441473d951SmrgBSD-compatible install options are recognized)."
15451473d951Smrg        ;;
1546ab47cfaaSmrg
15471473d951Smrg      link)
15481473d951Smrg        $ECHO \
15491473d951Smrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
1550ab47cfaaSmrg
15511473d951SmrgLink object files or libraries together to form another library, or to
15521473d951Smrgcreate an executable program.
1553ab47cfaaSmrg
15541473d951SmrgLINK-COMMAND is a command using the C compiler that you would use to create
15551473d951Smrga program from several object files.
1556ab47cfaaSmrg
15571473d951SmrgThe following components of LINK-COMMAND are treated specially:
1558ab47cfaaSmrg
15591473d951Smrg  -all-static       do not do any dynamic linking at all
15601473d951Smrg  -avoid-version    do not add a version suffix if possible
15611473d951Smrg  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
15621473d951Smrg  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
15631473d951Smrg  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
15641473d951Smrg  -export-symbols SYMFILE
15651473d951Smrg                    try to export only the symbols listed in SYMFILE
15661473d951Smrg  -export-symbols-regex REGEX
15671473d951Smrg                    try to export only the symbols matching REGEX
15681473d951Smrg  -LLIBDIR          search LIBDIR for required installed libraries
15691473d951Smrg  -lNAME            OUTPUT-FILE requires the installed library libNAME
15701473d951Smrg  -module           build a library that can dlopened
15711473d951Smrg  -no-fast-install  disable the fast-install mode
15721473d951Smrg  -no-install       link a not-installable executable
15731473d951Smrg  -no-undefined     declare that a library does not refer to external symbols
15741473d951Smrg  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
15751473d951Smrg  -objectlist FILE  Use a list of object files found in FILE to specify objects
15761473d951Smrg  -precious-files-regex REGEX
15771473d951Smrg                    don't remove output files matching REGEX
15781473d951Smrg  -release RELEASE  specify package release information
15791473d951Smrg  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
15801473d951Smrg  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
15811473d951Smrg  -shared           only do dynamic linking of libtool libraries
15821473d951Smrg  -shrext SUFFIX    override the standard shared library file extension
15831473d951Smrg  -static           do not do any dynamic linking of uninstalled libtool libraries
15841473d951Smrg  -static-libtool-libs
15851473d951Smrg                    do not do any dynamic linking of libtool libraries
15861473d951Smrg  -version-info CURRENT[:REVISION[:AGE]]
15871473d951Smrg                    specify library version info [each variable defaults to 0]
15881473d951Smrg  -weak LIBNAME     declare that the target provides the LIBNAME interface
1589ab47cfaaSmrg
15901473d951SmrgAll other options (arguments beginning with \`-') are ignored.
1591ab47cfaaSmrg
15921473d951SmrgEvery other argument is treated as a filename.  Files ending in \`.la' are
15931473d951Smrgtreated as uninstalled libtool libraries, other files are standard or library
15941473d951Smrgobject files.
1595ab47cfaaSmrg
15961473d951SmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
15971473d951Smrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is
15981473d951Smrgrequired, except when creating a convenience library.
1599ab47cfaaSmrg
16001473d951SmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
16011473d951Smrgusing \`ar' and \`ranlib', or on Windows using \`lib'.
1602ab47cfaaSmrg
16031473d951SmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
16041473d951Smrgis created, otherwise an executable program is created."
1605ab47cfaaSmrg        ;;
1606ab47cfaaSmrg
16071473d951Smrg      uninstall)
16081473d951Smrg        $ECHO \
16091473d951Smrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
1610ab47cfaaSmrg
16111473d951SmrgRemove libraries from an installation directory.
1612ab47cfaaSmrg
16131473d951SmrgRM is the name of the program to use to delete files associated with each FILE
16141473d951Smrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
16151473d951Smrgto RM.
1616ab47cfaaSmrg
16171473d951SmrgIf FILE is a libtool library, all the files associated with it are deleted.
16181473d951SmrgOtherwise, only FILE itself is deleted using RM."
16191473d951Smrg        ;;
1620ab47cfaaSmrg
16211473d951Smrg      *)
16221473d951Smrg        func_fatal_help "invalid operation mode \`$mode'"
16231473d951Smrg        ;;
16241473d951Smrg    esac
1625ab47cfaaSmrg
16261473d951Smrg    $ECHO
16271473d951Smrg    $ECHO "Try \`$progname --help' for more information about other modes."
1628ab47cfaaSmrg
16291473d951Smrg    exit $?
16301473d951Smrg}
1631ab47cfaaSmrg
16321473d951Smrg  # Now that we've collected a possible --mode arg, show help if necessary
16331473d951Smrg  $opt_help && func_mode_help
1634ab47cfaaSmrg
1635ab47cfaaSmrg
16361473d951Smrg# func_mode_execute arg...
16371473d951Smrgfunc_mode_execute ()
16381473d951Smrg{
16391473d951Smrg    $opt_debug
16401473d951Smrg    # The first argument is the command name.
16411473d951Smrg    cmd="$nonopt"
16421473d951Smrg    test -z "$cmd" && \
16431473d951Smrg      func_fatal_help "you must specify a COMMAND"
1644ab47cfaaSmrg
16451473d951Smrg    # Handle -dlopen flags immediately.
16461473d951Smrg    for file in $execute_dlfiles; do
16471473d951Smrg      test -f "$file" \
16481473d951Smrg	|| func_fatal_help "\`$file' is not a file"
1649ab47cfaaSmrg
16501473d951Smrg      dir=
16511473d951Smrg      case $file in
16521473d951Smrg      *.la)
16531473d951Smrg	# Check to see that this really is a libtool archive.
16541473d951Smrg	func_lalib_unsafe_p "$file" \
16551473d951Smrg	  || func_fatal_help "\`$lib' is not a valid libtool archive"
1656ab47cfaaSmrg
16571473d951Smrg	# Read the libtool library.
16581473d951Smrg	dlname=
16591473d951Smrg	library_names=
16601473d951Smrg	func_source "$file"
1661ab47cfaaSmrg
16621473d951Smrg	# Skip this library if it cannot be dlopened.
16631473d951Smrg	if test -z "$dlname"; then
16641473d951Smrg	  # Warn if it was a shared library.
16651473d951Smrg	  test -n "$library_names" && \
16661473d951Smrg	    func_warning "\`$file' was not linked with \`-export-dynamic'"
16671473d951Smrg	  continue
16681473d951Smrg	fi
1669ab47cfaaSmrg
16701473d951Smrg	func_dirname "$file" "" "."
16711473d951Smrg	dir="$func_dirname_result"
1672ab47cfaaSmrg
16731473d951Smrg	if test -f "$dir/$objdir/$dlname"; then
16741473d951Smrg	  dir="$dir/$objdir"
16751473d951Smrg	else
16761473d951Smrg	  if test ! -f "$dir/$dlname"; then
16771473d951Smrg	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
16781473d951Smrg	  fi
16791473d951Smrg	fi
1680ab47cfaaSmrg	;;
1681ab47cfaaSmrg
16821473d951Smrg      *.lo)
16831473d951Smrg	# Just add the directory containing the .lo file.
16841473d951Smrg	func_dirname "$file" "" "."
16851473d951Smrg	dir="$func_dirname_result"
1686ab47cfaaSmrg	;;
1687ab47cfaaSmrg
16881473d951Smrg      *)
16891473d951Smrg	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
1690ab47cfaaSmrg	continue
1691ab47cfaaSmrg	;;
16921473d951Smrg      esac
1693ab47cfaaSmrg
16941473d951Smrg      # Get the absolute pathname.
16951473d951Smrg      absdir=`cd "$dir" && pwd`
16961473d951Smrg      test -n "$absdir" && dir="$absdir"
1697ab47cfaaSmrg
16981473d951Smrg      # Now add the directory to shlibpath_var.
16991473d951Smrg      if eval "test -z \"\$$shlibpath_var\""; then
17001473d951Smrg	eval "$shlibpath_var=\"\$dir\""
17011473d951Smrg      else
17021473d951Smrg	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
17031473d951Smrg      fi
17041473d951Smrg    done
1705ab47cfaaSmrg
17061473d951Smrg    # This variable tells wrapper scripts just to set shlibpath_var
17071473d951Smrg    # rather than running their programs.
17081473d951Smrg    libtool_execute_magic="$magic"
1709ab47cfaaSmrg
17101473d951Smrg    # Check if any of the arguments is a wrapper script.
17111473d951Smrg    args=
17121473d951Smrg    for file
17131473d951Smrg    do
17141473d951Smrg      case $file in
17151473d951Smrg      -*) ;;
17161473d951Smrg      *)
17171473d951Smrg	# Do a test to see if this is really a libtool program.
17181473d951Smrg	if func_ltwrapper_script_p "$file"; then
17191473d951Smrg	  func_source "$file"
17201473d951Smrg	  # Transform arg to wrapped name.
17211473d951Smrg	  file="$progdir/$program"
17221473d951Smrg	elif func_ltwrapper_executable_p "$file"; then
17231473d951Smrg	  func_ltwrapper_scriptname "$file"
17241473d951Smrg	  func_source "$func_ltwrapper_scriptname_result"
17251473d951Smrg	  # Transform arg to wrapped name.
17261473d951Smrg	  file="$progdir/$program"
17271473d951Smrg	fi
17281473d951Smrg	;;
17291473d951Smrg      esac
17301473d951Smrg      # Quote arguments (to preserve shell metacharacters).
17311473d951Smrg      func_quote_for_eval "$file"
17321473d951Smrg      args="$args $func_quote_for_eval_result"
17331473d951Smrg    done
1734ab47cfaaSmrg
17351473d951Smrg    if test "X$opt_dry_run" = Xfalse; then
17361473d951Smrg      if test -n "$shlibpath_var"; then
17371473d951Smrg	# Export the shlibpath_var.
17381473d951Smrg	eval "export $shlibpath_var"
17391473d951Smrg      fi
1740ab47cfaaSmrg
17411473d951Smrg      # Restore saved environment variables
17421473d951Smrg      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
17431473d951Smrg      do
17441473d951Smrg	eval "if test \"\${save_$lt_var+set}\" = set; then
17451473d951Smrg                $lt_var=\$save_$lt_var; export $lt_var
1746ab47cfaaSmrg	      else
17471473d951Smrg		$lt_unset $lt_var
17481473d951Smrg	      fi"
17491473d951Smrg      done
1750ab47cfaaSmrg
17511473d951Smrg      # Now prepare to actually exec the command.
17521473d951Smrg      exec_cmd="\$cmd$args"
17531473d951Smrg    else
17541473d951Smrg      # Display what would be done.
17551473d951Smrg      if test -n "$shlibpath_var"; then
17561473d951Smrg	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
17571473d951Smrg	$ECHO "export $shlibpath_var"
17581473d951Smrg      fi
17591473d951Smrg      $ECHO "$cmd$args"
17601473d951Smrg      exit $EXIT_SUCCESS
17611473d951Smrg    fi
17621473d951Smrg}
1763ab47cfaaSmrg
17641473d951Smrgtest "$mode" = execute && func_mode_execute ${1+"$@"}
1765ab47cfaaSmrg
1766ab47cfaaSmrg
17671473d951Smrg# func_mode_finish arg...
17681473d951Smrgfunc_mode_finish ()
17691473d951Smrg{
17701473d951Smrg    $opt_debug
17711473d951Smrg    libdirs="$nonopt"
17721473d951Smrg    admincmds=
1773ab47cfaaSmrg
17741473d951Smrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
17751473d951Smrg      for dir
17761473d951Smrg      do
17771473d951Smrg	libdirs="$libdirs $dir"
17781473d951Smrg      done
1779ab47cfaaSmrg
17801473d951Smrg      for libdir in $libdirs; do
17811473d951Smrg	if test -n "$finish_cmds"; then
17821473d951Smrg	  # Do each command in the finish commands.
17831473d951Smrg	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
17841473d951Smrg'"$cmd"'"'
1785ab47cfaaSmrg	fi
17861473d951Smrg	if test -n "$finish_eval"; then
17871473d951Smrg	  # Do the single finish_eval.
17881473d951Smrg	  eval cmds=\"$finish_eval\"
17891473d951Smrg	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
17901473d951Smrg       $cmds"
17911473d951Smrg	fi
17921473d951Smrg      done
17931473d951Smrg    fi
1794ab47cfaaSmrg
17951473d951Smrg    # Exit here if they wanted silent mode.
17961473d951Smrg    $opt_silent && exit $EXIT_SUCCESS
1797ab47cfaaSmrg
17981473d951Smrg    $ECHO "X----------------------------------------------------------------------" | $Xsed
17991473d951Smrg    $ECHO "Libraries have been installed in:"
18001473d951Smrg    for libdir in $libdirs; do
18011473d951Smrg      $ECHO "   $libdir"
18021473d951Smrg    done
18031473d951Smrg    $ECHO
18041473d951Smrg    $ECHO "If you ever happen to want to link against installed libraries"
18051473d951Smrg    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
18061473d951Smrg    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
18071473d951Smrg    $ECHO "flag during linking and do at least one of the following:"
18081473d951Smrg    if test -n "$shlibpath_var"; then
18091473d951Smrg      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
18101473d951Smrg      $ECHO "     during execution"
18111473d951Smrg    fi
18121473d951Smrg    if test -n "$runpath_var"; then
18131473d951Smrg      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
18141473d951Smrg      $ECHO "     during linking"
18151473d951Smrg    fi
18161473d951Smrg    if test -n "$hardcode_libdir_flag_spec"; then
18171473d951Smrg      libdir=LIBDIR
18181473d951Smrg      eval flag=\"$hardcode_libdir_flag_spec\"
1819ab47cfaaSmrg
18201473d951Smrg      $ECHO "   - use the \`$flag' linker flag"
18211473d951Smrg    fi
18221473d951Smrg    if test -n "$admincmds"; then
18231473d951Smrg      $ECHO "   - have your system administrator run these commands:$admincmds"
18241473d951Smrg    fi
18251473d951Smrg    if test -f /etc/ld.so.conf; then
18261473d951Smrg      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
18271473d951Smrg    fi
18281473d951Smrg    $ECHO
18291473d951Smrg
18301473d951Smrg    $ECHO "See any operating system documentation about shared libraries for"
18311473d951Smrg    case $host in
18321473d951Smrg      solaris2.[6789]|solaris2.1[0-9])
18331473d951Smrg        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
18341473d951Smrg	$ECHO "pages."
18351473d951Smrg	;;
18361473d951Smrg      *)
18371473d951Smrg        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
18381473d951Smrg        ;;
18391473d951Smrg    esac
18401473d951Smrg    $ECHO "X----------------------------------------------------------------------" | $Xsed
18411473d951Smrg    exit $EXIT_SUCCESS
18421473d951Smrg}
18431473d951Smrg
18441473d951Smrgtest "$mode" = finish && func_mode_finish ${1+"$@"}
18451473d951Smrg
18461473d951Smrg
18471473d951Smrg# func_mode_install arg...
18481473d951Smrgfunc_mode_install ()
18491473d951Smrg{
18501473d951Smrg    $opt_debug
18511473d951Smrg    # There may be an optional sh(1) argument at the beginning of
18521473d951Smrg    # install_prog (especially on Windows NT).
18531473d951Smrg    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
18541473d951Smrg       # Allow the use of GNU shtool's install command.
18551473d951Smrg       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
18561473d951Smrg      # Aesthetically quote it.
18571473d951Smrg      func_quote_for_eval "$nonopt"
18581473d951Smrg      install_prog="$func_quote_for_eval_result "
18591473d951Smrg      arg=$1
18601473d951Smrg      shift
18611473d951Smrg    else
18621473d951Smrg      install_prog=
18631473d951Smrg      arg=$nonopt
18641473d951Smrg    fi
18651473d951Smrg
18661473d951Smrg    # The real first argument should be the name of the installation program.
18671473d951Smrg    # Aesthetically quote it.
18681473d951Smrg    func_quote_for_eval "$arg"
18691473d951Smrg    install_prog="$install_prog$func_quote_for_eval_result"
18701473d951Smrg
18711473d951Smrg    # We need to accept at least all the BSD install flags.
18721473d951Smrg    dest=
18731473d951Smrg    files=
18741473d951Smrg    opts=
18751473d951Smrg    prev=
18761473d951Smrg    install_type=
18771473d951Smrg    isdir=no
18781473d951Smrg    stripme=
18791473d951Smrg    for arg
18801473d951Smrg    do
18811473d951Smrg      if test -n "$dest"; then
18821473d951Smrg	files="$files $dest"
18831473d951Smrg	dest=$arg
18841473d951Smrg	continue
18851473d951Smrg      fi
18861473d951Smrg
18871473d951Smrg      case $arg in
18881473d951Smrg      -d) isdir=yes ;;
18891473d951Smrg      -f)
18901473d951Smrg	case " $install_prog " in
18911473d951Smrg	*[\\\ /]cp\ *) ;;
18921473d951Smrg	*) prev=$arg ;;
18931473d951Smrg	esac
18941473d951Smrg	;;
18951473d951Smrg      -g | -m | -o)
18961473d951Smrg	prev=$arg
18971473d951Smrg	;;
18981473d951Smrg      -s)
18991473d951Smrg	stripme=" -s"
19001473d951Smrg	continue
19011473d951Smrg	;;
19021473d951Smrg      -*)
19031473d951Smrg	;;
19041473d951Smrg      *)
19051473d951Smrg	# If the previous option needed an argument, then skip it.
19061473d951Smrg	if test -n "$prev"; then
1907ab47cfaaSmrg	  prev=
1908ab47cfaaSmrg	else
19091473d951Smrg	  dest=$arg
19101473d951Smrg	  continue
1911ab47cfaaSmrg	fi
1912ab47cfaaSmrg	;;
19131473d951Smrg      esac
1914ab47cfaaSmrg
19151473d951Smrg      # Aesthetically quote the argument.
19161473d951Smrg      func_quote_for_eval "$arg"
19171473d951Smrg      install_prog="$install_prog $func_quote_for_eval_result"
19181473d951Smrg    done
1919ab47cfaaSmrg
19201473d951Smrg    test -z "$install_prog" && \
19211473d951Smrg      func_fatal_help "you must specify an install program"
1922ab47cfaaSmrg
19231473d951Smrg    test -n "$prev" && \
19241473d951Smrg      func_fatal_help "the \`$prev' option requires an argument"
1925ab47cfaaSmrg
19261473d951Smrg    if test -z "$files"; then
19271473d951Smrg      if test -z "$dest"; then
19281473d951Smrg	func_fatal_help "no file or destination specified"
19291473d951Smrg      else
19301473d951Smrg	func_fatal_help "you must specify a destination"
19311473d951Smrg      fi
1932ab47cfaaSmrg    fi
1933ab47cfaaSmrg
19341473d951Smrg    # Strip any trailing slash from the destination.
19351473d951Smrg    func_stripname '' '/' "$dest"
19361473d951Smrg    dest=$func_stripname_result
1937ab47cfaaSmrg
19381473d951Smrg    # Check to see that the destination is a directory.
19391473d951Smrg    test -d "$dest" && isdir=yes
19401473d951Smrg    if test "$isdir" = yes; then
19411473d951Smrg      destdir="$dest"
19421473d951Smrg      destname=
1943ab47cfaaSmrg    else
19441473d951Smrg      func_dirname_and_basename "$dest" "" "."
19451473d951Smrg      destdir="$func_dirname_result"
19461473d951Smrg      destname="$func_basename_result"
1947ab47cfaaSmrg
19481473d951Smrg      # Not a directory, so check to see that there is only one file specified.
19491473d951Smrg      set dummy $files; shift
19501473d951Smrg      test "$#" -gt 1 && \
19511473d951Smrg	func_fatal_help "\`$dest' is not a directory"
1952ab47cfaaSmrg    fi
19531473d951Smrg    case $destdir in
19541473d951Smrg    [\\/]* | [A-Za-z]:[\\/]*) ;;
1955ab47cfaaSmrg    *)
19561473d951Smrg      for file in $files; do
19571473d951Smrg	case $file in
19581473d951Smrg	*.lo) ;;
19591473d951Smrg	*)
19601473d951Smrg	  func_fatal_help "\`$destdir' must be an absolute directory name"
19611473d951Smrg	  ;;
19621473d951Smrg	esac
19631473d951Smrg      done
1964ab47cfaaSmrg      ;;
1965ab47cfaaSmrg    esac
1966ab47cfaaSmrg
19671473d951Smrg    # This variable tells wrapper scripts just to set variables rather
19681473d951Smrg    # than running their programs.
19691473d951Smrg    libtool_install_magic="$magic"
1970ab47cfaaSmrg
19711473d951Smrg    staticlibs=
19721473d951Smrg    future_libdirs=
19731473d951Smrg    current_libdirs=
19741473d951Smrg    for file in $files; do
1975ab47cfaaSmrg
19761473d951Smrg      # Do each installation.
19771473d951Smrg      case $file in
19781473d951Smrg      *.$libext)
19791473d951Smrg	# Do the static libraries later.
19801473d951Smrg	staticlibs="$staticlibs $file"
19811473d951Smrg	;;
19821473d951Smrg
19831473d951Smrg      *.la)
19841473d951Smrg	# Check to see that this really is a libtool archive.
19851473d951Smrg	func_lalib_unsafe_p "$file" \
19861473d951Smrg	  || func_fatal_help "\`$file' is not a valid libtool archive"
19871473d951Smrg
19881473d951Smrg	library_names=
19891473d951Smrg	old_library=
19901473d951Smrg	relink_command=
19911473d951Smrg	func_source "$file"
19921473d951Smrg
19931473d951Smrg	# Add the libdir to current_libdirs if it is the destination.
19941473d951Smrg	if test "X$destdir" = "X$libdir"; then
19951473d951Smrg	  case "$current_libdirs " in
19961473d951Smrg	  *" $libdir "*) ;;
19971473d951Smrg	  *) current_libdirs="$current_libdirs $libdir" ;;
1998ab47cfaaSmrg	  esac
19991473d951Smrg	else
20001473d951Smrg	  # Note the libdir as a future libdir.
20011473d951Smrg	  case "$future_libdirs " in
20021473d951Smrg	  *" $libdir "*) ;;
20031473d951Smrg	  *) future_libdirs="$future_libdirs $libdir" ;;
20041473d951Smrg	  esac
20051473d951Smrg	fi
2006ab47cfaaSmrg
20071473d951Smrg	func_dirname "$file" "/" ""
20081473d951Smrg	dir="$func_dirname_result"
20091473d951Smrg	dir="$dir$objdir"
20101473d951Smrg
20111473d951Smrg	if test -n "$relink_command"; then
20121473d951Smrg	  # Determine the prefix the user has applied to our future dir.
20131473d951Smrg	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
20141473d951Smrg
20151473d951Smrg	  # Don't allow the user to place us outside of our expected
20161473d951Smrg	  # location b/c this prevents finding dependent libraries that
20171473d951Smrg	  # are installed to the same prefix.
20181473d951Smrg	  # At present, this check doesn't affect windows .dll's that
20191473d951Smrg	  # are installed into $libdir/../bin (currently, that works fine)
20201473d951Smrg	  # but it's something to keep an eye on.
20211473d951Smrg	  test "$inst_prefix_dir" = "$destdir" && \
20221473d951Smrg	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
20231473d951Smrg
20241473d951Smrg	  if test -n "$inst_prefix_dir"; then
20251473d951Smrg	    # Stick the inst_prefix_dir data into the link command.
20261473d951Smrg	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
20271473d951Smrg	  else
20281473d951Smrg	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
20291473d951Smrg	  fi
20301473d951Smrg
20311473d951Smrg	  func_warning "relinking \`$file'"
20321473d951Smrg	  func_show_eval "$relink_command" \
20331473d951Smrg	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
20341473d951Smrg	fi
20351473d951Smrg
20361473d951Smrg	# See the names of the shared library.
20371473d951Smrg	set dummy $library_names; shift
20381473d951Smrg	if test -n "$1"; then
20391473d951Smrg	  realname="$1"
20401473d951Smrg	  shift
20411473d951Smrg
20421473d951Smrg	  srcname="$realname"
20431473d951Smrg	  test -n "$relink_command" && srcname="$realname"T
20441473d951Smrg
20451473d951Smrg	  # Install the shared library and build the symlinks.
20461473d951Smrg	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
20471473d951Smrg	      'exit $?'
20481473d951Smrg	  tstripme="$stripme"
20491473d951Smrg	  case $host_os in
20501473d951Smrg	  cygwin* | mingw* | pw32* | cegcc*)
20511473d951Smrg	    case $realname in
20521473d951Smrg	    *.dll.a)
20531473d951Smrg	      tstripme=""
20541473d951Smrg	      ;;
20551473d951Smrg	    esac
2056ab47cfaaSmrg	    ;;
2057ab47cfaaSmrg	  esac
20581473d951Smrg	  if test -n "$tstripme" && test -n "$striplib"; then
20591473d951Smrg	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
2060ab47cfaaSmrg	  fi
20611473d951Smrg
20621473d951Smrg	  if test "$#" -gt 0; then
20631473d951Smrg	    # Delete the old symlinks, and create new ones.
20641473d951Smrg	    # Try `ln -sf' first, because the `ln' binary might depend on
20651473d951Smrg	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
20661473d951Smrg	    # so we also need to try rm && ln -s.
20671473d951Smrg	    for linkname
20681473d951Smrg	    do
20691473d951Smrg	      test "$linkname" != "$realname" \
20701473d951Smrg		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
2071ab47cfaaSmrg	    done
2072ab47cfaaSmrg	  fi
2073ab47cfaaSmrg
20741473d951Smrg	  # Do each command in the postinstall commands.
20751473d951Smrg	  lib="$destdir/$realname"
20761473d951Smrg	  func_execute_cmds "$postinstall_cmds" 'exit $?'
2077ab47cfaaSmrg	fi
2078ab47cfaaSmrg
20791473d951Smrg	# Install the pseudo-library for information purposes.
20801473d951Smrg	func_basename "$file"
20811473d951Smrg	name="$func_basename_result"
20821473d951Smrg	instname="$dir/$name"i
20831473d951Smrg	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
2084ab47cfaaSmrg
20851473d951Smrg	# Maybe install the static library, too.
20861473d951Smrg	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
20871473d951Smrg	;;
2088ab47cfaaSmrg
20891473d951Smrg      *.lo)
20901473d951Smrg	# Install (i.e. copy) a libtool object.
2091ab47cfaaSmrg
20921473d951Smrg	# Figure out destination file name, if it wasn't already specified.
20931473d951Smrg	if test -n "$destname"; then
20941473d951Smrg	  destfile="$destdir/$destname"
20951473d951Smrg	else
20961473d951Smrg	  func_basename "$file"
20971473d951Smrg	  destfile="$func_basename_result"
20981473d951Smrg	  destfile="$destdir/$destfile"
2099ab47cfaaSmrg	fi
2100ab47cfaaSmrg
21011473d951Smrg	# Deduce the name of the destination old-style object file.
21021473d951Smrg	case $destfile in
21031473d951Smrg	*.lo)
21041473d951Smrg	  func_lo2o "$destfile"
21051473d951Smrg	  staticdest=$func_lo2o_result
21061473d951Smrg	  ;;
21071473d951Smrg	*.$objext)
21081473d951Smrg	  staticdest="$destfile"
21091473d951Smrg	  destfile=
21101473d951Smrg	  ;;
21111473d951Smrg	*)
21121473d951Smrg	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
21131473d951Smrg	  ;;
21141473d951Smrg	esac
2115ab47cfaaSmrg
21161473d951Smrg	# Install the libtool object if requested.
21171473d951Smrg	test -n "$destfile" && \
21181473d951Smrg	  func_show_eval "$install_prog $file $destfile" 'exit $?'
2119ab47cfaaSmrg
21201473d951Smrg	# Install the old object if enabled.
21211473d951Smrg	if test "$build_old_libs" = yes; then
21221473d951Smrg	  # Deduce the name of the old-style object file.
21231473d951Smrg	  func_lo2o "$file"
21241473d951Smrg	  staticobj=$func_lo2o_result
21251473d951Smrg	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
2126ab47cfaaSmrg	fi
21271473d951Smrg	exit $EXIT_SUCCESS
21281473d951Smrg	;;
2129ab47cfaaSmrg
21301473d951Smrg      *)
21311473d951Smrg	# Figure out destination file name, if it wasn't already specified.
21321473d951Smrg	if test -n "$destname"; then
21331473d951Smrg	  destfile="$destdir/$destname"
21341473d951Smrg	else
21351473d951Smrg	  func_basename "$file"
21361473d951Smrg	  destfile="$func_basename_result"
21371473d951Smrg	  destfile="$destdir/$destfile"
21381473d951Smrg	fi
2139ab47cfaaSmrg
21401473d951Smrg	# If the file is missing, and there is a .exe on the end, strip it
21411473d951Smrg	# because it is most likely a libtool script we actually want to
21421473d951Smrg	# install
21431473d951Smrg	stripped_ext=""
21441473d951Smrg	case $file in
21451473d951Smrg	  *.exe)
21461473d951Smrg	    if test ! -f "$file"; then
21471473d951Smrg	      func_stripname '' '.exe' "$file"
21481473d951Smrg	      file=$func_stripname_result
21491473d951Smrg	      stripped_ext=".exe"
21501473d951Smrg	    fi
21511473d951Smrg	    ;;
21521473d951Smrg	esac
21531473d951Smrg
21541473d951Smrg	# Do a test to see if this is really a libtool program.
21551473d951Smrg	case $host in
21561473d951Smrg	*cygwin* | *mingw*)
21571473d951Smrg	    if func_ltwrapper_executable_p "$file"; then
21581473d951Smrg	      func_ltwrapper_scriptname "$file"
21591473d951Smrg	      wrapper=$func_ltwrapper_scriptname_result
21601473d951Smrg	    else
21611473d951Smrg	      func_stripname '' '.exe' "$file"
21621473d951Smrg	      wrapper=$func_stripname_result
21631473d951Smrg	    fi
21641473d951Smrg	    ;;
2165ab47cfaaSmrg	*)
21661473d951Smrg	    wrapper=$file
21671473d951Smrg	    ;;
21681473d951Smrg	esac
21691473d951Smrg	if func_ltwrapper_script_p "$wrapper"; then
21701473d951Smrg	  notinst_deplibs=
21711473d951Smrg	  relink_command=
21721473d951Smrg
21731473d951Smrg	  func_source "$wrapper"
21741473d951Smrg
21751473d951Smrg	  # Check the variables that should have been set.
21761473d951Smrg	  test -z "$generated_by_libtool_version" && \
21771473d951Smrg	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
21781473d951Smrg
21791473d951Smrg	  finalize=yes
21801473d951Smrg	  for lib in $notinst_deplibs; do
21811473d951Smrg	    # Check to see that each library is installed.
21821473d951Smrg	    libdir=
21831473d951Smrg	    if test -f "$lib"; then
21841473d951Smrg	      func_source "$lib"
21851473d951Smrg	    fi
21861473d951Smrg	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
21871473d951Smrg	    if test -n "$libdir" && test ! -f "$libfile"; then
21881473d951Smrg	      func_warning "\`$lib' has not been installed in \`$libdir'"
21891473d951Smrg	      finalize=no
21901473d951Smrg	    fi
21911473d951Smrg	  done
21921473d951Smrg
21931473d951Smrg	  relink_command=
21941473d951Smrg	  func_source "$wrapper"
21951473d951Smrg
21961473d951Smrg	  outputname=
21971473d951Smrg	  if test "$fast_install" = no && test -n "$relink_command"; then
21981473d951Smrg	    $opt_dry_run || {
21991473d951Smrg	      if test "$finalize" = yes; then
22001473d951Smrg	        tmpdir=`func_mktempdir`
22011473d951Smrg		func_basename "$file$stripped_ext"
22021473d951Smrg		file="$func_basename_result"
22031473d951Smrg	        outputname="$tmpdir/$file"
22041473d951Smrg	        # Replace the output file specification.
22051473d951Smrg	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
22061473d951Smrg
22071473d951Smrg	        $opt_silent || {
22081473d951Smrg	          func_quote_for_expand "$relink_command"
22091473d951Smrg		  eval "func_echo $func_quote_for_expand_result"
22101473d951Smrg	        }
22111473d951Smrg	        if eval "$relink_command"; then :
22121473d951Smrg	          else
22131473d951Smrg		  func_error "error: relink \`$file' with the above command before installing it"
22141473d951Smrg		  $opt_dry_run || ${RM}r "$tmpdir"
22151473d951Smrg		  continue
22161473d951Smrg	        fi
22171473d951Smrg	        file="$outputname"
22181473d951Smrg	      else
22191473d951Smrg	        func_warning "cannot relink \`$file'"
22201473d951Smrg	      fi
22211473d951Smrg	    }
22221473d951Smrg	  else
22231473d951Smrg	    # Install the binary that we compiled earlier.
22241473d951Smrg	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
2225ab47cfaaSmrg	  fi
22261473d951Smrg	fi
22271473d951Smrg
22281473d951Smrg	# remove .exe since cygwin /usr/bin/install will append another
22291473d951Smrg	# one anyway
22301473d951Smrg	case $install_prog,$host in
22311473d951Smrg	*/usr/bin/install*,*cygwin*)
22321473d951Smrg	  case $file:$destfile in
22331473d951Smrg	  *.exe:*.exe)
22341473d951Smrg	    # this is ok
22351473d951Smrg	    ;;
22361473d951Smrg	  *.exe:*)
22371473d951Smrg	    destfile=$destfile.exe
22381473d951Smrg	    ;;
22391473d951Smrg	  *:*.exe)
22401473d951Smrg	    func_stripname '' '.exe' "$destfile"
22411473d951Smrg	    destfile=$func_stripname_result
22421473d951Smrg	    ;;
22431473d951Smrg	  esac
2244ab47cfaaSmrg	  ;;
2245ab47cfaaSmrg	esac
22461473d951Smrg	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
22471473d951Smrg	$opt_dry_run || if test -n "$outputname"; then
22481473d951Smrg	  ${RM}r "$tmpdir"
22491473d951Smrg	fi
22501473d951Smrg	;;
22511473d951Smrg      esac
22521473d951Smrg    done
2253ab47cfaaSmrg
22541473d951Smrg    for file in $staticlibs; do
22551473d951Smrg      func_basename "$file"
22561473d951Smrg      name="$func_basename_result"
22571473d951Smrg
22581473d951Smrg      # Set up the ranlib parameters.
22591473d951Smrg      oldlib="$destdir/$name"
22601473d951Smrg
22611473d951Smrg      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
22621473d951Smrg
22631473d951Smrg      if test -n "$stripme" && test -n "$old_striplib"; then
22641473d951Smrg	func_show_eval "$old_striplib $oldlib" 'exit $?'
22651473d951Smrg      fi
22661473d951Smrg
22671473d951Smrg      # Do each command in the postinstall commands.
22681473d951Smrg      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
22691473d951Smrg    done
22701473d951Smrg
22711473d951Smrg    test -n "$future_libdirs" && \
22721473d951Smrg      func_warning "remember to run \`$progname --finish$future_libdirs'"
22731473d951Smrg
22741473d951Smrg    if test -n "$current_libdirs"; then
22751473d951Smrg      # Maybe just do a dry run.
22761473d951Smrg      $opt_dry_run && current_libdirs=" -n$current_libdirs"
22771473d951Smrg      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
22781473d951Smrg    else
22791473d951Smrg      exit $EXIT_SUCCESS
22801473d951Smrg    fi
22811473d951Smrg}
22821473d951Smrg
22831473d951Smrgtest "$mode" = install && func_mode_install ${1+"$@"}
22841473d951Smrg
22851473d951Smrg
22861473d951Smrg# func_generate_dlsyms outputname originator pic_p
22871473d951Smrg# Extract symbols from dlprefiles and create ${outputname}S.o with
22881473d951Smrg# a dlpreopen symbol table.
22891473d951Smrgfunc_generate_dlsyms ()
22901473d951Smrg{
22911473d951Smrg    $opt_debug
22921473d951Smrg    my_outputname="$1"
22931473d951Smrg    my_originator="$2"
22941473d951Smrg    my_pic_p="${3-no}"
22951473d951Smrg    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
22961473d951Smrg    my_dlsyms=
22971473d951Smrg
22981473d951Smrg    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
22991473d951Smrg      if test -n "$NM" && test -n "$global_symbol_pipe"; then
23001473d951Smrg	my_dlsyms="${my_outputname}S.c"
23011473d951Smrg      else
23021473d951Smrg	func_error "not configured to extract global symbols from dlpreopened files"
23031473d951Smrg      fi
23041473d951Smrg    fi
23051473d951Smrg
23061473d951Smrg    if test -n "$my_dlsyms"; then
23071473d951Smrg      case $my_dlsyms in
23081473d951Smrg      "") ;;
23091473d951Smrg      *.c)
23101473d951Smrg	# Discover the nlist of each of the dlfiles.
23111473d951Smrg	nlist="$output_objdir/${my_outputname}.nm"
23121473d951Smrg
23131473d951Smrg	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
23141473d951Smrg
23151473d951Smrg	# Parse the name list into a source file.
23161473d951Smrg	func_verbose "creating $output_objdir/$my_dlsyms"
23171473d951Smrg
23181473d951Smrg	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
23191473d951Smrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
23201473d951Smrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
23211473d951Smrg
23221473d951Smrg#ifdef __cplusplus
23231473d951Smrgextern \"C\" {
23241473d951Smrg#endif
23251473d951Smrg
23261473d951Smrg/* External symbol declarations for the compiler. */\
23271473d951Smrg"
23281473d951Smrg
23291473d951Smrg	if test "$dlself" = yes; then
23301473d951Smrg	  func_verbose "generating symbol list for \`$output'"
23311473d951Smrg
23321473d951Smrg	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
23331473d951Smrg
23341473d951Smrg	  # Add our own program objects to the symbol list.
23351473d951Smrg	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
23361473d951Smrg	  for progfile in $progfiles; do
23371473d951Smrg	    func_verbose "extracting global C symbols from \`$progfile'"
23381473d951Smrg	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
23391473d951Smrg	  done
23401473d951Smrg
23411473d951Smrg	  if test -n "$exclude_expsyms"; then
23421473d951Smrg	    $opt_dry_run || {
23431473d951Smrg	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
23441473d951Smrg	      eval '$MV "$nlist"T "$nlist"'
23451473d951Smrg	    }
2346ab47cfaaSmrg	  fi
23471473d951Smrg
23481473d951Smrg	  if test -n "$export_symbols_regex"; then
23491473d951Smrg	    $opt_dry_run || {
23501473d951Smrg	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
23511473d951Smrg	      eval '$MV "$nlist"T "$nlist"'
23521473d951Smrg	    }
23531473d951Smrg	  fi
23541473d951Smrg
23551473d951Smrg	  # Prepare the list of exported symbols
23561473d951Smrg	  if test -z "$export_symbols"; then
23571473d951Smrg	    export_symbols="$output_objdir/$outputname.exp"
23581473d951Smrg	    $opt_dry_run || {
23591473d951Smrg	      $RM $export_symbols
23601473d951Smrg	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
23611473d951Smrg	      case $host in
23621473d951Smrg	      *cygwin* | *mingw* | *cegcc* )
23631473d951Smrg                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
23641473d951Smrg                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
23651473d951Smrg	        ;;
23661473d951Smrg	      esac
23671473d951Smrg	    }
2368ab47cfaaSmrg	  else
23691473d951Smrg	    $opt_dry_run || {
23701473d951Smrg	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
23711473d951Smrg	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
23721473d951Smrg	      eval '$MV "$nlist"T "$nlist"'
23731473d951Smrg	      case $host in
23741473d951Smrg	        *cygwin | *mingw* | *cegcc* )
23751473d951Smrg	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
23761473d951Smrg	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
23771473d951Smrg	          ;;
23781473d951Smrg	      esac
23791473d951Smrg	    }
2380ab47cfaaSmrg	  fi
23811473d951Smrg	fi
2382ab47cfaaSmrg
23831473d951Smrg	for dlprefile in $dlprefiles; do
23841473d951Smrg	  func_verbose "extracting global C symbols from \`$dlprefile'"
23851473d951Smrg	  func_basename "$dlprefile"
23861473d951Smrg	  name="$func_basename_result"
23871473d951Smrg	  $opt_dry_run || {
23881473d951Smrg	    eval '$ECHO ": $name " >> "$nlist"'
23891473d951Smrg	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
23901473d951Smrg	  }
23911473d951Smrg	done
23921473d951Smrg
23931473d951Smrg	$opt_dry_run || {
23941473d951Smrg	  # Make sure we have at least an empty file.
23951473d951Smrg	  test -f "$nlist" || : > "$nlist"
23961473d951Smrg
23971473d951Smrg	  if test -n "$exclude_expsyms"; then
23981473d951Smrg	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
23991473d951Smrg	    $MV "$nlist"T "$nlist"
2400ab47cfaaSmrg	  fi
24011473d951Smrg
24021473d951Smrg	  # Try sorting and uniquifying the output.
24031473d951Smrg	  if $GREP -v "^: " < "$nlist" |
24041473d951Smrg	      if sort -k 3 </dev/null >/dev/null 2>&1; then
24051473d951Smrg		sort -k 3
24061473d951Smrg	      else
24071473d951Smrg		sort +2
24081473d951Smrg	      fi |
24091473d951Smrg	      uniq > "$nlist"S; then
24101473d951Smrg	    :
2411ab47cfaaSmrg	  else
24121473d951Smrg	    $GREP -v "^: " < "$nlist" > "$nlist"S
2413ab47cfaaSmrg	  fi
2414ab47cfaaSmrg
24151473d951Smrg	  if test -f "$nlist"S; then
24161473d951Smrg	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
2417ab47cfaaSmrg	  else
24181473d951Smrg	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
2419ab47cfaaSmrg	  fi
2420ab47cfaaSmrg
24211473d951Smrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
2422ab47cfaaSmrg
24231473d951Smrg/* The mapping between symbol names and symbols.  */
24241473d951Smrgtypedef struct {
24251473d951Smrg  const char *name;
24261473d951Smrg  void *address;
24271473d951Smrg} lt_dlsymlist;
24281473d951Smrg"
24291473d951Smrg	  case $host in
24301473d951Smrg	  *cygwin* | *mingw* | *cegcc* )
24311473d951Smrg	    $ECHO >> "$output_objdir/$my_dlsyms" "\
24321473d951Smrg/* DATA imports from DLLs on WIN32 con't be const, because
24331473d951Smrg   runtime relocations are performed -- see ld's documentation
24341473d951Smrg   on pseudo-relocs.  */"
24351473d951Smrg	    lt_dlsym_const= ;;
24361473d951Smrg	  *osf5*)
24371473d951Smrg	    echo >> "$output_objdir/$my_dlsyms" "\
24381473d951Smrg/* This system does not cope well with relocations in const data */"
24391473d951Smrg	    lt_dlsym_const= ;;
24401473d951Smrg	  *)
24411473d951Smrg	    lt_dlsym_const=const ;;
24421473d951Smrg	  esac
2443ab47cfaaSmrg
24441473d951Smrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24451473d951Smrgextern $lt_dlsym_const lt_dlsymlist
24461473d951Smrglt_${my_prefix}_LTX_preloaded_symbols[];
24471473d951Smrg$lt_dlsym_const lt_dlsymlist
24481473d951Smrglt_${my_prefix}_LTX_preloaded_symbols[] =
24491473d951Smrg{\
24501473d951Smrg  { \"$my_originator\", (void *) 0 },"
2451ab47cfaaSmrg
24521473d951Smrg	  case $need_lib_prefix in
24531473d951Smrg	  no)
24541473d951Smrg	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
24551473d951Smrg	    ;;
24561473d951Smrg	  *)
24571473d951Smrg	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
24581473d951Smrg	    ;;
24591473d951Smrg	  esac
24601473d951Smrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24611473d951Smrg  {0, (void *) 0}
24621473d951Smrg};
2463ab47cfaaSmrg
24641473d951Smrg/* This works around a problem in FreeBSD linker */
24651473d951Smrg#ifdef FREEBSD_WORKAROUND
24661473d951Smrgstatic const void *lt_preloaded_setup() {
24671473d951Smrg  return lt_${my_prefix}_LTX_preloaded_symbols;
24681473d951Smrg}
24691473d951Smrg#endif
2470ab47cfaaSmrg
24711473d951Smrg#ifdef __cplusplus
24721473d951Smrg}
24731473d951Smrg#endif\
24741473d951Smrg"
24751473d951Smrg	} # !$opt_dry_run
2476ab47cfaaSmrg
24771473d951Smrg	pic_flag_for_symtable=
24781473d951Smrg	case "$compile_command " in
24791473d951Smrg	*" -static "*) ;;
24801473d951Smrg	*)
24811473d951Smrg	  case $host in
24821473d951Smrg	  # compiling the symbol table file with pic_flag works around
24831473d951Smrg	  # a FreeBSD bug that causes programs to crash when -lm is
24841473d951Smrg	  # linked before any other PIC object.  But we must not use
24851473d951Smrg	  # pic_flag when linking with -static.  The problem exists in
24861473d951Smrg	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
24871473d951Smrg	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
24881473d951Smrg	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
24891473d951Smrg	  *-*-hpux*)
24901473d951Smrg	    pic_flag_for_symtable=" $pic_flag"  ;;
24911473d951Smrg	  *)
24921473d951Smrg	    if test "X$my_pic_p" != Xno; then
24931473d951Smrg	      pic_flag_for_symtable=" $pic_flag"
24941473d951Smrg	    fi
24951473d951Smrg	    ;;
24961473d951Smrg	  esac
24971473d951Smrg	  ;;
24981473d951Smrg	esac
24991473d951Smrg	symtab_cflags=
25001473d951Smrg	for arg in $LTCFLAGS; do
25011473d951Smrg	  case $arg in
25021473d951Smrg	  -pie | -fpie | -fPIE) ;;
25031473d951Smrg	  *) symtab_cflags="$symtab_cflags $arg" ;;
25041473d951Smrg	  esac
25051473d951Smrg	done
2506ab47cfaaSmrg
25071473d951Smrg	# Now compile the dynamic symbol file.
25081473d951Smrg	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
2509ab47cfaaSmrg
25101473d951Smrg	# Clean up the generated files.
25111473d951Smrg	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
2512ab47cfaaSmrg
25131473d951Smrg	# Transform the symbol file into the correct name.
25141473d951Smrg	symfileobj="$output_objdir/${my_outputname}S.$objext"
25151473d951Smrg	case $host in
25161473d951Smrg	*cygwin* | *mingw* | *cegcc* )
25171473d951Smrg	  if test -f "$output_objdir/$my_outputname.def"; then
25181473d951Smrg	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
25191473d951Smrg	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
25201473d951Smrg	  else
25211473d951Smrg	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25221473d951Smrg	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25231473d951Smrg	  fi
25241473d951Smrg	  ;;
25251473d951Smrg	*)
25261473d951Smrg	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25271473d951Smrg	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25281473d951Smrg	  ;;
25291473d951Smrg	esac
25301473d951Smrg	;;
25311473d951Smrg      *)
25321473d951Smrg	func_fatal_error "unknown suffix for \`$my_dlsyms'"
25331473d951Smrg	;;
25341473d951Smrg      esac
25351473d951Smrg    else
25361473d951Smrg      # We keep going just in case the user didn't refer to
25371473d951Smrg      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
25381473d951Smrg      # really was required.
2539ab47cfaaSmrg
25401473d951Smrg      # Nullify the symbol file.
25411473d951Smrg      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
25421473d951Smrg      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
25431473d951Smrg    fi
25441473d951Smrg}
2545ab47cfaaSmrg
25461473d951Smrg# func_win32_libid arg
25471473d951Smrg# return the library type of file 'arg'
25481473d951Smrg#
25491473d951Smrg# Need a lot of goo to handle *both* DLLs and import libs
25501473d951Smrg# Has to be a shell function in order to 'eat' the argument
25511473d951Smrg# that is supplied when $file_magic_command is called.
25521473d951Smrgfunc_win32_libid ()
25531473d951Smrg{
25541473d951Smrg  $opt_debug
25551473d951Smrg  win32_libid_type="unknown"
25561473d951Smrg  win32_fileres=`file -L $1 2>/dev/null`
25571473d951Smrg  case $win32_fileres in
25581473d951Smrg  *ar\ archive\ import\ library*) # definitely import
25591473d951Smrg    win32_libid_type="x86 archive import"
25601473d951Smrg    ;;
25611473d951Smrg  *ar\ archive*) # could be an import, or static
25621473d951Smrg    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
25631473d951Smrg       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
25641473d951Smrg      win32_nmres=`eval $NM -f posix -A $1 |
25651473d951Smrg	$SED -n -e '
25661473d951Smrg	    1,100{
25671473d951Smrg		/ I /{
25681473d951Smrg		    s,.*,import,
25691473d951Smrg		    p
25701473d951Smrg		    q
25711473d951Smrg		}
25721473d951Smrg	    }'`
25731473d951Smrg      case $win32_nmres in
25741473d951Smrg      import*)  win32_libid_type="x86 archive import";;
25751473d951Smrg      *)        win32_libid_type="x86 archive static";;
25761473d951Smrg      esac
25771473d951Smrg    fi
25781473d951Smrg    ;;
25791473d951Smrg  *DLL*)
25801473d951Smrg    win32_libid_type="x86 DLL"
25811473d951Smrg    ;;
25821473d951Smrg  *executable*) # but shell scripts are "executable" too...
25831473d951Smrg    case $win32_fileres in
25841473d951Smrg    *MS\ Windows\ PE\ Intel*)
25851473d951Smrg      win32_libid_type="x86 DLL"
25861473d951Smrg      ;;
25871473d951Smrg    esac
25881473d951Smrg    ;;
25891473d951Smrg  esac
25901473d951Smrg  $ECHO "$win32_libid_type"
25911473d951Smrg}
2592ab47cfaaSmrg
2593ab47cfaaSmrg
2594ab47cfaaSmrg
25951473d951Smrg# func_extract_an_archive dir oldlib
25961473d951Smrgfunc_extract_an_archive ()
25971473d951Smrg{
25981473d951Smrg    $opt_debug
25991473d951Smrg    f_ex_an_ar_dir="$1"; shift
26001473d951Smrg    f_ex_an_ar_oldlib="$1"
26011473d951Smrg    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
26021473d951Smrg    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
26031473d951Smrg     :
26041473d951Smrg    else
26051473d951Smrg      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
26061473d951Smrg    fi
26071473d951Smrg}
2608ab47cfaaSmrg
2609ab47cfaaSmrg
26101473d951Smrg# func_extract_archives gentop oldlib ...
26111473d951Smrgfunc_extract_archives ()
26121473d951Smrg{
26131473d951Smrg    $opt_debug
26141473d951Smrg    my_gentop="$1"; shift
26151473d951Smrg    my_oldlibs=${1+"$@"}
26161473d951Smrg    my_oldobjs=""
26171473d951Smrg    my_xlib=""
26181473d951Smrg    my_xabs=""
26191473d951Smrg    my_xdir=""
2620ab47cfaaSmrg
26211473d951Smrg    for my_xlib in $my_oldlibs; do
26221473d951Smrg      # Extract the objects.
26231473d951Smrg      case $my_xlib in
26241473d951Smrg	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
26251473d951Smrg	*) my_xabs=`pwd`"/$my_xlib" ;;
26261473d951Smrg      esac
26271473d951Smrg      func_basename "$my_xlib"
26281473d951Smrg      my_xlib="$func_basename_result"
26291473d951Smrg      my_xlib_u=$my_xlib
26301473d951Smrg      while :; do
26311473d951Smrg        case " $extracted_archives " in
26321473d951Smrg	*" $my_xlib_u "*)
26331473d951Smrg	  func_arith $extracted_serial + 1
26341473d951Smrg	  extracted_serial=$func_arith_result
26351473d951Smrg	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
26361473d951Smrg	*) break ;;
26371473d951Smrg	esac
26381473d951Smrg      done
26391473d951Smrg      extracted_archives="$extracted_archives $my_xlib_u"
26401473d951Smrg      my_xdir="$my_gentop/$my_xlib_u"
2641ab47cfaaSmrg
26421473d951Smrg      func_mkdir_p "$my_xdir"
26431473d951Smrg
26441473d951Smrg      case $host in
26451473d951Smrg      *-darwin*)
26461473d951Smrg	func_verbose "Extracting $my_xabs"
26471473d951Smrg	# Do not bother doing anything if just a dry run
26481473d951Smrg	$opt_dry_run || {
26491473d951Smrg	  darwin_orig_dir=`pwd`
26501473d951Smrg	  cd $my_xdir || exit $?
26511473d951Smrg	  darwin_archive=$my_xabs
26521473d951Smrg	  darwin_curdir=`pwd`
26531473d951Smrg	  darwin_base_archive=`basename "$darwin_archive"`
26541473d951Smrg	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
26551473d951Smrg	  if test -n "$darwin_arches"; then
26561473d951Smrg	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
26571473d951Smrg	    darwin_arch=
26581473d951Smrg	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
26591473d951Smrg	    for darwin_arch in  $darwin_arches ; do
26601473d951Smrg	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
26611473d951Smrg	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
26621473d951Smrg	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
26631473d951Smrg	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
26641473d951Smrg	      cd "$darwin_curdir"
26651473d951Smrg	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
26661473d951Smrg	    done # $darwin_arches
26671473d951Smrg            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
26681473d951Smrg	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
26691473d951Smrg	    darwin_file=
26701473d951Smrg	    darwin_files=
26711473d951Smrg	    for darwin_file in $darwin_filelist; do
26721473d951Smrg	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
26731473d951Smrg	      $LIPO -create -output "$darwin_file" $darwin_files
26741473d951Smrg	    done # $darwin_filelist
26751473d951Smrg	    $RM -rf unfat-$$
26761473d951Smrg	    cd "$darwin_orig_dir"
2677ab47cfaaSmrg	  else
26781473d951Smrg	    cd $darwin_orig_dir
26791473d951Smrg	    func_extract_an_archive "$my_xdir" "$my_xabs"
26801473d951Smrg	  fi # $darwin_arches
26811473d951Smrg	} # !$opt_dry_run
26821473d951Smrg	;;
26831473d951Smrg      *)
26841473d951Smrg        func_extract_an_archive "$my_xdir" "$my_xabs"
26851473d951Smrg	;;
26861473d951Smrg      esac
26871473d951Smrg      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
26881473d951Smrg    done
2689ab47cfaaSmrg
26901473d951Smrg    func_extract_archives_result="$my_oldobjs"
26911473d951Smrg}
2692ab47cfaaSmrg
2693ab47cfaaSmrg
2694ab47cfaaSmrg
26951473d951Smrg# func_emit_wrapper_part1 [arg=no]
26961473d951Smrg#
26971473d951Smrg# Emit the first part of a libtool wrapper script on stdout.
26981473d951Smrg# For more information, see the description associated with
26991473d951Smrg# func_emit_wrapper(), below.
27001473d951Smrgfunc_emit_wrapper_part1 ()
27011473d951Smrg{
27021473d951Smrg	func_emit_wrapper_part1_arg1=no
27031473d951Smrg	if test -n "$1" ; then
27041473d951Smrg	  func_emit_wrapper_part1_arg1=$1
2705ab47cfaaSmrg	fi
2706ab47cfaaSmrg
27071473d951Smrg	$ECHO "\
27081473d951Smrg#! $SHELL
2709ab47cfaaSmrg
27101473d951Smrg# $output - temporary wrapper script for $objdir/$outputname
27111473d951Smrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
27121473d951Smrg#
27131473d951Smrg# The $output program cannot be directly executed until all the libtool
27141473d951Smrg# libraries that it depends on are installed.
27151473d951Smrg#
27161473d951Smrg# This wrapper script should never be moved out of the build directory.
27171473d951Smrg# If it is, it will not operate correctly.
2718ab47cfaaSmrg
27191473d951Smrg# Sed substitution that helps us do robust quoting.  It backslashifies
27201473d951Smrg# metacharacters that are still active within double-quoted strings.
27211473d951SmrgXsed='${SED} -e 1s/^X//'
27221473d951Smrgsed_quote_subst='$sed_quote_subst'
2723ab47cfaaSmrg
27241473d951Smrg# Be Bourne compatible
27251473d951Smrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
27261473d951Smrg  emulate sh
27271473d951Smrg  NULLCMD=:
27281473d951Smrg  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
27291473d951Smrg  # is contrary to our usage.  Disable this feature.
27301473d951Smrg  alias -g '\${1+\"\$@\"}'='\"\$@\"'
27311473d951Smrg  setopt NO_GLOB_SUBST
27321473d951Smrgelse
27331473d951Smrg  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
27341473d951Smrgfi
27351473d951SmrgBIN_SH=xpg4; export BIN_SH # for Tru64
27361473d951SmrgDUALCASE=1; export DUALCASE # for MKS sh
2737ab47cfaaSmrg
27381473d951Smrg# The HP-UX ksh and POSIX shell print the target directory to stdout
27391473d951Smrg# if CDPATH is set.
27401473d951Smrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
2741ab47cfaaSmrg
27421473d951Smrgrelink_command=\"$relink_command\"
2743ab47cfaaSmrg
27441473d951Smrg# This environment variable determines our operation mode.
27451473d951Smrgif test \"\$libtool_install_magic\" = \"$magic\"; then
27461473d951Smrg  # install mode needs the following variables:
27471473d951Smrg  generated_by_libtool_version='$macro_version'
27481473d951Smrg  notinst_deplibs='$notinst_deplibs'
27491473d951Smrgelse
27501473d951Smrg  # When we are sourced in execute mode, \$file and \$ECHO are already set.
27511473d951Smrg  if test \"\$libtool_execute_magic\" != \"$magic\"; then
27521473d951Smrg    ECHO=\"$qecho\"
27531473d951Smrg    file=\"\$0\"
27541473d951Smrg    # Make sure echo works.
27551473d951Smrg    if test \"X\$1\" = X--no-reexec; then
27561473d951Smrg      # Discard the --no-reexec flag, and continue.
27571473d951Smrg      shift
27581473d951Smrg    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
27591473d951Smrg      # Yippee, \$ECHO works!
27601473d951Smrg      :
27611473d951Smrg    else
27621473d951Smrg      # Restart under the correct shell, and then maybe \$ECHO will work.
27631473d951Smrg      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
27641473d951Smrg    fi
27651473d951Smrg  fi\
27661473d951Smrg"
27671473d951Smrg	$ECHO "\
2768ab47cfaaSmrg
27691473d951Smrg  # Find the directory that this script lives in.
27701473d951Smrg  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
27711473d951Smrg  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
2772ab47cfaaSmrg
27731473d951Smrg  # Follow symbolic links until we get to the real thisdir.
27741473d951Smrg  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
27751473d951Smrg  while test -n \"\$file\"; do
27761473d951Smrg    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
27771473d951Smrg
27781473d951Smrg    # If there was a directory component, then change thisdir.
27791473d951Smrg    if test \"x\$destdir\" != \"x\$file\"; then
27801473d951Smrg      case \"\$destdir\" in
27811473d951Smrg      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
27821473d951Smrg      *) thisdir=\"\$thisdir/\$destdir\" ;;
2783ab47cfaaSmrg      esac
27841473d951Smrg    fi
2785ab47cfaaSmrg
27861473d951Smrg    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
27871473d951Smrg    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
27881473d951Smrg  done
27891473d951Smrg"
27901473d951Smrg}
27911473d951Smrg# end: func_emit_wrapper_part1
27921473d951Smrg
27931473d951Smrg# func_emit_wrapper_part2 [arg=no]
27941473d951Smrg#
27951473d951Smrg# Emit the second part of a libtool wrapper script on stdout.
27961473d951Smrg# For more information, see the description associated with
27971473d951Smrg# func_emit_wrapper(), below.
27981473d951Smrgfunc_emit_wrapper_part2 ()
27991473d951Smrg{
28001473d951Smrg	func_emit_wrapper_part2_arg1=no
28011473d951Smrg	if test -n "$1" ; then
28021473d951Smrg	  func_emit_wrapper_part2_arg1=$1
2803ab47cfaaSmrg	fi
2804ab47cfaaSmrg
28051473d951Smrg	$ECHO "\
2806ab47cfaaSmrg
28071473d951Smrg  # Usually 'no', except on cygwin/mingw when embedded into
28081473d951Smrg  # the cwrapper.
28091473d951Smrg  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
28101473d951Smrg  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
28111473d951Smrg    # special case for '.'
28121473d951Smrg    if test \"\$thisdir\" = \".\"; then
28131473d951Smrg      thisdir=\`pwd\`
28141473d951Smrg    fi
28151473d951Smrg    # remove .libs from thisdir
28161473d951Smrg    case \"\$thisdir\" in
28171473d951Smrg    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
28181473d951Smrg    $objdir )   thisdir=. ;;
28191473d951Smrg    esac
28201473d951Smrg  fi
28211473d951Smrg
28221473d951Smrg  # Try to get the absolute directory name.
28231473d951Smrg  absdir=\`cd \"\$thisdir\" && pwd\`
28241473d951Smrg  test -n \"\$absdir\" && thisdir=\"\$absdir\"
28251473d951Smrg"
28261473d951Smrg
28271473d951Smrg	if test "$fast_install" = yes; then
28281473d951Smrg	  $ECHO "\
28291473d951Smrg  program=lt-'$outputname'$exeext
28301473d951Smrg  progdir=\"\$thisdir/$objdir\"
28311473d951Smrg
28321473d951Smrg  if test ! -f \"\$progdir/\$program\" ||
28331473d951Smrg     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
28341473d951Smrg       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
28351473d951Smrg
28361473d951Smrg    file=\"\$\$-\$program\"
28371473d951Smrg
28381473d951Smrg    if test ! -d \"\$progdir\"; then
28391473d951Smrg      $MKDIR \"\$progdir\"
28401473d951Smrg    else
28411473d951Smrg      $RM \"\$progdir/\$file\"
28421473d951Smrg    fi"
28431473d951Smrg
28441473d951Smrg	  $ECHO "\
28451473d951Smrg
28461473d951Smrg    # relink executable if necessary
28471473d951Smrg    if test -n \"\$relink_command\"; then
28481473d951Smrg      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
28491473d951Smrg      else
28501473d951Smrg	$ECHO \"\$relink_command_output\" >&2
28511473d951Smrg	$RM \"\$progdir/\$file\"
28521473d951Smrg	exit 1
2853ab47cfaaSmrg      fi
28541473d951Smrg    fi
2855ab47cfaaSmrg
28561473d951Smrg    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
28571473d951Smrg    { $RM \"\$progdir/\$program\";
28581473d951Smrg      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
28591473d951Smrg    $RM \"\$progdir/\$file\"
28601473d951Smrg  fi"
28611473d951Smrg	else
28621473d951Smrg	  $ECHO "\
28631473d951Smrg  program='$outputname'
28641473d951Smrg  progdir=\"\$thisdir/$objdir\"
28651473d951Smrg"
2866ab47cfaaSmrg	fi
2867ab47cfaaSmrg
28681473d951Smrg	$ECHO "\
28691473d951Smrg
28701473d951Smrg  if test -f \"\$progdir/\$program\"; then"
28711473d951Smrg
28721473d951Smrg	# Export our shlibpath_var if we have one.
28731473d951Smrg	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
28741473d951Smrg	  $ECHO "\
28751473d951Smrg    # Add our own library path to $shlibpath_var
28761473d951Smrg    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
28771473d951Smrg
28781473d951Smrg    # Some systems cannot cope with colon-terminated $shlibpath_var
28791473d951Smrg    # The second colon is a workaround for a bug in BeOS R4 sed
28801473d951Smrg    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
28811473d951Smrg
28821473d951Smrg    export $shlibpath_var
28831473d951Smrg"
2884ab47cfaaSmrg	fi
2885ab47cfaaSmrg
28861473d951Smrg	# fixup the dll searchpath if we need to.
28871473d951Smrg	if test -n "$dllsearchpath"; then
28881473d951Smrg	  $ECHO "\
28891473d951Smrg    # Add the dll search path components to the executable PATH
28901473d951Smrg    PATH=$dllsearchpath:\$PATH
28911473d951Smrg"
2892ab47cfaaSmrg	fi
2893ab47cfaaSmrg
28941473d951Smrg	$ECHO "\
28951473d951Smrg    if test \"\$libtool_execute_magic\" != \"$magic\"; then
28961473d951Smrg      # Run the actual program with our arguments.
28971473d951Smrg"
28981473d951Smrg	case $host in
28991473d951Smrg	# Backslashes separate directories on plain windows
29001473d951Smrg	*-*-mingw | *-*-os2* | *-cegcc*)
29011473d951Smrg	  $ECHO "\
29021473d951Smrg      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
29031473d951Smrg"
29041473d951Smrg	  ;;
29051473d951Smrg
29061473d951Smrg	*)
29071473d951Smrg	  $ECHO "\
29081473d951Smrg      exec \"\$progdir/\$program\" \${1+\"\$@\"}
29091473d951Smrg"
29101473d951Smrg	  ;;
29111473d951Smrg	esac
29121473d951Smrg	$ECHO "\
29131473d951Smrg      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
29141473d951Smrg      exit 1
29151473d951Smrg    fi
29161473d951Smrg  else
29171473d951Smrg    # The program doesn't exist.
29181473d951Smrg    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
29191473d951Smrg    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
29201473d951Smrg    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
29211473d951Smrg    exit 1
29221473d951Smrg  fi
29231473d951Smrgfi\
29241473d951Smrg"
29251473d951Smrg}
29261473d951Smrg# end: func_emit_wrapper_part2
29271473d951Smrg
2928ab47cfaaSmrg
29291473d951Smrg# func_emit_wrapper [arg=no]
29301473d951Smrg#
29311473d951Smrg# Emit a libtool wrapper script on stdout.
29321473d951Smrg# Don't directly open a file because we may want to
29331473d951Smrg# incorporate the script contents within a cygwin/mingw
29341473d951Smrg# wrapper executable.  Must ONLY be called from within
29351473d951Smrg# func_mode_link because it depends on a number of variables
29361473d951Smrg# set therein.
29371473d951Smrg#
29381473d951Smrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
29391473d951Smrg# variable will take.  If 'yes', then the emitted script
29401473d951Smrg# will assume that the directory in which it is stored is
29411473d951Smrg# the $objdir directory.  This is a cygwin/mingw-specific
29421473d951Smrg# behavior.
29431473d951Smrgfunc_emit_wrapper ()
29441473d951Smrg{
29451473d951Smrg	func_emit_wrapper_arg1=no
29461473d951Smrg	if test -n "$1" ; then
29471473d951Smrg	  func_emit_wrapper_arg1=$1
2948ab47cfaaSmrg	fi
2949ab47cfaaSmrg
29501473d951Smrg	# split this up so that func_emit_cwrapperexe_src
29511473d951Smrg	# can call each part independently.
29521473d951Smrg	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
29531473d951Smrg	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
29541473d951Smrg}
2955ab47cfaaSmrg
2956ab47cfaaSmrg
29571473d951Smrg# func_to_host_path arg
29581473d951Smrg#
29591473d951Smrg# Convert paths to host format when used with build tools.
29601473d951Smrg# Intended for use with "native" mingw (where libtool itself
29611473d951Smrg# is running under the msys shell), or in the following cross-
29621473d951Smrg# build environments:
29631473d951Smrg#    $build          $host
29641473d951Smrg#    mingw (msys)    mingw  [e.g. native]
29651473d951Smrg#    cygwin          mingw
29661473d951Smrg#    *nix + wine     mingw
29671473d951Smrg# where wine is equipped with the `winepath' executable.
29681473d951Smrg# In the native mingw case, the (msys) shell automatically
29691473d951Smrg# converts paths for any non-msys applications it launches,
29701473d951Smrg# but that facility isn't available from inside the cwrapper.
29711473d951Smrg# Similar accommodations are necessary for $host mingw and
29721473d951Smrg# $build cygwin.  Calling this function does no harm for other
29731473d951Smrg# $host/$build combinations not listed above.
29741473d951Smrg#
29751473d951Smrg# ARG is the path (on $build) that should be converted to
29761473d951Smrg# the proper representation for $host. The result is stored
29771473d951Smrg# in $func_to_host_path_result.
29781473d951Smrgfunc_to_host_path ()
29791473d951Smrg{
29801473d951Smrg  func_to_host_path_result="$1"
29811473d951Smrg  if test -n "$1" ; then
29821473d951Smrg    case $host in
29831473d951Smrg      *mingw* )
29841473d951Smrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
29851473d951Smrg        case $build in
29861473d951Smrg          *mingw* ) # actually, msys
29871473d951Smrg            # awkward: cmd appends spaces to result
29881473d951Smrg            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
29891473d951Smrg            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
29901473d951Smrg              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
29911473d951Smrg            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
29921473d951Smrg              $SED -e "$lt_sed_naive_backslashify"`
29931473d951Smrg            ;;
29941473d951Smrg          *cygwin* )
29951473d951Smrg            func_to_host_path_tmp1=`cygpath -w "$1"`
29961473d951Smrg            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
29971473d951Smrg              $SED -e "$lt_sed_naive_backslashify"`
29981473d951Smrg            ;;
29991473d951Smrg          * )
30001473d951Smrg            # Unfortunately, winepath does not exit with a non-zero
30011473d951Smrg            # error code, so we are forced to check the contents of
30021473d951Smrg            # stdout. On the other hand, if the command is not
30031473d951Smrg            # found, the shell will set an exit code of 127 and print
30041473d951Smrg            # *an error message* to stdout. So we must check for both
30051473d951Smrg            # error code of zero AND non-empty stdout, which explains
30061473d951Smrg            # the odd construction:
30071473d951Smrg            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
30081473d951Smrg            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
30091473d951Smrg              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
30101473d951Smrg                $SED -e "$lt_sed_naive_backslashify"`
30111473d951Smrg            else
30121473d951Smrg              # Allow warning below.
30131473d951Smrg              func_to_host_path_result=""
30141473d951Smrg            fi
30151473d951Smrg            ;;
30161473d951Smrg        esac
30171473d951Smrg        if test -z "$func_to_host_path_result" ; then
30181473d951Smrg          func_error "Could not determine host path corresponding to"
30191473d951Smrg          func_error "  '$1'"
30201473d951Smrg          func_error "Continuing, but uninstalled executables may not work."
30211473d951Smrg          # Fallback:
30221473d951Smrg          func_to_host_path_result="$1"
30231473d951Smrg        fi
30241473d951Smrg        ;;
30251473d951Smrg    esac
30261473d951Smrg  fi
30271473d951Smrg}
30281473d951Smrg# end: func_to_host_path
3029ab47cfaaSmrg
30301473d951Smrg# func_to_host_pathlist arg
30311473d951Smrg#
30321473d951Smrg# Convert pathlists to host format when used with build tools.
30331473d951Smrg# See func_to_host_path(), above. This function supports the
30341473d951Smrg# following $build/$host combinations (but does no harm for
30351473d951Smrg# combinations not listed here):
30361473d951Smrg#    $build          $host
30371473d951Smrg#    mingw (msys)    mingw  [e.g. native]
30381473d951Smrg#    cygwin          mingw
30391473d951Smrg#    *nix + wine     mingw
30401473d951Smrg#
30411473d951Smrg# Path separators are also converted from $build format to
30421473d951Smrg# $host format. If ARG begins or ends with a path separator
30431473d951Smrg# character, it is preserved (but converted to $host format)
30441473d951Smrg# on output.
30451473d951Smrg#
30461473d951Smrg# ARG is a pathlist (on $build) that should be converted to
30471473d951Smrg# the proper representation on $host. The result is stored
30481473d951Smrg# in $func_to_host_pathlist_result.
30491473d951Smrgfunc_to_host_pathlist ()
30501473d951Smrg{
30511473d951Smrg  func_to_host_pathlist_result="$1"
30521473d951Smrg  if test -n "$1" ; then
30531473d951Smrg    case $host in
30541473d951Smrg      *mingw* )
30551473d951Smrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
30561473d951Smrg        # Remove leading and trailing path separator characters from
30571473d951Smrg        # ARG. msys behavior is inconsistent here, cygpath turns them
30581473d951Smrg        # into '.;' and ';.', and winepath ignores them completely.
30591473d951Smrg        func_to_host_pathlist_tmp2="$1"
30601473d951Smrg        # Once set for this call, this variable should not be
30611473d951Smrg        # reassigned. It is used in tha fallback case.
30621473d951Smrg        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
30631473d951Smrg          $SED -e 's|^:*||' -e 's|:*$||'`
30641473d951Smrg        case $build in
30651473d951Smrg          *mingw* ) # Actually, msys.
30661473d951Smrg            # Awkward: cmd appends spaces to result.
30671473d951Smrg            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
30681473d951Smrg            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
30691473d951Smrg              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
30701473d951Smrg            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
30711473d951Smrg              $SED -e "$lt_sed_naive_backslashify"`
30721473d951Smrg            ;;
30731473d951Smrg          *cygwin* )
30741473d951Smrg            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
30751473d951Smrg            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
30761473d951Smrg              $SED -e "$lt_sed_naive_backslashify"`
30771473d951Smrg            ;;
30781473d951Smrg          * )
30791473d951Smrg            # unfortunately, winepath doesn't convert pathlists
30801473d951Smrg            func_to_host_pathlist_result=""
30811473d951Smrg            func_to_host_pathlist_oldIFS=$IFS
30821473d951Smrg            IFS=:
30831473d951Smrg            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
30841473d951Smrg              IFS=$func_to_host_pathlist_oldIFS
30851473d951Smrg              if test -n "$func_to_host_pathlist_f" ; then
30861473d951Smrg                func_to_host_path "$func_to_host_pathlist_f"
30871473d951Smrg                if test -n "$func_to_host_path_result" ; then
30881473d951Smrg                  if test -z "$func_to_host_pathlist_result" ; then
30891473d951Smrg                    func_to_host_pathlist_result="$func_to_host_path_result"
30901473d951Smrg                  else
30911473d951Smrg                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
30921473d951Smrg                  fi
30931473d951Smrg                fi
30941473d951Smrg              fi
30951473d951Smrg              IFS=:
30961473d951Smrg            done
30971473d951Smrg            IFS=$func_to_host_pathlist_oldIFS
30981473d951Smrg            ;;
30991473d951Smrg        esac
31001473d951Smrg        if test -z "$func_to_host_pathlist_result" ; then
31011473d951Smrg          func_error "Could not determine the host path(s) corresponding to"
31021473d951Smrg          func_error "  '$1'"
31031473d951Smrg          func_error "Continuing, but uninstalled executables may not work."
31041473d951Smrg          # Fallback. This may break if $1 contains DOS-style drive
31051473d951Smrg          # specifications. The fix is not to complicate the expression
31061473d951Smrg          # below, but for the user to provide a working wine installation
31071473d951Smrg          # with winepath so that path translation in the cross-to-mingw
31081473d951Smrg          # case works properly.
31091473d951Smrg          lt_replace_pathsep_nix_to_dos="s|:|;|g"
31101473d951Smrg          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
31111473d951Smrg            $SED -e "$lt_replace_pathsep_nix_to_dos"`
31121473d951Smrg        fi
31131473d951Smrg        # Now, add the leading and trailing path separators back
31141473d951Smrg        case "$1" in
31151473d951Smrg          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
31161473d951Smrg            ;;
31171473d951Smrg        esac
31181473d951Smrg        case "$1" in
31191473d951Smrg          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
31201473d951Smrg            ;;
31211473d951Smrg        esac
31221473d951Smrg        ;;
31231473d951Smrg    esac
31241473d951Smrg  fi
31251473d951Smrg}
31261473d951Smrg# end: func_to_host_pathlist
3127ab47cfaaSmrg
31281473d951Smrg# func_emit_cwrapperexe_src
31291473d951Smrg# emit the source code for a wrapper executable on stdout
31301473d951Smrg# Must ONLY be called from within func_mode_link because
31311473d951Smrg# it depends on a number of variable set therein.
31321473d951Smrgfunc_emit_cwrapperexe_src ()
31331473d951Smrg{
31341473d951Smrg	cat <<EOF
3135ab47cfaaSmrg
31361473d951Smrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
31371473d951Smrg   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
3138ab47cfaaSmrg
31391473d951Smrg   The $output program cannot be directly executed until all the libtool
31401473d951Smrg   libraries that it depends on are installed.
3141ab47cfaaSmrg
31421473d951Smrg   This wrapper executable should never be moved out of the build directory.
31431473d951Smrg   If it is, it will not operate correctly.
3144ab47cfaaSmrg
31451473d951Smrg   Currently, it simply execs the wrapper *script* "$SHELL $output",
31461473d951Smrg   but could eventually absorb all of the scripts functionality and
31471473d951Smrg   exec $objdir/$outputname directly.
31481473d951Smrg*/
31491473d951SmrgEOF
31501473d951Smrg	    cat <<"EOF"
31511473d951Smrg#include <stdio.h>
31521473d951Smrg#include <stdlib.h>
31531473d951Smrg#ifdef _MSC_VER
31541473d951Smrg# include <direct.h>
31551473d951Smrg# include <process.h>
31561473d951Smrg# include <io.h>
31571473d951Smrg# define setmode _setmode
31581473d951Smrg#else
31591473d951Smrg# include <unistd.h>
31601473d951Smrg# include <stdint.h>
31611473d951Smrg# ifdef __CYGWIN__
31621473d951Smrg#  include <io.h>
31631473d951Smrg#  define HAVE_SETENV
31641473d951Smrg#  ifdef __STRICT_ANSI__
31651473d951Smrgchar *realpath (const char *, char *);
31661473d951Smrgint putenv (char *);
31671473d951Smrgint setenv (const char *, const char *, int);
31681473d951Smrg#  endif
31691473d951Smrg# endif
31701473d951Smrg#endif
31711473d951Smrg#include <malloc.h>
31721473d951Smrg#include <stdarg.h>
31731473d951Smrg#include <assert.h>
31741473d951Smrg#include <string.h>
31751473d951Smrg#include <ctype.h>
31761473d951Smrg#include <errno.h>
31771473d951Smrg#include <fcntl.h>
31781473d951Smrg#include <sys/stat.h>
3179ab47cfaaSmrg
31801473d951Smrg#if defined(PATH_MAX)
31811473d951Smrg# define LT_PATHMAX PATH_MAX
31821473d951Smrg#elif defined(MAXPATHLEN)
31831473d951Smrg# define LT_PATHMAX MAXPATHLEN
31841473d951Smrg#else
31851473d951Smrg# define LT_PATHMAX 1024
31861473d951Smrg#endif
3187ab47cfaaSmrg
31881473d951Smrg#ifndef S_IXOTH
31891473d951Smrg# define S_IXOTH 0
31901473d951Smrg#endif
31911473d951Smrg#ifndef S_IXGRP
31921473d951Smrg# define S_IXGRP 0
31931473d951Smrg#endif
3194ab47cfaaSmrg
31951473d951Smrg#ifdef _MSC_VER
31961473d951Smrg# define S_IXUSR _S_IEXEC
31971473d951Smrg# define stat _stat
31981473d951Smrg# ifndef _INTPTR_T_DEFINED
31991473d951Smrg#  define intptr_t int
32001473d951Smrg# endif
32011473d951Smrg#endif
3202ab47cfaaSmrg
32031473d951Smrg#ifndef DIR_SEPARATOR
32041473d951Smrg# define DIR_SEPARATOR '/'
32051473d951Smrg# define PATH_SEPARATOR ':'
32061473d951Smrg#endif
3207ab47cfaaSmrg
32081473d951Smrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
32091473d951Smrg  defined (__OS2__)
32101473d951Smrg# define HAVE_DOS_BASED_FILE_SYSTEM
32111473d951Smrg# define FOPEN_WB "wb"
32121473d951Smrg# ifndef DIR_SEPARATOR_2
32131473d951Smrg#  define DIR_SEPARATOR_2 '\\'
32141473d951Smrg# endif
32151473d951Smrg# ifndef PATH_SEPARATOR_2
32161473d951Smrg#  define PATH_SEPARATOR_2 ';'
32171473d951Smrg# endif
32181473d951Smrg#endif
3219ab47cfaaSmrg
32201473d951Smrg#ifndef DIR_SEPARATOR_2
32211473d951Smrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
32221473d951Smrg#else /* DIR_SEPARATOR_2 */
32231473d951Smrg# define IS_DIR_SEPARATOR(ch) \
32241473d951Smrg	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
32251473d951Smrg#endif /* DIR_SEPARATOR_2 */
3226ab47cfaaSmrg
32271473d951Smrg#ifndef PATH_SEPARATOR_2
32281473d951Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
32291473d951Smrg#else /* PATH_SEPARATOR_2 */
32301473d951Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
32311473d951Smrg#endif /* PATH_SEPARATOR_2 */
3232ab47cfaaSmrg
32331473d951Smrg#ifdef __CYGWIN__
32341473d951Smrg# define FOPEN_WB "wb"
32351473d951Smrg#endif
3236ab47cfaaSmrg
32371473d951Smrg#ifndef FOPEN_WB
32381473d951Smrg# define FOPEN_WB "w"
32391473d951Smrg#endif
32401473d951Smrg#ifndef _O_BINARY
32411473d951Smrg# define _O_BINARY 0
32421473d951Smrg#endif
3243ab47cfaaSmrg
32441473d951Smrg#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
32451473d951Smrg#define XFREE(stale) do { \
32461473d951Smrg  if (stale) { free ((void *) stale); stale = 0; } \
32471473d951Smrg} while (0)
3248ab47cfaaSmrg
32491473d951Smrg#undef LTWRAPPER_DEBUGPRINTF
32501473d951Smrg#if defined DEBUGWRAPPER
32511473d951Smrg# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
32521473d951Smrgstatic void
32531473d951Smrgltwrapper_debugprintf (const char *fmt, ...)
32541473d951Smrg{
32551473d951Smrg    va_list args;
32561473d951Smrg    va_start (args, fmt);
32571473d951Smrg    (void) vfprintf (stderr, fmt, args);
32581473d951Smrg    va_end (args);
32591473d951Smrg}
32601473d951Smrg#else
32611473d951Smrg# define LTWRAPPER_DEBUGPRINTF(args)
32621473d951Smrg#endif
3263ab47cfaaSmrg
32641473d951Smrgconst char *program_name = NULL;
3265ab47cfaaSmrg
32661473d951Smrgvoid *xmalloc (size_t num);
32671473d951Smrgchar *xstrdup (const char *string);
32681473d951Smrgconst char *base_name (const char *name);
32691473d951Smrgchar *find_executable (const char *wrapper);
32701473d951Smrgchar *chase_symlinks (const char *pathspec);
32711473d951Smrgint make_executable (const char *path);
32721473d951Smrgint check_executable (const char *path);
32731473d951Smrgchar *strendzap (char *str, const char *pat);
32741473d951Smrgvoid lt_fatal (const char *message, ...);
32751473d951Smrgvoid lt_setenv (const char *name, const char *value);
32761473d951Smrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
32771473d951Smrgvoid lt_opt_process_env_set (const char *arg);
32781473d951Smrgvoid lt_opt_process_env_prepend (const char *arg);
32791473d951Smrgvoid lt_opt_process_env_append (const char *arg);
32801473d951Smrgint lt_split_name_value (const char *arg, char** name, char** value);
32811473d951Smrgvoid lt_update_exe_path (const char *name, const char *value);
32821473d951Smrgvoid lt_update_lib_path (const char *name, const char *value);
32831473d951Smrg
32841473d951Smrgstatic const char *script_text_part1 =
32851473d951SmrgEOF
3286ab47cfaaSmrg
32871473d951Smrg	    func_emit_wrapper_part1 yes |
32881473d951Smrg	        $SED -e 's/\([\\"]\)/\\\1/g' \
32891473d951Smrg	             -e 's/^/  "/' -e 's/$/\\n"/'
32901473d951Smrg	    echo ";"
32911473d951Smrg	    cat <<EOF
3292ab47cfaaSmrg
32931473d951Smrgstatic const char *script_text_part2 =
32941473d951SmrgEOF
32951473d951Smrg	    func_emit_wrapper_part2 yes |
32961473d951Smrg	        $SED -e 's/\([\\"]\)/\\\1/g' \
32971473d951Smrg	             -e 's/^/  "/' -e 's/$/\\n"/'
32981473d951Smrg	    echo ";"
32991473d951Smrg
33001473d951Smrg	    cat <<EOF
33011473d951Smrgconst char * MAGIC_EXE = "$magic_exe";
33021473d951Smrgconst char * LIB_PATH_VARNAME = "$shlibpath_var";
33031473d951SmrgEOF
3304ab47cfaaSmrg
33051473d951Smrg	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
33061473d951Smrg              func_to_host_pathlist "$temp_rpath"
33071473d951Smrg	      cat <<EOF
33081473d951Smrgconst char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
33091473d951SmrgEOF
33101473d951Smrg	    else
33111473d951Smrg	      cat <<"EOF"
33121473d951Smrgconst char * LIB_PATH_VALUE   = "";
33131473d951SmrgEOF
33141473d951Smrg	    fi
3315ab47cfaaSmrg
33161473d951Smrg	    if test -n "$dllsearchpath"; then
33171473d951Smrg              func_to_host_pathlist "$dllsearchpath:"
33181473d951Smrg	      cat <<EOF
33191473d951Smrgconst char * EXE_PATH_VARNAME = "PATH";
33201473d951Smrgconst char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
33211473d951SmrgEOF
33221473d951Smrg	    else
33231473d951Smrg	      cat <<"EOF"
33241473d951Smrgconst char * EXE_PATH_VARNAME = "";
33251473d951Smrgconst char * EXE_PATH_VALUE   = "";
33261473d951SmrgEOF
33271473d951Smrg	    fi
3328ab47cfaaSmrg
33291473d951Smrg	    if test "$fast_install" = yes; then
33301473d951Smrg	      cat <<EOF
33311473d951Smrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
33321473d951SmrgEOF
33331473d951Smrg	    else
33341473d951Smrg	      cat <<EOF
33351473d951Smrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
33361473d951SmrgEOF
33371473d951Smrg	    fi
3338ab47cfaaSmrg
3339ab47cfaaSmrg
33401473d951Smrg	    cat <<"EOF"
3341ab47cfaaSmrg
33421473d951Smrg#define LTWRAPPER_OPTION_PREFIX         "--lt-"
33431473d951Smrg#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
3344ab47cfaaSmrg
33451473d951Smrgstatic const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
33461473d951Smrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
33471473d951Smrg
33481473d951Smrgstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
33491473d951Smrg
33501473d951Smrgstatic const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
33511473d951Smrgstatic const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
33521473d951Smrg  /* argument is putenv-style "foo=bar", value of foo is set to bar */
33531473d951Smrg
33541473d951Smrgstatic const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
33551473d951Smrgstatic const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
33561473d951Smrg  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
33571473d951Smrg
33581473d951Smrgstatic const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
33591473d951Smrgstatic const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
33601473d951Smrg  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
33611473d951Smrg
33621473d951Smrgint
33631473d951Smrgmain (int argc, char *argv[])
33641473d951Smrg{
33651473d951Smrg  char **newargz;
33661473d951Smrg  int  newargc;
33671473d951Smrg  char *tmp_pathspec;
33681473d951Smrg  char *actual_cwrapper_path;
33691473d951Smrg  char *actual_cwrapper_name;
33701473d951Smrg  char *target_name;
33711473d951Smrg  char *lt_argv_zero;
33721473d951Smrg  intptr_t rval = 127;
33731473d951Smrg
33741473d951Smrg  int i;
33751473d951Smrg
33761473d951Smrg  program_name = (char *) xstrdup (base_name (argv[0]));
33771473d951Smrg  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
33781473d951Smrg  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
33791473d951Smrg
33801473d951Smrg  /* very simple arg parsing; don't want to rely on getopt */
33811473d951Smrg  for (i = 1; i < argc; i++)
33821473d951Smrg    {
33831473d951Smrg      if (strcmp (argv[i], dumpscript_opt) == 0)
33841473d951Smrg	{
33851473d951SmrgEOF
33861473d951Smrg	    case "$host" in
33871473d951Smrg	      *mingw* | *cygwin* )
33881473d951Smrg		# make stdout use "unix" line endings
33891473d951Smrg		echo "          setmode(1,_O_BINARY);"
33901473d951Smrg		;;
33911473d951Smrg	      esac
33921473d951Smrg
33931473d951Smrg	    cat <<"EOF"
33941473d951Smrg	  printf ("%s", script_text_part1);
33951473d951Smrg	  printf ("%s", script_text_part2);
33961473d951Smrg	  return 0;
33971473d951Smrg	}
33981473d951Smrg    }
33991473d951Smrg
34001473d951Smrg  newargz = XMALLOC (char *, argc + 1);
34011473d951Smrg  tmp_pathspec = find_executable (argv[0]);
34021473d951Smrg  if (tmp_pathspec == NULL)
34031473d951Smrg    lt_fatal ("Couldn't find %s", argv[0]);
34041473d951Smrg  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
34051473d951Smrg			  tmp_pathspec));
34061473d951Smrg
34071473d951Smrg  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
34081473d951Smrg  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
34091473d951Smrg			  actual_cwrapper_path));
34101473d951Smrg  XFREE (tmp_pathspec);
34111473d951Smrg
34121473d951Smrg  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
34131473d951Smrg  strendzap (actual_cwrapper_path, actual_cwrapper_name);
34141473d951Smrg
34151473d951Smrg  /* wrapper name transforms */
34161473d951Smrg  strendzap (actual_cwrapper_name, ".exe");
34171473d951Smrg  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
34181473d951Smrg  XFREE (actual_cwrapper_name);
34191473d951Smrg  actual_cwrapper_name = tmp_pathspec;
34201473d951Smrg  tmp_pathspec = 0;
34211473d951Smrg
34221473d951Smrg  /* target_name transforms -- use actual target program name; might have lt- prefix */
34231473d951Smrg  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
34241473d951Smrg  strendzap (target_name, ".exe");
34251473d951Smrg  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
34261473d951Smrg  XFREE (target_name);
34271473d951Smrg  target_name = tmp_pathspec;
34281473d951Smrg  tmp_pathspec = 0;
34291473d951Smrg
34301473d951Smrg  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
34311473d951Smrg			  target_name));
34321473d951SmrgEOF
34331473d951Smrg
34341473d951Smrg	    cat <<EOF
34351473d951Smrg  newargz[0] =
34361473d951Smrg    XMALLOC (char, (strlen (actual_cwrapper_path) +
34371473d951Smrg		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
34381473d951Smrg  strcpy (newargz[0], actual_cwrapper_path);
34391473d951Smrg  strcat (newargz[0], "$objdir");
34401473d951Smrg  strcat (newargz[0], "/");
34411473d951SmrgEOF
34421473d951Smrg
34431473d951Smrg	    cat <<"EOF"
34441473d951Smrg  /* stop here, and copy so we don't have to do this twice */
34451473d951Smrg  tmp_pathspec = xstrdup (newargz[0]);
34461473d951Smrg
34471473d951Smrg  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
34481473d951Smrg  strcat (newargz[0], actual_cwrapper_name);
34491473d951Smrg
34501473d951Smrg  /* DO want the lt- prefix here if it exists, so use target_name */
34511473d951Smrg  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
34521473d951Smrg  XFREE (tmp_pathspec);
34531473d951Smrg  tmp_pathspec = NULL;
34541473d951SmrgEOF
34551473d951Smrg
34561473d951Smrg	    case $host_os in
34571473d951Smrg	      mingw*)
34581473d951Smrg	    cat <<"EOF"
34591473d951Smrg  {
34601473d951Smrg    char* p;
34611473d951Smrg    while ((p = strchr (newargz[0], '\\')) != NULL)
34621473d951Smrg      {
34631473d951Smrg	*p = '/';
34641473d951Smrg      }
34651473d951Smrg    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
34661473d951Smrg      {
34671473d951Smrg	*p = '/';
34681473d951Smrg      }
34691473d951Smrg  }
34701473d951SmrgEOF
3471ab47cfaaSmrg	    ;;
34721473d951Smrg	    esac
34731473d951Smrg
34741473d951Smrg	    cat <<"EOF"
34751473d951Smrg  XFREE (target_name);
34761473d951Smrg  XFREE (actual_cwrapper_path);
34771473d951Smrg  XFREE (actual_cwrapper_name);
34781473d951Smrg
34791473d951Smrg  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
34801473d951Smrg  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
34811473d951Smrg  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
34821473d951Smrg  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
34831473d951Smrg
34841473d951Smrg  newargc=0;
34851473d951Smrg  for (i = 1; i < argc; i++)
34861473d951Smrg    {
34871473d951Smrg      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
34881473d951Smrg        {
34891473d951Smrg          if (argv[i][env_set_opt_len] == '=')
34901473d951Smrg            {
34911473d951Smrg              const char *p = argv[i] + env_set_opt_len + 1;
34921473d951Smrg              lt_opt_process_env_set (p);
34931473d951Smrg            }
34941473d951Smrg          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
34951473d951Smrg            {
34961473d951Smrg              lt_opt_process_env_set (argv[++i]); /* don't copy */
34971473d951Smrg            }
34981473d951Smrg          else
34991473d951Smrg            lt_fatal ("%s missing required argument", env_set_opt);
35001473d951Smrg          continue;
35011473d951Smrg        }
35021473d951Smrg      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
35031473d951Smrg        {
35041473d951Smrg          if (argv[i][env_prepend_opt_len] == '=')
35051473d951Smrg            {
35061473d951Smrg              const char *p = argv[i] + env_prepend_opt_len + 1;
35071473d951Smrg              lt_opt_process_env_prepend (p);
35081473d951Smrg            }
35091473d951Smrg          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
35101473d951Smrg            {
35111473d951Smrg              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
35121473d951Smrg            }
35131473d951Smrg          else
35141473d951Smrg            lt_fatal ("%s missing required argument", env_prepend_opt);
35151473d951Smrg          continue;
35161473d951Smrg        }
35171473d951Smrg      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
35181473d951Smrg        {
35191473d951Smrg          if (argv[i][env_append_opt_len] == '=')
35201473d951Smrg            {
35211473d951Smrg              const char *p = argv[i] + env_append_opt_len + 1;
35221473d951Smrg              lt_opt_process_env_append (p);
35231473d951Smrg            }
35241473d951Smrg          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
35251473d951Smrg            {
35261473d951Smrg              lt_opt_process_env_append (argv[++i]); /* don't copy */
35271473d951Smrg            }
35281473d951Smrg          else
35291473d951Smrg            lt_fatal ("%s missing required argument", env_append_opt);
35301473d951Smrg          continue;
35311473d951Smrg        }
35321473d951Smrg      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
35331473d951Smrg        {
35341473d951Smrg          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
35351473d951Smrg             namespace, but it is not one of the ones we know about and
35361473d951Smrg             have already dealt with, above (inluding dump-script), then
35371473d951Smrg             report an error. Otherwise, targets might begin to believe
35381473d951Smrg             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
35391473d951Smrg             namespace. The first time any user complains about this, we'll
35401473d951Smrg             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
35411473d951Smrg             or a configure.ac-settable value.
35421473d951Smrg           */
35431473d951Smrg          lt_fatal ("Unrecognized option in %s namespace: '%s'",
35441473d951Smrg                    ltwrapper_option_prefix, argv[i]);
35451473d951Smrg        }
35461473d951Smrg      /* otherwise ... */
35471473d951Smrg      newargz[++newargc] = xstrdup (argv[i]);
35481473d951Smrg    }
35491473d951Smrg  newargz[++newargc] = NULL;
35501473d951Smrg
35511473d951Smrg  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
35521473d951Smrg  for (i = 0; i < newargc; i++)
35531473d951Smrg    {
35541473d951Smrg      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
35551473d951Smrg    }
3556ab47cfaaSmrg
3557ab47cfaaSmrgEOF
3558ab47cfaaSmrg
35591473d951Smrg	    case $host_os in
35601473d951Smrg	      mingw*)
35611473d951Smrg		cat <<"EOF"
35621473d951Smrg  /* execv doesn't actually work on mingw as expected on unix */
35631473d951Smrg  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
35641473d951Smrg  if (rval == -1)
35651473d951Smrg    {
35661473d951Smrg      /* failed to start process */
35671473d951Smrg      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
35681473d951Smrg      return 127;
35691473d951Smrg    }
35701473d951Smrg  return rval;
35711473d951SmrgEOF
35721473d951Smrg		;;
35731473d951Smrg	      *)
35741473d951Smrg		cat <<"EOF"
35751473d951Smrg  execv (lt_argv_zero, newargz);
35761473d951Smrg  return rval; /* =127, but avoids unused variable warning */
35771473d951SmrgEOF
35781473d951Smrg		;;
35791473d951Smrg	    esac
3580ab47cfaaSmrg
35811473d951Smrg	    cat <<"EOF"
35821473d951Smrg}
3583ab47cfaaSmrg
35841473d951Smrgvoid *
35851473d951Smrgxmalloc (size_t num)
35861473d951Smrg{
35871473d951Smrg  void *p = (void *) malloc (num);
35881473d951Smrg  if (!p)
35891473d951Smrg    lt_fatal ("Memory exhausted");
3590ab47cfaaSmrg
35911473d951Smrg  return p;
35921473d951Smrg}
3593ab47cfaaSmrg
35941473d951Smrgchar *
35951473d951Smrgxstrdup (const char *string)
35961473d951Smrg{
35971473d951Smrg  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
35981473d951Smrg			  string) : NULL;
35991473d951Smrg}
3600ab47cfaaSmrg
36011473d951Smrgconst char *
36021473d951Smrgbase_name (const char *name)
36031473d951Smrg{
36041473d951Smrg  const char *base;
3605ab47cfaaSmrg
36061473d951Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36071473d951Smrg  /* Skip over the disk name in MSDOS pathnames. */
36081473d951Smrg  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
36091473d951Smrg    name += 2;
36101473d951Smrg#endif
3611ab47cfaaSmrg
36121473d951Smrg  for (base = name; *name; name++)
36131473d951Smrg    if (IS_DIR_SEPARATOR (*name))
36141473d951Smrg      base = name + 1;
36151473d951Smrg  return base;
36161473d951Smrg}
3617ab47cfaaSmrg
36181473d951Smrgint
36191473d951Smrgcheck_executable (const char *path)
36201473d951Smrg{
36211473d951Smrg  struct stat st;
3622ab47cfaaSmrg
36231473d951Smrg  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
36241473d951Smrg			  path ? (*path ? path : "EMPTY!") : "NULL!"));
36251473d951Smrg  if ((!path) || (!*path))
36261473d951Smrg    return 0;
3627ab47cfaaSmrg
36281473d951Smrg  if ((stat (path, &st) >= 0)
36291473d951Smrg      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
36301473d951Smrg    return 1;
36311473d951Smrg  else
36321473d951Smrg    return 0;
36331473d951Smrg}
3634ab47cfaaSmrg
36351473d951Smrgint
36361473d951Smrgmake_executable (const char *path)
36371473d951Smrg{
36381473d951Smrg  int rval = 0;
36391473d951Smrg  struct stat st;
3640ab47cfaaSmrg
36411473d951Smrg  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
36421473d951Smrg			  path ? (*path ? path : "EMPTY!") : "NULL!"));
36431473d951Smrg  if ((!path) || (!*path))
36441473d951Smrg    return 0;
3645ab47cfaaSmrg
36461473d951Smrg  if (stat (path, &st) >= 0)
36471473d951Smrg    {
36481473d951Smrg      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
36491473d951Smrg    }
36501473d951Smrg  return rval;
36511473d951Smrg}
3652ab47cfaaSmrg
36531473d951Smrg/* Searches for the full path of the wrapper.  Returns
36541473d951Smrg   newly allocated full path name if found, NULL otherwise
36551473d951Smrg   Does not chase symlinks, even on platforms that support them.
36561473d951Smrg*/
36571473d951Smrgchar *
36581473d951Smrgfind_executable (const char *wrapper)
36591473d951Smrg{
36601473d951Smrg  int has_slash = 0;
36611473d951Smrg  const char *p;
36621473d951Smrg  const char *p_next;
36631473d951Smrg  /* static buffer for getcwd */
36641473d951Smrg  char tmp[LT_PATHMAX + 1];
36651473d951Smrg  int tmp_len;
36661473d951Smrg  char *concat_name;
3667ab47cfaaSmrg
36681473d951Smrg  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
36691473d951Smrg			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
3670ab47cfaaSmrg
36711473d951Smrg  if ((wrapper == NULL) || (*wrapper == '\0'))
36721473d951Smrg    return NULL;
3673ab47cfaaSmrg
36741473d951Smrg  /* Absolute path? */
36751473d951Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36761473d951Smrg  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
36771473d951Smrg    {
36781473d951Smrg      concat_name = xstrdup (wrapper);
36791473d951Smrg      if (check_executable (concat_name))
36801473d951Smrg	return concat_name;
36811473d951Smrg      XFREE (concat_name);
36821473d951Smrg    }
36831473d951Smrg  else
36841473d951Smrg    {
36851473d951Smrg#endif
36861473d951Smrg      if (IS_DIR_SEPARATOR (wrapper[0]))
36871473d951Smrg	{
36881473d951Smrg	  concat_name = xstrdup (wrapper);
36891473d951Smrg	  if (check_executable (concat_name))
36901473d951Smrg	    return concat_name;
36911473d951Smrg	  XFREE (concat_name);
36921473d951Smrg	}
36931473d951Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36941473d951Smrg    }
36951473d951Smrg#endif
3696ab47cfaaSmrg
36971473d951Smrg  for (p = wrapper; *p; p++)
36981473d951Smrg    if (*p == '/')
36991473d951Smrg      {
37001473d951Smrg	has_slash = 1;
37011473d951Smrg	break;
37021473d951Smrg      }
37031473d951Smrg  if (!has_slash)
37041473d951Smrg    {
37051473d951Smrg      /* no slashes; search PATH */
37061473d951Smrg      const char *path = getenv ("PATH");
37071473d951Smrg      if (path != NULL)
37081473d951Smrg	{
37091473d951Smrg	  for (p = path; *p; p = p_next)
37101473d951Smrg	    {
37111473d951Smrg	      const char *q;
37121473d951Smrg	      size_t p_len;
37131473d951Smrg	      for (q = p; *q; q++)
37141473d951Smrg		if (IS_PATH_SEPARATOR (*q))
37151473d951Smrg		  break;
37161473d951Smrg	      p_len = q - p;
37171473d951Smrg	      p_next = (*q == '\0' ? q : q + 1);
37181473d951Smrg	      if (p_len == 0)
37191473d951Smrg		{
37201473d951Smrg		  /* empty path: current directory */
37211473d951Smrg		  if (getcwd (tmp, LT_PATHMAX) == NULL)
37221473d951Smrg		    lt_fatal ("getcwd failed");
37231473d951Smrg		  tmp_len = strlen (tmp);
37241473d951Smrg		  concat_name =
37251473d951Smrg		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
37261473d951Smrg		  memcpy (concat_name, tmp, tmp_len);
37271473d951Smrg		  concat_name[tmp_len] = '/';
37281473d951Smrg		  strcpy (concat_name + tmp_len + 1, wrapper);
37291473d951Smrg		}
37301473d951Smrg	      else
37311473d951Smrg		{
37321473d951Smrg		  concat_name =
37331473d951Smrg		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
37341473d951Smrg		  memcpy (concat_name, p, p_len);
37351473d951Smrg		  concat_name[p_len] = '/';
37361473d951Smrg		  strcpy (concat_name + p_len + 1, wrapper);
37371473d951Smrg		}
37381473d951Smrg	      if (check_executable (concat_name))
37391473d951Smrg		return concat_name;
37401473d951Smrg	      XFREE (concat_name);
37411473d951Smrg	    }
37421473d951Smrg	}
37431473d951Smrg      /* not found in PATH; assume curdir */
37441473d951Smrg    }
37451473d951Smrg  /* Relative path | not found in path: prepend cwd */
37461473d951Smrg  if (getcwd (tmp, LT_PATHMAX) == NULL)
37471473d951Smrg    lt_fatal ("getcwd failed");
37481473d951Smrg  tmp_len = strlen (tmp);
37491473d951Smrg  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
37501473d951Smrg  memcpy (concat_name, tmp, tmp_len);
37511473d951Smrg  concat_name[tmp_len] = '/';
37521473d951Smrg  strcpy (concat_name + tmp_len + 1, wrapper);
3753ab47cfaaSmrg
37541473d951Smrg  if (check_executable (concat_name))
37551473d951Smrg    return concat_name;
37561473d951Smrg  XFREE (concat_name);
37571473d951Smrg  return NULL;
37581473d951Smrg}
3759ab47cfaaSmrg
37601473d951Smrgchar *
37611473d951Smrgchase_symlinks (const char *pathspec)
37621473d951Smrg{
37631473d951Smrg#ifndef S_ISLNK
37641473d951Smrg  return xstrdup (pathspec);
37651473d951Smrg#else
37661473d951Smrg  char buf[LT_PATHMAX];
37671473d951Smrg  struct stat s;
37681473d951Smrg  char *tmp_pathspec = xstrdup (pathspec);
37691473d951Smrg  char *p;
37701473d951Smrg  int has_symlinks = 0;
37711473d951Smrg  while (strlen (tmp_pathspec) && !has_symlinks)
37721473d951Smrg    {
37731473d951Smrg      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
37741473d951Smrg			      tmp_pathspec));
37751473d951Smrg      if (lstat (tmp_pathspec, &s) == 0)
37761473d951Smrg	{
37771473d951Smrg	  if (S_ISLNK (s.st_mode) != 0)
37781473d951Smrg	    {
37791473d951Smrg	      has_symlinks = 1;
37801473d951Smrg	      break;
37811473d951Smrg	    }
3782ab47cfaaSmrg
37831473d951Smrg	  /* search backwards for last DIR_SEPARATOR */
37841473d951Smrg	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
37851473d951Smrg	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
37861473d951Smrg	    p--;
37871473d951Smrg	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
37881473d951Smrg	    {
37891473d951Smrg	      /* no more DIR_SEPARATORS left */
37901473d951Smrg	      break;
37911473d951Smrg	    }
37921473d951Smrg	  *p = '\0';
37931473d951Smrg	}
37941473d951Smrg      else
37951473d951Smrg	{
37961473d951Smrg	  char *errstr = strerror (errno);
37971473d951Smrg	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
37981473d951Smrg	}
37991473d951Smrg    }
38001473d951Smrg  XFREE (tmp_pathspec);
3801ab47cfaaSmrg
38021473d951Smrg  if (!has_symlinks)
38031473d951Smrg    {
38041473d951Smrg      return xstrdup (pathspec);
38051473d951Smrg    }
3806ab47cfaaSmrg
38071473d951Smrg  tmp_pathspec = realpath (pathspec, buf);
38081473d951Smrg  if (tmp_pathspec == 0)
38091473d951Smrg    {
38101473d951Smrg      lt_fatal ("Could not follow symlinks for %s", pathspec);
38111473d951Smrg    }
38121473d951Smrg  return xstrdup (tmp_pathspec);
38131473d951Smrg#endif
38141473d951Smrg}
3815ab47cfaaSmrg
38161473d951Smrgchar *
38171473d951Smrgstrendzap (char *str, const char *pat)
38181473d951Smrg{
38191473d951Smrg  size_t len, patlen;
3820ab47cfaaSmrg
38211473d951Smrg  assert (str != NULL);
38221473d951Smrg  assert (pat != NULL);
3823ab47cfaaSmrg
38241473d951Smrg  len = strlen (str);
38251473d951Smrg  patlen = strlen (pat);
3826ab47cfaaSmrg
38271473d951Smrg  if (patlen <= len)
38281473d951Smrg    {
38291473d951Smrg      str += len - patlen;
38301473d951Smrg      if (strcmp (str, pat) == 0)
38311473d951Smrg	*str = '\0';
38321473d951Smrg    }
38331473d951Smrg  return str;
38341473d951Smrg}
3835ab47cfaaSmrg
38361473d951Smrgstatic void
38371473d951Smrglt_error_core (int exit_status, const char *mode,
38381473d951Smrg	       const char *message, va_list ap)
38391473d951Smrg{
38401473d951Smrg  fprintf (stderr, "%s: %s: ", program_name, mode);
38411473d951Smrg  vfprintf (stderr, message, ap);
38421473d951Smrg  fprintf (stderr, ".\n");
3843ab47cfaaSmrg
38441473d951Smrg  if (exit_status >= 0)
38451473d951Smrg    exit (exit_status);
38461473d951Smrg}
3847ab47cfaaSmrg
38481473d951Smrgvoid
38491473d951Smrglt_fatal (const char *message, ...)
38501473d951Smrg{
38511473d951Smrg  va_list ap;
38521473d951Smrg  va_start (ap, message);
38531473d951Smrg  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
38541473d951Smrg  va_end (ap);
38551473d951Smrg}
3856ab47cfaaSmrg
38571473d951Smrgvoid
38581473d951Smrglt_setenv (const char *name, const char *value)
38591473d951Smrg{
38601473d951Smrg  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
38611473d951Smrg                          (name ? name : "<NULL>"),
38621473d951Smrg                          (value ? value : "<NULL>")));
38631473d951Smrg  {
38641473d951Smrg#ifdef HAVE_SETENV
38651473d951Smrg    /* always make a copy, for consistency with !HAVE_SETENV */
38661473d951Smrg    char *str = xstrdup (value);
38671473d951Smrg    setenv (name, str, 1);
38681473d951Smrg#else
38691473d951Smrg    int len = strlen (name) + 1 + strlen (value) + 1;
38701473d951Smrg    char *str = XMALLOC (char, len);
38711473d951Smrg    sprintf (str, "%s=%s", name, value);
38721473d951Smrg    if (putenv (str) != EXIT_SUCCESS)
38731473d951Smrg      {
38741473d951Smrg        XFREE (str);
38751473d951Smrg      }
38761473d951Smrg#endif
38771473d951Smrg  }
38781473d951Smrg}
3879ab47cfaaSmrg
38801473d951Smrgchar *
38811473d951Smrglt_extend_str (const char *orig_value, const char *add, int to_end)
38821473d951Smrg{
38831473d951Smrg  char *new_value;
38841473d951Smrg  if (orig_value && *orig_value)
38851473d951Smrg    {
38861473d951Smrg      int orig_value_len = strlen (orig_value);
38871473d951Smrg      int add_len = strlen (add);
38881473d951Smrg      new_value = XMALLOC (char, add_len + orig_value_len + 1);
38891473d951Smrg      if (to_end)
38901473d951Smrg        {
38911473d951Smrg          strcpy (new_value, orig_value);
38921473d951Smrg          strcpy (new_value + orig_value_len, add);
38931473d951Smrg        }
38941473d951Smrg      else
38951473d951Smrg        {
38961473d951Smrg          strcpy (new_value, add);
38971473d951Smrg          strcpy (new_value + add_len, orig_value);
38981473d951Smrg        }
38991473d951Smrg    }
39001473d951Smrg  else
39011473d951Smrg    {
39021473d951Smrg      new_value = xstrdup (add);
39031473d951Smrg    }
39041473d951Smrg  return new_value;
39051473d951Smrg}
3906ab47cfaaSmrg
39071473d951Smrgint
39081473d951Smrglt_split_name_value (const char *arg, char** name, char** value)
39091473d951Smrg{
39101473d951Smrg  const char *p;
39111473d951Smrg  int len;
39121473d951Smrg  if (!arg || !*arg)
39131473d951Smrg    return 1;
3914ab47cfaaSmrg
39151473d951Smrg  p = strchr (arg, (int)'=');
3916ab47cfaaSmrg
39171473d951Smrg  if (!p)
39181473d951Smrg    return 1;
3919ab47cfaaSmrg
39201473d951Smrg  *value = xstrdup (++p);
3921ab47cfaaSmrg
39221473d951Smrg  len = strlen (arg) - strlen (*value);
39231473d951Smrg  *name = XMALLOC (char, len);
39241473d951Smrg  strncpy (*name, arg, len-1);
39251473d951Smrg  (*name)[len - 1] = '\0';
3926ab47cfaaSmrg
39271473d951Smrg  return 0;
39281473d951Smrg}
3929ab47cfaaSmrg
39301473d951Smrgvoid
39311473d951Smrglt_opt_process_env_set (const char *arg)
39321473d951Smrg{
39331473d951Smrg  char *name = NULL;
39341473d951Smrg  char *value = NULL;
3935ab47cfaaSmrg
39361473d951Smrg  if (lt_split_name_value (arg, &name, &value) != 0)
39371473d951Smrg    {
39381473d951Smrg      XFREE (name);
39391473d951Smrg      XFREE (value);
39401473d951Smrg      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
39411473d951Smrg    }
3942ab47cfaaSmrg
39431473d951Smrg  lt_setenv (name, value);
39441473d951Smrg  XFREE (name);
39451473d951Smrg  XFREE (value);
39461473d951Smrg}
3947ab47cfaaSmrg
39481473d951Smrgvoid
39491473d951Smrglt_opt_process_env_prepend (const char *arg)
39501473d951Smrg{
39511473d951Smrg  char *name = NULL;
39521473d951Smrg  char *value = NULL;
39531473d951Smrg  char *new_value = NULL;
3954ab47cfaaSmrg
39551473d951Smrg  if (lt_split_name_value (arg, &name, &value) != 0)
39561473d951Smrg    {
39571473d951Smrg      XFREE (name);
39581473d951Smrg      XFREE (value);
39591473d951Smrg      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
39601473d951Smrg    }
3961ab47cfaaSmrg
39621473d951Smrg  new_value = lt_extend_str (getenv (name), value, 0);
39631473d951Smrg  lt_setenv (name, new_value);
39641473d951Smrg  XFREE (new_value);
39651473d951Smrg  XFREE (name);
39661473d951Smrg  XFREE (value);
39671473d951Smrg}
3968ab47cfaaSmrg
39691473d951Smrgvoid
39701473d951Smrglt_opt_process_env_append (const char *arg)
39711473d951Smrg{
39721473d951Smrg  char *name = NULL;
39731473d951Smrg  char *value = NULL;
39741473d951Smrg  char *new_value = NULL;
3975ab47cfaaSmrg
39761473d951Smrg  if (lt_split_name_value (arg, &name, &value) != 0)
39771473d951Smrg    {
39781473d951Smrg      XFREE (name);
39791473d951Smrg      XFREE (value);
39801473d951Smrg      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
39811473d951Smrg    }
3982ab47cfaaSmrg
39831473d951Smrg  new_value = lt_extend_str (getenv (name), value, 1);
39841473d951Smrg  lt_setenv (name, new_value);
39851473d951Smrg  XFREE (new_value);
39861473d951Smrg  XFREE (name);
39871473d951Smrg  XFREE (value);
39881473d951Smrg}
3989ab47cfaaSmrg
39901473d951Smrgvoid
39911473d951Smrglt_update_exe_path (const char *name, const char *value)
39921473d951Smrg{
39931473d951Smrg  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
39941473d951Smrg                          (name ? name : "<NULL>"),
39951473d951Smrg                          (value ? value : "<NULL>")));
3996ab47cfaaSmrg
39971473d951Smrg  if (name && *name && value && *value)
39981473d951Smrg    {
39991473d951Smrg      char *new_value = lt_extend_str (getenv (name), value, 0);
40001473d951Smrg      /* some systems can't cope with a ':'-terminated path #' */
40011473d951Smrg      int len = strlen (new_value);
40021473d951Smrg      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
40031473d951Smrg        {
40041473d951Smrg          new_value[len-1] = '\0';
40051473d951Smrg        }
40061473d951Smrg      lt_setenv (name, new_value);
40071473d951Smrg      XFREE (new_value);
40081473d951Smrg    }
40091473d951Smrg}
4010ab47cfaaSmrg
40111473d951Smrgvoid
40121473d951Smrglt_update_lib_path (const char *name, const char *value)
40131473d951Smrg{
40141473d951Smrg  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
40151473d951Smrg                          (name ? name : "<NULL>"),
40161473d951Smrg                          (value ? value : "<NULL>")));
4017ab47cfaaSmrg
40181473d951Smrg  if (name && *name && value && *value)
40191473d951Smrg    {
40201473d951Smrg      char *new_value = lt_extend_str (getenv (name), value, 0);
40211473d951Smrg      lt_setenv (name, new_value);
40221473d951Smrg      XFREE (new_value);
40231473d951Smrg    }
40241473d951Smrg}
4025ab47cfaaSmrg
4026ab47cfaaSmrg
40271473d951SmrgEOF
40281473d951Smrg}
40291473d951Smrg# end: func_emit_cwrapperexe_src
4030ab47cfaaSmrg
40311473d951Smrg# func_mode_link arg...
40321473d951Smrgfunc_mode_link ()
40331473d951Smrg{
40341473d951Smrg    $opt_debug
40351473d951Smrg    case $host in
40361473d951Smrg    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
40371473d951Smrg      # It is impossible to link a dll without this setting, and
40381473d951Smrg      # we shouldn't force the makefile maintainer to figure out
40391473d951Smrg      # which system we are compiling for in order to pass an extra
40401473d951Smrg      # flag for every libtool invocation.
40411473d951Smrg      # allow_undefined=no
4042ab47cfaaSmrg
40431473d951Smrg      # FIXME: Unfortunately, there are problems with the above when trying
40441473d951Smrg      # to make a dll which has undefined symbols, in which case not
40451473d951Smrg      # even a static library is built.  For now, we need to specify
40461473d951Smrg      # -no-undefined on the libtool link line when we can be certain
40471473d951Smrg      # that all symbols are satisfied, otherwise we get a static library.
40481473d951Smrg      allow_undefined=yes
40491473d951Smrg      ;;
40501473d951Smrg    *)
40511473d951Smrg      allow_undefined=yes
40521473d951Smrg      ;;
40531473d951Smrg    esac
40541473d951Smrg    libtool_args=$nonopt
40551473d951Smrg    base_compile="$nonopt $@"
40561473d951Smrg    compile_command=$nonopt
40571473d951Smrg    finalize_command=$nonopt
4058ab47cfaaSmrg
40591473d951Smrg    compile_rpath=
40601473d951Smrg    finalize_rpath=
40611473d951Smrg    compile_shlibpath=
40621473d951Smrg    finalize_shlibpath=
40631473d951Smrg    convenience=
40641473d951Smrg    old_convenience=
40651473d951Smrg    deplibs=
40661473d951Smrg    old_deplibs=
40671473d951Smrg    compiler_flags=
40681473d951Smrg    linker_flags=
40691473d951Smrg    dllsearchpath=
40701473d951Smrg    lib_search_path=`pwd`
40711473d951Smrg    inst_prefix_dir=
40721473d951Smrg    new_inherited_linker_flags=
4073ab47cfaaSmrg
40741473d951Smrg    avoid_version=no
40751473d951Smrg    dlfiles=
40761473d951Smrg    dlprefiles=
40771473d951Smrg    dlself=no
40781473d951Smrg    export_dynamic=no
40791473d951Smrg    export_symbols=
40801473d951Smrg    export_symbols_regex=
40811473d951Smrg    generated=
40821473d951Smrg    libobjs=
40831473d951Smrg    ltlibs=
40841473d951Smrg    module=no
40851473d951Smrg    no_install=no
40861473d951Smrg    objs=
40871473d951Smrg    non_pic_objects=
40881473d951Smrg    precious_files_regex=
40891473d951Smrg    prefer_static_libs=no
40901473d951Smrg    preload=no
40911473d951Smrg    prev=
40921473d951Smrg    prevarg=
40931473d951Smrg    release=
40941473d951Smrg    rpath=
40951473d951Smrg    xrpath=
40961473d951Smrg    perm_rpath=
40971473d951Smrg    temp_rpath=
40981473d951Smrg    thread_safe=no
40991473d951Smrg    vinfo=
41001473d951Smrg    vinfo_number=no
41011473d951Smrg    weak_libs=
41021473d951Smrg    single_module="${wl}-single_module"
41031473d951Smrg    func_infer_tag $base_compile
4104ab47cfaaSmrg
41051473d951Smrg    # We need to know -static, to get the right output filenames.
41061473d951Smrg    for arg
41071473d951Smrg    do
41081473d951Smrg      case $arg in
41091473d951Smrg      -shared)
41101473d951Smrg	test "$build_libtool_libs" != yes && \
41111473d951Smrg	  func_fatal_configuration "can not build a shared library"
41121473d951Smrg	build_old_libs=no
41131473d951Smrg	break
41141473d951Smrg	;;
41151473d951Smrg      -all-static | -static | -static-libtool-libs)
41161473d951Smrg	case $arg in
41171473d951Smrg	-all-static)
41181473d951Smrg	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
41191473d951Smrg	    func_warning "complete static linking is impossible in this configuration"
41201473d951Smrg	  fi
41211473d951Smrg	  if test -n "$link_static_flag"; then
41221473d951Smrg	    dlopen_self=$dlopen_self_static
41231473d951Smrg	  fi
41241473d951Smrg	  prefer_static_libs=yes
41251473d951Smrg	  ;;
41261473d951Smrg	-static)
41271473d951Smrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
41281473d951Smrg	    dlopen_self=$dlopen_self_static
41291473d951Smrg	  fi
41301473d951Smrg	  prefer_static_libs=built
41311473d951Smrg	  ;;
41321473d951Smrg	-static-libtool-libs)
41331473d951Smrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
41341473d951Smrg	    dlopen_self=$dlopen_self_static
41351473d951Smrg	  fi
41361473d951Smrg	  prefer_static_libs=yes
41371473d951Smrg	  ;;
41381473d951Smrg	esac
41391473d951Smrg	build_libtool_libs=no
41401473d951Smrg	build_old_libs=yes
41411473d951Smrg	break
4142ab47cfaaSmrg	;;
4143ab47cfaaSmrg      esac
41441473d951Smrg    done
4145ab47cfaaSmrg
41461473d951Smrg    # See if our shared archives depend on static archives.
41471473d951Smrg    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
4148ab47cfaaSmrg
41491473d951Smrg    # Go through the arguments, transforming them on the way.
41501473d951Smrg    while test "$#" -gt 0; do
41511473d951Smrg      arg="$1"
41521473d951Smrg      shift
41531473d951Smrg      func_quote_for_eval "$arg"
41541473d951Smrg      qarg=$func_quote_for_eval_unquoted_result
41551473d951Smrg      func_append libtool_args " $func_quote_for_eval_result"
4156ab47cfaaSmrg
41571473d951Smrg      # If the previous option needs an argument, assign it.
41581473d951Smrg      if test -n "$prev"; then
41591473d951Smrg	case $prev in
41601473d951Smrg	output)
41611473d951Smrg	  func_append compile_command " @OUTPUT@"
41621473d951Smrg	  func_append finalize_command " @OUTPUT@"
4163ab47cfaaSmrg	  ;;
4164ab47cfaaSmrg	esac
4165ab47cfaaSmrg
41661473d951Smrg	case $prev in
41671473d951Smrg	dlfiles|dlprefiles)
41681473d951Smrg	  if test "$preload" = no; then
41691473d951Smrg	    # Add the symbol object into the linking commands.
41701473d951Smrg	    func_append compile_command " @SYMFILE@"
41711473d951Smrg	    func_append finalize_command " @SYMFILE@"
41721473d951Smrg	    preload=yes
41731473d951Smrg	  fi
41741473d951Smrg	  case $arg in
41751473d951Smrg	  *.la | *.lo) ;;  # We handle these cases below.
41761473d951Smrg	  force)
41771473d951Smrg	    if test "$dlself" = no; then
41781473d951Smrg	      dlself=needless
41791473d951Smrg	      export_dynamic=yes
41801473d951Smrg	    fi
41811473d951Smrg	    prev=
41821473d951Smrg	    continue
41831473d951Smrg	    ;;
41841473d951Smrg	  self)
41851473d951Smrg	    if test "$prev" = dlprefiles; then
41861473d951Smrg	      dlself=yes
41871473d951Smrg	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
41881473d951Smrg	      dlself=yes
4189ab47cfaaSmrg	    else
41901473d951Smrg	      dlself=needless
41911473d951Smrg	      export_dynamic=yes
4192ab47cfaaSmrg	    fi
41931473d951Smrg	    prev=
41941473d951Smrg	    continue
41951473d951Smrg	    ;;
41961473d951Smrg	  *)
41971473d951Smrg	    if test "$prev" = dlfiles; then
41981473d951Smrg	      dlfiles="$dlfiles $arg"
41991473d951Smrg	    else
42001473d951Smrg	      dlprefiles="$dlprefiles $arg"
42011473d951Smrg	    fi
42021473d951Smrg	    prev=
42031473d951Smrg	    continue
42041473d951Smrg	    ;;
4205ab47cfaaSmrg	  esac
4206ab47cfaaSmrg	  ;;
42071473d951Smrg	expsyms)
42081473d951Smrg	  export_symbols="$arg"
42091473d951Smrg	  test -f "$arg" \
42101473d951Smrg	    || func_fatal_error "symbol file \`$arg' does not exist"
42111473d951Smrg	  prev=
42121473d951Smrg	  continue
42131473d951Smrg	  ;;
42141473d951Smrg	expsyms_regex)
42151473d951Smrg	  export_symbols_regex="$arg"
42161473d951Smrg	  prev=
42171473d951Smrg	  continue
42181473d951Smrg	  ;;
42191473d951Smrg	framework)
42201473d951Smrg	  case $host in
42211473d951Smrg	    *-*-darwin*)
42221473d951Smrg	      case "$deplibs " in
42231473d951Smrg		*" $qarg.ltframework "*) ;;
42241473d951Smrg		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
42251473d951Smrg		   ;;
4226ab47cfaaSmrg	      esac
42271473d951Smrg	      ;;
4228ab47cfaaSmrg	  esac
42291473d951Smrg	  prev=
42301473d951Smrg	  continue
42311473d951Smrg	  ;;
42321473d951Smrg	inst_prefix)
42331473d951Smrg	  inst_prefix_dir="$arg"
42341473d951Smrg	  prev=
42351473d951Smrg	  continue
42361473d951Smrg	  ;;
42371473d951Smrg	objectlist)
42381473d951Smrg	  if test -f "$arg"; then
42391473d951Smrg	    save_arg=$arg
42401473d951Smrg	    moreargs=
42411473d951Smrg	    for fil in `cat "$save_arg"`
42421473d951Smrg	    do
42431473d951Smrg#	      moreargs="$moreargs $fil"
42441473d951Smrg	      arg=$fil
42451473d951Smrg	      # A libtool-controlled object.
4246ab47cfaaSmrg
42471473d951Smrg	      # Check to see that this really is a libtool object.
42481473d951Smrg	      if func_lalib_unsafe_p "$arg"; then
42491473d951Smrg		pic_object=
42501473d951Smrg		non_pic_object=
4251ab47cfaaSmrg
42521473d951Smrg		# Read the .lo file
42531473d951Smrg		func_source "$arg"
4254ab47cfaaSmrg
42551473d951Smrg		if test -z "$pic_object" ||
42561473d951Smrg		   test -z "$non_pic_object" ||
42571473d951Smrg		   test "$pic_object" = none &&
42581473d951Smrg		   test "$non_pic_object" = none; then
42591473d951Smrg		  func_fatal_error "cannot find name of object for \`$arg'"
42601473d951Smrg		fi
4261ab47cfaaSmrg
42621473d951Smrg		# Extract subdirectory from the argument.
42631473d951Smrg		func_dirname "$arg" "/" ""
42641473d951Smrg		xdir="$func_dirname_result"
4265ab47cfaaSmrg
42661473d951Smrg		if test "$pic_object" != none; then
42671473d951Smrg		  # Prepend the subdirectory the object is found in.
42681473d951Smrg		  pic_object="$xdir$pic_object"
4269ab47cfaaSmrg
42701473d951Smrg		  if test "$prev" = dlfiles; then
42711473d951Smrg		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
42721473d951Smrg		      dlfiles="$dlfiles $pic_object"
42731473d951Smrg		      prev=
42741473d951Smrg		      continue
42751473d951Smrg		    else
42761473d951Smrg		      # If libtool objects are unsupported, then we need to preload.
42771473d951Smrg		      prev=dlprefiles
42781473d951Smrg		    fi
42791473d951Smrg		  fi
4280ab47cfaaSmrg
42811473d951Smrg		  # CHECK ME:  I think I busted this.  -Ossama
42821473d951Smrg		  if test "$prev" = dlprefiles; then
42831473d951Smrg		    # Preload the old-style object.
42841473d951Smrg		    dlprefiles="$dlprefiles $pic_object"
42851473d951Smrg		    prev=
42861473d951Smrg		  fi
4287ab47cfaaSmrg
42881473d951Smrg		  # A PIC object.
42891473d951Smrg		  func_append libobjs " $pic_object"
42901473d951Smrg		  arg="$pic_object"
42911473d951Smrg		fi
4292ab47cfaaSmrg
42931473d951Smrg		# Non-PIC object.
42941473d951Smrg		if test "$non_pic_object" != none; then
42951473d951Smrg		  # Prepend the subdirectory the object is found in.
42961473d951Smrg		  non_pic_object="$xdir$non_pic_object"
4297ab47cfaaSmrg
42981473d951Smrg		  # A standard non-PIC object
42991473d951Smrg		  func_append non_pic_objects " $non_pic_object"
43001473d951Smrg		  if test -z "$pic_object" || test "$pic_object" = none ; then
43011473d951Smrg		    arg="$non_pic_object"
43021473d951Smrg		  fi
43031473d951Smrg		else
43041473d951Smrg		  # If the PIC object exists, use it instead.
43051473d951Smrg		  # $xdir was prepended to $pic_object above.
43061473d951Smrg		  non_pic_object="$pic_object"
43071473d951Smrg		  func_append non_pic_objects " $non_pic_object"
43081473d951Smrg		fi
43091473d951Smrg	      else
43101473d951Smrg		# Only an error if not doing a dry-run.
43111473d951Smrg		if $opt_dry_run; then
43121473d951Smrg		  # Extract subdirectory from the argument.
43131473d951Smrg		  func_dirname "$arg" "/" ""
43141473d951Smrg		  xdir="$func_dirname_result"
43151473d951Smrg
43161473d951Smrg		  func_lo2o "$arg"
43171473d951Smrg		  pic_object=$xdir$objdir/$func_lo2o_result
43181473d951Smrg		  non_pic_object=$xdir$func_lo2o_result
43191473d951Smrg		  func_append libobjs " $pic_object"
43201473d951Smrg		  func_append non_pic_objects " $non_pic_object"
43211473d951Smrg	        else
43221473d951Smrg		  func_fatal_error "\`$arg' is not a valid libtool object"
43231473d951Smrg		fi
43241473d951Smrg	      fi
4325ab47cfaaSmrg	    done
43261473d951Smrg	  else
43271473d951Smrg	    func_fatal_error "link input file \`$arg' does not exist"
4328ab47cfaaSmrg	  fi
43291473d951Smrg	  arg=$save_arg
43301473d951Smrg	  prev=
43311473d951Smrg	  continue
43321473d951Smrg	  ;;
43331473d951Smrg	precious_regex)
43341473d951Smrg	  precious_files_regex="$arg"
43351473d951Smrg	  prev=
43361473d951Smrg	  continue
43371473d951Smrg	  ;;
43381473d951Smrg	release)
43391473d951Smrg	  release="-$arg"
43401473d951Smrg	  prev=
43411473d951Smrg	  continue
43421473d951Smrg	  ;;
43431473d951Smrg	rpath | xrpath)
43441473d951Smrg	  # We need an absolute path.
43451473d951Smrg	  case $arg in
43461473d951Smrg	  [\\/]* | [A-Za-z]:[\\/]*) ;;
43471473d951Smrg	  *)
43481473d951Smrg	    func_fatal_error "only absolute run-paths are allowed"
43491473d951Smrg	    ;;
4350ab47cfaaSmrg	  esac
43511473d951Smrg	  if test "$prev" = rpath; then
43521473d951Smrg	    case "$rpath " in
43531473d951Smrg	    *" $arg "*) ;;
43541473d951Smrg	    *) rpath="$rpath $arg" ;;
43551473d951Smrg	    esac
43561473d951Smrg	  else
43571473d951Smrg	    case "$xrpath " in
43581473d951Smrg	    *" $arg "*) ;;
43591473d951Smrg	    *) xrpath="$xrpath $arg" ;;
43601473d951Smrg	    esac
43611473d951Smrg	  fi
43621473d951Smrg	  prev=
43631473d951Smrg	  continue
43641473d951Smrg	  ;;
43651473d951Smrg	shrext)
43661473d951Smrg	  shrext_cmds="$arg"
43671473d951Smrg	  prev=
43681473d951Smrg	  continue
43691473d951Smrg	  ;;
43701473d951Smrg	weak)
43711473d951Smrg	  weak_libs="$weak_libs $arg"
43721473d951Smrg	  prev=
43731473d951Smrg	  continue
43741473d951Smrg	  ;;
43751473d951Smrg	xcclinker)
43761473d951Smrg	  linker_flags="$linker_flags $qarg"
43771473d951Smrg	  compiler_flags="$compiler_flags $qarg"
43781473d951Smrg	  prev=
43791473d951Smrg	  func_append compile_command " $qarg"
43801473d951Smrg	  func_append finalize_command " $qarg"
43811473d951Smrg	  continue
43821473d951Smrg	  ;;
43831473d951Smrg	xcompiler)
43841473d951Smrg	  compiler_flags="$compiler_flags $qarg"
43851473d951Smrg	  prev=
43861473d951Smrg	  func_append compile_command " $qarg"
43871473d951Smrg	  func_append finalize_command " $qarg"
43881473d951Smrg	  continue
43891473d951Smrg	  ;;
43901473d951Smrg	xlinker)
43911473d951Smrg	  linker_flags="$linker_flags $qarg"
43921473d951Smrg	  compiler_flags="$compiler_flags $wl$qarg"
43931473d951Smrg	  prev=
43941473d951Smrg	  func_append compile_command " $wl$qarg"
43951473d951Smrg	  func_append finalize_command " $wl$qarg"
43961473d951Smrg	  continue
4397ab47cfaaSmrg	  ;;
4398ab47cfaaSmrg	*)
43991473d951Smrg	  eval "$prev=\"\$arg\""
44001473d951Smrg	  prev=
44011473d951Smrg	  continue
4402ab47cfaaSmrg	  ;;
4403ab47cfaaSmrg	esac
44041473d951Smrg      fi # test -n "$prev"
4405ab47cfaaSmrg
44061473d951Smrg      prevarg="$arg"
4407ab47cfaaSmrg
44081473d951Smrg      case $arg in
44091473d951Smrg      -all-static)
44101473d951Smrg	if test -n "$link_static_flag"; then
44111473d951Smrg	  # See comment for -static flag below, for more details.
44121473d951Smrg	  func_append compile_command " $link_static_flag"
44131473d951Smrg	  func_append finalize_command " $link_static_flag"
4414ab47cfaaSmrg	fi
44151473d951Smrg	continue
44161473d951Smrg	;;
4417ab47cfaaSmrg
44181473d951Smrg      -allow-undefined)
44191473d951Smrg	# FIXME: remove this flag sometime in the future.
44201473d951Smrg	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
44211473d951Smrg	;;
4422ab47cfaaSmrg
44231473d951Smrg      -avoid-version)
44241473d951Smrg	avoid_version=yes
44251473d951Smrg	continue
44261473d951Smrg	;;
4427ab47cfaaSmrg
44281473d951Smrg      -dlopen)
44291473d951Smrg	prev=dlfiles
44301473d951Smrg	continue
44311473d951Smrg	;;
4432ab47cfaaSmrg
44331473d951Smrg      -dlpreopen)
44341473d951Smrg	prev=dlprefiles
44351473d951Smrg	continue
44361473d951Smrg	;;
4437ab47cfaaSmrg
44381473d951Smrg      -export-dynamic)
44391473d951Smrg	export_dynamic=yes
44401473d951Smrg	continue
44411473d951Smrg	;;
4442ab47cfaaSmrg
44431473d951Smrg      -export-symbols | -export-symbols-regex)
44441473d951Smrg	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
44451473d951Smrg	  func_fatal_error "more than one -exported-symbols argument is not allowed"
44461473d951Smrg	fi
44471473d951Smrg	if test "X$arg" = "X-export-symbols"; then
44481473d951Smrg	  prev=expsyms
4449ab47cfaaSmrg	else
44501473d951Smrg	  prev=expsyms_regex
4451ab47cfaaSmrg	fi
44521473d951Smrg	continue
44531473d951Smrg	;;
4454ab47cfaaSmrg
44551473d951Smrg      -framework)
44561473d951Smrg	prev=framework
44571473d951Smrg	continue
44581473d951Smrg	;;
4459ab47cfaaSmrg
44601473d951Smrg      -inst-prefix-dir)
44611473d951Smrg	prev=inst_prefix
44621473d951Smrg	continue
44631473d951Smrg	;;
4464ab47cfaaSmrg
44651473d951Smrg      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
44661473d951Smrg      # so, if we see these flags be careful not to treat them like -L
44671473d951Smrg      -L[A-Z][A-Z]*:*)
44681473d951Smrg	case $with_gcc/$host in
44691473d951Smrg	no/*-*-irix* | /*-*-irix*)
44701473d951Smrg	  func_append compile_command " $arg"
44711473d951Smrg	  func_append finalize_command " $arg"
44721473d951Smrg	  ;;
44731473d951Smrg	esac
44741473d951Smrg	continue
44751473d951Smrg	;;
4476ab47cfaaSmrg
44771473d951Smrg      -L*)
44781473d951Smrg	func_stripname '-L' '' "$arg"
44791473d951Smrg	dir=$func_stripname_result
44801473d951Smrg	if test -z "$dir"; then
44811473d951Smrg	  if test "$#" -gt 0; then
44821473d951Smrg	    func_fatal_error "require no space between \`-L' and \`$1'"
4483ab47cfaaSmrg	  else
44841473d951Smrg	    func_fatal_error "need path for \`-L' option"
4485ab47cfaaSmrg	  fi
44861473d951Smrg	fi
44871473d951Smrg	# We need an absolute path.
44881473d951Smrg	case $dir in
44891473d951Smrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
44901473d951Smrg	*)
44911473d951Smrg	  absdir=`cd "$dir" && pwd`
44921473d951Smrg	  test -z "$absdir" && \
44931473d951Smrg	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
44941473d951Smrg	  dir="$absdir"
44951473d951Smrg	  ;;
4496ab47cfaaSmrg	esac
44971473d951Smrg	case "$deplibs " in
44981473d951Smrg	*" -L$dir "*) ;;
44991473d951Smrg	*)
45001473d951Smrg	  deplibs="$deplibs -L$dir"
45011473d951Smrg	  lib_search_path="$lib_search_path $dir"
45021473d951Smrg	  ;;
4503ab47cfaaSmrg	esac
4504ab47cfaaSmrg	case $host in
45051473d951Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
45061473d951Smrg	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
45071473d951Smrg	  case :$dllsearchpath: in
45081473d951Smrg	  *":$dir:"*) ;;
45091473d951Smrg	  ::) dllsearchpath=$dir;;
45101473d951Smrg	  *) dllsearchpath="$dllsearchpath:$dir";;
45111473d951Smrg	  esac
45121473d951Smrg	  case :$dllsearchpath: in
45131473d951Smrg	  *":$testbindir:"*) ;;
45141473d951Smrg	  ::) dllsearchpath=$testbindir;;
45151473d951Smrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
45161473d951Smrg	  esac
45171473d951Smrg	  ;;
4518ab47cfaaSmrg	esac
45191473d951Smrg	continue
45201473d951Smrg	;;
4521ab47cfaaSmrg
45221473d951Smrg      -l*)
45231473d951Smrg	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
45241473d951Smrg	  case $host in
45251473d951Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
45261473d951Smrg	    # These systems don't actually have a C or math library (as such)
45271473d951Smrg	    continue
45281473d951Smrg	    ;;
45291473d951Smrg	  *-*-os2*)
45301473d951Smrg	    # These systems don't actually have a C library (as such)
45311473d951Smrg	    test "X$arg" = "X-lc" && continue
45321473d951Smrg	    ;;
45331473d951Smrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
45341473d951Smrg	    # Do not include libc due to us having libc/libc_r.
45351473d951Smrg	    test "X$arg" = "X-lc" && continue
45361473d951Smrg	    ;;
45371473d951Smrg	  *-*-rhapsody* | *-*-darwin1.[012])
45381473d951Smrg	    # Rhapsody C and math libraries are in the System framework
45391473d951Smrg	    deplibs="$deplibs System.ltframework"
45401473d951Smrg	    continue
45411473d951Smrg	    ;;
45421473d951Smrg	  *-*-sco3.2v5* | *-*-sco5v6*)
45431473d951Smrg	    # Causes problems with __ctype
45441473d951Smrg	    test "X$arg" = "X-lc" && continue
45451473d951Smrg	    ;;
45461473d951Smrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
45471473d951Smrg	    # Compiler inserts libc in the correct place for threads to work
45481473d951Smrg	    test "X$arg" = "X-lc" && continue
45491473d951Smrg	    ;;
45501473d951Smrg	  esac
45511473d951Smrg	elif test "X$arg" = "X-lc_r"; then
45521473d951Smrg	 case $host in
45531473d951Smrg	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
45541473d951Smrg	   # Do not include libc_r directly, use -pthread flag.
45551473d951Smrg	   continue
45561473d951Smrg	   ;;
45571473d951Smrg	 esac
45581473d951Smrg	fi
45591473d951Smrg	deplibs="$deplibs $arg"
45601473d951Smrg	continue
45611473d951Smrg	;;
4562ab47cfaaSmrg
45631473d951Smrg      -module)
45641473d951Smrg	module=yes
45651473d951Smrg	continue
45661473d951Smrg	;;
4567ab47cfaaSmrg
45681473d951Smrg      # Tru64 UNIX uses -model [arg] to determine the layout of C++
45691473d951Smrg      # classes, name mangling, and exception handling.
45701473d951Smrg      # Darwin uses the -arch flag to determine output architecture.
45711473d951Smrg      -model|-arch|-isysroot)
45721473d951Smrg	compiler_flags="$compiler_flags $arg"
45731473d951Smrg	func_append compile_command " $arg"
45741473d951Smrg	func_append finalize_command " $arg"
45751473d951Smrg	prev=xcompiler
45761473d951Smrg	continue
45771473d951Smrg	;;
4578ab47cfaaSmrg
45791473d951Smrg      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
45801473d951Smrg	compiler_flags="$compiler_flags $arg"
45811473d951Smrg	func_append compile_command " $arg"
45821473d951Smrg	func_append finalize_command " $arg"
45831473d951Smrg	case "$new_inherited_linker_flags " in
45841473d951Smrg	    *" $arg "*) ;;
45851473d951Smrg	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
45861473d951Smrg	esac
45871473d951Smrg	continue
45881473d951Smrg	;;
4589ab47cfaaSmrg
45901473d951Smrg      -multi_module)
45911473d951Smrg	single_module="${wl}-multi_module"
45921473d951Smrg	continue
45931473d951Smrg	;;
4594ab47cfaaSmrg
45951473d951Smrg      -no-fast-install)
45961473d951Smrg	fast_install=no
45971473d951Smrg	continue
45981473d951Smrg	;;
4599ab47cfaaSmrg
46001473d951Smrg      -no-install)
46011473d951Smrg	case $host in
46021473d951Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
46031473d951Smrg	  # The PATH hackery in wrapper scripts is required on Windows
46041473d951Smrg	  # and Darwin in order for the loader to find any dlls it needs.
46051473d951Smrg	  func_warning "\`-no-install' is ignored for $host"
46061473d951Smrg	  func_warning "assuming \`-no-fast-install' instead"
46071473d951Smrg	  fast_install=no
46081473d951Smrg	  ;;
46091473d951Smrg	*) no_install=yes ;;
46101473d951Smrg	esac
46111473d951Smrg	continue
46121473d951Smrg	;;
4613ab47cfaaSmrg
46141473d951Smrg      -no-undefined)
46151473d951Smrg	allow_undefined=no
46161473d951Smrg	continue
46171473d951Smrg	;;
4618ab47cfaaSmrg
46191473d951Smrg      -objectlist)
46201473d951Smrg	prev=objectlist
46211473d951Smrg	continue
46221473d951Smrg	;;
4623ab47cfaaSmrg
46241473d951Smrg      -o) prev=output ;;
4625ab47cfaaSmrg
46261473d951Smrg      -precious-files-regex)
46271473d951Smrg	prev=precious_regex
46281473d951Smrg	continue
46291473d951Smrg	;;
4630ab47cfaaSmrg
46311473d951Smrg      -release)
46321473d951Smrg	prev=release
46331473d951Smrg	continue
46341473d951Smrg	;;
4635ab47cfaaSmrg
46361473d951Smrg      -rpath)
46371473d951Smrg	prev=rpath
46381473d951Smrg	continue
46391473d951Smrg	;;
4640ab47cfaaSmrg
46411473d951Smrg      -R)
46421473d951Smrg	prev=xrpath
46431473d951Smrg	continue
46441473d951Smrg	;;
4645ab47cfaaSmrg
46461473d951Smrg      -R*)
46471473d951Smrg	func_stripname '-R' '' "$arg"
46481473d951Smrg	dir=$func_stripname_result
46491473d951Smrg	# We need an absolute path.
46501473d951Smrg	case $dir in
46511473d951Smrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
46521473d951Smrg	*)
46531473d951Smrg	  func_fatal_error "only absolute run-paths are allowed"
46541473d951Smrg	  ;;
46551473d951Smrg	esac
46561473d951Smrg	case "$xrpath " in
46571473d951Smrg	*" $dir "*) ;;
46581473d951Smrg	*) xrpath="$xrpath $dir" ;;
46591473d951Smrg	esac
46601473d951Smrg	continue
46611473d951Smrg	;;
4662ab47cfaaSmrg
46631473d951Smrg      -shared)
46641473d951Smrg	# The effects of -shared are defined in a previous loop.
46651473d951Smrg	continue
46661473d951Smrg	;;
4667ab47cfaaSmrg
46681473d951Smrg      -shrext)
46691473d951Smrg	prev=shrext
46701473d951Smrg	continue
46711473d951Smrg	;;
4672ab47cfaaSmrg
46731473d951Smrg      -static | -static-libtool-libs)
46741473d951Smrg	# The effects of -static are defined in a previous loop.
46751473d951Smrg	# We used to do the same as -all-static on platforms that
46761473d951Smrg	# didn't have a PIC flag, but the assumption that the effects
46771473d951Smrg	# would be equivalent was wrong.  It would break on at least
46781473d951Smrg	# Digital Unix and AIX.
46791473d951Smrg	continue
46801473d951Smrg	;;
4681ab47cfaaSmrg
46821473d951Smrg      -thread-safe)
46831473d951Smrg	thread_safe=yes
46841473d951Smrg	continue
46851473d951Smrg	;;
4686ab47cfaaSmrg
46871473d951Smrg      -version-info)
46881473d951Smrg	prev=vinfo
46891473d951Smrg	continue
46901473d951Smrg	;;
4691ab47cfaaSmrg
46921473d951Smrg      -version-number)
46931473d951Smrg	prev=vinfo
46941473d951Smrg	vinfo_number=yes
46951473d951Smrg	continue
46961473d951Smrg	;;
4697ab47cfaaSmrg
46981473d951Smrg      -weak)
46991473d951Smrg        prev=weak
47001473d951Smrg	continue
47011473d951Smrg	;;
4702ab47cfaaSmrg
47031473d951Smrg      -Wc,*)
47041473d951Smrg	func_stripname '-Wc,' '' "$arg"
47051473d951Smrg	args=$func_stripname_result
47061473d951Smrg	arg=
47071473d951Smrg	save_ifs="$IFS"; IFS=','
47081473d951Smrg	for flag in $args; do
47091473d951Smrg	  IFS="$save_ifs"
47101473d951Smrg          func_quote_for_eval "$flag"
47111473d951Smrg	  arg="$arg $wl$func_quote_for_eval_result"
47121473d951Smrg	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
47131473d951Smrg	done
47141473d951Smrg	IFS="$save_ifs"
47151473d951Smrg	func_stripname ' ' '' "$arg"
47161473d951Smrg	arg=$func_stripname_result
47171473d951Smrg	;;
4718ab47cfaaSmrg
47191473d951Smrg      -Wl,*)
47201473d951Smrg	func_stripname '-Wl,' '' "$arg"
47211473d951Smrg	args=$func_stripname_result
47221473d951Smrg	arg=
47231473d951Smrg	save_ifs="$IFS"; IFS=','
47241473d951Smrg	for flag in $args; do
47251473d951Smrg	  IFS="$save_ifs"
47261473d951Smrg          func_quote_for_eval "$flag"
47271473d951Smrg	  arg="$arg $wl$func_quote_for_eval_result"
47281473d951Smrg	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
47291473d951Smrg	  linker_flags="$linker_flags $func_quote_for_eval_result"
47301473d951Smrg	done
47311473d951Smrg	IFS="$save_ifs"
47321473d951Smrg	func_stripname ' ' '' "$arg"
47331473d951Smrg	arg=$func_stripname_result
47341473d951Smrg	;;
4735ab47cfaaSmrg
47361473d951Smrg      -Xcompiler)
47371473d951Smrg	prev=xcompiler
47381473d951Smrg	continue
47391473d951Smrg	;;
4740ab47cfaaSmrg
47411473d951Smrg      -Xlinker)
47421473d951Smrg	prev=xlinker
47431473d951Smrg	continue
47441473d951Smrg	;;
4745ab47cfaaSmrg
47461473d951Smrg      -XCClinker)
47471473d951Smrg	prev=xcclinker
47481473d951Smrg	continue
47491473d951Smrg	;;
4750ab47cfaaSmrg
47511473d951Smrg      # -msg_* for osf cc
47521473d951Smrg      -msg_*)
47531473d951Smrg	func_quote_for_eval "$arg"
47541473d951Smrg	arg="$func_quote_for_eval_result"
47551473d951Smrg	;;
4756ab47cfaaSmrg
47571473d951Smrg      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
47581473d951Smrg      # -r[0-9][0-9]* specifies the processor on the SGI compiler
47591473d951Smrg      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
47601473d951Smrg      # +DA*, +DD* enable 64-bit mode on the HP compiler
47611473d951Smrg      # -q* pass through compiler args for the IBM compiler
47621473d951Smrg      # -m*, -t[45]*, -txscale* pass through architecture-specific
47631473d951Smrg      # compiler args for GCC
47641473d951Smrg      # -F/path gives path to uninstalled frameworks, gcc on darwin
47651473d951Smrg      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
47661473d951Smrg      # @file GCC response files
47671473d951Smrg      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
47681473d951Smrg      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
47691473d951Smrg        func_quote_for_eval "$arg"
47701473d951Smrg	arg="$func_quote_for_eval_result"
47711473d951Smrg        func_append compile_command " $arg"
47721473d951Smrg        func_append finalize_command " $arg"
47731473d951Smrg        compiler_flags="$compiler_flags $arg"
47741473d951Smrg        continue
47751473d951Smrg        ;;
4776ab47cfaaSmrg
47771473d951Smrg      # Some other compiler flag.
47781473d951Smrg      -* | +*)
47791473d951Smrg        func_quote_for_eval "$arg"
47801473d951Smrg	arg="$func_quote_for_eval_result"
47811473d951Smrg	;;
4782ab47cfaaSmrg
47831473d951Smrg      *.$objext)
47841473d951Smrg	# A standard object.
47851473d951Smrg	objs="$objs $arg"
47861473d951Smrg	;;
4787ab47cfaaSmrg
47881473d951Smrg      *.lo)
47891473d951Smrg	# A libtool-controlled object.
4790ab47cfaaSmrg
47911473d951Smrg	# Check to see that this really is a libtool object.
47921473d951Smrg	if func_lalib_unsafe_p "$arg"; then
47931473d951Smrg	  pic_object=
47941473d951Smrg	  non_pic_object=
4795ab47cfaaSmrg
47961473d951Smrg	  # Read the .lo file
47971473d951Smrg	  func_source "$arg"
4798ab47cfaaSmrg
47991473d951Smrg	  if test -z "$pic_object" ||
48001473d951Smrg	     test -z "$non_pic_object" ||
48011473d951Smrg	     test "$pic_object" = none &&
48021473d951Smrg	     test "$non_pic_object" = none; then
48031473d951Smrg	    func_fatal_error "cannot find name of object for \`$arg'"
48041473d951Smrg	  fi
4805ab47cfaaSmrg
48061473d951Smrg	  # Extract subdirectory from the argument.
48071473d951Smrg	  func_dirname "$arg" "/" ""
48081473d951Smrg	  xdir="$func_dirname_result"
4809ab47cfaaSmrg
48101473d951Smrg	  if test "$pic_object" != none; then
48111473d951Smrg	    # Prepend the subdirectory the object is found in.
48121473d951Smrg	    pic_object="$xdir$pic_object"
4813ab47cfaaSmrg
48141473d951Smrg	    if test "$prev" = dlfiles; then
48151473d951Smrg	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
48161473d951Smrg		dlfiles="$dlfiles $pic_object"
48171473d951Smrg		prev=
48181473d951Smrg		continue
48191473d951Smrg	      else
48201473d951Smrg		# If libtool objects are unsupported, then we need to preload.
48211473d951Smrg		prev=dlprefiles
48221473d951Smrg	      fi
48231473d951Smrg	    fi
4824ab47cfaaSmrg
48251473d951Smrg	    # CHECK ME:  I think I busted this.  -Ossama
48261473d951Smrg	    if test "$prev" = dlprefiles; then
48271473d951Smrg	      # Preload the old-style object.
48281473d951Smrg	      dlprefiles="$dlprefiles $pic_object"
48291473d951Smrg	      prev=
48301473d951Smrg	    fi
4831ab47cfaaSmrg
48321473d951Smrg	    # A PIC object.
48331473d951Smrg	    func_append libobjs " $pic_object"
48341473d951Smrg	    arg="$pic_object"
48351473d951Smrg	  fi
4836ab47cfaaSmrg
48371473d951Smrg	  # Non-PIC object.
48381473d951Smrg	  if test "$non_pic_object" != none; then
48391473d951Smrg	    # Prepend the subdirectory the object is found in.
48401473d951Smrg	    non_pic_object="$xdir$non_pic_object"
4841ab47cfaaSmrg
48421473d951Smrg	    # A standard non-PIC object
48431473d951Smrg	    func_append non_pic_objects " $non_pic_object"
48441473d951Smrg	    if test -z "$pic_object" || test "$pic_object" = none ; then
48451473d951Smrg	      arg="$non_pic_object"
48461473d951Smrg	    fi
48471473d951Smrg	  else
48481473d951Smrg	    # If the PIC object exists, use it instead.
48491473d951Smrg	    # $xdir was prepended to $pic_object above.
48501473d951Smrg	    non_pic_object="$pic_object"
48511473d951Smrg	    func_append non_pic_objects " $non_pic_object"
48521473d951Smrg	  fi
48531473d951Smrg	else
48541473d951Smrg	  # Only an error if not doing a dry-run.
48551473d951Smrg	  if $opt_dry_run; then
48561473d951Smrg	    # Extract subdirectory from the argument.
48571473d951Smrg	    func_dirname "$arg" "/" ""
48581473d951Smrg	    xdir="$func_dirname_result"
48591473d951Smrg
48601473d951Smrg	    func_lo2o "$arg"
48611473d951Smrg	    pic_object=$xdir$objdir/$func_lo2o_result
48621473d951Smrg	    non_pic_object=$xdir$func_lo2o_result
48631473d951Smrg	    func_append libobjs " $pic_object"
48641473d951Smrg	    func_append non_pic_objects " $non_pic_object"
48651473d951Smrg	  else
48661473d951Smrg	    func_fatal_error "\`$arg' is not a valid libtool object"
48671473d951Smrg	  fi
48681473d951Smrg	fi
48691473d951Smrg	;;
4870ab47cfaaSmrg
48711473d951Smrg      *.$libext)
48721473d951Smrg	# An archive.
48731473d951Smrg	deplibs="$deplibs $arg"
48741473d951Smrg	old_deplibs="$old_deplibs $arg"
48751473d951Smrg	continue
48761473d951Smrg	;;
4877ab47cfaaSmrg
48781473d951Smrg      *.la)
48791473d951Smrg	# A libtool-controlled library.
4880ab47cfaaSmrg
48811473d951Smrg	if test "$prev" = dlfiles; then
48821473d951Smrg	  # This library was specified with -dlopen.
48831473d951Smrg	  dlfiles="$dlfiles $arg"
48841473d951Smrg	  prev=
48851473d951Smrg	elif test "$prev" = dlprefiles; then
48861473d951Smrg	  # The library was specified with -dlpreopen.
48871473d951Smrg	  dlprefiles="$dlprefiles $arg"
48881473d951Smrg	  prev=
48891473d951Smrg	else
48901473d951Smrg	  deplibs="$deplibs $arg"
48911473d951Smrg	fi
48921473d951Smrg	continue
48931473d951Smrg	;;
4894ab47cfaaSmrg
48951473d951Smrg      # Some other compiler argument.
48961473d951Smrg      *)
48971473d951Smrg	# Unknown arguments in both finalize_command and compile_command need
48981473d951Smrg	# to be aesthetically quoted because they are evaled later.
48991473d951Smrg	func_quote_for_eval "$arg"
49001473d951Smrg	arg="$func_quote_for_eval_result"
49011473d951Smrg	;;
49021473d951Smrg      esac # arg
4903ab47cfaaSmrg
49041473d951Smrg      # Now actually substitute the argument into the commands.
49051473d951Smrg      if test -n "$arg"; then
49061473d951Smrg	func_append compile_command " $arg"
49071473d951Smrg	func_append finalize_command " $arg"
49081473d951Smrg      fi
49091473d951Smrg    done # argument parsing loop
49108697ee19Smrg
49111473d951Smrg    test -n "$prev" && \
49121473d951Smrg      func_fatal_help "the \`$prevarg' option requires an argument"
4913ab47cfaaSmrg
49141473d951Smrg    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
49151473d951Smrg      eval arg=\"$export_dynamic_flag_spec\"
49161473d951Smrg      func_append compile_command " $arg"
49171473d951Smrg      func_append finalize_command " $arg"
49181473d951Smrg    fi
4919ab47cfaaSmrg
49201473d951Smrg    oldlibs=
49211473d951Smrg    # calculate the name of the file, without its directory
49221473d951Smrg    func_basename "$output"
49231473d951Smrg    outputname="$func_basename_result"
49241473d951Smrg    libobjs_save="$libobjs"
49251473d951Smrg
49261473d951Smrg    if test -n "$shlibpath_var"; then
49271473d951Smrg      # get the directories listed in $shlibpath_var
49281473d951Smrg      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
4929ab47cfaaSmrg    else
49301473d951Smrg      shlib_search_path=
4931ab47cfaaSmrg    fi
49321473d951Smrg    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
49331473d951Smrg    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
4934ab47cfaaSmrg
49351473d951Smrg    func_dirname "$output" "/" ""
49361473d951Smrg    output_objdir="$func_dirname_result$objdir"
49371473d951Smrg    # Create the object directory.
49381473d951Smrg    func_mkdir_p "$output_objdir"
4939ab47cfaaSmrg
49401473d951Smrg    # Determine the type of output
49411473d951Smrg    case $output in
49421473d951Smrg    "")
49431473d951Smrg      func_fatal_help "you must specify an output file"
49441473d951Smrg      ;;
49451473d951Smrg    *.$libext) linkmode=oldlib ;;
49461473d951Smrg    *.lo | *.$objext) linkmode=obj ;;
49471473d951Smrg    *.la) linkmode=lib ;;
49481473d951Smrg    *) linkmode=prog ;; # Anything else should be a program.
49491473d951Smrg    esac
49501473d951Smrg
49511473d951Smrg    specialdeplibs=
49521473d951Smrg
49531473d951Smrg    libs=
49541473d951Smrg    # Find all interdependent deplibs by searching for libraries
49551473d951Smrg    # that are linked more than once (e.g. -la -lb -la)
49561473d951Smrg    for deplib in $deplibs; do
49571473d951Smrg      if $opt_duplicate_deps ; then
49581473d951Smrg	case "$libs " in
49591473d951Smrg	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
49601473d951Smrg	esac
49611473d951Smrg      fi
49621473d951Smrg      libs="$libs $deplib"
49631473d951Smrg    done
49641473d951Smrg
49651473d951Smrg    if test "$linkmode" = lib; then
49661473d951Smrg      libs="$predeps $libs $compiler_lib_search_path $postdeps"
49671473d951Smrg
49681473d951Smrg      # Compute libraries that are listed more than once in $predeps
49691473d951Smrg      # $postdeps and mark them as special (i.e., whose duplicates are
49701473d951Smrg      # not to be eliminated).
49711473d951Smrg      pre_post_deps=
49721473d951Smrg      if $opt_duplicate_compiler_generated_deps; then
49731473d951Smrg	for pre_post_dep in $predeps $postdeps; do
49741473d951Smrg	  case "$pre_post_deps " in
49751473d951Smrg	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
49761473d951Smrg	  esac
49771473d951Smrg	  pre_post_deps="$pre_post_deps $pre_post_dep"
49781473d951Smrg	done
49791473d951Smrg      fi
49801473d951Smrg      pre_post_deps=
49811473d951Smrg    fi
49821473d951Smrg
49831473d951Smrg    deplibs=
49841473d951Smrg    newdependency_libs=
49851473d951Smrg    newlib_search_path=
49861473d951Smrg    need_relink=no # whether we're linking any uninstalled libtool libraries
49871473d951Smrg    notinst_deplibs= # not-installed libtool libraries
49881473d951Smrg    notinst_path= # paths that contain not-installed libtool libraries
49891473d951Smrg
49901473d951Smrg    case $linkmode in
49911473d951Smrg    lib)
49921473d951Smrg	passes="conv dlpreopen link"
49931473d951Smrg	for file in $dlfiles $dlprefiles; do
49941473d951Smrg	  case $file in
49951473d951Smrg	  *.la) ;;
49961473d951Smrg	  *)
49971473d951Smrg	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
49981473d951Smrg	    ;;
49991473d951Smrg	  esac
50001473d951Smrg	done
50011473d951Smrg	;;
50021473d951Smrg    prog)
50031473d951Smrg	compile_deplibs=
50041473d951Smrg	finalize_deplibs=
50051473d951Smrg	alldeplibs=no
50061473d951Smrg	newdlfiles=
50071473d951Smrg	newdlprefiles=
50081473d951Smrg	passes="conv scan dlopen dlpreopen link"
50091473d951Smrg	;;
50101473d951Smrg    *)  passes="conv"
50111473d951Smrg	;;
50121473d951Smrg    esac
50131473d951Smrg
50141473d951Smrg    for pass in $passes; do
50151473d951Smrg      # The preopen pass in lib mode reverses $deplibs; put it back here
50161473d951Smrg      # so that -L comes before libs that need it for instance...
50171473d951Smrg      if test "$linkmode,$pass" = "lib,link"; then
50181473d951Smrg	## FIXME: Find the place where the list is rebuilt in the wrong
50191473d951Smrg	##        order, and fix it there properly
50201473d951Smrg        tmp_deplibs=
50211473d951Smrg	for deplib in $deplibs; do
50221473d951Smrg	  tmp_deplibs="$deplib $tmp_deplibs"
50231473d951Smrg	done
50241473d951Smrg	deplibs="$tmp_deplibs"
50251473d951Smrg      fi
50261473d951Smrg
50271473d951Smrg      if test "$linkmode,$pass" = "lib,link" ||
50281473d951Smrg	 test "$linkmode,$pass" = "prog,scan"; then
50291473d951Smrg	libs="$deplibs"
50301473d951Smrg	deplibs=
50311473d951Smrg      fi
50321473d951Smrg      if test "$linkmode" = prog; then
50331473d951Smrg	case $pass in
50341473d951Smrg	dlopen) libs="$dlfiles" ;;
50351473d951Smrg	dlpreopen) libs="$dlprefiles" ;;
50361473d951Smrg	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
50371473d951Smrg	esac
50381473d951Smrg      fi
50391473d951Smrg      if test "$linkmode,$pass" = "lib,dlpreopen"; then
50401473d951Smrg	# Collect and forward deplibs of preopened libtool libs
50411473d951Smrg	for lib in $dlprefiles; do
50421473d951Smrg	  # Ignore non-libtool-libs
50431473d951Smrg	  dependency_libs=
50441473d951Smrg	  case $lib in
50451473d951Smrg	  *.la)	func_source "$lib" ;;
50461473d951Smrg	  esac
50471473d951Smrg
50481473d951Smrg	  # Collect preopened libtool deplibs, except any this library
50491473d951Smrg	  # has declared as weak libs
50501473d951Smrg	  for deplib in $dependency_libs; do
50511473d951Smrg            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
50521473d951Smrg	    case " $weak_libs " in
50531473d951Smrg	    *" $deplib_base "*) ;;
50541473d951Smrg	    *) deplibs="$deplibs $deplib" ;;
50551473d951Smrg	    esac
50561473d951Smrg	  done
50571473d951Smrg	done
50581473d951Smrg	libs="$dlprefiles"
50591473d951Smrg      fi
50601473d951Smrg      if test "$pass" = dlopen; then
50611473d951Smrg	# Collect dlpreopened libraries
50621473d951Smrg	save_deplibs="$deplibs"
50631473d951Smrg	deplibs=
50641473d951Smrg      fi
50651473d951Smrg
50661473d951Smrg      for deplib in $libs; do
50671473d951Smrg	lib=
50681473d951Smrg	found=no
50691473d951Smrg	case $deplib in
50701473d951Smrg	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
50711473d951Smrg	  if test "$linkmode,$pass" = "prog,link"; then
50721473d951Smrg	    compile_deplibs="$deplib $compile_deplibs"
50731473d951Smrg	    finalize_deplibs="$deplib $finalize_deplibs"
50741473d951Smrg	  else
50751473d951Smrg	    compiler_flags="$compiler_flags $deplib"
50761473d951Smrg	    if test "$linkmode" = lib ; then
50771473d951Smrg		case "$new_inherited_linker_flags " in
50781473d951Smrg		    *" $deplib "*) ;;
50791473d951Smrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
50801473d951Smrg		esac
50811473d951Smrg	    fi
50821473d951Smrg	  fi
50831473d951Smrg	  continue
50841473d951Smrg	  ;;
50851473d951Smrg	-l*)
50861473d951Smrg	  if test "$linkmode" != lib && test "$linkmode" != prog; then
50871473d951Smrg	    func_warning "\`-l' is ignored for archives/objects"
50881473d951Smrg	    continue
50891473d951Smrg	  fi
50901473d951Smrg	  func_stripname '-l' '' "$deplib"
50911473d951Smrg	  name=$func_stripname_result
50921473d951Smrg	  if test "$linkmode" = lib; then
50931473d951Smrg	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
50941473d951Smrg	  else
50951473d951Smrg	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
50961473d951Smrg	  fi
50971473d951Smrg	  for searchdir in $searchdirs; do
50981473d951Smrg	    for search_ext in .la $std_shrext .so .a; do
50991473d951Smrg	      # Search the libtool library
51001473d951Smrg	      lib="$searchdir/lib${name}${search_ext}"
51011473d951Smrg	      if test -f "$lib"; then
51021473d951Smrg		if test "$search_ext" = ".la"; then
51031473d951Smrg		  found=yes
51041473d951Smrg		else
51051473d951Smrg		  found=no
51061473d951Smrg		fi
51071473d951Smrg		break 2
51081473d951Smrg	      fi
51091473d951Smrg	    done
51101473d951Smrg	  done
51111473d951Smrg	  if test "$found" != yes; then
51121473d951Smrg	    # deplib doesn't seem to be a libtool library
51131473d951Smrg	    if test "$linkmode,$pass" = "prog,link"; then
51141473d951Smrg	      compile_deplibs="$deplib $compile_deplibs"
51151473d951Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
51161473d951Smrg	    else
51171473d951Smrg	      deplibs="$deplib $deplibs"
51181473d951Smrg	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
51191473d951Smrg	    fi
51201473d951Smrg	    continue
51211473d951Smrg	  else # deplib is a libtool library
51221473d951Smrg	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
51231473d951Smrg	    # We need to do some special things here, and not later.
51241473d951Smrg	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
51251473d951Smrg	      case " $predeps $postdeps " in
51261473d951Smrg	      *" $deplib "*)
51271473d951Smrg		if func_lalib_p "$lib"; then
51281473d951Smrg		  library_names=
51291473d951Smrg		  old_library=
51301473d951Smrg		  func_source "$lib"
51311473d951Smrg		  for l in $old_library $library_names; do
51321473d951Smrg		    ll="$l"
51331473d951Smrg		  done
51341473d951Smrg		  if test "X$ll" = "X$old_library" ; then # only static version available
51351473d951Smrg		    found=no
51361473d951Smrg		    func_dirname "$lib" "" "."
51371473d951Smrg		    ladir="$func_dirname_result"
51381473d951Smrg		    lib=$ladir/$old_library
51391473d951Smrg		    if test "$linkmode,$pass" = "prog,link"; then
51401473d951Smrg		      compile_deplibs="$deplib $compile_deplibs"
51411473d951Smrg		      finalize_deplibs="$deplib $finalize_deplibs"
51421473d951Smrg		    else
51431473d951Smrg		      deplibs="$deplib $deplibs"
51441473d951Smrg		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
51451473d951Smrg		    fi
51461473d951Smrg		    continue
51471473d951Smrg		  fi
51481473d951Smrg		fi
51491473d951Smrg		;;
51501473d951Smrg	      *) ;;
51511473d951Smrg	      esac
51521473d951Smrg	    fi
51531473d951Smrg	  fi
51541473d951Smrg	  ;; # -l
51551473d951Smrg	*.ltframework)
51561473d951Smrg	  if test "$linkmode,$pass" = "prog,link"; then
51571473d951Smrg	    compile_deplibs="$deplib $compile_deplibs"
51581473d951Smrg	    finalize_deplibs="$deplib $finalize_deplibs"
51591473d951Smrg	  else
51601473d951Smrg	    deplibs="$deplib $deplibs"
51611473d951Smrg	    if test "$linkmode" = lib ; then
51621473d951Smrg		case "$new_inherited_linker_flags " in
51631473d951Smrg		    *" $deplib "*) ;;
51641473d951Smrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
51651473d951Smrg		esac
51661473d951Smrg	    fi
51671473d951Smrg	  fi
51681473d951Smrg	  continue
51691473d951Smrg	  ;;
51701473d951Smrg	-L*)
51711473d951Smrg	  case $linkmode in
51721473d951Smrg	  lib)
51731473d951Smrg	    deplibs="$deplib $deplibs"
51741473d951Smrg	    test "$pass" = conv && continue
51751473d951Smrg	    newdependency_libs="$deplib $newdependency_libs"
51761473d951Smrg	    func_stripname '-L' '' "$deplib"
51771473d951Smrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
51781473d951Smrg	    ;;
51791473d951Smrg	  prog)
51801473d951Smrg	    if test "$pass" = conv; then
51811473d951Smrg	      deplibs="$deplib $deplibs"
51821473d951Smrg	      continue
51831473d951Smrg	    fi
51841473d951Smrg	    if test "$pass" = scan; then
51851473d951Smrg	      deplibs="$deplib $deplibs"
51861473d951Smrg	    else
51871473d951Smrg	      compile_deplibs="$deplib $compile_deplibs"
51881473d951Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
51891473d951Smrg	    fi
51901473d951Smrg	    func_stripname '-L' '' "$deplib"
51911473d951Smrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
51921473d951Smrg	    ;;
51931473d951Smrg	  *)
51941473d951Smrg	    func_warning "\`-L' is ignored for archives/objects"
51951473d951Smrg	    ;;
51961473d951Smrg	  esac # linkmode
51971473d951Smrg	  continue
51981473d951Smrg	  ;; # -L
51991473d951Smrg	-R*)
52001473d951Smrg	  if test "$pass" = link; then
52011473d951Smrg	    func_stripname '-R' '' "$deplib"
52021473d951Smrg	    dir=$func_stripname_result
52031473d951Smrg	    # Make sure the xrpath contains only unique directories.
52041473d951Smrg	    case "$xrpath " in
52051473d951Smrg	    *" $dir "*) ;;
52061473d951Smrg	    *) xrpath="$xrpath $dir" ;;
52071473d951Smrg	    esac
52081473d951Smrg	  fi
52091473d951Smrg	  deplibs="$deplib $deplibs"
52101473d951Smrg	  continue
52111473d951Smrg	  ;;
52121473d951Smrg	*.la) lib="$deplib" ;;
52131473d951Smrg	*.$libext)
52141473d951Smrg	  if test "$pass" = conv; then
52151473d951Smrg	    deplibs="$deplib $deplibs"
52161473d951Smrg	    continue
52171473d951Smrg	  fi
52181473d951Smrg	  case $linkmode in
52191473d951Smrg	  lib)
52201473d951Smrg	    # Linking convenience modules into shared libraries is allowed,
52211473d951Smrg	    # but linking other static libraries is non-portable.
52221473d951Smrg	    case " $dlpreconveniencelibs " in
52231473d951Smrg	    *" $deplib "*) ;;
52241473d951Smrg	    *)
52251473d951Smrg	      valid_a_lib=no
52261473d951Smrg	      case $deplibs_check_method in
52271473d951Smrg		match_pattern*)
52281473d951Smrg		  set dummy $deplibs_check_method; shift
52291473d951Smrg		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
52301473d951Smrg		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
52311473d951Smrg		    | $EGREP "$match_pattern_regex" > /dev/null; then
52321473d951Smrg		    valid_a_lib=yes
52331473d951Smrg		  fi
52341473d951Smrg		;;
52351473d951Smrg		pass_all)
52361473d951Smrg		  valid_a_lib=yes
52371473d951Smrg		;;
52381473d951Smrg	      esac
52391473d951Smrg	      if test "$valid_a_lib" != yes; then
52401473d951Smrg		$ECHO
52411473d951Smrg		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
52421473d951Smrg		$ECHO "*** I have the capability to make that library automatically link in when"
52431473d951Smrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
52441473d951Smrg		$ECHO "*** shared version of the library, which you do not appear to have"
52451473d951Smrg		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
52461473d951Smrg		$ECHO "*** that it is just a static archive that I should not use here."
52471473d951Smrg	      else
52481473d951Smrg		$ECHO
52491473d951Smrg		$ECHO "*** Warning: Linking the shared library $output against the"
52501473d951Smrg		$ECHO "*** static library $deplib is not portable!"
52511473d951Smrg		deplibs="$deplib $deplibs"
52521473d951Smrg	      fi
52531473d951Smrg	      ;;
52541473d951Smrg	    esac
52551473d951Smrg	    continue
52561473d951Smrg	    ;;
52571473d951Smrg	  prog)
52581473d951Smrg	    if test "$pass" != link; then
52591473d951Smrg	      deplibs="$deplib $deplibs"
52601473d951Smrg	    else
52611473d951Smrg	      compile_deplibs="$deplib $compile_deplibs"
52621473d951Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
52631473d951Smrg	    fi
52641473d951Smrg	    continue
52651473d951Smrg	    ;;
52661473d951Smrg	  esac # linkmode
52671473d951Smrg	  ;; # *.$libext
52681473d951Smrg	*.lo | *.$objext)
52691473d951Smrg	  if test "$pass" = conv; then
52701473d951Smrg	    deplibs="$deplib $deplibs"
52711473d951Smrg	  elif test "$linkmode" = prog; then
52721473d951Smrg	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
52731473d951Smrg	      # If there is no dlopen support or we're linking statically,
52741473d951Smrg	      # we need to preload.
52751473d951Smrg	      newdlprefiles="$newdlprefiles $deplib"
52761473d951Smrg	      compile_deplibs="$deplib $compile_deplibs"
52771473d951Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
52781473d951Smrg	    else
52791473d951Smrg	      newdlfiles="$newdlfiles $deplib"
52801473d951Smrg	    fi
52811473d951Smrg	  fi
52821473d951Smrg	  continue
52831473d951Smrg	  ;;
52841473d951Smrg	%DEPLIBS%)
52851473d951Smrg	  alldeplibs=yes
52861473d951Smrg	  continue
52871473d951Smrg	  ;;
52881473d951Smrg	esac # case $deplib
52891473d951Smrg
52901473d951Smrg	if test "$found" = yes || test -f "$lib"; then :
52911473d951Smrg	else
52921473d951Smrg	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
52931473d951Smrg	fi
52941473d951Smrg
52951473d951Smrg	# Check to see that this really is a libtool archive.
52961473d951Smrg	func_lalib_unsafe_p "$lib" \
52971473d951Smrg	  || func_fatal_error "\`$lib' is not a valid libtool archive"
52981473d951Smrg
52991473d951Smrg	func_dirname "$lib" "" "."
53001473d951Smrg	ladir="$func_dirname_result"
53011473d951Smrg
53021473d951Smrg	dlname=
53031473d951Smrg	dlopen=
53041473d951Smrg	dlpreopen=
53051473d951Smrg	libdir=
53061473d951Smrg	library_names=
53071473d951Smrg	old_library=
53081473d951Smrg	inherited_linker_flags=
53091473d951Smrg	# If the library was installed with an old release of libtool,
53101473d951Smrg	# it will not redefine variables installed, or shouldnotlink
53111473d951Smrg	installed=yes
53121473d951Smrg	shouldnotlink=no
53131473d951Smrg	avoidtemprpath=
53141473d951Smrg
53151473d951Smrg
53161473d951Smrg	# Read the .la file
53171473d951Smrg	func_source "$lib"
53181473d951Smrg
53191473d951Smrg	# Convert "-framework foo" to "foo.ltframework"
53201473d951Smrg	if test -n "$inherited_linker_flags"; then
53211473d951Smrg	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
53221473d951Smrg	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
53231473d951Smrg	    case " $new_inherited_linker_flags " in
53241473d951Smrg	      *" $tmp_inherited_linker_flag "*) ;;
53251473d951Smrg	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
53261473d951Smrg	    esac
53271473d951Smrg	  done
53281473d951Smrg	fi
53291473d951Smrg	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
53301473d951Smrg	if test "$linkmode,$pass" = "lib,link" ||
53311473d951Smrg	   test "$linkmode,$pass" = "prog,scan" ||
53321473d951Smrg	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
53331473d951Smrg	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
53341473d951Smrg	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
53351473d951Smrg	fi
53361473d951Smrg
53371473d951Smrg	if test "$pass" = conv; then
53381473d951Smrg	  # Only check for convenience libraries
53391473d951Smrg	  deplibs="$lib $deplibs"
53401473d951Smrg	  if test -z "$libdir"; then
53411473d951Smrg	    if test -z "$old_library"; then
53421473d951Smrg	      func_fatal_error "cannot find name of link library for \`$lib'"
53431473d951Smrg	    fi
53441473d951Smrg	    # It is a libtool convenience library, so add in its objects.
53451473d951Smrg	    convenience="$convenience $ladir/$objdir/$old_library"
53461473d951Smrg	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
53471473d951Smrg	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
53481473d951Smrg	    func_fatal_error "\`$lib' is not a convenience library"
53491473d951Smrg	  fi
53501473d951Smrg	  tmp_libs=
53511473d951Smrg	  for deplib in $dependency_libs; do
53521473d951Smrg	    deplibs="$deplib $deplibs"
53531473d951Smrg	    if $opt_duplicate_deps ; then
53541473d951Smrg	      case "$tmp_libs " in
53551473d951Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
53561473d951Smrg	      esac
53571473d951Smrg	    fi
53581473d951Smrg	    tmp_libs="$tmp_libs $deplib"
53591473d951Smrg	  done
53601473d951Smrg	  continue
53611473d951Smrg	fi # $pass = conv
53621473d951Smrg
53631473d951Smrg
53641473d951Smrg	# Get the name of the library we link against.
53651473d951Smrg	linklib=
53661473d951Smrg	for l in $old_library $library_names; do
53671473d951Smrg	  linklib="$l"
53681473d951Smrg	done
53691473d951Smrg	if test -z "$linklib"; then
53701473d951Smrg	  func_fatal_error "cannot find name of link library for \`$lib'"
53711473d951Smrg	fi
53721473d951Smrg
53731473d951Smrg	# This library was specified with -dlopen.
53741473d951Smrg	if test "$pass" = dlopen; then
53751473d951Smrg	  if test -z "$libdir"; then
53761473d951Smrg	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
53771473d951Smrg	  fi
53781473d951Smrg	  if test -z "$dlname" ||
53791473d951Smrg	     test "$dlopen_support" != yes ||
53801473d951Smrg	     test "$build_libtool_libs" = no; then
53811473d951Smrg	    # If there is no dlname, no dlopen support or we're linking
53821473d951Smrg	    # statically, we need to preload.  We also need to preload any
53831473d951Smrg	    # dependent libraries so libltdl's deplib preloader doesn't
53841473d951Smrg	    # bomb out in the load deplibs phase.
53851473d951Smrg	    dlprefiles="$dlprefiles $lib $dependency_libs"
53861473d951Smrg	  else
53871473d951Smrg	    newdlfiles="$newdlfiles $lib"
53881473d951Smrg	  fi
53891473d951Smrg	  continue
53901473d951Smrg	fi # $pass = dlopen
53911473d951Smrg
53921473d951Smrg	# We need an absolute path.
53931473d951Smrg	case $ladir in
53941473d951Smrg	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
53951473d951Smrg	*)
53961473d951Smrg	  abs_ladir=`cd "$ladir" && pwd`
53971473d951Smrg	  if test -z "$abs_ladir"; then
53981473d951Smrg	    func_warning "cannot determine absolute directory name of \`$ladir'"
53991473d951Smrg	    func_warning "passing it literally to the linker, although it might fail"
54001473d951Smrg	    abs_ladir="$ladir"
54011473d951Smrg	  fi
54021473d951Smrg	  ;;
54031473d951Smrg	esac
54041473d951Smrg	func_basename "$lib"
54051473d951Smrg	laname="$func_basename_result"
54061473d951Smrg
54071473d951Smrg	# Find the relevant object directory and library name.
54081473d951Smrg	if test "X$installed" = Xyes; then
54091473d951Smrg	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
54101473d951Smrg	    func_warning "library \`$lib' was moved."
54111473d951Smrg	    dir="$ladir"
54121473d951Smrg	    absdir="$abs_ladir"
54131473d951Smrg	    libdir="$abs_ladir"
54141473d951Smrg	  else
54151473d951Smrg	    dir="$libdir"
54161473d951Smrg	    absdir="$libdir"
54171473d951Smrg	  fi
54181473d951Smrg	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
54191473d951Smrg	else
54201473d951Smrg	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
54211473d951Smrg	    dir="$ladir"
54221473d951Smrg	    absdir="$abs_ladir"
54231473d951Smrg	    # Remove this search path later
54241473d951Smrg	    notinst_path="$notinst_path $abs_ladir"
54251473d951Smrg	  else
54261473d951Smrg	    dir="$ladir/$objdir"
54271473d951Smrg	    absdir="$abs_ladir/$objdir"
54281473d951Smrg	    # Remove this search path later
54291473d951Smrg	    notinst_path="$notinst_path $abs_ladir"
54301473d951Smrg	  fi
54311473d951Smrg	fi # $installed = yes
54321473d951Smrg	func_stripname 'lib' '.la' "$laname"
54331473d951Smrg	name=$func_stripname_result
54341473d951Smrg
54351473d951Smrg	# This library was specified with -dlpreopen.
54361473d951Smrg	if test "$pass" = dlpreopen; then
54371473d951Smrg	  if test -z "$libdir" && test "$linkmode" = prog; then
54381473d951Smrg	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
54391473d951Smrg	  fi
54401473d951Smrg	  # Prefer using a static library (so that no silly _DYNAMIC symbols
54411473d951Smrg	  # are required to link).
54421473d951Smrg	  if test -n "$old_library"; then
54431473d951Smrg	    newdlprefiles="$newdlprefiles $dir/$old_library"
54441473d951Smrg	    # Keep a list of preopened convenience libraries to check
54451473d951Smrg	    # that they are being used correctly in the link pass.
54461473d951Smrg	    test -z "$libdir" && \
54471473d951Smrg		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
54481473d951Smrg	  # Otherwise, use the dlname, so that lt_dlopen finds it.
54491473d951Smrg	  elif test -n "$dlname"; then
54501473d951Smrg	    newdlprefiles="$newdlprefiles $dir/$dlname"
54511473d951Smrg	  else
54521473d951Smrg	    newdlprefiles="$newdlprefiles $dir/$linklib"
54531473d951Smrg	  fi
54541473d951Smrg	fi # $pass = dlpreopen
54551473d951Smrg
54561473d951Smrg	if test -z "$libdir"; then
54571473d951Smrg	  # Link the convenience library
54581473d951Smrg	  if test "$linkmode" = lib; then
54591473d951Smrg	    deplibs="$dir/$old_library $deplibs"
54601473d951Smrg	  elif test "$linkmode,$pass" = "prog,link"; then
54611473d951Smrg	    compile_deplibs="$dir/$old_library $compile_deplibs"
54621473d951Smrg	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
54631473d951Smrg	  else
54641473d951Smrg	    deplibs="$lib $deplibs" # used for prog,scan pass
54651473d951Smrg	  fi
54661473d951Smrg	  continue
54671473d951Smrg	fi
54681473d951Smrg
54691473d951Smrg
54701473d951Smrg	if test "$linkmode" = prog && test "$pass" != link; then
54711473d951Smrg	  newlib_search_path="$newlib_search_path $ladir"
54721473d951Smrg	  deplibs="$lib $deplibs"
54731473d951Smrg
54741473d951Smrg	  linkalldeplibs=no
54751473d951Smrg	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
54761473d951Smrg	     test "$build_libtool_libs" = no; then
54771473d951Smrg	    linkalldeplibs=yes
54781473d951Smrg	  fi
54791473d951Smrg
54801473d951Smrg	  tmp_libs=
54811473d951Smrg	  for deplib in $dependency_libs; do
54821473d951Smrg	    case $deplib in
54831473d951Smrg	    -L*) func_stripname '-L' '' "$deplib"
54841473d951Smrg	         newlib_search_path="$newlib_search_path $func_stripname_result"
54851473d951Smrg		 ;;
54861473d951Smrg	    esac
54871473d951Smrg	    # Need to link against all dependency_libs?
54881473d951Smrg	    if test "$linkalldeplibs" = yes; then
54891473d951Smrg	      deplibs="$deplib $deplibs"
54901473d951Smrg	    else
54911473d951Smrg	      # Need to hardcode shared library paths
54921473d951Smrg	      # or/and link against static libraries
54931473d951Smrg	      newdependency_libs="$deplib $newdependency_libs"
54941473d951Smrg	    fi
54951473d951Smrg	    if $opt_duplicate_deps ; then
54961473d951Smrg	      case "$tmp_libs " in
54971473d951Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
54981473d951Smrg	      esac
54991473d951Smrg	    fi
55001473d951Smrg	    tmp_libs="$tmp_libs $deplib"
55011473d951Smrg	  done # for deplib
55021473d951Smrg	  continue
55031473d951Smrg	fi # $linkmode = prog...
55041473d951Smrg
55051473d951Smrg	if test "$linkmode,$pass" = "prog,link"; then
55061473d951Smrg	  if test -n "$library_names" &&
55071473d951Smrg	     { { test "$prefer_static_libs" = no ||
55081473d951Smrg	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
55091473d951Smrg	       test -z "$old_library"; }; then
55101473d951Smrg	    # We need to hardcode the library path
55111473d951Smrg	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
55121473d951Smrg	      # Make sure the rpath contains only unique directories.
55131473d951Smrg	      case "$temp_rpath:" in
55141473d951Smrg	      *"$absdir:"*) ;;
55151473d951Smrg	      *) temp_rpath="$temp_rpath$absdir:" ;;
55161473d951Smrg	      esac
55171473d951Smrg	    fi
55181473d951Smrg
55191473d951Smrg	    # Hardcode the library path.
55201473d951Smrg	    # Skip directories that are in the system default run-time
55211473d951Smrg	    # search path.
55221473d951Smrg	    case " $sys_lib_dlsearch_path " in
55231473d951Smrg	    *" $absdir "*) ;;
55241473d951Smrg	    *)
55251473d951Smrg	      case "$compile_rpath " in
55261473d951Smrg	      *" $absdir "*) ;;
55271473d951Smrg	      *) compile_rpath="$compile_rpath $absdir"
55281473d951Smrg	      esac
55291473d951Smrg	      ;;
55301473d951Smrg	    esac
55311473d951Smrg	    case " $sys_lib_dlsearch_path " in
55321473d951Smrg	    *" $libdir "*) ;;
55331473d951Smrg	    *)
55341473d951Smrg	      case "$finalize_rpath " in
55351473d951Smrg	      *" $libdir "*) ;;
55361473d951Smrg	      *) finalize_rpath="$finalize_rpath $libdir"
55371473d951Smrg	      esac
55381473d951Smrg	      ;;
55391473d951Smrg	    esac
55401473d951Smrg	  fi # $linkmode,$pass = prog,link...
55411473d951Smrg
55421473d951Smrg	  if test "$alldeplibs" = yes &&
55431473d951Smrg	     { test "$deplibs_check_method" = pass_all ||
55441473d951Smrg	       { test "$build_libtool_libs" = yes &&
55451473d951Smrg		 test -n "$library_names"; }; }; then
55461473d951Smrg	    # We only need to search for static libraries
55471473d951Smrg	    continue
55481473d951Smrg	  fi
55491473d951Smrg	fi
55501473d951Smrg
55511473d951Smrg	link_static=no # Whether the deplib will be linked statically
55521473d951Smrg	use_static_libs=$prefer_static_libs
55531473d951Smrg	if test "$use_static_libs" = built && test "$installed" = yes; then
55541473d951Smrg	  use_static_libs=no
55551473d951Smrg	fi
55561473d951Smrg	if test -n "$library_names" &&
55571473d951Smrg	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
55581473d951Smrg	  case $host in
55591473d951Smrg	  *cygwin* | *mingw* | *cegcc*)
55601473d951Smrg	      # No point in relinking DLLs because paths are not encoded
55611473d951Smrg	      notinst_deplibs="$notinst_deplibs $lib"
55621473d951Smrg	      need_relink=no
55631473d951Smrg	    ;;
55641473d951Smrg	  *)
55651473d951Smrg	    if test "$installed" = no; then
55661473d951Smrg	      notinst_deplibs="$notinst_deplibs $lib"
55671473d951Smrg	      need_relink=yes
55681473d951Smrg	    fi
55691473d951Smrg	    ;;
55701473d951Smrg	  esac
55711473d951Smrg	  # This is a shared library
55721473d951Smrg
55731473d951Smrg	  # Warn about portability, can't link against -module's on some
55741473d951Smrg	  # systems (darwin).  Don't bleat about dlopened modules though!
55751473d951Smrg	  dlopenmodule=""
55761473d951Smrg	  for dlpremoduletest in $dlprefiles; do
55771473d951Smrg	    if test "X$dlpremoduletest" = "X$lib"; then
55781473d951Smrg	      dlopenmodule="$dlpremoduletest"
55791473d951Smrg	      break
55801473d951Smrg	    fi
55811473d951Smrg	  done
55821473d951Smrg	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
55831473d951Smrg	    $ECHO
55841473d951Smrg	    if test "$linkmode" = prog; then
55851473d951Smrg	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
55861473d951Smrg	    else
55871473d951Smrg	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
55881473d951Smrg	    fi
55891473d951Smrg	    $ECHO "*** $linklib is not portable!"
55901473d951Smrg	  fi
55911473d951Smrg	  if test "$linkmode" = lib &&
55921473d951Smrg	     test "$hardcode_into_libs" = yes; then
55931473d951Smrg	    # Hardcode the library path.
55941473d951Smrg	    # Skip directories that are in the system default run-time
55951473d951Smrg	    # search path.
55961473d951Smrg	    case " $sys_lib_dlsearch_path " in
55971473d951Smrg	    *" $absdir "*) ;;
55981473d951Smrg	    *)
55991473d951Smrg	      case "$compile_rpath " in
56001473d951Smrg	      *" $absdir "*) ;;
56011473d951Smrg	      *) compile_rpath="$compile_rpath $absdir"
56021473d951Smrg	      esac
56031473d951Smrg	      ;;
56041473d951Smrg	    esac
56051473d951Smrg	    case " $sys_lib_dlsearch_path " in
56061473d951Smrg	    *" $libdir "*) ;;
56071473d951Smrg	    *)
56081473d951Smrg	      case "$finalize_rpath " in
56091473d951Smrg	      *" $libdir "*) ;;
56101473d951Smrg	      *) finalize_rpath="$finalize_rpath $libdir"
56111473d951Smrg	      esac
56121473d951Smrg	      ;;
56131473d951Smrg	    esac
56141473d951Smrg	  fi
56151473d951Smrg
56161473d951Smrg	  if test -n "$old_archive_from_expsyms_cmds"; then
56171473d951Smrg	    # figure out the soname
56181473d951Smrg	    set dummy $library_names
56191473d951Smrg	    shift
56201473d951Smrg	    realname="$1"
56211473d951Smrg	    shift
56221473d951Smrg	    libname=`eval "\\$ECHO \"$libname_spec\""`
56231473d951Smrg	    # use dlname if we got it. it's perfectly good, no?
56241473d951Smrg	    if test -n "$dlname"; then
56251473d951Smrg	      soname="$dlname"
56261473d951Smrg	    elif test -n "$soname_spec"; then
56271473d951Smrg	      # bleh windows
56281473d951Smrg	      case $host in
56291473d951Smrg	      *cygwin* | mingw* | *cegcc*)
56301473d951Smrg	        func_arith $current - $age
56311473d951Smrg		major=$func_arith_result
56321473d951Smrg		versuffix="-$major"
56331473d951Smrg		;;
56341473d951Smrg	      esac
56351473d951Smrg	      eval soname=\"$soname_spec\"
56361473d951Smrg	    else
56371473d951Smrg	      soname="$realname"
56381473d951Smrg	    fi
56391473d951Smrg
56401473d951Smrg	    # Make a new name for the extract_expsyms_cmds to use
56411473d951Smrg	    soroot="$soname"
56421473d951Smrg	    func_basename "$soroot"
56431473d951Smrg	    soname="$func_basename_result"
56441473d951Smrg	    func_stripname 'lib' '.dll' "$soname"
56451473d951Smrg	    newlib=libimp-$func_stripname_result.a
56461473d951Smrg
56471473d951Smrg	    # If the library has no export list, then create one now
56481473d951Smrg	    if test -f "$output_objdir/$soname-def"; then :
56491473d951Smrg	    else
56501473d951Smrg	      func_verbose "extracting exported symbol list from \`$soname'"
56511473d951Smrg	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
56521473d951Smrg	    fi
56531473d951Smrg
56541473d951Smrg	    # Create $newlib
56551473d951Smrg	    if test -f "$output_objdir/$newlib"; then :; else
56561473d951Smrg	      func_verbose "generating import library for \`$soname'"
56571473d951Smrg	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
56581473d951Smrg	    fi
56591473d951Smrg	    # make sure the library variables are pointing to the new library
56601473d951Smrg	    dir=$output_objdir
56611473d951Smrg	    linklib=$newlib
56621473d951Smrg	  fi # test -n "$old_archive_from_expsyms_cmds"
56631473d951Smrg
56641473d951Smrg	  if test "$linkmode" = prog || test "$mode" != relink; then
56651473d951Smrg	    add_shlibpath=
56661473d951Smrg	    add_dir=
56671473d951Smrg	    add=
56681473d951Smrg	    lib_linked=yes
56691473d951Smrg	    case $hardcode_action in
56701473d951Smrg	    immediate | unsupported)
56711473d951Smrg	      if test "$hardcode_direct" = no; then
56721473d951Smrg		add="$dir/$linklib"
56731473d951Smrg		case $host in
56741473d951Smrg		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
56751473d951Smrg		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
56761473d951Smrg		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
56771473d951Smrg		    *-*-unixware7*) add_dir="-L$dir" ;;
56781473d951Smrg		  *-*-darwin* )
56791473d951Smrg		    # if the lib is a (non-dlopened) module then we can not
56801473d951Smrg		    # link against it, someone is ignoring the earlier warnings
56811473d951Smrg		    if /usr/bin/file -L $add 2> /dev/null |
56821473d951Smrg			 $GREP ": [^:]* bundle" >/dev/null ; then
56831473d951Smrg		      if test "X$dlopenmodule" != "X$lib"; then
56841473d951Smrg			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
56851473d951Smrg			if test -z "$old_library" ; then
56861473d951Smrg			  $ECHO
56871473d951Smrg			  $ECHO "*** And there doesn't seem to be a static archive available"
56881473d951Smrg			  $ECHO "*** The link will probably fail, sorry"
56891473d951Smrg			else
56901473d951Smrg			  add="$dir/$old_library"
56911473d951Smrg			fi
56921473d951Smrg		      elif test -n "$old_library"; then
56931473d951Smrg			add="$dir/$old_library"
56941473d951Smrg		      fi
56951473d951Smrg		    fi
56961473d951Smrg		esac
56971473d951Smrg	      elif test "$hardcode_minus_L" = no; then
56981473d951Smrg		case $host in
56991473d951Smrg		*-*-sunos*) add_shlibpath="$dir" ;;
57001473d951Smrg		esac
57011473d951Smrg		add_dir="-L$dir"
57021473d951Smrg		add="-l$name"
57031473d951Smrg	      elif test "$hardcode_shlibpath_var" = no; then
57041473d951Smrg		add_shlibpath="$dir"
57051473d951Smrg		add="-l$name"
57061473d951Smrg	      else
57071473d951Smrg		lib_linked=no
57081473d951Smrg	      fi
57091473d951Smrg	      ;;
57101473d951Smrg	    relink)
57111473d951Smrg	      if test "$hardcode_direct" = yes &&
57121473d951Smrg	         test "$hardcode_direct_absolute" = no; then
57131473d951Smrg		add="$dir/$linklib"
57141473d951Smrg	      elif test "$hardcode_minus_L" = yes; then
57151473d951Smrg		add_dir="-L$dir"
57161473d951Smrg		# Try looking first in the location we're being installed to.
57171473d951Smrg		if test -n "$inst_prefix_dir"; then
57181473d951Smrg		  case $libdir in
57191473d951Smrg		    [\\/]*)
57201473d951Smrg		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
57211473d951Smrg		      ;;
57221473d951Smrg		  esac
57231473d951Smrg		fi
57241473d951Smrg		add="-l$name"
57251473d951Smrg	      elif test "$hardcode_shlibpath_var" = yes; then
57261473d951Smrg		add_shlibpath="$dir"
57271473d951Smrg		add="-l$name"
57281473d951Smrg	      else
57291473d951Smrg		lib_linked=no
57301473d951Smrg	      fi
57311473d951Smrg	      ;;
57321473d951Smrg	    *) lib_linked=no ;;
57331473d951Smrg	    esac
57341473d951Smrg
57351473d951Smrg	    if test "$lib_linked" != yes; then
57361473d951Smrg	      func_fatal_configuration "unsupported hardcode properties"
57371473d951Smrg	    fi
57381473d951Smrg
57391473d951Smrg	    if test -n "$add_shlibpath"; then
57401473d951Smrg	      case :$compile_shlibpath: in
57411473d951Smrg	      *":$add_shlibpath:"*) ;;
57421473d951Smrg	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
57431473d951Smrg	      esac
57441473d951Smrg	    fi
57451473d951Smrg	    if test "$linkmode" = prog; then
57461473d951Smrg	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
57471473d951Smrg	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
57481473d951Smrg	    else
57491473d951Smrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
57501473d951Smrg	      test -n "$add" && deplibs="$add $deplibs"
57511473d951Smrg	      if test "$hardcode_direct" != yes &&
57521473d951Smrg		 test "$hardcode_minus_L" != yes &&
57531473d951Smrg		 test "$hardcode_shlibpath_var" = yes; then
57541473d951Smrg		case :$finalize_shlibpath: in
57551473d951Smrg		*":$libdir:"*) ;;
57561473d951Smrg		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
57571473d951Smrg		esac
57581473d951Smrg	      fi
57591473d951Smrg	    fi
57601473d951Smrg	  fi
57611473d951Smrg
57621473d951Smrg	  if test "$linkmode" = prog || test "$mode" = relink; then
57631473d951Smrg	    add_shlibpath=
57641473d951Smrg	    add_dir=
57651473d951Smrg	    add=
57661473d951Smrg	    # Finalize command for both is simple: just hardcode it.
57671473d951Smrg	    if test "$hardcode_direct" = yes &&
57681473d951Smrg	       test "$hardcode_direct_absolute" = no; then
57691473d951Smrg	      add="$libdir/$linklib"
57701473d951Smrg	    elif test "$hardcode_minus_L" = yes; then
57711473d951Smrg	      add_dir="-L$libdir"
57721473d951Smrg	      add="-l$name"
57731473d951Smrg	    elif test "$hardcode_shlibpath_var" = yes; then
57741473d951Smrg	      case :$finalize_shlibpath: in
57751473d951Smrg	      *":$libdir:"*) ;;
57761473d951Smrg	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
57771473d951Smrg	      esac
57781473d951Smrg	      add="-l$name"
57791473d951Smrg	    elif test "$hardcode_automatic" = yes; then
57801473d951Smrg	      if test -n "$inst_prefix_dir" &&
57811473d951Smrg		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
57821473d951Smrg		add="$inst_prefix_dir$libdir/$linklib"
57831473d951Smrg	      else
57841473d951Smrg		add="$libdir/$linklib"
57851473d951Smrg	      fi
57861473d951Smrg	    else
57871473d951Smrg	      # We cannot seem to hardcode it, guess we'll fake it.
57881473d951Smrg	      add_dir="-L$libdir"
57891473d951Smrg	      # Try looking first in the location we're being installed to.
57901473d951Smrg	      if test -n "$inst_prefix_dir"; then
57911473d951Smrg		case $libdir in
57921473d951Smrg		  [\\/]*)
57931473d951Smrg		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
57941473d951Smrg		    ;;
57951473d951Smrg		esac
57961473d951Smrg	      fi
57971473d951Smrg	      add="-l$name"
57981473d951Smrg	    fi
57991473d951Smrg
58001473d951Smrg	    if test "$linkmode" = prog; then
58011473d951Smrg	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
58021473d951Smrg	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
58031473d951Smrg	    else
58041473d951Smrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
58051473d951Smrg	      test -n "$add" && deplibs="$add $deplibs"
58061473d951Smrg	    fi
58071473d951Smrg	  fi
58081473d951Smrg	elif test "$linkmode" = prog; then
58091473d951Smrg	  # Here we assume that one of hardcode_direct or hardcode_minus_L
58101473d951Smrg	  # is not unsupported.  This is valid on all known static and
58111473d951Smrg	  # shared platforms.
58121473d951Smrg	  if test "$hardcode_direct" != unsupported; then
58131473d951Smrg	    test -n "$old_library" && linklib="$old_library"
58141473d951Smrg	    compile_deplibs="$dir/$linklib $compile_deplibs"
58151473d951Smrg	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
58161473d951Smrg	  else
58171473d951Smrg	    compile_deplibs="-l$name -L$dir $compile_deplibs"
58181473d951Smrg	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
58191473d951Smrg	  fi
58201473d951Smrg	elif test "$build_libtool_libs" = yes; then
58211473d951Smrg	  # Not a shared library
58221473d951Smrg	  if test "$deplibs_check_method" != pass_all; then
58231473d951Smrg	    # We're trying link a shared library against a static one
58241473d951Smrg	    # but the system doesn't support it.
58251473d951Smrg
58261473d951Smrg	    # Just print a warning and add the library to dependency_libs so
58271473d951Smrg	    # that the program can be linked against the static library.
58281473d951Smrg	    $ECHO
58291473d951Smrg	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
58301473d951Smrg	    $ECHO "*** I have the capability to make that library automatically link in when"
58311473d951Smrg	    $ECHO "*** you link to this library.  But I can only do this if you have a"
58321473d951Smrg	    $ECHO "*** shared version of the library, which you do not appear to have."
58331473d951Smrg	    if test "$module" = yes; then
58341473d951Smrg	      $ECHO "*** But as you try to build a module library, libtool will still create "
58351473d951Smrg	      $ECHO "*** a static module, that should work as long as the dlopening application"
58361473d951Smrg	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
58371473d951Smrg	      if test -z "$global_symbol_pipe"; then
58381473d951Smrg		$ECHO
58391473d951Smrg		$ECHO "*** However, this would only work if libtool was able to extract symbol"
58401473d951Smrg		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
58411473d951Smrg		$ECHO "*** not find such a program.  So, this module is probably useless."
58421473d951Smrg		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
58431473d951Smrg	      fi
58441473d951Smrg	      if test "$build_old_libs" = no; then
58451473d951Smrg		build_libtool_libs=module
58461473d951Smrg		build_old_libs=yes
58471473d951Smrg	      else
58481473d951Smrg		build_libtool_libs=no
58491473d951Smrg	      fi
58501473d951Smrg	    fi
58511473d951Smrg	  else
58521473d951Smrg	    deplibs="$dir/$old_library $deplibs"
58531473d951Smrg	    link_static=yes
58541473d951Smrg	  fi
58551473d951Smrg	fi # link shared/static library?
58561473d951Smrg
58571473d951Smrg	if test "$linkmode" = lib; then
58581473d951Smrg	  if test -n "$dependency_libs" &&
58591473d951Smrg	     { test "$hardcode_into_libs" != yes ||
58601473d951Smrg	       test "$build_old_libs" = yes ||
58611473d951Smrg	       test "$link_static" = yes; }; then
58621473d951Smrg	    # Extract -R from dependency_libs
58631473d951Smrg	    temp_deplibs=
58641473d951Smrg	    for libdir in $dependency_libs; do
58651473d951Smrg	      case $libdir in
58661473d951Smrg	      -R*) func_stripname '-R' '' "$libdir"
58671473d951Smrg	           temp_xrpath=$func_stripname_result
58681473d951Smrg		   case " $xrpath " in
58691473d951Smrg		   *" $temp_xrpath "*) ;;
58701473d951Smrg		   *) xrpath="$xrpath $temp_xrpath";;
58711473d951Smrg		   esac;;
58721473d951Smrg	      *) temp_deplibs="$temp_deplibs $libdir";;
58731473d951Smrg	      esac
58741473d951Smrg	    done
58751473d951Smrg	    dependency_libs="$temp_deplibs"
58761473d951Smrg	  fi
58771473d951Smrg
58781473d951Smrg	  newlib_search_path="$newlib_search_path $absdir"
58791473d951Smrg	  # Link against this library
58801473d951Smrg	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
58811473d951Smrg	  # ... and its dependency_libs
58821473d951Smrg	  tmp_libs=
58831473d951Smrg	  for deplib in $dependency_libs; do
58841473d951Smrg	    newdependency_libs="$deplib $newdependency_libs"
58851473d951Smrg	    if $opt_duplicate_deps ; then
58861473d951Smrg	      case "$tmp_libs " in
58871473d951Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
58881473d951Smrg	      esac
58891473d951Smrg	    fi
58901473d951Smrg	    tmp_libs="$tmp_libs $deplib"
58911473d951Smrg	  done
58921473d951Smrg
58931473d951Smrg	  if test "$link_all_deplibs" != no; then
58941473d951Smrg	    # Add the search paths of all dependency libraries
58951473d951Smrg	    for deplib in $dependency_libs; do
58961473d951Smrg	      case $deplib in
58971473d951Smrg	      -L*) path="$deplib" ;;
58981473d951Smrg	      *.la)
58991473d951Smrg	        func_dirname "$deplib" "" "."
59001473d951Smrg		dir="$func_dirname_result"
59011473d951Smrg		# We need an absolute path.
59021473d951Smrg		case $dir in
59031473d951Smrg		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
59041473d951Smrg		*)
59051473d951Smrg		  absdir=`cd "$dir" && pwd`
59061473d951Smrg		  if test -z "$absdir"; then
59071473d951Smrg		    func_warning "cannot determine absolute directory name of \`$dir'"
59081473d951Smrg		    absdir="$dir"
59091473d951Smrg		  fi
59101473d951Smrg		  ;;
59111473d951Smrg		esac
59121473d951Smrg		if $GREP "^installed=no" $deplib > /dev/null; then
59131473d951Smrg		case $host in
59141473d951Smrg		*-*-darwin*)
59151473d951Smrg		  depdepl=
59161473d951Smrg		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
59171473d951Smrg		  if test -n "$deplibrary_names" ; then
59181473d951Smrg		    for tmp in $deplibrary_names ; do
59191473d951Smrg		      depdepl=$tmp
59201473d951Smrg		    done
59211473d951Smrg		    if test -f "$absdir/$objdir/$depdepl" ; then
59221473d951Smrg		      depdepl="$absdir/$objdir/$depdepl"
59231473d951Smrg		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
59241473d951Smrg                      if test -z "$darwin_install_name"; then
59251473d951Smrg                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
59261473d951Smrg                      fi
59271473d951Smrg		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
59281473d951Smrg		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
59291473d951Smrg		      path=
59301473d951Smrg		    fi
59311473d951Smrg		  fi
59321473d951Smrg		  ;;
59331473d951Smrg		*)
59341473d951Smrg		  path="-L$absdir/$objdir"
59351473d951Smrg		  ;;
59361473d951Smrg		esac
59371473d951Smrg		else
59381473d951Smrg		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
59391473d951Smrg		  test -z "$libdir" && \
59401473d951Smrg		    func_fatal_error "\`$deplib' is not a valid libtool archive"
59411473d951Smrg		  test "$absdir" != "$libdir" && \
59421473d951Smrg		    func_warning "\`$deplib' seems to be moved"
59431473d951Smrg
59441473d951Smrg		  path="-L$absdir"
59451473d951Smrg		fi
59461473d951Smrg		;;
59471473d951Smrg	      esac
59481473d951Smrg	      case " $deplibs " in
59491473d951Smrg	      *" $path "*) ;;
59501473d951Smrg	      *) deplibs="$path $deplibs" ;;
59511473d951Smrg	      esac
59521473d951Smrg	    done
59531473d951Smrg	  fi # link_all_deplibs != no
59541473d951Smrg	fi # linkmode = lib
59551473d951Smrg      done # for deplib in $libs
59561473d951Smrg      if test "$pass" = link; then
59571473d951Smrg	if test "$linkmode" = "prog"; then
59581473d951Smrg	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
59591473d951Smrg	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
59601473d951Smrg	else
59611473d951Smrg	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
59621473d951Smrg	fi
59631473d951Smrg      fi
59641473d951Smrg      dependency_libs="$newdependency_libs"
59651473d951Smrg      if test "$pass" = dlpreopen; then
59661473d951Smrg	# Link the dlpreopened libraries before other libraries
59671473d951Smrg	for deplib in $save_deplibs; do
59681473d951Smrg	  deplibs="$deplib $deplibs"
59691473d951Smrg	done
59701473d951Smrg      fi
59711473d951Smrg      if test "$pass" != dlopen; then
59721473d951Smrg	if test "$pass" != conv; then
59731473d951Smrg	  # Make sure lib_search_path contains only unique directories.
59741473d951Smrg	  lib_search_path=
59751473d951Smrg	  for dir in $newlib_search_path; do
59761473d951Smrg	    case "$lib_search_path " in
59771473d951Smrg	    *" $dir "*) ;;
59781473d951Smrg	    *) lib_search_path="$lib_search_path $dir" ;;
59791473d951Smrg	    esac
59801473d951Smrg	  done
59811473d951Smrg	  newlib_search_path=
59821473d951Smrg	fi
59831473d951Smrg
59841473d951Smrg	if test "$linkmode,$pass" != "prog,link"; then
59851473d951Smrg	  vars="deplibs"
59861473d951Smrg	else
59871473d951Smrg	  vars="compile_deplibs finalize_deplibs"
59881473d951Smrg	fi
59891473d951Smrg	for var in $vars dependency_libs; do
59901473d951Smrg	  # Add libraries to $var in reverse order
59911473d951Smrg	  eval tmp_libs=\"\$$var\"
59921473d951Smrg	  new_libs=
59931473d951Smrg	  for deplib in $tmp_libs; do
59941473d951Smrg	    # FIXME: Pedantically, this is the right thing to do, so
59951473d951Smrg	    #        that some nasty dependency loop isn't accidentally
59961473d951Smrg	    #        broken:
59971473d951Smrg	    #new_libs="$deplib $new_libs"
59981473d951Smrg	    # Pragmatically, this seems to cause very few problems in
59991473d951Smrg	    # practice:
60001473d951Smrg	    case $deplib in
60011473d951Smrg	    -L*) new_libs="$deplib $new_libs" ;;
60021473d951Smrg	    -R*) ;;
60031473d951Smrg	    *)
60041473d951Smrg	      # And here is the reason: when a library appears more
60051473d951Smrg	      # than once as an explicit dependence of a library, or
60061473d951Smrg	      # is implicitly linked in more than once by the
60071473d951Smrg	      # compiler, it is considered special, and multiple
60081473d951Smrg	      # occurrences thereof are not removed.  Compare this
60091473d951Smrg	      # with having the same library being listed as a
60101473d951Smrg	      # dependency of multiple other libraries: in this case,
60111473d951Smrg	      # we know (pedantically, we assume) the library does not
60121473d951Smrg	      # need to be listed more than once, so we keep only the
60131473d951Smrg	      # last copy.  This is not always right, but it is rare
60141473d951Smrg	      # enough that we require users that really mean to play
60151473d951Smrg	      # such unportable linking tricks to link the library
60161473d951Smrg	      # using -Wl,-lname, so that libtool does not consider it
60171473d951Smrg	      # for duplicate removal.
60181473d951Smrg	      case " $specialdeplibs " in
60191473d951Smrg	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
60201473d951Smrg	      *)
60211473d951Smrg		case " $new_libs " in
60221473d951Smrg		*" $deplib "*) ;;
60231473d951Smrg		*) new_libs="$deplib $new_libs" ;;
60241473d951Smrg		esac
60251473d951Smrg		;;
60261473d951Smrg	      esac
60271473d951Smrg	      ;;
60281473d951Smrg	    esac
60291473d951Smrg	  done
60301473d951Smrg	  tmp_libs=
60311473d951Smrg	  for deplib in $new_libs; do
60321473d951Smrg	    case $deplib in
60331473d951Smrg	    -L*)
60341473d951Smrg	      case " $tmp_libs " in
60351473d951Smrg	      *" $deplib "*) ;;
60361473d951Smrg	      *) tmp_libs="$tmp_libs $deplib" ;;
60371473d951Smrg	      esac
60381473d951Smrg	      ;;
60391473d951Smrg	    *) tmp_libs="$tmp_libs $deplib" ;;
60401473d951Smrg	    esac
60411473d951Smrg	  done
60421473d951Smrg	  eval $var=\"$tmp_libs\"
60431473d951Smrg	done # for var
60441473d951Smrg      fi
60451473d951Smrg      # Last step: remove runtime libs from dependency_libs
60461473d951Smrg      # (they stay in deplibs)
60471473d951Smrg      tmp_libs=
60481473d951Smrg      for i in $dependency_libs ; do
60491473d951Smrg	case " $predeps $postdeps $compiler_lib_search_path " in
60501473d951Smrg	*" $i "*)
60511473d951Smrg	  i=""
60521473d951Smrg	  ;;
60531473d951Smrg	esac
60541473d951Smrg	if test -n "$i" ; then
60551473d951Smrg	  tmp_libs="$tmp_libs $i"
60561473d951Smrg	fi
60571473d951Smrg      done
60581473d951Smrg      dependency_libs=$tmp_libs
60591473d951Smrg    done # for pass
60601473d951Smrg    if test "$linkmode" = prog; then
60611473d951Smrg      dlfiles="$newdlfiles"
60621473d951Smrg    fi
60631473d951Smrg    if test "$linkmode" = prog || test "$linkmode" = lib; then
60641473d951Smrg      dlprefiles="$newdlprefiles"
60651473d951Smrg    fi
60661473d951Smrg
60671473d951Smrg    case $linkmode in
60681473d951Smrg    oldlib)
60691473d951Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
60701473d951Smrg	func_warning "\`-dlopen' is ignored for archives"
60711473d951Smrg      fi
60721473d951Smrg
60731473d951Smrg      case " $deplibs" in
60741473d951Smrg      *\ -l* | *\ -L*)
60751473d951Smrg	func_warning "\`-l' and \`-L' are ignored for archives" ;;
60761473d951Smrg      esac
60771473d951Smrg
60781473d951Smrg      test -n "$rpath" && \
60791473d951Smrg	func_warning "\`-rpath' is ignored for archives"
60801473d951Smrg
60811473d951Smrg      test -n "$xrpath" && \
60821473d951Smrg	func_warning "\`-R' is ignored for archives"
60831473d951Smrg
60841473d951Smrg      test -n "$vinfo" && \
60851473d951Smrg	func_warning "\`-version-info/-version-number' is ignored for archives"
60861473d951Smrg
60871473d951Smrg      test -n "$release" && \
60881473d951Smrg	func_warning "\`-release' is ignored for archives"
60891473d951Smrg
60901473d951Smrg      test -n "$export_symbols$export_symbols_regex" && \
60911473d951Smrg	func_warning "\`-export-symbols' is ignored for archives"
60921473d951Smrg
60931473d951Smrg      # Now set the variables for building old libraries.
60941473d951Smrg      build_libtool_libs=no
60951473d951Smrg      oldlibs="$output"
60961473d951Smrg      objs="$objs$old_deplibs"
60971473d951Smrg      ;;
60981473d951Smrg
60991473d951Smrg    lib)
61001473d951Smrg      # Make sure we only generate libraries of the form `libNAME.la'.
61011473d951Smrg      case $outputname in
61021473d951Smrg      lib*)
61031473d951Smrg	func_stripname 'lib' '.la' "$outputname"
61041473d951Smrg	name=$func_stripname_result
61051473d951Smrg	eval shared_ext=\"$shrext_cmds\"
61061473d951Smrg	eval libname=\"$libname_spec\"
61071473d951Smrg	;;
61081473d951Smrg      *)
61091473d951Smrg	test "$module" = no && \
61101473d951Smrg	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
61111473d951Smrg
61121473d951Smrg	if test "$need_lib_prefix" != no; then
61131473d951Smrg	  # Add the "lib" prefix for modules if required
61141473d951Smrg	  func_stripname '' '.la' "$outputname"
61151473d951Smrg	  name=$func_stripname_result
61161473d951Smrg	  eval shared_ext=\"$shrext_cmds\"
61171473d951Smrg	  eval libname=\"$libname_spec\"
61181473d951Smrg	else
61191473d951Smrg	  func_stripname '' '.la' "$outputname"
61201473d951Smrg	  libname=$func_stripname_result
61211473d951Smrg	fi
61221473d951Smrg	;;
61231473d951Smrg      esac
61241473d951Smrg
61251473d951Smrg      if test -n "$objs"; then
61261473d951Smrg	if test "$deplibs_check_method" != pass_all; then
61271473d951Smrg	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
61281473d951Smrg	else
61291473d951Smrg	  $ECHO
61301473d951Smrg	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
61311473d951Smrg	  $ECHO "*** objects $objs is not portable!"
61321473d951Smrg	  libobjs="$libobjs $objs"
61331473d951Smrg	fi
61341473d951Smrg      fi
61351473d951Smrg
61361473d951Smrg      test "$dlself" != no && \
61371473d951Smrg	func_warning "\`-dlopen self' is ignored for libtool libraries"
61381473d951Smrg
61391473d951Smrg      set dummy $rpath
61401473d951Smrg      shift
61411473d951Smrg      test "$#" -gt 1 && \
61421473d951Smrg	func_warning "ignoring multiple \`-rpath's for a libtool library"
61431473d951Smrg
61441473d951Smrg      install_libdir="$1"
61451473d951Smrg
61461473d951Smrg      oldlibs=
61471473d951Smrg      if test -z "$rpath"; then
61481473d951Smrg	if test "$build_libtool_libs" = yes; then
61491473d951Smrg	  # Building a libtool convenience library.
61501473d951Smrg	  # Some compilers have problems with a `.al' extension so
61511473d951Smrg	  # convenience libraries should have the same extension an
61521473d951Smrg	  # archive normally would.
61531473d951Smrg	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
61541473d951Smrg	  build_libtool_libs=convenience
61551473d951Smrg	  build_old_libs=yes
61561473d951Smrg	fi
61571473d951Smrg
61581473d951Smrg	test -n "$vinfo" && \
61591473d951Smrg	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
61601473d951Smrg
61611473d951Smrg	test -n "$release" && \
61621473d951Smrg	  func_warning "\`-release' is ignored for convenience libraries"
61631473d951Smrg      else
61641473d951Smrg
61651473d951Smrg	# Parse the version information argument.
61661473d951Smrg	save_ifs="$IFS"; IFS=':'
61671473d951Smrg	set dummy $vinfo 0 0 0
61681473d951Smrg	shift
61691473d951Smrg	IFS="$save_ifs"
61701473d951Smrg
61711473d951Smrg	test -n "$7" && \
61721473d951Smrg	  func_fatal_help "too many parameters to \`-version-info'"
61731473d951Smrg
61741473d951Smrg	# convert absolute version numbers to libtool ages
61751473d951Smrg	# this retains compatibility with .la files and attempts
61761473d951Smrg	# to make the code below a bit more comprehensible
61771473d951Smrg
61781473d951Smrg	case $vinfo_number in
61791473d951Smrg	yes)
61801473d951Smrg	  number_major="$1"
61811473d951Smrg	  number_minor="$2"
61821473d951Smrg	  number_revision="$3"
61831473d951Smrg	  #
61841473d951Smrg	  # There are really only two kinds -- those that
61851473d951Smrg	  # use the current revision as the major version
61861473d951Smrg	  # and those that subtract age and use age as
61871473d951Smrg	  # a minor version.  But, then there is irix
61881473d951Smrg	  # which has an extra 1 added just for fun
61891473d951Smrg	  #
61901473d951Smrg	  case $version_type in
61911473d951Smrg	  darwin|linux|osf|windows|none)
61921473d951Smrg	    func_arith $number_major + $number_minor
61931473d951Smrg	    current=$func_arith_result
61941473d951Smrg	    age="$number_minor"
61951473d951Smrg	    revision="$number_revision"
61961473d951Smrg	    ;;
61971473d951Smrg	  freebsd-aout|freebsd-elf|sunos)
61981473d951Smrg	    current="$number_major"
61991473d951Smrg	    revision="$number_minor"
62001473d951Smrg	    age="0"
62011473d951Smrg	    ;;
62021473d951Smrg	  irix|nonstopux)
62031473d951Smrg	    func_arith $number_major + $number_minor
62041473d951Smrg	    current=$func_arith_result
62051473d951Smrg	    age="$number_minor"
62061473d951Smrg	    revision="$number_minor"
62071473d951Smrg	    lt_irix_increment=no
62081473d951Smrg	    ;;
62091473d951Smrg	  esac
62101473d951Smrg	  ;;
62111473d951Smrg	no)
62121473d951Smrg	  current="$1"
62131473d951Smrg	  revision="$2"
62141473d951Smrg	  age="$3"
62151473d951Smrg	  ;;
62161473d951Smrg	esac
62171473d951Smrg
62181473d951Smrg	# Check that each of the things are valid numbers.
62191473d951Smrg	case $current in
62201473d951Smrg	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]) ;;
62211473d951Smrg	*)
62221473d951Smrg	  func_error "CURRENT \`$current' must be a nonnegative integer"
62231473d951Smrg	  func_fatal_error "\`$vinfo' is not valid version information"
62241473d951Smrg	  ;;
62251473d951Smrg	esac
62261473d951Smrg
62271473d951Smrg	case $revision in
62281473d951Smrg	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]) ;;
62291473d951Smrg	*)
62301473d951Smrg	  func_error "REVISION \`$revision' must be a nonnegative integer"
62311473d951Smrg	  func_fatal_error "\`$vinfo' is not valid version information"
62321473d951Smrg	  ;;
62331473d951Smrg	esac
62341473d951Smrg
62351473d951Smrg	case $age in
62361473d951Smrg	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]) ;;
62371473d951Smrg	*)
62381473d951Smrg	  func_error "AGE \`$age' must be a nonnegative integer"
62391473d951Smrg	  func_fatal_error "\`$vinfo' is not valid version information"
62401473d951Smrg	  ;;
62411473d951Smrg	esac
62421473d951Smrg
62431473d951Smrg	if test "$age" -gt "$current"; then
62441473d951Smrg	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
62451473d951Smrg	  func_fatal_error "\`$vinfo' is not valid version information"
62461473d951Smrg	fi
62471473d951Smrg
62481473d951Smrg	# Calculate the version variables.
62491473d951Smrg	major=
62501473d951Smrg	versuffix=
62511473d951Smrg	verstring=
62521473d951Smrg	case $version_type in
62531473d951Smrg	none) ;;
62541473d951Smrg
62551473d951Smrg	darwin)
62561473d951Smrg	  # Like Linux, but with the current version available in
62571473d951Smrg	  # verstring for coding it into the library header
62581473d951Smrg	  func_arith $current - $age
62591473d951Smrg	  major=.$func_arith_result
62601473d951Smrg	  versuffix="$major.$age.$revision"
62611473d951Smrg	  # Darwin ld doesn't like 0 for these options...
62621473d951Smrg	  func_arith $current + 1
62631473d951Smrg	  minor_current=$func_arith_result
62641473d951Smrg	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
62651473d951Smrg	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
62661473d951Smrg	  ;;
62671473d951Smrg
62681473d951Smrg	freebsd-aout)
62691473d951Smrg	  major=".$current"
62701473d951Smrg	  versuffix=".$current.$revision";
62711473d951Smrg	  ;;
62721473d951Smrg
62731473d951Smrg	freebsd-elf)
62741473d951Smrg	  major=".$current"
62751473d951Smrg	  versuffix=".$current"
62761473d951Smrg	  ;;
62771473d951Smrg
62781473d951Smrg	irix | nonstopux)
62791473d951Smrg	  if test "X$lt_irix_increment" = "Xno"; then
62801473d951Smrg	    func_arith $current - $age
62811473d951Smrg	  else
62821473d951Smrg	    func_arith $current - $age + 1
62831473d951Smrg	  fi
62841473d951Smrg	  major=$func_arith_result
62851473d951Smrg
62861473d951Smrg	  case $version_type in
62871473d951Smrg	    nonstopux) verstring_prefix=nonstopux ;;
62881473d951Smrg	    *)         verstring_prefix=sgi ;;
62891473d951Smrg	  esac
62901473d951Smrg	  verstring="$verstring_prefix$major.$revision"
62911473d951Smrg
62921473d951Smrg	  # Add in all the interfaces that we are compatible with.
62931473d951Smrg	  loop=$revision
62941473d951Smrg	  while test "$loop" -ne 0; do
62951473d951Smrg	    func_arith $revision - $loop
62961473d951Smrg	    iface=$func_arith_result
62971473d951Smrg	    func_arith $loop - 1
62981473d951Smrg	    loop=$func_arith_result
62991473d951Smrg	    verstring="$verstring_prefix$major.$iface:$verstring"
63001473d951Smrg	  done
63011473d951Smrg
63021473d951Smrg	  # Before this point, $major must not contain `.'.
63031473d951Smrg	  major=.$major
63041473d951Smrg	  versuffix="$major.$revision"
63051473d951Smrg	  ;;
63061473d951Smrg
63071473d951Smrg	linux)
63081473d951Smrg	  func_arith $current - $age
63091473d951Smrg	  major=.$func_arith_result
63101473d951Smrg	  versuffix="$major.$age.$revision"
63111473d951Smrg	  ;;
63121473d951Smrg
63131473d951Smrg	osf)
63141473d951Smrg	  func_arith $current - $age
63151473d951Smrg	  major=.$func_arith_result
63161473d951Smrg	  versuffix=".$current.$age.$revision"
63171473d951Smrg	  verstring="$current.$age.$revision"
63181473d951Smrg
63191473d951Smrg	  # Add in all the interfaces that we are compatible with.
63201473d951Smrg	  loop=$age
63211473d951Smrg	  while test "$loop" -ne 0; do
63221473d951Smrg	    func_arith $current - $loop
63231473d951Smrg	    iface=$func_arith_result
63241473d951Smrg	    func_arith $loop - 1
63251473d951Smrg	    loop=$func_arith_result
63261473d951Smrg	    verstring="$verstring:${iface}.0"
63271473d951Smrg	  done
63281473d951Smrg
63291473d951Smrg	  # Make executables depend on our current version.
63301473d951Smrg	  verstring="$verstring:${current}.0"
63311473d951Smrg	  ;;
63321473d951Smrg
63331473d951Smrg	qnx)
63341473d951Smrg	  major=".$current"
63351473d951Smrg	  versuffix=".$current"
63361473d951Smrg	  ;;
63371473d951Smrg
63381473d951Smrg	sunos)
63391473d951Smrg	  major=".$current"
63401473d951Smrg	  versuffix=".$current.$revision"
63411473d951Smrg	  ;;
63421473d951Smrg
63431473d951Smrg	windows)
63441473d951Smrg	  # Use '-' rather than '.', since we only want one
63451473d951Smrg	  # extension on DOS 8.3 filesystems.
63461473d951Smrg	  func_arith $current - $age
63471473d951Smrg	  major=$func_arith_result
63481473d951Smrg	  versuffix="-$major"
63491473d951Smrg	  ;;
63501473d951Smrg
63511473d951Smrg	*)
63521473d951Smrg	  func_fatal_configuration "unknown library version type \`$version_type'"
63531473d951Smrg	  ;;
63541473d951Smrg	esac
63551473d951Smrg
63561473d951Smrg	# Clear the version info if we defaulted, and they specified a release.
63571473d951Smrg	if test -z "$vinfo" && test -n "$release"; then
63581473d951Smrg	  major=
63591473d951Smrg	  case $version_type in
63601473d951Smrg	  darwin)
63611473d951Smrg	    # we can't check for "0.0" in archive_cmds due to quoting
63621473d951Smrg	    # problems, so we reset it completely
63631473d951Smrg	    verstring=
63641473d951Smrg	    ;;
63651473d951Smrg	  *)
63661473d951Smrg	    verstring="0.0"
63671473d951Smrg	    ;;
63681473d951Smrg	  esac
63691473d951Smrg	  if test "$need_version" = no; then
63701473d951Smrg	    versuffix=
63711473d951Smrg	  else
63721473d951Smrg	    versuffix=".0.0"
63731473d951Smrg	  fi
63741473d951Smrg	fi
63751473d951Smrg
63761473d951Smrg	# Remove version info from name if versioning should be avoided
63771473d951Smrg	if test "$avoid_version" = yes && test "$need_version" = no; then
63781473d951Smrg	  major=
63791473d951Smrg	  versuffix=
63801473d951Smrg	  verstring=""
63811473d951Smrg	fi
63821473d951Smrg
63831473d951Smrg	# Check to see if the archive will have undefined symbols.
63841473d951Smrg	if test "$allow_undefined" = yes; then
63851473d951Smrg	  if test "$allow_undefined_flag" = unsupported; then
63861473d951Smrg	    func_warning "undefined symbols not allowed in $host shared libraries"
63871473d951Smrg	    build_libtool_libs=no
63881473d951Smrg	    build_old_libs=yes
63891473d951Smrg	  fi
63901473d951Smrg	else
63911473d951Smrg	  # Don't allow undefined symbols.
63921473d951Smrg	  allow_undefined_flag="$no_undefined_flag"
63931473d951Smrg	fi
63941473d951Smrg
63951473d951Smrg      fi
63961473d951Smrg
63971473d951Smrg      func_generate_dlsyms "$libname" "$libname" "yes"
63981473d951Smrg      libobjs="$libobjs $symfileobj"
63991473d951Smrg      test "X$libobjs" = "X " && libobjs=
64001473d951Smrg
64011473d951Smrg      if test "$mode" != relink; then
64021473d951Smrg	# Remove our outputs, but don't remove object files since they
64031473d951Smrg	# may have been created when compiling PIC objects.
64041473d951Smrg	removelist=
64051473d951Smrg	tempremovelist=`$ECHO "$output_objdir/*"`
64061473d951Smrg	for p in $tempremovelist; do
64071473d951Smrg	  case $p in
64081473d951Smrg	    *.$objext | *.gcno)
64091473d951Smrg	       ;;
64101473d951Smrg	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
64111473d951Smrg	       if test "X$precious_files_regex" != "X"; then
64121473d951Smrg		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
64131473d951Smrg		 then
64141473d951Smrg		   continue
64151473d951Smrg		 fi
64161473d951Smrg	       fi
64171473d951Smrg	       removelist="$removelist $p"
64181473d951Smrg	       ;;
64191473d951Smrg	    *) ;;
64201473d951Smrg	  esac
64211473d951Smrg	done
64221473d951Smrg	test -n "$removelist" && \
64231473d951Smrg	  func_show_eval "${RM}r \$removelist"
64241473d951Smrg      fi
64251473d951Smrg
64261473d951Smrg      # Now set the variables for building old libraries.
64271473d951Smrg      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
64281473d951Smrg	oldlibs="$oldlibs $output_objdir/$libname.$libext"
64291473d951Smrg
64301473d951Smrg	# Transform .lo files to .o files.
64311473d951Smrg	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
64321473d951Smrg      fi
64331473d951Smrg
64341473d951Smrg      # Eliminate all temporary directories.
64351473d951Smrg      #for path in $notinst_path; do
64361473d951Smrg      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
64371473d951Smrg      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
64381473d951Smrg      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
64391473d951Smrg      #done
64401473d951Smrg
64411473d951Smrg      if test -n "$xrpath"; then
64421473d951Smrg	# If the user specified any rpath flags, then add them.
64431473d951Smrg	temp_xrpath=
64441473d951Smrg	for libdir in $xrpath; do
64451473d951Smrg	  temp_xrpath="$temp_xrpath -R$libdir"
64461473d951Smrg	  case "$finalize_rpath " in
64471473d951Smrg	  *" $libdir "*) ;;
64481473d951Smrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
64491473d951Smrg	  esac
64501473d951Smrg	done
64511473d951Smrg	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
64521473d951Smrg	  dependency_libs="$temp_xrpath $dependency_libs"
64531473d951Smrg	fi
64541473d951Smrg      fi
64551473d951Smrg
64561473d951Smrg      # Make sure dlfiles contains only unique files that won't be dlpreopened
64571473d951Smrg      old_dlfiles="$dlfiles"
64581473d951Smrg      dlfiles=
64591473d951Smrg      for lib in $old_dlfiles; do
64601473d951Smrg	case " $dlprefiles $dlfiles " in
64611473d951Smrg	*" $lib "*) ;;
64621473d951Smrg	*) dlfiles="$dlfiles $lib" ;;
64631473d951Smrg	esac
64641473d951Smrg      done
64651473d951Smrg
64661473d951Smrg      # Make sure dlprefiles contains only unique files
64671473d951Smrg      old_dlprefiles="$dlprefiles"
64681473d951Smrg      dlprefiles=
64691473d951Smrg      for lib in $old_dlprefiles; do
64701473d951Smrg	case "$dlprefiles " in
64711473d951Smrg	*" $lib "*) ;;
64721473d951Smrg	*) dlprefiles="$dlprefiles $lib" ;;
64731473d951Smrg	esac
64741473d951Smrg      done
64751473d951Smrg
64761473d951Smrg      if test "$build_libtool_libs" = yes; then
64771473d951Smrg	if test -n "$rpath"; then
64781473d951Smrg	  case $host in
64791473d951Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
64801473d951Smrg	    # these systems don't actually have a c library (as such)!
64811473d951Smrg	    ;;
64821473d951Smrg	  *-*-rhapsody* | *-*-darwin1.[012])
64831473d951Smrg	    # Rhapsody C library is in the System framework
64841473d951Smrg	    deplibs="$deplibs System.ltframework"
64851473d951Smrg	    ;;
64861473d951Smrg	  *-*-netbsd*)
64871473d951Smrg	    # Don't link with libc until the a.out ld.so is fixed.
64881473d951Smrg	    ;;
64891473d951Smrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
64901473d951Smrg	    # Do not include libc due to us having libc/libc_r.
64911473d951Smrg	    ;;
64921473d951Smrg	  *-*-sco3.2v5* | *-*-sco5v6*)
64931473d951Smrg	    # Causes problems with __ctype
64941473d951Smrg	    ;;
64951473d951Smrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
64961473d951Smrg	    # Compiler inserts libc in the correct place for threads to work
64971473d951Smrg	    ;;
64981473d951Smrg	  *)
64991473d951Smrg	    # Add libc to deplibs on all other systems if necessary.
65001473d951Smrg	    if test "$build_libtool_need_lc" = "yes"; then
65011473d951Smrg	      deplibs="$deplibs -lc"
65021473d951Smrg	    fi
65031473d951Smrg	    ;;
65041473d951Smrg	  esac
65051473d951Smrg	fi
65061473d951Smrg
65071473d951Smrg	# Transform deplibs into only deplibs that can be linked in shared.
65081473d951Smrg	name_save=$name
65091473d951Smrg	libname_save=$libname
65101473d951Smrg	release_save=$release
65111473d951Smrg	versuffix_save=$versuffix
65121473d951Smrg	major_save=$major
65131473d951Smrg	# I'm not sure if I'm treating the release correctly.  I think
65141473d951Smrg	# release should show up in the -l (ie -lgmp5) so we don't want to
65151473d951Smrg	# add it in twice.  Is that correct?
65161473d951Smrg	release=""
65171473d951Smrg	versuffix=""
65181473d951Smrg	major=""
65191473d951Smrg	newdeplibs=
65201473d951Smrg	droppeddeps=no
65211473d951Smrg	case $deplibs_check_method in
65221473d951Smrg	pass_all)
65231473d951Smrg	  # Don't check for shared/static.  Everything works.
65241473d951Smrg	  # This might be a little naive.  We might want to check
65251473d951Smrg	  # whether the library exists or not.  But this is on
65261473d951Smrg	  # osf3 & osf4 and I'm not really sure... Just
65271473d951Smrg	  # implementing what was already the behavior.
65281473d951Smrg	  newdeplibs=$deplibs
65291473d951Smrg	  ;;
65301473d951Smrg	test_compile)
65311473d951Smrg	  # This code stresses the "libraries are programs" paradigm to its
65321473d951Smrg	  # limits. Maybe even breaks it.  We compile a program, linking it
65331473d951Smrg	  # against the deplibs as a proxy for the library.  Then we can check
65341473d951Smrg	  # whether they linked in statically or dynamically with ldd.
65351473d951Smrg	  $opt_dry_run || $RM conftest.c
65361473d951Smrg	  cat > conftest.c <<EOF
65371473d951Smrg	  int main() { return 0; }
65381473d951SmrgEOF
65391473d951Smrg	  $opt_dry_run || $RM conftest
65401473d951Smrg	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
65411473d951Smrg	    ldd_output=`ldd conftest`
65421473d951Smrg	    for i in $deplibs; do
65431473d951Smrg	      case $i in
65441473d951Smrg	      -l*)
65451473d951Smrg		func_stripname -l '' "$i"
65461473d951Smrg		name=$func_stripname_result
65471473d951Smrg		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
65481473d951Smrg		  case " $predeps $postdeps " in
65491473d951Smrg		  *" $i "*)
65501473d951Smrg		    newdeplibs="$newdeplibs $i"
65511473d951Smrg		    i=""
65521473d951Smrg		    ;;
65531473d951Smrg		  esac
65541473d951Smrg		fi
65551473d951Smrg		if test -n "$i" ; then
65561473d951Smrg		  libname=`eval "\\$ECHO \"$libname_spec\""`
65571473d951Smrg		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
65581473d951Smrg		  set dummy $deplib_matches; shift
65591473d951Smrg		  deplib_match=$1
65601473d951Smrg		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
65611473d951Smrg		    newdeplibs="$newdeplibs $i"
65621473d951Smrg		  else
65631473d951Smrg		    droppeddeps=yes
65641473d951Smrg		    $ECHO
65651473d951Smrg		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
65661473d951Smrg		    $ECHO "*** I have the capability to make that library automatically link in when"
65671473d951Smrg		    $ECHO "*** you link to this library.  But I can only do this if you have a"
65681473d951Smrg		    $ECHO "*** shared version of the library, which I believe you do not have"
65691473d951Smrg		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
65701473d951Smrg		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
65711473d951Smrg		  fi
65721473d951Smrg		fi
65731473d951Smrg		;;
65741473d951Smrg	      *)
65751473d951Smrg		newdeplibs="$newdeplibs $i"
65761473d951Smrg		;;
65771473d951Smrg	      esac
65781473d951Smrg	    done
65791473d951Smrg	  else
65801473d951Smrg	    # Error occurred in the first compile.  Let's try to salvage
65811473d951Smrg	    # the situation: Compile a separate program for each library.
65821473d951Smrg	    for i in $deplibs; do
65831473d951Smrg	      case $i in
65841473d951Smrg	      -l*)
65851473d951Smrg		func_stripname -l '' "$i"
65861473d951Smrg		name=$func_stripname_result
65871473d951Smrg		$opt_dry_run || $RM conftest
65881473d951Smrg		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
65891473d951Smrg		  ldd_output=`ldd conftest`
65901473d951Smrg		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
65911473d951Smrg		    case " $predeps $postdeps " in
65921473d951Smrg		    *" $i "*)
65931473d951Smrg		      newdeplibs="$newdeplibs $i"
65941473d951Smrg		      i=""
65951473d951Smrg		      ;;
65961473d951Smrg		    esac
65971473d951Smrg		  fi
65981473d951Smrg		  if test -n "$i" ; then
65991473d951Smrg		    libname=`eval "\\$ECHO \"$libname_spec\""`
66001473d951Smrg		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
66011473d951Smrg		    set dummy $deplib_matches; shift
66021473d951Smrg		    deplib_match=$1
66031473d951Smrg		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
66041473d951Smrg		      newdeplibs="$newdeplibs $i"
66051473d951Smrg		    else
66061473d951Smrg		      droppeddeps=yes
66071473d951Smrg		      $ECHO
66081473d951Smrg		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
66091473d951Smrg		      $ECHO "*** I have the capability to make that library automatically link in when"
66101473d951Smrg		      $ECHO "*** you link to this library.  But I can only do this if you have a"
66111473d951Smrg		      $ECHO "*** shared version of the library, which you do not appear to have"
66121473d951Smrg		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
66131473d951Smrg		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
66141473d951Smrg		    fi
66151473d951Smrg		  fi
66161473d951Smrg		else
66171473d951Smrg		  droppeddeps=yes
66181473d951Smrg		  $ECHO
66191473d951Smrg		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
66201473d951Smrg		  $ECHO "*** make it link in!  You will probably need to install it or some"
66211473d951Smrg		  $ECHO "*** library that it depends on before this library will be fully"
66221473d951Smrg		  $ECHO "*** functional.  Installing it before continuing would be even better."
66231473d951Smrg		fi
66241473d951Smrg		;;
66251473d951Smrg	      *)
66261473d951Smrg		newdeplibs="$newdeplibs $i"
66271473d951Smrg		;;
66281473d951Smrg	      esac
66291473d951Smrg	    done
66301473d951Smrg	  fi
66311473d951Smrg	  ;;
66321473d951Smrg	file_magic*)
66331473d951Smrg	  set dummy $deplibs_check_method; shift
66341473d951Smrg	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
66351473d951Smrg	  for a_deplib in $deplibs; do
66361473d951Smrg	    case $a_deplib in
66371473d951Smrg	    -l*)
66381473d951Smrg	      func_stripname -l '' "$a_deplib"
66391473d951Smrg	      name=$func_stripname_result
66401473d951Smrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
66411473d951Smrg		case " $predeps $postdeps " in
66421473d951Smrg		*" $a_deplib "*)
66431473d951Smrg		  newdeplibs="$newdeplibs $a_deplib"
66441473d951Smrg		  a_deplib=""
66451473d951Smrg		  ;;
66461473d951Smrg		esac
66471473d951Smrg	      fi
66481473d951Smrg	      if test -n "$a_deplib" ; then
66491473d951Smrg		libname=`eval "\\$ECHO \"$libname_spec\""`
66501473d951Smrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
66511473d951Smrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
66521473d951Smrg		  for potent_lib in $potential_libs; do
66531473d951Smrg		      # Follow soft links.
66541473d951Smrg		      if ls -lLd "$potent_lib" 2>/dev/null |
66551473d951Smrg			 $GREP " -> " >/dev/null; then
66561473d951Smrg			continue
66571473d951Smrg		      fi
66581473d951Smrg		      # The statement above tries to avoid entering an
66591473d951Smrg		      # endless loop below, in case of cyclic links.
66601473d951Smrg		      # We might still enter an endless loop, since a link
66611473d951Smrg		      # loop can be closed while we follow links,
66621473d951Smrg		      # but so what?
66631473d951Smrg		      potlib="$potent_lib"
66641473d951Smrg		      while test -h "$potlib" 2>/dev/null; do
66651473d951Smrg			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
66661473d951Smrg			case $potliblink in
66671473d951Smrg			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
66681473d951Smrg			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
66691473d951Smrg			esac
66701473d951Smrg		      done
66711473d951Smrg		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
66721473d951Smrg			 $SED -e 10q |
66731473d951Smrg			 $EGREP "$file_magic_regex" > /dev/null; then
66741473d951Smrg			newdeplibs="$newdeplibs $a_deplib"
66751473d951Smrg			a_deplib=""
66761473d951Smrg			break 2
66771473d951Smrg		      fi
66781473d951Smrg		  done
66791473d951Smrg		done
66801473d951Smrg	      fi
66811473d951Smrg	      if test -n "$a_deplib" ; then
66821473d951Smrg		droppeddeps=yes
66831473d951Smrg		$ECHO
66841473d951Smrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
66851473d951Smrg		$ECHO "*** I have the capability to make that library automatically link in when"
66861473d951Smrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
66871473d951Smrg		$ECHO "*** shared version of the library, which you do not appear to have"
66881473d951Smrg		$ECHO "*** because I did check the linker path looking for a file starting"
66891473d951Smrg		if test -z "$potlib" ; then
66901473d951Smrg		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
66911473d951Smrg		else
66921473d951Smrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
66931473d951Smrg		  $ECHO "*** using a file magic. Last file checked: $potlib"
66941473d951Smrg		fi
66951473d951Smrg	      fi
66961473d951Smrg	      ;;
66971473d951Smrg	    *)
66981473d951Smrg	      # Add a -L argument.
66991473d951Smrg	      newdeplibs="$newdeplibs $a_deplib"
67001473d951Smrg	      ;;
67011473d951Smrg	    esac
67021473d951Smrg	  done # Gone through all deplibs.
67031473d951Smrg	  ;;
67041473d951Smrg	match_pattern*)
67051473d951Smrg	  set dummy $deplibs_check_method; shift
67061473d951Smrg	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
67071473d951Smrg	  for a_deplib in $deplibs; do
67081473d951Smrg	    case $a_deplib in
67091473d951Smrg	    -l*)
67101473d951Smrg	      func_stripname -l '' "$a_deplib"
67111473d951Smrg	      name=$func_stripname_result
67121473d951Smrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
67131473d951Smrg		case " $predeps $postdeps " in
67141473d951Smrg		*" $a_deplib "*)
67151473d951Smrg		  newdeplibs="$newdeplibs $a_deplib"
67161473d951Smrg		  a_deplib=""
67171473d951Smrg		  ;;
67181473d951Smrg		esac
67191473d951Smrg	      fi
67201473d951Smrg	      if test -n "$a_deplib" ; then
67211473d951Smrg		libname=`eval "\\$ECHO \"$libname_spec\""`
67221473d951Smrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
67231473d951Smrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
67241473d951Smrg		  for potent_lib in $potential_libs; do
67251473d951Smrg		    potlib="$potent_lib" # see symlink-check above in file_magic test
67261473d951Smrg		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
67271473d951Smrg		       $EGREP "$match_pattern_regex" > /dev/null; then
67281473d951Smrg		      newdeplibs="$newdeplibs $a_deplib"
67291473d951Smrg		      a_deplib=""
67301473d951Smrg		      break 2
67311473d951Smrg		    fi
67321473d951Smrg		  done
67331473d951Smrg		done
67341473d951Smrg	      fi
67351473d951Smrg	      if test -n "$a_deplib" ; then
67361473d951Smrg		droppeddeps=yes
67371473d951Smrg		$ECHO
67381473d951Smrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
67391473d951Smrg		$ECHO "*** I have the capability to make that library automatically link in when"
67401473d951Smrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
67411473d951Smrg		$ECHO "*** shared version of the library, which you do not appear to have"
67421473d951Smrg		$ECHO "*** because I did check the linker path looking for a file starting"
67431473d951Smrg		if test -z "$potlib" ; then
67441473d951Smrg		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
67451473d951Smrg		else
67461473d951Smrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
67471473d951Smrg		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
67481473d951Smrg		fi
67491473d951Smrg	      fi
67501473d951Smrg	      ;;
67511473d951Smrg	    *)
67521473d951Smrg	      # Add a -L argument.
67531473d951Smrg	      newdeplibs="$newdeplibs $a_deplib"
67541473d951Smrg	      ;;
67551473d951Smrg	    esac
67561473d951Smrg	  done # Gone through all deplibs.
67571473d951Smrg	  ;;
67581473d951Smrg	none | unknown | *)
67591473d951Smrg	  newdeplibs=""
67601473d951Smrg	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
67611473d951Smrg	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
67621473d951Smrg	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
67631473d951Smrg	    for i in $predeps $postdeps ; do
67641473d951Smrg	      # can't use Xsed below, because $i might contain '/'
67651473d951Smrg	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
67661473d951Smrg	    done
67671473d951Smrg	  fi
67681473d951Smrg	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
67691473d951Smrg	     $GREP . >/dev/null; then
67701473d951Smrg	    $ECHO
67711473d951Smrg	    if test "X$deplibs_check_method" = "Xnone"; then
67721473d951Smrg	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
67731473d951Smrg	    else
67741473d951Smrg	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
67751473d951Smrg	    fi
67761473d951Smrg	    $ECHO "*** All declared inter-library dependencies are being dropped."
67771473d951Smrg	    droppeddeps=yes
67781473d951Smrg	  fi
67791473d951Smrg	  ;;
67801473d951Smrg	esac
67811473d951Smrg	versuffix=$versuffix_save
67821473d951Smrg	major=$major_save
67831473d951Smrg	release=$release_save
67841473d951Smrg	libname=$libname_save
67851473d951Smrg	name=$name_save
67861473d951Smrg
67871473d951Smrg	case $host in
67881473d951Smrg	*-*-rhapsody* | *-*-darwin1.[012])
67891473d951Smrg	  # On Rhapsody replace the C library with the System framework
67901473d951Smrg	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
67911473d951Smrg	  ;;
67921473d951Smrg	esac
67931473d951Smrg
67941473d951Smrg	if test "$droppeddeps" = yes; then
67951473d951Smrg	  if test "$module" = yes; then
67961473d951Smrg	    $ECHO
67971473d951Smrg	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
67981473d951Smrg	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
67991473d951Smrg	    $ECHO "*** a static module, that should work as long as the dlopening"
68001473d951Smrg	    $ECHO "*** application is linked with the -dlopen flag."
68011473d951Smrg	    if test -z "$global_symbol_pipe"; then
68021473d951Smrg	      $ECHO
68031473d951Smrg	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
68041473d951Smrg	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
68051473d951Smrg	      $ECHO "*** not find such a program.  So, this module is probably useless."
68061473d951Smrg	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
68071473d951Smrg	    fi
68081473d951Smrg	    if test "$build_old_libs" = no; then
68091473d951Smrg	      oldlibs="$output_objdir/$libname.$libext"
68101473d951Smrg	      build_libtool_libs=module
68111473d951Smrg	      build_old_libs=yes
68121473d951Smrg	    else
68131473d951Smrg	      build_libtool_libs=no
68141473d951Smrg	    fi
68151473d951Smrg	  else
68161473d951Smrg	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
68171473d951Smrg	    $ECHO "*** automatically added whenever a program is linked with this library"
68181473d951Smrg	    $ECHO "*** or is declared to -dlopen it."
68191473d951Smrg
68201473d951Smrg	    if test "$allow_undefined" = no; then
68211473d951Smrg	      $ECHO
68221473d951Smrg	      $ECHO "*** Since this library must not contain undefined symbols,"
68231473d951Smrg	      $ECHO "*** because either the platform does not support them or"
68241473d951Smrg	      $ECHO "*** it was explicitly requested with -no-undefined,"
68251473d951Smrg	      $ECHO "*** libtool will only create a static version of it."
68261473d951Smrg	      if test "$build_old_libs" = no; then
68271473d951Smrg		oldlibs="$output_objdir/$libname.$libext"
68281473d951Smrg		build_libtool_libs=module
68291473d951Smrg		build_old_libs=yes
68301473d951Smrg	      else
68311473d951Smrg		build_libtool_libs=no
68321473d951Smrg	      fi
68331473d951Smrg	    fi
68341473d951Smrg	  fi
68351473d951Smrg	fi
68361473d951Smrg	# Done checking deplibs!
68371473d951Smrg	deplibs=$newdeplibs
68381473d951Smrg      fi
68391473d951Smrg      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
68401473d951Smrg      case $host in
68411473d951Smrg	*-*-darwin*)
68421473d951Smrg	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68431473d951Smrg	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68441473d951Smrg	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68451473d951Smrg	  ;;
68461473d951Smrg      esac
68471473d951Smrg
68481473d951Smrg      # move library search paths that coincide with paths to not yet
68491473d951Smrg      # installed libraries to the beginning of the library search list
68501473d951Smrg      new_libs=
68511473d951Smrg      for path in $notinst_path; do
68521473d951Smrg	case " $new_libs " in
68531473d951Smrg	*" -L$path/$objdir "*) ;;
68541473d951Smrg	*)
68551473d951Smrg	  case " $deplibs " in
68561473d951Smrg	  *" -L$path/$objdir "*)
68571473d951Smrg	    new_libs="$new_libs -L$path/$objdir" ;;
68581473d951Smrg	  esac
68591473d951Smrg	  ;;
68601473d951Smrg	esac
68611473d951Smrg      done
68621473d951Smrg      for deplib in $deplibs; do
68631473d951Smrg	case $deplib in
68641473d951Smrg	-L*)
68651473d951Smrg	  case " $new_libs " in
68661473d951Smrg	  *" $deplib "*) ;;
68671473d951Smrg	  *) new_libs="$new_libs $deplib" ;;
68681473d951Smrg	  esac
68691473d951Smrg	  ;;
68701473d951Smrg	*) new_libs="$new_libs $deplib" ;;
68711473d951Smrg	esac
68721473d951Smrg      done
68731473d951Smrg      deplibs="$new_libs"
68741473d951Smrg
68751473d951Smrg      # All the library-specific variables (install_libdir is set above).
68761473d951Smrg      library_names=
68771473d951Smrg      old_library=
68781473d951Smrg      dlname=
68791473d951Smrg
68801473d951Smrg      # Test again, we may have decided not to build it any more
68811473d951Smrg      if test "$build_libtool_libs" = yes; then
68821473d951Smrg	if test "$hardcode_into_libs" = yes; then
68831473d951Smrg	  # Hardcode the library paths
68841473d951Smrg	  hardcode_libdirs=
68851473d951Smrg	  dep_rpath=
68861473d951Smrg	  rpath="$finalize_rpath"
68871473d951Smrg	  test "$mode" != relink && rpath="$compile_rpath$rpath"
68881473d951Smrg	  for libdir in $rpath; do
68891473d951Smrg	    if test -n "$hardcode_libdir_flag_spec"; then
68901473d951Smrg	      if test -n "$hardcode_libdir_separator"; then
68911473d951Smrg		if test -z "$hardcode_libdirs"; then
68921473d951Smrg		  hardcode_libdirs="$libdir"
68931473d951Smrg		else
68941473d951Smrg		  # Just accumulate the unique libdirs.
68951473d951Smrg		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
68961473d951Smrg		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
68971473d951Smrg		    ;;
68981473d951Smrg		  *)
68991473d951Smrg		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
69001473d951Smrg		    ;;
69011473d951Smrg		  esac
69021473d951Smrg		fi
69031473d951Smrg	      else
69041473d951Smrg		eval flag=\"$hardcode_libdir_flag_spec\"
69051473d951Smrg		dep_rpath="$dep_rpath $flag"
69061473d951Smrg	      fi
69071473d951Smrg	    elif test -n "$runpath_var"; then
69081473d951Smrg	      case "$perm_rpath " in
69091473d951Smrg	      *" $libdir "*) ;;
69101473d951Smrg	      *) perm_rpath="$perm_rpath $libdir" ;;
69111473d951Smrg	      esac
69121473d951Smrg	    fi
69131473d951Smrg	  done
69141473d951Smrg	  # Substitute the hardcoded libdirs into the rpath.
69151473d951Smrg	  if test -n "$hardcode_libdir_separator" &&
69161473d951Smrg	     test -n "$hardcode_libdirs"; then
69171473d951Smrg	    libdir="$hardcode_libdirs"
69181473d951Smrg	    if test -n "$hardcode_libdir_flag_spec_ld"; then
69191473d951Smrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
69201473d951Smrg	    else
69211473d951Smrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
69221473d951Smrg	    fi
69231473d951Smrg	  fi
69241473d951Smrg	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
69251473d951Smrg	    # We should set the runpath_var.
69261473d951Smrg	    rpath=
69271473d951Smrg	    for dir in $perm_rpath; do
69281473d951Smrg	      rpath="$rpath$dir:"
69291473d951Smrg	    done
69301473d951Smrg	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
69311473d951Smrg	  fi
69321473d951Smrg	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
69331473d951Smrg	fi
6934ab47cfaaSmrg
69351473d951Smrg	shlibpath="$finalize_shlibpath"
69361473d951Smrg	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
69371473d951Smrg	if test -n "$shlibpath"; then
69381473d951Smrg	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
69391473d951Smrg	fi
6940ab47cfaaSmrg
69411473d951Smrg	# Get the real and link names of the library.
69421473d951Smrg	eval shared_ext=\"$shrext_cmds\"
69431473d951Smrg	eval library_names=\"$library_names_spec\"
69441473d951Smrg	set dummy $library_names
69451473d951Smrg	shift
69461473d951Smrg	realname="$1"
69471473d951Smrg	shift
6948ab47cfaaSmrg
69491473d951Smrg	if test -n "$soname_spec"; then
69501473d951Smrg	  eval soname=\"$soname_spec\"
69511473d951Smrg	else
69521473d951Smrg	  soname="$realname"
69531473d951Smrg	fi
69541473d951Smrg	if test -z "$dlname"; then
69551473d951Smrg	  dlname=$soname
69561473d951Smrg	fi
6957ab47cfaaSmrg
69581473d951Smrg	lib="$output_objdir/$realname"
69591473d951Smrg	linknames=
69601473d951Smrg	for link
69611473d951Smrg	do
69621473d951Smrg	  linknames="$linknames $link"
69631473d951Smrg	done
6964ab47cfaaSmrg
69651473d951Smrg	# Use standard objects if they are pic
69661473d951Smrg	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
69671473d951Smrg	test "X$libobjs" = "X " && libobjs=
6968ab47cfaaSmrg
69691473d951Smrg	delfiles=
69701473d951Smrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
69711473d951Smrg	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
69721473d951Smrg	  export_symbols="$output_objdir/$libname.uexp"
69731473d951Smrg	  delfiles="$delfiles $export_symbols"
69741473d951Smrg	fi
6975ab47cfaaSmrg
69761473d951Smrg	orig_export_symbols=
69771473d951Smrg	case $host_os in
69781473d951Smrg	cygwin* | mingw* | cegcc*)
69791473d951Smrg	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
69801473d951Smrg	    # exporting using user supplied symfile
69811473d951Smrg	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
69821473d951Smrg	      # and it's NOT already a .def file. Must figure out
69831473d951Smrg	      # which of the given symbols are data symbols and tag
69841473d951Smrg	      # them as such. So, trigger use of export_symbols_cmds.
69851473d951Smrg	      # export_symbols gets reassigned inside the "prepare
69861473d951Smrg	      # the list of exported symbols" if statement, so the
69871473d951Smrg	      # include_expsyms logic still works.
69881473d951Smrg	      orig_export_symbols="$export_symbols"
69891473d951Smrg	      export_symbols=
69901473d951Smrg	      always_export_symbols=yes
69911473d951Smrg	    fi
69921473d951Smrg	  fi
69931473d951Smrg	  ;;
69941473d951Smrg	esac
6995ab47cfaaSmrg
69961473d951Smrg	# Prepare the list of exported symbols
69971473d951Smrg	if test -z "$export_symbols"; then
69981473d951Smrg	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
69991473d951Smrg	    func_verbose "generating symbol list for \`$libname.la'"
70001473d951Smrg	    export_symbols="$output_objdir/$libname.exp"
70011473d951Smrg	    $opt_dry_run || $RM $export_symbols
70021473d951Smrg	    cmds=$export_symbols_cmds
70031473d951Smrg	    save_ifs="$IFS"; IFS='~'
70041473d951Smrg	    for cmd in $cmds; do
70051473d951Smrg	      IFS="$save_ifs"
70061473d951Smrg	      eval cmd=\"$cmd\"
70071473d951Smrg	      func_len " $cmd"
70081473d951Smrg	      len=$func_len_result
70091473d951Smrg	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
70101473d951Smrg		func_show_eval "$cmd" 'exit $?'
70111473d951Smrg		skipped_export=false
70121473d951Smrg	      else
70131473d951Smrg		# The command line is too long to execute in one step.
70141473d951Smrg		func_verbose "using reloadable object file for export list..."
70151473d951Smrg		skipped_export=:
70161473d951Smrg		# Break out early, otherwise skipped_export may be
70171473d951Smrg		# set to false by a later but shorter cmd.
70181473d951Smrg		break
70191473d951Smrg	      fi
70201473d951Smrg	    done
70211473d951Smrg	    IFS="$save_ifs"
70221473d951Smrg	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
70231473d951Smrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
70241473d951Smrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
70251473d951Smrg	    fi
70261473d951Smrg	  fi
70271473d951Smrg	fi
7028ab47cfaaSmrg
70291473d951Smrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
70301473d951Smrg	  tmp_export_symbols="$export_symbols"
70311473d951Smrg	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
70321473d951Smrg	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
70331473d951Smrg	fi
7034ab47cfaaSmrg
70351473d951Smrg	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
70361473d951Smrg	  # The given exports_symbols file has to be filtered, so filter it.
70371473d951Smrg	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
70381473d951Smrg	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
70391473d951Smrg	  # 's' commands which not all seds can handle. GNU sed should be fine
70401473d951Smrg	  # though. Also, the filter scales superlinearly with the number of
70411473d951Smrg	  # global variables. join(1) would be nice here, but unfortunately
70421473d951Smrg	  # isn't a blessed tool.
70431473d951Smrg	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
70441473d951Smrg	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
70451473d951Smrg	  export_symbols=$output_objdir/$libname.def
70461473d951Smrg	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
7047ab47cfaaSmrg	fi
7048ab47cfaaSmrg
70491473d951Smrg	tmp_deplibs=
70501473d951Smrg	for test_deplib in $deplibs; do
70511473d951Smrg	  case " $convenience " in
70521473d951Smrg	  *" $test_deplib "*) ;;
70531473d951Smrg	  *)
70541473d951Smrg	    tmp_deplibs="$tmp_deplibs $test_deplib"
70551473d951Smrg	    ;;
70561473d951Smrg	  esac
70571473d951Smrg	done
70581473d951Smrg	deplibs="$tmp_deplibs"
7059ab47cfaaSmrg
70601473d951Smrg	if test -n "$convenience"; then
70611473d951Smrg	  if test -n "$whole_archive_flag_spec" &&
70621473d951Smrg	    test "$compiler_needs_object" = yes &&
70631473d951Smrg	    test -z "$libobjs"; then
70641473d951Smrg	    # extract the archives, so we have objects to list.
70651473d951Smrg	    # TODO: could optimize this to just extract one archive.
70661473d951Smrg	    whole_archive_flag_spec=
70671473d951Smrg	  fi
70681473d951Smrg	  if test -n "$whole_archive_flag_spec"; then
70691473d951Smrg	    save_libobjs=$libobjs
70701473d951Smrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
70711473d951Smrg	    test "X$libobjs" = "X " && libobjs=
70721473d951Smrg	  else
70731473d951Smrg	    gentop="$output_objdir/${outputname}x"
70741473d951Smrg	    generated="$generated $gentop"
7075ab47cfaaSmrg
70761473d951Smrg	    func_extract_archives $gentop $convenience
70771473d951Smrg	    libobjs="$libobjs $func_extract_archives_result"
70781473d951Smrg	    test "X$libobjs" = "X " && libobjs=
70791473d951Smrg	  fi
70801473d951Smrg	fi
7081ab47cfaaSmrg
70821473d951Smrg	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
70831473d951Smrg	  eval flag=\"$thread_safe_flag_spec\"
70841473d951Smrg	  linker_flags="$linker_flags $flag"
70851473d951Smrg	fi
7086ab47cfaaSmrg
70871473d951Smrg	# Make a backup of the uninstalled library when relinking
70881473d951Smrg	if test "$mode" = relink; then
70891473d951Smrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
7090ab47cfaaSmrg	fi
7091ab47cfaaSmrg
70921473d951Smrg	# Do each of the archive commands.
70931473d951Smrg	if test "$module" = yes && test -n "$module_cmds" ; then
70941473d951Smrg	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
70951473d951Smrg	    eval test_cmds=\"$module_expsym_cmds\"
70961473d951Smrg	    cmds=$module_expsym_cmds
70971473d951Smrg	  else
70981473d951Smrg	    eval test_cmds=\"$module_cmds\"
70991473d951Smrg	    cmds=$module_cmds
71001473d951Smrg	  fi
71011473d951Smrg	else
71021473d951Smrg	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
71031473d951Smrg	    eval test_cmds=\"$archive_expsym_cmds\"
71041473d951Smrg	    cmds=$archive_expsym_cmds
71051473d951Smrg	  else
71061473d951Smrg	    eval test_cmds=\"$archive_cmds\"
71071473d951Smrg	    cmds=$archive_cmds
71081473d951Smrg	  fi
7109ab47cfaaSmrg	fi
7110ab47cfaaSmrg
71111473d951Smrg	if test "X$skipped_export" != "X:" &&
71121473d951Smrg	   func_len " $test_cmds" &&
71131473d951Smrg	   len=$func_len_result &&
71141473d951Smrg	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
71151473d951Smrg	  :
71161473d951Smrg	else
71171473d951Smrg	  # The command line is too long to link in one step, link piecewise
71181473d951Smrg	  # or, if using GNU ld and skipped_export is not :, use a linker
71191473d951Smrg	  # script.
7120ab47cfaaSmrg
71211473d951Smrg	  # Save the value of $output and $libobjs because we want to
71221473d951Smrg	  # use them later.  If we have whole_archive_flag_spec, we
71231473d951Smrg	  # want to use save_libobjs as it was before
71241473d951Smrg	  # whole_archive_flag_spec was expanded, because we can't
71251473d951Smrg	  # assume the linker understands whole_archive_flag_spec.
71261473d951Smrg	  # This may have to be revisited, in case too many
71271473d951Smrg	  # convenience libraries get linked in and end up exceeding
71281473d951Smrg	  # the spec.
71291473d951Smrg	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
71301473d951Smrg	    save_libobjs=$libobjs
71311473d951Smrg	  fi
71321473d951Smrg	  save_output=$output
71331473d951Smrg	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
7134ab47cfaaSmrg
71351473d951Smrg	  # Clear the reloadable object creation command queue and
71361473d951Smrg	  # initialize k to one.
71371473d951Smrg	  test_cmds=
71381473d951Smrg	  concat_cmds=
71391473d951Smrg	  objlist=
71401473d951Smrg	  last_robj=
71411473d951Smrg	  k=1
7142ab47cfaaSmrg
71431473d951Smrg	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
71441473d951Smrg	    output=${output_objdir}/${output_la}.lnkscript
71451473d951Smrg	    func_verbose "creating GNU ld script: $output"
71461473d951Smrg	    $ECHO 'INPUT (' > $output
71471473d951Smrg	    for obj in $save_libobjs
71481473d951Smrg	    do
71491473d951Smrg	      $ECHO "$obj" >> $output
71501473d951Smrg	    done
71511473d951Smrg	    $ECHO ')' >> $output
71521473d951Smrg	    delfiles="$delfiles $output"
71531473d951Smrg	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
71541473d951Smrg	    output=${output_objdir}/${output_la}.lnk
71551473d951Smrg	    func_verbose "creating linker input file list: $output"
71561473d951Smrg	    : > $output
71571473d951Smrg	    set x $save_libobjs
71581473d951Smrg	    shift
71591473d951Smrg	    firstobj=
71601473d951Smrg	    if test "$compiler_needs_object" = yes; then
71611473d951Smrg	      firstobj="$1 "
71621473d951Smrg	      shift
71631473d951Smrg	    fi
71641473d951Smrg	    for obj
71651473d951Smrg	    do
71661473d951Smrg	      $ECHO "$obj" >> $output
71671473d951Smrg	    done
71681473d951Smrg	    delfiles="$delfiles $output"
71691473d951Smrg	    output=$firstobj\"$file_list_spec$output\"
71701473d951Smrg	  else
71711473d951Smrg	    if test -n "$save_libobjs"; then
71721473d951Smrg	      func_verbose "creating reloadable object files..."
71731473d951Smrg	      output=$output_objdir/$output_la-${k}.$objext
71741473d951Smrg	      eval test_cmds=\"$reload_cmds\"
71751473d951Smrg	      func_len " $test_cmds"
71761473d951Smrg	      len0=$func_len_result
71771473d951Smrg	      len=$len0
71781473d951Smrg
71791473d951Smrg	      # Loop over the list of objects to be linked.
71801473d951Smrg	      for obj in $save_libobjs
71811473d951Smrg	      do
71821473d951Smrg		func_len " $obj"
71831473d951Smrg		func_arith $len + $func_len_result
71841473d951Smrg		len=$func_arith_result
71851473d951Smrg		if test "X$objlist" = X ||
71861473d951Smrg		   test "$len" -lt "$max_cmd_len"; then
71871473d951Smrg		  func_append objlist " $obj"
71881473d951Smrg		else
71891473d951Smrg		  # The command $test_cmds is almost too long, add a
71901473d951Smrg		  # command to the queue.
71911473d951Smrg		  if test "$k" -eq 1 ; then
71921473d951Smrg		    # The first file doesn't have a previous command to add.
71931473d951Smrg		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
71941473d951Smrg		  else
71951473d951Smrg		    # All subsequent reloadable object files will link in
71961473d951Smrg		    # the last one created.
71971473d951Smrg		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
71981473d951Smrg		  fi
71991473d951Smrg		  last_robj=$output_objdir/$output_la-${k}.$objext
72001473d951Smrg		  func_arith $k + 1
72011473d951Smrg		  k=$func_arith_result
72021473d951Smrg		  output=$output_objdir/$output_la-${k}.$objext
72031473d951Smrg		  objlist=$obj
72041473d951Smrg		  func_len " $last_robj"
72051473d951Smrg		  func_arith $len0 + $func_len_result
72061473d951Smrg		  len=$func_arith_result
72071473d951Smrg		fi
72081473d951Smrg	      done
72091473d951Smrg	      # Handle the remaining objects by creating one last
72101473d951Smrg	      # reloadable object file.  All subsequent reloadable object
72111473d951Smrg	      # files will link in the last one created.
72121473d951Smrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
72131473d951Smrg	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
72141473d951Smrg	      if test -n "$last_robj"; then
72151473d951Smrg	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
72161473d951Smrg	      fi
72171473d951Smrg	      delfiles="$delfiles $output"
7218ab47cfaaSmrg
72191473d951Smrg	    else
72201473d951Smrg	      output=
72211473d951Smrg	    fi
72221473d951Smrg
72231473d951Smrg	    if ${skipped_export-false}; then
72241473d951Smrg	      func_verbose "generating symbol list for \`$libname.la'"
72251473d951Smrg	      export_symbols="$output_objdir/$libname.exp"
72261473d951Smrg	      $opt_dry_run || $RM $export_symbols
72271473d951Smrg	      libobjs=$output
72281473d951Smrg	      # Append the command to create the export file.
72291473d951Smrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
72301473d951Smrg	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
72311473d951Smrg	      if test -n "$last_robj"; then
72321473d951Smrg		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
72331473d951Smrg	      fi
72341473d951Smrg	    fi
7235ab47cfaaSmrg
72361473d951Smrg	    test -n "$save_libobjs" &&
72371473d951Smrg	      func_verbose "creating a temporary reloadable object file: $output"
7238ab47cfaaSmrg
72391473d951Smrg	    # Loop through the commands generated above and execute them.
72401473d951Smrg	    save_ifs="$IFS"; IFS='~'
72411473d951Smrg	    for cmd in $concat_cmds; do
72421473d951Smrg	      IFS="$save_ifs"
72431473d951Smrg	      $opt_silent || {
72441473d951Smrg		  func_quote_for_expand "$cmd"
72451473d951Smrg		  eval "func_echo $func_quote_for_expand_result"
72461473d951Smrg	      }
72471473d951Smrg	      $opt_dry_run || eval "$cmd" || {
72481473d951Smrg		lt_exit=$?
72491473d951Smrg
72501473d951Smrg		# Restore the uninstalled library and exit
72511473d951Smrg		if test "$mode" = relink; then
72521473d951Smrg		  ( cd "$output_objdir" && \
72531473d951Smrg		    $RM "${realname}T" && \
72541473d951Smrg		    $MV "${realname}U" "$realname" )
72551473d951Smrg		fi
7256ab47cfaaSmrg
72571473d951Smrg		exit $lt_exit
72581473d951Smrg	      }
72591473d951Smrg	    done
72601473d951Smrg	    IFS="$save_ifs"
7261ab47cfaaSmrg
72621473d951Smrg	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
72631473d951Smrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
72641473d951Smrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
7265ab47cfaaSmrg	    fi
7266ab47cfaaSmrg	  fi
7267ab47cfaaSmrg
72681473d951Smrg          if ${skipped_export-false}; then
72691473d951Smrg	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
72701473d951Smrg	      tmp_export_symbols="$export_symbols"
72711473d951Smrg	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
72721473d951Smrg	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
72731473d951Smrg	    fi
7274ab47cfaaSmrg
72751473d951Smrg	    if test -n "$orig_export_symbols"; then
72761473d951Smrg	      # The given exports_symbols file has to be filtered, so filter it.
72771473d951Smrg	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
72781473d951Smrg	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
72791473d951Smrg	      # 's' commands which not all seds can handle. GNU sed should be fine
72801473d951Smrg	      # though. Also, the filter scales superlinearly with the number of
72811473d951Smrg	      # global variables. join(1) would be nice here, but unfortunately
72821473d951Smrg	      # isn't a blessed tool.
72831473d951Smrg	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
72841473d951Smrg	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
72851473d951Smrg	      export_symbols=$output_objdir/$libname.def
72861473d951Smrg	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
72871473d951Smrg	    fi
72881473d951Smrg	  fi
7289ab47cfaaSmrg
72901473d951Smrg	  libobjs=$output
72911473d951Smrg	  # Restore the value of output.
72921473d951Smrg	  output=$save_output
7293ab47cfaaSmrg
72941473d951Smrg	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
72951473d951Smrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
72961473d951Smrg	    test "X$libobjs" = "X " && libobjs=
72971473d951Smrg	  fi
72981473d951Smrg	  # Expand the library linking commands again to reset the
72991473d951Smrg	  # value of $libobjs for piecewise linking.
73001473d951Smrg
73011473d951Smrg	  # Do each of the archive commands.
73021473d951Smrg	  if test "$module" = yes && test -n "$module_cmds" ; then
73031473d951Smrg	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
73041473d951Smrg	      cmds=$module_expsym_cmds
7305ab47cfaaSmrg	    else
73061473d951Smrg	      cmds=$module_cmds
7307ab47cfaaSmrg	    fi
7308ab47cfaaSmrg	  else
73091473d951Smrg	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
73101473d951Smrg	      cmds=$archive_expsym_cmds
73111473d951Smrg	    else
73121473d951Smrg	      cmds=$archive_cmds
73131473d951Smrg	    fi
7314ab47cfaaSmrg	  fi
7315ab47cfaaSmrg	fi
7316ab47cfaaSmrg
73171473d951Smrg	if test -n "$delfiles"; then
73181473d951Smrg	  # Append the command to remove temporary files to $cmds.
73191473d951Smrg	  eval cmds=\"\$cmds~\$RM $delfiles\"
73201473d951Smrg	fi
7321ab47cfaaSmrg
73221473d951Smrg	# Add any objects from preloaded convenience libraries
73231473d951Smrg	if test -n "$dlprefiles"; then
73241473d951Smrg	  gentop="$output_objdir/${outputname}x"
73251473d951Smrg	  generated="$generated $gentop"
7326ab47cfaaSmrg
73271473d951Smrg	  func_extract_archives $gentop $dlprefiles
73281473d951Smrg	  libobjs="$libobjs $func_extract_archives_result"
73291473d951Smrg	  test "X$libobjs" = "X " && libobjs=
7330ab47cfaaSmrg	fi
7331ab47cfaaSmrg
73321473d951Smrg	save_ifs="$IFS"; IFS='~'
73331473d951Smrg	for cmd in $cmds; do
73341473d951Smrg	  IFS="$save_ifs"
73351473d951Smrg	  eval cmd=\"$cmd\"
73361473d951Smrg	  $opt_silent || {
73371473d951Smrg	    func_quote_for_expand "$cmd"
73381473d951Smrg	    eval "func_echo $func_quote_for_expand_result"
73391473d951Smrg	  }
73401473d951Smrg	  $opt_dry_run || eval "$cmd" || {
73411473d951Smrg	    lt_exit=$?
7342ab47cfaaSmrg
73431473d951Smrg	    # Restore the uninstalled library and exit
73441473d951Smrg	    if test "$mode" = relink; then
73451473d951Smrg	      ( cd "$output_objdir" && \
73461473d951Smrg	        $RM "${realname}T" && \
73471473d951Smrg		$MV "${realname}U" "$realname" )
7348ab47cfaaSmrg	    fi
7349ab47cfaaSmrg
73501473d951Smrg	    exit $lt_exit
73511473d951Smrg	  }
73521473d951Smrg	done
73531473d951Smrg	IFS="$save_ifs"
7354ab47cfaaSmrg
73551473d951Smrg	# Restore the uninstalled library and exit
73561473d951Smrg	if test "$mode" = relink; then
73571473d951Smrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
7358ab47cfaaSmrg
73591473d951Smrg	  if test -n "$convenience"; then
73601473d951Smrg	    if test -z "$whole_archive_flag_spec"; then
73611473d951Smrg	      func_show_eval '${RM}r "$gentop"'
73621473d951Smrg	    fi
73631473d951Smrg	  fi
7364ab47cfaaSmrg
73651473d951Smrg	  exit $EXIT_SUCCESS
73661473d951Smrg	fi
7367ab47cfaaSmrg
73681473d951Smrg	# Create links to the real library.
73691473d951Smrg	for linkname in $linknames; do
73701473d951Smrg	  if test "$realname" != "$linkname"; then
73711473d951Smrg	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
7372ab47cfaaSmrg	  fi
7373ab47cfaaSmrg	done
7374ab47cfaaSmrg
73751473d951Smrg	# If -module or -export-dynamic was specified, set the dlname.
73761473d951Smrg	if test "$module" = yes || test "$export_dynamic" = yes; then
73771473d951Smrg	  # On all known operating systems, these are identical.
73781473d951Smrg	  dlname="$soname"
73791473d951Smrg	fi
73801473d951Smrg      fi
7381ab47cfaaSmrg      ;;
7382ab47cfaaSmrg
73831473d951Smrg    obj)
73841473d951Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
73851473d951Smrg	func_warning "\`-dlopen' is ignored for objects"
73861473d951Smrg      fi
7387ab47cfaaSmrg
73881473d951Smrg      case " $deplibs" in
73891473d951Smrg      *\ -l* | *\ -L*)
73901473d951Smrg	func_warning "\`-l' and \`-L' are ignored for objects" ;;
7391ab47cfaaSmrg      esac
7392ab47cfaaSmrg
73931473d951Smrg      test -n "$rpath" && \
73941473d951Smrg	func_warning "\`-rpath' is ignored for objects"
7395ab47cfaaSmrg
73961473d951Smrg      test -n "$xrpath" && \
73971473d951Smrg	func_warning "\`-R' is ignored for objects"
7398ab47cfaaSmrg
73991473d951Smrg      test -n "$vinfo" && \
74001473d951Smrg	func_warning "\`-version-info' is ignored for objects"
74011473d951Smrg
74021473d951Smrg      test -n "$release" && \
74031473d951Smrg	func_warning "\`-release' is ignored for objects"
74041473d951Smrg
74051473d951Smrg      case $output in
74061473d951Smrg      *.lo)
74071473d951Smrg	test -n "$objs$old_deplibs" && \
74081473d951Smrg	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
74091473d951Smrg
74101473d951Smrg	libobj=$output
74111473d951Smrg	func_lo2o "$libobj"
74121473d951Smrg	obj=$func_lo2o_result
7413ab47cfaaSmrg	;;
7414ab47cfaaSmrg      *)
74151473d951Smrg	libobj=
74161473d951Smrg	obj="$output"
7417ab47cfaaSmrg	;;
7418ab47cfaaSmrg      esac
7419ab47cfaaSmrg
74201473d951Smrg      # Delete the old objects.
74211473d951Smrg      $opt_dry_run || $RM $obj $libobj
7422ab47cfaaSmrg
74231473d951Smrg      # Objects from convenience libraries.  This assumes
74241473d951Smrg      # single-version convenience libraries.  Whenever we create
74251473d951Smrg      # different ones for PIC/non-PIC, this we'll have to duplicate
74261473d951Smrg      # the extraction.
74271473d951Smrg      reload_conv_objs=
74281473d951Smrg      gentop=
74291473d951Smrg      # reload_cmds runs $LD directly, so let us get rid of
74301473d951Smrg      # -Wl from whole_archive_flag_spec and hope we can get by with
74311473d951Smrg      # turning comma into space..
74321473d951Smrg      wl=
7433ab47cfaaSmrg
74341473d951Smrg      if test -n "$convenience"; then
74351473d951Smrg	if test -n "$whole_archive_flag_spec"; then
74361473d951Smrg	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
74371473d951Smrg	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
74381473d951Smrg	else
74391473d951Smrg	  gentop="$output_objdir/${obj}x"
74401473d951Smrg	  generated="$generated $gentop"
7441ab47cfaaSmrg
74421473d951Smrg	  func_extract_archives $gentop $convenience
74431473d951Smrg	  reload_conv_objs="$reload_objs $func_extract_archives_result"
74441473d951Smrg	fi
7445ab47cfaaSmrg      fi
7446ab47cfaaSmrg
74471473d951Smrg      # Create the old-style object.
74481473d951Smrg      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
7449ab47cfaaSmrg
74501473d951Smrg      output="$obj"
74511473d951Smrg      func_execute_cmds "$reload_cmds" 'exit $?'
7452ab47cfaaSmrg
74531473d951Smrg      # Exit if we aren't doing a library object file.
74541473d951Smrg      if test -z "$libobj"; then
74551473d951Smrg	if test -n "$gentop"; then
74561473d951Smrg	  func_show_eval '${RM}r "$gentop"'
74571473d951Smrg	fi
74581473d951Smrg
74591473d951Smrg	exit $EXIT_SUCCESS
7460ab47cfaaSmrg      fi
74611473d951Smrg
74621473d951Smrg      if test "$build_libtool_libs" != yes; then
74631473d951Smrg	if test -n "$gentop"; then
74641473d951Smrg	  func_show_eval '${RM}r "$gentop"'
74651473d951Smrg	fi
74661473d951Smrg
74671473d951Smrg	# Create an invalid libtool object if no PIC, so that we don't
74681473d951Smrg	# accidentally link it into a program.
74691473d951Smrg	# $show "echo timestamp > $libobj"
74701473d951Smrg	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
74711473d951Smrg	exit $EXIT_SUCCESS
74721473d951Smrg      fi
74731473d951Smrg
74741473d951Smrg      if test -n "$pic_flag" || test "$pic_mode" != default; then
74751473d951Smrg	# Only do commands if we really have different PIC objects.
74761473d951Smrg	reload_objs="$libobjs $reload_conv_objs"
74771473d951Smrg	output="$libobj"
74781473d951Smrg	func_execute_cmds "$reload_cmds" 'exit $?'
74791473d951Smrg      fi
74801473d951Smrg
74811473d951Smrg      if test -n "$gentop"; then
74821473d951Smrg	func_show_eval '${RM}r "$gentop"'
74831473d951Smrg      fi
74841473d951Smrg
74851473d951Smrg      exit $EXIT_SUCCESS
7486ab47cfaaSmrg      ;;
7487ab47cfaaSmrg
74881473d951Smrg    prog)
74891473d951Smrg      case $host in
74901473d951Smrg	*cygwin*) func_stripname '' '.exe' "$output"
74911473d951Smrg	          output=$func_stripname_result.exe;;
74921473d951Smrg      esac
74931473d951Smrg      test -n "$vinfo" && \
74941473d951Smrg	func_warning "\`-version-info' is ignored for programs"
7495ab47cfaaSmrg
74961473d951Smrg      test -n "$release" && \
74971473d951Smrg	func_warning "\`-release' is ignored for programs"
7498ab47cfaaSmrg
74991473d951Smrg      test "$preload" = yes \
75001473d951Smrg        && test "$dlopen_support" = unknown \
75011473d951Smrg	&& test "$dlopen_self" = unknown \
75021473d951Smrg	&& test "$dlopen_self_static" = unknown && \
75031473d951Smrg	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
75041473d951Smrg
75051473d951Smrg      case $host in
75061473d951Smrg      *-*-rhapsody* | *-*-darwin1.[012])
75071473d951Smrg	# On Rhapsody replace the C library is the System framework
75081473d951Smrg	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
75091473d951Smrg	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
7510ab47cfaaSmrg	;;
75111473d951Smrg      esac
7512ab47cfaaSmrg
75131473d951Smrg      case $host in
75141473d951Smrg      *-*-darwin*)
75151473d951Smrg	# Don't allow lazy linking, it breaks C++ global constructors
75161473d951Smrg	# But is supposedly fixed on 10.4 or later (yay!).
75171473d951Smrg	if test "$tagname" = CXX ; then
75181473d951Smrg	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
75191473d951Smrg	    10.[0123])
75201473d951Smrg	      compile_command="$compile_command ${wl}-bind_at_load"
75211473d951Smrg	      finalize_command="$finalize_command ${wl}-bind_at_load"
75221473d951Smrg	    ;;
75231473d951Smrg	  esac
7524ab47cfaaSmrg	fi
75251473d951Smrg	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
75261473d951Smrg	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
75271473d951Smrg	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
75281473d951Smrg	;;
75291473d951Smrg      esac
7530ab47cfaaSmrg
7531ab47cfaaSmrg
75321473d951Smrg      # move library search paths that coincide with paths to not yet
75331473d951Smrg      # installed libraries to the beginning of the library search list
75341473d951Smrg      new_libs=
75351473d951Smrg      for path in $notinst_path; do
75361473d951Smrg	case " $new_libs " in
75371473d951Smrg	*" -L$path/$objdir "*) ;;
75381473d951Smrg	*)
75391473d951Smrg	  case " $compile_deplibs " in
75401473d951Smrg	  *" -L$path/$objdir "*)
75411473d951Smrg	    new_libs="$new_libs -L$path/$objdir" ;;
7542ab47cfaaSmrg	  esac
75431473d951Smrg	  ;;
75441473d951Smrg	esac
75451473d951Smrg      done
75461473d951Smrg      for deplib in $compile_deplibs; do
75471473d951Smrg	case $deplib in
75481473d951Smrg	-L*)
75491473d951Smrg	  case " $new_libs " in
75501473d951Smrg	  *" $deplib "*) ;;
75511473d951Smrg	  *) new_libs="$new_libs $deplib" ;;
7552ab47cfaaSmrg	  esac
75531473d951Smrg	  ;;
75541473d951Smrg	*) new_libs="$new_libs $deplib" ;;
75551473d951Smrg	esac
75561473d951Smrg      done
75571473d951Smrg      compile_deplibs="$new_libs"
7558ab47cfaaSmrg
7559ab47cfaaSmrg
75601473d951Smrg      compile_command="$compile_command $compile_deplibs"
75611473d951Smrg      finalize_command="$finalize_command $finalize_deplibs"
7562ab47cfaaSmrg
75631473d951Smrg      if test -n "$rpath$xrpath"; then
75641473d951Smrg	# If the user specified any rpath flags, then add them.
75651473d951Smrg	for libdir in $rpath $xrpath; do
75661473d951Smrg	  # This is the magic to use -rpath.
75671473d951Smrg	  case "$finalize_rpath " in
75681473d951Smrg	  *" $libdir "*) ;;
75691473d951Smrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
75701473d951Smrg	  esac
75711473d951Smrg	done
75721473d951Smrg      fi
7573ab47cfaaSmrg
75741473d951Smrg      # Now hardcode the library paths
75751473d951Smrg      rpath=
75761473d951Smrg      hardcode_libdirs=
75771473d951Smrg      for libdir in $compile_rpath $finalize_rpath; do
75781473d951Smrg	if test -n "$hardcode_libdir_flag_spec"; then
75791473d951Smrg	  if test -n "$hardcode_libdir_separator"; then
75801473d951Smrg	    if test -z "$hardcode_libdirs"; then
75811473d951Smrg	      hardcode_libdirs="$libdir"
75821473d951Smrg	    else
75831473d951Smrg	      # Just accumulate the unique libdirs.
75841473d951Smrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
75851473d951Smrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
75861473d951Smrg		;;
75871473d951Smrg	      *)
75881473d951Smrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
75891473d951Smrg		;;
75901473d951Smrg	      esac
75911473d951Smrg	    fi
7592ab47cfaaSmrg	  else
75931473d951Smrg	    eval flag=\"$hardcode_libdir_flag_spec\"
75941473d951Smrg	    rpath="$rpath $flag"
7595ab47cfaaSmrg	  fi
75961473d951Smrg	elif test -n "$runpath_var"; then
75971473d951Smrg	  case "$perm_rpath " in
75981473d951Smrg	  *" $libdir "*) ;;
75991473d951Smrg	  *) perm_rpath="$perm_rpath $libdir" ;;
76001473d951Smrg	  esac
76011473d951Smrg	fi
76021473d951Smrg	case $host in
76031473d951Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
76041473d951Smrg	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
76051473d951Smrg	  case :$dllsearchpath: in
76061473d951Smrg	  *":$libdir:"*) ;;
76071473d951Smrg	  ::) dllsearchpath=$libdir;;
76081473d951Smrg	  *) dllsearchpath="$dllsearchpath:$libdir";;
76091473d951Smrg	  esac
76101473d951Smrg	  case :$dllsearchpath: in
76111473d951Smrg	  *":$testbindir:"*) ;;
76121473d951Smrg	  ::) dllsearchpath=$testbindir;;
76131473d951Smrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
76141473d951Smrg	  esac
76151473d951Smrg	  ;;
76161473d951Smrg	esac
76171473d951Smrg      done
76181473d951Smrg      # Substitute the hardcoded libdirs into the rpath.
76191473d951Smrg      if test -n "$hardcode_libdir_separator" &&
76201473d951Smrg	 test -n "$hardcode_libdirs"; then
76211473d951Smrg	libdir="$hardcode_libdirs"
76221473d951Smrg	eval rpath=\" $hardcode_libdir_flag_spec\"
76231473d951Smrg      fi
76241473d951Smrg      compile_rpath="$rpath"
7625ab47cfaaSmrg
76261473d951Smrg      rpath=
76271473d951Smrg      hardcode_libdirs=
76281473d951Smrg      for libdir in $finalize_rpath; do
76291473d951Smrg	if test -n "$hardcode_libdir_flag_spec"; then
76301473d951Smrg	  if test -n "$hardcode_libdir_separator"; then
76311473d951Smrg	    if test -z "$hardcode_libdirs"; then
76321473d951Smrg	      hardcode_libdirs="$libdir"
76331473d951Smrg	    else
76341473d951Smrg	      # Just accumulate the unique libdirs.
76351473d951Smrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
76361473d951Smrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
76371473d951Smrg		;;
76381473d951Smrg	      *)
76391473d951Smrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
76401473d951Smrg		;;
76411473d951Smrg	      esac
76421473d951Smrg	    fi
7643ab47cfaaSmrg	  else
76441473d951Smrg	    eval flag=\"$hardcode_libdir_flag_spec\"
76451473d951Smrg	    rpath="$rpath $flag"
7646ab47cfaaSmrg	  fi
76471473d951Smrg	elif test -n "$runpath_var"; then
76481473d951Smrg	  case "$finalize_perm_rpath " in
76491473d951Smrg	  *" $libdir "*) ;;
76501473d951Smrg	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
76511473d951Smrg	  esac
7652ab47cfaaSmrg	fi
76531473d951Smrg      done
76541473d951Smrg      # Substitute the hardcoded libdirs into the rpath.
76551473d951Smrg      if test -n "$hardcode_libdir_separator" &&
76561473d951Smrg	 test -n "$hardcode_libdirs"; then
76571473d951Smrg	libdir="$hardcode_libdirs"
76581473d951Smrg	eval rpath=\" $hardcode_libdir_flag_spec\"
76591473d951Smrg      fi
76601473d951Smrg      finalize_rpath="$rpath"
7661ab47cfaaSmrg
76621473d951Smrg      if test -n "$libobjs" && test "$build_old_libs" = yes; then
76631473d951Smrg	# Transform all the library objects into standard objects.
76641473d951Smrg	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
76651473d951Smrg	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
76661473d951Smrg      fi
7667ab47cfaaSmrg
76681473d951Smrg      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
7669ab47cfaaSmrg
76701473d951Smrg      # template prelinking step
76711473d951Smrg      if test -n "$prelink_cmds"; then
76721473d951Smrg	func_execute_cmds "$prelink_cmds" 'exit $?'
76731473d951Smrg      fi
7674ab47cfaaSmrg
76751473d951Smrg      wrappers_required=yes
76761473d951Smrg      case $host in
76771473d951Smrg      *cygwin* | *mingw* )
76781473d951Smrg        if test "$build_libtool_libs" != yes; then
76791473d951Smrg          wrappers_required=no
76801473d951Smrg        fi
76811473d951Smrg        ;;
76821473d951Smrg      *cegcc)
76831473d951Smrg        # Disable wrappers for cegcc, we are cross compiling anyway.
76841473d951Smrg        wrappers_required=no
76851473d951Smrg        ;;
76861473d951Smrg      *)
76871473d951Smrg        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
76881473d951Smrg          wrappers_required=no
76891473d951Smrg        fi
76901473d951Smrg        ;;
76911473d951Smrg      esac
76921473d951Smrg      if test "$wrappers_required" = no; then
76931473d951Smrg	# Replace the output file specification.
76941473d951Smrg	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
76951473d951Smrg	link_command="$compile_command$compile_rpath"
7696ab47cfaaSmrg
76971473d951Smrg	# We have no uninstalled library dependencies, so finalize right now.
76981473d951Smrg	exit_status=0
76991473d951Smrg	func_show_eval "$link_command" 'exit_status=$?'
7700ab47cfaaSmrg
77011473d951Smrg	# Delete the generated files.
77021473d951Smrg	if test -f "$output_objdir/${outputname}S.${objext}"; then
77031473d951Smrg	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
7704ab47cfaaSmrg	fi
7705ab47cfaaSmrg
77061473d951Smrg	exit $exit_status
77071473d951Smrg      fi
7708ab47cfaaSmrg
77091473d951Smrg      if test -n "$compile_shlibpath$finalize_shlibpath"; then
77101473d951Smrg	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
77111473d951Smrg      fi
77121473d951Smrg      if test -n "$finalize_shlibpath"; then
77131473d951Smrg	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
77141473d951Smrg      fi
7715ab47cfaaSmrg
77161473d951Smrg      compile_var=
77171473d951Smrg      finalize_var=
77181473d951Smrg      if test -n "$runpath_var"; then
77191473d951Smrg	if test -n "$perm_rpath"; then
77201473d951Smrg	  # We should set the runpath_var.
77211473d951Smrg	  rpath=
77221473d951Smrg	  for dir in $perm_rpath; do
77231473d951Smrg	    rpath="$rpath$dir:"
77241473d951Smrg	  done
77251473d951Smrg	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
7726ab47cfaaSmrg	fi
77271473d951Smrg	if test -n "$finalize_perm_rpath"; then
77281473d951Smrg	  # We should set the runpath_var.
77291473d951Smrg	  rpath=
77301473d951Smrg	  for dir in $finalize_perm_rpath; do
77311473d951Smrg	    rpath="$rpath$dir:"
77321473d951Smrg	  done
77331473d951Smrg	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
7734ab47cfaaSmrg	fi
77351473d951Smrg      fi
7736ab47cfaaSmrg
77371473d951Smrg      if test "$no_install" = yes; then
77381473d951Smrg	# We don't need to create a wrapper script.
77391473d951Smrg	link_command="$compile_var$compile_command$compile_rpath"
77401473d951Smrg	# Replace the output file specification.
77411473d951Smrg	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
77421473d951Smrg	# Delete the old output file.
77431473d951Smrg	$opt_dry_run || $RM $output
77441473d951Smrg	# Link the executable and exit
77451473d951Smrg	func_show_eval "$link_command" 'exit $?'
7746ab47cfaaSmrg	exit $EXIT_SUCCESS
77471473d951Smrg      fi
7748ab47cfaaSmrg
77491473d951Smrg      if test "$hardcode_action" = relink; then
77501473d951Smrg	# Fast installation is not supported
77511473d951Smrg	link_command="$compile_var$compile_command$compile_rpath"
77521473d951Smrg	relink_command="$finalize_var$finalize_command$finalize_rpath"
77531473d951Smrg
77541473d951Smrg	func_warning "this platform does not like uninstalled shared libraries"
77551473d951Smrg	func_warning "\`$output' will be relinked during installation"
77561473d951Smrg      else
77571473d951Smrg	if test "$fast_install" != no; then
77581473d951Smrg	  link_command="$finalize_var$compile_command$finalize_rpath"
77591473d951Smrg	  if test "$fast_install" = yes; then
77601473d951Smrg	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
77611473d951Smrg	  else
77621473d951Smrg	    # fast_install is set to needless
77631473d951Smrg	    relink_command=
77641473d951Smrg	  fi
7765ab47cfaaSmrg	else
77661473d951Smrg	  link_command="$compile_var$compile_command$compile_rpath"
77671473d951Smrg	  relink_command="$finalize_var$finalize_command$finalize_rpath"
7768ab47cfaaSmrg	fi
77691473d951Smrg      fi
7770ab47cfaaSmrg
77711473d951Smrg      # Replace the output file specification.
77721473d951Smrg      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
7773ab47cfaaSmrg
77741473d951Smrg      # Delete the old output files.
77751473d951Smrg      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
7776ab47cfaaSmrg
77771473d951Smrg      func_show_eval "$link_command" 'exit $?'
7778ab47cfaaSmrg
77791473d951Smrg      # Now create the wrapper script.
77801473d951Smrg      func_verbose "creating $output"
7781ab47cfaaSmrg
77821473d951Smrg      # Quote the relink command for shipping.
77831473d951Smrg      if test -n "$relink_command"; then
77841473d951Smrg	# Preserve any variables that may affect compiler behavior
77851473d951Smrg	for var in $variables_saved_for_relink; do
77861473d951Smrg	  if eval test -z \"\${$var+set}\"; then
77871473d951Smrg	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
77881473d951Smrg	  elif eval var_value=\$$var; test -z "$var_value"; then
77891473d951Smrg	    relink_command="$var=; export $var; $relink_command"
7790ab47cfaaSmrg	  else
77911473d951Smrg	    func_quote_for_eval "$var_value"
77921473d951Smrg	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
7793ab47cfaaSmrg	  fi
77941473d951Smrg	done
77951473d951Smrg	relink_command="(cd `pwd`; $relink_command)"
77961473d951Smrg	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
77971473d951Smrg      fi
7798ab47cfaaSmrg
77991473d951Smrg      # Quote $ECHO for shipping.
78001473d951Smrg      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
78011473d951Smrg	case $progpath in
78021473d951Smrg	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
78031473d951Smrg	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
78041473d951Smrg	esac
78051473d951Smrg	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
78061473d951Smrg      else
78071473d951Smrg	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
78081473d951Smrg      fi
78091473d951Smrg
78101473d951Smrg      # Only actually do things if not in dry run mode.
78111473d951Smrg      $opt_dry_run || {
78121473d951Smrg	# win32 will think the script is a binary if it has
78131473d951Smrg	# a .exe suffix, so we strip it off here.
78141473d951Smrg	case $output in
78151473d951Smrg	  *.exe) func_stripname '' '.exe' "$output"
78161473d951Smrg	         output=$func_stripname_result ;;
78171473d951Smrg	esac
78181473d951Smrg	# test for cygwin because mv fails w/o .exe extensions
78191473d951Smrg	case $host in
78201473d951Smrg	  *cygwin*)
78211473d951Smrg	    exeext=.exe
78221473d951Smrg	    func_stripname '' '.exe' "$outputname"
78231473d951Smrg	    outputname=$func_stripname_result ;;
78241473d951Smrg	  *) exeext= ;;
7825ab47cfaaSmrg	esac
78261473d951Smrg	case $host in
78271473d951Smrg	  *cygwin* | *mingw* )
78281473d951Smrg	    func_dirname_and_basename "$output" "" "."
78291473d951Smrg	    output_name=$func_basename_result
78301473d951Smrg	    output_path=$func_dirname_result
78311473d951Smrg	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
78321473d951Smrg	    cwrapper="$output_path/$output_name.exe"
78331473d951Smrg	    $RM $cwrappersource $cwrapper
78341473d951Smrg	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
78351473d951Smrg
78361473d951Smrg	    func_emit_cwrapperexe_src > $cwrappersource
78371473d951Smrg
78381473d951Smrg	    # The wrapper executable is built using the $host compiler,
78391473d951Smrg	    # because it contains $host paths and files. If cross-
78401473d951Smrg	    # compiling, it, like the target executable, must be
78411473d951Smrg	    # executed on the $host or under an emulation environment.
78421473d951Smrg	    $opt_dry_run || {
78431473d951Smrg	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
78441473d951Smrg	      $STRIP $cwrapper
78451473d951Smrg	    }
7846ab47cfaaSmrg
78471473d951Smrg	    # Now, create the wrapper script for func_source use:
78481473d951Smrg	    func_ltwrapper_scriptname $cwrapper
78491473d951Smrg	    $RM $func_ltwrapper_scriptname_result
78501473d951Smrg	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
78511473d951Smrg	    $opt_dry_run || {
78521473d951Smrg	      # note: this script will not be executed, so do not chmod.
78531473d951Smrg	      if test "x$build" = "x$host" ; then
78541473d951Smrg		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
78551473d951Smrg	      else
78561473d951Smrg		func_emit_wrapper no > $func_ltwrapper_scriptname_result
78571473d951Smrg	      fi
78581473d951Smrg	    }
78591473d951Smrg	  ;;
78601473d951Smrg	  * )
78611473d951Smrg	    $RM $output
78621473d951Smrg	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
7863ab47cfaaSmrg
78641473d951Smrg	    func_emit_wrapper no > $output
78651473d951Smrg	    chmod +x $output
78661473d951Smrg	  ;;
78671473d951Smrg	esac
78681473d951Smrg      }
78691473d951Smrg      exit $EXIT_SUCCESS
78701473d951Smrg      ;;
78711473d951Smrg    esac
7872ab47cfaaSmrg
78731473d951Smrg    # See if we need to build an old-fashioned archive.
78741473d951Smrg    for oldlib in $oldlibs; do
7875ab47cfaaSmrg
78761473d951Smrg      if test "$build_libtool_libs" = convenience; then
78771473d951Smrg	oldobjs="$libobjs_save $symfileobj"
78781473d951Smrg	addlibs="$convenience"
78791473d951Smrg	build_libtool_libs=no
78801473d951Smrg      else
78811473d951Smrg	if test "$build_libtool_libs" = module; then
78821473d951Smrg	  oldobjs="$libobjs_save"
78831473d951Smrg	  build_libtool_libs=no
78841473d951Smrg	else
78851473d951Smrg	  oldobjs="$old_deplibs $non_pic_objects"
78861473d951Smrg	  if test "$preload" = yes && test -f "$symfileobj"; then
78871473d951Smrg	    oldobjs="$oldobjs $symfileobj"
78881473d951Smrg	  fi
78891473d951Smrg	fi
78901473d951Smrg	addlibs="$old_convenience"
7891ab47cfaaSmrg      fi
7892ab47cfaaSmrg
78931473d951Smrg      if test -n "$addlibs"; then
78941473d951Smrg	gentop="$output_objdir/${outputname}x"
78951473d951Smrg	generated="$generated $gentop"
7896ab47cfaaSmrg
78971473d951Smrg	func_extract_archives $gentop $addlibs
78981473d951Smrg	oldobjs="$oldobjs $func_extract_archives_result"
78991473d951Smrg      fi
7900ab47cfaaSmrg
79011473d951Smrg      # Do each command in the archive commands.
79021473d951Smrg      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
79031473d951Smrg	cmds=$old_archive_from_new_cmds
79041473d951Smrg      else
7905ab47cfaaSmrg
79061473d951Smrg	# Add any objects from preloaded convenience libraries
79071473d951Smrg	if test -n "$dlprefiles"; then
79081473d951Smrg	  gentop="$output_objdir/${outputname}x"
79091473d951Smrg	  generated="$generated $gentop"
7910ab47cfaaSmrg
79111473d951Smrg	  func_extract_archives $gentop $dlprefiles
79121473d951Smrg	  oldobjs="$oldobjs $func_extract_archives_result"
79131473d951Smrg	fi
7914ab47cfaaSmrg
79151473d951Smrg	# POSIX demands no paths to be encoded in archives.  We have
79161473d951Smrg	# to avoid creating archives with duplicate basenames if we
79171473d951Smrg	# might have to extract them afterwards, e.g., when creating a
79181473d951Smrg	# static archive out of a convenience library, or when linking
79191473d951Smrg	# the entirety of a libtool archive into another (currently
79201473d951Smrg	# not supported by libtool).
79211473d951Smrg	if (for obj in $oldobjs
79221473d951Smrg	    do
79231473d951Smrg	      func_basename "$obj"
79241473d951Smrg	      $ECHO "$func_basename_result"
79251473d951Smrg	    done | sort | sort -uc >/dev/null 2>&1); then
79261473d951Smrg	  :
79271473d951Smrg	else
79281473d951Smrg	  $ECHO "copying selected object files to avoid basename conflicts..."
79291473d951Smrg	  gentop="$output_objdir/${outputname}x"
79301473d951Smrg	  generated="$generated $gentop"
79311473d951Smrg	  func_mkdir_p "$gentop"
79321473d951Smrg	  save_oldobjs=$oldobjs
79331473d951Smrg	  oldobjs=
79341473d951Smrg	  counter=1
79351473d951Smrg	  for obj in $save_oldobjs
79361473d951Smrg	  do
79371473d951Smrg	    func_basename "$obj"
79381473d951Smrg	    objbase="$func_basename_result"
79391473d951Smrg	    case " $oldobjs " in
79401473d951Smrg	    " ") oldobjs=$obj ;;
79411473d951Smrg	    *[\ /]"$objbase "*)
79421473d951Smrg	      while :; do
79431473d951Smrg		# Make sure we don't pick an alternate name that also
79441473d951Smrg		# overlaps.
79451473d951Smrg		newobj=lt$counter-$objbase
79461473d951Smrg		func_arith $counter + 1
79471473d951Smrg		counter=$func_arith_result
79481473d951Smrg		case " $oldobjs " in
79491473d951Smrg		*[\ /]"$newobj "*) ;;
79501473d951Smrg		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
79511473d951Smrg		esac
79521473d951Smrg	      done
79531473d951Smrg	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
79541473d951Smrg	      oldobjs="$oldobjs $gentop/$newobj"
79551473d951Smrg	      ;;
79561473d951Smrg	    *) oldobjs="$oldobjs $obj" ;;
79571473d951Smrg	    esac
7958ab47cfaaSmrg	  done
7959ab47cfaaSmrg	fi
79601473d951Smrg	eval cmds=\"$old_archive_cmds\"
7961ab47cfaaSmrg
79621473d951Smrg	func_len " $cmds"
79631473d951Smrg	len=$func_len_result
79641473d951Smrg	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
79651473d951Smrg	  cmds=$old_archive_cmds
79661473d951Smrg	else
79671473d951Smrg	  # the command line is too long to link in one step, link in parts
79681473d951Smrg	  func_verbose "using piecewise archive linking..."
79691473d951Smrg	  save_RANLIB=$RANLIB
79701473d951Smrg	  RANLIB=:
79711473d951Smrg	  objlist=
79721473d951Smrg	  concat_cmds=
79731473d951Smrg	  save_oldobjs=$oldobjs
79741473d951Smrg	  oldobjs=
79751473d951Smrg	  # Is there a better way of finding the last object in the list?
79761473d951Smrg	  for obj in $save_oldobjs
79771473d951Smrg	  do
79781473d951Smrg	    last_oldobj=$obj
79791473d951Smrg	  done
79801473d951Smrg	  eval test_cmds=\"$old_archive_cmds\"
79811473d951Smrg	  func_len " $test_cmds"
79821473d951Smrg	  len0=$func_len_result
79831473d951Smrg	  len=$len0
79841473d951Smrg	  for obj in $save_oldobjs
79851473d951Smrg	  do
79861473d951Smrg	    func_len " $obj"
79871473d951Smrg	    func_arith $len + $func_len_result
79881473d951Smrg	    len=$func_arith_result
79891473d951Smrg	    func_append objlist " $obj"
79901473d951Smrg	    if test "$len" -lt "$max_cmd_len"; then
79911473d951Smrg	      :
79921473d951Smrg	    else
79931473d951Smrg	      # the above command should be used before it gets too long
79941473d951Smrg	      oldobjs=$objlist
79951473d951Smrg	      if test "$obj" = "$last_oldobj" ; then
79961473d951Smrg		RANLIB=$save_RANLIB
79971473d951Smrg	      fi
79981473d951Smrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
79991473d951Smrg	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
80001473d951Smrg	      objlist=
80011473d951Smrg	      len=$len0
80021473d951Smrg	    fi
80031473d951Smrg	  done
80041473d951Smrg	  RANLIB=$save_RANLIB
80051473d951Smrg	  oldobjs=$objlist
80061473d951Smrg	  if test "X$oldobjs" = "X" ; then
80071473d951Smrg	    eval cmds=\"\$concat_cmds\"
80081473d951Smrg	  else
80091473d951Smrg	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
80101473d951Smrg	  fi
80111473d951Smrg	fi
80121473d951Smrg      fi
80131473d951Smrg      func_execute_cmds "$cmds" 'exit $?'
8014ab47cfaaSmrg    done
8015ab47cfaaSmrg
80161473d951Smrg    test -n "$generated" && \
80171473d951Smrg      func_show_eval "${RM}r$generated"
8018ab47cfaaSmrg
80191473d951Smrg    # Now create the libtool archive.
80201473d951Smrg    case $output in
80211473d951Smrg    *.la)
80221473d951Smrg      old_library=
80231473d951Smrg      test "$build_old_libs" = yes && old_library="$libname.$libext"
80241473d951Smrg      func_verbose "creating $output"
8025ab47cfaaSmrg
80261473d951Smrg      # Preserve any variables that may affect compiler behavior
80271473d951Smrg      for var in $variables_saved_for_relink; do
80281473d951Smrg	if eval test -z \"\${$var+set}\"; then
80291473d951Smrg	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
80301473d951Smrg	elif eval var_value=\$$var; test -z "$var_value"; then
80311473d951Smrg	  relink_command="$var=; export $var; $relink_command"
8032ab47cfaaSmrg	else
80331473d951Smrg	  func_quote_for_eval "$var_value"
80341473d951Smrg	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
8035ab47cfaaSmrg	fi
80361473d951Smrg      done
80371473d951Smrg      # Quote the link command for shipping.
80381473d951Smrg      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
80391473d951Smrg      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
80401473d951Smrg      if test "$hardcode_automatic" = yes ; then
80411473d951Smrg	relink_command=
80421473d951Smrg      fi
8043ab47cfaaSmrg
80441473d951Smrg      # Only create the output if not a dry run.
80451473d951Smrg      $opt_dry_run || {
80461473d951Smrg	for installed in no yes; do
80471473d951Smrg	  if test "$installed" = yes; then
80481473d951Smrg	    if test -z "$install_libdir"; then
80491473d951Smrg	      break
80501473d951Smrg	    fi
80511473d951Smrg	    output="$output_objdir/$outputname"i
80521473d951Smrg	    # Replace all uninstalled libtool libraries with the installed ones
80531473d951Smrg	    newdependency_libs=
80541473d951Smrg	    for deplib in $dependency_libs; do
80551473d951Smrg	      case $deplib in
80561473d951Smrg	      *.la)
80571473d951Smrg		func_basename "$deplib"
80581473d951Smrg		name="$func_basename_result"
80591473d951Smrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
80601473d951Smrg		test -z "$libdir" && \
80611473d951Smrg		  func_fatal_error "\`$deplib' is not a valid libtool archive"
80621473d951Smrg		newdependency_libs="$newdependency_libs $libdir/$name"
80631473d951Smrg		;;
80641473d951Smrg	      *) newdependency_libs="$newdependency_libs $deplib" ;;
80651473d951Smrg	      esac
80661473d951Smrg	    done
80671473d951Smrg	    dependency_libs="$newdependency_libs"
80681473d951Smrg	    newdlfiles=
80691473d951Smrg
80701473d951Smrg	    for lib in $dlfiles; do
80711473d951Smrg	      case $lib in
80721473d951Smrg	      *.la)
80731473d951Smrg	        func_basename "$lib"
80741473d951Smrg		name="$func_basename_result"
80751473d951Smrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
80761473d951Smrg		test -z "$libdir" && \
80771473d951Smrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
80781473d951Smrg		newdlfiles="$newdlfiles $libdir/$name"
80791473d951Smrg		;;
80801473d951Smrg	      *) newdlfiles="$newdlfiles $lib" ;;
80811473d951Smrg	      esac
80821473d951Smrg	    done
80831473d951Smrg	    dlfiles="$newdlfiles"
80841473d951Smrg	    newdlprefiles=
80851473d951Smrg	    for lib in $dlprefiles; do
80861473d951Smrg	      case $lib in
80871473d951Smrg	      *.la)
80881473d951Smrg		# Only pass preopened files to the pseudo-archive (for
80891473d951Smrg		# eventual linking with the app. that links it) if we
80901473d951Smrg		# didn't already link the preopened objects directly into
80911473d951Smrg		# the library:
80921473d951Smrg		func_basename "$lib"
80931473d951Smrg		name="$func_basename_result"
80941473d951Smrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
80951473d951Smrg		test -z "$libdir" && \
80961473d951Smrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
80971473d951Smrg		newdlprefiles="$newdlprefiles $libdir/$name"
80981473d951Smrg		;;
80991473d951Smrg	      esac
81001473d951Smrg	    done
81011473d951Smrg	    dlprefiles="$newdlprefiles"
81021473d951Smrg	  else
81031473d951Smrg	    newdlfiles=
81041473d951Smrg	    for lib in $dlfiles; do
81051473d951Smrg	      case $lib in
81061473d951Smrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
81071473d951Smrg		*) abs=`pwd`"/$lib" ;;
81081473d951Smrg	      esac
81091473d951Smrg	      newdlfiles="$newdlfiles $abs"
81101473d951Smrg	    done
81111473d951Smrg	    dlfiles="$newdlfiles"
81121473d951Smrg	    newdlprefiles=
81131473d951Smrg	    for lib in $dlprefiles; do
81141473d951Smrg	      case $lib in
81151473d951Smrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
81161473d951Smrg		*) abs=`pwd`"/$lib" ;;
81171473d951Smrg	      esac
81181473d951Smrg	      newdlprefiles="$newdlprefiles $abs"
81191473d951Smrg	    done
81201473d951Smrg	    dlprefiles="$newdlprefiles"
81211473d951Smrg	  fi
81221473d951Smrg	  $RM $output
81231473d951Smrg	  # place dlname in correct position for cygwin
81241473d951Smrg	  tdlname=$dlname
81251473d951Smrg	  case $host,$output,$installed,$module,$dlname in
81261473d951Smrg	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
81271473d951Smrg	  esac
81281473d951Smrg	  $ECHO > $output "\
81291473d951Smrg# $outputname - a libtool library file
81301473d951Smrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
81311473d951Smrg#
81321473d951Smrg# Please DO NOT delete this file!
81331473d951Smrg# It is necessary for linking the library.
8134ab47cfaaSmrg
81351473d951Smrg# The name that we can dlopen(3).
81361473d951Smrgdlname='$tdlname'
8137ab47cfaaSmrg
81381473d951Smrg# Names of this library.
81391473d951Smrglibrary_names='$library_names'
8140ab47cfaaSmrg
81411473d951Smrg# The name of the static archive.
81421473d951Smrgold_library='$old_library'
8143ab47cfaaSmrg
81441473d951Smrg# Linker flags that can not go in dependency_libs.
81451473d951Smrginherited_linker_flags='$new_inherited_linker_flags'
8146ab47cfaaSmrg
81471473d951Smrg# Libraries that this one depends upon.
81481473d951Smrgdependency_libs='$dependency_libs'
8149ab47cfaaSmrg
81501473d951Smrg# Names of additional weak libraries provided by this library
81511473d951Smrgweak_library_names='$weak_libs'
8152ab47cfaaSmrg
81531473d951Smrg# Version information for $libname.
81541473d951Smrgcurrent=$current
81551473d951Smrgage=$age
81561473d951Smrgrevision=$revision
8157ab47cfaaSmrg
81581473d951Smrg# Is this an already installed library?
81591473d951Smrginstalled=$installed
8160ab47cfaaSmrg
81611473d951Smrg# Should we warn about portability when linking against -modules?
81621473d951Smrgshouldnotlink=$module
8163ab47cfaaSmrg
81641473d951Smrg# Files to dlopen/dlpreopen
81651473d951Smrgdlopen='$dlfiles'
81661473d951Smrgdlpreopen='$dlprefiles'
8167ab47cfaaSmrg
81681473d951Smrg# Directory that this library needs to be installed in:
81691473d951Smrglibdir='$install_libdir'"
81701473d951Smrg	  if test "$installed" = no && test "$need_relink" = yes; then
81711473d951Smrg	    $ECHO >> $output "\
81721473d951Smrgrelink_command=\"$relink_command\""
81731473d951Smrg	  fi
81741473d951Smrg	done
81751473d951Smrg      }
8176ab47cfaaSmrg
81771473d951Smrg      # Do a symbolic link so that the libtool archive can be found in
81781473d951Smrg      # LD_LIBRARY_PATH before the program is installed.
81791473d951Smrg      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
81801473d951Smrg      ;;
81811473d951Smrg    esac
81821473d951Smrg    exit $EXIT_SUCCESS
81831473d951Smrg}
8184ab47cfaaSmrg
81851473d951Smrg{ test "$mode" = link || test "$mode" = relink; } &&
81861473d951Smrg    func_mode_link ${1+"$@"}
8187ab47cfaaSmrg
8188ab47cfaaSmrg
81891473d951Smrg# func_mode_uninstall arg...
81901473d951Smrgfunc_mode_uninstall ()
81911473d951Smrg{
81921473d951Smrg    $opt_debug
81931473d951Smrg    RM="$nonopt"
8194ab47cfaaSmrg    files=
8195ab47cfaaSmrg    rmforce=
8196ab47cfaaSmrg    exit_status=0
8197ab47cfaaSmrg
8198ab47cfaaSmrg    # This variable tells wrapper scripts just to set variables rather
8199ab47cfaaSmrg    # than running their programs.
8200ab47cfaaSmrg    libtool_install_magic="$magic"
8201ab47cfaaSmrg
8202ab47cfaaSmrg    for arg
8203ab47cfaaSmrg    do
8204ab47cfaaSmrg      case $arg in
82051473d951Smrg      -f) RM="$RM $arg"; rmforce=yes ;;
82061473d951Smrg      -*) RM="$RM $arg" ;;
8207ab47cfaaSmrg      *) files="$files $arg" ;;
8208ab47cfaaSmrg      esac
8209ab47cfaaSmrg    done
8210ab47cfaaSmrg
82111473d951Smrg    test -z "$RM" && \
82121473d951Smrg      func_fatal_help "you must specify an RM program"
8213ab47cfaaSmrg
8214ab47cfaaSmrg    rmdirs=
8215ab47cfaaSmrg
8216ab47cfaaSmrg    origobjdir="$objdir"
8217ab47cfaaSmrg    for file in $files; do
82181473d951Smrg      func_dirname "$file" "" "."
82191473d951Smrg      dir="$func_dirname_result"
82201473d951Smrg      if test "X$dir" = X.; then
8221ab47cfaaSmrg	objdir="$origobjdir"
8222ab47cfaaSmrg      else
8223ab47cfaaSmrg	objdir="$dir/$origobjdir"
8224ab47cfaaSmrg      fi
82251473d951Smrg      func_basename "$file"
82261473d951Smrg      name="$func_basename_result"
8227ab47cfaaSmrg      test "$mode" = uninstall && objdir="$dir"
8228ab47cfaaSmrg
8229ab47cfaaSmrg      # Remember objdir for removal later, being careful to avoid duplicates
8230ab47cfaaSmrg      if test "$mode" = clean; then
8231ab47cfaaSmrg	case " $rmdirs " in
8232ab47cfaaSmrg	  *" $objdir "*) ;;
8233ab47cfaaSmrg	  *) rmdirs="$rmdirs $objdir" ;;
8234ab47cfaaSmrg	esac
8235ab47cfaaSmrg      fi
8236ab47cfaaSmrg
8237ab47cfaaSmrg      # Don't error if the file doesn't exist and rm -f was used.
82381473d951Smrg      if { test -L "$file"; } >/dev/null 2>&1 ||
82391473d951Smrg	 { test -h "$file"; } >/dev/null 2>&1 ||
82401473d951Smrg	 test -f "$file"; then
8241ab47cfaaSmrg	:
8242ab47cfaaSmrg      elif test -d "$file"; then
8243ab47cfaaSmrg	exit_status=1
8244ab47cfaaSmrg	continue
8245ab47cfaaSmrg      elif test "$rmforce" = yes; then
8246ab47cfaaSmrg	continue
8247ab47cfaaSmrg      fi
8248ab47cfaaSmrg
8249ab47cfaaSmrg      rmfiles="$file"
8250ab47cfaaSmrg
8251ab47cfaaSmrg      case $name in
8252ab47cfaaSmrg      *.la)
8253ab47cfaaSmrg	# Possibly a libtool archive, so verify it.
82541473d951Smrg	if func_lalib_p "$file"; then
82551473d951Smrg	  func_source $dir/$name
8256ab47cfaaSmrg
8257ab47cfaaSmrg	  # Delete the libtool libraries and symlinks.
8258ab47cfaaSmrg	  for n in $library_names; do
8259ab47cfaaSmrg	    rmfiles="$rmfiles $objdir/$n"
8260ab47cfaaSmrg	  done
8261ab47cfaaSmrg	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
8262ab47cfaaSmrg
8263ab47cfaaSmrg	  case "$mode" in
8264ab47cfaaSmrg	  clean)
8265ab47cfaaSmrg	    case "  $library_names " in
8266ab47cfaaSmrg	    # "  " in the beginning catches empty $dlname
8267ab47cfaaSmrg	    *" $dlname "*) ;;
8268ab47cfaaSmrg	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
8269ab47cfaaSmrg	    esac
82701473d951Smrg	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
8271ab47cfaaSmrg	    ;;
8272ab47cfaaSmrg	  uninstall)
8273ab47cfaaSmrg	    if test -n "$library_names"; then
8274ab47cfaaSmrg	      # Do each command in the postuninstall commands.
82751473d951Smrg	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
8276ab47cfaaSmrg	    fi
8277ab47cfaaSmrg
8278ab47cfaaSmrg	    if test -n "$old_library"; then
8279ab47cfaaSmrg	      # Do each command in the old_postuninstall commands.
82801473d951Smrg	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
8281ab47cfaaSmrg	    fi
8282ab47cfaaSmrg	    # FIXME: should reinstall the best remaining shared library.
8283ab47cfaaSmrg	    ;;
8284ab47cfaaSmrg	  esac
8285ab47cfaaSmrg	fi
8286ab47cfaaSmrg	;;
8287ab47cfaaSmrg
8288ab47cfaaSmrg      *.lo)
8289ab47cfaaSmrg	# Possibly a libtool object, so verify it.
82901473d951Smrg	if func_lalib_p "$file"; then
8291ab47cfaaSmrg
8292ab47cfaaSmrg	  # Read the .lo file
82931473d951Smrg	  func_source $dir/$name
8294ab47cfaaSmrg
8295ab47cfaaSmrg	  # Add PIC object to the list of files to remove.
82961473d951Smrg	  if test -n "$pic_object" &&
82971473d951Smrg	     test "$pic_object" != none; then
8298ab47cfaaSmrg	    rmfiles="$rmfiles $dir/$pic_object"
8299ab47cfaaSmrg	  fi
8300ab47cfaaSmrg
8301ab47cfaaSmrg	  # Add non-PIC object to the list of files to remove.
83021473d951Smrg	  if test -n "$non_pic_object" &&
83031473d951Smrg	     test "$non_pic_object" != none; then
8304ab47cfaaSmrg	    rmfiles="$rmfiles $dir/$non_pic_object"
8305ab47cfaaSmrg	  fi
8306ab47cfaaSmrg	fi
8307ab47cfaaSmrg	;;
8308ab47cfaaSmrg
8309ab47cfaaSmrg      *)
8310ab47cfaaSmrg	if test "$mode" = clean ; then
8311ab47cfaaSmrg	  noexename=$name
8312ab47cfaaSmrg	  case $file in
8313ab47cfaaSmrg	  *.exe)
83141473d951Smrg	    func_stripname '' '.exe' "$file"
83151473d951Smrg	    file=$func_stripname_result
83161473d951Smrg	    func_stripname '' '.exe' "$name"
83171473d951Smrg	    noexename=$func_stripname_result
8318ab47cfaaSmrg	    # $file with .exe has already been added to rmfiles,
8319ab47cfaaSmrg	    # add $file without .exe
8320ab47cfaaSmrg	    rmfiles="$rmfiles $file"
8321ab47cfaaSmrg	    ;;
8322ab47cfaaSmrg	  esac
8323ab47cfaaSmrg	  # Do a test to see if this is a libtool program.
83241473d951Smrg	  if func_ltwrapper_p "$file"; then
83251473d951Smrg	    if func_ltwrapper_executable_p "$file"; then
83261473d951Smrg	      func_ltwrapper_scriptname "$file"
83271473d951Smrg	      relink_command=
83281473d951Smrg	      func_source $func_ltwrapper_scriptname_result
83291473d951Smrg	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
83301473d951Smrg	    else
83311473d951Smrg	      relink_command=
83321473d951Smrg	      func_source $dir/$noexename
83331473d951Smrg	    fi
8334ab47cfaaSmrg
8335ab47cfaaSmrg	    # note $name still contains .exe if it was in $file originally
8336ab47cfaaSmrg	    # as does the version of $file that was added into $rmfiles
8337ab47cfaaSmrg	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
8338ab47cfaaSmrg	    if test "$fast_install" = yes && test -n "$relink_command"; then
8339ab47cfaaSmrg	      rmfiles="$rmfiles $objdir/lt-$name"
8340ab47cfaaSmrg	    fi
8341ab47cfaaSmrg	    if test "X$noexename" != "X$name" ; then
8342ab47cfaaSmrg	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
8343ab47cfaaSmrg	    fi
8344ab47cfaaSmrg	  fi
8345ab47cfaaSmrg	fi
8346ab47cfaaSmrg	;;
8347ab47cfaaSmrg      esac
83481473d951Smrg      func_show_eval "$RM $rmfiles" 'exit_status=1'
8349ab47cfaaSmrg    done
8350ab47cfaaSmrg    objdir="$origobjdir"
8351ab47cfaaSmrg
8352ab47cfaaSmrg    # Try to remove the ${objdir}s in the directories where we deleted files
8353ab47cfaaSmrg    for dir in $rmdirs; do
8354ab47cfaaSmrg      if test -d "$dir"; then
83551473d951Smrg	func_show_eval "rmdir $dir >/dev/null 2>&1"
8356ab47cfaaSmrg      fi
8357ab47cfaaSmrg    done
8358ab47cfaaSmrg
8359ab47cfaaSmrg    exit $exit_status
83601473d951Smrg}
8361ab47cfaaSmrg
83621473d951Smrg{ test "$mode" = uninstall || test "$mode" = clean; } &&
83631473d951Smrg    func_mode_uninstall ${1+"$@"}
8364ab47cfaaSmrg
83651473d951Smrgtest -z "$mode" && {
83661473d951Smrg  help="$generic_help"
83671473d951Smrg  func_fatal_help "you must specify a MODE"
83681473d951Smrg}
83691473d951Smrg
83701473d951Smrgtest -z "$exec_cmd" && \
83711473d951Smrg  func_fatal_help "invalid operation mode \`$mode'"
8372ab47cfaaSmrg
8373ab47cfaaSmrgif test -n "$exec_cmd"; then
83741473d951Smrg  eval exec "$exec_cmd"
8375ab47cfaaSmrg  exit $EXIT_FAILURE
8376ab47cfaaSmrgfi
8377ab47cfaaSmrg
83781473d951Smrgexit $exit_status
8379ab47cfaaSmrg
8380ab47cfaaSmrg
8381ab47cfaaSmrg# The TAGs below are defined such that we never get into a situation
8382ab47cfaaSmrg# in which we disable both kinds of libraries.  Given conflicting
8383ab47cfaaSmrg# choices, we go for a static library, that is the most portable,
8384ab47cfaaSmrg# since we can't tell whether shared libraries were disabled because
8385ab47cfaaSmrg# the user asked for that or because the platform doesn't support
8386ab47cfaaSmrg# them.  This is particularly important on AIX, because we don't
8387ab47cfaaSmrg# support having both static and shared libraries enabled at the same
8388ab47cfaaSmrg# time on that platform, so we default to a shared-only configuration.
8389ab47cfaaSmrg# If a disable-shared tag is given, we'll fallback to a static-only
8390ab47cfaaSmrg# configuration.  But we'll never go from static-only to shared-only.
8391ab47cfaaSmrg
8392ab47cfaaSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
83931473d951Smrgbuild_libtool_libs=no
83941473d951Smrgbuild_old_libs=yes
8395ab47cfaaSmrg# ### END LIBTOOL TAG CONFIG: disable-shared
8396ab47cfaaSmrg
8397ab47cfaaSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static
83981473d951Smrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
8399ab47cfaaSmrg# ### END LIBTOOL TAG CONFIG: disable-static
8400ab47cfaaSmrg
8401ab47cfaaSmrg# Local Variables:
8402ab47cfaaSmrg# mode:shell-script
8403ab47cfaaSmrg# sh-indentation:2
8404ab47cfaaSmrg# End:
84051473d951Smrg# vi:sw=2
84061473d951Smrg
8407