ltmain.sh revision 475c125c
1475c125cSmrg# Generated from ltmain.m4sh.
24642e01fSmrg
3475c125cSmrg# libtool (GNU libtool) 2.2.10
44642e01fSmrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
54642e01fSmrg
66747b715Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
76747b715Smrg# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
84642e01fSmrg# This is free software; see the source for copying conditions.  There is NO
94642e01fSmrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
104642e01fSmrg
114642e01fSmrg# GNU Libtool is free software; you can redistribute it and/or modify
1205b261ecSmrg# it under the terms of the GNU General Public License as published by
1305b261ecSmrg# the Free Software Foundation; either version 2 of the License, or
1405b261ecSmrg# (at your option) any later version.
1505b261ecSmrg#
164642e01fSmrg# As a special exception to the GNU General Public License,
174642e01fSmrg# if you distribute this file as part of a program or library that
184642e01fSmrg# is built using GNU Libtool, you may include this file under the
194642e01fSmrg# same distribution terms that you use for the rest of that program.
204642e01fSmrg#
214642e01fSmrg# GNU Libtool is distributed in the hope that it will be useful, but
2205b261ecSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of
2305b261ecSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
2405b261ecSmrg# General Public License for more details.
2505b261ecSmrg#
2605b261ecSmrg# You should have received a copy of the GNU General Public License
274642e01fSmrg# along with GNU Libtool; see the file COPYING.  If not, a copy
284642e01fSmrg# can be downloaded from http://www.gnu.org/licenses/gpl.html,
294642e01fSmrg# or obtained by writing to the Free Software Foundation, Inc.,
304642e01fSmrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
3105b261ecSmrg
324642e01fSmrg# Usage: $progname [OPTION]... [MODE-ARG]...
334642e01fSmrg#
344642e01fSmrg# Provide generalized library-building support services.
354642e01fSmrg#
366747b715Smrg#       --config             show all configuration variables
376747b715Smrg#       --debug              enable verbose shell tracing
386747b715Smrg#   -n, --dry-run            display commands without modifying any files
396747b715Smrg#       --features           display basic configuration information and exit
406747b715Smrg#       --mode=MODE          use operation mode MODE
416747b715Smrg#       --preserve-dup-deps  don't remove duplicate dependency libraries
426747b715Smrg#       --quiet, --silent    don't print informational messages
436747b715Smrg#       --no-quiet, --no-silent
446747b715Smrg#                            print informational messages (default)
456747b715Smrg#       --tag=TAG            use configuration variables from tag TAG
466747b715Smrg#   -v, --verbose            print more informational messages than default
476747b715Smrg#       --no-verbose         don't print the extra informational messages
486747b715Smrg#       --version            print version information
496747b715Smrg#   -h, --help, --help-all   print short, long, or detailed help message
504642e01fSmrg#
514642e01fSmrg# MODE must be one of the following:
524642e01fSmrg#
536747b715Smrg#         clean              remove files from the build directory
546747b715Smrg#         compile            compile a source file into a libtool object
556747b715Smrg#         execute            automatically set library path, then run a program
566747b715Smrg#         finish             complete the installation of libtool libraries
576747b715Smrg#         install            install libraries or executables
586747b715Smrg#         link               create a library or an executable
596747b715Smrg#         uninstall          remove libraries from an installed directory
604642e01fSmrg#
616747b715Smrg# MODE-ARGS vary depending on the MODE.  When passed as first option,
626747b715Smrg# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
634642e01fSmrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
644642e01fSmrg#
654642e01fSmrg# When reporting a bug, please describe a test case to reproduce it and
664642e01fSmrg# include the following information:
674642e01fSmrg#
686747b715Smrg#         host-triplet:	$host
696747b715Smrg#         shell:		$SHELL
706747b715Smrg#         compiler:		$LTCC
716747b715Smrg#         compiler flags:		$LTCFLAGS
726747b715Smrg#         linker:		$LD (gnu? $with_gnu_ld)
73475c125cSmrg#         $progname:	(GNU libtool) 2.2.10
746747b715Smrg#         automake:	$automake_version
756747b715Smrg#         autoconf:	$autoconf_version
764642e01fSmrg#
774642e01fSmrg# Report bugs to <bug-libtool@gnu.org>.
7805b261ecSmrg
796747b715SmrgPROGRAM=libtool
8005b261ecSmrgPACKAGE=libtool
81475c125cSmrgVERSION=2.2.10
824642e01fSmrgTIMESTAMP=""
83475c125cSmrgpackage_revision=1.3175
8405b261ecSmrg
854642e01fSmrg# Be Bourne compatible
8605b261ecSmrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
8705b261ecSmrg  emulate sh
8805b261ecSmrg  NULLCMD=:
8905b261ecSmrg  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
9005b261ecSmrg  # is contrary to our usage.  Disable this feature.
9105b261ecSmrg  alias -g '${1+"$@"}'='"$@"'
9205b261ecSmrg  setopt NO_GLOB_SUBST
9305b261ecSmrgelse
9405b261ecSmrg  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
9505b261ecSmrgfi
9605b261ecSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
9705b261ecSmrgDUALCASE=1; export DUALCASE # for MKS sh
9805b261ecSmrg
996747b715Smrg# A function that is used when there is no print builtin or printf.
1006747b715Smrgfunc_fallback_echo ()
1016747b715Smrg{
1026747b715Smrg  eval 'cat <<_LTECHO_EOF
1036747b715Smrg$1
1046747b715Smrg_LTECHO_EOF'
1056747b715Smrg}
1066747b715Smrg
1074642e01fSmrg# NLS nuisances: We save the old values to restore during execute mode.
1084642e01fSmrglt_user_locale=
1094642e01fSmrglt_safe_locale=
11005b261ecSmrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
11105b261ecSmrgdo
11205b261ecSmrg  eval "if test \"\${$lt_var+set}\" = set; then
1134642e01fSmrg          save_$lt_var=\$$lt_var
1144642e01fSmrg          $lt_var=C
11505b261ecSmrg	  export $lt_var
1164642e01fSmrg	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
1174642e01fSmrg	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
11805b261ecSmrg	fi"
11905b261ecSmrgdone
1206747b715SmrgLC_ALL=C
1216747b715SmrgLANGUAGE=C
1226747b715Smrgexport LANGUAGE LC_ALL
12305b261ecSmrg
1244642e01fSmrg$lt_unset CDPATH
1254642e01fSmrg
1264642e01fSmrg
1276747b715Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
1286747b715Smrg# is ksh but when the shell is invoked as "sh" and the current value of
1296747b715Smrg# the _XPG environment variable is not equal to 1 (one), the special
1306747b715Smrg# positional parameter $0, within a function call, is the name of the
1316747b715Smrg# function.
1326747b715Smrgprogpath="$0"
1334642e01fSmrg
1344642e01fSmrg
1354642e01fSmrg
1364642e01fSmrg: ${CP="cp -f"}
1376747b715Smrgtest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
138475c125cSmrg: ${EGREP="/usr/bin/grep -E"}
139475c125cSmrg: ${FGREP="/usr/bin/grep -F"}
140475c125cSmrg: ${GREP="/usr/bin/grep"}
1414642e01fSmrg: ${LN_S="ln -s"}
1424642e01fSmrg: ${MAKE="make"}
1434642e01fSmrg: ${MKDIR="mkdir"}
1444642e01fSmrg: ${MV="mv -f"}
1454642e01fSmrg: ${RM="rm -f"}
146475c125cSmrg: ${SED="/usr/bin/sed"}
1474642e01fSmrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
1484642e01fSmrg: ${Xsed="$SED -e 1s/^X//"}
1494642e01fSmrg
1504642e01fSmrg# Global variables:
1514642e01fSmrgEXIT_SUCCESS=0
1524642e01fSmrgEXIT_FAILURE=1
1534642e01fSmrgEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
1544642e01fSmrgEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
1554642e01fSmrg
1564642e01fSmrgexit_status=$EXIT_SUCCESS
15705b261ecSmrg
15805b261ecSmrg# Make sure IFS has a sensible default
15905b261ecSmrglt_nl='
16005b261ecSmrg'
16105b261ecSmrgIFS=" 	$lt_nl"
16205b261ecSmrg
1634642e01fSmrgdirname="s,/[^/]*$,,"
1644642e01fSmrgbasename="s,^.*/,,"
1654642e01fSmrg
1664642e01fSmrg# func_dirname_and_basename file append nondir_replacement
1674642e01fSmrg# perform func_basename and func_dirname in a single function
1684642e01fSmrg# call:
1694642e01fSmrg#   dirname:  Compute the dirname of FILE.  If nonempty,
1704642e01fSmrg#             add APPEND to the result, otherwise set result
1714642e01fSmrg#             to NONDIR_REPLACEMENT.
1724642e01fSmrg#             value returned in "$func_dirname_result"
1734642e01fSmrg#   basename: Compute filename of FILE.
1744642e01fSmrg#             value retuned in "$func_basename_result"
1754642e01fSmrg# Implementation must be kept synchronized with func_dirname
1764642e01fSmrg# and func_basename. For efficiency, we do not delegate to
1774642e01fSmrg# those functions but instead duplicate the functionality here.
1784642e01fSmrgfunc_dirname_and_basename ()
1794642e01fSmrg{
180475c125cSmrg  # Extract subdirectory from the argument.
181475c125cSmrg  func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
182475c125cSmrg  if test "X$func_dirname_result" = "X${1}"; then
183475c125cSmrg    func_dirname_result="${3}"
184475c125cSmrg  else
185475c125cSmrg    func_dirname_result="$func_dirname_result${2}"
186475c125cSmrg  fi
187475c125cSmrg  func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
188475c125cSmrg}
1896747b715Smrg
190475c125cSmrg# Generated shell functions inserted here.
1916747b715Smrg
1926747b715Smrg# These SED scripts presuppose an absolute path with a trailing slash.
1936747b715Smrgpathcar='s,^/\([^/]*\).*$,\1,'
1946747b715Smrgpathcdr='s,^/[^/]*,,'
1956747b715Smrgremovedotparts=':dotsl
1966747b715Smrg		s@/\./@/@g
1976747b715Smrg		t dotsl
1986747b715Smrg		s,/\.$,/,'
1996747b715Smrgcollapseslashes='s@/\{1,\}@/@g'
2006747b715Smrgfinalslash='s,/*$,/,'
2016747b715Smrg
2026747b715Smrg# func_normal_abspath PATH
2036747b715Smrg# Remove doubled-up and trailing slashes, "." path components,
2046747b715Smrg# and cancel out any ".." path components in PATH after making
2056747b715Smrg# it an absolute path.
2066747b715Smrg#             value returned in "$func_normal_abspath_result"
2076747b715Smrgfunc_normal_abspath ()
2086747b715Smrg{
2096747b715Smrg  # Start from root dir and reassemble the path.
2106747b715Smrg  func_normal_abspath_result=
2116747b715Smrg  func_normal_abspath_tpath=$1
2126747b715Smrg  func_normal_abspath_altnamespace=
2136747b715Smrg  case $func_normal_abspath_tpath in
2146747b715Smrg    "")
2156747b715Smrg      # Empty path, that just means $cwd.
2166747b715Smrg      func_stripname '' '/' "`pwd`"
2176747b715Smrg      func_normal_abspath_result=$func_stripname_result
2186747b715Smrg      return
2196747b715Smrg    ;;
2206747b715Smrg    # The next three entries are used to spot a run of precisely
2216747b715Smrg    # two leading slashes without using negated character classes;
2226747b715Smrg    # we take advantage of case's first-match behaviour.
2236747b715Smrg    ///*)
2246747b715Smrg      # Unusual form of absolute path, do nothing.
2256747b715Smrg    ;;
2266747b715Smrg    //*)
2276747b715Smrg      # Not necessarily an ordinary path; POSIX reserves leading '//'
2286747b715Smrg      # and for example Cygwin uses it to access remote file shares
2296747b715Smrg      # over CIFS/SMB, so we conserve a leading double slash if found.
2306747b715Smrg      func_normal_abspath_altnamespace=/
2316747b715Smrg    ;;
2326747b715Smrg    /*)
2336747b715Smrg      # Absolute path, do nothing.
2346747b715Smrg    ;;
2356747b715Smrg    *)
2366747b715Smrg      # Relative path, prepend $cwd.
2376747b715Smrg      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
2386747b715Smrg    ;;
2396747b715Smrg  esac
2406747b715Smrg  # Cancel out all the simple stuff to save iterations.  We also want
2416747b715Smrg  # the path to end with a slash for ease of parsing, so make sure
2426747b715Smrg  # there is one (and only one) here.
2436747b715Smrg  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
2446747b715Smrg        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
2456747b715Smrg  while :; do
2466747b715Smrg    # Processed it all yet?
2476747b715Smrg    if test "$func_normal_abspath_tpath" = / ; then
2486747b715Smrg      # If we ascended to the root using ".." the result may be empty now.
2496747b715Smrg      if test -z "$func_normal_abspath_result" ; then
2506747b715Smrg        func_normal_abspath_result=/
2516747b715Smrg      fi
2526747b715Smrg      break
2536747b715Smrg    fi
2546747b715Smrg    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
2556747b715Smrg        -e "$pathcar"`
2566747b715Smrg    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
2576747b715Smrg        -e "$pathcdr"`
2586747b715Smrg    # Figure out what to do with it
2596747b715Smrg    case $func_normal_abspath_tcomponent in
2606747b715Smrg      "")
2616747b715Smrg        # Trailing empty path component, ignore it.
2626747b715Smrg      ;;
2636747b715Smrg      ..)
2646747b715Smrg        # Parent dir; strip last assembled component from result.
2656747b715Smrg        func_dirname "$func_normal_abspath_result"
2666747b715Smrg        func_normal_abspath_result=$func_dirname_result
2676747b715Smrg      ;;
2686747b715Smrg      *)
2696747b715Smrg        # Actual path component, append it.
2706747b715Smrg        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
2716747b715Smrg      ;;
2726747b715Smrg    esac
2736747b715Smrg  done
2746747b715Smrg  # Restore leading double-slash if one was found on entry.
2756747b715Smrg  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
2764642e01fSmrg}
27705b261ecSmrg
2786747b715Smrg# func_relative_path SRCDIR DSTDIR
2796747b715Smrg# generates a relative path from SRCDIR to DSTDIR, with a trailing
2806747b715Smrg# slash if non-empty, suitable for immediately appending a filename
2816747b715Smrg# without needing to append a separator.
2826747b715Smrg#             value returned in "$func_relative_path_result"
2836747b715Smrgfunc_relative_path ()
2846747b715Smrg{
2856747b715Smrg  func_relative_path_result=
2866747b715Smrg  func_normal_abspath "$1"
2876747b715Smrg  func_relative_path_tlibdir=$func_normal_abspath_result
2886747b715Smrg  func_normal_abspath "$2"
2896747b715Smrg  func_relative_path_tbindir=$func_normal_abspath_result
2906747b715Smrg
2916747b715Smrg  # Ascend the tree starting from libdir
2926747b715Smrg  while :; do
2936747b715Smrg    # check if we have found a prefix of bindir
2946747b715Smrg    case $func_relative_path_tbindir in
2956747b715Smrg      $func_relative_path_tlibdir)
2966747b715Smrg        # found an exact match
2976747b715Smrg        func_relative_path_tcancelled=
2986747b715Smrg        break
2996747b715Smrg        ;;
3006747b715Smrg      $func_relative_path_tlibdir*)
3016747b715Smrg        # found a matching prefix
3026747b715Smrg        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
3036747b715Smrg        func_relative_path_tcancelled=$func_stripname_result
3046747b715Smrg        if test -z "$func_relative_path_result"; then
3056747b715Smrg          func_relative_path_result=.
3066747b715Smrg        fi
3076747b715Smrg        break
3086747b715Smrg        ;;
3096747b715Smrg      *)
3106747b715Smrg        func_dirname $func_relative_path_tlibdir
3116747b715Smrg        func_relative_path_tlibdir=${func_dirname_result}
3126747b715Smrg        if test "x$func_relative_path_tlibdir" = x ; then
3136747b715Smrg          # Have to descend all the way to the root!
3146747b715Smrg          func_relative_path_result=../$func_relative_path_result
3156747b715Smrg          func_relative_path_tcancelled=$func_relative_path_tbindir
3166747b715Smrg          break
3176747b715Smrg        fi
3186747b715Smrg        func_relative_path_result=../$func_relative_path_result
3196747b715Smrg        ;;
3206747b715Smrg    esac
3216747b715Smrg  done
3224642e01fSmrg
3236747b715Smrg  # Now calculate path; take care to avoid doubling-up slashes.
3246747b715Smrg  func_stripname '' '/' "$func_relative_path_result"
3256747b715Smrg  func_relative_path_result=$func_stripname_result
3266747b715Smrg  func_stripname '/' '/' "$func_relative_path_tcancelled"
3276747b715Smrg  if test "x$func_stripname_result" != x ; then
3286747b715Smrg    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
3296747b715Smrg  fi
3306747b715Smrg
3316747b715Smrg  # Normalisation. If bindir is libdir, return empty string,
3326747b715Smrg  # else relative path ending with a slash; either way, target
3336747b715Smrg  # file name can be directly appended.
3346747b715Smrg  if test ! -z "$func_relative_path_result"; then
3356747b715Smrg    func_stripname './' '' "$func_relative_path_result/"
3366747b715Smrg    func_relative_path_result=$func_stripname_result
3376747b715Smrg  fi
3386747b715Smrg}
3394642e01fSmrg
3404642e01fSmrg# The name of this program:
3414642e01fSmrgfunc_dirname_and_basename "$progpath"
3424642e01fSmrgprogname=$func_basename_result
3434642e01fSmrg
3444642e01fSmrg# Make sure we have an absolute path for reexecution:
3454642e01fSmrgcase $progpath in
3464642e01fSmrg  [\\/]*|[A-Za-z]:\\*) ;;
3474642e01fSmrg  *[\\/]*)
3484642e01fSmrg     progdir=$func_dirname_result
3494642e01fSmrg     progdir=`cd "$progdir" && pwd`
3504642e01fSmrg     progpath="$progdir/$progname"
3514642e01fSmrg     ;;
3524642e01fSmrg  *)
3534642e01fSmrg     save_IFS="$IFS"
3544642e01fSmrg     IFS=:
3554642e01fSmrg     for progdir in $PATH; do
3564642e01fSmrg       IFS="$save_IFS"
3574642e01fSmrg       test -x "$progdir/$progname" && break
3584642e01fSmrg     done
3594642e01fSmrg     IFS="$save_IFS"
3604642e01fSmrg     test -n "$progdir" || progdir=`pwd`
3614642e01fSmrg     progpath="$progdir/$progname"
3624642e01fSmrg     ;;
3634642e01fSmrgesac
3644642e01fSmrg
3654642e01fSmrg# Sed substitution that helps us do robust quoting.  It backslashifies
3664642e01fSmrg# metacharacters that are still active within double-quoted strings.
3674642e01fSmrgXsed="${SED}"' -e 1s/^X//'
3684642e01fSmrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g'
3694642e01fSmrg
3704642e01fSmrg# Same as above, but do not quote variable references.
3714642e01fSmrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
3724642e01fSmrg
3734642e01fSmrg# Re-`\' parameter expansions in output of double_quote_subst that were
3744642e01fSmrg# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
3754642e01fSmrg# in input to double_quote_subst, that '$' was protected from expansion.
3764642e01fSmrg# Since each input `\' is now two `\'s, look for any number of runs of
3774642e01fSmrg# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
3784642e01fSmrgbs='\\'
3794642e01fSmrgbs2='\\\\'
3804642e01fSmrgbs4='\\\\\\\\'
3814642e01fSmrgdollar='\$'
3824642e01fSmrgsed_double_backslash="\
3834642e01fSmrg  s/$bs4/&\\
3844642e01fSmrg/g
3854642e01fSmrg  s/^$bs2$dollar/$bs&/
3864642e01fSmrg  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
3874642e01fSmrg  s/\n//g"
3884642e01fSmrg
3894642e01fSmrg# Standard options:
3904642e01fSmrgopt_dry_run=false
3914642e01fSmrgopt_help=false
3924642e01fSmrgopt_quiet=false
3934642e01fSmrgopt_verbose=false
3944642e01fSmrgopt_warning=:
3954642e01fSmrg
3964642e01fSmrg# func_echo arg...
3974642e01fSmrg# Echo program name prefixed message, along with the current mode
3984642e01fSmrg# name if it has been set yet.
3994642e01fSmrgfunc_echo ()
4004642e01fSmrg{
401475c125cSmrg    $ECHO "$progname${mode+: }$mode: $*"
4024642e01fSmrg}
4034642e01fSmrg
4044642e01fSmrg# func_verbose arg...
4054642e01fSmrg# Echo program name prefixed message in verbose mode only.
4064642e01fSmrgfunc_verbose ()
4074642e01fSmrg{
4084642e01fSmrg    $opt_verbose && func_echo ${1+"$@"}
4094642e01fSmrg
4104642e01fSmrg    # A bug in bash halts the script if the last line of a function
4114642e01fSmrg    # fails when set -e is in force, so we need another command to
4124642e01fSmrg    # work around that:
4134642e01fSmrg    :
4144642e01fSmrg}
4154642e01fSmrg
4166747b715Smrg# func_echo_all arg...
4176747b715Smrg# Invoke $ECHO with all args, space-separated.
4186747b715Smrgfunc_echo_all ()
4196747b715Smrg{
4206747b715Smrg    $ECHO "$*"
4216747b715Smrg}
4226747b715Smrg
4234642e01fSmrg# func_error arg...
4244642e01fSmrg# Echo program name prefixed message to standard error.
4254642e01fSmrgfunc_error ()
4264642e01fSmrg{
427475c125cSmrg    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
4284642e01fSmrg}
4294642e01fSmrg
4304642e01fSmrg# func_warning arg...
4314642e01fSmrg# Echo program name prefixed warning message to standard error.
4324642e01fSmrgfunc_warning ()
4334642e01fSmrg{
434475c125cSmrg    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
4354642e01fSmrg
4364642e01fSmrg    # bash bug again:
4374642e01fSmrg    :
4384642e01fSmrg}
4394642e01fSmrg
4404642e01fSmrg# func_fatal_error arg...
4414642e01fSmrg# Echo program name prefixed message to standard error, and exit.
4424642e01fSmrgfunc_fatal_error ()
4434642e01fSmrg{
4444642e01fSmrg    func_error ${1+"$@"}
4454642e01fSmrg    exit $EXIT_FAILURE
4464642e01fSmrg}
4474642e01fSmrg
4484642e01fSmrg# func_fatal_help arg...
4494642e01fSmrg# Echo program name prefixed message to standard error, followed by
4504642e01fSmrg# a help hint, and exit.
4514642e01fSmrgfunc_fatal_help ()
4524642e01fSmrg{
4534642e01fSmrg    func_error ${1+"$@"}
4544642e01fSmrg    func_fatal_error "$help"
4554642e01fSmrg}
4564642e01fSmrghelp="Try \`$progname --help' for more information."  ## default
4574642e01fSmrg
4584642e01fSmrg
4594642e01fSmrg# func_grep expression filename
4604642e01fSmrg# Check whether EXPRESSION matches any line of FILENAME, without output.
4614642e01fSmrgfunc_grep ()
4624642e01fSmrg{
4634642e01fSmrg    $GREP "$1" "$2" >/dev/null 2>&1
4644642e01fSmrg}
4654642e01fSmrg
4664642e01fSmrg
4674642e01fSmrg# func_mkdir_p directory-path
4684642e01fSmrg# Make sure the entire path to DIRECTORY-PATH is available.
4694642e01fSmrgfunc_mkdir_p ()
4704642e01fSmrg{
4714642e01fSmrg    my_directory_path="$1"
4724642e01fSmrg    my_dir_list=
4734642e01fSmrg
4744642e01fSmrg    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
4754642e01fSmrg
4764642e01fSmrg      # Protect directory names starting with `-'
4774642e01fSmrg      case $my_directory_path in
4784642e01fSmrg        -*) my_directory_path="./$my_directory_path" ;;
4794642e01fSmrg      esac
4804642e01fSmrg
4814642e01fSmrg      # While some portion of DIR does not yet exist...
4824642e01fSmrg      while test ! -d "$my_directory_path"; do
4834642e01fSmrg        # ...make a list in topmost first order.  Use a colon delimited
4844642e01fSmrg	# list incase some portion of path contains whitespace.
4854642e01fSmrg        my_dir_list="$my_directory_path:$my_dir_list"
4864642e01fSmrg
4874642e01fSmrg        # If the last portion added has no slash in it, the list is done
4884642e01fSmrg        case $my_directory_path in */*) ;; *) break ;; esac
4894642e01fSmrg
4904642e01fSmrg        # ...otherwise throw away the child directory and loop
4916747b715Smrg        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
4924642e01fSmrg      done
4936747b715Smrg      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
4944642e01fSmrg
4954642e01fSmrg      save_mkdir_p_IFS="$IFS"; IFS=':'
4964642e01fSmrg      for my_dir in $my_dir_list; do
4974642e01fSmrg	IFS="$save_mkdir_p_IFS"
4984642e01fSmrg        # mkdir can fail with a `File exist' error if two processes
4994642e01fSmrg        # try to create one of the directories concurrently.  Don't
5004642e01fSmrg        # stop in that case!
5014642e01fSmrg        $MKDIR "$my_dir" 2>/dev/null || :
5024642e01fSmrg      done
5034642e01fSmrg      IFS="$save_mkdir_p_IFS"
5044642e01fSmrg
5054642e01fSmrg      # Bail out if we (or some other process) failed to create a directory.
5064642e01fSmrg      test -d "$my_directory_path" || \
5074642e01fSmrg        func_fatal_error "Failed to create \`$1'"
5084642e01fSmrg    fi
5094642e01fSmrg}
51005b261ecSmrg
51105b261ecSmrg
51205b261ecSmrg# func_mktempdir [string]
51305b261ecSmrg# Make a temporary directory that won't clash with other running
51405b261ecSmrg# libtool processes, and avoids race conditions if possible.  If
51505b261ecSmrg# given, STRING is the basename for that directory.
51605b261ecSmrgfunc_mktempdir ()
51705b261ecSmrg{
51805b261ecSmrg    my_template="${TMPDIR-/tmp}/${1-$progname}"
51905b261ecSmrg
5204642e01fSmrg    if test "$opt_dry_run" = ":"; then
52105b261ecSmrg      # Return a directory name, but don't create it in dry-run mode
52205b261ecSmrg      my_tmpdir="${my_template}-$$"
52305b261ecSmrg    else
52405b261ecSmrg
52505b261ecSmrg      # If mktemp works, use that first and foremost
52605b261ecSmrg      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
52705b261ecSmrg
52805b261ecSmrg      if test ! -d "$my_tmpdir"; then
5294642e01fSmrg        # Failing that, at least try and use $RANDOM to avoid a race
5304642e01fSmrg        my_tmpdir="${my_template}-${RANDOM-0}$$"
53105b261ecSmrg
5324642e01fSmrg        save_mktempdir_umask=`umask`
5334642e01fSmrg        umask 0077
5344642e01fSmrg        $MKDIR "$my_tmpdir"
5354642e01fSmrg        umask $save_mktempdir_umask
53605b261ecSmrg      fi
53705b261ecSmrg
53805b261ecSmrg      # If we're not in dry-run mode, bomb out on failure
5394642e01fSmrg      test -d "$my_tmpdir" || \
5404642e01fSmrg        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
54105b261ecSmrg    fi
54205b261ecSmrg
5436747b715Smrg    $ECHO "$my_tmpdir"
54405b261ecSmrg}
54505b261ecSmrg
54605b261ecSmrg
5474642e01fSmrg# func_quote_for_eval arg
5484642e01fSmrg# Aesthetically quote ARG to be evaled later.
5494642e01fSmrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
5504642e01fSmrg# is double-quoted, suitable for a subsequent eval, whereas
5514642e01fSmrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
5524642e01fSmrg# which are still active within double quotes backslashified.
5534642e01fSmrgfunc_quote_for_eval ()
55405b261ecSmrg{
5554642e01fSmrg    case $1 in
5564642e01fSmrg      *[\\\`\"\$]*)
5576747b715Smrg	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
5584642e01fSmrg      *)
5594642e01fSmrg        func_quote_for_eval_unquoted_result="$1" ;;
5604642e01fSmrg    esac
5614642e01fSmrg
5624642e01fSmrg    case $func_quote_for_eval_unquoted_result in
5634642e01fSmrg      # Double-quote args containing shell metacharacters to delay
5644642e01fSmrg      # word splitting, command substitution and and variable
5654642e01fSmrg      # expansion for a subsequent eval.
5664642e01fSmrg      # Many Bourne shells cannot handle close brackets correctly
5674642e01fSmrg      # in scan sets, so we specify it separately.
5684642e01fSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
5694642e01fSmrg        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
5704642e01fSmrg        ;;
5714642e01fSmrg      *)
5724642e01fSmrg        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
57305b261ecSmrg    esac
57405b261ecSmrg}
57505b261ecSmrg
57605b261ecSmrg
5774642e01fSmrg# func_quote_for_expand arg
5784642e01fSmrg# Aesthetically quote ARG to be evaled later; same as above,
5794642e01fSmrg# but do not quote variable references.
5804642e01fSmrgfunc_quote_for_expand ()
58105b261ecSmrg{
5824642e01fSmrg    case $1 in
5834642e01fSmrg      *[\\\`\"]*)
5846747b715Smrg	my_arg=`$ECHO "$1" | $SED \
5854642e01fSmrg	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
58605b261ecSmrg      *)
5874642e01fSmrg        my_arg="$1" ;;
5884642e01fSmrg    esac
5894642e01fSmrg
5904642e01fSmrg    case $my_arg in
5914642e01fSmrg      # Double-quote args containing shell metacharacters to delay
5924642e01fSmrg      # word splitting and command substitution for a subsequent eval.
5934642e01fSmrg      # Many Bourne shells cannot handle close brackets correctly
5944642e01fSmrg      # in scan sets, so we specify it separately.
5954642e01fSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
5964642e01fSmrg        my_arg="\"$my_arg\""
5974642e01fSmrg        ;;
5984642e01fSmrg    esac
5994642e01fSmrg
6004642e01fSmrg    func_quote_for_expand_result="$my_arg"
60105b261ecSmrg}
60205b261ecSmrg
60305b261ecSmrg
6044642e01fSmrg# func_show_eval cmd [fail_exp]
6054642e01fSmrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
6064642e01fSmrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
6074642e01fSmrg# is given, then evaluate it.
6084642e01fSmrgfunc_show_eval ()
60905b261ecSmrg{
6104642e01fSmrg    my_cmd="$1"
6114642e01fSmrg    my_fail_exp="${2-:}"
61205b261ecSmrg
6134642e01fSmrg    ${opt_silent-false} || {
6144642e01fSmrg      func_quote_for_expand "$my_cmd"
6154642e01fSmrg      eval "func_echo $func_quote_for_expand_result"
6164642e01fSmrg    }
6174642e01fSmrg
6184642e01fSmrg    if ${opt_dry_run-false}; then :; else
6194642e01fSmrg      eval "$my_cmd"
6204642e01fSmrg      my_status=$?
6214642e01fSmrg      if test "$my_status" -eq 0; then :; else
6224642e01fSmrg	eval "(exit $my_status); $my_fail_exp"
6234642e01fSmrg      fi
62405b261ecSmrg    fi
62505b261ecSmrg}
62605b261ecSmrg
6274642e01fSmrg
6284642e01fSmrg# func_show_eval_locale cmd [fail_exp]
6294642e01fSmrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
6304642e01fSmrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
6314642e01fSmrg# is given, then evaluate it.  Use the saved locale for evaluation.
6324642e01fSmrgfunc_show_eval_locale ()
63305b261ecSmrg{
6344642e01fSmrg    my_cmd="$1"
6354642e01fSmrg    my_fail_exp="${2-:}"
6364642e01fSmrg
6374642e01fSmrg    ${opt_silent-false} || {
6384642e01fSmrg      func_quote_for_expand "$my_cmd"
6394642e01fSmrg      eval "func_echo $func_quote_for_expand_result"
6404642e01fSmrg    }
6414642e01fSmrg
6424642e01fSmrg    if ${opt_dry_run-false}; then :; else
6434642e01fSmrg      eval "$lt_user_locale
6444642e01fSmrg	    $my_cmd"
6454642e01fSmrg      my_status=$?
6464642e01fSmrg      eval "$lt_safe_locale"
6474642e01fSmrg      if test "$my_status" -eq 0; then :; else
6484642e01fSmrg	eval "(exit $my_status); $my_fail_exp"
6494642e01fSmrg      fi
65005b261ecSmrg    fi
6514642e01fSmrg}
65205b261ecSmrg
6534642e01fSmrg
6544642e01fSmrg# func_version
6554642e01fSmrg# Echo version message to standard output and exit.
6564642e01fSmrgfunc_version ()
6574642e01fSmrg{
6586747b715Smrg    $SED -n '/(C)/!b go
6596747b715Smrg	:more
6606747b715Smrg	/\./!{
6616747b715Smrg	  N
6626747b715Smrg	  s/\n# / /
6636747b715Smrg	  b more
6646747b715Smrg	}
6656747b715Smrg	:go
6666747b715Smrg	/^# '$PROGRAM' (GNU /,/# warranty; / {
6674642e01fSmrg        s/^# //
6684642e01fSmrg	s/^# *$//
6694642e01fSmrg        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
6704642e01fSmrg        p
6714642e01fSmrg     }' < "$progpath"
6724642e01fSmrg     exit $?
6734642e01fSmrg}
6744642e01fSmrg
6754642e01fSmrg# func_usage
6764642e01fSmrg# Echo short help message to standard output and exit.
6774642e01fSmrgfunc_usage ()
6784642e01fSmrg{
6796747b715Smrg    $SED -n '/^# Usage:/,/^#  *.*--help/ {
6804642e01fSmrg        s/^# //
6814642e01fSmrg	s/^# *$//
6824642e01fSmrg	s/\$progname/'$progname'/
6834642e01fSmrg	p
6844642e01fSmrg    }' < "$progpath"
6856747b715Smrg    echo
6864642e01fSmrg    $ECHO "run \`$progname --help | more' for full usage"
6874642e01fSmrg    exit $?
6884642e01fSmrg}
6894642e01fSmrg
6906747b715Smrg# func_help [NOEXIT]
6916747b715Smrg# Echo long help message to standard output and exit,
6926747b715Smrg# unless 'noexit' is passed as argument.
6934642e01fSmrgfunc_help ()
6944642e01fSmrg{
6954642e01fSmrg    $SED -n '/^# Usage:/,/# Report bugs to/ {
6964642e01fSmrg        s/^# //
6974642e01fSmrg	s/^# *$//
6984642e01fSmrg	s*\$progname*'$progname'*
6994642e01fSmrg	s*\$host*'"$host"'*
7004642e01fSmrg	s*\$SHELL*'"$SHELL"'*
7014642e01fSmrg	s*\$LTCC*'"$LTCC"'*
7024642e01fSmrg	s*\$LTCFLAGS*'"$LTCFLAGS"'*
7034642e01fSmrg	s*\$LD*'"$LD"'*
7044642e01fSmrg	s/\$with_gnu_ld/'"$with_gnu_ld"'/
7054642e01fSmrg	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
7064642e01fSmrg	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
7074642e01fSmrg	p
708475c125cSmrg     }' < "$progpath"
7096747b715Smrg    ret=$?
7106747b715Smrg    if test -z "$1"; then
7116747b715Smrg      exit $ret
7126747b715Smrg    fi
7134642e01fSmrg}
7144642e01fSmrg
7154642e01fSmrg# func_missing_arg argname
7164642e01fSmrg# Echo program name prefixed message to standard error and set global
7174642e01fSmrg# exit_cmd.
7184642e01fSmrgfunc_missing_arg ()
7194642e01fSmrg{
7206747b715Smrg    func_error "missing argument for $1."
7214642e01fSmrg    exit_cmd=exit
72205b261ecSmrg}
72305b261ecSmrg
7246747b715Smrgexit_cmd=:
7256747b715Smrg
7264642e01fSmrg
7274642e01fSmrg
72805b261ecSmrg
72905b261ecSmrg
730475c125cSmrg
7314642e01fSmrgmagic="%%%MAGIC variable%%%"
7324642e01fSmrgmagic_exe="%%%MAGIC EXE variable%%%"
73305b261ecSmrg
7344642e01fSmrg# Global variables.
735475c125cSmrg# $mode is unset
7364642e01fSmrgnonopt=
737475c125cSmrgexecute_dlfiles=
7384642e01fSmrgpreserve_args=
7394642e01fSmrglo2o="s/\\.lo\$/.${objext}/"
7404642e01fSmrgo2lo="s/\\.${objext}\$/.lo/"
7414642e01fSmrgextracted_archives=
7424642e01fSmrgextracted_serial=0
74305b261ecSmrg
744475c125cSmrgopt_dry_run=false
745475c125cSmrgopt_duplicate_deps=false
746475c125cSmrgopt_silent=false
747475c125cSmrgopt_debug=:
748475c125cSmrg
7494642e01fSmrg# If this variable is set in any of the actions, the command in it
7504642e01fSmrg# will be execed at the end.  This prevents here-documents from being
7514642e01fSmrg# left over by shells.
7524642e01fSmrgexec_cmd=
7534642e01fSmrg
7544642e01fSmrg# func_fatal_configuration arg...
7554642e01fSmrg# Echo program name prefixed message to standard error, followed by
7564642e01fSmrg# a configuration failure hint, and exit.
7574642e01fSmrgfunc_fatal_configuration ()
7584642e01fSmrg{
7594642e01fSmrg    func_error ${1+"$@"}
7604642e01fSmrg    func_error "See the $PACKAGE documentation for more information."
7614642e01fSmrg    func_fatal_error "Fatal configuration error."
7624642e01fSmrg}
76305b261ecSmrg
76405b261ecSmrg
7654642e01fSmrg# func_config
7664642e01fSmrg# Display the configuration for all the tags in this script.
7674642e01fSmrgfunc_config ()
7684642e01fSmrg{
7694642e01fSmrg    re_begincf='^# ### BEGIN LIBTOOL'
7704642e01fSmrg    re_endcf='^# ### END LIBTOOL'
7714642e01fSmrg
7724642e01fSmrg    # Default configuration.
7734642e01fSmrg    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
77405b261ecSmrg
77505b261ecSmrg    # Now print the configurations for the tags.
77605b261ecSmrg    for tagname in $taglist; do
7774642e01fSmrg      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
77805b261ecSmrg    done
77905b261ecSmrg
7804642e01fSmrg    exit $?
7814642e01fSmrg}
78205b261ecSmrg
7834642e01fSmrg# func_features
7844642e01fSmrg# Display the features supported by this script.
7854642e01fSmrgfunc_features ()
7864642e01fSmrg{
7876747b715Smrg    echo "host: $host"
78805b261ecSmrg    if test "$build_libtool_libs" = yes; then
7896747b715Smrg      echo "enable shared libraries"
79005b261ecSmrg    else
7916747b715Smrg      echo "disable shared libraries"
79205b261ecSmrg    fi
79305b261ecSmrg    if test "$build_old_libs" = yes; then
7946747b715Smrg      echo "enable static libraries"
79505b261ecSmrg    else
7966747b715Smrg      echo "disable static libraries"
79705b261ecSmrg    fi
7984642e01fSmrg
79905b261ecSmrg    exit $?
8004642e01fSmrg}
80105b261ecSmrg
8024642e01fSmrg# func_enable_tag tagname
8034642e01fSmrg# Verify that TAGNAME is valid, and either flag an error and exit, or
8044642e01fSmrg# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
8054642e01fSmrg# variable here.
8064642e01fSmrgfunc_enable_tag ()
8074642e01fSmrg{
8084642e01fSmrg  # Global variable:
8094642e01fSmrg  tagname="$1"
81005b261ecSmrg
8114642e01fSmrg  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
8124642e01fSmrg  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
8134642e01fSmrg  sed_extractcf="/$re_begincf/,/$re_endcf/p"
81405b261ecSmrg
8154642e01fSmrg  # Validate tagname.
8164642e01fSmrg  case $tagname in
8174642e01fSmrg    *[!-_A-Za-z0-9,/]*)
8184642e01fSmrg      func_fatal_error "invalid tag name: $tagname"
8194642e01fSmrg      ;;
8204642e01fSmrg  esac
82105b261ecSmrg
8224642e01fSmrg  # Don't test for the "default" C tag, as we know it's
8234642e01fSmrg  # there but not specially marked.
8244642e01fSmrg  case $tagname in
8254642e01fSmrg    CC) ;;
8264642e01fSmrg    *)
8274642e01fSmrg      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
8284642e01fSmrg	taglist="$taglist $tagname"
8294642e01fSmrg
8304642e01fSmrg	# Evaluate the configuration.  Be careful to quote the path
8314642e01fSmrg	# and the sed script, to avoid splitting on whitespace, but
8324642e01fSmrg	# also don't use non-portable quotes within backquotes within
8334642e01fSmrg	# quotes we have to do it in 2 steps:
8344642e01fSmrg	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
8354642e01fSmrg	eval "$extractedcf"
8364642e01fSmrg      else
8374642e01fSmrg	func_error "ignoring unknown tag $tagname"
8384642e01fSmrg      fi
8394642e01fSmrg      ;;
8404642e01fSmrg  esac
8414642e01fSmrg}
8424642e01fSmrg
843475c125cSmrg# Parse options once, thoroughly.  This comes as soon as possible in
844475c125cSmrg# the script to make things like `libtool --version' happen quickly.
8454642e01fSmrg{
8466747b715Smrg
847475c125cSmrg  # Shorthand for --mode=foo, only valid as the first argument
848475c125cSmrg  case $1 in
849475c125cSmrg  clean|clea|cle|cl)
850475c125cSmrg    shift; set dummy --mode clean ${1+"$@"}; shift
851475c125cSmrg    ;;
852475c125cSmrg  compile|compil|compi|comp|com|co|c)
853475c125cSmrg    shift; set dummy --mode compile ${1+"$@"}; shift
854475c125cSmrg    ;;
855475c125cSmrg  execute|execut|execu|exec|exe|ex|e)
856475c125cSmrg    shift; set dummy --mode execute ${1+"$@"}; shift
857475c125cSmrg    ;;
858475c125cSmrg  finish|finis|fini|fin|fi|f)
859475c125cSmrg    shift; set dummy --mode finish ${1+"$@"}; shift
860475c125cSmrg    ;;
861475c125cSmrg  install|instal|insta|inst|ins|in|i)
862475c125cSmrg    shift; set dummy --mode install ${1+"$@"}; shift
863475c125cSmrg    ;;
864475c125cSmrg  link|lin|li|l)
865475c125cSmrg    shift; set dummy --mode link ${1+"$@"}; shift
866475c125cSmrg    ;;
867475c125cSmrg  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
868475c125cSmrg    shift; set dummy --mode uninstall ${1+"$@"}; shift
869475c125cSmrg    ;;
870475c125cSmrg  esac
8716747b715Smrg
872475c125cSmrg  # Parse non-mode specific arguments:
873475c125cSmrg  while test "$#" -gt 0; do
8744642e01fSmrg    opt="$1"
8754642e01fSmrg    shift
876475c125cSmrg
8774642e01fSmrg    case $opt in
878475c125cSmrg      --config)		func_config					;;
879475c125cSmrg
880475c125cSmrg      --debug)		preserve_args="$preserve_args $opt"
8814642e01fSmrg			func_echo "enabling shell trace mode"
882475c125cSmrg			opt_debug='set -x'
8834642e01fSmrg			$opt_debug
8844642e01fSmrg			;;
885475c125cSmrg
886475c125cSmrg      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
887475c125cSmrg			execute_dlfiles="$execute_dlfiles $1"
888475c125cSmrg			shift
8896747b715Smrg			;;
890475c125cSmrg
891475c125cSmrg      --dry-run | -n)	opt_dry_run=:					;;
892475c125cSmrg      --features)       func_features					;;
893475c125cSmrg      --finish)		mode="finish"					;;
894475c125cSmrg
895475c125cSmrg      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
896475c125cSmrg			case $1 in
897475c125cSmrg			  # Valid mode arguments:
898475c125cSmrg			  clean)	;;
899475c125cSmrg			  compile)	;;
900475c125cSmrg			  execute)	;;
901475c125cSmrg			  finish)	;;
902475c125cSmrg			  install)	;;
903475c125cSmrg			  link)		;;
904475c125cSmrg			  relink)	;;
905475c125cSmrg			  uninstall)	;;
906475c125cSmrg
907475c125cSmrg			  # Catch anything else as an error
908475c125cSmrg			  *) func_error "invalid argument for $opt"
909475c125cSmrg			     exit_cmd=exit
910475c125cSmrg			     break
911475c125cSmrg			     ;;
912475c125cSmrg		        esac
913475c125cSmrg
914475c125cSmrg			mode="$1"
9154642e01fSmrg			shift
9164642e01fSmrg			;;
917475c125cSmrg
9184642e01fSmrg      --preserve-dup-deps)
919475c125cSmrg			opt_duplicate_deps=:				;;
920475c125cSmrg
921475c125cSmrg      --quiet|--silent)	preserve_args="$preserve_args $opt"
922475c125cSmrg			opt_silent=:
923475c125cSmrg			opt_verbose=false
9246747b715Smrg			;;
925475c125cSmrg
926475c125cSmrg      --no-quiet|--no-silent)
927475c125cSmrg			preserve_args="$preserve_args $opt"
928475c125cSmrg			opt_silent=false
9296747b715Smrg			;;
930475c125cSmrg
931475c125cSmrg      --verbose| -v)	preserve_args="$preserve_args $opt"
9324642e01fSmrg			opt_silent=false
933475c125cSmrg			opt_verbose=:
9344642e01fSmrg			;;
935475c125cSmrg
936475c125cSmrg      --no-verbose)	preserve_args="$preserve_args $opt"
9376747b715Smrg			opt_verbose=false
9386747b715Smrg			;;
939475c125cSmrg
940475c125cSmrg      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
941475c125cSmrg			preserve_args="$preserve_args $opt $1"
942475c125cSmrg			func_enable_tag "$1"	# tagname is set here
9434642e01fSmrg			shift
9444642e01fSmrg			;;
9454642e01fSmrg
9464642e01fSmrg      # Separate optargs to long options:
947475c125cSmrg      -dlopen=*|--mode=*|--tag=*)
948475c125cSmrg			func_opt_split "$opt"
949475c125cSmrg			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
9504642e01fSmrg			shift
9514642e01fSmrg			;;
9524642e01fSmrg
953475c125cSmrg      -\?|-h)		func_usage					;;
954475c125cSmrg      --help)		opt_help=:					;;
955475c125cSmrg      --help-all)	opt_help=': help-all'				;;
956475c125cSmrg      --version)	func_version					;;
957475c125cSmrg
958475c125cSmrg      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
9596747b715Smrg
960475c125cSmrg      *)		nonopt="$opt"
961475c125cSmrg			break
962475c125cSmrg			;;
9634642e01fSmrg    esac
9644642e01fSmrg  done
9654642e01fSmrg
9664642e01fSmrg
9674642e01fSmrg  case $host in
9684642e01fSmrg    *cygwin* | *mingw* | *pw32* | *cegcc*)
9694642e01fSmrg      # don't eliminate duplications in $postdeps and $predeps
9704642e01fSmrg      opt_duplicate_compiler_generated_deps=:
97105b261ecSmrg      ;;
97205b261ecSmrg    *)
973475c125cSmrg      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
9744642e01fSmrg      ;;
9754642e01fSmrg  esac
97605b261ecSmrg
977475c125cSmrg  # Having warned about all mis-specified options, bail out if
978475c125cSmrg  # anything was wrong.
979475c125cSmrg  $exit_cmd $EXIT_FAILURE
980475c125cSmrg}
9814642e01fSmrg
982475c125cSmrg# func_check_version_match
983475c125cSmrg# Ensure that we are using m4 macros, and libtool script from the same
984475c125cSmrg# release of libtool.
985475c125cSmrgfunc_check_version_match ()
986475c125cSmrg{
987475c125cSmrg  if test "$package_revision" != "$macro_revision"; then
988475c125cSmrg    if test "$VERSION" != "$macro_version"; then
989475c125cSmrg      if test -z "$macro_version"; then
990475c125cSmrg        cat >&2 <<_LT_EOF
991475c125cSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
992475c125cSmrg$progname: definition of this LT_INIT comes from an older release.
993475c125cSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
994475c125cSmrg$progname: and run autoconf again.
995475c125cSmrg_LT_EOF
996475c125cSmrg      else
997475c125cSmrg        cat >&2 <<_LT_EOF
998475c125cSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
999475c125cSmrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
1000475c125cSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
1001475c125cSmrg$progname: and run autoconf again.
1002475c125cSmrg_LT_EOF
1003475c125cSmrg      fi
1004475c125cSmrg    else
1005475c125cSmrg      cat >&2 <<_LT_EOF
1006475c125cSmrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
1007475c125cSmrg$progname: but the definition of this LT_INIT comes from revision $macro_revision.
1008475c125cSmrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision
1009475c125cSmrg$progname: of $PACKAGE $VERSION and run autoconf again.
1010475c125cSmrg_LT_EOF
10114642e01fSmrg    fi
10124642e01fSmrg
1013475c125cSmrg    exit $EXIT_MISMATCH
1014475c125cSmrg  fi
1015475c125cSmrg}
10164642e01fSmrg
101705b261ecSmrg
1018475c125cSmrg## ----------- ##
1019475c125cSmrg##    Main.    ##
1020475c125cSmrg## ----------- ##
10214642e01fSmrg
1022475c125cSmrg$opt_help || {
1023475c125cSmrg  # Sanity checks first:
1024475c125cSmrg  func_check_version_match
10254642e01fSmrg
1026475c125cSmrg  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
1027475c125cSmrg    func_fatal_configuration "not configured to build any kind of library"
1028475c125cSmrg  fi
10294642e01fSmrg
1030475c125cSmrg  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
10314642e01fSmrg
103205b261ecSmrg
1033475c125cSmrg  # Darwin sucks
1034475c125cSmrg  eval std_shrext=\"$shrext_cmds\"
1035475c125cSmrg
1036475c125cSmrg
1037475c125cSmrg  # Only execute mode is allowed to have -dlopen flags.
1038475c125cSmrg  if test -n "$execute_dlfiles" && test "$mode" != execute; then
1039475c125cSmrg    func_error "unrecognized option \`-dlopen'"
1040475c125cSmrg    $ECHO "$help" 1>&2
1041475c125cSmrg    exit $EXIT_FAILURE
1042475c125cSmrg  fi
1043475c125cSmrg
1044475c125cSmrg  # Change the help message to a mode-specific one.
1045475c125cSmrg  generic_help="$help"
1046475c125cSmrg  help="Try \`$progname --help --mode=$mode' for more information."
1047475c125cSmrg}
104805b261ecSmrg
104905b261ecSmrg
10504642e01fSmrg# func_lalib_p file
10514642e01fSmrg# True iff FILE is a libtool `.la' library or `.lo' object file.
10524642e01fSmrg# This function is only a basic sanity check; it will hardly flush out
10534642e01fSmrg# determined imposters.
10544642e01fSmrgfunc_lalib_p ()
10554642e01fSmrg{
10564642e01fSmrg    test -f "$1" &&
10574642e01fSmrg      $SED -e 4q "$1" 2>/dev/null \
10584642e01fSmrg        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
10594642e01fSmrg}
106005b261ecSmrg
10614642e01fSmrg# func_lalib_unsafe_p file
10624642e01fSmrg# True iff FILE is a libtool `.la' library or `.lo' object file.
10634642e01fSmrg# This function implements the same check as func_lalib_p without
10644642e01fSmrg# resorting to external programs.  To this end, it redirects stdin and
10654642e01fSmrg# closes it afterwards, without saving the original file descriptor.
10664642e01fSmrg# As a safety measure, use it only where a negative result would be
10674642e01fSmrg# fatal anyway.  Works if `file' does not exist.
10684642e01fSmrgfunc_lalib_unsafe_p ()
10694642e01fSmrg{
10704642e01fSmrg    lalib_p=no
10714642e01fSmrg    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
10724642e01fSmrg	for lalib_p_l in 1 2 3 4
10734642e01fSmrg	do
10744642e01fSmrg	    read lalib_p_line
10754642e01fSmrg	    case "$lalib_p_line" in
10764642e01fSmrg		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
10774642e01fSmrg	    esac
10784642e01fSmrg	done
10794642e01fSmrg	exec 0<&5 5<&-
10804642e01fSmrg    fi
10814642e01fSmrg    test "$lalib_p" = yes
10824642e01fSmrg}
108305b261ecSmrg
10844642e01fSmrg# func_ltwrapper_script_p file
10854642e01fSmrg# True iff FILE is a libtool wrapper script
10864642e01fSmrg# This function is only a basic sanity check; it will hardly flush out
10874642e01fSmrg# determined imposters.
10884642e01fSmrgfunc_ltwrapper_script_p ()
10894642e01fSmrg{
10904642e01fSmrg    func_lalib_p "$1"
10914642e01fSmrg}
109205b261ecSmrg
10934642e01fSmrg# func_ltwrapper_executable_p file
10944642e01fSmrg# True iff FILE is a libtool wrapper executable
10954642e01fSmrg# This function is only a basic sanity check; it will hardly flush out
10964642e01fSmrg# determined imposters.
10974642e01fSmrgfunc_ltwrapper_executable_p ()
10984642e01fSmrg{
10994642e01fSmrg    func_ltwrapper_exec_suffix=
11004642e01fSmrg    case $1 in
11014642e01fSmrg    *.exe) ;;
11024642e01fSmrg    *) func_ltwrapper_exec_suffix=.exe ;;
11034642e01fSmrg    esac
11044642e01fSmrg    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
11054642e01fSmrg}
110605b261ecSmrg
11074642e01fSmrg# func_ltwrapper_scriptname file
11084642e01fSmrg# Assumes file is an ltwrapper_executable
11094642e01fSmrg# uses $file to determine the appropriate filename for a
11104642e01fSmrg# temporary ltwrapper_script.
11114642e01fSmrgfunc_ltwrapper_scriptname ()
11124642e01fSmrg{
1113475c125cSmrg    func_ltwrapper_scriptname_result=""
1114475c125cSmrg    if func_ltwrapper_executable_p "$1"; then
1115475c125cSmrg	func_dirname_and_basename "$1" "" "."
1116475c125cSmrg	func_stripname '' '.exe' "$func_basename_result"
1117475c125cSmrg	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
1118475c125cSmrg    fi
11194642e01fSmrg}
11204642e01fSmrg
11214642e01fSmrg# func_ltwrapper_p file
11224642e01fSmrg# True iff FILE is a libtool wrapper script or wrapper executable
11234642e01fSmrg# This function is only a basic sanity check; it will hardly flush out
11244642e01fSmrg# determined imposters.
11254642e01fSmrgfunc_ltwrapper_p ()
11264642e01fSmrg{
11274642e01fSmrg    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
11284642e01fSmrg}
11294642e01fSmrg
11304642e01fSmrg
11314642e01fSmrg# func_execute_cmds commands fail_cmd
11324642e01fSmrg# Execute tilde-delimited COMMANDS.
11334642e01fSmrg# If FAIL_CMD is given, eval that upon failure.
11344642e01fSmrg# FAIL_CMD may read-access the current command in variable CMD!
11354642e01fSmrgfunc_execute_cmds ()
11364642e01fSmrg{
11374642e01fSmrg    $opt_debug
11384642e01fSmrg    save_ifs=$IFS; IFS='~'
11394642e01fSmrg    for cmd in $1; do
11404642e01fSmrg      IFS=$save_ifs
11414642e01fSmrg      eval cmd=\"$cmd\"
11424642e01fSmrg      func_show_eval "$cmd" "${2-:}"
11434642e01fSmrg    done
11444642e01fSmrg    IFS=$save_ifs
11454642e01fSmrg}
11464642e01fSmrg
11474642e01fSmrg
11484642e01fSmrg# func_source file
11494642e01fSmrg# Source FILE, adding directory component if necessary.
11504642e01fSmrg# Note that it is not necessary on cygwin/mingw to append a dot to
11514642e01fSmrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
11524642e01fSmrg# behavior happens only for exec(3), not for open(2)!  Also, sourcing
11534642e01fSmrg# `FILE.' does not work on cygwin managed mounts.
11544642e01fSmrgfunc_source ()
11554642e01fSmrg{
11564642e01fSmrg    $opt_debug
11574642e01fSmrg    case $1 in
11584642e01fSmrg    */* | *\\*)	. "$1" ;;
11594642e01fSmrg    *)		. "./$1" ;;
11604642e01fSmrg    esac
11614642e01fSmrg}
11624642e01fSmrg
11634642e01fSmrg
11644642e01fSmrg# func_infer_tag arg
11654642e01fSmrg# Infer tagged configuration to use if any are available and
11664642e01fSmrg# if one wasn't chosen via the "--tag" command line option.
11674642e01fSmrg# Only attempt this if the compiler in the base compile
11684642e01fSmrg# command doesn't match the default compiler.
11694642e01fSmrg# arg is usually of the form 'gcc ...'
11704642e01fSmrgfunc_infer_tag ()
11714642e01fSmrg{
11724642e01fSmrg    $opt_debug
11734642e01fSmrg    if test -n "$available_tags" && test -z "$tagname"; then
11744642e01fSmrg      CC_quoted=
11754642e01fSmrg      for arg in $CC; do
1176475c125cSmrg        func_quote_for_eval "$arg"
1177475c125cSmrg	CC_quoted="$CC_quoted $func_quote_for_eval_result"
11784642e01fSmrg      done
11796747b715Smrg      CC_expanded=`func_echo_all $CC`
11806747b715Smrg      CC_quoted_expanded=`func_echo_all $CC_quoted`
11814642e01fSmrg      case $@ in
11824642e01fSmrg      # Blanks in the command may have been stripped by the calling shell,
11834642e01fSmrg      # but not from the CC environment variable when configure was run.
11846747b715Smrg      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
11856747b715Smrg      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
11864642e01fSmrg      # Blanks at the start of $base_compile will cause this to fail
11874642e01fSmrg      # if we don't check for them as well.
11884642e01fSmrg      *)
11894642e01fSmrg	for z in $available_tags; do
11904642e01fSmrg	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
11914642e01fSmrg	    # Evaluate the configuration.
11924642e01fSmrg	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
11934642e01fSmrg	    CC_quoted=
11944642e01fSmrg	    for arg in $CC; do
11954642e01fSmrg	      # Double-quote args containing other shell metacharacters.
1196475c125cSmrg	      func_quote_for_eval "$arg"
1197475c125cSmrg	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
11984642e01fSmrg	    done
11996747b715Smrg	    CC_expanded=`func_echo_all $CC`
12006747b715Smrg	    CC_quoted_expanded=`func_echo_all $CC_quoted`
12014642e01fSmrg	    case "$@ " in
12026747b715Smrg	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
12036747b715Smrg	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
12044642e01fSmrg	      # The compiler in the base compile command matches
12054642e01fSmrg	      # the one in the tagged configuration.
12064642e01fSmrg	      # Assume this is the tagged configuration we want.
12074642e01fSmrg	      tagname=$z
12084642e01fSmrg	      break
12094642e01fSmrg	      ;;
12104642e01fSmrg	    esac
12114642e01fSmrg	  fi
12124642e01fSmrg	done
12134642e01fSmrg	# If $tagname still isn't set, then no tagged configuration
12144642e01fSmrg	# was found and let the user know that the "--tag" command
12154642e01fSmrg	# line option must be used.
1216475c125cSmrg	if test -z "$tagname"; then
1217475c125cSmrg	  func_echo "unable to infer tagged configuration"
1218475c125cSmrg	  func_fatal_error "specify a tag with \`--tag'"
1219475c125cSmrg#	else
1220475c125cSmrg#	  func_verbose "using $tagname tagged configuration"
1221475c125cSmrg	fi
1222475c125cSmrg	;;
1223475c125cSmrg      esac
1224475c125cSmrg    fi
12256747b715Smrg}
12266747b715Smrg
12276747b715Smrg
12286747b715Smrg
1229475c125cSmrg# func_write_libtool_object output_name pic_name nonpic_name
1230475c125cSmrg# Create a libtool object file (analogous to a ".la" file),
1231475c125cSmrg# but don't create it if we're doing a dry run.
1232475c125cSmrgfunc_write_libtool_object ()
12336747b715Smrg{
1234475c125cSmrg    write_libobj=${1}
1235475c125cSmrg    if test "$build_libtool_libs" = yes; then
1236475c125cSmrg      write_lobj=\'${2}\'
1237475c125cSmrg    else
1238475c125cSmrg      write_lobj=none
1239475c125cSmrg    fi
12406747b715Smrg
1241475c125cSmrg    if test "$build_old_libs" = yes; then
1242475c125cSmrg      write_oldobj=\'${3}\'
1243475c125cSmrg    else
1244475c125cSmrg      write_oldobj=none
1245475c125cSmrg    fi
12466747b715Smrg
1247475c125cSmrg    $opt_dry_run || {
1248475c125cSmrg      cat >${write_libobj}T <<EOF
1249475c125cSmrg# $write_libobj - a libtool object file
1250475c125cSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1251475c125cSmrg#
1252475c125cSmrg# Please DO NOT delete this file!
1253475c125cSmrg# It is necessary for linking the library.
12546747b715Smrg
1255475c125cSmrg# Name of the PIC object.
1256475c125cSmrgpic_object=$write_lobj
12576747b715Smrg
1258475c125cSmrg# Name of the non-PIC object
1259475c125cSmrgnon_pic_object=$write_oldobj
12606747b715Smrg
1261475c125cSmrgEOF
1262475c125cSmrg      $MV "${write_libobj}T" "${write_libobj}"
1263475c125cSmrg    }
12646747b715Smrg}
12656747b715Smrg
12664642e01fSmrg# func_mode_compile arg...
12674642e01fSmrgfunc_mode_compile ()
12684642e01fSmrg{
12694642e01fSmrg    $opt_debug
12704642e01fSmrg    # Get the compilation command and the source file.
12714642e01fSmrg    base_compile=
12724642e01fSmrg    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
12734642e01fSmrg    suppress_opt=yes
12744642e01fSmrg    suppress_output=
12754642e01fSmrg    arg_mode=normal
12764642e01fSmrg    libobj=
12774642e01fSmrg    later=
12784642e01fSmrg    pie_flag=
12794642e01fSmrg
12804642e01fSmrg    for arg
12814642e01fSmrg    do
12824642e01fSmrg      case $arg_mode in
12834642e01fSmrg      arg  )
12844642e01fSmrg	# do not "continue".  Instead, add this to base_compile
12854642e01fSmrg	lastarg="$arg"
12864642e01fSmrg	arg_mode=normal
12874642e01fSmrg	;;
12884642e01fSmrg
12894642e01fSmrg      target )
12904642e01fSmrg	libobj="$arg"
12914642e01fSmrg	arg_mode=normal
12924642e01fSmrg	continue
12934642e01fSmrg	;;
12944642e01fSmrg
12954642e01fSmrg      normal )
12964642e01fSmrg	# Accept any command-line options.
12974642e01fSmrg	case $arg in
12984642e01fSmrg	-o)
12994642e01fSmrg	  test -n "$libobj" && \
13004642e01fSmrg	    func_fatal_error "you cannot specify \`-o' more than once"
13014642e01fSmrg	  arg_mode=target
13024642e01fSmrg	  continue
13034642e01fSmrg	  ;;
13044642e01fSmrg
13054642e01fSmrg	-pie | -fpie | -fPIE)
1306475c125cSmrg          pie_flag="$pie_flag $arg"
13074642e01fSmrg	  continue
13084642e01fSmrg	  ;;
13094642e01fSmrg
13104642e01fSmrg	-shared | -static | -prefer-pic | -prefer-non-pic)
1311475c125cSmrg	  later="$later $arg"
13124642e01fSmrg	  continue
13134642e01fSmrg	  ;;
13144642e01fSmrg
13154642e01fSmrg	-no-suppress)
131605b261ecSmrg	  suppress_opt=no
131705b261ecSmrg	  continue
131805b261ecSmrg	  ;;
131905b261ecSmrg
132005b261ecSmrg	-Xcompiler)
132105b261ecSmrg	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
132205b261ecSmrg	  continue      #  The current "srcfile" will either be retained or
132305b261ecSmrg	  ;;            #  replaced later.  I would guess that would be a bug.
132405b261ecSmrg
132505b261ecSmrg	-Wc,*)
13264642e01fSmrg	  func_stripname '-Wc,' '' "$arg"
13274642e01fSmrg	  args=$func_stripname_result
132805b261ecSmrg	  lastarg=
132905b261ecSmrg	  save_ifs="$IFS"; IFS=','
13304642e01fSmrg	  for arg in $args; do
133105b261ecSmrg	    IFS="$save_ifs"
1332475c125cSmrg	    func_quote_for_eval "$arg"
1333475c125cSmrg	    lastarg="$lastarg $func_quote_for_eval_result"
133405b261ecSmrg	  done
133505b261ecSmrg	  IFS="$save_ifs"
13364642e01fSmrg	  func_stripname ' ' '' "$lastarg"
13374642e01fSmrg	  lastarg=$func_stripname_result
133805b261ecSmrg
133905b261ecSmrg	  # Add the arguments to base_compile.
1340475c125cSmrg	  base_compile="$base_compile $lastarg"
134105b261ecSmrg	  continue
134205b261ecSmrg	  ;;
134305b261ecSmrg
13444642e01fSmrg	*)
134505b261ecSmrg	  # Accept the current argument as the source file.
134605b261ecSmrg	  # The previous "srcfile" becomes the current argument.
134705b261ecSmrg	  #
134805b261ecSmrg	  lastarg="$srcfile"
134905b261ecSmrg	  srcfile="$arg"
135005b261ecSmrg	  ;;
135105b261ecSmrg	esac  #  case $arg
135205b261ecSmrg	;;
135305b261ecSmrg      esac    #  case $arg_mode
135405b261ecSmrg
135505b261ecSmrg      # Aesthetically quote the previous argument.
1356475c125cSmrg      func_quote_for_eval "$lastarg"
1357475c125cSmrg      base_compile="$base_compile $func_quote_for_eval_result"
135805b261ecSmrg    done # for arg
135905b261ecSmrg
136005b261ecSmrg    case $arg_mode in
136105b261ecSmrg    arg)
13624642e01fSmrg      func_fatal_error "you must specify an argument for -Xcompile"
136305b261ecSmrg      ;;
136405b261ecSmrg    target)
13654642e01fSmrg      func_fatal_error "you must specify a target with \`-o'"
136605b261ecSmrg      ;;
136705b261ecSmrg    *)
136805b261ecSmrg      # Get the name of the library object.
13694642e01fSmrg      test -z "$libobj" && {
13704642e01fSmrg	func_basename "$srcfile"
13714642e01fSmrg	libobj="$func_basename_result"
13724642e01fSmrg      }
137305b261ecSmrg      ;;
137405b261ecSmrg    esac
137505b261ecSmrg
137605b261ecSmrg    # Recognize several different file suffixes.
137705b261ecSmrg    # If the user specifies -o file.o, it is replaced with file.lo
137805b261ecSmrg    case $libobj in
13794642e01fSmrg    *.[cCFSifmso] | \
13804642e01fSmrg    *.ada | *.adb | *.ads | *.asm | \
13814642e01fSmrg    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
13826747b715Smrg    *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
13834642e01fSmrg      func_xform "$libobj"
13844642e01fSmrg      libobj=$func_xform_result
13854642e01fSmrg      ;;
138605b261ecSmrg    esac
138705b261ecSmrg
138805b261ecSmrg    case $libobj in
13894642e01fSmrg    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
139005b261ecSmrg    *)
13914642e01fSmrg      func_fatal_error "cannot determine name of library object from \`$libobj'"
139205b261ecSmrg      ;;
139305b261ecSmrg    esac
139405b261ecSmrg
139505b261ecSmrg    func_infer_tag $base_compile
139605b261ecSmrg
139705b261ecSmrg    for arg in $later; do
139805b261ecSmrg      case $arg in
13994642e01fSmrg      -shared)
14004642e01fSmrg	test "$build_libtool_libs" != yes && \
14014642e01fSmrg	  func_fatal_configuration "can not build a shared library"
14024642e01fSmrg	build_old_libs=no
14034642e01fSmrg	continue
14044642e01fSmrg	;;
14054642e01fSmrg
140605b261ecSmrg      -static)
14074642e01fSmrg	build_libtool_libs=no
140805b261ecSmrg	build_old_libs=yes
140905b261ecSmrg	continue
141005b261ecSmrg	;;
141105b261ecSmrg
141205b261ecSmrg      -prefer-pic)
141305b261ecSmrg	pic_mode=yes
141405b261ecSmrg	continue
141505b261ecSmrg	;;
141605b261ecSmrg
141705b261ecSmrg      -prefer-non-pic)
141805b261ecSmrg	pic_mode=no
141905b261ecSmrg	continue
142005b261ecSmrg	;;
142105b261ecSmrg      esac
142205b261ecSmrg    done
142305b261ecSmrg
14244642e01fSmrg    func_quote_for_eval "$libobj"
14254642e01fSmrg    test "X$libobj" != "X$func_quote_for_eval_result" \
14264642e01fSmrg      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
14274642e01fSmrg      && func_warning "libobj name \`$libobj' may not contain shell special characters."
14284642e01fSmrg    func_dirname_and_basename "$obj" "/" ""
14294642e01fSmrg    objname="$func_basename_result"
14304642e01fSmrg    xdir="$func_dirname_result"
143105b261ecSmrg    lobj=${xdir}$objdir/$objname
143205b261ecSmrg
14334642e01fSmrg    test -z "$base_compile" && \
14344642e01fSmrg      func_fatal_help "you must specify a compilation command"
143505b261ecSmrg
143605b261ecSmrg    # Delete any leftover library objects.
143705b261ecSmrg    if test "$build_old_libs" = yes; then
143805b261ecSmrg      removelist="$obj $lobj $libobj ${libobj}T"
143905b261ecSmrg    else
144005b261ecSmrg      removelist="$lobj $libobj ${libobj}T"
144105b261ecSmrg    fi
144205b261ecSmrg
144305b261ecSmrg    # On Cygwin there's no "real" PIC flag so we must build both object types
144405b261ecSmrg    case $host_os in
14454642e01fSmrg    cygwin* | mingw* | pw32* | os2* | cegcc*)
144605b261ecSmrg      pic_mode=default
144705b261ecSmrg      ;;
144805b261ecSmrg    esac
144905b261ecSmrg    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
145005b261ecSmrg      # non-PIC code in shared libraries is not supported
145105b261ecSmrg      pic_mode=default
145205b261ecSmrg    fi
145305b261ecSmrg
145405b261ecSmrg    # Calculate the filename of the output object if compiler does
145505b261ecSmrg    # not support -o with -c
145605b261ecSmrg    if test "$compiler_c_o" = no; then
14576747b715Smrg      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
145805b261ecSmrg      lockfile="$output_obj.lock"
145905b261ecSmrg    else
146005b261ecSmrg      output_obj=
146105b261ecSmrg      need_locks=no
146205b261ecSmrg      lockfile=
146305b261ecSmrg    fi
146405b261ecSmrg
146505b261ecSmrg    # Lock this critical section if it is needed
146605b261ecSmrg    # We use this script file to make the link, it avoids creating a new file
146705b261ecSmrg    if test "$need_locks" = yes; then
14684642e01fSmrg      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
14694642e01fSmrg	func_echo "Waiting for $lockfile to be removed"
147005b261ecSmrg	sleep 2
147105b261ecSmrg      done
147205b261ecSmrg    elif test "$need_locks" = warn; then
147305b261ecSmrg      if test -f "$lockfile"; then
14744642e01fSmrg	$ECHO "\
147505b261ecSmrg*** ERROR, $lockfile exists and contains:
147605b261ecSmrg`cat $lockfile 2>/dev/null`
147705b261ecSmrg
147805b261ecSmrgThis indicates that another process is trying to use the same
147905b261ecSmrgtemporary object file, and libtool could not work around it because
148005b261ecSmrgyour compiler does not support \`-c' and \`-o' together.  If you
148105b261ecSmrgrepeat this compilation, it may succeed, by chance, but you had better
148205b261ecSmrgavoid parallel builds (make -j) in this platform, or get a better
148305b261ecSmrgcompiler."
148405b261ecSmrg
14854642e01fSmrg	$opt_dry_run || $RM $removelist
148605b261ecSmrg	exit $EXIT_FAILURE
148705b261ecSmrg      fi
1488475c125cSmrg      removelist="$removelist $output_obj"
14894642e01fSmrg      $ECHO "$srcfile" > "$lockfile"
149005b261ecSmrg    fi
149105b261ecSmrg
14924642e01fSmrg    $opt_dry_run || $RM $removelist
1493475c125cSmrg    removelist="$removelist $lockfile"
14944642e01fSmrg    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
14954642e01fSmrg
1496475c125cSmrg    if test -n "$fix_srcfile_path"; then
1497475c125cSmrg      eval srcfile=\"$fix_srcfile_path\"
1498475c125cSmrg    fi
14994642e01fSmrg    func_quote_for_eval "$srcfile"
15004642e01fSmrg    qsrcfile=$func_quote_for_eval_result
150105b261ecSmrg
150205b261ecSmrg    # Only build a PIC object if we are building libtool libraries.
150305b261ecSmrg    if test "$build_libtool_libs" = yes; then
150405b261ecSmrg      # Without this assignment, base_compile gets emptied.
150505b261ecSmrg      fbsd_hideous_sh_bug=$base_compile
150605b261ecSmrg
150705b261ecSmrg      if test "$pic_mode" != no; then
150805b261ecSmrg	command="$base_compile $qsrcfile $pic_flag"
150905b261ecSmrg      else
151005b261ecSmrg	# Don't build PIC code
151105b261ecSmrg	command="$base_compile $qsrcfile"
151205b261ecSmrg      fi
151305b261ecSmrg
15144642e01fSmrg      func_mkdir_p "$xdir$objdir"
151505b261ecSmrg
151605b261ecSmrg      if test -z "$output_obj"; then
151705b261ecSmrg	# Place PIC objects in $objdir
1518475c125cSmrg	command="$command -o $lobj"
151905b261ecSmrg      fi
152005b261ecSmrg
15214642e01fSmrg      func_show_eval_locale "$command"	\
15224642e01fSmrg          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
152305b261ecSmrg
152405b261ecSmrg      if test "$need_locks" = warn &&
152505b261ecSmrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
15264642e01fSmrg	$ECHO "\
152705b261ecSmrg*** ERROR, $lockfile contains:
152805b261ecSmrg`cat $lockfile 2>/dev/null`
152905b261ecSmrg
153005b261ecSmrgbut it should contain:
153105b261ecSmrg$srcfile
153205b261ecSmrg
153305b261ecSmrgThis indicates that another process is trying to use the same
153405b261ecSmrgtemporary object file, and libtool could not work around it because
153505b261ecSmrgyour compiler does not support \`-c' and \`-o' together.  If you
153605b261ecSmrgrepeat this compilation, it may succeed, by chance, but you had better
153705b261ecSmrgavoid parallel builds (make -j) in this platform, or get a better
153805b261ecSmrgcompiler."
153905b261ecSmrg
15404642e01fSmrg	$opt_dry_run || $RM $removelist
154105b261ecSmrg	exit $EXIT_FAILURE
154205b261ecSmrg      fi
154305b261ecSmrg
154405b261ecSmrg      # Just move the object if needed, then go on to compile the next one
154505b261ecSmrg      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
15464642e01fSmrg	func_show_eval '$MV "$output_obj" "$lobj"' \
15474642e01fSmrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
154805b261ecSmrg      fi
154905b261ecSmrg
155005b261ecSmrg      # Allow error messages only from the first compilation.
155105b261ecSmrg      if test "$suppress_opt" = yes; then
15524642e01fSmrg	suppress_output=' >/dev/null 2>&1'
155305b261ecSmrg      fi
155405b261ecSmrg    fi
155505b261ecSmrg
155605b261ecSmrg    # Only build a position-dependent object if we build old libraries.
155705b261ecSmrg    if test "$build_old_libs" = yes; then
155805b261ecSmrg      if test "$pic_mode" != yes; then
155905b261ecSmrg	# Don't build PIC code
15604642e01fSmrg	command="$base_compile $qsrcfile$pie_flag"
156105b261ecSmrg      else
156205b261ecSmrg	command="$base_compile $qsrcfile $pic_flag"
156305b261ecSmrg      fi
156405b261ecSmrg      if test "$compiler_c_o" = yes; then
1565475c125cSmrg	command="$command -o $obj"
156605b261ecSmrg      fi
156705b261ecSmrg
156805b261ecSmrg      # Suppress compiler output if we already did a PIC compilation.
1569475c125cSmrg      command="$command$suppress_output"
15704642e01fSmrg      func_show_eval_locale "$command" \
15714642e01fSmrg        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
157205b261ecSmrg
157305b261ecSmrg      if test "$need_locks" = warn &&
157405b261ecSmrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
15754642e01fSmrg	$ECHO "\
157605b261ecSmrg*** ERROR, $lockfile contains:
157705b261ecSmrg`cat $lockfile 2>/dev/null`
157805b261ecSmrg
157905b261ecSmrgbut it should contain:
158005b261ecSmrg$srcfile
158105b261ecSmrg
158205b261ecSmrgThis indicates that another process is trying to use the same
158305b261ecSmrgtemporary object file, and libtool could not work around it because
158405b261ecSmrgyour compiler does not support \`-c' and \`-o' together.  If you
158505b261ecSmrgrepeat this compilation, it may succeed, by chance, but you had better
158605b261ecSmrgavoid parallel builds (make -j) in this platform, or get a better
158705b261ecSmrgcompiler."
158805b261ecSmrg
15894642e01fSmrg	$opt_dry_run || $RM $removelist
159005b261ecSmrg	exit $EXIT_FAILURE
159105b261ecSmrg      fi
159205b261ecSmrg
159305b261ecSmrg      # Just move the object if needed
159405b261ecSmrg      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
15954642e01fSmrg	func_show_eval '$MV "$output_obj" "$obj"' \
15964642e01fSmrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
159705b261ecSmrg      fi
159805b261ecSmrg    fi
159905b261ecSmrg
16004642e01fSmrg    $opt_dry_run || {
16014642e01fSmrg      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
160205b261ecSmrg
16034642e01fSmrg      # Unlock the critical section if it was locked
16044642e01fSmrg      if test "$need_locks" != no; then
16054642e01fSmrg	removelist=$lockfile
16064642e01fSmrg        $RM "$lockfile"
16074642e01fSmrg      fi
16084642e01fSmrg    }
160905b261ecSmrg
161005b261ecSmrg    exit $EXIT_SUCCESS
16114642e01fSmrg}
161205b261ecSmrg
16134642e01fSmrg$opt_help || {
1614475c125cSmrg  test "$mode" = compile && func_mode_compile ${1+"$@"}
16154642e01fSmrg}
161605b261ecSmrg
16174642e01fSmrgfunc_mode_help ()
16184642e01fSmrg{
16194642e01fSmrg    # We need to display help for each of the modes.
1620475c125cSmrg    case $mode in
16214642e01fSmrg      "")
16224642e01fSmrg        # Generic help is extracted from the usage comments
16234642e01fSmrg        # at the start of this file.
16244642e01fSmrg        func_help
16254642e01fSmrg        ;;
162605b261ecSmrg
16274642e01fSmrg      clean)
16284642e01fSmrg        $ECHO \
16294642e01fSmrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
163005b261ecSmrg
16314642e01fSmrgRemove files from the build directory.
163205b261ecSmrg
16334642e01fSmrgRM is the name of the program to use to delete files associated with each FILE
16344642e01fSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
16354642e01fSmrgto RM.
163605b261ecSmrg
16374642e01fSmrgIf FILE is a libtool library, object or program, all the files associated
16384642e01fSmrgwith it are deleted. Otherwise, only FILE itself is deleted using RM."
16394642e01fSmrg        ;;
164005b261ecSmrg
16414642e01fSmrg      compile)
16424642e01fSmrg      $ECHO \
16434642e01fSmrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
164405b261ecSmrg
16454642e01fSmrgCompile a source file into a libtool library object.
164605b261ecSmrg
16474642e01fSmrgThis mode accepts the following additional options:
164805b261ecSmrg
16494642e01fSmrg  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
16504642e01fSmrg  -no-suppress      do not suppress compiler output for multiple passes
16516747b715Smrg  -prefer-pic       try to build PIC objects only
16526747b715Smrg  -prefer-non-pic   try to build non-PIC objects only
16534642e01fSmrg  -shared           do not build a \`.o' file suitable for static linking
16544642e01fSmrg  -static           only build a \`.o' file suitable for static linking
16556747b715Smrg  -Wc,FLAG          pass FLAG directly to the compiler
165605b261ecSmrg
16574642e01fSmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
16584642e01fSmrgfrom the given SOURCEFILE.
165905b261ecSmrg
16604642e01fSmrgThe output file name is determined by removing the directory component from
16614642e01fSmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the
16624642e01fSmrglibrary object suffix, \`.lo'."
16634642e01fSmrg        ;;
166405b261ecSmrg
16654642e01fSmrg      execute)
16664642e01fSmrg        $ECHO \
16674642e01fSmrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
166805b261ecSmrg
16694642e01fSmrgAutomatically set library path, then run a program.
167005b261ecSmrg
16714642e01fSmrgThis mode accepts the following additional options:
167205b261ecSmrg
16734642e01fSmrg  -dlopen FILE      add the directory containing FILE to the library path
167405b261ecSmrg
16754642e01fSmrgThis mode sets the library path environment variable according to \`-dlopen'
16764642e01fSmrgflags.
167705b261ecSmrg
16784642e01fSmrgIf any of the ARGS are libtool executable wrappers, then they are translated
16794642e01fSmrginto their corresponding uninstalled binary, and any of their required library
16804642e01fSmrgdirectories are added to the library path.
168105b261ecSmrg
16824642e01fSmrgThen, COMMAND is executed, with ARGS as arguments."
16834642e01fSmrg        ;;
168405b261ecSmrg
16854642e01fSmrg      finish)
16864642e01fSmrg        $ECHO \
16874642e01fSmrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
168805b261ecSmrg
16894642e01fSmrgComplete the installation of libtool libraries.
169005b261ecSmrg
16914642e01fSmrgEach LIBDIR is a directory that contains libtool libraries.
169205b261ecSmrg
16934642e01fSmrgThe commands that this mode executes may require superuser privileges.  Use
16944642e01fSmrgthe \`--dry-run' option if you just want to see what would be executed."
16954642e01fSmrg        ;;
169605b261ecSmrg
16974642e01fSmrg      install)
16984642e01fSmrg        $ECHO \
16994642e01fSmrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
170005b261ecSmrg
17014642e01fSmrgInstall executables or libraries.
170205b261ecSmrg
17034642e01fSmrgINSTALL-COMMAND is the installation command.  The first component should be
17044642e01fSmrgeither the \`install' or \`cp' program.
170505b261ecSmrg
17064642e01fSmrgThe following components of INSTALL-COMMAND are treated specially:
170705b261ecSmrg
17086747b715Smrg  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
170905b261ecSmrg
17104642e01fSmrgThe rest of the components are interpreted as arguments to that command (only
17114642e01fSmrgBSD-compatible install options are recognized)."
17124642e01fSmrg        ;;
171305b261ecSmrg
17144642e01fSmrg      link)
17154642e01fSmrg        $ECHO \
17164642e01fSmrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
171705b261ecSmrg
17184642e01fSmrgLink object files or libraries together to form another library, or to
17194642e01fSmrgcreate an executable program.
172005b261ecSmrg
17214642e01fSmrgLINK-COMMAND is a command using the C compiler that you would use to create
17224642e01fSmrga program from several object files.
172305b261ecSmrg
17244642e01fSmrgThe following components of LINK-COMMAND are treated specially:
172505b261ecSmrg
17264642e01fSmrg  -all-static       do not do any dynamic linking at all
17274642e01fSmrg  -avoid-version    do not add a version suffix if possible
17286747b715Smrg  -bindir BINDIR    specify path to binaries directory (for systems where
17296747b715Smrg                    libraries must be found in the PATH setting at runtime)
17304642e01fSmrg  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
17314642e01fSmrg  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
17324642e01fSmrg  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
17334642e01fSmrg  -export-symbols SYMFILE
17344642e01fSmrg                    try to export only the symbols listed in SYMFILE
17354642e01fSmrg  -export-symbols-regex REGEX
17364642e01fSmrg                    try to export only the symbols matching REGEX
17374642e01fSmrg  -LLIBDIR          search LIBDIR for required installed libraries
17384642e01fSmrg  -lNAME            OUTPUT-FILE requires the installed library libNAME
17394642e01fSmrg  -module           build a library that can dlopened
17404642e01fSmrg  -no-fast-install  disable the fast-install mode
17414642e01fSmrg  -no-install       link a not-installable executable
17424642e01fSmrg  -no-undefined     declare that a library does not refer to external symbols
17434642e01fSmrg  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
17444642e01fSmrg  -objectlist FILE  Use a list of object files found in FILE to specify objects
17454642e01fSmrg  -precious-files-regex REGEX
17464642e01fSmrg                    don't remove output files matching REGEX
17474642e01fSmrg  -release RELEASE  specify package release information
17484642e01fSmrg  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
17494642e01fSmrg  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
17504642e01fSmrg  -shared           only do dynamic linking of libtool libraries
17514642e01fSmrg  -shrext SUFFIX    override the standard shared library file extension
17524642e01fSmrg  -static           do not do any dynamic linking of uninstalled libtool libraries
17534642e01fSmrg  -static-libtool-libs
17544642e01fSmrg                    do not do any dynamic linking of libtool libraries
17554642e01fSmrg  -version-info CURRENT[:REVISION[:AGE]]
17564642e01fSmrg                    specify library version info [each variable defaults to 0]
17574642e01fSmrg  -weak LIBNAME     declare that the target provides the LIBNAME interface
17586747b715Smrg  -Wc,FLAG
17596747b715Smrg  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
17606747b715Smrg  -Wl,FLAG
17616747b715Smrg  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
17626747b715Smrg  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
176305b261ecSmrg
17644642e01fSmrgAll other options (arguments beginning with \`-') are ignored.
176505b261ecSmrg
17664642e01fSmrgEvery other argument is treated as a filename.  Files ending in \`.la' are
17674642e01fSmrgtreated as uninstalled libtool libraries, other files are standard or library
17684642e01fSmrgobject files.
176905b261ecSmrg
17704642e01fSmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
17714642e01fSmrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is
17724642e01fSmrgrequired, except when creating a convenience library.
177305b261ecSmrg
17744642e01fSmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
17754642e01fSmrgusing \`ar' and \`ranlib', or on Windows using \`lib'.
177605b261ecSmrg
17774642e01fSmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
17784642e01fSmrgis created, otherwise an executable program is created."
177905b261ecSmrg        ;;
178005b261ecSmrg
17814642e01fSmrg      uninstall)
17824642e01fSmrg        $ECHO \
17834642e01fSmrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
178405b261ecSmrg
17854642e01fSmrgRemove libraries from an installation directory.
178605b261ecSmrg
17874642e01fSmrgRM is the name of the program to use to delete files associated with each FILE
17884642e01fSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
17894642e01fSmrgto RM.
179005b261ecSmrg
17914642e01fSmrgIf FILE is a libtool library, all the files associated with it are deleted.
17924642e01fSmrgOtherwise, only FILE itself is deleted using RM."
17934642e01fSmrg        ;;
179405b261ecSmrg
17954642e01fSmrg      *)
1796475c125cSmrg        func_fatal_help "invalid operation mode \`$mode'"
17974642e01fSmrg        ;;
17984642e01fSmrg    esac
179905b261ecSmrg
18006747b715Smrg    echo
18014642e01fSmrg    $ECHO "Try \`$progname --help' for more information about other modes."
18024642e01fSmrg}
180305b261ecSmrg
18046747b715Smrg# Now that we've collected a possible --mode arg, show help if necessary
18056747b715Smrgif $opt_help; then
18066747b715Smrg  if test "$opt_help" = :; then
18076747b715Smrg    func_mode_help
18086747b715Smrg  else
18096747b715Smrg    {
18106747b715Smrg      func_help noexit
1811475c125cSmrg      for mode in compile link execute install finish uninstall clean; do
18126747b715Smrg	func_mode_help
18136747b715Smrg      done
18146747b715Smrg    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
18156747b715Smrg    {
18166747b715Smrg      func_help noexit
1817475c125cSmrg      for mode in compile link execute install finish uninstall clean; do
18186747b715Smrg	echo
18196747b715Smrg	func_mode_help
18206747b715Smrg      done
18216747b715Smrg    } |
18226747b715Smrg    sed '1d
18236747b715Smrg      /^When reporting/,/^Report/{
18246747b715Smrg	H
18256747b715Smrg	d
18266747b715Smrg      }
18276747b715Smrg      $x
18286747b715Smrg      /information about other modes/d
18296747b715Smrg      /more detailed .*MODE/d
18306747b715Smrg      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
18316747b715Smrg  fi
18326747b715Smrg  exit $?
18336747b715Smrgfi
183405b261ecSmrg
183505b261ecSmrg
18364642e01fSmrg# func_mode_execute arg...
18374642e01fSmrgfunc_mode_execute ()
18384642e01fSmrg{
18394642e01fSmrg    $opt_debug
18404642e01fSmrg    # The first argument is the command name.
18414642e01fSmrg    cmd="$nonopt"
18424642e01fSmrg    test -z "$cmd" && \
18434642e01fSmrg      func_fatal_help "you must specify a COMMAND"
184405b261ecSmrg
18454642e01fSmrg    # Handle -dlopen flags immediately.
1846475c125cSmrg    for file in $execute_dlfiles; do
18474642e01fSmrg      test -f "$file" \
18484642e01fSmrg	|| func_fatal_help "\`$file' is not a file"
184905b261ecSmrg
18504642e01fSmrg      dir=
18514642e01fSmrg      case $file in
18524642e01fSmrg      *.la)
18534642e01fSmrg	# Check to see that this really is a libtool archive.
18544642e01fSmrg	func_lalib_unsafe_p "$file" \
18554642e01fSmrg	  || func_fatal_help "\`$lib' is not a valid libtool archive"
185605b261ecSmrg
18574642e01fSmrg	# Read the libtool library.
18584642e01fSmrg	dlname=
18594642e01fSmrg	library_names=
18604642e01fSmrg	func_source "$file"
186105b261ecSmrg
18624642e01fSmrg	# Skip this library if it cannot be dlopened.
18634642e01fSmrg	if test -z "$dlname"; then
18644642e01fSmrg	  # Warn if it was a shared library.
18654642e01fSmrg	  test -n "$library_names" && \
18664642e01fSmrg	    func_warning "\`$file' was not linked with \`-export-dynamic'"
18674642e01fSmrg	  continue
18684642e01fSmrg	fi
186905b261ecSmrg
18704642e01fSmrg	func_dirname "$file" "" "."
18714642e01fSmrg	dir="$func_dirname_result"
187205b261ecSmrg
18734642e01fSmrg	if test -f "$dir/$objdir/$dlname"; then
1874475c125cSmrg	  dir="$dir/$objdir"
18754642e01fSmrg	else
18764642e01fSmrg	  if test ! -f "$dir/$dlname"; then
18774642e01fSmrg	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
18784642e01fSmrg	  fi
18794642e01fSmrg	fi
188005b261ecSmrg	;;
188105b261ecSmrg
18824642e01fSmrg      *.lo)
18834642e01fSmrg	# Just add the directory containing the .lo file.
18844642e01fSmrg	func_dirname "$file" "" "."
18854642e01fSmrg	dir="$func_dirname_result"
188605b261ecSmrg	;;
188705b261ecSmrg
18884642e01fSmrg      *)
18894642e01fSmrg	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
189005b261ecSmrg	continue
189105b261ecSmrg	;;
18924642e01fSmrg      esac
189305b261ecSmrg
18944642e01fSmrg      # Get the absolute pathname.
18954642e01fSmrg      absdir=`cd "$dir" && pwd`
18964642e01fSmrg      test -n "$absdir" && dir="$absdir"
189705b261ecSmrg
18984642e01fSmrg      # Now add the directory to shlibpath_var.
18994642e01fSmrg      if eval "test -z \"\$$shlibpath_var\""; then
19004642e01fSmrg	eval "$shlibpath_var=\"\$dir\""
19014642e01fSmrg      else
19024642e01fSmrg	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
19034642e01fSmrg      fi
19044642e01fSmrg    done
190505b261ecSmrg
19064642e01fSmrg    # This variable tells wrapper scripts just to set shlibpath_var
19074642e01fSmrg    # rather than running their programs.
19084642e01fSmrg    libtool_execute_magic="$magic"
190905b261ecSmrg
19104642e01fSmrg    # Check if any of the arguments is a wrapper script.
19114642e01fSmrg    args=
19124642e01fSmrg    for file
19134642e01fSmrg    do
19144642e01fSmrg      case $file in
19156747b715Smrg      -* | *.la | *.lo ) ;;
19164642e01fSmrg      *)
19174642e01fSmrg	# Do a test to see if this is really a libtool program.
19184642e01fSmrg	if func_ltwrapper_script_p "$file"; then
19194642e01fSmrg	  func_source "$file"
19204642e01fSmrg	  # Transform arg to wrapped name.
19214642e01fSmrg	  file="$progdir/$program"
19224642e01fSmrg	elif func_ltwrapper_executable_p "$file"; then
19234642e01fSmrg	  func_ltwrapper_scriptname "$file"
19244642e01fSmrg	  func_source "$func_ltwrapper_scriptname_result"
19254642e01fSmrg	  # Transform arg to wrapped name.
19264642e01fSmrg	  file="$progdir/$program"
19274642e01fSmrg	fi
19284642e01fSmrg	;;
19294642e01fSmrg      esac
19304642e01fSmrg      # Quote arguments (to preserve shell metacharacters).
1931475c125cSmrg      func_quote_for_eval "$file"
1932475c125cSmrg      args="$args $func_quote_for_eval_result"
19334642e01fSmrg    done
193405b261ecSmrg
19354642e01fSmrg    if test "X$opt_dry_run" = Xfalse; then
19364642e01fSmrg      if test -n "$shlibpath_var"; then
19374642e01fSmrg	# Export the shlibpath_var.
19384642e01fSmrg	eval "export $shlibpath_var"
19394642e01fSmrg      fi
194005b261ecSmrg
19414642e01fSmrg      # Restore saved environment variables
19424642e01fSmrg      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
19434642e01fSmrg      do
19444642e01fSmrg	eval "if test \"\${save_$lt_var+set}\" = set; then
19454642e01fSmrg                $lt_var=\$save_$lt_var; export $lt_var
194605b261ecSmrg	      else
19474642e01fSmrg		$lt_unset $lt_var
19484642e01fSmrg	      fi"
19494642e01fSmrg      done
195005b261ecSmrg
19514642e01fSmrg      # Now prepare to actually exec the command.
19524642e01fSmrg      exec_cmd="\$cmd$args"
19534642e01fSmrg    else
19544642e01fSmrg      # Display what would be done.
19554642e01fSmrg      if test -n "$shlibpath_var"; then
19564642e01fSmrg	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
19576747b715Smrg	echo "export $shlibpath_var"
19584642e01fSmrg      fi
19594642e01fSmrg      $ECHO "$cmd$args"
19604642e01fSmrg      exit $EXIT_SUCCESS
19614642e01fSmrg    fi
19624642e01fSmrg}
196305b261ecSmrg
1964475c125cSmrgtest "$mode" = execute && func_mode_execute ${1+"$@"}
196505b261ecSmrg
196605b261ecSmrg
19674642e01fSmrg# func_mode_finish arg...
19684642e01fSmrgfunc_mode_finish ()
19694642e01fSmrg{
19704642e01fSmrg    $opt_debug
1971475c125cSmrg    libdirs="$nonopt"
19724642e01fSmrg    admincmds=
197305b261ecSmrg
19746747b715Smrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
1975475c125cSmrg      for dir
1976475c125cSmrg      do
1977475c125cSmrg	libdirs="$libdirs $dir"
1978475c125cSmrg      done
1979475c125cSmrg
19804642e01fSmrg      for libdir in $libdirs; do
19814642e01fSmrg	if test -n "$finish_cmds"; then
19824642e01fSmrg	  # Do each command in the finish commands.
19834642e01fSmrg	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
19844642e01fSmrg'"$cmd"'"'
198505b261ecSmrg	fi
19864642e01fSmrg	if test -n "$finish_eval"; then
19874642e01fSmrg	  # Do the single finish_eval.
19884642e01fSmrg	  eval cmds=\"$finish_eval\"
1989475c125cSmrg	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
19904642e01fSmrg       $cmds"
19914642e01fSmrg	fi
19924642e01fSmrg      done
19934642e01fSmrg    fi
199405b261ecSmrg
19954642e01fSmrg    # Exit here if they wanted silent mode.
19964642e01fSmrg    $opt_silent && exit $EXIT_SUCCESS
199705b261ecSmrg
1998475c125cSmrg    echo "----------------------------------------------------------------------"
1999475c125cSmrg    echo "Libraries have been installed in:"
2000475c125cSmrg    for libdir in $libdirs; do
2001475c125cSmrg      $ECHO "   $libdir"
2002475c125cSmrg    done
2003475c125cSmrg    echo
2004475c125cSmrg    echo "If you ever happen to want to link against installed libraries"
2005475c125cSmrg    echo "in a given directory, LIBDIR, you must either use libtool, and"
2006475c125cSmrg    echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
2007475c125cSmrg    echo "flag during linking and do at least one of the following:"
2008475c125cSmrg    if test -n "$shlibpath_var"; then
2009475c125cSmrg      echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
2010475c125cSmrg      echo "     during execution"
2011475c125cSmrg    fi
2012475c125cSmrg    if test -n "$runpath_var"; then
2013475c125cSmrg      echo "   - add LIBDIR to the \`$runpath_var' environment variable"
2014475c125cSmrg      echo "     during linking"
2015475c125cSmrg    fi
2016475c125cSmrg    if test -n "$hardcode_libdir_flag_spec"; then
2017475c125cSmrg      libdir=LIBDIR
2018475c125cSmrg      eval flag=\"$hardcode_libdir_flag_spec\"
20194642e01fSmrg
2020475c125cSmrg      $ECHO "   - use the \`$flag' linker flag"
2021475c125cSmrg    fi
2022475c125cSmrg    if test -n "$admincmds"; then
2023475c125cSmrg      $ECHO "   - have your system administrator run these commands:$admincmds"
20246747b715Smrg    fi
2025475c125cSmrg    if test -f /etc/ld.so.conf; then
2026475c125cSmrg      echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
2027475c125cSmrg    fi
2028475c125cSmrg    echo
2029475c125cSmrg
2030475c125cSmrg    echo "See any operating system documentation about shared libraries for"
2031475c125cSmrg    case $host in
2032475c125cSmrg      solaris2.[6789]|solaris2.1[0-9])
2033475c125cSmrg        echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
2034475c125cSmrg	echo "pages."
2035475c125cSmrg	;;
2036475c125cSmrg      *)
2037475c125cSmrg        echo "more information, such as the ld(1) and ld.so(8) manual pages."
2038475c125cSmrg        ;;
2039475c125cSmrg    esac
2040475c125cSmrg    echo "----------------------------------------------------------------------"
20414642e01fSmrg    exit $EXIT_SUCCESS
20424642e01fSmrg}
20434642e01fSmrg
2044475c125cSmrgtest "$mode" = finish && func_mode_finish ${1+"$@"}
20454642e01fSmrg
20464642e01fSmrg
20474642e01fSmrg# func_mode_install arg...
20484642e01fSmrgfunc_mode_install ()
20494642e01fSmrg{
20504642e01fSmrg    $opt_debug
20514642e01fSmrg    # There may be an optional sh(1) argument at the beginning of
20524642e01fSmrg    # install_prog (especially on Windows NT).
20534642e01fSmrg    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
20544642e01fSmrg       # Allow the use of GNU shtool's install command.
20556747b715Smrg       case $nonopt in *shtool*) :;; *) false;; esac; then
20564642e01fSmrg      # Aesthetically quote it.
20574642e01fSmrg      func_quote_for_eval "$nonopt"
20584642e01fSmrg      install_prog="$func_quote_for_eval_result "
20594642e01fSmrg      arg=$1
20604642e01fSmrg      shift
20614642e01fSmrg    else
20624642e01fSmrg      install_prog=
20634642e01fSmrg      arg=$nonopt
20644642e01fSmrg    fi
20654642e01fSmrg
20664642e01fSmrg    # The real first argument should be the name of the installation program.
20674642e01fSmrg    # Aesthetically quote it.
20684642e01fSmrg    func_quote_for_eval "$arg"
2069475c125cSmrg    install_prog="$install_prog$func_quote_for_eval_result"
20706747b715Smrg    install_shared_prog=$install_prog
20716747b715Smrg    case " $install_prog " in
20726747b715Smrg      *[\\\ /]cp\ *) install_cp=: ;;
20736747b715Smrg      *) install_cp=false ;;
20746747b715Smrg    esac
20754642e01fSmrg
20764642e01fSmrg    # We need to accept at least all the BSD install flags.
20774642e01fSmrg    dest=
20784642e01fSmrg    files=
20794642e01fSmrg    opts=
20804642e01fSmrg    prev=
20814642e01fSmrg    install_type=
20824642e01fSmrg    isdir=no
20834642e01fSmrg    stripme=
20846747b715Smrg    no_mode=:
20854642e01fSmrg    for arg
20864642e01fSmrg    do
20876747b715Smrg      arg2=
20884642e01fSmrg      if test -n "$dest"; then
2089475c125cSmrg	files="$files $dest"
20904642e01fSmrg	dest=$arg
20914642e01fSmrg	continue
20924642e01fSmrg      fi
20934642e01fSmrg
20944642e01fSmrg      case $arg in
20954642e01fSmrg      -d) isdir=yes ;;
20964642e01fSmrg      -f)
20976747b715Smrg	if $install_cp; then :; else
20986747b715Smrg	  prev=$arg
20996747b715Smrg	fi
21004642e01fSmrg	;;
21014642e01fSmrg      -g | -m | -o)
21024642e01fSmrg	prev=$arg
21034642e01fSmrg	;;
21044642e01fSmrg      -s)
21054642e01fSmrg	stripme=" -s"
21064642e01fSmrg	continue
21074642e01fSmrg	;;
21084642e01fSmrg      -*)
21094642e01fSmrg	;;
21104642e01fSmrg      *)
21114642e01fSmrg	# If the previous option needed an argument, then skip it.
21124642e01fSmrg	if test -n "$prev"; then
21136747b715Smrg	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
21146747b715Smrg	    arg2=$install_override_mode
21156747b715Smrg	    no_mode=false
21166747b715Smrg	  fi
211705b261ecSmrg	  prev=
211805b261ecSmrg	else
21194642e01fSmrg	  dest=$arg
21204642e01fSmrg	  continue
212105b261ecSmrg	fi
212205b261ecSmrg	;;
21234642e01fSmrg      esac
212405b261ecSmrg
21254642e01fSmrg      # Aesthetically quote the argument.
21264642e01fSmrg      func_quote_for_eval "$arg"
2127475c125cSmrg      install_prog="$install_prog $func_quote_for_eval_result"
21286747b715Smrg      if test -n "$arg2"; then
21296747b715Smrg	func_quote_for_eval "$arg2"
21306747b715Smrg      fi
2131475c125cSmrg      install_shared_prog="$install_shared_prog $func_quote_for_eval_result"
21324642e01fSmrg    done
213305b261ecSmrg
21344642e01fSmrg    test -z "$install_prog" && \
21354642e01fSmrg      func_fatal_help "you must specify an install program"
213605b261ecSmrg
21374642e01fSmrg    test -n "$prev" && \
21384642e01fSmrg      func_fatal_help "the \`$prev' option requires an argument"
213905b261ecSmrg
21406747b715Smrg    if test -n "$install_override_mode" && $no_mode; then
21416747b715Smrg      if $install_cp; then :; else
21426747b715Smrg	func_quote_for_eval "$install_override_mode"
2143475c125cSmrg	install_shared_prog="$install_shared_prog -m $func_quote_for_eval_result"
21446747b715Smrg      fi
21456747b715Smrg    fi
21466747b715Smrg
21474642e01fSmrg    if test -z "$files"; then
21484642e01fSmrg      if test -z "$dest"; then
21494642e01fSmrg	func_fatal_help "no file or destination specified"
21504642e01fSmrg      else
21514642e01fSmrg	func_fatal_help "you must specify a destination"
21524642e01fSmrg      fi
215305b261ecSmrg    fi
215405b261ecSmrg
21554642e01fSmrg    # Strip any trailing slash from the destination.
21564642e01fSmrg    func_stripname '' '/' "$dest"
21574642e01fSmrg    dest=$func_stripname_result
215805b261ecSmrg
21594642e01fSmrg    # Check to see that the destination is a directory.
21604642e01fSmrg    test -d "$dest" && isdir=yes
21614642e01fSmrg    if test "$isdir" = yes; then
21624642e01fSmrg      destdir="$dest"
21634642e01fSmrg      destname=
216405b261ecSmrg    else
21654642e01fSmrg      func_dirname_and_basename "$dest" "" "."
21664642e01fSmrg      destdir="$func_dirname_result"
21674642e01fSmrg      destname="$func_basename_result"
216805b261ecSmrg
21694642e01fSmrg      # Not a directory, so check to see that there is only one file specified.
21704642e01fSmrg      set dummy $files; shift
21714642e01fSmrg      test "$#" -gt 1 && \
21724642e01fSmrg	func_fatal_help "\`$dest' is not a directory"
217305b261ecSmrg    fi
21744642e01fSmrg    case $destdir in
21754642e01fSmrg    [\\/]* | [A-Za-z]:[\\/]*) ;;
217605b261ecSmrg    *)
21774642e01fSmrg      for file in $files; do
21784642e01fSmrg	case $file in
21794642e01fSmrg	*.lo) ;;
21804642e01fSmrg	*)
21814642e01fSmrg	  func_fatal_help "\`$destdir' must be an absolute directory name"
21824642e01fSmrg	  ;;
21834642e01fSmrg	esac
21844642e01fSmrg      done
218505b261ecSmrg      ;;
218605b261ecSmrg    esac
218705b261ecSmrg
21884642e01fSmrg    # This variable tells wrapper scripts just to set variables rather
21894642e01fSmrg    # than running their programs.
21904642e01fSmrg    libtool_install_magic="$magic"
219105b261ecSmrg
21924642e01fSmrg    staticlibs=
21934642e01fSmrg    future_libdirs=
21944642e01fSmrg    current_libdirs=
21954642e01fSmrg    for file in $files; do
219605b261ecSmrg
21974642e01fSmrg      # Do each installation.
21984642e01fSmrg      case $file in
21994642e01fSmrg      *.$libext)
22004642e01fSmrg	# Do the static libraries later.
2201475c125cSmrg	staticlibs="$staticlibs $file"
22024642e01fSmrg	;;
22034642e01fSmrg
22044642e01fSmrg      *.la)
22054642e01fSmrg	# Check to see that this really is a libtool archive.
22064642e01fSmrg	func_lalib_unsafe_p "$file" \
22074642e01fSmrg	  || func_fatal_help "\`$file' is not a valid libtool archive"
22084642e01fSmrg
22094642e01fSmrg	library_names=
22104642e01fSmrg	old_library=
22114642e01fSmrg	relink_command=
22124642e01fSmrg	func_source "$file"
22134642e01fSmrg
22144642e01fSmrg	# Add the libdir to current_libdirs if it is the destination.
22154642e01fSmrg	if test "X$destdir" = "X$libdir"; then
22164642e01fSmrg	  case "$current_libdirs " in
22174642e01fSmrg	  *" $libdir "*) ;;
2218475c125cSmrg	  *) current_libdirs="$current_libdirs $libdir" ;;
221905b261ecSmrg	  esac
22204642e01fSmrg	else
22214642e01fSmrg	  # Note the libdir as a future libdir.
22224642e01fSmrg	  case "$future_libdirs " in
22234642e01fSmrg	  *" $libdir "*) ;;
2224475c125cSmrg	  *) future_libdirs="$future_libdirs $libdir" ;;
22254642e01fSmrg	  esac
22264642e01fSmrg	fi
222705b261ecSmrg
22284642e01fSmrg	func_dirname "$file" "/" ""
22294642e01fSmrg	dir="$func_dirname_result"
2230475c125cSmrg	dir="$dir$objdir"
22314642e01fSmrg
22324642e01fSmrg	if test -n "$relink_command"; then
22334642e01fSmrg	  # Determine the prefix the user has applied to our future dir.
22346747b715Smrg	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
22354642e01fSmrg
22364642e01fSmrg	  # Don't allow the user to place us outside of our expected
22374642e01fSmrg	  # location b/c this prevents finding dependent libraries that
22384642e01fSmrg	  # are installed to the same prefix.
22394642e01fSmrg	  # At present, this check doesn't affect windows .dll's that
22404642e01fSmrg	  # are installed into $libdir/../bin (currently, that works fine)
22414642e01fSmrg	  # but it's something to keep an eye on.
22424642e01fSmrg	  test "$inst_prefix_dir" = "$destdir" && \
22434642e01fSmrg	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
22444642e01fSmrg
22454642e01fSmrg	  if test -n "$inst_prefix_dir"; then
22464642e01fSmrg	    # Stick the inst_prefix_dir data into the link command.
22476747b715Smrg	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
22484642e01fSmrg	  else
22496747b715Smrg	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
22504642e01fSmrg	  fi
22514642e01fSmrg
22524642e01fSmrg	  func_warning "relinking \`$file'"
22534642e01fSmrg	  func_show_eval "$relink_command" \
22544642e01fSmrg	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
22554642e01fSmrg	fi
22564642e01fSmrg
22574642e01fSmrg	# See the names of the shared library.
22584642e01fSmrg	set dummy $library_names; shift
22594642e01fSmrg	if test -n "$1"; then
22604642e01fSmrg	  realname="$1"
22614642e01fSmrg	  shift
22624642e01fSmrg
22634642e01fSmrg	  srcname="$realname"
22644642e01fSmrg	  test -n "$relink_command" && srcname="$realname"T
22654642e01fSmrg
22664642e01fSmrg	  # Install the shared library and build the symlinks.
22676747b715Smrg	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
22684642e01fSmrg	      'exit $?'
22694642e01fSmrg	  tstripme="$stripme"
22704642e01fSmrg	  case $host_os in
22714642e01fSmrg	  cygwin* | mingw* | pw32* | cegcc*)
22724642e01fSmrg	    case $realname in
22734642e01fSmrg	    *.dll.a)
22744642e01fSmrg	      tstripme=""
22754642e01fSmrg	      ;;
22764642e01fSmrg	    esac
227705b261ecSmrg	    ;;
227805b261ecSmrg	  esac
22794642e01fSmrg	  if test -n "$tstripme" && test -n "$striplib"; then
22804642e01fSmrg	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
228105b261ecSmrg	  fi
22824642e01fSmrg
22834642e01fSmrg	  if test "$#" -gt 0; then
22844642e01fSmrg	    # Delete the old symlinks, and create new ones.
22854642e01fSmrg	    # Try `ln -sf' first, because the `ln' binary might depend on
22864642e01fSmrg	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
22874642e01fSmrg	    # so we also need to try rm && ln -s.
22884642e01fSmrg	    for linkname
22894642e01fSmrg	    do
22904642e01fSmrg	      test "$linkname" != "$realname" \
22914642e01fSmrg		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
229205b261ecSmrg	    done
229305b261ecSmrg	  fi
229405b261ecSmrg
22954642e01fSmrg	  # Do each command in the postinstall commands.
22964642e01fSmrg	  lib="$destdir/$realname"
22974642e01fSmrg	  func_execute_cmds "$postinstall_cmds" 'exit $?'
229805b261ecSmrg	fi
229905b261ecSmrg
23004642e01fSmrg	# Install the pseudo-library for information purposes.
23014642e01fSmrg	func_basename "$file"
23024642e01fSmrg	name="$func_basename_result"
23034642e01fSmrg	instname="$dir/$name"i
23044642e01fSmrg	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
230505b261ecSmrg
23064642e01fSmrg	# Maybe install the static library, too.
2307475c125cSmrg	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
23084642e01fSmrg	;;
230905b261ecSmrg
23104642e01fSmrg      *.lo)
23114642e01fSmrg	# Install (i.e. copy) a libtool object.
231205b261ecSmrg
23134642e01fSmrg	# Figure out destination file name, if it wasn't already specified.
23144642e01fSmrg	if test -n "$destname"; then
23154642e01fSmrg	  destfile="$destdir/$destname"
23164642e01fSmrg	else
23174642e01fSmrg	  func_basename "$file"
23184642e01fSmrg	  destfile="$func_basename_result"
23194642e01fSmrg	  destfile="$destdir/$destfile"
23204642e01fSmrg	fi
23214642e01fSmrg
23224642e01fSmrg	# Deduce the name of the destination old-style object file.
23234642e01fSmrg	case $destfile in
23244642e01fSmrg	*.lo)
23254642e01fSmrg	  func_lo2o "$destfile"
23264642e01fSmrg	  staticdest=$func_lo2o_result
23274642e01fSmrg	  ;;
23284642e01fSmrg	*.$objext)
23294642e01fSmrg	  staticdest="$destfile"
23304642e01fSmrg	  destfile=
23314642e01fSmrg	  ;;
23324642e01fSmrg	*)
23334642e01fSmrg	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
23344642e01fSmrg	  ;;
233505b261ecSmrg	esac
233605b261ecSmrg
23374642e01fSmrg	# Install the libtool object if requested.
23384642e01fSmrg	test -n "$destfile" && \
23394642e01fSmrg	  func_show_eval "$install_prog $file $destfile" 'exit $?'
23404642e01fSmrg
23414642e01fSmrg	# Install the old object if enabled.
23424642e01fSmrg	if test "$build_old_libs" = yes; then
23434642e01fSmrg	  # Deduce the name of the old-style object file.
23444642e01fSmrg	  func_lo2o "$file"
23454642e01fSmrg	  staticobj=$func_lo2o_result
23464642e01fSmrg	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
234705b261ecSmrg	fi
23484642e01fSmrg	exit $EXIT_SUCCESS
23494642e01fSmrg	;;
235005b261ecSmrg
23514642e01fSmrg      *)
23524642e01fSmrg	# Figure out destination file name, if it wasn't already specified.
23534642e01fSmrg	if test -n "$destname"; then
23544642e01fSmrg	  destfile="$destdir/$destname"
23554642e01fSmrg	else
23564642e01fSmrg	  func_basename "$file"
23574642e01fSmrg	  destfile="$func_basename_result"
23584642e01fSmrg	  destfile="$destdir/$destfile"
23594642e01fSmrg	fi
236005b261ecSmrg
23614642e01fSmrg	# If the file is missing, and there is a .exe on the end, strip it
23624642e01fSmrg	# because it is most likely a libtool script we actually want to
23634642e01fSmrg	# install
23644642e01fSmrg	stripped_ext=""
23654642e01fSmrg	case $file in
23664642e01fSmrg	  *.exe)
23674642e01fSmrg	    if test ! -f "$file"; then
23684642e01fSmrg	      func_stripname '' '.exe' "$file"
23694642e01fSmrg	      file=$func_stripname_result
23704642e01fSmrg	      stripped_ext=".exe"
23714642e01fSmrg	    fi
23724642e01fSmrg	    ;;
23734642e01fSmrg	esac
237405b261ecSmrg
23754642e01fSmrg	# Do a test to see if this is really a libtool program.
23764642e01fSmrg	case $host in
23774642e01fSmrg	*cygwin* | *mingw*)
23784642e01fSmrg	    if func_ltwrapper_executable_p "$file"; then
23794642e01fSmrg	      func_ltwrapper_scriptname "$file"
23804642e01fSmrg	      wrapper=$func_ltwrapper_scriptname_result
23814642e01fSmrg	    else
23824642e01fSmrg	      func_stripname '' '.exe' "$file"
23834642e01fSmrg	      wrapper=$func_stripname_result
23844642e01fSmrg	    fi
23854642e01fSmrg	    ;;
23864642e01fSmrg	*)
23874642e01fSmrg	    wrapper=$file
23884642e01fSmrg	    ;;
23894642e01fSmrg	esac
23904642e01fSmrg	if func_ltwrapper_script_p "$wrapper"; then
23914642e01fSmrg	  notinst_deplibs=
23924642e01fSmrg	  relink_command=
239305b261ecSmrg
23944642e01fSmrg	  func_source "$wrapper"
23954642e01fSmrg
23964642e01fSmrg	  # Check the variables that should have been set.
23974642e01fSmrg	  test -z "$generated_by_libtool_version" && \
23984642e01fSmrg	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
23994642e01fSmrg
24004642e01fSmrg	  finalize=yes
24014642e01fSmrg	  for lib in $notinst_deplibs; do
24024642e01fSmrg	    # Check to see that each library is installed.
24034642e01fSmrg	    libdir=
24044642e01fSmrg	    if test -f "$lib"; then
24054642e01fSmrg	      func_source "$lib"
24064642e01fSmrg	    fi
24076747b715Smrg	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
24084642e01fSmrg	    if test -n "$libdir" && test ! -f "$libfile"; then
24094642e01fSmrg	      func_warning "\`$lib' has not been installed in \`$libdir'"
24104642e01fSmrg	      finalize=no
24114642e01fSmrg	    fi
24124642e01fSmrg	  done
24134642e01fSmrg
24144642e01fSmrg	  relink_command=
24154642e01fSmrg	  func_source "$wrapper"
24164642e01fSmrg
24174642e01fSmrg	  outputname=
24184642e01fSmrg	  if test "$fast_install" = no && test -n "$relink_command"; then
24194642e01fSmrg	    $opt_dry_run || {
24204642e01fSmrg	      if test "$finalize" = yes; then
24214642e01fSmrg	        tmpdir=`func_mktempdir`
24224642e01fSmrg		func_basename "$file$stripped_ext"
24234642e01fSmrg		file="$func_basename_result"
24244642e01fSmrg	        outputname="$tmpdir/$file"
24254642e01fSmrg	        # Replace the output file specification.
24266747b715Smrg	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
24274642e01fSmrg
24284642e01fSmrg	        $opt_silent || {
24294642e01fSmrg	          func_quote_for_expand "$relink_command"
24304642e01fSmrg		  eval "func_echo $func_quote_for_expand_result"
24314642e01fSmrg	        }
24324642e01fSmrg	        if eval "$relink_command"; then :
24334642e01fSmrg	          else
24344642e01fSmrg		  func_error "error: relink \`$file' with the above command before installing it"
24354642e01fSmrg		  $opt_dry_run || ${RM}r "$tmpdir"
24364642e01fSmrg		  continue
24374642e01fSmrg	        fi
24384642e01fSmrg	        file="$outputname"
24394642e01fSmrg	      else
24404642e01fSmrg	        func_warning "cannot relink \`$file'"
24414642e01fSmrg	      fi
24424642e01fSmrg	    }
244305b261ecSmrg	  else
24444642e01fSmrg	    # Install the binary that we compiled earlier.
24456747b715Smrg	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
244605b261ecSmrg	  fi
24474642e01fSmrg	fi
244805b261ecSmrg
24494642e01fSmrg	# remove .exe since cygwin /usr/bin/install will append another
24504642e01fSmrg	# one anyway
24514642e01fSmrg	case $install_prog,$host in
24524642e01fSmrg	*/usr/bin/install*,*cygwin*)
24534642e01fSmrg	  case $file:$destfile in
24544642e01fSmrg	  *.exe:*.exe)
24554642e01fSmrg	    # this is ok
24564642e01fSmrg	    ;;
24574642e01fSmrg	  *.exe:*)
24584642e01fSmrg	    destfile=$destfile.exe
24594642e01fSmrg	    ;;
24604642e01fSmrg	  *:*.exe)
24614642e01fSmrg	    func_stripname '' '.exe' "$destfile"
24624642e01fSmrg	    destfile=$func_stripname_result
24634642e01fSmrg	    ;;
24644642e01fSmrg	  esac
246505b261ecSmrg	  ;;
246605b261ecSmrg	esac
24674642e01fSmrg	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
24684642e01fSmrg	$opt_dry_run || if test -n "$outputname"; then
24694642e01fSmrg	  ${RM}r "$tmpdir"
24704642e01fSmrg	fi
24714642e01fSmrg	;;
24724642e01fSmrg      esac
24734642e01fSmrg    done
247405b261ecSmrg
24754642e01fSmrg    for file in $staticlibs; do
24764642e01fSmrg      func_basename "$file"
24774642e01fSmrg      name="$func_basename_result"
24784642e01fSmrg
24794642e01fSmrg      # Set up the ranlib parameters.
24804642e01fSmrg      oldlib="$destdir/$name"
24814642e01fSmrg
24824642e01fSmrg      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
24834642e01fSmrg
24844642e01fSmrg      if test -n "$stripme" && test -n "$old_striplib"; then
24854642e01fSmrg	func_show_eval "$old_striplib $oldlib" 'exit $?'
24864642e01fSmrg      fi
24874642e01fSmrg
24884642e01fSmrg      # Do each command in the postinstall commands.
24894642e01fSmrg      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
24904642e01fSmrg    done
24914642e01fSmrg
24924642e01fSmrg    test -n "$future_libdirs" && \
24934642e01fSmrg      func_warning "remember to run \`$progname --finish$future_libdirs'"
24944642e01fSmrg
24954642e01fSmrg    if test -n "$current_libdirs"; then
24964642e01fSmrg      # Maybe just do a dry run.
24974642e01fSmrg      $opt_dry_run && current_libdirs=" -n$current_libdirs"
24984642e01fSmrg      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
24994642e01fSmrg    else
25004642e01fSmrg      exit $EXIT_SUCCESS
25014642e01fSmrg    fi
25024642e01fSmrg}
25034642e01fSmrg
2504475c125cSmrgtest "$mode" = install && func_mode_install ${1+"$@"}
25054642e01fSmrg
25064642e01fSmrg
25074642e01fSmrg# func_generate_dlsyms outputname originator pic_p
25084642e01fSmrg# Extract symbols from dlprefiles and create ${outputname}S.o with
25094642e01fSmrg# a dlpreopen symbol table.
25104642e01fSmrgfunc_generate_dlsyms ()
25114642e01fSmrg{
25124642e01fSmrg    $opt_debug
25134642e01fSmrg    my_outputname="$1"
25144642e01fSmrg    my_originator="$2"
25154642e01fSmrg    my_pic_p="${3-no}"
25164642e01fSmrg    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
25174642e01fSmrg    my_dlsyms=
25184642e01fSmrg
25194642e01fSmrg    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
25204642e01fSmrg      if test -n "$NM" && test -n "$global_symbol_pipe"; then
25214642e01fSmrg	my_dlsyms="${my_outputname}S.c"
25224642e01fSmrg      else
25234642e01fSmrg	func_error "not configured to extract global symbols from dlpreopened files"
25244642e01fSmrg      fi
25254642e01fSmrg    fi
25264642e01fSmrg
25274642e01fSmrg    if test -n "$my_dlsyms"; then
25284642e01fSmrg      case $my_dlsyms in
25294642e01fSmrg      "") ;;
25304642e01fSmrg      *.c)
25314642e01fSmrg	# Discover the nlist of each of the dlfiles.
25324642e01fSmrg	nlist="$output_objdir/${my_outputname}.nm"
25334642e01fSmrg
25344642e01fSmrg	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
25354642e01fSmrg
25364642e01fSmrg	# Parse the name list into a source file.
25374642e01fSmrg	func_verbose "creating $output_objdir/$my_dlsyms"
25384642e01fSmrg
25394642e01fSmrg	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
25404642e01fSmrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
25414642e01fSmrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
25424642e01fSmrg
25434642e01fSmrg#ifdef __cplusplus
25444642e01fSmrgextern \"C\" {
25454642e01fSmrg#endif
25464642e01fSmrg
25476747b715Smrg#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
25486747b715Smrg#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
25496747b715Smrg#endif
25506747b715Smrg
25514642e01fSmrg/* External symbol declarations for the compiler. */\
25524642e01fSmrg"
25534642e01fSmrg
25544642e01fSmrg	if test "$dlself" = yes; then
25554642e01fSmrg	  func_verbose "generating symbol list for \`$output'"
25564642e01fSmrg
25574642e01fSmrg	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
25584642e01fSmrg
25594642e01fSmrg	  # Add our own program objects to the symbol list.
25606747b715Smrg	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
25614642e01fSmrg	  for progfile in $progfiles; do
2562475c125cSmrg	    func_verbose "extracting global C symbols from \`$progfile'"
2563475c125cSmrg	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
25644642e01fSmrg	  done
25654642e01fSmrg
25664642e01fSmrg	  if test -n "$exclude_expsyms"; then
25674642e01fSmrg	    $opt_dry_run || {
25684642e01fSmrg	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
25694642e01fSmrg	      eval '$MV "$nlist"T "$nlist"'
25704642e01fSmrg	    }
257105b261ecSmrg	  fi
25724642e01fSmrg
25734642e01fSmrg	  if test -n "$export_symbols_regex"; then
25744642e01fSmrg	    $opt_dry_run || {
25754642e01fSmrg	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
25764642e01fSmrg	      eval '$MV "$nlist"T "$nlist"'
25774642e01fSmrg	    }
25784642e01fSmrg	  fi
25794642e01fSmrg
25804642e01fSmrg	  # Prepare the list of exported symbols
25814642e01fSmrg	  if test -z "$export_symbols"; then
25824642e01fSmrg	    export_symbols="$output_objdir/$outputname.exp"
25834642e01fSmrg	    $opt_dry_run || {
25844642e01fSmrg	      $RM $export_symbols
25854642e01fSmrg	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
25864642e01fSmrg	      case $host in
25874642e01fSmrg	      *cygwin* | *mingw* | *cegcc* )
25884642e01fSmrg                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
25894642e01fSmrg                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
25904642e01fSmrg	        ;;
25914642e01fSmrg	      esac
25924642e01fSmrg	    }
259305b261ecSmrg	  else
25944642e01fSmrg	    $opt_dry_run || {
25954642e01fSmrg	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
25964642e01fSmrg	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
25974642e01fSmrg	      eval '$MV "$nlist"T "$nlist"'
25984642e01fSmrg	      case $host in
25996747b715Smrg	        *cygwin* | *mingw* | *cegcc* )
26004642e01fSmrg	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
26014642e01fSmrg	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
26024642e01fSmrg	          ;;
26034642e01fSmrg	      esac
26044642e01fSmrg	    }
260505b261ecSmrg	  fi
26064642e01fSmrg	fi
260705b261ecSmrg
26084642e01fSmrg	for dlprefile in $dlprefiles; do
26094642e01fSmrg	  func_verbose "extracting global C symbols from \`$dlprefile'"
26104642e01fSmrg	  func_basename "$dlprefile"
26114642e01fSmrg	  name="$func_basename_result"
2612475c125cSmrg	  $opt_dry_run || {
2613475c125cSmrg	    eval '$ECHO ": $name " >> "$nlist"'
2614475c125cSmrg	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
2615475c125cSmrg	  }
26164642e01fSmrg	done
26174642e01fSmrg
26184642e01fSmrg	$opt_dry_run || {
26194642e01fSmrg	  # Make sure we have at least an empty file.
26204642e01fSmrg	  test -f "$nlist" || : > "$nlist"
26214642e01fSmrg
26224642e01fSmrg	  if test -n "$exclude_expsyms"; then
26234642e01fSmrg	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
26244642e01fSmrg	    $MV "$nlist"T "$nlist"
262505b261ecSmrg	  fi
26264642e01fSmrg
26274642e01fSmrg	  # Try sorting and uniquifying the output.
26284642e01fSmrg	  if $GREP -v "^: " < "$nlist" |
26294642e01fSmrg	      if sort -k 3 </dev/null >/dev/null 2>&1; then
26304642e01fSmrg		sort -k 3
26314642e01fSmrg	      else
26324642e01fSmrg		sort +2
26334642e01fSmrg	      fi |
26344642e01fSmrg	      uniq > "$nlist"S; then
26354642e01fSmrg	    :
263605b261ecSmrg	  else
26374642e01fSmrg	    $GREP -v "^: " < "$nlist" > "$nlist"S
263805b261ecSmrg	  fi
263905b261ecSmrg
26404642e01fSmrg	  if test -f "$nlist"S; then
26414642e01fSmrg	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
264205b261ecSmrg	  else
26436747b715Smrg	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
264405b261ecSmrg	  fi
264505b261ecSmrg
26466747b715Smrg	  echo >> "$output_objdir/$my_dlsyms" "\
264705b261ecSmrg
26484642e01fSmrg/* The mapping between symbol names and symbols.  */
26494642e01fSmrgtypedef struct {
26504642e01fSmrg  const char *name;
26514642e01fSmrg  void *address;
26524642e01fSmrg} lt_dlsymlist;
2653475c125cSmrg"
2654475c125cSmrg	  case $host in
2655475c125cSmrg	  *cygwin* | *mingw* | *cegcc* )
2656475c125cSmrg	    echo >> "$output_objdir/$my_dlsyms" "\
2657475c125cSmrg/* DATA imports from DLLs on WIN32 con't be const, because
2658475c125cSmrg   runtime relocations are performed -- see ld's documentation
2659475c125cSmrg   on pseudo-relocs.  */"
2660475c125cSmrg	    lt_dlsym_const= ;;
2661475c125cSmrg	  *osf5*)
2662475c125cSmrg	    echo >> "$output_objdir/$my_dlsyms" "\
2663475c125cSmrg/* This system does not cope well with relocations in const data */"
2664475c125cSmrg	    lt_dlsym_const= ;;
2665475c125cSmrg	  *)
2666475c125cSmrg	    lt_dlsym_const=const ;;
2667475c125cSmrg	  esac
2668475c125cSmrg
2669475c125cSmrg	  echo >> "$output_objdir/$my_dlsyms" "\
2670475c125cSmrgextern $lt_dlsym_const lt_dlsymlist
26714642e01fSmrglt_${my_prefix}_LTX_preloaded_symbols[];
2672475c125cSmrg$lt_dlsym_const lt_dlsymlist
26734642e01fSmrglt_${my_prefix}_LTX_preloaded_symbols[] =
26744642e01fSmrg{\
26754642e01fSmrg  { \"$my_originator\", (void *) 0 },"
267605b261ecSmrg
26774642e01fSmrg	  case $need_lib_prefix in
26784642e01fSmrg	  no)
26794642e01fSmrg	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
26804642e01fSmrg	    ;;
26814642e01fSmrg	  *)
26824642e01fSmrg	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
26834642e01fSmrg	    ;;
26844642e01fSmrg	  esac
26856747b715Smrg	  echo >> "$output_objdir/$my_dlsyms" "\
26864642e01fSmrg  {0, (void *) 0}
26874642e01fSmrg};
268805b261ecSmrg
26894642e01fSmrg/* This works around a problem in FreeBSD linker */
26904642e01fSmrg#ifdef FREEBSD_WORKAROUND
26914642e01fSmrgstatic const void *lt_preloaded_setup() {
26924642e01fSmrg  return lt_${my_prefix}_LTX_preloaded_symbols;
26934642e01fSmrg}
26944642e01fSmrg#endif
26954642e01fSmrg
26964642e01fSmrg#ifdef __cplusplus
26974642e01fSmrg}
26984642e01fSmrg#endif\
26994642e01fSmrg"
27004642e01fSmrg	} # !$opt_dry_run
27014642e01fSmrg
27024642e01fSmrg	pic_flag_for_symtable=
27034642e01fSmrg	case "$compile_command " in
27044642e01fSmrg	*" -static "*) ;;
27054642e01fSmrg	*)
27064642e01fSmrg	  case $host in
27074642e01fSmrg	  # compiling the symbol table file with pic_flag works around
27084642e01fSmrg	  # a FreeBSD bug that causes programs to crash when -lm is
27094642e01fSmrg	  # linked before any other PIC object.  But we must not use
27104642e01fSmrg	  # pic_flag when linking with -static.  The problem exists in
27114642e01fSmrg	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
27124642e01fSmrg	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
27134642e01fSmrg	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
27144642e01fSmrg	  *-*-hpux*)
27154642e01fSmrg	    pic_flag_for_symtable=" $pic_flag"  ;;
27164642e01fSmrg	  *)
27174642e01fSmrg	    if test "X$my_pic_p" != Xno; then
27184642e01fSmrg	      pic_flag_for_symtable=" $pic_flag"
271905b261ecSmrg	    fi
27204642e01fSmrg	    ;;
27214642e01fSmrg	  esac
27224642e01fSmrg	  ;;
27234642e01fSmrg	esac
27244642e01fSmrg	symtab_cflags=
27254642e01fSmrg	for arg in $LTCFLAGS; do
27264642e01fSmrg	  case $arg in
27274642e01fSmrg	  -pie | -fpie | -fPIE) ;;
2728475c125cSmrg	  *) symtab_cflags="$symtab_cflags $arg" ;;
27294642e01fSmrg	  esac
27304642e01fSmrg	done
273105b261ecSmrg
27324642e01fSmrg	# Now compile the dynamic symbol file.
27334642e01fSmrg	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
273405b261ecSmrg
27354642e01fSmrg	# Clean up the generated files.
27364642e01fSmrg	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
273705b261ecSmrg
27384642e01fSmrg	# Transform the symbol file into the correct name.
27394642e01fSmrg	symfileobj="$output_objdir/${my_outputname}S.$objext"
27404642e01fSmrg	case $host in
27414642e01fSmrg	*cygwin* | *mingw* | *cegcc* )
27424642e01fSmrg	  if test -f "$output_objdir/$my_outputname.def"; then
27436747b715Smrg	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
27446747b715Smrg	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
27454642e01fSmrg	  else
27466747b715Smrg	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
27476747b715Smrg	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
274805b261ecSmrg	  fi
27494642e01fSmrg	  ;;
27504642e01fSmrg	*)
27516747b715Smrg	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
27526747b715Smrg	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
27534642e01fSmrg	  ;;
27544642e01fSmrg	esac
27554642e01fSmrg	;;
27564642e01fSmrg      *)
27574642e01fSmrg	func_fatal_error "unknown suffix for \`$my_dlsyms'"
27584642e01fSmrg	;;
27594642e01fSmrg      esac
27604642e01fSmrg    else
27614642e01fSmrg      # We keep going just in case the user didn't refer to
27624642e01fSmrg      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
27634642e01fSmrg      # really was required.
276405b261ecSmrg
27654642e01fSmrg      # Nullify the symbol file.
27666747b715Smrg      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
27676747b715Smrg      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
27684642e01fSmrg    fi
27694642e01fSmrg}
277005b261ecSmrg
27714642e01fSmrg# func_win32_libid arg
27724642e01fSmrg# return the library type of file 'arg'
27734642e01fSmrg#
27744642e01fSmrg# Need a lot of goo to handle *both* DLLs and import libs
27754642e01fSmrg# Has to be a shell function in order to 'eat' the argument
27764642e01fSmrg# that is supplied when $file_magic_command is called.
27776747b715Smrg# Despite the name, also deal with 64 bit binaries.
27784642e01fSmrgfunc_win32_libid ()
27794642e01fSmrg{
27804642e01fSmrg  $opt_debug
27814642e01fSmrg  win32_libid_type="unknown"
27824642e01fSmrg  win32_fileres=`file -L $1 2>/dev/null`
27834642e01fSmrg  case $win32_fileres in
27844642e01fSmrg  *ar\ archive\ import\ library*) # definitely import
27854642e01fSmrg    win32_libid_type="x86 archive import"
27864642e01fSmrg    ;;
27874642e01fSmrg  *ar\ archive*) # could be an import, or static
27886747b715Smrg    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
27894642e01fSmrg    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
27906747b715Smrg       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
2791475c125cSmrg      win32_nmres=`eval $NM -f posix -A $1 |
27924642e01fSmrg	$SED -n -e '
27934642e01fSmrg	    1,100{
27944642e01fSmrg		/ I /{
27954642e01fSmrg		    s,.*,import,
27964642e01fSmrg		    p
27974642e01fSmrg		    q
27984642e01fSmrg		}
27994642e01fSmrg	    }'`
28004642e01fSmrg      case $win32_nmres in
28014642e01fSmrg      import*)  win32_libid_type="x86 archive import";;
28024642e01fSmrg      *)        win32_libid_type="x86 archive static";;
28034642e01fSmrg      esac
28044642e01fSmrg    fi
28054642e01fSmrg    ;;
28064642e01fSmrg  *DLL*)
28074642e01fSmrg    win32_libid_type="x86 DLL"
28084642e01fSmrg    ;;
28094642e01fSmrg  *executable*) # but shell scripts are "executable" too...
28104642e01fSmrg    case $win32_fileres in
28114642e01fSmrg    *MS\ Windows\ PE\ Intel*)
28124642e01fSmrg      win32_libid_type="x86 DLL"
28134642e01fSmrg      ;;
28144642e01fSmrg    esac
28154642e01fSmrg    ;;
28164642e01fSmrg  esac
28174642e01fSmrg  $ECHO "$win32_libid_type"
28184642e01fSmrg}
281905b261ecSmrg
282005b261ecSmrg
282105b261ecSmrg
28224642e01fSmrg# func_extract_an_archive dir oldlib
28234642e01fSmrgfunc_extract_an_archive ()
28244642e01fSmrg{
28254642e01fSmrg    $opt_debug
28264642e01fSmrg    f_ex_an_ar_dir="$1"; shift
28274642e01fSmrg    f_ex_an_ar_oldlib="$1"
28286747b715Smrg    if test "$lock_old_archive_extraction" = yes; then
28296747b715Smrg      lockfile=$f_ex_an_ar_oldlib.lock
28306747b715Smrg      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
28316747b715Smrg	func_echo "Waiting for $lockfile to be removed"
28326747b715Smrg	sleep 2
28336747b715Smrg      done
28346747b715Smrg    fi
28356747b715Smrg    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
28366747b715Smrg		   'stat=$?; rm -f "$lockfile"; exit $stat'
28376747b715Smrg    if test "$lock_old_archive_extraction" = yes; then
28386747b715Smrg      $opt_dry_run || rm -f "$lockfile"
28396747b715Smrg    fi
28404642e01fSmrg    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
28414642e01fSmrg     :
28424642e01fSmrg    else
28434642e01fSmrg      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
28444642e01fSmrg    fi
28454642e01fSmrg}
284605b261ecSmrg
284705b261ecSmrg
28484642e01fSmrg# func_extract_archives gentop oldlib ...
28494642e01fSmrgfunc_extract_archives ()
28504642e01fSmrg{
28514642e01fSmrg    $opt_debug
28524642e01fSmrg    my_gentop="$1"; shift
28534642e01fSmrg    my_oldlibs=${1+"$@"}
28544642e01fSmrg    my_oldobjs=""
28554642e01fSmrg    my_xlib=""
28564642e01fSmrg    my_xabs=""
28574642e01fSmrg    my_xdir=""
285805b261ecSmrg
28594642e01fSmrg    for my_xlib in $my_oldlibs; do
28604642e01fSmrg      # Extract the objects.
28614642e01fSmrg      case $my_xlib in
28624642e01fSmrg	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
28634642e01fSmrg	*) my_xabs=`pwd`"/$my_xlib" ;;
28644642e01fSmrg      esac
28654642e01fSmrg      func_basename "$my_xlib"
28664642e01fSmrg      my_xlib="$func_basename_result"
28674642e01fSmrg      my_xlib_u=$my_xlib
28684642e01fSmrg      while :; do
28694642e01fSmrg        case " $extracted_archives " in
28704642e01fSmrg	*" $my_xlib_u "*)
28714642e01fSmrg	  func_arith $extracted_serial + 1
28724642e01fSmrg	  extracted_serial=$func_arith_result
28734642e01fSmrg	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
28744642e01fSmrg	*) break ;;
28754642e01fSmrg	esac
28764642e01fSmrg      done
28774642e01fSmrg      extracted_archives="$extracted_archives $my_xlib_u"
28784642e01fSmrg      my_xdir="$my_gentop/$my_xlib_u"
287905b261ecSmrg
28804642e01fSmrg      func_mkdir_p "$my_xdir"
288105b261ecSmrg
28824642e01fSmrg      case $host in
28834642e01fSmrg      *-darwin*)
28844642e01fSmrg	func_verbose "Extracting $my_xabs"
28854642e01fSmrg	# Do not bother doing anything if just a dry run
28864642e01fSmrg	$opt_dry_run || {
28874642e01fSmrg	  darwin_orig_dir=`pwd`
28884642e01fSmrg	  cd $my_xdir || exit $?
28894642e01fSmrg	  darwin_archive=$my_xabs
28904642e01fSmrg	  darwin_curdir=`pwd`
28914642e01fSmrg	  darwin_base_archive=`basename "$darwin_archive"`
28924642e01fSmrg	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
28934642e01fSmrg	  if test -n "$darwin_arches"; then
28944642e01fSmrg	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
28954642e01fSmrg	    darwin_arch=
28964642e01fSmrg	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
28974642e01fSmrg	    for darwin_arch in  $darwin_arches ; do
28984642e01fSmrg	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
28994642e01fSmrg	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
29004642e01fSmrg	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
29014642e01fSmrg	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
29024642e01fSmrg	      cd "$darwin_curdir"
29034642e01fSmrg	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
29044642e01fSmrg	    done # $darwin_arches
29054642e01fSmrg            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
29064642e01fSmrg	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
29074642e01fSmrg	    darwin_file=
29084642e01fSmrg	    darwin_files=
29094642e01fSmrg	    for darwin_file in $darwin_filelist; do
29106747b715Smrg	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
29114642e01fSmrg	      $LIPO -create -output "$darwin_file" $darwin_files
29124642e01fSmrg	    done # $darwin_filelist
29134642e01fSmrg	    $RM -rf unfat-$$
29144642e01fSmrg	    cd "$darwin_orig_dir"
291505b261ecSmrg	  else
29164642e01fSmrg	    cd $darwin_orig_dir
29174642e01fSmrg	    func_extract_an_archive "$my_xdir" "$my_xabs"
29184642e01fSmrg	  fi # $darwin_arches
29194642e01fSmrg	} # !$opt_dry_run
29204642e01fSmrg	;;
29214642e01fSmrg      *)
29224642e01fSmrg        func_extract_an_archive "$my_xdir" "$my_xabs"
29234642e01fSmrg	;;
29244642e01fSmrg      esac
29256747b715Smrg      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
29264642e01fSmrg    done
292705b261ecSmrg
29284642e01fSmrg    func_extract_archives_result="$my_oldobjs"
29294642e01fSmrg}
293005b261ecSmrg
293105b261ecSmrg
29326747b715Smrg# func_emit_wrapper [arg=no]
29336747b715Smrg#
29346747b715Smrg# Emit a libtool wrapper script on stdout.
29356747b715Smrg# Don't directly open a file because we may want to
29366747b715Smrg# incorporate the script contents within a cygwin/mingw
29376747b715Smrg# wrapper executable.  Must ONLY be called from within
29386747b715Smrg# func_mode_link because it depends on a number of variables
29396747b715Smrg# set therein.
29404642e01fSmrg#
29416747b715Smrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
29426747b715Smrg# variable will take.  If 'yes', then the emitted script
29436747b715Smrg# will assume that the directory in which it is stored is
29446747b715Smrg# the $objdir directory.  This is a cygwin/mingw-specific
29456747b715Smrg# behavior.
29466747b715Smrgfunc_emit_wrapper ()
29474642e01fSmrg{
29486747b715Smrg	func_emit_wrapper_arg1=${1-no}
294905b261ecSmrg
29504642e01fSmrg	$ECHO "\
29514642e01fSmrg#! $SHELL
295205b261ecSmrg
29534642e01fSmrg# $output - temporary wrapper script for $objdir/$outputname
29544642e01fSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
29554642e01fSmrg#
29564642e01fSmrg# The $output program cannot be directly executed until all the libtool
29574642e01fSmrg# libraries that it depends on are installed.
29584642e01fSmrg#
29594642e01fSmrg# This wrapper script should never be moved out of the build directory.
29604642e01fSmrg# If it is, it will not operate correctly.
296105b261ecSmrg
29624642e01fSmrg# Sed substitution that helps us do robust quoting.  It backslashifies
29634642e01fSmrg# metacharacters that are still active within double-quoted strings.
29644642e01fSmrgsed_quote_subst='$sed_quote_subst'
296505b261ecSmrg
29664642e01fSmrg# Be Bourne compatible
29674642e01fSmrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
29684642e01fSmrg  emulate sh
29694642e01fSmrg  NULLCMD=:
29704642e01fSmrg  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
29714642e01fSmrg  # is contrary to our usage.  Disable this feature.
29724642e01fSmrg  alias -g '\${1+\"\$@\"}'='\"\$@\"'
29734642e01fSmrg  setopt NO_GLOB_SUBST
29744642e01fSmrgelse
29754642e01fSmrg  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
29764642e01fSmrgfi
29774642e01fSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
29784642e01fSmrgDUALCASE=1; export DUALCASE # for MKS sh
297905b261ecSmrg
29804642e01fSmrg# The HP-UX ksh and POSIX shell print the target directory to stdout
29814642e01fSmrg# if CDPATH is set.
29824642e01fSmrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
298305b261ecSmrg
29844642e01fSmrgrelink_command=\"$relink_command\"
298505b261ecSmrg
29864642e01fSmrg# This environment variable determines our operation mode.
29874642e01fSmrgif test \"\$libtool_install_magic\" = \"$magic\"; then
29884642e01fSmrg  # install mode needs the following variables:
29894642e01fSmrg  generated_by_libtool_version='$macro_version'
29904642e01fSmrg  notinst_deplibs='$notinst_deplibs'
29914642e01fSmrgelse
29924642e01fSmrg  # When we are sourced in execute mode, \$file and \$ECHO are already set.
29934642e01fSmrg  if test \"\$libtool_execute_magic\" != \"$magic\"; then
29946747b715Smrg    file=\"\$0\""
29956747b715Smrg
29966747b715Smrg    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
29976747b715Smrg    $ECHO "\
29986747b715Smrg
29996747b715Smrg# A function that is used when there is no print builtin or printf.
30006747b715Smrgfunc_fallback_echo ()
30016747b715Smrg{
30026747b715Smrg  eval 'cat <<_LTECHO_EOF
30036747b715Smrg\$1
30046747b715Smrg_LTECHO_EOF'
30056747b715Smrg}
30066747b715Smrg    ECHO=\"$qECHO\"
30076747b715Smrg  fi
30086747b715Smrg
30096747b715Smrg# Very basic option parsing. These options are (a) specific to
30106747b715Smrg# the libtool wrapper, (b) are identical between the wrapper
30116747b715Smrg# /script/ and the wrapper /executable/ which is used only on
30126747b715Smrg# windows platforms, and (c) all begin with the string "--lt-"
30136747b715Smrg# (application programs are unlikely to have options which match
30146747b715Smrg# this pattern).
30156747b715Smrg#
30166747b715Smrg# There are only two supported options: --lt-debug and
30176747b715Smrg# --lt-dump-script. There is, deliberately, no --lt-help.
30186747b715Smrg#
30196747b715Smrg# The first argument to this parsing function should be the
30206747b715Smrg# script's $0 value, followed by "$@".
30216747b715Smrglt_option_debug=
30226747b715Smrgfunc_parse_lt_options ()
30236747b715Smrg{
30246747b715Smrg  lt_script_arg0=\$0
30256747b715Smrg  shift
30266747b715Smrg  for lt_opt
30276747b715Smrg  do
30286747b715Smrg    case \"\$lt_opt\" in
30296747b715Smrg    --lt-debug) lt_option_debug=1 ;;
30306747b715Smrg    --lt-dump-script)
30316747b715Smrg        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
30326747b715Smrg        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
30336747b715Smrg        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
30346747b715Smrg        cat \"\$lt_dump_D/\$lt_dump_F\"
30356747b715Smrg        exit 0
30366747b715Smrg      ;;
30376747b715Smrg    --lt-*)
30386747b715Smrg        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
30396747b715Smrg        exit 1
30406747b715Smrg      ;;
30416747b715Smrg    esac
30426747b715Smrg  done
30436747b715Smrg
30446747b715Smrg  # Print the debug banner immediately:
30456747b715Smrg  if test -n \"\$lt_option_debug\"; then
30466747b715Smrg    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
30476747b715Smrg  fi
30486747b715Smrg}
30496747b715Smrg
30506747b715Smrg# Used when --lt-debug. Prints its arguments to stdout
30516747b715Smrg# (redirection is the responsibility of the caller)
30526747b715Smrgfunc_lt_dump_args ()
30536747b715Smrg{
30546747b715Smrg  lt_dump_args_N=1;
30556747b715Smrg  for lt_arg
30566747b715Smrg  do
30576747b715Smrg    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
30586747b715Smrg    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
30596747b715Smrg  done
30606747b715Smrg}
30616747b715Smrg
30626747b715Smrg# Core function for launching the target application
30636747b715Smrgfunc_exec_program_core ()
30646747b715Smrg{
30654642e01fSmrg"
30666747b715Smrg  case $host in
30676747b715Smrg  # Backslashes separate directories on plain windows
30686747b715Smrg  *-*-mingw | *-*-os2* | *-cegcc*)
30696747b715Smrg    $ECHO "\
30706747b715Smrg      if test -n \"\$lt_option_debug\"; then
30716747b715Smrg        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
30726747b715Smrg        func_lt_dump_args \${1+\"\$@\"} 1>&2
30736747b715Smrg      fi
30746747b715Smrg      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
30756747b715Smrg"
30766747b715Smrg    ;;
30776747b715Smrg
30786747b715Smrg  *)
30796747b715Smrg    $ECHO "\
30806747b715Smrg      if test -n \"\$lt_option_debug\"; then
30816747b715Smrg        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
30826747b715Smrg        func_lt_dump_args \${1+\"\$@\"} 1>&2
30836747b715Smrg      fi
30846747b715Smrg      exec \"\$progdir/\$program\" \${1+\"\$@\"}
30856747b715Smrg"
30866747b715Smrg    ;;
30876747b715Smrg  esac
30886747b715Smrg  $ECHO "\
30896747b715Smrg      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
30906747b715Smrg      exit 1
30916747b715Smrg}
30926747b715Smrg
30936747b715Smrg# A function to encapsulate launching the target application
30946747b715Smrg# Strips options in the --lt-* namespace from \$@ and
30956747b715Smrg# launches target application with the remaining arguments.
30966747b715Smrgfunc_exec_program ()
30976747b715Smrg{
30986747b715Smrg  for lt_wr_arg
30996747b715Smrg  do
31006747b715Smrg    case \$lt_wr_arg in
31016747b715Smrg    --lt-*) ;;
31026747b715Smrg    *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
31036747b715Smrg    esac
31046747b715Smrg    shift
31056747b715Smrg  done
31066747b715Smrg  func_exec_program_core \${1+\"\$@\"}
31076747b715Smrg}
31086747b715Smrg
31096747b715Smrg  # Parse options
31106747b715Smrg  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
311105b261ecSmrg
31124642e01fSmrg  # Find the directory that this script lives in.
31136747b715Smrg  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
31144642e01fSmrg  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
311505b261ecSmrg
31164642e01fSmrg  # Follow symbolic links until we get to the real thisdir.
31176747b715Smrg  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
31184642e01fSmrg  while test -n \"\$file\"; do
31196747b715Smrg    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
312005b261ecSmrg
31214642e01fSmrg    # If there was a directory component, then change thisdir.
31224642e01fSmrg    if test \"x\$destdir\" != \"x\$file\"; then
31234642e01fSmrg      case \"\$destdir\" in
31244642e01fSmrg      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
31254642e01fSmrg      *) thisdir=\"\$thisdir/\$destdir\" ;;
312605b261ecSmrg      esac
31274642e01fSmrg    fi
312805b261ecSmrg
31296747b715Smrg    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
31306747b715Smrg    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
31314642e01fSmrg  done
313205b261ecSmrg
31334642e01fSmrg  # Usually 'no', except on cygwin/mingw when embedded into
31344642e01fSmrg  # the cwrapper.
31356747b715Smrg  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
31364642e01fSmrg  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
31374642e01fSmrg    # special case for '.'
31384642e01fSmrg    if test \"\$thisdir\" = \".\"; then
31394642e01fSmrg      thisdir=\`pwd\`
31404642e01fSmrg    fi
31414642e01fSmrg    # remove .libs from thisdir
31424642e01fSmrg    case \"\$thisdir\" in
31436747b715Smrg    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
31444642e01fSmrg    $objdir )   thisdir=. ;;
31454642e01fSmrg    esac
31464642e01fSmrg  fi
31474642e01fSmrg
31484642e01fSmrg  # Try to get the absolute directory name.
31494642e01fSmrg  absdir=\`cd \"\$thisdir\" && pwd\`
31504642e01fSmrg  test -n \"\$absdir\" && thisdir=\"\$absdir\"
31514642e01fSmrg"
31524642e01fSmrg
31534642e01fSmrg	if test "$fast_install" = yes; then
31544642e01fSmrg	  $ECHO "\
31554642e01fSmrg  program=lt-'$outputname'$exeext
31564642e01fSmrg  progdir=\"\$thisdir/$objdir\"
31574642e01fSmrg
31584642e01fSmrg  if test ! -f \"\$progdir/\$program\" ||
31594642e01fSmrg     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
31604642e01fSmrg       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
31614642e01fSmrg
31624642e01fSmrg    file=\"\$\$-\$program\"
31634642e01fSmrg
31644642e01fSmrg    if test ! -d \"\$progdir\"; then
31654642e01fSmrg      $MKDIR \"\$progdir\"
31664642e01fSmrg    else
31674642e01fSmrg      $RM \"\$progdir/\$file\"
31684642e01fSmrg    fi"
31694642e01fSmrg
31704642e01fSmrg	  $ECHO "\
31714642e01fSmrg
31724642e01fSmrg    # relink executable if necessary
31734642e01fSmrg    if test -n \"\$relink_command\"; then
31744642e01fSmrg      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
31754642e01fSmrg      else
31764642e01fSmrg	$ECHO \"\$relink_command_output\" >&2
31774642e01fSmrg	$RM \"\$progdir/\$file\"
31784642e01fSmrg	exit 1
317905b261ecSmrg      fi
31804642e01fSmrg    fi
318105b261ecSmrg
31824642e01fSmrg    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
31834642e01fSmrg    { $RM \"\$progdir/\$program\";
31844642e01fSmrg      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
31854642e01fSmrg    $RM \"\$progdir/\$file\"
31864642e01fSmrg  fi"
31874642e01fSmrg	else
31884642e01fSmrg	  $ECHO "\
31894642e01fSmrg  program='$outputname'
31904642e01fSmrg  progdir=\"\$thisdir/$objdir\"
31914642e01fSmrg"
319205b261ecSmrg	fi
319305b261ecSmrg
31944642e01fSmrg	$ECHO "\
319505b261ecSmrg
31964642e01fSmrg  if test -f \"\$progdir/\$program\"; then"
319705b261ecSmrg
31984642e01fSmrg	# Export our shlibpath_var if we have one.
31994642e01fSmrg	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
32004642e01fSmrg	  $ECHO "\
32014642e01fSmrg    # Add our own library path to $shlibpath_var
32024642e01fSmrg    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
320305b261ecSmrg
32044642e01fSmrg    # Some systems cannot cope with colon-terminated $shlibpath_var
32054642e01fSmrg    # The second colon is a workaround for a bug in BeOS R4 sed
32066747b715Smrg    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
32074642e01fSmrg
32084642e01fSmrg    export $shlibpath_var
32094642e01fSmrg"
321005b261ecSmrg	fi
321105b261ecSmrg
3212475c125cSmrg	# fixup the dll searchpath if we need to.
3213475c125cSmrg	if test -n "$dllsearchpath"; then
3214475c125cSmrg	  $ECHO "\
3215475c125cSmrg    # Add the dll search path components to the executable PATH
3216475c125cSmrg    PATH=$dllsearchpath:\$PATH
3217475c125cSmrg"
3218475c125cSmrg	fi
3219475c125cSmrg
32204642e01fSmrg	$ECHO "\
32214642e01fSmrg    if test \"\$libtool_execute_magic\" != \"$magic\"; then
32224642e01fSmrg      # Run the actual program with our arguments.
32236747b715Smrg      func_exec_program \${1+\"\$@\"}
32244642e01fSmrg    fi
32254642e01fSmrg  else
32264642e01fSmrg    # The program doesn't exist.
32274642e01fSmrg    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
32284642e01fSmrg    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
32296747b715Smrg    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
32304642e01fSmrg    exit 1
32314642e01fSmrg  fi
32324642e01fSmrgfi\
32334642e01fSmrg"
32344642e01fSmrg}
323505b261ecSmrg
323605b261ecSmrg
3237475c125cSmrg# func_to_host_path arg
3238475c125cSmrg#
3239475c125cSmrg# Convert paths to host format when used with build tools.
3240475c125cSmrg# Intended for use with "native" mingw (where libtool itself
3241475c125cSmrg# is running under the msys shell), or in the following cross-
3242475c125cSmrg# build environments:
3243475c125cSmrg#    $build          $host
3244475c125cSmrg#    mingw (msys)    mingw  [e.g. native]
3245475c125cSmrg#    cygwin          mingw
3246475c125cSmrg#    *nix + wine     mingw
3247475c125cSmrg# where wine is equipped with the `winepath' executable.
3248475c125cSmrg# In the native mingw case, the (msys) shell automatically
3249475c125cSmrg# converts paths for any non-msys applications it launches,
3250475c125cSmrg# but that facility isn't available from inside the cwrapper.
3251475c125cSmrg# Similar accommodations are necessary for $host mingw and
3252475c125cSmrg# $build cygwin.  Calling this function does no harm for other
3253475c125cSmrg# $host/$build combinations not listed above.
3254475c125cSmrg#
3255475c125cSmrg# ARG is the path (on $build) that should be converted to
3256475c125cSmrg# the proper representation for $host. The result is stored
3257475c125cSmrg# in $func_to_host_path_result.
3258475c125cSmrgfunc_to_host_path ()
3259475c125cSmrg{
3260475c125cSmrg  func_to_host_path_result="$1"
3261475c125cSmrg  if test -n "$1"; then
3262475c125cSmrg    case $host in
3263475c125cSmrg      *mingw* )
3264475c125cSmrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
3265475c125cSmrg        case $build in
3266475c125cSmrg          *mingw* ) # actually, msys
3267475c125cSmrg            # awkward: cmd appends spaces to result
3268475c125cSmrg            func_to_host_path_result=`( cmd //c echo "$1" ) 2>/dev/null |
3269475c125cSmrg              $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
3270475c125cSmrg            ;;
3271475c125cSmrg          *cygwin* )
3272475c125cSmrg            func_to_host_path_result=`cygpath -w "$1" |
3273475c125cSmrg	      $SED -e "$lt_sed_naive_backslashify"`
3274475c125cSmrg            ;;
3275475c125cSmrg          * )
3276475c125cSmrg            # Unfortunately, winepath does not exit with a non-zero
3277475c125cSmrg            # error code, so we are forced to check the contents of
3278475c125cSmrg            # stdout. On the other hand, if the command is not
3279475c125cSmrg            # found, the shell will set an exit code of 127 and print
3280475c125cSmrg            # *an error message* to stdout. So we must check for both
3281475c125cSmrg            # error code of zero AND non-empty stdout, which explains
3282475c125cSmrg            # the odd construction:
3283475c125cSmrg            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
3284475c125cSmrg            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
3285475c125cSmrg              func_to_host_path_result=`$ECHO "$func_to_host_path_tmp1" |
3286475c125cSmrg                $SED -e "$lt_sed_naive_backslashify"`
3287475c125cSmrg            else
3288475c125cSmrg              # Allow warning below.
3289475c125cSmrg              func_to_host_path_result=
3290475c125cSmrg            fi
3291475c125cSmrg            ;;
3292475c125cSmrg        esac
3293475c125cSmrg        if test -z "$func_to_host_path_result" ; then
3294475c125cSmrg          func_error "Could not determine host path corresponding to"
3295475c125cSmrg          func_error "  \`$1'"
3296475c125cSmrg          func_error "Continuing, but uninstalled executables may not work."
3297475c125cSmrg          # Fallback:
3298475c125cSmrg          func_to_host_path_result="$1"
3299475c125cSmrg        fi
3300475c125cSmrg        ;;
3301475c125cSmrg    esac
3302475c125cSmrg  fi
3303475c125cSmrg}
3304475c125cSmrg# end: func_to_host_path
3305475c125cSmrg
3306475c125cSmrg# func_to_host_pathlist arg
3307475c125cSmrg#
3308475c125cSmrg# Convert pathlists to host format when used with build tools.
3309475c125cSmrg# See func_to_host_path(), above. This function supports the
3310475c125cSmrg# following $build/$host combinations (but does no harm for
3311475c125cSmrg# combinations not listed here):
3312475c125cSmrg#    $build          $host
3313475c125cSmrg#    mingw (msys)    mingw  [e.g. native]
3314475c125cSmrg#    cygwin          mingw
3315475c125cSmrg#    *nix + wine     mingw
3316475c125cSmrg#
3317475c125cSmrg# Path separators are also converted from $build format to
3318475c125cSmrg# $host format. If ARG begins or ends with a path separator
3319475c125cSmrg# character, it is preserved (but converted to $host format)
3320475c125cSmrg# on output.
3321475c125cSmrg#
3322475c125cSmrg# ARG is a pathlist (on $build) that should be converted to
3323475c125cSmrg# the proper representation on $host. The result is stored
3324475c125cSmrg# in $func_to_host_pathlist_result.
3325475c125cSmrgfunc_to_host_pathlist ()
3326475c125cSmrg{
3327475c125cSmrg  func_to_host_pathlist_result="$1"
3328475c125cSmrg  if test -n "$1"; then
3329475c125cSmrg    case $host in
3330475c125cSmrg      *mingw* )
3331475c125cSmrg        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
3332475c125cSmrg        # Remove leading and trailing path separator characters from
3333475c125cSmrg        # ARG. msys behavior is inconsistent here, cygpath turns them
3334475c125cSmrg        # into '.;' and ';.', and winepath ignores them completely.
3335475c125cSmrg	func_stripname : : "$1"
3336475c125cSmrg        func_to_host_pathlist_tmp1=$func_stripname_result
3337475c125cSmrg        case $build in
3338475c125cSmrg          *mingw* ) # Actually, msys.
3339475c125cSmrg            # Awkward: cmd appends spaces to result.
3340475c125cSmrg            func_to_host_pathlist_result=`
3341475c125cSmrg	      ( cmd //c echo "$func_to_host_pathlist_tmp1" ) 2>/dev/null |
3342475c125cSmrg	      $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
3343475c125cSmrg            ;;
3344475c125cSmrg          *cygwin* )
3345475c125cSmrg            func_to_host_pathlist_result=`cygpath -w -p "$func_to_host_pathlist_tmp1" |
3346475c125cSmrg              $SED -e "$lt_sed_naive_backslashify"`
3347475c125cSmrg            ;;
3348475c125cSmrg          * )
3349475c125cSmrg            # unfortunately, winepath doesn't convert pathlists
3350475c125cSmrg            func_to_host_pathlist_result=""
3351475c125cSmrg            func_to_host_pathlist_oldIFS=$IFS
3352475c125cSmrg            IFS=:
3353475c125cSmrg            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
3354475c125cSmrg              IFS=$func_to_host_pathlist_oldIFS
3355475c125cSmrg              if test -n "$func_to_host_pathlist_f" ; then
3356475c125cSmrg                func_to_host_path "$func_to_host_pathlist_f"
3357475c125cSmrg                if test -n "$func_to_host_path_result" ; then
3358475c125cSmrg                  if test -z "$func_to_host_pathlist_result" ; then
3359475c125cSmrg                    func_to_host_pathlist_result="$func_to_host_path_result"
3360475c125cSmrg                  else
3361475c125cSmrg                    func_append func_to_host_pathlist_result ";$func_to_host_path_result"
3362475c125cSmrg                  fi
3363475c125cSmrg                fi
3364475c125cSmrg              fi
3365475c125cSmrg            done
3366475c125cSmrg            IFS=$func_to_host_pathlist_oldIFS
3367475c125cSmrg            ;;
3368475c125cSmrg        esac
3369475c125cSmrg        if test -z "$func_to_host_pathlist_result"; then
3370475c125cSmrg          func_error "Could not determine the host path(s) corresponding to"
3371475c125cSmrg          func_error "  \`$1'"
3372475c125cSmrg          func_error "Continuing, but uninstalled executables may not work."
3373475c125cSmrg          # Fallback. This may break if $1 contains DOS-style drive
3374475c125cSmrg          # specifications. The fix is not to complicate the expression
3375475c125cSmrg          # below, but for the user to provide a working wine installation
3376475c125cSmrg          # with winepath so that path translation in the cross-to-mingw
3377475c125cSmrg          # case works properly.
3378475c125cSmrg          lt_replace_pathsep_nix_to_dos="s|:|;|g"
3379475c125cSmrg          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
3380475c125cSmrg            $SED -e "$lt_replace_pathsep_nix_to_dos"`
3381475c125cSmrg        fi
3382475c125cSmrg        # Now, add the leading and trailing path separators back
3383475c125cSmrg        case "$1" in
3384475c125cSmrg          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
3385475c125cSmrg            ;;
3386475c125cSmrg        esac
3387475c125cSmrg        case "$1" in
3388475c125cSmrg          *: ) func_append func_to_host_pathlist_result ";"
3389475c125cSmrg            ;;
3390475c125cSmrg        esac
3391475c125cSmrg        ;;
3392475c125cSmrg    esac
3393475c125cSmrg  fi
3394475c125cSmrg}
3395475c125cSmrg# end: func_to_host_pathlist
3396475c125cSmrg
33974642e01fSmrg# func_emit_cwrapperexe_src
33984642e01fSmrg# emit the source code for a wrapper executable on stdout
33994642e01fSmrg# Must ONLY be called from within func_mode_link because
34004642e01fSmrg# it depends on a number of variable set therein.
34014642e01fSmrgfunc_emit_cwrapperexe_src ()
34024642e01fSmrg{
34034642e01fSmrg	cat <<EOF
340405b261ecSmrg
34054642e01fSmrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
34064642e01fSmrg   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
340705b261ecSmrg
34084642e01fSmrg   The $output program cannot be directly executed until all the libtool
34094642e01fSmrg   libraries that it depends on are installed.
341005b261ecSmrg
34114642e01fSmrg   This wrapper executable should never be moved out of the build directory.
34124642e01fSmrg   If it is, it will not operate correctly.
34134642e01fSmrg*/
34144642e01fSmrgEOF
34154642e01fSmrg	    cat <<"EOF"
34166747b715Smrg#ifdef _MSC_VER
34176747b715Smrg# define _CRT_SECURE_NO_DEPRECATE 1
34186747b715Smrg#endif
34194642e01fSmrg#include <stdio.h>
34204642e01fSmrg#include <stdlib.h>
34214642e01fSmrg#ifdef _MSC_VER
34224642e01fSmrg# include <direct.h>
34234642e01fSmrg# include <process.h>
34244642e01fSmrg# include <io.h>
34254642e01fSmrg#else
34264642e01fSmrg# include <unistd.h>
34274642e01fSmrg# include <stdint.h>
34284642e01fSmrg# ifdef __CYGWIN__
34294642e01fSmrg#  include <io.h>
34306747b715Smrg# endif
34316747b715Smrg#endif
34326747b715Smrg#include <malloc.h>
34336747b715Smrg#include <stdarg.h>
34346747b715Smrg#include <assert.h>
34356747b715Smrg#include <string.h>
34366747b715Smrg#include <ctype.h>
34376747b715Smrg#include <errno.h>
34386747b715Smrg#include <fcntl.h>
34396747b715Smrg#include <sys/stat.h>
34406747b715Smrg
34416747b715Smrg/* declarations of non-ANSI functions */
34426747b715Smrg#if defined(__MINGW32__)
34436747b715Smrg# ifdef __STRICT_ANSI__
34446747b715Smrgint _putenv (const char *);
34456747b715Smrg# endif
34466747b715Smrg#elif defined(__CYGWIN__)
34476747b715Smrg# ifdef __STRICT_ANSI__
34484642e01fSmrgchar *realpath (const char *, char *);
34494642e01fSmrgint putenv (char *);
34504642e01fSmrgint setenv (const char *, const char *, int);
34514642e01fSmrg# endif
34526747b715Smrg/* #elif defined (other platforms) ... */
34536747b715Smrg#endif
34546747b715Smrg
34556747b715Smrg/* portability defines, excluding path handling macros */
34566747b715Smrg#if defined(_MSC_VER)
34576747b715Smrg# define setmode _setmode
34586747b715Smrg# define stat    _stat
34596747b715Smrg# define chmod   _chmod
34606747b715Smrg# define getcwd  _getcwd
34616747b715Smrg# define putenv  _putenv
34626747b715Smrg# define S_IXUSR _S_IEXEC
34636747b715Smrg# ifndef _INTPTR_T_DEFINED
34646747b715Smrg#  define _INTPTR_T_DEFINED
34656747b715Smrg#  define intptr_t int
34666747b715Smrg# endif
34676747b715Smrg#elif defined(__MINGW32__)
34686747b715Smrg# define setmode _setmode
34696747b715Smrg# define stat    _stat
34706747b715Smrg# define chmod   _chmod
34716747b715Smrg# define getcwd  _getcwd
34726747b715Smrg# define putenv  _putenv
34736747b715Smrg#elif defined(__CYGWIN__)
34746747b715Smrg# define HAVE_SETENV
34756747b715Smrg# define FOPEN_WB "wb"
34766747b715Smrg/* #elif defined (other platforms) ... */
34774642e01fSmrg#endif
347805b261ecSmrg
34794642e01fSmrg#if defined(PATH_MAX)
34804642e01fSmrg# define LT_PATHMAX PATH_MAX
34814642e01fSmrg#elif defined(MAXPATHLEN)
34824642e01fSmrg# define LT_PATHMAX MAXPATHLEN
34834642e01fSmrg#else
34844642e01fSmrg# define LT_PATHMAX 1024
34854642e01fSmrg#endif
348605b261ecSmrg
34874642e01fSmrg#ifndef S_IXOTH
34884642e01fSmrg# define S_IXOTH 0
34894642e01fSmrg#endif
34904642e01fSmrg#ifndef S_IXGRP
34914642e01fSmrg# define S_IXGRP 0
34924642e01fSmrg#endif
349305b261ecSmrg
34946747b715Smrg/* path handling portability macros */
34954642e01fSmrg#ifndef DIR_SEPARATOR
34964642e01fSmrg# define DIR_SEPARATOR '/'
34974642e01fSmrg# define PATH_SEPARATOR ':'
34984642e01fSmrg#endif
349905b261ecSmrg
35004642e01fSmrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
35014642e01fSmrg  defined (__OS2__)
35024642e01fSmrg# define HAVE_DOS_BASED_FILE_SYSTEM
35034642e01fSmrg# define FOPEN_WB "wb"
35044642e01fSmrg# ifndef DIR_SEPARATOR_2
35054642e01fSmrg#  define DIR_SEPARATOR_2 '\\'
35064642e01fSmrg# endif
35074642e01fSmrg# ifndef PATH_SEPARATOR_2
35084642e01fSmrg#  define PATH_SEPARATOR_2 ';'
35094642e01fSmrg# endif
35104642e01fSmrg#endif
351105b261ecSmrg
35124642e01fSmrg#ifndef DIR_SEPARATOR_2
35134642e01fSmrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
35144642e01fSmrg#else /* DIR_SEPARATOR_2 */
35154642e01fSmrg# define IS_DIR_SEPARATOR(ch) \
35164642e01fSmrg	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
35174642e01fSmrg#endif /* DIR_SEPARATOR_2 */
351805b261ecSmrg
35194642e01fSmrg#ifndef PATH_SEPARATOR_2
35204642e01fSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
35214642e01fSmrg#else /* PATH_SEPARATOR_2 */
35224642e01fSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
35234642e01fSmrg#endif /* PATH_SEPARATOR_2 */
352405b261ecSmrg
35254642e01fSmrg#ifndef FOPEN_WB
35264642e01fSmrg# define FOPEN_WB "w"
35274642e01fSmrg#endif
35284642e01fSmrg#ifndef _O_BINARY
35294642e01fSmrg# define _O_BINARY 0
35304642e01fSmrg#endif
353105b261ecSmrg
35324642e01fSmrg#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
35334642e01fSmrg#define XFREE(stale) do { \
35344642e01fSmrg  if (stale) { free ((void *) stale); stale = 0; } \
35354642e01fSmrg} while (0)
353605b261ecSmrg
35376747b715Smrg#if defined(LT_DEBUGWRAPPER)
35386747b715Smrgstatic int lt_debug = 1;
35394642e01fSmrg#else
35406747b715Smrgstatic int lt_debug = 0;
35414642e01fSmrg#endif
354205b261ecSmrg
35436747b715Smrgconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
354405b261ecSmrg
35454642e01fSmrgvoid *xmalloc (size_t num);
35464642e01fSmrgchar *xstrdup (const char *string);
35474642e01fSmrgconst char *base_name (const char *name);
35484642e01fSmrgchar *find_executable (const char *wrapper);
35494642e01fSmrgchar *chase_symlinks (const char *pathspec);
35504642e01fSmrgint make_executable (const char *path);
35514642e01fSmrgint check_executable (const char *path);
35524642e01fSmrgchar *strendzap (char *str, const char *pat);
35536747b715Smrgvoid lt_debugprintf (const char *file, int line, const char *fmt, ...);
35546747b715Smrgvoid lt_fatal (const char *file, int line, const char *message, ...);
35556747b715Smrgstatic const char *nonnull (const char *s);
35566747b715Smrgstatic const char *nonempty (const char *s);
35574642e01fSmrgvoid lt_setenv (const char *name, const char *value);
35584642e01fSmrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
35594642e01fSmrgvoid lt_update_exe_path (const char *name, const char *value);
35604642e01fSmrgvoid lt_update_lib_path (const char *name, const char *value);
35616747b715Smrgchar **prepare_spawn (char **argv);
35626747b715Smrgvoid lt_dump_script (FILE *f);
35634642e01fSmrgEOF
35644642e01fSmrg
35654642e01fSmrg	    cat <<EOF
3566475c125cSmrgconst char * MAGIC_EXE = "$magic_exe";
35674642e01fSmrgconst char * LIB_PATH_VARNAME = "$shlibpath_var";
35684642e01fSmrgEOF
356905b261ecSmrg
35704642e01fSmrg	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
3571475c125cSmrg              func_to_host_pathlist "$temp_rpath"
35724642e01fSmrg	      cat <<EOF
3573475c125cSmrgconst char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
35744642e01fSmrgEOF
35754642e01fSmrg	    else
35764642e01fSmrg	      cat <<"EOF"
35774642e01fSmrgconst char * LIB_PATH_VALUE   = "";
35784642e01fSmrgEOF
357905b261ecSmrg	    fi
358005b261ecSmrg
35814642e01fSmrg	    if test -n "$dllsearchpath"; then
3582475c125cSmrg              func_to_host_pathlist "$dllsearchpath:"
35834642e01fSmrg	      cat <<EOF
35844642e01fSmrgconst char * EXE_PATH_VARNAME = "PATH";
3585475c125cSmrgconst char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
358605b261ecSmrgEOF
358705b261ecSmrg	    else
35884642e01fSmrg	      cat <<"EOF"
35894642e01fSmrgconst char * EXE_PATH_VARNAME = "";
35904642e01fSmrgconst char * EXE_PATH_VALUE   = "";
35914642e01fSmrgEOF
359205b261ecSmrg	    fi
35934642e01fSmrg
35944642e01fSmrg	    if test "$fast_install" = yes; then
35954642e01fSmrg	      cat <<EOF
35964642e01fSmrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
35974642e01fSmrgEOF
359805b261ecSmrg	    else
35994642e01fSmrg	      cat <<EOF
36004642e01fSmrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
36014642e01fSmrgEOF
360205b261ecSmrg	    fi
360305b261ecSmrg
360405b261ecSmrg
36054642e01fSmrg	    cat <<"EOF"
360605b261ecSmrg
36074642e01fSmrg#define LTWRAPPER_OPTION_PREFIX         "--lt-"
360805b261ecSmrg
36094642e01fSmrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
36104642e01fSmrgstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
36116747b715Smrgstatic const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
361205b261ecSmrg
36134642e01fSmrgint
36144642e01fSmrgmain (int argc, char *argv[])
36154642e01fSmrg{
36164642e01fSmrg  char **newargz;
36174642e01fSmrg  int  newargc;
36184642e01fSmrg  char *tmp_pathspec;
36194642e01fSmrg  char *actual_cwrapper_path;
36204642e01fSmrg  char *actual_cwrapper_name;
36214642e01fSmrg  char *target_name;
36224642e01fSmrg  char *lt_argv_zero;
36234642e01fSmrg  intptr_t rval = 127;
362405b261ecSmrg
36254642e01fSmrg  int i;
362605b261ecSmrg
36274642e01fSmrg  program_name = (char *) xstrdup (base_name (argv[0]));
36286747b715Smrg  newargz = XMALLOC (char *, argc + 1);
362905b261ecSmrg
36306747b715Smrg  /* very simple arg parsing; don't want to rely on getopt
36316747b715Smrg   * also, copy all non cwrapper options to newargz, except
36326747b715Smrg   * argz[0], which is handled differently
36336747b715Smrg   */
36346747b715Smrg  newargc=0;
36354642e01fSmrg  for (i = 1; i < argc; i++)
36364642e01fSmrg    {
36374642e01fSmrg      if (strcmp (argv[i], dumpscript_opt) == 0)
36384642e01fSmrg	{
36394642e01fSmrgEOF
36404642e01fSmrg	    case "$host" in
36414642e01fSmrg	      *mingw* | *cygwin* )
36424642e01fSmrg		# make stdout use "unix" line endings
36434642e01fSmrg		echo "          setmode(1,_O_BINARY);"
36444642e01fSmrg		;;
36454642e01fSmrg	      esac
364605b261ecSmrg
36474642e01fSmrg	    cat <<"EOF"
36486747b715Smrg	  lt_dump_script (stdout);
36494642e01fSmrg	  return 0;
36504642e01fSmrg	}
36516747b715Smrg      if (strcmp (argv[i], debug_opt) == 0)
36526747b715Smrg	{
36536747b715Smrg          lt_debug = 1;
36546747b715Smrg          continue;
36556747b715Smrg	}
36566747b715Smrg      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
36576747b715Smrg        {
36586747b715Smrg          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
36596747b715Smrg             namespace, but it is not one of the ones we know about and
36606747b715Smrg             have already dealt with, above (inluding dump-script), then
36616747b715Smrg             report an error. Otherwise, targets might begin to believe
36626747b715Smrg             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
36636747b715Smrg             namespace. The first time any user complains about this, we'll
36646747b715Smrg             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
36656747b715Smrg             or a configure.ac-settable value.
36666747b715Smrg           */
36676747b715Smrg          lt_fatal (__FILE__, __LINE__,
36686747b715Smrg		    "unrecognized %s option: '%s'",
36696747b715Smrg                    ltwrapper_option_prefix, argv[i]);
36706747b715Smrg        }
36716747b715Smrg      /* otherwise ... */
36726747b715Smrg      newargz[++newargc] = xstrdup (argv[i]);
36734642e01fSmrg    }
36746747b715Smrg  newargz[++newargc] = NULL;
36756747b715Smrg
36766747b715SmrgEOF
36776747b715Smrg	    cat <<EOF
36786747b715Smrg  /* The GNU banner must be the first non-error debug message */
36796747b715Smrg  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
36806747b715SmrgEOF
36816747b715Smrg	    cat <<"EOF"
36826747b715Smrg  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
36836747b715Smrg  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
368405b261ecSmrg
36854642e01fSmrg  tmp_pathspec = find_executable (argv[0]);
36864642e01fSmrg  if (tmp_pathspec == NULL)
36876747b715Smrg    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
36886747b715Smrg  lt_debugprintf (__FILE__, __LINE__,
36896747b715Smrg                  "(main) found exe (before symlink chase) at: %s\n",
36906747b715Smrg		  tmp_pathspec);
36914642e01fSmrg
36924642e01fSmrg  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
36936747b715Smrg  lt_debugprintf (__FILE__, __LINE__,
36946747b715Smrg                  "(main) found exe (after symlink chase) at: %s\n",
36956747b715Smrg		  actual_cwrapper_path);
36964642e01fSmrg  XFREE (tmp_pathspec);
36974642e01fSmrg
36986747b715Smrg  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
36994642e01fSmrg  strendzap (actual_cwrapper_path, actual_cwrapper_name);
37004642e01fSmrg
37014642e01fSmrg  /* wrapper name transforms */
37024642e01fSmrg  strendzap (actual_cwrapper_name, ".exe");
37034642e01fSmrg  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
37044642e01fSmrg  XFREE (actual_cwrapper_name);
37054642e01fSmrg  actual_cwrapper_name = tmp_pathspec;
37064642e01fSmrg  tmp_pathspec = 0;
37074642e01fSmrg
37084642e01fSmrg  /* target_name transforms -- use actual target program name; might have lt- prefix */
37094642e01fSmrg  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
37104642e01fSmrg  strendzap (target_name, ".exe");
37114642e01fSmrg  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
37124642e01fSmrg  XFREE (target_name);
37134642e01fSmrg  target_name = tmp_pathspec;
37144642e01fSmrg  tmp_pathspec = 0;
37154642e01fSmrg
37166747b715Smrg  lt_debugprintf (__FILE__, __LINE__,
37176747b715Smrg		  "(main) libtool target name: %s\n",
37186747b715Smrg		  target_name);
37194642e01fSmrgEOF
372005b261ecSmrg
37214642e01fSmrg	    cat <<EOF
37224642e01fSmrg  newargz[0] =
37234642e01fSmrg    XMALLOC (char, (strlen (actual_cwrapper_path) +
37244642e01fSmrg		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
37254642e01fSmrg  strcpy (newargz[0], actual_cwrapper_path);
37264642e01fSmrg  strcat (newargz[0], "$objdir");
37274642e01fSmrg  strcat (newargz[0], "/");
37284642e01fSmrgEOF
372905b261ecSmrg
37304642e01fSmrg	    cat <<"EOF"
37314642e01fSmrg  /* stop here, and copy so we don't have to do this twice */
37324642e01fSmrg  tmp_pathspec = xstrdup (newargz[0]);
373305b261ecSmrg
37344642e01fSmrg  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
37354642e01fSmrg  strcat (newargz[0], actual_cwrapper_name);
373605b261ecSmrg
37374642e01fSmrg  /* DO want the lt- prefix here if it exists, so use target_name */
37384642e01fSmrg  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
37394642e01fSmrg  XFREE (tmp_pathspec);
37404642e01fSmrg  tmp_pathspec = NULL;
37414642e01fSmrgEOF
374205b261ecSmrg
37434642e01fSmrg	    case $host_os in
37444642e01fSmrg	      mingw*)
37454642e01fSmrg	    cat <<"EOF"
37464642e01fSmrg  {
37474642e01fSmrg    char* p;
37484642e01fSmrg    while ((p = strchr (newargz[0], '\\')) != NULL)
37494642e01fSmrg      {
37504642e01fSmrg	*p = '/';
37514642e01fSmrg      }
37524642e01fSmrg    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
37534642e01fSmrg      {
37544642e01fSmrg	*p = '/';
37554642e01fSmrg      }
37564642e01fSmrg  }
37574642e01fSmrgEOF
37584642e01fSmrg	    ;;
37594642e01fSmrg	    esac
376005b261ecSmrg
37614642e01fSmrg	    cat <<"EOF"
37624642e01fSmrg  XFREE (target_name);
37634642e01fSmrg  XFREE (actual_cwrapper_path);
37644642e01fSmrg  XFREE (actual_cwrapper_name);
376505b261ecSmrg
37664642e01fSmrg  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
37674642e01fSmrg  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
37686747b715Smrg  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
3769475c125cSmrg  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
377005b261ecSmrg
37716747b715Smrg  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
37726747b715Smrg		  nonnull (lt_argv_zero));
37734642e01fSmrg  for (i = 0; i < newargc; i++)
37744642e01fSmrg    {
37756747b715Smrg      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
37766747b715Smrg		      i, nonnull (newargz[i]));
37774642e01fSmrg    }
377805b261ecSmrg
37794642e01fSmrgEOF
378005b261ecSmrg
37814642e01fSmrg	    case $host_os in
37824642e01fSmrg	      mingw*)
37834642e01fSmrg		cat <<"EOF"
37844642e01fSmrg  /* execv doesn't actually work on mingw as expected on unix */
37856747b715Smrg  newargz = prepare_spawn (newargz);
37864642e01fSmrg  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
37874642e01fSmrg  if (rval == -1)
37884642e01fSmrg    {
37894642e01fSmrg      /* failed to start process */
37906747b715Smrg      lt_debugprintf (__FILE__, __LINE__,
37916747b715Smrg		      "(main) failed to launch target \"%s\": %s\n",
37926747b715Smrg		      lt_argv_zero, nonnull (strerror (errno)));
37934642e01fSmrg      return 127;
37944642e01fSmrg    }
37954642e01fSmrg  return rval;
37964642e01fSmrgEOF
37974642e01fSmrg		;;
37984642e01fSmrg	      *)
37994642e01fSmrg		cat <<"EOF"
38004642e01fSmrg  execv (lt_argv_zero, newargz);
38014642e01fSmrg  return rval; /* =127, but avoids unused variable warning */
38024642e01fSmrgEOF
38034642e01fSmrg		;;
38044642e01fSmrg	    esac
380505b261ecSmrg
38064642e01fSmrg	    cat <<"EOF"
38074642e01fSmrg}
380805b261ecSmrg
38094642e01fSmrgvoid *
38104642e01fSmrgxmalloc (size_t num)
38114642e01fSmrg{
38124642e01fSmrg  void *p = (void *) malloc (num);
38134642e01fSmrg  if (!p)
38146747b715Smrg    lt_fatal (__FILE__, __LINE__, "memory exhausted");
381505b261ecSmrg
38164642e01fSmrg  return p;
38174642e01fSmrg}
381805b261ecSmrg
38194642e01fSmrgchar *
38204642e01fSmrgxstrdup (const char *string)
38214642e01fSmrg{
38224642e01fSmrg  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
38234642e01fSmrg			  string) : NULL;
38244642e01fSmrg}
382505b261ecSmrg
38264642e01fSmrgconst char *
38274642e01fSmrgbase_name (const char *name)
38284642e01fSmrg{
38294642e01fSmrg  const char *base;
383005b261ecSmrg
38314642e01fSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
38324642e01fSmrg  /* Skip over the disk name in MSDOS pathnames. */
38334642e01fSmrg  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
38344642e01fSmrg    name += 2;
38354642e01fSmrg#endif
383605b261ecSmrg
38374642e01fSmrg  for (base = name; *name; name++)
38384642e01fSmrg    if (IS_DIR_SEPARATOR (*name))
38394642e01fSmrg      base = name + 1;
38404642e01fSmrg  return base;
38414642e01fSmrg}
384205b261ecSmrg
38434642e01fSmrgint
38444642e01fSmrgcheck_executable (const char *path)
38454642e01fSmrg{
38464642e01fSmrg  struct stat st;
384705b261ecSmrg
38486747b715Smrg  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
38496747b715Smrg                  nonempty (path));
38504642e01fSmrg  if ((!path) || (!*path))
38514642e01fSmrg    return 0;
385205b261ecSmrg
38534642e01fSmrg  if ((stat (path, &st) >= 0)
38544642e01fSmrg      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
38554642e01fSmrg    return 1;
38564642e01fSmrg  else
38574642e01fSmrg    return 0;
38584642e01fSmrg}
385905b261ecSmrg
38604642e01fSmrgint
38614642e01fSmrgmake_executable (const char *path)
38624642e01fSmrg{
38634642e01fSmrg  int rval = 0;
38644642e01fSmrg  struct stat st;
386505b261ecSmrg
38666747b715Smrg  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
38676747b715Smrg                  nonempty (path));
38684642e01fSmrg  if ((!path) || (!*path))
38694642e01fSmrg    return 0;
387005b261ecSmrg
38714642e01fSmrg  if (stat (path, &st) >= 0)
38724642e01fSmrg    {
38734642e01fSmrg      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
38744642e01fSmrg    }
38754642e01fSmrg  return rval;
38764642e01fSmrg}
387705b261ecSmrg
38784642e01fSmrg/* Searches for the full path of the wrapper.  Returns
38794642e01fSmrg   newly allocated full path name if found, NULL otherwise
38804642e01fSmrg   Does not chase symlinks, even on platforms that support them.
38814642e01fSmrg*/
38824642e01fSmrgchar *
38834642e01fSmrgfind_executable (const char *wrapper)
38844642e01fSmrg{
38854642e01fSmrg  int has_slash = 0;
38864642e01fSmrg  const char *p;
38874642e01fSmrg  const char *p_next;
38884642e01fSmrg  /* static buffer for getcwd */
38894642e01fSmrg  char tmp[LT_PATHMAX + 1];
38904642e01fSmrg  int tmp_len;
38914642e01fSmrg  char *concat_name;
389205b261ecSmrg
38936747b715Smrg  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
38946747b715Smrg                  nonempty (wrapper));
389505b261ecSmrg
38964642e01fSmrg  if ((wrapper == NULL) || (*wrapper == '\0'))
38974642e01fSmrg    return NULL;
389805b261ecSmrg
38994642e01fSmrg  /* Absolute path? */
39004642e01fSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
39014642e01fSmrg  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
39024642e01fSmrg    {
39034642e01fSmrg      concat_name = xstrdup (wrapper);
39044642e01fSmrg      if (check_executable (concat_name))
39054642e01fSmrg	return concat_name;
39064642e01fSmrg      XFREE (concat_name);
39074642e01fSmrg    }
39084642e01fSmrg  else
39094642e01fSmrg    {
39104642e01fSmrg#endif
39114642e01fSmrg      if (IS_DIR_SEPARATOR (wrapper[0]))
39124642e01fSmrg	{
39134642e01fSmrg	  concat_name = xstrdup (wrapper);
39144642e01fSmrg	  if (check_executable (concat_name))
39154642e01fSmrg	    return concat_name;
39164642e01fSmrg	  XFREE (concat_name);
39174642e01fSmrg	}
39184642e01fSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
39194642e01fSmrg    }
39204642e01fSmrg#endif
392105b261ecSmrg
39224642e01fSmrg  for (p = wrapper; *p; p++)
39234642e01fSmrg    if (*p == '/')
39244642e01fSmrg      {
39254642e01fSmrg	has_slash = 1;
39264642e01fSmrg	break;
39274642e01fSmrg      }
39284642e01fSmrg  if (!has_slash)
39294642e01fSmrg    {
39304642e01fSmrg      /* no slashes; search PATH */
39314642e01fSmrg      const char *path = getenv ("PATH");
39324642e01fSmrg      if (path != NULL)
39334642e01fSmrg	{
39344642e01fSmrg	  for (p = path; *p; p = p_next)
39354642e01fSmrg	    {
39364642e01fSmrg	      const char *q;
39374642e01fSmrg	      size_t p_len;
39384642e01fSmrg	      for (q = p; *q; q++)
39394642e01fSmrg		if (IS_PATH_SEPARATOR (*q))
39404642e01fSmrg		  break;
39414642e01fSmrg	      p_len = q - p;
39424642e01fSmrg	      p_next = (*q == '\0' ? q : q + 1);
39434642e01fSmrg	      if (p_len == 0)
39444642e01fSmrg		{
39454642e01fSmrg		  /* empty path: current directory */
39464642e01fSmrg		  if (getcwd (tmp, LT_PATHMAX) == NULL)
39476747b715Smrg		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
39486747b715Smrg                              nonnull (strerror (errno)));
39494642e01fSmrg		  tmp_len = strlen (tmp);
39504642e01fSmrg		  concat_name =
39514642e01fSmrg		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
39524642e01fSmrg		  memcpy (concat_name, tmp, tmp_len);
39534642e01fSmrg		  concat_name[tmp_len] = '/';
39544642e01fSmrg		  strcpy (concat_name + tmp_len + 1, wrapper);
39554642e01fSmrg		}
39564642e01fSmrg	      else
39574642e01fSmrg		{
39584642e01fSmrg		  concat_name =
39594642e01fSmrg		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
39604642e01fSmrg		  memcpy (concat_name, p, p_len);
39614642e01fSmrg		  concat_name[p_len] = '/';
39624642e01fSmrg		  strcpy (concat_name + p_len + 1, wrapper);
39634642e01fSmrg		}
39644642e01fSmrg	      if (check_executable (concat_name))
39654642e01fSmrg		return concat_name;
39664642e01fSmrg	      XFREE (concat_name);
39674642e01fSmrg	    }
39684642e01fSmrg	}
39694642e01fSmrg      /* not found in PATH; assume curdir */
39704642e01fSmrg    }
39714642e01fSmrg  /* Relative path | not found in path: prepend cwd */
39724642e01fSmrg  if (getcwd (tmp, LT_PATHMAX) == NULL)
39736747b715Smrg    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
39746747b715Smrg              nonnull (strerror (errno)));
39754642e01fSmrg  tmp_len = strlen (tmp);
39764642e01fSmrg  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
39774642e01fSmrg  memcpy (concat_name, tmp, tmp_len);
39784642e01fSmrg  concat_name[tmp_len] = '/';
39794642e01fSmrg  strcpy (concat_name + tmp_len + 1, wrapper);
398005b261ecSmrg
39814642e01fSmrg  if (check_executable (concat_name))
39824642e01fSmrg    return concat_name;
39834642e01fSmrg  XFREE (concat_name);
39844642e01fSmrg  return NULL;
39854642e01fSmrg}
398605b261ecSmrg
39874642e01fSmrgchar *
39884642e01fSmrgchase_symlinks (const char *pathspec)
39894642e01fSmrg{
39904642e01fSmrg#ifndef S_ISLNK
39914642e01fSmrg  return xstrdup (pathspec);
39924642e01fSmrg#else
39934642e01fSmrg  char buf[LT_PATHMAX];
39944642e01fSmrg  struct stat s;
39954642e01fSmrg  char *tmp_pathspec = xstrdup (pathspec);
39964642e01fSmrg  char *p;
39974642e01fSmrg  int has_symlinks = 0;
39984642e01fSmrg  while (strlen (tmp_pathspec) && !has_symlinks)
39994642e01fSmrg    {
40006747b715Smrg      lt_debugprintf (__FILE__, __LINE__,
40016747b715Smrg		      "checking path component for symlinks: %s\n",
40026747b715Smrg		      tmp_pathspec);
40034642e01fSmrg      if (lstat (tmp_pathspec, &s) == 0)
40044642e01fSmrg	{
40054642e01fSmrg	  if (S_ISLNK (s.st_mode) != 0)
40064642e01fSmrg	    {
40074642e01fSmrg	      has_symlinks = 1;
40084642e01fSmrg	      break;
40094642e01fSmrg	    }
401005b261ecSmrg
40114642e01fSmrg	  /* search backwards for last DIR_SEPARATOR */
40124642e01fSmrg	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
40134642e01fSmrg	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
40144642e01fSmrg	    p--;
40154642e01fSmrg	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
40164642e01fSmrg	    {
40174642e01fSmrg	      /* no more DIR_SEPARATORS left */
40184642e01fSmrg	      break;
40194642e01fSmrg	    }
40204642e01fSmrg	  *p = '\0';
40214642e01fSmrg	}
40224642e01fSmrg      else
40234642e01fSmrg	{
40246747b715Smrg	  lt_fatal (__FILE__, __LINE__,
40256747b715Smrg		    "error accessing file \"%s\": %s",
40266747b715Smrg		    tmp_pathspec, nonnull (strerror (errno)));
40274642e01fSmrg	}
40284642e01fSmrg    }
40294642e01fSmrg  XFREE (tmp_pathspec);
403005b261ecSmrg
40314642e01fSmrg  if (!has_symlinks)
40324642e01fSmrg    {
40334642e01fSmrg      return xstrdup (pathspec);
40344642e01fSmrg    }
403505b261ecSmrg
40364642e01fSmrg  tmp_pathspec = realpath (pathspec, buf);
40374642e01fSmrg  if (tmp_pathspec == 0)
40384642e01fSmrg    {
40396747b715Smrg      lt_fatal (__FILE__, __LINE__,
40406747b715Smrg		"could not follow symlinks for %s", pathspec);
40414642e01fSmrg    }
40424642e01fSmrg  return xstrdup (tmp_pathspec);
40434642e01fSmrg#endif
40444642e01fSmrg}
404505b261ecSmrg
40464642e01fSmrgchar *
40474642e01fSmrgstrendzap (char *str, const char *pat)
40484642e01fSmrg{
40494642e01fSmrg  size_t len, patlen;
405005b261ecSmrg
40514642e01fSmrg  assert (str != NULL);
40524642e01fSmrg  assert (pat != NULL);
405305b261ecSmrg
40544642e01fSmrg  len = strlen (str);
40554642e01fSmrg  patlen = strlen (pat);
405605b261ecSmrg
40574642e01fSmrg  if (patlen <= len)
40584642e01fSmrg    {
40594642e01fSmrg      str += len - patlen;
40604642e01fSmrg      if (strcmp (str, pat) == 0)
40614642e01fSmrg	*str = '\0';
40624642e01fSmrg    }
40634642e01fSmrg  return str;
40644642e01fSmrg}
406505b261ecSmrg
40666747b715Smrgvoid
40676747b715Smrglt_debugprintf (const char *file, int line, const char *fmt, ...)
40686747b715Smrg{
40696747b715Smrg  va_list args;
40706747b715Smrg  if (lt_debug)
40716747b715Smrg    {
40726747b715Smrg      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
40736747b715Smrg      va_start (args, fmt);
40746747b715Smrg      (void) vfprintf (stderr, fmt, args);
40756747b715Smrg      va_end (args);
40766747b715Smrg    }
40776747b715Smrg}
40786747b715Smrg
40794642e01fSmrgstatic void
40806747b715Smrglt_error_core (int exit_status, const char *file,
40816747b715Smrg	       int line, const char *mode,
40824642e01fSmrg	       const char *message, va_list ap)
40834642e01fSmrg{
40846747b715Smrg  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
40854642e01fSmrg  vfprintf (stderr, message, ap);
40864642e01fSmrg  fprintf (stderr, ".\n");
408705b261ecSmrg
40884642e01fSmrg  if (exit_status >= 0)
40894642e01fSmrg    exit (exit_status);
40904642e01fSmrg}
409105b261ecSmrg
40924642e01fSmrgvoid
40936747b715Smrglt_fatal (const char *file, int line, const char *message, ...)
40944642e01fSmrg{
40954642e01fSmrg  va_list ap;
40964642e01fSmrg  va_start (ap, message);
40976747b715Smrg  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
40984642e01fSmrg  va_end (ap);
40994642e01fSmrg}
410005b261ecSmrg
41016747b715Smrgstatic const char *
41026747b715Smrgnonnull (const char *s)
41036747b715Smrg{
41046747b715Smrg  return s ? s : "(null)";
41056747b715Smrg}
41066747b715Smrg
41076747b715Smrgstatic const char *
41086747b715Smrgnonempty (const char *s)
41096747b715Smrg{
41106747b715Smrg  return (s && !*s) ? "(empty)" : nonnull (s);
41116747b715Smrg}
41126747b715Smrg
41134642e01fSmrgvoid
41144642e01fSmrglt_setenv (const char *name, const char *value)
41154642e01fSmrg{
41166747b715Smrg  lt_debugprintf (__FILE__, __LINE__,
41176747b715Smrg		  "(lt_setenv) setting '%s' to '%s'\n",
41186747b715Smrg                  nonnull (name), nonnull (value));
41194642e01fSmrg  {
41204642e01fSmrg#ifdef HAVE_SETENV
41214642e01fSmrg    /* always make a copy, for consistency with !HAVE_SETENV */
41224642e01fSmrg    char *str = xstrdup (value);
41234642e01fSmrg    setenv (name, str, 1);
41244642e01fSmrg#else
41254642e01fSmrg    int len = strlen (name) + 1 + strlen (value) + 1;
41264642e01fSmrg    char *str = XMALLOC (char, len);
41274642e01fSmrg    sprintf (str, "%s=%s", name, value);
41284642e01fSmrg    if (putenv (str) != EXIT_SUCCESS)
41294642e01fSmrg      {
41304642e01fSmrg        XFREE (str);
41314642e01fSmrg      }
41324642e01fSmrg#endif
41334642e01fSmrg  }
41344642e01fSmrg}
413505b261ecSmrg
41364642e01fSmrgchar *
41374642e01fSmrglt_extend_str (const char *orig_value, const char *add, int to_end)
41384642e01fSmrg{
41394642e01fSmrg  char *new_value;
41404642e01fSmrg  if (orig_value && *orig_value)
41414642e01fSmrg    {
41424642e01fSmrg      int orig_value_len = strlen (orig_value);
41434642e01fSmrg      int add_len = strlen (add);
41444642e01fSmrg      new_value = XMALLOC (char, add_len + orig_value_len + 1);
41454642e01fSmrg      if (to_end)
41464642e01fSmrg        {
41474642e01fSmrg          strcpy (new_value, orig_value);
41484642e01fSmrg          strcpy (new_value + orig_value_len, add);
41494642e01fSmrg        }
41504642e01fSmrg      else
41514642e01fSmrg        {
41524642e01fSmrg          strcpy (new_value, add);
41534642e01fSmrg          strcpy (new_value + add_len, orig_value);
41544642e01fSmrg        }
41554642e01fSmrg    }
41564642e01fSmrg  else
41574642e01fSmrg    {
41584642e01fSmrg      new_value = xstrdup (add);
41594642e01fSmrg    }
41604642e01fSmrg  return new_value;
41614642e01fSmrg}
416205b261ecSmrg
41634642e01fSmrgvoid
41644642e01fSmrglt_update_exe_path (const char *name, const char *value)
41654642e01fSmrg{
41666747b715Smrg  lt_debugprintf (__FILE__, __LINE__,
41676747b715Smrg		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
41686747b715Smrg                  nonnull (name), nonnull (value));
416905b261ecSmrg
41704642e01fSmrg  if (name && *name && value && *value)
41714642e01fSmrg    {
41724642e01fSmrg      char *new_value = lt_extend_str (getenv (name), value, 0);
41734642e01fSmrg      /* some systems can't cope with a ':'-terminated path #' */
41744642e01fSmrg      int len = strlen (new_value);
41754642e01fSmrg      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
41764642e01fSmrg        {
41774642e01fSmrg          new_value[len-1] = '\0';
41784642e01fSmrg        }
41794642e01fSmrg      lt_setenv (name, new_value);
41804642e01fSmrg      XFREE (new_value);
41814642e01fSmrg    }
41824642e01fSmrg}
418305b261ecSmrg
41844642e01fSmrgvoid
41854642e01fSmrglt_update_lib_path (const char *name, const char *value)
41864642e01fSmrg{
41876747b715Smrg  lt_debugprintf (__FILE__, __LINE__,
41886747b715Smrg		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
41896747b715Smrg                  nonnull (name), nonnull (value));
419005b261ecSmrg
41914642e01fSmrg  if (name && *name && value && *value)
41924642e01fSmrg    {
41934642e01fSmrg      char *new_value = lt_extend_str (getenv (name), value, 0);
41944642e01fSmrg      lt_setenv (name, new_value);
41954642e01fSmrg      XFREE (new_value);
41964642e01fSmrg    }
41974642e01fSmrg}
419805b261ecSmrg
41996747b715SmrgEOF
42006747b715Smrg	    case $host_os in
42016747b715Smrg	      mingw*)
42026747b715Smrg		cat <<"EOF"
42036747b715Smrg
42046747b715Smrg/* Prepares an argument vector before calling spawn().
42056747b715Smrg   Note that spawn() does not by itself call the command interpreter
42066747b715Smrg     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
42076747b715Smrg      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
42086747b715Smrg         GetVersionEx(&v);
42096747b715Smrg         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
42106747b715Smrg      }) ? "cmd.exe" : "command.com").
42116747b715Smrg   Instead it simply concatenates the arguments, separated by ' ', and calls
42126747b715Smrg   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
42136747b715Smrg   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
42146747b715Smrg   special way:
42156747b715Smrg   - Space and tab are interpreted as delimiters. They are not treated as
42166747b715Smrg     delimiters if they are surrounded by double quotes: "...".
42176747b715Smrg   - Unescaped double quotes are removed from the input. Their only effect is
42186747b715Smrg     that within double quotes, space and tab are treated like normal
42196747b715Smrg     characters.
42206747b715Smrg   - Backslashes not followed by double quotes are not special.
42216747b715Smrg   - But 2*n+1 backslashes followed by a double quote become
42226747b715Smrg     n backslashes followed by a double quote (n >= 0):
42236747b715Smrg       \" -> "
42246747b715Smrg       \\\" -> \"
42256747b715Smrg       \\\\\" -> \\"
42266747b715Smrg */
42276747b715Smrg#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
42286747b715Smrg#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
42296747b715Smrgchar **
42306747b715Smrgprepare_spawn (char **argv)
42316747b715Smrg{
42326747b715Smrg  size_t argc;
42336747b715Smrg  char **new_argv;
42346747b715Smrg  size_t i;
42356747b715Smrg
42366747b715Smrg  /* Count number of arguments.  */
42376747b715Smrg  for (argc = 0; argv[argc] != NULL; argc++)
42386747b715Smrg    ;
42396747b715Smrg
42406747b715Smrg  /* Allocate new argument vector.  */
42416747b715Smrg  new_argv = XMALLOC (char *, argc + 1);
42426747b715Smrg
42436747b715Smrg  /* Put quoted arguments into the new argument vector.  */
42446747b715Smrg  for (i = 0; i < argc; i++)
42456747b715Smrg    {
42466747b715Smrg      const char *string = argv[i];
42476747b715Smrg
42486747b715Smrg      if (string[0] == '\0')
42496747b715Smrg	new_argv[i] = xstrdup ("\"\"");
42506747b715Smrg      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
42516747b715Smrg	{
42526747b715Smrg	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
42536747b715Smrg	  size_t length;
42546747b715Smrg	  unsigned int backslashes;
42556747b715Smrg	  const char *s;
42566747b715Smrg	  char *quoted_string;
42576747b715Smrg	  char *p;
42586747b715Smrg
42596747b715Smrg	  length = 0;
42606747b715Smrg	  backslashes = 0;
42616747b715Smrg	  if (quote_around)
42626747b715Smrg	    length++;
42636747b715Smrg	  for (s = string; *s != '\0'; s++)
42646747b715Smrg	    {
42656747b715Smrg	      char c = *s;
42666747b715Smrg	      if (c == '"')
42676747b715Smrg		length += backslashes + 1;
42686747b715Smrg	      length++;
42696747b715Smrg	      if (c == '\\')
42706747b715Smrg		backslashes++;
42716747b715Smrg	      else
42726747b715Smrg		backslashes = 0;
42736747b715Smrg	    }
42746747b715Smrg	  if (quote_around)
42756747b715Smrg	    length += backslashes + 1;
42766747b715Smrg
42776747b715Smrg	  quoted_string = XMALLOC (char, length + 1);
42786747b715Smrg
42796747b715Smrg	  p = quoted_string;
42806747b715Smrg	  backslashes = 0;
42816747b715Smrg	  if (quote_around)
42826747b715Smrg	    *p++ = '"';
42836747b715Smrg	  for (s = string; *s != '\0'; s++)
42846747b715Smrg	    {
42856747b715Smrg	      char c = *s;
42866747b715Smrg	      if (c == '"')
42876747b715Smrg		{
42886747b715Smrg		  unsigned int j;
42896747b715Smrg		  for (j = backslashes + 1; j > 0; j--)
42906747b715Smrg		    *p++ = '\\';
42916747b715Smrg		}
42926747b715Smrg	      *p++ = c;
42936747b715Smrg	      if (c == '\\')
42946747b715Smrg		backslashes++;
42956747b715Smrg	      else
42966747b715Smrg		backslashes = 0;
42976747b715Smrg	    }
42986747b715Smrg	  if (quote_around)
42996747b715Smrg	    {
43006747b715Smrg	      unsigned int j;
43016747b715Smrg	      for (j = backslashes; j > 0; j--)
43026747b715Smrg		*p++ = '\\';
43036747b715Smrg	      *p++ = '"';
43046747b715Smrg	    }
43056747b715Smrg	  *p = '\0';
43066747b715Smrg
43076747b715Smrg	  new_argv[i] = quoted_string;
43086747b715Smrg	}
43096747b715Smrg      else
43106747b715Smrg	new_argv[i] = (char *) string;
43116747b715Smrg    }
43126747b715Smrg  new_argv[argc] = NULL;
43136747b715Smrg
43146747b715Smrg  return new_argv;
43156747b715Smrg}
43166747b715SmrgEOF
43176747b715Smrg		;;
43186747b715Smrg	    esac
43196747b715Smrg
43206747b715Smrg            cat <<"EOF"
43216747b715Smrgvoid lt_dump_script (FILE* f)
43226747b715Smrg{
43236747b715SmrgEOF
43246747b715Smrg	    func_emit_wrapper yes |
43256747b715Smrg              $SED -e 's/\([\\"]\)/\\\1/g' \
43266747b715Smrg	           -e 's/^/  fputs ("/' -e 's/$/\\n", f);/'
432705b261ecSmrg
43286747b715Smrg            cat <<"EOF"
43296747b715Smrg}
43304642e01fSmrgEOF
43314642e01fSmrg}
43324642e01fSmrg# end: func_emit_cwrapperexe_src
433305b261ecSmrg
43346747b715Smrg# func_win32_import_lib_p ARG
43356747b715Smrg# True if ARG is an import lib, as indicated by $file_magic_cmd
43366747b715Smrgfunc_win32_import_lib_p ()
43376747b715Smrg{
43386747b715Smrg    $opt_debug
43396747b715Smrg    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
43406747b715Smrg    *import*) : ;;
43416747b715Smrg    *) false ;;
43426747b715Smrg    esac
43436747b715Smrg}
43446747b715Smrg
43454642e01fSmrg# func_mode_link arg...
43464642e01fSmrgfunc_mode_link ()
43474642e01fSmrg{
43484642e01fSmrg    $opt_debug
43494642e01fSmrg    case $host in
43504642e01fSmrg    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
43514642e01fSmrg      # It is impossible to link a dll without this setting, and
43524642e01fSmrg      # we shouldn't force the makefile maintainer to figure out
43534642e01fSmrg      # which system we are compiling for in order to pass an extra
43544642e01fSmrg      # flag for every libtool invocation.
43554642e01fSmrg      # allow_undefined=no
435605b261ecSmrg
43574642e01fSmrg      # FIXME: Unfortunately, there are problems with the above when trying
43584642e01fSmrg      # to make a dll which has undefined symbols, in which case not
43594642e01fSmrg      # even a static library is built.  For now, we need to specify
43604642e01fSmrg      # -no-undefined on the libtool link line when we can be certain
43614642e01fSmrg      # that all symbols are satisfied, otherwise we get a static library.
43624642e01fSmrg      allow_undefined=yes
43634642e01fSmrg      ;;
43644642e01fSmrg    *)
43654642e01fSmrg      allow_undefined=yes
43664642e01fSmrg      ;;
43674642e01fSmrg    esac
43684642e01fSmrg    libtool_args=$nonopt
43694642e01fSmrg    base_compile="$nonopt $@"
43704642e01fSmrg    compile_command=$nonopt
43714642e01fSmrg    finalize_command=$nonopt
437205b261ecSmrg
43734642e01fSmrg    compile_rpath=
43744642e01fSmrg    finalize_rpath=
43754642e01fSmrg    compile_shlibpath=
43764642e01fSmrg    finalize_shlibpath=
43774642e01fSmrg    convenience=
43784642e01fSmrg    old_convenience=
43794642e01fSmrg    deplibs=
43804642e01fSmrg    old_deplibs=
43814642e01fSmrg    compiler_flags=
43824642e01fSmrg    linker_flags=
43834642e01fSmrg    dllsearchpath=
43844642e01fSmrg    lib_search_path=`pwd`
43854642e01fSmrg    inst_prefix_dir=
43864642e01fSmrg    new_inherited_linker_flags=
438705b261ecSmrg
43884642e01fSmrg    avoid_version=no
43896747b715Smrg    bindir=
43904642e01fSmrg    dlfiles=
43914642e01fSmrg    dlprefiles=
43924642e01fSmrg    dlself=no
43934642e01fSmrg    export_dynamic=no
43944642e01fSmrg    export_symbols=
43954642e01fSmrg    export_symbols_regex=
43964642e01fSmrg    generated=
43974642e01fSmrg    libobjs=
43984642e01fSmrg    ltlibs=
43994642e01fSmrg    module=no
44004642e01fSmrg    no_install=no
44014642e01fSmrg    objs=
44024642e01fSmrg    non_pic_objects=
44034642e01fSmrg    precious_files_regex=
44044642e01fSmrg    prefer_static_libs=no
44054642e01fSmrg    preload=no
44064642e01fSmrg    prev=
44074642e01fSmrg    prevarg=
44084642e01fSmrg    release=
44094642e01fSmrg    rpath=
44104642e01fSmrg    xrpath=
44114642e01fSmrg    perm_rpath=
44124642e01fSmrg    temp_rpath=
44134642e01fSmrg    thread_safe=no
44144642e01fSmrg    vinfo=
44154642e01fSmrg    vinfo_number=no
44164642e01fSmrg    weak_libs=
44174642e01fSmrg    single_module="${wl}-single_module"
44184642e01fSmrg    func_infer_tag $base_compile
441905b261ecSmrg
44204642e01fSmrg    # We need to know -static, to get the right output filenames.
44214642e01fSmrg    for arg
44224642e01fSmrg    do
44234642e01fSmrg      case $arg in
44244642e01fSmrg      -shared)
44254642e01fSmrg	test "$build_libtool_libs" != yes && \
44264642e01fSmrg	  func_fatal_configuration "can not build a shared library"
44274642e01fSmrg	build_old_libs=no
44284642e01fSmrg	break
44294642e01fSmrg	;;
44304642e01fSmrg      -all-static | -static | -static-libtool-libs)
44314642e01fSmrg	case $arg in
44324642e01fSmrg	-all-static)
44334642e01fSmrg	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
44344642e01fSmrg	    func_warning "complete static linking is impossible in this configuration"
44354642e01fSmrg	  fi
44364642e01fSmrg	  if test -n "$link_static_flag"; then
44374642e01fSmrg	    dlopen_self=$dlopen_self_static
44384642e01fSmrg	  fi
44394642e01fSmrg	  prefer_static_libs=yes
44404642e01fSmrg	  ;;
44414642e01fSmrg	-static)
44424642e01fSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
44434642e01fSmrg	    dlopen_self=$dlopen_self_static
44444642e01fSmrg	  fi
44454642e01fSmrg	  prefer_static_libs=built
44464642e01fSmrg	  ;;
44474642e01fSmrg	-static-libtool-libs)
44484642e01fSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
44494642e01fSmrg	    dlopen_self=$dlopen_self_static
44504642e01fSmrg	  fi
44514642e01fSmrg	  prefer_static_libs=yes
44524642e01fSmrg	  ;;
44534642e01fSmrg	esac
44544642e01fSmrg	build_libtool_libs=no
44554642e01fSmrg	build_old_libs=yes
44564642e01fSmrg	break
44574642e01fSmrg	;;
44584642e01fSmrg      esac
44594642e01fSmrg    done
446005b261ecSmrg
44614642e01fSmrg    # See if our shared archives depend on static archives.
44624642e01fSmrg    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
446305b261ecSmrg
44644642e01fSmrg    # Go through the arguments, transforming them on the way.
44654642e01fSmrg    while test "$#" -gt 0; do
44664642e01fSmrg      arg="$1"
44674642e01fSmrg      shift
44684642e01fSmrg      func_quote_for_eval "$arg"
44694642e01fSmrg      qarg=$func_quote_for_eval_unquoted_result
44704642e01fSmrg      func_append libtool_args " $func_quote_for_eval_result"
447105b261ecSmrg
44724642e01fSmrg      # If the previous option needs an argument, assign it.
44734642e01fSmrg      if test -n "$prev"; then
44744642e01fSmrg	case $prev in
44754642e01fSmrg	output)
44764642e01fSmrg	  func_append compile_command " @OUTPUT@"
44774642e01fSmrg	  func_append finalize_command " @OUTPUT@"
44784642e01fSmrg	  ;;
44794642e01fSmrg	esac
448005b261ecSmrg
44814642e01fSmrg	case $prev in
44826747b715Smrg	bindir)
44836747b715Smrg	  bindir="$arg"
44846747b715Smrg	  prev=
44856747b715Smrg	  continue
44866747b715Smrg	  ;;
44874642e01fSmrg	dlfiles|dlprefiles)
44884642e01fSmrg	  if test "$preload" = no; then
44894642e01fSmrg	    # Add the symbol object into the linking commands.
44904642e01fSmrg	    func_append compile_command " @SYMFILE@"
44914642e01fSmrg	    func_append finalize_command " @SYMFILE@"
44924642e01fSmrg	    preload=yes
449305b261ecSmrg	  fi
44944642e01fSmrg	  case $arg in
44954642e01fSmrg	  *.la | *.lo) ;;  # We handle these cases below.
44964642e01fSmrg	  force)
44974642e01fSmrg	    if test "$dlself" = no; then
44984642e01fSmrg	      dlself=needless
44994642e01fSmrg	      export_dynamic=yes
45004642e01fSmrg	    fi
45014642e01fSmrg	    prev=
45024642e01fSmrg	    continue
45034642e01fSmrg	    ;;
45044642e01fSmrg	  self)
45054642e01fSmrg	    if test "$prev" = dlprefiles; then
45064642e01fSmrg	      dlself=yes
45074642e01fSmrg	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
45084642e01fSmrg	      dlself=yes
45094642e01fSmrg	    else
45104642e01fSmrg	      dlself=needless
45114642e01fSmrg	      export_dynamic=yes
45124642e01fSmrg	    fi
45134642e01fSmrg	    prev=
45144642e01fSmrg	    continue
45154642e01fSmrg	    ;;
45164642e01fSmrg	  *)
45174642e01fSmrg	    if test "$prev" = dlfiles; then
4518475c125cSmrg	      dlfiles="$dlfiles $arg"
45194642e01fSmrg	    else
4520475c125cSmrg	      dlprefiles="$dlprefiles $arg"
45214642e01fSmrg	    fi
45224642e01fSmrg	    prev=
45234642e01fSmrg	    continue
45244642e01fSmrg	    ;;
45254642e01fSmrg	  esac
45264642e01fSmrg	  ;;
45274642e01fSmrg	expsyms)
45284642e01fSmrg	  export_symbols="$arg"
45294642e01fSmrg	  test -f "$arg" \
45304642e01fSmrg	    || func_fatal_error "symbol file \`$arg' does not exist"
45314642e01fSmrg	  prev=
45324642e01fSmrg	  continue
45334642e01fSmrg	  ;;
45344642e01fSmrg	expsyms_regex)
45354642e01fSmrg	  export_symbols_regex="$arg"
45364642e01fSmrg	  prev=
45374642e01fSmrg	  continue
45384642e01fSmrg	  ;;
45394642e01fSmrg	framework)
454005b261ecSmrg	  case $host in
45414642e01fSmrg	    *-*-darwin*)
45424642e01fSmrg	      case "$deplibs " in
45434642e01fSmrg		*" $qarg.ltframework "*) ;;
4544475c125cSmrg		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
45454642e01fSmrg		   ;;
45464642e01fSmrg	      esac
45474642e01fSmrg	      ;;
454805b261ecSmrg	  esac
45494642e01fSmrg	  prev=
45504642e01fSmrg	  continue
455105b261ecSmrg	  ;;
45524642e01fSmrg	inst_prefix)
45534642e01fSmrg	  inst_prefix_dir="$arg"
45544642e01fSmrg	  prev=
45554642e01fSmrg	  continue
455605b261ecSmrg	  ;;
45574642e01fSmrg	objectlist)
45584642e01fSmrg	  if test -f "$arg"; then
45594642e01fSmrg	    save_arg=$arg
45604642e01fSmrg	    moreargs=
45614642e01fSmrg	    for fil in `cat "$save_arg"`
45624642e01fSmrg	    do
4563475c125cSmrg#	      moreargs="$moreargs $fil"
45644642e01fSmrg	      arg=$fil
45654642e01fSmrg	      # A libtool-controlled object.
456605b261ecSmrg
45674642e01fSmrg	      # Check to see that this really is a libtool object.
45684642e01fSmrg	      if func_lalib_unsafe_p "$arg"; then
45694642e01fSmrg		pic_object=
45704642e01fSmrg		non_pic_object=
457105b261ecSmrg
45724642e01fSmrg		# Read the .lo file
45734642e01fSmrg		func_source "$arg"
457405b261ecSmrg
45754642e01fSmrg		if test -z "$pic_object" ||
45764642e01fSmrg		   test -z "$non_pic_object" ||
45774642e01fSmrg		   test "$pic_object" = none &&
45784642e01fSmrg		   test "$non_pic_object" = none; then
45794642e01fSmrg		  func_fatal_error "cannot find name of object for \`$arg'"
45804642e01fSmrg		fi
458105b261ecSmrg
45824642e01fSmrg		# Extract subdirectory from the argument.
45834642e01fSmrg		func_dirname "$arg" "/" ""
45844642e01fSmrg		xdir="$func_dirname_result"
458505b261ecSmrg
45864642e01fSmrg		if test "$pic_object" != none; then
45874642e01fSmrg		  # Prepend the subdirectory the object is found in.
45884642e01fSmrg		  pic_object="$xdir$pic_object"
458905b261ecSmrg
45904642e01fSmrg		  if test "$prev" = dlfiles; then
45914642e01fSmrg		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
4592475c125cSmrg		      dlfiles="$dlfiles $pic_object"
45934642e01fSmrg		      prev=
45944642e01fSmrg		      continue
45954642e01fSmrg		    else
45964642e01fSmrg		      # If libtool objects are unsupported, then we need to preload.
45974642e01fSmrg		      prev=dlprefiles
45984642e01fSmrg		    fi
45994642e01fSmrg		  fi
460005b261ecSmrg
46014642e01fSmrg		  # CHECK ME:  I think I busted this.  -Ossama
46024642e01fSmrg		  if test "$prev" = dlprefiles; then
46034642e01fSmrg		    # Preload the old-style object.
4604475c125cSmrg		    dlprefiles="$dlprefiles $pic_object"
46054642e01fSmrg		    prev=
46064642e01fSmrg		  fi
460705b261ecSmrg
46084642e01fSmrg		  # A PIC object.
46094642e01fSmrg		  func_append libobjs " $pic_object"
46104642e01fSmrg		  arg="$pic_object"
46114642e01fSmrg		fi
461205b261ecSmrg
46134642e01fSmrg		# Non-PIC object.
46144642e01fSmrg		if test "$non_pic_object" != none; then
46154642e01fSmrg		  # Prepend the subdirectory the object is found in.
46164642e01fSmrg		  non_pic_object="$xdir$non_pic_object"
461705b261ecSmrg
46184642e01fSmrg		  # A standard non-PIC object
46194642e01fSmrg		  func_append non_pic_objects " $non_pic_object"
46204642e01fSmrg		  if test -z "$pic_object" || test "$pic_object" = none ; then
46214642e01fSmrg		    arg="$non_pic_object"
46224642e01fSmrg		  fi
46234642e01fSmrg		else
46244642e01fSmrg		  # If the PIC object exists, use it instead.
46254642e01fSmrg		  # $xdir was prepended to $pic_object above.
46264642e01fSmrg		  non_pic_object="$pic_object"
46274642e01fSmrg		  func_append non_pic_objects " $non_pic_object"
46284642e01fSmrg		fi
46294642e01fSmrg	      else
46304642e01fSmrg		# Only an error if not doing a dry-run.
46314642e01fSmrg		if $opt_dry_run; then
46324642e01fSmrg		  # Extract subdirectory from the argument.
46334642e01fSmrg		  func_dirname "$arg" "/" ""
46344642e01fSmrg		  xdir="$func_dirname_result"
46354642e01fSmrg
46364642e01fSmrg		  func_lo2o "$arg"
46374642e01fSmrg		  pic_object=$xdir$objdir/$func_lo2o_result
46384642e01fSmrg		  non_pic_object=$xdir$func_lo2o_result
46394642e01fSmrg		  func_append libobjs " $pic_object"
46404642e01fSmrg		  func_append non_pic_objects " $non_pic_object"
46414642e01fSmrg	        else
46424642e01fSmrg		  func_fatal_error "\`$arg' is not a valid libtool object"
46434642e01fSmrg		fi
46444642e01fSmrg	      fi
46454642e01fSmrg	    done
464605b261ecSmrg	  else
46474642e01fSmrg	    func_fatal_error "link input file \`$arg' does not exist"
464805b261ecSmrg	  fi
46494642e01fSmrg	  arg=$save_arg
46504642e01fSmrg	  prev=
46514642e01fSmrg	  continue
46524642e01fSmrg	  ;;
46534642e01fSmrg	precious_regex)
46544642e01fSmrg	  precious_files_regex="$arg"
46554642e01fSmrg	  prev=
46564642e01fSmrg	  continue
46574642e01fSmrg	  ;;
46584642e01fSmrg	release)
46594642e01fSmrg	  release="-$arg"
46604642e01fSmrg	  prev=
46614642e01fSmrg	  continue
46624642e01fSmrg	  ;;
46634642e01fSmrg	rpath | xrpath)
46644642e01fSmrg	  # We need an absolute path.
46654642e01fSmrg	  case $arg in
46664642e01fSmrg	  [\\/]* | [A-Za-z]:[\\/]*) ;;
46674642e01fSmrg	  *)
46684642e01fSmrg	    func_fatal_error "only absolute run-paths are allowed"
46694642e01fSmrg	    ;;
46704642e01fSmrg	  esac
46714642e01fSmrg	  if test "$prev" = rpath; then
46724642e01fSmrg	    case "$rpath " in
46734642e01fSmrg	    *" $arg "*) ;;
4674475c125cSmrg	    *) rpath="$rpath $arg" ;;
46754642e01fSmrg	    esac
467605b261ecSmrg	  else
46774642e01fSmrg	    case "$xrpath " in
46784642e01fSmrg	    *" $arg "*) ;;
4679475c125cSmrg	    *) xrpath="$xrpath $arg" ;;
46804642e01fSmrg	    esac
468105b261ecSmrg	  fi
46824642e01fSmrg	  prev=
46834642e01fSmrg	  continue
46844642e01fSmrg	  ;;
46854642e01fSmrg	shrext)
46864642e01fSmrg	  shrext_cmds="$arg"
46874642e01fSmrg	  prev=
46884642e01fSmrg	  continue
46894642e01fSmrg	  ;;
46904642e01fSmrg	weak)
4691475c125cSmrg	  weak_libs="$weak_libs $arg"
46924642e01fSmrg	  prev=
46934642e01fSmrg	  continue
46944642e01fSmrg	  ;;
46954642e01fSmrg	xcclinker)
4696475c125cSmrg	  linker_flags="$linker_flags $qarg"
4697475c125cSmrg	  compiler_flags="$compiler_flags $qarg"
46984642e01fSmrg	  prev=
46994642e01fSmrg	  func_append compile_command " $qarg"
47004642e01fSmrg	  func_append finalize_command " $qarg"
47014642e01fSmrg	  continue
47024642e01fSmrg	  ;;
47034642e01fSmrg	xcompiler)
4704475c125cSmrg	  compiler_flags="$compiler_flags $qarg"
47054642e01fSmrg	  prev=
47064642e01fSmrg	  func_append compile_command " $qarg"
47074642e01fSmrg	  func_append finalize_command " $qarg"
47084642e01fSmrg	  continue
47094642e01fSmrg	  ;;
47104642e01fSmrg	xlinker)
4711475c125cSmrg	  linker_flags="$linker_flags $qarg"
4712475c125cSmrg	  compiler_flags="$compiler_flags $wl$qarg"
47134642e01fSmrg	  prev=
47144642e01fSmrg	  func_append compile_command " $wl$qarg"
47154642e01fSmrg	  func_append finalize_command " $wl$qarg"
47164642e01fSmrg	  continue
47174642e01fSmrg	  ;;
47184642e01fSmrg	*)
47194642e01fSmrg	  eval "$prev=\"\$arg\""
47204642e01fSmrg	  prev=
47214642e01fSmrg	  continue
47224642e01fSmrg	  ;;
472305b261ecSmrg	esac
47244642e01fSmrg      fi # test -n "$prev"
472505b261ecSmrg
47264642e01fSmrg      prevarg="$arg"
472705b261ecSmrg
47284642e01fSmrg      case $arg in
47294642e01fSmrg      -all-static)
47304642e01fSmrg	if test -n "$link_static_flag"; then
47314642e01fSmrg	  # See comment for -static flag below, for more details.
47324642e01fSmrg	  func_append compile_command " $link_static_flag"
47334642e01fSmrg	  func_append finalize_command " $link_static_flag"
47344642e01fSmrg	fi
47354642e01fSmrg	continue
47364642e01fSmrg	;;
473705b261ecSmrg
47384642e01fSmrg      -allow-undefined)
47394642e01fSmrg	# FIXME: remove this flag sometime in the future.
47404642e01fSmrg	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
47414642e01fSmrg	;;
474205b261ecSmrg
47434642e01fSmrg      -avoid-version)
47444642e01fSmrg	avoid_version=yes
47454642e01fSmrg	continue
47464642e01fSmrg	;;
474705b261ecSmrg
47486747b715Smrg      -bindir)
47496747b715Smrg	prev=bindir
47506747b715Smrg	continue
47516747b715Smrg	;;
47526747b715Smrg
47534642e01fSmrg      -dlopen)
47544642e01fSmrg	prev=dlfiles
47554642e01fSmrg	continue
47564642e01fSmrg	;;
475705b261ecSmrg
47584642e01fSmrg      -dlpreopen)
47594642e01fSmrg	prev=dlprefiles
47604642e01fSmrg	continue
47614642e01fSmrg	;;
476205b261ecSmrg
47634642e01fSmrg      -export-dynamic)
47644642e01fSmrg	export_dynamic=yes
47654642e01fSmrg	continue
47664642e01fSmrg	;;
476705b261ecSmrg
47684642e01fSmrg      -export-symbols | -export-symbols-regex)
47694642e01fSmrg	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
47704642e01fSmrg	  func_fatal_error "more than one -exported-symbols argument is not allowed"
47714642e01fSmrg	fi
47724642e01fSmrg	if test "X$arg" = "X-export-symbols"; then
47734642e01fSmrg	  prev=expsyms
47744642e01fSmrg	else
47754642e01fSmrg	  prev=expsyms_regex
47764642e01fSmrg	fi
47774642e01fSmrg	continue
47784642e01fSmrg	;;
477905b261ecSmrg
47804642e01fSmrg      -framework)
47814642e01fSmrg	prev=framework
47824642e01fSmrg	continue
47834642e01fSmrg	;;
478405b261ecSmrg
47854642e01fSmrg      -inst-prefix-dir)
47864642e01fSmrg	prev=inst_prefix
47874642e01fSmrg	continue
47884642e01fSmrg	;;
478905b261ecSmrg
47904642e01fSmrg      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
47914642e01fSmrg      # so, if we see these flags be careful not to treat them like -L
47924642e01fSmrg      -L[A-Z][A-Z]*:*)
47934642e01fSmrg	case $with_gcc/$host in
47944642e01fSmrg	no/*-*-irix* | /*-*-irix*)
47954642e01fSmrg	  func_append compile_command " $arg"
47964642e01fSmrg	  func_append finalize_command " $arg"
47974642e01fSmrg	  ;;
47984642e01fSmrg	esac
47994642e01fSmrg	continue
48004642e01fSmrg	;;
480105b261ecSmrg
48024642e01fSmrg      -L*)
4803475c125cSmrg	func_stripname '-L' '' "$arg"
4804475c125cSmrg	dir=$func_stripname_result
4805475c125cSmrg	if test -z "$dir"; then
48064642e01fSmrg	  if test "$#" -gt 0; then
48074642e01fSmrg	    func_fatal_error "require no space between \`-L' and \`$1'"
48084642e01fSmrg	  else
48094642e01fSmrg	    func_fatal_error "need path for \`-L' option"
48104642e01fSmrg	  fi
48114642e01fSmrg	fi
48124642e01fSmrg	# We need an absolute path.
48134642e01fSmrg	case $dir in
48144642e01fSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
48154642e01fSmrg	*)
48164642e01fSmrg	  absdir=`cd "$dir" && pwd`
48174642e01fSmrg	  test -z "$absdir" && \
48184642e01fSmrg	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
48194642e01fSmrg	  dir="$absdir"
48204642e01fSmrg	  ;;
48214642e01fSmrg	esac
48224642e01fSmrg	case "$deplibs " in
4823475c125cSmrg	*" -L$dir "*) ;;
48244642e01fSmrg	*)
4825475c125cSmrg	  deplibs="$deplibs -L$dir"
4826475c125cSmrg	  lib_search_path="$lib_search_path $dir"
48274642e01fSmrg	  ;;
48284642e01fSmrg	esac
48294642e01fSmrg	case $host in
48304642e01fSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
48316747b715Smrg	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
48324642e01fSmrg	  case :$dllsearchpath: in
48334642e01fSmrg	  *":$dir:"*) ;;
48344642e01fSmrg	  ::) dllsearchpath=$dir;;
4835475c125cSmrg	  *) dllsearchpath="$dllsearchpath:$dir";;
48364642e01fSmrg	  esac
48374642e01fSmrg	  case :$dllsearchpath: in
48384642e01fSmrg	  *":$testbindir:"*) ;;
48394642e01fSmrg	  ::) dllsearchpath=$testbindir;;
4840475c125cSmrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
48414642e01fSmrg	  esac
48424642e01fSmrg	  ;;
48434642e01fSmrg	esac
48444642e01fSmrg	continue
48454642e01fSmrg	;;
484605b261ecSmrg
48474642e01fSmrg      -l*)
48484642e01fSmrg	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
48494642e01fSmrg	  case $host in
48506747b715Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
48514642e01fSmrg	    # These systems don't actually have a C or math library (as such)
48524642e01fSmrg	    continue
48534642e01fSmrg	    ;;
48544642e01fSmrg	  *-*-os2*)
48554642e01fSmrg	    # These systems don't actually have a C library (as such)
48564642e01fSmrg	    test "X$arg" = "X-lc" && continue
48574642e01fSmrg	    ;;
48584642e01fSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
48594642e01fSmrg	    # Do not include libc due to us having libc/libc_r.
48604642e01fSmrg	    test "X$arg" = "X-lc" && continue
48614642e01fSmrg	    ;;
48624642e01fSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
48634642e01fSmrg	    # Rhapsody C and math libraries are in the System framework
4864475c125cSmrg	    deplibs="$deplibs System.ltframework"
48654642e01fSmrg	    continue
48664642e01fSmrg	    ;;
48674642e01fSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
48684642e01fSmrg	    # Causes problems with __ctype
48694642e01fSmrg	    test "X$arg" = "X-lc" && continue
48704642e01fSmrg	    ;;
48714642e01fSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
48724642e01fSmrg	    # Compiler inserts libc in the correct place for threads to work
48734642e01fSmrg	    test "X$arg" = "X-lc" && continue
48744642e01fSmrg	    ;;
48754642e01fSmrg	  esac
48764642e01fSmrg	elif test "X$arg" = "X-lc_r"; then
48774642e01fSmrg	 case $host in
48784642e01fSmrg	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
48794642e01fSmrg	   # Do not include libc_r directly, use -pthread flag.
48804642e01fSmrg	   continue
48814642e01fSmrg	   ;;
48824642e01fSmrg	 esac
48834642e01fSmrg	fi
4884475c125cSmrg	deplibs="$deplibs $arg"
48854642e01fSmrg	continue
48864642e01fSmrg	;;
488705b261ecSmrg
48884642e01fSmrg      -module)
48894642e01fSmrg	module=yes
48904642e01fSmrg	continue
48914642e01fSmrg	;;
489205b261ecSmrg
48934642e01fSmrg      # Tru64 UNIX uses -model [arg] to determine the layout of C++
48944642e01fSmrg      # classes, name mangling, and exception handling.
48954642e01fSmrg      # Darwin uses the -arch flag to determine output architecture.
4896475c125cSmrg      -model|-arch|-isysroot)
4897475c125cSmrg	compiler_flags="$compiler_flags $arg"
48984642e01fSmrg	func_append compile_command " $arg"
48994642e01fSmrg	func_append finalize_command " $arg"
49004642e01fSmrg	prev=xcompiler
49014642e01fSmrg	continue
49024642e01fSmrg	;;
490305b261ecSmrg
49044642e01fSmrg      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
4905475c125cSmrg	compiler_flags="$compiler_flags $arg"
49064642e01fSmrg	func_append compile_command " $arg"
49074642e01fSmrg	func_append finalize_command " $arg"
49084642e01fSmrg	case "$new_inherited_linker_flags " in
49094642e01fSmrg	    *" $arg "*) ;;
4910475c125cSmrg	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
49114642e01fSmrg	esac
49124642e01fSmrg	continue
49134642e01fSmrg	;;
491405b261ecSmrg
49154642e01fSmrg      -multi_module)
49164642e01fSmrg	single_module="${wl}-multi_module"
49174642e01fSmrg	continue
49184642e01fSmrg	;;
491905b261ecSmrg
49204642e01fSmrg      -no-fast-install)
49214642e01fSmrg	fast_install=no
49224642e01fSmrg	continue
49234642e01fSmrg	;;
492405b261ecSmrg
49254642e01fSmrg      -no-install)
49264642e01fSmrg	case $host in
49274642e01fSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
49284642e01fSmrg	  # The PATH hackery in wrapper scripts is required on Windows
49294642e01fSmrg	  # and Darwin in order for the loader to find any dlls it needs.
49304642e01fSmrg	  func_warning "\`-no-install' is ignored for $host"
49314642e01fSmrg	  func_warning "assuming \`-no-fast-install' instead"
49324642e01fSmrg	  fast_install=no
49334642e01fSmrg	  ;;
49344642e01fSmrg	*) no_install=yes ;;
49354642e01fSmrg	esac
49364642e01fSmrg	continue
49374642e01fSmrg	;;
493805b261ecSmrg
49394642e01fSmrg      -no-undefined)
49404642e01fSmrg	allow_undefined=no
49414642e01fSmrg	continue
49424642e01fSmrg	;;
494305b261ecSmrg
49444642e01fSmrg      -objectlist)
49454642e01fSmrg	prev=objectlist
49464642e01fSmrg	continue
49474642e01fSmrg	;;
494805b261ecSmrg
49494642e01fSmrg      -o) prev=output ;;
495005b261ecSmrg
49514642e01fSmrg      -precious-files-regex)
49524642e01fSmrg	prev=precious_regex
49534642e01fSmrg	continue
49544642e01fSmrg	;;
495505b261ecSmrg
49564642e01fSmrg      -release)
49574642e01fSmrg	prev=release
49584642e01fSmrg	continue
49594642e01fSmrg	;;
496005b261ecSmrg
49614642e01fSmrg      -rpath)
49624642e01fSmrg	prev=rpath
49634642e01fSmrg	continue
49644642e01fSmrg	;;
496505b261ecSmrg
49664642e01fSmrg      -R)
49674642e01fSmrg	prev=xrpath
49684642e01fSmrg	continue
49694642e01fSmrg	;;
497005b261ecSmrg
49714642e01fSmrg      -R*)
49724642e01fSmrg	func_stripname '-R' '' "$arg"
49734642e01fSmrg	dir=$func_stripname_result
49744642e01fSmrg	# We need an absolute path.
49754642e01fSmrg	case $dir in
49764642e01fSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
49774642e01fSmrg	*)
49784642e01fSmrg	  func_fatal_error "only absolute run-paths are allowed"
49794642e01fSmrg	  ;;
49804642e01fSmrg	esac
49814642e01fSmrg	case "$xrpath " in
49824642e01fSmrg	*" $dir "*) ;;
4983475c125cSmrg	*) xrpath="$xrpath $dir" ;;
49844642e01fSmrg	esac
49854642e01fSmrg	continue
49864642e01fSmrg	;;
498705b261ecSmrg
49884642e01fSmrg      -shared)
49894642e01fSmrg	# The effects of -shared are defined in a previous loop.
49904642e01fSmrg	continue
49914642e01fSmrg	;;
499205b261ecSmrg
49934642e01fSmrg      -shrext)
49944642e01fSmrg	prev=shrext
49954642e01fSmrg	continue
49964642e01fSmrg	;;
499705b261ecSmrg
49984642e01fSmrg      -static | -static-libtool-libs)
49994642e01fSmrg	# The effects of -static are defined in a previous loop.
50004642e01fSmrg	# We used to do the same as -all-static on platforms that
50014642e01fSmrg	# didn't have a PIC flag, but the assumption that the effects
50024642e01fSmrg	# would be equivalent was wrong.  It would break on at least
50034642e01fSmrg	# Digital Unix and AIX.
50044642e01fSmrg	continue
50054642e01fSmrg	;;
500605b261ecSmrg
50074642e01fSmrg      -thread-safe)
50084642e01fSmrg	thread_safe=yes
50094642e01fSmrg	continue
50104642e01fSmrg	;;
501105b261ecSmrg
50124642e01fSmrg      -version-info)
50134642e01fSmrg	prev=vinfo
50144642e01fSmrg	continue
50154642e01fSmrg	;;
501605b261ecSmrg
50174642e01fSmrg      -version-number)
50184642e01fSmrg	prev=vinfo
50194642e01fSmrg	vinfo_number=yes
50204642e01fSmrg	continue
50214642e01fSmrg	;;
502205b261ecSmrg
50234642e01fSmrg      -weak)
50244642e01fSmrg        prev=weak
50254642e01fSmrg	continue
50264642e01fSmrg	;;
502705b261ecSmrg
50284642e01fSmrg      -Wc,*)
50294642e01fSmrg	func_stripname '-Wc,' '' "$arg"
50304642e01fSmrg	args=$func_stripname_result
50314642e01fSmrg	arg=
50324642e01fSmrg	save_ifs="$IFS"; IFS=','
50334642e01fSmrg	for flag in $args; do
50344642e01fSmrg	  IFS="$save_ifs"
50354642e01fSmrg          func_quote_for_eval "$flag"
5036475c125cSmrg	  arg="$arg $func_quote_for_eval_result"
5037475c125cSmrg	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
50384642e01fSmrg	done
50394642e01fSmrg	IFS="$save_ifs"
50404642e01fSmrg	func_stripname ' ' '' "$arg"
50414642e01fSmrg	arg=$func_stripname_result
50424642e01fSmrg	;;
504305b261ecSmrg
50444642e01fSmrg      -Wl,*)
50454642e01fSmrg	func_stripname '-Wl,' '' "$arg"
50464642e01fSmrg	args=$func_stripname_result
50474642e01fSmrg	arg=
50484642e01fSmrg	save_ifs="$IFS"; IFS=','
50494642e01fSmrg	for flag in $args; do
50504642e01fSmrg	  IFS="$save_ifs"
50514642e01fSmrg          func_quote_for_eval "$flag"
5052475c125cSmrg	  arg="$arg $wl$func_quote_for_eval_result"
5053475c125cSmrg	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
5054475c125cSmrg	  linker_flags="$linker_flags $func_quote_for_eval_result"
50554642e01fSmrg	done
50564642e01fSmrg	IFS="$save_ifs"
50574642e01fSmrg	func_stripname ' ' '' "$arg"
50584642e01fSmrg	arg=$func_stripname_result
50594642e01fSmrg	;;
506005b261ecSmrg
50614642e01fSmrg      -Xcompiler)
50624642e01fSmrg	prev=xcompiler
50634642e01fSmrg	continue
50644642e01fSmrg	;;
506505b261ecSmrg
50664642e01fSmrg      -Xlinker)
50674642e01fSmrg	prev=xlinker
50684642e01fSmrg	continue
50694642e01fSmrg	;;
507005b261ecSmrg
50714642e01fSmrg      -XCClinker)
50724642e01fSmrg	prev=xcclinker
50734642e01fSmrg	continue
50744642e01fSmrg	;;
507505b261ecSmrg
50764642e01fSmrg      # -msg_* for osf cc
50774642e01fSmrg      -msg_*)
50784642e01fSmrg	func_quote_for_eval "$arg"
50794642e01fSmrg	arg="$func_quote_for_eval_result"
50804642e01fSmrg	;;
508105b261ecSmrg
50826747b715Smrg      # Flags to be passed through unchanged, with rationale:
50836747b715Smrg      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
50846747b715Smrg      # -r[0-9][0-9]*        specify processor for the SGI compiler
50856747b715Smrg      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
50866747b715Smrg      # +DA*, +DD*           enable 64-bit mode for the HP compiler
50876747b715Smrg      # -q*                  compiler args for the IBM compiler
50886747b715Smrg      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
50896747b715Smrg      # -F/path              path to uninstalled frameworks, gcc on darwin
50906747b715Smrg      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
50916747b715Smrg      # @file                GCC response files
50926747b715Smrg      # -tp=*                Portland pgcc target processor selection
50934642e01fSmrg      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
5094475c125cSmrg      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*)
50954642e01fSmrg        func_quote_for_eval "$arg"
50964642e01fSmrg	arg="$func_quote_for_eval_result"
50974642e01fSmrg        func_append compile_command " $arg"
50984642e01fSmrg        func_append finalize_command " $arg"
5099475c125cSmrg        compiler_flags="$compiler_flags $arg"
51004642e01fSmrg        continue
51014642e01fSmrg        ;;
510205b261ecSmrg
51034642e01fSmrg      # Some other compiler flag.
51044642e01fSmrg      -* | +*)
51054642e01fSmrg        func_quote_for_eval "$arg"
51064642e01fSmrg	arg="$func_quote_for_eval_result"
51074642e01fSmrg	;;
510805b261ecSmrg
51094642e01fSmrg      *.$objext)
51104642e01fSmrg	# A standard object.
5111475c125cSmrg	objs="$objs $arg"
51124642e01fSmrg	;;
511305b261ecSmrg
51144642e01fSmrg      *.lo)
51154642e01fSmrg	# A libtool-controlled object.
511605b261ecSmrg
51174642e01fSmrg	# Check to see that this really is a libtool object.
51184642e01fSmrg	if func_lalib_unsafe_p "$arg"; then
51194642e01fSmrg	  pic_object=
51204642e01fSmrg	  non_pic_object=
512105b261ecSmrg
51224642e01fSmrg	  # Read the .lo file
51234642e01fSmrg	  func_source "$arg"
512405b261ecSmrg
51254642e01fSmrg	  if test -z "$pic_object" ||
51264642e01fSmrg	     test -z "$non_pic_object" ||
51274642e01fSmrg	     test "$pic_object" = none &&
51284642e01fSmrg	     test "$non_pic_object" = none; then
51294642e01fSmrg	    func_fatal_error "cannot find name of object for \`$arg'"
51304642e01fSmrg	  fi
513105b261ecSmrg
51324642e01fSmrg	  # Extract subdirectory from the argument.
51334642e01fSmrg	  func_dirname "$arg" "/" ""
51344642e01fSmrg	  xdir="$func_dirname_result"
513505b261ecSmrg
51364642e01fSmrg	  if test "$pic_object" != none; then
51374642e01fSmrg	    # Prepend the subdirectory the object is found in.
51384642e01fSmrg	    pic_object="$xdir$pic_object"
513905b261ecSmrg
51404642e01fSmrg	    if test "$prev" = dlfiles; then
51414642e01fSmrg	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5142475c125cSmrg		dlfiles="$dlfiles $pic_object"
51434642e01fSmrg		prev=
51444642e01fSmrg		continue
51454642e01fSmrg	      else
51464642e01fSmrg		# If libtool objects are unsupported, then we need to preload.
51474642e01fSmrg		prev=dlprefiles
51484642e01fSmrg	      fi
51494642e01fSmrg	    fi
515005b261ecSmrg
51514642e01fSmrg	    # CHECK ME:  I think I busted this.  -Ossama
51524642e01fSmrg	    if test "$prev" = dlprefiles; then
51534642e01fSmrg	      # Preload the old-style object.
5154475c125cSmrg	      dlprefiles="$dlprefiles $pic_object"
51554642e01fSmrg	      prev=
51564642e01fSmrg	    fi
515705b261ecSmrg
51584642e01fSmrg	    # A PIC object.
51594642e01fSmrg	    func_append libobjs " $pic_object"
51604642e01fSmrg	    arg="$pic_object"
51614642e01fSmrg	  fi
516205b261ecSmrg
51634642e01fSmrg	  # Non-PIC object.
51644642e01fSmrg	  if test "$non_pic_object" != none; then
51654642e01fSmrg	    # Prepend the subdirectory the object is found in.
51664642e01fSmrg	    non_pic_object="$xdir$non_pic_object"
516705b261ecSmrg
51684642e01fSmrg	    # A standard non-PIC object
51694642e01fSmrg	    func_append non_pic_objects " $non_pic_object"
51704642e01fSmrg	    if test -z "$pic_object" || test "$pic_object" = none ; then
51714642e01fSmrg	      arg="$non_pic_object"
51724642e01fSmrg	    fi
51734642e01fSmrg	  else
51744642e01fSmrg	    # If the PIC object exists, use it instead.
51754642e01fSmrg	    # $xdir was prepended to $pic_object above.
51764642e01fSmrg	    non_pic_object="$pic_object"
51774642e01fSmrg	    func_append non_pic_objects " $non_pic_object"
51784642e01fSmrg	  fi
51794642e01fSmrg	else
51804642e01fSmrg	  # Only an error if not doing a dry-run.
51814642e01fSmrg	  if $opt_dry_run; then
51824642e01fSmrg	    # Extract subdirectory from the argument.
51834642e01fSmrg	    func_dirname "$arg" "/" ""
51844642e01fSmrg	    xdir="$func_dirname_result"
51854642e01fSmrg
51864642e01fSmrg	    func_lo2o "$arg"
51874642e01fSmrg	    pic_object=$xdir$objdir/$func_lo2o_result
51884642e01fSmrg	    non_pic_object=$xdir$func_lo2o_result
51894642e01fSmrg	    func_append libobjs " $pic_object"
51904642e01fSmrg	    func_append non_pic_objects " $non_pic_object"
51914642e01fSmrg	  else
51924642e01fSmrg	    func_fatal_error "\`$arg' is not a valid libtool object"
51934642e01fSmrg	  fi
51944642e01fSmrg	fi
51954642e01fSmrg	;;
51964642e01fSmrg
51974642e01fSmrg      *.$libext)
51984642e01fSmrg	# An archive.
5199475c125cSmrg	deplibs="$deplibs $arg"
5200475c125cSmrg	old_deplibs="$old_deplibs $arg"
52014642e01fSmrg	continue
52024642e01fSmrg	;;
52034642e01fSmrg
52044642e01fSmrg      *.la)
52054642e01fSmrg	# A libtool-controlled library.
52064642e01fSmrg
52074642e01fSmrg	if test "$prev" = dlfiles; then
52084642e01fSmrg	  # This library was specified with -dlopen.
5209475c125cSmrg	  dlfiles="$dlfiles $arg"
52104642e01fSmrg	  prev=
52114642e01fSmrg	elif test "$prev" = dlprefiles; then
52124642e01fSmrg	  # The library was specified with -dlpreopen.
5213475c125cSmrg	  dlprefiles="$dlprefiles $arg"
52144642e01fSmrg	  prev=
52154642e01fSmrg	else
5216475c125cSmrg	  deplibs="$deplibs $arg"
52174642e01fSmrg	fi
52184642e01fSmrg	continue
52194642e01fSmrg	;;
52204642e01fSmrg
52214642e01fSmrg      # Some other compiler argument.
52224642e01fSmrg      *)
52234642e01fSmrg	# Unknown arguments in both finalize_command and compile_command need
52244642e01fSmrg	# to be aesthetically quoted because they are evaled later.
52254642e01fSmrg	func_quote_for_eval "$arg"
52264642e01fSmrg	arg="$func_quote_for_eval_result"
52274642e01fSmrg	;;
52284642e01fSmrg      esac # arg
52294642e01fSmrg
52304642e01fSmrg      # Now actually substitute the argument into the commands.
52314642e01fSmrg      if test -n "$arg"; then
52324642e01fSmrg	func_append compile_command " $arg"
52334642e01fSmrg	func_append finalize_command " $arg"
52344642e01fSmrg      fi
52354642e01fSmrg    done # argument parsing loop
52364642e01fSmrg
52374642e01fSmrg    test -n "$prev" && \
52384642e01fSmrg      func_fatal_help "the \`$prevarg' option requires an argument"
52394642e01fSmrg
52404642e01fSmrg    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
52414642e01fSmrg      eval arg=\"$export_dynamic_flag_spec\"
52424642e01fSmrg      func_append compile_command " $arg"
52434642e01fSmrg      func_append finalize_command " $arg"
52444642e01fSmrg    fi
52454642e01fSmrg
52464642e01fSmrg    oldlibs=
52474642e01fSmrg    # calculate the name of the file, without its directory
52484642e01fSmrg    func_basename "$output"
52494642e01fSmrg    outputname="$func_basename_result"
52504642e01fSmrg    libobjs_save="$libobjs"
52514642e01fSmrg
52524642e01fSmrg    if test -n "$shlibpath_var"; then
52534642e01fSmrg      # get the directories listed in $shlibpath_var
52546747b715Smrg      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
52554642e01fSmrg    else
52564642e01fSmrg      shlib_search_path=
52574642e01fSmrg    fi
52584642e01fSmrg    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
52594642e01fSmrg    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
52604642e01fSmrg
52614642e01fSmrg    func_dirname "$output" "/" ""
52624642e01fSmrg    output_objdir="$func_dirname_result$objdir"
52634642e01fSmrg    # Create the object directory.
52644642e01fSmrg    func_mkdir_p "$output_objdir"
52654642e01fSmrg
52664642e01fSmrg    # Determine the type of output
52674642e01fSmrg    case $output in
52684642e01fSmrg    "")
52694642e01fSmrg      func_fatal_help "you must specify an output file"
52704642e01fSmrg      ;;
52714642e01fSmrg    *.$libext) linkmode=oldlib ;;
52724642e01fSmrg    *.lo | *.$objext) linkmode=obj ;;
52734642e01fSmrg    *.la) linkmode=lib ;;
52744642e01fSmrg    *) linkmode=prog ;; # Anything else should be a program.
52754642e01fSmrg    esac
52764642e01fSmrg
52774642e01fSmrg    specialdeplibs=
52784642e01fSmrg
52794642e01fSmrg    libs=
52804642e01fSmrg    # Find all interdependent deplibs by searching for libraries
52814642e01fSmrg    # that are linked more than once (e.g. -la -lb -la)
52824642e01fSmrg    for deplib in $deplibs; do
5283475c125cSmrg      if $opt_duplicate_deps ; then
52844642e01fSmrg	case "$libs " in
5285475c125cSmrg	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
52864642e01fSmrg	esac
52874642e01fSmrg      fi
5288475c125cSmrg      libs="$libs $deplib"
52894642e01fSmrg    done
52904642e01fSmrg
52914642e01fSmrg    if test "$linkmode" = lib; then
52924642e01fSmrg      libs="$predeps $libs $compiler_lib_search_path $postdeps"
52934642e01fSmrg
52944642e01fSmrg      # Compute libraries that are listed more than once in $predeps
52954642e01fSmrg      # $postdeps and mark them as special (i.e., whose duplicates are
52964642e01fSmrg      # not to be eliminated).
52974642e01fSmrg      pre_post_deps=
52984642e01fSmrg      if $opt_duplicate_compiler_generated_deps; then
52994642e01fSmrg	for pre_post_dep in $predeps $postdeps; do
53004642e01fSmrg	  case "$pre_post_deps " in
5301475c125cSmrg	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
53024642e01fSmrg	  esac
5303475c125cSmrg	  pre_post_deps="$pre_post_deps $pre_post_dep"
53044642e01fSmrg	done
53054642e01fSmrg      fi
53064642e01fSmrg      pre_post_deps=
53074642e01fSmrg    fi
53084642e01fSmrg
53094642e01fSmrg    deplibs=
53104642e01fSmrg    newdependency_libs=
53114642e01fSmrg    newlib_search_path=
53124642e01fSmrg    need_relink=no # whether we're linking any uninstalled libtool libraries
53134642e01fSmrg    notinst_deplibs= # not-installed libtool libraries
53144642e01fSmrg    notinst_path= # paths that contain not-installed libtool libraries
53154642e01fSmrg
53164642e01fSmrg    case $linkmode in
53174642e01fSmrg    lib)
53184642e01fSmrg	passes="conv dlpreopen link"
53194642e01fSmrg	for file in $dlfiles $dlprefiles; do
53204642e01fSmrg	  case $file in
53214642e01fSmrg	  *.la) ;;
53224642e01fSmrg	  *)
53234642e01fSmrg	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
53244642e01fSmrg	    ;;
53254642e01fSmrg	  esac
53264642e01fSmrg	done
53274642e01fSmrg	;;
53284642e01fSmrg    prog)
53294642e01fSmrg	compile_deplibs=
53304642e01fSmrg	finalize_deplibs=
53314642e01fSmrg	alldeplibs=no
53324642e01fSmrg	newdlfiles=
53334642e01fSmrg	newdlprefiles=
53344642e01fSmrg	passes="conv scan dlopen dlpreopen link"
53354642e01fSmrg	;;
53364642e01fSmrg    *)  passes="conv"
53374642e01fSmrg	;;
53384642e01fSmrg    esac
53394642e01fSmrg
53404642e01fSmrg    for pass in $passes; do
53414642e01fSmrg      # The preopen pass in lib mode reverses $deplibs; put it back here
53424642e01fSmrg      # so that -L comes before libs that need it for instance...
53434642e01fSmrg      if test "$linkmode,$pass" = "lib,link"; then
53444642e01fSmrg	## FIXME: Find the place where the list is rebuilt in the wrong
53454642e01fSmrg	##        order, and fix it there properly
53464642e01fSmrg        tmp_deplibs=
53474642e01fSmrg	for deplib in $deplibs; do
53484642e01fSmrg	  tmp_deplibs="$deplib $tmp_deplibs"
53494642e01fSmrg	done
53504642e01fSmrg	deplibs="$tmp_deplibs"
53514642e01fSmrg      fi
53524642e01fSmrg
53534642e01fSmrg      if test "$linkmode,$pass" = "lib,link" ||
53544642e01fSmrg	 test "$linkmode,$pass" = "prog,scan"; then
53554642e01fSmrg	libs="$deplibs"
53564642e01fSmrg	deplibs=
53574642e01fSmrg      fi
53584642e01fSmrg      if test "$linkmode" = prog; then
53594642e01fSmrg	case $pass in
53604642e01fSmrg	dlopen) libs="$dlfiles" ;;
53614642e01fSmrg	dlpreopen) libs="$dlprefiles" ;;
53626747b715Smrg	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
53634642e01fSmrg	esac
53644642e01fSmrg      fi
53654642e01fSmrg      if test "$linkmode,$pass" = "lib,dlpreopen"; then
53664642e01fSmrg	# Collect and forward deplibs of preopened libtool libs
53674642e01fSmrg	for lib in $dlprefiles; do
53684642e01fSmrg	  # Ignore non-libtool-libs
53694642e01fSmrg	  dependency_libs=
53704642e01fSmrg	  case $lib in
5371475c125cSmrg	  *.la)	func_source "$lib" ;;
53724642e01fSmrg	  esac
53734642e01fSmrg
53744642e01fSmrg	  # Collect preopened libtool deplibs, except any this library
53754642e01fSmrg	  # has declared as weak libs
53764642e01fSmrg	  for deplib in $dependency_libs; do
53776747b715Smrg	    func_basename "$deplib"
53786747b715Smrg            deplib_base=$func_basename_result
53794642e01fSmrg	    case " $weak_libs " in
53804642e01fSmrg	    *" $deplib_base "*) ;;
5381475c125cSmrg	    *) deplibs="$deplibs $deplib" ;;
53824642e01fSmrg	    esac
53834642e01fSmrg	  done
53844642e01fSmrg	done
53854642e01fSmrg	libs="$dlprefiles"
53864642e01fSmrg      fi
53874642e01fSmrg      if test "$pass" = dlopen; then
53884642e01fSmrg	# Collect dlpreopened libraries
53894642e01fSmrg	save_deplibs="$deplibs"
53904642e01fSmrg	deplibs=
53914642e01fSmrg      fi
53924642e01fSmrg
53934642e01fSmrg      for deplib in $libs; do
53944642e01fSmrg	lib=
53954642e01fSmrg	found=no
53964642e01fSmrg	case $deplib in
53974642e01fSmrg	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
53984642e01fSmrg	  if test "$linkmode,$pass" = "prog,link"; then
53994642e01fSmrg	    compile_deplibs="$deplib $compile_deplibs"
54004642e01fSmrg	    finalize_deplibs="$deplib $finalize_deplibs"
54014642e01fSmrg	  else
5402475c125cSmrg	    compiler_flags="$compiler_flags $deplib"
54034642e01fSmrg	    if test "$linkmode" = lib ; then
54044642e01fSmrg		case "$new_inherited_linker_flags " in
54054642e01fSmrg		    *" $deplib "*) ;;
5406475c125cSmrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
54074642e01fSmrg		esac
54084642e01fSmrg	    fi
54094642e01fSmrg	  fi
54104642e01fSmrg	  continue
54114642e01fSmrg	  ;;
54124642e01fSmrg	-l*)
54134642e01fSmrg	  if test "$linkmode" != lib && test "$linkmode" != prog; then
54144642e01fSmrg	    func_warning "\`-l' is ignored for archives/objects"
54154642e01fSmrg	    continue
54164642e01fSmrg	  fi
54174642e01fSmrg	  func_stripname '-l' '' "$deplib"
54184642e01fSmrg	  name=$func_stripname_result
54194642e01fSmrg	  if test "$linkmode" = lib; then
54204642e01fSmrg	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
54214642e01fSmrg	  else
54224642e01fSmrg	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
54234642e01fSmrg	  fi
54244642e01fSmrg	  for searchdir in $searchdirs; do
54254642e01fSmrg	    for search_ext in .la $std_shrext .so .a; do
54264642e01fSmrg	      # Search the libtool library
54274642e01fSmrg	      lib="$searchdir/lib${name}${search_ext}"
54284642e01fSmrg	      if test -f "$lib"; then
54294642e01fSmrg		if test "$search_ext" = ".la"; then
54304642e01fSmrg		  found=yes
54314642e01fSmrg		else
54324642e01fSmrg		  found=no
54334642e01fSmrg		fi
54344642e01fSmrg		break 2
54354642e01fSmrg	      fi
54364642e01fSmrg	    done
54374642e01fSmrg	  done
54384642e01fSmrg	  if test "$found" != yes; then
54394642e01fSmrg	    # deplib doesn't seem to be a libtool library
54404642e01fSmrg	    if test "$linkmode,$pass" = "prog,link"; then
54414642e01fSmrg	      compile_deplibs="$deplib $compile_deplibs"
54424642e01fSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
54434642e01fSmrg	    else
54444642e01fSmrg	      deplibs="$deplib $deplibs"
54454642e01fSmrg	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
54464642e01fSmrg	    fi
54474642e01fSmrg	    continue
54484642e01fSmrg	  else # deplib is a libtool library
54494642e01fSmrg	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
54504642e01fSmrg	    # We need to do some special things here, and not later.
54514642e01fSmrg	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
54524642e01fSmrg	      case " $predeps $postdeps " in
54534642e01fSmrg	      *" $deplib "*)
54544642e01fSmrg		if func_lalib_p "$lib"; then
54554642e01fSmrg		  library_names=
54564642e01fSmrg		  old_library=
54574642e01fSmrg		  func_source "$lib"
54584642e01fSmrg		  for l in $old_library $library_names; do
54594642e01fSmrg		    ll="$l"
54604642e01fSmrg		  done
54614642e01fSmrg		  if test "X$ll" = "X$old_library" ; then # only static version available
54624642e01fSmrg		    found=no
54634642e01fSmrg		    func_dirname "$lib" "" "."
54644642e01fSmrg		    ladir="$func_dirname_result"
54654642e01fSmrg		    lib=$ladir/$old_library
54664642e01fSmrg		    if test "$linkmode,$pass" = "prog,link"; then
54674642e01fSmrg		      compile_deplibs="$deplib $compile_deplibs"
54684642e01fSmrg		      finalize_deplibs="$deplib $finalize_deplibs"
54694642e01fSmrg		    else
54704642e01fSmrg		      deplibs="$deplib $deplibs"
54714642e01fSmrg		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
54724642e01fSmrg		    fi
54734642e01fSmrg		    continue
54744642e01fSmrg		  fi
54754642e01fSmrg		fi
54764642e01fSmrg		;;
54774642e01fSmrg	      *) ;;
54784642e01fSmrg	      esac
54794642e01fSmrg	    fi
54804642e01fSmrg	  fi
54814642e01fSmrg	  ;; # -l
54824642e01fSmrg	*.ltframework)
54834642e01fSmrg	  if test "$linkmode,$pass" = "prog,link"; then
54844642e01fSmrg	    compile_deplibs="$deplib $compile_deplibs"
54854642e01fSmrg	    finalize_deplibs="$deplib $finalize_deplibs"
54864642e01fSmrg	  else
54874642e01fSmrg	    deplibs="$deplib $deplibs"
54884642e01fSmrg	    if test "$linkmode" = lib ; then
54894642e01fSmrg		case "$new_inherited_linker_flags " in
54904642e01fSmrg		    *" $deplib "*) ;;
5491475c125cSmrg		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
54924642e01fSmrg		esac
54934642e01fSmrg	    fi
54944642e01fSmrg	  fi
54954642e01fSmrg	  continue
54964642e01fSmrg	  ;;
54974642e01fSmrg	-L*)
54984642e01fSmrg	  case $linkmode in
54994642e01fSmrg	  lib)
55004642e01fSmrg	    deplibs="$deplib $deplibs"
55014642e01fSmrg	    test "$pass" = conv && continue
55024642e01fSmrg	    newdependency_libs="$deplib $newdependency_libs"
55034642e01fSmrg	    func_stripname '-L' '' "$deplib"
5504475c125cSmrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
55054642e01fSmrg	    ;;
55064642e01fSmrg	  prog)
55074642e01fSmrg	    if test "$pass" = conv; then
55084642e01fSmrg	      deplibs="$deplib $deplibs"
55094642e01fSmrg	      continue
55104642e01fSmrg	    fi
55114642e01fSmrg	    if test "$pass" = scan; then
55124642e01fSmrg	      deplibs="$deplib $deplibs"
55134642e01fSmrg	    else
55144642e01fSmrg	      compile_deplibs="$deplib $compile_deplibs"
55154642e01fSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
55164642e01fSmrg	    fi
55174642e01fSmrg	    func_stripname '-L' '' "$deplib"
5518475c125cSmrg	    newlib_search_path="$newlib_search_path $func_stripname_result"
55194642e01fSmrg	    ;;
55204642e01fSmrg	  *)
55214642e01fSmrg	    func_warning "\`-L' is ignored for archives/objects"
55224642e01fSmrg	    ;;
55234642e01fSmrg	  esac # linkmode
55244642e01fSmrg	  continue
55254642e01fSmrg	  ;; # -L
55264642e01fSmrg	-R*)
55274642e01fSmrg	  if test "$pass" = link; then
55284642e01fSmrg	    func_stripname '-R' '' "$deplib"
5529475c125cSmrg	    dir=$func_stripname_result
55304642e01fSmrg	    # Make sure the xrpath contains only unique directories.
55314642e01fSmrg	    case "$xrpath " in
55324642e01fSmrg	    *" $dir "*) ;;
5533475c125cSmrg	    *) xrpath="$xrpath $dir" ;;
55344642e01fSmrg	    esac
55354642e01fSmrg	  fi
55364642e01fSmrg	  deplibs="$deplib $deplibs"
55374642e01fSmrg	  continue
55384642e01fSmrg	  ;;
5539475c125cSmrg	*.la) lib="$deplib" ;;
55404642e01fSmrg	*.$libext)
55414642e01fSmrg	  if test "$pass" = conv; then
55424642e01fSmrg	    deplibs="$deplib $deplibs"
55434642e01fSmrg	    continue
55444642e01fSmrg	  fi
55454642e01fSmrg	  case $linkmode in
55464642e01fSmrg	  lib)
55474642e01fSmrg	    # Linking convenience modules into shared libraries is allowed,
55484642e01fSmrg	    # but linking other static libraries is non-portable.
55494642e01fSmrg	    case " $dlpreconveniencelibs " in
55504642e01fSmrg	    *" $deplib "*) ;;
55514642e01fSmrg	    *)
55524642e01fSmrg	      valid_a_lib=no
55534642e01fSmrg	      case $deplibs_check_method in
55544642e01fSmrg		match_pattern*)
55554642e01fSmrg		  set dummy $deplibs_check_method; shift
55564642e01fSmrg		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
55576747b715Smrg		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
55584642e01fSmrg		    | $EGREP "$match_pattern_regex" > /dev/null; then
55594642e01fSmrg		    valid_a_lib=yes
55604642e01fSmrg		  fi
55614642e01fSmrg		;;
55624642e01fSmrg		pass_all)
55634642e01fSmrg		  valid_a_lib=yes
55644642e01fSmrg		;;
55654642e01fSmrg	      esac
55664642e01fSmrg	      if test "$valid_a_lib" != yes; then
55676747b715Smrg		echo
55684642e01fSmrg		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
55696747b715Smrg		echo "*** I have the capability to make that library automatically link in when"
55706747b715Smrg		echo "*** you link to this library.  But I can only do this if you have a"
55716747b715Smrg		echo "*** shared version of the library, which you do not appear to have"
55726747b715Smrg		echo "*** because the file extensions .$libext of this argument makes me believe"
55736747b715Smrg		echo "*** that it is just a static archive that I should not use here."
55744642e01fSmrg	      else
55756747b715Smrg		echo
55764642e01fSmrg		$ECHO "*** Warning: Linking the shared library $output against the"
55774642e01fSmrg		$ECHO "*** static library $deplib is not portable!"
55784642e01fSmrg		deplibs="$deplib $deplibs"
55794642e01fSmrg	      fi
55804642e01fSmrg	      ;;
55814642e01fSmrg	    esac
55824642e01fSmrg	    continue
55834642e01fSmrg	    ;;
55844642e01fSmrg	  prog)
55854642e01fSmrg	    if test "$pass" != link; then
55864642e01fSmrg	      deplibs="$deplib $deplibs"
55874642e01fSmrg	    else
55884642e01fSmrg	      compile_deplibs="$deplib $compile_deplibs"
55894642e01fSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
55904642e01fSmrg	    fi
55914642e01fSmrg	    continue
55924642e01fSmrg	    ;;
55934642e01fSmrg	  esac # linkmode
55944642e01fSmrg	  ;; # *.$libext
55954642e01fSmrg	*.lo | *.$objext)
55964642e01fSmrg	  if test "$pass" = conv; then
55974642e01fSmrg	    deplibs="$deplib $deplibs"
55984642e01fSmrg	  elif test "$linkmode" = prog; then
55994642e01fSmrg	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
56004642e01fSmrg	      # If there is no dlopen support or we're linking statically,
56014642e01fSmrg	      # we need to preload.
5602475c125cSmrg	      newdlprefiles="$newdlprefiles $deplib"
56034642e01fSmrg	      compile_deplibs="$deplib $compile_deplibs"
56044642e01fSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
56054642e01fSmrg	    else
5606475c125cSmrg	      newdlfiles="$newdlfiles $deplib"
56074642e01fSmrg	    fi
56084642e01fSmrg	  fi
56094642e01fSmrg	  continue
56104642e01fSmrg	  ;;
56114642e01fSmrg	%DEPLIBS%)
56124642e01fSmrg	  alldeplibs=yes
56134642e01fSmrg	  continue
56144642e01fSmrg	  ;;
56154642e01fSmrg	esac # case $deplib
56164642e01fSmrg
56174642e01fSmrg	if test "$found" = yes || test -f "$lib"; then :
56184642e01fSmrg	else
56194642e01fSmrg	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
56204642e01fSmrg	fi
56214642e01fSmrg
56224642e01fSmrg	# Check to see that this really is a libtool archive.
56234642e01fSmrg	func_lalib_unsafe_p "$lib" \
56244642e01fSmrg	  || func_fatal_error "\`$lib' is not a valid libtool archive"
56254642e01fSmrg
56264642e01fSmrg	func_dirname "$lib" "" "."
56274642e01fSmrg	ladir="$func_dirname_result"
56284642e01fSmrg
56294642e01fSmrg	dlname=
56304642e01fSmrg	dlopen=
56314642e01fSmrg	dlpreopen=
56324642e01fSmrg	libdir=
56334642e01fSmrg	library_names=
56344642e01fSmrg	old_library=
56354642e01fSmrg	inherited_linker_flags=
56364642e01fSmrg	# If the library was installed with an old release of libtool,
56374642e01fSmrg	# it will not redefine variables installed, or shouldnotlink
56384642e01fSmrg	installed=yes
56394642e01fSmrg	shouldnotlink=no
56404642e01fSmrg	avoidtemprpath=
56414642e01fSmrg
56424642e01fSmrg
56434642e01fSmrg	# Read the .la file
56444642e01fSmrg	func_source "$lib"
56454642e01fSmrg
56464642e01fSmrg	# Convert "-framework foo" to "foo.ltframework"
56474642e01fSmrg	if test -n "$inherited_linker_flags"; then
56486747b715Smrg	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
56494642e01fSmrg	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
56504642e01fSmrg	    case " $new_inherited_linker_flags " in
56514642e01fSmrg	      *" $tmp_inherited_linker_flag "*) ;;
5652475c125cSmrg	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
56534642e01fSmrg	    esac
56544642e01fSmrg	  done
56554642e01fSmrg	fi
56566747b715Smrg	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
56574642e01fSmrg	if test "$linkmode,$pass" = "lib,link" ||
56584642e01fSmrg	   test "$linkmode,$pass" = "prog,scan" ||
56594642e01fSmrg	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
5660475c125cSmrg	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
5661475c125cSmrg	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
56624642e01fSmrg	fi
56634642e01fSmrg
56644642e01fSmrg	if test "$pass" = conv; then
56654642e01fSmrg	  # Only check for convenience libraries
56664642e01fSmrg	  deplibs="$lib $deplibs"
56674642e01fSmrg	  if test -z "$libdir"; then
56684642e01fSmrg	    if test -z "$old_library"; then
56694642e01fSmrg	      func_fatal_error "cannot find name of link library for \`$lib'"
56704642e01fSmrg	    fi
56714642e01fSmrg	    # It is a libtool convenience library, so add in its objects.
5672475c125cSmrg	    convenience="$convenience $ladir/$objdir/$old_library"
5673475c125cSmrg	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
56744642e01fSmrg	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
56754642e01fSmrg	    func_fatal_error "\`$lib' is not a convenience library"
56764642e01fSmrg	  fi
56776747b715Smrg	  tmp_libs=
56786747b715Smrg	  for deplib in $dependency_libs; do
56796747b715Smrg	    deplibs="$deplib $deplibs"
5680475c125cSmrg	    if $opt_duplicate_deps ; then
56816747b715Smrg	      case "$tmp_libs " in
5682475c125cSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
56836747b715Smrg	      esac
56846747b715Smrg	    fi
5685475c125cSmrg	    tmp_libs="$tmp_libs $deplib"
56866747b715Smrg	  done
56874642e01fSmrg	  continue
56884642e01fSmrg	fi # $pass = conv
56894642e01fSmrg
56904642e01fSmrg
56914642e01fSmrg	# Get the name of the library we link against.
56924642e01fSmrg	linklib=
5693475c125cSmrg	for l in $old_library $library_names; do
5694475c125cSmrg	  linklib="$l"
5695475c125cSmrg	done
56964642e01fSmrg	if test -z "$linklib"; then
56974642e01fSmrg	  func_fatal_error "cannot find name of link library for \`$lib'"
56984642e01fSmrg	fi
56994642e01fSmrg
57004642e01fSmrg	# This library was specified with -dlopen.
57014642e01fSmrg	if test "$pass" = dlopen; then
57024642e01fSmrg	  if test -z "$libdir"; then
57034642e01fSmrg	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
57044642e01fSmrg	  fi
57054642e01fSmrg	  if test -z "$dlname" ||
57064642e01fSmrg	     test "$dlopen_support" != yes ||
57074642e01fSmrg	     test "$build_libtool_libs" = no; then
57084642e01fSmrg	    # If there is no dlname, no dlopen support or we're linking
57094642e01fSmrg	    # statically, we need to preload.  We also need to preload any
57104642e01fSmrg	    # dependent libraries so libltdl's deplib preloader doesn't
57114642e01fSmrg	    # bomb out in the load deplibs phase.
5712475c125cSmrg	    dlprefiles="$dlprefiles $lib $dependency_libs"
57134642e01fSmrg	  else
5714475c125cSmrg	    newdlfiles="$newdlfiles $lib"
57154642e01fSmrg	  fi
57164642e01fSmrg	  continue
57174642e01fSmrg	fi # $pass = dlopen
57184642e01fSmrg
57194642e01fSmrg	# We need an absolute path.
57204642e01fSmrg	case $ladir in
57214642e01fSmrg	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
57224642e01fSmrg	*)
57234642e01fSmrg	  abs_ladir=`cd "$ladir" && pwd`
57244642e01fSmrg	  if test -z "$abs_ladir"; then
57254642e01fSmrg	    func_warning "cannot determine absolute directory name of \`$ladir'"
57264642e01fSmrg	    func_warning "passing it literally to the linker, although it might fail"
57274642e01fSmrg	    abs_ladir="$ladir"
57284642e01fSmrg	  fi
57294642e01fSmrg	  ;;
57304642e01fSmrg	esac
57314642e01fSmrg	func_basename "$lib"
57324642e01fSmrg	laname="$func_basename_result"
57334642e01fSmrg
57344642e01fSmrg	# Find the relevant object directory and library name.
57354642e01fSmrg	if test "X$installed" = Xyes; then
5736475c125cSmrg	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
57374642e01fSmrg	    func_warning "library \`$lib' was moved."
57384642e01fSmrg	    dir="$ladir"
57394642e01fSmrg	    absdir="$abs_ladir"
57404642e01fSmrg	    libdir="$abs_ladir"
57414642e01fSmrg	  else
5742475c125cSmrg	    dir="$libdir"
5743475c125cSmrg	    absdir="$libdir"
57444642e01fSmrg	  fi
57454642e01fSmrg	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
57464642e01fSmrg	else
57474642e01fSmrg	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
57484642e01fSmrg	    dir="$ladir"
57494642e01fSmrg	    absdir="$abs_ladir"
57504642e01fSmrg	    # Remove this search path later
5751475c125cSmrg	    notinst_path="$notinst_path $abs_ladir"
57524642e01fSmrg	  else
57534642e01fSmrg	    dir="$ladir/$objdir"
57544642e01fSmrg	    absdir="$abs_ladir/$objdir"
57554642e01fSmrg	    # Remove this search path later
5756475c125cSmrg	    notinst_path="$notinst_path $abs_ladir"
57574642e01fSmrg	  fi
57584642e01fSmrg	fi # $installed = yes
57594642e01fSmrg	func_stripname 'lib' '.la' "$laname"
57604642e01fSmrg	name=$func_stripname_result
57614642e01fSmrg
57624642e01fSmrg	# This library was specified with -dlpreopen.
57634642e01fSmrg	if test "$pass" = dlpreopen; then
57644642e01fSmrg	  if test -z "$libdir" && test "$linkmode" = prog; then
57654642e01fSmrg	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
57664642e01fSmrg	  fi
5767475c125cSmrg	  # Prefer using a static library (so that no silly _DYNAMIC symbols
5768475c125cSmrg	  # are required to link).
5769475c125cSmrg	  if test -n "$old_library"; then
5770475c125cSmrg	    newdlprefiles="$newdlprefiles $dir/$old_library"
5771475c125cSmrg	    # Keep a list of preopened convenience libraries to check
5772475c125cSmrg	    # that they are being used correctly in the link pass.
5773475c125cSmrg	    test -z "$libdir" && \
5774475c125cSmrg		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
5775475c125cSmrg	  # Otherwise, use the dlname, so that lt_dlopen finds it.
5776475c125cSmrg	  elif test -n "$dlname"; then
5777475c125cSmrg	    newdlprefiles="$newdlprefiles $dir/$dlname"
5778475c125cSmrg	  else
5779475c125cSmrg	    newdlprefiles="$newdlprefiles $dir/$linklib"
5780475c125cSmrg	  fi
57814642e01fSmrg	fi # $pass = dlpreopen
57824642e01fSmrg
57834642e01fSmrg	if test -z "$libdir"; then
57844642e01fSmrg	  # Link the convenience library
57854642e01fSmrg	  if test "$linkmode" = lib; then
57864642e01fSmrg	    deplibs="$dir/$old_library $deplibs"
57874642e01fSmrg	  elif test "$linkmode,$pass" = "prog,link"; then
57884642e01fSmrg	    compile_deplibs="$dir/$old_library $compile_deplibs"
57894642e01fSmrg	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
57904642e01fSmrg	  else
57914642e01fSmrg	    deplibs="$lib $deplibs" # used for prog,scan pass
57924642e01fSmrg	  fi
57934642e01fSmrg	  continue
57944642e01fSmrg	fi
57954642e01fSmrg
57964642e01fSmrg
57974642e01fSmrg	if test "$linkmode" = prog && test "$pass" != link; then
5798475c125cSmrg	  newlib_search_path="$newlib_search_path $ladir"
57994642e01fSmrg	  deplibs="$lib $deplibs"
58004642e01fSmrg
58014642e01fSmrg	  linkalldeplibs=no
58024642e01fSmrg	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
58034642e01fSmrg	     test "$build_libtool_libs" = no; then
58044642e01fSmrg	    linkalldeplibs=yes
58054642e01fSmrg	  fi
58064642e01fSmrg
58074642e01fSmrg	  tmp_libs=
58084642e01fSmrg	  for deplib in $dependency_libs; do
58094642e01fSmrg	    case $deplib in
58104642e01fSmrg	    -L*) func_stripname '-L' '' "$deplib"
5811475c125cSmrg	         newlib_search_path="$newlib_search_path $func_stripname_result"
58124642e01fSmrg		 ;;
58134642e01fSmrg	    esac
58144642e01fSmrg	    # Need to link against all dependency_libs?
58154642e01fSmrg	    if test "$linkalldeplibs" = yes; then
58164642e01fSmrg	      deplibs="$deplib $deplibs"
58174642e01fSmrg	    else
58184642e01fSmrg	      # Need to hardcode shared library paths
58194642e01fSmrg	      # or/and link against static libraries
58204642e01fSmrg	      newdependency_libs="$deplib $newdependency_libs"
58214642e01fSmrg	    fi
5822475c125cSmrg	    if $opt_duplicate_deps ; then
58234642e01fSmrg	      case "$tmp_libs " in
5824475c125cSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
58254642e01fSmrg	      esac
58264642e01fSmrg	    fi
5827475c125cSmrg	    tmp_libs="$tmp_libs $deplib"
58284642e01fSmrg	  done # for deplib
58294642e01fSmrg	  continue
58304642e01fSmrg	fi # $linkmode = prog...
58314642e01fSmrg
58324642e01fSmrg	if test "$linkmode,$pass" = "prog,link"; then
58334642e01fSmrg	  if test -n "$library_names" &&
58344642e01fSmrg	     { { test "$prefer_static_libs" = no ||
58354642e01fSmrg	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
58364642e01fSmrg	       test -z "$old_library"; }; then
58374642e01fSmrg	    # We need to hardcode the library path
58384642e01fSmrg	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
58394642e01fSmrg	      # Make sure the rpath contains only unique directories.
58404642e01fSmrg	      case "$temp_rpath:" in
58414642e01fSmrg	      *"$absdir:"*) ;;
5842475c125cSmrg	      *) temp_rpath="$temp_rpath$absdir:" ;;
58434642e01fSmrg	      esac
58444642e01fSmrg	    fi
58454642e01fSmrg
58464642e01fSmrg	    # Hardcode the library path.
58474642e01fSmrg	    # Skip directories that are in the system default run-time
58484642e01fSmrg	    # search path.
58494642e01fSmrg	    case " $sys_lib_dlsearch_path " in
58504642e01fSmrg	    *" $absdir "*) ;;
58514642e01fSmrg	    *)
58524642e01fSmrg	      case "$compile_rpath " in
58534642e01fSmrg	      *" $absdir "*) ;;
5854475c125cSmrg	      *) compile_rpath="$compile_rpath $absdir"
58554642e01fSmrg	      esac
58564642e01fSmrg	      ;;
58574642e01fSmrg	    esac
58584642e01fSmrg	    case " $sys_lib_dlsearch_path " in
58594642e01fSmrg	    *" $libdir "*) ;;
58604642e01fSmrg	    *)
58614642e01fSmrg	      case "$finalize_rpath " in
58624642e01fSmrg	      *" $libdir "*) ;;
5863475c125cSmrg	      *) finalize_rpath="$finalize_rpath $libdir"
58644642e01fSmrg	      esac
58654642e01fSmrg	      ;;
58664642e01fSmrg	    esac
58674642e01fSmrg	  fi # $linkmode,$pass = prog,link...
58684642e01fSmrg
58694642e01fSmrg	  if test "$alldeplibs" = yes &&
58704642e01fSmrg	     { test "$deplibs_check_method" = pass_all ||
58714642e01fSmrg	       { test "$build_libtool_libs" = yes &&
58724642e01fSmrg		 test -n "$library_names"; }; }; then
58734642e01fSmrg	    # We only need to search for static libraries
58744642e01fSmrg	    continue
58754642e01fSmrg	  fi
58764642e01fSmrg	fi
58774642e01fSmrg
58784642e01fSmrg	link_static=no # Whether the deplib will be linked statically
58794642e01fSmrg	use_static_libs=$prefer_static_libs
58804642e01fSmrg	if test "$use_static_libs" = built && test "$installed" = yes; then
58814642e01fSmrg	  use_static_libs=no
58824642e01fSmrg	fi
58834642e01fSmrg	if test -n "$library_names" &&
58844642e01fSmrg	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
58854642e01fSmrg	  case $host in
58864642e01fSmrg	  *cygwin* | *mingw* | *cegcc*)
58874642e01fSmrg	      # No point in relinking DLLs because paths are not encoded
5888475c125cSmrg	      notinst_deplibs="$notinst_deplibs $lib"
58894642e01fSmrg	      need_relink=no
58904642e01fSmrg	    ;;
58914642e01fSmrg	  *)
58924642e01fSmrg	    if test "$installed" = no; then
5893475c125cSmrg	      notinst_deplibs="$notinst_deplibs $lib"
58944642e01fSmrg	      need_relink=yes
58954642e01fSmrg	    fi
58964642e01fSmrg	    ;;
58974642e01fSmrg	  esac
58984642e01fSmrg	  # This is a shared library
58994642e01fSmrg
59004642e01fSmrg	  # Warn about portability, can't link against -module's on some
59014642e01fSmrg	  # systems (darwin).  Don't bleat about dlopened modules though!
59024642e01fSmrg	  dlopenmodule=""
59034642e01fSmrg	  for dlpremoduletest in $dlprefiles; do
59044642e01fSmrg	    if test "X$dlpremoduletest" = "X$lib"; then
59054642e01fSmrg	      dlopenmodule="$dlpremoduletest"
59064642e01fSmrg	      break
59074642e01fSmrg	    fi
59084642e01fSmrg	  done
59094642e01fSmrg	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
59106747b715Smrg	    echo
59114642e01fSmrg	    if test "$linkmode" = prog; then
59124642e01fSmrg	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
59134642e01fSmrg	    else
59144642e01fSmrg	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
59154642e01fSmrg	    fi
59164642e01fSmrg	    $ECHO "*** $linklib is not portable!"
59174642e01fSmrg	  fi
59184642e01fSmrg	  if test "$linkmode" = lib &&
59194642e01fSmrg	     test "$hardcode_into_libs" = yes; then
59204642e01fSmrg	    # Hardcode the library path.
59214642e01fSmrg	    # Skip directories that are in the system default run-time
59224642e01fSmrg	    # search path.
59234642e01fSmrg	    case " $sys_lib_dlsearch_path " in
59244642e01fSmrg	    *" $absdir "*) ;;
59254642e01fSmrg	    *)
59264642e01fSmrg	      case "$compile_rpath " in
59274642e01fSmrg	      *" $absdir "*) ;;
5928475c125cSmrg	      *) compile_rpath="$compile_rpath $absdir"
59294642e01fSmrg	      esac
59304642e01fSmrg	      ;;
59314642e01fSmrg	    esac
59324642e01fSmrg	    case " $sys_lib_dlsearch_path " in
59334642e01fSmrg	    *" $libdir "*) ;;
59344642e01fSmrg	    *)
59354642e01fSmrg	      case "$finalize_rpath " in
59364642e01fSmrg	      *" $libdir "*) ;;
5937475c125cSmrg	      *) finalize_rpath="$finalize_rpath $libdir"
59384642e01fSmrg	      esac
59394642e01fSmrg	      ;;
59404642e01fSmrg	    esac
59414642e01fSmrg	  fi
59424642e01fSmrg
59434642e01fSmrg	  if test -n "$old_archive_from_expsyms_cmds"; then
59444642e01fSmrg	    # figure out the soname
59454642e01fSmrg	    set dummy $library_names
59464642e01fSmrg	    shift
59474642e01fSmrg	    realname="$1"
59484642e01fSmrg	    shift
59494642e01fSmrg	    libname=`eval "\\$ECHO \"$libname_spec\""`
59504642e01fSmrg	    # use dlname if we got it. it's perfectly good, no?
59514642e01fSmrg	    if test -n "$dlname"; then
59524642e01fSmrg	      soname="$dlname"
59534642e01fSmrg	    elif test -n "$soname_spec"; then
59544642e01fSmrg	      # bleh windows
59554642e01fSmrg	      case $host in
59564642e01fSmrg	      *cygwin* | mingw* | *cegcc*)
59574642e01fSmrg	        func_arith $current - $age
59584642e01fSmrg		major=$func_arith_result
59594642e01fSmrg		versuffix="-$major"
59604642e01fSmrg		;;
59614642e01fSmrg	      esac
59624642e01fSmrg	      eval soname=\"$soname_spec\"
59634642e01fSmrg	    else
59644642e01fSmrg	      soname="$realname"
59654642e01fSmrg	    fi
59664642e01fSmrg
59674642e01fSmrg	    # Make a new name for the extract_expsyms_cmds to use
59684642e01fSmrg	    soroot="$soname"
59694642e01fSmrg	    func_basename "$soroot"
59704642e01fSmrg	    soname="$func_basename_result"
59714642e01fSmrg	    func_stripname 'lib' '.dll' "$soname"
59724642e01fSmrg	    newlib=libimp-$func_stripname_result.a
59734642e01fSmrg
59744642e01fSmrg	    # If the library has no export list, then create one now
59754642e01fSmrg	    if test -f "$output_objdir/$soname-def"; then :
59764642e01fSmrg	    else
59774642e01fSmrg	      func_verbose "extracting exported symbol list from \`$soname'"
59784642e01fSmrg	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
59794642e01fSmrg	    fi
59804642e01fSmrg
59814642e01fSmrg	    # Create $newlib
59824642e01fSmrg	    if test -f "$output_objdir/$newlib"; then :; else
59834642e01fSmrg	      func_verbose "generating import library for \`$soname'"
59844642e01fSmrg	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
59854642e01fSmrg	    fi
59864642e01fSmrg	    # make sure the library variables are pointing to the new library
59874642e01fSmrg	    dir=$output_objdir
59884642e01fSmrg	    linklib=$newlib
59894642e01fSmrg	  fi # test -n "$old_archive_from_expsyms_cmds"
59904642e01fSmrg
5991475c125cSmrg	  if test "$linkmode" = prog || test "$mode" != relink; then
59924642e01fSmrg	    add_shlibpath=
59934642e01fSmrg	    add_dir=
59944642e01fSmrg	    add=
59954642e01fSmrg	    lib_linked=yes
59964642e01fSmrg	    case $hardcode_action in
59974642e01fSmrg	    immediate | unsupported)
59984642e01fSmrg	      if test "$hardcode_direct" = no; then
59994642e01fSmrg		add="$dir/$linklib"
60004642e01fSmrg		case $host in
60014642e01fSmrg		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
60024642e01fSmrg		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
60034642e01fSmrg		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
60044642e01fSmrg		    *-*-unixware7*) add_dir="-L$dir" ;;
60054642e01fSmrg		  *-*-darwin* )
60064642e01fSmrg		    # if the lib is a (non-dlopened) module then we can not
60074642e01fSmrg		    # link against it, someone is ignoring the earlier warnings
60084642e01fSmrg		    if /usr/bin/file -L $add 2> /dev/null |
60094642e01fSmrg			 $GREP ": [^:]* bundle" >/dev/null ; then
60104642e01fSmrg		      if test "X$dlopenmodule" != "X$lib"; then
60114642e01fSmrg			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
60124642e01fSmrg			if test -z "$old_library" ; then
60136747b715Smrg			  echo
60146747b715Smrg			  echo "*** And there doesn't seem to be a static archive available"
60156747b715Smrg			  echo "*** The link will probably fail, sorry"
60164642e01fSmrg			else
60174642e01fSmrg			  add="$dir/$old_library"
60184642e01fSmrg			fi
60194642e01fSmrg		      elif test -n "$old_library"; then
60204642e01fSmrg			add="$dir/$old_library"
60214642e01fSmrg		      fi
60224642e01fSmrg		    fi
60234642e01fSmrg		esac
60244642e01fSmrg	      elif test "$hardcode_minus_L" = no; then
60254642e01fSmrg		case $host in
60264642e01fSmrg		*-*-sunos*) add_shlibpath="$dir" ;;
60274642e01fSmrg		esac
60284642e01fSmrg		add_dir="-L$dir"
60294642e01fSmrg		add="-l$name"
60304642e01fSmrg	      elif test "$hardcode_shlibpath_var" = no; then
60314642e01fSmrg		add_shlibpath="$dir"
60324642e01fSmrg		add="-l$name"
60334642e01fSmrg	      else
60344642e01fSmrg		lib_linked=no
60354642e01fSmrg	      fi
60364642e01fSmrg	      ;;
60374642e01fSmrg	    relink)
60384642e01fSmrg	      if test "$hardcode_direct" = yes &&
60394642e01fSmrg	         test "$hardcode_direct_absolute" = no; then
60404642e01fSmrg		add="$dir/$linklib"
60414642e01fSmrg	      elif test "$hardcode_minus_L" = yes; then
60424642e01fSmrg		add_dir="-L$dir"
60434642e01fSmrg		# Try looking first in the location we're being installed to.
60444642e01fSmrg		if test -n "$inst_prefix_dir"; then
60454642e01fSmrg		  case $libdir in
60464642e01fSmrg		    [\\/]*)
6047475c125cSmrg		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
60484642e01fSmrg		      ;;
60494642e01fSmrg		  esac
60504642e01fSmrg		fi
60514642e01fSmrg		add="-l$name"
60524642e01fSmrg	      elif test "$hardcode_shlibpath_var" = yes; then
60534642e01fSmrg		add_shlibpath="$dir"
60544642e01fSmrg		add="-l$name"
60554642e01fSmrg	      else
60564642e01fSmrg		lib_linked=no
60574642e01fSmrg	      fi
60584642e01fSmrg	      ;;
60594642e01fSmrg	    *) lib_linked=no ;;
60604642e01fSmrg	    esac
60614642e01fSmrg
60624642e01fSmrg	    if test "$lib_linked" != yes; then
60634642e01fSmrg	      func_fatal_configuration "unsupported hardcode properties"
60644642e01fSmrg	    fi
60654642e01fSmrg
60664642e01fSmrg	    if test -n "$add_shlibpath"; then
60674642e01fSmrg	      case :$compile_shlibpath: in
60684642e01fSmrg	      *":$add_shlibpath:"*) ;;
6069475c125cSmrg	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
60704642e01fSmrg	      esac
60714642e01fSmrg	    fi
60724642e01fSmrg	    if test "$linkmode" = prog; then
60734642e01fSmrg	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
60744642e01fSmrg	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
60754642e01fSmrg	    else
60764642e01fSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
60774642e01fSmrg	      test -n "$add" && deplibs="$add $deplibs"
60784642e01fSmrg	      if test "$hardcode_direct" != yes &&
60794642e01fSmrg		 test "$hardcode_minus_L" != yes &&
60804642e01fSmrg		 test "$hardcode_shlibpath_var" = yes; then
60814642e01fSmrg		case :$finalize_shlibpath: in
60824642e01fSmrg		*":$libdir:"*) ;;
6083475c125cSmrg		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
60844642e01fSmrg		esac
60854642e01fSmrg	      fi
60864642e01fSmrg	    fi
60874642e01fSmrg	  fi
60884642e01fSmrg
6089475c125cSmrg	  if test "$linkmode" = prog || test "$mode" = relink; then
60904642e01fSmrg	    add_shlibpath=
60914642e01fSmrg	    add_dir=
60924642e01fSmrg	    add=
60934642e01fSmrg	    # Finalize command for both is simple: just hardcode it.
60944642e01fSmrg	    if test "$hardcode_direct" = yes &&
60954642e01fSmrg	       test "$hardcode_direct_absolute" = no; then
60964642e01fSmrg	      add="$libdir/$linklib"
60974642e01fSmrg	    elif test "$hardcode_minus_L" = yes; then
60984642e01fSmrg	      add_dir="-L$libdir"
60994642e01fSmrg	      add="-l$name"
61004642e01fSmrg	    elif test "$hardcode_shlibpath_var" = yes; then
61014642e01fSmrg	      case :$finalize_shlibpath: in
61024642e01fSmrg	      *":$libdir:"*) ;;
6103475c125cSmrg	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
61044642e01fSmrg	      esac
61054642e01fSmrg	      add="-l$name"
61064642e01fSmrg	    elif test "$hardcode_automatic" = yes; then
61074642e01fSmrg	      if test -n "$inst_prefix_dir" &&
61084642e01fSmrg		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
61094642e01fSmrg		add="$inst_prefix_dir$libdir/$linklib"
61104642e01fSmrg	      else
61114642e01fSmrg		add="$libdir/$linklib"
61124642e01fSmrg	      fi
61134642e01fSmrg	    else
61144642e01fSmrg	      # We cannot seem to hardcode it, guess we'll fake it.
61154642e01fSmrg	      add_dir="-L$libdir"
61164642e01fSmrg	      # Try looking first in the location we're being installed to.
61174642e01fSmrg	      if test -n "$inst_prefix_dir"; then
61184642e01fSmrg		case $libdir in
61194642e01fSmrg		  [\\/]*)
6120475c125cSmrg		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
61214642e01fSmrg		    ;;
61224642e01fSmrg		esac
61234642e01fSmrg	      fi
61244642e01fSmrg	      add="-l$name"
61254642e01fSmrg	    fi
61264642e01fSmrg
61274642e01fSmrg	    if test "$linkmode" = prog; then
61284642e01fSmrg	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
61294642e01fSmrg	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
61304642e01fSmrg	    else
61314642e01fSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
61324642e01fSmrg	      test -n "$add" && deplibs="$add $deplibs"
61334642e01fSmrg	    fi
61344642e01fSmrg	  fi
61354642e01fSmrg	elif test "$linkmode" = prog; then
61364642e01fSmrg	  # Here we assume that one of hardcode_direct or hardcode_minus_L
61374642e01fSmrg	  # is not unsupported.  This is valid on all known static and
61384642e01fSmrg	  # shared platforms.
61394642e01fSmrg	  if test "$hardcode_direct" != unsupported; then
61404642e01fSmrg	    test -n "$old_library" && linklib="$old_library"
61414642e01fSmrg	    compile_deplibs="$dir/$linklib $compile_deplibs"
61424642e01fSmrg	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
61434642e01fSmrg	  else
61444642e01fSmrg	    compile_deplibs="-l$name -L$dir $compile_deplibs"
61454642e01fSmrg	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
61464642e01fSmrg	  fi
61474642e01fSmrg	elif test "$build_libtool_libs" = yes; then
61484642e01fSmrg	  # Not a shared library
61494642e01fSmrg	  if test "$deplibs_check_method" != pass_all; then
61504642e01fSmrg	    # We're trying link a shared library against a static one
61514642e01fSmrg	    # but the system doesn't support it.
61524642e01fSmrg
61534642e01fSmrg	    # Just print a warning and add the library to dependency_libs so
61544642e01fSmrg	    # that the program can be linked against the static library.
61556747b715Smrg	    echo
61564642e01fSmrg	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
61576747b715Smrg	    echo "*** I have the capability to make that library automatically link in when"
61586747b715Smrg	    echo "*** you link to this library.  But I can only do this if you have a"
61596747b715Smrg	    echo "*** shared version of the library, which you do not appear to have."
61604642e01fSmrg	    if test "$module" = yes; then
61616747b715Smrg	      echo "*** But as you try to build a module library, libtool will still create "
61626747b715Smrg	      echo "*** a static module, that should work as long as the dlopening application"
61636747b715Smrg	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
61644642e01fSmrg	      if test -z "$global_symbol_pipe"; then
61656747b715Smrg		echo
61666747b715Smrg		echo "*** However, this would only work if libtool was able to extract symbol"
61676747b715Smrg		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
61686747b715Smrg		echo "*** not find such a program.  So, this module is probably useless."
61696747b715Smrg		echo "*** \`nm' from GNU binutils and a full rebuild may help."
61704642e01fSmrg	      fi
61714642e01fSmrg	      if test "$build_old_libs" = no; then
61724642e01fSmrg		build_libtool_libs=module
61734642e01fSmrg		build_old_libs=yes
61744642e01fSmrg	      else
61754642e01fSmrg		build_libtool_libs=no
61764642e01fSmrg	      fi
61774642e01fSmrg	    fi
61784642e01fSmrg	  else
61794642e01fSmrg	    deplibs="$dir/$old_library $deplibs"
61804642e01fSmrg	    link_static=yes
61814642e01fSmrg	  fi
61824642e01fSmrg	fi # link shared/static library?
61834642e01fSmrg
61844642e01fSmrg	if test "$linkmode" = lib; then
61854642e01fSmrg	  if test -n "$dependency_libs" &&
61864642e01fSmrg	     { test "$hardcode_into_libs" != yes ||
61874642e01fSmrg	       test "$build_old_libs" = yes ||
61884642e01fSmrg	       test "$link_static" = yes; }; then
61894642e01fSmrg	    # Extract -R from dependency_libs
61904642e01fSmrg	    temp_deplibs=
61914642e01fSmrg	    for libdir in $dependency_libs; do
61924642e01fSmrg	      case $libdir in
61934642e01fSmrg	      -R*) func_stripname '-R' '' "$libdir"
61944642e01fSmrg	           temp_xrpath=$func_stripname_result
61954642e01fSmrg		   case " $xrpath " in
61964642e01fSmrg		   *" $temp_xrpath "*) ;;
6197475c125cSmrg		   *) xrpath="$xrpath $temp_xrpath";;
61984642e01fSmrg		   esac;;
6199475c125cSmrg	      *) temp_deplibs="$temp_deplibs $libdir";;
62004642e01fSmrg	      esac
62014642e01fSmrg	    done
62024642e01fSmrg	    dependency_libs="$temp_deplibs"
62034642e01fSmrg	  fi
62044642e01fSmrg
6205475c125cSmrg	  newlib_search_path="$newlib_search_path $absdir"
62064642e01fSmrg	  # Link against this library
62074642e01fSmrg	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
62084642e01fSmrg	  # ... and its dependency_libs
62094642e01fSmrg	  tmp_libs=
62104642e01fSmrg	  for deplib in $dependency_libs; do
62114642e01fSmrg	    newdependency_libs="$deplib $newdependency_libs"
6212475c125cSmrg	    if $opt_duplicate_deps ; then
62134642e01fSmrg	      case "$tmp_libs " in
6214475c125cSmrg	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
62154642e01fSmrg	      esac
62164642e01fSmrg	    fi
6217475c125cSmrg	    tmp_libs="$tmp_libs $deplib"
62184642e01fSmrg	  done
62194642e01fSmrg
62204642e01fSmrg	  if test "$link_all_deplibs" != no; then
62214642e01fSmrg	    # Add the search paths of all dependency libraries
62224642e01fSmrg	    for deplib in $dependency_libs; do
62234642e01fSmrg	      path=
62244642e01fSmrg	      case $deplib in
62254642e01fSmrg	      -L*) path="$deplib" ;;
62264642e01fSmrg	      *.la)
62274642e01fSmrg	        func_dirname "$deplib" "" "."
6228475c125cSmrg		dir="$func_dirname_result"
62294642e01fSmrg		# We need an absolute path.
62304642e01fSmrg		case $dir in
62314642e01fSmrg		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
62324642e01fSmrg		*)
62334642e01fSmrg		  absdir=`cd "$dir" && pwd`
62344642e01fSmrg		  if test -z "$absdir"; then
62354642e01fSmrg		    func_warning "cannot determine absolute directory name of \`$dir'"
62364642e01fSmrg		    absdir="$dir"
62374642e01fSmrg		  fi
62384642e01fSmrg		  ;;
62394642e01fSmrg		esac
62404642e01fSmrg		if $GREP "^installed=no" $deplib > /dev/null; then
62414642e01fSmrg		case $host in
62424642e01fSmrg		*-*-darwin*)
62434642e01fSmrg		  depdepl=
62444642e01fSmrg		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
62454642e01fSmrg		  if test -n "$deplibrary_names" ; then
62464642e01fSmrg		    for tmp in $deplibrary_names ; do
62474642e01fSmrg		      depdepl=$tmp
62484642e01fSmrg		    done
62494642e01fSmrg		    if test -f "$absdir/$objdir/$depdepl" ; then
62504642e01fSmrg		      depdepl="$absdir/$objdir/$depdepl"
62514642e01fSmrg		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
62524642e01fSmrg                      if test -z "$darwin_install_name"; then
62534642e01fSmrg                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
62544642e01fSmrg                      fi
6255475c125cSmrg		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
6256475c125cSmrg		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
62574642e01fSmrg		      path=
62584642e01fSmrg		    fi
62594642e01fSmrg		  fi
62604642e01fSmrg		  ;;
62614642e01fSmrg		*)
62624642e01fSmrg		  path="-L$absdir/$objdir"
62634642e01fSmrg		  ;;
62644642e01fSmrg		esac
62654642e01fSmrg		else
62664642e01fSmrg		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
62674642e01fSmrg		  test -z "$libdir" && \
62684642e01fSmrg		    func_fatal_error "\`$deplib' is not a valid libtool archive"
62694642e01fSmrg		  test "$absdir" != "$libdir" && \
62704642e01fSmrg		    func_warning "\`$deplib' seems to be moved"
62714642e01fSmrg
62724642e01fSmrg		  path="-L$absdir"
62734642e01fSmrg		fi
62744642e01fSmrg		;;
62754642e01fSmrg	      esac
62764642e01fSmrg	      case " $deplibs " in
62774642e01fSmrg	      *" $path "*) ;;
62784642e01fSmrg	      *) deplibs="$path $deplibs" ;;
62794642e01fSmrg	      esac
62804642e01fSmrg	    done
62814642e01fSmrg	  fi # link_all_deplibs != no
62824642e01fSmrg	fi # linkmode = lib
62834642e01fSmrg      done # for deplib in $libs
62844642e01fSmrg      if test "$pass" = link; then
62854642e01fSmrg	if test "$linkmode" = "prog"; then
62864642e01fSmrg	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
62874642e01fSmrg	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
62884642e01fSmrg	else
62896747b715Smrg	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
62904642e01fSmrg	fi
62914642e01fSmrg      fi
62924642e01fSmrg      dependency_libs="$newdependency_libs"
62934642e01fSmrg      if test "$pass" = dlpreopen; then
62944642e01fSmrg	# Link the dlpreopened libraries before other libraries
62954642e01fSmrg	for deplib in $save_deplibs; do
62964642e01fSmrg	  deplibs="$deplib $deplibs"
62974642e01fSmrg	done
62984642e01fSmrg      fi
62994642e01fSmrg      if test "$pass" != dlopen; then
63004642e01fSmrg	if test "$pass" != conv; then
63014642e01fSmrg	  # Make sure lib_search_path contains only unique directories.
63024642e01fSmrg	  lib_search_path=
63034642e01fSmrg	  for dir in $newlib_search_path; do
63044642e01fSmrg	    case "$lib_search_path " in
63054642e01fSmrg	    *" $dir "*) ;;
6306475c125cSmrg	    *) lib_search_path="$lib_search_path $dir" ;;
63074642e01fSmrg	    esac
63084642e01fSmrg	  done
63094642e01fSmrg	  newlib_search_path=
63104642e01fSmrg	fi
63114642e01fSmrg
63124642e01fSmrg	if test "$linkmode,$pass" != "prog,link"; then
63134642e01fSmrg	  vars="deplibs"
63144642e01fSmrg	else
63154642e01fSmrg	  vars="compile_deplibs finalize_deplibs"
63164642e01fSmrg	fi
63174642e01fSmrg	for var in $vars dependency_libs; do
63184642e01fSmrg	  # Add libraries to $var in reverse order
63194642e01fSmrg	  eval tmp_libs=\"\$$var\"
63204642e01fSmrg	  new_libs=
63214642e01fSmrg	  for deplib in $tmp_libs; do
63224642e01fSmrg	    # FIXME: Pedantically, this is the right thing to do, so
63234642e01fSmrg	    #        that some nasty dependency loop isn't accidentally
63244642e01fSmrg	    #        broken:
63254642e01fSmrg	    #new_libs="$deplib $new_libs"
63264642e01fSmrg	    # Pragmatically, this seems to cause very few problems in
63274642e01fSmrg	    # practice:
63284642e01fSmrg	    case $deplib in
63294642e01fSmrg	    -L*) new_libs="$deplib $new_libs" ;;
63304642e01fSmrg	    -R*) ;;
63314642e01fSmrg	    *)
63324642e01fSmrg	      # And here is the reason: when a library appears more
63334642e01fSmrg	      # than once as an explicit dependence of a library, or
63344642e01fSmrg	      # is implicitly linked in more than once by the
63354642e01fSmrg	      # compiler, it is considered special, and multiple
63364642e01fSmrg	      # occurrences thereof are not removed.  Compare this
63374642e01fSmrg	      # with having the same library being listed as a
63384642e01fSmrg	      # dependency of multiple other libraries: in this case,
63394642e01fSmrg	      # we know (pedantically, we assume) the library does not
63404642e01fSmrg	      # need to be listed more than once, so we keep only the
63414642e01fSmrg	      # last copy.  This is not always right, but it is rare
63424642e01fSmrg	      # enough that we require users that really mean to play
63434642e01fSmrg	      # such unportable linking tricks to link the library
63444642e01fSmrg	      # using -Wl,-lname, so that libtool does not consider it
63454642e01fSmrg	      # for duplicate removal.
63464642e01fSmrg	      case " $specialdeplibs " in
63474642e01fSmrg	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
63484642e01fSmrg	      *)
63494642e01fSmrg		case " $new_libs " in
63504642e01fSmrg		*" $deplib "*) ;;
63514642e01fSmrg		*) new_libs="$deplib $new_libs" ;;
63524642e01fSmrg		esac
63534642e01fSmrg		;;
63544642e01fSmrg	      esac
63554642e01fSmrg	      ;;
63564642e01fSmrg	    esac
63574642e01fSmrg	  done
63584642e01fSmrg	  tmp_libs=
63594642e01fSmrg	  for deplib in $new_libs; do
63604642e01fSmrg	    case $deplib in
63614642e01fSmrg	    -L*)
63624642e01fSmrg	      case " $tmp_libs " in
63634642e01fSmrg	      *" $deplib "*) ;;
6364475c125cSmrg	      *) tmp_libs="$tmp_libs $deplib" ;;
63654642e01fSmrg	      esac
63664642e01fSmrg	      ;;
6367475c125cSmrg	    *) tmp_libs="$tmp_libs $deplib" ;;
63684642e01fSmrg	    esac
63694642e01fSmrg	  done
63704642e01fSmrg	  eval $var=\"$tmp_libs\"
63714642e01fSmrg	done # for var
63724642e01fSmrg      fi
63734642e01fSmrg      # Last step: remove runtime libs from dependency_libs
63744642e01fSmrg      # (they stay in deplibs)
63754642e01fSmrg      tmp_libs=
63764642e01fSmrg      for i in $dependency_libs ; do
63774642e01fSmrg	case " $predeps $postdeps $compiler_lib_search_path " in
63784642e01fSmrg	*" $i "*)
63794642e01fSmrg	  i=""
63804642e01fSmrg	  ;;
63814642e01fSmrg	esac
63824642e01fSmrg	if test -n "$i" ; then
6383475c125cSmrg	  tmp_libs="$tmp_libs $i"
63844642e01fSmrg	fi
63854642e01fSmrg      done
63864642e01fSmrg      dependency_libs=$tmp_libs
63874642e01fSmrg    done # for pass
63884642e01fSmrg    if test "$linkmode" = prog; then
63894642e01fSmrg      dlfiles="$newdlfiles"
63904642e01fSmrg    fi
63914642e01fSmrg    if test "$linkmode" = prog || test "$linkmode" = lib; then
63924642e01fSmrg      dlprefiles="$newdlprefiles"
63934642e01fSmrg    fi
63944642e01fSmrg
63954642e01fSmrg    case $linkmode in
63964642e01fSmrg    oldlib)
63974642e01fSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
63984642e01fSmrg	func_warning "\`-dlopen' is ignored for archives"
63994642e01fSmrg      fi
64004642e01fSmrg
64014642e01fSmrg      case " $deplibs" in
64024642e01fSmrg      *\ -l* | *\ -L*)
64034642e01fSmrg	func_warning "\`-l' and \`-L' are ignored for archives" ;;
64044642e01fSmrg      esac
64054642e01fSmrg
64064642e01fSmrg      test -n "$rpath" && \
64074642e01fSmrg	func_warning "\`-rpath' is ignored for archives"
64084642e01fSmrg
64094642e01fSmrg      test -n "$xrpath" && \
64104642e01fSmrg	func_warning "\`-R' is ignored for archives"
64114642e01fSmrg
64124642e01fSmrg      test -n "$vinfo" && \
64134642e01fSmrg	func_warning "\`-version-info/-version-number' is ignored for archives"
64144642e01fSmrg
64154642e01fSmrg      test -n "$release" && \
64164642e01fSmrg	func_warning "\`-release' is ignored for archives"
64174642e01fSmrg
64184642e01fSmrg      test -n "$export_symbols$export_symbols_regex" && \
64194642e01fSmrg	func_warning "\`-export-symbols' is ignored for archives"
64204642e01fSmrg
64214642e01fSmrg      # Now set the variables for building old libraries.
64224642e01fSmrg      build_libtool_libs=no
64234642e01fSmrg      oldlibs="$output"
6424475c125cSmrg      objs="$objs$old_deplibs"
64254642e01fSmrg      ;;
64264642e01fSmrg
64274642e01fSmrg    lib)
64284642e01fSmrg      # Make sure we only generate libraries of the form `libNAME.la'.
64294642e01fSmrg      case $outputname in
64304642e01fSmrg      lib*)
64314642e01fSmrg	func_stripname 'lib' '.la' "$outputname"
64324642e01fSmrg	name=$func_stripname_result
64334642e01fSmrg	eval shared_ext=\"$shrext_cmds\"
64344642e01fSmrg	eval libname=\"$libname_spec\"
64354642e01fSmrg	;;
64364642e01fSmrg      *)
64374642e01fSmrg	test "$module" = no && \
64384642e01fSmrg	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
64394642e01fSmrg
64404642e01fSmrg	if test "$need_lib_prefix" != no; then
64414642e01fSmrg	  # Add the "lib" prefix for modules if required
64424642e01fSmrg	  func_stripname '' '.la' "$outputname"
64434642e01fSmrg	  name=$func_stripname_result
64444642e01fSmrg	  eval shared_ext=\"$shrext_cmds\"
64454642e01fSmrg	  eval libname=\"$libname_spec\"
64464642e01fSmrg	else
64474642e01fSmrg	  func_stripname '' '.la' "$outputname"
64484642e01fSmrg	  libname=$func_stripname_result
64494642e01fSmrg	fi
64504642e01fSmrg	;;
64514642e01fSmrg      esac
64524642e01fSmrg
64534642e01fSmrg      if test -n "$objs"; then
64544642e01fSmrg	if test "$deplibs_check_method" != pass_all; then
64554642e01fSmrg	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
64564642e01fSmrg	else
64576747b715Smrg	  echo
64584642e01fSmrg	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
64594642e01fSmrg	  $ECHO "*** objects $objs is not portable!"
6460475c125cSmrg	  libobjs="$libobjs $objs"
64614642e01fSmrg	fi
64624642e01fSmrg      fi
64634642e01fSmrg
64644642e01fSmrg      test "$dlself" != no && \
64654642e01fSmrg	func_warning "\`-dlopen self' is ignored for libtool libraries"
64664642e01fSmrg
64674642e01fSmrg      set dummy $rpath
64684642e01fSmrg      shift
64694642e01fSmrg      test "$#" -gt 1 && \
64704642e01fSmrg	func_warning "ignoring multiple \`-rpath's for a libtool library"
64714642e01fSmrg
64724642e01fSmrg      install_libdir="$1"
64734642e01fSmrg
64744642e01fSmrg      oldlibs=
64754642e01fSmrg      if test -z "$rpath"; then
64764642e01fSmrg	if test "$build_libtool_libs" = yes; then
64774642e01fSmrg	  # Building a libtool convenience library.
64784642e01fSmrg	  # Some compilers have problems with a `.al' extension so
64794642e01fSmrg	  # convenience libraries should have the same extension an
64804642e01fSmrg	  # archive normally would.
64814642e01fSmrg	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
64824642e01fSmrg	  build_libtool_libs=convenience
64834642e01fSmrg	  build_old_libs=yes
64844642e01fSmrg	fi
64854642e01fSmrg
64864642e01fSmrg	test -n "$vinfo" && \
64874642e01fSmrg	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
64884642e01fSmrg
64894642e01fSmrg	test -n "$release" && \
64904642e01fSmrg	  func_warning "\`-release' is ignored for convenience libraries"
64914642e01fSmrg      else
64924642e01fSmrg
64934642e01fSmrg	# Parse the version information argument.
64944642e01fSmrg	save_ifs="$IFS"; IFS=':'
64954642e01fSmrg	set dummy $vinfo 0 0 0
64964642e01fSmrg	shift
64974642e01fSmrg	IFS="$save_ifs"
64984642e01fSmrg
64994642e01fSmrg	test -n "$7" && \
65004642e01fSmrg	  func_fatal_help "too many parameters to \`-version-info'"
65014642e01fSmrg
65024642e01fSmrg	# convert absolute version numbers to libtool ages
65034642e01fSmrg	# this retains compatibility with .la files and attempts
65044642e01fSmrg	# to make the code below a bit more comprehensible
65054642e01fSmrg
65064642e01fSmrg	case $vinfo_number in
65074642e01fSmrg	yes)
65084642e01fSmrg	  number_major="$1"
65094642e01fSmrg	  number_minor="$2"
65104642e01fSmrg	  number_revision="$3"
65114642e01fSmrg	  #
65124642e01fSmrg	  # There are really only two kinds -- those that
65134642e01fSmrg	  # use the current revision as the major version
65144642e01fSmrg	  # and those that subtract age and use age as
65154642e01fSmrg	  # a minor version.  But, then there is irix
65164642e01fSmrg	  # which has an extra 1 added just for fun
65174642e01fSmrg	  #
65184642e01fSmrg	  case $version_type in
65194642e01fSmrg	  darwin|linux|osf|windows|none)
65204642e01fSmrg	    func_arith $number_major + $number_minor
65214642e01fSmrg	    current=$func_arith_result
65224642e01fSmrg	    age="$number_minor"
65234642e01fSmrg	    revision="$number_revision"
65244642e01fSmrg	    ;;
65256747b715Smrg	  freebsd-aout|freebsd-elf|qnx|sunos)
65264642e01fSmrg	    current="$number_major"
65274642e01fSmrg	    revision="$number_minor"
65284642e01fSmrg	    age="0"
65294642e01fSmrg	    ;;
65304642e01fSmrg	  irix|nonstopux)
65314642e01fSmrg	    func_arith $number_major + $number_minor
65324642e01fSmrg	    current=$func_arith_result
65334642e01fSmrg	    age="$number_minor"
65344642e01fSmrg	    revision="$number_minor"
65354642e01fSmrg	    lt_irix_increment=no
65364642e01fSmrg	    ;;
65374642e01fSmrg	  esac
65384642e01fSmrg	  ;;
65394642e01fSmrg	no)
65404642e01fSmrg	  current="$1"
65414642e01fSmrg	  revision="$2"
65424642e01fSmrg	  age="$3"
65434642e01fSmrg	  ;;
65444642e01fSmrg	esac
65454642e01fSmrg
65464642e01fSmrg	# Check that each of the things are valid numbers.
65474642e01fSmrg	case $current in
65484642e01fSmrg	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]) ;;
65494642e01fSmrg	*)
65504642e01fSmrg	  func_error "CURRENT \`$current' must be a nonnegative integer"
65514642e01fSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
65524642e01fSmrg	  ;;
65534642e01fSmrg	esac
65544642e01fSmrg
65554642e01fSmrg	case $revision in
65564642e01fSmrg	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]) ;;
65574642e01fSmrg	*)
65584642e01fSmrg	  func_error "REVISION \`$revision' must be a nonnegative integer"
65594642e01fSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
65604642e01fSmrg	  ;;
65614642e01fSmrg	esac
65624642e01fSmrg
65634642e01fSmrg	case $age in
65644642e01fSmrg	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]) ;;
65654642e01fSmrg	*)
65664642e01fSmrg	  func_error "AGE \`$age' must be a nonnegative integer"
65674642e01fSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
65684642e01fSmrg	  ;;
65694642e01fSmrg	esac
65704642e01fSmrg
65714642e01fSmrg	if test "$age" -gt "$current"; then
65724642e01fSmrg	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
65734642e01fSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
65744642e01fSmrg	fi
65754642e01fSmrg
65764642e01fSmrg	# Calculate the version variables.
65774642e01fSmrg	major=
65784642e01fSmrg	versuffix=
65794642e01fSmrg	verstring=
65804642e01fSmrg	case $version_type in
65814642e01fSmrg	none) ;;
65824642e01fSmrg
65834642e01fSmrg	darwin)
65844642e01fSmrg	  # Like Linux, but with the current version available in
65854642e01fSmrg	  # verstring for coding it into the library header
65864642e01fSmrg	  func_arith $current - $age
65874642e01fSmrg	  major=.$func_arith_result
65884642e01fSmrg	  versuffix="$major.$age.$revision"
65894642e01fSmrg	  # Darwin ld doesn't like 0 for these options...
65904642e01fSmrg	  func_arith $current + 1
65914642e01fSmrg	  minor_current=$func_arith_result
65924642e01fSmrg	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
65934642e01fSmrg	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
65944642e01fSmrg	  ;;
65954642e01fSmrg
65964642e01fSmrg	freebsd-aout)
65974642e01fSmrg	  major=".$current"
65984642e01fSmrg	  versuffix=".$current.$revision";
65994642e01fSmrg	  ;;
66004642e01fSmrg
66014642e01fSmrg	freebsd-elf)
66024642e01fSmrg	  major=".$current"
66034642e01fSmrg	  versuffix=".$current"
66044642e01fSmrg	  ;;
66054642e01fSmrg
66064642e01fSmrg	irix | nonstopux)
66074642e01fSmrg	  if test "X$lt_irix_increment" = "Xno"; then
66084642e01fSmrg	    func_arith $current - $age
66094642e01fSmrg	  else
66104642e01fSmrg	    func_arith $current - $age + 1
66114642e01fSmrg	  fi
66124642e01fSmrg	  major=$func_arith_result
66134642e01fSmrg
66144642e01fSmrg	  case $version_type in
66154642e01fSmrg	    nonstopux) verstring_prefix=nonstopux ;;
66164642e01fSmrg	    *)         verstring_prefix=sgi ;;
66174642e01fSmrg	  esac
66184642e01fSmrg	  verstring="$verstring_prefix$major.$revision"
66194642e01fSmrg
66204642e01fSmrg	  # Add in all the interfaces that we are compatible with.
66214642e01fSmrg	  loop=$revision
66224642e01fSmrg	  while test "$loop" -ne 0; do
66234642e01fSmrg	    func_arith $revision - $loop
66244642e01fSmrg	    iface=$func_arith_result
66254642e01fSmrg	    func_arith $loop - 1
66264642e01fSmrg	    loop=$func_arith_result
66274642e01fSmrg	    verstring="$verstring_prefix$major.$iface:$verstring"
66284642e01fSmrg	  done
66294642e01fSmrg
66304642e01fSmrg	  # Before this point, $major must not contain `.'.
66314642e01fSmrg	  major=.$major
66324642e01fSmrg	  versuffix="$major.$revision"
66334642e01fSmrg	  ;;
66344642e01fSmrg
66354642e01fSmrg	linux)
66364642e01fSmrg	  func_arith $current - $age
66374642e01fSmrg	  major=.$func_arith_result
66384642e01fSmrg	  versuffix="$major.$age.$revision"
66394642e01fSmrg	  ;;
66404642e01fSmrg
66414642e01fSmrg	osf)
66424642e01fSmrg	  func_arith $current - $age
66434642e01fSmrg	  major=.$func_arith_result
66444642e01fSmrg	  versuffix=".$current.$age.$revision"
66454642e01fSmrg	  verstring="$current.$age.$revision"
66464642e01fSmrg
66474642e01fSmrg	  # Add in all the interfaces that we are compatible with.
66484642e01fSmrg	  loop=$age
66494642e01fSmrg	  while test "$loop" -ne 0; do
66504642e01fSmrg	    func_arith $current - $loop
66514642e01fSmrg	    iface=$func_arith_result
66524642e01fSmrg	    func_arith $loop - 1
66534642e01fSmrg	    loop=$func_arith_result
66544642e01fSmrg	    verstring="$verstring:${iface}.0"
66554642e01fSmrg	  done
66564642e01fSmrg
66574642e01fSmrg	  # Make executables depend on our current version.
6658475c125cSmrg	  verstring="$verstring:${current}.0"
66594642e01fSmrg	  ;;
66604642e01fSmrg
66614642e01fSmrg	qnx)
66624642e01fSmrg	  major=".$current"
66634642e01fSmrg	  versuffix=".$current"
66644642e01fSmrg	  ;;
66654642e01fSmrg
66664642e01fSmrg	sunos)
66674642e01fSmrg	  major=".$current"
66684642e01fSmrg	  versuffix=".$current.$revision"
66694642e01fSmrg	  ;;
66704642e01fSmrg
66714642e01fSmrg	windows)
66724642e01fSmrg	  # Use '-' rather than '.', since we only want one
66734642e01fSmrg	  # extension on DOS 8.3 filesystems.
66744642e01fSmrg	  func_arith $current - $age
66754642e01fSmrg	  major=$func_arith_result
66764642e01fSmrg	  versuffix="-$major"
66774642e01fSmrg	  ;;
66784642e01fSmrg
66794642e01fSmrg	*)
66804642e01fSmrg	  func_fatal_configuration "unknown library version type \`$version_type'"
66814642e01fSmrg	  ;;
66824642e01fSmrg	esac
66834642e01fSmrg
66844642e01fSmrg	# Clear the version info if we defaulted, and they specified a release.
66854642e01fSmrg	if test -z "$vinfo" && test -n "$release"; then
66864642e01fSmrg	  major=
66874642e01fSmrg	  case $version_type in
66884642e01fSmrg	  darwin)
66894642e01fSmrg	    # we can't check for "0.0" in archive_cmds due to quoting
66904642e01fSmrg	    # problems, so we reset it completely
66914642e01fSmrg	    verstring=
66924642e01fSmrg	    ;;
66934642e01fSmrg	  *)
66944642e01fSmrg	    verstring="0.0"
66954642e01fSmrg	    ;;
66964642e01fSmrg	  esac
66974642e01fSmrg	  if test "$need_version" = no; then
66984642e01fSmrg	    versuffix=
66994642e01fSmrg	  else
67004642e01fSmrg	    versuffix=".0.0"
67014642e01fSmrg	  fi
67024642e01fSmrg	fi
67034642e01fSmrg
67044642e01fSmrg	# Remove version info from name if versioning should be avoided
67054642e01fSmrg	if test "$avoid_version" = yes && test "$need_version" = no; then
67064642e01fSmrg	  major=
67074642e01fSmrg	  versuffix=
67084642e01fSmrg	  verstring=""
67094642e01fSmrg	fi
67104642e01fSmrg
67114642e01fSmrg	# Check to see if the archive will have undefined symbols.
67124642e01fSmrg	if test "$allow_undefined" = yes; then
67134642e01fSmrg	  if test "$allow_undefined_flag" = unsupported; then
67144642e01fSmrg	    func_warning "undefined symbols not allowed in $host shared libraries"
67154642e01fSmrg	    build_libtool_libs=no
67164642e01fSmrg	    build_old_libs=yes
67174642e01fSmrg	  fi
67184642e01fSmrg	else
67194642e01fSmrg	  # Don't allow undefined symbols.
67204642e01fSmrg	  allow_undefined_flag="$no_undefined_flag"
67214642e01fSmrg	fi
67224642e01fSmrg
67234642e01fSmrg      fi
67244642e01fSmrg
67254642e01fSmrg      func_generate_dlsyms "$libname" "$libname" "yes"
6726475c125cSmrg      libobjs="$libobjs $symfileobj"
67274642e01fSmrg      test "X$libobjs" = "X " && libobjs=
67284642e01fSmrg
6729475c125cSmrg      if test "$mode" != relink; then
67304642e01fSmrg	# Remove our outputs, but don't remove object files since they
67314642e01fSmrg	# may have been created when compiling PIC objects.
67324642e01fSmrg	removelist=
67334642e01fSmrg	tempremovelist=`$ECHO "$output_objdir/*"`
67344642e01fSmrg	for p in $tempremovelist; do
67354642e01fSmrg	  case $p in
67364642e01fSmrg	    *.$objext | *.gcno)
67374642e01fSmrg	       ;;
67384642e01fSmrg	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
67394642e01fSmrg	       if test "X$precious_files_regex" != "X"; then
67404642e01fSmrg		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
67414642e01fSmrg		 then
67424642e01fSmrg		   continue
67434642e01fSmrg		 fi
67444642e01fSmrg	       fi
6745475c125cSmrg	       removelist="$removelist $p"
67464642e01fSmrg	       ;;
67474642e01fSmrg	    *) ;;
67484642e01fSmrg	  esac
67494642e01fSmrg	done
67504642e01fSmrg	test -n "$removelist" && \
67514642e01fSmrg	  func_show_eval "${RM}r \$removelist"
67524642e01fSmrg      fi
67534642e01fSmrg
67544642e01fSmrg      # Now set the variables for building old libraries.
67554642e01fSmrg      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
6756475c125cSmrg	oldlibs="$oldlibs $output_objdir/$libname.$libext"
67574642e01fSmrg
67584642e01fSmrg	# Transform .lo files to .o files.
67596747b715Smrg	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
67604642e01fSmrg      fi
67614642e01fSmrg
67624642e01fSmrg      # Eliminate all temporary directories.
67634642e01fSmrg      #for path in $notinst_path; do
67646747b715Smrg      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
67656747b715Smrg      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
67666747b715Smrg      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
67674642e01fSmrg      #done
67684642e01fSmrg
67694642e01fSmrg      if test -n "$xrpath"; then
67704642e01fSmrg	# If the user specified any rpath flags, then add them.
67714642e01fSmrg	temp_xrpath=
67724642e01fSmrg	for libdir in $xrpath; do
6773475c125cSmrg	  temp_xrpath="$temp_xrpath -R$libdir"
67744642e01fSmrg	  case "$finalize_rpath " in
67754642e01fSmrg	  *" $libdir "*) ;;
6776475c125cSmrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
67774642e01fSmrg	  esac
67784642e01fSmrg	done
67794642e01fSmrg	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
67804642e01fSmrg	  dependency_libs="$temp_xrpath $dependency_libs"
67814642e01fSmrg	fi
67824642e01fSmrg      fi
67834642e01fSmrg
67844642e01fSmrg      # Make sure dlfiles contains only unique files that won't be dlpreopened
67854642e01fSmrg      old_dlfiles="$dlfiles"
67864642e01fSmrg      dlfiles=
67874642e01fSmrg      for lib in $old_dlfiles; do
67884642e01fSmrg	case " $dlprefiles $dlfiles " in
67894642e01fSmrg	*" $lib "*) ;;
6790475c125cSmrg	*) dlfiles="$dlfiles $lib" ;;
67914642e01fSmrg	esac
67924642e01fSmrg      done
67934642e01fSmrg
67944642e01fSmrg      # Make sure dlprefiles contains only unique files
67954642e01fSmrg      old_dlprefiles="$dlprefiles"
67964642e01fSmrg      dlprefiles=
67974642e01fSmrg      for lib in $old_dlprefiles; do
67984642e01fSmrg	case "$dlprefiles " in
67994642e01fSmrg	*" $lib "*) ;;
6800475c125cSmrg	*) dlprefiles="$dlprefiles $lib" ;;
68014642e01fSmrg	esac
68024642e01fSmrg      done
68034642e01fSmrg
68044642e01fSmrg      if test "$build_libtool_libs" = yes; then
68054642e01fSmrg	if test -n "$rpath"; then
68064642e01fSmrg	  case $host in
68076747b715Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
68084642e01fSmrg	    # these systems don't actually have a c library (as such)!
68094642e01fSmrg	    ;;
68104642e01fSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
68114642e01fSmrg	    # Rhapsody C library is in the System framework
6812475c125cSmrg	    deplibs="$deplibs System.ltframework"
68134642e01fSmrg	    ;;
68144642e01fSmrg	  *-*-netbsd*)
68154642e01fSmrg	    # Don't link with libc until the a.out ld.so is fixed.
68164642e01fSmrg	    ;;
68174642e01fSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
68184642e01fSmrg	    # Do not include libc due to us having libc/libc_r.
68194642e01fSmrg	    ;;
68204642e01fSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
68214642e01fSmrg	    # Causes problems with __ctype
68224642e01fSmrg	    ;;
68234642e01fSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
68244642e01fSmrg	    # Compiler inserts libc in the correct place for threads to work
68254642e01fSmrg	    ;;
68264642e01fSmrg	  *)
68274642e01fSmrg	    # Add libc to deplibs on all other systems if necessary.
68284642e01fSmrg	    if test "$build_libtool_need_lc" = "yes"; then
6829475c125cSmrg	      deplibs="$deplibs -lc"
68304642e01fSmrg	    fi
68314642e01fSmrg	    ;;
68324642e01fSmrg	  esac
68334642e01fSmrg	fi
68344642e01fSmrg
68354642e01fSmrg	# Transform deplibs into only deplibs that can be linked in shared.
68364642e01fSmrg	name_save=$name
68374642e01fSmrg	libname_save=$libname
68384642e01fSmrg	release_save=$release
68394642e01fSmrg	versuffix_save=$versuffix
68404642e01fSmrg	major_save=$major
68414642e01fSmrg	# I'm not sure if I'm treating the release correctly.  I think
68424642e01fSmrg	# release should show up in the -l (ie -lgmp5) so we don't want to
68434642e01fSmrg	# add it in twice.  Is that correct?
68444642e01fSmrg	release=""
68454642e01fSmrg	versuffix=""
68464642e01fSmrg	major=""
68474642e01fSmrg	newdeplibs=
68484642e01fSmrg	droppeddeps=no
68494642e01fSmrg	case $deplibs_check_method in
68504642e01fSmrg	pass_all)
68514642e01fSmrg	  # Don't check for shared/static.  Everything works.
68524642e01fSmrg	  # This might be a little naive.  We might want to check
68534642e01fSmrg	  # whether the library exists or not.  But this is on
68544642e01fSmrg	  # osf3 & osf4 and I'm not really sure... Just
68554642e01fSmrg	  # implementing what was already the behavior.
68564642e01fSmrg	  newdeplibs=$deplibs
68574642e01fSmrg	  ;;
68584642e01fSmrg	test_compile)
68594642e01fSmrg	  # This code stresses the "libraries are programs" paradigm to its
68604642e01fSmrg	  # limits. Maybe even breaks it.  We compile a program, linking it
68614642e01fSmrg	  # against the deplibs as a proxy for the library.  Then we can check
68624642e01fSmrg	  # whether they linked in statically or dynamically with ldd.
68634642e01fSmrg	  $opt_dry_run || $RM conftest.c
68644642e01fSmrg	  cat > conftest.c <<EOF
68654642e01fSmrg	  int main() { return 0; }
68664642e01fSmrgEOF
68674642e01fSmrg	  $opt_dry_run || $RM conftest
68684642e01fSmrg	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
68694642e01fSmrg	    ldd_output=`ldd conftest`
68704642e01fSmrg	    for i in $deplibs; do
68714642e01fSmrg	      case $i in
68724642e01fSmrg	      -l*)
68734642e01fSmrg		func_stripname -l '' "$i"
68744642e01fSmrg		name=$func_stripname_result
68754642e01fSmrg		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
68764642e01fSmrg		  case " $predeps $postdeps " in
68774642e01fSmrg		  *" $i "*)
6878475c125cSmrg		    newdeplibs="$newdeplibs $i"
68794642e01fSmrg		    i=""
68804642e01fSmrg		    ;;
68814642e01fSmrg		  esac
68824642e01fSmrg		fi
68834642e01fSmrg		if test -n "$i" ; then
68844642e01fSmrg		  libname=`eval "\\$ECHO \"$libname_spec\""`
68854642e01fSmrg		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
68864642e01fSmrg		  set dummy $deplib_matches; shift
68874642e01fSmrg		  deplib_match=$1
68884642e01fSmrg		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
6889475c125cSmrg		    newdeplibs="$newdeplibs $i"
68904642e01fSmrg		  else
68914642e01fSmrg		    droppeddeps=yes
68926747b715Smrg		    echo
68934642e01fSmrg		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
68946747b715Smrg		    echo "*** I have the capability to make that library automatically link in when"
68956747b715Smrg		    echo "*** you link to this library.  But I can only do this if you have a"
68966747b715Smrg		    echo "*** shared version of the library, which I believe you do not have"
68976747b715Smrg		    echo "*** because a test_compile did reveal that the linker did not use it for"
68986747b715Smrg		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
68994642e01fSmrg		  fi
69004642e01fSmrg		fi
69014642e01fSmrg		;;
69024642e01fSmrg	      *)
6903475c125cSmrg		newdeplibs="$newdeplibs $i"
69044642e01fSmrg		;;
69054642e01fSmrg	      esac
69064642e01fSmrg	    done
69074642e01fSmrg	  else
69084642e01fSmrg	    # Error occurred in the first compile.  Let's try to salvage
69094642e01fSmrg	    # the situation: Compile a separate program for each library.
69104642e01fSmrg	    for i in $deplibs; do
69114642e01fSmrg	      case $i in
69124642e01fSmrg	      -l*)
69134642e01fSmrg		func_stripname -l '' "$i"
69144642e01fSmrg		name=$func_stripname_result
69154642e01fSmrg		$opt_dry_run || $RM conftest
69164642e01fSmrg		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
69174642e01fSmrg		  ldd_output=`ldd conftest`
69184642e01fSmrg		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
69194642e01fSmrg		    case " $predeps $postdeps " in
69204642e01fSmrg		    *" $i "*)
6921475c125cSmrg		      newdeplibs="$newdeplibs $i"
69224642e01fSmrg		      i=""
69234642e01fSmrg		      ;;
69244642e01fSmrg		    esac
69254642e01fSmrg		  fi
69264642e01fSmrg		  if test -n "$i" ; then
69274642e01fSmrg		    libname=`eval "\\$ECHO \"$libname_spec\""`
69284642e01fSmrg		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
69294642e01fSmrg		    set dummy $deplib_matches; shift
69304642e01fSmrg		    deplib_match=$1
69314642e01fSmrg		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
6932475c125cSmrg		      newdeplibs="$newdeplibs $i"
69334642e01fSmrg		    else
69344642e01fSmrg		      droppeddeps=yes
69356747b715Smrg		      echo
69364642e01fSmrg		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
69376747b715Smrg		      echo "*** I have the capability to make that library automatically link in when"
69386747b715Smrg		      echo "*** you link to this library.  But I can only do this if you have a"
69396747b715Smrg		      echo "*** shared version of the library, which you do not appear to have"
69406747b715Smrg		      echo "*** because a test_compile did reveal that the linker did not use this one"
69416747b715Smrg		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
69424642e01fSmrg		    fi
69434642e01fSmrg		  fi
69444642e01fSmrg		else
69454642e01fSmrg		  droppeddeps=yes
69466747b715Smrg		  echo
69474642e01fSmrg		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
69486747b715Smrg		  echo "*** make it link in!  You will probably need to install it or some"
69496747b715Smrg		  echo "*** library that it depends on before this library will be fully"
69506747b715Smrg		  echo "*** functional.  Installing it before continuing would be even better."
69514642e01fSmrg		fi
69524642e01fSmrg		;;
69534642e01fSmrg	      *)
6954475c125cSmrg		newdeplibs="$newdeplibs $i"
69554642e01fSmrg		;;
69564642e01fSmrg	      esac
69574642e01fSmrg	    done
69584642e01fSmrg	  fi
69594642e01fSmrg	  ;;
69604642e01fSmrg	file_magic*)
69614642e01fSmrg	  set dummy $deplibs_check_method; shift
69624642e01fSmrg	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
69634642e01fSmrg	  for a_deplib in $deplibs; do
69644642e01fSmrg	    case $a_deplib in
69654642e01fSmrg	    -l*)
69664642e01fSmrg	      func_stripname -l '' "$a_deplib"
69674642e01fSmrg	      name=$func_stripname_result
69684642e01fSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
69694642e01fSmrg		case " $predeps $postdeps " in
69704642e01fSmrg		*" $a_deplib "*)
6971475c125cSmrg		  newdeplibs="$newdeplibs $a_deplib"
69724642e01fSmrg		  a_deplib=""
69734642e01fSmrg		  ;;
69744642e01fSmrg		esac
69754642e01fSmrg	      fi
69764642e01fSmrg	      if test -n "$a_deplib" ; then
69774642e01fSmrg		libname=`eval "\\$ECHO \"$libname_spec\""`
69784642e01fSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
6979475c125cSmrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
69804642e01fSmrg		  for potent_lib in $potential_libs; do
69814642e01fSmrg		      # Follow soft links.
69824642e01fSmrg		      if ls -lLd "$potent_lib" 2>/dev/null |
69834642e01fSmrg			 $GREP " -> " >/dev/null; then
69844642e01fSmrg			continue
69854642e01fSmrg		      fi
69864642e01fSmrg		      # The statement above tries to avoid entering an
69874642e01fSmrg		      # endless loop below, in case of cyclic links.
69884642e01fSmrg		      # We might still enter an endless loop, since a link
69894642e01fSmrg		      # loop can be closed while we follow links,
69904642e01fSmrg		      # but so what?
69914642e01fSmrg		      potlib="$potent_lib"
69924642e01fSmrg		      while test -h "$potlib" 2>/dev/null; do
69934642e01fSmrg			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
69944642e01fSmrg			case $potliblink in
69954642e01fSmrg			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
69966747b715Smrg			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
69974642e01fSmrg			esac
69984642e01fSmrg		      done
69994642e01fSmrg		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
70004642e01fSmrg			 $SED -e 10q |
70014642e01fSmrg			 $EGREP "$file_magic_regex" > /dev/null; then
7002475c125cSmrg			newdeplibs="$newdeplibs $a_deplib"
70034642e01fSmrg			a_deplib=""
70044642e01fSmrg			break 2
70054642e01fSmrg		      fi
70064642e01fSmrg		  done
70074642e01fSmrg		done
70084642e01fSmrg	      fi
70094642e01fSmrg	      if test -n "$a_deplib" ; then
70104642e01fSmrg		droppeddeps=yes
70116747b715Smrg		echo
70124642e01fSmrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
70136747b715Smrg		echo "*** I have the capability to make that library automatically link in when"
70146747b715Smrg		echo "*** you link to this library.  But I can only do this if you have a"
70156747b715Smrg		echo "*** shared version of the library, which you do not appear to have"
70166747b715Smrg		echo "*** because I did check the linker path looking for a file starting"
70174642e01fSmrg		if test -z "$potlib" ; then
70184642e01fSmrg		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
70194642e01fSmrg		else
70204642e01fSmrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
70214642e01fSmrg		  $ECHO "*** using a file magic. Last file checked: $potlib"
70224642e01fSmrg		fi
70234642e01fSmrg	      fi
70244642e01fSmrg	      ;;
70254642e01fSmrg	    *)
70264642e01fSmrg	      # Add a -L argument.
7027475c125cSmrg	      newdeplibs="$newdeplibs $a_deplib"
70284642e01fSmrg	      ;;
70294642e01fSmrg	    esac
70304642e01fSmrg	  done # Gone through all deplibs.
70314642e01fSmrg	  ;;
70324642e01fSmrg	match_pattern*)
70334642e01fSmrg	  set dummy $deplibs_check_method; shift
70344642e01fSmrg	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
70354642e01fSmrg	  for a_deplib in $deplibs; do
70364642e01fSmrg	    case $a_deplib in
70374642e01fSmrg	    -l*)
70384642e01fSmrg	      func_stripname -l '' "$a_deplib"
70394642e01fSmrg	      name=$func_stripname_result
70404642e01fSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
70414642e01fSmrg		case " $predeps $postdeps " in
70424642e01fSmrg		*" $a_deplib "*)
7043475c125cSmrg		  newdeplibs="$newdeplibs $a_deplib"
70444642e01fSmrg		  a_deplib=""
70454642e01fSmrg		  ;;
70464642e01fSmrg		esac
70474642e01fSmrg	      fi
70484642e01fSmrg	      if test -n "$a_deplib" ; then
70494642e01fSmrg		libname=`eval "\\$ECHO \"$libname_spec\""`
70504642e01fSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
70514642e01fSmrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
70524642e01fSmrg		  for potent_lib in $potential_libs; do
70534642e01fSmrg		    potlib="$potent_lib" # see symlink-check above in file_magic test
70546747b715Smrg		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
70554642e01fSmrg		       $EGREP "$match_pattern_regex" > /dev/null; then
7056475c125cSmrg		      newdeplibs="$newdeplibs $a_deplib"
70574642e01fSmrg		      a_deplib=""
70584642e01fSmrg		      break 2
70594642e01fSmrg		    fi
70604642e01fSmrg		  done
70614642e01fSmrg		done
70624642e01fSmrg	      fi
70634642e01fSmrg	      if test -n "$a_deplib" ; then
70644642e01fSmrg		droppeddeps=yes
70656747b715Smrg		echo
70664642e01fSmrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
70676747b715Smrg		echo "*** I have the capability to make that library automatically link in when"
70686747b715Smrg		echo "*** you link to this library.  But I can only do this if you have a"
70696747b715Smrg		echo "*** shared version of the library, which you do not appear to have"
70706747b715Smrg		echo "*** because I did check the linker path looking for a file starting"
70714642e01fSmrg		if test -z "$potlib" ; then
70724642e01fSmrg		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
70734642e01fSmrg		else
70744642e01fSmrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
70754642e01fSmrg		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
70764642e01fSmrg		fi
70774642e01fSmrg	      fi
70784642e01fSmrg	      ;;
70794642e01fSmrg	    *)
70804642e01fSmrg	      # Add a -L argument.
7081475c125cSmrg	      newdeplibs="$newdeplibs $a_deplib"
70824642e01fSmrg	      ;;
70834642e01fSmrg	    esac
70844642e01fSmrg	  done # Gone through all deplibs.
70854642e01fSmrg	  ;;
70864642e01fSmrg	none | unknown | *)
70874642e01fSmrg	  newdeplibs=""
70886747b715Smrg	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
70894642e01fSmrg	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
70904642e01fSmrg	    for i in $predeps $postdeps ; do
70914642e01fSmrg	      # can't use Xsed below, because $i might contain '/'
70926747b715Smrg	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
70934642e01fSmrg	    done
70944642e01fSmrg	  fi
70956747b715Smrg	  case $tmp_deplibs in
70966747b715Smrg	  *[!\	\ ]*)
70976747b715Smrg	    echo
70984642e01fSmrg	    if test "X$deplibs_check_method" = "Xnone"; then
70996747b715Smrg	      echo "*** Warning: inter-library dependencies are not supported in this platform."
71004642e01fSmrg	    else
71016747b715Smrg	      echo "*** Warning: inter-library dependencies are not known to be supported."
71024642e01fSmrg	    fi
71036747b715Smrg	    echo "*** All declared inter-library dependencies are being dropped."
71044642e01fSmrg	    droppeddeps=yes
71056747b715Smrg	    ;;
71066747b715Smrg	  esac
71074642e01fSmrg	  ;;
71084642e01fSmrg	esac
71094642e01fSmrg	versuffix=$versuffix_save
71104642e01fSmrg	major=$major_save
71114642e01fSmrg	release=$release_save
71124642e01fSmrg	libname=$libname_save
71134642e01fSmrg	name=$name_save
71144642e01fSmrg
71154642e01fSmrg	case $host in
71164642e01fSmrg	*-*-rhapsody* | *-*-darwin1.[012])
71174642e01fSmrg	  # On Rhapsody replace the C library with the System framework
71186747b715Smrg	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
71194642e01fSmrg	  ;;
71204642e01fSmrg	esac
71214642e01fSmrg
71224642e01fSmrg	if test "$droppeddeps" = yes; then
71234642e01fSmrg	  if test "$module" = yes; then
71246747b715Smrg	    echo
71256747b715Smrg	    echo "*** Warning: libtool could not satisfy all declared inter-library"
71264642e01fSmrg	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
71276747b715Smrg	    echo "*** a static module, that should work as long as the dlopening"
71286747b715Smrg	    echo "*** application is linked with the -dlopen flag."
71294642e01fSmrg	    if test -z "$global_symbol_pipe"; then
71306747b715Smrg	      echo
71316747b715Smrg	      echo "*** However, this would only work if libtool was able to extract symbol"
71326747b715Smrg	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
71336747b715Smrg	      echo "*** not find such a program.  So, this module is probably useless."
71346747b715Smrg	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
71354642e01fSmrg	    fi
71364642e01fSmrg	    if test "$build_old_libs" = no; then
71374642e01fSmrg	      oldlibs="$output_objdir/$libname.$libext"
71384642e01fSmrg	      build_libtool_libs=module
71394642e01fSmrg	      build_old_libs=yes
71404642e01fSmrg	    else
71414642e01fSmrg	      build_libtool_libs=no
71424642e01fSmrg	    fi
71434642e01fSmrg	  else
71446747b715Smrg	    echo "*** The inter-library dependencies that have been dropped here will be"
71456747b715Smrg	    echo "*** automatically added whenever a program is linked with this library"
71466747b715Smrg	    echo "*** or is declared to -dlopen it."
71474642e01fSmrg
71484642e01fSmrg	    if test "$allow_undefined" = no; then
71496747b715Smrg	      echo
71506747b715Smrg	      echo "*** Since this library must not contain undefined symbols,"
71516747b715Smrg	      echo "*** because either the platform does not support them or"
71526747b715Smrg	      echo "*** it was explicitly requested with -no-undefined,"
71536747b715Smrg	      echo "*** libtool will only create a static version of it."
71544642e01fSmrg	      if test "$build_old_libs" = no; then
71554642e01fSmrg		oldlibs="$output_objdir/$libname.$libext"
71564642e01fSmrg		build_libtool_libs=module
71574642e01fSmrg		build_old_libs=yes
71584642e01fSmrg	      else
71594642e01fSmrg		build_libtool_libs=no
71604642e01fSmrg	      fi
71614642e01fSmrg	    fi
71624642e01fSmrg	  fi
71634642e01fSmrg	fi
71644642e01fSmrg	# Done checking deplibs!
71654642e01fSmrg	deplibs=$newdeplibs
71664642e01fSmrg      fi
71674642e01fSmrg      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
71684642e01fSmrg      case $host in
71694642e01fSmrg	*-*-darwin*)
71706747b715Smrg	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
71716747b715Smrg	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
71726747b715Smrg	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
71734642e01fSmrg	  ;;
71744642e01fSmrg      esac
71754642e01fSmrg
71764642e01fSmrg      # move library search paths that coincide with paths to not yet
71774642e01fSmrg      # installed libraries to the beginning of the library search list
71784642e01fSmrg      new_libs=
71794642e01fSmrg      for path in $notinst_path; do
71804642e01fSmrg	case " $new_libs " in
71814642e01fSmrg	*" -L$path/$objdir "*) ;;
71824642e01fSmrg	*)
71834642e01fSmrg	  case " $deplibs " in
71844642e01fSmrg	  *" -L$path/$objdir "*)
7185475c125cSmrg	    new_libs="$new_libs -L$path/$objdir" ;;
71864642e01fSmrg	  esac
71874642e01fSmrg	  ;;
71884642e01fSmrg	esac
71894642e01fSmrg      done
71904642e01fSmrg      for deplib in $deplibs; do
71914642e01fSmrg	case $deplib in
71924642e01fSmrg	-L*)
71934642e01fSmrg	  case " $new_libs " in
71944642e01fSmrg	  *" $deplib "*) ;;
7195475c125cSmrg	  *) new_libs="$new_libs $deplib" ;;
71964642e01fSmrg	  esac
71974642e01fSmrg	  ;;
7198475c125cSmrg	*) new_libs="$new_libs $deplib" ;;
71994642e01fSmrg	esac
72004642e01fSmrg      done
72014642e01fSmrg      deplibs="$new_libs"
72024642e01fSmrg
72034642e01fSmrg      # All the library-specific variables (install_libdir is set above).
72044642e01fSmrg      library_names=
72054642e01fSmrg      old_library=
72064642e01fSmrg      dlname=
72074642e01fSmrg
72084642e01fSmrg      # Test again, we may have decided not to build it any more
72094642e01fSmrg      if test "$build_libtool_libs" = yes; then
72104642e01fSmrg	if test "$hardcode_into_libs" = yes; then
72114642e01fSmrg	  # Hardcode the library paths
72124642e01fSmrg	  hardcode_libdirs=
72134642e01fSmrg	  dep_rpath=
72144642e01fSmrg	  rpath="$finalize_rpath"
7215475c125cSmrg	  test "$mode" != relink && rpath="$compile_rpath$rpath"
72164642e01fSmrg	  for libdir in $rpath; do
72174642e01fSmrg	    if test -n "$hardcode_libdir_flag_spec"; then
72184642e01fSmrg	      if test -n "$hardcode_libdir_separator"; then
72194642e01fSmrg		if test -z "$hardcode_libdirs"; then
72204642e01fSmrg		  hardcode_libdirs="$libdir"
72214642e01fSmrg		else
72224642e01fSmrg		  # Just accumulate the unique libdirs.
72234642e01fSmrg		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
72244642e01fSmrg		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
72254642e01fSmrg		    ;;
72264642e01fSmrg		  *)
7227475c125cSmrg		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
72284642e01fSmrg		    ;;
72294642e01fSmrg		  esac
72304642e01fSmrg		fi
72314642e01fSmrg	      else
72324642e01fSmrg		eval flag=\"$hardcode_libdir_flag_spec\"
7233475c125cSmrg		dep_rpath="$dep_rpath $flag"
72344642e01fSmrg	      fi
72354642e01fSmrg	    elif test -n "$runpath_var"; then
72364642e01fSmrg	      case "$perm_rpath " in
72374642e01fSmrg	      *" $libdir "*) ;;
7238475c125cSmrg	      *) perm_rpath="$perm_rpath $libdir" ;;
72394642e01fSmrg	      esac
72404642e01fSmrg	    fi
72414642e01fSmrg	  done
72424642e01fSmrg	  # Substitute the hardcoded libdirs into the rpath.
72434642e01fSmrg	  if test -n "$hardcode_libdir_separator" &&
72444642e01fSmrg	     test -n "$hardcode_libdirs"; then
72454642e01fSmrg	    libdir="$hardcode_libdirs"
72464642e01fSmrg	    if test -n "$hardcode_libdir_flag_spec_ld"; then
72474642e01fSmrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
72484642e01fSmrg	    else
72494642e01fSmrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
72504642e01fSmrg	    fi
72514642e01fSmrg	  fi
72524642e01fSmrg	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
72534642e01fSmrg	    # We should set the runpath_var.
72544642e01fSmrg	    rpath=
72554642e01fSmrg	    for dir in $perm_rpath; do
7256475c125cSmrg	      rpath="$rpath$dir:"
72574642e01fSmrg	    done
72584642e01fSmrg	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
72594642e01fSmrg	  fi
72604642e01fSmrg	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
72614642e01fSmrg	fi
726205b261ecSmrg
72634642e01fSmrg	shlibpath="$finalize_shlibpath"
7264475c125cSmrg	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
72654642e01fSmrg	if test -n "$shlibpath"; then
72664642e01fSmrg	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
72674642e01fSmrg	fi
726805b261ecSmrg
72694642e01fSmrg	# Get the real and link names of the library.
72704642e01fSmrg	eval shared_ext=\"$shrext_cmds\"
72714642e01fSmrg	eval library_names=\"$library_names_spec\"
72724642e01fSmrg	set dummy $library_names
72734642e01fSmrg	shift
72744642e01fSmrg	realname="$1"
72754642e01fSmrg	shift
727605b261ecSmrg
72774642e01fSmrg	if test -n "$soname_spec"; then
72784642e01fSmrg	  eval soname=\"$soname_spec\"
72794642e01fSmrg	else
72804642e01fSmrg	  soname="$realname"
72814642e01fSmrg	fi
72824642e01fSmrg	if test -z "$dlname"; then
72834642e01fSmrg	  dlname=$soname
72844642e01fSmrg	fi
728505b261ecSmrg
72864642e01fSmrg	lib="$output_objdir/$realname"
72874642e01fSmrg	linknames=
72884642e01fSmrg	for link
72894642e01fSmrg	do
7290475c125cSmrg	  linknames="$linknames $link"
72914642e01fSmrg	done
729205b261ecSmrg
72934642e01fSmrg	# Use standard objects if they are pic
72946747b715Smrg	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
72954642e01fSmrg	test "X$libobjs" = "X " && libobjs=
729605b261ecSmrg
72974642e01fSmrg	delfiles=
72984642e01fSmrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
72994642e01fSmrg	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
73004642e01fSmrg	  export_symbols="$output_objdir/$libname.uexp"
7301475c125cSmrg	  delfiles="$delfiles $export_symbols"
73024642e01fSmrg	fi
730305b261ecSmrg
73044642e01fSmrg	orig_export_symbols=
73054642e01fSmrg	case $host_os in
73064642e01fSmrg	cygwin* | mingw* | cegcc*)
73074642e01fSmrg	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
73084642e01fSmrg	    # exporting using user supplied symfile
73094642e01fSmrg	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
73104642e01fSmrg	      # and it's NOT already a .def file. Must figure out
73114642e01fSmrg	      # which of the given symbols are data symbols and tag
73124642e01fSmrg	      # them as such. So, trigger use of export_symbols_cmds.
73134642e01fSmrg	      # export_symbols gets reassigned inside the "prepare
73144642e01fSmrg	      # the list of exported symbols" if statement, so the
73154642e01fSmrg	      # include_expsyms logic still works.
73164642e01fSmrg	      orig_export_symbols="$export_symbols"
73174642e01fSmrg	      export_symbols=
73184642e01fSmrg	      always_export_symbols=yes
73194642e01fSmrg	    fi
73204642e01fSmrg	  fi
73214642e01fSmrg	  ;;
73224642e01fSmrg	esac
732305b261ecSmrg
73244642e01fSmrg	# Prepare the list of exported symbols
73254642e01fSmrg	if test -z "$export_symbols"; then
73264642e01fSmrg	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
73274642e01fSmrg	    func_verbose "generating symbol list for \`$libname.la'"
73284642e01fSmrg	    export_symbols="$output_objdir/$libname.exp"
73294642e01fSmrg	    $opt_dry_run || $RM $export_symbols
73304642e01fSmrg	    cmds=$export_symbols_cmds
73314642e01fSmrg	    save_ifs="$IFS"; IFS='~'
7332475c125cSmrg	    for cmd in $cmds; do
73334642e01fSmrg	      IFS="$save_ifs"
7334475c125cSmrg	      eval cmd=\"$cmd\"
7335475c125cSmrg	      func_len " $cmd"
7336475c125cSmrg	      len=$func_len_result
7337475c125cSmrg	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
73384642e01fSmrg		func_show_eval "$cmd" 'exit $?'
73394642e01fSmrg		skipped_export=false
73404642e01fSmrg	      else
73414642e01fSmrg		# The command line is too long to execute in one step.
73424642e01fSmrg		func_verbose "using reloadable object file for export list..."
73434642e01fSmrg		skipped_export=:
73444642e01fSmrg		# Break out early, otherwise skipped_export may be
73454642e01fSmrg		# set to false by a later but shorter cmd.
73464642e01fSmrg		break
73474642e01fSmrg	      fi
73484642e01fSmrg	    done
73494642e01fSmrg	    IFS="$save_ifs"
73504642e01fSmrg	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
73514642e01fSmrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
73524642e01fSmrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
73534642e01fSmrg	    fi
73544642e01fSmrg	  fi
735505b261ecSmrg	fi
735605b261ecSmrg
73574642e01fSmrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
73584642e01fSmrg	  tmp_export_symbols="$export_symbols"
73594642e01fSmrg	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
73606747b715Smrg	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
73614642e01fSmrg	fi
736205b261ecSmrg
73634642e01fSmrg	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
73644642e01fSmrg	  # The given exports_symbols file has to be filtered, so filter it.
73654642e01fSmrg	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
73664642e01fSmrg	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
73674642e01fSmrg	  # 's' commands which not all seds can handle. GNU sed should be fine
73684642e01fSmrg	  # though. Also, the filter scales superlinearly with the number of
73694642e01fSmrg	  # global variables. join(1) would be nice here, but unfortunately
73704642e01fSmrg	  # isn't a blessed tool.
73714642e01fSmrg	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
7372475c125cSmrg	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
73734642e01fSmrg	  export_symbols=$output_objdir/$libname.def
73744642e01fSmrg	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
73754642e01fSmrg	fi
737605b261ecSmrg
73774642e01fSmrg	tmp_deplibs=
73784642e01fSmrg	for test_deplib in $deplibs; do
73794642e01fSmrg	  case " $convenience " in
73804642e01fSmrg	  *" $test_deplib "*) ;;
73814642e01fSmrg	  *)
7382475c125cSmrg	    tmp_deplibs="$tmp_deplibs $test_deplib"
73834642e01fSmrg	    ;;
73844642e01fSmrg	  esac
73854642e01fSmrg	done
73864642e01fSmrg	deplibs="$tmp_deplibs"
738705b261ecSmrg
73884642e01fSmrg	if test -n "$convenience"; then
73894642e01fSmrg	  if test -n "$whole_archive_flag_spec" &&
73904642e01fSmrg	    test "$compiler_needs_object" = yes &&
73914642e01fSmrg	    test -z "$libobjs"; then
73924642e01fSmrg	    # extract the archives, so we have objects to list.
73934642e01fSmrg	    # TODO: could optimize this to just extract one archive.
73944642e01fSmrg	    whole_archive_flag_spec=
73954642e01fSmrg	  fi
73964642e01fSmrg	  if test -n "$whole_archive_flag_spec"; then
73974642e01fSmrg	    save_libobjs=$libobjs
73984642e01fSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
73994642e01fSmrg	    test "X$libobjs" = "X " && libobjs=
74004642e01fSmrg	  else
74014642e01fSmrg	    gentop="$output_objdir/${outputname}x"
7402475c125cSmrg	    generated="$generated $gentop"
740305b261ecSmrg
74044642e01fSmrg	    func_extract_archives $gentop $convenience
7405475c125cSmrg	    libobjs="$libobjs $func_extract_archives_result"
74064642e01fSmrg	    test "X$libobjs" = "X " && libobjs=
74074642e01fSmrg	  fi
740805b261ecSmrg	fi
740905b261ecSmrg
74104642e01fSmrg	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
74114642e01fSmrg	  eval flag=\"$thread_safe_flag_spec\"
7412475c125cSmrg	  linker_flags="$linker_flags $flag"
741305b261ecSmrg	fi
741405b261ecSmrg
74154642e01fSmrg	# Make a backup of the uninstalled library when relinking
7416475c125cSmrg	if test "$mode" = relink; then
74174642e01fSmrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
74184642e01fSmrg	fi
741905b261ecSmrg
74204642e01fSmrg	# Do each of the archive commands.
74214642e01fSmrg	if test "$module" = yes && test -n "$module_cmds" ; then
74224642e01fSmrg	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
74234642e01fSmrg	    eval test_cmds=\"$module_expsym_cmds\"
74244642e01fSmrg	    cmds=$module_expsym_cmds
74254642e01fSmrg	  else
74264642e01fSmrg	    eval test_cmds=\"$module_cmds\"
74274642e01fSmrg	    cmds=$module_cmds
74284642e01fSmrg	  fi
742905b261ecSmrg	else
74304642e01fSmrg	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
74314642e01fSmrg	    eval test_cmds=\"$archive_expsym_cmds\"
74324642e01fSmrg	    cmds=$archive_expsym_cmds
74334642e01fSmrg	  else
74344642e01fSmrg	    eval test_cmds=\"$archive_cmds\"
74354642e01fSmrg	    cmds=$archive_cmds
74364642e01fSmrg	  fi
743705b261ecSmrg	fi
743805b261ecSmrg
74394642e01fSmrg	if test "X$skipped_export" != "X:" &&
74404642e01fSmrg	   func_len " $test_cmds" &&
74414642e01fSmrg	   len=$func_len_result &&
74424642e01fSmrg	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
74434642e01fSmrg	  :
74444642e01fSmrg	else
74454642e01fSmrg	  # The command line is too long to link in one step, link piecewise
74464642e01fSmrg	  # or, if using GNU ld and skipped_export is not :, use a linker
74474642e01fSmrg	  # script.
744805b261ecSmrg
74494642e01fSmrg	  # Save the value of $output and $libobjs because we want to
74504642e01fSmrg	  # use them later.  If we have whole_archive_flag_spec, we
74514642e01fSmrg	  # want to use save_libobjs as it was before
74524642e01fSmrg	  # whole_archive_flag_spec was expanded, because we can't
74534642e01fSmrg	  # assume the linker understands whole_archive_flag_spec.
74544642e01fSmrg	  # This may have to be revisited, in case too many
74554642e01fSmrg	  # convenience libraries get linked in and end up exceeding
74564642e01fSmrg	  # the spec.
74574642e01fSmrg	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
74584642e01fSmrg	    save_libobjs=$libobjs
74594642e01fSmrg	  fi
74604642e01fSmrg	  save_output=$output
74616747b715Smrg	  func_basename "$output"
74626747b715Smrg	  output_la=$func_basename_result
746305b261ecSmrg
74644642e01fSmrg	  # Clear the reloadable object creation command queue and
74654642e01fSmrg	  # initialize k to one.
74664642e01fSmrg	  test_cmds=
74674642e01fSmrg	  concat_cmds=
74684642e01fSmrg	  objlist=
74694642e01fSmrg	  last_robj=
74704642e01fSmrg	  k=1
74714642e01fSmrg
74724642e01fSmrg	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
74734642e01fSmrg	    output=${output_objdir}/${output_la}.lnkscript
74744642e01fSmrg	    func_verbose "creating GNU ld script: $output"
74756747b715Smrg	    echo 'INPUT (' > $output
74764642e01fSmrg	    for obj in $save_libobjs
747705b261ecSmrg	    do
7478475c125cSmrg	      $ECHO "$obj" >> $output
74794642e01fSmrg	    done
74806747b715Smrg	    echo ')' >> $output
7481475c125cSmrg	    delfiles="$delfiles $output"
74824642e01fSmrg	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
74834642e01fSmrg	    output=${output_objdir}/${output_la}.lnk
74844642e01fSmrg	    func_verbose "creating linker input file list: $output"
74854642e01fSmrg	    : > $output
74864642e01fSmrg	    set x $save_libobjs
74874642e01fSmrg	    shift
74884642e01fSmrg	    firstobj=
74894642e01fSmrg	    if test "$compiler_needs_object" = yes; then
74904642e01fSmrg	      firstobj="$1 "
74914642e01fSmrg	      shift
74924642e01fSmrg	    fi
74934642e01fSmrg	    for obj
74944642e01fSmrg	    do
7495475c125cSmrg	      $ECHO "$obj" >> $output
74964642e01fSmrg	    done
7497475c125cSmrg	    delfiles="$delfiles $output"
7498475c125cSmrg	    output=$firstobj\"$file_list_spec$output\"
74994642e01fSmrg	  else
75004642e01fSmrg	    if test -n "$save_libobjs"; then
75014642e01fSmrg	      func_verbose "creating reloadable object files..."
75024642e01fSmrg	      output=$output_objdir/$output_la-${k}.$objext
75034642e01fSmrg	      eval test_cmds=\"$reload_cmds\"
75044642e01fSmrg	      func_len " $test_cmds"
75054642e01fSmrg	      len0=$func_len_result
75064642e01fSmrg	      len=$len0
75074642e01fSmrg
75084642e01fSmrg	      # Loop over the list of objects to be linked.
75094642e01fSmrg	      for obj in $save_libobjs
75104642e01fSmrg	      do
75114642e01fSmrg		func_len " $obj"
75124642e01fSmrg		func_arith $len + $func_len_result
75134642e01fSmrg		len=$func_arith_result
75144642e01fSmrg		if test "X$objlist" = X ||
75154642e01fSmrg		   test "$len" -lt "$max_cmd_len"; then
75164642e01fSmrg		  func_append objlist " $obj"
75174642e01fSmrg		else
75184642e01fSmrg		  # The command $test_cmds is almost too long, add a
75194642e01fSmrg		  # command to the queue.
75204642e01fSmrg		  if test "$k" -eq 1 ; then
75214642e01fSmrg		    # The first file doesn't have a previous command to add.
75226747b715Smrg		    reload_objs=$objlist
75236747b715Smrg		    eval concat_cmds=\"$reload_cmds\"
75244642e01fSmrg		  else
75254642e01fSmrg		    # All subsequent reloadable object files will link in
75264642e01fSmrg		    # the last one created.
75276747b715Smrg		    reload_objs="$objlist $last_robj"
75286747b715Smrg		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
75294642e01fSmrg		  fi
75304642e01fSmrg		  last_robj=$output_objdir/$output_la-${k}.$objext
75314642e01fSmrg		  func_arith $k + 1
75324642e01fSmrg		  k=$func_arith_result
75334642e01fSmrg		  output=$output_objdir/$output_la-${k}.$objext
75346747b715Smrg		  objlist=" $obj"
75354642e01fSmrg		  func_len " $last_robj"
75364642e01fSmrg		  func_arith $len0 + $func_len_result
75374642e01fSmrg		  len=$func_arith_result
75384642e01fSmrg		fi
75394642e01fSmrg	      done
75404642e01fSmrg	      # Handle the remaining objects by creating one last
75414642e01fSmrg	      # reloadable object file.  All subsequent reloadable object
75424642e01fSmrg	      # files will link in the last one created.
75434642e01fSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
75446747b715Smrg	      reload_objs="$objlist $last_robj"
75456747b715Smrg	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
75464642e01fSmrg	      if test -n "$last_robj"; then
75474642e01fSmrg	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
75484642e01fSmrg	      fi
7549475c125cSmrg	      delfiles="$delfiles $output"
755005b261ecSmrg
75514642e01fSmrg	    else
75524642e01fSmrg	      output=
75534642e01fSmrg	    fi
755405b261ecSmrg
75554642e01fSmrg	    if ${skipped_export-false}; then
75564642e01fSmrg	      func_verbose "generating symbol list for \`$libname.la'"
75574642e01fSmrg	      export_symbols="$output_objdir/$libname.exp"
75584642e01fSmrg	      $opt_dry_run || $RM $export_symbols
75594642e01fSmrg	      libobjs=$output
75604642e01fSmrg	      # Append the command to create the export file.
75614642e01fSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
75624642e01fSmrg	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
75634642e01fSmrg	      if test -n "$last_robj"; then
75644642e01fSmrg		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
75654642e01fSmrg	      fi
756605b261ecSmrg	    fi
756705b261ecSmrg
75684642e01fSmrg	    test -n "$save_libobjs" &&
75694642e01fSmrg	      func_verbose "creating a temporary reloadable object file: $output"
757005b261ecSmrg
75714642e01fSmrg	    # Loop through the commands generated above and execute them.
75724642e01fSmrg	    save_ifs="$IFS"; IFS='~'
75734642e01fSmrg	    for cmd in $concat_cmds; do
75744642e01fSmrg	      IFS="$save_ifs"
75754642e01fSmrg	      $opt_silent || {
75764642e01fSmrg		  func_quote_for_expand "$cmd"
75774642e01fSmrg		  eval "func_echo $func_quote_for_expand_result"
75784642e01fSmrg	      }
75794642e01fSmrg	      $opt_dry_run || eval "$cmd" || {
75804642e01fSmrg		lt_exit=$?
75814642e01fSmrg
75824642e01fSmrg		# Restore the uninstalled library and exit
7583475c125cSmrg		if test "$mode" = relink; then
75844642e01fSmrg		  ( cd "$output_objdir" && \
75854642e01fSmrg		    $RM "${realname}T" && \
75864642e01fSmrg		    $MV "${realname}U" "$realname" )
75874642e01fSmrg		fi
758805b261ecSmrg
75894642e01fSmrg		exit $lt_exit
75904642e01fSmrg	      }
75914642e01fSmrg	    done
75924642e01fSmrg	    IFS="$save_ifs"
759305b261ecSmrg
75944642e01fSmrg	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
75954642e01fSmrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
75964642e01fSmrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
759705b261ecSmrg	    fi
759805b261ecSmrg	  fi
759905b261ecSmrg
76004642e01fSmrg          if ${skipped_export-false}; then
76014642e01fSmrg	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
76024642e01fSmrg	      tmp_export_symbols="$export_symbols"
76034642e01fSmrg	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
76046747b715Smrg	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
76054642e01fSmrg	    fi
760605b261ecSmrg
76074642e01fSmrg	    if test -n "$orig_export_symbols"; then
76084642e01fSmrg	      # The given exports_symbols file has to be filtered, so filter it.
76094642e01fSmrg	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
76104642e01fSmrg	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
76114642e01fSmrg	      # 's' commands which not all seds can handle. GNU sed should be fine
76124642e01fSmrg	      # though. Also, the filter scales superlinearly with the number of
76134642e01fSmrg	      # global variables. join(1) would be nice here, but unfortunately
76144642e01fSmrg	      # isn't a blessed tool.
76154642e01fSmrg	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
7616475c125cSmrg	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
76174642e01fSmrg	      export_symbols=$output_objdir/$libname.def
76184642e01fSmrg	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
76194642e01fSmrg	    fi
76204642e01fSmrg	  fi
762105b261ecSmrg
76224642e01fSmrg	  libobjs=$output
76234642e01fSmrg	  # Restore the value of output.
76244642e01fSmrg	  output=$save_output
762505b261ecSmrg
76264642e01fSmrg	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
76274642e01fSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
76284642e01fSmrg	    test "X$libobjs" = "X " && libobjs=
76294642e01fSmrg	  fi
76304642e01fSmrg	  # Expand the library linking commands again to reset the
76314642e01fSmrg	  # value of $libobjs for piecewise linking.
763205b261ecSmrg
76334642e01fSmrg	  # Do each of the archive commands.
76344642e01fSmrg	  if test "$module" = yes && test -n "$module_cmds" ; then
76354642e01fSmrg	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
76364642e01fSmrg	      cmds=$module_expsym_cmds
76374642e01fSmrg	    else
76384642e01fSmrg	      cmds=$module_cmds
763905b261ecSmrg	    fi
764005b261ecSmrg	  else
76414642e01fSmrg	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
76424642e01fSmrg	      cmds=$archive_expsym_cmds
76434642e01fSmrg	    else
76444642e01fSmrg	      cmds=$archive_cmds
76454642e01fSmrg	    fi
764605b261ecSmrg	  fi
76474642e01fSmrg	fi
764805b261ecSmrg
76494642e01fSmrg	if test -n "$delfiles"; then
76504642e01fSmrg	  # Append the command to remove temporary files to $cmds.
76514642e01fSmrg	  eval cmds=\"\$cmds~\$RM $delfiles\"
76524642e01fSmrg	fi
765305b261ecSmrg
76544642e01fSmrg	# Add any objects from preloaded convenience libraries
76554642e01fSmrg	if test -n "$dlprefiles"; then
76564642e01fSmrg	  gentop="$output_objdir/${outputname}x"
7657475c125cSmrg	  generated="$generated $gentop"
765805b261ecSmrg
76594642e01fSmrg	  func_extract_archives $gentop $dlprefiles
7660475c125cSmrg	  libobjs="$libobjs $func_extract_archives_result"
76614642e01fSmrg	  test "X$libobjs" = "X " && libobjs=
76624642e01fSmrg	fi
766305b261ecSmrg
76644642e01fSmrg	save_ifs="$IFS"; IFS='~'
76654642e01fSmrg	for cmd in $cmds; do
76664642e01fSmrg	  IFS="$save_ifs"
76674642e01fSmrg	  eval cmd=\"$cmd\"
76684642e01fSmrg	  $opt_silent || {
76694642e01fSmrg	    func_quote_for_expand "$cmd"
76704642e01fSmrg	    eval "func_echo $func_quote_for_expand_result"
76714642e01fSmrg	  }
76724642e01fSmrg	  $opt_dry_run || eval "$cmd" || {
76734642e01fSmrg	    lt_exit=$?
767405b261ecSmrg
76754642e01fSmrg	    # Restore the uninstalled library and exit
7676475c125cSmrg	    if test "$mode" = relink; then
76774642e01fSmrg	      ( cd "$output_objdir" && \
76784642e01fSmrg	        $RM "${realname}T" && \
76794642e01fSmrg		$MV "${realname}U" "$realname" )
76804642e01fSmrg	    fi
768105b261ecSmrg
76824642e01fSmrg	    exit $lt_exit
76834642e01fSmrg	  }
76844642e01fSmrg	done
76854642e01fSmrg	IFS="$save_ifs"
768605b261ecSmrg
76874642e01fSmrg	# Restore the uninstalled library and exit
7688475c125cSmrg	if test "$mode" = relink; then
76894642e01fSmrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
769005b261ecSmrg
76914642e01fSmrg	  if test -n "$convenience"; then
76924642e01fSmrg	    if test -z "$whole_archive_flag_spec"; then
76934642e01fSmrg	      func_show_eval '${RM}r "$gentop"'
76944642e01fSmrg	    fi
76954642e01fSmrg	  fi
769605b261ecSmrg
76974642e01fSmrg	  exit $EXIT_SUCCESS
76984642e01fSmrg	fi
76994642e01fSmrg
77004642e01fSmrg	# Create links to the real library.
77014642e01fSmrg	for linkname in $linknames; do
77024642e01fSmrg	  if test "$realname" != "$linkname"; then
77034642e01fSmrg	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
770405b261ecSmrg	  fi
770505b261ecSmrg	done
770605b261ecSmrg
77074642e01fSmrg	# If -module or -export-dynamic was specified, set the dlname.
77084642e01fSmrg	if test "$module" = yes || test "$export_dynamic" = yes; then
77094642e01fSmrg	  # On all known operating systems, these are identical.
77104642e01fSmrg	  dlname="$soname"
77114642e01fSmrg	fi
77124642e01fSmrg      fi
771305b261ecSmrg      ;;
771405b261ecSmrg
77154642e01fSmrg    obj)
77164642e01fSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
77174642e01fSmrg	func_warning "\`-dlopen' is ignored for objects"
77184642e01fSmrg      fi
771905b261ecSmrg
77204642e01fSmrg      case " $deplibs" in
77214642e01fSmrg      *\ -l* | *\ -L*)
77224642e01fSmrg	func_warning "\`-l' and \`-L' are ignored for objects" ;;
772305b261ecSmrg      esac
772405b261ecSmrg
77254642e01fSmrg      test -n "$rpath" && \
77264642e01fSmrg	func_warning "\`-rpath' is ignored for objects"
77274642e01fSmrg
77284642e01fSmrg      test -n "$xrpath" && \
77294642e01fSmrg	func_warning "\`-R' is ignored for objects"
773005b261ecSmrg
77314642e01fSmrg      test -n "$vinfo" && \
77324642e01fSmrg	func_warning "\`-version-info' is ignored for objects"
773305b261ecSmrg
77344642e01fSmrg      test -n "$release" && \
77354642e01fSmrg	func_warning "\`-release' is ignored for objects"
77364642e01fSmrg
77374642e01fSmrg      case $output in
77384642e01fSmrg      *.lo)
77394642e01fSmrg	test -n "$objs$old_deplibs" && \
77404642e01fSmrg	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
77414642e01fSmrg
77424642e01fSmrg	libobj=$output
77434642e01fSmrg	func_lo2o "$libobj"
77444642e01fSmrg	obj=$func_lo2o_result
774505b261ecSmrg	;;
774605b261ecSmrg      *)
77474642e01fSmrg	libobj=
77484642e01fSmrg	obj="$output"
774905b261ecSmrg	;;
775005b261ecSmrg      esac
775105b261ecSmrg
77524642e01fSmrg      # Delete the old objects.
77534642e01fSmrg      $opt_dry_run || $RM $obj $libobj
775405b261ecSmrg
77554642e01fSmrg      # Objects from convenience libraries.  This assumes
77564642e01fSmrg      # single-version convenience libraries.  Whenever we create
77574642e01fSmrg      # different ones for PIC/non-PIC, this we'll have to duplicate
77584642e01fSmrg      # the extraction.
77594642e01fSmrg      reload_conv_objs=
77604642e01fSmrg      gentop=
77614642e01fSmrg      # reload_cmds runs $LD directly, so let us get rid of
77624642e01fSmrg      # -Wl from whole_archive_flag_spec and hope we can get by with
77634642e01fSmrg      # turning comma into space..
77644642e01fSmrg      wl=
776505b261ecSmrg
77664642e01fSmrg      if test -n "$convenience"; then
77674642e01fSmrg	if test -n "$whole_archive_flag_spec"; then
77684642e01fSmrg	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
77696747b715Smrg	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
77704642e01fSmrg	else
77714642e01fSmrg	  gentop="$output_objdir/${obj}x"
7772475c125cSmrg	  generated="$generated $gentop"
777305b261ecSmrg
77744642e01fSmrg	  func_extract_archives $gentop $convenience
77754642e01fSmrg	  reload_conv_objs="$reload_objs $func_extract_archives_result"
77764642e01fSmrg	fi
777705b261ecSmrg      fi
777805b261ecSmrg
77794642e01fSmrg      # Create the old-style object.
77806747b715Smrg      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
778105b261ecSmrg
77824642e01fSmrg      output="$obj"
77834642e01fSmrg      func_execute_cmds "$reload_cmds" 'exit $?'
778405b261ecSmrg
77854642e01fSmrg      # Exit if we aren't doing a library object file.
77864642e01fSmrg      if test -z "$libobj"; then
77874642e01fSmrg	if test -n "$gentop"; then
77884642e01fSmrg	  func_show_eval '${RM}r "$gentop"'
77894642e01fSmrg	fi
77904642e01fSmrg
77914642e01fSmrg	exit $EXIT_SUCCESS
779205b261ecSmrg      fi
77934642e01fSmrg
77944642e01fSmrg      if test "$build_libtool_libs" != yes; then
77954642e01fSmrg	if test -n "$gentop"; then
77964642e01fSmrg	  func_show_eval '${RM}r "$gentop"'
77974642e01fSmrg	fi
77984642e01fSmrg
77994642e01fSmrg	# Create an invalid libtool object if no PIC, so that we don't
78004642e01fSmrg	# accidentally link it into a program.
78014642e01fSmrg	# $show "echo timestamp > $libobj"
78024642e01fSmrg	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
78034642e01fSmrg	exit $EXIT_SUCCESS
78044642e01fSmrg      fi
78054642e01fSmrg
78064642e01fSmrg      if test -n "$pic_flag" || test "$pic_mode" != default; then
78074642e01fSmrg	# Only do commands if we really have different PIC objects.
78084642e01fSmrg	reload_objs="$libobjs $reload_conv_objs"
78094642e01fSmrg	output="$libobj"
78104642e01fSmrg	func_execute_cmds "$reload_cmds" 'exit $?'
78114642e01fSmrg      fi
78124642e01fSmrg
78134642e01fSmrg      if test -n "$gentop"; then
78144642e01fSmrg	func_show_eval '${RM}r "$gentop"'
78154642e01fSmrg      fi
78164642e01fSmrg
78174642e01fSmrg      exit $EXIT_SUCCESS
781805b261ecSmrg      ;;
781905b261ecSmrg
78204642e01fSmrg    prog)
78214642e01fSmrg      case $host in
78224642e01fSmrg	*cygwin*) func_stripname '' '.exe' "$output"
78234642e01fSmrg	          output=$func_stripname_result.exe;;
78244642e01fSmrg      esac
78254642e01fSmrg      test -n "$vinfo" && \
78264642e01fSmrg	func_warning "\`-version-info' is ignored for programs"
782705b261ecSmrg
78284642e01fSmrg      test -n "$release" && \
78294642e01fSmrg	func_warning "\`-release' is ignored for programs"
783005b261ecSmrg
78314642e01fSmrg      test "$preload" = yes \
78324642e01fSmrg        && test "$dlopen_support" = unknown \
78334642e01fSmrg	&& test "$dlopen_self" = unknown \
78344642e01fSmrg	&& test "$dlopen_self_static" = unknown && \
78354642e01fSmrg	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
78364642e01fSmrg
78374642e01fSmrg      case $host in
78384642e01fSmrg      *-*-rhapsody* | *-*-darwin1.[012])
78394642e01fSmrg	# On Rhapsody replace the C library is the System framework
78406747b715Smrg	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
78416747b715Smrg	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
784205b261ecSmrg	;;
78434642e01fSmrg      esac
784405b261ecSmrg
78454642e01fSmrg      case $host in
78464642e01fSmrg      *-*-darwin*)
78474642e01fSmrg	# Don't allow lazy linking, it breaks C++ global constructors
78484642e01fSmrg	# But is supposedly fixed on 10.4 or later (yay!).
78494642e01fSmrg	if test "$tagname" = CXX ; then
78504642e01fSmrg	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
78514642e01fSmrg	    10.[0123])
7852475c125cSmrg	      compile_command="$compile_command ${wl}-bind_at_load"
7853475c125cSmrg	      finalize_command="$finalize_command ${wl}-bind_at_load"
78544642e01fSmrg	    ;;
78554642e01fSmrg	  esac
785605b261ecSmrg	fi
78574642e01fSmrg	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
78586747b715Smrg	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
78596747b715Smrg	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
78604642e01fSmrg	;;
78614642e01fSmrg      esac
786205b261ecSmrg
786305b261ecSmrg
78644642e01fSmrg      # move library search paths that coincide with paths to not yet
78654642e01fSmrg      # installed libraries to the beginning of the library search list
78664642e01fSmrg      new_libs=
78674642e01fSmrg      for path in $notinst_path; do
78684642e01fSmrg	case " $new_libs " in
78694642e01fSmrg	*" -L$path/$objdir "*) ;;
78704642e01fSmrg	*)
78714642e01fSmrg	  case " $compile_deplibs " in
78724642e01fSmrg	  *" -L$path/$objdir "*)
7873475c125cSmrg	    new_libs="$new_libs -L$path/$objdir" ;;
787405b261ecSmrg	  esac
78754642e01fSmrg	  ;;
78764642e01fSmrg	esac
78774642e01fSmrg      done
78784642e01fSmrg      for deplib in $compile_deplibs; do
78794642e01fSmrg	case $deplib in
78804642e01fSmrg	-L*)
78814642e01fSmrg	  case " $new_libs " in
78824642e01fSmrg	  *" $deplib "*) ;;
7883475c125cSmrg	  *) new_libs="$new_libs $deplib" ;;
788405b261ecSmrg	  esac
78854642e01fSmrg	  ;;
7886475c125cSmrg	*) new_libs="$new_libs $deplib" ;;
78874642e01fSmrg	esac
78884642e01fSmrg      done
78894642e01fSmrg      compile_deplibs="$new_libs"
789005b261ecSmrg
789105b261ecSmrg
7892475c125cSmrg      compile_command="$compile_command $compile_deplibs"
7893475c125cSmrg      finalize_command="$finalize_command $finalize_deplibs"
789405b261ecSmrg
78954642e01fSmrg      if test -n "$rpath$xrpath"; then
78964642e01fSmrg	# If the user specified any rpath flags, then add them.
78974642e01fSmrg	for libdir in $rpath $xrpath; do
78984642e01fSmrg	  # This is the magic to use -rpath.
78994642e01fSmrg	  case "$finalize_rpath " in
79004642e01fSmrg	  *" $libdir "*) ;;
7901475c125cSmrg	  *) finalize_rpath="$finalize_rpath $libdir" ;;
79024642e01fSmrg	  esac
79034642e01fSmrg	done
79044642e01fSmrg      fi
790505b261ecSmrg
79064642e01fSmrg      # Now hardcode the library paths
79074642e01fSmrg      rpath=
79084642e01fSmrg      hardcode_libdirs=
79094642e01fSmrg      for libdir in $compile_rpath $finalize_rpath; do
79104642e01fSmrg	if test -n "$hardcode_libdir_flag_spec"; then
79114642e01fSmrg	  if test -n "$hardcode_libdir_separator"; then
79124642e01fSmrg	    if test -z "$hardcode_libdirs"; then
79134642e01fSmrg	      hardcode_libdirs="$libdir"
79144642e01fSmrg	    else
79154642e01fSmrg	      # Just accumulate the unique libdirs.
79164642e01fSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
79174642e01fSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
79184642e01fSmrg		;;
79194642e01fSmrg	      *)
7920475c125cSmrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
79214642e01fSmrg		;;
79224642e01fSmrg	      esac
79234642e01fSmrg	    fi
792405b261ecSmrg	  else
79254642e01fSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
7926475c125cSmrg	    rpath="$rpath $flag"
792705b261ecSmrg	  fi
79284642e01fSmrg	elif test -n "$runpath_var"; then
79294642e01fSmrg	  case "$perm_rpath " in
79304642e01fSmrg	  *" $libdir "*) ;;
7931475c125cSmrg	  *) perm_rpath="$perm_rpath $libdir" ;;
79324642e01fSmrg	  esac
79334642e01fSmrg	fi
79344642e01fSmrg	case $host in
79354642e01fSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
79364642e01fSmrg	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
79374642e01fSmrg	  case :$dllsearchpath: in
79384642e01fSmrg	  *":$libdir:"*) ;;
79394642e01fSmrg	  ::) dllsearchpath=$libdir;;
7940475c125cSmrg	  *) dllsearchpath="$dllsearchpath:$libdir";;
79414642e01fSmrg	  esac
79424642e01fSmrg	  case :$dllsearchpath: in
79434642e01fSmrg	  *":$testbindir:"*) ;;
79444642e01fSmrg	  ::) dllsearchpath=$testbindir;;
7945475c125cSmrg	  *) dllsearchpath="$dllsearchpath:$testbindir";;
79464642e01fSmrg	  esac
79474642e01fSmrg	  ;;
79484642e01fSmrg	esac
79494642e01fSmrg      done
79504642e01fSmrg      # Substitute the hardcoded libdirs into the rpath.
79514642e01fSmrg      if test -n "$hardcode_libdir_separator" &&
79524642e01fSmrg	 test -n "$hardcode_libdirs"; then
79534642e01fSmrg	libdir="$hardcode_libdirs"
79544642e01fSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
79554642e01fSmrg      fi
79564642e01fSmrg      compile_rpath="$rpath"
795705b261ecSmrg
79584642e01fSmrg      rpath=
79594642e01fSmrg      hardcode_libdirs=
79604642e01fSmrg      for libdir in $finalize_rpath; do
79614642e01fSmrg	if test -n "$hardcode_libdir_flag_spec"; then
79624642e01fSmrg	  if test -n "$hardcode_libdir_separator"; then
79634642e01fSmrg	    if test -z "$hardcode_libdirs"; then
79644642e01fSmrg	      hardcode_libdirs="$libdir"
79654642e01fSmrg	    else
79664642e01fSmrg	      # Just accumulate the unique libdirs.
79674642e01fSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
79684642e01fSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
79694642e01fSmrg		;;
79704642e01fSmrg	      *)
7971475c125cSmrg		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
79724642e01fSmrg		;;
79734642e01fSmrg	      esac
79744642e01fSmrg	    fi
797505b261ecSmrg	  else
79764642e01fSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
7977475c125cSmrg	    rpath="$rpath $flag"
797805b261ecSmrg	  fi
79794642e01fSmrg	elif test -n "$runpath_var"; then
79804642e01fSmrg	  case "$finalize_perm_rpath " in
79814642e01fSmrg	  *" $libdir "*) ;;
7982475c125cSmrg	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
79834642e01fSmrg	  esac
798405b261ecSmrg	fi
79854642e01fSmrg      done
79864642e01fSmrg      # Substitute the hardcoded libdirs into the rpath.
79874642e01fSmrg      if test -n "$hardcode_libdir_separator" &&
79884642e01fSmrg	 test -n "$hardcode_libdirs"; then
79894642e01fSmrg	libdir="$hardcode_libdirs"
79904642e01fSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
79914642e01fSmrg      fi
79924642e01fSmrg      finalize_rpath="$rpath"
799305b261ecSmrg
79944642e01fSmrg      if test -n "$libobjs" && test "$build_old_libs" = yes; then
79954642e01fSmrg	# Transform all the library objects into standard objects.
79966747b715Smrg	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
79976747b715Smrg	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
79984642e01fSmrg      fi
799905b261ecSmrg
80004642e01fSmrg      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
800105b261ecSmrg
80024642e01fSmrg      # template prelinking step
80034642e01fSmrg      if test -n "$prelink_cmds"; then
80044642e01fSmrg	func_execute_cmds "$prelink_cmds" 'exit $?'
80054642e01fSmrg      fi
800605b261ecSmrg
80074642e01fSmrg      wrappers_required=yes
80084642e01fSmrg      case $host in
80096747b715Smrg      *cegcc* | *mingw32ce*)
80106747b715Smrg        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
80116747b715Smrg        wrappers_required=no
80126747b715Smrg        ;;
80134642e01fSmrg      *cygwin* | *mingw* )
80144642e01fSmrg        if test "$build_libtool_libs" != yes; then
80154642e01fSmrg          wrappers_required=no
80164642e01fSmrg        fi
80174642e01fSmrg        ;;
80184642e01fSmrg      *)
80194642e01fSmrg        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
80204642e01fSmrg          wrappers_required=no
80214642e01fSmrg        fi
80224642e01fSmrg        ;;
80234642e01fSmrg      esac
80244642e01fSmrg      if test "$wrappers_required" = no; then
80254642e01fSmrg	# Replace the output file specification.
80266747b715Smrg	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
80274642e01fSmrg	link_command="$compile_command$compile_rpath"
802805b261ecSmrg
80294642e01fSmrg	# We have no uninstalled library dependencies, so finalize right now.
80304642e01fSmrg	exit_status=0
80314642e01fSmrg	func_show_eval "$link_command" 'exit_status=$?'
803205b261ecSmrg
80334642e01fSmrg	# Delete the generated files.
80344642e01fSmrg	if test -f "$output_objdir/${outputname}S.${objext}"; then
80354642e01fSmrg	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
803605b261ecSmrg	fi
803705b261ecSmrg
80384642e01fSmrg	exit $exit_status
80394642e01fSmrg      fi
804005b261ecSmrg
80414642e01fSmrg      if test -n "$compile_shlibpath$finalize_shlibpath"; then
80424642e01fSmrg	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
80434642e01fSmrg      fi
80444642e01fSmrg      if test -n "$finalize_shlibpath"; then
80454642e01fSmrg	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
80464642e01fSmrg      fi
804705b261ecSmrg
80484642e01fSmrg      compile_var=
80494642e01fSmrg      finalize_var=
80504642e01fSmrg      if test -n "$runpath_var"; then
80514642e01fSmrg	if test -n "$perm_rpath"; then
80524642e01fSmrg	  # We should set the runpath_var.
80534642e01fSmrg	  rpath=
80544642e01fSmrg	  for dir in $perm_rpath; do
8055475c125cSmrg	    rpath="$rpath$dir:"
80564642e01fSmrg	  done
80574642e01fSmrg	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
805805b261ecSmrg	fi
80594642e01fSmrg	if test -n "$finalize_perm_rpath"; then
80604642e01fSmrg	  # We should set the runpath_var.
80614642e01fSmrg	  rpath=
80624642e01fSmrg	  for dir in $finalize_perm_rpath; do
8063475c125cSmrg	    rpath="$rpath$dir:"
80644642e01fSmrg	  done
80654642e01fSmrg	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
806605b261ecSmrg	fi
80674642e01fSmrg      fi
806805b261ecSmrg
80694642e01fSmrg      if test "$no_install" = yes; then
80704642e01fSmrg	# We don't need to create a wrapper script.
80714642e01fSmrg	link_command="$compile_var$compile_command$compile_rpath"
80724642e01fSmrg	# Replace the output file specification.
80736747b715Smrg	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
80744642e01fSmrg	# Delete the old output file.
80754642e01fSmrg	$opt_dry_run || $RM $output
80764642e01fSmrg	# Link the executable and exit
80774642e01fSmrg	func_show_eval "$link_command" 'exit $?'
807805b261ecSmrg	exit $EXIT_SUCCESS
80794642e01fSmrg      fi
808005b261ecSmrg
80814642e01fSmrg      if test "$hardcode_action" = relink; then
80824642e01fSmrg	# Fast installation is not supported
80834642e01fSmrg	link_command="$compile_var$compile_command$compile_rpath"
80844642e01fSmrg	relink_command="$finalize_var$finalize_command$finalize_rpath"
80854642e01fSmrg
80864642e01fSmrg	func_warning "this platform does not like uninstalled shared libraries"
80874642e01fSmrg	func_warning "\`$output' will be relinked during installation"
80884642e01fSmrg      else
80894642e01fSmrg	if test "$fast_install" != no; then
80904642e01fSmrg	  link_command="$finalize_var$compile_command$finalize_rpath"
80914642e01fSmrg	  if test "$fast_install" = yes; then
80926747b715Smrg	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
80934642e01fSmrg	  else
80944642e01fSmrg	    # fast_install is set to needless
80954642e01fSmrg	    relink_command=
80964642e01fSmrg	  fi
809705b261ecSmrg	else
80984642e01fSmrg	  link_command="$compile_var$compile_command$compile_rpath"
80994642e01fSmrg	  relink_command="$finalize_var$finalize_command$finalize_rpath"
810005b261ecSmrg	fi
81014642e01fSmrg      fi
810205b261ecSmrg
81034642e01fSmrg      # Replace the output file specification.
81046747b715Smrg      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
810505b261ecSmrg
81064642e01fSmrg      # Delete the old output files.
81074642e01fSmrg      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
810805b261ecSmrg
81094642e01fSmrg      func_show_eval "$link_command" 'exit $?'
811005b261ecSmrg
81114642e01fSmrg      # Now create the wrapper script.
81124642e01fSmrg      func_verbose "creating $output"
811305b261ecSmrg
81144642e01fSmrg      # Quote the relink command for shipping.
81154642e01fSmrg      if test -n "$relink_command"; then
81164642e01fSmrg	# Preserve any variables that may affect compiler behavior
81174642e01fSmrg	for var in $variables_saved_for_relink; do
81184642e01fSmrg	  if eval test -z \"\${$var+set}\"; then
81194642e01fSmrg	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
81204642e01fSmrg	  elif eval var_value=\$$var; test -z "$var_value"; then
81214642e01fSmrg	    relink_command="$var=; export $var; $relink_command"
812205b261ecSmrg	  else
81234642e01fSmrg	    func_quote_for_eval "$var_value"
81244642e01fSmrg	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
812505b261ecSmrg	  fi
81264642e01fSmrg	done
81274642e01fSmrg	relink_command="(cd `pwd`; $relink_command)"
81286747b715Smrg	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
81294642e01fSmrg      fi
81304642e01fSmrg
81314642e01fSmrg      # Only actually do things if not in dry run mode.
81324642e01fSmrg      $opt_dry_run || {
81334642e01fSmrg	# win32 will think the script is a binary if it has
81344642e01fSmrg	# a .exe suffix, so we strip it off here.
81354642e01fSmrg	case $output in
81364642e01fSmrg	  *.exe) func_stripname '' '.exe' "$output"
81374642e01fSmrg	         output=$func_stripname_result ;;
81384642e01fSmrg	esac
81394642e01fSmrg	# test for cygwin because mv fails w/o .exe extensions
81404642e01fSmrg	case $host in
81414642e01fSmrg	  *cygwin*)
81424642e01fSmrg	    exeext=.exe
81434642e01fSmrg	    func_stripname '' '.exe' "$outputname"
81444642e01fSmrg	    outputname=$func_stripname_result ;;
81454642e01fSmrg	  *) exeext= ;;
814605b261ecSmrg	esac
81474642e01fSmrg	case $host in
81484642e01fSmrg	  *cygwin* | *mingw* )
81494642e01fSmrg	    func_dirname_and_basename "$output" "" "."
81504642e01fSmrg	    output_name=$func_basename_result
81514642e01fSmrg	    output_path=$func_dirname_result
81524642e01fSmrg	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
81534642e01fSmrg	    cwrapper="$output_path/$output_name.exe"
81544642e01fSmrg	    $RM $cwrappersource $cwrapper
81554642e01fSmrg	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
81564642e01fSmrg
81574642e01fSmrg	    func_emit_cwrapperexe_src > $cwrappersource
81584642e01fSmrg
81594642e01fSmrg	    # The wrapper executable is built using the $host compiler,
81604642e01fSmrg	    # because it contains $host paths and files. If cross-
81614642e01fSmrg	    # compiling, it, like the target executable, must be
81624642e01fSmrg	    # executed on the $host or under an emulation environment.
81634642e01fSmrg	    $opt_dry_run || {
81644642e01fSmrg	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
81654642e01fSmrg	      $STRIP $cwrapper
81664642e01fSmrg	    }
816705b261ecSmrg
81684642e01fSmrg	    # Now, create the wrapper script for func_source use:
81694642e01fSmrg	    func_ltwrapper_scriptname $cwrapper
81704642e01fSmrg	    $RM $func_ltwrapper_scriptname_result
81714642e01fSmrg	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
81724642e01fSmrg	    $opt_dry_run || {
81734642e01fSmrg	      # note: this script will not be executed, so do not chmod.
81744642e01fSmrg	      if test "x$build" = "x$host" ; then
81754642e01fSmrg		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
81764642e01fSmrg	      else
81774642e01fSmrg		func_emit_wrapper no > $func_ltwrapper_scriptname_result
81784642e01fSmrg	      fi
81794642e01fSmrg	    }
81804642e01fSmrg	  ;;
81814642e01fSmrg	  * )
81824642e01fSmrg	    $RM $output
81834642e01fSmrg	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
818405b261ecSmrg
81854642e01fSmrg	    func_emit_wrapper no > $output
81864642e01fSmrg	    chmod +x $output
81874642e01fSmrg	  ;;
81884642e01fSmrg	esac
81894642e01fSmrg      }
81904642e01fSmrg      exit $EXIT_SUCCESS
81914642e01fSmrg      ;;
81924642e01fSmrg    esac
819305b261ecSmrg
81944642e01fSmrg    # See if we need to build an old-fashioned archive.
81954642e01fSmrg    for oldlib in $oldlibs; do
819605b261ecSmrg
81974642e01fSmrg      if test "$build_libtool_libs" = convenience; then
81984642e01fSmrg	oldobjs="$libobjs_save $symfileobj"
81994642e01fSmrg	addlibs="$convenience"
82004642e01fSmrg	build_libtool_libs=no
82014642e01fSmrg      else
82024642e01fSmrg	if test "$build_libtool_libs" = module; then
82034642e01fSmrg	  oldobjs="$libobjs_save"
82044642e01fSmrg	  build_libtool_libs=no
82054642e01fSmrg	else
82064642e01fSmrg	  oldobjs="$old_deplibs $non_pic_objects"
82074642e01fSmrg	  if test "$preload" = yes && test -f "$symfileobj"; then
8208475c125cSmrg	    oldobjs="$oldobjs $symfileobj"
82094642e01fSmrg	  fi
82104642e01fSmrg	fi
82114642e01fSmrg	addlibs="$old_convenience"
821205b261ecSmrg      fi
821305b261ecSmrg
82144642e01fSmrg      if test -n "$addlibs"; then
82154642e01fSmrg	gentop="$output_objdir/${outputname}x"
8216475c125cSmrg	generated="$generated $gentop"
821705b261ecSmrg
82184642e01fSmrg	func_extract_archives $gentop $addlibs
8219475c125cSmrg	oldobjs="$oldobjs $func_extract_archives_result"
82204642e01fSmrg      fi
822105b261ecSmrg
82224642e01fSmrg      # Do each command in the archive commands.
82234642e01fSmrg      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
82244642e01fSmrg	cmds=$old_archive_from_new_cmds
82254642e01fSmrg      else
822605b261ecSmrg
82274642e01fSmrg	# Add any objects from preloaded convenience libraries
82284642e01fSmrg	if test -n "$dlprefiles"; then
82294642e01fSmrg	  gentop="$output_objdir/${outputname}x"
8230475c125cSmrg	  generated="$generated $gentop"
823105b261ecSmrg
82324642e01fSmrg	  func_extract_archives $gentop $dlprefiles
8233475c125cSmrg	  oldobjs="$oldobjs $func_extract_archives_result"
82344642e01fSmrg	fi
823505b261ecSmrg
82364642e01fSmrg	# POSIX demands no paths to be encoded in archives.  We have
82374642e01fSmrg	# to avoid creating archives with duplicate basenames if we
82384642e01fSmrg	# might have to extract them afterwards, e.g., when creating a
82394642e01fSmrg	# static archive out of a convenience library, or when linking
82404642e01fSmrg	# the entirety of a libtool archive into another (currently
82414642e01fSmrg	# not supported by libtool).
82424642e01fSmrg	if (for obj in $oldobjs
82434642e01fSmrg	    do
82444642e01fSmrg	      func_basename "$obj"
82454642e01fSmrg	      $ECHO "$func_basename_result"
82464642e01fSmrg	    done | sort | sort -uc >/dev/null 2>&1); then
82474642e01fSmrg	  :
82484642e01fSmrg	else
82496747b715Smrg	  echo "copying selected object files to avoid basename conflicts..."
82504642e01fSmrg	  gentop="$output_objdir/${outputname}x"
8251475c125cSmrg	  generated="$generated $gentop"
82524642e01fSmrg	  func_mkdir_p "$gentop"
82534642e01fSmrg	  save_oldobjs=$oldobjs
82544642e01fSmrg	  oldobjs=
82554642e01fSmrg	  counter=1
82564642e01fSmrg	  for obj in $save_oldobjs
82574642e01fSmrg	  do
82584642e01fSmrg	    func_basename "$obj"
82594642e01fSmrg	    objbase="$func_basename_result"
82604642e01fSmrg	    case " $oldobjs " in
82614642e01fSmrg	    " ") oldobjs=$obj ;;
82624642e01fSmrg	    *[\ /]"$objbase "*)
82634642e01fSmrg	      while :; do
82644642e01fSmrg		# Make sure we don't pick an alternate name that also
82654642e01fSmrg		# overlaps.
82664642e01fSmrg		newobj=lt$counter-$objbase
82674642e01fSmrg		func_arith $counter + 1
82684642e01fSmrg		counter=$func_arith_result
82694642e01fSmrg		case " $oldobjs " in
82704642e01fSmrg		*[\ /]"$newobj "*) ;;
82714642e01fSmrg		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
82724642e01fSmrg		esac
82734642e01fSmrg	      done
82744642e01fSmrg	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
8275475c125cSmrg	      oldobjs="$oldobjs $gentop/$newobj"
82764642e01fSmrg	      ;;
8277475c125cSmrg	    *) oldobjs="$oldobjs $obj" ;;
82784642e01fSmrg	    esac
827905b261ecSmrg	  done
828005b261ecSmrg	fi
82814642e01fSmrg	eval cmds=\"$old_archive_cmds\"
828205b261ecSmrg
82834642e01fSmrg	func_len " $cmds"
82844642e01fSmrg	len=$func_len_result
82854642e01fSmrg	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
82864642e01fSmrg	  cmds=$old_archive_cmds
82874642e01fSmrg	else
82884642e01fSmrg	  # the command line is too long to link in one step, link in parts
82894642e01fSmrg	  func_verbose "using piecewise archive linking..."
82904642e01fSmrg	  save_RANLIB=$RANLIB
82914642e01fSmrg	  RANLIB=:
82924642e01fSmrg	  objlist=
82934642e01fSmrg	  concat_cmds=
82944642e01fSmrg	  save_oldobjs=$oldobjs
82954642e01fSmrg	  oldobjs=
82964642e01fSmrg	  # Is there a better way of finding the last object in the list?
82974642e01fSmrg	  for obj in $save_oldobjs
82984642e01fSmrg	  do
82994642e01fSmrg	    last_oldobj=$obj
83004642e01fSmrg	  done
83014642e01fSmrg	  eval test_cmds=\"$old_archive_cmds\"
83024642e01fSmrg	  func_len " $test_cmds"
83034642e01fSmrg	  len0=$func_len_result
83044642e01fSmrg	  len=$len0
83054642e01fSmrg	  for obj in $save_oldobjs
83064642e01fSmrg	  do
83074642e01fSmrg	    func_len " $obj"
83084642e01fSmrg	    func_arith $len + $func_len_result
83094642e01fSmrg	    len=$func_arith_result
83104642e01fSmrg	    func_append objlist " $obj"
83114642e01fSmrg	    if test "$len" -lt "$max_cmd_len"; then
83124642e01fSmrg	      :
83134642e01fSmrg	    else
83144642e01fSmrg	      # the above command should be used before it gets too long
83154642e01fSmrg	      oldobjs=$objlist
83164642e01fSmrg	      if test "$obj" = "$last_oldobj" ; then
83174642e01fSmrg		RANLIB=$save_RANLIB
83184642e01fSmrg	      fi
83194642e01fSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
83204642e01fSmrg	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
83214642e01fSmrg	      objlist=
83224642e01fSmrg	      len=$len0
83234642e01fSmrg	    fi
83244642e01fSmrg	  done
83254642e01fSmrg	  RANLIB=$save_RANLIB
83264642e01fSmrg	  oldobjs=$objlist
83274642e01fSmrg	  if test "X$oldobjs" = "X" ; then
83284642e01fSmrg	    eval cmds=\"\$concat_cmds\"
83294642e01fSmrg	  else
83304642e01fSmrg	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
83314642e01fSmrg	  fi
83324642e01fSmrg	fi
83334642e01fSmrg      fi
83344642e01fSmrg      func_execute_cmds "$cmds" 'exit $?'
833505b261ecSmrg    done
833605b261ecSmrg
83374642e01fSmrg    test -n "$generated" && \
83384642e01fSmrg      func_show_eval "${RM}r$generated"
833905b261ecSmrg
83404642e01fSmrg    # Now create the libtool archive.
83414642e01fSmrg    case $output in
83424642e01fSmrg    *.la)
83434642e01fSmrg      old_library=
83444642e01fSmrg      test "$build_old_libs" = yes && old_library="$libname.$libext"
83454642e01fSmrg      func_verbose "creating $output"
834605b261ecSmrg
83474642e01fSmrg      # Preserve any variables that may affect compiler behavior
83484642e01fSmrg      for var in $variables_saved_for_relink; do
83494642e01fSmrg	if eval test -z \"\${$var+set}\"; then
83504642e01fSmrg	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
83514642e01fSmrg	elif eval var_value=\$$var; test -z "$var_value"; then
83524642e01fSmrg	  relink_command="$var=; export $var; $relink_command"
835305b261ecSmrg	else
83544642e01fSmrg	  func_quote_for_eval "$var_value"
83554642e01fSmrg	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
835605b261ecSmrg	fi
83574642e01fSmrg      done
83584642e01fSmrg      # Quote the link command for shipping.
83594642e01fSmrg      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
83606747b715Smrg      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
83614642e01fSmrg      if test "$hardcode_automatic" = yes ; then
83624642e01fSmrg	relink_command=
83634642e01fSmrg      fi
836405b261ecSmrg
83654642e01fSmrg      # Only create the output if not a dry run.
83664642e01fSmrg      $opt_dry_run || {
83674642e01fSmrg	for installed in no yes; do
83684642e01fSmrg	  if test "$installed" = yes; then
83694642e01fSmrg	    if test -z "$install_libdir"; then
83704642e01fSmrg	      break
83714642e01fSmrg	    fi
83724642e01fSmrg	    output="$output_objdir/$outputname"i
83734642e01fSmrg	    # Replace all uninstalled libtool libraries with the installed ones
83744642e01fSmrg	    newdependency_libs=
83754642e01fSmrg	    for deplib in $dependency_libs; do
83764642e01fSmrg	      case $deplib in
83774642e01fSmrg	      *.la)
83784642e01fSmrg		func_basename "$deplib"
83794642e01fSmrg		name="$func_basename_result"
83804642e01fSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
83814642e01fSmrg		test -z "$libdir" && \
83824642e01fSmrg		  func_fatal_error "\`$deplib' is not a valid libtool archive"
8383475c125cSmrg		newdependency_libs="$newdependency_libs $libdir/$name"
83846747b715Smrg		;;
8385475c125cSmrg	      *) newdependency_libs="$newdependency_libs $deplib" ;;
83864642e01fSmrg	      esac
83874642e01fSmrg	    done
83884642e01fSmrg	    dependency_libs="$newdependency_libs"
83894642e01fSmrg	    newdlfiles=
83904642e01fSmrg
83914642e01fSmrg	    for lib in $dlfiles; do
83924642e01fSmrg	      case $lib in
83934642e01fSmrg	      *.la)
83944642e01fSmrg	        func_basename "$lib"
83954642e01fSmrg		name="$func_basename_result"
83964642e01fSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
83974642e01fSmrg		test -z "$libdir" && \
83984642e01fSmrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
8399475c125cSmrg		newdlfiles="$newdlfiles $libdir/$name"
84004642e01fSmrg		;;
8401475c125cSmrg	      *) newdlfiles="$newdlfiles $lib" ;;
84024642e01fSmrg	      esac
84034642e01fSmrg	    done
84044642e01fSmrg	    dlfiles="$newdlfiles"
84054642e01fSmrg	    newdlprefiles=
84064642e01fSmrg	    for lib in $dlprefiles; do
84074642e01fSmrg	      case $lib in
84084642e01fSmrg	      *.la)
84094642e01fSmrg		# Only pass preopened files to the pseudo-archive (for
84104642e01fSmrg		# eventual linking with the app. that links it) if we
84114642e01fSmrg		# didn't already link the preopened objects directly into
84124642e01fSmrg		# the library:
84134642e01fSmrg		func_basename "$lib"
84144642e01fSmrg		name="$func_basename_result"
84154642e01fSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
84164642e01fSmrg		test -z "$libdir" && \
84174642e01fSmrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
8418475c125cSmrg		newdlprefiles="$newdlprefiles $libdir/$name"
84194642e01fSmrg		;;
84204642e01fSmrg	      esac
84214642e01fSmrg	    done
84224642e01fSmrg	    dlprefiles="$newdlprefiles"
84234642e01fSmrg	  else
84244642e01fSmrg	    newdlfiles=
84254642e01fSmrg	    for lib in $dlfiles; do
84264642e01fSmrg	      case $lib in
84274642e01fSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
84284642e01fSmrg		*) abs=`pwd`"/$lib" ;;
84294642e01fSmrg	      esac
8430475c125cSmrg	      newdlfiles="$newdlfiles $abs"
84314642e01fSmrg	    done
84324642e01fSmrg	    dlfiles="$newdlfiles"
84334642e01fSmrg	    newdlprefiles=
84344642e01fSmrg	    for lib in $dlprefiles; do
84354642e01fSmrg	      case $lib in
84364642e01fSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
84374642e01fSmrg		*) abs=`pwd`"/$lib" ;;
84384642e01fSmrg	      esac
8439475c125cSmrg	      newdlprefiles="$newdlprefiles $abs"
84404642e01fSmrg	    done
84414642e01fSmrg	    dlprefiles="$newdlprefiles"
84424642e01fSmrg	  fi
84434642e01fSmrg	  $RM $output
84444642e01fSmrg	  # place dlname in correct position for cygwin
84456747b715Smrg	  # In fact, it would be nice if we could use this code for all target
84466747b715Smrg	  # systems that can't hard-code library paths into their executables
84476747b715Smrg	  # and that have no shared library path variable independent of PATH,
84486747b715Smrg	  # but it turns out we can't easily determine that from inspecting
84496747b715Smrg	  # libtool variables, so we have to hard-code the OSs to which it
84506747b715Smrg	  # applies here; at the moment, that means platforms that use the PE
84516747b715Smrg	  # object format with DLL files.  See the long comment at the top of
84526747b715Smrg	  # tests/bindir.at for full details.
84534642e01fSmrg	  tdlname=$dlname
84544642e01fSmrg	  case $host,$output,$installed,$module,$dlname in
84556747b715Smrg	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
84566747b715Smrg	      # If a -bindir argument was supplied, place the dll there.
84576747b715Smrg	      if test "x$bindir" != x ;
84586747b715Smrg	      then
84596747b715Smrg		func_relative_path "$install_libdir" "$bindir"
84606747b715Smrg		tdlname=$func_relative_path_result$dlname
84616747b715Smrg	      else
84626747b715Smrg		# Otherwise fall back on heuristic.
84636747b715Smrg		tdlname=../bin/$dlname
84646747b715Smrg	      fi
84656747b715Smrg	      ;;
84664642e01fSmrg	  esac
84674642e01fSmrg	  $ECHO > $output "\
84684642e01fSmrg# $outputname - a libtool library file
84694642e01fSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
84704642e01fSmrg#
84714642e01fSmrg# Please DO NOT delete this file!
84724642e01fSmrg# It is necessary for linking the library.
847305b261ecSmrg
84744642e01fSmrg# The name that we can dlopen(3).
84754642e01fSmrgdlname='$tdlname'
847605b261ecSmrg
84774642e01fSmrg# Names of this library.
84784642e01fSmrglibrary_names='$library_names'
847905b261ecSmrg
84804642e01fSmrg# The name of the static archive.
84814642e01fSmrgold_library='$old_library'
848205b261ecSmrg
84834642e01fSmrg# Linker flags that can not go in dependency_libs.
84844642e01fSmrginherited_linker_flags='$new_inherited_linker_flags'
848505b261ecSmrg
84864642e01fSmrg# Libraries that this one depends upon.
84874642e01fSmrgdependency_libs='$dependency_libs'
848805b261ecSmrg
84894642e01fSmrg# Names of additional weak libraries provided by this library
84904642e01fSmrgweak_library_names='$weak_libs'
849105b261ecSmrg
84924642e01fSmrg# Version information for $libname.
84934642e01fSmrgcurrent=$current
84944642e01fSmrgage=$age
84954642e01fSmrgrevision=$revision
849605b261ecSmrg
84974642e01fSmrg# Is this an already installed library?
84984642e01fSmrginstalled=$installed
849905b261ecSmrg
85004642e01fSmrg# Should we warn about portability when linking against -modules?
85014642e01fSmrgshouldnotlink=$module
850205b261ecSmrg
85034642e01fSmrg# Files to dlopen/dlpreopen
85044642e01fSmrgdlopen='$dlfiles'
85054642e01fSmrgdlpreopen='$dlprefiles'
850605b261ecSmrg
85074642e01fSmrg# Directory that this library needs to be installed in:
85084642e01fSmrglibdir='$install_libdir'"
85094642e01fSmrg	  if test "$installed" = no && test "$need_relink" = yes; then
85104642e01fSmrg	    $ECHO >> $output "\
85114642e01fSmrgrelink_command=\"$relink_command\""
85124642e01fSmrg	  fi
85134642e01fSmrg	done
85144642e01fSmrg      }
851505b261ecSmrg
85164642e01fSmrg      # Do a symbolic link so that the libtool archive can be found in
85174642e01fSmrg      # LD_LIBRARY_PATH before the program is installed.
85184642e01fSmrg      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
85194642e01fSmrg      ;;
85204642e01fSmrg    esac
85214642e01fSmrg    exit $EXIT_SUCCESS
85224642e01fSmrg}
852305b261ecSmrg
8524475c125cSmrg{ test "$mode" = link || test "$mode" = relink; } &&
85254642e01fSmrg    func_mode_link ${1+"$@"}
852605b261ecSmrg
852705b261ecSmrg
85284642e01fSmrg# func_mode_uninstall arg...
85294642e01fSmrgfunc_mode_uninstall ()
85304642e01fSmrg{
85314642e01fSmrg    $opt_debug
85324642e01fSmrg    RM="$nonopt"
853305b261ecSmrg    files=
853405b261ecSmrg    rmforce=
853505b261ecSmrg    exit_status=0
853605b261ecSmrg
853705b261ecSmrg    # This variable tells wrapper scripts just to set variables rather
853805b261ecSmrg    # than running their programs.
853905b261ecSmrg    libtool_install_magic="$magic"
854005b261ecSmrg
854105b261ecSmrg    for arg
854205b261ecSmrg    do
854305b261ecSmrg      case $arg in
8544475c125cSmrg      -f) RM="$RM $arg"; rmforce=yes ;;
8545475c125cSmrg      -*) RM="$RM $arg" ;;
8546475c125cSmrg      *) files="$files $arg" ;;
854705b261ecSmrg      esac
854805b261ecSmrg    done
854905b261ecSmrg
85504642e01fSmrg    test -z "$RM" && \
85514642e01fSmrg      func_fatal_help "you must specify an RM program"
855205b261ecSmrg
855305b261ecSmrg    rmdirs=
855405b261ecSmrg
8555475c125cSmrg    origobjdir="$objdir"
855605b261ecSmrg    for file in $files; do
85574642e01fSmrg      func_dirname "$file" "" "."
85584642e01fSmrg      dir="$func_dirname_result"
85594642e01fSmrg      if test "X$dir" = X.; then
8560475c125cSmrg	objdir="$origobjdir"
856105b261ecSmrg      else
8562475c125cSmrg	objdir="$dir/$origobjdir"
856305b261ecSmrg      fi
85644642e01fSmrg      func_basename "$file"
85654642e01fSmrg      name="$func_basename_result"
8566475c125cSmrg      test "$mode" = uninstall && objdir="$dir"
856705b261ecSmrg
8568475c125cSmrg      # Remember objdir for removal later, being careful to avoid duplicates
8569475c125cSmrg      if test "$mode" = clean; then
857005b261ecSmrg	case " $rmdirs " in
8571475c125cSmrg	  *" $objdir "*) ;;
8572475c125cSmrg	  *) rmdirs="$rmdirs $objdir" ;;
857305b261ecSmrg	esac
857405b261ecSmrg      fi
857505b261ecSmrg
857605b261ecSmrg      # Don't error if the file doesn't exist and rm -f was used.
85774642e01fSmrg      if { test -L "$file"; } >/dev/null 2>&1 ||
85784642e01fSmrg	 { test -h "$file"; } >/dev/null 2>&1 ||
85794642e01fSmrg	 test -f "$file"; then
858005b261ecSmrg	:
858105b261ecSmrg      elif test -d "$file"; then
858205b261ecSmrg	exit_status=1
858305b261ecSmrg	continue
858405b261ecSmrg      elif test "$rmforce" = yes; then
858505b261ecSmrg	continue
858605b261ecSmrg      fi
858705b261ecSmrg
858805b261ecSmrg      rmfiles="$file"
858905b261ecSmrg
859005b261ecSmrg      case $name in
859105b261ecSmrg      *.la)
859205b261ecSmrg	# Possibly a libtool archive, so verify it.
85934642e01fSmrg	if func_lalib_p "$file"; then
85944642e01fSmrg	  func_source $dir/$name
859505b261ecSmrg
859605b261ecSmrg	  # Delete the libtool libraries and symlinks.
859705b261ecSmrg	  for n in $library_names; do
8598475c125cSmrg	    rmfiles="$rmfiles $objdir/$n"
859905b261ecSmrg	  done
8600475c125cSmrg	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
860105b261ecSmrg
8602475c125cSmrg	  case "$mode" in
860305b261ecSmrg	  clean)
8604475c125cSmrg	    case "  $library_names " in
8605475c125cSmrg	    # "  " in the beginning catches empty $dlname
860605b261ecSmrg	    *" $dlname "*) ;;
8607475c125cSmrg	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
860805b261ecSmrg	    esac
8609475c125cSmrg	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
861005b261ecSmrg	    ;;
861105b261ecSmrg	  uninstall)
861205b261ecSmrg	    if test -n "$library_names"; then
861305b261ecSmrg	      # Do each command in the postuninstall commands.
86144642e01fSmrg	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
861505b261ecSmrg	    fi
861605b261ecSmrg
861705b261ecSmrg	    if test -n "$old_library"; then
861805b261ecSmrg	      # Do each command in the old_postuninstall commands.
86194642e01fSmrg	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
862005b261ecSmrg	    fi
862105b261ecSmrg	    # FIXME: should reinstall the best remaining shared library.
862205b261ecSmrg	    ;;
862305b261ecSmrg	  esac
862405b261ecSmrg	fi
862505b261ecSmrg	;;
862605b261ecSmrg
862705b261ecSmrg      *.lo)
862805b261ecSmrg	# Possibly a libtool object, so verify it.
86294642e01fSmrg	if func_lalib_p "$file"; then
863005b261ecSmrg
863105b261ecSmrg	  # Read the .lo file
86324642e01fSmrg	  func_source $dir/$name
863305b261ecSmrg
863405b261ecSmrg	  # Add PIC object to the list of files to remove.
86354642e01fSmrg	  if test -n "$pic_object" &&
86364642e01fSmrg	     test "$pic_object" != none; then
8637475c125cSmrg	    rmfiles="$rmfiles $dir/$pic_object"
863805b261ecSmrg	  fi
863905b261ecSmrg
864005b261ecSmrg	  # Add non-PIC object to the list of files to remove.
86414642e01fSmrg	  if test -n "$non_pic_object" &&
86424642e01fSmrg	     test "$non_pic_object" != none; then
8643475c125cSmrg	    rmfiles="$rmfiles $dir/$non_pic_object"
864405b261ecSmrg	  fi
864505b261ecSmrg	fi
864605b261ecSmrg	;;
864705b261ecSmrg
864805b261ecSmrg      *)
8649475c125cSmrg	if test "$mode" = clean ; then
865005b261ecSmrg	  noexename=$name
865105b261ecSmrg	  case $file in
865205b261ecSmrg	  *.exe)
86534642e01fSmrg	    func_stripname '' '.exe' "$file"
86544642e01fSmrg	    file=$func_stripname_result
86554642e01fSmrg	    func_stripname '' '.exe' "$name"
86564642e01fSmrg	    noexename=$func_stripname_result
865705b261ecSmrg	    # $file with .exe has already been added to rmfiles,
865805b261ecSmrg	    # add $file without .exe
8659475c125cSmrg	    rmfiles="$rmfiles $file"
866005b261ecSmrg	    ;;
866105b261ecSmrg	  esac
866205b261ecSmrg	  # Do a test to see if this is a libtool program.
86634642e01fSmrg	  if func_ltwrapper_p "$file"; then
86644642e01fSmrg	    if func_ltwrapper_executable_p "$file"; then
86654642e01fSmrg	      func_ltwrapper_scriptname "$file"
86664642e01fSmrg	      relink_command=
86674642e01fSmrg	      func_source $func_ltwrapper_scriptname_result
8668475c125cSmrg	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
86694642e01fSmrg	    else
86704642e01fSmrg	      relink_command=
86714642e01fSmrg	      func_source $dir/$noexename
86724642e01fSmrg	    fi
867305b261ecSmrg
867405b261ecSmrg	    # note $name still contains .exe if it was in $file originally
867505b261ecSmrg	    # as does the version of $file that was added into $rmfiles
8676475c125cSmrg	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
867705b261ecSmrg	    if test "$fast_install" = yes && test -n "$relink_command"; then
8678475c125cSmrg	      rmfiles="$rmfiles $objdir/lt-$name"
867905b261ecSmrg	    fi
868005b261ecSmrg	    if test "X$noexename" != "X$name" ; then
8681475c125cSmrg	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
868205b261ecSmrg	    fi
868305b261ecSmrg	  fi
868405b261ecSmrg	fi
868505b261ecSmrg	;;
868605b261ecSmrg      esac
86874642e01fSmrg      func_show_eval "$RM $rmfiles" 'exit_status=1'
868805b261ecSmrg    done
8689475c125cSmrg    objdir="$origobjdir"
869005b261ecSmrg
869105b261ecSmrg    # Try to remove the ${objdir}s in the directories where we deleted files
869205b261ecSmrg    for dir in $rmdirs; do
869305b261ecSmrg      if test -d "$dir"; then
86944642e01fSmrg	func_show_eval "rmdir $dir >/dev/null 2>&1"
869505b261ecSmrg      fi
869605b261ecSmrg    done
869705b261ecSmrg
869805b261ecSmrg    exit $exit_status
86994642e01fSmrg}
870005b261ecSmrg
8701475c125cSmrg{ test "$mode" = uninstall || test "$mode" = clean; } &&
87024642e01fSmrg    func_mode_uninstall ${1+"$@"}
870305b261ecSmrg
8704475c125cSmrgtest -z "$mode" && {
87054642e01fSmrg  help="$generic_help"
87064642e01fSmrg  func_fatal_help "you must specify a MODE"
87074642e01fSmrg}
87084642e01fSmrg
87094642e01fSmrgtest -z "$exec_cmd" && \
8710475c125cSmrg  func_fatal_help "invalid operation mode \`$mode'"
871105b261ecSmrg
871205b261ecSmrgif test -n "$exec_cmd"; then
87134642e01fSmrg  eval exec "$exec_cmd"
871405b261ecSmrg  exit $EXIT_FAILURE
871505b261ecSmrgfi
871605b261ecSmrg
87174642e01fSmrgexit $exit_status
871805b261ecSmrg
871905b261ecSmrg
872005b261ecSmrg# The TAGs below are defined such that we never get into a situation
872105b261ecSmrg# in which we disable both kinds of libraries.  Given conflicting
872205b261ecSmrg# choices, we go for a static library, that is the most portable,
872305b261ecSmrg# since we can't tell whether shared libraries were disabled because
872405b261ecSmrg# the user asked for that or because the platform doesn't support
872505b261ecSmrg# them.  This is particularly important on AIX, because we don't
872605b261ecSmrg# support having both static and shared libraries enabled at the same
872705b261ecSmrg# time on that platform, so we default to a shared-only configuration.
872805b261ecSmrg# If a disable-shared tag is given, we'll fallback to a static-only
872905b261ecSmrg# configuration.  But we'll never go from static-only to shared-only.
873005b261ecSmrg
873105b261ecSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
87324642e01fSmrgbuild_libtool_libs=no
87334642e01fSmrgbuild_old_libs=yes
873405b261ecSmrg# ### END LIBTOOL TAG CONFIG: disable-shared
873505b261ecSmrg
873605b261ecSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static
87374642e01fSmrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
873805b261ecSmrg# ### END LIBTOOL TAG CONFIG: disable-static
873905b261ecSmrg
874005b261ecSmrg# Local Variables:
874105b261ecSmrg# mode:shell-script
874205b261ecSmrg# sh-indentation:2
874305b261ecSmrg# End:
87444642e01fSmrg# vi:sw=2
87454642e01fSmrg
8746