ltmain.sh revision 86dafe34
186dafe34Smrg# Generated from ltmain.m4sh.
286dafe34Smrg
386dafe34Smrg# ltmain.sh (GNU libtool) 2.2.6
486dafe34Smrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
586dafe34Smrg
686dafe34Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
786dafe34Smrg# This is free software; see the source for copying conditions.  There is NO
886dafe34Smrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
986dafe34Smrg
1086dafe34Smrg# GNU Libtool is free software; you can redistribute it and/or modify
1176888252Smrg# it under the terms of the GNU General Public License as published by
1276888252Smrg# the Free Software Foundation; either version 2 of the License, or
1376888252Smrg# (at your option) any later version.
1476888252Smrg#
1586dafe34Smrg# As a special exception to the GNU General Public License,
1686dafe34Smrg# if you distribute this file as part of a program or library that
1786dafe34Smrg# is built using GNU Libtool, you may include this file under the
1886dafe34Smrg# same distribution terms that you use for the rest of that program.
1986dafe34Smrg#
2086dafe34Smrg# GNU Libtool is distributed in the hope that it will be useful, but
2176888252Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of
2276888252Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
2376888252Smrg# General Public License for more details.
2476888252Smrg#
2576888252Smrg# You should have received a copy of the GNU General Public License
2686dafe34Smrg# along with GNU Libtool; see the file COPYING.  If not, a copy
2786dafe34Smrg# can be downloaded from http://www.gnu.org/licenses/gpl.html,
2886dafe34Smrg# or obtained by writing to the Free Software Foundation, Inc.,
2986dafe34Smrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
3086dafe34Smrg
3186dafe34Smrg# Usage: $progname [OPTION]... [MODE-ARG]...
3286dafe34Smrg#
3386dafe34Smrg# Provide generalized library-building support services.
3476888252Smrg#
3586dafe34Smrg#     --config             show all configuration variables
3686dafe34Smrg#     --debug              enable verbose shell tracing
3786dafe34Smrg# -n, --dry-run            display commands without modifying any files
3886dafe34Smrg#     --features           display basic configuration information and exit
3986dafe34Smrg#     --mode=MODE          use operation mode MODE
4086dafe34Smrg#     --preserve-dup-deps  don't remove duplicate dependency libraries
4186dafe34Smrg#     --quiet, --silent    don't print informational messages
4286dafe34Smrg#     --tag=TAG            use configuration variables from tag TAG
4386dafe34Smrg# -v, --verbose            print informational messages (default)
4486dafe34Smrg#     --version            print version information
4586dafe34Smrg# -h, --help               print short or long help message
4686dafe34Smrg#
4786dafe34Smrg# MODE must be one of the following:
4886dafe34Smrg#
4986dafe34Smrg#       clean              remove files from the build directory
5086dafe34Smrg#       compile            compile a source file into a libtool object
5186dafe34Smrg#       execute            automatically set library path, then run a program
5286dafe34Smrg#       finish             complete the installation of libtool libraries
5386dafe34Smrg#       install            install libraries or executables
5486dafe34Smrg#       link               create a library or an executable
5586dafe34Smrg#       uninstall          remove libraries from an installed directory
5686dafe34Smrg#
5786dafe34Smrg# MODE-ARGS vary depending on the MODE.
5886dafe34Smrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
5986dafe34Smrg#
6086dafe34Smrg# When reporting a bug, please describe a test case to reproduce it and
6186dafe34Smrg# include the following information:
6286dafe34Smrg#
6386dafe34Smrg#       host-triplet:	$host
6486dafe34Smrg#       shell:		$SHELL
6586dafe34Smrg#       compiler:		$LTCC
6686dafe34Smrg#       compiler flags:		$LTCFLAGS
6786dafe34Smrg#       linker:		$LD (gnu? $with_gnu_ld)
6886dafe34Smrg#       $progname:		(GNU libtool) 2.2.6
6986dafe34Smrg#       automake:		$automake_version
7086dafe34Smrg#       autoconf:		$autoconf_version
7186dafe34Smrg#
7286dafe34Smrg# Report bugs to <bug-libtool@gnu.org>.
7386dafe34Smrg
7486dafe34SmrgPROGRAM=ltmain.sh
7586dafe34SmrgPACKAGE=libtool
7686dafe34SmrgVERSION=2.2.6
7786dafe34SmrgTIMESTAMP=""
7886dafe34Smrgpackage_revision=1.3012
7986dafe34Smrg
8086dafe34Smrg# Be Bourne compatible
8186dafe34Smrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
8286dafe34Smrg  emulate sh
8386dafe34Smrg  NULLCMD=:
8486dafe34Smrg  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
8586dafe34Smrg  # is contrary to our usage.  Disable this feature.
8686dafe34Smrg  alias -g '${1+"$@"}'='"$@"'
8786dafe34Smrg  setopt NO_GLOB_SUBST
8886dafe34Smrgelse
8986dafe34Smrg  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
9086dafe34Smrgfi
9186dafe34SmrgBIN_SH=xpg4; export BIN_SH # for Tru64
9286dafe34SmrgDUALCASE=1; export DUALCASE # for MKS sh
9386dafe34Smrg
9486dafe34Smrg# NLS nuisances: We save the old values to restore during execute mode.
9586dafe34Smrg# Only set LANG and LC_ALL to C if already set.
9686dafe34Smrg# These must not be set unconditionally because not all systems understand
9786dafe34Smrg# e.g. LANG=C (notably SCO).
9886dafe34Smrglt_user_locale=
9986dafe34Smrglt_safe_locale=
10086dafe34Smrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
10186dafe34Smrgdo
10286dafe34Smrg  eval "if test \"\${$lt_var+set}\" = set; then
10386dafe34Smrg          save_$lt_var=\$$lt_var
10486dafe34Smrg          $lt_var=C
10586dafe34Smrg	  export $lt_var
10686dafe34Smrg	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
10786dafe34Smrg	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
10886dafe34Smrg	fi"
10986dafe34Smrgdone
11086dafe34Smrg
11186dafe34Smrg$lt_unset CDPATH
11286dafe34Smrg
11386dafe34Smrg
11486dafe34Smrg
11586dafe34Smrg
11686dafe34Smrg
11786dafe34Smrg: ${CP="cp -f"}
11886dafe34Smrg: ${ECHO="echo"}
11986dafe34Smrg: ${EGREP="/bin/grep -E"}
12086dafe34Smrg: ${FGREP="/bin/grep -F"}
12186dafe34Smrg: ${GREP="/bin/grep"}
12286dafe34Smrg: ${LN_S="ln -s"}
12386dafe34Smrg: ${MAKE="make"}
12486dafe34Smrg: ${MKDIR="mkdir"}
12586dafe34Smrg: ${MV="mv -f"}
12686dafe34Smrg: ${RM="rm -f"}
12786dafe34Smrg: ${SED="/bin/sed"}
12886dafe34Smrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
12986dafe34Smrg: ${Xsed="$SED -e 1s/^X//"}
13076888252Smrg
13186dafe34Smrg# Global variables:
13286dafe34SmrgEXIT_SUCCESS=0
13386dafe34SmrgEXIT_FAILURE=1
13486dafe34SmrgEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
13586dafe34SmrgEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
13686dafe34Smrg
13786dafe34Smrgexit_status=$EXIT_SUCCESS
13886dafe34Smrg
13986dafe34Smrg# Make sure IFS has a sensible default
14086dafe34Smrglt_nl='
14186dafe34Smrg'
14286dafe34SmrgIFS=" 	$lt_nl"
14386dafe34Smrg
14486dafe34Smrgdirname="s,/[^/]*$,,"
14586dafe34Smrgbasename="s,^.*/,,"
14686dafe34Smrg
14786dafe34Smrg# func_dirname_and_basename file append nondir_replacement
14886dafe34Smrg# perform func_basename and func_dirname in a single function
14986dafe34Smrg# call:
15086dafe34Smrg#   dirname:  Compute the dirname of FILE.  If nonempty,
15186dafe34Smrg#             add APPEND to the result, otherwise set result
15286dafe34Smrg#             to NONDIR_REPLACEMENT.
15386dafe34Smrg#             value returned in "$func_dirname_result"
15486dafe34Smrg#   basename: Compute filename of FILE.
15586dafe34Smrg#             value retuned in "$func_basename_result"
15686dafe34Smrg# Implementation must be kept synchronized with func_dirname
15786dafe34Smrg# and func_basename. For efficiency, we do not delegate to
15886dafe34Smrg# those functions but instead duplicate the functionality here.
15986dafe34Smrgfunc_dirname_and_basename ()
16086dafe34Smrg{
16186dafe34Smrg  # Extract subdirectory from the argument.
16286dafe34Smrg  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
16386dafe34Smrg  if test "X$func_dirname_result" = "X${1}"; then
16486dafe34Smrg    func_dirname_result="${3}"
16586dafe34Smrg  else
16686dafe34Smrg    func_dirname_result="$func_dirname_result${2}"
16786dafe34Smrg  fi
16886dafe34Smrg  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
16986dafe34Smrg}
17086dafe34Smrg
17186dafe34Smrg# Generated shell functions inserted here.
17276888252Smrg
17376888252Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
17476888252Smrg# is ksh but when the shell is invoked as "sh" and the current value of
17576888252Smrg# the _XPG environment variable is not equal to 1 (one), the special
17676888252Smrg# positional parameter $0, within a function call, is the name of the
17776888252Smrg# function.
17876888252Smrgprogpath="$0"
17976888252Smrg
18076888252Smrg# The name of this program:
18186dafe34Smrg# In the unlikely event $progname began with a '-', it would play havoc with
18286dafe34Smrg# func_echo (imagine progname=-n), so we prepend ./ in that case:
18386dafe34Smrgfunc_dirname_and_basename "$progpath"
18486dafe34Smrgprogname=$func_basename_result
18586dafe34Smrgcase $progname in
18686dafe34Smrg  -*) progname=./$progname ;;
18786dafe34Smrgesac
18876888252Smrg
18986dafe34Smrg# Make sure we have an absolute path for reexecution:
19086dafe34Smrgcase $progpath in
19186dafe34Smrg  [\\/]*|[A-Za-z]:\\*) ;;
19286dafe34Smrg  *[\\/]*)
19386dafe34Smrg     progdir=$func_dirname_result
19486dafe34Smrg     progdir=`cd "$progdir" && pwd`
19586dafe34Smrg     progpath="$progdir/$progname"
19686dafe34Smrg     ;;
19786dafe34Smrg  *)
19886dafe34Smrg     save_IFS="$IFS"
19986dafe34Smrg     IFS=:
20086dafe34Smrg     for progdir in $PATH; do
20186dafe34Smrg       IFS="$save_IFS"
20286dafe34Smrg       test -x "$progdir/$progname" && break
20386dafe34Smrg     done
20486dafe34Smrg     IFS="$save_IFS"
20586dafe34Smrg     test -n "$progdir" || progdir=`pwd`
20686dafe34Smrg     progpath="$progdir/$progname"
20786dafe34Smrg     ;;
20886dafe34Smrgesac
20976888252Smrg
21086dafe34Smrg# Sed substitution that helps us do robust quoting.  It backslashifies
21186dafe34Smrg# metacharacters that are still active within double-quoted strings.
21286dafe34SmrgXsed="${SED}"' -e 1s/^X//'
21386dafe34Smrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g'
21486dafe34Smrg
21586dafe34Smrg# Same as above, but do not quote variable references.
21686dafe34Smrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
21786dafe34Smrg
21886dafe34Smrg# Re-`\' parameter expansions in output of double_quote_subst that were
21986dafe34Smrg# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
22086dafe34Smrg# in input to double_quote_subst, that '$' was protected from expansion.
22186dafe34Smrg# Since each input `\' is now two `\'s, look for any number of runs of
22286dafe34Smrg# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
22386dafe34Smrgbs='\\'
22486dafe34Smrgbs2='\\\\'
22586dafe34Smrgbs4='\\\\\\\\'
22686dafe34Smrgdollar='\$'
22786dafe34Smrgsed_double_backslash="\
22886dafe34Smrg  s/$bs4/&\\
22986dafe34Smrg/g
23086dafe34Smrg  s/^$bs2$dollar/$bs&/
23186dafe34Smrg  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
23286dafe34Smrg  s/\n//g"
23386dafe34Smrg
23486dafe34Smrg# Standard options:
23586dafe34Smrgopt_dry_run=false
23686dafe34Smrgopt_help=false
23786dafe34Smrgopt_quiet=false
23886dafe34Smrgopt_verbose=false
23986dafe34Smrgopt_warning=:
24086dafe34Smrg
24186dafe34Smrg# func_echo arg...
24286dafe34Smrg# Echo program name prefixed message, along with the current mode
24386dafe34Smrg# name if it has been set yet.
24486dafe34Smrgfunc_echo ()
24586dafe34Smrg{
24686dafe34Smrg    $ECHO "$progname${mode+: }$mode: $*"
24786dafe34Smrg}
24876888252Smrg
24986dafe34Smrg# func_verbose arg...
25086dafe34Smrg# Echo program name prefixed message in verbose mode only.
25186dafe34Smrgfunc_verbose ()
25286dafe34Smrg{
25386dafe34Smrg    $opt_verbose && func_echo ${1+"$@"}
25476888252Smrg
25586dafe34Smrg    # A bug in bash halts the script if the last line of a function
25686dafe34Smrg    # fails when set -e is in force, so we need another command to
25786dafe34Smrg    # work around that:
25886dafe34Smrg    :
25986dafe34Smrg}
26076888252Smrg
26186dafe34Smrg# func_error arg...
26286dafe34Smrg# Echo program name prefixed message to standard error.
26386dafe34Smrgfunc_error ()
26486dafe34Smrg{
26586dafe34Smrg    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
26686dafe34Smrg}
26776888252Smrg
26886dafe34Smrg# func_warning arg...
26986dafe34Smrg# Echo program name prefixed warning message to standard error.
27086dafe34Smrgfunc_warning ()
27186dafe34Smrg{
27286dafe34Smrg    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
27376888252Smrg
27486dafe34Smrg    # bash bug again:
27586dafe34Smrg    :
27686dafe34Smrg}
27776888252Smrg
27886dafe34Smrg# func_fatal_error arg...
27986dafe34Smrg# Echo program name prefixed message to standard error, and exit.
28086dafe34Smrgfunc_fatal_error ()
28186dafe34Smrg{
28286dafe34Smrg    func_error ${1+"$@"}
28386dafe34Smrg    exit $EXIT_FAILURE
28486dafe34Smrg}
28576888252Smrg
28686dafe34Smrg# func_fatal_help arg...
28786dafe34Smrg# Echo program name prefixed message to standard error, followed by
28886dafe34Smrg# a help hint, and exit.
28986dafe34Smrgfunc_fatal_help ()
29086dafe34Smrg{
29186dafe34Smrg    func_error ${1+"$@"}
29286dafe34Smrg    func_fatal_error "$help"
29386dafe34Smrg}
29486dafe34Smrghelp="Try \`$progname --help' for more information."  ## default
29576888252Smrg
29676888252Smrg
29786dafe34Smrg# func_grep expression filename
29886dafe34Smrg# Check whether EXPRESSION matches any line of FILENAME, without output.
29986dafe34Smrgfunc_grep ()
30086dafe34Smrg{
30186dafe34Smrg    $GREP "$1" "$2" >/dev/null 2>&1
30286dafe34Smrg}
30386dafe34Smrg
30486dafe34Smrg
30586dafe34Smrg# func_mkdir_p directory-path
30686dafe34Smrg# Make sure the entire path to DIRECTORY-PATH is available.
30786dafe34Smrgfunc_mkdir_p ()
30886dafe34Smrg{
30986dafe34Smrg    my_directory_path="$1"
31086dafe34Smrg    my_dir_list=
31186dafe34Smrg
31286dafe34Smrg    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
31386dafe34Smrg
31486dafe34Smrg      # Protect directory names starting with `-'
31586dafe34Smrg      case $my_directory_path in
31686dafe34Smrg        -*) my_directory_path="./$my_directory_path" ;;
31786dafe34Smrg      esac
31886dafe34Smrg
31986dafe34Smrg      # While some portion of DIR does not yet exist...
32086dafe34Smrg      while test ! -d "$my_directory_path"; do
32186dafe34Smrg        # ...make a list in topmost first order.  Use a colon delimited
32286dafe34Smrg	# list incase some portion of path contains whitespace.
32386dafe34Smrg        my_dir_list="$my_directory_path:$my_dir_list"
32486dafe34Smrg
32586dafe34Smrg        # If the last portion added has no slash in it, the list is done
32686dafe34Smrg        case $my_directory_path in */*) ;; *) break ;; esac
32786dafe34Smrg
32886dafe34Smrg        # ...otherwise throw away the child directory and loop
32986dafe34Smrg        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
33086dafe34Smrg      done
33186dafe34Smrg      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
33286dafe34Smrg
33386dafe34Smrg      save_mkdir_p_IFS="$IFS"; IFS=':'
33486dafe34Smrg      for my_dir in $my_dir_list; do
33586dafe34Smrg	IFS="$save_mkdir_p_IFS"
33686dafe34Smrg        # mkdir can fail with a `File exist' error if two processes
33786dafe34Smrg        # try to create one of the directories concurrently.  Don't
33886dafe34Smrg        # stop in that case!
33986dafe34Smrg        $MKDIR "$my_dir" 2>/dev/null || :
34086dafe34Smrg      done
34186dafe34Smrg      IFS="$save_mkdir_p_IFS"
34286dafe34Smrg
34386dafe34Smrg      # Bail out if we (or some other process) failed to create a directory.
34486dafe34Smrg      test -d "$my_directory_path" || \
34586dafe34Smrg        func_fatal_error "Failed to create \`$1'"
34686dafe34Smrg    fi
34786dafe34Smrg}
34876888252Smrg
34976888252Smrg
35076888252Smrg# func_mktempdir [string]
35176888252Smrg# Make a temporary directory that won't clash with other running
35276888252Smrg# libtool processes, and avoids race conditions if possible.  If
35376888252Smrg# given, STRING is the basename for that directory.
35476888252Smrgfunc_mktempdir ()
35576888252Smrg{
35676888252Smrg    my_template="${TMPDIR-/tmp}/${1-$progname}"
35776888252Smrg
35886dafe34Smrg    if test "$opt_dry_run" = ":"; then
35976888252Smrg      # Return a directory name, but don't create it in dry-run mode
36076888252Smrg      my_tmpdir="${my_template}-$$"
36176888252Smrg    else
36276888252Smrg
36376888252Smrg      # If mktemp works, use that first and foremost
36476888252Smrg      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
36576888252Smrg
36676888252Smrg      if test ! -d "$my_tmpdir"; then
36786dafe34Smrg        # Failing that, at least try and use $RANDOM to avoid a race
36886dafe34Smrg        my_tmpdir="${my_template}-${RANDOM-0}$$"
36976888252Smrg
37086dafe34Smrg        save_mktempdir_umask=`umask`
37186dafe34Smrg        umask 0077
37286dafe34Smrg        $MKDIR "$my_tmpdir"
37386dafe34Smrg        umask $save_mktempdir_umask
37476888252Smrg      fi
37576888252Smrg
37676888252Smrg      # If we're not in dry-run mode, bomb out on failure
37786dafe34Smrg      test -d "$my_tmpdir" || \
37886dafe34Smrg        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
37976888252Smrg    fi
38076888252Smrg
38186dafe34Smrg    $ECHO "X$my_tmpdir" | $Xsed
38276888252Smrg}
38376888252Smrg
38476888252Smrg
38586dafe34Smrg# func_quote_for_eval arg
38686dafe34Smrg# Aesthetically quote ARG to be evaled later.
38786dafe34Smrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
38886dafe34Smrg# is double-quoted, suitable for a subsequent eval, whereas
38986dafe34Smrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
39086dafe34Smrg# which are still active within double quotes backslashified.
39186dafe34Smrgfunc_quote_for_eval ()
39276888252Smrg{
39386dafe34Smrg    case $1 in
39486dafe34Smrg      *[\\\`\"\$]*)
39586dafe34Smrg	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
39686dafe34Smrg      *)
39786dafe34Smrg        func_quote_for_eval_unquoted_result="$1" ;;
39886dafe34Smrg    esac
39986dafe34Smrg
40086dafe34Smrg    case $func_quote_for_eval_unquoted_result in
40186dafe34Smrg      # Double-quote args containing shell metacharacters to delay
40286dafe34Smrg      # word splitting, command substitution and and variable
40386dafe34Smrg      # expansion for a subsequent eval.
40486dafe34Smrg      # Many Bourne shells cannot handle close brackets correctly
40586dafe34Smrg      # in scan sets, so we specify it separately.
40686dafe34Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
40786dafe34Smrg        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
40886dafe34Smrg        ;;
40986dafe34Smrg      *)
41086dafe34Smrg        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
41176888252Smrg    esac
41276888252Smrg}
41376888252Smrg
41476888252Smrg
41586dafe34Smrg# func_quote_for_expand arg
41686dafe34Smrg# Aesthetically quote ARG to be evaled later; same as above,
41786dafe34Smrg# but do not quote variable references.
41886dafe34Smrgfunc_quote_for_expand ()
41976888252Smrg{
42086dafe34Smrg    case $1 in
42186dafe34Smrg      *[\\\`\"]*)
42286dafe34Smrg	my_arg=`$ECHO "X$1" | $Xsed \
42386dafe34Smrg	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
42476888252Smrg      *)
42586dafe34Smrg        my_arg="$1" ;;
42686dafe34Smrg    esac
42786dafe34Smrg
42886dafe34Smrg    case $my_arg in
42986dafe34Smrg      # Double-quote args containing shell metacharacters to delay
43086dafe34Smrg      # word splitting and command substitution for a subsequent eval.
43186dafe34Smrg      # Many Bourne shells cannot handle close brackets correctly
43286dafe34Smrg      # in scan sets, so we specify it separately.
43386dafe34Smrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
43486dafe34Smrg        my_arg="\"$my_arg\""
43586dafe34Smrg        ;;
43686dafe34Smrg    esac
43786dafe34Smrg
43886dafe34Smrg    func_quote_for_expand_result="$my_arg"
43976888252Smrg}
44076888252Smrg
44176888252Smrg
44286dafe34Smrg# func_show_eval cmd [fail_exp]
44386dafe34Smrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
44486dafe34Smrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
44586dafe34Smrg# is given, then evaluate it.
44686dafe34Smrgfunc_show_eval ()
44776888252Smrg{
44886dafe34Smrg    my_cmd="$1"
44986dafe34Smrg    my_fail_exp="${2-:}"
45076888252Smrg
45186dafe34Smrg    ${opt_silent-false} || {
45286dafe34Smrg      func_quote_for_expand "$my_cmd"
45386dafe34Smrg      eval "func_echo $func_quote_for_expand_result"
45486dafe34Smrg    }
45586dafe34Smrg
45686dafe34Smrg    if ${opt_dry_run-false}; then :; else
45786dafe34Smrg      eval "$my_cmd"
45886dafe34Smrg      my_status=$?
45986dafe34Smrg      if test "$my_status" -eq 0; then :; else
46086dafe34Smrg	eval "(exit $my_status); $my_fail_exp"
46186dafe34Smrg      fi
46276888252Smrg    fi
46376888252Smrg}
46476888252Smrg
46586dafe34Smrg
46686dafe34Smrg# func_show_eval_locale cmd [fail_exp]
46786dafe34Smrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
46886dafe34Smrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
46986dafe34Smrg# is given, then evaluate it.  Use the saved locale for evaluation.
47086dafe34Smrgfunc_show_eval_locale ()
47176888252Smrg{
47286dafe34Smrg    my_cmd="$1"
47386dafe34Smrg    my_fail_exp="${2-:}"
47476888252Smrg
47586dafe34Smrg    ${opt_silent-false} || {
47686dafe34Smrg      func_quote_for_expand "$my_cmd"
47786dafe34Smrg      eval "func_echo $func_quote_for_expand_result"
47886dafe34Smrg    }
47986dafe34Smrg
48086dafe34Smrg    if ${opt_dry_run-false}; then :; else
48186dafe34Smrg      eval "$lt_user_locale
48286dafe34Smrg	    $my_cmd"
48386dafe34Smrg      my_status=$?
48486dafe34Smrg      eval "$lt_safe_locale"
48586dafe34Smrg      if test "$my_status" -eq 0; then :; else
48686dafe34Smrg	eval "(exit $my_status); $my_fail_exp"
48776888252Smrg      fi
48886dafe34Smrg    fi
48976888252Smrg}
49076888252Smrg
49176888252Smrg
49276888252Smrg
49386dafe34Smrg
49486dafe34Smrg
49586dafe34Smrg# func_version
49686dafe34Smrg# Echo version message to standard output and exit.
49786dafe34Smrgfunc_version ()
49886dafe34Smrg{
49986dafe34Smrg    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
50086dafe34Smrg        s/^# //
50186dafe34Smrg	s/^# *$//
50286dafe34Smrg        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
50386dafe34Smrg        p
50486dafe34Smrg     }' < "$progpath"
50586dafe34Smrg     exit $?
50686dafe34Smrg}
50786dafe34Smrg
50886dafe34Smrg# func_usage
50986dafe34Smrg# Echo short help message to standard output and exit.
51086dafe34Smrgfunc_usage ()
51186dafe34Smrg{
51286dafe34Smrg    $SED -n '/^# Usage:/,/# -h/ {
51386dafe34Smrg        s/^# //
51486dafe34Smrg	s/^# *$//
51586dafe34Smrg	s/\$progname/'$progname'/
51686dafe34Smrg	p
51786dafe34Smrg    }' < "$progpath"
51886dafe34Smrg    $ECHO
51986dafe34Smrg    $ECHO "run \`$progname --help | more' for full usage"
52086dafe34Smrg    exit $?
52186dafe34Smrg}
52286dafe34Smrg
52386dafe34Smrg# func_help
52486dafe34Smrg# Echo long help message to standard output and exit.
52586dafe34Smrgfunc_help ()
52686dafe34Smrg{
52786dafe34Smrg    $SED -n '/^# Usage:/,/# Report bugs to/ {
52886dafe34Smrg        s/^# //
52986dafe34Smrg	s/^# *$//
53086dafe34Smrg	s*\$progname*'$progname'*
53186dafe34Smrg	s*\$host*'"$host"'*
53286dafe34Smrg	s*\$SHELL*'"$SHELL"'*
53386dafe34Smrg	s*\$LTCC*'"$LTCC"'*
53486dafe34Smrg	s*\$LTCFLAGS*'"$LTCFLAGS"'*
53586dafe34Smrg	s*\$LD*'"$LD"'*
53686dafe34Smrg	s/\$with_gnu_ld/'"$with_gnu_ld"'/
53786dafe34Smrg	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
53886dafe34Smrg	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
53986dafe34Smrg	p
54086dafe34Smrg     }' < "$progpath"
54186dafe34Smrg    exit $?
54286dafe34Smrg}
54386dafe34Smrg
54486dafe34Smrg# func_missing_arg argname
54586dafe34Smrg# Echo program name prefixed message to standard error and set global
54686dafe34Smrg# exit_cmd.
54786dafe34Smrgfunc_missing_arg ()
54886dafe34Smrg{
54986dafe34Smrg    func_error "missing argument for $1"
55086dafe34Smrg    exit_cmd=exit
55186dafe34Smrg}
55286dafe34Smrg
55386dafe34Smrgexit_cmd=:
55486dafe34Smrg
55586dafe34Smrg
55686dafe34Smrg
55786dafe34Smrg
55886dafe34Smrg
55986dafe34Smrg# Check that we have a working $ECHO.
56086dafe34Smrgif test "X$1" = X--no-reexec; then
56186dafe34Smrg  # Discard the --no-reexec flag, and continue.
56276888252Smrg  shift
56386dafe34Smrgelif test "X$1" = X--fallback-echo; then
56486dafe34Smrg  # Avoid inline document here, it may be left over
56586dafe34Smrg  :
56686dafe34Smrgelif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
56786dafe34Smrg  # Yippee, $ECHO works!
56886dafe34Smrg  :
56986dafe34Smrgelse
57086dafe34Smrg  # Restart under the correct shell, and then maybe $ECHO will work.
57186dafe34Smrg  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
57286dafe34Smrgfi
57376888252Smrg
57486dafe34Smrgif test "X$1" = X--fallback-echo; then
57586dafe34Smrg  # used as fallback echo
57686dafe34Smrg  shift
57786dafe34Smrg  cat <<EOF
57886dafe34Smrg$*
57986dafe34SmrgEOF
58086dafe34Smrg  exit $EXIT_SUCCESS
58186dafe34Smrgfi
58276888252Smrg
58386dafe34Smrgmagic="%%%MAGIC variable%%%"
58486dafe34Smrgmagic_exe="%%%MAGIC EXE variable%%%"
58576888252Smrg
58686dafe34Smrg# Global variables.
58786dafe34Smrg# $mode is unset
58886dafe34Smrgnonopt=
58986dafe34Smrgexecute_dlfiles=
59086dafe34Smrgpreserve_args=
59186dafe34Smrglo2o="s/\\.lo\$/.${objext}/"
59286dafe34Smrgo2lo="s/\\.${objext}\$/.lo/"
59386dafe34Smrgextracted_archives=
59486dafe34Smrgextracted_serial=0
59576888252Smrg
59686dafe34Smrgopt_dry_run=false
59786dafe34Smrgopt_duplicate_deps=false
59886dafe34Smrgopt_silent=false
59986dafe34Smrgopt_debug=:
60076888252Smrg
60186dafe34Smrg# If this variable is set in any of the actions, the command in it
60286dafe34Smrg# will be execed at the end.  This prevents here-documents from being
60386dafe34Smrg# left over by shells.
60486dafe34Smrgexec_cmd=
60576888252Smrg
60686dafe34Smrg# func_fatal_configuration arg...
60786dafe34Smrg# Echo program name prefixed message to standard error, followed by
60886dafe34Smrg# a configuration failure hint, and exit.
60986dafe34Smrgfunc_fatal_configuration ()
61086dafe34Smrg{
61186dafe34Smrg    func_error ${1+"$@"}
61286dafe34Smrg    func_error "See the $PACKAGE documentation for more information."
61386dafe34Smrg    func_fatal_error "Fatal configuration error."
61486dafe34Smrg}
61586dafe34Smrg
61686dafe34Smrg
61786dafe34Smrg# func_config
61886dafe34Smrg# Display the configuration for all the tags in this script.
61986dafe34Smrgfunc_config ()
62086dafe34Smrg{
62186dafe34Smrg    re_begincf='^# ### BEGIN LIBTOOL'
62286dafe34Smrg    re_endcf='^# ### END LIBTOOL'
62386dafe34Smrg
62486dafe34Smrg    # Default configuration.
62586dafe34Smrg    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
62676888252Smrg
62776888252Smrg    # Now print the configurations for the tags.
62876888252Smrg    for tagname in $taglist; do
62986dafe34Smrg      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
63076888252Smrg    done
63176888252Smrg
63286dafe34Smrg    exit $?
63386dafe34Smrg}
63476888252Smrg
63586dafe34Smrg# func_features
63686dafe34Smrg# Display the features supported by this script.
63786dafe34Smrgfunc_features ()
63886dafe34Smrg{
63986dafe34Smrg    $ECHO "host: $host"
64076888252Smrg    if test "$build_libtool_libs" = yes; then
64186dafe34Smrg      $ECHO "enable shared libraries"
64276888252Smrg    else
64386dafe34Smrg      $ECHO "disable shared libraries"
64476888252Smrg    fi
64576888252Smrg    if test "$build_old_libs" = yes; then
64686dafe34Smrg      $ECHO "enable static libraries"
64776888252Smrg    else
64886dafe34Smrg      $ECHO "disable static libraries"
64976888252Smrg    fi
65086dafe34Smrg
65176888252Smrg    exit $?
65286dafe34Smrg}
65386dafe34Smrg
65486dafe34Smrg# func_enable_tag tagname
65586dafe34Smrg# Verify that TAGNAME is valid, and either flag an error and exit, or
65686dafe34Smrg# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
65786dafe34Smrg# variable here.
65886dafe34Smrgfunc_enable_tag ()
65986dafe34Smrg{
66086dafe34Smrg  # Global variable:
66186dafe34Smrg  tagname="$1"
66276888252Smrg
66386dafe34Smrg  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
66486dafe34Smrg  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
66586dafe34Smrg  sed_extractcf="/$re_begincf/,/$re_endcf/p"
66676888252Smrg
66786dafe34Smrg  # Validate tagname.
66886dafe34Smrg  case $tagname in
66986dafe34Smrg    *[!-_A-Za-z0-9,/]*)
67086dafe34Smrg      func_fatal_error "invalid tag name: $tagname"
67186dafe34Smrg      ;;
67286dafe34Smrg  esac
67376888252Smrg
67486dafe34Smrg  # Don't test for the "default" C tag, as we know it's
67586dafe34Smrg  # there but not specially marked.
67686dafe34Smrg  case $tagname in
67786dafe34Smrg    CC) ;;
67886dafe34Smrg    *)
67986dafe34Smrg      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
68086dafe34Smrg	taglist="$taglist $tagname"
68186dafe34Smrg
68286dafe34Smrg	# Evaluate the configuration.  Be careful to quote the path
68386dafe34Smrg	# and the sed script, to avoid splitting on whitespace, but
68486dafe34Smrg	# also don't use non-portable quotes within backquotes within
68586dafe34Smrg	# quotes we have to do it in 2 steps:
68686dafe34Smrg	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
68786dafe34Smrg	eval "$extractedcf"
68886dafe34Smrg      else
68986dafe34Smrg	func_error "ignoring unknown tag $tagname"
69086dafe34Smrg      fi
69186dafe34Smrg      ;;
69286dafe34Smrg  esac
69386dafe34Smrg}
69476888252Smrg
69586dafe34Smrg# Parse options once, thoroughly.  This comes as soon as possible in
69686dafe34Smrg# the script to make things like `libtool --version' happen quickly.
69786dafe34Smrg{
69876888252Smrg
69986dafe34Smrg  # Shorthand for --mode=foo, only valid as the first argument
70086dafe34Smrg  case $1 in
70186dafe34Smrg  clean|clea|cle|cl)
70286dafe34Smrg    shift; set dummy --mode clean ${1+"$@"}; shift
70376888252Smrg    ;;
70486dafe34Smrg  compile|compil|compi|comp|com|co|c)
70586dafe34Smrg    shift; set dummy --mode compile ${1+"$@"}; shift
70676888252Smrg    ;;
70786dafe34Smrg  execute|execut|execu|exec|exe|ex|e)
70886dafe34Smrg    shift; set dummy --mode execute ${1+"$@"}; shift
70976888252Smrg    ;;
71086dafe34Smrg  finish|finis|fini|fin|fi|f)
71186dafe34Smrg    shift; set dummy --mode finish ${1+"$@"}; shift
71276888252Smrg    ;;
71386dafe34Smrg  install|instal|insta|inst|ins|in|i)
71486dafe34Smrg    shift; set dummy --mode install ${1+"$@"}; shift
71586dafe34Smrg    ;;
71686dafe34Smrg  link|lin|li|l)
71786dafe34Smrg    shift; set dummy --mode link ${1+"$@"}; shift
71886dafe34Smrg    ;;
71986dafe34Smrg  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
72086dafe34Smrg    shift; set dummy --mode uninstall ${1+"$@"}; shift
72176888252Smrg    ;;
72276888252Smrg  esac
72376888252Smrg
72486dafe34Smrg  # Parse non-mode specific arguments:
72586dafe34Smrg  while test "$#" -gt 0; do
72686dafe34Smrg    opt="$1"
72786dafe34Smrg    shift
72876888252Smrg
72986dafe34Smrg    case $opt in
73086dafe34Smrg      --config)		func_config					;;
73176888252Smrg
73286dafe34Smrg      --debug)		preserve_args="$preserve_args $opt"
73386dafe34Smrg			func_echo "enabling shell trace mode"
73486dafe34Smrg			opt_debug='set -x'
73586dafe34Smrg			$opt_debug
73686dafe34Smrg			;;
73776888252Smrg
73886dafe34Smrg      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
73986dafe34Smrg			execute_dlfiles="$execute_dlfiles $1"
74086dafe34Smrg			shift
74186dafe34Smrg			;;
74276888252Smrg
74386dafe34Smrg      --dry-run | -n)	opt_dry_run=:					;;
74486dafe34Smrg      --features)       func_features					;;
74586dafe34Smrg      --finish)		mode="finish"					;;
74686dafe34Smrg
74786dafe34Smrg      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
74886dafe34Smrg			case $1 in
74986dafe34Smrg			  # Valid mode arguments:
75086dafe34Smrg			  clean)	;;
75186dafe34Smrg			  compile)	;;
75286dafe34Smrg			  execute)	;;
75386dafe34Smrg			  finish)	;;
75486dafe34Smrg			  install)	;;
75586dafe34Smrg			  link)		;;
75686dafe34Smrg			  relink)	;;
75786dafe34Smrg			  uninstall)	;;
75886dafe34Smrg
75986dafe34Smrg			  # Catch anything else as an error
76086dafe34Smrg			  *) func_error "invalid argument for $opt"
76186dafe34Smrg			     exit_cmd=exit
76286dafe34Smrg			     break
76386dafe34Smrg			     ;;
76486dafe34Smrg		        esac
76586dafe34Smrg
76686dafe34Smrg			mode="$1"
76786dafe34Smrg			shift
76886dafe34Smrg			;;
76986dafe34Smrg
77086dafe34Smrg      --preserve-dup-deps)
77186dafe34Smrg			opt_duplicate_deps=:				;;
77286dafe34Smrg
77386dafe34Smrg      --quiet|--silent)	preserve_args="$preserve_args $opt"
77486dafe34Smrg			opt_silent=:
77586dafe34Smrg			;;
77686dafe34Smrg
77786dafe34Smrg      --verbose| -v)	preserve_args="$preserve_args $opt"
77886dafe34Smrg			opt_silent=false
77986dafe34Smrg			;;
78086dafe34Smrg
78186dafe34Smrg      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
78286dafe34Smrg			preserve_args="$preserve_args $opt $1"
78386dafe34Smrg			func_enable_tag "$1"	# tagname is set here
78486dafe34Smrg			shift
78586dafe34Smrg			;;
78686dafe34Smrg
78786dafe34Smrg      # Separate optargs to long options:
78886dafe34Smrg      -dlopen=*|--mode=*|--tag=*)
78986dafe34Smrg			func_opt_split "$opt"
79086dafe34Smrg			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
79186dafe34Smrg			shift
79286dafe34Smrg			;;
79386dafe34Smrg
79486dafe34Smrg      -\?|-h)		func_usage					;;
79586dafe34Smrg      --help)		opt_help=:					;;
79686dafe34Smrg      --version)	func_version					;;
79786dafe34Smrg
79886dafe34Smrg      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
79986dafe34Smrg
80086dafe34Smrg      *)		nonopt="$opt"
80186dafe34Smrg			break
80286dafe34Smrg			;;
80386dafe34Smrg    esac
80486dafe34Smrg  done
80586dafe34Smrg
80686dafe34Smrg
80786dafe34Smrg  case $host in
80886dafe34Smrg    *cygwin* | *mingw* | *pw32* | *cegcc*)
80986dafe34Smrg      # don't eliminate duplications in $postdeps and $predeps
81086dafe34Smrg      opt_duplicate_compiler_generated_deps=:
81176888252Smrg      ;;
81276888252Smrg    *)
81386dafe34Smrg      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
81486dafe34Smrg      ;;
81586dafe34Smrg  esac
81676888252Smrg
81786dafe34Smrg  # Having warned about all mis-specified options, bail out if
81886dafe34Smrg  # anything was wrong.
81986dafe34Smrg  $exit_cmd $EXIT_FAILURE
82086dafe34Smrg}
82186dafe34Smrg
82286dafe34Smrg# func_check_version_match
82386dafe34Smrg# Ensure that we are using m4 macros, and libtool script from the same
82486dafe34Smrg# release of libtool.
82586dafe34Smrgfunc_check_version_match ()
82686dafe34Smrg{
82786dafe34Smrg  if test "$package_revision" != "$macro_revision"; then
82886dafe34Smrg    if test "$VERSION" != "$macro_version"; then
82986dafe34Smrg      if test -z "$macro_version"; then
83086dafe34Smrg        cat >&2 <<_LT_EOF
83186dafe34Smrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
83286dafe34Smrg$progname: definition of this LT_INIT comes from an older release.
83386dafe34Smrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
83486dafe34Smrg$progname: and run autoconf again.
83586dafe34Smrg_LT_EOF
83686dafe34Smrg      else
83786dafe34Smrg        cat >&2 <<_LT_EOF
83886dafe34Smrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
83986dafe34Smrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
84086dafe34Smrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
84186dafe34Smrg$progname: and run autoconf again.
84286dafe34Smrg_LT_EOF
84376888252Smrg      fi
84486dafe34Smrg    else
84586dafe34Smrg      cat >&2 <<_LT_EOF
84686dafe34Smrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
84786dafe34Smrg$progname: but the definition of this LT_INIT comes from revision $macro_revision.
84886dafe34Smrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision
84986dafe34Smrg$progname: of $PACKAGE $VERSION and run autoconf again.
85086dafe34Smrg_LT_EOF
85186dafe34Smrg    fi
85286dafe34Smrg
85386dafe34Smrg    exit $EXIT_MISMATCH
85486dafe34Smrg  fi
85586dafe34Smrg}
85686dafe34Smrg
85786dafe34Smrg
85886dafe34Smrg## ----------- ##
85986dafe34Smrg##    Main.    ##
86086dafe34Smrg## ----------- ##
86186dafe34Smrg
86286dafe34Smrg$opt_help || {
86386dafe34Smrg  # Sanity checks first:
86486dafe34Smrg  func_check_version_match
86586dafe34Smrg
86686dafe34Smrg  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
86786dafe34Smrg    func_fatal_configuration "not configured to build any kind of library"
86876888252Smrg  fi
86976888252Smrg
87086dafe34Smrg  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
87186dafe34Smrg
87286dafe34Smrg
87386dafe34Smrg  # Darwin sucks
87486dafe34Smrg  eval std_shrext=\"$shrext_cmds\"
87586dafe34Smrg
87686dafe34Smrg
87776888252Smrg  # Only execute mode is allowed to have -dlopen flags.
87876888252Smrg  if test -n "$execute_dlfiles" && test "$mode" != execute; then
87986dafe34Smrg    func_error "unrecognized option \`-dlopen'"
88086dafe34Smrg    $ECHO "$help" 1>&2
88176888252Smrg    exit $EXIT_FAILURE
88276888252Smrg  fi
88376888252Smrg
88476888252Smrg  # Change the help message to a mode-specific one.
88576888252Smrg  generic_help="$help"
88686dafe34Smrg  help="Try \`$progname --help --mode=$mode' for more information."
88786dafe34Smrg}
88876888252Smrg
88976888252Smrg
89086dafe34Smrg# func_lalib_p file
89186dafe34Smrg# True iff FILE is a libtool `.la' library or `.lo' object file.
89286dafe34Smrg# This function is only a basic sanity check; it will hardly flush out
89386dafe34Smrg# determined imposters.
89486dafe34Smrgfunc_lalib_p ()
89586dafe34Smrg{
89686dafe34Smrg    test -f "$1" &&
89786dafe34Smrg      $SED -e 4q "$1" 2>/dev/null \
89886dafe34Smrg        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
89986dafe34Smrg}
90076888252Smrg
90186dafe34Smrg# func_lalib_unsafe_p file
90286dafe34Smrg# True iff FILE is a libtool `.la' library or `.lo' object file.
90386dafe34Smrg# This function implements the same check as func_lalib_p without
90486dafe34Smrg# resorting to external programs.  To this end, it redirects stdin and
90586dafe34Smrg# closes it afterwards, without saving the original file descriptor.
90686dafe34Smrg# As a safety measure, use it only where a negative result would be
90786dafe34Smrg# fatal anyway.  Works if `file' does not exist.
90886dafe34Smrgfunc_lalib_unsafe_p ()
90986dafe34Smrg{
91086dafe34Smrg    lalib_p=no
91186dafe34Smrg    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
91286dafe34Smrg	for lalib_p_l in 1 2 3 4
91386dafe34Smrg	do
91486dafe34Smrg	    read lalib_p_line
91586dafe34Smrg	    case "$lalib_p_line" in
91686dafe34Smrg		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
91786dafe34Smrg	    esac
91886dafe34Smrg	done
91986dafe34Smrg	exec 0<&5 5<&-
92086dafe34Smrg    fi
92186dafe34Smrg    test "$lalib_p" = yes
92286dafe34Smrg}
92376888252Smrg
92486dafe34Smrg# func_ltwrapper_script_p file
92586dafe34Smrg# True iff FILE is a libtool wrapper script
92686dafe34Smrg# This function is only a basic sanity check; it will hardly flush out
92786dafe34Smrg# determined imposters.
92886dafe34Smrgfunc_ltwrapper_script_p ()
92986dafe34Smrg{
93086dafe34Smrg    func_lalib_p "$1"
93186dafe34Smrg}
93276888252Smrg
93386dafe34Smrg# func_ltwrapper_executable_p file
93486dafe34Smrg# True iff FILE is a libtool wrapper executable
93586dafe34Smrg# This function is only a basic sanity check; it will hardly flush out
93686dafe34Smrg# determined imposters.
93786dafe34Smrgfunc_ltwrapper_executable_p ()
93886dafe34Smrg{
93986dafe34Smrg    func_ltwrapper_exec_suffix=
94086dafe34Smrg    case $1 in
94186dafe34Smrg    *.exe) ;;
94286dafe34Smrg    *) func_ltwrapper_exec_suffix=.exe ;;
94386dafe34Smrg    esac
94486dafe34Smrg    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
94586dafe34Smrg}
94676888252Smrg
94786dafe34Smrg# func_ltwrapper_scriptname file
94886dafe34Smrg# Assumes file is an ltwrapper_executable
94986dafe34Smrg# uses $file to determine the appropriate filename for a
95086dafe34Smrg# temporary ltwrapper_script.
95186dafe34Smrgfunc_ltwrapper_scriptname ()
95286dafe34Smrg{
95386dafe34Smrg    func_ltwrapper_scriptname_result=""
95486dafe34Smrg    if func_ltwrapper_executable_p "$1"; then
95586dafe34Smrg	func_dirname_and_basename "$1" "" "."
95686dafe34Smrg	func_stripname '' '.exe' "$func_basename_result"
95786dafe34Smrg	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
95886dafe34Smrg    fi
95986dafe34Smrg}
96076888252Smrg
96186dafe34Smrg# func_ltwrapper_p file
96286dafe34Smrg# True iff FILE is a libtool wrapper script or wrapper executable
96386dafe34Smrg# This function is only a basic sanity check; it will hardly flush out
96486dafe34Smrg# determined imposters.
96586dafe34Smrgfunc_ltwrapper_p ()
96686dafe34Smrg{
96786dafe34Smrg    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
96886dafe34Smrg}
96976888252Smrg
97076888252Smrg
97186dafe34Smrg# func_execute_cmds commands fail_cmd
97286dafe34Smrg# Execute tilde-delimited COMMANDS.
97386dafe34Smrg# If FAIL_CMD is given, eval that upon failure.
97486dafe34Smrg# FAIL_CMD may read-access the current command in variable CMD!
97586dafe34Smrgfunc_execute_cmds ()
97686dafe34Smrg{
97786dafe34Smrg    $opt_debug
97886dafe34Smrg    save_ifs=$IFS; IFS='~'
97986dafe34Smrg    for cmd in $1; do
98086dafe34Smrg      IFS=$save_ifs
98186dafe34Smrg      eval cmd=\"$cmd\"
98286dafe34Smrg      func_show_eval "$cmd" "${2-:}"
98386dafe34Smrg    done
98486dafe34Smrg    IFS=$save_ifs
98586dafe34Smrg}
98686dafe34Smrg
98786dafe34Smrg
98886dafe34Smrg# func_source file
98986dafe34Smrg# Source FILE, adding directory component if necessary.
99086dafe34Smrg# Note that it is not necessary on cygwin/mingw to append a dot to
99186dafe34Smrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
99286dafe34Smrg# behavior happens only for exec(3), not for open(2)!  Also, sourcing
99386dafe34Smrg# `FILE.' does not work on cygwin managed mounts.
99486dafe34Smrgfunc_source ()
99586dafe34Smrg{
99686dafe34Smrg    $opt_debug
99786dafe34Smrg    case $1 in
99886dafe34Smrg    */* | *\\*)	. "$1" ;;
99986dafe34Smrg    *)		. "./$1" ;;
100086dafe34Smrg    esac
100186dafe34Smrg}
100286dafe34Smrg
100386dafe34Smrg
100486dafe34Smrg# func_infer_tag arg
100586dafe34Smrg# Infer tagged configuration to use if any are available and
100686dafe34Smrg# if one wasn't chosen via the "--tag" command line option.
100786dafe34Smrg# Only attempt this if the compiler in the base compile
100886dafe34Smrg# command doesn't match the default compiler.
100986dafe34Smrg# arg is usually of the form 'gcc ...'
101086dafe34Smrgfunc_infer_tag ()
101186dafe34Smrg{
101286dafe34Smrg    $opt_debug
101386dafe34Smrg    if test -n "$available_tags" && test -z "$tagname"; then
101486dafe34Smrg      CC_quoted=
101586dafe34Smrg      for arg in $CC; do
101686dafe34Smrg        func_quote_for_eval "$arg"
101786dafe34Smrg	CC_quoted="$CC_quoted $func_quote_for_eval_result"
101886dafe34Smrg      done
101986dafe34Smrg      case $@ in
102086dafe34Smrg      # Blanks in the command may have been stripped by the calling shell,
102186dafe34Smrg      # but not from the CC environment variable when configure was run.
102286dafe34Smrg      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
102386dafe34Smrg      # Blanks at the start of $base_compile will cause this to fail
102486dafe34Smrg      # if we don't check for them as well.
102586dafe34Smrg      *)
102686dafe34Smrg	for z in $available_tags; do
102786dafe34Smrg	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
102886dafe34Smrg	    # Evaluate the configuration.
102986dafe34Smrg	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
103086dafe34Smrg	    CC_quoted=
103186dafe34Smrg	    for arg in $CC; do
103286dafe34Smrg	      # Double-quote args containing other shell metacharacters.
103386dafe34Smrg	      func_quote_for_eval "$arg"
103486dafe34Smrg	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
103586dafe34Smrg	    done
103686dafe34Smrg	    case "$@ " in
103786dafe34Smrg	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
103886dafe34Smrg	      # The compiler in the base compile command matches
103986dafe34Smrg	      # the one in the tagged configuration.
104086dafe34Smrg	      # Assume this is the tagged configuration we want.
104186dafe34Smrg	      tagname=$z
104286dafe34Smrg	      break
104386dafe34Smrg	      ;;
104476888252Smrg	    esac
104586dafe34Smrg	  fi
104686dafe34Smrg	done
104786dafe34Smrg	# If $tagname still isn't set, then no tagged configuration
104886dafe34Smrg	# was found and let the user know that the "--tag" command
104986dafe34Smrg	# line option must be used.
105086dafe34Smrg	if test -z "$tagname"; then
105186dafe34Smrg	  func_echo "unable to infer tagged configuration"
105286dafe34Smrg	  func_fatal_error "specify a tag with \`--tag'"
105386dafe34Smrg#	else
105486dafe34Smrg#	  func_verbose "using $tagname tagged configuration"
105586dafe34Smrg	fi
105686dafe34Smrg	;;
105786dafe34Smrg      esac
105886dafe34Smrg    fi
105986dafe34Smrg}
106086dafe34Smrg
106186dafe34Smrg
106286dafe34Smrg
106386dafe34Smrg# func_write_libtool_object output_name pic_name nonpic_name
106486dafe34Smrg# Create a libtool object file (analogous to a ".la" file),
106586dafe34Smrg# but don't create it if we're doing a dry run.
106686dafe34Smrgfunc_write_libtool_object ()
106786dafe34Smrg{
106886dafe34Smrg    write_libobj=${1}
106986dafe34Smrg    if test "$build_libtool_libs" = yes; then
107086dafe34Smrg      write_lobj=\'${2}\'
107186dafe34Smrg    else
107286dafe34Smrg      write_lobj=none
107386dafe34Smrg    fi
107486dafe34Smrg
107586dafe34Smrg    if test "$build_old_libs" = yes; then
107686dafe34Smrg      write_oldobj=\'${3}\'
107786dafe34Smrg    else
107886dafe34Smrg      write_oldobj=none
107986dafe34Smrg    fi
108086dafe34Smrg
108186dafe34Smrg    $opt_dry_run || {
108286dafe34Smrg      cat >${write_libobj}T <<EOF
108386dafe34Smrg# $write_libobj - a libtool object file
108486dafe34Smrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
108586dafe34Smrg#
108686dafe34Smrg# Please DO NOT delete this file!
108786dafe34Smrg# It is necessary for linking the library.
108886dafe34Smrg
108986dafe34Smrg# Name of the PIC object.
109086dafe34Smrgpic_object=$write_lobj
109186dafe34Smrg
109286dafe34Smrg# Name of the non-PIC object
109386dafe34Smrgnon_pic_object=$write_oldobj
109486dafe34Smrg
109586dafe34SmrgEOF
109686dafe34Smrg      $MV "${write_libobj}T" "${write_libobj}"
109786dafe34Smrg    }
109886dafe34Smrg}
109986dafe34Smrg
110086dafe34Smrg# func_mode_compile arg...
110186dafe34Smrgfunc_mode_compile ()
110286dafe34Smrg{
110386dafe34Smrg    $opt_debug
110486dafe34Smrg    # Get the compilation command and the source file.
110586dafe34Smrg    base_compile=
110686dafe34Smrg    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
110786dafe34Smrg    suppress_opt=yes
110886dafe34Smrg    suppress_output=
110986dafe34Smrg    arg_mode=normal
111086dafe34Smrg    libobj=
111186dafe34Smrg    later=
111286dafe34Smrg    pie_flag=
111386dafe34Smrg
111486dafe34Smrg    for arg
111586dafe34Smrg    do
111686dafe34Smrg      case $arg_mode in
111786dafe34Smrg      arg  )
111886dafe34Smrg	# do not "continue".  Instead, add this to base_compile
111986dafe34Smrg	lastarg="$arg"
112086dafe34Smrg	arg_mode=normal
112186dafe34Smrg	;;
112286dafe34Smrg
112386dafe34Smrg      target )
112486dafe34Smrg	libobj="$arg"
112586dafe34Smrg	arg_mode=normal
112686dafe34Smrg	continue
112786dafe34Smrg	;;
112886dafe34Smrg
112986dafe34Smrg      normal )
113086dafe34Smrg	# Accept any command-line options.
113186dafe34Smrg	case $arg in
113286dafe34Smrg	-o)
113386dafe34Smrg	  test -n "$libobj" && \
113486dafe34Smrg	    func_fatal_error "you cannot specify \`-o' more than once"
113586dafe34Smrg	  arg_mode=target
113686dafe34Smrg	  continue
113786dafe34Smrg	  ;;
113886dafe34Smrg
113986dafe34Smrg	-pie | -fpie | -fPIE)
114086dafe34Smrg          pie_flag="$pie_flag $arg"
114186dafe34Smrg	  continue
114286dafe34Smrg	  ;;
114386dafe34Smrg
114486dafe34Smrg	-shared | -static | -prefer-pic | -prefer-non-pic)
114586dafe34Smrg	  later="$later $arg"
114686dafe34Smrg	  continue
114786dafe34Smrg	  ;;
114886dafe34Smrg
114986dafe34Smrg	-no-suppress)
115086dafe34Smrg	  suppress_opt=no
115186dafe34Smrg	  continue
115286dafe34Smrg	  ;;
115386dafe34Smrg
115486dafe34Smrg	-Xcompiler)
115586dafe34Smrg	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
115686dafe34Smrg	  continue      #  The current "srcfile" will either be retained or
115786dafe34Smrg	  ;;            #  replaced later.  I would guess that would be a bug.
115886dafe34Smrg
115986dafe34Smrg	-Wc,*)
116086dafe34Smrg	  func_stripname '-Wc,' '' "$arg"
116186dafe34Smrg	  args=$func_stripname_result
116286dafe34Smrg	  lastarg=
116386dafe34Smrg	  save_ifs="$IFS"; IFS=','
116486dafe34Smrg	  for arg in $args; do
116586dafe34Smrg	    IFS="$save_ifs"
116686dafe34Smrg	    func_quote_for_eval "$arg"
116786dafe34Smrg	    lastarg="$lastarg $func_quote_for_eval_result"
116876888252Smrg	  done
116976888252Smrg	  IFS="$save_ifs"
117086dafe34Smrg	  func_stripname ' ' '' "$lastarg"
117186dafe34Smrg	  lastarg=$func_stripname_result
117276888252Smrg
117376888252Smrg	  # Add the arguments to base_compile.
117476888252Smrg	  base_compile="$base_compile $lastarg"
117576888252Smrg	  continue
117676888252Smrg	  ;;
117776888252Smrg
117886dafe34Smrg	*)
117976888252Smrg	  # Accept the current argument as the source file.
118076888252Smrg	  # The previous "srcfile" becomes the current argument.
118176888252Smrg	  #
118276888252Smrg	  lastarg="$srcfile"
118376888252Smrg	  srcfile="$arg"
118476888252Smrg	  ;;
118576888252Smrg	esac  #  case $arg
118676888252Smrg	;;
118776888252Smrg      esac    #  case $arg_mode
118876888252Smrg
118976888252Smrg      # Aesthetically quote the previous argument.
119086dafe34Smrg      func_quote_for_eval "$lastarg"
119186dafe34Smrg      base_compile="$base_compile $func_quote_for_eval_result"
119276888252Smrg    done # for arg
119376888252Smrg
119476888252Smrg    case $arg_mode in
119576888252Smrg    arg)
119686dafe34Smrg      func_fatal_error "you must specify an argument for -Xcompile"
119776888252Smrg      ;;
119876888252Smrg    target)
119986dafe34Smrg      func_fatal_error "you must specify a target with \`-o'"
120076888252Smrg      ;;
120176888252Smrg    *)
120276888252Smrg      # Get the name of the library object.
120386dafe34Smrg      test -z "$libobj" && {
120486dafe34Smrg	func_basename "$srcfile"
120586dafe34Smrg	libobj="$func_basename_result"
120686dafe34Smrg      }
120776888252Smrg      ;;
120876888252Smrg    esac
120976888252Smrg
121076888252Smrg    # Recognize several different file suffixes.
121176888252Smrg    # If the user specifies -o file.o, it is replaced with file.lo
121276888252Smrg    case $libobj in
121386dafe34Smrg    *.[cCFSifmso] | \
121486dafe34Smrg    *.ada | *.adb | *.ads | *.asm | \
121586dafe34Smrg    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
121686dafe34Smrg    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
121786dafe34Smrg      func_xform "$libobj"
121886dafe34Smrg      libobj=$func_xform_result
121986dafe34Smrg      ;;
122076888252Smrg    esac
122176888252Smrg
122276888252Smrg    case $libobj in
122386dafe34Smrg    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
122476888252Smrg    *)
122586dafe34Smrg      func_fatal_error "cannot determine name of library object from \`$libobj'"
122676888252Smrg      ;;
122776888252Smrg    esac
122876888252Smrg
122976888252Smrg    func_infer_tag $base_compile
123076888252Smrg
123176888252Smrg    for arg in $later; do
123276888252Smrg      case $arg in
123386dafe34Smrg      -shared)
123486dafe34Smrg	test "$build_libtool_libs" != yes && \
123586dafe34Smrg	  func_fatal_configuration "can not build a shared library"
123686dafe34Smrg	build_old_libs=no
123786dafe34Smrg	continue
123886dafe34Smrg	;;
123986dafe34Smrg
124076888252Smrg      -static)
124186dafe34Smrg	build_libtool_libs=no
124276888252Smrg	build_old_libs=yes
124376888252Smrg	continue
124476888252Smrg	;;
124576888252Smrg
124676888252Smrg      -prefer-pic)
124776888252Smrg	pic_mode=yes
124876888252Smrg	continue
124976888252Smrg	;;
125076888252Smrg
125176888252Smrg      -prefer-non-pic)
125276888252Smrg	pic_mode=no
125376888252Smrg	continue
125476888252Smrg	;;
125576888252Smrg      esac
125676888252Smrg    done
125776888252Smrg
125886dafe34Smrg    func_quote_for_eval "$libobj"
125986dafe34Smrg    test "X$libobj" != "X$func_quote_for_eval_result" \
126086dafe34Smrg      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
126186dafe34Smrg      && func_warning "libobj name \`$libobj' may not contain shell special characters."
126286dafe34Smrg    func_dirname_and_basename "$obj" "/" ""
126386dafe34Smrg    objname="$func_basename_result"
126486dafe34Smrg    xdir="$func_dirname_result"
126576888252Smrg    lobj=${xdir}$objdir/$objname
126676888252Smrg
126786dafe34Smrg    test -z "$base_compile" && \
126886dafe34Smrg      func_fatal_help "you must specify a compilation command"
126976888252Smrg
127076888252Smrg    # Delete any leftover library objects.
127176888252Smrg    if test "$build_old_libs" = yes; then
127276888252Smrg      removelist="$obj $lobj $libobj ${libobj}T"
127376888252Smrg    else
127476888252Smrg      removelist="$lobj $libobj ${libobj}T"
127576888252Smrg    fi
127676888252Smrg
127776888252Smrg    # On Cygwin there's no "real" PIC flag so we must build both object types
127876888252Smrg    case $host_os in
127986dafe34Smrg    cygwin* | mingw* | pw32* | os2* | cegcc*)
128076888252Smrg      pic_mode=default
128176888252Smrg      ;;
128276888252Smrg    esac
128376888252Smrg    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
128476888252Smrg      # non-PIC code in shared libraries is not supported
128576888252Smrg      pic_mode=default
128676888252Smrg    fi
128776888252Smrg
128876888252Smrg    # Calculate the filename of the output object if compiler does
128976888252Smrg    # not support -o with -c
129076888252Smrg    if test "$compiler_c_o" = no; then
129186dafe34Smrg      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
129276888252Smrg      lockfile="$output_obj.lock"
129376888252Smrg    else
129476888252Smrg      output_obj=
129576888252Smrg      need_locks=no
129676888252Smrg      lockfile=
129776888252Smrg    fi
129876888252Smrg
129976888252Smrg    # Lock this critical section if it is needed
130076888252Smrg    # We use this script file to make the link, it avoids creating a new file
130176888252Smrg    if test "$need_locks" = yes; then
130286dafe34Smrg      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
130386dafe34Smrg	func_echo "Waiting for $lockfile to be removed"
130476888252Smrg	sleep 2
130576888252Smrg      done
130676888252Smrg    elif test "$need_locks" = warn; then
130776888252Smrg      if test -f "$lockfile"; then
130886dafe34Smrg	$ECHO "\
130976888252Smrg*** ERROR, $lockfile exists and contains:
131076888252Smrg`cat $lockfile 2>/dev/null`
131176888252Smrg
131276888252SmrgThis indicates that another process is trying to use the same
131376888252Smrgtemporary object file, and libtool could not work around it because
131476888252Smrgyour compiler does not support \`-c' and \`-o' together.  If you
131576888252Smrgrepeat this compilation, it may succeed, by chance, but you had better
131676888252Smrgavoid parallel builds (make -j) in this platform, or get a better
131776888252Smrgcompiler."
131876888252Smrg
131986dafe34Smrg	$opt_dry_run || $RM $removelist
132076888252Smrg	exit $EXIT_FAILURE
132176888252Smrg      fi
132286dafe34Smrg      removelist="$removelist $output_obj"
132386dafe34Smrg      $ECHO "$srcfile" > "$lockfile"
132476888252Smrg    fi
132576888252Smrg
132686dafe34Smrg    $opt_dry_run || $RM $removelist
132786dafe34Smrg    removelist="$removelist $lockfile"
132886dafe34Smrg    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
132986dafe34Smrg
133076888252Smrg    if test -n "$fix_srcfile_path"; then
133176888252Smrg      eval srcfile=\"$fix_srcfile_path\"
133276888252Smrg    fi
133386dafe34Smrg    func_quote_for_eval "$srcfile"
133486dafe34Smrg    qsrcfile=$func_quote_for_eval_result
133576888252Smrg
133676888252Smrg    # Only build a PIC object if we are building libtool libraries.
133776888252Smrg    if test "$build_libtool_libs" = yes; then
133876888252Smrg      # Without this assignment, base_compile gets emptied.
133976888252Smrg      fbsd_hideous_sh_bug=$base_compile
134076888252Smrg
134176888252Smrg      if test "$pic_mode" != no; then
134276888252Smrg	command="$base_compile $qsrcfile $pic_flag"
134376888252Smrg      else
134476888252Smrg	# Don't build PIC code
134576888252Smrg	command="$base_compile $qsrcfile"
134676888252Smrg      fi
134776888252Smrg
134886dafe34Smrg      func_mkdir_p "$xdir$objdir"
134976888252Smrg
135076888252Smrg      if test -z "$output_obj"; then
135176888252Smrg	# Place PIC objects in $objdir
135276888252Smrg	command="$command -o $lobj"
135376888252Smrg      fi
135476888252Smrg
135586dafe34Smrg      func_show_eval_locale "$command"	\
135686dafe34Smrg          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
135776888252Smrg
135876888252Smrg      if test "$need_locks" = warn &&
135976888252Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
136086dafe34Smrg	$ECHO "\
136176888252Smrg*** ERROR, $lockfile contains:
136276888252Smrg`cat $lockfile 2>/dev/null`
136376888252Smrg
136476888252Smrgbut it should contain:
136576888252Smrg$srcfile
136676888252Smrg
136776888252SmrgThis indicates that another process is trying to use the same
136876888252Smrgtemporary object file, and libtool could not work around it because
136976888252Smrgyour compiler does not support \`-c' and \`-o' together.  If you
137076888252Smrgrepeat this compilation, it may succeed, by chance, but you had better
137176888252Smrgavoid parallel builds (make -j) in this platform, or get a better
137276888252Smrgcompiler."
137376888252Smrg
137486dafe34Smrg	$opt_dry_run || $RM $removelist
137576888252Smrg	exit $EXIT_FAILURE
137676888252Smrg      fi
137776888252Smrg
137876888252Smrg      # Just move the object if needed, then go on to compile the next one
137976888252Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
138086dafe34Smrg	func_show_eval '$MV "$output_obj" "$lobj"' \
138186dafe34Smrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
138276888252Smrg      fi
138376888252Smrg
138476888252Smrg      # Allow error messages only from the first compilation.
138576888252Smrg      if test "$suppress_opt" = yes; then
138686dafe34Smrg	suppress_output=' >/dev/null 2>&1'
138776888252Smrg      fi
138876888252Smrg    fi
138976888252Smrg
139076888252Smrg    # Only build a position-dependent object if we build old libraries.
139176888252Smrg    if test "$build_old_libs" = yes; then
139276888252Smrg      if test "$pic_mode" != yes; then
139376888252Smrg	# Don't build PIC code
139486dafe34Smrg	command="$base_compile $qsrcfile$pie_flag"
139576888252Smrg      else
139676888252Smrg	command="$base_compile $qsrcfile $pic_flag"
139776888252Smrg      fi
139876888252Smrg      if test "$compiler_c_o" = yes; then
139976888252Smrg	command="$command -o $obj"
140076888252Smrg      fi
140176888252Smrg
140276888252Smrg      # Suppress compiler output if we already did a PIC compilation.
140376888252Smrg      command="$command$suppress_output"
140486dafe34Smrg      func_show_eval_locale "$command" \
140586dafe34Smrg        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
140676888252Smrg
140776888252Smrg      if test "$need_locks" = warn &&
140876888252Smrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
140986dafe34Smrg	$ECHO "\
141076888252Smrg*** ERROR, $lockfile contains:
141176888252Smrg`cat $lockfile 2>/dev/null`
141276888252Smrg
141376888252Smrgbut it should contain:
141476888252Smrg$srcfile
141576888252Smrg
141676888252SmrgThis indicates that another process is trying to use the same
141776888252Smrgtemporary object file, and libtool could not work around it because
141876888252Smrgyour compiler does not support \`-c' and \`-o' together.  If you
141976888252Smrgrepeat this compilation, it may succeed, by chance, but you had better
142076888252Smrgavoid parallel builds (make -j) in this platform, or get a better
142176888252Smrgcompiler."
142276888252Smrg
142386dafe34Smrg	$opt_dry_run || $RM $removelist
142476888252Smrg	exit $EXIT_FAILURE
142576888252Smrg      fi
142676888252Smrg
142776888252Smrg      # Just move the object if needed
142876888252Smrg      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
142986dafe34Smrg	func_show_eval '$MV "$output_obj" "$obj"' \
143086dafe34Smrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
143176888252Smrg      fi
143276888252Smrg    fi
143376888252Smrg
143486dafe34Smrg    $opt_dry_run || {
143586dafe34Smrg      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
143676888252Smrg
143786dafe34Smrg      # Unlock the critical section if it was locked
143886dafe34Smrg      if test "$need_locks" != no; then
143986dafe34Smrg	removelist=$lockfile
144086dafe34Smrg        $RM "$lockfile"
144186dafe34Smrg      fi
144286dafe34Smrg    }
144376888252Smrg
144476888252Smrg    exit $EXIT_SUCCESS
144586dafe34Smrg}
144676888252Smrg
144786dafe34Smrg$opt_help || {
144886dafe34Smrgtest "$mode" = compile && func_mode_compile ${1+"$@"}
144986dafe34Smrg}
145076888252Smrg
145186dafe34Smrgfunc_mode_help ()
145286dafe34Smrg{
145386dafe34Smrg    # We need to display help for each of the modes.
145486dafe34Smrg    case $mode in
145586dafe34Smrg      "")
145686dafe34Smrg        # Generic help is extracted from the usage comments
145786dafe34Smrg        # at the start of this file.
145886dafe34Smrg        func_help
145986dafe34Smrg        ;;
146076888252Smrg
146186dafe34Smrg      clean)
146286dafe34Smrg        $ECHO \
146386dafe34Smrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
146476888252Smrg
146586dafe34SmrgRemove files from the build directory.
146676888252Smrg
146786dafe34SmrgRM is the name of the program to use to delete files associated with each FILE
146886dafe34Smrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
146986dafe34Smrgto RM.
147076888252Smrg
147186dafe34SmrgIf FILE is a libtool library, object or program, all the files associated
147286dafe34Smrgwith it are deleted. Otherwise, only FILE itself is deleted using RM."
147386dafe34Smrg        ;;
147476888252Smrg
147586dafe34Smrg      compile)
147686dafe34Smrg      $ECHO \
147786dafe34Smrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
147876888252Smrg
147986dafe34SmrgCompile a source file into a libtool library object.
148076888252Smrg
148186dafe34SmrgThis mode accepts the following additional options:
148276888252Smrg
148386dafe34Smrg  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
148486dafe34Smrg  -no-suppress      do not suppress compiler output for multiple passes
148586dafe34Smrg  -prefer-pic       try to building PIC objects only
148686dafe34Smrg  -prefer-non-pic   try to building non-PIC objects only
148786dafe34Smrg  -shared           do not build a \`.o' file suitable for static linking
148886dafe34Smrg  -static           only build a \`.o' file suitable for static linking
148976888252Smrg
149086dafe34SmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
149186dafe34Smrgfrom the given SOURCEFILE.
149276888252Smrg
149386dafe34SmrgThe output file name is determined by removing the directory component from
149486dafe34SmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the
149586dafe34Smrglibrary object suffix, \`.lo'."
149686dafe34Smrg        ;;
149776888252Smrg
149886dafe34Smrg      execute)
149986dafe34Smrg        $ECHO \
150086dafe34Smrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
150176888252Smrg
150286dafe34SmrgAutomatically set library path, then run a program.
150376888252Smrg
150486dafe34SmrgThis mode accepts the following additional options:
150576888252Smrg
150686dafe34Smrg  -dlopen FILE      add the directory containing FILE to the library path
150776888252Smrg
150886dafe34SmrgThis mode sets the library path environment variable according to \`-dlopen'
150986dafe34Smrgflags.
151076888252Smrg
151186dafe34SmrgIf any of the ARGS are libtool executable wrappers, then they are translated
151286dafe34Smrginto their corresponding uninstalled binary, and any of their required library
151386dafe34Smrgdirectories are added to the library path.
151476888252Smrg
151586dafe34SmrgThen, COMMAND is executed, with ARGS as arguments."
151686dafe34Smrg        ;;
151776888252Smrg
151886dafe34Smrg      finish)
151986dafe34Smrg        $ECHO \
152086dafe34Smrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
152176888252Smrg
152286dafe34SmrgComplete the installation of libtool libraries.
152376888252Smrg
152486dafe34SmrgEach LIBDIR is a directory that contains libtool libraries.
152576888252Smrg
152686dafe34SmrgThe commands that this mode executes may require superuser privileges.  Use
152786dafe34Smrgthe \`--dry-run' option if you just want to see what would be executed."
152886dafe34Smrg        ;;
152976888252Smrg
153086dafe34Smrg      install)
153186dafe34Smrg        $ECHO \
153286dafe34Smrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
153376888252Smrg
153486dafe34SmrgInstall executables or libraries.
153576888252Smrg
153686dafe34SmrgINSTALL-COMMAND is the installation command.  The first component should be
153786dafe34Smrgeither the \`install' or \`cp' program.
153876888252Smrg
153986dafe34SmrgThe following components of INSTALL-COMMAND are treated specially:
154076888252Smrg
154186dafe34Smrg  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
154276888252Smrg
154386dafe34SmrgThe rest of the components are interpreted as arguments to that command (only
154486dafe34SmrgBSD-compatible install options are recognized)."
154586dafe34Smrg        ;;
154676888252Smrg
154786dafe34Smrg      link)
154886dafe34Smrg        $ECHO \
154986dafe34Smrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
155076888252Smrg
155186dafe34SmrgLink object files or libraries together to form another library, or to
155286dafe34Smrgcreate an executable program.
155376888252Smrg
155486dafe34SmrgLINK-COMMAND is a command using the C compiler that you would use to create
155586dafe34Smrga program from several object files.
155676888252Smrg
155786dafe34SmrgThe following components of LINK-COMMAND are treated specially:
155876888252Smrg
155986dafe34Smrg  -all-static       do not do any dynamic linking at all
156086dafe34Smrg  -avoid-version    do not add a version suffix if possible
156186dafe34Smrg  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
156286dafe34Smrg  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
156386dafe34Smrg  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
156486dafe34Smrg  -export-symbols SYMFILE
156586dafe34Smrg                    try to export only the symbols listed in SYMFILE
156686dafe34Smrg  -export-symbols-regex REGEX
156786dafe34Smrg                    try to export only the symbols matching REGEX
156886dafe34Smrg  -LLIBDIR          search LIBDIR for required installed libraries
156986dafe34Smrg  -lNAME            OUTPUT-FILE requires the installed library libNAME
157086dafe34Smrg  -module           build a library that can dlopened
157186dafe34Smrg  -no-fast-install  disable the fast-install mode
157286dafe34Smrg  -no-install       link a not-installable executable
157386dafe34Smrg  -no-undefined     declare that a library does not refer to external symbols
157486dafe34Smrg  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
157586dafe34Smrg  -objectlist FILE  Use a list of object files found in FILE to specify objects
157686dafe34Smrg  -precious-files-regex REGEX
157786dafe34Smrg                    don't remove output files matching REGEX
157886dafe34Smrg  -release RELEASE  specify package release information
157986dafe34Smrg  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
158086dafe34Smrg  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
158186dafe34Smrg  -shared           only do dynamic linking of libtool libraries
158286dafe34Smrg  -shrext SUFFIX    override the standard shared library file extension
158386dafe34Smrg  -static           do not do any dynamic linking of uninstalled libtool libraries
158486dafe34Smrg  -static-libtool-libs
158586dafe34Smrg                    do not do any dynamic linking of libtool libraries
158686dafe34Smrg  -version-info CURRENT[:REVISION[:AGE]]
158786dafe34Smrg                    specify library version info [each variable defaults to 0]
158886dafe34Smrg  -weak LIBNAME     declare that the target provides the LIBNAME interface
158976888252Smrg
159086dafe34SmrgAll other options (arguments beginning with \`-') are ignored.
159176888252Smrg
159286dafe34SmrgEvery other argument is treated as a filename.  Files ending in \`.la' are
159386dafe34Smrgtreated as uninstalled libtool libraries, other files are standard or library
159486dafe34Smrgobject files.
159576888252Smrg
159686dafe34SmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
159786dafe34Smrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is
159886dafe34Smrgrequired, except when creating a convenience library.
159976888252Smrg
160086dafe34SmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
160186dafe34Smrgusing \`ar' and \`ranlib', or on Windows using \`lib'.
160276888252Smrg
160386dafe34SmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
160486dafe34Smrgis created, otherwise an executable program is created."
160576888252Smrg        ;;
160676888252Smrg
160786dafe34Smrg      uninstall)
160886dafe34Smrg        $ECHO \
160986dafe34Smrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
161076888252Smrg
161186dafe34SmrgRemove libraries from an installation directory.
161276888252Smrg
161386dafe34SmrgRM is the name of the program to use to delete files associated with each FILE
161486dafe34Smrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
161586dafe34Smrgto RM.
161676888252Smrg
161786dafe34SmrgIf FILE is a libtool library, all the files associated with it are deleted.
161886dafe34SmrgOtherwise, only FILE itself is deleted using RM."
161986dafe34Smrg        ;;
162076888252Smrg
162186dafe34Smrg      *)
162286dafe34Smrg        func_fatal_help "invalid operation mode \`$mode'"
162386dafe34Smrg        ;;
162486dafe34Smrg    esac
162576888252Smrg
162686dafe34Smrg    $ECHO
162786dafe34Smrg    $ECHO "Try \`$progname --help' for more information about other modes."
162876888252Smrg
162986dafe34Smrg    exit $?
163086dafe34Smrg}
163176888252Smrg
163286dafe34Smrg  # Now that we've collected a possible --mode arg, show help if necessary
163386dafe34Smrg  $opt_help && func_mode_help
163476888252Smrg
163576888252Smrg
163686dafe34Smrg# func_mode_execute arg...
163786dafe34Smrgfunc_mode_execute ()
163886dafe34Smrg{
163986dafe34Smrg    $opt_debug
164086dafe34Smrg    # The first argument is the command name.
164186dafe34Smrg    cmd="$nonopt"
164286dafe34Smrg    test -z "$cmd" && \
164386dafe34Smrg      func_fatal_help "you must specify a COMMAND"
164476888252Smrg
164586dafe34Smrg    # Handle -dlopen flags immediately.
164686dafe34Smrg    for file in $execute_dlfiles; do
164786dafe34Smrg      test -f "$file" \
164886dafe34Smrg	|| func_fatal_help "\`$file' is not a file"
164976888252Smrg
165086dafe34Smrg      dir=
165186dafe34Smrg      case $file in
165286dafe34Smrg      *.la)
165386dafe34Smrg	# Check to see that this really is a libtool archive.
165486dafe34Smrg	func_lalib_unsafe_p "$file" \
165586dafe34Smrg	  || func_fatal_help "\`$lib' is not a valid libtool archive"
165676888252Smrg
165786dafe34Smrg	# Read the libtool library.
165886dafe34Smrg	dlname=
165986dafe34Smrg	library_names=
166086dafe34Smrg	func_source "$file"
166176888252Smrg
166286dafe34Smrg	# Skip this library if it cannot be dlopened.
166386dafe34Smrg	if test -z "$dlname"; then
166486dafe34Smrg	  # Warn if it was a shared library.
166586dafe34Smrg	  test -n "$library_names" && \
166686dafe34Smrg	    func_warning "\`$file' was not linked with \`-export-dynamic'"
166786dafe34Smrg	  continue
166886dafe34Smrg	fi
166976888252Smrg
167086dafe34Smrg	func_dirname "$file" "" "."
167186dafe34Smrg	dir="$func_dirname_result"
167276888252Smrg
167386dafe34Smrg	if test -f "$dir/$objdir/$dlname"; then
167486dafe34Smrg	  dir="$dir/$objdir"
167586dafe34Smrg	else
167686dafe34Smrg	  if test ! -f "$dir/$dlname"; then
167786dafe34Smrg	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
167886dafe34Smrg	  fi
167986dafe34Smrg	fi
168076888252Smrg	;;
168176888252Smrg
168286dafe34Smrg      *.lo)
168386dafe34Smrg	# Just add the directory containing the .lo file.
168486dafe34Smrg	func_dirname "$file" "" "."
168586dafe34Smrg	dir="$func_dirname_result"
168676888252Smrg	;;
168776888252Smrg
168886dafe34Smrg      *)
168986dafe34Smrg	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
169076888252Smrg	continue
169176888252Smrg	;;
169286dafe34Smrg      esac
169376888252Smrg
169486dafe34Smrg      # Get the absolute pathname.
169586dafe34Smrg      absdir=`cd "$dir" && pwd`
169686dafe34Smrg      test -n "$absdir" && dir="$absdir"
169776888252Smrg
169886dafe34Smrg      # Now add the directory to shlibpath_var.
169986dafe34Smrg      if eval "test -z \"\$$shlibpath_var\""; then
170086dafe34Smrg	eval "$shlibpath_var=\"\$dir\""
170186dafe34Smrg      else
170286dafe34Smrg	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
170386dafe34Smrg      fi
170486dafe34Smrg    done
170576888252Smrg
170686dafe34Smrg    # This variable tells wrapper scripts just to set shlibpath_var
170786dafe34Smrg    # rather than running their programs.
170886dafe34Smrg    libtool_execute_magic="$magic"
170976888252Smrg
171086dafe34Smrg    # Check if any of the arguments is a wrapper script.
171186dafe34Smrg    args=
171286dafe34Smrg    for file
171386dafe34Smrg    do
171486dafe34Smrg      case $file in
171586dafe34Smrg      -*) ;;
171686dafe34Smrg      *)
171786dafe34Smrg	# Do a test to see if this is really a libtool program.
171886dafe34Smrg	if func_ltwrapper_script_p "$file"; then
171986dafe34Smrg	  func_source "$file"
172086dafe34Smrg	  # Transform arg to wrapped name.
172186dafe34Smrg	  file="$progdir/$program"
172286dafe34Smrg	elif func_ltwrapper_executable_p "$file"; then
172386dafe34Smrg	  func_ltwrapper_scriptname "$file"
172486dafe34Smrg	  func_source "$func_ltwrapper_scriptname_result"
172586dafe34Smrg	  # Transform arg to wrapped name.
172686dafe34Smrg	  file="$progdir/$program"
172786dafe34Smrg	fi
172886dafe34Smrg	;;
172986dafe34Smrg      esac
173086dafe34Smrg      # Quote arguments (to preserve shell metacharacters).
173186dafe34Smrg      func_quote_for_eval "$file"
173286dafe34Smrg      args="$args $func_quote_for_eval_result"
173386dafe34Smrg    done
173476888252Smrg
173586dafe34Smrg    if test "X$opt_dry_run" = Xfalse; then
173686dafe34Smrg      if test -n "$shlibpath_var"; then
173786dafe34Smrg	# Export the shlibpath_var.
173886dafe34Smrg	eval "export $shlibpath_var"
173986dafe34Smrg      fi
174076888252Smrg
174186dafe34Smrg      # Restore saved environment variables
174286dafe34Smrg      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
174386dafe34Smrg      do
174486dafe34Smrg	eval "if test \"\${save_$lt_var+set}\" = set; then
174586dafe34Smrg                $lt_var=\$save_$lt_var; export $lt_var
174686dafe34Smrg	      else
174786dafe34Smrg		$lt_unset $lt_var
174886dafe34Smrg	      fi"
174986dafe34Smrg      done
175076888252Smrg
175186dafe34Smrg      # Now prepare to actually exec the command.
175286dafe34Smrg      exec_cmd="\$cmd$args"
175386dafe34Smrg    else
175486dafe34Smrg      # Display what would be done.
175586dafe34Smrg      if test -n "$shlibpath_var"; then
175686dafe34Smrg	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
175786dafe34Smrg	$ECHO "export $shlibpath_var"
175886dafe34Smrg      fi
175986dafe34Smrg      $ECHO "$cmd$args"
176086dafe34Smrg      exit $EXIT_SUCCESS
176186dafe34Smrg    fi
176286dafe34Smrg}
176376888252Smrg
176486dafe34Smrgtest "$mode" = execute && func_mode_execute ${1+"$@"}
176576888252Smrg
176676888252Smrg
176786dafe34Smrg# func_mode_finish arg...
176886dafe34Smrgfunc_mode_finish ()
176986dafe34Smrg{
177086dafe34Smrg    $opt_debug
177186dafe34Smrg    libdirs="$nonopt"
177286dafe34Smrg    admincmds=
177376888252Smrg
177486dafe34Smrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
177586dafe34Smrg      for dir
177686dafe34Smrg      do
177786dafe34Smrg	libdirs="$libdirs $dir"
177886dafe34Smrg      done
177976888252Smrg
178086dafe34Smrg      for libdir in $libdirs; do
178186dafe34Smrg	if test -n "$finish_cmds"; then
178286dafe34Smrg	  # Do each command in the finish commands.
178386dafe34Smrg	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
178486dafe34Smrg'"$cmd"'"'
178586dafe34Smrg	fi
178686dafe34Smrg	if test -n "$finish_eval"; then
178786dafe34Smrg	  # Do the single finish_eval.
178886dafe34Smrg	  eval cmds=\"$finish_eval\"
178986dafe34Smrg	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
179086dafe34Smrg       $cmds"
179186dafe34Smrg	fi
179286dafe34Smrg      done
179386dafe34Smrg    fi
179476888252Smrg
179586dafe34Smrg    # Exit here if they wanted silent mode.
179686dafe34Smrg    $opt_silent && exit $EXIT_SUCCESS
179776888252Smrg
179886dafe34Smrg    $ECHO "X----------------------------------------------------------------------" | $Xsed
179986dafe34Smrg    $ECHO "Libraries have been installed in:"
180086dafe34Smrg    for libdir in $libdirs; do
180186dafe34Smrg      $ECHO "   $libdir"
180286dafe34Smrg    done
180386dafe34Smrg    $ECHO
180486dafe34Smrg    $ECHO "If you ever happen to want to link against installed libraries"
180586dafe34Smrg    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
180686dafe34Smrg    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
180786dafe34Smrg    $ECHO "flag during linking and do at least one of the following:"
180886dafe34Smrg    if test -n "$shlibpath_var"; then
180986dafe34Smrg      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
181086dafe34Smrg      $ECHO "     during execution"
181186dafe34Smrg    fi
181286dafe34Smrg    if test -n "$runpath_var"; then
181386dafe34Smrg      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
181486dafe34Smrg      $ECHO "     during linking"
181586dafe34Smrg    fi
181686dafe34Smrg    if test -n "$hardcode_libdir_flag_spec"; then
181786dafe34Smrg      libdir=LIBDIR
181886dafe34Smrg      eval flag=\"$hardcode_libdir_flag_spec\"
181976888252Smrg
182086dafe34Smrg      $ECHO "   - use the \`$flag' linker flag"
182186dafe34Smrg    fi
182286dafe34Smrg    if test -n "$admincmds"; then
182386dafe34Smrg      $ECHO "   - have your system administrator run these commands:$admincmds"
182486dafe34Smrg    fi
182586dafe34Smrg    if test -f /etc/ld.so.conf; then
182686dafe34Smrg      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
182786dafe34Smrg    fi
182886dafe34Smrg    $ECHO
182976888252Smrg
183086dafe34Smrg    $ECHO "See any operating system documentation about shared libraries for"
183186dafe34Smrg    case $host in
183286dafe34Smrg      solaris2.[6789]|solaris2.1[0-9])
183386dafe34Smrg        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
183486dafe34Smrg	$ECHO "pages."
183576888252Smrg	;;
183686dafe34Smrg      *)
183786dafe34Smrg        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
183886dafe34Smrg        ;;
183986dafe34Smrg    esac
184086dafe34Smrg    $ECHO "X----------------------------------------------------------------------" | $Xsed
184186dafe34Smrg    exit $EXIT_SUCCESS
184286dafe34Smrg}
184376888252Smrg
184486dafe34Smrgtest "$mode" = finish && func_mode_finish ${1+"$@"}
184576888252Smrg
184676888252Smrg
184786dafe34Smrg# func_mode_install arg...
184886dafe34Smrgfunc_mode_install ()
184986dafe34Smrg{
185086dafe34Smrg    $opt_debug
185186dafe34Smrg    # There may be an optional sh(1) argument at the beginning of
185286dafe34Smrg    # install_prog (especially on Windows NT).
185386dafe34Smrg    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
185486dafe34Smrg       # Allow the use of GNU shtool's install command.
185586dafe34Smrg       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
185686dafe34Smrg      # Aesthetically quote it.
185786dafe34Smrg      func_quote_for_eval "$nonopt"
185886dafe34Smrg      install_prog="$func_quote_for_eval_result "
185986dafe34Smrg      arg=$1
186086dafe34Smrg      shift
186186dafe34Smrg    else
186286dafe34Smrg      install_prog=
186386dafe34Smrg      arg=$nonopt
186486dafe34Smrg    fi
186576888252Smrg
186686dafe34Smrg    # The real first argument should be the name of the installation program.
186786dafe34Smrg    # Aesthetically quote it.
186886dafe34Smrg    func_quote_for_eval "$arg"
186986dafe34Smrg    install_prog="$install_prog$func_quote_for_eval_result"
187086dafe34Smrg
187186dafe34Smrg    # We need to accept at least all the BSD install flags.
187286dafe34Smrg    dest=
187386dafe34Smrg    files=
187486dafe34Smrg    opts=
187586dafe34Smrg    prev=
187686dafe34Smrg    install_type=
187786dafe34Smrg    isdir=no
187886dafe34Smrg    stripme=
187986dafe34Smrg    for arg
188086dafe34Smrg    do
188186dafe34Smrg      if test -n "$dest"; then
188286dafe34Smrg	files="$files $dest"
188386dafe34Smrg	dest=$arg
188486dafe34Smrg	continue
188576888252Smrg      fi
188676888252Smrg
188786dafe34Smrg      case $arg in
188886dafe34Smrg      -d) isdir=yes ;;
188986dafe34Smrg      -f)
189086dafe34Smrg	case " $install_prog " in
189186dafe34Smrg	*[\\\ /]cp\ *) ;;
189286dafe34Smrg	*) prev=$arg ;;
189386dafe34Smrg	esac
189486dafe34Smrg	;;
189586dafe34Smrg      -g | -m | -o)
189686dafe34Smrg	prev=$arg
189786dafe34Smrg	;;
189886dafe34Smrg      -s)
189986dafe34Smrg	stripme=" -s"
190086dafe34Smrg	continue
190186dafe34Smrg	;;
190286dafe34Smrg      -*)
190386dafe34Smrg	;;
190486dafe34Smrg      *)
190586dafe34Smrg	# If the previous option needed an argument, then skip it.
190686dafe34Smrg	if test -n "$prev"; then
190786dafe34Smrg	  prev=
190886dafe34Smrg	else
190986dafe34Smrg	  dest=$arg
191086dafe34Smrg	  continue
191186dafe34Smrg	fi
191286dafe34Smrg	;;
191386dafe34Smrg      esac
191476888252Smrg
191586dafe34Smrg      # Aesthetically quote the argument.
191686dafe34Smrg      func_quote_for_eval "$arg"
191786dafe34Smrg      install_prog="$install_prog $func_quote_for_eval_result"
191886dafe34Smrg    done
191976888252Smrg
192086dafe34Smrg    test -z "$install_prog" && \
192186dafe34Smrg      func_fatal_help "you must specify an install program"
192276888252Smrg
192386dafe34Smrg    test -n "$prev" && \
192486dafe34Smrg      func_fatal_help "the \`$prev' option requires an argument"
192576888252Smrg
192686dafe34Smrg    if test -z "$files"; then
192786dafe34Smrg      if test -z "$dest"; then
192886dafe34Smrg	func_fatal_help "no file or destination specified"
192986dafe34Smrg      else
193086dafe34Smrg	func_fatal_help "you must specify a destination"
193176888252Smrg      fi
193276888252Smrg    fi
193376888252Smrg
193486dafe34Smrg    # Strip any trailing slash from the destination.
193586dafe34Smrg    func_stripname '' '/' "$dest"
193686dafe34Smrg    dest=$func_stripname_result
193776888252Smrg
193886dafe34Smrg    # Check to see that the destination is a directory.
193986dafe34Smrg    test -d "$dest" && isdir=yes
194086dafe34Smrg    if test "$isdir" = yes; then
194186dafe34Smrg      destdir="$dest"
194286dafe34Smrg      destname=
194386dafe34Smrg    else
194486dafe34Smrg      func_dirname_and_basename "$dest" "" "."
194586dafe34Smrg      destdir="$func_dirname_result"
194686dafe34Smrg      destname="$func_basename_result"
194786dafe34Smrg
194886dafe34Smrg      # Not a directory, so check to see that there is only one file specified.
194986dafe34Smrg      set dummy $files; shift
195086dafe34Smrg      test "$#" -gt 1 && \
195186dafe34Smrg	func_fatal_help "\`$dest' is not a directory"
195286dafe34Smrg    fi
195386dafe34Smrg    case $destdir in
195486dafe34Smrg    [\\/]* | [A-Za-z]:[\\/]*) ;;
195576888252Smrg    *)
195686dafe34Smrg      for file in $files; do
195786dafe34Smrg	case $file in
195886dafe34Smrg	*.lo) ;;
195986dafe34Smrg	*)
196086dafe34Smrg	  func_fatal_help "\`$destdir' must be an absolute directory name"
196186dafe34Smrg	  ;;
196286dafe34Smrg	esac
196386dafe34Smrg      done
196476888252Smrg      ;;
196576888252Smrg    esac
196676888252Smrg
196786dafe34Smrg    # This variable tells wrapper scripts just to set variables rather
196886dafe34Smrg    # than running their programs.
196986dafe34Smrg    libtool_install_magic="$magic"
197076888252Smrg
197186dafe34Smrg    staticlibs=
197286dafe34Smrg    future_libdirs=
197386dafe34Smrg    current_libdirs=
197486dafe34Smrg    for file in $files; do
197576888252Smrg
197686dafe34Smrg      # Do each installation.
197786dafe34Smrg      case $file in
197886dafe34Smrg      *.$libext)
197986dafe34Smrg	# Do the static libraries later.
198086dafe34Smrg	staticlibs="$staticlibs $file"
198186dafe34Smrg	;;
198286dafe34Smrg
198386dafe34Smrg      *.la)
198486dafe34Smrg	# Check to see that this really is a libtool archive.
198586dafe34Smrg	func_lalib_unsafe_p "$file" \
198686dafe34Smrg	  || func_fatal_help "\`$file' is not a valid libtool archive"
198786dafe34Smrg
198886dafe34Smrg	library_names=
198986dafe34Smrg	old_library=
199086dafe34Smrg	relink_command=
199186dafe34Smrg	func_source "$file"
199286dafe34Smrg
199386dafe34Smrg	# Add the libdir to current_libdirs if it is the destination.
199486dafe34Smrg	if test "X$destdir" = "X$libdir"; then
199586dafe34Smrg	  case "$current_libdirs " in
199686dafe34Smrg	  *" $libdir "*) ;;
199786dafe34Smrg	  *) current_libdirs="$current_libdirs $libdir" ;;
199876888252Smrg	  esac
199986dafe34Smrg	else
200086dafe34Smrg	  # Note the libdir as a future libdir.
200186dafe34Smrg	  case "$future_libdirs " in
200286dafe34Smrg	  *" $libdir "*) ;;
200386dafe34Smrg	  *) future_libdirs="$future_libdirs $libdir" ;;
200486dafe34Smrg	  esac
200586dafe34Smrg	fi
200676888252Smrg
200786dafe34Smrg	func_dirname "$file" "/" ""
200886dafe34Smrg	dir="$func_dirname_result"
200986dafe34Smrg	dir="$dir$objdir"
201086dafe34Smrg
201186dafe34Smrg	if test -n "$relink_command"; then
201286dafe34Smrg	  # Determine the prefix the user has applied to our future dir.
201386dafe34Smrg	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
201486dafe34Smrg
201586dafe34Smrg	  # Don't allow the user to place us outside of our expected
201686dafe34Smrg	  # location b/c this prevents finding dependent libraries that
201786dafe34Smrg	  # are installed to the same prefix.
201886dafe34Smrg	  # At present, this check doesn't affect windows .dll's that
201986dafe34Smrg	  # are installed into $libdir/../bin (currently, that works fine)
202086dafe34Smrg	  # but it's something to keep an eye on.
202186dafe34Smrg	  test "$inst_prefix_dir" = "$destdir" && \
202286dafe34Smrg	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
202386dafe34Smrg
202486dafe34Smrg	  if test -n "$inst_prefix_dir"; then
202586dafe34Smrg	    # Stick the inst_prefix_dir data into the link command.
202686dafe34Smrg	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
202786dafe34Smrg	  else
202886dafe34Smrg	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
202986dafe34Smrg	  fi
203086dafe34Smrg
203186dafe34Smrg	  func_warning "relinking \`$file'"
203286dafe34Smrg	  func_show_eval "$relink_command" \
203386dafe34Smrg	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
203486dafe34Smrg	fi
203586dafe34Smrg
203686dafe34Smrg	# See the names of the shared library.
203786dafe34Smrg	set dummy $library_names; shift
203886dafe34Smrg	if test -n "$1"; then
203986dafe34Smrg	  realname="$1"
204086dafe34Smrg	  shift
204186dafe34Smrg
204286dafe34Smrg	  srcname="$realname"
204386dafe34Smrg	  test -n "$relink_command" && srcname="$realname"T
204486dafe34Smrg
204586dafe34Smrg	  # Install the shared library and build the symlinks.
204686dafe34Smrg	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
204786dafe34Smrg	      'exit $?'
204886dafe34Smrg	  tstripme="$stripme"
204986dafe34Smrg	  case $host_os in
205086dafe34Smrg	  cygwin* | mingw* | pw32* | cegcc*)
205186dafe34Smrg	    case $realname in
205286dafe34Smrg	    *.dll.a)
205386dafe34Smrg	      tstripme=""
205486dafe34Smrg	      ;;
205586dafe34Smrg	    esac
205676888252Smrg	    ;;
205776888252Smrg	  esac
205886dafe34Smrg	  if test -n "$tstripme" && test -n "$striplib"; then
205986dafe34Smrg	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
206076888252Smrg	  fi
206186dafe34Smrg
206286dafe34Smrg	  if test "$#" -gt 0; then
206386dafe34Smrg	    # Delete the old symlinks, and create new ones.
206486dafe34Smrg	    # Try `ln -sf' first, because the `ln' binary might depend on
206586dafe34Smrg	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
206686dafe34Smrg	    # so we also need to try rm && ln -s.
206786dafe34Smrg	    for linkname
206886dafe34Smrg	    do
206986dafe34Smrg	      test "$linkname" != "$realname" \
207086dafe34Smrg		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
207176888252Smrg	    done
207276888252Smrg	  fi
207376888252Smrg
207486dafe34Smrg	  # Do each command in the postinstall commands.
207586dafe34Smrg	  lib="$destdir/$realname"
207686dafe34Smrg	  func_execute_cmds "$postinstall_cmds" 'exit $?'
207776888252Smrg	fi
207876888252Smrg
207986dafe34Smrg	# Install the pseudo-library for information purposes.
208086dafe34Smrg	func_basename "$file"
208186dafe34Smrg	name="$func_basename_result"
208286dafe34Smrg	instname="$dir/$name"i
208386dafe34Smrg	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
208476888252Smrg
208586dafe34Smrg	# Maybe install the static library, too.
208686dafe34Smrg	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
208786dafe34Smrg	;;
208876888252Smrg
208986dafe34Smrg      *.lo)
209086dafe34Smrg	# Install (i.e. copy) a libtool object.
209176888252Smrg
209286dafe34Smrg	# Figure out destination file name, if it wasn't already specified.
209386dafe34Smrg	if test -n "$destname"; then
209486dafe34Smrg	  destfile="$destdir/$destname"
209586dafe34Smrg	else
209686dafe34Smrg	  func_basename "$file"
209786dafe34Smrg	  destfile="$func_basename_result"
209886dafe34Smrg	  destfile="$destdir/$destfile"
209986dafe34Smrg	fi
210086dafe34Smrg
210186dafe34Smrg	# Deduce the name of the destination old-style object file.
210286dafe34Smrg	case $destfile in
210386dafe34Smrg	*.lo)
210486dafe34Smrg	  func_lo2o "$destfile"
210586dafe34Smrg	  staticdest=$func_lo2o_result
210686dafe34Smrg	  ;;
210786dafe34Smrg	*.$objext)
210886dafe34Smrg	  staticdest="$destfile"
210986dafe34Smrg	  destfile=
211086dafe34Smrg	  ;;
211186dafe34Smrg	*)
211286dafe34Smrg	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
211386dafe34Smrg	  ;;
211476888252Smrg	esac
211576888252Smrg
211686dafe34Smrg	# Install the libtool object if requested.
211786dafe34Smrg	test -n "$destfile" && \
211886dafe34Smrg	  func_show_eval "$install_prog $file $destfile" 'exit $?'
211986dafe34Smrg
212086dafe34Smrg	# Install the old object if enabled.
212186dafe34Smrg	if test "$build_old_libs" = yes; then
212286dafe34Smrg	  # Deduce the name of the old-style object file.
212386dafe34Smrg	  func_lo2o "$file"
212486dafe34Smrg	  staticobj=$func_lo2o_result
212586dafe34Smrg	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
212676888252Smrg	fi
212786dafe34Smrg	exit $EXIT_SUCCESS
212886dafe34Smrg	;;
212976888252Smrg
213086dafe34Smrg      *)
213186dafe34Smrg	# Figure out destination file name, if it wasn't already specified.
213286dafe34Smrg	if test -n "$destname"; then
213386dafe34Smrg	  destfile="$destdir/$destname"
213486dafe34Smrg	else
213586dafe34Smrg	  func_basename "$file"
213686dafe34Smrg	  destfile="$func_basename_result"
213786dafe34Smrg	  destfile="$destdir/$destfile"
213886dafe34Smrg	fi
213986dafe34Smrg
214086dafe34Smrg	# If the file is missing, and there is a .exe on the end, strip it
214186dafe34Smrg	# because it is most likely a libtool script we actually want to
214286dafe34Smrg	# install
214386dafe34Smrg	stripped_ext=""
214486dafe34Smrg	case $file in
214586dafe34Smrg	  *.exe)
214686dafe34Smrg	    if test ! -f "$file"; then
214786dafe34Smrg	      func_stripname '' '.exe' "$file"
214886dafe34Smrg	      file=$func_stripname_result
214986dafe34Smrg	      stripped_ext=".exe"
215076888252Smrg	    fi
215186dafe34Smrg	    ;;
215286dafe34Smrg	esac
215376888252Smrg
215486dafe34Smrg	# Do a test to see if this is really a libtool program.
215586dafe34Smrg	case $host in
215686dafe34Smrg	*cygwin* | *mingw*)
215786dafe34Smrg	    if func_ltwrapper_executable_p "$file"; then
215886dafe34Smrg	      func_ltwrapper_scriptname "$file"
215986dafe34Smrg	      wrapper=$func_ltwrapper_scriptname_result
216086dafe34Smrg	    else
216186dafe34Smrg	      func_stripname '' '.exe' "$file"
216286dafe34Smrg	      wrapper=$func_stripname_result
216386dafe34Smrg	    fi
216486dafe34Smrg	    ;;
216586dafe34Smrg	*)
216686dafe34Smrg	    wrapper=$file
216786dafe34Smrg	    ;;
216886dafe34Smrg	esac
216986dafe34Smrg	if func_ltwrapper_script_p "$wrapper"; then
217086dafe34Smrg	  notinst_deplibs=
217186dafe34Smrg	  relink_command=
217276888252Smrg
217386dafe34Smrg	  func_source "$wrapper"
217476888252Smrg
217586dafe34Smrg	  # Check the variables that should have been set.
217686dafe34Smrg	  test -z "$generated_by_libtool_version" && \
217786dafe34Smrg	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
217886dafe34Smrg
217986dafe34Smrg	  finalize=yes
218086dafe34Smrg	  for lib in $notinst_deplibs; do
218186dafe34Smrg	    # Check to see that each library is installed.
218286dafe34Smrg	    libdir=
218386dafe34Smrg	    if test -f "$lib"; then
218486dafe34Smrg	      func_source "$lib"
218586dafe34Smrg	    fi
218686dafe34Smrg	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
218786dafe34Smrg	    if test -n "$libdir" && test ! -f "$libfile"; then
218886dafe34Smrg	      func_warning "\`$lib' has not been installed in \`$libdir'"
218986dafe34Smrg	      finalize=no
219086dafe34Smrg	    fi
219186dafe34Smrg	  done
219286dafe34Smrg
219386dafe34Smrg	  relink_command=
219486dafe34Smrg	  func_source "$wrapper"
219586dafe34Smrg
219686dafe34Smrg	  outputname=
219786dafe34Smrg	  if test "$fast_install" = no && test -n "$relink_command"; then
219886dafe34Smrg	    $opt_dry_run || {
219986dafe34Smrg	      if test "$finalize" = yes; then
220086dafe34Smrg	        tmpdir=`func_mktempdir`
220186dafe34Smrg		func_basename "$file$stripped_ext"
220286dafe34Smrg		file="$func_basename_result"
220386dafe34Smrg	        outputname="$tmpdir/$file"
220486dafe34Smrg	        # Replace the output file specification.
220586dafe34Smrg	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
220686dafe34Smrg
220786dafe34Smrg	        $opt_silent || {
220886dafe34Smrg	          func_quote_for_expand "$relink_command"
220986dafe34Smrg		  eval "func_echo $func_quote_for_expand_result"
221086dafe34Smrg	        }
221186dafe34Smrg	        if eval "$relink_command"; then :
221286dafe34Smrg	          else
221386dafe34Smrg		  func_error "error: relink \`$file' with the above command before installing it"
221486dafe34Smrg		  $opt_dry_run || ${RM}r "$tmpdir"
221586dafe34Smrg		  continue
221686dafe34Smrg	        fi
221786dafe34Smrg	        file="$outputname"
221886dafe34Smrg	      else
221986dafe34Smrg	        func_warning "cannot relink \`$file'"
222086dafe34Smrg	      fi
222186dafe34Smrg	    }
222276888252Smrg	  else
222386dafe34Smrg	    # Install the binary that we compiled earlier.
222486dafe34Smrg	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
222576888252Smrg	  fi
222686dafe34Smrg	fi
222776888252Smrg
222886dafe34Smrg	# remove .exe since cygwin /usr/bin/install will append another
222986dafe34Smrg	# one anyway
223086dafe34Smrg	case $install_prog,$host in
223186dafe34Smrg	*/usr/bin/install*,*cygwin*)
223286dafe34Smrg	  case $file:$destfile in
223386dafe34Smrg	  *.exe:*.exe)
223486dafe34Smrg	    # this is ok
223586dafe34Smrg	    ;;
223686dafe34Smrg	  *.exe:*)
223786dafe34Smrg	    destfile=$destfile.exe
223886dafe34Smrg	    ;;
223986dafe34Smrg	  *:*.exe)
224086dafe34Smrg	    func_stripname '' '.exe' "$destfile"
224186dafe34Smrg	    destfile=$func_stripname_result
224286dafe34Smrg	    ;;
224386dafe34Smrg	  esac
224476888252Smrg	  ;;
224576888252Smrg	esac
224686dafe34Smrg	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
224786dafe34Smrg	$opt_dry_run || if test -n "$outputname"; then
224886dafe34Smrg	  ${RM}r "$tmpdir"
224986dafe34Smrg	fi
225086dafe34Smrg	;;
225186dafe34Smrg      esac
225286dafe34Smrg    done
225376888252Smrg
225486dafe34Smrg    for file in $staticlibs; do
225586dafe34Smrg      func_basename "$file"
225686dafe34Smrg      name="$func_basename_result"
225776888252Smrg
225886dafe34Smrg      # Set up the ranlib parameters.
225986dafe34Smrg      oldlib="$destdir/$name"
226076888252Smrg
226186dafe34Smrg      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
226276888252Smrg
226386dafe34Smrg      if test -n "$stripme" && test -n "$old_striplib"; then
226486dafe34Smrg	func_show_eval "$old_striplib $oldlib" 'exit $?'
226586dafe34Smrg      fi
226676888252Smrg
226786dafe34Smrg      # Do each command in the postinstall commands.
226886dafe34Smrg      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
226986dafe34Smrg    done
227076888252Smrg
227186dafe34Smrg    test -n "$future_libdirs" && \
227286dafe34Smrg      func_warning "remember to run \`$progname --finish$future_libdirs'"
227376888252Smrg
227486dafe34Smrg    if test -n "$current_libdirs"; then
227586dafe34Smrg      # Maybe just do a dry run.
227686dafe34Smrg      $opt_dry_run && current_libdirs=" -n$current_libdirs"
227786dafe34Smrg      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
227886dafe34Smrg    else
227986dafe34Smrg      exit $EXIT_SUCCESS
228086dafe34Smrg    fi
228186dafe34Smrg}
228276888252Smrg
228386dafe34Smrgtest "$mode" = install && func_mode_install ${1+"$@"}
228476888252Smrg
228576888252Smrg
228686dafe34Smrg# func_generate_dlsyms outputname originator pic_p
228786dafe34Smrg# Extract symbols from dlprefiles and create ${outputname}S.o with
228886dafe34Smrg# a dlpreopen symbol table.
228986dafe34Smrgfunc_generate_dlsyms ()
229086dafe34Smrg{
229186dafe34Smrg    $opt_debug
229286dafe34Smrg    my_outputname="$1"
229386dafe34Smrg    my_originator="$2"
229486dafe34Smrg    my_pic_p="${3-no}"
229586dafe34Smrg    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
229686dafe34Smrg    my_dlsyms=
229786dafe34Smrg
229886dafe34Smrg    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
229986dafe34Smrg      if test -n "$NM" && test -n "$global_symbol_pipe"; then
230086dafe34Smrg	my_dlsyms="${my_outputname}S.c"
230186dafe34Smrg      else
230286dafe34Smrg	func_error "not configured to extract global symbols from dlpreopened files"
230386dafe34Smrg      fi
230486dafe34Smrg    fi
230576888252Smrg
230686dafe34Smrg    if test -n "$my_dlsyms"; then
230786dafe34Smrg      case $my_dlsyms in
230886dafe34Smrg      "") ;;
230986dafe34Smrg      *.c)
231086dafe34Smrg	# Discover the nlist of each of the dlfiles.
231186dafe34Smrg	nlist="$output_objdir/${my_outputname}.nm"
231286dafe34Smrg
231386dafe34Smrg	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
231486dafe34Smrg
231586dafe34Smrg	# Parse the name list into a source file.
231686dafe34Smrg	func_verbose "creating $output_objdir/$my_dlsyms"
231786dafe34Smrg
231886dafe34Smrg	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
231986dafe34Smrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
232086dafe34Smrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
232186dafe34Smrg
232286dafe34Smrg#ifdef __cplusplus
232386dafe34Smrgextern \"C\" {
232486dafe34Smrg#endif
232586dafe34Smrg
232686dafe34Smrg/* External symbol declarations for the compiler. */\
232786dafe34Smrg"
232886dafe34Smrg
232986dafe34Smrg	if test "$dlself" = yes; then
233086dafe34Smrg	  func_verbose "generating symbol list for \`$output'"
233186dafe34Smrg
233286dafe34Smrg	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
233386dafe34Smrg
233486dafe34Smrg	  # Add our own program objects to the symbol list.
233586dafe34Smrg	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
233686dafe34Smrg	  for progfile in $progfiles; do
233786dafe34Smrg	    func_verbose "extracting global C symbols from \`$progfile'"
233886dafe34Smrg	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
233986dafe34Smrg	  done
234086dafe34Smrg
234186dafe34Smrg	  if test -n "$exclude_expsyms"; then
234286dafe34Smrg	    $opt_dry_run || {
234386dafe34Smrg	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
234486dafe34Smrg	      eval '$MV "$nlist"T "$nlist"'
234586dafe34Smrg	    }
234676888252Smrg	  fi
234776888252Smrg
234886dafe34Smrg	  if test -n "$export_symbols_regex"; then
234986dafe34Smrg	    $opt_dry_run || {
235086dafe34Smrg	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
235186dafe34Smrg	      eval '$MV "$nlist"T "$nlist"'
235286dafe34Smrg	    }
235376888252Smrg	  fi
235486dafe34Smrg
235586dafe34Smrg	  # Prepare the list of exported symbols
235686dafe34Smrg	  if test -z "$export_symbols"; then
235786dafe34Smrg	    export_symbols="$output_objdir/$outputname.exp"
235886dafe34Smrg	    $opt_dry_run || {
235986dafe34Smrg	      $RM $export_symbols
236086dafe34Smrg	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
236186dafe34Smrg	      case $host in
236286dafe34Smrg	      *cygwin* | *mingw* | *cegcc* )
236386dafe34Smrg                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
236486dafe34Smrg                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
236586dafe34Smrg	        ;;
236676888252Smrg	      esac
236786dafe34Smrg	    }
236886dafe34Smrg	  else
236986dafe34Smrg	    $opt_dry_run || {
237086dafe34Smrg	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
237186dafe34Smrg	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
237286dafe34Smrg	      eval '$MV "$nlist"T "$nlist"'
237386dafe34Smrg	      case $host in
237486dafe34Smrg	        *cygwin | *mingw* | *cegcc* )
237586dafe34Smrg	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
237686dafe34Smrg	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
237786dafe34Smrg	          ;;
237876888252Smrg	      esac
237986dafe34Smrg	    }
238076888252Smrg	  fi
238186dafe34Smrg	fi
238276888252Smrg
238386dafe34Smrg	for dlprefile in $dlprefiles; do
238486dafe34Smrg	  func_verbose "extracting global C symbols from \`$dlprefile'"
238586dafe34Smrg	  func_basename "$dlprefile"
238686dafe34Smrg	  name="$func_basename_result"
238786dafe34Smrg	  $opt_dry_run || {
238886dafe34Smrg	    eval '$ECHO ": $name " >> "$nlist"'
238986dafe34Smrg	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
239086dafe34Smrg	  }
239186dafe34Smrg	done
239276888252Smrg
239386dafe34Smrg	$opt_dry_run || {
239486dafe34Smrg	  # Make sure we have at least an empty file.
239586dafe34Smrg	  test -f "$nlist" || : > "$nlist"
239676888252Smrg
239786dafe34Smrg	  if test -n "$exclude_expsyms"; then
239886dafe34Smrg	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
239986dafe34Smrg	    $MV "$nlist"T "$nlist"
240076888252Smrg	  fi
240176888252Smrg
240286dafe34Smrg	  # Try sorting and uniquifying the output.
240386dafe34Smrg	  if $GREP -v "^: " < "$nlist" |
240486dafe34Smrg	      if sort -k 3 </dev/null >/dev/null 2>&1; then
240586dafe34Smrg		sort -k 3
240676888252Smrg	      else
240786dafe34Smrg		sort +2
240886dafe34Smrg	      fi |
240986dafe34Smrg	      uniq > "$nlist"S; then
241086dafe34Smrg	    :
241176888252Smrg	  else
241286dafe34Smrg	    $GREP -v "^: " < "$nlist" > "$nlist"S
241376888252Smrg	  fi
241476888252Smrg
241586dafe34Smrg	  if test -f "$nlist"S; then
241686dafe34Smrg	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
241776888252Smrg	  else
241886dafe34Smrg	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
241976888252Smrg	  fi
242076888252Smrg
242186dafe34Smrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
242276888252Smrg
242386dafe34Smrg/* The mapping between symbol names and symbols.  */
242486dafe34Smrgtypedef struct {
242586dafe34Smrg  const char *name;
242686dafe34Smrg  void *address;
242786dafe34Smrg} lt_dlsymlist;
242886dafe34Smrg"
242986dafe34Smrg	  case $host in
243086dafe34Smrg	  *cygwin* | *mingw* | *cegcc* )
243186dafe34Smrg	    $ECHO >> "$output_objdir/$my_dlsyms" "\
243286dafe34Smrg/* DATA imports from DLLs on WIN32 con't be const, because
243386dafe34Smrg   runtime relocations are performed -- see ld's documentation
243486dafe34Smrg   on pseudo-relocs.  */"
243586dafe34Smrg	    lt_dlsym_const= ;;
243686dafe34Smrg	  *osf5*)
243786dafe34Smrg	    echo >> "$output_objdir/$my_dlsyms" "\
243886dafe34Smrg/* This system does not cope well with relocations in const data */"
243986dafe34Smrg	    lt_dlsym_const= ;;
244086dafe34Smrg	  *)
244186dafe34Smrg	    lt_dlsym_const=const ;;
244286dafe34Smrg	  esac
244386dafe34Smrg
244486dafe34Smrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
244586dafe34Smrgextern $lt_dlsym_const lt_dlsymlist
244686dafe34Smrglt_${my_prefix}_LTX_preloaded_symbols[];
244786dafe34Smrg$lt_dlsym_const lt_dlsymlist
244886dafe34Smrglt_${my_prefix}_LTX_preloaded_symbols[] =
244986dafe34Smrg{\
245086dafe34Smrg  { \"$my_originator\", (void *) 0 },"
245186dafe34Smrg
245286dafe34Smrg	  case $need_lib_prefix in
245386dafe34Smrg	  no)
245486dafe34Smrg	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
245586dafe34Smrg	    ;;
245686dafe34Smrg	  *)
245786dafe34Smrg	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
245886dafe34Smrg	    ;;
245986dafe34Smrg	  esac
246086dafe34Smrg	  $ECHO >> "$output_objdir/$my_dlsyms" "\
246186dafe34Smrg  {0, (void *) 0}
246286dafe34Smrg};
246386dafe34Smrg
246486dafe34Smrg/* This works around a problem in FreeBSD linker */
246586dafe34Smrg#ifdef FREEBSD_WORKAROUND
246686dafe34Smrgstatic const void *lt_preloaded_setup() {
246786dafe34Smrg  return lt_${my_prefix}_LTX_preloaded_symbols;
246886dafe34Smrg}
246986dafe34Smrg#endif
247086dafe34Smrg
247186dafe34Smrg#ifdef __cplusplus
247286dafe34Smrg}
247386dafe34Smrg#endif\
247486dafe34Smrg"
247586dafe34Smrg	} # !$opt_dry_run
247686dafe34Smrg
247786dafe34Smrg	pic_flag_for_symtable=
247886dafe34Smrg	case "$compile_command " in
247986dafe34Smrg	*" -static "*) ;;
248086dafe34Smrg	*)
248186dafe34Smrg	  case $host in
248286dafe34Smrg	  # compiling the symbol table file with pic_flag works around
248386dafe34Smrg	  # a FreeBSD bug that causes programs to crash when -lm is
248486dafe34Smrg	  # linked before any other PIC object.  But we must not use
248586dafe34Smrg	  # pic_flag when linking with -static.  The problem exists in
248686dafe34Smrg	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
248786dafe34Smrg	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
248886dafe34Smrg	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
248986dafe34Smrg	  *-*-hpux*)
249086dafe34Smrg	    pic_flag_for_symtable=" $pic_flag"  ;;
249186dafe34Smrg	  *)
249286dafe34Smrg	    if test "X$my_pic_p" != Xno; then
249386dafe34Smrg	      pic_flag_for_symtable=" $pic_flag"
249476888252Smrg	    fi
249586dafe34Smrg	    ;;
249686dafe34Smrg	  esac
249786dafe34Smrg	  ;;
249886dafe34Smrg	esac
249986dafe34Smrg	symtab_cflags=
250086dafe34Smrg	for arg in $LTCFLAGS; do
250186dafe34Smrg	  case $arg in
250286dafe34Smrg	  -pie | -fpie | -fPIE) ;;
250386dafe34Smrg	  *) symtab_cflags="$symtab_cflags $arg" ;;
250486dafe34Smrg	  esac
250586dafe34Smrg	done
250676888252Smrg
250786dafe34Smrg	# Now compile the dynamic symbol file.
250886dafe34Smrg	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
250976888252Smrg
251086dafe34Smrg	# Clean up the generated files.
251186dafe34Smrg	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
251286dafe34Smrg
251386dafe34Smrg	# Transform the symbol file into the correct name.
251486dafe34Smrg	symfileobj="$output_objdir/${my_outputname}S.$objext"
251586dafe34Smrg	case $host in
251686dafe34Smrg	*cygwin* | *mingw* | *cegcc* )
251786dafe34Smrg	  if test -f "$output_objdir/$my_outputname.def"; then
251886dafe34Smrg	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
251986dafe34Smrg	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
252086dafe34Smrg	  else
252186dafe34Smrg	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
252286dafe34Smrg	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
252386dafe34Smrg	  fi
252486dafe34Smrg	  ;;
252586dafe34Smrg	*)
252686dafe34Smrg	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
252786dafe34Smrg	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
252876888252Smrg	  ;;
252976888252Smrg	esac
253086dafe34Smrg	;;
253186dafe34Smrg      *)
253286dafe34Smrg	func_fatal_error "unknown suffix for \`$my_dlsyms'"
253386dafe34Smrg	;;
253486dafe34Smrg      esac
253586dafe34Smrg    else
253686dafe34Smrg      # We keep going just in case the user didn't refer to
253786dafe34Smrg      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
253886dafe34Smrg      # really was required.
253986dafe34Smrg
254086dafe34Smrg      # Nullify the symbol file.
254186dafe34Smrg      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
254286dafe34Smrg      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
254376888252Smrg    fi
254486dafe34Smrg}
254576888252Smrg
254686dafe34Smrg# func_win32_libid arg
254786dafe34Smrg# return the library type of file 'arg'
254886dafe34Smrg#
254986dafe34Smrg# Need a lot of goo to handle *both* DLLs and import libs
255086dafe34Smrg# Has to be a shell function in order to 'eat' the argument
255186dafe34Smrg# that is supplied when $file_magic_command is called.
255286dafe34Smrgfunc_win32_libid ()
255386dafe34Smrg{
255486dafe34Smrg  $opt_debug
255586dafe34Smrg  win32_libid_type="unknown"
255686dafe34Smrg  win32_fileres=`file -L $1 2>/dev/null`
255786dafe34Smrg  case $win32_fileres in
255886dafe34Smrg  *ar\ archive\ import\ library*) # definitely import
255986dafe34Smrg    win32_libid_type="x86 archive import"
256086dafe34Smrg    ;;
256186dafe34Smrg  *ar\ archive*) # could be an import, or static
256286dafe34Smrg    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
256386dafe34Smrg       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
256486dafe34Smrg      win32_nmres=`eval $NM -f posix -A $1 |
256586dafe34Smrg	$SED -n -e '
256686dafe34Smrg	    1,100{
256786dafe34Smrg		/ I /{
256886dafe34Smrg		    s,.*,import,
256986dafe34Smrg		    p
257086dafe34Smrg		    q
257186dafe34Smrg		}
257286dafe34Smrg	    }'`
257386dafe34Smrg      case $win32_nmres in
257486dafe34Smrg      import*)  win32_libid_type="x86 archive import";;
257586dafe34Smrg      *)        win32_libid_type="x86 archive static";;
257686dafe34Smrg      esac
257786dafe34Smrg    fi
257886dafe34Smrg    ;;
257986dafe34Smrg  *DLL*)
258086dafe34Smrg    win32_libid_type="x86 DLL"
258186dafe34Smrg    ;;
258286dafe34Smrg  *executable*) # but shell scripts are "executable" too...
258386dafe34Smrg    case $win32_fileres in
258486dafe34Smrg    *MS\ Windows\ PE\ Intel*)
258586dafe34Smrg      win32_libid_type="x86 DLL"
258686dafe34Smrg      ;;
258786dafe34Smrg    esac
258886dafe34Smrg    ;;
258986dafe34Smrg  esac
259086dafe34Smrg  $ECHO "$win32_libid_type"
259186dafe34Smrg}
259276888252Smrg
259376888252Smrg
259476888252Smrg
259586dafe34Smrg# func_extract_an_archive dir oldlib
259686dafe34Smrgfunc_extract_an_archive ()
259786dafe34Smrg{
259886dafe34Smrg    $opt_debug
259986dafe34Smrg    f_ex_an_ar_dir="$1"; shift
260086dafe34Smrg    f_ex_an_ar_oldlib="$1"
260186dafe34Smrg    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
260286dafe34Smrg    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
260386dafe34Smrg     :
260486dafe34Smrg    else
260586dafe34Smrg      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
260686dafe34Smrg    fi
260786dafe34Smrg}
260876888252Smrg
260976888252Smrg
261086dafe34Smrg# func_extract_archives gentop oldlib ...
261186dafe34Smrgfunc_extract_archives ()
261286dafe34Smrg{
261386dafe34Smrg    $opt_debug
261486dafe34Smrg    my_gentop="$1"; shift
261586dafe34Smrg    my_oldlibs=${1+"$@"}
261686dafe34Smrg    my_oldobjs=""
261786dafe34Smrg    my_xlib=""
261886dafe34Smrg    my_xabs=""
261986dafe34Smrg    my_xdir=""
262076888252Smrg
262186dafe34Smrg    for my_xlib in $my_oldlibs; do
262286dafe34Smrg      # Extract the objects.
262386dafe34Smrg      case $my_xlib in
262486dafe34Smrg	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
262586dafe34Smrg	*) my_xabs=`pwd`"/$my_xlib" ;;
262686dafe34Smrg      esac
262786dafe34Smrg      func_basename "$my_xlib"
262886dafe34Smrg      my_xlib="$func_basename_result"
262986dafe34Smrg      my_xlib_u=$my_xlib
263086dafe34Smrg      while :; do
263186dafe34Smrg        case " $extracted_archives " in
263286dafe34Smrg	*" $my_xlib_u "*)
263386dafe34Smrg	  func_arith $extracted_serial + 1
263486dafe34Smrg	  extracted_serial=$func_arith_result
263586dafe34Smrg	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
263686dafe34Smrg	*) break ;;
263786dafe34Smrg	esac
263886dafe34Smrg      done
263986dafe34Smrg      extracted_archives="$extracted_archives $my_xlib_u"
264086dafe34Smrg      my_xdir="$my_gentop/$my_xlib_u"
264176888252Smrg
264286dafe34Smrg      func_mkdir_p "$my_xdir"
264376888252Smrg
264486dafe34Smrg      case $host in
264586dafe34Smrg      *-darwin*)
264686dafe34Smrg	func_verbose "Extracting $my_xabs"
264786dafe34Smrg	# Do not bother doing anything if just a dry run
264886dafe34Smrg	$opt_dry_run || {
264986dafe34Smrg	  darwin_orig_dir=`pwd`
265086dafe34Smrg	  cd $my_xdir || exit $?
265186dafe34Smrg	  darwin_archive=$my_xabs
265286dafe34Smrg	  darwin_curdir=`pwd`
265386dafe34Smrg	  darwin_base_archive=`basename "$darwin_archive"`
265486dafe34Smrg	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
265586dafe34Smrg	  if test -n "$darwin_arches"; then
265686dafe34Smrg	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
265786dafe34Smrg	    darwin_arch=
265886dafe34Smrg	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
265986dafe34Smrg	    for darwin_arch in  $darwin_arches ; do
266086dafe34Smrg	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
266186dafe34Smrg	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
266286dafe34Smrg	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
266386dafe34Smrg	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
266486dafe34Smrg	      cd "$darwin_curdir"
266586dafe34Smrg	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
266686dafe34Smrg	    done # $darwin_arches
266786dafe34Smrg            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
266886dafe34Smrg	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
266986dafe34Smrg	    darwin_file=
267086dafe34Smrg	    darwin_files=
267186dafe34Smrg	    for darwin_file in $darwin_filelist; do
267286dafe34Smrg	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
267386dafe34Smrg	      $LIPO -create -output "$darwin_file" $darwin_files
267486dafe34Smrg	    done # $darwin_filelist
267586dafe34Smrg	    $RM -rf unfat-$$
267686dafe34Smrg	    cd "$darwin_orig_dir"
267786dafe34Smrg	  else
267886dafe34Smrg	    cd $darwin_orig_dir
267986dafe34Smrg	    func_extract_an_archive "$my_xdir" "$my_xabs"
268086dafe34Smrg	  fi # $darwin_arches
268186dafe34Smrg	} # !$opt_dry_run
268286dafe34Smrg	;;
268386dafe34Smrg      *)
268486dafe34Smrg        func_extract_an_archive "$my_xdir" "$my_xabs"
268586dafe34Smrg	;;
268676888252Smrg      esac
268786dafe34Smrg      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
268886dafe34Smrg    done
268976888252Smrg
269086dafe34Smrg    func_extract_archives_result="$my_oldobjs"
269186dafe34Smrg}
269276888252Smrg
269376888252Smrg
269476888252Smrg
269586dafe34Smrg# func_emit_wrapper_part1 [arg=no]
269686dafe34Smrg#
269786dafe34Smrg# Emit the first part of a libtool wrapper script on stdout.
269886dafe34Smrg# For more information, see the description associated with
269986dafe34Smrg# func_emit_wrapper(), below.
270086dafe34Smrgfunc_emit_wrapper_part1 ()
270186dafe34Smrg{
270286dafe34Smrg	func_emit_wrapper_part1_arg1=no
270386dafe34Smrg	if test -n "$1" ; then
270486dafe34Smrg	  func_emit_wrapper_part1_arg1=$1
270576888252Smrg	fi
270676888252Smrg
270786dafe34Smrg	$ECHO "\
270886dafe34Smrg#! $SHELL
270976888252Smrg
271086dafe34Smrg# $output - temporary wrapper script for $objdir/$outputname
271186dafe34Smrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
271286dafe34Smrg#
271386dafe34Smrg# The $output program cannot be directly executed until all the libtool
271486dafe34Smrg# libraries that it depends on are installed.
271586dafe34Smrg#
271686dafe34Smrg# This wrapper script should never be moved out of the build directory.
271786dafe34Smrg# If it is, it will not operate correctly.
271876888252Smrg
271986dafe34Smrg# Sed substitution that helps us do robust quoting.  It backslashifies
272086dafe34Smrg# metacharacters that are still active within double-quoted strings.
272186dafe34SmrgXsed='${SED} -e 1s/^X//'
272286dafe34Smrgsed_quote_subst='$sed_quote_subst'
272376888252Smrg
272486dafe34Smrg# Be Bourne compatible
272586dafe34Smrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
272686dafe34Smrg  emulate sh
272786dafe34Smrg  NULLCMD=:
272886dafe34Smrg  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
272986dafe34Smrg  # is contrary to our usage.  Disable this feature.
273086dafe34Smrg  alias -g '\${1+\"\$@\"}'='\"\$@\"'
273186dafe34Smrg  setopt NO_GLOB_SUBST
273286dafe34Smrgelse
273386dafe34Smrg  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
273486dafe34Smrgfi
273586dafe34SmrgBIN_SH=xpg4; export BIN_SH # for Tru64
273686dafe34SmrgDUALCASE=1; export DUALCASE # for MKS sh
273776888252Smrg
273886dafe34Smrg# The HP-UX ksh and POSIX shell print the target directory to stdout
273986dafe34Smrg# if CDPATH is set.
274086dafe34Smrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
274176888252Smrg
274286dafe34Smrgrelink_command=\"$relink_command\"
274376888252Smrg
274486dafe34Smrg# This environment variable determines our operation mode.
274586dafe34Smrgif test \"\$libtool_install_magic\" = \"$magic\"; then
274686dafe34Smrg  # install mode needs the following variables:
274786dafe34Smrg  generated_by_libtool_version='$macro_version'
274886dafe34Smrg  notinst_deplibs='$notinst_deplibs'
274986dafe34Smrgelse
275086dafe34Smrg  # When we are sourced in execute mode, \$file and \$ECHO are already set.
275186dafe34Smrg  if test \"\$libtool_execute_magic\" != \"$magic\"; then
275286dafe34Smrg    ECHO=\"$qecho\"
275386dafe34Smrg    file=\"\$0\"
275486dafe34Smrg    # Make sure echo works.
275586dafe34Smrg    if test \"X\$1\" = X--no-reexec; then
275686dafe34Smrg      # Discard the --no-reexec flag, and continue.
275786dafe34Smrg      shift
275886dafe34Smrg    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
275986dafe34Smrg      # Yippee, \$ECHO works!
276086dafe34Smrg      :
276186dafe34Smrg    else
276286dafe34Smrg      # Restart under the correct shell, and then maybe \$ECHO will work.
276386dafe34Smrg      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
276486dafe34Smrg    fi
276586dafe34Smrg  fi\
276686dafe34Smrg"
276786dafe34Smrg	$ECHO "\
276876888252Smrg
276986dafe34Smrg  # Find the directory that this script lives in.
277086dafe34Smrg  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
277186dafe34Smrg  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
277276888252Smrg
277386dafe34Smrg  # Follow symbolic links until we get to the real thisdir.
277486dafe34Smrg  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
277586dafe34Smrg  while test -n \"\$file\"; do
277686dafe34Smrg    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
277776888252Smrg
277886dafe34Smrg    # If there was a directory component, then change thisdir.
277986dafe34Smrg    if test \"x\$destdir\" != \"x\$file\"; then
278086dafe34Smrg      case \"\$destdir\" in
278186dafe34Smrg      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
278286dafe34Smrg      *) thisdir=\"\$thisdir/\$destdir\" ;;
278386dafe34Smrg      esac
278486dafe34Smrg    fi
278576888252Smrg
278686dafe34Smrg    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
278786dafe34Smrg    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
278886dafe34Smrg  done
278986dafe34Smrg"
279086dafe34Smrg}
279186dafe34Smrg# end: func_emit_wrapper_part1
279276888252Smrg
279386dafe34Smrg# func_emit_wrapper_part2 [arg=no]
279486dafe34Smrg#
279586dafe34Smrg# Emit the second part of a libtool wrapper script on stdout.
279686dafe34Smrg# For more information, see the description associated with
279786dafe34Smrg# func_emit_wrapper(), below.
279886dafe34Smrgfunc_emit_wrapper_part2 ()
279986dafe34Smrg{
280086dafe34Smrg	func_emit_wrapper_part2_arg1=no
280186dafe34Smrg	if test -n "$1" ; then
280286dafe34Smrg	  func_emit_wrapper_part2_arg1=$1
280386dafe34Smrg	fi
280476888252Smrg
280586dafe34Smrg	$ECHO "\
280676888252Smrg
280786dafe34Smrg  # Usually 'no', except on cygwin/mingw when embedded into
280886dafe34Smrg  # the cwrapper.
280986dafe34Smrg  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
281086dafe34Smrg  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
281186dafe34Smrg    # special case for '.'
281286dafe34Smrg    if test \"\$thisdir\" = \".\"; then
281386dafe34Smrg      thisdir=\`pwd\`
281486dafe34Smrg    fi
281586dafe34Smrg    # remove .libs from thisdir
281686dafe34Smrg    case \"\$thisdir\" in
281786dafe34Smrg    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
281886dafe34Smrg    $objdir )   thisdir=. ;;
281986dafe34Smrg    esac
282086dafe34Smrg  fi
282176888252Smrg
282286dafe34Smrg  # Try to get the absolute directory name.
282386dafe34Smrg  absdir=\`cd \"\$thisdir\" && pwd\`
282486dafe34Smrg  test -n \"\$absdir\" && thisdir=\"\$absdir\"
282586dafe34Smrg"
282676888252Smrg
282786dafe34Smrg	if test "$fast_install" = yes; then
282886dafe34Smrg	  $ECHO "\
282986dafe34Smrg  program=lt-'$outputname'$exeext
283086dafe34Smrg  progdir=\"\$thisdir/$objdir\"
283176888252Smrg
283286dafe34Smrg  if test ! -f \"\$progdir/\$program\" ||
283386dafe34Smrg     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
283486dafe34Smrg       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
283576888252Smrg
283686dafe34Smrg    file=\"\$\$-\$program\"
283776888252Smrg
283886dafe34Smrg    if test ! -d \"\$progdir\"; then
283986dafe34Smrg      $MKDIR \"\$progdir\"
284086dafe34Smrg    else
284186dafe34Smrg      $RM \"\$progdir/\$file\"
284286dafe34Smrg    fi"
284376888252Smrg
284486dafe34Smrg	  $ECHO "\
284576888252Smrg
284686dafe34Smrg    # relink executable if necessary
284786dafe34Smrg    if test -n \"\$relink_command\"; then
284886dafe34Smrg      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
284986dafe34Smrg      else
285086dafe34Smrg	$ECHO \"\$relink_command_output\" >&2
285186dafe34Smrg	$RM \"\$progdir/\$file\"
285286dafe34Smrg	exit 1
285386dafe34Smrg      fi
285486dafe34Smrg    fi
285576888252Smrg
285686dafe34Smrg    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
285786dafe34Smrg    { $RM \"\$progdir/\$program\";
285886dafe34Smrg      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
285986dafe34Smrg    $RM \"\$progdir/\$file\"
286086dafe34Smrg  fi"
286186dafe34Smrg	else
286286dafe34Smrg	  $ECHO "\
286386dafe34Smrg  program='$outputname'
286486dafe34Smrg  progdir=\"\$thisdir/$objdir\"
286586dafe34Smrg"
286686dafe34Smrg	fi
286776888252Smrg
286886dafe34Smrg	$ECHO "\
286976888252Smrg
287086dafe34Smrg  if test -f \"\$progdir/\$program\"; then"
287176888252Smrg
287286dafe34Smrg	# Export our shlibpath_var if we have one.
287386dafe34Smrg	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
287486dafe34Smrg	  $ECHO "\
287586dafe34Smrg    # Add our own library path to $shlibpath_var
287686dafe34Smrg    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
287776888252Smrg
287886dafe34Smrg    # Some systems cannot cope with colon-terminated $shlibpath_var
287986dafe34Smrg    # The second colon is a workaround for a bug in BeOS R4 sed
288086dafe34Smrg    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
288176888252Smrg
288286dafe34Smrg    export $shlibpath_var
288386dafe34Smrg"
288476888252Smrg	fi
288576888252Smrg
288686dafe34Smrg	# fixup the dll searchpath if we need to.
288786dafe34Smrg	if test -n "$dllsearchpath"; then
288886dafe34Smrg	  $ECHO "\
288986dafe34Smrg    # Add the dll search path components to the executable PATH
289086dafe34Smrg    PATH=$dllsearchpath:\$PATH
289186dafe34Smrg"
289276888252Smrg	fi
289376888252Smrg
289486dafe34Smrg	$ECHO "\
289586dafe34Smrg    if test \"\$libtool_execute_magic\" != \"$magic\"; then
289686dafe34Smrg      # Run the actual program with our arguments.
289786dafe34Smrg"
289886dafe34Smrg	case $host in
289986dafe34Smrg	# Backslashes separate directories on plain windows
290086dafe34Smrg	*-*-mingw | *-*-os2* | *-cegcc*)
290186dafe34Smrg	  $ECHO "\
290286dafe34Smrg      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
290386dafe34Smrg"
290486dafe34Smrg	  ;;
290586dafe34Smrg
290686dafe34Smrg	*)
290786dafe34Smrg	  $ECHO "\
290886dafe34Smrg      exec \"\$progdir/\$program\" \${1+\"\$@\"}
290986dafe34Smrg"
291086dafe34Smrg	  ;;
291186dafe34Smrg	esac
291286dafe34Smrg	$ECHO "\
291386dafe34Smrg      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
291486dafe34Smrg      exit 1
291586dafe34Smrg    fi
291686dafe34Smrg  else
291786dafe34Smrg    # The program doesn't exist.
291886dafe34Smrg    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
291986dafe34Smrg    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
292086dafe34Smrg    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
292186dafe34Smrg    exit 1
292286dafe34Smrg  fi
292386dafe34Smrgfi\
292486dafe34Smrg"
292586dafe34Smrg}
292686dafe34Smrg# end: func_emit_wrapper_part2
292786dafe34Smrg
292886dafe34Smrg
292986dafe34Smrg# func_emit_wrapper [arg=no]
293086dafe34Smrg#
293186dafe34Smrg# Emit a libtool wrapper script on stdout.
293286dafe34Smrg# Don't directly open a file because we may want to
293386dafe34Smrg# incorporate the script contents within a cygwin/mingw
293486dafe34Smrg# wrapper executable.  Must ONLY be called from within
293586dafe34Smrg# func_mode_link because it depends on a number of variables
293686dafe34Smrg# set therein.
293786dafe34Smrg#
293886dafe34Smrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
293986dafe34Smrg# variable will take.  If 'yes', then the emitted script
294086dafe34Smrg# will assume that the directory in which it is stored is
294186dafe34Smrg# the $objdir directory.  This is a cygwin/mingw-specific
294286dafe34Smrg# behavior.
294386dafe34Smrgfunc_emit_wrapper ()
294486dafe34Smrg{
294586dafe34Smrg	func_emit_wrapper_arg1=no
294686dafe34Smrg	if test -n "$1" ; then
294786dafe34Smrg	  func_emit_wrapper_arg1=$1
294876888252Smrg	fi
294976888252Smrg
295086dafe34Smrg	# split this up so that func_emit_cwrapperexe_src
295186dafe34Smrg	# can call each part independently.
295286dafe34Smrg	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
295386dafe34Smrg	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
295486dafe34Smrg}
295576888252Smrg
295676888252Smrg
295786dafe34Smrg# func_to_host_path arg
295886dafe34Smrg#
295986dafe34Smrg# Convert paths to host format when used with build tools.
296086dafe34Smrg# Intended for use with "native" mingw (where libtool itself
296186dafe34Smrg# is running under the msys shell), or in the following cross-
296286dafe34Smrg# build environments:
296386dafe34Smrg#    $build          $host
296486dafe34Smrg#    mingw (msys)    mingw  [e.g. native]
296586dafe34Smrg#    cygwin          mingw
296686dafe34Smrg#    *nix + wine     mingw
296786dafe34Smrg# where wine is equipped with the `winepath' executable.
296886dafe34Smrg# In the native mingw case, the (msys) shell automatically
296986dafe34Smrg# converts paths for any non-msys applications it launches,
297086dafe34Smrg# but that facility isn't available from inside the cwrapper.
297186dafe34Smrg# Similar accommodations are necessary for $host mingw and
297286dafe34Smrg# $build cygwin.  Calling this function does no harm for other
297386dafe34Smrg# $host/$build combinations not listed above.
297486dafe34Smrg#
297586dafe34Smrg# ARG is the path (on $build) that should be converted to
297686dafe34Smrg# the proper representation for $host. The result is stored
297786dafe34Smrg# in $func_to_host_path_result.
297886dafe34Smrgfunc_to_host_path ()
297986dafe34Smrg{
298086dafe34Smrg  func_to_host_path_result="$1"
298186dafe34Smrg  if test -n "$1" ; then
298286dafe34Smrg    case $host in
298386dafe34Smrg      *mingw* )
298486dafe34Smrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
298586dafe34Smrg        case $build in
298686dafe34Smrg          *mingw* ) # actually, msys
298786dafe34Smrg            # awkward: cmd appends spaces to result
298886dafe34Smrg            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
298986dafe34Smrg            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
299086dafe34Smrg              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
299186dafe34Smrg            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
299286dafe34Smrg              $SED -e "$lt_sed_naive_backslashify"`
299386dafe34Smrg            ;;
299486dafe34Smrg          *cygwin* )
299586dafe34Smrg            func_to_host_path_tmp1=`cygpath -w "$1"`
299686dafe34Smrg            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
299786dafe34Smrg              $SED -e "$lt_sed_naive_backslashify"`
299886dafe34Smrg            ;;
299986dafe34Smrg          * )
300086dafe34Smrg            # Unfortunately, winepath does not exit with a non-zero
300186dafe34Smrg            # error code, so we are forced to check the contents of
300286dafe34Smrg            # stdout. On the other hand, if the command is not
300386dafe34Smrg            # found, the shell will set an exit code of 127 and print
300486dafe34Smrg            # *an error message* to stdout. So we must check for both
300586dafe34Smrg            # error code of zero AND non-empty stdout, which explains
300686dafe34Smrg            # the odd construction:
300786dafe34Smrg            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
300886dafe34Smrg            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
300986dafe34Smrg              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
301086dafe34Smrg                $SED -e "$lt_sed_naive_backslashify"`
301186dafe34Smrg            else
301286dafe34Smrg              # Allow warning below.
301386dafe34Smrg              func_to_host_path_result=""
301486dafe34Smrg            fi
301586dafe34Smrg            ;;
301686dafe34Smrg        esac
301786dafe34Smrg        if test -z "$func_to_host_path_result" ; then
301886dafe34Smrg          func_error "Could not determine host path corresponding to"
301986dafe34Smrg          func_error "  '$1'"
302086dafe34Smrg          func_error "Continuing, but uninstalled executables may not work."
302186dafe34Smrg          # Fallback:
302286dafe34Smrg          func_to_host_path_result="$1"
302386dafe34Smrg        fi
302486dafe34Smrg        ;;
302586dafe34Smrg    esac
302686dafe34Smrg  fi
302786dafe34Smrg}
302886dafe34Smrg# end: func_to_host_path
302976888252Smrg
303086dafe34Smrg# func_to_host_pathlist arg
303186dafe34Smrg#
303286dafe34Smrg# Convert pathlists to host format when used with build tools.
303386dafe34Smrg# See func_to_host_path(), above. This function supports the
303486dafe34Smrg# following $build/$host combinations (but does no harm for
303586dafe34Smrg# combinations not listed here):
303686dafe34Smrg#    $build          $host
303786dafe34Smrg#    mingw (msys)    mingw  [e.g. native]
303886dafe34Smrg#    cygwin          mingw
303986dafe34Smrg#    *nix + wine     mingw
304086dafe34Smrg#
304186dafe34Smrg# Path separators are also converted from $build format to
304286dafe34Smrg# $host format. If ARG begins or ends with a path separator
304386dafe34Smrg# character, it is preserved (but converted to $host format)
304486dafe34Smrg# on output.
304586dafe34Smrg#
304686dafe34Smrg# ARG is a pathlist (on $build) that should be converted to
304786dafe34Smrg# the proper representation on $host. The result is stored
304886dafe34Smrg# in $func_to_host_pathlist_result.
304986dafe34Smrgfunc_to_host_pathlist ()
305086dafe34Smrg{
305186dafe34Smrg  func_to_host_pathlist_result="$1"
305286dafe34Smrg  if test -n "$1" ; then
305386dafe34Smrg    case $host in
305486dafe34Smrg      *mingw* )
305586dafe34Smrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
305686dafe34Smrg        # Remove leading and trailing path separator characters from
305786dafe34Smrg        # ARG. msys behavior is inconsistent here, cygpath turns them
305886dafe34Smrg        # into '.;' and ';.', and winepath ignores them completely.
305986dafe34Smrg        func_to_host_pathlist_tmp2="$1"
306086dafe34Smrg        # Once set for this call, this variable should not be
306186dafe34Smrg        # reassigned. It is used in tha fallback case.
306286dafe34Smrg        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
306386dafe34Smrg          $SED -e 's|^:*||' -e 's|:*$||'`
306486dafe34Smrg        case $build in
306586dafe34Smrg          *mingw* ) # Actually, msys.
306686dafe34Smrg            # Awkward: cmd appends spaces to result.
306786dafe34Smrg            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
306886dafe34Smrg            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
306986dafe34Smrg              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
307086dafe34Smrg            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
307186dafe34Smrg              $SED -e "$lt_sed_naive_backslashify"`
307286dafe34Smrg            ;;
307386dafe34Smrg          *cygwin* )
307486dafe34Smrg            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
307586dafe34Smrg            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
307686dafe34Smrg              $SED -e "$lt_sed_naive_backslashify"`
307786dafe34Smrg            ;;
307886dafe34Smrg          * )
307986dafe34Smrg            # unfortunately, winepath doesn't convert pathlists
308086dafe34Smrg            func_to_host_pathlist_result=""
308186dafe34Smrg            func_to_host_pathlist_oldIFS=$IFS
308286dafe34Smrg            IFS=:
308386dafe34Smrg            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
308486dafe34Smrg              IFS=$func_to_host_pathlist_oldIFS
308586dafe34Smrg              if test -n "$func_to_host_pathlist_f" ; then
308686dafe34Smrg                func_to_host_path "$func_to_host_pathlist_f"
308786dafe34Smrg                if test -n "$func_to_host_path_result" ; then
308886dafe34Smrg                  if test -z "$func_to_host_pathlist_result" ; then
308986dafe34Smrg                    func_to_host_pathlist_result="$func_to_host_path_result"
309086dafe34Smrg                  else
309186dafe34Smrg                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
309286dafe34Smrg                  fi
309386dafe34Smrg                fi
309486dafe34Smrg              fi
309586dafe34Smrg              IFS=:
309686dafe34Smrg            done
309786dafe34Smrg            IFS=$func_to_host_pathlist_oldIFS
309886dafe34Smrg            ;;
309986dafe34Smrg        esac
310086dafe34Smrg        if test -z "$func_to_host_pathlist_result" ; then
310186dafe34Smrg          func_error "Could not determine the host path(s) corresponding to"
310286dafe34Smrg          func_error "  '$1'"
310386dafe34Smrg          func_error "Continuing, but uninstalled executables may not work."
310486dafe34Smrg          # Fallback. This may break if $1 contains DOS-style drive
310586dafe34Smrg          # specifications. The fix is not to complicate the expression
310686dafe34Smrg          # below, but for the user to provide a working wine installation
310786dafe34Smrg          # with winepath so that path translation in the cross-to-mingw
310886dafe34Smrg          # case works properly.
310986dafe34Smrg          lt_replace_pathsep_nix_to_dos="s|:|;|g"
311086dafe34Smrg          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
311186dafe34Smrg            $SED -e "$lt_replace_pathsep_nix_to_dos"`
311286dafe34Smrg        fi
311386dafe34Smrg        # Now, add the leading and trailing path separators back
311486dafe34Smrg        case "$1" in
311586dafe34Smrg          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
311686dafe34Smrg            ;;
311786dafe34Smrg        esac
311886dafe34Smrg        case "$1" in
311986dafe34Smrg          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
312086dafe34Smrg            ;;
312186dafe34Smrg        esac
312286dafe34Smrg        ;;
312386dafe34Smrg    esac
312486dafe34Smrg  fi
312586dafe34Smrg}
312686dafe34Smrg# end: func_to_host_pathlist
312776888252Smrg
312886dafe34Smrg# func_emit_cwrapperexe_src
312986dafe34Smrg# emit the source code for a wrapper executable on stdout
313086dafe34Smrg# Must ONLY be called from within func_mode_link because
313186dafe34Smrg# it depends on a number of variable set therein.
313286dafe34Smrgfunc_emit_cwrapperexe_src ()
313386dafe34Smrg{
313486dafe34Smrg	cat <<EOF
313576888252Smrg
313686dafe34Smrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
313786dafe34Smrg   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
313876888252Smrg
313986dafe34Smrg   The $output program cannot be directly executed until all the libtool
314086dafe34Smrg   libraries that it depends on are installed.
314176888252Smrg
314286dafe34Smrg   This wrapper executable should never be moved out of the build directory.
314386dafe34Smrg   If it is, it will not operate correctly.
314486dafe34Smrg
314586dafe34Smrg   Currently, it simply execs the wrapper *script* "$SHELL $output",
314686dafe34Smrg   but could eventually absorb all of the scripts functionality and
314786dafe34Smrg   exec $objdir/$outputname directly.
314886dafe34Smrg*/
314986dafe34SmrgEOF
315086dafe34Smrg	    cat <<"EOF"
315186dafe34Smrg#include <stdio.h>
315286dafe34Smrg#include <stdlib.h>
315386dafe34Smrg#ifdef _MSC_VER
315486dafe34Smrg# include <direct.h>
315586dafe34Smrg# include <process.h>
315686dafe34Smrg# include <io.h>
315786dafe34Smrg# define setmode _setmode
315886dafe34Smrg#else
315986dafe34Smrg# include <unistd.h>
316086dafe34Smrg# include <stdint.h>
316186dafe34Smrg# ifdef __CYGWIN__
316286dafe34Smrg#  include <io.h>
316386dafe34Smrg#  define HAVE_SETENV
316486dafe34Smrg#  ifdef __STRICT_ANSI__
316586dafe34Smrgchar *realpath (const char *, char *);
316686dafe34Smrgint putenv (char *);
316786dafe34Smrgint setenv (const char *, const char *, int);
316886dafe34Smrg#  endif
316986dafe34Smrg# endif
317086dafe34Smrg#endif
317186dafe34Smrg#include <malloc.h>
317286dafe34Smrg#include <stdarg.h>
317386dafe34Smrg#include <assert.h>
317486dafe34Smrg#include <string.h>
317586dafe34Smrg#include <ctype.h>
317686dafe34Smrg#include <errno.h>
317786dafe34Smrg#include <fcntl.h>
317886dafe34Smrg#include <sys/stat.h>
317986dafe34Smrg
318086dafe34Smrg#if defined(PATH_MAX)
318186dafe34Smrg# define LT_PATHMAX PATH_MAX
318286dafe34Smrg#elif defined(MAXPATHLEN)
318386dafe34Smrg# define LT_PATHMAX MAXPATHLEN
318486dafe34Smrg#else
318586dafe34Smrg# define LT_PATHMAX 1024
318686dafe34Smrg#endif
318786dafe34Smrg
318886dafe34Smrg#ifndef S_IXOTH
318986dafe34Smrg# define S_IXOTH 0
319086dafe34Smrg#endif
319186dafe34Smrg#ifndef S_IXGRP
319286dafe34Smrg# define S_IXGRP 0
319386dafe34Smrg#endif
319486dafe34Smrg
319586dafe34Smrg#ifdef _MSC_VER
319686dafe34Smrg# define S_IXUSR _S_IEXEC
319786dafe34Smrg# define stat _stat
319886dafe34Smrg# ifndef _INTPTR_T_DEFINED
319986dafe34Smrg#  define intptr_t int
320086dafe34Smrg# endif
320186dafe34Smrg#endif
320286dafe34Smrg
320386dafe34Smrg#ifndef DIR_SEPARATOR
320486dafe34Smrg# define DIR_SEPARATOR '/'
320586dafe34Smrg# define PATH_SEPARATOR ':'
320686dafe34Smrg#endif
320786dafe34Smrg
320886dafe34Smrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
320986dafe34Smrg  defined (__OS2__)
321086dafe34Smrg# define HAVE_DOS_BASED_FILE_SYSTEM
321186dafe34Smrg# define FOPEN_WB "wb"
321286dafe34Smrg# ifndef DIR_SEPARATOR_2
321386dafe34Smrg#  define DIR_SEPARATOR_2 '\\'
321486dafe34Smrg# endif
321586dafe34Smrg# ifndef PATH_SEPARATOR_2
321686dafe34Smrg#  define PATH_SEPARATOR_2 ';'
321786dafe34Smrg# endif
321886dafe34Smrg#endif
321986dafe34Smrg
322086dafe34Smrg#ifndef DIR_SEPARATOR_2
322186dafe34Smrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
322286dafe34Smrg#else /* DIR_SEPARATOR_2 */
322386dafe34Smrg# define IS_DIR_SEPARATOR(ch) \
322486dafe34Smrg	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
322586dafe34Smrg#endif /* DIR_SEPARATOR_2 */
322686dafe34Smrg
322786dafe34Smrg#ifndef PATH_SEPARATOR_2
322886dafe34Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
322986dafe34Smrg#else /* PATH_SEPARATOR_2 */
323086dafe34Smrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
323186dafe34Smrg#endif /* PATH_SEPARATOR_2 */
323286dafe34Smrg
323386dafe34Smrg#ifdef __CYGWIN__
323486dafe34Smrg# define FOPEN_WB "wb"
323586dafe34Smrg#endif
323686dafe34Smrg
323786dafe34Smrg#ifndef FOPEN_WB
323886dafe34Smrg# define FOPEN_WB "w"
323986dafe34Smrg#endif
324086dafe34Smrg#ifndef _O_BINARY
324186dafe34Smrg# define _O_BINARY 0
324286dafe34Smrg#endif
324386dafe34Smrg
324486dafe34Smrg#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
324586dafe34Smrg#define XFREE(stale) do { \
324686dafe34Smrg  if (stale) { free ((void *) stale); stale = 0; } \
324786dafe34Smrg} while (0)
324886dafe34Smrg
324986dafe34Smrg#undef LTWRAPPER_DEBUGPRINTF
325086dafe34Smrg#if defined DEBUGWRAPPER
325186dafe34Smrg# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
325286dafe34Smrgstatic void
325386dafe34Smrgltwrapper_debugprintf (const char *fmt, ...)
325486dafe34Smrg{
325586dafe34Smrg    va_list args;
325686dafe34Smrg    va_start (args, fmt);
325786dafe34Smrg    (void) vfprintf (stderr, fmt, args);
325886dafe34Smrg    va_end (args);
325986dafe34Smrg}
326086dafe34Smrg#else
326186dafe34Smrg# define LTWRAPPER_DEBUGPRINTF(args)
326286dafe34Smrg#endif
326386dafe34Smrg
326486dafe34Smrgconst char *program_name = NULL;
326586dafe34Smrg
326686dafe34Smrgvoid *xmalloc (size_t num);
326786dafe34Smrgchar *xstrdup (const char *string);
326886dafe34Smrgconst char *base_name (const char *name);
326986dafe34Smrgchar *find_executable (const char *wrapper);
327086dafe34Smrgchar *chase_symlinks (const char *pathspec);
327186dafe34Smrgint make_executable (const char *path);
327286dafe34Smrgint check_executable (const char *path);
327386dafe34Smrgchar *strendzap (char *str, const char *pat);
327486dafe34Smrgvoid lt_fatal (const char *message, ...);
327586dafe34Smrgvoid lt_setenv (const char *name, const char *value);
327686dafe34Smrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
327786dafe34Smrgvoid lt_opt_process_env_set (const char *arg);
327886dafe34Smrgvoid lt_opt_process_env_prepend (const char *arg);
327986dafe34Smrgvoid lt_opt_process_env_append (const char *arg);
328086dafe34Smrgint lt_split_name_value (const char *arg, char** name, char** value);
328186dafe34Smrgvoid lt_update_exe_path (const char *name, const char *value);
328286dafe34Smrgvoid lt_update_lib_path (const char *name, const char *value);
328386dafe34Smrg
328486dafe34Smrgstatic const char *script_text_part1 =
328586dafe34SmrgEOF
328686dafe34Smrg
328786dafe34Smrg	    func_emit_wrapper_part1 yes |
328886dafe34Smrg	        $SED -e 's/\([\\"]\)/\\\1/g' \
328986dafe34Smrg	             -e 's/^/  "/' -e 's/$/\\n"/'
329086dafe34Smrg	    echo ";"
329186dafe34Smrg	    cat <<EOF
329286dafe34Smrg
329386dafe34Smrgstatic const char *script_text_part2 =
329486dafe34SmrgEOF
329586dafe34Smrg	    func_emit_wrapper_part2 yes |
329686dafe34Smrg	        $SED -e 's/\([\\"]\)/\\\1/g' \
329786dafe34Smrg	             -e 's/^/  "/' -e 's/$/\\n"/'
329886dafe34Smrg	    echo ";"
329986dafe34Smrg
330086dafe34Smrg	    cat <<EOF
330186dafe34Smrgconst char * MAGIC_EXE = "$magic_exe";
330286dafe34Smrgconst char * LIB_PATH_VARNAME = "$shlibpath_var";
330386dafe34SmrgEOF
330486dafe34Smrg
330586dafe34Smrg	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
330686dafe34Smrg              func_to_host_pathlist "$temp_rpath"
330786dafe34Smrg	      cat <<EOF
330886dafe34Smrgconst char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
330976888252SmrgEOF
331076888252Smrg	    else
331186dafe34Smrg	      cat <<"EOF"
331286dafe34Smrgconst char * LIB_PATH_VALUE   = "";
331386dafe34SmrgEOF
331476888252Smrg	    fi
331586dafe34Smrg
331686dafe34Smrg	    if test -n "$dllsearchpath"; then
331786dafe34Smrg              func_to_host_pathlist "$dllsearchpath:"
331886dafe34Smrg	      cat <<EOF
331986dafe34Smrgconst char * EXE_PATH_VARNAME = "PATH";
332086dafe34Smrgconst char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
332186dafe34SmrgEOF
332276888252Smrg	    else
332386dafe34Smrg	      cat <<"EOF"
332486dafe34Smrgconst char * EXE_PATH_VARNAME = "";
332586dafe34Smrgconst char * EXE_PATH_VALUE   = "";
332686dafe34SmrgEOF
332776888252Smrg	    fi
332886dafe34Smrg
332986dafe34Smrg	    if test "$fast_install" = yes; then
333086dafe34Smrg	      cat <<EOF
333186dafe34Smrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
333286dafe34SmrgEOF
333376888252Smrg	    else
333486dafe34Smrg	      cat <<EOF
333586dafe34Smrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
333686dafe34SmrgEOF
333776888252Smrg	    fi
333876888252Smrg
333976888252Smrg
334086dafe34Smrg	    cat <<"EOF"
334176888252Smrg
334286dafe34Smrg#define LTWRAPPER_OPTION_PREFIX         "--lt-"
334386dafe34Smrg#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
334476888252Smrg
334586dafe34Smrgstatic const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
334686dafe34Smrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
334776888252Smrg
334886dafe34Smrgstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
334976888252Smrg
335086dafe34Smrgstatic const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
335186dafe34Smrgstatic const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
335286dafe34Smrg  /* argument is putenv-style "foo=bar", value of foo is set to bar */
335376888252Smrg
335486dafe34Smrgstatic const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
335586dafe34Smrgstatic const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
335686dafe34Smrg  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
335776888252Smrg
335886dafe34Smrgstatic const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
335986dafe34Smrgstatic const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
336086dafe34Smrg  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
336176888252Smrg
336286dafe34Smrgint
336386dafe34Smrgmain (int argc, char *argv[])
336486dafe34Smrg{
336586dafe34Smrg  char **newargz;
336686dafe34Smrg  int  newargc;
336786dafe34Smrg  char *tmp_pathspec;
336886dafe34Smrg  char *actual_cwrapper_path;
336986dafe34Smrg  char *actual_cwrapper_name;
337086dafe34Smrg  char *target_name;
337186dafe34Smrg  char *lt_argv_zero;
337286dafe34Smrg  intptr_t rval = 127;
337376888252Smrg
337486dafe34Smrg  int i;
337576888252Smrg
337686dafe34Smrg  program_name = (char *) xstrdup (base_name (argv[0]));
337786dafe34Smrg  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
337886dafe34Smrg  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
337976888252Smrg
338086dafe34Smrg  /* very simple arg parsing; don't want to rely on getopt */
338186dafe34Smrg  for (i = 1; i < argc; i++)
338286dafe34Smrg    {
338386dafe34Smrg      if (strcmp (argv[i], dumpscript_opt) == 0)
338486dafe34Smrg	{
338586dafe34SmrgEOF
338686dafe34Smrg	    case "$host" in
338786dafe34Smrg	      *mingw* | *cygwin* )
338886dafe34Smrg		# make stdout use "unix" line endings
338986dafe34Smrg		echo "          setmode(1,_O_BINARY);"
339086dafe34Smrg		;;
339186dafe34Smrg	      esac
339276888252Smrg
339386dafe34Smrg	    cat <<"EOF"
339486dafe34Smrg	  printf ("%s", script_text_part1);
339586dafe34Smrg	  printf ("%s", script_text_part2);
339686dafe34Smrg	  return 0;
339786dafe34Smrg	}
339886dafe34Smrg    }
339976888252Smrg
340086dafe34Smrg  newargz = XMALLOC (char *, argc + 1);
340186dafe34Smrg  tmp_pathspec = find_executable (argv[0]);
340286dafe34Smrg  if (tmp_pathspec == NULL)
340386dafe34Smrg    lt_fatal ("Couldn't find %s", argv[0]);
340486dafe34Smrg  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
340586dafe34Smrg			  tmp_pathspec));
340686dafe34Smrg
340786dafe34Smrg  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
340886dafe34Smrg  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
340986dafe34Smrg			  actual_cwrapper_path));
341086dafe34Smrg  XFREE (tmp_pathspec);
341186dafe34Smrg
341286dafe34Smrg  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
341386dafe34Smrg  strendzap (actual_cwrapper_path, actual_cwrapper_name);
341486dafe34Smrg
341586dafe34Smrg  /* wrapper name transforms */
341686dafe34Smrg  strendzap (actual_cwrapper_name, ".exe");
341786dafe34Smrg  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
341886dafe34Smrg  XFREE (actual_cwrapper_name);
341986dafe34Smrg  actual_cwrapper_name = tmp_pathspec;
342086dafe34Smrg  tmp_pathspec = 0;
342186dafe34Smrg
342286dafe34Smrg  /* target_name transforms -- use actual target program name; might have lt- prefix */
342386dafe34Smrg  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
342486dafe34Smrg  strendzap (target_name, ".exe");
342586dafe34Smrg  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
342686dafe34Smrg  XFREE (target_name);
342786dafe34Smrg  target_name = tmp_pathspec;
342886dafe34Smrg  tmp_pathspec = 0;
342986dafe34Smrg
343086dafe34Smrg  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
343186dafe34Smrg			  target_name));
343286dafe34SmrgEOF
343376888252Smrg
343486dafe34Smrg	    cat <<EOF
343586dafe34Smrg  newargz[0] =
343686dafe34Smrg    XMALLOC (char, (strlen (actual_cwrapper_path) +
343786dafe34Smrg		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
343886dafe34Smrg  strcpy (newargz[0], actual_cwrapper_path);
343986dafe34Smrg  strcat (newargz[0], "$objdir");
344086dafe34Smrg  strcat (newargz[0], "/");
344186dafe34SmrgEOF
344276888252Smrg
344386dafe34Smrg	    cat <<"EOF"
344486dafe34Smrg  /* stop here, and copy so we don't have to do this twice */
344586dafe34Smrg  tmp_pathspec = xstrdup (newargz[0]);
344676888252Smrg
344786dafe34Smrg  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
344886dafe34Smrg  strcat (newargz[0], actual_cwrapper_name);
344976888252Smrg
345086dafe34Smrg  /* DO want the lt- prefix here if it exists, so use target_name */
345186dafe34Smrg  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
345286dafe34Smrg  XFREE (tmp_pathspec);
345386dafe34Smrg  tmp_pathspec = NULL;
345486dafe34SmrgEOF
345576888252Smrg
345686dafe34Smrg	    case $host_os in
345786dafe34Smrg	      mingw*)
345886dafe34Smrg	    cat <<"EOF"
345986dafe34Smrg  {
346086dafe34Smrg    char* p;
346186dafe34Smrg    while ((p = strchr (newargz[0], '\\')) != NULL)
346286dafe34Smrg      {
346386dafe34Smrg	*p = '/';
346486dafe34Smrg      }
346586dafe34Smrg    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
346686dafe34Smrg      {
346786dafe34Smrg	*p = '/';
346886dafe34Smrg      }
346986dafe34Smrg  }
347086dafe34SmrgEOF
347186dafe34Smrg	    ;;
347286dafe34Smrg	    esac
347376888252Smrg
347486dafe34Smrg	    cat <<"EOF"
347586dafe34Smrg  XFREE (target_name);
347686dafe34Smrg  XFREE (actual_cwrapper_path);
347786dafe34Smrg  XFREE (actual_cwrapper_name);
347876888252Smrg
347986dafe34Smrg  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
348086dafe34Smrg  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
348186dafe34Smrg  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
348286dafe34Smrg  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
348376888252Smrg
348486dafe34Smrg  newargc=0;
348586dafe34Smrg  for (i = 1; i < argc; i++)
348686dafe34Smrg    {
348786dafe34Smrg      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
348886dafe34Smrg        {
348986dafe34Smrg          if (argv[i][env_set_opt_len] == '=')
349086dafe34Smrg            {
349186dafe34Smrg              const char *p = argv[i] + env_set_opt_len + 1;
349286dafe34Smrg              lt_opt_process_env_set (p);
349386dafe34Smrg            }
349486dafe34Smrg          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
349586dafe34Smrg            {
349686dafe34Smrg              lt_opt_process_env_set (argv[++i]); /* don't copy */
349786dafe34Smrg            }
349886dafe34Smrg          else
349986dafe34Smrg            lt_fatal ("%s missing required argument", env_set_opt);
350086dafe34Smrg          continue;
350186dafe34Smrg        }
350286dafe34Smrg      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
350386dafe34Smrg        {
350486dafe34Smrg          if (argv[i][env_prepend_opt_len] == '=')
350586dafe34Smrg            {
350686dafe34Smrg              const char *p = argv[i] + env_prepend_opt_len + 1;
350786dafe34Smrg              lt_opt_process_env_prepend (p);
350886dafe34Smrg            }
350986dafe34Smrg          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
351086dafe34Smrg            {
351186dafe34Smrg              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
351286dafe34Smrg            }
351386dafe34Smrg          else
351486dafe34Smrg            lt_fatal ("%s missing required argument", env_prepend_opt);
351586dafe34Smrg          continue;
351686dafe34Smrg        }
351786dafe34Smrg      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
351886dafe34Smrg        {
351986dafe34Smrg          if (argv[i][env_append_opt_len] == '=')
352086dafe34Smrg            {
352186dafe34Smrg              const char *p = argv[i] + env_append_opt_len + 1;
352286dafe34Smrg              lt_opt_process_env_append (p);
352386dafe34Smrg            }
352486dafe34Smrg          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
352586dafe34Smrg            {
352686dafe34Smrg              lt_opt_process_env_append (argv[++i]); /* don't copy */
352786dafe34Smrg            }
352886dafe34Smrg          else
352986dafe34Smrg            lt_fatal ("%s missing required argument", env_append_opt);
353086dafe34Smrg          continue;
353186dafe34Smrg        }
353286dafe34Smrg      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
353386dafe34Smrg        {
353486dafe34Smrg          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
353586dafe34Smrg             namespace, but it is not one of the ones we know about and
353686dafe34Smrg             have already dealt with, above (inluding dump-script), then
353786dafe34Smrg             report an error. Otherwise, targets might begin to believe
353886dafe34Smrg             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
353986dafe34Smrg             namespace. The first time any user complains about this, we'll
354086dafe34Smrg             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
354186dafe34Smrg             or a configure.ac-settable value.
354286dafe34Smrg           */
354386dafe34Smrg          lt_fatal ("Unrecognized option in %s namespace: '%s'",
354486dafe34Smrg                    ltwrapper_option_prefix, argv[i]);
354586dafe34Smrg        }
354686dafe34Smrg      /* otherwise ... */
354786dafe34Smrg      newargz[++newargc] = xstrdup (argv[i]);
354886dafe34Smrg    }
354986dafe34Smrg  newargz[++newargc] = NULL;
355076888252Smrg
355186dafe34Smrg  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
355286dafe34Smrg  for (i = 0; i < newargc; i++)
355386dafe34Smrg    {
355486dafe34Smrg      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
355586dafe34Smrg    }
355676888252Smrg
355786dafe34SmrgEOF
355876888252Smrg
355986dafe34Smrg	    case $host_os in
356086dafe34Smrg	      mingw*)
356186dafe34Smrg		cat <<"EOF"
356286dafe34Smrg  /* execv doesn't actually work on mingw as expected on unix */
356386dafe34Smrg  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
356486dafe34Smrg  if (rval == -1)
356586dafe34Smrg    {
356686dafe34Smrg      /* failed to start process */
356786dafe34Smrg      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
356886dafe34Smrg      return 127;
356986dafe34Smrg    }
357086dafe34Smrg  return rval;
357186dafe34SmrgEOF
357286dafe34Smrg		;;
357386dafe34Smrg	      *)
357486dafe34Smrg		cat <<"EOF"
357586dafe34Smrg  execv (lt_argv_zero, newargz);
357686dafe34Smrg  return rval; /* =127, but avoids unused variable warning */
357786dafe34SmrgEOF
357886dafe34Smrg		;;
357986dafe34Smrg	    esac
358076888252Smrg
358186dafe34Smrg	    cat <<"EOF"
358286dafe34Smrg}
358376888252Smrg
358486dafe34Smrgvoid *
358586dafe34Smrgxmalloc (size_t num)
358686dafe34Smrg{
358786dafe34Smrg  void *p = (void *) malloc (num);
358886dafe34Smrg  if (!p)
358986dafe34Smrg    lt_fatal ("Memory exhausted");
359076888252Smrg
359186dafe34Smrg  return p;
359286dafe34Smrg}
359376888252Smrg
359486dafe34Smrgchar *
359586dafe34Smrgxstrdup (const char *string)
359686dafe34Smrg{
359786dafe34Smrg  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
359886dafe34Smrg			  string) : NULL;
359986dafe34Smrg}
360076888252Smrg
360186dafe34Smrgconst char *
360286dafe34Smrgbase_name (const char *name)
360386dafe34Smrg{
360486dafe34Smrg  const char *base;
360576888252Smrg
360686dafe34Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
360786dafe34Smrg  /* Skip over the disk name in MSDOS pathnames. */
360886dafe34Smrg  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
360986dafe34Smrg    name += 2;
361086dafe34Smrg#endif
361176888252Smrg
361286dafe34Smrg  for (base = name; *name; name++)
361386dafe34Smrg    if (IS_DIR_SEPARATOR (*name))
361486dafe34Smrg      base = name + 1;
361586dafe34Smrg  return base;
361686dafe34Smrg}
361776888252Smrg
361886dafe34Smrgint
361986dafe34Smrgcheck_executable (const char *path)
362086dafe34Smrg{
362186dafe34Smrg  struct stat st;
362276888252Smrg
362386dafe34Smrg  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
362486dafe34Smrg			  path ? (*path ? path : "EMPTY!") : "NULL!"));
362586dafe34Smrg  if ((!path) || (!*path))
362686dafe34Smrg    return 0;
362776888252Smrg
362886dafe34Smrg  if ((stat (path, &st) >= 0)
362986dafe34Smrg      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
363086dafe34Smrg    return 1;
363186dafe34Smrg  else
363286dafe34Smrg    return 0;
363386dafe34Smrg}
363476888252Smrg
363586dafe34Smrgint
363686dafe34Smrgmake_executable (const char *path)
363786dafe34Smrg{
363886dafe34Smrg  int rval = 0;
363986dafe34Smrg  struct stat st;
364076888252Smrg
364186dafe34Smrg  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
364286dafe34Smrg			  path ? (*path ? path : "EMPTY!") : "NULL!"));
364386dafe34Smrg  if ((!path) || (!*path))
364486dafe34Smrg    return 0;
364576888252Smrg
364686dafe34Smrg  if (stat (path, &st) >= 0)
364786dafe34Smrg    {
364886dafe34Smrg      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
364986dafe34Smrg    }
365086dafe34Smrg  return rval;
365186dafe34Smrg}
365276888252Smrg
365386dafe34Smrg/* Searches for the full path of the wrapper.  Returns
365486dafe34Smrg   newly allocated full path name if found, NULL otherwise
365586dafe34Smrg   Does not chase symlinks, even on platforms that support them.
365686dafe34Smrg*/
365786dafe34Smrgchar *
365886dafe34Smrgfind_executable (const char *wrapper)
365986dafe34Smrg{
366086dafe34Smrg  int has_slash = 0;
366186dafe34Smrg  const char *p;
366286dafe34Smrg  const char *p_next;
366386dafe34Smrg  /* static buffer for getcwd */
366486dafe34Smrg  char tmp[LT_PATHMAX + 1];
366586dafe34Smrg  int tmp_len;
366686dafe34Smrg  char *concat_name;
366776888252Smrg
366886dafe34Smrg  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
366986dafe34Smrg			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
367076888252Smrg
367186dafe34Smrg  if ((wrapper == NULL) || (*wrapper == '\0'))
367286dafe34Smrg    return NULL;
367376888252Smrg
367486dafe34Smrg  /* Absolute path? */
367586dafe34Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
367686dafe34Smrg  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
367786dafe34Smrg    {
367886dafe34Smrg      concat_name = xstrdup (wrapper);
367986dafe34Smrg      if (check_executable (concat_name))
368086dafe34Smrg	return concat_name;
368186dafe34Smrg      XFREE (concat_name);
368286dafe34Smrg    }
368386dafe34Smrg  else
368486dafe34Smrg    {
368586dafe34Smrg#endif
368686dafe34Smrg      if (IS_DIR_SEPARATOR (wrapper[0]))
368786dafe34Smrg	{
368886dafe34Smrg	  concat_name = xstrdup (wrapper);
368986dafe34Smrg	  if (check_executable (concat_name))
369086dafe34Smrg	    return concat_name;
369186dafe34Smrg	  XFREE (concat_name);
369286dafe34Smrg	}
369386dafe34Smrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
369486dafe34Smrg    }
369586dafe34Smrg#endif
369676888252Smrg
369786dafe34Smrg  for (p = wrapper; *p; p++)
369886dafe34Smrg    if (*p == '/')
369986dafe34Smrg      {
370086dafe34Smrg	has_slash = 1;
370186dafe34Smrg	break;
370286dafe34Smrg      }
370386dafe34Smrg  if (!has_slash)
370486dafe34Smrg    {
370586dafe34Smrg      /* no slashes; search PATH */
370686dafe34Smrg      const char *path = getenv ("PATH");
370786dafe34Smrg      if (path != NULL)
370886dafe34Smrg	{
370986dafe34Smrg	  for (p = path; *p; p = p_next)
371086dafe34Smrg	    {
371186dafe34Smrg	      const char *q;
371286dafe34Smrg	      size_t p_len;
371386dafe34Smrg	      for (q = p; *q; q++)
371486dafe34Smrg		if (IS_PATH_SEPARATOR (*q))
371586dafe34Smrg		  break;
371686dafe34Smrg	      p_len = q - p;
371786dafe34Smrg	      p_next = (*q == '\0' ? q : q + 1);
371886dafe34Smrg	      if (p_len == 0)
371986dafe34Smrg		{
372086dafe34Smrg		  /* empty path: current directory */
372186dafe34Smrg		  if (getcwd (tmp, LT_PATHMAX) == NULL)
372286dafe34Smrg		    lt_fatal ("getcwd failed");
372386dafe34Smrg		  tmp_len = strlen (tmp);
372486dafe34Smrg		  concat_name =
372586dafe34Smrg		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
372686dafe34Smrg		  memcpy (concat_name, tmp, tmp_len);
372786dafe34Smrg		  concat_name[tmp_len] = '/';
372886dafe34Smrg		  strcpy (concat_name + tmp_len + 1, wrapper);
372986dafe34Smrg		}
373086dafe34Smrg	      else
373186dafe34Smrg		{
373286dafe34Smrg		  concat_name =
373386dafe34Smrg		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
373486dafe34Smrg		  memcpy (concat_name, p, p_len);
373586dafe34Smrg		  concat_name[p_len] = '/';
373686dafe34Smrg		  strcpy (concat_name + p_len + 1, wrapper);
373786dafe34Smrg		}
373886dafe34Smrg	      if (check_executable (concat_name))
373986dafe34Smrg		return concat_name;
374086dafe34Smrg	      XFREE (concat_name);
374186dafe34Smrg	    }
374286dafe34Smrg	}
374386dafe34Smrg      /* not found in PATH; assume curdir */
374486dafe34Smrg    }
374586dafe34Smrg  /* Relative path | not found in path: prepend cwd */
374686dafe34Smrg  if (getcwd (tmp, LT_PATHMAX) == NULL)
374786dafe34Smrg    lt_fatal ("getcwd failed");
374886dafe34Smrg  tmp_len = strlen (tmp);
374986dafe34Smrg  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
375086dafe34Smrg  memcpy (concat_name, tmp, tmp_len);
375186dafe34Smrg  concat_name[tmp_len] = '/';
375286dafe34Smrg  strcpy (concat_name + tmp_len + 1, wrapper);
375376888252Smrg
375486dafe34Smrg  if (check_executable (concat_name))
375586dafe34Smrg    return concat_name;
375686dafe34Smrg  XFREE (concat_name);
375786dafe34Smrg  return NULL;
375886dafe34Smrg}
375976888252Smrg
376086dafe34Smrgchar *
376186dafe34Smrgchase_symlinks (const char *pathspec)
376286dafe34Smrg{
376386dafe34Smrg#ifndef S_ISLNK
376486dafe34Smrg  return xstrdup (pathspec);
376586dafe34Smrg#else
376686dafe34Smrg  char buf[LT_PATHMAX];
376786dafe34Smrg  struct stat s;
376886dafe34Smrg  char *tmp_pathspec = xstrdup (pathspec);
376986dafe34Smrg  char *p;
377086dafe34Smrg  int has_symlinks = 0;
377186dafe34Smrg  while (strlen (tmp_pathspec) && !has_symlinks)
377286dafe34Smrg    {
377386dafe34Smrg      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
377486dafe34Smrg			      tmp_pathspec));
377586dafe34Smrg      if (lstat (tmp_pathspec, &s) == 0)
377686dafe34Smrg	{
377786dafe34Smrg	  if (S_ISLNK (s.st_mode) != 0)
377886dafe34Smrg	    {
377986dafe34Smrg	      has_symlinks = 1;
378086dafe34Smrg	      break;
378186dafe34Smrg	    }
378276888252Smrg
378386dafe34Smrg	  /* search backwards for last DIR_SEPARATOR */
378486dafe34Smrg	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
378586dafe34Smrg	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
378686dafe34Smrg	    p--;
378786dafe34Smrg	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
378886dafe34Smrg	    {
378986dafe34Smrg	      /* no more DIR_SEPARATORS left */
379086dafe34Smrg	      break;
379186dafe34Smrg	    }
379286dafe34Smrg	  *p = '\0';
379386dafe34Smrg	}
379486dafe34Smrg      else
379586dafe34Smrg	{
379686dafe34Smrg	  char *errstr = strerror (errno);
379786dafe34Smrg	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
379886dafe34Smrg	}
379986dafe34Smrg    }
380086dafe34Smrg  XFREE (tmp_pathspec);
380176888252Smrg
380286dafe34Smrg  if (!has_symlinks)
380386dafe34Smrg    {
380486dafe34Smrg      return xstrdup (pathspec);
380586dafe34Smrg    }
380676888252Smrg
380786dafe34Smrg  tmp_pathspec = realpath (pathspec, buf);
380886dafe34Smrg  if (tmp_pathspec == 0)
380986dafe34Smrg    {
381086dafe34Smrg      lt_fatal ("Could not follow symlinks for %s", pathspec);
381186dafe34Smrg    }
381286dafe34Smrg  return xstrdup (tmp_pathspec);
381386dafe34Smrg#endif
381486dafe34Smrg}
381576888252Smrg
381686dafe34Smrgchar *
381786dafe34Smrgstrendzap (char *str, const char *pat)
381886dafe34Smrg{
381986dafe34Smrg  size_t len, patlen;
382076888252Smrg
382186dafe34Smrg  assert (str != NULL);
382286dafe34Smrg  assert (pat != NULL);
382376888252Smrg
382486dafe34Smrg  len = strlen (str);
382586dafe34Smrg  patlen = strlen (pat);
382676888252Smrg
382786dafe34Smrg  if (patlen <= len)
382886dafe34Smrg    {
382986dafe34Smrg      str += len - patlen;
383086dafe34Smrg      if (strcmp (str, pat) == 0)
383186dafe34Smrg	*str = '\0';
383286dafe34Smrg    }
383386dafe34Smrg  return str;
383486dafe34Smrg}
383576888252Smrg
383686dafe34Smrgstatic void
383786dafe34Smrglt_error_core (int exit_status, const char *mode,
383886dafe34Smrg	       const char *message, va_list ap)
383986dafe34Smrg{
384086dafe34Smrg  fprintf (stderr, "%s: %s: ", program_name, mode);
384186dafe34Smrg  vfprintf (stderr, message, ap);
384286dafe34Smrg  fprintf (stderr, ".\n");
384376888252Smrg
384486dafe34Smrg  if (exit_status >= 0)
384586dafe34Smrg    exit (exit_status);
384686dafe34Smrg}
384776888252Smrg
384886dafe34Smrgvoid
384986dafe34Smrglt_fatal (const char *message, ...)
385086dafe34Smrg{
385186dafe34Smrg  va_list ap;
385286dafe34Smrg  va_start (ap, message);
385386dafe34Smrg  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
385486dafe34Smrg  va_end (ap);
385586dafe34Smrg}
385676888252Smrg
385786dafe34Smrgvoid
385886dafe34Smrglt_setenv (const char *name, const char *value)
385986dafe34Smrg{
386086dafe34Smrg  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
386186dafe34Smrg                          (name ? name : "<NULL>"),
386286dafe34Smrg                          (value ? value : "<NULL>")));
386386dafe34Smrg  {
386486dafe34Smrg#ifdef HAVE_SETENV
386586dafe34Smrg    /* always make a copy, for consistency with !HAVE_SETENV */
386686dafe34Smrg    char *str = xstrdup (value);
386786dafe34Smrg    setenv (name, str, 1);
386886dafe34Smrg#else
386986dafe34Smrg    int len = strlen (name) + 1 + strlen (value) + 1;
387086dafe34Smrg    char *str = XMALLOC (char, len);
387186dafe34Smrg    sprintf (str, "%s=%s", name, value);
387286dafe34Smrg    if (putenv (str) != EXIT_SUCCESS)
387386dafe34Smrg      {
387486dafe34Smrg        XFREE (str);
387586dafe34Smrg      }
387686dafe34Smrg#endif
387786dafe34Smrg  }
387886dafe34Smrg}
387976888252Smrg
388086dafe34Smrgchar *
388186dafe34Smrglt_extend_str (const char *orig_value, const char *add, int to_end)
388286dafe34Smrg{
388386dafe34Smrg  char *new_value;
388486dafe34Smrg  if (orig_value && *orig_value)
388586dafe34Smrg    {
388686dafe34Smrg      int orig_value_len = strlen (orig_value);
388786dafe34Smrg      int add_len = strlen (add);
388886dafe34Smrg      new_value = XMALLOC (char, add_len + orig_value_len + 1);
388986dafe34Smrg      if (to_end)
389086dafe34Smrg        {
389186dafe34Smrg          strcpy (new_value, orig_value);
389286dafe34Smrg          strcpy (new_value + orig_value_len, add);
389386dafe34Smrg        }
389486dafe34Smrg      else
389586dafe34Smrg        {
389686dafe34Smrg          strcpy (new_value, add);
389786dafe34Smrg          strcpy (new_value + add_len, orig_value);
389886dafe34Smrg        }
389986dafe34Smrg    }
390086dafe34Smrg  else
390186dafe34Smrg    {
390286dafe34Smrg      new_value = xstrdup (add);
390386dafe34Smrg    }
390486dafe34Smrg  return new_value;
390586dafe34Smrg}
390676888252Smrg
390786dafe34Smrgint
390886dafe34Smrglt_split_name_value (const char *arg, char** name, char** value)
390986dafe34Smrg{
391086dafe34Smrg  const char *p;
391186dafe34Smrg  int len;
391286dafe34Smrg  if (!arg || !*arg)
391386dafe34Smrg    return 1;
391476888252Smrg
391586dafe34Smrg  p = strchr (arg, (int)'=');
391676888252Smrg
391786dafe34Smrg  if (!p)
391886dafe34Smrg    return 1;
391976888252Smrg
392086dafe34Smrg  *value = xstrdup (++p);
392176888252Smrg
392286dafe34Smrg  len = strlen (arg) - strlen (*value);
392386dafe34Smrg  *name = XMALLOC (char, len);
392486dafe34Smrg  strncpy (*name, arg, len-1);
392586dafe34Smrg  (*name)[len - 1] = '\0';
392676888252Smrg
392786dafe34Smrg  return 0;
392886dafe34Smrg}
392976888252Smrg
393086dafe34Smrgvoid
393186dafe34Smrglt_opt_process_env_set (const char *arg)
393286dafe34Smrg{
393386dafe34Smrg  char *name = NULL;
393486dafe34Smrg  char *value = NULL;
393576888252Smrg
393686dafe34Smrg  if (lt_split_name_value (arg, &name, &value) != 0)
393786dafe34Smrg    {
393886dafe34Smrg      XFREE (name);
393986dafe34Smrg      XFREE (value);
394086dafe34Smrg      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
394186dafe34Smrg    }
394276888252Smrg
394386dafe34Smrg  lt_setenv (name, value);
394486dafe34Smrg  XFREE (name);
394586dafe34Smrg  XFREE (value);
394686dafe34Smrg}
394776888252Smrg
394886dafe34Smrgvoid
394986dafe34Smrglt_opt_process_env_prepend (const char *arg)
395086dafe34Smrg{
395186dafe34Smrg  char *name = NULL;
395286dafe34Smrg  char *value = NULL;
395386dafe34Smrg  char *new_value = NULL;
395476888252Smrg
395586dafe34Smrg  if (lt_split_name_value (arg, &name, &value) != 0)
395686dafe34Smrg    {
395786dafe34Smrg      XFREE (name);
395886dafe34Smrg      XFREE (value);
395986dafe34Smrg      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
396086dafe34Smrg    }
396176888252Smrg
396286dafe34Smrg  new_value = lt_extend_str (getenv (name), value, 0);
396386dafe34Smrg  lt_setenv (name, new_value);
396486dafe34Smrg  XFREE (new_value);
396586dafe34Smrg  XFREE (name);
396686dafe34Smrg  XFREE (value);
396786dafe34Smrg}
396876888252Smrg
396986dafe34Smrgvoid
397086dafe34Smrglt_opt_process_env_append (const char *arg)
397186dafe34Smrg{
397286dafe34Smrg  char *name = NULL;
397386dafe34Smrg  char *value = NULL;
397486dafe34Smrg  char *new_value = NULL;
397576888252Smrg
397686dafe34Smrg  if (lt_split_name_value (arg, &name, &value) != 0)
397786dafe34Smrg    {
397886dafe34Smrg      XFREE (name);
397986dafe34Smrg      XFREE (value);
398086dafe34Smrg      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
398186dafe34Smrg    }
398276888252Smrg
398386dafe34Smrg  new_value = lt_extend_str (getenv (name), value, 1);
398486dafe34Smrg  lt_setenv (name, new_value);
398586dafe34Smrg  XFREE (new_value);
398686dafe34Smrg  XFREE (name);
398786dafe34Smrg  XFREE (value);
398886dafe34Smrg}
398976888252Smrg
399086dafe34Smrgvoid
399186dafe34Smrglt_update_exe_path (const char *name, const char *value)
399286dafe34Smrg{
399386dafe34Smrg  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
399486dafe34Smrg                          (name ? name : "<NULL>"),
399586dafe34Smrg                          (value ? value : "<NULL>")));
399676888252Smrg
399786dafe34Smrg  if (name && *name && value && *value)
399886dafe34Smrg    {
399986dafe34Smrg      char *new_value = lt_extend_str (getenv (name), value, 0);
400086dafe34Smrg      /* some systems can't cope with a ':'-terminated path #' */
400186dafe34Smrg      int len = strlen (new_value);
400286dafe34Smrg      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
400386dafe34Smrg        {
400486dafe34Smrg          new_value[len-1] = '\0';
400586dafe34Smrg        }
400686dafe34Smrg      lt_setenv (name, new_value);
400786dafe34Smrg      XFREE (new_value);
400886dafe34Smrg    }
400986dafe34Smrg}
401076888252Smrg
401186dafe34Smrgvoid
401286dafe34Smrglt_update_lib_path (const char *name, const char *value)
401386dafe34Smrg{
401486dafe34Smrg  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
401586dafe34Smrg                          (name ? name : "<NULL>"),
401686dafe34Smrg                          (value ? value : "<NULL>")));
401776888252Smrg
401886dafe34Smrg  if (name && *name && value && *value)
401986dafe34Smrg    {
402086dafe34Smrg      char *new_value = lt_extend_str (getenv (name), value, 0);
402186dafe34Smrg      lt_setenv (name, new_value);
402286dafe34Smrg      XFREE (new_value);
402386dafe34Smrg    }
402486dafe34Smrg}
402576888252Smrg
402676888252Smrg
402786dafe34SmrgEOF
402886dafe34Smrg}
402986dafe34Smrg# end: func_emit_cwrapperexe_src
403076888252Smrg
403186dafe34Smrg# func_mode_link arg...
403286dafe34Smrgfunc_mode_link ()
403386dafe34Smrg{
403486dafe34Smrg    $opt_debug
403586dafe34Smrg    case $host in
403686dafe34Smrg    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
403786dafe34Smrg      # It is impossible to link a dll without this setting, and
403886dafe34Smrg      # we shouldn't force the makefile maintainer to figure out
403986dafe34Smrg      # which system we are compiling for in order to pass an extra
404086dafe34Smrg      # flag for every libtool invocation.
404186dafe34Smrg      # allow_undefined=no
404276888252Smrg
404386dafe34Smrg      # FIXME: Unfortunately, there are problems with the above when trying
404486dafe34Smrg      # to make a dll which has undefined symbols, in which case not
404586dafe34Smrg      # even a static library is built.  For now, we need to specify
404686dafe34Smrg      # -no-undefined on the libtool link line when we can be certain
404786dafe34Smrg      # that all symbols are satisfied, otherwise we get a static library.
404886dafe34Smrg      allow_undefined=yes
404986dafe34Smrg      ;;
405086dafe34Smrg    *)
405186dafe34Smrg      allow_undefined=yes
405286dafe34Smrg      ;;
405386dafe34Smrg    esac
405486dafe34Smrg    libtool_args=$nonopt
405586dafe34Smrg    base_compile="$nonopt $@"
405686dafe34Smrg    compile_command=$nonopt
405786dafe34Smrg    finalize_command=$nonopt
405876888252Smrg
405986dafe34Smrg    compile_rpath=
406086dafe34Smrg    finalize_rpath=
406186dafe34Smrg    compile_shlibpath=
406286dafe34Smrg    finalize_shlibpath=
406386dafe34Smrg    convenience=
406486dafe34Smrg    old_convenience=
406586dafe34Smrg    deplibs=
406686dafe34Smrg    old_deplibs=
406786dafe34Smrg    compiler_flags=
406886dafe34Smrg    linker_flags=
406986dafe34Smrg    dllsearchpath=
407086dafe34Smrg    lib_search_path=`pwd`
407186dafe34Smrg    inst_prefix_dir=
407286dafe34Smrg    new_inherited_linker_flags=
407376888252Smrg
407486dafe34Smrg    avoid_version=no
407586dafe34Smrg    dlfiles=
407686dafe34Smrg    dlprefiles=
407786dafe34Smrg    dlself=no
407886dafe34Smrg    export_dynamic=no
407986dafe34Smrg    export_symbols=
408086dafe34Smrg    export_symbols_regex=
408186dafe34Smrg    generated=
408286dafe34Smrg    libobjs=
408386dafe34Smrg    ltlibs=
408486dafe34Smrg    module=no
408586dafe34Smrg    no_install=no
408686dafe34Smrg    objs=
408786dafe34Smrg    non_pic_objects=
408886dafe34Smrg    precious_files_regex=
408986dafe34Smrg    prefer_static_libs=no
409086dafe34Smrg    preload=no
409186dafe34Smrg    prev=
409286dafe34Smrg    prevarg=
409386dafe34Smrg    release=
409486dafe34Smrg    rpath=
409586dafe34Smrg    xrpath=
409686dafe34Smrg    perm_rpath=
409786dafe34Smrg    temp_rpath=
409886dafe34Smrg    thread_safe=no
409986dafe34Smrg    vinfo=
410086dafe34Smrg    vinfo_number=no
410186dafe34Smrg    weak_libs=
410286dafe34Smrg    single_module="${wl}-single_module"
410386dafe34Smrg    func_infer_tag $base_compile
410476888252Smrg
410586dafe34Smrg    # We need to know -static, to get the right output filenames.
410686dafe34Smrg    for arg
410786dafe34Smrg    do
410886dafe34Smrg      case $arg in
410986dafe34Smrg      -shared)
411086dafe34Smrg	test "$build_libtool_libs" != yes && \
411186dafe34Smrg	  func_fatal_configuration "can not build a shared library"
411286dafe34Smrg	build_old_libs=no
411386dafe34Smrg	break
411486dafe34Smrg	;;
411586dafe34Smrg      -all-static | -static | -static-libtool-libs)
411686dafe34Smrg	case $arg in
411786dafe34Smrg	-all-static)
411886dafe34Smrg	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
411986dafe34Smrg	    func_warning "complete static linking is impossible in this configuration"
412076888252Smrg	  fi
412186dafe34Smrg	  if test -n "$link_static_flag"; then
412286dafe34Smrg	    dlopen_self=$dlopen_self_static
412376888252Smrg	  fi
412486dafe34Smrg	  prefer_static_libs=yes
412576888252Smrg	  ;;
412686dafe34Smrg	-static)
412786dafe34Smrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
412886dafe34Smrg	    dlopen_self=$dlopen_self_static
412986dafe34Smrg	  fi
413086dafe34Smrg	  prefer_static_libs=built
413186dafe34Smrg	  ;;
413286dafe34Smrg	-static-libtool-libs)
413386dafe34Smrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
413486dafe34Smrg	    dlopen_self=$dlopen_self_static
413586dafe34Smrg	  fi
413686dafe34Smrg	  prefer_static_libs=yes
413776888252Smrg	  ;;
413876888252Smrg	esac
413986dafe34Smrg	build_libtool_libs=no
414086dafe34Smrg	build_old_libs=yes
414186dafe34Smrg	break
414286dafe34Smrg	;;
414386dafe34Smrg      esac
414486dafe34Smrg    done
414576888252Smrg
414686dafe34Smrg    # See if our shared archives depend on static archives.
414786dafe34Smrg    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
414876888252Smrg
414986dafe34Smrg    # Go through the arguments, transforming them on the way.
415086dafe34Smrg    while test "$#" -gt 0; do
415186dafe34Smrg      arg="$1"
415286dafe34Smrg      shift
415386dafe34Smrg      func_quote_for_eval "$arg"
415486dafe34Smrg      qarg=$func_quote_for_eval_unquoted_result
415586dafe34Smrg      func_append libtool_args " $func_quote_for_eval_result"
415676888252Smrg
415786dafe34Smrg      # If the previous option needs an argument, assign it.
415886dafe34Smrg      if test -n "$prev"; then
415986dafe34Smrg	case $prev in
416086dafe34Smrg	output)
416186dafe34Smrg	  func_append compile_command " @OUTPUT@"
416286dafe34Smrg	  func_append finalize_command " @OUTPUT@"
416386dafe34Smrg	  ;;
416486dafe34Smrg	esac
416576888252Smrg
416686dafe34Smrg	case $prev in
416786dafe34Smrg	dlfiles|dlprefiles)
416886dafe34Smrg	  if test "$preload" = no; then
416986dafe34Smrg	    # Add the symbol object into the linking commands.
417086dafe34Smrg	    func_append compile_command " @SYMFILE@"
417186dafe34Smrg	    func_append finalize_command " @SYMFILE@"
417286dafe34Smrg	    preload=yes
417386dafe34Smrg	  fi
417486dafe34Smrg	  case $arg in
417586dafe34Smrg	  *.la | *.lo) ;;  # We handle these cases below.
417686dafe34Smrg	  force)
417786dafe34Smrg	    if test "$dlself" = no; then
417886dafe34Smrg	      dlself=needless
417986dafe34Smrg	      export_dynamic=yes
418086dafe34Smrg	    fi
418186dafe34Smrg	    prev=
418286dafe34Smrg	    continue
418386dafe34Smrg	    ;;
418486dafe34Smrg	  self)
418586dafe34Smrg	    if test "$prev" = dlprefiles; then
418686dafe34Smrg	      dlself=yes
418786dafe34Smrg	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
418886dafe34Smrg	      dlself=yes
418986dafe34Smrg	    else
419086dafe34Smrg	      dlself=needless
419186dafe34Smrg	      export_dynamic=yes
419286dafe34Smrg	    fi
419386dafe34Smrg	    prev=
419486dafe34Smrg	    continue
419576888252Smrg	    ;;
419676888252Smrg	  *)
419786dafe34Smrg	    if test "$prev" = dlfiles; then
419886dafe34Smrg	      dlfiles="$dlfiles $arg"
419986dafe34Smrg	    else
420086dafe34Smrg	      dlprefiles="$dlprefiles $arg"
420186dafe34Smrg	    fi
420286dafe34Smrg	    prev=
420386dafe34Smrg	    continue
420476888252Smrg	    ;;
420576888252Smrg	  esac
420686dafe34Smrg	  ;;
420786dafe34Smrg	expsyms)
420886dafe34Smrg	  export_symbols="$arg"
420986dafe34Smrg	  test -f "$arg" \
421086dafe34Smrg	    || func_fatal_error "symbol file \`$arg' does not exist"
421186dafe34Smrg	  prev=
421286dafe34Smrg	  continue
421386dafe34Smrg	  ;;
421486dafe34Smrg	expsyms_regex)
421586dafe34Smrg	  export_symbols_regex="$arg"
421686dafe34Smrg	  prev=
421786dafe34Smrg	  continue
421886dafe34Smrg	  ;;
421986dafe34Smrg	framework)
422086dafe34Smrg	  case $host in
422186dafe34Smrg	    *-*-darwin*)
422286dafe34Smrg	      case "$deplibs " in
422386dafe34Smrg		*" $qarg.ltframework "*) ;;
422486dafe34Smrg		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
422586dafe34Smrg		   ;;
422686dafe34Smrg	      esac
422786dafe34Smrg	      ;;
422886dafe34Smrg	  esac
422986dafe34Smrg	  prev=
423086dafe34Smrg	  continue
423186dafe34Smrg	  ;;
423286dafe34Smrg	inst_prefix)
423386dafe34Smrg	  inst_prefix_dir="$arg"
423486dafe34Smrg	  prev=
423586dafe34Smrg	  continue
423686dafe34Smrg	  ;;
423786dafe34Smrg	objectlist)
423886dafe34Smrg	  if test -f "$arg"; then
423986dafe34Smrg	    save_arg=$arg
424086dafe34Smrg	    moreargs=
424186dafe34Smrg	    for fil in `cat "$save_arg"`
424286dafe34Smrg	    do
424386dafe34Smrg#	      moreargs="$moreargs $fil"
424486dafe34Smrg	      arg=$fil
424586dafe34Smrg	      # A libtool-controlled object.
424676888252Smrg
424786dafe34Smrg	      # Check to see that this really is a libtool object.
424886dafe34Smrg	      if func_lalib_unsafe_p "$arg"; then
424986dafe34Smrg		pic_object=
425086dafe34Smrg		non_pic_object=
425176888252Smrg
425286dafe34Smrg		# Read the .lo file
425386dafe34Smrg		func_source "$arg"
425476888252Smrg
425586dafe34Smrg		if test -z "$pic_object" ||
425686dafe34Smrg		   test -z "$non_pic_object" ||
425786dafe34Smrg		   test "$pic_object" = none &&
425886dafe34Smrg		   test "$non_pic_object" = none; then
425986dafe34Smrg		  func_fatal_error "cannot find name of object for \`$arg'"
426086dafe34Smrg		fi
426176888252Smrg
426286dafe34Smrg		# Extract subdirectory from the argument.
426386dafe34Smrg		func_dirname "$arg" "/" ""
426486dafe34Smrg		xdir="$func_dirname_result"
426576888252Smrg
426686dafe34Smrg		if test "$pic_object" != none; then
426786dafe34Smrg		  # Prepend the subdirectory the object is found in.
426886dafe34Smrg		  pic_object="$xdir$pic_object"
426976888252Smrg
427086dafe34Smrg		  if test "$prev" = dlfiles; then
427186dafe34Smrg		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
427286dafe34Smrg		      dlfiles="$dlfiles $pic_object"
427386dafe34Smrg		      prev=
427486dafe34Smrg		      continue
427586dafe34Smrg		    else
427686dafe34Smrg		      # If libtool objects are unsupported, then we need to preload.
427786dafe34Smrg		      prev=dlprefiles
427886dafe34Smrg		    fi
427986dafe34Smrg		  fi
428076888252Smrg
428186dafe34Smrg		  # CHECK ME:  I think I busted this.  -Ossama
428286dafe34Smrg		  if test "$prev" = dlprefiles; then
428386dafe34Smrg		    # Preload the old-style object.
428486dafe34Smrg		    dlprefiles="$dlprefiles $pic_object"
428586dafe34Smrg		    prev=
428686dafe34Smrg		  fi
428776888252Smrg
428886dafe34Smrg		  # A PIC object.
428986dafe34Smrg		  func_append libobjs " $pic_object"
429086dafe34Smrg		  arg="$pic_object"
429186dafe34Smrg		fi
429276888252Smrg
429386dafe34Smrg		# Non-PIC object.
429486dafe34Smrg		if test "$non_pic_object" != none; then
429586dafe34Smrg		  # Prepend the subdirectory the object is found in.
429686dafe34Smrg		  non_pic_object="$xdir$non_pic_object"
429776888252Smrg
429886dafe34Smrg		  # A standard non-PIC object
429986dafe34Smrg		  func_append non_pic_objects " $non_pic_object"
430086dafe34Smrg		  if test -z "$pic_object" || test "$pic_object" = none ; then
430186dafe34Smrg		    arg="$non_pic_object"
430286dafe34Smrg		  fi
430386dafe34Smrg		else
430486dafe34Smrg		  # If the PIC object exists, use it instead.
430586dafe34Smrg		  # $xdir was prepended to $pic_object above.
430686dafe34Smrg		  non_pic_object="$pic_object"
430786dafe34Smrg		  func_append non_pic_objects " $non_pic_object"
430886dafe34Smrg		fi
430986dafe34Smrg	      else
431086dafe34Smrg		# Only an error if not doing a dry-run.
431186dafe34Smrg		if $opt_dry_run; then
431286dafe34Smrg		  # Extract subdirectory from the argument.
431386dafe34Smrg		  func_dirname "$arg" "/" ""
431486dafe34Smrg		  xdir="$func_dirname_result"
431586dafe34Smrg
431686dafe34Smrg		  func_lo2o "$arg"
431786dafe34Smrg		  pic_object=$xdir$objdir/$func_lo2o_result
431886dafe34Smrg		  non_pic_object=$xdir$func_lo2o_result
431986dafe34Smrg		  func_append libobjs " $pic_object"
432086dafe34Smrg		  func_append non_pic_objects " $non_pic_object"
432186dafe34Smrg	        else
432286dafe34Smrg		  func_fatal_error "\`$arg' is not a valid libtool object"
432386dafe34Smrg		fi
432486dafe34Smrg	      fi
432586dafe34Smrg	    done
432686dafe34Smrg	  else
432786dafe34Smrg	    func_fatal_error "link input file \`$arg' does not exist"
432886dafe34Smrg	  fi
432986dafe34Smrg	  arg=$save_arg
433086dafe34Smrg	  prev=
433186dafe34Smrg	  continue
433286dafe34Smrg	  ;;
433386dafe34Smrg	precious_regex)
433486dafe34Smrg	  precious_files_regex="$arg"
433586dafe34Smrg	  prev=
433686dafe34Smrg	  continue
433786dafe34Smrg	  ;;
433886dafe34Smrg	release)
433986dafe34Smrg	  release="-$arg"
434086dafe34Smrg	  prev=
434186dafe34Smrg	  continue
434286dafe34Smrg	  ;;
434386dafe34Smrg	rpath | xrpath)
434486dafe34Smrg	  # We need an absolute path.
434586dafe34Smrg	  case $arg in
434686dafe34Smrg	  [\\/]* | [A-Za-z]:[\\/]*) ;;
434786dafe34Smrg	  *)
434886dafe34Smrg	    func_fatal_error "only absolute run-paths are allowed"
434986dafe34Smrg	    ;;
435086dafe34Smrg	  esac
435186dafe34Smrg	  if test "$prev" = rpath; then
435286dafe34Smrg	    case "$rpath " in
435386dafe34Smrg	    *" $arg "*) ;;
435486dafe34Smrg	    *) rpath="$rpath $arg" ;;
435586dafe34Smrg	    esac
435686dafe34Smrg	  else
435786dafe34Smrg	    case "$xrpath " in
435886dafe34Smrg	    *" $arg "*) ;;
435986dafe34Smrg	    *) xrpath="$xrpath $arg" ;;
436086dafe34Smrg	    esac
436186dafe34Smrg	  fi
436286dafe34Smrg	  prev=
436386dafe34Smrg	  continue
436486dafe34Smrg	  ;;
436586dafe34Smrg	shrext)
436686dafe34Smrg	  shrext_cmds="$arg"
436786dafe34Smrg	  prev=
436886dafe34Smrg	  continue
436986dafe34Smrg	  ;;
437086dafe34Smrg	weak)
437186dafe34Smrg	  weak_libs="$weak_libs $arg"
437286dafe34Smrg	  prev=
437386dafe34Smrg	  continue
437486dafe34Smrg	  ;;
437586dafe34Smrg	xcclinker)
437686dafe34Smrg	  linker_flags="$linker_flags $qarg"
437786dafe34Smrg	  compiler_flags="$compiler_flags $qarg"
437886dafe34Smrg	  prev=
437986dafe34Smrg	  func_append compile_command " $qarg"
438086dafe34Smrg	  func_append finalize_command " $qarg"
438186dafe34Smrg	  continue
438286dafe34Smrg	  ;;
438386dafe34Smrg	xcompiler)
438486dafe34Smrg	  compiler_flags="$compiler_flags $qarg"
438586dafe34Smrg	  prev=
438686dafe34Smrg	  func_append compile_command " $qarg"
438786dafe34Smrg	  func_append finalize_command " $qarg"
438886dafe34Smrg	  continue
438986dafe34Smrg	  ;;
439086dafe34Smrg	xlinker)
439186dafe34Smrg	  linker_flags="$linker_flags $qarg"
439286dafe34Smrg	  compiler_flags="$compiler_flags $wl$qarg"
439386dafe34Smrg	  prev=
439486dafe34Smrg	  func_append compile_command " $wl$qarg"
439586dafe34Smrg	  func_append finalize_command " $wl$qarg"
439686dafe34Smrg	  continue
439786dafe34Smrg	  ;;
439886dafe34Smrg	*)
439986dafe34Smrg	  eval "$prev=\"\$arg\""
440086dafe34Smrg	  prev=
440186dafe34Smrg	  continue
440286dafe34Smrg	  ;;
440376888252Smrg	esac
440486dafe34Smrg      fi # test -n "$prev"
440576888252Smrg
440686dafe34Smrg      prevarg="$arg"
440776888252Smrg
440886dafe34Smrg      case $arg in
440986dafe34Smrg      -all-static)
441086dafe34Smrg	if test -n "$link_static_flag"; then
441186dafe34Smrg	  # See comment for -static flag below, for more details.
441286dafe34Smrg	  func_append compile_command " $link_static_flag"
441386dafe34Smrg	  func_append finalize_command " $link_static_flag"
441486dafe34Smrg	fi
441586dafe34Smrg	continue
441686dafe34Smrg	;;
441776888252Smrg
441886dafe34Smrg      -allow-undefined)
441986dafe34Smrg	# FIXME: remove this flag sometime in the future.
442086dafe34Smrg	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
442186dafe34Smrg	;;
442276888252Smrg
442386dafe34Smrg      -avoid-version)
442486dafe34Smrg	avoid_version=yes
442586dafe34Smrg	continue
442686dafe34Smrg	;;
442776888252Smrg
442886dafe34Smrg      -dlopen)
442986dafe34Smrg	prev=dlfiles
443086dafe34Smrg	continue
443186dafe34Smrg	;;
443276888252Smrg
443386dafe34Smrg      -dlpreopen)
443486dafe34Smrg	prev=dlprefiles
443586dafe34Smrg	continue
443686dafe34Smrg	;;
443776888252Smrg
443886dafe34Smrg      -export-dynamic)
443986dafe34Smrg	export_dynamic=yes
444086dafe34Smrg	continue
444186dafe34Smrg	;;
444276888252Smrg
444386dafe34Smrg      -export-symbols | -export-symbols-regex)
444486dafe34Smrg	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
444586dafe34Smrg	  func_fatal_error "more than one -exported-symbols argument is not allowed"
444686dafe34Smrg	fi
444786dafe34Smrg	if test "X$arg" = "X-export-symbols"; then
444886dafe34Smrg	  prev=expsyms
444986dafe34Smrg	else
445086dafe34Smrg	  prev=expsyms_regex
445186dafe34Smrg	fi
445286dafe34Smrg	continue
445386dafe34Smrg	;;
445476888252Smrg
445586dafe34Smrg      -framework)
445686dafe34Smrg	prev=framework
445786dafe34Smrg	continue
445886dafe34Smrg	;;
445976888252Smrg
446086dafe34Smrg      -inst-prefix-dir)
446186dafe34Smrg	prev=inst_prefix
446286dafe34Smrg	continue
446386dafe34Smrg	;;
446476888252Smrg
446586dafe34Smrg      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
446686dafe34Smrg      # so, if we see these flags be careful not to treat them like -L
446786dafe34Smrg      -L[A-Z][A-Z]*:*)
446886dafe34Smrg	case $with_gcc/$host in
446986dafe34Smrg	no/*-*-irix* | /*-*-irix*)
447086dafe34Smrg	  func_append compile_command " $arg"
447186dafe34Smrg	  func_append finalize_command " $arg"
447286dafe34Smrg	  ;;
447386dafe34Smrg	esac
447486dafe34Smrg	continue
447586dafe34Smrg	;;
447676888252Smrg
447786dafe34Smrg      -L*)
447886dafe34Smrg	func_stripname '-L' '' "$arg"
447986dafe34Smrg	dir=$func_stripname_result
448086dafe34Smrg	if test -z "$dir"; then
448186dafe34Smrg	  if test "$#" -gt 0; then
448286dafe34Smrg	    func_fatal_error "require no space between \`-L' and \`$1'"
448386dafe34Smrg	  else
448486dafe34Smrg	    func_fatal_error "need path for \`-L' option"
448586dafe34Smrg	  fi
448686dafe34Smrg	fi
448786dafe34Smrg	# We need an absolute path.
448886dafe34Smrg	case $dir in
448986dafe34Smrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
449086dafe34Smrg	*)
449186dafe34Smrg	  absdir=`cd "$dir" && pwd`
449286dafe34Smrg	  test -z "$absdir" && \
449386dafe34Smrg	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
449486dafe34Smrg	  dir="$absdir"
449586dafe34Smrg	  ;;
449686dafe34Smrg	esac
449786dafe34Smrg	case "$deplibs " in
449886dafe34Smrg	*" -L$dir "*) ;;
449986dafe34Smrg	*)
450086dafe34Smrg	  deplibs="$deplibs -L$dir"
450186dafe34Smrg	  lib_search_path="$lib_search_path $dir"
450286dafe34Smrg	  ;;
450386dafe34Smrg	esac
450486dafe34Smrg	case $host in
450586dafe34Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
450686dafe34Smrg	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
450786dafe34Smrg	  case :$dllsearchpath: in
450886dafe34Smrg	  *":$dir:"*) ;;
450986dafe34Smrg	  ::) dllsearchpath=$dir;;
451086dafe34Smrg	  *) dllsearchpath="$dllsearchpath:$dir";;
451186dafe34Smrg	  esac
451286dafe34Smrg	  case :$dllsearchpath: in
451386dafe34Smrg	  *":$testbindir:"*) ;;
451486dafe34Smrg	  ::) dllsearchpath=$testbindir;;
451586dafe34Smrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
451686dafe34Smrg	  esac
451786dafe34Smrg	  ;;
451886dafe34Smrg	esac
451986dafe34Smrg	continue
452086dafe34Smrg	;;
452176888252Smrg
452286dafe34Smrg      -l*)
452386dafe34Smrg	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
452486dafe34Smrg	  case $host in
452586dafe34Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
452686dafe34Smrg	    # These systems don't actually have a C or math library (as such)
452786dafe34Smrg	    continue
452886dafe34Smrg	    ;;
452986dafe34Smrg	  *-*-os2*)
453086dafe34Smrg	    # These systems don't actually have a C library (as such)
453186dafe34Smrg	    test "X$arg" = "X-lc" && continue
453286dafe34Smrg	    ;;
453386dafe34Smrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
453486dafe34Smrg	    # Do not include libc due to us having libc/libc_r.
453586dafe34Smrg	    test "X$arg" = "X-lc" && continue
453686dafe34Smrg	    ;;
453786dafe34Smrg	  *-*-rhapsody* | *-*-darwin1.[012])
453886dafe34Smrg	    # Rhapsody C and math libraries are in the System framework
453986dafe34Smrg	    deplibs="$deplibs System.ltframework"
454086dafe34Smrg	    continue
454186dafe34Smrg	    ;;
454286dafe34Smrg	  *-*-sco3.2v5* | *-*-sco5v6*)
454386dafe34Smrg	    # Causes problems with __ctype
454486dafe34Smrg	    test "X$arg" = "X-lc" && continue
454586dafe34Smrg	    ;;
454686dafe34Smrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
454786dafe34Smrg	    # Compiler inserts libc in the correct place for threads to work
454886dafe34Smrg	    test "X$arg" = "X-lc" && continue
454986dafe34Smrg	    ;;
455086dafe34Smrg	  esac
455186dafe34Smrg	elif test "X$arg" = "X-lc_r"; then
455286dafe34Smrg	 case $host in
455386dafe34Smrg	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
455486dafe34Smrg	   # Do not include libc_r directly, use -pthread flag.
455586dafe34Smrg	   continue
455686dafe34Smrg	   ;;
455786dafe34Smrg	 esac
455886dafe34Smrg	fi
455986dafe34Smrg	deplibs="$deplibs $arg"
456086dafe34Smrg	continue
456186dafe34Smrg	;;
456276888252Smrg
456386dafe34Smrg      -module)
456486dafe34Smrg	module=yes
456586dafe34Smrg	continue
456686dafe34Smrg	;;
456776888252Smrg
456886dafe34Smrg      # Tru64 UNIX uses -model [arg] to determine the layout of C++
456986dafe34Smrg      # classes, name mangling, and exception handling.
457086dafe34Smrg      # Darwin uses the -arch flag to determine output architecture.
457186dafe34Smrg      -model|-arch|-isysroot)
457286dafe34Smrg	compiler_flags="$compiler_flags $arg"
457386dafe34Smrg	func_append compile_command " $arg"
457486dafe34Smrg	func_append finalize_command " $arg"
457586dafe34Smrg	prev=xcompiler
457686dafe34Smrg	continue
457786dafe34Smrg	;;
457876888252Smrg
457986dafe34Smrg      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
458086dafe34Smrg	compiler_flags="$compiler_flags $arg"
458186dafe34Smrg	func_append compile_command " $arg"
458286dafe34Smrg	func_append finalize_command " $arg"
458386dafe34Smrg	case "$new_inherited_linker_flags " in
458486dafe34Smrg	    *" $arg "*) ;;
458586dafe34Smrg	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
458686dafe34Smrg	esac
458786dafe34Smrg	continue
458886dafe34Smrg	;;
458976888252Smrg
459086dafe34Smrg      -multi_module)
459186dafe34Smrg	single_module="${wl}-multi_module"
459286dafe34Smrg	continue
459386dafe34Smrg	;;
459476888252Smrg
459586dafe34Smrg      -no-fast-install)
459686dafe34Smrg	fast_install=no
459786dafe34Smrg	continue
459886dafe34Smrg	;;
459976888252Smrg
460086dafe34Smrg      -no-install)
460186dafe34Smrg	case $host in
460286dafe34Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
460386dafe34Smrg	  # The PATH hackery in wrapper scripts is required on Windows
460486dafe34Smrg	  # and Darwin in order for the loader to find any dlls it needs.
460586dafe34Smrg	  func_warning "\`-no-install' is ignored for $host"
460686dafe34Smrg	  func_warning "assuming \`-no-fast-install' instead"
460786dafe34Smrg	  fast_install=no
460886dafe34Smrg	  ;;
460986dafe34Smrg	*) no_install=yes ;;
461086dafe34Smrg	esac
461186dafe34Smrg	continue
461286dafe34Smrg	;;
461376888252Smrg
461486dafe34Smrg      -no-undefined)
461586dafe34Smrg	allow_undefined=no
461686dafe34Smrg	continue
461786dafe34Smrg	;;
461876888252Smrg
461986dafe34Smrg      -objectlist)
462086dafe34Smrg	prev=objectlist
462186dafe34Smrg	continue
462286dafe34Smrg	;;
462376888252Smrg
462486dafe34Smrg      -o) prev=output ;;
462576888252Smrg
462686dafe34Smrg      -precious-files-regex)
462786dafe34Smrg	prev=precious_regex
462886dafe34Smrg	continue
462986dafe34Smrg	;;
463076888252Smrg
463186dafe34Smrg      -release)
463286dafe34Smrg	prev=release
463386dafe34Smrg	continue
463486dafe34Smrg	;;
463576888252Smrg
463686dafe34Smrg      -rpath)
463786dafe34Smrg	prev=rpath
463886dafe34Smrg	continue
463986dafe34Smrg	;;
464076888252Smrg
464186dafe34Smrg      -R)
464286dafe34Smrg	prev=xrpath
464386dafe34Smrg	continue
464486dafe34Smrg	;;
464576888252Smrg
464686dafe34Smrg      -R*)
464786dafe34Smrg	func_stripname '-R' '' "$arg"
464886dafe34Smrg	dir=$func_stripname_result
464986dafe34Smrg	# We need an absolute path.
465086dafe34Smrg	case $dir in
465186dafe34Smrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
465286dafe34Smrg	*)
465386dafe34Smrg	  func_fatal_error "only absolute run-paths are allowed"
465486dafe34Smrg	  ;;
465586dafe34Smrg	esac
465686dafe34Smrg	case "$xrpath " in
465786dafe34Smrg	*" $dir "*) ;;
465886dafe34Smrg	*) xrpath="$xrpath $dir" ;;
465986dafe34Smrg	esac
466086dafe34Smrg	continue
466186dafe34Smrg	;;
466276888252Smrg
466386dafe34Smrg      -shared)
466486dafe34Smrg	# The effects of -shared are defined in a previous loop.
466586dafe34Smrg	continue
466686dafe34Smrg	;;
466776888252Smrg
466886dafe34Smrg      -shrext)
466986dafe34Smrg	prev=shrext
467086dafe34Smrg	continue
467186dafe34Smrg	;;
467276888252Smrg
467386dafe34Smrg      -static | -static-libtool-libs)
467486dafe34Smrg	# The effects of -static are defined in a previous loop.
467586dafe34Smrg	# We used to do the same as -all-static on platforms that
467686dafe34Smrg	# didn't have a PIC flag, but the assumption that the effects
467786dafe34Smrg	# would be equivalent was wrong.  It would break on at least
467886dafe34Smrg	# Digital Unix and AIX.
467986dafe34Smrg	continue
468086dafe34Smrg	;;
468176888252Smrg
468286dafe34Smrg      -thread-safe)
468386dafe34Smrg	thread_safe=yes
468486dafe34Smrg	continue
468586dafe34Smrg	;;
468676888252Smrg
468786dafe34Smrg      -version-info)
468886dafe34Smrg	prev=vinfo
468986dafe34Smrg	continue
469086dafe34Smrg	;;
469176888252Smrg
469286dafe34Smrg      -version-number)
469386dafe34Smrg	prev=vinfo
469486dafe34Smrg	vinfo_number=yes
469586dafe34Smrg	continue
469686dafe34Smrg	;;
469776888252Smrg
469886dafe34Smrg      -weak)
469986dafe34Smrg        prev=weak
470086dafe34Smrg	continue
470186dafe34Smrg	;;
470276888252Smrg
470386dafe34Smrg      -Wc,*)
470486dafe34Smrg	func_stripname '-Wc,' '' "$arg"
470586dafe34Smrg	args=$func_stripname_result
470686dafe34Smrg	arg=
470786dafe34Smrg	save_ifs="$IFS"; IFS=','
470886dafe34Smrg	for flag in $args; do
470986dafe34Smrg	  IFS="$save_ifs"
471086dafe34Smrg          func_quote_for_eval "$flag"
471186dafe34Smrg	  arg="$arg $wl$func_quote_for_eval_result"
471286dafe34Smrg	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
471386dafe34Smrg	done
471486dafe34Smrg	IFS="$save_ifs"
471586dafe34Smrg	func_stripname ' ' '' "$arg"
471686dafe34Smrg	arg=$func_stripname_result
471786dafe34Smrg	;;
471876888252Smrg
471986dafe34Smrg      -Wl,*)
472086dafe34Smrg	func_stripname '-Wl,' '' "$arg"
472186dafe34Smrg	args=$func_stripname_result
472286dafe34Smrg	arg=
472386dafe34Smrg	save_ifs="$IFS"; IFS=','
472486dafe34Smrg	for flag in $args; do
472586dafe34Smrg	  IFS="$save_ifs"
472686dafe34Smrg          func_quote_for_eval "$flag"
472786dafe34Smrg	  arg="$arg $wl$func_quote_for_eval_result"
472886dafe34Smrg	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
472986dafe34Smrg	  linker_flags="$linker_flags $func_quote_for_eval_result"
473086dafe34Smrg	done
473186dafe34Smrg	IFS="$save_ifs"
473286dafe34Smrg	func_stripname ' ' '' "$arg"
473386dafe34Smrg	arg=$func_stripname_result
473486dafe34Smrg	;;
473576888252Smrg
473686dafe34Smrg      -Xcompiler)
473786dafe34Smrg	prev=xcompiler
473886dafe34Smrg	continue
473986dafe34Smrg	;;
474076888252Smrg
474186dafe34Smrg      -Xlinker)
474286dafe34Smrg	prev=xlinker
474386dafe34Smrg	continue
474486dafe34Smrg	;;
474576888252Smrg
474686dafe34Smrg      -XCClinker)
474786dafe34Smrg	prev=xcclinker
474886dafe34Smrg	continue
474986dafe34Smrg	;;
475076888252Smrg
475186dafe34Smrg      # -msg_* for osf cc
475286dafe34Smrg      -msg_*)
475386dafe34Smrg	func_quote_for_eval "$arg"
475486dafe34Smrg	arg="$func_quote_for_eval_result"
475586dafe34Smrg	;;
475676888252Smrg
475786dafe34Smrg      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
475886dafe34Smrg      # -r[0-9][0-9]* specifies the processor on the SGI compiler
475986dafe34Smrg      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
476086dafe34Smrg      # +DA*, +DD* enable 64-bit mode on the HP compiler
476186dafe34Smrg      # -q* pass through compiler args for the IBM compiler
476286dafe34Smrg      # -m*, -t[45]*, -txscale* pass through architecture-specific
476386dafe34Smrg      # compiler args for GCC
476486dafe34Smrg      # -F/path gives path to uninstalled frameworks, gcc on darwin
476586dafe34Smrg      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
476686dafe34Smrg      # @file GCC response files
476786dafe34Smrg      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
476886dafe34Smrg      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
476986dafe34Smrg        func_quote_for_eval "$arg"
477086dafe34Smrg	arg="$func_quote_for_eval_result"
477186dafe34Smrg        func_append compile_command " $arg"
477286dafe34Smrg        func_append finalize_command " $arg"
477386dafe34Smrg        compiler_flags="$compiler_flags $arg"
477486dafe34Smrg        continue
477586dafe34Smrg        ;;
477676888252Smrg
477786dafe34Smrg      # Some other compiler flag.
477886dafe34Smrg      -* | +*)
477986dafe34Smrg        func_quote_for_eval "$arg"
478086dafe34Smrg	arg="$func_quote_for_eval_result"
478186dafe34Smrg	;;
478276888252Smrg
478386dafe34Smrg      *.$objext)
478486dafe34Smrg	# A standard object.
478586dafe34Smrg	objs="$objs $arg"
478686dafe34Smrg	;;
478786dafe34Smrg
478886dafe34Smrg      *.lo)
478986dafe34Smrg	# A libtool-controlled object.
479086dafe34Smrg
479186dafe34Smrg	# Check to see that this really is a libtool object.
479286dafe34Smrg	if func_lalib_unsafe_p "$arg"; then
479386dafe34Smrg	  pic_object=
479486dafe34Smrg	  non_pic_object=
479586dafe34Smrg
479686dafe34Smrg	  # Read the .lo file
479786dafe34Smrg	  func_source "$arg"
479886dafe34Smrg
479986dafe34Smrg	  if test -z "$pic_object" ||
480086dafe34Smrg	     test -z "$non_pic_object" ||
480186dafe34Smrg	     test "$pic_object" = none &&
480286dafe34Smrg	     test "$non_pic_object" = none; then
480386dafe34Smrg	    func_fatal_error "cannot find name of object for \`$arg'"
480486dafe34Smrg	  fi
480586dafe34Smrg
480686dafe34Smrg	  # Extract subdirectory from the argument.
480786dafe34Smrg	  func_dirname "$arg" "/" ""
480886dafe34Smrg	  xdir="$func_dirname_result"
480986dafe34Smrg
481086dafe34Smrg	  if test "$pic_object" != none; then
481186dafe34Smrg	    # Prepend the subdirectory the object is found in.
481286dafe34Smrg	    pic_object="$xdir$pic_object"
481386dafe34Smrg
481486dafe34Smrg	    if test "$prev" = dlfiles; then
481586dafe34Smrg	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
481686dafe34Smrg		dlfiles="$dlfiles $pic_object"
481786dafe34Smrg		prev=
481886dafe34Smrg		continue
481986dafe34Smrg	      else
482086dafe34Smrg		# If libtool objects are unsupported, then we need to preload.
482186dafe34Smrg		prev=dlprefiles
482286dafe34Smrg	      fi
482386dafe34Smrg	    fi
482486dafe34Smrg
482586dafe34Smrg	    # CHECK ME:  I think I busted this.  -Ossama
482686dafe34Smrg	    if test "$prev" = dlprefiles; then
482786dafe34Smrg	      # Preload the old-style object.
482886dafe34Smrg	      dlprefiles="$dlprefiles $pic_object"
482986dafe34Smrg	      prev=
483086dafe34Smrg	    fi
483186dafe34Smrg
483286dafe34Smrg	    # A PIC object.
483386dafe34Smrg	    func_append libobjs " $pic_object"
483486dafe34Smrg	    arg="$pic_object"
483586dafe34Smrg	  fi
483686dafe34Smrg
483786dafe34Smrg	  # Non-PIC object.
483886dafe34Smrg	  if test "$non_pic_object" != none; then
483986dafe34Smrg	    # Prepend the subdirectory the object is found in.
484086dafe34Smrg	    non_pic_object="$xdir$non_pic_object"
484186dafe34Smrg
484286dafe34Smrg	    # A standard non-PIC object
484386dafe34Smrg	    func_append non_pic_objects " $non_pic_object"
484486dafe34Smrg	    if test -z "$pic_object" || test "$pic_object" = none ; then
484586dafe34Smrg	      arg="$non_pic_object"
484686dafe34Smrg	    fi
484786dafe34Smrg	  else
484886dafe34Smrg	    # If the PIC object exists, use it instead.
484986dafe34Smrg	    # $xdir was prepended to $pic_object above.
485086dafe34Smrg	    non_pic_object="$pic_object"
485186dafe34Smrg	    func_append non_pic_objects " $non_pic_object"
485286dafe34Smrg	  fi
485386dafe34Smrg	else
485486dafe34Smrg	  # Only an error if not doing a dry-run.
485586dafe34Smrg	  if $opt_dry_run; then
485686dafe34Smrg	    # Extract subdirectory from the argument.
485786dafe34Smrg	    func_dirname "$arg" "/" ""
485886dafe34Smrg	    xdir="$func_dirname_result"
485986dafe34Smrg
486086dafe34Smrg	    func_lo2o "$arg"
486186dafe34Smrg	    pic_object=$xdir$objdir/$func_lo2o_result
486286dafe34Smrg	    non_pic_object=$xdir$func_lo2o_result
486386dafe34Smrg	    func_append libobjs " $pic_object"
486486dafe34Smrg	    func_append non_pic_objects " $non_pic_object"
486586dafe34Smrg	  else
486686dafe34Smrg	    func_fatal_error "\`$arg' is not a valid libtool object"
486786dafe34Smrg	  fi
486886dafe34Smrg	fi
486986dafe34Smrg	;;
487086dafe34Smrg
487186dafe34Smrg      *.$libext)
487286dafe34Smrg	# An archive.
487386dafe34Smrg	deplibs="$deplibs $arg"
487486dafe34Smrg	old_deplibs="$old_deplibs $arg"
487586dafe34Smrg	continue
487686dafe34Smrg	;;
487786dafe34Smrg
487886dafe34Smrg      *.la)
487986dafe34Smrg	# A libtool-controlled library.
488086dafe34Smrg
488186dafe34Smrg	if test "$prev" = dlfiles; then
488286dafe34Smrg	  # This library was specified with -dlopen.
488386dafe34Smrg	  dlfiles="$dlfiles $arg"
488486dafe34Smrg	  prev=
488586dafe34Smrg	elif test "$prev" = dlprefiles; then
488686dafe34Smrg	  # The library was specified with -dlpreopen.
488786dafe34Smrg	  dlprefiles="$dlprefiles $arg"
488886dafe34Smrg	  prev=
488986dafe34Smrg	else
489086dafe34Smrg	  deplibs="$deplibs $arg"
489186dafe34Smrg	fi
489286dafe34Smrg	continue
489386dafe34Smrg	;;
489486dafe34Smrg
489586dafe34Smrg      # Some other compiler argument.
489686dafe34Smrg      *)
489786dafe34Smrg	# Unknown arguments in both finalize_command and compile_command need
489886dafe34Smrg	# to be aesthetically quoted because they are evaled later.
489986dafe34Smrg	func_quote_for_eval "$arg"
490086dafe34Smrg	arg="$func_quote_for_eval_result"
490186dafe34Smrg	;;
490286dafe34Smrg      esac # arg
490386dafe34Smrg
490486dafe34Smrg      # Now actually substitute the argument into the commands.
490586dafe34Smrg      if test -n "$arg"; then
490686dafe34Smrg	func_append compile_command " $arg"
490786dafe34Smrg	func_append finalize_command " $arg"
490886dafe34Smrg      fi
490986dafe34Smrg    done # argument parsing loop
491086dafe34Smrg
491186dafe34Smrg    test -n "$prev" && \
491286dafe34Smrg      func_fatal_help "the \`$prevarg' option requires an argument"
491386dafe34Smrg
491486dafe34Smrg    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
491586dafe34Smrg      eval arg=\"$export_dynamic_flag_spec\"
491686dafe34Smrg      func_append compile_command " $arg"
491786dafe34Smrg      func_append finalize_command " $arg"
491886dafe34Smrg    fi
491986dafe34Smrg
492086dafe34Smrg    oldlibs=
492186dafe34Smrg    # calculate the name of the file, without its directory
492286dafe34Smrg    func_basename "$output"
492386dafe34Smrg    outputname="$func_basename_result"
492486dafe34Smrg    libobjs_save="$libobjs"
492586dafe34Smrg
492686dafe34Smrg    if test -n "$shlibpath_var"; then
492786dafe34Smrg      # get the directories listed in $shlibpath_var
492886dafe34Smrg      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
492976888252Smrg    else
493086dafe34Smrg      shlib_search_path=
493176888252Smrg    fi
493286dafe34Smrg    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
493386dafe34Smrg    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
493476888252Smrg
493586dafe34Smrg    func_dirname "$output" "/" ""
493686dafe34Smrg    output_objdir="$func_dirname_result$objdir"
493786dafe34Smrg    # Create the object directory.
493886dafe34Smrg    func_mkdir_p "$output_objdir"
493976888252Smrg
494086dafe34Smrg    # Determine the type of output
494186dafe34Smrg    case $output in
494286dafe34Smrg    "")
494386dafe34Smrg      func_fatal_help "you must specify an output file"
494486dafe34Smrg      ;;
494586dafe34Smrg    *.$libext) linkmode=oldlib ;;
494686dafe34Smrg    *.lo | *.$objext) linkmode=obj ;;
494786dafe34Smrg    *.la) linkmode=lib ;;
494886dafe34Smrg    *) linkmode=prog ;; # Anything else should be a program.
494986dafe34Smrg    esac
495086dafe34Smrg
495186dafe34Smrg    specialdeplibs=
495286dafe34Smrg
495386dafe34Smrg    libs=
495486dafe34Smrg    # Find all interdependent deplibs by searching for libraries
495586dafe34Smrg    # that are linked more than once (e.g. -la -lb -la)
495686dafe34Smrg    for deplib in $deplibs; do
495786dafe34Smrg      if $opt_duplicate_deps ; then
495886dafe34Smrg	case "$libs " in
495986dafe34Smrg	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
496086dafe34Smrg	esac
496186dafe34Smrg      fi
496286dafe34Smrg      libs="$libs $deplib"
496386dafe34Smrg    done
496486dafe34Smrg
496586dafe34Smrg    if test "$linkmode" = lib; then
496686dafe34Smrg      libs="$predeps $libs $compiler_lib_search_path $postdeps"
496786dafe34Smrg
496886dafe34Smrg      # Compute libraries that are listed more than once in $predeps
496986dafe34Smrg      # $postdeps and mark them as special (i.e., whose duplicates are
497086dafe34Smrg      # not to be eliminated).
497186dafe34Smrg      pre_post_deps=
497286dafe34Smrg      if $opt_duplicate_compiler_generated_deps; then
497386dafe34Smrg	for pre_post_dep in $predeps $postdeps; do
497486dafe34Smrg	  case "$pre_post_deps " in
497586dafe34Smrg	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
497686dafe34Smrg	  esac
497786dafe34Smrg	  pre_post_deps="$pre_post_deps $pre_post_dep"
497886dafe34Smrg	done
497986dafe34Smrg      fi
498086dafe34Smrg      pre_post_deps=
498186dafe34Smrg    fi
498286dafe34Smrg
498386dafe34Smrg    deplibs=
498486dafe34Smrg    newdependency_libs=
498586dafe34Smrg    newlib_search_path=
498686dafe34Smrg    need_relink=no # whether we're linking any uninstalled libtool libraries
498786dafe34Smrg    notinst_deplibs= # not-installed libtool libraries
498886dafe34Smrg    notinst_path= # paths that contain not-installed libtool libraries
498986dafe34Smrg
499086dafe34Smrg    case $linkmode in
499186dafe34Smrg    lib)
499286dafe34Smrg	passes="conv dlpreopen link"
499386dafe34Smrg	for file in $dlfiles $dlprefiles; do
499486dafe34Smrg	  case $file in
499586dafe34Smrg	  *.la) ;;
499686dafe34Smrg	  *)
499786dafe34Smrg	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
499886dafe34Smrg	    ;;
499986dafe34Smrg	  esac
500086dafe34Smrg	done
500186dafe34Smrg	;;
500286dafe34Smrg    prog)
500386dafe34Smrg	compile_deplibs=
500486dafe34Smrg	finalize_deplibs=
500586dafe34Smrg	alldeplibs=no
500686dafe34Smrg	newdlfiles=
500786dafe34Smrg	newdlprefiles=
500886dafe34Smrg	passes="conv scan dlopen dlpreopen link"
500986dafe34Smrg	;;
501086dafe34Smrg    *)  passes="conv"
501186dafe34Smrg	;;
501286dafe34Smrg    esac
501386dafe34Smrg
501486dafe34Smrg    for pass in $passes; do
501586dafe34Smrg      # The preopen pass in lib mode reverses $deplibs; put it back here
501686dafe34Smrg      # so that -L comes before libs that need it for instance...
501786dafe34Smrg      if test "$linkmode,$pass" = "lib,link"; then
501886dafe34Smrg	## FIXME: Find the place where the list is rebuilt in the wrong
501986dafe34Smrg	##        order, and fix it there properly
502086dafe34Smrg        tmp_deplibs=
502186dafe34Smrg	for deplib in $deplibs; do
502286dafe34Smrg	  tmp_deplibs="$deplib $tmp_deplibs"
502386dafe34Smrg	done
502486dafe34Smrg	deplibs="$tmp_deplibs"
502586dafe34Smrg      fi
502686dafe34Smrg
502786dafe34Smrg      if test "$linkmode,$pass" = "lib,link" ||
502886dafe34Smrg	 test "$linkmode,$pass" = "prog,scan"; then
502986dafe34Smrg	libs="$deplibs"
503086dafe34Smrg	deplibs=
503186dafe34Smrg      fi
503286dafe34Smrg      if test "$linkmode" = prog; then
503386dafe34Smrg	case $pass in
503486dafe34Smrg	dlopen) libs="$dlfiles" ;;
503586dafe34Smrg	dlpreopen) libs="$dlprefiles" ;;
503686dafe34Smrg	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
503786dafe34Smrg	esac
503886dafe34Smrg      fi
503986dafe34Smrg      if test "$linkmode,$pass" = "lib,dlpreopen"; then
504086dafe34Smrg	# Collect and forward deplibs of preopened libtool libs
504186dafe34Smrg	for lib in $dlprefiles; do
504286dafe34Smrg	  # Ignore non-libtool-libs
504386dafe34Smrg	  dependency_libs=
504486dafe34Smrg	  case $lib in
504586dafe34Smrg	  *.la)	func_source "$lib" ;;
504686dafe34Smrg	  esac
504786dafe34Smrg
504886dafe34Smrg	  # Collect preopened libtool deplibs, except any this library
504986dafe34Smrg	  # has declared as weak libs
505086dafe34Smrg	  for deplib in $dependency_libs; do
505186dafe34Smrg            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
505286dafe34Smrg	    case " $weak_libs " in
505386dafe34Smrg	    *" $deplib_base "*) ;;
505486dafe34Smrg	    *) deplibs="$deplibs $deplib" ;;
505586dafe34Smrg	    esac
505686dafe34Smrg	  done
505786dafe34Smrg	done
505886dafe34Smrg	libs="$dlprefiles"
505986dafe34Smrg      fi
506086dafe34Smrg      if test "$pass" = dlopen; then
506186dafe34Smrg	# Collect dlpreopened libraries
506286dafe34Smrg	save_deplibs="$deplibs"
506386dafe34Smrg	deplibs=
506486dafe34Smrg      fi
506586dafe34Smrg
506686dafe34Smrg      for deplib in $libs; do
506786dafe34Smrg	lib=
506886dafe34Smrg	found=no
506986dafe34Smrg	case $deplib in
507086dafe34Smrg	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
507186dafe34Smrg	  if test "$linkmode,$pass" = "prog,link"; then
507286dafe34Smrg	    compile_deplibs="$deplib $compile_deplibs"
507386dafe34Smrg	    finalize_deplibs="$deplib $finalize_deplibs"
507486dafe34Smrg	  else
507586dafe34Smrg	    compiler_flags="$compiler_flags $deplib"
507686dafe34Smrg	    if test "$linkmode" = lib ; then
507786dafe34Smrg		case "$new_inherited_linker_flags " in
507886dafe34Smrg		    *" $deplib "*) ;;
507986dafe34Smrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
508086dafe34Smrg		esac
508186dafe34Smrg	    fi
508286dafe34Smrg	  fi
508386dafe34Smrg	  continue
508486dafe34Smrg	  ;;
508586dafe34Smrg	-l*)
508686dafe34Smrg	  if test "$linkmode" != lib && test "$linkmode" != prog; then
508786dafe34Smrg	    func_warning "\`-l' is ignored for archives/objects"
508886dafe34Smrg	    continue
508986dafe34Smrg	  fi
509086dafe34Smrg	  func_stripname '-l' '' "$deplib"
509186dafe34Smrg	  name=$func_stripname_result
509286dafe34Smrg	  if test "$linkmode" = lib; then
509386dafe34Smrg	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
509486dafe34Smrg	  else
509586dafe34Smrg	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
509686dafe34Smrg	  fi
509786dafe34Smrg	  for searchdir in $searchdirs; do
509886dafe34Smrg	    for search_ext in .la $std_shrext .so .a; do
509986dafe34Smrg	      # Search the libtool library
510086dafe34Smrg	      lib="$searchdir/lib${name}${search_ext}"
510186dafe34Smrg	      if test -f "$lib"; then
510286dafe34Smrg		if test "$search_ext" = ".la"; then
510386dafe34Smrg		  found=yes
510486dafe34Smrg		else
510586dafe34Smrg		  found=no
510686dafe34Smrg		fi
510786dafe34Smrg		break 2
510886dafe34Smrg	      fi
510986dafe34Smrg	    done
511086dafe34Smrg	  done
511186dafe34Smrg	  if test "$found" != yes; then
511286dafe34Smrg	    # deplib doesn't seem to be a libtool library
511386dafe34Smrg	    if test "$linkmode,$pass" = "prog,link"; then
511486dafe34Smrg	      compile_deplibs="$deplib $compile_deplibs"
511586dafe34Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
511686dafe34Smrg	    else
511786dafe34Smrg	      deplibs="$deplib $deplibs"
511886dafe34Smrg	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
511986dafe34Smrg	    fi
512086dafe34Smrg	    continue
512186dafe34Smrg	  else # deplib is a libtool library
512286dafe34Smrg	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
512386dafe34Smrg	    # We need to do some special things here, and not later.
512486dafe34Smrg	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
512586dafe34Smrg	      case " $predeps $postdeps " in
512686dafe34Smrg	      *" $deplib "*)
512786dafe34Smrg		if func_lalib_p "$lib"; then
512886dafe34Smrg		  library_names=
512986dafe34Smrg		  old_library=
513086dafe34Smrg		  func_source "$lib"
513186dafe34Smrg		  for l in $old_library $library_names; do
513286dafe34Smrg		    ll="$l"
513386dafe34Smrg		  done
513486dafe34Smrg		  if test "X$ll" = "X$old_library" ; then # only static version available
513586dafe34Smrg		    found=no
513686dafe34Smrg		    func_dirname "$lib" "" "."
513786dafe34Smrg		    ladir="$func_dirname_result"
513886dafe34Smrg		    lib=$ladir/$old_library
513986dafe34Smrg		    if test "$linkmode,$pass" = "prog,link"; then
514086dafe34Smrg		      compile_deplibs="$deplib $compile_deplibs"
514186dafe34Smrg		      finalize_deplibs="$deplib $finalize_deplibs"
514286dafe34Smrg		    else
514386dafe34Smrg		      deplibs="$deplib $deplibs"
514486dafe34Smrg		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
514586dafe34Smrg		    fi
514686dafe34Smrg		    continue
514786dafe34Smrg		  fi
514886dafe34Smrg		fi
514986dafe34Smrg		;;
515086dafe34Smrg	      *) ;;
515186dafe34Smrg	      esac
515286dafe34Smrg	    fi
515386dafe34Smrg	  fi
515486dafe34Smrg	  ;; # -l
515586dafe34Smrg	*.ltframework)
515686dafe34Smrg	  if test "$linkmode,$pass" = "prog,link"; then
515786dafe34Smrg	    compile_deplibs="$deplib $compile_deplibs"
515886dafe34Smrg	    finalize_deplibs="$deplib $finalize_deplibs"
515986dafe34Smrg	  else
516086dafe34Smrg	    deplibs="$deplib $deplibs"
516186dafe34Smrg	    if test "$linkmode" = lib ; then
516286dafe34Smrg		case "$new_inherited_linker_flags " in
516386dafe34Smrg		    *" $deplib "*) ;;
516486dafe34Smrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
516586dafe34Smrg		esac
516686dafe34Smrg	    fi
516786dafe34Smrg	  fi
516886dafe34Smrg	  continue
516986dafe34Smrg	  ;;
517086dafe34Smrg	-L*)
517186dafe34Smrg	  case $linkmode in
517286dafe34Smrg	  lib)
517386dafe34Smrg	    deplibs="$deplib $deplibs"
517486dafe34Smrg	    test "$pass" = conv && continue
517586dafe34Smrg	    newdependency_libs="$deplib $newdependency_libs"
517686dafe34Smrg	    func_stripname '-L' '' "$deplib"
517786dafe34Smrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
517886dafe34Smrg	    ;;
517986dafe34Smrg	  prog)
518086dafe34Smrg	    if test "$pass" = conv; then
518186dafe34Smrg	      deplibs="$deplib $deplibs"
518286dafe34Smrg	      continue
518386dafe34Smrg	    fi
518486dafe34Smrg	    if test "$pass" = scan; then
518586dafe34Smrg	      deplibs="$deplib $deplibs"
518686dafe34Smrg	    else
518786dafe34Smrg	      compile_deplibs="$deplib $compile_deplibs"
518886dafe34Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
518986dafe34Smrg	    fi
519086dafe34Smrg	    func_stripname '-L' '' "$deplib"
519186dafe34Smrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
519286dafe34Smrg	    ;;
519386dafe34Smrg	  *)
519486dafe34Smrg	    func_warning "\`-L' is ignored for archives/objects"
519586dafe34Smrg	    ;;
519686dafe34Smrg	  esac # linkmode
519786dafe34Smrg	  continue
519886dafe34Smrg	  ;; # -L
519986dafe34Smrg	-R*)
520086dafe34Smrg	  if test "$pass" = link; then
520186dafe34Smrg	    func_stripname '-R' '' "$deplib"
520286dafe34Smrg	    dir=$func_stripname_result
520386dafe34Smrg	    # Make sure the xrpath contains only unique directories.
520486dafe34Smrg	    case "$xrpath " in
520586dafe34Smrg	    *" $dir "*) ;;
520686dafe34Smrg	    *) xrpath="$xrpath $dir" ;;
520786dafe34Smrg	    esac
520886dafe34Smrg	  fi
520986dafe34Smrg	  deplibs="$deplib $deplibs"
521086dafe34Smrg	  continue
521186dafe34Smrg	  ;;
521286dafe34Smrg	*.la) lib="$deplib" ;;
521386dafe34Smrg	*.$libext)
521486dafe34Smrg	  if test "$pass" = conv; then
521586dafe34Smrg	    deplibs="$deplib $deplibs"
521686dafe34Smrg	    continue
521786dafe34Smrg	  fi
521886dafe34Smrg	  case $linkmode in
521986dafe34Smrg	  lib)
522086dafe34Smrg	    # Linking convenience modules into shared libraries is allowed,
522186dafe34Smrg	    # but linking other static libraries is non-portable.
522286dafe34Smrg	    case " $dlpreconveniencelibs " in
522386dafe34Smrg	    *" $deplib "*) ;;
522486dafe34Smrg	    *)
522586dafe34Smrg	      valid_a_lib=no
522686dafe34Smrg	      case $deplibs_check_method in
522786dafe34Smrg		match_pattern*)
522886dafe34Smrg		  set dummy $deplibs_check_method; shift
522986dafe34Smrg		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
523086dafe34Smrg		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
523186dafe34Smrg		    | $EGREP "$match_pattern_regex" > /dev/null; then
523286dafe34Smrg		    valid_a_lib=yes
523386dafe34Smrg		  fi
523486dafe34Smrg		;;
523586dafe34Smrg		pass_all)
523686dafe34Smrg		  valid_a_lib=yes
523786dafe34Smrg		;;
523886dafe34Smrg	      esac
523986dafe34Smrg	      if test "$valid_a_lib" != yes; then
524086dafe34Smrg		$ECHO
524186dafe34Smrg		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
524286dafe34Smrg		$ECHO "*** I have the capability to make that library automatically link in when"
524386dafe34Smrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
524486dafe34Smrg		$ECHO "*** shared version of the library, which you do not appear to have"
524586dafe34Smrg		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
524686dafe34Smrg		$ECHO "*** that it is just a static archive that I should not use here."
524786dafe34Smrg	      else
524886dafe34Smrg		$ECHO
524986dafe34Smrg		$ECHO "*** Warning: Linking the shared library $output against the"
525086dafe34Smrg		$ECHO "*** static library $deplib is not portable!"
525186dafe34Smrg		deplibs="$deplib $deplibs"
525286dafe34Smrg	      fi
525386dafe34Smrg	      ;;
525486dafe34Smrg	    esac
525586dafe34Smrg	    continue
525686dafe34Smrg	    ;;
525786dafe34Smrg	  prog)
525886dafe34Smrg	    if test "$pass" != link; then
525986dafe34Smrg	      deplibs="$deplib $deplibs"
526086dafe34Smrg	    else
526186dafe34Smrg	      compile_deplibs="$deplib $compile_deplibs"
526286dafe34Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
526386dafe34Smrg	    fi
526486dafe34Smrg	    continue
526586dafe34Smrg	    ;;
526686dafe34Smrg	  esac # linkmode
526786dafe34Smrg	  ;; # *.$libext
526886dafe34Smrg	*.lo | *.$objext)
526986dafe34Smrg	  if test "$pass" = conv; then
527086dafe34Smrg	    deplibs="$deplib $deplibs"
527186dafe34Smrg	  elif test "$linkmode" = prog; then
527286dafe34Smrg	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
527386dafe34Smrg	      # If there is no dlopen support or we're linking statically,
527486dafe34Smrg	      # we need to preload.
527586dafe34Smrg	      newdlprefiles="$newdlprefiles $deplib"
527686dafe34Smrg	      compile_deplibs="$deplib $compile_deplibs"
527786dafe34Smrg	      finalize_deplibs="$deplib $finalize_deplibs"
527886dafe34Smrg	    else
527986dafe34Smrg	      newdlfiles="$newdlfiles $deplib"
528086dafe34Smrg	    fi
528186dafe34Smrg	  fi
528286dafe34Smrg	  continue
528386dafe34Smrg	  ;;
528486dafe34Smrg	%DEPLIBS%)
528586dafe34Smrg	  alldeplibs=yes
528686dafe34Smrg	  continue
528786dafe34Smrg	  ;;
528886dafe34Smrg	esac # case $deplib
528986dafe34Smrg
529086dafe34Smrg	if test "$found" = yes || test -f "$lib"; then :
529186dafe34Smrg	else
529286dafe34Smrg	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
529386dafe34Smrg	fi
529486dafe34Smrg
529586dafe34Smrg	# Check to see that this really is a libtool archive.
529686dafe34Smrg	func_lalib_unsafe_p "$lib" \
529786dafe34Smrg	  || func_fatal_error "\`$lib' is not a valid libtool archive"
529886dafe34Smrg
529986dafe34Smrg	func_dirname "$lib" "" "."
530086dafe34Smrg	ladir="$func_dirname_result"
530186dafe34Smrg
530286dafe34Smrg	dlname=
530386dafe34Smrg	dlopen=
530486dafe34Smrg	dlpreopen=
530586dafe34Smrg	libdir=
530686dafe34Smrg	library_names=
530786dafe34Smrg	old_library=
530886dafe34Smrg	inherited_linker_flags=
530986dafe34Smrg	# If the library was installed with an old release of libtool,
531086dafe34Smrg	# it will not redefine variables installed, or shouldnotlink
531186dafe34Smrg	installed=yes
531286dafe34Smrg	shouldnotlink=no
531386dafe34Smrg	avoidtemprpath=
531486dafe34Smrg
531586dafe34Smrg
531686dafe34Smrg	# Read the .la file
531786dafe34Smrg	func_source "$lib"
531886dafe34Smrg
531986dafe34Smrg	# Convert "-framework foo" to "foo.ltframework"
532086dafe34Smrg	if test -n "$inherited_linker_flags"; then
532186dafe34Smrg	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
532286dafe34Smrg	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
532386dafe34Smrg	    case " $new_inherited_linker_flags " in
532486dafe34Smrg	      *" $tmp_inherited_linker_flag "*) ;;
532586dafe34Smrg	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
532686dafe34Smrg	    esac
532786dafe34Smrg	  done
532886dafe34Smrg	fi
532986dafe34Smrg	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
533086dafe34Smrg	if test "$linkmode,$pass" = "lib,link" ||
533186dafe34Smrg	   test "$linkmode,$pass" = "prog,scan" ||
533286dafe34Smrg	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
533386dafe34Smrg	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
533486dafe34Smrg	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
533586dafe34Smrg	fi
533686dafe34Smrg
533786dafe34Smrg	if test "$pass" = conv; then
533886dafe34Smrg	  # Only check for convenience libraries
533986dafe34Smrg	  deplibs="$lib $deplibs"
534086dafe34Smrg	  if test -z "$libdir"; then
534186dafe34Smrg	    if test -z "$old_library"; then
534286dafe34Smrg	      func_fatal_error "cannot find name of link library for \`$lib'"
534386dafe34Smrg	    fi
534486dafe34Smrg	    # It is a libtool convenience library, so add in its objects.
534586dafe34Smrg	    convenience="$convenience $ladir/$objdir/$old_library"
534686dafe34Smrg	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
534786dafe34Smrg	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
534886dafe34Smrg	    func_fatal_error "\`$lib' is not a convenience library"
534986dafe34Smrg	  fi
535086dafe34Smrg	  tmp_libs=
535186dafe34Smrg	  for deplib in $dependency_libs; do
535286dafe34Smrg	    deplibs="$deplib $deplibs"
535386dafe34Smrg	    if $opt_duplicate_deps ; then
535486dafe34Smrg	      case "$tmp_libs " in
535586dafe34Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
535686dafe34Smrg	      esac
535786dafe34Smrg	    fi
535886dafe34Smrg	    tmp_libs="$tmp_libs $deplib"
535986dafe34Smrg	  done
536086dafe34Smrg	  continue
536186dafe34Smrg	fi # $pass = conv
536286dafe34Smrg
536386dafe34Smrg
536486dafe34Smrg	# Get the name of the library we link against.
536586dafe34Smrg	linklib=
536686dafe34Smrg	for l in $old_library $library_names; do
536786dafe34Smrg	  linklib="$l"
536886dafe34Smrg	done
536986dafe34Smrg	if test -z "$linklib"; then
537086dafe34Smrg	  func_fatal_error "cannot find name of link library for \`$lib'"
537186dafe34Smrg	fi
537286dafe34Smrg
537386dafe34Smrg	# This library was specified with -dlopen.
537486dafe34Smrg	if test "$pass" = dlopen; then
537586dafe34Smrg	  if test -z "$libdir"; then
537686dafe34Smrg	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
537786dafe34Smrg	  fi
537886dafe34Smrg	  if test -z "$dlname" ||
537986dafe34Smrg	     test "$dlopen_support" != yes ||
538086dafe34Smrg	     test "$build_libtool_libs" = no; then
538186dafe34Smrg	    # If there is no dlname, no dlopen support or we're linking
538286dafe34Smrg	    # statically, we need to preload.  We also need to preload any
538386dafe34Smrg	    # dependent libraries so libltdl's deplib preloader doesn't
538486dafe34Smrg	    # bomb out in the load deplibs phase.
538586dafe34Smrg	    dlprefiles="$dlprefiles $lib $dependency_libs"
538686dafe34Smrg	  else
538786dafe34Smrg	    newdlfiles="$newdlfiles $lib"
538886dafe34Smrg	  fi
538986dafe34Smrg	  continue
539086dafe34Smrg	fi # $pass = dlopen
539186dafe34Smrg
539286dafe34Smrg	# We need an absolute path.
539386dafe34Smrg	case $ladir in
539486dafe34Smrg	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
539586dafe34Smrg	*)
539686dafe34Smrg	  abs_ladir=`cd "$ladir" && pwd`
539786dafe34Smrg	  if test -z "$abs_ladir"; then
539886dafe34Smrg	    func_warning "cannot determine absolute directory name of \`$ladir'"
539986dafe34Smrg	    func_warning "passing it literally to the linker, although it might fail"
540086dafe34Smrg	    abs_ladir="$ladir"
540186dafe34Smrg	  fi
540286dafe34Smrg	  ;;
540386dafe34Smrg	esac
540486dafe34Smrg	func_basename "$lib"
540586dafe34Smrg	laname="$func_basename_result"
540686dafe34Smrg
540786dafe34Smrg	# Find the relevant object directory and library name.
540886dafe34Smrg	if test "X$installed" = Xyes; then
540986dafe34Smrg	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
541086dafe34Smrg	    func_warning "library \`$lib' was moved."
541186dafe34Smrg	    dir="$ladir"
541286dafe34Smrg	    absdir="$abs_ladir"
541386dafe34Smrg	    libdir="$abs_ladir"
541486dafe34Smrg	  else
541586dafe34Smrg	    dir="$libdir"
541686dafe34Smrg	    absdir="$libdir"
541786dafe34Smrg	  fi
541886dafe34Smrg	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
541986dafe34Smrg	else
542086dafe34Smrg	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
542186dafe34Smrg	    dir="$ladir"
542286dafe34Smrg	    absdir="$abs_ladir"
542386dafe34Smrg	    # Remove this search path later
542486dafe34Smrg	    notinst_path="$notinst_path $abs_ladir"
542586dafe34Smrg	  else
542686dafe34Smrg	    dir="$ladir/$objdir"
542786dafe34Smrg	    absdir="$abs_ladir/$objdir"
542886dafe34Smrg	    # Remove this search path later
542986dafe34Smrg	    notinst_path="$notinst_path $abs_ladir"
543086dafe34Smrg	  fi
543186dafe34Smrg	fi # $installed = yes
543286dafe34Smrg	func_stripname 'lib' '.la' "$laname"
543386dafe34Smrg	name=$func_stripname_result
543486dafe34Smrg
543586dafe34Smrg	# This library was specified with -dlpreopen.
543686dafe34Smrg	if test "$pass" = dlpreopen; then
543786dafe34Smrg	  if test -z "$libdir" && test "$linkmode" = prog; then
543886dafe34Smrg	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
543986dafe34Smrg	  fi
544086dafe34Smrg	  # Prefer using a static library (so that no silly _DYNAMIC symbols
544186dafe34Smrg	  # are required to link).
544286dafe34Smrg	  if test -n "$old_library"; then
544386dafe34Smrg	    newdlprefiles="$newdlprefiles $dir/$old_library"
544486dafe34Smrg	    # Keep a list of preopened convenience libraries to check
544586dafe34Smrg	    # that they are being used correctly in the link pass.
544686dafe34Smrg	    test -z "$libdir" && \
544786dafe34Smrg		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
544886dafe34Smrg	  # Otherwise, use the dlname, so that lt_dlopen finds it.
544986dafe34Smrg	  elif test -n "$dlname"; then
545086dafe34Smrg	    newdlprefiles="$newdlprefiles $dir/$dlname"
545186dafe34Smrg	  else
545286dafe34Smrg	    newdlprefiles="$newdlprefiles $dir/$linklib"
545386dafe34Smrg	  fi
545486dafe34Smrg	fi # $pass = dlpreopen
545586dafe34Smrg
545686dafe34Smrg	if test -z "$libdir"; then
545786dafe34Smrg	  # Link the convenience library
545886dafe34Smrg	  if test "$linkmode" = lib; then
545986dafe34Smrg	    deplibs="$dir/$old_library $deplibs"
546086dafe34Smrg	  elif test "$linkmode,$pass" = "prog,link"; then
546186dafe34Smrg	    compile_deplibs="$dir/$old_library $compile_deplibs"
546286dafe34Smrg	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
546386dafe34Smrg	  else
546486dafe34Smrg	    deplibs="$lib $deplibs" # used for prog,scan pass
546586dafe34Smrg	  fi
546686dafe34Smrg	  continue
546786dafe34Smrg	fi
546886dafe34Smrg
546986dafe34Smrg
547086dafe34Smrg	if test "$linkmode" = prog && test "$pass" != link; then
547186dafe34Smrg	  newlib_search_path="$newlib_search_path $ladir"
547286dafe34Smrg	  deplibs="$lib $deplibs"
547386dafe34Smrg
547486dafe34Smrg	  linkalldeplibs=no
547586dafe34Smrg	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
547686dafe34Smrg	     test "$build_libtool_libs" = no; then
547786dafe34Smrg	    linkalldeplibs=yes
547886dafe34Smrg	  fi
547986dafe34Smrg
548086dafe34Smrg	  tmp_libs=
548186dafe34Smrg	  for deplib in $dependency_libs; do
548286dafe34Smrg	    case $deplib in
548386dafe34Smrg	    -L*) func_stripname '-L' '' "$deplib"
548486dafe34Smrg	         newlib_search_path="$newlib_search_path $func_stripname_result"
548586dafe34Smrg		 ;;
548686dafe34Smrg	    esac
548786dafe34Smrg	    # Need to link against all dependency_libs?
548886dafe34Smrg	    if test "$linkalldeplibs" = yes; then
548986dafe34Smrg	      deplibs="$deplib $deplibs"
549086dafe34Smrg	    else
549186dafe34Smrg	      # Need to hardcode shared library paths
549286dafe34Smrg	      # or/and link against static libraries
549386dafe34Smrg	      newdependency_libs="$deplib $newdependency_libs"
549486dafe34Smrg	    fi
549586dafe34Smrg	    if $opt_duplicate_deps ; then
549686dafe34Smrg	      case "$tmp_libs " in
549786dafe34Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
549886dafe34Smrg	      esac
549986dafe34Smrg	    fi
550086dafe34Smrg	    tmp_libs="$tmp_libs $deplib"
550186dafe34Smrg	  done # for deplib
550286dafe34Smrg	  continue
550386dafe34Smrg	fi # $linkmode = prog...
550486dafe34Smrg
550586dafe34Smrg	if test "$linkmode,$pass" = "prog,link"; then
550686dafe34Smrg	  if test -n "$library_names" &&
550786dafe34Smrg	     { { test "$prefer_static_libs" = no ||
550886dafe34Smrg	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
550986dafe34Smrg	       test -z "$old_library"; }; then
551086dafe34Smrg	    # We need to hardcode the library path
551186dafe34Smrg	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
551286dafe34Smrg	      # Make sure the rpath contains only unique directories.
551386dafe34Smrg	      case "$temp_rpath:" in
551486dafe34Smrg	      *"$absdir:"*) ;;
551586dafe34Smrg	      *) temp_rpath="$temp_rpath$absdir:" ;;
551686dafe34Smrg	      esac
551786dafe34Smrg	    fi
551886dafe34Smrg
551986dafe34Smrg	    # Hardcode the library path.
552086dafe34Smrg	    # Skip directories that are in the system default run-time
552186dafe34Smrg	    # search path.
552286dafe34Smrg	    case " $sys_lib_dlsearch_path " in
552386dafe34Smrg	    *" $absdir "*) ;;
552486dafe34Smrg	    *)
552586dafe34Smrg	      case "$compile_rpath " in
552686dafe34Smrg	      *" $absdir "*) ;;
552786dafe34Smrg	      *) compile_rpath="$compile_rpath $absdir"
552886dafe34Smrg	      esac
552986dafe34Smrg	      ;;
553086dafe34Smrg	    esac
553186dafe34Smrg	    case " $sys_lib_dlsearch_path " in
553286dafe34Smrg	    *" $libdir "*) ;;
553386dafe34Smrg	    *)
553486dafe34Smrg	      case "$finalize_rpath " in
553586dafe34Smrg	      *" $libdir "*) ;;
553686dafe34Smrg	      *) finalize_rpath="$finalize_rpath $libdir"
553786dafe34Smrg	      esac
553886dafe34Smrg	      ;;
553986dafe34Smrg	    esac
554086dafe34Smrg	  fi # $linkmode,$pass = prog,link...
554186dafe34Smrg
554286dafe34Smrg	  if test "$alldeplibs" = yes &&
554386dafe34Smrg	     { test "$deplibs_check_method" = pass_all ||
554486dafe34Smrg	       { test "$build_libtool_libs" = yes &&
554586dafe34Smrg		 test -n "$library_names"; }; }; then
554686dafe34Smrg	    # We only need to search for static libraries
554786dafe34Smrg	    continue
554886dafe34Smrg	  fi
554986dafe34Smrg	fi
555086dafe34Smrg
555186dafe34Smrg	link_static=no # Whether the deplib will be linked statically
555286dafe34Smrg	use_static_libs=$prefer_static_libs
555386dafe34Smrg	if test "$use_static_libs" = built && test "$installed" = yes; then
555486dafe34Smrg	  use_static_libs=no
555586dafe34Smrg	fi
555686dafe34Smrg	if test -n "$library_names" &&
555786dafe34Smrg	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
555886dafe34Smrg	  case $host in
555986dafe34Smrg	  *cygwin* | *mingw* | *cegcc*)
556086dafe34Smrg	      # No point in relinking DLLs because paths are not encoded
556186dafe34Smrg	      notinst_deplibs="$notinst_deplibs $lib"
556286dafe34Smrg	      need_relink=no
556386dafe34Smrg	    ;;
556486dafe34Smrg	  *)
556586dafe34Smrg	    if test "$installed" = no; then
556686dafe34Smrg	      notinst_deplibs="$notinst_deplibs $lib"
556786dafe34Smrg	      need_relink=yes
556886dafe34Smrg	    fi
556986dafe34Smrg	    ;;
557086dafe34Smrg	  esac
557186dafe34Smrg	  # This is a shared library
557286dafe34Smrg
557386dafe34Smrg	  # Warn about portability, can't link against -module's on some
557486dafe34Smrg	  # systems (darwin).  Don't bleat about dlopened modules though!
557586dafe34Smrg	  dlopenmodule=""
557686dafe34Smrg	  for dlpremoduletest in $dlprefiles; do
557786dafe34Smrg	    if test "X$dlpremoduletest" = "X$lib"; then
557886dafe34Smrg	      dlopenmodule="$dlpremoduletest"
557986dafe34Smrg	      break
558086dafe34Smrg	    fi
558186dafe34Smrg	  done
558286dafe34Smrg	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
558386dafe34Smrg	    $ECHO
558486dafe34Smrg	    if test "$linkmode" = prog; then
558586dafe34Smrg	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
558686dafe34Smrg	    else
558786dafe34Smrg	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
558886dafe34Smrg	    fi
558986dafe34Smrg	    $ECHO "*** $linklib is not portable!"
559086dafe34Smrg	  fi
559186dafe34Smrg	  if test "$linkmode" = lib &&
559286dafe34Smrg	     test "$hardcode_into_libs" = yes; then
559386dafe34Smrg	    # Hardcode the library path.
559486dafe34Smrg	    # Skip directories that are in the system default run-time
559586dafe34Smrg	    # search path.
559686dafe34Smrg	    case " $sys_lib_dlsearch_path " in
559786dafe34Smrg	    *" $absdir "*) ;;
559886dafe34Smrg	    *)
559986dafe34Smrg	      case "$compile_rpath " in
560086dafe34Smrg	      *" $absdir "*) ;;
560186dafe34Smrg	      *) compile_rpath="$compile_rpath $absdir"
560286dafe34Smrg	      esac
560386dafe34Smrg	      ;;
560486dafe34Smrg	    esac
560586dafe34Smrg	    case " $sys_lib_dlsearch_path " in
560686dafe34Smrg	    *" $libdir "*) ;;
560786dafe34Smrg	    *)
560886dafe34Smrg	      case "$finalize_rpath " in
560986dafe34Smrg	      *" $libdir "*) ;;
561086dafe34Smrg	      *) finalize_rpath="$finalize_rpath $libdir"
561186dafe34Smrg	      esac
561286dafe34Smrg	      ;;
561386dafe34Smrg	    esac
561486dafe34Smrg	  fi
561586dafe34Smrg
561686dafe34Smrg	  if test -n "$old_archive_from_expsyms_cmds"; then
561786dafe34Smrg	    # figure out the soname
561886dafe34Smrg	    set dummy $library_names
561986dafe34Smrg	    shift
562086dafe34Smrg	    realname="$1"
562186dafe34Smrg	    shift
562286dafe34Smrg	    libname=`eval "\\$ECHO \"$libname_spec\""`
562386dafe34Smrg	    # use dlname if we got it. it's perfectly good, no?
562486dafe34Smrg	    if test -n "$dlname"; then
562586dafe34Smrg	      soname="$dlname"
562686dafe34Smrg	    elif test -n "$soname_spec"; then
562786dafe34Smrg	      # bleh windows
562886dafe34Smrg	      case $host in
562986dafe34Smrg	      *cygwin* | mingw* | *cegcc*)
563086dafe34Smrg	        func_arith $current - $age
563186dafe34Smrg		major=$func_arith_result
563286dafe34Smrg		versuffix="-$major"
563386dafe34Smrg		;;
563486dafe34Smrg	      esac
563586dafe34Smrg	      eval soname=\"$soname_spec\"
563686dafe34Smrg	    else
563786dafe34Smrg	      soname="$realname"
563886dafe34Smrg	    fi
563986dafe34Smrg
564086dafe34Smrg	    # Make a new name for the extract_expsyms_cmds to use
564186dafe34Smrg	    soroot="$soname"
564286dafe34Smrg	    func_basename "$soroot"
564386dafe34Smrg	    soname="$func_basename_result"
564486dafe34Smrg	    func_stripname 'lib' '.dll' "$soname"
564586dafe34Smrg	    newlib=libimp-$func_stripname_result.a
564686dafe34Smrg
564786dafe34Smrg	    # If the library has no export list, then create one now
564886dafe34Smrg	    if test -f "$output_objdir/$soname-def"; then :
564986dafe34Smrg	    else
565086dafe34Smrg	      func_verbose "extracting exported symbol list from \`$soname'"
565186dafe34Smrg	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
565286dafe34Smrg	    fi
565386dafe34Smrg
565486dafe34Smrg	    # Create $newlib
565586dafe34Smrg	    if test -f "$output_objdir/$newlib"; then :; else
565686dafe34Smrg	      func_verbose "generating import library for \`$soname'"
565786dafe34Smrg	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
565886dafe34Smrg	    fi
565986dafe34Smrg	    # make sure the library variables are pointing to the new library
566086dafe34Smrg	    dir=$output_objdir
566186dafe34Smrg	    linklib=$newlib
566286dafe34Smrg	  fi # test -n "$old_archive_from_expsyms_cmds"
566386dafe34Smrg
566486dafe34Smrg	  if test "$linkmode" = prog || test "$mode" != relink; then
566586dafe34Smrg	    add_shlibpath=
566686dafe34Smrg	    add_dir=
566786dafe34Smrg	    add=
566886dafe34Smrg	    lib_linked=yes
566986dafe34Smrg	    case $hardcode_action in
567086dafe34Smrg	    immediate | unsupported)
567186dafe34Smrg	      if test "$hardcode_direct" = no; then
567286dafe34Smrg		add="$dir/$linklib"
567386dafe34Smrg		case $host in
567486dafe34Smrg		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
567586dafe34Smrg		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
567686dafe34Smrg		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
567786dafe34Smrg		    *-*-unixware7*) add_dir="-L$dir" ;;
567886dafe34Smrg		  *-*-darwin* )
567986dafe34Smrg		    # if the lib is a (non-dlopened) module then we can not
568086dafe34Smrg		    # link against it, someone is ignoring the earlier warnings
568186dafe34Smrg		    if /usr/bin/file -L $add 2> /dev/null |
568286dafe34Smrg			 $GREP ": [^:]* bundle" >/dev/null ; then
568386dafe34Smrg		      if test "X$dlopenmodule" != "X$lib"; then
568486dafe34Smrg			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
568586dafe34Smrg			if test -z "$old_library" ; then
568686dafe34Smrg			  $ECHO
568786dafe34Smrg			  $ECHO "*** And there doesn't seem to be a static archive available"
568886dafe34Smrg			  $ECHO "*** The link will probably fail, sorry"
568986dafe34Smrg			else
569086dafe34Smrg			  add="$dir/$old_library"
569186dafe34Smrg			fi
569286dafe34Smrg		      elif test -n "$old_library"; then
569386dafe34Smrg			add="$dir/$old_library"
569486dafe34Smrg		      fi
569586dafe34Smrg		    fi
569686dafe34Smrg		esac
569786dafe34Smrg	      elif test "$hardcode_minus_L" = no; then
569886dafe34Smrg		case $host in
569986dafe34Smrg		*-*-sunos*) add_shlibpath="$dir" ;;
570086dafe34Smrg		esac
570186dafe34Smrg		add_dir="-L$dir"
570286dafe34Smrg		add="-l$name"
570386dafe34Smrg	      elif test "$hardcode_shlibpath_var" = no; then
570486dafe34Smrg		add_shlibpath="$dir"
570586dafe34Smrg		add="-l$name"
570686dafe34Smrg	      else
570786dafe34Smrg		lib_linked=no
570886dafe34Smrg	      fi
570986dafe34Smrg	      ;;
571086dafe34Smrg	    relink)
571186dafe34Smrg	      if test "$hardcode_direct" = yes &&
571286dafe34Smrg	         test "$hardcode_direct_absolute" = no; then
571386dafe34Smrg		add="$dir/$linklib"
571486dafe34Smrg	      elif test "$hardcode_minus_L" = yes; then
571586dafe34Smrg		add_dir="-L$dir"
571686dafe34Smrg		# Try looking first in the location we're being installed to.
571786dafe34Smrg		if test -n "$inst_prefix_dir"; then
571886dafe34Smrg		  case $libdir in
571986dafe34Smrg		    [\\/]*)
572086dafe34Smrg		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
572186dafe34Smrg		      ;;
572286dafe34Smrg		  esac
572386dafe34Smrg		fi
572486dafe34Smrg		add="-l$name"
572586dafe34Smrg	      elif test "$hardcode_shlibpath_var" = yes; then
572686dafe34Smrg		add_shlibpath="$dir"
572786dafe34Smrg		add="-l$name"
572886dafe34Smrg	      else
572986dafe34Smrg		lib_linked=no
573086dafe34Smrg	      fi
573186dafe34Smrg	      ;;
573286dafe34Smrg	    *) lib_linked=no ;;
573386dafe34Smrg	    esac
573486dafe34Smrg
573586dafe34Smrg	    if test "$lib_linked" != yes; then
573686dafe34Smrg	      func_fatal_configuration "unsupported hardcode properties"
573786dafe34Smrg	    fi
573886dafe34Smrg
573986dafe34Smrg	    if test -n "$add_shlibpath"; then
574086dafe34Smrg	      case :$compile_shlibpath: in
574186dafe34Smrg	      *":$add_shlibpath:"*) ;;
574286dafe34Smrg	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
574386dafe34Smrg	      esac
574486dafe34Smrg	    fi
574586dafe34Smrg	    if test "$linkmode" = prog; then
574686dafe34Smrg	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
574786dafe34Smrg	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
574886dafe34Smrg	    else
574986dafe34Smrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
575086dafe34Smrg	      test -n "$add" && deplibs="$add $deplibs"
575186dafe34Smrg	      if test "$hardcode_direct" != yes &&
575286dafe34Smrg		 test "$hardcode_minus_L" != yes &&
575386dafe34Smrg		 test "$hardcode_shlibpath_var" = yes; then
575486dafe34Smrg		case :$finalize_shlibpath: in
575586dafe34Smrg		*":$libdir:"*) ;;
575686dafe34Smrg		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
575786dafe34Smrg		esac
575886dafe34Smrg	      fi
575986dafe34Smrg	    fi
576086dafe34Smrg	  fi
576186dafe34Smrg
576286dafe34Smrg	  if test "$linkmode" = prog || test "$mode" = relink; then
576386dafe34Smrg	    add_shlibpath=
576486dafe34Smrg	    add_dir=
576586dafe34Smrg	    add=
576686dafe34Smrg	    # Finalize command for both is simple: just hardcode it.
576786dafe34Smrg	    if test "$hardcode_direct" = yes &&
576886dafe34Smrg	       test "$hardcode_direct_absolute" = no; then
576986dafe34Smrg	      add="$libdir/$linklib"
577086dafe34Smrg	    elif test "$hardcode_minus_L" = yes; then
577186dafe34Smrg	      add_dir="-L$libdir"
577286dafe34Smrg	      add="-l$name"
577386dafe34Smrg	    elif test "$hardcode_shlibpath_var" = yes; then
577486dafe34Smrg	      case :$finalize_shlibpath: in
577586dafe34Smrg	      *":$libdir:"*) ;;
577686dafe34Smrg	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
577786dafe34Smrg	      esac
577886dafe34Smrg	      add="-l$name"
577986dafe34Smrg	    elif test "$hardcode_automatic" = yes; then
578086dafe34Smrg	      if test -n "$inst_prefix_dir" &&
578186dafe34Smrg		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
578286dafe34Smrg		add="$inst_prefix_dir$libdir/$linklib"
578386dafe34Smrg	      else
578486dafe34Smrg		add="$libdir/$linklib"
578586dafe34Smrg	      fi
578686dafe34Smrg	    else
578786dafe34Smrg	      # We cannot seem to hardcode it, guess we'll fake it.
578886dafe34Smrg	      add_dir="-L$libdir"
578986dafe34Smrg	      # Try looking first in the location we're being installed to.
579086dafe34Smrg	      if test -n "$inst_prefix_dir"; then
579186dafe34Smrg		case $libdir in
579286dafe34Smrg		  [\\/]*)
579386dafe34Smrg		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
579486dafe34Smrg		    ;;
579586dafe34Smrg		esac
579686dafe34Smrg	      fi
579786dafe34Smrg	      add="-l$name"
579886dafe34Smrg	    fi
579986dafe34Smrg
580086dafe34Smrg	    if test "$linkmode" = prog; then
580186dafe34Smrg	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
580286dafe34Smrg	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
580386dafe34Smrg	    else
580486dafe34Smrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
580586dafe34Smrg	      test -n "$add" && deplibs="$add $deplibs"
580686dafe34Smrg	    fi
580786dafe34Smrg	  fi
580886dafe34Smrg	elif test "$linkmode" = prog; then
580986dafe34Smrg	  # Here we assume that one of hardcode_direct or hardcode_minus_L
581086dafe34Smrg	  # is not unsupported.  This is valid on all known static and
581186dafe34Smrg	  # shared platforms.
581286dafe34Smrg	  if test "$hardcode_direct" != unsupported; then
581386dafe34Smrg	    test -n "$old_library" && linklib="$old_library"
581486dafe34Smrg	    compile_deplibs="$dir/$linklib $compile_deplibs"
581586dafe34Smrg	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
581686dafe34Smrg	  else
581786dafe34Smrg	    compile_deplibs="-l$name -L$dir $compile_deplibs"
581886dafe34Smrg	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
581986dafe34Smrg	  fi
582086dafe34Smrg	elif test "$build_libtool_libs" = yes; then
582186dafe34Smrg	  # Not a shared library
582286dafe34Smrg	  if test "$deplibs_check_method" != pass_all; then
582386dafe34Smrg	    # We're trying link a shared library against a static one
582486dafe34Smrg	    # but the system doesn't support it.
582586dafe34Smrg
582686dafe34Smrg	    # Just print a warning and add the library to dependency_libs so
582786dafe34Smrg	    # that the program can be linked against the static library.
582886dafe34Smrg	    $ECHO
582986dafe34Smrg	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
583086dafe34Smrg	    $ECHO "*** I have the capability to make that library automatically link in when"
583186dafe34Smrg	    $ECHO "*** you link to this library.  But I can only do this if you have a"
583286dafe34Smrg	    $ECHO "*** shared version of the library, which you do not appear to have."
583386dafe34Smrg	    if test "$module" = yes; then
583486dafe34Smrg	      $ECHO "*** But as you try to build a module library, libtool will still create "
583586dafe34Smrg	      $ECHO "*** a static module, that should work as long as the dlopening application"
583686dafe34Smrg	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
583786dafe34Smrg	      if test -z "$global_symbol_pipe"; then
583886dafe34Smrg		$ECHO
583986dafe34Smrg		$ECHO "*** However, this would only work if libtool was able to extract symbol"
584086dafe34Smrg		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
584186dafe34Smrg		$ECHO "*** not find such a program.  So, this module is probably useless."
584286dafe34Smrg		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
584386dafe34Smrg	      fi
584486dafe34Smrg	      if test "$build_old_libs" = no; then
584586dafe34Smrg		build_libtool_libs=module
584686dafe34Smrg		build_old_libs=yes
584786dafe34Smrg	      else
584886dafe34Smrg		build_libtool_libs=no
584986dafe34Smrg	      fi
585086dafe34Smrg	    fi
585186dafe34Smrg	  else
585286dafe34Smrg	    deplibs="$dir/$old_library $deplibs"
585386dafe34Smrg	    link_static=yes
585486dafe34Smrg	  fi
585586dafe34Smrg	fi # link shared/static library?
585686dafe34Smrg
585786dafe34Smrg	if test "$linkmode" = lib; then
585886dafe34Smrg	  if test -n "$dependency_libs" &&
585986dafe34Smrg	     { test "$hardcode_into_libs" != yes ||
586086dafe34Smrg	       test "$build_old_libs" = yes ||
586186dafe34Smrg	       test "$link_static" = yes; }; then
586286dafe34Smrg	    # Extract -R from dependency_libs
586386dafe34Smrg	    temp_deplibs=
586486dafe34Smrg	    for libdir in $dependency_libs; do
586586dafe34Smrg	      case $libdir in
586686dafe34Smrg	      -R*) func_stripname '-R' '' "$libdir"
586786dafe34Smrg	           temp_xrpath=$func_stripname_result
586886dafe34Smrg		   case " $xrpath " in
586986dafe34Smrg		   *" $temp_xrpath "*) ;;
587086dafe34Smrg		   *) xrpath="$xrpath $temp_xrpath";;
587186dafe34Smrg		   esac;;
587286dafe34Smrg	      *) temp_deplibs="$temp_deplibs $libdir";;
587386dafe34Smrg	      esac
587486dafe34Smrg	    done
587586dafe34Smrg	    dependency_libs="$temp_deplibs"
587686dafe34Smrg	  fi
587786dafe34Smrg
587886dafe34Smrg	  newlib_search_path="$newlib_search_path $absdir"
587986dafe34Smrg	  # Link against this library
588086dafe34Smrg	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
588186dafe34Smrg	  # ... and its dependency_libs
588286dafe34Smrg	  tmp_libs=
588386dafe34Smrg	  for deplib in $dependency_libs; do
588486dafe34Smrg	    newdependency_libs="$deplib $newdependency_libs"
588586dafe34Smrg	    if $opt_duplicate_deps ; then
588686dafe34Smrg	      case "$tmp_libs " in
588786dafe34Smrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
588886dafe34Smrg	      esac
588986dafe34Smrg	    fi
589086dafe34Smrg	    tmp_libs="$tmp_libs $deplib"
589186dafe34Smrg	  done
589286dafe34Smrg
589386dafe34Smrg	  if test "$link_all_deplibs" != no; then
589486dafe34Smrg	    # Add the search paths of all dependency libraries
589586dafe34Smrg	    for deplib in $dependency_libs; do
589686dafe34Smrg	      case $deplib in
589786dafe34Smrg	      -L*) path="$deplib" ;;
589886dafe34Smrg	      *.la)
589986dafe34Smrg	        func_dirname "$deplib" "" "."
590086dafe34Smrg		dir="$func_dirname_result"
590186dafe34Smrg		# We need an absolute path.
590286dafe34Smrg		case $dir in
590386dafe34Smrg		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
590486dafe34Smrg		*)
590586dafe34Smrg		  absdir=`cd "$dir" && pwd`
590686dafe34Smrg		  if test -z "$absdir"; then
590786dafe34Smrg		    func_warning "cannot determine absolute directory name of \`$dir'"
590886dafe34Smrg		    absdir="$dir"
590986dafe34Smrg		  fi
591086dafe34Smrg		  ;;
591186dafe34Smrg		esac
591286dafe34Smrg		if $GREP "^installed=no" $deplib > /dev/null; then
591386dafe34Smrg		case $host in
591486dafe34Smrg		*-*-darwin*)
591586dafe34Smrg		  depdepl=
591686dafe34Smrg		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
591786dafe34Smrg		  if test -n "$deplibrary_names" ; then
591886dafe34Smrg		    for tmp in $deplibrary_names ; do
591986dafe34Smrg		      depdepl=$tmp
592086dafe34Smrg		    done
592186dafe34Smrg		    if test -f "$absdir/$objdir/$depdepl" ; then
592286dafe34Smrg		      depdepl="$absdir/$objdir/$depdepl"
592386dafe34Smrg		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
592486dafe34Smrg                      if test -z "$darwin_install_name"; then
592586dafe34Smrg                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
592686dafe34Smrg                      fi
592786dafe34Smrg		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
592886dafe34Smrg		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
592986dafe34Smrg		      path=
593086dafe34Smrg		    fi
593186dafe34Smrg		  fi
593286dafe34Smrg		  ;;
593386dafe34Smrg		*)
593486dafe34Smrg		  path="-L$absdir/$objdir"
593586dafe34Smrg		  ;;
593686dafe34Smrg		esac
593786dafe34Smrg		else
593886dafe34Smrg		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
593986dafe34Smrg		  test -z "$libdir" && \
594086dafe34Smrg		    func_fatal_error "\`$deplib' is not a valid libtool archive"
594186dafe34Smrg		  test "$absdir" != "$libdir" && \
594286dafe34Smrg		    func_warning "\`$deplib' seems to be moved"
594386dafe34Smrg
594486dafe34Smrg		  path="-L$absdir"
594586dafe34Smrg		fi
594686dafe34Smrg		;;
594786dafe34Smrg	      esac
594886dafe34Smrg	      case " $deplibs " in
594986dafe34Smrg	      *" $path "*) ;;
595086dafe34Smrg	      *) deplibs="$path $deplibs" ;;
595186dafe34Smrg	      esac
595286dafe34Smrg	    done
595386dafe34Smrg	  fi # link_all_deplibs != no
595486dafe34Smrg	fi # linkmode = lib
595586dafe34Smrg      done # for deplib in $libs
595686dafe34Smrg      if test "$pass" = link; then
595786dafe34Smrg	if test "$linkmode" = "prog"; then
595886dafe34Smrg	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
595986dafe34Smrg	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
596086dafe34Smrg	else
596186dafe34Smrg	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
596286dafe34Smrg	fi
596386dafe34Smrg      fi
596486dafe34Smrg      dependency_libs="$newdependency_libs"
596586dafe34Smrg      if test "$pass" = dlpreopen; then
596686dafe34Smrg	# Link the dlpreopened libraries before other libraries
596786dafe34Smrg	for deplib in $save_deplibs; do
596886dafe34Smrg	  deplibs="$deplib $deplibs"
596986dafe34Smrg	done
597086dafe34Smrg      fi
597186dafe34Smrg      if test "$pass" != dlopen; then
597286dafe34Smrg	if test "$pass" != conv; then
597386dafe34Smrg	  # Make sure lib_search_path contains only unique directories.
597486dafe34Smrg	  lib_search_path=
597586dafe34Smrg	  for dir in $newlib_search_path; do
597686dafe34Smrg	    case "$lib_search_path " in
597786dafe34Smrg	    *" $dir "*) ;;
597886dafe34Smrg	    *) lib_search_path="$lib_search_path $dir" ;;
597986dafe34Smrg	    esac
598086dafe34Smrg	  done
598186dafe34Smrg	  newlib_search_path=
598286dafe34Smrg	fi
598386dafe34Smrg
598486dafe34Smrg	if test "$linkmode,$pass" != "prog,link"; then
598586dafe34Smrg	  vars="deplibs"
598686dafe34Smrg	else
598786dafe34Smrg	  vars="compile_deplibs finalize_deplibs"
598886dafe34Smrg	fi
598986dafe34Smrg	for var in $vars dependency_libs; do
599086dafe34Smrg	  # Add libraries to $var in reverse order
599186dafe34Smrg	  eval tmp_libs=\"\$$var\"
599286dafe34Smrg	  new_libs=
599386dafe34Smrg	  for deplib in $tmp_libs; do
599486dafe34Smrg	    # FIXME: Pedantically, this is the right thing to do, so
599586dafe34Smrg	    #        that some nasty dependency loop isn't accidentally
599686dafe34Smrg	    #        broken:
599786dafe34Smrg	    #new_libs="$deplib $new_libs"
599886dafe34Smrg	    # Pragmatically, this seems to cause very few problems in
599986dafe34Smrg	    # practice:
600086dafe34Smrg	    case $deplib in
600186dafe34Smrg	    -L*) new_libs="$deplib $new_libs" ;;
600286dafe34Smrg	    -R*) ;;
600386dafe34Smrg	    *)
600486dafe34Smrg	      # And here is the reason: when a library appears more
600586dafe34Smrg	      # than once as an explicit dependence of a library, or
600686dafe34Smrg	      # is implicitly linked in more than once by the
600786dafe34Smrg	      # compiler, it is considered special, and multiple
600886dafe34Smrg	      # occurrences thereof are not removed.  Compare this
600986dafe34Smrg	      # with having the same library being listed as a
601086dafe34Smrg	      # dependency of multiple other libraries: in this case,
601186dafe34Smrg	      # we know (pedantically, we assume) the library does not
601286dafe34Smrg	      # need to be listed more than once, so we keep only the
601386dafe34Smrg	      # last copy.  This is not always right, but it is rare
601486dafe34Smrg	      # enough that we require users that really mean to play
601586dafe34Smrg	      # such unportable linking tricks to link the library
601686dafe34Smrg	      # using -Wl,-lname, so that libtool does not consider it
601786dafe34Smrg	      # for duplicate removal.
601886dafe34Smrg	      case " $specialdeplibs " in
601986dafe34Smrg	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
602086dafe34Smrg	      *)
602186dafe34Smrg		case " $new_libs " in
602286dafe34Smrg		*" $deplib "*) ;;
602386dafe34Smrg		*) new_libs="$deplib $new_libs" ;;
602486dafe34Smrg		esac
602586dafe34Smrg		;;
602686dafe34Smrg	      esac
602786dafe34Smrg	      ;;
602886dafe34Smrg	    esac
602986dafe34Smrg	  done
603086dafe34Smrg	  tmp_libs=
603186dafe34Smrg	  for deplib in $new_libs; do
603286dafe34Smrg	    case $deplib in
603386dafe34Smrg	    -L*)
603486dafe34Smrg	      case " $tmp_libs " in
603586dafe34Smrg	      *" $deplib "*) ;;
603686dafe34Smrg	      *) tmp_libs="$tmp_libs $deplib" ;;
603786dafe34Smrg	      esac
603886dafe34Smrg	      ;;
603986dafe34Smrg	    *) tmp_libs="$tmp_libs $deplib" ;;
604086dafe34Smrg	    esac
604186dafe34Smrg	  done
604286dafe34Smrg	  eval $var=\"$tmp_libs\"
604386dafe34Smrg	done # for var
604486dafe34Smrg      fi
604586dafe34Smrg      # Last step: remove runtime libs from dependency_libs
604686dafe34Smrg      # (they stay in deplibs)
604786dafe34Smrg      tmp_libs=
604886dafe34Smrg      for i in $dependency_libs ; do
604986dafe34Smrg	case " $predeps $postdeps $compiler_lib_search_path " in
605086dafe34Smrg	*" $i "*)
605186dafe34Smrg	  i=""
605286dafe34Smrg	  ;;
605386dafe34Smrg	esac
605486dafe34Smrg	if test -n "$i" ; then
605586dafe34Smrg	  tmp_libs="$tmp_libs $i"
605686dafe34Smrg	fi
605786dafe34Smrg      done
605886dafe34Smrg      dependency_libs=$tmp_libs
605986dafe34Smrg    done # for pass
606086dafe34Smrg    if test "$linkmode" = prog; then
606186dafe34Smrg      dlfiles="$newdlfiles"
606286dafe34Smrg    fi
606386dafe34Smrg    if test "$linkmode" = prog || test "$linkmode" = lib; then
606486dafe34Smrg      dlprefiles="$newdlprefiles"
606586dafe34Smrg    fi
606686dafe34Smrg
606786dafe34Smrg    case $linkmode in
606886dafe34Smrg    oldlib)
606986dafe34Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
607086dafe34Smrg	func_warning "\`-dlopen' is ignored for archives"
607186dafe34Smrg      fi
607286dafe34Smrg
607386dafe34Smrg      case " $deplibs" in
607486dafe34Smrg      *\ -l* | *\ -L*)
607586dafe34Smrg	func_warning "\`-l' and \`-L' are ignored for archives" ;;
607686dafe34Smrg      esac
607786dafe34Smrg
607886dafe34Smrg      test -n "$rpath" && \
607986dafe34Smrg	func_warning "\`-rpath' is ignored for archives"
608086dafe34Smrg
608186dafe34Smrg      test -n "$xrpath" && \
608286dafe34Smrg	func_warning "\`-R' is ignored for archives"
608386dafe34Smrg
608486dafe34Smrg      test -n "$vinfo" && \
608586dafe34Smrg	func_warning "\`-version-info/-version-number' is ignored for archives"
608686dafe34Smrg
608786dafe34Smrg      test -n "$release" && \
608886dafe34Smrg	func_warning "\`-release' is ignored for archives"
608986dafe34Smrg
609086dafe34Smrg      test -n "$export_symbols$export_symbols_regex" && \
609186dafe34Smrg	func_warning "\`-export-symbols' is ignored for archives"
609286dafe34Smrg
609386dafe34Smrg      # Now set the variables for building old libraries.
609486dafe34Smrg      build_libtool_libs=no
609586dafe34Smrg      oldlibs="$output"
609686dafe34Smrg      objs="$objs$old_deplibs"
609786dafe34Smrg      ;;
609886dafe34Smrg
609986dafe34Smrg    lib)
610086dafe34Smrg      # Make sure we only generate libraries of the form `libNAME.la'.
610186dafe34Smrg      case $outputname in
610286dafe34Smrg      lib*)
610386dafe34Smrg	func_stripname 'lib' '.la' "$outputname"
610486dafe34Smrg	name=$func_stripname_result
610586dafe34Smrg	eval shared_ext=\"$shrext_cmds\"
610686dafe34Smrg	eval libname=\"$libname_spec\"
610786dafe34Smrg	;;
610886dafe34Smrg      *)
610986dafe34Smrg	test "$module" = no && \
611086dafe34Smrg	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
611186dafe34Smrg
611286dafe34Smrg	if test "$need_lib_prefix" != no; then
611386dafe34Smrg	  # Add the "lib" prefix for modules if required
611486dafe34Smrg	  func_stripname '' '.la' "$outputname"
611586dafe34Smrg	  name=$func_stripname_result
611686dafe34Smrg	  eval shared_ext=\"$shrext_cmds\"
611786dafe34Smrg	  eval libname=\"$libname_spec\"
611886dafe34Smrg	else
611986dafe34Smrg	  func_stripname '' '.la' "$outputname"
612086dafe34Smrg	  libname=$func_stripname_result
612186dafe34Smrg	fi
612286dafe34Smrg	;;
612386dafe34Smrg      esac
612486dafe34Smrg
612586dafe34Smrg      if test -n "$objs"; then
612686dafe34Smrg	if test "$deplibs_check_method" != pass_all; then
612786dafe34Smrg	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
612886dafe34Smrg	else
612986dafe34Smrg	  $ECHO
613086dafe34Smrg	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
613186dafe34Smrg	  $ECHO "*** objects $objs is not portable!"
613286dafe34Smrg	  libobjs="$libobjs $objs"
613386dafe34Smrg	fi
613486dafe34Smrg      fi
613586dafe34Smrg
613686dafe34Smrg      test "$dlself" != no && \
613786dafe34Smrg	func_warning "\`-dlopen self' is ignored for libtool libraries"
613886dafe34Smrg
613986dafe34Smrg      set dummy $rpath
614086dafe34Smrg      shift
614186dafe34Smrg      test "$#" -gt 1 && \
614286dafe34Smrg	func_warning "ignoring multiple \`-rpath's for a libtool library"
614386dafe34Smrg
614486dafe34Smrg      install_libdir="$1"
614586dafe34Smrg
614686dafe34Smrg      oldlibs=
614786dafe34Smrg      if test -z "$rpath"; then
614886dafe34Smrg	if test "$build_libtool_libs" = yes; then
614986dafe34Smrg	  # Building a libtool convenience library.
615086dafe34Smrg	  # Some compilers have problems with a `.al' extension so
615186dafe34Smrg	  # convenience libraries should have the same extension an
615286dafe34Smrg	  # archive normally would.
615386dafe34Smrg	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
615486dafe34Smrg	  build_libtool_libs=convenience
615586dafe34Smrg	  build_old_libs=yes
615686dafe34Smrg	fi
615786dafe34Smrg
615886dafe34Smrg	test -n "$vinfo" && \
615986dafe34Smrg	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
616086dafe34Smrg
616186dafe34Smrg	test -n "$release" && \
616286dafe34Smrg	  func_warning "\`-release' is ignored for convenience libraries"
616386dafe34Smrg      else
616486dafe34Smrg
616586dafe34Smrg	# Parse the version information argument.
616686dafe34Smrg	save_ifs="$IFS"; IFS=':'
616786dafe34Smrg	set dummy $vinfo 0 0 0
616886dafe34Smrg	shift
616986dafe34Smrg	IFS="$save_ifs"
617086dafe34Smrg
617186dafe34Smrg	test -n "$7" && \
617286dafe34Smrg	  func_fatal_help "too many parameters to \`-version-info'"
617386dafe34Smrg
617486dafe34Smrg	# convert absolute version numbers to libtool ages
617586dafe34Smrg	# this retains compatibility with .la files and attempts
617686dafe34Smrg	# to make the code below a bit more comprehensible
617786dafe34Smrg
617886dafe34Smrg	case $vinfo_number in
617986dafe34Smrg	yes)
618086dafe34Smrg	  number_major="$1"
618186dafe34Smrg	  number_minor="$2"
618286dafe34Smrg	  number_revision="$3"
618386dafe34Smrg	  #
618486dafe34Smrg	  # There are really only two kinds -- those that
618586dafe34Smrg	  # use the current revision as the major version
618686dafe34Smrg	  # and those that subtract age and use age as
618786dafe34Smrg	  # a minor version.  But, then there is irix
618886dafe34Smrg	  # which has an extra 1 added just for fun
618986dafe34Smrg	  #
619086dafe34Smrg	  case $version_type in
619186dafe34Smrg	  darwin|linux|osf|windows|none)
619286dafe34Smrg	    func_arith $number_major + $number_minor
619386dafe34Smrg	    current=$func_arith_result
619486dafe34Smrg	    age="$number_minor"
619586dafe34Smrg	    revision="$number_revision"
619686dafe34Smrg	    ;;
619786dafe34Smrg	  freebsd-aout|freebsd-elf|sunos)
619886dafe34Smrg	    current="$number_major"
619986dafe34Smrg	    revision="$number_minor"
620086dafe34Smrg	    age="0"
620186dafe34Smrg	    ;;
620286dafe34Smrg	  irix|nonstopux)
620386dafe34Smrg	    func_arith $number_major + $number_minor
620486dafe34Smrg	    current=$func_arith_result
620586dafe34Smrg	    age="$number_minor"
620686dafe34Smrg	    revision="$number_minor"
620786dafe34Smrg	    lt_irix_increment=no
620886dafe34Smrg	    ;;
620986dafe34Smrg	  esac
621086dafe34Smrg	  ;;
621186dafe34Smrg	no)
621286dafe34Smrg	  current="$1"
621386dafe34Smrg	  revision="$2"
621486dafe34Smrg	  age="$3"
621586dafe34Smrg	  ;;
621686dafe34Smrg	esac
621786dafe34Smrg
621886dafe34Smrg	# Check that each of the things are valid numbers.
621986dafe34Smrg	case $current in
622086dafe34Smrg	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]) ;;
622186dafe34Smrg	*)
622286dafe34Smrg	  func_error "CURRENT \`$current' must be a nonnegative integer"
622386dafe34Smrg	  func_fatal_error "\`$vinfo' is not valid version information"
622486dafe34Smrg	  ;;
622586dafe34Smrg	esac
622686dafe34Smrg
622786dafe34Smrg	case $revision in
622886dafe34Smrg	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]) ;;
622986dafe34Smrg	*)
623086dafe34Smrg	  func_error "REVISION \`$revision' must be a nonnegative integer"
623186dafe34Smrg	  func_fatal_error "\`$vinfo' is not valid version information"
623286dafe34Smrg	  ;;
623386dafe34Smrg	esac
623486dafe34Smrg
623586dafe34Smrg	case $age in
623686dafe34Smrg	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]) ;;
623786dafe34Smrg	*)
623886dafe34Smrg	  func_error "AGE \`$age' must be a nonnegative integer"
623986dafe34Smrg	  func_fatal_error "\`$vinfo' is not valid version information"
624086dafe34Smrg	  ;;
624186dafe34Smrg	esac
624286dafe34Smrg
624386dafe34Smrg	if test "$age" -gt "$current"; then
624486dafe34Smrg	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
624586dafe34Smrg	  func_fatal_error "\`$vinfo' is not valid version information"
624686dafe34Smrg	fi
624786dafe34Smrg
624886dafe34Smrg	# Calculate the version variables.
624986dafe34Smrg	major=
625086dafe34Smrg	versuffix=
625186dafe34Smrg	verstring=
625286dafe34Smrg	case $version_type in
625386dafe34Smrg	none) ;;
625486dafe34Smrg
625586dafe34Smrg	darwin)
625686dafe34Smrg	  # Like Linux, but with the current version available in
625786dafe34Smrg	  # verstring for coding it into the library header
625886dafe34Smrg	  func_arith $current - $age
625986dafe34Smrg	  major=.$func_arith_result
626086dafe34Smrg	  versuffix="$major.$age.$revision"
626186dafe34Smrg	  # Darwin ld doesn't like 0 for these options...
626286dafe34Smrg	  func_arith $current + 1
626386dafe34Smrg	  minor_current=$func_arith_result
626486dafe34Smrg	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
626586dafe34Smrg	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
626686dafe34Smrg	  ;;
626786dafe34Smrg
626886dafe34Smrg	freebsd-aout)
626986dafe34Smrg	  major=".$current"
627086dafe34Smrg	  versuffix=".$current.$revision";
627186dafe34Smrg	  ;;
627286dafe34Smrg
627386dafe34Smrg	freebsd-elf)
627486dafe34Smrg	  major=".$current"
627586dafe34Smrg	  versuffix=".$current"
627686dafe34Smrg	  ;;
627786dafe34Smrg
627886dafe34Smrg	irix | nonstopux)
627986dafe34Smrg	  if test "X$lt_irix_increment" = "Xno"; then
628086dafe34Smrg	    func_arith $current - $age
628186dafe34Smrg	  else
628286dafe34Smrg	    func_arith $current - $age + 1
628386dafe34Smrg	  fi
628486dafe34Smrg	  major=$func_arith_result
628586dafe34Smrg
628686dafe34Smrg	  case $version_type in
628786dafe34Smrg	    nonstopux) verstring_prefix=nonstopux ;;
628886dafe34Smrg	    *)         verstring_prefix=sgi ;;
628986dafe34Smrg	  esac
629086dafe34Smrg	  verstring="$verstring_prefix$major.$revision"
629186dafe34Smrg
629286dafe34Smrg	  # Add in all the interfaces that we are compatible with.
629386dafe34Smrg	  loop=$revision
629486dafe34Smrg	  while test "$loop" -ne 0; do
629586dafe34Smrg	    func_arith $revision - $loop
629686dafe34Smrg	    iface=$func_arith_result
629786dafe34Smrg	    func_arith $loop - 1
629886dafe34Smrg	    loop=$func_arith_result
629986dafe34Smrg	    verstring="$verstring_prefix$major.$iface:$verstring"
630086dafe34Smrg	  done
630186dafe34Smrg
630286dafe34Smrg	  # Before this point, $major must not contain `.'.
630386dafe34Smrg	  major=.$major
630486dafe34Smrg	  versuffix="$major.$revision"
630586dafe34Smrg	  ;;
630686dafe34Smrg
630786dafe34Smrg	linux)
630886dafe34Smrg	  func_arith $current - $age
630986dafe34Smrg	  major=.$func_arith_result
631086dafe34Smrg	  versuffix="$major.$age.$revision"
631186dafe34Smrg	  ;;
631286dafe34Smrg
631386dafe34Smrg	osf)
631486dafe34Smrg	  func_arith $current - $age
631586dafe34Smrg	  major=.$func_arith_result
631686dafe34Smrg	  versuffix=".$current.$age.$revision"
631786dafe34Smrg	  verstring="$current.$age.$revision"
631886dafe34Smrg
631986dafe34Smrg	  # Add in all the interfaces that we are compatible with.
632086dafe34Smrg	  loop=$age
632186dafe34Smrg	  while test "$loop" -ne 0; do
632286dafe34Smrg	    func_arith $current - $loop
632386dafe34Smrg	    iface=$func_arith_result
632486dafe34Smrg	    func_arith $loop - 1
632586dafe34Smrg	    loop=$func_arith_result
632686dafe34Smrg	    verstring="$verstring:${iface}.0"
632786dafe34Smrg	  done
632886dafe34Smrg
632986dafe34Smrg	  # Make executables depend on our current version.
633086dafe34Smrg	  verstring="$verstring:${current}.0"
633186dafe34Smrg	  ;;
633286dafe34Smrg
633386dafe34Smrg	qnx)
633486dafe34Smrg	  major=".$current"
633586dafe34Smrg	  versuffix=".$current"
633686dafe34Smrg	  ;;
633786dafe34Smrg
633886dafe34Smrg	sunos)
633986dafe34Smrg	  major=".$current"
634086dafe34Smrg	  versuffix=".$current.$revision"
634186dafe34Smrg	  ;;
634286dafe34Smrg
634386dafe34Smrg	windows)
634486dafe34Smrg	  # Use '-' rather than '.', since we only want one
634586dafe34Smrg	  # extension on DOS 8.3 filesystems.
634686dafe34Smrg	  func_arith $current - $age
634786dafe34Smrg	  major=$func_arith_result
634886dafe34Smrg	  versuffix="-$major"
634986dafe34Smrg	  ;;
635086dafe34Smrg
635186dafe34Smrg	*)
635286dafe34Smrg	  func_fatal_configuration "unknown library version type \`$version_type'"
635386dafe34Smrg	  ;;
635486dafe34Smrg	esac
635586dafe34Smrg
635686dafe34Smrg	# Clear the version info if we defaulted, and they specified a release.
635786dafe34Smrg	if test -z "$vinfo" && test -n "$release"; then
635886dafe34Smrg	  major=
635986dafe34Smrg	  case $version_type in
636086dafe34Smrg	  darwin)
636186dafe34Smrg	    # we can't check for "0.0" in archive_cmds due to quoting
636286dafe34Smrg	    # problems, so we reset it completely
636386dafe34Smrg	    verstring=
636486dafe34Smrg	    ;;
636586dafe34Smrg	  *)
636686dafe34Smrg	    verstring="0.0"
636786dafe34Smrg	    ;;
636886dafe34Smrg	  esac
636986dafe34Smrg	  if test "$need_version" = no; then
637086dafe34Smrg	    versuffix=
637186dafe34Smrg	  else
637286dafe34Smrg	    versuffix=".0.0"
637386dafe34Smrg	  fi
637486dafe34Smrg	fi
637586dafe34Smrg
637686dafe34Smrg	# Remove version info from name if versioning should be avoided
637786dafe34Smrg	if test "$avoid_version" = yes && test "$need_version" = no; then
637886dafe34Smrg	  major=
637986dafe34Smrg	  versuffix=
638086dafe34Smrg	  verstring=""
638186dafe34Smrg	fi
638286dafe34Smrg
638386dafe34Smrg	# Check to see if the archive will have undefined symbols.
638486dafe34Smrg	if test "$allow_undefined" = yes; then
638586dafe34Smrg	  if test "$allow_undefined_flag" = unsupported; then
638686dafe34Smrg	    func_warning "undefined symbols not allowed in $host shared libraries"
638786dafe34Smrg	    build_libtool_libs=no
638886dafe34Smrg	    build_old_libs=yes
638986dafe34Smrg	  fi
639086dafe34Smrg	else
639186dafe34Smrg	  # Don't allow undefined symbols.
639286dafe34Smrg	  allow_undefined_flag="$no_undefined_flag"
639386dafe34Smrg	fi
639486dafe34Smrg
639586dafe34Smrg      fi
639686dafe34Smrg
639786dafe34Smrg      func_generate_dlsyms "$libname" "$libname" "yes"
639886dafe34Smrg      libobjs="$libobjs $symfileobj"
639986dafe34Smrg      test "X$libobjs" = "X " && libobjs=
640086dafe34Smrg
640186dafe34Smrg      if test "$mode" != relink; then
640286dafe34Smrg	# Remove our outputs, but don't remove object files since they
640386dafe34Smrg	# may have been created when compiling PIC objects.
640486dafe34Smrg	removelist=
640586dafe34Smrg	tempremovelist=`$ECHO "$output_objdir/*"`
640686dafe34Smrg	for p in $tempremovelist; do
640786dafe34Smrg	  case $p in
640886dafe34Smrg	    *.$objext | *.gcno)
640986dafe34Smrg	       ;;
641086dafe34Smrg	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
641186dafe34Smrg	       if test "X$precious_files_regex" != "X"; then
641286dafe34Smrg		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
641386dafe34Smrg		 then
641486dafe34Smrg		   continue
641586dafe34Smrg		 fi
641686dafe34Smrg	       fi
641786dafe34Smrg	       removelist="$removelist $p"
641886dafe34Smrg	       ;;
641986dafe34Smrg	    *) ;;
642086dafe34Smrg	  esac
642186dafe34Smrg	done
642286dafe34Smrg	test -n "$removelist" && \
642386dafe34Smrg	  func_show_eval "${RM}r \$removelist"
642486dafe34Smrg      fi
642586dafe34Smrg
642686dafe34Smrg      # Now set the variables for building old libraries.
642786dafe34Smrg      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
642886dafe34Smrg	oldlibs="$oldlibs $output_objdir/$libname.$libext"
642986dafe34Smrg
643086dafe34Smrg	# Transform .lo files to .o files.
643186dafe34Smrg	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
643286dafe34Smrg      fi
643386dafe34Smrg
643486dafe34Smrg      # Eliminate all temporary directories.
643586dafe34Smrg      #for path in $notinst_path; do
643686dafe34Smrg      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
643786dafe34Smrg      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
643886dafe34Smrg      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
643986dafe34Smrg      #done
644086dafe34Smrg
644186dafe34Smrg      if test -n "$xrpath"; then
644286dafe34Smrg	# If the user specified any rpath flags, then add them.
644386dafe34Smrg	temp_xrpath=
644486dafe34Smrg	for libdir in $xrpath; do
644586dafe34Smrg	  temp_xrpath="$temp_xrpath -R$libdir"
644686dafe34Smrg	  case "$finalize_rpath " in
644786dafe34Smrg	  *" $libdir "*) ;;
644886dafe34Smrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
644986dafe34Smrg	  esac
645086dafe34Smrg	done
645186dafe34Smrg	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
645286dafe34Smrg	  dependency_libs="$temp_xrpath $dependency_libs"
645386dafe34Smrg	fi
645486dafe34Smrg      fi
645586dafe34Smrg
645686dafe34Smrg      # Make sure dlfiles contains only unique files that won't be dlpreopened
645786dafe34Smrg      old_dlfiles="$dlfiles"
645886dafe34Smrg      dlfiles=
645986dafe34Smrg      for lib in $old_dlfiles; do
646086dafe34Smrg	case " $dlprefiles $dlfiles " in
646186dafe34Smrg	*" $lib "*) ;;
646286dafe34Smrg	*) dlfiles="$dlfiles $lib" ;;
646386dafe34Smrg	esac
646486dafe34Smrg      done
646586dafe34Smrg
646686dafe34Smrg      # Make sure dlprefiles contains only unique files
646786dafe34Smrg      old_dlprefiles="$dlprefiles"
646886dafe34Smrg      dlprefiles=
646986dafe34Smrg      for lib in $old_dlprefiles; do
647086dafe34Smrg	case "$dlprefiles " in
647186dafe34Smrg	*" $lib "*) ;;
647286dafe34Smrg	*) dlprefiles="$dlprefiles $lib" ;;
647386dafe34Smrg	esac
647486dafe34Smrg      done
647586dafe34Smrg
647686dafe34Smrg      if test "$build_libtool_libs" = yes; then
647786dafe34Smrg	if test -n "$rpath"; then
647886dafe34Smrg	  case $host in
647986dafe34Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
648086dafe34Smrg	    # these systems don't actually have a c library (as such)!
648186dafe34Smrg	    ;;
648286dafe34Smrg	  *-*-rhapsody* | *-*-darwin1.[012])
648386dafe34Smrg	    # Rhapsody C library is in the System framework
648486dafe34Smrg	    deplibs="$deplibs System.ltframework"
648586dafe34Smrg	    ;;
648686dafe34Smrg	  *-*-netbsd*)
648786dafe34Smrg	    # Don't link with libc until the a.out ld.so is fixed.
648886dafe34Smrg	    ;;
648986dafe34Smrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
649086dafe34Smrg	    # Do not include libc due to us having libc/libc_r.
649186dafe34Smrg	    ;;
649286dafe34Smrg	  *-*-sco3.2v5* | *-*-sco5v6*)
649386dafe34Smrg	    # Causes problems with __ctype
649486dafe34Smrg	    ;;
649586dafe34Smrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
649686dafe34Smrg	    # Compiler inserts libc in the correct place for threads to work
649786dafe34Smrg	    ;;
649886dafe34Smrg	  *)
649986dafe34Smrg	    # Add libc to deplibs on all other systems if necessary.
650086dafe34Smrg	    if test "$build_libtool_need_lc" = "yes"; then
650186dafe34Smrg	      deplibs="$deplibs -lc"
650286dafe34Smrg	    fi
650386dafe34Smrg	    ;;
650486dafe34Smrg	  esac
650586dafe34Smrg	fi
650686dafe34Smrg
650786dafe34Smrg	# Transform deplibs into only deplibs that can be linked in shared.
650886dafe34Smrg	name_save=$name
650986dafe34Smrg	libname_save=$libname
651086dafe34Smrg	release_save=$release
651186dafe34Smrg	versuffix_save=$versuffix
651286dafe34Smrg	major_save=$major
651386dafe34Smrg	# I'm not sure if I'm treating the release correctly.  I think
651486dafe34Smrg	# release should show up in the -l (ie -lgmp5) so we don't want to
651586dafe34Smrg	# add it in twice.  Is that correct?
651686dafe34Smrg	release=""
651786dafe34Smrg	versuffix=""
651886dafe34Smrg	major=""
651986dafe34Smrg	newdeplibs=
652086dafe34Smrg	droppeddeps=no
652186dafe34Smrg	case $deplibs_check_method in
652286dafe34Smrg	pass_all)
652386dafe34Smrg	  # Don't check for shared/static.  Everything works.
652486dafe34Smrg	  # This might be a little naive.  We might want to check
652586dafe34Smrg	  # whether the library exists or not.  But this is on
652686dafe34Smrg	  # osf3 & osf4 and I'm not really sure... Just
652786dafe34Smrg	  # implementing what was already the behavior.
652886dafe34Smrg	  newdeplibs=$deplibs
652986dafe34Smrg	  ;;
653086dafe34Smrg	test_compile)
653186dafe34Smrg	  # This code stresses the "libraries are programs" paradigm to its
653286dafe34Smrg	  # limits. Maybe even breaks it.  We compile a program, linking it
653386dafe34Smrg	  # against the deplibs as a proxy for the library.  Then we can check
653486dafe34Smrg	  # whether they linked in statically or dynamically with ldd.
653586dafe34Smrg	  $opt_dry_run || $RM conftest.c
653686dafe34Smrg	  cat > conftest.c <<EOF
653786dafe34Smrg	  int main() { return 0; }
653886dafe34SmrgEOF
653986dafe34Smrg	  $opt_dry_run || $RM conftest
654086dafe34Smrg	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
654186dafe34Smrg	    ldd_output=`ldd conftest`
654286dafe34Smrg	    for i in $deplibs; do
654386dafe34Smrg	      case $i in
654486dafe34Smrg	      -l*)
654586dafe34Smrg		func_stripname -l '' "$i"
654686dafe34Smrg		name=$func_stripname_result
654786dafe34Smrg		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
654886dafe34Smrg		  case " $predeps $postdeps " in
654986dafe34Smrg		  *" $i "*)
655086dafe34Smrg		    newdeplibs="$newdeplibs $i"
655186dafe34Smrg		    i=""
655286dafe34Smrg		    ;;
655386dafe34Smrg		  esac
655486dafe34Smrg		fi
655586dafe34Smrg		if test -n "$i" ; then
655686dafe34Smrg		  libname=`eval "\\$ECHO \"$libname_spec\""`
655786dafe34Smrg		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
655886dafe34Smrg		  set dummy $deplib_matches; shift
655986dafe34Smrg		  deplib_match=$1
656086dafe34Smrg		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
656186dafe34Smrg		    newdeplibs="$newdeplibs $i"
656286dafe34Smrg		  else
656386dafe34Smrg		    droppeddeps=yes
656486dafe34Smrg		    $ECHO
656586dafe34Smrg		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
656686dafe34Smrg		    $ECHO "*** I have the capability to make that library automatically link in when"
656786dafe34Smrg		    $ECHO "*** you link to this library.  But I can only do this if you have a"
656886dafe34Smrg		    $ECHO "*** shared version of the library, which I believe you do not have"
656986dafe34Smrg		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
657086dafe34Smrg		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
657186dafe34Smrg		  fi
657286dafe34Smrg		fi
657386dafe34Smrg		;;
657486dafe34Smrg	      *)
657586dafe34Smrg		newdeplibs="$newdeplibs $i"
657686dafe34Smrg		;;
657786dafe34Smrg	      esac
657886dafe34Smrg	    done
657986dafe34Smrg	  else
658086dafe34Smrg	    # Error occurred in the first compile.  Let's try to salvage
658186dafe34Smrg	    # the situation: Compile a separate program for each library.
658286dafe34Smrg	    for i in $deplibs; do
658386dafe34Smrg	      case $i in
658486dafe34Smrg	      -l*)
658586dafe34Smrg		func_stripname -l '' "$i"
658686dafe34Smrg		name=$func_stripname_result
658786dafe34Smrg		$opt_dry_run || $RM conftest
658886dafe34Smrg		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
658986dafe34Smrg		  ldd_output=`ldd conftest`
659086dafe34Smrg		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
659186dafe34Smrg		    case " $predeps $postdeps " in
659286dafe34Smrg		    *" $i "*)
659386dafe34Smrg		      newdeplibs="$newdeplibs $i"
659486dafe34Smrg		      i=""
659586dafe34Smrg		      ;;
659686dafe34Smrg		    esac
659786dafe34Smrg		  fi
659886dafe34Smrg		  if test -n "$i" ; then
659986dafe34Smrg		    libname=`eval "\\$ECHO \"$libname_spec\""`
660086dafe34Smrg		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
660186dafe34Smrg		    set dummy $deplib_matches; shift
660286dafe34Smrg		    deplib_match=$1
660386dafe34Smrg		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
660486dafe34Smrg		      newdeplibs="$newdeplibs $i"
660586dafe34Smrg		    else
660686dafe34Smrg		      droppeddeps=yes
660786dafe34Smrg		      $ECHO
660886dafe34Smrg		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
660986dafe34Smrg		      $ECHO "*** I have the capability to make that library automatically link in when"
661086dafe34Smrg		      $ECHO "*** you link to this library.  But I can only do this if you have a"
661186dafe34Smrg		      $ECHO "*** shared version of the library, which you do not appear to have"
661286dafe34Smrg		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
661386dafe34Smrg		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
661486dafe34Smrg		    fi
661586dafe34Smrg		  fi
661686dafe34Smrg		else
661786dafe34Smrg		  droppeddeps=yes
661886dafe34Smrg		  $ECHO
661986dafe34Smrg		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
662086dafe34Smrg		  $ECHO "*** make it link in!  You will probably need to install it or some"
662186dafe34Smrg		  $ECHO "*** library that it depends on before this library will be fully"
662286dafe34Smrg		  $ECHO "*** functional.  Installing it before continuing would be even better."
662386dafe34Smrg		fi
662486dafe34Smrg		;;
662586dafe34Smrg	      *)
662686dafe34Smrg		newdeplibs="$newdeplibs $i"
662786dafe34Smrg		;;
662886dafe34Smrg	      esac
662986dafe34Smrg	    done
663086dafe34Smrg	  fi
663186dafe34Smrg	  ;;
663286dafe34Smrg	file_magic*)
663386dafe34Smrg	  set dummy $deplibs_check_method; shift
663486dafe34Smrg	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
663586dafe34Smrg	  for a_deplib in $deplibs; do
663686dafe34Smrg	    case $a_deplib in
663786dafe34Smrg	    -l*)
663886dafe34Smrg	      func_stripname -l '' "$a_deplib"
663986dafe34Smrg	      name=$func_stripname_result
664086dafe34Smrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
664186dafe34Smrg		case " $predeps $postdeps " in
664286dafe34Smrg		*" $a_deplib "*)
664386dafe34Smrg		  newdeplibs="$newdeplibs $a_deplib"
664486dafe34Smrg		  a_deplib=""
664586dafe34Smrg		  ;;
664686dafe34Smrg		esac
664786dafe34Smrg	      fi
664886dafe34Smrg	      if test -n "$a_deplib" ; then
664986dafe34Smrg		libname=`eval "\\$ECHO \"$libname_spec\""`
665086dafe34Smrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
665186dafe34Smrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
665286dafe34Smrg		  for potent_lib in $potential_libs; do
665386dafe34Smrg		      # Follow soft links.
665486dafe34Smrg		      if ls -lLd "$potent_lib" 2>/dev/null |
665586dafe34Smrg			 $GREP " -> " >/dev/null; then
665686dafe34Smrg			continue
665786dafe34Smrg		      fi
665886dafe34Smrg		      # The statement above tries to avoid entering an
665986dafe34Smrg		      # endless loop below, in case of cyclic links.
666086dafe34Smrg		      # We might still enter an endless loop, since a link
666186dafe34Smrg		      # loop can be closed while we follow links,
666286dafe34Smrg		      # but so what?
666386dafe34Smrg		      potlib="$potent_lib"
666486dafe34Smrg		      while test -h "$potlib" 2>/dev/null; do
666586dafe34Smrg			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
666686dafe34Smrg			case $potliblink in
666786dafe34Smrg			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
666886dafe34Smrg			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
666986dafe34Smrg			esac
667086dafe34Smrg		      done
667186dafe34Smrg		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
667286dafe34Smrg			 $SED -e 10q |
667386dafe34Smrg			 $EGREP "$file_magic_regex" > /dev/null; then
667486dafe34Smrg			newdeplibs="$newdeplibs $a_deplib"
667586dafe34Smrg			a_deplib=""
667686dafe34Smrg			break 2
667786dafe34Smrg		      fi
667886dafe34Smrg		  done
667986dafe34Smrg		done
668086dafe34Smrg	      fi
668186dafe34Smrg	      if test -n "$a_deplib" ; then
668286dafe34Smrg		droppeddeps=yes
668386dafe34Smrg		$ECHO
668486dafe34Smrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
668586dafe34Smrg		$ECHO "*** I have the capability to make that library automatically link in when"
668686dafe34Smrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
668786dafe34Smrg		$ECHO "*** shared version of the library, which you do not appear to have"
668886dafe34Smrg		$ECHO "*** because I did check the linker path looking for a file starting"
668986dafe34Smrg		if test -z "$potlib" ; then
669086dafe34Smrg		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
669186dafe34Smrg		else
669286dafe34Smrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
669386dafe34Smrg		  $ECHO "*** using a file magic. Last file checked: $potlib"
669486dafe34Smrg		fi
669586dafe34Smrg	      fi
669686dafe34Smrg	      ;;
669786dafe34Smrg	    *)
669886dafe34Smrg	      # Add a -L argument.
669986dafe34Smrg	      newdeplibs="$newdeplibs $a_deplib"
670086dafe34Smrg	      ;;
670186dafe34Smrg	    esac
670286dafe34Smrg	  done # Gone through all deplibs.
670386dafe34Smrg	  ;;
670486dafe34Smrg	match_pattern*)
670586dafe34Smrg	  set dummy $deplibs_check_method; shift
670686dafe34Smrg	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
670786dafe34Smrg	  for a_deplib in $deplibs; do
670886dafe34Smrg	    case $a_deplib in
670986dafe34Smrg	    -l*)
671086dafe34Smrg	      func_stripname -l '' "$a_deplib"
671186dafe34Smrg	      name=$func_stripname_result
671286dafe34Smrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
671386dafe34Smrg		case " $predeps $postdeps " in
671486dafe34Smrg		*" $a_deplib "*)
671586dafe34Smrg		  newdeplibs="$newdeplibs $a_deplib"
671686dafe34Smrg		  a_deplib=""
671786dafe34Smrg		  ;;
671886dafe34Smrg		esac
671986dafe34Smrg	      fi
672086dafe34Smrg	      if test -n "$a_deplib" ; then
672186dafe34Smrg		libname=`eval "\\$ECHO \"$libname_spec\""`
672286dafe34Smrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
672386dafe34Smrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
672486dafe34Smrg		  for potent_lib in $potential_libs; do
672586dafe34Smrg		    potlib="$potent_lib" # see symlink-check above in file_magic test
672686dafe34Smrg		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
672786dafe34Smrg		       $EGREP "$match_pattern_regex" > /dev/null; then
672886dafe34Smrg		      newdeplibs="$newdeplibs $a_deplib"
672986dafe34Smrg		      a_deplib=""
673086dafe34Smrg		      break 2
673186dafe34Smrg		    fi
673286dafe34Smrg		  done
673386dafe34Smrg		done
673486dafe34Smrg	      fi
673586dafe34Smrg	      if test -n "$a_deplib" ; then
673686dafe34Smrg		droppeddeps=yes
673786dafe34Smrg		$ECHO
673886dafe34Smrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
673986dafe34Smrg		$ECHO "*** I have the capability to make that library automatically link in when"
674086dafe34Smrg		$ECHO "*** you link to this library.  But I can only do this if you have a"
674186dafe34Smrg		$ECHO "*** shared version of the library, which you do not appear to have"
674286dafe34Smrg		$ECHO "*** because I did check the linker path looking for a file starting"
674386dafe34Smrg		if test -z "$potlib" ; then
674486dafe34Smrg		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
674586dafe34Smrg		else
674686dafe34Smrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
674786dafe34Smrg		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
674886dafe34Smrg		fi
674986dafe34Smrg	      fi
675086dafe34Smrg	      ;;
675186dafe34Smrg	    *)
675286dafe34Smrg	      # Add a -L argument.
675386dafe34Smrg	      newdeplibs="$newdeplibs $a_deplib"
675486dafe34Smrg	      ;;
675586dafe34Smrg	    esac
675686dafe34Smrg	  done # Gone through all deplibs.
675786dafe34Smrg	  ;;
675886dafe34Smrg	none | unknown | *)
675986dafe34Smrg	  newdeplibs=""
676086dafe34Smrg	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
676186dafe34Smrg	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
676286dafe34Smrg	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
676386dafe34Smrg	    for i in $predeps $postdeps ; do
676486dafe34Smrg	      # can't use Xsed below, because $i might contain '/'
676586dafe34Smrg	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
676686dafe34Smrg	    done
676786dafe34Smrg	  fi
676886dafe34Smrg	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
676986dafe34Smrg	     $GREP . >/dev/null; then
677086dafe34Smrg	    $ECHO
677186dafe34Smrg	    if test "X$deplibs_check_method" = "Xnone"; then
677286dafe34Smrg	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
677386dafe34Smrg	    else
677486dafe34Smrg	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
677586dafe34Smrg	    fi
677686dafe34Smrg	    $ECHO "*** All declared inter-library dependencies are being dropped."
677786dafe34Smrg	    droppeddeps=yes
677886dafe34Smrg	  fi
677986dafe34Smrg	  ;;
678086dafe34Smrg	esac
678186dafe34Smrg	versuffix=$versuffix_save
678286dafe34Smrg	major=$major_save
678386dafe34Smrg	release=$release_save
678486dafe34Smrg	libname=$libname_save
678586dafe34Smrg	name=$name_save
678686dafe34Smrg
678786dafe34Smrg	case $host in
678886dafe34Smrg	*-*-rhapsody* | *-*-darwin1.[012])
678986dafe34Smrg	  # On Rhapsody replace the C library with the System framework
679086dafe34Smrg	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
679186dafe34Smrg	  ;;
679286dafe34Smrg	esac
679386dafe34Smrg
679486dafe34Smrg	if test "$droppeddeps" = yes; then
679586dafe34Smrg	  if test "$module" = yes; then
679686dafe34Smrg	    $ECHO
679786dafe34Smrg	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
679886dafe34Smrg	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
679986dafe34Smrg	    $ECHO "*** a static module, that should work as long as the dlopening"
680086dafe34Smrg	    $ECHO "*** application is linked with the -dlopen flag."
680186dafe34Smrg	    if test -z "$global_symbol_pipe"; then
680286dafe34Smrg	      $ECHO
680386dafe34Smrg	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
680486dafe34Smrg	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
680586dafe34Smrg	      $ECHO "*** not find such a program.  So, this module is probably useless."
680686dafe34Smrg	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
680786dafe34Smrg	    fi
680886dafe34Smrg	    if test "$build_old_libs" = no; then
680986dafe34Smrg	      oldlibs="$output_objdir/$libname.$libext"
681086dafe34Smrg	      build_libtool_libs=module
681186dafe34Smrg	      build_old_libs=yes
681286dafe34Smrg	    else
681386dafe34Smrg	      build_libtool_libs=no
681486dafe34Smrg	    fi
681586dafe34Smrg	  else
681686dafe34Smrg	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
681786dafe34Smrg	    $ECHO "*** automatically added whenever a program is linked with this library"
681886dafe34Smrg	    $ECHO "*** or is declared to -dlopen it."
681986dafe34Smrg
682086dafe34Smrg	    if test "$allow_undefined" = no; then
682186dafe34Smrg	      $ECHO
682286dafe34Smrg	      $ECHO "*** Since this library must not contain undefined symbols,"
682386dafe34Smrg	      $ECHO "*** because either the platform does not support them or"
682486dafe34Smrg	      $ECHO "*** it was explicitly requested with -no-undefined,"
682586dafe34Smrg	      $ECHO "*** libtool will only create a static version of it."
682686dafe34Smrg	      if test "$build_old_libs" = no; then
682786dafe34Smrg		oldlibs="$output_objdir/$libname.$libext"
682886dafe34Smrg		build_libtool_libs=module
682986dafe34Smrg		build_old_libs=yes
683086dafe34Smrg	      else
683186dafe34Smrg		build_libtool_libs=no
683286dafe34Smrg	      fi
683386dafe34Smrg	    fi
683486dafe34Smrg	  fi
683586dafe34Smrg	fi
683686dafe34Smrg	# Done checking deplibs!
683786dafe34Smrg	deplibs=$newdeplibs
683886dafe34Smrg      fi
683986dafe34Smrg      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
684086dafe34Smrg      case $host in
684186dafe34Smrg	*-*-darwin*)
684286dafe34Smrg	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
684386dafe34Smrg	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
684486dafe34Smrg	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
684586dafe34Smrg	  ;;
684686dafe34Smrg      esac
684786dafe34Smrg
684886dafe34Smrg      # move library search paths that coincide with paths to not yet
684986dafe34Smrg      # installed libraries to the beginning of the library search list
685086dafe34Smrg      new_libs=
685186dafe34Smrg      for path in $notinst_path; do
685286dafe34Smrg	case " $new_libs " in
685386dafe34Smrg	*" -L$path/$objdir "*) ;;
685486dafe34Smrg	*)
685586dafe34Smrg	  case " $deplibs " in
685686dafe34Smrg	  *" -L$path/$objdir "*)
685786dafe34Smrg	    new_libs="$new_libs -L$path/$objdir" ;;
685886dafe34Smrg	  esac
685986dafe34Smrg	  ;;
686086dafe34Smrg	esac
686186dafe34Smrg      done
686286dafe34Smrg      for deplib in $deplibs; do
686386dafe34Smrg	case $deplib in
686486dafe34Smrg	-L*)
686586dafe34Smrg	  case " $new_libs " in
686686dafe34Smrg	  *" $deplib "*) ;;
686786dafe34Smrg	  *) new_libs="$new_libs $deplib" ;;
686886dafe34Smrg	  esac
686986dafe34Smrg	  ;;
687086dafe34Smrg	*) new_libs="$new_libs $deplib" ;;
687186dafe34Smrg	esac
687286dafe34Smrg      done
687386dafe34Smrg      deplibs="$new_libs"
687486dafe34Smrg
687586dafe34Smrg      # All the library-specific variables (install_libdir is set above).
687686dafe34Smrg      library_names=
687786dafe34Smrg      old_library=
687886dafe34Smrg      dlname=
687986dafe34Smrg
688086dafe34Smrg      # Test again, we may have decided not to build it any more
688186dafe34Smrg      if test "$build_libtool_libs" = yes; then
688286dafe34Smrg	if test "$hardcode_into_libs" = yes; then
688386dafe34Smrg	  # Hardcode the library paths
688486dafe34Smrg	  hardcode_libdirs=
688586dafe34Smrg	  dep_rpath=
688686dafe34Smrg	  rpath="$finalize_rpath"
688786dafe34Smrg	  test "$mode" != relink && rpath="$compile_rpath$rpath"
688886dafe34Smrg	  for libdir in $rpath; do
688986dafe34Smrg	    if test -n "$hardcode_libdir_flag_spec"; then
689086dafe34Smrg	      if test -n "$hardcode_libdir_separator"; then
689186dafe34Smrg		if test -z "$hardcode_libdirs"; then
689286dafe34Smrg		  hardcode_libdirs="$libdir"
689386dafe34Smrg		else
689486dafe34Smrg		  # Just accumulate the unique libdirs.
689586dafe34Smrg		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
689686dafe34Smrg		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
689786dafe34Smrg		    ;;
689886dafe34Smrg		  *)
689986dafe34Smrg		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
690086dafe34Smrg		    ;;
690186dafe34Smrg		  esac
690286dafe34Smrg		fi
690386dafe34Smrg	      else
690486dafe34Smrg		eval flag=\"$hardcode_libdir_flag_spec\"
690586dafe34Smrg		dep_rpath="$dep_rpath $flag"
690686dafe34Smrg	      fi
690786dafe34Smrg	    elif test -n "$runpath_var"; then
690886dafe34Smrg	      case "$perm_rpath " in
690986dafe34Smrg	      *" $libdir "*) ;;
691086dafe34Smrg	      *) perm_rpath="$perm_rpath $libdir" ;;
691186dafe34Smrg	      esac
691286dafe34Smrg	    fi
691386dafe34Smrg	  done
691486dafe34Smrg	  # Substitute the hardcoded libdirs into the rpath.
691586dafe34Smrg	  if test -n "$hardcode_libdir_separator" &&
691686dafe34Smrg	     test -n "$hardcode_libdirs"; then
691786dafe34Smrg	    libdir="$hardcode_libdirs"
691886dafe34Smrg	    if test -n "$hardcode_libdir_flag_spec_ld"; then
691986dafe34Smrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
692086dafe34Smrg	    else
692186dafe34Smrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
692286dafe34Smrg	    fi
692386dafe34Smrg	  fi
692486dafe34Smrg	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
692586dafe34Smrg	    # We should set the runpath_var.
692686dafe34Smrg	    rpath=
692786dafe34Smrg	    for dir in $perm_rpath; do
692886dafe34Smrg	      rpath="$rpath$dir:"
692986dafe34Smrg	    done
693086dafe34Smrg	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
693186dafe34Smrg	  fi
693286dafe34Smrg	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
693386dafe34Smrg	fi
693476888252Smrg
693586dafe34Smrg	shlibpath="$finalize_shlibpath"
693686dafe34Smrg	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
693786dafe34Smrg	if test -n "$shlibpath"; then
693886dafe34Smrg	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
693986dafe34Smrg	fi
694076888252Smrg
694186dafe34Smrg	# Get the real and link names of the library.
694286dafe34Smrg	eval shared_ext=\"$shrext_cmds\"
694386dafe34Smrg	eval library_names=\"$library_names_spec\"
694486dafe34Smrg	set dummy $library_names
694586dafe34Smrg	shift
694686dafe34Smrg	realname="$1"
694786dafe34Smrg	shift
694876888252Smrg
694986dafe34Smrg	if test -n "$soname_spec"; then
695086dafe34Smrg	  eval soname=\"$soname_spec\"
695186dafe34Smrg	else
695286dafe34Smrg	  soname="$realname"
695386dafe34Smrg	fi
695486dafe34Smrg	if test -z "$dlname"; then
695586dafe34Smrg	  dlname=$soname
695686dafe34Smrg	fi
695776888252Smrg
695886dafe34Smrg	lib="$output_objdir/$realname"
695986dafe34Smrg	linknames=
696086dafe34Smrg	for link
696186dafe34Smrg	do
696286dafe34Smrg	  linknames="$linknames $link"
696386dafe34Smrg	done
696476888252Smrg
696586dafe34Smrg	# Use standard objects if they are pic
696686dafe34Smrg	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
696786dafe34Smrg	test "X$libobjs" = "X " && libobjs=
696876888252Smrg
696986dafe34Smrg	delfiles=
697086dafe34Smrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
697186dafe34Smrg	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
697286dafe34Smrg	  export_symbols="$output_objdir/$libname.uexp"
697386dafe34Smrg	  delfiles="$delfiles $export_symbols"
697486dafe34Smrg	fi
697576888252Smrg
697686dafe34Smrg	orig_export_symbols=
697786dafe34Smrg	case $host_os in
697886dafe34Smrg	cygwin* | mingw* | cegcc*)
697986dafe34Smrg	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
698086dafe34Smrg	    # exporting using user supplied symfile
698186dafe34Smrg	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
698286dafe34Smrg	      # and it's NOT already a .def file. Must figure out
698386dafe34Smrg	      # which of the given symbols are data symbols and tag
698486dafe34Smrg	      # them as such. So, trigger use of export_symbols_cmds.
698586dafe34Smrg	      # export_symbols gets reassigned inside the "prepare
698686dafe34Smrg	      # the list of exported symbols" if statement, so the
698786dafe34Smrg	      # include_expsyms logic still works.
698886dafe34Smrg	      orig_export_symbols="$export_symbols"
698986dafe34Smrg	      export_symbols=
699086dafe34Smrg	      always_export_symbols=yes
699186dafe34Smrg	    fi
699286dafe34Smrg	  fi
699386dafe34Smrg	  ;;
699486dafe34Smrg	esac
699576888252Smrg
699686dafe34Smrg	# Prepare the list of exported symbols
699786dafe34Smrg	if test -z "$export_symbols"; then
699886dafe34Smrg	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
699986dafe34Smrg	    func_verbose "generating symbol list for \`$libname.la'"
700086dafe34Smrg	    export_symbols="$output_objdir/$libname.exp"
700186dafe34Smrg	    $opt_dry_run || $RM $export_symbols
700286dafe34Smrg	    cmds=$export_symbols_cmds
700386dafe34Smrg	    save_ifs="$IFS"; IFS='~'
700486dafe34Smrg	    for cmd in $cmds; do
700586dafe34Smrg	      IFS="$save_ifs"
700686dafe34Smrg	      eval cmd=\"$cmd\"
700786dafe34Smrg	      func_len " $cmd"
700886dafe34Smrg	      len=$func_len_result
700986dafe34Smrg	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
701086dafe34Smrg		func_show_eval "$cmd" 'exit $?'
701186dafe34Smrg		skipped_export=false
701286dafe34Smrg	      else
701386dafe34Smrg		# The command line is too long to execute in one step.
701486dafe34Smrg		func_verbose "using reloadable object file for export list..."
701586dafe34Smrg		skipped_export=:
701686dafe34Smrg		# Break out early, otherwise skipped_export may be
701786dafe34Smrg		# set to false by a later but shorter cmd.
701886dafe34Smrg		break
701986dafe34Smrg	      fi
702086dafe34Smrg	    done
702186dafe34Smrg	    IFS="$save_ifs"
702286dafe34Smrg	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
702386dafe34Smrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
702486dafe34Smrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
702586dafe34Smrg	    fi
702686dafe34Smrg	  fi
702786dafe34Smrg	fi
702876888252Smrg
702986dafe34Smrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
703086dafe34Smrg	  tmp_export_symbols="$export_symbols"
703186dafe34Smrg	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
703286dafe34Smrg	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
703386dafe34Smrg	fi
703476888252Smrg
703586dafe34Smrg	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
703686dafe34Smrg	  # The given exports_symbols file has to be filtered, so filter it.
703786dafe34Smrg	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
703886dafe34Smrg	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
703986dafe34Smrg	  # 's' commands which not all seds can handle. GNU sed should be fine
704086dafe34Smrg	  # though. Also, the filter scales superlinearly with the number of
704186dafe34Smrg	  # global variables. join(1) would be nice here, but unfortunately
704286dafe34Smrg	  # isn't a blessed tool.
704386dafe34Smrg	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
704486dafe34Smrg	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
704586dafe34Smrg	  export_symbols=$output_objdir/$libname.def
704686dafe34Smrg	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
704776888252Smrg	fi
704876888252Smrg
704986dafe34Smrg	tmp_deplibs=
705086dafe34Smrg	for test_deplib in $deplibs; do
705186dafe34Smrg	  case " $convenience " in
705286dafe34Smrg	  *" $test_deplib "*) ;;
705386dafe34Smrg	  *)
705486dafe34Smrg	    tmp_deplibs="$tmp_deplibs $test_deplib"
705586dafe34Smrg	    ;;
705686dafe34Smrg	  esac
705786dafe34Smrg	done
705886dafe34Smrg	deplibs="$tmp_deplibs"
705976888252Smrg
706086dafe34Smrg	if test -n "$convenience"; then
706186dafe34Smrg	  if test -n "$whole_archive_flag_spec" &&
706286dafe34Smrg	    test "$compiler_needs_object" = yes &&
706386dafe34Smrg	    test -z "$libobjs"; then
706486dafe34Smrg	    # extract the archives, so we have objects to list.
706586dafe34Smrg	    # TODO: could optimize this to just extract one archive.
706686dafe34Smrg	    whole_archive_flag_spec=
706786dafe34Smrg	  fi
706886dafe34Smrg	  if test -n "$whole_archive_flag_spec"; then
706986dafe34Smrg	    save_libobjs=$libobjs
707086dafe34Smrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
707186dafe34Smrg	    test "X$libobjs" = "X " && libobjs=
707286dafe34Smrg	  else
707386dafe34Smrg	    gentop="$output_objdir/${outputname}x"
707486dafe34Smrg	    generated="$generated $gentop"
707576888252Smrg
707686dafe34Smrg	    func_extract_archives $gentop $convenience
707786dafe34Smrg	    libobjs="$libobjs $func_extract_archives_result"
707886dafe34Smrg	    test "X$libobjs" = "X " && libobjs=
707986dafe34Smrg	  fi
708086dafe34Smrg	fi
708176888252Smrg
708286dafe34Smrg	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
708386dafe34Smrg	  eval flag=\"$thread_safe_flag_spec\"
708486dafe34Smrg	  linker_flags="$linker_flags $flag"
708586dafe34Smrg	fi
708676888252Smrg
708786dafe34Smrg	# Make a backup of the uninstalled library when relinking
708886dafe34Smrg	if test "$mode" = relink; then
708986dafe34Smrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
709076888252Smrg	fi
709176888252Smrg
709286dafe34Smrg	# Do each of the archive commands.
709386dafe34Smrg	if test "$module" = yes && test -n "$module_cmds" ; then
709486dafe34Smrg	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
709586dafe34Smrg	    eval test_cmds=\"$module_expsym_cmds\"
709686dafe34Smrg	    cmds=$module_expsym_cmds
709786dafe34Smrg	  else
709886dafe34Smrg	    eval test_cmds=\"$module_cmds\"
709986dafe34Smrg	    cmds=$module_cmds
710086dafe34Smrg	  fi
710186dafe34Smrg	else
710286dafe34Smrg	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
710386dafe34Smrg	    eval test_cmds=\"$archive_expsym_cmds\"
710486dafe34Smrg	    cmds=$archive_expsym_cmds
710586dafe34Smrg	  else
710686dafe34Smrg	    eval test_cmds=\"$archive_cmds\"
710786dafe34Smrg	    cmds=$archive_cmds
710886dafe34Smrg	  fi
710976888252Smrg	fi
711076888252Smrg
711186dafe34Smrg	if test "X$skipped_export" != "X:" &&
711286dafe34Smrg	   func_len " $test_cmds" &&
711386dafe34Smrg	   len=$func_len_result &&
711486dafe34Smrg	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
711586dafe34Smrg	  :
711686dafe34Smrg	else
711786dafe34Smrg	  # The command line is too long to link in one step, link piecewise
711886dafe34Smrg	  # or, if using GNU ld and skipped_export is not :, use a linker
711986dafe34Smrg	  # script.
712076888252Smrg
712186dafe34Smrg	  # Save the value of $output and $libobjs because we want to
712286dafe34Smrg	  # use them later.  If we have whole_archive_flag_spec, we
712386dafe34Smrg	  # want to use save_libobjs as it was before
712486dafe34Smrg	  # whole_archive_flag_spec was expanded, because we can't
712586dafe34Smrg	  # assume the linker understands whole_archive_flag_spec.
712686dafe34Smrg	  # This may have to be revisited, in case too many
712786dafe34Smrg	  # convenience libraries get linked in and end up exceeding
712886dafe34Smrg	  # the spec.
712986dafe34Smrg	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
713086dafe34Smrg	    save_libobjs=$libobjs
713186dafe34Smrg	  fi
713286dafe34Smrg	  save_output=$output
713386dafe34Smrg	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
713476888252Smrg
713586dafe34Smrg	  # Clear the reloadable object creation command queue and
713686dafe34Smrg	  # initialize k to one.
713786dafe34Smrg	  test_cmds=
713886dafe34Smrg	  concat_cmds=
713986dafe34Smrg	  objlist=
714086dafe34Smrg	  last_robj=
714186dafe34Smrg	  k=1
714276888252Smrg
714386dafe34Smrg	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
714486dafe34Smrg	    output=${output_objdir}/${output_la}.lnkscript
714586dafe34Smrg	    func_verbose "creating GNU ld script: $output"
714686dafe34Smrg	    $ECHO 'INPUT (' > $output
714786dafe34Smrg	    for obj in $save_libobjs
714886dafe34Smrg	    do
714986dafe34Smrg	      $ECHO "$obj" >> $output
715086dafe34Smrg	    done
715186dafe34Smrg	    $ECHO ')' >> $output
715286dafe34Smrg	    delfiles="$delfiles $output"
715386dafe34Smrg	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
715486dafe34Smrg	    output=${output_objdir}/${output_la}.lnk
715586dafe34Smrg	    func_verbose "creating linker input file list: $output"
715686dafe34Smrg	    : > $output
715786dafe34Smrg	    set x $save_libobjs
715886dafe34Smrg	    shift
715986dafe34Smrg	    firstobj=
716086dafe34Smrg	    if test "$compiler_needs_object" = yes; then
716186dafe34Smrg	      firstobj="$1 "
716286dafe34Smrg	      shift
716386dafe34Smrg	    fi
716486dafe34Smrg	    for obj
716586dafe34Smrg	    do
716686dafe34Smrg	      $ECHO "$obj" >> $output
716786dafe34Smrg	    done
716886dafe34Smrg	    delfiles="$delfiles $output"
716986dafe34Smrg	    output=$firstobj\"$file_list_spec$output\"
717086dafe34Smrg	  else
717186dafe34Smrg	    if test -n "$save_libobjs"; then
717286dafe34Smrg	      func_verbose "creating reloadable object files..."
717386dafe34Smrg	      output=$output_objdir/$output_la-${k}.$objext
717486dafe34Smrg	      eval test_cmds=\"$reload_cmds\"
717586dafe34Smrg	      func_len " $test_cmds"
717686dafe34Smrg	      len0=$func_len_result
717786dafe34Smrg	      len=$len0
717886dafe34Smrg
717986dafe34Smrg	      # Loop over the list of objects to be linked.
718086dafe34Smrg	      for obj in $save_libobjs
718186dafe34Smrg	      do
718286dafe34Smrg		func_len " $obj"
718386dafe34Smrg		func_arith $len + $func_len_result
718486dafe34Smrg		len=$func_arith_result
718586dafe34Smrg		if test "X$objlist" = X ||
718686dafe34Smrg		   test "$len" -lt "$max_cmd_len"; then
718786dafe34Smrg		  func_append objlist " $obj"
718886dafe34Smrg		else
718986dafe34Smrg		  # The command $test_cmds is almost too long, add a
719086dafe34Smrg		  # command to the queue.
719186dafe34Smrg		  if test "$k" -eq 1 ; then
719286dafe34Smrg		    # The first file doesn't have a previous command to add.
719386dafe34Smrg		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
719486dafe34Smrg		  else
719586dafe34Smrg		    # All subsequent reloadable object files will link in
719686dafe34Smrg		    # the last one created.
719786dafe34Smrg		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
719886dafe34Smrg		  fi
719986dafe34Smrg		  last_robj=$output_objdir/$output_la-${k}.$objext
720086dafe34Smrg		  func_arith $k + 1
720186dafe34Smrg		  k=$func_arith_result
720286dafe34Smrg		  output=$output_objdir/$output_la-${k}.$objext
720386dafe34Smrg		  objlist=$obj
720486dafe34Smrg		  func_len " $last_robj"
720586dafe34Smrg		  func_arith $len0 + $func_len_result
720686dafe34Smrg		  len=$func_arith_result
720786dafe34Smrg		fi
720886dafe34Smrg	      done
720986dafe34Smrg	      # Handle the remaining objects by creating one last
721086dafe34Smrg	      # reloadable object file.  All subsequent reloadable object
721186dafe34Smrg	      # files will link in the last one created.
721286dafe34Smrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
721386dafe34Smrg	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
721486dafe34Smrg	      if test -n "$last_robj"; then
721586dafe34Smrg	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
721686dafe34Smrg	      fi
721786dafe34Smrg	      delfiles="$delfiles $output"
721876888252Smrg
721986dafe34Smrg	    else
722086dafe34Smrg	      output=
722186dafe34Smrg	    fi
722276888252Smrg
722386dafe34Smrg	    if ${skipped_export-false}; then
722486dafe34Smrg	      func_verbose "generating symbol list for \`$libname.la'"
722586dafe34Smrg	      export_symbols="$output_objdir/$libname.exp"
722686dafe34Smrg	      $opt_dry_run || $RM $export_symbols
722786dafe34Smrg	      libobjs=$output
722886dafe34Smrg	      # Append the command to create the export file.
722986dafe34Smrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
723086dafe34Smrg	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
723186dafe34Smrg	      if test -n "$last_robj"; then
723286dafe34Smrg		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
723386dafe34Smrg	      fi
723486dafe34Smrg	    fi
723576888252Smrg
723686dafe34Smrg	    test -n "$save_libobjs" &&
723786dafe34Smrg	      func_verbose "creating a temporary reloadable object file: $output"
723876888252Smrg
723986dafe34Smrg	    # Loop through the commands generated above and execute them.
724086dafe34Smrg	    save_ifs="$IFS"; IFS='~'
724186dafe34Smrg	    for cmd in $concat_cmds; do
724286dafe34Smrg	      IFS="$save_ifs"
724386dafe34Smrg	      $opt_silent || {
724486dafe34Smrg		  func_quote_for_expand "$cmd"
724586dafe34Smrg		  eval "func_echo $func_quote_for_expand_result"
724686dafe34Smrg	      }
724786dafe34Smrg	      $opt_dry_run || eval "$cmd" || {
724886dafe34Smrg		lt_exit=$?
724986dafe34Smrg
725086dafe34Smrg		# Restore the uninstalled library and exit
725186dafe34Smrg		if test "$mode" = relink; then
725286dafe34Smrg		  ( cd "$output_objdir" && \
725386dafe34Smrg		    $RM "${realname}T" && \
725486dafe34Smrg		    $MV "${realname}U" "$realname" )
725586dafe34Smrg		fi
725676888252Smrg
725786dafe34Smrg		exit $lt_exit
725886dafe34Smrg	      }
725986dafe34Smrg	    done
726086dafe34Smrg	    IFS="$save_ifs"
726186dafe34Smrg
726286dafe34Smrg	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
726386dafe34Smrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
726486dafe34Smrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
726576888252Smrg	    fi
726676888252Smrg	  fi
726776888252Smrg
726886dafe34Smrg          if ${skipped_export-false}; then
726986dafe34Smrg	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
727086dafe34Smrg	      tmp_export_symbols="$export_symbols"
727186dafe34Smrg	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
727286dafe34Smrg	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
727386dafe34Smrg	    fi
727476888252Smrg
727586dafe34Smrg	    if test -n "$orig_export_symbols"; then
727686dafe34Smrg	      # The given exports_symbols file has to be filtered, so filter it.
727786dafe34Smrg	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
727886dafe34Smrg	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
727986dafe34Smrg	      # 's' commands which not all seds can handle. GNU sed should be fine
728086dafe34Smrg	      # though. Also, the filter scales superlinearly with the number of
728186dafe34Smrg	      # global variables. join(1) would be nice here, but unfortunately
728286dafe34Smrg	      # isn't a blessed tool.
728386dafe34Smrg	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
728486dafe34Smrg	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
728586dafe34Smrg	      export_symbols=$output_objdir/$libname.def
728686dafe34Smrg	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
728786dafe34Smrg	    fi
728886dafe34Smrg	  fi
728976888252Smrg
729086dafe34Smrg	  libobjs=$output
729186dafe34Smrg	  # Restore the value of output.
729286dafe34Smrg	  output=$save_output
729376888252Smrg
729486dafe34Smrg	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
729586dafe34Smrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
729686dafe34Smrg	    test "X$libobjs" = "X " && libobjs=
729786dafe34Smrg	  fi
729886dafe34Smrg	  # Expand the library linking commands again to reset the
729986dafe34Smrg	  # value of $libobjs for piecewise linking.
730086dafe34Smrg
730186dafe34Smrg	  # Do each of the archive commands.
730286dafe34Smrg	  if test "$module" = yes && test -n "$module_cmds" ; then
730386dafe34Smrg	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
730486dafe34Smrg	      cmds=$module_expsym_cmds
730576888252Smrg	    else
730686dafe34Smrg	      cmds=$module_cmds
730776888252Smrg	    fi
730876888252Smrg	  else
730986dafe34Smrg	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
731086dafe34Smrg	      cmds=$archive_expsym_cmds
731186dafe34Smrg	    else
731286dafe34Smrg	      cmds=$archive_cmds
731386dafe34Smrg	    fi
731476888252Smrg	  fi
731576888252Smrg	fi
731676888252Smrg
731786dafe34Smrg	if test -n "$delfiles"; then
731886dafe34Smrg	  # Append the command to remove temporary files to $cmds.
731986dafe34Smrg	  eval cmds=\"\$cmds~\$RM $delfiles\"
732086dafe34Smrg	fi
732176888252Smrg
732286dafe34Smrg	# Add any objects from preloaded convenience libraries
732386dafe34Smrg	if test -n "$dlprefiles"; then
732486dafe34Smrg	  gentop="$output_objdir/${outputname}x"
732586dafe34Smrg	  generated="$generated $gentop"
732676888252Smrg
732786dafe34Smrg	  func_extract_archives $gentop $dlprefiles
732886dafe34Smrg	  libobjs="$libobjs $func_extract_archives_result"
732986dafe34Smrg	  test "X$libobjs" = "X " && libobjs=
733076888252Smrg	fi
733176888252Smrg
733286dafe34Smrg	save_ifs="$IFS"; IFS='~'
733386dafe34Smrg	for cmd in $cmds; do
733486dafe34Smrg	  IFS="$save_ifs"
733586dafe34Smrg	  eval cmd=\"$cmd\"
733686dafe34Smrg	  $opt_silent || {
733786dafe34Smrg	    func_quote_for_expand "$cmd"
733886dafe34Smrg	    eval "func_echo $func_quote_for_expand_result"
733986dafe34Smrg	  }
734086dafe34Smrg	  $opt_dry_run || eval "$cmd" || {
734186dafe34Smrg	    lt_exit=$?
734276888252Smrg
734386dafe34Smrg	    # Restore the uninstalled library and exit
734486dafe34Smrg	    if test "$mode" = relink; then
734586dafe34Smrg	      ( cd "$output_objdir" && \
734686dafe34Smrg	        $RM "${realname}T" && \
734786dafe34Smrg		$MV "${realname}U" "$realname" )
734886dafe34Smrg	    fi
734986dafe34Smrg
735086dafe34Smrg	    exit $lt_exit
735186dafe34Smrg	  }
735286dafe34Smrg	done
735386dafe34Smrg	IFS="$save_ifs"
735486dafe34Smrg
735586dafe34Smrg	# Restore the uninstalled library and exit
735686dafe34Smrg	if test "$mode" = relink; then
735786dafe34Smrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
735886dafe34Smrg
735986dafe34Smrg	  if test -n "$convenience"; then
736086dafe34Smrg	    if test -z "$whole_archive_flag_spec"; then
736186dafe34Smrg	      func_show_eval '${RM}r "$gentop"'
736276888252Smrg	    fi
736376888252Smrg	  fi
736476888252Smrg
736586dafe34Smrg	  exit $EXIT_SUCCESS
736686dafe34Smrg	fi
736776888252Smrg
736886dafe34Smrg	# Create links to the real library.
736986dafe34Smrg	for linkname in $linknames; do
737086dafe34Smrg	  if test "$realname" != "$linkname"; then
737186dafe34Smrg	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
737286dafe34Smrg	  fi
737386dafe34Smrg	done
737486dafe34Smrg
737586dafe34Smrg	# If -module or -export-dynamic was specified, set the dlname.
737686dafe34Smrg	if test "$module" = yes || test "$export_dynamic" = yes; then
737786dafe34Smrg	  # On all known operating systems, these are identical.
737886dafe34Smrg	  dlname="$soname"
737986dafe34Smrg	fi
738086dafe34Smrg      fi
738186dafe34Smrg      ;;
738286dafe34Smrg
738386dafe34Smrg    obj)
738486dafe34Smrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
738586dafe34Smrg	func_warning "\`-dlopen' is ignored for objects"
738686dafe34Smrg      fi
738786dafe34Smrg
738886dafe34Smrg      case " $deplibs" in
738986dafe34Smrg      *\ -l* | *\ -L*)
739086dafe34Smrg	func_warning "\`-l' and \`-L' are ignored for objects" ;;
739186dafe34Smrg      esac
739286dafe34Smrg
739386dafe34Smrg      test -n "$rpath" && \
739486dafe34Smrg	func_warning "\`-rpath' is ignored for objects"
739586dafe34Smrg
739686dafe34Smrg      test -n "$xrpath" && \
739786dafe34Smrg	func_warning "\`-R' is ignored for objects"
739886dafe34Smrg
739986dafe34Smrg      test -n "$vinfo" && \
740086dafe34Smrg	func_warning "\`-version-info' is ignored for objects"
740186dafe34Smrg
740286dafe34Smrg      test -n "$release" && \
740386dafe34Smrg	func_warning "\`-release' is ignored for objects"
740486dafe34Smrg
740586dafe34Smrg      case $output in
740686dafe34Smrg      *.lo)
740786dafe34Smrg	test -n "$objs$old_deplibs" && \
740886dafe34Smrg	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
740986dafe34Smrg
741086dafe34Smrg	libobj=$output
741186dafe34Smrg	func_lo2o "$libobj"
741286dafe34Smrg	obj=$func_lo2o_result
741386dafe34Smrg	;;
741486dafe34Smrg      *)
741586dafe34Smrg	libobj=
741686dafe34Smrg	obj="$output"
741786dafe34Smrg	;;
741886dafe34Smrg      esac
741986dafe34Smrg
742086dafe34Smrg      # Delete the old objects.
742186dafe34Smrg      $opt_dry_run || $RM $obj $libobj
742286dafe34Smrg
742386dafe34Smrg      # Objects from convenience libraries.  This assumes
742486dafe34Smrg      # single-version convenience libraries.  Whenever we create
742586dafe34Smrg      # different ones for PIC/non-PIC, this we'll have to duplicate
742686dafe34Smrg      # the extraction.
742786dafe34Smrg      reload_conv_objs=
742886dafe34Smrg      gentop=
742986dafe34Smrg      # reload_cmds runs $LD directly, so let us get rid of
743086dafe34Smrg      # -Wl from whole_archive_flag_spec and hope we can get by with
743186dafe34Smrg      # turning comma into space..
743286dafe34Smrg      wl=
743386dafe34Smrg
743486dafe34Smrg      if test -n "$convenience"; then
743586dafe34Smrg	if test -n "$whole_archive_flag_spec"; then
743686dafe34Smrg	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
743786dafe34Smrg	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
743886dafe34Smrg	else
743986dafe34Smrg	  gentop="$output_objdir/${obj}x"
744086dafe34Smrg	  generated="$generated $gentop"
744186dafe34Smrg
744286dafe34Smrg	  func_extract_archives $gentop $convenience
744386dafe34Smrg	  reload_conv_objs="$reload_objs $func_extract_archives_result"
744486dafe34Smrg	fi
744586dafe34Smrg      fi
744676888252Smrg
744786dafe34Smrg      # Create the old-style object.
744886dafe34Smrg      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
744976888252Smrg
745086dafe34Smrg      output="$obj"
745186dafe34Smrg      func_execute_cmds "$reload_cmds" 'exit $?'
745276888252Smrg
745386dafe34Smrg      # Exit if we aren't doing a library object file.
745486dafe34Smrg      if test -z "$libobj"; then
745586dafe34Smrg	if test -n "$gentop"; then
745686dafe34Smrg	  func_show_eval '${RM}r "$gentop"'
745786dafe34Smrg	fi
745876888252Smrg
745986dafe34Smrg	exit $EXIT_SUCCESS
746086dafe34Smrg      fi
746176888252Smrg
746286dafe34Smrg      if test "$build_libtool_libs" != yes; then
746386dafe34Smrg	if test -n "$gentop"; then
746486dafe34Smrg	  func_show_eval '${RM}r "$gentop"'
746586dafe34Smrg	fi
746676888252Smrg
746786dafe34Smrg	# Create an invalid libtool object if no PIC, so that we don't
746886dafe34Smrg	# accidentally link it into a program.
746986dafe34Smrg	# $show "echo timestamp > $libobj"
747086dafe34Smrg	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
747186dafe34Smrg	exit $EXIT_SUCCESS
747286dafe34Smrg      fi
747376888252Smrg
747486dafe34Smrg      if test -n "$pic_flag" || test "$pic_mode" != default; then
747586dafe34Smrg	# Only do commands if we really have different PIC objects.
747686dafe34Smrg	reload_objs="$libobjs $reload_conv_objs"
747786dafe34Smrg	output="$libobj"
747886dafe34Smrg	func_execute_cmds "$reload_cmds" 'exit $?'
747976888252Smrg      fi
748076888252Smrg
748186dafe34Smrg      if test -n "$gentop"; then
748286dafe34Smrg	func_show_eval '${RM}r "$gentop"'
748386dafe34Smrg      fi
748476888252Smrg
748586dafe34Smrg      exit $EXIT_SUCCESS
748686dafe34Smrg      ;;
748776888252Smrg
748886dafe34Smrg    prog)
748986dafe34Smrg      case $host in
749086dafe34Smrg	*cygwin*) func_stripname '' '.exe' "$output"
749186dafe34Smrg	          output=$func_stripname_result.exe;;
749276888252Smrg      esac
749386dafe34Smrg      test -n "$vinfo" && \
749486dafe34Smrg	func_warning "\`-version-info' is ignored for programs"
749576888252Smrg
749686dafe34Smrg      test -n "$release" && \
749786dafe34Smrg	func_warning "\`-release' is ignored for programs"
749876888252Smrg
749986dafe34Smrg      test "$preload" = yes \
750086dafe34Smrg        && test "$dlopen_support" = unknown \
750186dafe34Smrg	&& test "$dlopen_self" = unknown \
750286dafe34Smrg	&& test "$dlopen_self_static" = unknown && \
750386dafe34Smrg	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
750476888252Smrg
750586dafe34Smrg      case $host in
750686dafe34Smrg      *-*-rhapsody* | *-*-darwin1.[012])
750786dafe34Smrg	# On Rhapsody replace the C library is the System framework
750886dafe34Smrg	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
750986dafe34Smrg	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
751076888252Smrg	;;
751176888252Smrg      esac
751276888252Smrg
751386dafe34Smrg      case $host in
751486dafe34Smrg      *-*-darwin*)
751586dafe34Smrg	# Don't allow lazy linking, it breaks C++ global constructors
751686dafe34Smrg	# But is supposedly fixed on 10.4 or later (yay!).
751786dafe34Smrg	if test "$tagname" = CXX ; then
751886dafe34Smrg	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
751986dafe34Smrg	    10.[0123])
752086dafe34Smrg	      compile_command="$compile_command ${wl}-bind_at_load"
752186dafe34Smrg	      finalize_command="$finalize_command ${wl}-bind_at_load"
752286dafe34Smrg	    ;;
752386dafe34Smrg	  esac
752486dafe34Smrg	fi
752586dafe34Smrg	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
752686dafe34Smrg	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
752786dafe34Smrg	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
752876888252Smrg	;;
752976888252Smrg      esac
753076888252Smrg
753176888252Smrg
753286dafe34Smrg      # move library search paths that coincide with paths to not yet
753386dafe34Smrg      # installed libraries to the beginning of the library search list
753486dafe34Smrg      new_libs=
753586dafe34Smrg      for path in $notinst_path; do
753686dafe34Smrg	case " $new_libs " in
753786dafe34Smrg	*" -L$path/$objdir "*) ;;
753876888252Smrg	*)
753986dafe34Smrg	  case " $compile_deplibs " in
754086dafe34Smrg	  *" -L$path/$objdir "*)
754186dafe34Smrg	    new_libs="$new_libs -L$path/$objdir" ;;
754286dafe34Smrg	  esac
754376888252Smrg	  ;;
754476888252Smrg	esac
754576888252Smrg      done
754686dafe34Smrg      for deplib in $compile_deplibs; do
754786dafe34Smrg	case $deplib in
754886dafe34Smrg	-L*)
754986dafe34Smrg	  case " $new_libs " in
755086dafe34Smrg	  *" $deplib "*) ;;
755186dafe34Smrg	  *) new_libs="$new_libs $deplib" ;;
755286dafe34Smrg	  esac
755386dafe34Smrg	  ;;
755486dafe34Smrg	*) new_libs="$new_libs $deplib" ;;
755586dafe34Smrg	esac
755686dafe34Smrg      done
755786dafe34Smrg      compile_deplibs="$new_libs"
755876888252Smrg
755976888252Smrg
756086dafe34Smrg      compile_command="$compile_command $compile_deplibs"
756186dafe34Smrg      finalize_command="$finalize_command $finalize_deplibs"
756276888252Smrg
756386dafe34Smrg      if test -n "$rpath$xrpath"; then
756486dafe34Smrg	# If the user specified any rpath flags, then add them.
756586dafe34Smrg	for libdir in $rpath $xrpath; do
756686dafe34Smrg	  # This is the magic to use -rpath.
756786dafe34Smrg	  case "$finalize_rpath " in
756886dafe34Smrg	  *" $libdir "*) ;;
756986dafe34Smrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
757086dafe34Smrg	  esac
757186dafe34Smrg	done
757286dafe34Smrg      fi
757376888252Smrg
757486dafe34Smrg      # Now hardcode the library paths
757586dafe34Smrg      rpath=
757686dafe34Smrg      hardcode_libdirs=
757786dafe34Smrg      for libdir in $compile_rpath $finalize_rpath; do
757886dafe34Smrg	if test -n "$hardcode_libdir_flag_spec"; then
757986dafe34Smrg	  if test -n "$hardcode_libdir_separator"; then
758086dafe34Smrg	    if test -z "$hardcode_libdirs"; then
758186dafe34Smrg	      hardcode_libdirs="$libdir"
758286dafe34Smrg	    else
758386dafe34Smrg	      # Just accumulate the unique libdirs.
758486dafe34Smrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
758586dafe34Smrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
758686dafe34Smrg		;;
758786dafe34Smrg	      *)
758886dafe34Smrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
758986dafe34Smrg		;;
759086dafe34Smrg	      esac
759186dafe34Smrg	    fi
759286dafe34Smrg	  else
759386dafe34Smrg	    eval flag=\"$hardcode_libdir_flag_spec\"
759486dafe34Smrg	    rpath="$rpath $flag"
759586dafe34Smrg	  fi
759686dafe34Smrg	elif test -n "$runpath_var"; then
759786dafe34Smrg	  case "$perm_rpath " in
759876888252Smrg	  *" $libdir "*) ;;
759986dafe34Smrg	  *) perm_rpath="$perm_rpath $libdir" ;;
760076888252Smrg	  esac
760186dafe34Smrg	fi
760286dafe34Smrg	case $host in
760386dafe34Smrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
760486dafe34Smrg	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
760586dafe34Smrg	  case :$dllsearchpath: in
760686dafe34Smrg	  *":$libdir:"*) ;;
760786dafe34Smrg	  ::) dllsearchpath=$libdir;;
760886dafe34Smrg	  *) dllsearchpath="$dllsearchpath:$libdir";;
760986dafe34Smrg	  esac
761086dafe34Smrg	  case :$dllsearchpath: in
761186dafe34Smrg	  *":$testbindir:"*) ;;
761286dafe34Smrg	  ::) dllsearchpath=$testbindir;;
761386dafe34Smrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
761486dafe34Smrg	  esac
761586dafe34Smrg	  ;;
761686dafe34Smrg	esac
761786dafe34Smrg      done
761886dafe34Smrg      # Substitute the hardcoded libdirs into the rpath.
761986dafe34Smrg      if test -n "$hardcode_libdir_separator" &&
762086dafe34Smrg	 test -n "$hardcode_libdirs"; then
762186dafe34Smrg	libdir="$hardcode_libdirs"
762286dafe34Smrg	eval rpath=\" $hardcode_libdir_flag_spec\"
762386dafe34Smrg      fi
762486dafe34Smrg      compile_rpath="$rpath"
762586dafe34Smrg
762686dafe34Smrg      rpath=
762786dafe34Smrg      hardcode_libdirs=
762886dafe34Smrg      for libdir in $finalize_rpath; do
762986dafe34Smrg	if test -n "$hardcode_libdir_flag_spec"; then
763086dafe34Smrg	  if test -n "$hardcode_libdir_separator"; then
763186dafe34Smrg	    if test -z "$hardcode_libdirs"; then
763286dafe34Smrg	      hardcode_libdirs="$libdir"
763386dafe34Smrg	    else
763486dafe34Smrg	      # Just accumulate the unique libdirs.
763586dafe34Smrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
763686dafe34Smrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
763786dafe34Smrg		;;
763886dafe34Smrg	      *)
763986dafe34Smrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
764086dafe34Smrg		;;
764186dafe34Smrg	      esac
764286dafe34Smrg	    fi
764386dafe34Smrg	  else
764486dafe34Smrg	    eval flag=\"$hardcode_libdir_flag_spec\"
764586dafe34Smrg	    rpath="$rpath $flag"
764686dafe34Smrg	  fi
764786dafe34Smrg	elif test -n "$runpath_var"; then
764886dafe34Smrg	  case "$finalize_perm_rpath " in
764976888252Smrg	  *" $libdir "*) ;;
765086dafe34Smrg	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
765176888252Smrg	  esac
765276888252Smrg	fi
765386dafe34Smrg      done
765486dafe34Smrg      # Substitute the hardcoded libdirs into the rpath.
765586dafe34Smrg      if test -n "$hardcode_libdir_separator" &&
765686dafe34Smrg	 test -n "$hardcode_libdirs"; then
765786dafe34Smrg	libdir="$hardcode_libdirs"
765886dafe34Smrg	eval rpath=\" $hardcode_libdir_flag_spec\"
765986dafe34Smrg      fi
766086dafe34Smrg      finalize_rpath="$rpath"
766176888252Smrg
766286dafe34Smrg      if test -n "$libobjs" && test "$build_old_libs" = yes; then
766386dafe34Smrg	# Transform all the library objects into standard objects.
766486dafe34Smrg	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
766586dafe34Smrg	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
766686dafe34Smrg      fi
766776888252Smrg
766886dafe34Smrg      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
766976888252Smrg
767086dafe34Smrg      # template prelinking step
767186dafe34Smrg      if test -n "$prelink_cmds"; then
767286dafe34Smrg	func_execute_cmds "$prelink_cmds" 'exit $?'
767386dafe34Smrg      fi
767476888252Smrg
767586dafe34Smrg      wrappers_required=yes
767686dafe34Smrg      case $host in
767786dafe34Smrg      *cygwin* | *mingw* )
767886dafe34Smrg        if test "$build_libtool_libs" != yes; then
767986dafe34Smrg          wrappers_required=no
768086dafe34Smrg        fi
768186dafe34Smrg        ;;
768286dafe34Smrg      *cegcc)
768386dafe34Smrg        # Disable wrappers for cegcc, we are cross compiling anyway.
768486dafe34Smrg        wrappers_required=no
768586dafe34Smrg        ;;
768686dafe34Smrg      *)
768786dafe34Smrg        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
768886dafe34Smrg          wrappers_required=no
768986dafe34Smrg        fi
769086dafe34Smrg        ;;
769186dafe34Smrg      esac
769286dafe34Smrg      if test "$wrappers_required" = no; then
769386dafe34Smrg	# Replace the output file specification.
769486dafe34Smrg	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
769586dafe34Smrg	link_command="$compile_command$compile_rpath"
769676888252Smrg
769786dafe34Smrg	# We have no uninstalled library dependencies, so finalize right now.
769886dafe34Smrg	exit_status=0
769986dafe34Smrg	func_show_eval "$link_command" 'exit_status=$?'
770076888252Smrg
770186dafe34Smrg	# Delete the generated files.
770286dafe34Smrg	if test -f "$output_objdir/${outputname}S.${objext}"; then
770386dafe34Smrg	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
770486dafe34Smrg	fi
770576888252Smrg
770686dafe34Smrg	exit $exit_status
770786dafe34Smrg      fi
770876888252Smrg
770986dafe34Smrg      if test -n "$compile_shlibpath$finalize_shlibpath"; then
771086dafe34Smrg	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
771186dafe34Smrg      fi
771286dafe34Smrg      if test -n "$finalize_shlibpath"; then
771386dafe34Smrg	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
771486dafe34Smrg      fi
771576888252Smrg
771686dafe34Smrg      compile_var=
771786dafe34Smrg      finalize_var=
771886dafe34Smrg      if test -n "$runpath_var"; then
771986dafe34Smrg	if test -n "$perm_rpath"; then
772086dafe34Smrg	  # We should set the runpath_var.
772186dafe34Smrg	  rpath=
772286dafe34Smrg	  for dir in $perm_rpath; do
772386dafe34Smrg	    rpath="$rpath$dir:"
772476888252Smrg	  done
772586dafe34Smrg	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
772676888252Smrg	fi
772786dafe34Smrg	if test -n "$finalize_perm_rpath"; then
772886dafe34Smrg	  # We should set the runpath_var.
772986dafe34Smrg	  rpath=
773086dafe34Smrg	  for dir in $finalize_perm_rpath; do
773186dafe34Smrg	    rpath="$rpath$dir:"
773286dafe34Smrg	  done
773386dafe34Smrg	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
773486dafe34Smrg	fi
773586dafe34Smrg      fi
773676888252Smrg
773786dafe34Smrg      if test "$no_install" = yes; then
773886dafe34Smrg	# We don't need to create a wrapper script.
773986dafe34Smrg	link_command="$compile_var$compile_command$compile_rpath"
774086dafe34Smrg	# Replace the output file specification.
774186dafe34Smrg	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
774286dafe34Smrg	# Delete the old output file.
774386dafe34Smrg	$opt_dry_run || $RM $output
774486dafe34Smrg	# Link the executable and exit
774586dafe34Smrg	func_show_eval "$link_command" 'exit $?'
774686dafe34Smrg	exit $EXIT_SUCCESS
774786dafe34Smrg      fi
774876888252Smrg
774986dafe34Smrg      if test "$hardcode_action" = relink; then
775086dafe34Smrg	# Fast installation is not supported
775186dafe34Smrg	link_command="$compile_var$compile_command$compile_rpath"
775286dafe34Smrg	relink_command="$finalize_var$finalize_command$finalize_rpath"
775376888252Smrg
775486dafe34Smrg	func_warning "this platform does not like uninstalled shared libraries"
775586dafe34Smrg	func_warning "\`$output' will be relinked during installation"
775686dafe34Smrg      else
775786dafe34Smrg	if test "$fast_install" != no; then
775886dafe34Smrg	  link_command="$finalize_var$compile_command$finalize_rpath"
775986dafe34Smrg	  if test "$fast_install" = yes; then
776086dafe34Smrg	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
776186dafe34Smrg	  else
776286dafe34Smrg	    # fast_install is set to needless
776386dafe34Smrg	    relink_command=
776486dafe34Smrg	  fi
776576888252Smrg	else
776686dafe34Smrg	  link_command="$compile_var$compile_command$compile_rpath"
776786dafe34Smrg	  relink_command="$finalize_var$finalize_command$finalize_rpath"
776876888252Smrg	fi
776986dafe34Smrg      fi
777076888252Smrg
777186dafe34Smrg      # Replace the output file specification.
777286dafe34Smrg      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
777376888252Smrg
777486dafe34Smrg      # Delete the old output files.
777586dafe34Smrg      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
777676888252Smrg
777786dafe34Smrg      func_show_eval "$link_command" 'exit $?'
777876888252Smrg
777986dafe34Smrg      # Now create the wrapper script.
778086dafe34Smrg      func_verbose "creating $output"
778176888252Smrg
778286dafe34Smrg      # Quote the relink command for shipping.
778386dafe34Smrg      if test -n "$relink_command"; then
778486dafe34Smrg	# Preserve any variables that may affect compiler behavior
778586dafe34Smrg	for var in $variables_saved_for_relink; do
778686dafe34Smrg	  if eval test -z \"\${$var+set}\"; then
778786dafe34Smrg	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
778886dafe34Smrg	  elif eval var_value=\$$var; test -z "$var_value"; then
778986dafe34Smrg	    relink_command="$var=; export $var; $relink_command"
779086dafe34Smrg	  else
779186dafe34Smrg	    func_quote_for_eval "$var_value"
779286dafe34Smrg	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
779386dafe34Smrg	  fi
779486dafe34Smrg	done
779586dafe34Smrg	relink_command="(cd `pwd`; $relink_command)"
779686dafe34Smrg	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
779786dafe34Smrg      fi
779876888252Smrg
779986dafe34Smrg      # Quote $ECHO for shipping.
780086dafe34Smrg      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
780186dafe34Smrg	case $progpath in
780286dafe34Smrg	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
780386dafe34Smrg	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
780476888252Smrg	esac
780586dafe34Smrg	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
780686dafe34Smrg      else
780786dafe34Smrg	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
780886dafe34Smrg      fi
780976888252Smrg
781086dafe34Smrg      # Only actually do things if not in dry run mode.
781186dafe34Smrg      $opt_dry_run || {
781286dafe34Smrg	# win32 will think the script is a binary if it has
781386dafe34Smrg	# a .exe suffix, so we strip it off here.
781486dafe34Smrg	case $output in
781586dafe34Smrg	  *.exe) func_stripname '' '.exe' "$output"
781686dafe34Smrg	         output=$func_stripname_result ;;
781786dafe34Smrg	esac
781886dafe34Smrg	# test for cygwin because mv fails w/o .exe extensions
781976888252Smrg	case $host in
782086dafe34Smrg	  *cygwin*)
782186dafe34Smrg	    exeext=.exe
782286dafe34Smrg	    func_stripname '' '.exe' "$outputname"
782386dafe34Smrg	    outputname=$func_stripname_result ;;
782486dafe34Smrg	  *) exeext= ;;
782576888252Smrg	esac
782686dafe34Smrg	case $host in
782786dafe34Smrg	  *cygwin* | *mingw* )
782886dafe34Smrg	    func_dirname_and_basename "$output" "" "."
782986dafe34Smrg	    output_name=$func_basename_result
783086dafe34Smrg	    output_path=$func_dirname_result
783186dafe34Smrg	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
783286dafe34Smrg	    cwrapper="$output_path/$output_name.exe"
783386dafe34Smrg	    $RM $cwrappersource $cwrapper
783486dafe34Smrg	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
783586dafe34Smrg
783686dafe34Smrg	    func_emit_cwrapperexe_src > $cwrappersource
783786dafe34Smrg
783886dafe34Smrg	    # The wrapper executable is built using the $host compiler,
783986dafe34Smrg	    # because it contains $host paths and files. If cross-
784086dafe34Smrg	    # compiling, it, like the target executable, must be
784186dafe34Smrg	    # executed on the $host or under an emulation environment.
784286dafe34Smrg	    $opt_dry_run || {
784386dafe34Smrg	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
784486dafe34Smrg	      $STRIP $cwrapper
784586dafe34Smrg	    }
784676888252Smrg
784786dafe34Smrg	    # Now, create the wrapper script for func_source use:
784886dafe34Smrg	    func_ltwrapper_scriptname $cwrapper
784986dafe34Smrg	    $RM $func_ltwrapper_scriptname_result
785086dafe34Smrg	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
785186dafe34Smrg	    $opt_dry_run || {
785286dafe34Smrg	      # note: this script will not be executed, so do not chmod.
785386dafe34Smrg	      if test "x$build" = "x$host" ; then
785486dafe34Smrg		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
785576888252Smrg	      else
785686dafe34Smrg		func_emit_wrapper no > $func_ltwrapper_scriptname_result
785776888252Smrg	      fi
785886dafe34Smrg	    }
785986dafe34Smrg	  ;;
786086dafe34Smrg	  * )
786186dafe34Smrg	    $RM $output
786286dafe34Smrg	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
786376888252Smrg
786486dafe34Smrg	    func_emit_wrapper no > $output
786586dafe34Smrg	    chmod +x $output
786676888252Smrg	  ;;
786776888252Smrg	esac
786886dafe34Smrg      }
786986dafe34Smrg      exit $EXIT_SUCCESS
787086dafe34Smrg      ;;
787186dafe34Smrg    esac
787276888252Smrg
787386dafe34Smrg    # See if we need to build an old-fashioned archive.
787486dafe34Smrg    for oldlib in $oldlibs; do
787576888252Smrg
787686dafe34Smrg      if test "$build_libtool_libs" = convenience; then
787786dafe34Smrg	oldobjs="$libobjs_save $symfileobj"
787886dafe34Smrg	addlibs="$convenience"
787986dafe34Smrg	build_libtool_libs=no
788086dafe34Smrg      else
788186dafe34Smrg	if test "$build_libtool_libs" = module; then
788286dafe34Smrg	  oldobjs="$libobjs_save"
788386dafe34Smrg	  build_libtool_libs=no
788486dafe34Smrg	else
788586dafe34Smrg	  oldobjs="$old_deplibs $non_pic_objects"
788686dafe34Smrg	  if test "$preload" = yes && test -f "$symfileobj"; then
788786dafe34Smrg	    oldobjs="$oldobjs $symfileobj"
788886dafe34Smrg	  fi
788986dafe34Smrg	fi
789086dafe34Smrg	addlibs="$old_convenience"
789176888252Smrg      fi
789276888252Smrg
789386dafe34Smrg      if test -n "$addlibs"; then
789486dafe34Smrg	gentop="$output_objdir/${outputname}x"
789586dafe34Smrg	generated="$generated $gentop"
789676888252Smrg
789786dafe34Smrg	func_extract_archives $gentop $addlibs
789886dafe34Smrg	oldobjs="$oldobjs $func_extract_archives_result"
789986dafe34Smrg      fi
790076888252Smrg
790186dafe34Smrg      # Do each command in the archive commands.
790286dafe34Smrg      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
790386dafe34Smrg	cmds=$old_archive_from_new_cmds
790486dafe34Smrg      else
790576888252Smrg
790686dafe34Smrg	# Add any objects from preloaded convenience libraries
790786dafe34Smrg	if test -n "$dlprefiles"; then
790886dafe34Smrg	  gentop="$output_objdir/${outputname}x"
790986dafe34Smrg	  generated="$generated $gentop"
791076888252Smrg
791186dafe34Smrg	  func_extract_archives $gentop $dlprefiles
791286dafe34Smrg	  oldobjs="$oldobjs $func_extract_archives_result"
791386dafe34Smrg	fi
791476888252Smrg
791586dafe34Smrg	# POSIX demands no paths to be encoded in archives.  We have
791686dafe34Smrg	# to avoid creating archives with duplicate basenames if we
791786dafe34Smrg	# might have to extract them afterwards, e.g., when creating a
791886dafe34Smrg	# static archive out of a convenience library, or when linking
791986dafe34Smrg	# the entirety of a libtool archive into another (currently
792086dafe34Smrg	# not supported by libtool).
792186dafe34Smrg	if (for obj in $oldobjs
792286dafe34Smrg	    do
792386dafe34Smrg	      func_basename "$obj"
792486dafe34Smrg	      $ECHO "$func_basename_result"
792586dafe34Smrg	    done | sort | sort -uc >/dev/null 2>&1); then
792686dafe34Smrg	  :
792786dafe34Smrg	else
792886dafe34Smrg	  $ECHO "copying selected object files to avoid basename conflicts..."
792986dafe34Smrg	  gentop="$output_objdir/${outputname}x"
793086dafe34Smrg	  generated="$generated $gentop"
793186dafe34Smrg	  func_mkdir_p "$gentop"
793286dafe34Smrg	  save_oldobjs=$oldobjs
793386dafe34Smrg	  oldobjs=
793486dafe34Smrg	  counter=1
793586dafe34Smrg	  for obj in $save_oldobjs
793686dafe34Smrg	  do
793786dafe34Smrg	    func_basename "$obj"
793886dafe34Smrg	    objbase="$func_basename_result"
793986dafe34Smrg	    case " $oldobjs " in
794086dafe34Smrg	    " ") oldobjs=$obj ;;
794186dafe34Smrg	    *[\ /]"$objbase "*)
794286dafe34Smrg	      while :; do
794386dafe34Smrg		# Make sure we don't pick an alternate name that also
794486dafe34Smrg		# overlaps.
794586dafe34Smrg		newobj=lt$counter-$objbase
794686dafe34Smrg		func_arith $counter + 1
794786dafe34Smrg		counter=$func_arith_result
794886dafe34Smrg		case " $oldobjs " in
794986dafe34Smrg		*[\ /]"$newobj "*) ;;
795086dafe34Smrg		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
795186dafe34Smrg		esac
795286dafe34Smrg	      done
795386dafe34Smrg	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
795486dafe34Smrg	      oldobjs="$oldobjs $gentop/$newobj"
795586dafe34Smrg	      ;;
795686dafe34Smrg	    *) oldobjs="$oldobjs $obj" ;;
795786dafe34Smrg	    esac
795876888252Smrg	  done
795976888252Smrg	fi
796086dafe34Smrg	eval cmds=\"$old_archive_cmds\"
796176888252Smrg
796286dafe34Smrg	func_len " $cmds"
796386dafe34Smrg	len=$func_len_result
796486dafe34Smrg	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
796586dafe34Smrg	  cmds=$old_archive_cmds
796686dafe34Smrg	else
796786dafe34Smrg	  # the command line is too long to link in one step, link in parts
796886dafe34Smrg	  func_verbose "using piecewise archive linking..."
796986dafe34Smrg	  save_RANLIB=$RANLIB
797086dafe34Smrg	  RANLIB=:
797186dafe34Smrg	  objlist=
797286dafe34Smrg	  concat_cmds=
797386dafe34Smrg	  save_oldobjs=$oldobjs
797486dafe34Smrg	  oldobjs=
797586dafe34Smrg	  # Is there a better way of finding the last object in the list?
797686dafe34Smrg	  for obj in $save_oldobjs
797786dafe34Smrg	  do
797886dafe34Smrg	    last_oldobj=$obj
797986dafe34Smrg	  done
798086dafe34Smrg	  eval test_cmds=\"$old_archive_cmds\"
798186dafe34Smrg	  func_len " $test_cmds"
798286dafe34Smrg	  len0=$func_len_result
798386dafe34Smrg	  len=$len0
798486dafe34Smrg	  for obj in $save_oldobjs
798586dafe34Smrg	  do
798686dafe34Smrg	    func_len " $obj"
798786dafe34Smrg	    func_arith $len + $func_len_result
798886dafe34Smrg	    len=$func_arith_result
798986dafe34Smrg	    func_append objlist " $obj"
799086dafe34Smrg	    if test "$len" -lt "$max_cmd_len"; then
799186dafe34Smrg	      :
799286dafe34Smrg	    else
799386dafe34Smrg	      # the above command should be used before it gets too long
799486dafe34Smrg	      oldobjs=$objlist
799586dafe34Smrg	      if test "$obj" = "$last_oldobj" ; then
799686dafe34Smrg		RANLIB=$save_RANLIB
799786dafe34Smrg	      fi
799886dafe34Smrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
799986dafe34Smrg	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
800086dafe34Smrg	      objlist=
800186dafe34Smrg	      len=$len0
800286dafe34Smrg	    fi
800386dafe34Smrg	  done
800486dafe34Smrg	  RANLIB=$save_RANLIB
800586dafe34Smrg	  oldobjs=$objlist
800686dafe34Smrg	  if test "X$oldobjs" = "X" ; then
800786dafe34Smrg	    eval cmds=\"\$concat_cmds\"
800886dafe34Smrg	  else
800986dafe34Smrg	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
801086dafe34Smrg	  fi
801186dafe34Smrg	fi
801286dafe34Smrg      fi
801386dafe34Smrg      func_execute_cmds "$cmds" 'exit $?'
801476888252Smrg    done
801576888252Smrg
801686dafe34Smrg    test -n "$generated" && \
801786dafe34Smrg      func_show_eval "${RM}r$generated"
801876888252Smrg
801986dafe34Smrg    # Now create the libtool archive.
802086dafe34Smrg    case $output in
802186dafe34Smrg    *.la)
802286dafe34Smrg      old_library=
802386dafe34Smrg      test "$build_old_libs" = yes && old_library="$libname.$libext"
802486dafe34Smrg      func_verbose "creating $output"
802576888252Smrg
802686dafe34Smrg      # Preserve any variables that may affect compiler behavior
802786dafe34Smrg      for var in $variables_saved_for_relink; do
802886dafe34Smrg	if eval test -z \"\${$var+set}\"; then
802986dafe34Smrg	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
803086dafe34Smrg	elif eval var_value=\$$var; test -z "$var_value"; then
803186dafe34Smrg	  relink_command="$var=; export $var; $relink_command"
803276888252Smrg	else
803386dafe34Smrg	  func_quote_for_eval "$var_value"
803486dafe34Smrg	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
803576888252Smrg	fi
803686dafe34Smrg      done
803786dafe34Smrg      # Quote the link command for shipping.
803886dafe34Smrg      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
803986dafe34Smrg      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
804086dafe34Smrg      if test "$hardcode_automatic" = yes ; then
804186dafe34Smrg	relink_command=
804286dafe34Smrg      fi
804376888252Smrg
804486dafe34Smrg      # Only create the output if not a dry run.
804586dafe34Smrg      $opt_dry_run || {
804686dafe34Smrg	for installed in no yes; do
804786dafe34Smrg	  if test "$installed" = yes; then
804886dafe34Smrg	    if test -z "$install_libdir"; then
804986dafe34Smrg	      break
805086dafe34Smrg	    fi
805186dafe34Smrg	    output="$output_objdir/$outputname"i
805286dafe34Smrg	    # Replace all uninstalled libtool libraries with the installed ones
805386dafe34Smrg	    newdependency_libs=
805486dafe34Smrg	    for deplib in $dependency_libs; do
805586dafe34Smrg	      case $deplib in
805686dafe34Smrg	      *.la)
805786dafe34Smrg		func_basename "$deplib"
805886dafe34Smrg		name="$func_basename_result"
805986dafe34Smrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
806086dafe34Smrg		test -z "$libdir" && \
806186dafe34Smrg		  func_fatal_error "\`$deplib' is not a valid libtool archive"
806286dafe34Smrg		newdependency_libs="$newdependency_libs $libdir/$name"
806386dafe34Smrg		;;
806486dafe34Smrg	      *) newdependency_libs="$newdependency_libs $deplib" ;;
806586dafe34Smrg	      esac
806686dafe34Smrg	    done
806786dafe34Smrg	    dependency_libs="$newdependency_libs"
806886dafe34Smrg	    newdlfiles=
806986dafe34Smrg
807086dafe34Smrg	    for lib in $dlfiles; do
807186dafe34Smrg	      case $lib in
807286dafe34Smrg	      *.la)
807386dafe34Smrg	        func_basename "$lib"
807486dafe34Smrg		name="$func_basename_result"
807586dafe34Smrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
807686dafe34Smrg		test -z "$libdir" && \
807786dafe34Smrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
807886dafe34Smrg		newdlfiles="$newdlfiles $libdir/$name"
807986dafe34Smrg		;;
808086dafe34Smrg	      *) newdlfiles="$newdlfiles $lib" ;;
808186dafe34Smrg	      esac
808286dafe34Smrg	    done
808386dafe34Smrg	    dlfiles="$newdlfiles"
808486dafe34Smrg	    newdlprefiles=
808586dafe34Smrg	    for lib in $dlprefiles; do
808686dafe34Smrg	      case $lib in
808786dafe34Smrg	      *.la)
808886dafe34Smrg		# Only pass preopened files to the pseudo-archive (for
808986dafe34Smrg		# eventual linking with the app. that links it) if we
809086dafe34Smrg		# didn't already link the preopened objects directly into
809186dafe34Smrg		# the library:
809286dafe34Smrg		func_basename "$lib"
809386dafe34Smrg		name="$func_basename_result"
809486dafe34Smrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
809586dafe34Smrg		test -z "$libdir" && \
809686dafe34Smrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
809786dafe34Smrg		newdlprefiles="$newdlprefiles $libdir/$name"
809886dafe34Smrg		;;
809986dafe34Smrg	      esac
810086dafe34Smrg	    done
810186dafe34Smrg	    dlprefiles="$newdlprefiles"
810286dafe34Smrg	  else
810386dafe34Smrg	    newdlfiles=
810486dafe34Smrg	    for lib in $dlfiles; do
810586dafe34Smrg	      case $lib in
810686dafe34Smrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
810786dafe34Smrg		*) abs=`pwd`"/$lib" ;;
810886dafe34Smrg	      esac
810986dafe34Smrg	      newdlfiles="$newdlfiles $abs"
811086dafe34Smrg	    done
811186dafe34Smrg	    dlfiles="$newdlfiles"
811286dafe34Smrg	    newdlprefiles=
811386dafe34Smrg	    for lib in $dlprefiles; do
811486dafe34Smrg	      case $lib in
811586dafe34Smrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
811686dafe34Smrg		*) abs=`pwd`"/$lib" ;;
811786dafe34Smrg	      esac
811886dafe34Smrg	      newdlprefiles="$newdlprefiles $abs"
811986dafe34Smrg	    done
812086dafe34Smrg	    dlprefiles="$newdlprefiles"
812186dafe34Smrg	  fi
812286dafe34Smrg	  $RM $output
812386dafe34Smrg	  # place dlname in correct position for cygwin
812486dafe34Smrg	  tdlname=$dlname
812586dafe34Smrg	  case $host,$output,$installed,$module,$dlname in
812686dafe34Smrg	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
812786dafe34Smrg	  esac
812886dafe34Smrg	  $ECHO > $output "\
812986dafe34Smrg# $outputname - a libtool library file
813086dafe34Smrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
813186dafe34Smrg#
813286dafe34Smrg# Please DO NOT delete this file!
813386dafe34Smrg# It is necessary for linking the library.
813476888252Smrg
813586dafe34Smrg# The name that we can dlopen(3).
813686dafe34Smrgdlname='$tdlname'
813776888252Smrg
813886dafe34Smrg# Names of this library.
813986dafe34Smrglibrary_names='$library_names'
814076888252Smrg
814186dafe34Smrg# The name of the static archive.
814286dafe34Smrgold_library='$old_library'
814376888252Smrg
814486dafe34Smrg# Linker flags that can not go in dependency_libs.
814586dafe34Smrginherited_linker_flags='$new_inherited_linker_flags'
814676888252Smrg
814786dafe34Smrg# Libraries that this one depends upon.
814886dafe34Smrgdependency_libs='$dependency_libs'
814976888252Smrg
815086dafe34Smrg# Names of additional weak libraries provided by this library
815186dafe34Smrgweak_library_names='$weak_libs'
815276888252Smrg
815386dafe34Smrg# Version information for $libname.
815486dafe34Smrgcurrent=$current
815586dafe34Smrgage=$age
815686dafe34Smrgrevision=$revision
815776888252Smrg
815886dafe34Smrg# Is this an already installed library?
815986dafe34Smrginstalled=$installed
816076888252Smrg
816186dafe34Smrg# Should we warn about portability when linking against -modules?
816286dafe34Smrgshouldnotlink=$module
816376888252Smrg
816486dafe34Smrg# Files to dlopen/dlpreopen
816586dafe34Smrgdlopen='$dlfiles'
816686dafe34Smrgdlpreopen='$dlprefiles'
816776888252Smrg
816886dafe34Smrg# Directory that this library needs to be installed in:
816986dafe34Smrglibdir='$install_libdir'"
817086dafe34Smrg	  if test "$installed" = no && test "$need_relink" = yes; then
817186dafe34Smrg	    $ECHO >> $output "\
817286dafe34Smrgrelink_command=\"$relink_command\""
817386dafe34Smrg	  fi
817486dafe34Smrg	done
817586dafe34Smrg      }
817676888252Smrg
817786dafe34Smrg      # Do a symbolic link so that the libtool archive can be found in
817886dafe34Smrg      # LD_LIBRARY_PATH before the program is installed.
817986dafe34Smrg      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
818086dafe34Smrg      ;;
818186dafe34Smrg    esac
818286dafe34Smrg    exit $EXIT_SUCCESS
818386dafe34Smrg}
818476888252Smrg
818586dafe34Smrg{ test "$mode" = link || test "$mode" = relink; } &&
818686dafe34Smrg    func_mode_link ${1+"$@"}
818776888252Smrg
818876888252Smrg
818986dafe34Smrg# func_mode_uninstall arg...
819086dafe34Smrgfunc_mode_uninstall ()
819186dafe34Smrg{
819286dafe34Smrg    $opt_debug
819386dafe34Smrg    RM="$nonopt"
819476888252Smrg    files=
819576888252Smrg    rmforce=
819676888252Smrg    exit_status=0
819776888252Smrg
819876888252Smrg    # This variable tells wrapper scripts just to set variables rather
819976888252Smrg    # than running their programs.
820076888252Smrg    libtool_install_magic="$magic"
820176888252Smrg
820276888252Smrg    for arg
820376888252Smrg    do
820476888252Smrg      case $arg in
820586dafe34Smrg      -f) RM="$RM $arg"; rmforce=yes ;;
820686dafe34Smrg      -*) RM="$RM $arg" ;;
820776888252Smrg      *) files="$files $arg" ;;
820876888252Smrg      esac
820976888252Smrg    done
821076888252Smrg
821186dafe34Smrg    test -z "$RM" && \
821286dafe34Smrg      func_fatal_help "you must specify an RM program"
821376888252Smrg
821476888252Smrg    rmdirs=
821576888252Smrg
821676888252Smrg    origobjdir="$objdir"
821776888252Smrg    for file in $files; do
821886dafe34Smrg      func_dirname "$file" "" "."
821986dafe34Smrg      dir="$func_dirname_result"
822086dafe34Smrg      if test "X$dir" = X.; then
822176888252Smrg	objdir="$origobjdir"
822276888252Smrg      else
822376888252Smrg	objdir="$dir/$origobjdir"
822476888252Smrg      fi
822586dafe34Smrg      func_basename "$file"
822686dafe34Smrg      name="$func_basename_result"
822776888252Smrg      test "$mode" = uninstall && objdir="$dir"
822876888252Smrg
822976888252Smrg      # Remember objdir for removal later, being careful to avoid duplicates
823076888252Smrg      if test "$mode" = clean; then
823176888252Smrg	case " $rmdirs " in
823276888252Smrg	  *" $objdir "*) ;;
823376888252Smrg	  *) rmdirs="$rmdirs $objdir" ;;
823476888252Smrg	esac
823576888252Smrg      fi
823676888252Smrg
823776888252Smrg      # Don't error if the file doesn't exist and rm -f was used.
823886dafe34Smrg      if { test -L "$file"; } >/dev/null 2>&1 ||
823986dafe34Smrg	 { test -h "$file"; } >/dev/null 2>&1 ||
824086dafe34Smrg	 test -f "$file"; then
824176888252Smrg	:
824276888252Smrg      elif test -d "$file"; then
824376888252Smrg	exit_status=1
824476888252Smrg	continue
824576888252Smrg      elif test "$rmforce" = yes; then
824676888252Smrg	continue
824776888252Smrg      fi
824876888252Smrg
824976888252Smrg      rmfiles="$file"
825076888252Smrg
825176888252Smrg      case $name in
825276888252Smrg      *.la)
825376888252Smrg	# Possibly a libtool archive, so verify it.
825486dafe34Smrg	if func_lalib_p "$file"; then
825586dafe34Smrg	  func_source $dir/$name
825676888252Smrg
825776888252Smrg	  # Delete the libtool libraries and symlinks.
825876888252Smrg	  for n in $library_names; do
825976888252Smrg	    rmfiles="$rmfiles $objdir/$n"
826076888252Smrg	  done
826176888252Smrg	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
826276888252Smrg
826376888252Smrg	  case "$mode" in
826476888252Smrg	  clean)
826576888252Smrg	    case "  $library_names " in
826676888252Smrg	    # "  " in the beginning catches empty $dlname
826776888252Smrg	    *" $dlname "*) ;;
826876888252Smrg	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
826976888252Smrg	    esac
827086dafe34Smrg	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
827176888252Smrg	    ;;
827276888252Smrg	  uninstall)
827376888252Smrg	    if test -n "$library_names"; then
827476888252Smrg	      # Do each command in the postuninstall commands.
827586dafe34Smrg	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
827676888252Smrg	    fi
827776888252Smrg
827876888252Smrg	    if test -n "$old_library"; then
827976888252Smrg	      # Do each command in the old_postuninstall commands.
828086dafe34Smrg	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
828176888252Smrg	    fi
828276888252Smrg	    # FIXME: should reinstall the best remaining shared library.
828376888252Smrg	    ;;
828476888252Smrg	  esac
828576888252Smrg	fi
828676888252Smrg	;;
828776888252Smrg
828876888252Smrg      *.lo)
828976888252Smrg	# Possibly a libtool object, so verify it.
829086dafe34Smrg	if func_lalib_p "$file"; then
829176888252Smrg
829276888252Smrg	  # Read the .lo file
829386dafe34Smrg	  func_source $dir/$name
829476888252Smrg
829576888252Smrg	  # Add PIC object to the list of files to remove.
829686dafe34Smrg	  if test -n "$pic_object" &&
829786dafe34Smrg	     test "$pic_object" != none; then
829876888252Smrg	    rmfiles="$rmfiles $dir/$pic_object"
829976888252Smrg	  fi
830076888252Smrg
830176888252Smrg	  # Add non-PIC object to the list of files to remove.
830286dafe34Smrg	  if test -n "$non_pic_object" &&
830386dafe34Smrg	     test "$non_pic_object" != none; then
830476888252Smrg	    rmfiles="$rmfiles $dir/$non_pic_object"
830576888252Smrg	  fi
830676888252Smrg	fi
830776888252Smrg	;;
830876888252Smrg
830976888252Smrg      *)
831076888252Smrg	if test "$mode" = clean ; then
831176888252Smrg	  noexename=$name
831276888252Smrg	  case $file in
831376888252Smrg	  *.exe)
831486dafe34Smrg	    func_stripname '' '.exe' "$file"
831586dafe34Smrg	    file=$func_stripname_result
831686dafe34Smrg	    func_stripname '' '.exe' "$name"
831786dafe34Smrg	    noexename=$func_stripname_result
831876888252Smrg	    # $file with .exe has already been added to rmfiles,
831976888252Smrg	    # add $file without .exe
832076888252Smrg	    rmfiles="$rmfiles $file"
832176888252Smrg	    ;;
832276888252Smrg	  esac
832376888252Smrg	  # Do a test to see if this is a libtool program.
832486dafe34Smrg	  if func_ltwrapper_p "$file"; then
832586dafe34Smrg	    if func_ltwrapper_executable_p "$file"; then
832686dafe34Smrg	      func_ltwrapper_scriptname "$file"
832786dafe34Smrg	      relink_command=
832886dafe34Smrg	      func_source $func_ltwrapper_scriptname_result
832986dafe34Smrg	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
833086dafe34Smrg	    else
833186dafe34Smrg	      relink_command=
833286dafe34Smrg	      func_source $dir/$noexename
833386dafe34Smrg	    fi
833476888252Smrg
833576888252Smrg	    # note $name still contains .exe if it was in $file originally
833676888252Smrg	    # as does the version of $file that was added into $rmfiles
833776888252Smrg	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
833876888252Smrg	    if test "$fast_install" = yes && test -n "$relink_command"; then
833976888252Smrg	      rmfiles="$rmfiles $objdir/lt-$name"
834076888252Smrg	    fi
834176888252Smrg	    if test "X$noexename" != "X$name" ; then
834276888252Smrg	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
834376888252Smrg	    fi
834476888252Smrg	  fi
834576888252Smrg	fi
834676888252Smrg	;;
834776888252Smrg      esac
834886dafe34Smrg      func_show_eval "$RM $rmfiles" 'exit_status=1'
834976888252Smrg    done
835076888252Smrg    objdir="$origobjdir"
835176888252Smrg
835276888252Smrg    # Try to remove the ${objdir}s in the directories where we deleted files
835376888252Smrg    for dir in $rmdirs; do
835476888252Smrg      if test -d "$dir"; then
835586dafe34Smrg	func_show_eval "rmdir $dir >/dev/null 2>&1"
835676888252Smrg      fi
835776888252Smrg    done
835876888252Smrg
835976888252Smrg    exit $exit_status
836086dafe34Smrg}
836176888252Smrg
836286dafe34Smrg{ test "$mode" = uninstall || test "$mode" = clean; } &&
836386dafe34Smrg    func_mode_uninstall ${1+"$@"}
836476888252Smrg
836586dafe34Smrgtest -z "$mode" && {
836686dafe34Smrg  help="$generic_help"
836786dafe34Smrg  func_fatal_help "you must specify a MODE"
836886dafe34Smrg}
836986dafe34Smrg
837086dafe34Smrgtest -z "$exec_cmd" && \
837186dafe34Smrg  func_fatal_help "invalid operation mode \`$mode'"
837276888252Smrg
837376888252Smrgif test -n "$exec_cmd"; then
837486dafe34Smrg  eval exec "$exec_cmd"
837576888252Smrg  exit $EXIT_FAILURE
837676888252Smrgfi
837776888252Smrg
837886dafe34Smrgexit $exit_status
837976888252Smrg
838076888252Smrg
838176888252Smrg# The TAGs below are defined such that we never get into a situation
838276888252Smrg# in which we disable both kinds of libraries.  Given conflicting
838376888252Smrg# choices, we go for a static library, that is the most portable,
838476888252Smrg# since we can't tell whether shared libraries were disabled because
838576888252Smrg# the user asked for that or because the platform doesn't support
838676888252Smrg# them.  This is particularly important on AIX, because we don't
838776888252Smrg# support having both static and shared libraries enabled at the same
838876888252Smrg# time on that platform, so we default to a shared-only configuration.
838976888252Smrg# If a disable-shared tag is given, we'll fallback to a static-only
839076888252Smrg# configuration.  But we'll never go from static-only to shared-only.
839176888252Smrg
839276888252Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
839386dafe34Smrgbuild_libtool_libs=no
839486dafe34Smrgbuild_old_libs=yes
839576888252Smrg# ### END LIBTOOL TAG CONFIG: disable-shared
839676888252Smrg
839776888252Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static
839886dafe34Smrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
839976888252Smrg# ### END LIBTOOL TAG CONFIG: disable-static
840076888252Smrg
840176888252Smrg# Local Variables:
840276888252Smrg# mode:shell-script
840376888252Smrg# sh-indentation:2
840476888252Smrg# End:
840586dafe34Smrg# vi:sw=2
840686dafe34Smrg
8407