ltmain.sh revision 6747b715
14642e01fSmrg
26747b715Smrg# libtool (GNU libtool) 2.4
34642e01fSmrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
44642e01fSmrg
56747b715Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
66747b715Smrg# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
74642e01fSmrg# This is free software; see the source for copying conditions.  There is NO
84642e01fSmrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
94642e01fSmrg
104642e01fSmrg# GNU Libtool is free software; you can redistribute it and/or modify
1105b261ecSmrg# it under the terms of the GNU General Public License as published by
1205b261ecSmrg# the Free Software Foundation; either version 2 of the License, or
1305b261ecSmrg# (at your option) any later version.
1405b261ecSmrg#
154642e01fSmrg# As a special exception to the GNU General Public License,
164642e01fSmrg# if you distribute this file as part of a program or library that
174642e01fSmrg# is built using GNU Libtool, you may include this file under the
184642e01fSmrg# same distribution terms that you use for the rest of that program.
194642e01fSmrg#
204642e01fSmrg# GNU Libtool is distributed in the hope that it will be useful, but
2105b261ecSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of
2205b261ecSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
2305b261ecSmrg# General Public License for more details.
2405b261ecSmrg#
2505b261ecSmrg# You should have received a copy of the GNU General Public License
264642e01fSmrg# along with GNU Libtool; see the file COPYING.  If not, a copy
274642e01fSmrg# can be downloaded from http://www.gnu.org/licenses/gpl.html,
284642e01fSmrg# or obtained by writing to the Free Software Foundation, Inc.,
294642e01fSmrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
3005b261ecSmrg
314642e01fSmrg# Usage: $progname [OPTION]... [MODE-ARG]...
324642e01fSmrg#
334642e01fSmrg# Provide generalized library-building support services.
344642e01fSmrg#
356747b715Smrg#       --config             show all configuration variables
366747b715Smrg#       --debug              enable verbose shell tracing
376747b715Smrg#   -n, --dry-run            display commands without modifying any files
386747b715Smrg#       --features           display basic configuration information and exit
396747b715Smrg#       --mode=MODE          use operation mode MODE
406747b715Smrg#       --preserve-dup-deps  don't remove duplicate dependency libraries
416747b715Smrg#       --quiet, --silent    don't print informational messages
426747b715Smrg#       --no-quiet, --no-silent
436747b715Smrg#                            print informational messages (default)
446747b715Smrg#       --tag=TAG            use configuration variables from tag TAG
456747b715Smrg#   -v, --verbose            print more informational messages than default
466747b715Smrg#       --no-verbose         don't print the extra informational messages
476747b715Smrg#       --version            print version information
486747b715Smrg#   -h, --help, --help-all   print short, long, or detailed help message
494642e01fSmrg#
504642e01fSmrg# MODE must be one of the following:
514642e01fSmrg#
526747b715Smrg#         clean              remove files from the build directory
536747b715Smrg#         compile            compile a source file into a libtool object
546747b715Smrg#         execute            automatically set library path, then run a program
556747b715Smrg#         finish             complete the installation of libtool libraries
566747b715Smrg#         install            install libraries or executables
576747b715Smrg#         link               create a library or an executable
586747b715Smrg#         uninstall          remove libraries from an installed directory
594642e01fSmrg#
606747b715Smrg# MODE-ARGS vary depending on the MODE.  When passed as first option,
616747b715Smrg# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
624642e01fSmrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
634642e01fSmrg#
644642e01fSmrg# When reporting a bug, please describe a test case to reproduce it and
654642e01fSmrg# include the following information:
664642e01fSmrg#
676747b715Smrg#         host-triplet:	$host
686747b715Smrg#         shell:		$SHELL
696747b715Smrg#         compiler:		$LTCC
706747b715Smrg#         compiler flags:		$LTCFLAGS
716747b715Smrg#         linker:		$LD (gnu? $with_gnu_ld)
726747b715Smrg#         $progname:	(GNU libtool) 2.4
736747b715Smrg#         automake:	$automake_version
746747b715Smrg#         autoconf:	$autoconf_version
754642e01fSmrg#
764642e01fSmrg# Report bugs to <bug-libtool@gnu.org>.
776747b715Smrg# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
786747b715Smrg# General help using GNU software: <http://www.gnu.org/gethelp/>.
7905b261ecSmrg
806747b715SmrgPROGRAM=libtool
8105b261ecSmrgPACKAGE=libtool
826747b715SmrgVERSION=2.4
834642e01fSmrgTIMESTAMP=""
846747b715Smrgpackage_revision=1.3293
8505b261ecSmrg
864642e01fSmrg# Be Bourne compatible
8705b261ecSmrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
8805b261ecSmrg  emulate sh
8905b261ecSmrg  NULLCMD=:
9005b261ecSmrg  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
9105b261ecSmrg  # is contrary to our usage.  Disable this feature.
9205b261ecSmrg  alias -g '${1+"$@"}'='"$@"'
9305b261ecSmrg  setopt NO_GLOB_SUBST
9405b261ecSmrgelse
9505b261ecSmrg  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
9605b261ecSmrgfi
9705b261ecSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
9805b261ecSmrgDUALCASE=1; export DUALCASE # for MKS sh
9905b261ecSmrg
1006747b715Smrg# A function that is used when there is no print builtin or printf.
1016747b715Smrgfunc_fallback_echo ()
1026747b715Smrg{
1036747b715Smrg  eval 'cat <<_LTECHO_EOF
1046747b715Smrg$1
1056747b715Smrg_LTECHO_EOF'
1066747b715Smrg}
1076747b715Smrg
1084642e01fSmrg# NLS nuisances: We save the old values to restore during execute mode.
1094642e01fSmrglt_user_locale=
1104642e01fSmrglt_safe_locale=
11105b261ecSmrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
11205b261ecSmrgdo
11305b261ecSmrg  eval "if test \"\${$lt_var+set}\" = set; then
1144642e01fSmrg          save_$lt_var=\$$lt_var
1154642e01fSmrg          $lt_var=C
11605b261ecSmrg	  export $lt_var
1174642e01fSmrg	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
1184642e01fSmrg	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
11905b261ecSmrg	fi"
12005b261ecSmrgdone
1216747b715SmrgLC_ALL=C
1226747b715SmrgLANGUAGE=C
1236747b715Smrgexport LANGUAGE LC_ALL
12405b261ecSmrg
1254642e01fSmrg$lt_unset CDPATH
1264642e01fSmrg
1274642e01fSmrg
1286747b715Smrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
1296747b715Smrg# is ksh but when the shell is invoked as "sh" and the current value of
1306747b715Smrg# the _XPG environment variable is not equal to 1 (one), the special
1316747b715Smrg# positional parameter $0, within a function call, is the name of the
1326747b715Smrg# function.
1336747b715Smrgprogpath="$0"
1344642e01fSmrg
1354642e01fSmrg
1364642e01fSmrg
1374642e01fSmrg: ${CP="cp -f"}
1386747b715Smrgtest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
1396747b715Smrg: ${EGREP="grep -E"}
1406747b715Smrg: ${FGREP="grep -F"}
1416747b715Smrg: ${GREP="grep"}
1424642e01fSmrg: ${LN_S="ln -s"}
1434642e01fSmrg: ${MAKE="make"}
1444642e01fSmrg: ${MKDIR="mkdir"}
1454642e01fSmrg: ${MV="mv -f"}
1464642e01fSmrg: ${RM="rm -f"}
1476747b715Smrg: ${SED="sed"}
1484642e01fSmrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
1494642e01fSmrg: ${Xsed="$SED -e 1s/^X//"}
1504642e01fSmrg
1514642e01fSmrg# Global variables:
1524642e01fSmrgEXIT_SUCCESS=0
1534642e01fSmrgEXIT_FAILURE=1
1544642e01fSmrgEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
1554642e01fSmrgEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
1564642e01fSmrg
1574642e01fSmrgexit_status=$EXIT_SUCCESS
15805b261ecSmrg
15905b261ecSmrg# Make sure IFS has a sensible default
16005b261ecSmrglt_nl='
16105b261ecSmrg'
16205b261ecSmrgIFS=" 	$lt_nl"
16305b261ecSmrg
1644642e01fSmrgdirname="s,/[^/]*$,,"
1654642e01fSmrgbasename="s,^.*/,,"
1664642e01fSmrg
1676747b715Smrg# func_dirname file append nondir_replacement
1686747b715Smrg# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
1696747b715Smrg# otherwise set result to NONDIR_REPLACEMENT.
1706747b715Smrgfunc_dirname ()
1716747b715Smrg{
1726747b715Smrg    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
1736747b715Smrg    if test "X$func_dirname_result" = "X${1}"; then
1746747b715Smrg      func_dirname_result="${3}"
1756747b715Smrg    else
1766747b715Smrg      func_dirname_result="$func_dirname_result${2}"
1776747b715Smrg    fi
1786747b715Smrg} # func_dirname may be replaced by extended shell implementation
1796747b715Smrg
1806747b715Smrg
1816747b715Smrg# func_basename file
1826747b715Smrgfunc_basename ()
1836747b715Smrg{
1846747b715Smrg    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
1856747b715Smrg} # func_basename may be replaced by extended shell implementation
1866747b715Smrg
1876747b715Smrg
1884642e01fSmrg# func_dirname_and_basename file append nondir_replacement
1894642e01fSmrg# perform func_basename and func_dirname in a single function
1904642e01fSmrg# call:
1914642e01fSmrg#   dirname:  Compute the dirname of FILE.  If nonempty,
1924642e01fSmrg#             add APPEND to the result, otherwise set result
1934642e01fSmrg#             to NONDIR_REPLACEMENT.
1944642e01fSmrg#             value returned in "$func_dirname_result"
1954642e01fSmrg#   basename: Compute filename of FILE.
1964642e01fSmrg#             value retuned in "$func_basename_result"
1974642e01fSmrg# Implementation must be kept synchronized with func_dirname
1984642e01fSmrg# and func_basename. For efficiency, we do not delegate to
1994642e01fSmrg# those functions but instead duplicate the functionality here.
2004642e01fSmrgfunc_dirname_and_basename ()
2014642e01fSmrg{
2026747b715Smrg    # Extract subdirectory from the argument.
2036747b715Smrg    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
2046747b715Smrg    if test "X$func_dirname_result" = "X${1}"; then
2056747b715Smrg      func_dirname_result="${3}"
2066747b715Smrg    else
2076747b715Smrg      func_dirname_result="$func_dirname_result${2}"
2086747b715Smrg    fi
2096747b715Smrg    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
2106747b715Smrg} # func_dirname_and_basename may be replaced by extended shell implementation
2116747b715Smrg
2126747b715Smrg
2136747b715Smrg# func_stripname prefix suffix name
2146747b715Smrg# strip PREFIX and SUFFIX off of NAME.
2156747b715Smrg# PREFIX and SUFFIX must not contain globbing or regex special
2166747b715Smrg# characters, hashes, percent signs, but SUFFIX may contain a leading
2176747b715Smrg# dot (in which case that matches only a dot).
2186747b715Smrg# func_strip_suffix prefix name
2196747b715Smrgfunc_stripname ()
2206747b715Smrg{
2216747b715Smrg    case ${2} in
2226747b715Smrg      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
2236747b715Smrg      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
2246747b715Smrg    esac
2256747b715Smrg} # func_stripname may be replaced by extended shell implementation
2266747b715Smrg
2276747b715Smrg
2286747b715Smrg# These SED scripts presuppose an absolute path with a trailing slash.
2296747b715Smrgpathcar='s,^/\([^/]*\).*$,\1,'
2306747b715Smrgpathcdr='s,^/[^/]*,,'
2316747b715Smrgremovedotparts=':dotsl
2326747b715Smrg		s@/\./@/@g
2336747b715Smrg		t dotsl
2346747b715Smrg		s,/\.$,/,'
2356747b715Smrgcollapseslashes='s@/\{1,\}@/@g'
2366747b715Smrgfinalslash='s,/*$,/,'
2376747b715Smrg
2386747b715Smrg# func_normal_abspath PATH
2396747b715Smrg# Remove doubled-up and trailing slashes, "." path components,
2406747b715Smrg# and cancel out any ".." path components in PATH after making
2416747b715Smrg# it an absolute path.
2426747b715Smrg#             value returned in "$func_normal_abspath_result"
2436747b715Smrgfunc_normal_abspath ()
2446747b715Smrg{
2456747b715Smrg  # Start from root dir and reassemble the path.
2466747b715Smrg  func_normal_abspath_result=
2476747b715Smrg  func_normal_abspath_tpath=$1
2486747b715Smrg  func_normal_abspath_altnamespace=
2496747b715Smrg  case $func_normal_abspath_tpath in
2506747b715Smrg    "")
2516747b715Smrg      # Empty path, that just means $cwd.
2526747b715Smrg      func_stripname '' '/' "`pwd`"
2536747b715Smrg      func_normal_abspath_result=$func_stripname_result
2546747b715Smrg      return
2556747b715Smrg    ;;
2566747b715Smrg    # The next three entries are used to spot a run of precisely
2576747b715Smrg    # two leading slashes without using negated character classes;
2586747b715Smrg    # we take advantage of case's first-match behaviour.
2596747b715Smrg    ///*)
2606747b715Smrg      # Unusual form of absolute path, do nothing.
2616747b715Smrg    ;;
2626747b715Smrg    //*)
2636747b715Smrg      # Not necessarily an ordinary path; POSIX reserves leading '//'
2646747b715Smrg      # and for example Cygwin uses it to access remote file shares
2656747b715Smrg      # over CIFS/SMB, so we conserve a leading double slash if found.
2666747b715Smrg      func_normal_abspath_altnamespace=/
2676747b715Smrg    ;;
2686747b715Smrg    /*)
2696747b715Smrg      # Absolute path, do nothing.
2706747b715Smrg    ;;
2716747b715Smrg    *)
2726747b715Smrg      # Relative path, prepend $cwd.
2736747b715Smrg      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
2746747b715Smrg    ;;
2756747b715Smrg  esac
2766747b715Smrg  # Cancel out all the simple stuff to save iterations.  We also want
2776747b715Smrg  # the path to end with a slash for ease of parsing, so make sure
2786747b715Smrg  # there is one (and only one) here.
2796747b715Smrg  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
2806747b715Smrg        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
2816747b715Smrg  while :; do
2826747b715Smrg    # Processed it all yet?
2836747b715Smrg    if test "$func_normal_abspath_tpath" = / ; then
2846747b715Smrg      # If we ascended to the root using ".." the result may be empty now.
2856747b715Smrg      if test -z "$func_normal_abspath_result" ; then
2866747b715Smrg        func_normal_abspath_result=/
2876747b715Smrg      fi
2886747b715Smrg      break
2896747b715Smrg    fi
2906747b715Smrg    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
2916747b715Smrg        -e "$pathcar"`
2926747b715Smrg    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
2936747b715Smrg        -e "$pathcdr"`
2946747b715Smrg    # Figure out what to do with it
2956747b715Smrg    case $func_normal_abspath_tcomponent in
2966747b715Smrg      "")
2976747b715Smrg        # Trailing empty path component, ignore it.
2986747b715Smrg      ;;
2996747b715Smrg      ..)
3006747b715Smrg        # Parent dir; strip last assembled component from result.
3016747b715Smrg        func_dirname "$func_normal_abspath_result"
3026747b715Smrg        func_normal_abspath_result=$func_dirname_result
3036747b715Smrg      ;;
3046747b715Smrg      *)
3056747b715Smrg        # Actual path component, append it.
3066747b715Smrg        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
3076747b715Smrg      ;;
3086747b715Smrg    esac
3096747b715Smrg  done
3106747b715Smrg  # Restore leading double-slash if one was found on entry.
3116747b715Smrg  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
3124642e01fSmrg}
31305b261ecSmrg
3146747b715Smrg# func_relative_path SRCDIR DSTDIR
3156747b715Smrg# generates a relative path from SRCDIR to DSTDIR, with a trailing
3166747b715Smrg# slash if non-empty, suitable for immediately appending a filename
3176747b715Smrg# without needing to append a separator.
3186747b715Smrg#             value returned in "$func_relative_path_result"
3196747b715Smrgfunc_relative_path ()
3206747b715Smrg{
3216747b715Smrg  func_relative_path_result=
3226747b715Smrg  func_normal_abspath "$1"
3236747b715Smrg  func_relative_path_tlibdir=$func_normal_abspath_result
3246747b715Smrg  func_normal_abspath "$2"
3256747b715Smrg  func_relative_path_tbindir=$func_normal_abspath_result
3266747b715Smrg
3276747b715Smrg  # Ascend the tree starting from libdir
3286747b715Smrg  while :; do
3296747b715Smrg    # check if we have found a prefix of bindir
3306747b715Smrg    case $func_relative_path_tbindir in
3316747b715Smrg      $func_relative_path_tlibdir)
3326747b715Smrg        # found an exact match
3336747b715Smrg        func_relative_path_tcancelled=
3346747b715Smrg        break
3356747b715Smrg        ;;
3366747b715Smrg      $func_relative_path_tlibdir*)
3376747b715Smrg        # found a matching prefix
3386747b715Smrg        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
3396747b715Smrg        func_relative_path_tcancelled=$func_stripname_result
3406747b715Smrg        if test -z "$func_relative_path_result"; then
3416747b715Smrg          func_relative_path_result=.
3426747b715Smrg        fi
3436747b715Smrg        break
3446747b715Smrg        ;;
3456747b715Smrg      *)
3466747b715Smrg        func_dirname $func_relative_path_tlibdir
3476747b715Smrg        func_relative_path_tlibdir=${func_dirname_result}
3486747b715Smrg        if test "x$func_relative_path_tlibdir" = x ; then
3496747b715Smrg          # Have to descend all the way to the root!
3506747b715Smrg          func_relative_path_result=../$func_relative_path_result
3516747b715Smrg          func_relative_path_tcancelled=$func_relative_path_tbindir
3526747b715Smrg          break
3536747b715Smrg        fi
3546747b715Smrg        func_relative_path_result=../$func_relative_path_result
3556747b715Smrg        ;;
3566747b715Smrg    esac
3576747b715Smrg  done
3584642e01fSmrg
3596747b715Smrg  # Now calculate path; take care to avoid doubling-up slashes.
3606747b715Smrg  func_stripname '' '/' "$func_relative_path_result"
3616747b715Smrg  func_relative_path_result=$func_stripname_result
3626747b715Smrg  func_stripname '/' '/' "$func_relative_path_tcancelled"
3636747b715Smrg  if test "x$func_stripname_result" != x ; then
3646747b715Smrg    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
3656747b715Smrg  fi
3666747b715Smrg
3676747b715Smrg  # Normalisation. If bindir is libdir, return empty string,
3686747b715Smrg  # else relative path ending with a slash; either way, target
3696747b715Smrg  # file name can be directly appended.
3706747b715Smrg  if test ! -z "$func_relative_path_result"; then
3716747b715Smrg    func_stripname './' '' "$func_relative_path_result/"
3726747b715Smrg    func_relative_path_result=$func_stripname_result
3736747b715Smrg  fi
3746747b715Smrg}
3754642e01fSmrg
3764642e01fSmrg# The name of this program:
3774642e01fSmrgfunc_dirname_and_basename "$progpath"
3784642e01fSmrgprogname=$func_basename_result
3794642e01fSmrg
3804642e01fSmrg# Make sure we have an absolute path for reexecution:
3814642e01fSmrgcase $progpath in
3824642e01fSmrg  [\\/]*|[A-Za-z]:\\*) ;;
3834642e01fSmrg  *[\\/]*)
3844642e01fSmrg     progdir=$func_dirname_result
3854642e01fSmrg     progdir=`cd "$progdir" && pwd`
3864642e01fSmrg     progpath="$progdir/$progname"
3874642e01fSmrg     ;;
3884642e01fSmrg  *)
3894642e01fSmrg     save_IFS="$IFS"
3904642e01fSmrg     IFS=:
3914642e01fSmrg     for progdir in $PATH; do
3924642e01fSmrg       IFS="$save_IFS"
3934642e01fSmrg       test -x "$progdir/$progname" && break
3944642e01fSmrg     done
3954642e01fSmrg     IFS="$save_IFS"
3964642e01fSmrg     test -n "$progdir" || progdir=`pwd`
3974642e01fSmrg     progpath="$progdir/$progname"
3984642e01fSmrg     ;;
3994642e01fSmrgesac
4004642e01fSmrg
4014642e01fSmrg# Sed substitution that helps us do robust quoting.  It backslashifies
4024642e01fSmrg# metacharacters that are still active within double-quoted strings.
4034642e01fSmrgXsed="${SED}"' -e 1s/^X//'
4044642e01fSmrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g'
4054642e01fSmrg
4064642e01fSmrg# Same as above, but do not quote variable references.
4074642e01fSmrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
4084642e01fSmrg
4096747b715Smrg# Sed substitution that turns a string into a regex matching for the
4106747b715Smrg# string literally.
4116747b715Smrgsed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
4126747b715Smrg
4136747b715Smrg# Sed substitution that converts a w32 file name or path
4146747b715Smrg# which contains forward slashes, into one that contains
4156747b715Smrg# (escaped) backslashes.  A very naive implementation.
4166747b715Smrglt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
4176747b715Smrg
4184642e01fSmrg# Re-`\' parameter expansions in output of double_quote_subst that were
4194642e01fSmrg# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
4204642e01fSmrg# in input to double_quote_subst, that '$' was protected from expansion.
4214642e01fSmrg# Since each input `\' is now two `\'s, look for any number of runs of
4224642e01fSmrg# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
4234642e01fSmrgbs='\\'
4244642e01fSmrgbs2='\\\\'
4254642e01fSmrgbs4='\\\\\\\\'
4264642e01fSmrgdollar='\$'
4274642e01fSmrgsed_double_backslash="\
4284642e01fSmrg  s/$bs4/&\\
4294642e01fSmrg/g
4304642e01fSmrg  s/^$bs2$dollar/$bs&/
4314642e01fSmrg  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
4324642e01fSmrg  s/\n//g"
4334642e01fSmrg
4344642e01fSmrg# Standard options:
4354642e01fSmrgopt_dry_run=false
4364642e01fSmrgopt_help=false
4374642e01fSmrgopt_quiet=false
4384642e01fSmrgopt_verbose=false
4394642e01fSmrgopt_warning=:
4404642e01fSmrg
4414642e01fSmrg# func_echo arg...
4424642e01fSmrg# Echo program name prefixed message, along with the current mode
4434642e01fSmrg# name if it has been set yet.
4444642e01fSmrgfunc_echo ()
4454642e01fSmrg{
4466747b715Smrg    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
4474642e01fSmrg}
4484642e01fSmrg
4494642e01fSmrg# func_verbose arg...
4504642e01fSmrg# Echo program name prefixed message in verbose mode only.
4514642e01fSmrgfunc_verbose ()
4524642e01fSmrg{
4534642e01fSmrg    $opt_verbose && func_echo ${1+"$@"}
4544642e01fSmrg
4554642e01fSmrg    # A bug in bash halts the script if the last line of a function
4564642e01fSmrg    # fails when set -e is in force, so we need another command to
4574642e01fSmrg    # work around that:
4584642e01fSmrg    :
4594642e01fSmrg}
4604642e01fSmrg
4616747b715Smrg# func_echo_all arg...
4626747b715Smrg# Invoke $ECHO with all args, space-separated.
4636747b715Smrgfunc_echo_all ()
4646747b715Smrg{
4656747b715Smrg    $ECHO "$*"
4666747b715Smrg}
4676747b715Smrg
4684642e01fSmrg# func_error arg...
4694642e01fSmrg# Echo program name prefixed message to standard error.
4704642e01fSmrgfunc_error ()
4714642e01fSmrg{
4726747b715Smrg    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
4734642e01fSmrg}
4744642e01fSmrg
4754642e01fSmrg# func_warning arg...
4764642e01fSmrg# Echo program name prefixed warning message to standard error.
4774642e01fSmrgfunc_warning ()
4784642e01fSmrg{
4796747b715Smrg    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
4804642e01fSmrg
4814642e01fSmrg    # bash bug again:
4824642e01fSmrg    :
4834642e01fSmrg}
4844642e01fSmrg
4854642e01fSmrg# func_fatal_error arg...
4864642e01fSmrg# Echo program name prefixed message to standard error, and exit.
4874642e01fSmrgfunc_fatal_error ()
4884642e01fSmrg{
4894642e01fSmrg    func_error ${1+"$@"}
4904642e01fSmrg    exit $EXIT_FAILURE
4914642e01fSmrg}
4924642e01fSmrg
4934642e01fSmrg# func_fatal_help arg...
4944642e01fSmrg# Echo program name prefixed message to standard error, followed by
4954642e01fSmrg# a help hint, and exit.
4964642e01fSmrgfunc_fatal_help ()
4974642e01fSmrg{
4984642e01fSmrg    func_error ${1+"$@"}
4994642e01fSmrg    func_fatal_error "$help"
5004642e01fSmrg}
5014642e01fSmrghelp="Try \`$progname --help' for more information."  ## default
5024642e01fSmrg
5034642e01fSmrg
5044642e01fSmrg# func_grep expression filename
5054642e01fSmrg# Check whether EXPRESSION matches any line of FILENAME, without output.
5064642e01fSmrgfunc_grep ()
5074642e01fSmrg{
5084642e01fSmrg    $GREP "$1" "$2" >/dev/null 2>&1
5094642e01fSmrg}
5104642e01fSmrg
5114642e01fSmrg
5124642e01fSmrg# func_mkdir_p directory-path
5134642e01fSmrg# Make sure the entire path to DIRECTORY-PATH is available.
5144642e01fSmrgfunc_mkdir_p ()
5154642e01fSmrg{
5164642e01fSmrg    my_directory_path="$1"
5174642e01fSmrg    my_dir_list=
5184642e01fSmrg
5194642e01fSmrg    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
5204642e01fSmrg
5214642e01fSmrg      # Protect directory names starting with `-'
5224642e01fSmrg      case $my_directory_path in
5234642e01fSmrg        -*) my_directory_path="./$my_directory_path" ;;
5244642e01fSmrg      esac
5254642e01fSmrg
5264642e01fSmrg      # While some portion of DIR does not yet exist...
5274642e01fSmrg      while test ! -d "$my_directory_path"; do
5284642e01fSmrg        # ...make a list in topmost first order.  Use a colon delimited
5294642e01fSmrg	# list incase some portion of path contains whitespace.
5304642e01fSmrg        my_dir_list="$my_directory_path:$my_dir_list"
5314642e01fSmrg
5324642e01fSmrg        # If the last portion added has no slash in it, the list is done
5334642e01fSmrg        case $my_directory_path in */*) ;; *) break ;; esac
5344642e01fSmrg
5354642e01fSmrg        # ...otherwise throw away the child directory and loop
5366747b715Smrg        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
5374642e01fSmrg      done
5386747b715Smrg      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
5394642e01fSmrg
5404642e01fSmrg      save_mkdir_p_IFS="$IFS"; IFS=':'
5414642e01fSmrg      for my_dir in $my_dir_list; do
5424642e01fSmrg	IFS="$save_mkdir_p_IFS"
5434642e01fSmrg        # mkdir can fail with a `File exist' error if two processes
5444642e01fSmrg        # try to create one of the directories concurrently.  Don't
5454642e01fSmrg        # stop in that case!
5464642e01fSmrg        $MKDIR "$my_dir" 2>/dev/null || :
5474642e01fSmrg      done
5484642e01fSmrg      IFS="$save_mkdir_p_IFS"
5494642e01fSmrg
5504642e01fSmrg      # Bail out if we (or some other process) failed to create a directory.
5514642e01fSmrg      test -d "$my_directory_path" || \
5524642e01fSmrg        func_fatal_error "Failed to create \`$1'"
5534642e01fSmrg    fi
5544642e01fSmrg}
55505b261ecSmrg
55605b261ecSmrg
55705b261ecSmrg# func_mktempdir [string]
55805b261ecSmrg# Make a temporary directory that won't clash with other running
55905b261ecSmrg# libtool processes, and avoids race conditions if possible.  If
56005b261ecSmrg# given, STRING is the basename for that directory.
56105b261ecSmrgfunc_mktempdir ()
56205b261ecSmrg{
56305b261ecSmrg    my_template="${TMPDIR-/tmp}/${1-$progname}"
56405b261ecSmrg
5654642e01fSmrg    if test "$opt_dry_run" = ":"; then
56605b261ecSmrg      # Return a directory name, but don't create it in dry-run mode
56705b261ecSmrg      my_tmpdir="${my_template}-$$"
56805b261ecSmrg    else
56905b261ecSmrg
57005b261ecSmrg      # If mktemp works, use that first and foremost
57105b261ecSmrg      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
57205b261ecSmrg
57305b261ecSmrg      if test ! -d "$my_tmpdir"; then
5744642e01fSmrg        # Failing that, at least try and use $RANDOM to avoid a race
5754642e01fSmrg        my_tmpdir="${my_template}-${RANDOM-0}$$"
57605b261ecSmrg
5774642e01fSmrg        save_mktempdir_umask=`umask`
5784642e01fSmrg        umask 0077
5794642e01fSmrg        $MKDIR "$my_tmpdir"
5804642e01fSmrg        umask $save_mktempdir_umask
58105b261ecSmrg      fi
58205b261ecSmrg
58305b261ecSmrg      # If we're not in dry-run mode, bomb out on failure
5844642e01fSmrg      test -d "$my_tmpdir" || \
5854642e01fSmrg        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
58605b261ecSmrg    fi
58705b261ecSmrg
5886747b715Smrg    $ECHO "$my_tmpdir"
58905b261ecSmrg}
59005b261ecSmrg
59105b261ecSmrg
5924642e01fSmrg# func_quote_for_eval arg
5934642e01fSmrg# Aesthetically quote ARG to be evaled later.
5944642e01fSmrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
5954642e01fSmrg# is double-quoted, suitable for a subsequent eval, whereas
5964642e01fSmrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
5974642e01fSmrg# which are still active within double quotes backslashified.
5984642e01fSmrgfunc_quote_for_eval ()
59905b261ecSmrg{
6004642e01fSmrg    case $1 in
6014642e01fSmrg      *[\\\`\"\$]*)
6026747b715Smrg	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
6034642e01fSmrg      *)
6044642e01fSmrg        func_quote_for_eval_unquoted_result="$1" ;;
6054642e01fSmrg    esac
6064642e01fSmrg
6074642e01fSmrg    case $func_quote_for_eval_unquoted_result in
6084642e01fSmrg      # Double-quote args containing shell metacharacters to delay
6094642e01fSmrg      # word splitting, command substitution and and variable
6104642e01fSmrg      # expansion for a subsequent eval.
6114642e01fSmrg      # Many Bourne shells cannot handle close brackets correctly
6124642e01fSmrg      # in scan sets, so we specify it separately.
6134642e01fSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
6144642e01fSmrg        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
6154642e01fSmrg        ;;
6164642e01fSmrg      *)
6174642e01fSmrg        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
61805b261ecSmrg    esac
61905b261ecSmrg}
62005b261ecSmrg
62105b261ecSmrg
6224642e01fSmrg# func_quote_for_expand arg
6234642e01fSmrg# Aesthetically quote ARG to be evaled later; same as above,
6244642e01fSmrg# but do not quote variable references.
6254642e01fSmrgfunc_quote_for_expand ()
62605b261ecSmrg{
6274642e01fSmrg    case $1 in
6284642e01fSmrg      *[\\\`\"]*)
6296747b715Smrg	my_arg=`$ECHO "$1" | $SED \
6304642e01fSmrg	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
63105b261ecSmrg      *)
6324642e01fSmrg        my_arg="$1" ;;
6334642e01fSmrg    esac
6344642e01fSmrg
6354642e01fSmrg    case $my_arg in
6364642e01fSmrg      # Double-quote args containing shell metacharacters to delay
6374642e01fSmrg      # word splitting and command substitution for a subsequent eval.
6384642e01fSmrg      # Many Bourne shells cannot handle close brackets correctly
6394642e01fSmrg      # in scan sets, so we specify it separately.
6404642e01fSmrg      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
6414642e01fSmrg        my_arg="\"$my_arg\""
6424642e01fSmrg        ;;
6434642e01fSmrg    esac
6444642e01fSmrg
6454642e01fSmrg    func_quote_for_expand_result="$my_arg"
64605b261ecSmrg}
64705b261ecSmrg
64805b261ecSmrg
6494642e01fSmrg# func_show_eval cmd [fail_exp]
6504642e01fSmrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
6514642e01fSmrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
6524642e01fSmrg# is given, then evaluate it.
6534642e01fSmrgfunc_show_eval ()
65405b261ecSmrg{
6554642e01fSmrg    my_cmd="$1"
6564642e01fSmrg    my_fail_exp="${2-:}"
65705b261ecSmrg
6584642e01fSmrg    ${opt_silent-false} || {
6594642e01fSmrg      func_quote_for_expand "$my_cmd"
6604642e01fSmrg      eval "func_echo $func_quote_for_expand_result"
6614642e01fSmrg    }
6624642e01fSmrg
6634642e01fSmrg    if ${opt_dry_run-false}; then :; else
6644642e01fSmrg      eval "$my_cmd"
6654642e01fSmrg      my_status=$?
6664642e01fSmrg      if test "$my_status" -eq 0; then :; else
6674642e01fSmrg	eval "(exit $my_status); $my_fail_exp"
6684642e01fSmrg      fi
66905b261ecSmrg    fi
67005b261ecSmrg}
67105b261ecSmrg
6724642e01fSmrg
6734642e01fSmrg# func_show_eval_locale cmd [fail_exp]
6744642e01fSmrg# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
6754642e01fSmrg# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
6764642e01fSmrg# is given, then evaluate it.  Use the saved locale for evaluation.
6774642e01fSmrgfunc_show_eval_locale ()
67805b261ecSmrg{
6794642e01fSmrg    my_cmd="$1"
6804642e01fSmrg    my_fail_exp="${2-:}"
6814642e01fSmrg
6824642e01fSmrg    ${opt_silent-false} || {
6834642e01fSmrg      func_quote_for_expand "$my_cmd"
6844642e01fSmrg      eval "func_echo $func_quote_for_expand_result"
6854642e01fSmrg    }
6864642e01fSmrg
6874642e01fSmrg    if ${opt_dry_run-false}; then :; else
6884642e01fSmrg      eval "$lt_user_locale
6894642e01fSmrg	    $my_cmd"
6904642e01fSmrg      my_status=$?
6914642e01fSmrg      eval "$lt_safe_locale"
6924642e01fSmrg      if test "$my_status" -eq 0; then :; else
6934642e01fSmrg	eval "(exit $my_status); $my_fail_exp"
6944642e01fSmrg      fi
69505b261ecSmrg    fi
6964642e01fSmrg}
69705b261ecSmrg
6986747b715Smrg# func_tr_sh
6996747b715Smrg# Turn $1 into a string suitable for a shell variable name.
7006747b715Smrg# Result is stored in $func_tr_sh_result.  All characters
7016747b715Smrg# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
7026747b715Smrg# if $1 begins with a digit, a '_' is prepended as well.
7036747b715Smrgfunc_tr_sh ()
7046747b715Smrg{
7056747b715Smrg  case $1 in
7066747b715Smrg  [0-9]* | *[!a-zA-Z0-9_]*)
7076747b715Smrg    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
7086747b715Smrg    ;;
7096747b715Smrg  * )
7106747b715Smrg    func_tr_sh_result=$1
7116747b715Smrg    ;;
7126747b715Smrg  esac
7136747b715Smrg}
7144642e01fSmrg
7154642e01fSmrg
7164642e01fSmrg# func_version
7174642e01fSmrg# Echo version message to standard output and exit.
7184642e01fSmrgfunc_version ()
7194642e01fSmrg{
7206747b715Smrg    $opt_debug
7216747b715Smrg
7226747b715Smrg    $SED -n '/(C)/!b go
7236747b715Smrg	:more
7246747b715Smrg	/\./!{
7256747b715Smrg	  N
7266747b715Smrg	  s/\n# / /
7276747b715Smrg	  b more
7286747b715Smrg	}
7296747b715Smrg	:go
7306747b715Smrg	/^# '$PROGRAM' (GNU /,/# warranty; / {
7314642e01fSmrg        s/^# //
7324642e01fSmrg	s/^# *$//
7334642e01fSmrg        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
7344642e01fSmrg        p
7354642e01fSmrg     }' < "$progpath"
7364642e01fSmrg     exit $?
7374642e01fSmrg}
7384642e01fSmrg
7394642e01fSmrg# func_usage
7404642e01fSmrg# Echo short help message to standard output and exit.
7414642e01fSmrgfunc_usage ()
7424642e01fSmrg{
7436747b715Smrg    $opt_debug
7446747b715Smrg
7456747b715Smrg    $SED -n '/^# Usage:/,/^#  *.*--help/ {
7464642e01fSmrg        s/^# //
7474642e01fSmrg	s/^# *$//
7484642e01fSmrg	s/\$progname/'$progname'/
7494642e01fSmrg	p
7504642e01fSmrg    }' < "$progpath"
7516747b715Smrg    echo
7524642e01fSmrg    $ECHO "run \`$progname --help | more' for full usage"
7534642e01fSmrg    exit $?
7544642e01fSmrg}
7554642e01fSmrg
7566747b715Smrg# func_help [NOEXIT]
7576747b715Smrg# Echo long help message to standard output and exit,
7586747b715Smrg# unless 'noexit' is passed as argument.
7594642e01fSmrgfunc_help ()
7604642e01fSmrg{
7616747b715Smrg    $opt_debug
7626747b715Smrg
7634642e01fSmrg    $SED -n '/^# Usage:/,/# Report bugs to/ {
7646747b715Smrg	:print
7654642e01fSmrg        s/^# //
7664642e01fSmrg	s/^# *$//
7674642e01fSmrg	s*\$progname*'$progname'*
7684642e01fSmrg	s*\$host*'"$host"'*
7694642e01fSmrg	s*\$SHELL*'"$SHELL"'*
7704642e01fSmrg	s*\$LTCC*'"$LTCC"'*
7714642e01fSmrg	s*\$LTCFLAGS*'"$LTCFLAGS"'*
7724642e01fSmrg	s*\$LD*'"$LD"'*
7734642e01fSmrg	s/\$with_gnu_ld/'"$with_gnu_ld"'/
7744642e01fSmrg	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
7754642e01fSmrg	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
7764642e01fSmrg	p
7776747b715Smrg	d
7786747b715Smrg     }
7796747b715Smrg     /^# .* home page:/b print
7806747b715Smrg     /^# General help using/b print
7816747b715Smrg     ' < "$progpath"
7826747b715Smrg    ret=$?
7836747b715Smrg    if test -z "$1"; then
7846747b715Smrg      exit $ret
7856747b715Smrg    fi
7864642e01fSmrg}
7874642e01fSmrg
7884642e01fSmrg# func_missing_arg argname
7894642e01fSmrg# Echo program name prefixed message to standard error and set global
7904642e01fSmrg# exit_cmd.
7914642e01fSmrgfunc_missing_arg ()
7924642e01fSmrg{
7936747b715Smrg    $opt_debug
7946747b715Smrg
7956747b715Smrg    func_error "missing argument for $1."
7964642e01fSmrg    exit_cmd=exit
79705b261ecSmrg}
79805b261ecSmrg
79905b261ecSmrg
8006747b715Smrg# func_split_short_opt shortopt
8016747b715Smrg# Set func_split_short_opt_name and func_split_short_opt_arg shell
8026747b715Smrg# variables after splitting SHORTOPT after the 2nd character.
8036747b715Smrgfunc_split_short_opt ()
8046747b715Smrg{
8056747b715Smrg    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
8066747b715Smrg    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
8076747b715Smrg
8086747b715Smrg    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
8096747b715Smrg    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
8106747b715Smrg} # func_split_short_opt may be replaced by extended shell implementation
81105b261ecSmrg
8124642e01fSmrg
8136747b715Smrg# func_split_long_opt longopt
8146747b715Smrg# Set func_split_long_opt_name and func_split_long_opt_arg shell
8156747b715Smrg# variables after splitting LONGOPT at the `=' sign.
8166747b715Smrgfunc_split_long_opt ()
8176747b715Smrg{
8186747b715Smrg    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
8196747b715Smrg    my_sed_long_arg='1s/^--[^=]*=//'
8206747b715Smrg
8216747b715Smrg    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
8226747b715Smrg    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
8236747b715Smrg} # func_split_long_opt may be replaced by extended shell implementation
8246747b715Smrg
8256747b715Smrgexit_cmd=:
8266747b715Smrg
8274642e01fSmrg
8284642e01fSmrg
82905b261ecSmrg
83005b261ecSmrg
8314642e01fSmrgmagic="%%%MAGIC variable%%%"
8324642e01fSmrgmagic_exe="%%%MAGIC EXE variable%%%"
83305b261ecSmrg
8344642e01fSmrg# Global variables.
8354642e01fSmrgnonopt=
8364642e01fSmrgpreserve_args=
8374642e01fSmrglo2o="s/\\.lo\$/.${objext}/"
8384642e01fSmrgo2lo="s/\\.${objext}\$/.lo/"
8394642e01fSmrgextracted_archives=
8404642e01fSmrgextracted_serial=0
84105b261ecSmrg
8424642e01fSmrg# If this variable is set in any of the actions, the command in it
8434642e01fSmrg# will be execed at the end.  This prevents here-documents from being
8444642e01fSmrg# left over by shells.
8454642e01fSmrgexec_cmd=
8464642e01fSmrg
8476747b715Smrg# func_append var value
8486747b715Smrg# Append VALUE to the end of shell variable VAR.
8496747b715Smrgfunc_append ()
8506747b715Smrg{
8516747b715Smrg    eval "${1}=\$${1}\${2}"
8526747b715Smrg} # func_append may be replaced by extended shell implementation
8536747b715Smrg
8546747b715Smrg# func_append_quoted var value
8556747b715Smrg# Quote VALUE and append to the end of shell variable VAR, separated
8566747b715Smrg# by a space.
8576747b715Smrgfunc_append_quoted ()
8586747b715Smrg{
8596747b715Smrg    func_quote_for_eval "${2}"
8606747b715Smrg    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
8616747b715Smrg} # func_append_quoted may be replaced by extended shell implementation
8626747b715Smrg
8636747b715Smrg
8646747b715Smrg# func_arith arithmetic-term...
8656747b715Smrgfunc_arith ()
8666747b715Smrg{
8676747b715Smrg    func_arith_result=`expr "${@}"`
8686747b715Smrg} # func_arith may be replaced by extended shell implementation
8696747b715Smrg
8706747b715Smrg
8716747b715Smrg# func_len string
8726747b715Smrg# STRING may not start with a hyphen.
8736747b715Smrgfunc_len ()
8746747b715Smrg{
8756747b715Smrg    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
8766747b715Smrg} # func_len may be replaced by extended shell implementation
8776747b715Smrg
8786747b715Smrg
8796747b715Smrg# func_lo2o object
8806747b715Smrgfunc_lo2o ()
8816747b715Smrg{
8826747b715Smrg    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
8836747b715Smrg} # func_lo2o may be replaced by extended shell implementation
8846747b715Smrg
8856747b715Smrg
8866747b715Smrg# func_xform libobj-or-source
8876747b715Smrgfunc_xform ()
8886747b715Smrg{
8896747b715Smrg    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
8906747b715Smrg} # func_xform may be replaced by extended shell implementation
8916747b715Smrg
8926747b715Smrg
8934642e01fSmrg# func_fatal_configuration arg...
8944642e01fSmrg# Echo program name prefixed message to standard error, followed by
8954642e01fSmrg# a configuration failure hint, and exit.
8964642e01fSmrgfunc_fatal_configuration ()
8974642e01fSmrg{
8984642e01fSmrg    func_error ${1+"$@"}
8994642e01fSmrg    func_error "See the $PACKAGE documentation for more information."
9004642e01fSmrg    func_fatal_error "Fatal configuration error."
9014642e01fSmrg}
90205b261ecSmrg
90305b261ecSmrg
9044642e01fSmrg# func_config
9054642e01fSmrg# Display the configuration for all the tags in this script.
9064642e01fSmrgfunc_config ()
9074642e01fSmrg{
9084642e01fSmrg    re_begincf='^# ### BEGIN LIBTOOL'
9094642e01fSmrg    re_endcf='^# ### END LIBTOOL'
9104642e01fSmrg
9114642e01fSmrg    # Default configuration.
9124642e01fSmrg    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
91305b261ecSmrg
91405b261ecSmrg    # Now print the configurations for the tags.
91505b261ecSmrg    for tagname in $taglist; do
9164642e01fSmrg      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
91705b261ecSmrg    done
91805b261ecSmrg
9194642e01fSmrg    exit $?
9204642e01fSmrg}
92105b261ecSmrg
9224642e01fSmrg# func_features
9234642e01fSmrg# Display the features supported by this script.
9244642e01fSmrgfunc_features ()
9254642e01fSmrg{
9266747b715Smrg    echo "host: $host"
92705b261ecSmrg    if test "$build_libtool_libs" = yes; then
9286747b715Smrg      echo "enable shared libraries"
92905b261ecSmrg    else
9306747b715Smrg      echo "disable shared libraries"
93105b261ecSmrg    fi
93205b261ecSmrg    if test "$build_old_libs" = yes; then
9336747b715Smrg      echo "enable static libraries"
93405b261ecSmrg    else
9356747b715Smrg      echo "disable static libraries"
93605b261ecSmrg    fi
9374642e01fSmrg
93805b261ecSmrg    exit $?
9394642e01fSmrg}
94005b261ecSmrg
9414642e01fSmrg# func_enable_tag tagname
9424642e01fSmrg# Verify that TAGNAME is valid, and either flag an error and exit, or
9434642e01fSmrg# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
9444642e01fSmrg# variable here.
9454642e01fSmrgfunc_enable_tag ()
9464642e01fSmrg{
9474642e01fSmrg  # Global variable:
9484642e01fSmrg  tagname="$1"
94905b261ecSmrg
9504642e01fSmrg  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
9514642e01fSmrg  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
9524642e01fSmrg  sed_extractcf="/$re_begincf/,/$re_endcf/p"
95305b261ecSmrg
9544642e01fSmrg  # Validate tagname.
9554642e01fSmrg  case $tagname in
9564642e01fSmrg    *[!-_A-Za-z0-9,/]*)
9574642e01fSmrg      func_fatal_error "invalid tag name: $tagname"
9584642e01fSmrg      ;;
9594642e01fSmrg  esac
96005b261ecSmrg
9614642e01fSmrg  # Don't test for the "default" C tag, as we know it's
9624642e01fSmrg  # there but not specially marked.
9634642e01fSmrg  case $tagname in
9644642e01fSmrg    CC) ;;
9654642e01fSmrg    *)
9664642e01fSmrg      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
9674642e01fSmrg	taglist="$taglist $tagname"
9684642e01fSmrg
9694642e01fSmrg	# Evaluate the configuration.  Be careful to quote the path
9704642e01fSmrg	# and the sed script, to avoid splitting on whitespace, but
9714642e01fSmrg	# also don't use non-portable quotes within backquotes within
9724642e01fSmrg	# quotes we have to do it in 2 steps:
9734642e01fSmrg	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
9744642e01fSmrg	eval "$extractedcf"
9754642e01fSmrg      else
9764642e01fSmrg	func_error "ignoring unknown tag $tagname"
9774642e01fSmrg      fi
9784642e01fSmrg      ;;
9794642e01fSmrg  esac
9804642e01fSmrg}
9814642e01fSmrg
9826747b715Smrg# func_check_version_match
9836747b715Smrg# Ensure that we are using m4 macros, and libtool script from the same
9846747b715Smrg# release of libtool.
9856747b715Smrgfunc_check_version_match ()
9864642e01fSmrg{
9876747b715Smrg  if test "$package_revision" != "$macro_revision"; then
9886747b715Smrg    if test "$VERSION" != "$macro_version"; then
9896747b715Smrg      if test -z "$macro_version"; then
9906747b715Smrg        cat >&2 <<_LT_EOF
9916747b715Smrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
9926747b715Smrg$progname: definition of this LT_INIT comes from an older release.
9936747b715Smrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
9946747b715Smrg$progname: and run autoconf again.
9956747b715Smrg_LT_EOF
9966747b715Smrg      else
9976747b715Smrg        cat >&2 <<_LT_EOF
9986747b715Smrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
9996747b715Smrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
10006747b715Smrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
10016747b715Smrg$progname: and run autoconf again.
10026747b715Smrg_LT_EOF
10036747b715Smrg      fi
10046747b715Smrg    else
10056747b715Smrg      cat >&2 <<_LT_EOF
10066747b715Smrg$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
10076747b715Smrg$progname: but the definition of this LT_INIT comes from revision $macro_revision.
10086747b715Smrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision
10096747b715Smrg$progname: of $PACKAGE $VERSION and run autoconf again.
10106747b715Smrg_LT_EOF
10116747b715Smrg    fi
10126747b715Smrg
10136747b715Smrg    exit $EXIT_MISMATCH
10146747b715Smrg  fi
10156747b715Smrg}
10166747b715Smrg
10176747b715Smrg
10186747b715Smrg# Shorthand for --mode=foo, only valid as the first argument
10196747b715Smrgcase $1 in
10206747b715Smrgclean|clea|cle|cl)
10216747b715Smrg  shift; set dummy --mode clean ${1+"$@"}; shift
10226747b715Smrg  ;;
10236747b715Smrgcompile|compil|compi|comp|com|co|c)
10246747b715Smrg  shift; set dummy --mode compile ${1+"$@"}; shift
10256747b715Smrg  ;;
10266747b715Smrgexecute|execut|execu|exec|exe|ex|e)
10276747b715Smrg  shift; set dummy --mode execute ${1+"$@"}; shift
10286747b715Smrg  ;;
10296747b715Smrgfinish|finis|fini|fin|fi|f)
10306747b715Smrg  shift; set dummy --mode finish ${1+"$@"}; shift
10316747b715Smrg  ;;
10326747b715Smrginstall|instal|insta|inst|ins|in|i)
10336747b715Smrg  shift; set dummy --mode install ${1+"$@"}; shift
10346747b715Smrg  ;;
10356747b715Smrglink|lin|li|l)
10366747b715Smrg  shift; set dummy --mode link ${1+"$@"}; shift
10376747b715Smrg  ;;
10386747b715Smrguninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
10396747b715Smrg  shift; set dummy --mode uninstall ${1+"$@"}; shift
10406747b715Smrg  ;;
10416747b715Smrgesac
104205b261ecSmrg
104305b261ecSmrg
10446747b715Smrg
10456747b715Smrg# Option defaults:
10466747b715Smrgopt_debug=:
10476747b715Smrgopt_dry_run=false
10486747b715Smrgopt_config=false
10496747b715Smrgopt_preserve_dup_deps=false
10506747b715Smrgopt_features=false
10516747b715Smrgopt_finish=false
10526747b715Smrgopt_help=false
10536747b715Smrgopt_help_all=false
10546747b715Smrgopt_silent=:
10556747b715Smrgopt_verbose=:
10566747b715Smrgopt_silent=false
10576747b715Smrgopt_verbose=false
10586747b715Smrg
10596747b715Smrg
10606747b715Smrg# Parse options once, thoroughly.  This comes as soon as possible in the
10616747b715Smrg# script to make things like `--version' happen as quickly as we can.
10626747b715Smrg{
10636747b715Smrg  # this just eases exit handling
10646747b715Smrg  while test $# -gt 0; do
10654642e01fSmrg    opt="$1"
10664642e01fSmrg    shift
10674642e01fSmrg    case $opt in
10686747b715Smrg      --debug|-x)	opt_debug='set -x'
10694642e01fSmrg			func_echo "enabling shell trace mode"
10704642e01fSmrg			$opt_debug
10714642e01fSmrg			;;
10726747b715Smrg      --dry-run|--dryrun|-n)
10736747b715Smrg			opt_dry_run=:
10744642e01fSmrg			;;
10756747b715Smrg      --config)
10766747b715Smrg			opt_config=:
10776747b715Smrgfunc_config
10786747b715Smrg			;;
10796747b715Smrg      --dlopen|-dlopen)
10806747b715Smrg			optarg="$1"
10816747b715Smrg			opt_dlopen="${opt_dlopen+$opt_dlopen
10826747b715Smrg}$optarg"
10834642e01fSmrg			shift
10844642e01fSmrg			;;
10854642e01fSmrg      --preserve-dup-deps)
10866747b715Smrg			opt_preserve_dup_deps=:
10874642e01fSmrg			;;
10886747b715Smrg      --features)
10896747b715Smrg			opt_features=:
10906747b715Smrgfunc_features
10916747b715Smrg			;;
10926747b715Smrg      --finish)
10936747b715Smrg			opt_finish=:
10946747b715Smrgset dummy --mode finish ${1+"$@"}; shift
10956747b715Smrg			;;
10966747b715Smrg      --help)
10976747b715Smrg			opt_help=:
10986747b715Smrg			;;
10996747b715Smrg      --help-all)
11006747b715Smrg			opt_help_all=:
11016747b715Smrgopt_help=': help-all'
11026747b715Smrg			;;
11036747b715Smrg      --mode)
11046747b715Smrg			test $# = 0 && func_missing_arg $opt && break
11056747b715Smrg			optarg="$1"
11066747b715Smrg			opt_mode="$optarg"
11076747b715Smrgcase $optarg in
11086747b715Smrg  # Valid mode arguments:
11096747b715Smrg  clean|compile|execute|finish|install|link|relink|uninstall) ;;
11106747b715Smrg
11116747b715Smrg  # Catch anything else as an error
11126747b715Smrg  *) func_error "invalid argument for $opt"
11136747b715Smrg     exit_cmd=exit
11146747b715Smrg     break
11156747b715Smrg     ;;
11166747b715Smrgesac
11176747b715Smrg			shift
11186747b715Smrg			;;
11196747b715Smrg      --no-silent|--no-quiet)
11204642e01fSmrg			opt_silent=false
11216747b715Smrgfunc_append preserve_args " $opt"
11224642e01fSmrg			;;
11236747b715Smrg      --no-verbose)
11246747b715Smrg			opt_verbose=false
11256747b715Smrgfunc_append preserve_args " $opt"
11266747b715Smrg			;;
11276747b715Smrg      --silent|--quiet)
11286747b715Smrg			opt_silent=:
11296747b715Smrgfunc_append preserve_args " $opt"
11306747b715Smrg        opt_verbose=false
11316747b715Smrg			;;
11326747b715Smrg      --verbose|-v)
11336747b715Smrg			opt_verbose=:
11346747b715Smrgfunc_append preserve_args " $opt"
11356747b715Smrgopt_silent=false
11366747b715Smrg			;;
11376747b715Smrg      --tag)
11386747b715Smrg			test $# = 0 && func_missing_arg $opt && break
11396747b715Smrg			optarg="$1"
11406747b715Smrg			opt_tag="$optarg"
11416747b715Smrgfunc_append preserve_args " $opt $optarg"
11426747b715Smrgfunc_enable_tag "$optarg"
11434642e01fSmrg			shift
11444642e01fSmrg			;;
11454642e01fSmrg
11466747b715Smrg      -\?|-h)		func_usage				;;
11476747b715Smrg      --help)		func_help				;;
11486747b715Smrg      --version)	func_version				;;
11496747b715Smrg
11504642e01fSmrg      # Separate optargs to long options:
11516747b715Smrg      --*=*)
11526747b715Smrg			func_split_long_opt "$opt"
11536747b715Smrg			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
11544642e01fSmrg			shift
11554642e01fSmrg			;;
11564642e01fSmrg
11576747b715Smrg      # Separate non-argument short options:
11586747b715Smrg      -\?*|-h*|-n*|-v*)
11596747b715Smrg			func_split_short_opt "$opt"
11606747b715Smrg			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
11616747b715Smrg			shift
11624642e01fSmrg			;;
11636747b715Smrg
11646747b715Smrg      --)		break					;;
11656747b715Smrg      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
11666747b715Smrg      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
11674642e01fSmrg    esac
11684642e01fSmrg  done
11694642e01fSmrg
11706747b715Smrg  # Validate options:
11716747b715Smrg
11726747b715Smrg  # save first non-option argument
11736747b715Smrg  if test "$#" -gt 0; then
11746747b715Smrg    nonopt="$opt"
11756747b715Smrg    shift
11766747b715Smrg  fi
11776747b715Smrg
11786747b715Smrg  # preserve --debug
11796747b715Smrg  test "$opt_debug" = : || func_append preserve_args " --debug"
11804642e01fSmrg
11814642e01fSmrg  case $host in
11824642e01fSmrg    *cygwin* | *mingw* | *pw32* | *cegcc*)
11834642e01fSmrg      # don't eliminate duplications in $postdeps and $predeps
11844642e01fSmrg      opt_duplicate_compiler_generated_deps=:
118505b261ecSmrg      ;;
118605b261ecSmrg    *)
11876747b715Smrg      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
11884642e01fSmrg      ;;
11894642e01fSmrg  esac
119005b261ecSmrg
11916747b715Smrg  $opt_help || {
11926747b715Smrg    # Sanity checks first:
11936747b715Smrg    func_check_version_match
11944642e01fSmrg
11956747b715Smrg    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
11966747b715Smrg      func_fatal_configuration "not configured to build any kind of library"
11974642e01fSmrg    fi
11984642e01fSmrg
11996747b715Smrg    # Darwin sucks
12006747b715Smrg    eval std_shrext=\"$shrext_cmds\"
12014642e01fSmrg
12026747b715Smrg    # Only execute mode is allowed to have -dlopen flags.
12036747b715Smrg    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
12046747b715Smrg      func_error "unrecognized option \`-dlopen'"
12056747b715Smrg      $ECHO "$help" 1>&2
12066747b715Smrg      exit $EXIT_FAILURE
12076747b715Smrg    fi
120805b261ecSmrg
12096747b715Smrg    # Change the help message to a mode-specific one.
12106747b715Smrg    generic_help="$help"
12116747b715Smrg    help="Try \`$progname --help --mode=$opt_mode' for more information."
12126747b715Smrg  }
12134642e01fSmrg
12144642e01fSmrg
12156747b715Smrg  # Bail if the options were screwed
12166747b715Smrg  $exit_cmd $EXIT_FAILURE
12176747b715Smrg}
12184642e01fSmrg
12194642e01fSmrg
122005b261ecSmrg
122105b261ecSmrg
12226747b715Smrg## ----------- ##
12236747b715Smrg##    Main.    ##
12246747b715Smrg## ----------- ##
122505b261ecSmrg
12264642e01fSmrg# func_lalib_p file
12274642e01fSmrg# True iff FILE is a libtool `.la' library or `.lo' object file.
12284642e01fSmrg# This function is only a basic sanity check; it will hardly flush out
12294642e01fSmrg# determined imposters.
12304642e01fSmrgfunc_lalib_p ()
12314642e01fSmrg{
12324642e01fSmrg    test -f "$1" &&
12334642e01fSmrg      $SED -e 4q "$1" 2>/dev/null \
12344642e01fSmrg        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
12354642e01fSmrg}
123605b261ecSmrg
12374642e01fSmrg# func_lalib_unsafe_p file
12384642e01fSmrg# True iff FILE is a libtool `.la' library or `.lo' object file.
12394642e01fSmrg# This function implements the same check as func_lalib_p without
12404642e01fSmrg# resorting to external programs.  To this end, it redirects stdin and
12414642e01fSmrg# closes it afterwards, without saving the original file descriptor.
12424642e01fSmrg# As a safety measure, use it only where a negative result would be
12434642e01fSmrg# fatal anyway.  Works if `file' does not exist.
12444642e01fSmrgfunc_lalib_unsafe_p ()
12454642e01fSmrg{
12464642e01fSmrg    lalib_p=no
12474642e01fSmrg    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
12484642e01fSmrg	for lalib_p_l in 1 2 3 4
12494642e01fSmrg	do
12504642e01fSmrg	    read lalib_p_line
12514642e01fSmrg	    case "$lalib_p_line" in
12524642e01fSmrg		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
12534642e01fSmrg	    esac
12544642e01fSmrg	done
12554642e01fSmrg	exec 0<&5 5<&-
12564642e01fSmrg    fi
12574642e01fSmrg    test "$lalib_p" = yes
12584642e01fSmrg}
125905b261ecSmrg
12604642e01fSmrg# func_ltwrapper_script_p file
12614642e01fSmrg# True iff FILE is a libtool wrapper script
12624642e01fSmrg# This function is only a basic sanity check; it will hardly flush out
12634642e01fSmrg# determined imposters.
12644642e01fSmrgfunc_ltwrapper_script_p ()
12654642e01fSmrg{
12664642e01fSmrg    func_lalib_p "$1"
12674642e01fSmrg}
126805b261ecSmrg
12694642e01fSmrg# func_ltwrapper_executable_p file
12704642e01fSmrg# True iff FILE is a libtool wrapper executable
12714642e01fSmrg# This function is only a basic sanity check; it will hardly flush out
12724642e01fSmrg# determined imposters.
12734642e01fSmrgfunc_ltwrapper_executable_p ()
12744642e01fSmrg{
12754642e01fSmrg    func_ltwrapper_exec_suffix=
12764642e01fSmrg    case $1 in
12774642e01fSmrg    *.exe) ;;
12784642e01fSmrg    *) func_ltwrapper_exec_suffix=.exe ;;
12794642e01fSmrg    esac
12804642e01fSmrg    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
12814642e01fSmrg}
128205b261ecSmrg
12834642e01fSmrg# func_ltwrapper_scriptname file
12844642e01fSmrg# Assumes file is an ltwrapper_executable
12854642e01fSmrg# uses $file to determine the appropriate filename for a
12864642e01fSmrg# temporary ltwrapper_script.
12874642e01fSmrgfunc_ltwrapper_scriptname ()
12884642e01fSmrg{
12896747b715Smrg    func_dirname_and_basename "$1" "" "."
12906747b715Smrg    func_stripname '' '.exe' "$func_basename_result"
12916747b715Smrg    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
12924642e01fSmrg}
12934642e01fSmrg
12944642e01fSmrg# func_ltwrapper_p file
12954642e01fSmrg# True iff FILE is a libtool wrapper script or wrapper executable
12964642e01fSmrg# This function is only a basic sanity check; it will hardly flush out
12974642e01fSmrg# determined imposters.
12984642e01fSmrgfunc_ltwrapper_p ()
12994642e01fSmrg{
13004642e01fSmrg    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
13014642e01fSmrg}
13024642e01fSmrg
13034642e01fSmrg
13044642e01fSmrg# func_execute_cmds commands fail_cmd
13054642e01fSmrg# Execute tilde-delimited COMMANDS.
13064642e01fSmrg# If FAIL_CMD is given, eval that upon failure.
13074642e01fSmrg# FAIL_CMD may read-access the current command in variable CMD!
13084642e01fSmrgfunc_execute_cmds ()
13094642e01fSmrg{
13104642e01fSmrg    $opt_debug
13114642e01fSmrg    save_ifs=$IFS; IFS='~'
13124642e01fSmrg    for cmd in $1; do
13134642e01fSmrg      IFS=$save_ifs
13144642e01fSmrg      eval cmd=\"$cmd\"
13154642e01fSmrg      func_show_eval "$cmd" "${2-:}"
13164642e01fSmrg    done
13174642e01fSmrg    IFS=$save_ifs
13184642e01fSmrg}
13194642e01fSmrg
13204642e01fSmrg
13214642e01fSmrg# func_source file
13224642e01fSmrg# Source FILE, adding directory component if necessary.
13234642e01fSmrg# Note that it is not necessary on cygwin/mingw to append a dot to
13244642e01fSmrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
13254642e01fSmrg# behavior happens only for exec(3), not for open(2)!  Also, sourcing
13264642e01fSmrg# `FILE.' does not work on cygwin managed mounts.
13274642e01fSmrgfunc_source ()
13284642e01fSmrg{
13294642e01fSmrg    $opt_debug
13304642e01fSmrg    case $1 in
13314642e01fSmrg    */* | *\\*)	. "$1" ;;
13324642e01fSmrg    *)		. "./$1" ;;
13334642e01fSmrg    esac
13344642e01fSmrg}
13354642e01fSmrg
13364642e01fSmrg
13376747b715Smrg# func_resolve_sysroot PATH
13386747b715Smrg# Replace a leading = in PATH with a sysroot.  Store the result into
13396747b715Smrg# func_resolve_sysroot_result
13406747b715Smrgfunc_resolve_sysroot ()
13416747b715Smrg{
13426747b715Smrg  func_resolve_sysroot_result=$1
13436747b715Smrg  case $func_resolve_sysroot_result in
13446747b715Smrg  =*)
13456747b715Smrg    func_stripname '=' '' "$func_resolve_sysroot_result"
13466747b715Smrg    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
13476747b715Smrg    ;;
13486747b715Smrg  esac
13496747b715Smrg}
13506747b715Smrg
13516747b715Smrg# func_replace_sysroot PATH
13526747b715Smrg# If PATH begins with the sysroot, replace it with = and
13536747b715Smrg# store the result into func_replace_sysroot_result.
13546747b715Smrgfunc_replace_sysroot ()
13556747b715Smrg{
13566747b715Smrg  case "$lt_sysroot:$1" in
13576747b715Smrg  ?*:"$lt_sysroot"*)
13586747b715Smrg    func_stripname "$lt_sysroot" '' "$1"
13596747b715Smrg    func_replace_sysroot_result="=$func_stripname_result"
13606747b715Smrg    ;;
13616747b715Smrg  *)
13626747b715Smrg    # Including no sysroot.
13636747b715Smrg    func_replace_sysroot_result=$1
13646747b715Smrg    ;;
13656747b715Smrg  esac
13666747b715Smrg}
13676747b715Smrg
13684642e01fSmrg# func_infer_tag arg
13694642e01fSmrg# Infer tagged configuration to use if any are available and
13704642e01fSmrg# if one wasn't chosen via the "--tag" command line option.
13714642e01fSmrg# Only attempt this if the compiler in the base compile
13724642e01fSmrg# command doesn't match the default compiler.
13734642e01fSmrg# arg is usually of the form 'gcc ...'
13744642e01fSmrgfunc_infer_tag ()
13754642e01fSmrg{
13764642e01fSmrg    $opt_debug
13774642e01fSmrg    if test -n "$available_tags" && test -z "$tagname"; then
13784642e01fSmrg      CC_quoted=
13794642e01fSmrg      for arg in $CC; do
13806747b715Smrg	func_append_quoted CC_quoted "$arg"
13814642e01fSmrg      done
13826747b715Smrg      CC_expanded=`func_echo_all $CC`
13836747b715Smrg      CC_quoted_expanded=`func_echo_all $CC_quoted`
13844642e01fSmrg      case $@ in
13854642e01fSmrg      # Blanks in the command may have been stripped by the calling shell,
13864642e01fSmrg      # but not from the CC environment variable when configure was run.
13876747b715Smrg      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
13886747b715Smrg      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
13894642e01fSmrg      # Blanks at the start of $base_compile will cause this to fail
13904642e01fSmrg      # if we don't check for them as well.
13914642e01fSmrg      *)
13924642e01fSmrg	for z in $available_tags; do
13934642e01fSmrg	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
13944642e01fSmrg	    # Evaluate the configuration.
13954642e01fSmrg	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
13964642e01fSmrg	    CC_quoted=
13974642e01fSmrg	    for arg in $CC; do
13984642e01fSmrg	      # Double-quote args containing other shell metacharacters.
13996747b715Smrg	      func_append_quoted CC_quoted "$arg"
14004642e01fSmrg	    done
14016747b715Smrg	    CC_expanded=`func_echo_all $CC`
14026747b715Smrg	    CC_quoted_expanded=`func_echo_all $CC_quoted`
14034642e01fSmrg	    case "$@ " in
14046747b715Smrg	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
14056747b715Smrg	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
14064642e01fSmrg	      # The compiler in the base compile command matches
14074642e01fSmrg	      # the one in the tagged configuration.
14084642e01fSmrg	      # Assume this is the tagged configuration we want.
14094642e01fSmrg	      tagname=$z
14104642e01fSmrg	      break
14114642e01fSmrg	      ;;
14124642e01fSmrg	    esac
14134642e01fSmrg	  fi
14144642e01fSmrg	done
14154642e01fSmrg	# If $tagname still isn't set, then no tagged configuration
14164642e01fSmrg	# was found and let the user know that the "--tag" command
14174642e01fSmrg	# line option must be used.
14184642e01fSmrg	if test -z "$tagname"; then
14194642e01fSmrg	  func_echo "unable to infer tagged configuration"
14204642e01fSmrg	  func_fatal_error "specify a tag with \`--tag'"
14214642e01fSmrg#	else
14224642e01fSmrg#	  func_verbose "using $tagname tagged configuration"
14234642e01fSmrg	fi
14244642e01fSmrg	;;
14254642e01fSmrg      esac
14264642e01fSmrg    fi
14274642e01fSmrg}
14284642e01fSmrg
14294642e01fSmrg
14304642e01fSmrg
14314642e01fSmrg# func_write_libtool_object output_name pic_name nonpic_name
14324642e01fSmrg# Create a libtool object file (analogous to a ".la" file),
14334642e01fSmrg# but don't create it if we're doing a dry run.
14344642e01fSmrgfunc_write_libtool_object ()
14354642e01fSmrg{
14364642e01fSmrg    write_libobj=${1}
14374642e01fSmrg    if test "$build_libtool_libs" = yes; then
14384642e01fSmrg      write_lobj=\'${2}\'
14394642e01fSmrg    else
14404642e01fSmrg      write_lobj=none
14414642e01fSmrg    fi
14424642e01fSmrg
14434642e01fSmrg    if test "$build_old_libs" = yes; then
14444642e01fSmrg      write_oldobj=\'${3}\'
14454642e01fSmrg    else
14464642e01fSmrg      write_oldobj=none
14474642e01fSmrg    fi
14484642e01fSmrg
14494642e01fSmrg    $opt_dry_run || {
14504642e01fSmrg      cat >${write_libobj}T <<EOF
14514642e01fSmrg# $write_libobj - a libtool object file
14524642e01fSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
14534642e01fSmrg#
14544642e01fSmrg# Please DO NOT delete this file!
14554642e01fSmrg# It is necessary for linking the library.
14564642e01fSmrg
14574642e01fSmrg# Name of the PIC object.
14584642e01fSmrgpic_object=$write_lobj
14594642e01fSmrg
14604642e01fSmrg# Name of the non-PIC object
14614642e01fSmrgnon_pic_object=$write_oldobj
14624642e01fSmrg
14634642e01fSmrgEOF
14644642e01fSmrg      $MV "${write_libobj}T" "${write_libobj}"
14654642e01fSmrg    }
14664642e01fSmrg}
14674642e01fSmrg
14686747b715Smrg
14696747b715Smrg##################################################
14706747b715Smrg# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
14716747b715Smrg##################################################
14726747b715Smrg
14736747b715Smrg# func_convert_core_file_wine_to_w32 ARG
14746747b715Smrg# Helper function used by file name conversion functions when $build is *nix,
14756747b715Smrg# and $host is mingw, cygwin, or some other w32 environment. Relies on a
14766747b715Smrg# correctly configured wine environment available, with the winepath program
14776747b715Smrg# in $build's $PATH.
14786747b715Smrg#
14796747b715Smrg# ARG is the $build file name to be converted to w32 format.
14806747b715Smrg# Result is available in $func_convert_core_file_wine_to_w32_result, and will
14816747b715Smrg# be empty on error (or when ARG is empty)
14826747b715Smrgfunc_convert_core_file_wine_to_w32 ()
14836747b715Smrg{
14846747b715Smrg  $opt_debug
14856747b715Smrg  func_convert_core_file_wine_to_w32_result="$1"
14866747b715Smrg  if test -n "$1"; then
14876747b715Smrg    # Unfortunately, winepath does not exit with a non-zero error code, so we
14886747b715Smrg    # are forced to check the contents of stdout. On the other hand, if the
14896747b715Smrg    # command is not found, the shell will set an exit code of 127 and print
14906747b715Smrg    # *an error message* to stdout. So we must check for both error code of
14916747b715Smrg    # zero AND non-empty stdout, which explains the odd construction:
14926747b715Smrg    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
14936747b715Smrg    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
14946747b715Smrg      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
14956747b715Smrg        $SED -e "$lt_sed_naive_backslashify"`
14966747b715Smrg    else
14976747b715Smrg      func_convert_core_file_wine_to_w32_result=
14986747b715Smrg    fi
14996747b715Smrg  fi
15006747b715Smrg}
15016747b715Smrg# end: func_convert_core_file_wine_to_w32
15026747b715Smrg
15036747b715Smrg
15046747b715Smrg# func_convert_core_path_wine_to_w32 ARG
15056747b715Smrg# Helper function used by path conversion functions when $build is *nix, and
15066747b715Smrg# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
15076747b715Smrg# configured wine environment available, with the winepath program in $build's
15086747b715Smrg# $PATH. Assumes ARG has no leading or trailing path separator characters.
15096747b715Smrg#
15106747b715Smrg# ARG is path to be converted from $build format to win32.
15116747b715Smrg# Result is available in $func_convert_core_path_wine_to_w32_result.
15126747b715Smrg# Unconvertible file (directory) names in ARG are skipped; if no directory names
15136747b715Smrg# are convertible, then the result may be empty.
15146747b715Smrgfunc_convert_core_path_wine_to_w32 ()
15156747b715Smrg{
15166747b715Smrg  $opt_debug
15176747b715Smrg  # unfortunately, winepath doesn't convert paths, only file names
15186747b715Smrg  func_convert_core_path_wine_to_w32_result=""
15196747b715Smrg  if test -n "$1"; then
15206747b715Smrg    oldIFS=$IFS
15216747b715Smrg    IFS=:
15226747b715Smrg    for func_convert_core_path_wine_to_w32_f in $1; do
15236747b715Smrg      IFS=$oldIFS
15246747b715Smrg      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
15256747b715Smrg      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
15266747b715Smrg        if test -z "$func_convert_core_path_wine_to_w32_result"; then
15276747b715Smrg          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
15286747b715Smrg        else
15296747b715Smrg          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
15306747b715Smrg        fi
15316747b715Smrg      fi
15326747b715Smrg    done
15336747b715Smrg    IFS=$oldIFS
15346747b715Smrg  fi
15356747b715Smrg}
15366747b715Smrg# end: func_convert_core_path_wine_to_w32
15376747b715Smrg
15386747b715Smrg
15396747b715Smrg# func_cygpath ARGS...
15406747b715Smrg# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
15416747b715Smrg# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
15426747b715Smrg# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
15436747b715Smrg# (2), returns the Cygwin file name or path in func_cygpath_result (input
15446747b715Smrg# file name or path is assumed to be in w32 format, as previously converted
15456747b715Smrg# from $build's *nix or MSYS format). In case (3), returns the w32 file name
15466747b715Smrg# or path in func_cygpath_result (input file name or path is assumed to be in
15476747b715Smrg# Cygwin format). Returns an empty string on error.
15486747b715Smrg#
15496747b715Smrg# ARGS are passed to cygpath, with the last one being the file name or path to
15506747b715Smrg# be converted.
15516747b715Smrg#
15526747b715Smrg# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
15536747b715Smrg# environment variable; do not put it in $PATH.
15546747b715Smrgfunc_cygpath ()
15556747b715Smrg{
15566747b715Smrg  $opt_debug
15576747b715Smrg  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
15586747b715Smrg    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
15596747b715Smrg    if test "$?" -ne 0; then
15606747b715Smrg      # on failure, ensure result is empty
15616747b715Smrg      func_cygpath_result=
15626747b715Smrg    fi
15636747b715Smrg  else
15646747b715Smrg    func_cygpath_result=
15656747b715Smrg    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
15666747b715Smrg  fi
15676747b715Smrg}
15686747b715Smrg#end: func_cygpath
15696747b715Smrg
15706747b715Smrg
15716747b715Smrg# func_convert_core_msys_to_w32 ARG
15726747b715Smrg# Convert file name or path ARG from MSYS format to w32 format.  Return
15736747b715Smrg# result in func_convert_core_msys_to_w32_result.
15746747b715Smrgfunc_convert_core_msys_to_w32 ()
15756747b715Smrg{
15766747b715Smrg  $opt_debug
15776747b715Smrg  # awkward: cmd appends spaces to result
15786747b715Smrg  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
15796747b715Smrg    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
15806747b715Smrg}
15816747b715Smrg#end: func_convert_core_msys_to_w32
15826747b715Smrg
15836747b715Smrg
15846747b715Smrg# func_convert_file_check ARG1 ARG2
15856747b715Smrg# Verify that ARG1 (a file name in $build format) was converted to $host
15866747b715Smrg# format in ARG2. Otherwise, emit an error message, but continue (resetting
15876747b715Smrg# func_to_host_file_result to ARG1).
15886747b715Smrgfunc_convert_file_check ()
15896747b715Smrg{
15906747b715Smrg  $opt_debug
15916747b715Smrg  if test -z "$2" && test -n "$1" ; then
15926747b715Smrg    func_error "Could not determine host file name corresponding to"
15936747b715Smrg    func_error "  \`$1'"
15946747b715Smrg    func_error "Continuing, but uninstalled executables may not work."
15956747b715Smrg    # Fallback:
15966747b715Smrg    func_to_host_file_result="$1"
15976747b715Smrg  fi
15986747b715Smrg}
15996747b715Smrg# end func_convert_file_check
16006747b715Smrg
16016747b715Smrg
16026747b715Smrg# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
16036747b715Smrg# Verify that FROM_PATH (a path in $build format) was converted to $host
16046747b715Smrg# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
16056747b715Smrg# func_to_host_file_result to a simplistic fallback value (see below).
16066747b715Smrgfunc_convert_path_check ()
16076747b715Smrg{
16086747b715Smrg  $opt_debug
16096747b715Smrg  if test -z "$4" && test -n "$3"; then
16106747b715Smrg    func_error "Could not determine the host path corresponding to"
16116747b715Smrg    func_error "  \`$3'"
16126747b715Smrg    func_error "Continuing, but uninstalled executables may not work."
16136747b715Smrg    # Fallback.  This is a deliberately simplistic "conversion" and
16146747b715Smrg    # should not be "improved".  See libtool.info.
16156747b715Smrg    if test "x$1" != "x$2"; then
16166747b715Smrg      lt_replace_pathsep_chars="s|$1|$2|g"
16176747b715Smrg      func_to_host_path_result=`echo "$3" |
16186747b715Smrg        $SED -e "$lt_replace_pathsep_chars"`
16196747b715Smrg    else
16206747b715Smrg      func_to_host_path_result="$3"
16216747b715Smrg    fi
16226747b715Smrg  fi
16236747b715Smrg}
16246747b715Smrg# end func_convert_path_check
16256747b715Smrg
16266747b715Smrg
16276747b715Smrg# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
16286747b715Smrg# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
16296747b715Smrg# and appending REPL if ORIG matches BACKPAT.
16306747b715Smrgfunc_convert_path_front_back_pathsep ()
16316747b715Smrg{
16326747b715Smrg  $opt_debug
16336747b715Smrg  case $4 in
16346747b715Smrg  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
16356747b715Smrg    ;;
16366747b715Smrg  esac
16376747b715Smrg  case $4 in
16386747b715Smrg  $2 ) func_append func_to_host_path_result "$3"
16396747b715Smrg    ;;
16406747b715Smrg  esac
16416747b715Smrg}
16426747b715Smrg# end func_convert_path_front_back_pathsep
16436747b715Smrg
16446747b715Smrg
16456747b715Smrg##################################################
16466747b715Smrg# $build to $host FILE NAME CONVERSION FUNCTIONS #
16476747b715Smrg##################################################
16486747b715Smrg# invoked via `$to_host_file_cmd ARG'
16496747b715Smrg#
16506747b715Smrg# In each case, ARG is the path to be converted from $build to $host format.
16516747b715Smrg# Result will be available in $func_to_host_file_result.
16526747b715Smrg
16536747b715Smrg
16546747b715Smrg# func_to_host_file ARG
16556747b715Smrg# Converts the file name ARG from $build format to $host format. Return result
16566747b715Smrg# in func_to_host_file_result.
16576747b715Smrgfunc_to_host_file ()
16586747b715Smrg{
16596747b715Smrg  $opt_debug
16606747b715Smrg  $to_host_file_cmd "$1"
16616747b715Smrg}
16626747b715Smrg# end func_to_host_file
16636747b715Smrg
16646747b715Smrg
16656747b715Smrg# func_to_tool_file ARG LAZY
16666747b715Smrg# converts the file name ARG from $build format to toolchain format. Return
16676747b715Smrg# result in func_to_tool_file_result.  If the conversion in use is listed
16686747b715Smrg# in (the comma separated) LAZY, no conversion takes place.
16696747b715Smrgfunc_to_tool_file ()
16706747b715Smrg{
16716747b715Smrg  $opt_debug
16726747b715Smrg  case ,$2, in
16736747b715Smrg    *,"$to_tool_file_cmd",*)
16746747b715Smrg      func_to_tool_file_result=$1
16756747b715Smrg      ;;
16766747b715Smrg    *)
16776747b715Smrg      $to_tool_file_cmd "$1"
16786747b715Smrg      func_to_tool_file_result=$func_to_host_file_result
16796747b715Smrg      ;;
16806747b715Smrg  esac
16816747b715Smrg}
16826747b715Smrg# end func_to_tool_file
16836747b715Smrg
16846747b715Smrg
16856747b715Smrg# func_convert_file_noop ARG
16866747b715Smrg# Copy ARG to func_to_host_file_result.
16876747b715Smrgfunc_convert_file_noop ()
16886747b715Smrg{
16896747b715Smrg  func_to_host_file_result="$1"
16906747b715Smrg}
16916747b715Smrg# end func_convert_file_noop
16926747b715Smrg
16936747b715Smrg
16946747b715Smrg# func_convert_file_msys_to_w32 ARG
16956747b715Smrg# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
16966747b715Smrg# conversion to w32 is not available inside the cwrapper.  Returns result in
16976747b715Smrg# func_to_host_file_result.
16986747b715Smrgfunc_convert_file_msys_to_w32 ()
16996747b715Smrg{
17006747b715Smrg  $opt_debug
17016747b715Smrg  func_to_host_file_result="$1"
17026747b715Smrg  if test -n "$1"; then
17036747b715Smrg    func_convert_core_msys_to_w32 "$1"
17046747b715Smrg    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
17056747b715Smrg  fi
17066747b715Smrg  func_convert_file_check "$1" "$func_to_host_file_result"
17076747b715Smrg}
17086747b715Smrg# end func_convert_file_msys_to_w32
17096747b715Smrg
17106747b715Smrg
17116747b715Smrg# func_convert_file_cygwin_to_w32 ARG
17126747b715Smrg# Convert file name ARG from Cygwin to w32 format.  Returns result in
17136747b715Smrg# func_to_host_file_result.
17146747b715Smrgfunc_convert_file_cygwin_to_w32 ()
17156747b715Smrg{
17166747b715Smrg  $opt_debug
17176747b715Smrg  func_to_host_file_result="$1"
17186747b715Smrg  if test -n "$1"; then
17196747b715Smrg    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
17206747b715Smrg    # LT_CYGPATH in this case.
17216747b715Smrg    func_to_host_file_result=`cygpath -m "$1"`
17226747b715Smrg  fi
17236747b715Smrg  func_convert_file_check "$1" "$func_to_host_file_result"
17246747b715Smrg}
17256747b715Smrg# end func_convert_file_cygwin_to_w32
17266747b715Smrg
17276747b715Smrg
17286747b715Smrg# func_convert_file_nix_to_w32 ARG
17296747b715Smrg# Convert file name ARG from *nix to w32 format.  Requires a wine environment
17306747b715Smrg# and a working winepath. Returns result in func_to_host_file_result.
17316747b715Smrgfunc_convert_file_nix_to_w32 ()
17326747b715Smrg{
17336747b715Smrg  $opt_debug
17346747b715Smrg  func_to_host_file_result="$1"
17356747b715Smrg  if test -n "$1"; then
17366747b715Smrg    func_convert_core_file_wine_to_w32 "$1"
17376747b715Smrg    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
17386747b715Smrg  fi
17396747b715Smrg  func_convert_file_check "$1" "$func_to_host_file_result"
17406747b715Smrg}
17416747b715Smrg# end func_convert_file_nix_to_w32
17426747b715Smrg
17436747b715Smrg
17446747b715Smrg# func_convert_file_msys_to_cygwin ARG
17456747b715Smrg# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
17466747b715Smrg# Returns result in func_to_host_file_result.
17476747b715Smrgfunc_convert_file_msys_to_cygwin ()
17486747b715Smrg{
17496747b715Smrg  $opt_debug
17506747b715Smrg  func_to_host_file_result="$1"
17516747b715Smrg  if test -n "$1"; then
17526747b715Smrg    func_convert_core_msys_to_w32 "$1"
17536747b715Smrg    func_cygpath -u "$func_convert_core_msys_to_w32_result"
17546747b715Smrg    func_to_host_file_result="$func_cygpath_result"
17556747b715Smrg  fi
17566747b715Smrg  func_convert_file_check "$1" "$func_to_host_file_result"
17576747b715Smrg}
17586747b715Smrg# end func_convert_file_msys_to_cygwin
17596747b715Smrg
17606747b715Smrg
17616747b715Smrg# func_convert_file_nix_to_cygwin ARG
17626747b715Smrg# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
17636747b715Smrg# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
17646747b715Smrg# in func_to_host_file_result.
17656747b715Smrgfunc_convert_file_nix_to_cygwin ()
17666747b715Smrg{
17676747b715Smrg  $opt_debug
17686747b715Smrg  func_to_host_file_result="$1"
17696747b715Smrg  if test -n "$1"; then
17706747b715Smrg    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
17716747b715Smrg    func_convert_core_file_wine_to_w32 "$1"
17726747b715Smrg    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
17736747b715Smrg    func_to_host_file_result="$func_cygpath_result"
17746747b715Smrg  fi
17756747b715Smrg  func_convert_file_check "$1" "$func_to_host_file_result"
17766747b715Smrg}
17776747b715Smrg# end func_convert_file_nix_to_cygwin
17786747b715Smrg
17796747b715Smrg
17806747b715Smrg#############################################
17816747b715Smrg# $build to $host PATH CONVERSION FUNCTIONS #
17826747b715Smrg#############################################
17836747b715Smrg# invoked via `$to_host_path_cmd ARG'
17846747b715Smrg#
17856747b715Smrg# In each case, ARG is the path to be converted from $build to $host format.
17866747b715Smrg# The result will be available in $func_to_host_path_result.
17876747b715Smrg#
17886747b715Smrg# Path separators are also converted from $build format to $host format.  If
17896747b715Smrg# ARG begins or ends with a path separator character, it is preserved (but
17906747b715Smrg# converted to $host format) on output.
17916747b715Smrg#
17926747b715Smrg# All path conversion functions are named using the following convention:
17936747b715Smrg#   file name conversion function    : func_convert_file_X_to_Y ()
17946747b715Smrg#   path conversion function         : func_convert_path_X_to_Y ()
17956747b715Smrg# where, for any given $build/$host combination the 'X_to_Y' value is the
17966747b715Smrg# same.  If conversion functions are added for new $build/$host combinations,
17976747b715Smrg# the two new functions must follow this pattern, or func_init_to_host_path_cmd
17986747b715Smrg# will break.
17996747b715Smrg
18006747b715Smrg
18016747b715Smrg# func_init_to_host_path_cmd
18026747b715Smrg# Ensures that function "pointer" variable $to_host_path_cmd is set to the
18036747b715Smrg# appropriate value, based on the value of $to_host_file_cmd.
18046747b715Smrgto_host_path_cmd=
18056747b715Smrgfunc_init_to_host_path_cmd ()
18066747b715Smrg{
18076747b715Smrg  $opt_debug
18086747b715Smrg  if test -z "$to_host_path_cmd"; then
18096747b715Smrg    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
18106747b715Smrg    to_host_path_cmd="func_convert_path_${func_stripname_result}"
18116747b715Smrg  fi
18126747b715Smrg}
18136747b715Smrg
18146747b715Smrg
18156747b715Smrg# func_to_host_path ARG
18166747b715Smrg# Converts the path ARG from $build format to $host format. Return result
18176747b715Smrg# in func_to_host_path_result.
18186747b715Smrgfunc_to_host_path ()
18196747b715Smrg{
18206747b715Smrg  $opt_debug
18216747b715Smrg  func_init_to_host_path_cmd
18226747b715Smrg  $to_host_path_cmd "$1"
18236747b715Smrg}
18246747b715Smrg# end func_to_host_path
18256747b715Smrg
18266747b715Smrg
18276747b715Smrg# func_convert_path_noop ARG
18286747b715Smrg# Copy ARG to func_to_host_path_result.
18296747b715Smrgfunc_convert_path_noop ()
18306747b715Smrg{
18316747b715Smrg  func_to_host_path_result="$1"
18326747b715Smrg}
18336747b715Smrg# end func_convert_path_noop
18346747b715Smrg
18356747b715Smrg
18366747b715Smrg# func_convert_path_msys_to_w32 ARG
18376747b715Smrg# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
18386747b715Smrg# conversion to w32 is not available inside the cwrapper.  Returns result in
18396747b715Smrg# func_to_host_path_result.
18406747b715Smrgfunc_convert_path_msys_to_w32 ()
18416747b715Smrg{
18426747b715Smrg  $opt_debug
18436747b715Smrg  func_to_host_path_result="$1"
18446747b715Smrg  if test -n "$1"; then
18456747b715Smrg    # Remove leading and trailing path separator characters from ARG.  MSYS
18466747b715Smrg    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
18476747b715Smrg    # and winepath ignores them completely.
18486747b715Smrg    func_stripname : : "$1"
18496747b715Smrg    func_to_host_path_tmp1=$func_stripname_result
18506747b715Smrg    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
18516747b715Smrg    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
18526747b715Smrg    func_convert_path_check : ";" \
18536747b715Smrg      "$func_to_host_path_tmp1" "$func_to_host_path_result"
18546747b715Smrg    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
18556747b715Smrg  fi
18566747b715Smrg}
18576747b715Smrg# end func_convert_path_msys_to_w32
18586747b715Smrg
18596747b715Smrg
18606747b715Smrg# func_convert_path_cygwin_to_w32 ARG
18616747b715Smrg# Convert path ARG from Cygwin to w32 format.  Returns result in
18626747b715Smrg# func_to_host_file_result.
18636747b715Smrgfunc_convert_path_cygwin_to_w32 ()
18646747b715Smrg{
18656747b715Smrg  $opt_debug
18666747b715Smrg  func_to_host_path_result="$1"
18676747b715Smrg  if test -n "$1"; then
18686747b715Smrg    # See func_convert_path_msys_to_w32:
18696747b715Smrg    func_stripname : : "$1"
18706747b715Smrg    func_to_host_path_tmp1=$func_stripname_result
18716747b715Smrg    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
18726747b715Smrg    func_convert_path_check : ";" \
18736747b715Smrg      "$func_to_host_path_tmp1" "$func_to_host_path_result"
18746747b715Smrg    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
18756747b715Smrg  fi
18766747b715Smrg}
18776747b715Smrg# end func_convert_path_cygwin_to_w32
18786747b715Smrg
18796747b715Smrg
18806747b715Smrg# func_convert_path_nix_to_w32 ARG
18816747b715Smrg# Convert path ARG from *nix to w32 format.  Requires a wine environment and
18826747b715Smrg# a working winepath.  Returns result in func_to_host_file_result.
18836747b715Smrgfunc_convert_path_nix_to_w32 ()
18846747b715Smrg{
18856747b715Smrg  $opt_debug
18866747b715Smrg  func_to_host_path_result="$1"
18876747b715Smrg  if test -n "$1"; then
18886747b715Smrg    # See func_convert_path_msys_to_w32:
18896747b715Smrg    func_stripname : : "$1"
18906747b715Smrg    func_to_host_path_tmp1=$func_stripname_result
18916747b715Smrg    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
18926747b715Smrg    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
18936747b715Smrg    func_convert_path_check : ";" \
18946747b715Smrg      "$func_to_host_path_tmp1" "$func_to_host_path_result"
18956747b715Smrg    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
18966747b715Smrg  fi
18976747b715Smrg}
18986747b715Smrg# end func_convert_path_nix_to_w32
18996747b715Smrg
19006747b715Smrg
19016747b715Smrg# func_convert_path_msys_to_cygwin ARG
19026747b715Smrg# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
19036747b715Smrg# Returns result in func_to_host_file_result.
19046747b715Smrgfunc_convert_path_msys_to_cygwin ()
19056747b715Smrg{
19066747b715Smrg  $opt_debug
19076747b715Smrg  func_to_host_path_result="$1"
19086747b715Smrg  if test -n "$1"; then
19096747b715Smrg    # See func_convert_path_msys_to_w32:
19106747b715Smrg    func_stripname : : "$1"
19116747b715Smrg    func_to_host_path_tmp1=$func_stripname_result
19126747b715Smrg    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
19136747b715Smrg    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
19146747b715Smrg    func_to_host_path_result="$func_cygpath_result"
19156747b715Smrg    func_convert_path_check : : \
19166747b715Smrg      "$func_to_host_path_tmp1" "$func_to_host_path_result"
19176747b715Smrg    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
19186747b715Smrg  fi
19196747b715Smrg}
19206747b715Smrg# end func_convert_path_msys_to_cygwin
19216747b715Smrg
19226747b715Smrg
19236747b715Smrg# func_convert_path_nix_to_cygwin ARG
19246747b715Smrg# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
19256747b715Smrg# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
19266747b715Smrg# func_to_host_file_result.
19276747b715Smrgfunc_convert_path_nix_to_cygwin ()
19286747b715Smrg{
19296747b715Smrg  $opt_debug
19306747b715Smrg  func_to_host_path_result="$1"
19316747b715Smrg  if test -n "$1"; then
19326747b715Smrg    # Remove leading and trailing path separator characters from
19336747b715Smrg    # ARG. msys behavior is inconsistent here, cygpath turns them
19346747b715Smrg    # into '.;' and ';.', and winepath ignores them completely.
19356747b715Smrg    func_stripname : : "$1"
19366747b715Smrg    func_to_host_path_tmp1=$func_stripname_result
19376747b715Smrg    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
19386747b715Smrg    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
19396747b715Smrg    func_to_host_path_result="$func_cygpath_result"
19406747b715Smrg    func_convert_path_check : : \
19416747b715Smrg      "$func_to_host_path_tmp1" "$func_to_host_path_result"
19426747b715Smrg    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
19436747b715Smrg  fi
19446747b715Smrg}
19456747b715Smrg# end func_convert_path_nix_to_cygwin
19466747b715Smrg
19476747b715Smrg
19484642e01fSmrg# func_mode_compile arg...
19494642e01fSmrgfunc_mode_compile ()
19504642e01fSmrg{
19514642e01fSmrg    $opt_debug
19524642e01fSmrg    # Get the compilation command and the source file.
19534642e01fSmrg    base_compile=
19544642e01fSmrg    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
19554642e01fSmrg    suppress_opt=yes
19564642e01fSmrg    suppress_output=
19574642e01fSmrg    arg_mode=normal
19584642e01fSmrg    libobj=
19594642e01fSmrg    later=
19604642e01fSmrg    pie_flag=
19614642e01fSmrg
19624642e01fSmrg    for arg
19634642e01fSmrg    do
19644642e01fSmrg      case $arg_mode in
19654642e01fSmrg      arg  )
19664642e01fSmrg	# do not "continue".  Instead, add this to base_compile
19674642e01fSmrg	lastarg="$arg"
19684642e01fSmrg	arg_mode=normal
19694642e01fSmrg	;;
19704642e01fSmrg
19714642e01fSmrg      target )
19724642e01fSmrg	libobj="$arg"
19734642e01fSmrg	arg_mode=normal
19744642e01fSmrg	continue
19754642e01fSmrg	;;
19764642e01fSmrg
19774642e01fSmrg      normal )
19784642e01fSmrg	# Accept any command-line options.
19794642e01fSmrg	case $arg in
19804642e01fSmrg	-o)
19814642e01fSmrg	  test -n "$libobj" && \
19824642e01fSmrg	    func_fatal_error "you cannot specify \`-o' more than once"
19834642e01fSmrg	  arg_mode=target
19844642e01fSmrg	  continue
19854642e01fSmrg	  ;;
19864642e01fSmrg
19874642e01fSmrg	-pie | -fpie | -fPIE)
19886747b715Smrg          func_append pie_flag " $arg"
19894642e01fSmrg	  continue
19904642e01fSmrg	  ;;
19914642e01fSmrg
19924642e01fSmrg	-shared | -static | -prefer-pic | -prefer-non-pic)
19936747b715Smrg	  func_append later " $arg"
19944642e01fSmrg	  continue
19954642e01fSmrg	  ;;
19964642e01fSmrg
19974642e01fSmrg	-no-suppress)
199805b261ecSmrg	  suppress_opt=no
199905b261ecSmrg	  continue
200005b261ecSmrg	  ;;
200105b261ecSmrg
200205b261ecSmrg	-Xcompiler)
200305b261ecSmrg	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
200405b261ecSmrg	  continue      #  The current "srcfile" will either be retained or
200505b261ecSmrg	  ;;            #  replaced later.  I would guess that would be a bug.
200605b261ecSmrg
200705b261ecSmrg	-Wc,*)
20084642e01fSmrg	  func_stripname '-Wc,' '' "$arg"
20094642e01fSmrg	  args=$func_stripname_result
201005b261ecSmrg	  lastarg=
201105b261ecSmrg	  save_ifs="$IFS"; IFS=','
20124642e01fSmrg	  for arg in $args; do
201305b261ecSmrg	    IFS="$save_ifs"
20146747b715Smrg	    func_append_quoted lastarg "$arg"
201505b261ecSmrg	  done
201605b261ecSmrg	  IFS="$save_ifs"
20174642e01fSmrg	  func_stripname ' ' '' "$lastarg"
20184642e01fSmrg	  lastarg=$func_stripname_result
201905b261ecSmrg
202005b261ecSmrg	  # Add the arguments to base_compile.
20216747b715Smrg	  func_append base_compile " $lastarg"
202205b261ecSmrg	  continue
202305b261ecSmrg	  ;;
202405b261ecSmrg
20254642e01fSmrg	*)
202605b261ecSmrg	  # Accept the current argument as the source file.
202705b261ecSmrg	  # The previous "srcfile" becomes the current argument.
202805b261ecSmrg	  #
202905b261ecSmrg	  lastarg="$srcfile"
203005b261ecSmrg	  srcfile="$arg"
203105b261ecSmrg	  ;;
203205b261ecSmrg	esac  #  case $arg
203305b261ecSmrg	;;
203405b261ecSmrg      esac    #  case $arg_mode
203505b261ecSmrg
203605b261ecSmrg      # Aesthetically quote the previous argument.
20376747b715Smrg      func_append_quoted base_compile "$lastarg"
203805b261ecSmrg    done # for arg
203905b261ecSmrg
204005b261ecSmrg    case $arg_mode in
204105b261ecSmrg    arg)
20424642e01fSmrg      func_fatal_error "you must specify an argument for -Xcompile"
204305b261ecSmrg      ;;
204405b261ecSmrg    target)
20454642e01fSmrg      func_fatal_error "you must specify a target with \`-o'"
204605b261ecSmrg      ;;
204705b261ecSmrg    *)
204805b261ecSmrg      # Get the name of the library object.
20494642e01fSmrg      test -z "$libobj" && {
20504642e01fSmrg	func_basename "$srcfile"
20514642e01fSmrg	libobj="$func_basename_result"
20524642e01fSmrg      }
205305b261ecSmrg      ;;
205405b261ecSmrg    esac
205505b261ecSmrg
205605b261ecSmrg    # Recognize several different file suffixes.
205705b261ecSmrg    # If the user specifies -o file.o, it is replaced with file.lo
205805b261ecSmrg    case $libobj in
20594642e01fSmrg    *.[cCFSifmso] | \
20604642e01fSmrg    *.ada | *.adb | *.ads | *.asm | \
20614642e01fSmrg    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
20626747b715Smrg    *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
20634642e01fSmrg      func_xform "$libobj"
20644642e01fSmrg      libobj=$func_xform_result
20654642e01fSmrg      ;;
206605b261ecSmrg    esac
206705b261ecSmrg
206805b261ecSmrg    case $libobj in
20694642e01fSmrg    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
207005b261ecSmrg    *)
20714642e01fSmrg      func_fatal_error "cannot determine name of library object from \`$libobj'"
207205b261ecSmrg      ;;
207305b261ecSmrg    esac
207405b261ecSmrg
207505b261ecSmrg    func_infer_tag $base_compile
207605b261ecSmrg
207705b261ecSmrg    for arg in $later; do
207805b261ecSmrg      case $arg in
20794642e01fSmrg      -shared)
20804642e01fSmrg	test "$build_libtool_libs" != yes && \
20814642e01fSmrg	  func_fatal_configuration "can not build a shared library"
20824642e01fSmrg	build_old_libs=no
20834642e01fSmrg	continue
20844642e01fSmrg	;;
20854642e01fSmrg
208605b261ecSmrg      -static)
20874642e01fSmrg	build_libtool_libs=no
208805b261ecSmrg	build_old_libs=yes
208905b261ecSmrg	continue
209005b261ecSmrg	;;
209105b261ecSmrg
209205b261ecSmrg      -prefer-pic)
209305b261ecSmrg	pic_mode=yes
209405b261ecSmrg	continue
209505b261ecSmrg	;;
209605b261ecSmrg
209705b261ecSmrg      -prefer-non-pic)
209805b261ecSmrg	pic_mode=no
209905b261ecSmrg	continue
210005b261ecSmrg	;;
210105b261ecSmrg      esac
210205b261ecSmrg    done
210305b261ecSmrg
21044642e01fSmrg    func_quote_for_eval "$libobj"
21054642e01fSmrg    test "X$libobj" != "X$func_quote_for_eval_result" \
21064642e01fSmrg      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
21074642e01fSmrg      && func_warning "libobj name \`$libobj' may not contain shell special characters."
21084642e01fSmrg    func_dirname_and_basename "$obj" "/" ""
21094642e01fSmrg    objname="$func_basename_result"
21104642e01fSmrg    xdir="$func_dirname_result"
211105b261ecSmrg    lobj=${xdir}$objdir/$objname
211205b261ecSmrg
21134642e01fSmrg    test -z "$base_compile" && \
21144642e01fSmrg      func_fatal_help "you must specify a compilation command"
211505b261ecSmrg
211605b261ecSmrg    # Delete any leftover library objects.
211705b261ecSmrg    if test "$build_old_libs" = yes; then
211805b261ecSmrg      removelist="$obj $lobj $libobj ${libobj}T"
211905b261ecSmrg    else
212005b261ecSmrg      removelist="$lobj $libobj ${libobj}T"
212105b261ecSmrg    fi
212205b261ecSmrg
212305b261ecSmrg    # On Cygwin there's no "real" PIC flag so we must build both object types
212405b261ecSmrg    case $host_os in
21254642e01fSmrg    cygwin* | mingw* | pw32* | os2* | cegcc*)
212605b261ecSmrg      pic_mode=default
212705b261ecSmrg      ;;
212805b261ecSmrg    esac
212905b261ecSmrg    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
213005b261ecSmrg      # non-PIC code in shared libraries is not supported
213105b261ecSmrg      pic_mode=default
213205b261ecSmrg    fi
213305b261ecSmrg
213405b261ecSmrg    # Calculate the filename of the output object if compiler does
213505b261ecSmrg    # not support -o with -c
213605b261ecSmrg    if test "$compiler_c_o" = no; then
21376747b715Smrg      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
213805b261ecSmrg      lockfile="$output_obj.lock"
213905b261ecSmrg    else
214005b261ecSmrg      output_obj=
214105b261ecSmrg      need_locks=no
214205b261ecSmrg      lockfile=
214305b261ecSmrg    fi
214405b261ecSmrg
214505b261ecSmrg    # Lock this critical section if it is needed
214605b261ecSmrg    # We use this script file to make the link, it avoids creating a new file
214705b261ecSmrg    if test "$need_locks" = yes; then
21484642e01fSmrg      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
21494642e01fSmrg	func_echo "Waiting for $lockfile to be removed"
215005b261ecSmrg	sleep 2
215105b261ecSmrg      done
215205b261ecSmrg    elif test "$need_locks" = warn; then
215305b261ecSmrg      if test -f "$lockfile"; then
21544642e01fSmrg	$ECHO "\
215505b261ecSmrg*** ERROR, $lockfile exists and contains:
215605b261ecSmrg`cat $lockfile 2>/dev/null`
215705b261ecSmrg
215805b261ecSmrgThis indicates that another process is trying to use the same
215905b261ecSmrgtemporary object file, and libtool could not work around it because
216005b261ecSmrgyour compiler does not support \`-c' and \`-o' together.  If you
216105b261ecSmrgrepeat this compilation, it may succeed, by chance, but you had better
216205b261ecSmrgavoid parallel builds (make -j) in this platform, or get a better
216305b261ecSmrgcompiler."
216405b261ecSmrg
21654642e01fSmrg	$opt_dry_run || $RM $removelist
216605b261ecSmrg	exit $EXIT_FAILURE
216705b261ecSmrg      fi
21686747b715Smrg      func_append removelist " $output_obj"
21694642e01fSmrg      $ECHO "$srcfile" > "$lockfile"
217005b261ecSmrg    fi
217105b261ecSmrg
21724642e01fSmrg    $opt_dry_run || $RM $removelist
21736747b715Smrg    func_append removelist " $lockfile"
21744642e01fSmrg    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
21754642e01fSmrg
21766747b715Smrg    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
21776747b715Smrg    srcfile=$func_to_tool_file_result
21784642e01fSmrg    func_quote_for_eval "$srcfile"
21794642e01fSmrg    qsrcfile=$func_quote_for_eval_result
218005b261ecSmrg
218105b261ecSmrg    # Only build a PIC object if we are building libtool libraries.
218205b261ecSmrg    if test "$build_libtool_libs" = yes; then
218305b261ecSmrg      # Without this assignment, base_compile gets emptied.
218405b261ecSmrg      fbsd_hideous_sh_bug=$base_compile
218505b261ecSmrg
218605b261ecSmrg      if test "$pic_mode" != no; then
218705b261ecSmrg	command="$base_compile $qsrcfile $pic_flag"
218805b261ecSmrg      else
218905b261ecSmrg	# Don't build PIC code
219005b261ecSmrg	command="$base_compile $qsrcfile"
219105b261ecSmrg      fi
219205b261ecSmrg
21934642e01fSmrg      func_mkdir_p "$xdir$objdir"
219405b261ecSmrg
219505b261ecSmrg      if test -z "$output_obj"; then
219605b261ecSmrg	# Place PIC objects in $objdir
21976747b715Smrg	func_append command " -o $lobj"
219805b261ecSmrg      fi
219905b261ecSmrg
22004642e01fSmrg      func_show_eval_locale "$command"	\
22014642e01fSmrg          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
220205b261ecSmrg
220305b261ecSmrg      if test "$need_locks" = warn &&
220405b261ecSmrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
22054642e01fSmrg	$ECHO "\
220605b261ecSmrg*** ERROR, $lockfile contains:
220705b261ecSmrg`cat $lockfile 2>/dev/null`
220805b261ecSmrg
220905b261ecSmrgbut it should contain:
221005b261ecSmrg$srcfile
221105b261ecSmrg
221205b261ecSmrgThis indicates that another process is trying to use the same
221305b261ecSmrgtemporary object file, and libtool could not work around it because
221405b261ecSmrgyour compiler does not support \`-c' and \`-o' together.  If you
221505b261ecSmrgrepeat this compilation, it may succeed, by chance, but you had better
221605b261ecSmrgavoid parallel builds (make -j) in this platform, or get a better
221705b261ecSmrgcompiler."
221805b261ecSmrg
22194642e01fSmrg	$opt_dry_run || $RM $removelist
222005b261ecSmrg	exit $EXIT_FAILURE
222105b261ecSmrg      fi
222205b261ecSmrg
222305b261ecSmrg      # Just move the object if needed, then go on to compile the next one
222405b261ecSmrg      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
22254642e01fSmrg	func_show_eval '$MV "$output_obj" "$lobj"' \
22264642e01fSmrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
222705b261ecSmrg      fi
222805b261ecSmrg
222905b261ecSmrg      # Allow error messages only from the first compilation.
223005b261ecSmrg      if test "$suppress_opt" = yes; then
22314642e01fSmrg	suppress_output=' >/dev/null 2>&1'
223205b261ecSmrg      fi
223305b261ecSmrg    fi
223405b261ecSmrg
223505b261ecSmrg    # Only build a position-dependent object if we build old libraries.
223605b261ecSmrg    if test "$build_old_libs" = yes; then
223705b261ecSmrg      if test "$pic_mode" != yes; then
223805b261ecSmrg	# Don't build PIC code
22394642e01fSmrg	command="$base_compile $qsrcfile$pie_flag"
224005b261ecSmrg      else
224105b261ecSmrg	command="$base_compile $qsrcfile $pic_flag"
224205b261ecSmrg      fi
224305b261ecSmrg      if test "$compiler_c_o" = yes; then
22446747b715Smrg	func_append command " -o $obj"
224505b261ecSmrg      fi
224605b261ecSmrg
224705b261ecSmrg      # Suppress compiler output if we already did a PIC compilation.
22486747b715Smrg      func_append command "$suppress_output"
22494642e01fSmrg      func_show_eval_locale "$command" \
22504642e01fSmrg        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
225105b261ecSmrg
225205b261ecSmrg      if test "$need_locks" = warn &&
225305b261ecSmrg	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
22544642e01fSmrg	$ECHO "\
225505b261ecSmrg*** ERROR, $lockfile contains:
225605b261ecSmrg`cat $lockfile 2>/dev/null`
225705b261ecSmrg
225805b261ecSmrgbut it should contain:
225905b261ecSmrg$srcfile
226005b261ecSmrg
226105b261ecSmrgThis indicates that another process is trying to use the same
226205b261ecSmrgtemporary object file, and libtool could not work around it because
226305b261ecSmrgyour compiler does not support \`-c' and \`-o' together.  If you
226405b261ecSmrgrepeat this compilation, it may succeed, by chance, but you had better
226505b261ecSmrgavoid parallel builds (make -j) in this platform, or get a better
226605b261ecSmrgcompiler."
226705b261ecSmrg
22684642e01fSmrg	$opt_dry_run || $RM $removelist
226905b261ecSmrg	exit $EXIT_FAILURE
227005b261ecSmrg      fi
227105b261ecSmrg
227205b261ecSmrg      # Just move the object if needed
227305b261ecSmrg      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
22744642e01fSmrg	func_show_eval '$MV "$output_obj" "$obj"' \
22754642e01fSmrg	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
227605b261ecSmrg      fi
227705b261ecSmrg    fi
227805b261ecSmrg
22794642e01fSmrg    $opt_dry_run || {
22804642e01fSmrg      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
228105b261ecSmrg
22824642e01fSmrg      # Unlock the critical section if it was locked
22834642e01fSmrg      if test "$need_locks" != no; then
22844642e01fSmrg	removelist=$lockfile
22854642e01fSmrg        $RM "$lockfile"
22864642e01fSmrg      fi
22874642e01fSmrg    }
228805b261ecSmrg
228905b261ecSmrg    exit $EXIT_SUCCESS
22904642e01fSmrg}
229105b261ecSmrg
22924642e01fSmrg$opt_help || {
22936747b715Smrg  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
22944642e01fSmrg}
229505b261ecSmrg
22964642e01fSmrgfunc_mode_help ()
22974642e01fSmrg{
22984642e01fSmrg    # We need to display help for each of the modes.
22996747b715Smrg    case $opt_mode in
23004642e01fSmrg      "")
23014642e01fSmrg        # Generic help is extracted from the usage comments
23024642e01fSmrg        # at the start of this file.
23034642e01fSmrg        func_help
23044642e01fSmrg        ;;
230505b261ecSmrg
23064642e01fSmrg      clean)
23074642e01fSmrg        $ECHO \
23084642e01fSmrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
230905b261ecSmrg
23104642e01fSmrgRemove files from the build directory.
231105b261ecSmrg
23124642e01fSmrgRM is the name of the program to use to delete files associated with each FILE
23134642e01fSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
23144642e01fSmrgto RM.
231505b261ecSmrg
23164642e01fSmrgIf FILE is a libtool library, object or program, all the files associated
23174642e01fSmrgwith it are deleted. Otherwise, only FILE itself is deleted using RM."
23184642e01fSmrg        ;;
231905b261ecSmrg
23204642e01fSmrg      compile)
23214642e01fSmrg      $ECHO \
23224642e01fSmrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
232305b261ecSmrg
23244642e01fSmrgCompile a source file into a libtool library object.
232505b261ecSmrg
23264642e01fSmrgThis mode accepts the following additional options:
232705b261ecSmrg
23284642e01fSmrg  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
23294642e01fSmrg  -no-suppress      do not suppress compiler output for multiple passes
23306747b715Smrg  -prefer-pic       try to build PIC objects only
23316747b715Smrg  -prefer-non-pic   try to build non-PIC objects only
23324642e01fSmrg  -shared           do not build a \`.o' file suitable for static linking
23334642e01fSmrg  -static           only build a \`.o' file suitable for static linking
23346747b715Smrg  -Wc,FLAG          pass FLAG directly to the compiler
233505b261ecSmrg
23364642e01fSmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
23374642e01fSmrgfrom the given SOURCEFILE.
233805b261ecSmrg
23394642e01fSmrgThe output file name is determined by removing the directory component from
23404642e01fSmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the
23414642e01fSmrglibrary object suffix, \`.lo'."
23424642e01fSmrg        ;;
234305b261ecSmrg
23444642e01fSmrg      execute)
23454642e01fSmrg        $ECHO \
23464642e01fSmrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
234705b261ecSmrg
23484642e01fSmrgAutomatically set library path, then run a program.
234905b261ecSmrg
23504642e01fSmrgThis mode accepts the following additional options:
235105b261ecSmrg
23524642e01fSmrg  -dlopen FILE      add the directory containing FILE to the library path
235305b261ecSmrg
23544642e01fSmrgThis mode sets the library path environment variable according to \`-dlopen'
23554642e01fSmrgflags.
235605b261ecSmrg
23574642e01fSmrgIf any of the ARGS are libtool executable wrappers, then they are translated
23584642e01fSmrginto their corresponding uninstalled binary, and any of their required library
23594642e01fSmrgdirectories are added to the library path.
236005b261ecSmrg
23614642e01fSmrgThen, COMMAND is executed, with ARGS as arguments."
23624642e01fSmrg        ;;
236305b261ecSmrg
23644642e01fSmrg      finish)
23654642e01fSmrg        $ECHO \
23664642e01fSmrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
236705b261ecSmrg
23684642e01fSmrgComplete the installation of libtool libraries.
236905b261ecSmrg
23704642e01fSmrgEach LIBDIR is a directory that contains libtool libraries.
237105b261ecSmrg
23724642e01fSmrgThe commands that this mode executes may require superuser privileges.  Use
23734642e01fSmrgthe \`--dry-run' option if you just want to see what would be executed."
23744642e01fSmrg        ;;
237505b261ecSmrg
23764642e01fSmrg      install)
23774642e01fSmrg        $ECHO \
23784642e01fSmrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
237905b261ecSmrg
23804642e01fSmrgInstall executables or libraries.
238105b261ecSmrg
23824642e01fSmrgINSTALL-COMMAND is the installation command.  The first component should be
23834642e01fSmrgeither the \`install' or \`cp' program.
238405b261ecSmrg
23854642e01fSmrgThe following components of INSTALL-COMMAND are treated specially:
238605b261ecSmrg
23876747b715Smrg  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
238805b261ecSmrg
23894642e01fSmrgThe rest of the components are interpreted as arguments to that command (only
23904642e01fSmrgBSD-compatible install options are recognized)."
23914642e01fSmrg        ;;
239205b261ecSmrg
23934642e01fSmrg      link)
23944642e01fSmrg        $ECHO \
23954642e01fSmrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
239605b261ecSmrg
23974642e01fSmrgLink object files or libraries together to form another library, or to
23984642e01fSmrgcreate an executable program.
239905b261ecSmrg
24004642e01fSmrgLINK-COMMAND is a command using the C compiler that you would use to create
24014642e01fSmrga program from several object files.
240205b261ecSmrg
24034642e01fSmrgThe following components of LINK-COMMAND are treated specially:
240405b261ecSmrg
24054642e01fSmrg  -all-static       do not do any dynamic linking at all
24064642e01fSmrg  -avoid-version    do not add a version suffix if possible
24076747b715Smrg  -bindir BINDIR    specify path to binaries directory (for systems where
24086747b715Smrg                    libraries must be found in the PATH setting at runtime)
24094642e01fSmrg  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
24104642e01fSmrg  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
24114642e01fSmrg  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
24124642e01fSmrg  -export-symbols SYMFILE
24134642e01fSmrg                    try to export only the symbols listed in SYMFILE
24144642e01fSmrg  -export-symbols-regex REGEX
24154642e01fSmrg                    try to export only the symbols matching REGEX
24164642e01fSmrg  -LLIBDIR          search LIBDIR for required installed libraries
24174642e01fSmrg  -lNAME            OUTPUT-FILE requires the installed library libNAME
24184642e01fSmrg  -module           build a library that can dlopened
24194642e01fSmrg  -no-fast-install  disable the fast-install mode
24204642e01fSmrg  -no-install       link a not-installable executable
24214642e01fSmrg  -no-undefined     declare that a library does not refer to external symbols
24224642e01fSmrg  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
24234642e01fSmrg  -objectlist FILE  Use a list of object files found in FILE to specify objects
24244642e01fSmrg  -precious-files-regex REGEX
24254642e01fSmrg                    don't remove output files matching REGEX
24264642e01fSmrg  -release RELEASE  specify package release information
24274642e01fSmrg  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
24284642e01fSmrg  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
24294642e01fSmrg  -shared           only do dynamic linking of libtool libraries
24304642e01fSmrg  -shrext SUFFIX    override the standard shared library file extension
24314642e01fSmrg  -static           do not do any dynamic linking of uninstalled libtool libraries
24324642e01fSmrg  -static-libtool-libs
24334642e01fSmrg                    do not do any dynamic linking of libtool libraries
24344642e01fSmrg  -version-info CURRENT[:REVISION[:AGE]]
24354642e01fSmrg                    specify library version info [each variable defaults to 0]
24364642e01fSmrg  -weak LIBNAME     declare that the target provides the LIBNAME interface
24376747b715Smrg  -Wc,FLAG
24386747b715Smrg  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
24396747b715Smrg  -Wl,FLAG
24406747b715Smrg  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
24416747b715Smrg  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
244205b261ecSmrg
24434642e01fSmrgAll other options (arguments beginning with \`-') are ignored.
244405b261ecSmrg
24454642e01fSmrgEvery other argument is treated as a filename.  Files ending in \`.la' are
24464642e01fSmrgtreated as uninstalled libtool libraries, other files are standard or library
24474642e01fSmrgobject files.
244805b261ecSmrg
24494642e01fSmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
24504642e01fSmrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is
24514642e01fSmrgrequired, except when creating a convenience library.
245205b261ecSmrg
24534642e01fSmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
24544642e01fSmrgusing \`ar' and \`ranlib', or on Windows using \`lib'.
245505b261ecSmrg
24564642e01fSmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
24574642e01fSmrgis created, otherwise an executable program is created."
245805b261ecSmrg        ;;
245905b261ecSmrg
24604642e01fSmrg      uninstall)
24614642e01fSmrg        $ECHO \
24624642e01fSmrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
246305b261ecSmrg
24644642e01fSmrgRemove libraries from an installation directory.
246505b261ecSmrg
24664642e01fSmrgRM is the name of the program to use to delete files associated with each FILE
24674642e01fSmrg(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
24684642e01fSmrgto RM.
246905b261ecSmrg
24704642e01fSmrgIf FILE is a libtool library, all the files associated with it are deleted.
24714642e01fSmrgOtherwise, only FILE itself is deleted using RM."
24724642e01fSmrg        ;;
247305b261ecSmrg
24744642e01fSmrg      *)
24756747b715Smrg        func_fatal_help "invalid operation mode \`$opt_mode'"
24764642e01fSmrg        ;;
24774642e01fSmrg    esac
247805b261ecSmrg
24796747b715Smrg    echo
24804642e01fSmrg    $ECHO "Try \`$progname --help' for more information about other modes."
24814642e01fSmrg}
248205b261ecSmrg
24836747b715Smrg# Now that we've collected a possible --mode arg, show help if necessary
24846747b715Smrgif $opt_help; then
24856747b715Smrg  if test "$opt_help" = :; then
24866747b715Smrg    func_mode_help
24876747b715Smrg  else
24886747b715Smrg    {
24896747b715Smrg      func_help noexit
24906747b715Smrg      for opt_mode in compile link execute install finish uninstall clean; do
24916747b715Smrg	func_mode_help
24926747b715Smrg      done
24936747b715Smrg    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
24946747b715Smrg    {
24956747b715Smrg      func_help noexit
24966747b715Smrg      for opt_mode in compile link execute install finish uninstall clean; do
24976747b715Smrg	echo
24986747b715Smrg	func_mode_help
24996747b715Smrg      done
25006747b715Smrg    } |
25016747b715Smrg    sed '1d
25026747b715Smrg      /^When reporting/,/^Report/{
25036747b715Smrg	H
25046747b715Smrg	d
25056747b715Smrg      }
25066747b715Smrg      $x
25076747b715Smrg      /information about other modes/d
25086747b715Smrg      /more detailed .*MODE/d
25096747b715Smrg      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
25106747b715Smrg  fi
25116747b715Smrg  exit $?
25126747b715Smrgfi
251305b261ecSmrg
251405b261ecSmrg
25154642e01fSmrg# func_mode_execute arg...
25164642e01fSmrgfunc_mode_execute ()
25174642e01fSmrg{
25184642e01fSmrg    $opt_debug
25194642e01fSmrg    # The first argument is the command name.
25204642e01fSmrg    cmd="$nonopt"
25214642e01fSmrg    test -z "$cmd" && \
25224642e01fSmrg      func_fatal_help "you must specify a COMMAND"
252305b261ecSmrg
25244642e01fSmrg    # Handle -dlopen flags immediately.
25256747b715Smrg    for file in $opt_dlopen; do
25264642e01fSmrg      test -f "$file" \
25274642e01fSmrg	|| func_fatal_help "\`$file' is not a file"
252805b261ecSmrg
25294642e01fSmrg      dir=
25304642e01fSmrg      case $file in
25314642e01fSmrg      *.la)
25326747b715Smrg	func_resolve_sysroot "$file"
25336747b715Smrg	file=$func_resolve_sysroot_result
25346747b715Smrg
25354642e01fSmrg	# Check to see that this really is a libtool archive.
25364642e01fSmrg	func_lalib_unsafe_p "$file" \
25374642e01fSmrg	  || func_fatal_help "\`$lib' is not a valid libtool archive"
253805b261ecSmrg
25394642e01fSmrg	# Read the libtool library.
25404642e01fSmrg	dlname=
25414642e01fSmrg	library_names=
25424642e01fSmrg	func_source "$file"
254305b261ecSmrg
25444642e01fSmrg	# Skip this library if it cannot be dlopened.
25454642e01fSmrg	if test -z "$dlname"; then
25464642e01fSmrg	  # Warn if it was a shared library.
25474642e01fSmrg	  test -n "$library_names" && \
25484642e01fSmrg	    func_warning "\`$file' was not linked with \`-export-dynamic'"
25494642e01fSmrg	  continue
25504642e01fSmrg	fi
255105b261ecSmrg
25524642e01fSmrg	func_dirname "$file" "" "."
25534642e01fSmrg	dir="$func_dirname_result"
255405b261ecSmrg
25554642e01fSmrg	if test -f "$dir/$objdir/$dlname"; then
25566747b715Smrg	  func_append dir "/$objdir"
25574642e01fSmrg	else
25584642e01fSmrg	  if test ! -f "$dir/$dlname"; then
25594642e01fSmrg	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
25604642e01fSmrg	  fi
25614642e01fSmrg	fi
256205b261ecSmrg	;;
256305b261ecSmrg
25644642e01fSmrg      *.lo)
25654642e01fSmrg	# Just add the directory containing the .lo file.
25664642e01fSmrg	func_dirname "$file" "" "."
25674642e01fSmrg	dir="$func_dirname_result"
256805b261ecSmrg	;;
256905b261ecSmrg
25704642e01fSmrg      *)
25714642e01fSmrg	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
257205b261ecSmrg	continue
257305b261ecSmrg	;;
25744642e01fSmrg      esac
257505b261ecSmrg
25764642e01fSmrg      # Get the absolute pathname.
25774642e01fSmrg      absdir=`cd "$dir" && pwd`
25784642e01fSmrg      test -n "$absdir" && dir="$absdir"
257905b261ecSmrg
25804642e01fSmrg      # Now add the directory to shlibpath_var.
25814642e01fSmrg      if eval "test -z \"\$$shlibpath_var\""; then
25824642e01fSmrg	eval "$shlibpath_var=\"\$dir\""
25834642e01fSmrg      else
25844642e01fSmrg	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
25854642e01fSmrg      fi
25864642e01fSmrg    done
258705b261ecSmrg
25884642e01fSmrg    # This variable tells wrapper scripts just to set shlibpath_var
25894642e01fSmrg    # rather than running their programs.
25904642e01fSmrg    libtool_execute_magic="$magic"
259105b261ecSmrg
25924642e01fSmrg    # Check if any of the arguments is a wrapper script.
25934642e01fSmrg    args=
25944642e01fSmrg    for file
25954642e01fSmrg    do
25964642e01fSmrg      case $file in
25976747b715Smrg      -* | *.la | *.lo ) ;;
25984642e01fSmrg      *)
25994642e01fSmrg	# Do a test to see if this is really a libtool program.
26004642e01fSmrg	if func_ltwrapper_script_p "$file"; then
26014642e01fSmrg	  func_source "$file"
26024642e01fSmrg	  # Transform arg to wrapped name.
26034642e01fSmrg	  file="$progdir/$program"
26044642e01fSmrg	elif func_ltwrapper_executable_p "$file"; then
26054642e01fSmrg	  func_ltwrapper_scriptname "$file"
26064642e01fSmrg	  func_source "$func_ltwrapper_scriptname_result"
26074642e01fSmrg	  # Transform arg to wrapped name.
26084642e01fSmrg	  file="$progdir/$program"
26094642e01fSmrg	fi
26104642e01fSmrg	;;
26114642e01fSmrg      esac
26124642e01fSmrg      # Quote arguments (to preserve shell metacharacters).
26136747b715Smrg      func_append_quoted args "$file"
26144642e01fSmrg    done
261505b261ecSmrg
26164642e01fSmrg    if test "X$opt_dry_run" = Xfalse; then
26174642e01fSmrg      if test -n "$shlibpath_var"; then
26184642e01fSmrg	# Export the shlibpath_var.
26194642e01fSmrg	eval "export $shlibpath_var"
26204642e01fSmrg      fi
262105b261ecSmrg
26224642e01fSmrg      # Restore saved environment variables
26234642e01fSmrg      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
26244642e01fSmrg      do
26254642e01fSmrg	eval "if test \"\${save_$lt_var+set}\" = set; then
26264642e01fSmrg                $lt_var=\$save_$lt_var; export $lt_var
262705b261ecSmrg	      else
26284642e01fSmrg		$lt_unset $lt_var
26294642e01fSmrg	      fi"
26304642e01fSmrg      done
263105b261ecSmrg
26324642e01fSmrg      # Now prepare to actually exec the command.
26334642e01fSmrg      exec_cmd="\$cmd$args"
26344642e01fSmrg    else
26354642e01fSmrg      # Display what would be done.
26364642e01fSmrg      if test -n "$shlibpath_var"; then
26374642e01fSmrg	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
26386747b715Smrg	echo "export $shlibpath_var"
26394642e01fSmrg      fi
26404642e01fSmrg      $ECHO "$cmd$args"
26414642e01fSmrg      exit $EXIT_SUCCESS
26424642e01fSmrg    fi
26434642e01fSmrg}
264405b261ecSmrg
26456747b715Smrgtest "$opt_mode" = execute && func_mode_execute ${1+"$@"}
264605b261ecSmrg
264705b261ecSmrg
26484642e01fSmrg# func_mode_finish arg...
26494642e01fSmrgfunc_mode_finish ()
26504642e01fSmrg{
26514642e01fSmrg    $opt_debug
26526747b715Smrg    libs=
26536747b715Smrg    libdirs=
26544642e01fSmrg    admincmds=
265505b261ecSmrg
26566747b715Smrg    for opt in "$nonopt" ${1+"$@"}
26576747b715Smrg    do
26586747b715Smrg      if test -d "$opt"; then
26596747b715Smrg	func_append libdirs " $opt"
26606747b715Smrg
26616747b715Smrg      elif test -f "$opt"; then
26626747b715Smrg	if func_lalib_unsafe_p "$opt"; then
26636747b715Smrg	  func_append libs " $opt"
26646747b715Smrg	else
26656747b715Smrg	  func_warning "\`$opt' is not a valid libtool archive"
26666747b715Smrg	fi
26676747b715Smrg
26686747b715Smrg      else
26696747b715Smrg	func_fatal_error "invalid argument \`$opt'"
26706747b715Smrg      fi
26716747b715Smrg    done
26726747b715Smrg
26736747b715Smrg    if test -n "$libs"; then
26746747b715Smrg      if test -n "$lt_sysroot"; then
26756747b715Smrg        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
26766747b715Smrg        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
26776747b715Smrg      else
26786747b715Smrg        sysroot_cmd=
26796747b715Smrg      fi
268005b261ecSmrg
26816747b715Smrg      # Remove sysroot references
26826747b715Smrg      if $opt_dry_run; then
26836747b715Smrg        for lib in $libs; do
26846747b715Smrg          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
26856747b715Smrg        done
26866747b715Smrg      else
26876747b715Smrg        tmpdir=`func_mktempdir`
26886747b715Smrg        for lib in $libs; do
26896747b715Smrg	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
26906747b715Smrg	    > $tmpdir/tmp-la
26916747b715Smrg	  mv -f $tmpdir/tmp-la $lib
26926747b715Smrg	done
26936747b715Smrg        ${RM}r "$tmpdir"
26946747b715Smrg      fi
26956747b715Smrg    fi
26966747b715Smrg
26976747b715Smrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
26984642e01fSmrg      for libdir in $libdirs; do
26994642e01fSmrg	if test -n "$finish_cmds"; then
27004642e01fSmrg	  # Do each command in the finish commands.
27014642e01fSmrg	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
27024642e01fSmrg'"$cmd"'"'
270305b261ecSmrg	fi
27044642e01fSmrg	if test -n "$finish_eval"; then
27054642e01fSmrg	  # Do the single finish_eval.
27064642e01fSmrg	  eval cmds=\"$finish_eval\"
27076747b715Smrg	  $opt_dry_run || eval "$cmds" || func_append admincmds "
27084642e01fSmrg       $cmds"
27094642e01fSmrg	fi
27104642e01fSmrg      done
27114642e01fSmrg    fi
271205b261ecSmrg
27134642e01fSmrg    # Exit here if they wanted silent mode.
27144642e01fSmrg    $opt_silent && exit $EXIT_SUCCESS
271505b261ecSmrg
27166747b715Smrg    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
27176747b715Smrg      echo "----------------------------------------------------------------------"
27186747b715Smrg      echo "Libraries have been installed in:"
27196747b715Smrg      for libdir in $libdirs; do
27206747b715Smrg	$ECHO "   $libdir"
27216747b715Smrg      done
27226747b715Smrg      echo
27236747b715Smrg      echo "If you ever happen to want to link against installed libraries"
27246747b715Smrg      echo "in a given directory, LIBDIR, you must either use libtool, and"
27256747b715Smrg      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
27266747b715Smrg      echo "flag during linking and do at least one of the following:"
27276747b715Smrg      if test -n "$shlibpath_var"; then
27286747b715Smrg	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
27296747b715Smrg	echo "     during execution"
27306747b715Smrg      fi
27316747b715Smrg      if test -n "$runpath_var"; then
27326747b715Smrg	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
27336747b715Smrg	echo "     during linking"
27346747b715Smrg      fi
27356747b715Smrg      if test -n "$hardcode_libdir_flag_spec"; then
27366747b715Smrg	libdir=LIBDIR
27376747b715Smrg	eval flag=\"$hardcode_libdir_flag_spec\"
27384642e01fSmrg
27396747b715Smrg	$ECHO "   - use the \`$flag' linker flag"
27406747b715Smrg      fi
27416747b715Smrg      if test -n "$admincmds"; then
27426747b715Smrg	$ECHO "   - have your system administrator run these commands:$admincmds"
27436747b715Smrg      fi
27446747b715Smrg      if test -f /etc/ld.so.conf; then
27456747b715Smrg	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
27466747b715Smrg      fi
27476747b715Smrg      echo
27484642e01fSmrg
27496747b715Smrg      echo "See any operating system documentation about shared libraries for"
27506747b715Smrg      case $host in
27516747b715Smrg	solaris2.[6789]|solaris2.1[0-9])
27526747b715Smrg	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
27536747b715Smrg	  echo "pages."
27546747b715Smrg	  ;;
27556747b715Smrg	*)
27566747b715Smrg	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
27576747b715Smrg	  ;;
27586747b715Smrg      esac
27596747b715Smrg      echo "----------------------------------------------------------------------"
27606747b715Smrg    fi
27614642e01fSmrg    exit $EXIT_SUCCESS
27624642e01fSmrg}
27634642e01fSmrg
27646747b715Smrgtest "$opt_mode" = finish && func_mode_finish ${1+"$@"}
27654642e01fSmrg
27664642e01fSmrg
27674642e01fSmrg# func_mode_install arg...
27684642e01fSmrgfunc_mode_install ()
27694642e01fSmrg{
27704642e01fSmrg    $opt_debug
27714642e01fSmrg    # There may be an optional sh(1) argument at the beginning of
27724642e01fSmrg    # install_prog (especially on Windows NT).
27734642e01fSmrg    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
27744642e01fSmrg       # Allow the use of GNU shtool's install command.
27756747b715Smrg       case $nonopt in *shtool*) :;; *) false;; esac; then
27764642e01fSmrg      # Aesthetically quote it.
27774642e01fSmrg      func_quote_for_eval "$nonopt"
27784642e01fSmrg      install_prog="$func_quote_for_eval_result "
27794642e01fSmrg      arg=$1
27804642e01fSmrg      shift
27814642e01fSmrg    else
27824642e01fSmrg      install_prog=
27834642e01fSmrg      arg=$nonopt
27844642e01fSmrg    fi
27854642e01fSmrg
27864642e01fSmrg    # The real first argument should be the name of the installation program.
27874642e01fSmrg    # Aesthetically quote it.
27884642e01fSmrg    func_quote_for_eval "$arg"
27896747b715Smrg    func_append install_prog "$func_quote_for_eval_result"
27906747b715Smrg    install_shared_prog=$install_prog
27916747b715Smrg    case " $install_prog " in
27926747b715Smrg      *[\\\ /]cp\ *) install_cp=: ;;
27936747b715Smrg      *) install_cp=false ;;
27946747b715Smrg    esac
27954642e01fSmrg
27964642e01fSmrg    # We need to accept at least all the BSD install flags.
27974642e01fSmrg    dest=
27984642e01fSmrg    files=
27994642e01fSmrg    opts=
28004642e01fSmrg    prev=
28014642e01fSmrg    install_type=
28024642e01fSmrg    isdir=no
28034642e01fSmrg    stripme=
28046747b715Smrg    no_mode=:
28054642e01fSmrg    for arg
28064642e01fSmrg    do
28076747b715Smrg      arg2=
28084642e01fSmrg      if test -n "$dest"; then
28096747b715Smrg	func_append files " $dest"
28104642e01fSmrg	dest=$arg
28114642e01fSmrg	continue
28124642e01fSmrg      fi
28134642e01fSmrg
28144642e01fSmrg      case $arg in
28154642e01fSmrg      -d) isdir=yes ;;
28164642e01fSmrg      -f)
28176747b715Smrg	if $install_cp; then :; else
28186747b715Smrg	  prev=$arg
28196747b715Smrg	fi
28204642e01fSmrg	;;
28214642e01fSmrg      -g | -m | -o)
28224642e01fSmrg	prev=$arg
28234642e01fSmrg	;;
28244642e01fSmrg      -s)
28254642e01fSmrg	stripme=" -s"
28264642e01fSmrg	continue
28274642e01fSmrg	;;
28284642e01fSmrg      -*)
28294642e01fSmrg	;;
28304642e01fSmrg      *)
28314642e01fSmrg	# If the previous option needed an argument, then skip it.
28324642e01fSmrg	if test -n "$prev"; then
28336747b715Smrg	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
28346747b715Smrg	    arg2=$install_override_mode
28356747b715Smrg	    no_mode=false
28366747b715Smrg	  fi
283705b261ecSmrg	  prev=
283805b261ecSmrg	else
28394642e01fSmrg	  dest=$arg
28404642e01fSmrg	  continue
284105b261ecSmrg	fi
284205b261ecSmrg	;;
28434642e01fSmrg      esac
284405b261ecSmrg
28454642e01fSmrg      # Aesthetically quote the argument.
28464642e01fSmrg      func_quote_for_eval "$arg"
28476747b715Smrg      func_append install_prog " $func_quote_for_eval_result"
28486747b715Smrg      if test -n "$arg2"; then
28496747b715Smrg	func_quote_for_eval "$arg2"
28506747b715Smrg      fi
28516747b715Smrg      func_append install_shared_prog " $func_quote_for_eval_result"
28524642e01fSmrg    done
285305b261ecSmrg
28544642e01fSmrg    test -z "$install_prog" && \
28554642e01fSmrg      func_fatal_help "you must specify an install program"
285605b261ecSmrg
28574642e01fSmrg    test -n "$prev" && \
28584642e01fSmrg      func_fatal_help "the \`$prev' option requires an argument"
285905b261ecSmrg
28606747b715Smrg    if test -n "$install_override_mode" && $no_mode; then
28616747b715Smrg      if $install_cp; then :; else
28626747b715Smrg	func_quote_for_eval "$install_override_mode"
28636747b715Smrg	func_append install_shared_prog " -m $func_quote_for_eval_result"
28646747b715Smrg      fi
28656747b715Smrg    fi
28666747b715Smrg
28674642e01fSmrg    if test -z "$files"; then
28684642e01fSmrg      if test -z "$dest"; then
28694642e01fSmrg	func_fatal_help "no file or destination specified"
28704642e01fSmrg      else
28714642e01fSmrg	func_fatal_help "you must specify a destination"
28724642e01fSmrg      fi
287305b261ecSmrg    fi
287405b261ecSmrg
28754642e01fSmrg    # Strip any trailing slash from the destination.
28764642e01fSmrg    func_stripname '' '/' "$dest"
28774642e01fSmrg    dest=$func_stripname_result
287805b261ecSmrg
28794642e01fSmrg    # Check to see that the destination is a directory.
28804642e01fSmrg    test -d "$dest" && isdir=yes
28814642e01fSmrg    if test "$isdir" = yes; then
28824642e01fSmrg      destdir="$dest"
28834642e01fSmrg      destname=
288405b261ecSmrg    else
28854642e01fSmrg      func_dirname_and_basename "$dest" "" "."
28864642e01fSmrg      destdir="$func_dirname_result"
28874642e01fSmrg      destname="$func_basename_result"
288805b261ecSmrg
28894642e01fSmrg      # Not a directory, so check to see that there is only one file specified.
28904642e01fSmrg      set dummy $files; shift
28914642e01fSmrg      test "$#" -gt 1 && \
28924642e01fSmrg	func_fatal_help "\`$dest' is not a directory"
289305b261ecSmrg    fi
28944642e01fSmrg    case $destdir in
28954642e01fSmrg    [\\/]* | [A-Za-z]:[\\/]*) ;;
289605b261ecSmrg    *)
28974642e01fSmrg      for file in $files; do
28984642e01fSmrg	case $file in
28994642e01fSmrg	*.lo) ;;
29004642e01fSmrg	*)
29014642e01fSmrg	  func_fatal_help "\`$destdir' must be an absolute directory name"
29024642e01fSmrg	  ;;
29034642e01fSmrg	esac
29044642e01fSmrg      done
290505b261ecSmrg      ;;
290605b261ecSmrg    esac
290705b261ecSmrg
29084642e01fSmrg    # This variable tells wrapper scripts just to set variables rather
29094642e01fSmrg    # than running their programs.
29104642e01fSmrg    libtool_install_magic="$magic"
291105b261ecSmrg
29124642e01fSmrg    staticlibs=
29134642e01fSmrg    future_libdirs=
29144642e01fSmrg    current_libdirs=
29154642e01fSmrg    for file in $files; do
291605b261ecSmrg
29174642e01fSmrg      # Do each installation.
29184642e01fSmrg      case $file in
29194642e01fSmrg      *.$libext)
29204642e01fSmrg	# Do the static libraries later.
29216747b715Smrg	func_append staticlibs " $file"
29224642e01fSmrg	;;
29234642e01fSmrg
29244642e01fSmrg      *.la)
29256747b715Smrg	func_resolve_sysroot "$file"
29266747b715Smrg	file=$func_resolve_sysroot_result
29276747b715Smrg
29284642e01fSmrg	# Check to see that this really is a libtool archive.
29294642e01fSmrg	func_lalib_unsafe_p "$file" \
29304642e01fSmrg	  || func_fatal_help "\`$file' is not a valid libtool archive"
29314642e01fSmrg
29324642e01fSmrg	library_names=
29334642e01fSmrg	old_library=
29344642e01fSmrg	relink_command=
29354642e01fSmrg	func_source "$file"
29364642e01fSmrg
29374642e01fSmrg	# Add the libdir to current_libdirs if it is the destination.
29384642e01fSmrg	if test "X$destdir" = "X$libdir"; then
29394642e01fSmrg	  case "$current_libdirs " in
29404642e01fSmrg	  *" $libdir "*) ;;
29416747b715Smrg	  *) func_append current_libdirs " $libdir" ;;
294205b261ecSmrg	  esac
29434642e01fSmrg	else
29444642e01fSmrg	  # Note the libdir as a future libdir.
29454642e01fSmrg	  case "$future_libdirs " in
29464642e01fSmrg	  *" $libdir "*) ;;
29476747b715Smrg	  *) func_append future_libdirs " $libdir" ;;
29484642e01fSmrg	  esac
29494642e01fSmrg	fi
295005b261ecSmrg
29514642e01fSmrg	func_dirname "$file" "/" ""
29524642e01fSmrg	dir="$func_dirname_result"
29536747b715Smrg	func_append dir "$objdir"
29544642e01fSmrg
29554642e01fSmrg	if test -n "$relink_command"; then
29564642e01fSmrg	  # Determine the prefix the user has applied to our future dir.
29576747b715Smrg	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
29584642e01fSmrg
29594642e01fSmrg	  # Don't allow the user to place us outside of our expected
29604642e01fSmrg	  # location b/c this prevents finding dependent libraries that
29614642e01fSmrg	  # are installed to the same prefix.
29624642e01fSmrg	  # At present, this check doesn't affect windows .dll's that
29634642e01fSmrg	  # are installed into $libdir/../bin (currently, that works fine)
29644642e01fSmrg	  # but it's something to keep an eye on.
29654642e01fSmrg	  test "$inst_prefix_dir" = "$destdir" && \
29664642e01fSmrg	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
29674642e01fSmrg
29684642e01fSmrg	  if test -n "$inst_prefix_dir"; then
29694642e01fSmrg	    # Stick the inst_prefix_dir data into the link command.
29706747b715Smrg	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
29714642e01fSmrg	  else
29726747b715Smrg	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
29734642e01fSmrg	  fi
29744642e01fSmrg
29754642e01fSmrg	  func_warning "relinking \`$file'"
29764642e01fSmrg	  func_show_eval "$relink_command" \
29774642e01fSmrg	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
29784642e01fSmrg	fi
29794642e01fSmrg
29804642e01fSmrg	# See the names of the shared library.
29814642e01fSmrg	set dummy $library_names; shift
29824642e01fSmrg	if test -n "$1"; then
29834642e01fSmrg	  realname="$1"
29844642e01fSmrg	  shift
29854642e01fSmrg
29864642e01fSmrg	  srcname="$realname"
29874642e01fSmrg	  test -n "$relink_command" && srcname="$realname"T
29884642e01fSmrg
29894642e01fSmrg	  # Install the shared library and build the symlinks.
29906747b715Smrg	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
29914642e01fSmrg	      'exit $?'
29924642e01fSmrg	  tstripme="$stripme"
29934642e01fSmrg	  case $host_os in
29944642e01fSmrg	  cygwin* | mingw* | pw32* | cegcc*)
29954642e01fSmrg	    case $realname in
29964642e01fSmrg	    *.dll.a)
29974642e01fSmrg	      tstripme=""
29984642e01fSmrg	      ;;
29994642e01fSmrg	    esac
300005b261ecSmrg	    ;;
300105b261ecSmrg	  esac
30024642e01fSmrg	  if test -n "$tstripme" && test -n "$striplib"; then
30034642e01fSmrg	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
300405b261ecSmrg	  fi
30054642e01fSmrg
30064642e01fSmrg	  if test "$#" -gt 0; then
30074642e01fSmrg	    # Delete the old symlinks, and create new ones.
30084642e01fSmrg	    # Try `ln -sf' first, because the `ln' binary might depend on
30094642e01fSmrg	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
30104642e01fSmrg	    # so we also need to try rm && ln -s.
30114642e01fSmrg	    for linkname
30124642e01fSmrg	    do
30134642e01fSmrg	      test "$linkname" != "$realname" \
30144642e01fSmrg		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
301505b261ecSmrg	    done
301605b261ecSmrg	  fi
301705b261ecSmrg
30184642e01fSmrg	  # Do each command in the postinstall commands.
30194642e01fSmrg	  lib="$destdir/$realname"
30204642e01fSmrg	  func_execute_cmds "$postinstall_cmds" 'exit $?'
302105b261ecSmrg	fi
302205b261ecSmrg
30234642e01fSmrg	# Install the pseudo-library for information purposes.
30244642e01fSmrg	func_basename "$file"
30254642e01fSmrg	name="$func_basename_result"
30264642e01fSmrg	instname="$dir/$name"i
30274642e01fSmrg	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
302805b261ecSmrg
30294642e01fSmrg	# Maybe install the static library, too.
30306747b715Smrg	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
30314642e01fSmrg	;;
303205b261ecSmrg
30334642e01fSmrg      *.lo)
30344642e01fSmrg	# Install (i.e. copy) a libtool object.
303505b261ecSmrg
30364642e01fSmrg	# Figure out destination file name, if it wasn't already specified.
30374642e01fSmrg	if test -n "$destname"; then
30384642e01fSmrg	  destfile="$destdir/$destname"
30394642e01fSmrg	else
30404642e01fSmrg	  func_basename "$file"
30414642e01fSmrg	  destfile="$func_basename_result"
30424642e01fSmrg	  destfile="$destdir/$destfile"
30434642e01fSmrg	fi
30444642e01fSmrg
30454642e01fSmrg	# Deduce the name of the destination old-style object file.
30464642e01fSmrg	case $destfile in
30474642e01fSmrg	*.lo)
30484642e01fSmrg	  func_lo2o "$destfile"
30494642e01fSmrg	  staticdest=$func_lo2o_result
30504642e01fSmrg	  ;;
30514642e01fSmrg	*.$objext)
30524642e01fSmrg	  staticdest="$destfile"
30534642e01fSmrg	  destfile=
30544642e01fSmrg	  ;;
30554642e01fSmrg	*)
30564642e01fSmrg	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
30574642e01fSmrg	  ;;
305805b261ecSmrg	esac
305905b261ecSmrg
30604642e01fSmrg	# Install the libtool object if requested.
30614642e01fSmrg	test -n "$destfile" && \
30624642e01fSmrg	  func_show_eval "$install_prog $file $destfile" 'exit $?'
30634642e01fSmrg
30644642e01fSmrg	# Install the old object if enabled.
30654642e01fSmrg	if test "$build_old_libs" = yes; then
30664642e01fSmrg	  # Deduce the name of the old-style object file.
30674642e01fSmrg	  func_lo2o "$file"
30684642e01fSmrg	  staticobj=$func_lo2o_result
30694642e01fSmrg	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
307005b261ecSmrg	fi
30714642e01fSmrg	exit $EXIT_SUCCESS
30724642e01fSmrg	;;
307305b261ecSmrg
30744642e01fSmrg      *)
30754642e01fSmrg	# Figure out destination file name, if it wasn't already specified.
30764642e01fSmrg	if test -n "$destname"; then
30774642e01fSmrg	  destfile="$destdir/$destname"
30784642e01fSmrg	else
30794642e01fSmrg	  func_basename "$file"
30804642e01fSmrg	  destfile="$func_basename_result"
30814642e01fSmrg	  destfile="$destdir/$destfile"
30824642e01fSmrg	fi
308305b261ecSmrg
30844642e01fSmrg	# If the file is missing, and there is a .exe on the end, strip it
30854642e01fSmrg	# because it is most likely a libtool script we actually want to
30864642e01fSmrg	# install
30874642e01fSmrg	stripped_ext=""
30884642e01fSmrg	case $file in
30894642e01fSmrg	  *.exe)
30904642e01fSmrg	    if test ! -f "$file"; then
30914642e01fSmrg	      func_stripname '' '.exe' "$file"
30924642e01fSmrg	      file=$func_stripname_result
30934642e01fSmrg	      stripped_ext=".exe"
30944642e01fSmrg	    fi
30954642e01fSmrg	    ;;
30964642e01fSmrg	esac
309705b261ecSmrg
30984642e01fSmrg	# Do a test to see if this is really a libtool program.
30994642e01fSmrg	case $host in
31004642e01fSmrg	*cygwin* | *mingw*)
31014642e01fSmrg	    if func_ltwrapper_executable_p "$file"; then
31024642e01fSmrg	      func_ltwrapper_scriptname "$file"
31034642e01fSmrg	      wrapper=$func_ltwrapper_scriptname_result
31044642e01fSmrg	    else
31054642e01fSmrg	      func_stripname '' '.exe' "$file"
31064642e01fSmrg	      wrapper=$func_stripname_result
31074642e01fSmrg	    fi
31084642e01fSmrg	    ;;
31094642e01fSmrg	*)
31104642e01fSmrg	    wrapper=$file
31114642e01fSmrg	    ;;
31124642e01fSmrg	esac
31134642e01fSmrg	if func_ltwrapper_script_p "$wrapper"; then
31144642e01fSmrg	  notinst_deplibs=
31154642e01fSmrg	  relink_command=
311605b261ecSmrg
31174642e01fSmrg	  func_source "$wrapper"
31184642e01fSmrg
31194642e01fSmrg	  # Check the variables that should have been set.
31204642e01fSmrg	  test -z "$generated_by_libtool_version" && \
31214642e01fSmrg	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
31224642e01fSmrg
31234642e01fSmrg	  finalize=yes
31244642e01fSmrg	  for lib in $notinst_deplibs; do
31254642e01fSmrg	    # Check to see that each library is installed.
31264642e01fSmrg	    libdir=
31274642e01fSmrg	    if test -f "$lib"; then
31284642e01fSmrg	      func_source "$lib"
31294642e01fSmrg	    fi
31306747b715Smrg	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
31314642e01fSmrg	    if test -n "$libdir" && test ! -f "$libfile"; then
31324642e01fSmrg	      func_warning "\`$lib' has not been installed in \`$libdir'"
31334642e01fSmrg	      finalize=no
31344642e01fSmrg	    fi
31354642e01fSmrg	  done
31364642e01fSmrg
31374642e01fSmrg	  relink_command=
31384642e01fSmrg	  func_source "$wrapper"
31394642e01fSmrg
31404642e01fSmrg	  outputname=
31414642e01fSmrg	  if test "$fast_install" = no && test -n "$relink_command"; then
31424642e01fSmrg	    $opt_dry_run || {
31434642e01fSmrg	      if test "$finalize" = yes; then
31444642e01fSmrg	        tmpdir=`func_mktempdir`
31454642e01fSmrg		func_basename "$file$stripped_ext"
31464642e01fSmrg		file="$func_basename_result"
31474642e01fSmrg	        outputname="$tmpdir/$file"
31484642e01fSmrg	        # Replace the output file specification.
31496747b715Smrg	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
31504642e01fSmrg
31514642e01fSmrg	        $opt_silent || {
31524642e01fSmrg	          func_quote_for_expand "$relink_command"
31534642e01fSmrg		  eval "func_echo $func_quote_for_expand_result"
31544642e01fSmrg	        }
31554642e01fSmrg	        if eval "$relink_command"; then :
31564642e01fSmrg	          else
31574642e01fSmrg		  func_error "error: relink \`$file' with the above command before installing it"
31584642e01fSmrg		  $opt_dry_run || ${RM}r "$tmpdir"
31594642e01fSmrg		  continue
31604642e01fSmrg	        fi
31614642e01fSmrg	        file="$outputname"
31624642e01fSmrg	      else
31634642e01fSmrg	        func_warning "cannot relink \`$file'"
31644642e01fSmrg	      fi
31654642e01fSmrg	    }
316605b261ecSmrg	  else
31674642e01fSmrg	    # Install the binary that we compiled earlier.
31686747b715Smrg	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
316905b261ecSmrg	  fi
31704642e01fSmrg	fi
317105b261ecSmrg
31724642e01fSmrg	# remove .exe since cygwin /usr/bin/install will append another
31734642e01fSmrg	# one anyway
31744642e01fSmrg	case $install_prog,$host in
31754642e01fSmrg	*/usr/bin/install*,*cygwin*)
31764642e01fSmrg	  case $file:$destfile in
31774642e01fSmrg	  *.exe:*.exe)
31784642e01fSmrg	    # this is ok
31794642e01fSmrg	    ;;
31804642e01fSmrg	  *.exe:*)
31814642e01fSmrg	    destfile=$destfile.exe
31824642e01fSmrg	    ;;
31834642e01fSmrg	  *:*.exe)
31844642e01fSmrg	    func_stripname '' '.exe' "$destfile"
31854642e01fSmrg	    destfile=$func_stripname_result
31864642e01fSmrg	    ;;
31874642e01fSmrg	  esac
318805b261ecSmrg	  ;;
318905b261ecSmrg	esac
31904642e01fSmrg	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
31914642e01fSmrg	$opt_dry_run || if test -n "$outputname"; then
31924642e01fSmrg	  ${RM}r "$tmpdir"
31934642e01fSmrg	fi
31944642e01fSmrg	;;
31954642e01fSmrg      esac
31964642e01fSmrg    done
319705b261ecSmrg
31984642e01fSmrg    for file in $staticlibs; do
31994642e01fSmrg      func_basename "$file"
32004642e01fSmrg      name="$func_basename_result"
32014642e01fSmrg
32024642e01fSmrg      # Set up the ranlib parameters.
32034642e01fSmrg      oldlib="$destdir/$name"
32044642e01fSmrg
32054642e01fSmrg      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
32064642e01fSmrg
32074642e01fSmrg      if test -n "$stripme" && test -n "$old_striplib"; then
32084642e01fSmrg	func_show_eval "$old_striplib $oldlib" 'exit $?'
32094642e01fSmrg      fi
32104642e01fSmrg
32114642e01fSmrg      # Do each command in the postinstall commands.
32124642e01fSmrg      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
32134642e01fSmrg    done
32144642e01fSmrg
32154642e01fSmrg    test -n "$future_libdirs" && \
32164642e01fSmrg      func_warning "remember to run \`$progname --finish$future_libdirs'"
32174642e01fSmrg
32184642e01fSmrg    if test -n "$current_libdirs"; then
32194642e01fSmrg      # Maybe just do a dry run.
32204642e01fSmrg      $opt_dry_run && current_libdirs=" -n$current_libdirs"
32214642e01fSmrg      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
32224642e01fSmrg    else
32234642e01fSmrg      exit $EXIT_SUCCESS
32244642e01fSmrg    fi
32254642e01fSmrg}
32264642e01fSmrg
32276747b715Smrgtest "$opt_mode" = install && func_mode_install ${1+"$@"}
32284642e01fSmrg
32294642e01fSmrg
32304642e01fSmrg# func_generate_dlsyms outputname originator pic_p
32314642e01fSmrg# Extract symbols from dlprefiles and create ${outputname}S.o with
32324642e01fSmrg# a dlpreopen symbol table.
32334642e01fSmrgfunc_generate_dlsyms ()
32344642e01fSmrg{
32354642e01fSmrg    $opt_debug
32364642e01fSmrg    my_outputname="$1"
32374642e01fSmrg    my_originator="$2"
32384642e01fSmrg    my_pic_p="${3-no}"
32394642e01fSmrg    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
32404642e01fSmrg    my_dlsyms=
32414642e01fSmrg
32424642e01fSmrg    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
32434642e01fSmrg      if test -n "$NM" && test -n "$global_symbol_pipe"; then
32444642e01fSmrg	my_dlsyms="${my_outputname}S.c"
32454642e01fSmrg      else
32464642e01fSmrg	func_error "not configured to extract global symbols from dlpreopened files"
32474642e01fSmrg      fi
32484642e01fSmrg    fi
32494642e01fSmrg
32504642e01fSmrg    if test -n "$my_dlsyms"; then
32514642e01fSmrg      case $my_dlsyms in
32524642e01fSmrg      "") ;;
32534642e01fSmrg      *.c)
32544642e01fSmrg	# Discover the nlist of each of the dlfiles.
32554642e01fSmrg	nlist="$output_objdir/${my_outputname}.nm"
32564642e01fSmrg
32574642e01fSmrg	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
32584642e01fSmrg
32594642e01fSmrg	# Parse the name list into a source file.
32604642e01fSmrg	func_verbose "creating $output_objdir/$my_dlsyms"
32614642e01fSmrg
32624642e01fSmrg	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
32634642e01fSmrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
32644642e01fSmrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
32654642e01fSmrg
32664642e01fSmrg#ifdef __cplusplus
32674642e01fSmrgextern \"C\" {
32684642e01fSmrg#endif
32694642e01fSmrg
32706747b715Smrg#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
32716747b715Smrg#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
32726747b715Smrg#endif
32736747b715Smrg
32746747b715Smrg/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
32756747b715Smrg#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
32766747b715Smrg/* DATA imports from DLLs on WIN32 con't be const, because runtime
32776747b715Smrg   relocations are performed -- see ld's documentation on pseudo-relocs.  */
32786747b715Smrg# define LT_DLSYM_CONST
32796747b715Smrg#elif defined(__osf__)
32806747b715Smrg/* This system does not cope well with relocations in const data.  */
32816747b715Smrg# define LT_DLSYM_CONST
32826747b715Smrg#else
32836747b715Smrg# define LT_DLSYM_CONST const
32846747b715Smrg#endif
32856747b715Smrg
32864642e01fSmrg/* External symbol declarations for the compiler. */\
32874642e01fSmrg"
32884642e01fSmrg
32894642e01fSmrg	if test "$dlself" = yes; then
32904642e01fSmrg	  func_verbose "generating symbol list for \`$output'"
32914642e01fSmrg
32924642e01fSmrg	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
32934642e01fSmrg
32944642e01fSmrg	  # Add our own program objects to the symbol list.
32956747b715Smrg	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
32964642e01fSmrg	  for progfile in $progfiles; do
32976747b715Smrg	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
32986747b715Smrg	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
32996747b715Smrg	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
33004642e01fSmrg	  done
33014642e01fSmrg
33024642e01fSmrg	  if test -n "$exclude_expsyms"; then
33034642e01fSmrg	    $opt_dry_run || {
33044642e01fSmrg	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
33054642e01fSmrg	      eval '$MV "$nlist"T "$nlist"'
33064642e01fSmrg	    }
330705b261ecSmrg	  fi
33084642e01fSmrg
33094642e01fSmrg	  if test -n "$export_symbols_regex"; then
33104642e01fSmrg	    $opt_dry_run || {
33114642e01fSmrg	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
33124642e01fSmrg	      eval '$MV "$nlist"T "$nlist"'
33134642e01fSmrg	    }
33144642e01fSmrg	  fi
33154642e01fSmrg
33164642e01fSmrg	  # Prepare the list of exported symbols
33174642e01fSmrg	  if test -z "$export_symbols"; then
33184642e01fSmrg	    export_symbols="$output_objdir/$outputname.exp"
33194642e01fSmrg	    $opt_dry_run || {
33204642e01fSmrg	      $RM $export_symbols
33214642e01fSmrg	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
33224642e01fSmrg	      case $host in
33234642e01fSmrg	      *cygwin* | *mingw* | *cegcc* )
33244642e01fSmrg                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
33254642e01fSmrg                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
33264642e01fSmrg	        ;;
33274642e01fSmrg	      esac
33284642e01fSmrg	    }
332905b261ecSmrg	  else
33304642e01fSmrg	    $opt_dry_run || {
33314642e01fSmrg	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
33324642e01fSmrg	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
33334642e01fSmrg	      eval '$MV "$nlist"T "$nlist"'
33344642e01fSmrg	      case $host in
33356747b715Smrg	        *cygwin* | *mingw* | *cegcc* )
33364642e01fSmrg	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
33374642e01fSmrg	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
33384642e01fSmrg	          ;;
33394642e01fSmrg	      esac
33404642e01fSmrg	    }
334105b261ecSmrg	  fi
33424642e01fSmrg	fi
334305b261ecSmrg
33444642e01fSmrg	for dlprefile in $dlprefiles; do
33454642e01fSmrg	  func_verbose "extracting global C symbols from \`$dlprefile'"
33464642e01fSmrg	  func_basename "$dlprefile"
33474642e01fSmrg	  name="$func_basename_result"
33486747b715Smrg          case $host in
33496747b715Smrg	    *cygwin* | *mingw* | *cegcc* )
33506747b715Smrg	      # if an import library, we need to obtain dlname
33516747b715Smrg	      if func_win32_import_lib_p "$dlprefile"; then
33526747b715Smrg	        func_tr_sh "$dlprefile"
33536747b715Smrg	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
33546747b715Smrg	        dlprefile_dlbasename=""
33556747b715Smrg	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
33566747b715Smrg	          # Use subshell, to avoid clobbering current variable values
33576747b715Smrg	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
33586747b715Smrg	          if test -n "$dlprefile_dlname" ; then
33596747b715Smrg	            func_basename "$dlprefile_dlname"
33606747b715Smrg	            dlprefile_dlbasename="$func_basename_result"
33616747b715Smrg	          else
33626747b715Smrg	            # no lafile. user explicitly requested -dlpreopen <import library>.
33636747b715Smrg	            $sharedlib_from_linklib_cmd "$dlprefile"
33646747b715Smrg	            dlprefile_dlbasename=$sharedlib_from_linklib_result
33656747b715Smrg	          fi
33666747b715Smrg	        fi
33676747b715Smrg	        $opt_dry_run || {
33686747b715Smrg	          if test -n "$dlprefile_dlbasename" ; then
33696747b715Smrg	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
33706747b715Smrg	          else
33716747b715Smrg	            func_warning "Could not compute DLL name from $name"
33726747b715Smrg	            eval '$ECHO ": $name " >> "$nlist"'
33736747b715Smrg	          fi
33746747b715Smrg	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
33756747b715Smrg	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
33766747b715Smrg	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
33776747b715Smrg	        }
33786747b715Smrg	      else # not an import lib
33796747b715Smrg	        $opt_dry_run || {
33806747b715Smrg	          eval '$ECHO ": $name " >> "$nlist"'
33816747b715Smrg	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
33826747b715Smrg	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
33836747b715Smrg	        }
33846747b715Smrg	      fi
33856747b715Smrg	    ;;
33866747b715Smrg	    *)
33876747b715Smrg	      $opt_dry_run || {
33886747b715Smrg	        eval '$ECHO ": $name " >> "$nlist"'
33896747b715Smrg	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
33906747b715Smrg	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
33916747b715Smrg	      }
33926747b715Smrg	    ;;
33936747b715Smrg          esac
33944642e01fSmrg	done
33954642e01fSmrg
33964642e01fSmrg	$opt_dry_run || {
33974642e01fSmrg	  # Make sure we have at least an empty file.
33984642e01fSmrg	  test -f "$nlist" || : > "$nlist"
33994642e01fSmrg
34004642e01fSmrg	  if test -n "$exclude_expsyms"; then
34014642e01fSmrg	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
34024642e01fSmrg	    $MV "$nlist"T "$nlist"
340305b261ecSmrg	  fi
34044642e01fSmrg
34054642e01fSmrg	  # Try sorting and uniquifying the output.
34064642e01fSmrg	  if $GREP -v "^: " < "$nlist" |
34074642e01fSmrg	      if sort -k 3 </dev/null >/dev/null 2>&1; then
34084642e01fSmrg		sort -k 3
34094642e01fSmrg	      else
34104642e01fSmrg		sort +2
34114642e01fSmrg	      fi |
34124642e01fSmrg	      uniq > "$nlist"S; then
34134642e01fSmrg	    :
341405b261ecSmrg	  else
34154642e01fSmrg	    $GREP -v "^: " < "$nlist" > "$nlist"S
341605b261ecSmrg	  fi
341705b261ecSmrg
34184642e01fSmrg	  if test -f "$nlist"S; then
34194642e01fSmrg	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
342005b261ecSmrg	  else
34216747b715Smrg	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
342205b261ecSmrg	  fi
342305b261ecSmrg
34246747b715Smrg	  echo >> "$output_objdir/$my_dlsyms" "\
342505b261ecSmrg
34264642e01fSmrg/* The mapping between symbol names and symbols.  */
34274642e01fSmrgtypedef struct {
34284642e01fSmrg  const char *name;
34294642e01fSmrg  void *address;
34304642e01fSmrg} lt_dlsymlist;
34316747b715Smrgextern LT_DLSYM_CONST lt_dlsymlist
34324642e01fSmrglt_${my_prefix}_LTX_preloaded_symbols[];
34336747b715SmrgLT_DLSYM_CONST lt_dlsymlist
34344642e01fSmrglt_${my_prefix}_LTX_preloaded_symbols[] =
34354642e01fSmrg{\
34364642e01fSmrg  { \"$my_originator\", (void *) 0 },"
343705b261ecSmrg
34384642e01fSmrg	  case $need_lib_prefix in
34394642e01fSmrg	  no)
34404642e01fSmrg	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
34414642e01fSmrg	    ;;
34424642e01fSmrg	  *)
34434642e01fSmrg	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
34444642e01fSmrg	    ;;
34454642e01fSmrg	  esac
34466747b715Smrg	  echo >> "$output_objdir/$my_dlsyms" "\
34474642e01fSmrg  {0, (void *) 0}
34484642e01fSmrg};
344905b261ecSmrg
34504642e01fSmrg/* This works around a problem in FreeBSD linker */
34514642e01fSmrg#ifdef FREEBSD_WORKAROUND
34524642e01fSmrgstatic const void *lt_preloaded_setup() {
34534642e01fSmrg  return lt_${my_prefix}_LTX_preloaded_symbols;
34544642e01fSmrg}
34554642e01fSmrg#endif
34564642e01fSmrg
34574642e01fSmrg#ifdef __cplusplus
34584642e01fSmrg}
34594642e01fSmrg#endif\
34604642e01fSmrg"
34614642e01fSmrg	} # !$opt_dry_run
34624642e01fSmrg
34634642e01fSmrg	pic_flag_for_symtable=
34644642e01fSmrg	case "$compile_command " in
34654642e01fSmrg	*" -static "*) ;;
34664642e01fSmrg	*)
34674642e01fSmrg	  case $host in
34684642e01fSmrg	  # compiling the symbol table file with pic_flag works around
34694642e01fSmrg	  # a FreeBSD bug that causes programs to crash when -lm is
34704642e01fSmrg	  # linked before any other PIC object.  But we must not use
34714642e01fSmrg	  # pic_flag when linking with -static.  The problem exists in
34724642e01fSmrg	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
34734642e01fSmrg	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
34744642e01fSmrg	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
34754642e01fSmrg	  *-*-hpux*)
34764642e01fSmrg	    pic_flag_for_symtable=" $pic_flag"  ;;
34774642e01fSmrg	  *)
34784642e01fSmrg	    if test "X$my_pic_p" != Xno; then
34794642e01fSmrg	      pic_flag_for_symtable=" $pic_flag"
348005b261ecSmrg	    fi
34814642e01fSmrg	    ;;
34824642e01fSmrg	  esac
34834642e01fSmrg	  ;;
34844642e01fSmrg	esac
34854642e01fSmrg	symtab_cflags=
34864642e01fSmrg	for arg in $LTCFLAGS; do
34874642e01fSmrg	  case $arg in
34884642e01fSmrg	  -pie | -fpie | -fPIE) ;;
34896747b715Smrg	  *) func_append symtab_cflags " $arg" ;;
34904642e01fSmrg	  esac
34914642e01fSmrg	done
349205b261ecSmrg
34934642e01fSmrg	# Now compile the dynamic symbol file.
34944642e01fSmrg	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
349505b261ecSmrg
34964642e01fSmrg	# Clean up the generated files.
34974642e01fSmrg	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
349805b261ecSmrg
34994642e01fSmrg	# Transform the symbol file into the correct name.
35004642e01fSmrg	symfileobj="$output_objdir/${my_outputname}S.$objext"
35014642e01fSmrg	case $host in
35024642e01fSmrg	*cygwin* | *mingw* | *cegcc* )
35034642e01fSmrg	  if test -f "$output_objdir/$my_outputname.def"; then
35046747b715Smrg	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
35056747b715Smrg	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
35064642e01fSmrg	  else
35076747b715Smrg	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
35086747b715Smrg	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
350905b261ecSmrg	  fi
35104642e01fSmrg	  ;;
35114642e01fSmrg	*)
35126747b715Smrg	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
35136747b715Smrg	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
35144642e01fSmrg	  ;;
35154642e01fSmrg	esac
35164642e01fSmrg	;;
35174642e01fSmrg      *)
35184642e01fSmrg	func_fatal_error "unknown suffix for \`$my_dlsyms'"
35194642e01fSmrg	;;
35204642e01fSmrg      esac
35214642e01fSmrg    else
35224642e01fSmrg      # We keep going just in case the user didn't refer to
35234642e01fSmrg      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
35244642e01fSmrg      # really was required.
352505b261ecSmrg
35264642e01fSmrg      # Nullify the symbol file.
35276747b715Smrg      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
35286747b715Smrg      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
35294642e01fSmrg    fi
35304642e01fSmrg}
353105b261ecSmrg
35324642e01fSmrg# func_win32_libid arg
35334642e01fSmrg# return the library type of file 'arg'
35344642e01fSmrg#
35354642e01fSmrg# Need a lot of goo to handle *both* DLLs and import libs
35364642e01fSmrg# Has to be a shell function in order to 'eat' the argument
35374642e01fSmrg# that is supplied when $file_magic_command is called.
35386747b715Smrg# Despite the name, also deal with 64 bit binaries.
35394642e01fSmrgfunc_win32_libid ()
35404642e01fSmrg{
35414642e01fSmrg  $opt_debug
35424642e01fSmrg  win32_libid_type="unknown"
35434642e01fSmrg  win32_fileres=`file -L $1 2>/dev/null`
35444642e01fSmrg  case $win32_fileres in
35454642e01fSmrg  *ar\ archive\ import\ library*) # definitely import
35464642e01fSmrg    win32_libid_type="x86 archive import"
35474642e01fSmrg    ;;
35484642e01fSmrg  *ar\ archive*) # could be an import, or static
35496747b715Smrg    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
35504642e01fSmrg    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
35516747b715Smrg       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
35526747b715Smrg      func_to_tool_file "$1" func_convert_file_msys_to_w32
35536747b715Smrg      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
35544642e01fSmrg	$SED -n -e '
35554642e01fSmrg	    1,100{
35564642e01fSmrg		/ I /{
35574642e01fSmrg		    s,.*,import,
35584642e01fSmrg		    p
35594642e01fSmrg		    q
35604642e01fSmrg		}
35614642e01fSmrg	    }'`
35624642e01fSmrg      case $win32_nmres in
35634642e01fSmrg      import*)  win32_libid_type="x86 archive import";;
35644642e01fSmrg      *)        win32_libid_type="x86 archive static";;
35654642e01fSmrg      esac
35664642e01fSmrg    fi
35674642e01fSmrg    ;;
35684642e01fSmrg  *DLL*)
35694642e01fSmrg    win32_libid_type="x86 DLL"
35704642e01fSmrg    ;;
35714642e01fSmrg  *executable*) # but shell scripts are "executable" too...
35724642e01fSmrg    case $win32_fileres in
35734642e01fSmrg    *MS\ Windows\ PE\ Intel*)
35744642e01fSmrg      win32_libid_type="x86 DLL"
35754642e01fSmrg      ;;
35764642e01fSmrg    esac
35774642e01fSmrg    ;;
35784642e01fSmrg  esac
35794642e01fSmrg  $ECHO "$win32_libid_type"
35804642e01fSmrg}
358105b261ecSmrg
35826747b715Smrg# func_cygming_dll_for_implib ARG
35836747b715Smrg#
35846747b715Smrg# Platform-specific function to extract the
35856747b715Smrg# name of the DLL associated with the specified
35866747b715Smrg# import library ARG.
35876747b715Smrg# Invoked by eval'ing the libtool variable
35886747b715Smrg#    $sharedlib_from_linklib_cmd
35896747b715Smrg# Result is available in the variable
35906747b715Smrg#    $sharedlib_from_linklib_result
35916747b715Smrgfunc_cygming_dll_for_implib ()
35926747b715Smrg{
35936747b715Smrg  $opt_debug
35946747b715Smrg  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
35956747b715Smrg}
35966747b715Smrg
35976747b715Smrg# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
35986747b715Smrg#
35996747b715Smrg# The is the core of a fallback implementation of a
36006747b715Smrg# platform-specific function to extract the name of the
36016747b715Smrg# DLL associated with the specified import library LIBNAME.
36026747b715Smrg#
36036747b715Smrg# SECTION_NAME is either .idata$6 or .idata$7, depending
36046747b715Smrg# on the platform and compiler that created the implib.
36056747b715Smrg#
36066747b715Smrg# Echos the name of the DLL associated with the
36076747b715Smrg# specified import library.
36086747b715Smrgfunc_cygming_dll_for_implib_fallback_core ()
36096747b715Smrg{
36106747b715Smrg  $opt_debug
36116747b715Smrg  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
36126747b715Smrg  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
36136747b715Smrg    $SED '/^Contents of section '"$match_literal"':/{
36146747b715Smrg      # Place marker at beginning of archive member dllname section
36156747b715Smrg      s/.*/====MARK====/
36166747b715Smrg      p
36176747b715Smrg      d
36186747b715Smrg    }
36196747b715Smrg    # These lines can sometimes be longer than 43 characters, but
36206747b715Smrg    # are always uninteresting
36216747b715Smrg    /:[	 ]*file format pe[i]\{,1\}-/d
36226747b715Smrg    /^In archive [^:]*:/d
36236747b715Smrg    # Ensure marker is printed
36246747b715Smrg    /^====MARK====/p
36256747b715Smrg    # Remove all lines with less than 43 characters
36266747b715Smrg    /^.\{43\}/!d
36276747b715Smrg    # From remaining lines, remove first 43 characters
36286747b715Smrg    s/^.\{43\}//' |
36296747b715Smrg    $SED -n '
36306747b715Smrg      # Join marker and all lines until next marker into a single line
36316747b715Smrg      /^====MARK====/ b para
36326747b715Smrg      H
36336747b715Smrg      $ b para
36346747b715Smrg      b
36356747b715Smrg      :para
36366747b715Smrg      x
36376747b715Smrg      s/\n//g
36386747b715Smrg      # Remove the marker
36396747b715Smrg      s/^====MARK====//
36406747b715Smrg      # Remove trailing dots and whitespace
36416747b715Smrg      s/[\. \t]*$//
36426747b715Smrg      # Print
36436747b715Smrg      /./p' |
36446747b715Smrg    # we now have a list, one entry per line, of the stringified
36456747b715Smrg    # contents of the appropriate section of all members of the
36466747b715Smrg    # archive which possess that section. Heuristic: eliminate
36476747b715Smrg    # all those which have a first or second character that is
36486747b715Smrg    # a '.' (that is, objdump's representation of an unprintable
36496747b715Smrg    # character.) This should work for all archives with less than
36506747b715Smrg    # 0x302f exports -- but will fail for DLLs whose name actually
36516747b715Smrg    # begins with a literal '.' or a single character followed by
36526747b715Smrg    # a '.'.
36536747b715Smrg    #
36546747b715Smrg    # Of those that remain, print the first one.
36556747b715Smrg    $SED -e '/^\./d;/^.\./d;q'
36566747b715Smrg}
36576747b715Smrg
36586747b715Smrg# func_cygming_gnu_implib_p ARG
36596747b715Smrg# This predicate returns with zero status (TRUE) if
36606747b715Smrg# ARG is a GNU/binutils-style import library. Returns
36616747b715Smrg# with nonzero status (FALSE) otherwise.
36626747b715Smrgfunc_cygming_gnu_implib_p ()
36636747b715Smrg{
36646747b715Smrg  $opt_debug
36656747b715Smrg  func_to_tool_file "$1" func_convert_file_msys_to_w32
36666747b715Smrg  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
36676747b715Smrg  test -n "$func_cygming_gnu_implib_tmp"
36686747b715Smrg}
36696747b715Smrg
36706747b715Smrg# func_cygming_ms_implib_p ARG
36716747b715Smrg# This predicate returns with zero status (TRUE) if
36726747b715Smrg# ARG is an MS-style import library. Returns
36736747b715Smrg# with nonzero status (FALSE) otherwise.
36746747b715Smrgfunc_cygming_ms_implib_p ()
36756747b715Smrg{
36766747b715Smrg  $opt_debug
36776747b715Smrg  func_to_tool_file "$1" func_convert_file_msys_to_w32
36786747b715Smrg  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
36796747b715Smrg  test -n "$func_cygming_ms_implib_tmp"
36806747b715Smrg}
36816747b715Smrg
36826747b715Smrg# func_cygming_dll_for_implib_fallback ARG
36836747b715Smrg# Platform-specific function to extract the
36846747b715Smrg# name of the DLL associated with the specified
36856747b715Smrg# import library ARG.
36866747b715Smrg#
36876747b715Smrg# This fallback implementation is for use when $DLLTOOL
36886747b715Smrg# does not support the --identify-strict option.
36896747b715Smrg# Invoked by eval'ing the libtool variable
36906747b715Smrg#    $sharedlib_from_linklib_cmd
36916747b715Smrg# Result is available in the variable
36926747b715Smrg#    $sharedlib_from_linklib_result
36936747b715Smrgfunc_cygming_dll_for_implib_fallback ()
36946747b715Smrg{
36956747b715Smrg  $opt_debug
36966747b715Smrg  if func_cygming_gnu_implib_p "$1" ; then
36976747b715Smrg    # binutils import library
36986747b715Smrg    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
36996747b715Smrg  elif func_cygming_ms_implib_p "$1" ; then
37006747b715Smrg    # ms-generated import library
37016747b715Smrg    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
37026747b715Smrg  else
37036747b715Smrg    # unknown
37046747b715Smrg    sharedlib_from_linklib_result=""
37056747b715Smrg  fi
37066747b715Smrg}
370705b261ecSmrg
370805b261ecSmrg
37094642e01fSmrg# func_extract_an_archive dir oldlib
37104642e01fSmrgfunc_extract_an_archive ()
37114642e01fSmrg{
37124642e01fSmrg    $opt_debug
37134642e01fSmrg    f_ex_an_ar_dir="$1"; shift
37144642e01fSmrg    f_ex_an_ar_oldlib="$1"
37156747b715Smrg    if test "$lock_old_archive_extraction" = yes; then
37166747b715Smrg      lockfile=$f_ex_an_ar_oldlib.lock
37176747b715Smrg      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
37186747b715Smrg	func_echo "Waiting for $lockfile to be removed"
37196747b715Smrg	sleep 2
37206747b715Smrg      done
37216747b715Smrg    fi
37226747b715Smrg    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
37236747b715Smrg		   'stat=$?; rm -f "$lockfile"; exit $stat'
37246747b715Smrg    if test "$lock_old_archive_extraction" = yes; then
37256747b715Smrg      $opt_dry_run || rm -f "$lockfile"
37266747b715Smrg    fi
37274642e01fSmrg    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
37284642e01fSmrg     :
37294642e01fSmrg    else
37304642e01fSmrg      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
37314642e01fSmrg    fi
37324642e01fSmrg}
373305b261ecSmrg
373405b261ecSmrg
37354642e01fSmrg# func_extract_archives gentop oldlib ...
37364642e01fSmrgfunc_extract_archives ()
37374642e01fSmrg{
37384642e01fSmrg    $opt_debug
37394642e01fSmrg    my_gentop="$1"; shift
37404642e01fSmrg    my_oldlibs=${1+"$@"}
37414642e01fSmrg    my_oldobjs=""
37424642e01fSmrg    my_xlib=""
37434642e01fSmrg    my_xabs=""
37444642e01fSmrg    my_xdir=""
374505b261ecSmrg
37464642e01fSmrg    for my_xlib in $my_oldlibs; do
37474642e01fSmrg      # Extract the objects.
37484642e01fSmrg      case $my_xlib in
37494642e01fSmrg	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
37504642e01fSmrg	*) my_xabs=`pwd`"/$my_xlib" ;;
37514642e01fSmrg      esac
37524642e01fSmrg      func_basename "$my_xlib"
37534642e01fSmrg      my_xlib="$func_basename_result"
37544642e01fSmrg      my_xlib_u=$my_xlib
37554642e01fSmrg      while :; do
37564642e01fSmrg        case " $extracted_archives " in
37574642e01fSmrg	*" $my_xlib_u "*)
37584642e01fSmrg	  func_arith $extracted_serial + 1
37594642e01fSmrg	  extracted_serial=$func_arith_result
37604642e01fSmrg	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
37614642e01fSmrg	*) break ;;
37624642e01fSmrg	esac
37634642e01fSmrg      done
37644642e01fSmrg      extracted_archives="$extracted_archives $my_xlib_u"
37654642e01fSmrg      my_xdir="$my_gentop/$my_xlib_u"
376605b261ecSmrg
37674642e01fSmrg      func_mkdir_p "$my_xdir"
376805b261ecSmrg
37694642e01fSmrg      case $host in
37704642e01fSmrg      *-darwin*)
37714642e01fSmrg	func_verbose "Extracting $my_xabs"
37724642e01fSmrg	# Do not bother doing anything if just a dry run
37734642e01fSmrg	$opt_dry_run || {
37744642e01fSmrg	  darwin_orig_dir=`pwd`
37754642e01fSmrg	  cd $my_xdir || exit $?
37764642e01fSmrg	  darwin_archive=$my_xabs
37774642e01fSmrg	  darwin_curdir=`pwd`
37784642e01fSmrg	  darwin_base_archive=`basename "$darwin_archive"`
37794642e01fSmrg	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
37804642e01fSmrg	  if test -n "$darwin_arches"; then
37814642e01fSmrg	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
37824642e01fSmrg	    darwin_arch=
37834642e01fSmrg	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
37844642e01fSmrg	    for darwin_arch in  $darwin_arches ; do
37854642e01fSmrg	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
37864642e01fSmrg	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
37874642e01fSmrg	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
37884642e01fSmrg	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
37894642e01fSmrg	      cd "$darwin_curdir"
37904642e01fSmrg	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
37914642e01fSmrg	    done # $darwin_arches
37924642e01fSmrg            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
37934642e01fSmrg	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
37944642e01fSmrg	    darwin_file=
37954642e01fSmrg	    darwin_files=
37964642e01fSmrg	    for darwin_file in $darwin_filelist; do
37976747b715Smrg	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
37984642e01fSmrg	      $LIPO -create -output "$darwin_file" $darwin_files
37994642e01fSmrg	    done # $darwin_filelist
38004642e01fSmrg	    $RM -rf unfat-$$
38014642e01fSmrg	    cd "$darwin_orig_dir"
380205b261ecSmrg	  else
38034642e01fSmrg	    cd $darwin_orig_dir
38044642e01fSmrg	    func_extract_an_archive "$my_xdir" "$my_xabs"
38054642e01fSmrg	  fi # $darwin_arches
38064642e01fSmrg	} # !$opt_dry_run
38074642e01fSmrg	;;
38084642e01fSmrg      *)
38094642e01fSmrg        func_extract_an_archive "$my_xdir" "$my_xabs"
38104642e01fSmrg	;;
38114642e01fSmrg      esac
38126747b715Smrg      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
38134642e01fSmrg    done
381405b261ecSmrg
38154642e01fSmrg    func_extract_archives_result="$my_oldobjs"
38164642e01fSmrg}
381705b261ecSmrg
381805b261ecSmrg
38196747b715Smrg# func_emit_wrapper [arg=no]
38206747b715Smrg#
38216747b715Smrg# Emit a libtool wrapper script on stdout.
38226747b715Smrg# Don't directly open a file because we may want to
38236747b715Smrg# incorporate the script contents within a cygwin/mingw
38246747b715Smrg# wrapper executable.  Must ONLY be called from within
38256747b715Smrg# func_mode_link because it depends on a number of variables
38266747b715Smrg# set therein.
38274642e01fSmrg#
38286747b715Smrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
38296747b715Smrg# variable will take.  If 'yes', then the emitted script
38306747b715Smrg# will assume that the directory in which it is stored is
38316747b715Smrg# the $objdir directory.  This is a cygwin/mingw-specific
38326747b715Smrg# behavior.
38336747b715Smrgfunc_emit_wrapper ()
38344642e01fSmrg{
38356747b715Smrg	func_emit_wrapper_arg1=${1-no}
383605b261ecSmrg
38374642e01fSmrg	$ECHO "\
38384642e01fSmrg#! $SHELL
383905b261ecSmrg
38404642e01fSmrg# $output - temporary wrapper script for $objdir/$outputname
38414642e01fSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
38424642e01fSmrg#
38434642e01fSmrg# The $output program cannot be directly executed until all the libtool
38444642e01fSmrg# libraries that it depends on are installed.
38454642e01fSmrg#
38464642e01fSmrg# This wrapper script should never be moved out of the build directory.
38474642e01fSmrg# If it is, it will not operate correctly.
384805b261ecSmrg
38494642e01fSmrg# Sed substitution that helps us do robust quoting.  It backslashifies
38504642e01fSmrg# metacharacters that are still active within double-quoted strings.
38514642e01fSmrgsed_quote_subst='$sed_quote_subst'
385205b261ecSmrg
38534642e01fSmrg# Be Bourne compatible
38544642e01fSmrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
38554642e01fSmrg  emulate sh
38564642e01fSmrg  NULLCMD=:
38574642e01fSmrg  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
38584642e01fSmrg  # is contrary to our usage.  Disable this feature.
38594642e01fSmrg  alias -g '\${1+\"\$@\"}'='\"\$@\"'
38604642e01fSmrg  setopt NO_GLOB_SUBST
38614642e01fSmrgelse
38624642e01fSmrg  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
38634642e01fSmrgfi
38644642e01fSmrgBIN_SH=xpg4; export BIN_SH # for Tru64
38654642e01fSmrgDUALCASE=1; export DUALCASE # for MKS sh
386605b261ecSmrg
38674642e01fSmrg# The HP-UX ksh and POSIX shell print the target directory to stdout
38684642e01fSmrg# if CDPATH is set.
38694642e01fSmrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
387005b261ecSmrg
38714642e01fSmrgrelink_command=\"$relink_command\"
387205b261ecSmrg
38734642e01fSmrg# This environment variable determines our operation mode.
38744642e01fSmrgif test \"\$libtool_install_magic\" = \"$magic\"; then
38754642e01fSmrg  # install mode needs the following variables:
38764642e01fSmrg  generated_by_libtool_version='$macro_version'
38774642e01fSmrg  notinst_deplibs='$notinst_deplibs'
38784642e01fSmrgelse
38794642e01fSmrg  # When we are sourced in execute mode, \$file and \$ECHO are already set.
38804642e01fSmrg  if test \"\$libtool_execute_magic\" != \"$magic\"; then
38816747b715Smrg    file=\"\$0\""
38826747b715Smrg
38836747b715Smrg    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
38846747b715Smrg    $ECHO "\
38856747b715Smrg
38866747b715Smrg# A function that is used when there is no print builtin or printf.
38876747b715Smrgfunc_fallback_echo ()
38886747b715Smrg{
38896747b715Smrg  eval 'cat <<_LTECHO_EOF
38906747b715Smrg\$1
38916747b715Smrg_LTECHO_EOF'
38926747b715Smrg}
38936747b715Smrg    ECHO=\"$qECHO\"
38946747b715Smrg  fi
38956747b715Smrg
38966747b715Smrg# Very basic option parsing. These options are (a) specific to
38976747b715Smrg# the libtool wrapper, (b) are identical between the wrapper
38986747b715Smrg# /script/ and the wrapper /executable/ which is used only on
38996747b715Smrg# windows platforms, and (c) all begin with the string "--lt-"
39006747b715Smrg# (application programs are unlikely to have options which match
39016747b715Smrg# this pattern).
39026747b715Smrg#
39036747b715Smrg# There are only two supported options: --lt-debug and
39046747b715Smrg# --lt-dump-script. There is, deliberately, no --lt-help.
39056747b715Smrg#
39066747b715Smrg# The first argument to this parsing function should be the
39076747b715Smrg# script's $0 value, followed by "$@".
39086747b715Smrglt_option_debug=
39096747b715Smrgfunc_parse_lt_options ()
39106747b715Smrg{
39116747b715Smrg  lt_script_arg0=\$0
39126747b715Smrg  shift
39136747b715Smrg  for lt_opt
39146747b715Smrg  do
39156747b715Smrg    case \"\$lt_opt\" in
39166747b715Smrg    --lt-debug) lt_option_debug=1 ;;
39176747b715Smrg    --lt-dump-script)
39186747b715Smrg        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
39196747b715Smrg        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
39206747b715Smrg        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
39216747b715Smrg        cat \"\$lt_dump_D/\$lt_dump_F\"
39226747b715Smrg        exit 0
39236747b715Smrg      ;;
39246747b715Smrg    --lt-*)
39256747b715Smrg        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
39266747b715Smrg        exit 1
39276747b715Smrg      ;;
39286747b715Smrg    esac
39296747b715Smrg  done
39306747b715Smrg
39316747b715Smrg  # Print the debug banner immediately:
39326747b715Smrg  if test -n \"\$lt_option_debug\"; then
39336747b715Smrg    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
39346747b715Smrg  fi
39356747b715Smrg}
39366747b715Smrg
39376747b715Smrg# Used when --lt-debug. Prints its arguments to stdout
39386747b715Smrg# (redirection is the responsibility of the caller)
39396747b715Smrgfunc_lt_dump_args ()
39406747b715Smrg{
39416747b715Smrg  lt_dump_args_N=1;
39426747b715Smrg  for lt_arg
39436747b715Smrg  do
39446747b715Smrg    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
39456747b715Smrg    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
39466747b715Smrg  done
39476747b715Smrg}
39486747b715Smrg
39496747b715Smrg# Core function for launching the target application
39506747b715Smrgfunc_exec_program_core ()
39516747b715Smrg{
39524642e01fSmrg"
39536747b715Smrg  case $host in
39546747b715Smrg  # Backslashes separate directories on plain windows
39556747b715Smrg  *-*-mingw | *-*-os2* | *-cegcc*)
39566747b715Smrg    $ECHO "\
39576747b715Smrg      if test -n \"\$lt_option_debug\"; then
39586747b715Smrg        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
39596747b715Smrg        func_lt_dump_args \${1+\"\$@\"} 1>&2
39606747b715Smrg      fi
39616747b715Smrg      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
39626747b715Smrg"
39636747b715Smrg    ;;
39646747b715Smrg
39656747b715Smrg  *)
39666747b715Smrg    $ECHO "\
39676747b715Smrg      if test -n \"\$lt_option_debug\"; then
39686747b715Smrg        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
39696747b715Smrg        func_lt_dump_args \${1+\"\$@\"} 1>&2
39706747b715Smrg      fi
39716747b715Smrg      exec \"\$progdir/\$program\" \${1+\"\$@\"}
39726747b715Smrg"
39736747b715Smrg    ;;
39746747b715Smrg  esac
39756747b715Smrg  $ECHO "\
39766747b715Smrg      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
39776747b715Smrg      exit 1
39786747b715Smrg}
39796747b715Smrg
39806747b715Smrg# A function to encapsulate launching the target application
39816747b715Smrg# Strips options in the --lt-* namespace from \$@ and
39826747b715Smrg# launches target application with the remaining arguments.
39836747b715Smrgfunc_exec_program ()
39846747b715Smrg{
39856747b715Smrg  for lt_wr_arg
39866747b715Smrg  do
39876747b715Smrg    case \$lt_wr_arg in
39886747b715Smrg    --lt-*) ;;
39896747b715Smrg    *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
39906747b715Smrg    esac
39916747b715Smrg    shift
39926747b715Smrg  done
39936747b715Smrg  func_exec_program_core \${1+\"\$@\"}
39946747b715Smrg}
39956747b715Smrg
39966747b715Smrg  # Parse options
39976747b715Smrg  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
399805b261ecSmrg
39994642e01fSmrg  # Find the directory that this script lives in.
40006747b715Smrg  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
40014642e01fSmrg  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
400205b261ecSmrg
40034642e01fSmrg  # Follow symbolic links until we get to the real thisdir.
40046747b715Smrg  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
40054642e01fSmrg  while test -n \"\$file\"; do
40066747b715Smrg    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
400705b261ecSmrg
40084642e01fSmrg    # If there was a directory component, then change thisdir.
40094642e01fSmrg    if test \"x\$destdir\" != \"x\$file\"; then
40104642e01fSmrg      case \"\$destdir\" in
40114642e01fSmrg      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
40124642e01fSmrg      *) thisdir=\"\$thisdir/\$destdir\" ;;
401305b261ecSmrg      esac
40144642e01fSmrg    fi
401505b261ecSmrg
40166747b715Smrg    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
40176747b715Smrg    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
40184642e01fSmrg  done
401905b261ecSmrg
40204642e01fSmrg  # Usually 'no', except on cygwin/mingw when embedded into
40214642e01fSmrg  # the cwrapper.
40226747b715Smrg  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
40234642e01fSmrg  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
40244642e01fSmrg    # special case for '.'
40254642e01fSmrg    if test \"\$thisdir\" = \".\"; then
40264642e01fSmrg      thisdir=\`pwd\`
40274642e01fSmrg    fi
40284642e01fSmrg    # remove .libs from thisdir
40294642e01fSmrg    case \"\$thisdir\" in
40306747b715Smrg    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
40314642e01fSmrg    $objdir )   thisdir=. ;;
40324642e01fSmrg    esac
40334642e01fSmrg  fi
40344642e01fSmrg
40354642e01fSmrg  # Try to get the absolute directory name.
40364642e01fSmrg  absdir=\`cd \"\$thisdir\" && pwd\`
40374642e01fSmrg  test -n \"\$absdir\" && thisdir=\"\$absdir\"
40384642e01fSmrg"
40394642e01fSmrg
40404642e01fSmrg	if test "$fast_install" = yes; then
40414642e01fSmrg	  $ECHO "\
40424642e01fSmrg  program=lt-'$outputname'$exeext
40434642e01fSmrg  progdir=\"\$thisdir/$objdir\"
40444642e01fSmrg
40454642e01fSmrg  if test ! -f \"\$progdir/\$program\" ||
40464642e01fSmrg     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
40474642e01fSmrg       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
40484642e01fSmrg
40494642e01fSmrg    file=\"\$\$-\$program\"
40504642e01fSmrg
40514642e01fSmrg    if test ! -d \"\$progdir\"; then
40524642e01fSmrg      $MKDIR \"\$progdir\"
40534642e01fSmrg    else
40544642e01fSmrg      $RM \"\$progdir/\$file\"
40554642e01fSmrg    fi"
40564642e01fSmrg
40574642e01fSmrg	  $ECHO "\
40584642e01fSmrg
40594642e01fSmrg    # relink executable if necessary
40604642e01fSmrg    if test -n \"\$relink_command\"; then
40614642e01fSmrg      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
40624642e01fSmrg      else
40634642e01fSmrg	$ECHO \"\$relink_command_output\" >&2
40644642e01fSmrg	$RM \"\$progdir/\$file\"
40654642e01fSmrg	exit 1
406605b261ecSmrg      fi
40674642e01fSmrg    fi
406805b261ecSmrg
40694642e01fSmrg    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
40704642e01fSmrg    { $RM \"\$progdir/\$program\";
40714642e01fSmrg      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
40724642e01fSmrg    $RM \"\$progdir/\$file\"
40734642e01fSmrg  fi"
40744642e01fSmrg	else
40754642e01fSmrg	  $ECHO "\
40764642e01fSmrg  program='$outputname'
40774642e01fSmrg  progdir=\"\$thisdir/$objdir\"
40784642e01fSmrg"
407905b261ecSmrg	fi
408005b261ecSmrg
40814642e01fSmrg	$ECHO "\
408205b261ecSmrg
40834642e01fSmrg  if test -f \"\$progdir/\$program\"; then"
408405b261ecSmrg
40856747b715Smrg	# fixup the dll searchpath if we need to.
40866747b715Smrg	#
40876747b715Smrg	# Fix the DLL searchpath if we need to.  Do this before prepending
40886747b715Smrg	# to shlibpath, because on Windows, both are PATH and uninstalled
40896747b715Smrg	# libraries must come first.
40906747b715Smrg	if test -n "$dllsearchpath"; then
40916747b715Smrg	  $ECHO "\
40926747b715Smrg    # Add the dll search path components to the executable PATH
40936747b715Smrg    PATH=$dllsearchpath:\$PATH
40946747b715Smrg"
40956747b715Smrg	fi
40966747b715Smrg
40974642e01fSmrg	# Export our shlibpath_var if we have one.
40984642e01fSmrg	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
40994642e01fSmrg	  $ECHO "\
41004642e01fSmrg    # Add our own library path to $shlibpath_var
41014642e01fSmrg    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
410205b261ecSmrg
41034642e01fSmrg    # Some systems cannot cope with colon-terminated $shlibpath_var
41044642e01fSmrg    # The second colon is a workaround for a bug in BeOS R4 sed
41056747b715Smrg    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
41064642e01fSmrg
41074642e01fSmrg    export $shlibpath_var
41084642e01fSmrg"
410905b261ecSmrg	fi
411005b261ecSmrg
41114642e01fSmrg	$ECHO "\
41124642e01fSmrg    if test \"\$libtool_execute_magic\" != \"$magic\"; then
41134642e01fSmrg      # Run the actual program with our arguments.
41146747b715Smrg      func_exec_program \${1+\"\$@\"}
41154642e01fSmrg    fi
41164642e01fSmrg  else
41174642e01fSmrg    # The program doesn't exist.
41184642e01fSmrg    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
41194642e01fSmrg    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
41206747b715Smrg    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
41214642e01fSmrg    exit 1
41224642e01fSmrg  fi
41234642e01fSmrgfi\
41244642e01fSmrg"
41254642e01fSmrg}
412605b261ecSmrg
412705b261ecSmrg
41284642e01fSmrg# func_emit_cwrapperexe_src
41294642e01fSmrg# emit the source code for a wrapper executable on stdout
41304642e01fSmrg# Must ONLY be called from within func_mode_link because
41314642e01fSmrg# it depends on a number of variable set therein.
41324642e01fSmrgfunc_emit_cwrapperexe_src ()
41334642e01fSmrg{
41344642e01fSmrg	cat <<EOF
413505b261ecSmrg
41364642e01fSmrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
41374642e01fSmrg   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
413805b261ecSmrg
41394642e01fSmrg   The $output program cannot be directly executed until all the libtool
41404642e01fSmrg   libraries that it depends on are installed.
414105b261ecSmrg
41424642e01fSmrg   This wrapper executable should never be moved out of the build directory.
41434642e01fSmrg   If it is, it will not operate correctly.
41444642e01fSmrg*/
41454642e01fSmrgEOF
41464642e01fSmrg	    cat <<"EOF"
41476747b715Smrg#ifdef _MSC_VER
41486747b715Smrg# define _CRT_SECURE_NO_DEPRECATE 1
41496747b715Smrg#endif
41504642e01fSmrg#include <stdio.h>
41514642e01fSmrg#include <stdlib.h>
41524642e01fSmrg#ifdef _MSC_VER
41534642e01fSmrg# include <direct.h>
41544642e01fSmrg# include <process.h>
41554642e01fSmrg# include <io.h>
41564642e01fSmrg#else
41574642e01fSmrg# include <unistd.h>
41584642e01fSmrg# include <stdint.h>
41594642e01fSmrg# ifdef __CYGWIN__
41604642e01fSmrg#  include <io.h>
41616747b715Smrg# endif
41626747b715Smrg#endif
41636747b715Smrg#include <malloc.h>
41646747b715Smrg#include <stdarg.h>
41656747b715Smrg#include <assert.h>
41666747b715Smrg#include <string.h>
41676747b715Smrg#include <ctype.h>
41686747b715Smrg#include <errno.h>
41696747b715Smrg#include <fcntl.h>
41706747b715Smrg#include <sys/stat.h>
41716747b715Smrg
41726747b715Smrg/* declarations of non-ANSI functions */
41736747b715Smrg#if defined(__MINGW32__)
41746747b715Smrg# ifdef __STRICT_ANSI__
41756747b715Smrgint _putenv (const char *);
41766747b715Smrg# endif
41776747b715Smrg#elif defined(__CYGWIN__)
41786747b715Smrg# ifdef __STRICT_ANSI__
41794642e01fSmrgchar *realpath (const char *, char *);
41804642e01fSmrgint putenv (char *);
41814642e01fSmrgint setenv (const char *, const char *, int);
41824642e01fSmrg# endif
41836747b715Smrg/* #elif defined (other platforms) ... */
41846747b715Smrg#endif
41856747b715Smrg
41866747b715Smrg/* portability defines, excluding path handling macros */
41876747b715Smrg#if defined(_MSC_VER)
41886747b715Smrg# define setmode _setmode
41896747b715Smrg# define stat    _stat
41906747b715Smrg# define chmod   _chmod
41916747b715Smrg# define getcwd  _getcwd
41926747b715Smrg# define putenv  _putenv
41936747b715Smrg# define S_IXUSR _S_IEXEC
41946747b715Smrg# ifndef _INTPTR_T_DEFINED
41956747b715Smrg#  define _INTPTR_T_DEFINED
41966747b715Smrg#  define intptr_t int
41976747b715Smrg# endif
41986747b715Smrg#elif defined(__MINGW32__)
41996747b715Smrg# define setmode _setmode
42006747b715Smrg# define stat    _stat
42016747b715Smrg# define chmod   _chmod
42026747b715Smrg# define getcwd  _getcwd
42036747b715Smrg# define putenv  _putenv
42046747b715Smrg#elif defined(__CYGWIN__)
42056747b715Smrg# define HAVE_SETENV
42066747b715Smrg# define FOPEN_WB "wb"
42076747b715Smrg/* #elif defined (other platforms) ... */
42084642e01fSmrg#endif
420905b261ecSmrg
42104642e01fSmrg#if defined(PATH_MAX)
42114642e01fSmrg# define LT_PATHMAX PATH_MAX
42124642e01fSmrg#elif defined(MAXPATHLEN)
42134642e01fSmrg# define LT_PATHMAX MAXPATHLEN
42144642e01fSmrg#else
42154642e01fSmrg# define LT_PATHMAX 1024
42164642e01fSmrg#endif
421705b261ecSmrg
42184642e01fSmrg#ifndef S_IXOTH
42194642e01fSmrg# define S_IXOTH 0
42204642e01fSmrg#endif
42214642e01fSmrg#ifndef S_IXGRP
42224642e01fSmrg# define S_IXGRP 0
42234642e01fSmrg#endif
422405b261ecSmrg
42256747b715Smrg/* path handling portability macros */
42264642e01fSmrg#ifndef DIR_SEPARATOR
42274642e01fSmrg# define DIR_SEPARATOR '/'
42284642e01fSmrg# define PATH_SEPARATOR ':'
42294642e01fSmrg#endif
423005b261ecSmrg
42314642e01fSmrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
42324642e01fSmrg  defined (__OS2__)
42334642e01fSmrg# define HAVE_DOS_BASED_FILE_SYSTEM
42344642e01fSmrg# define FOPEN_WB "wb"
42354642e01fSmrg# ifndef DIR_SEPARATOR_2
42364642e01fSmrg#  define DIR_SEPARATOR_2 '\\'
42374642e01fSmrg# endif
42384642e01fSmrg# ifndef PATH_SEPARATOR_2
42394642e01fSmrg#  define PATH_SEPARATOR_2 ';'
42404642e01fSmrg# endif
42414642e01fSmrg#endif
424205b261ecSmrg
42434642e01fSmrg#ifndef DIR_SEPARATOR_2
42444642e01fSmrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
42454642e01fSmrg#else /* DIR_SEPARATOR_2 */
42464642e01fSmrg# define IS_DIR_SEPARATOR(ch) \
42474642e01fSmrg	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
42484642e01fSmrg#endif /* DIR_SEPARATOR_2 */
424905b261ecSmrg
42504642e01fSmrg#ifndef PATH_SEPARATOR_2
42514642e01fSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
42524642e01fSmrg#else /* PATH_SEPARATOR_2 */
42534642e01fSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
42544642e01fSmrg#endif /* PATH_SEPARATOR_2 */
425505b261ecSmrg
42564642e01fSmrg#ifndef FOPEN_WB
42574642e01fSmrg# define FOPEN_WB "w"
42584642e01fSmrg#endif
42594642e01fSmrg#ifndef _O_BINARY
42604642e01fSmrg# define _O_BINARY 0
42614642e01fSmrg#endif
426205b261ecSmrg
42634642e01fSmrg#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
42644642e01fSmrg#define XFREE(stale) do { \
42654642e01fSmrg  if (stale) { free ((void *) stale); stale = 0; } \
42664642e01fSmrg} while (0)
426705b261ecSmrg
42686747b715Smrg#if defined(LT_DEBUGWRAPPER)
42696747b715Smrgstatic int lt_debug = 1;
42704642e01fSmrg#else
42716747b715Smrgstatic int lt_debug = 0;
42724642e01fSmrg#endif
427305b261ecSmrg
42746747b715Smrgconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
427505b261ecSmrg
42764642e01fSmrgvoid *xmalloc (size_t num);
42774642e01fSmrgchar *xstrdup (const char *string);
42784642e01fSmrgconst char *base_name (const char *name);
42794642e01fSmrgchar *find_executable (const char *wrapper);
42804642e01fSmrgchar *chase_symlinks (const char *pathspec);
42814642e01fSmrgint make_executable (const char *path);
42824642e01fSmrgint check_executable (const char *path);
42834642e01fSmrgchar *strendzap (char *str, const char *pat);
42846747b715Smrgvoid lt_debugprintf (const char *file, int line, const char *fmt, ...);
42856747b715Smrgvoid lt_fatal (const char *file, int line, const char *message, ...);
42866747b715Smrgstatic const char *nonnull (const char *s);
42876747b715Smrgstatic const char *nonempty (const char *s);
42884642e01fSmrgvoid lt_setenv (const char *name, const char *value);
42894642e01fSmrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
42904642e01fSmrgvoid lt_update_exe_path (const char *name, const char *value);
42914642e01fSmrgvoid lt_update_lib_path (const char *name, const char *value);
42926747b715Smrgchar **prepare_spawn (char **argv);
42936747b715Smrgvoid lt_dump_script (FILE *f);
42944642e01fSmrgEOF
42954642e01fSmrg
42964642e01fSmrg	    cat <<EOF
42976747b715Smrgvolatile const char * MAGIC_EXE = "$magic_exe";
42984642e01fSmrgconst char * LIB_PATH_VARNAME = "$shlibpath_var";
42994642e01fSmrgEOF
430005b261ecSmrg
43014642e01fSmrg	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
43026747b715Smrg              func_to_host_path "$temp_rpath"
43034642e01fSmrg	      cat <<EOF
43046747b715Smrgconst char * LIB_PATH_VALUE   = "$func_to_host_path_result";
43054642e01fSmrgEOF
43064642e01fSmrg	    else
43074642e01fSmrg	      cat <<"EOF"
43084642e01fSmrgconst char * LIB_PATH_VALUE   = "";
43094642e01fSmrgEOF
431005b261ecSmrg	    fi
431105b261ecSmrg
43124642e01fSmrg	    if test -n "$dllsearchpath"; then
43136747b715Smrg              func_to_host_path "$dllsearchpath:"
43144642e01fSmrg	      cat <<EOF
43154642e01fSmrgconst char * EXE_PATH_VARNAME = "PATH";
43166747b715Smrgconst char * EXE_PATH_VALUE   = "$func_to_host_path_result";
431705b261ecSmrgEOF
431805b261ecSmrg	    else
43194642e01fSmrg	      cat <<"EOF"
43204642e01fSmrgconst char * EXE_PATH_VARNAME = "";
43214642e01fSmrgconst char * EXE_PATH_VALUE   = "";
43224642e01fSmrgEOF
432305b261ecSmrg	    fi
43244642e01fSmrg
43254642e01fSmrg	    if test "$fast_install" = yes; then
43264642e01fSmrg	      cat <<EOF
43274642e01fSmrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
43284642e01fSmrgEOF
432905b261ecSmrg	    else
43304642e01fSmrg	      cat <<EOF
43314642e01fSmrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
43324642e01fSmrgEOF
433305b261ecSmrg	    fi
433405b261ecSmrg
433505b261ecSmrg
43364642e01fSmrg	    cat <<"EOF"
433705b261ecSmrg
43384642e01fSmrg#define LTWRAPPER_OPTION_PREFIX         "--lt-"
433905b261ecSmrg
43404642e01fSmrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
43414642e01fSmrgstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
43426747b715Smrgstatic const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
434305b261ecSmrg
43444642e01fSmrgint
43454642e01fSmrgmain (int argc, char *argv[])
43464642e01fSmrg{
43474642e01fSmrg  char **newargz;
43484642e01fSmrg  int  newargc;
43494642e01fSmrg  char *tmp_pathspec;
43504642e01fSmrg  char *actual_cwrapper_path;
43514642e01fSmrg  char *actual_cwrapper_name;
43524642e01fSmrg  char *target_name;
43534642e01fSmrg  char *lt_argv_zero;
43544642e01fSmrg  intptr_t rval = 127;
435505b261ecSmrg
43564642e01fSmrg  int i;
435705b261ecSmrg
43584642e01fSmrg  program_name = (char *) xstrdup (base_name (argv[0]));
43596747b715Smrg  newargz = XMALLOC (char *, argc + 1);
436005b261ecSmrg
43616747b715Smrg  /* very simple arg parsing; don't want to rely on getopt
43626747b715Smrg   * also, copy all non cwrapper options to newargz, except
43636747b715Smrg   * argz[0], which is handled differently
43646747b715Smrg   */
43656747b715Smrg  newargc=0;
43664642e01fSmrg  for (i = 1; i < argc; i++)
43674642e01fSmrg    {
43684642e01fSmrg      if (strcmp (argv[i], dumpscript_opt) == 0)
43694642e01fSmrg	{
43704642e01fSmrgEOF
43714642e01fSmrg	    case "$host" in
43724642e01fSmrg	      *mingw* | *cygwin* )
43734642e01fSmrg		# make stdout use "unix" line endings
43744642e01fSmrg		echo "          setmode(1,_O_BINARY);"
43754642e01fSmrg		;;
43764642e01fSmrg	      esac
437705b261ecSmrg
43784642e01fSmrg	    cat <<"EOF"
43796747b715Smrg	  lt_dump_script (stdout);
43804642e01fSmrg	  return 0;
43814642e01fSmrg	}
43826747b715Smrg      if (strcmp (argv[i], debug_opt) == 0)
43836747b715Smrg	{
43846747b715Smrg          lt_debug = 1;
43856747b715Smrg          continue;
43866747b715Smrg	}
43876747b715Smrg      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
43886747b715Smrg        {
43896747b715Smrg          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
43906747b715Smrg             namespace, but it is not one of the ones we know about and
43916747b715Smrg             have already dealt with, above (inluding dump-script), then
43926747b715Smrg             report an error. Otherwise, targets might begin to believe
43936747b715Smrg             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
43946747b715Smrg             namespace. The first time any user complains about this, we'll
43956747b715Smrg             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
43966747b715Smrg             or a configure.ac-settable value.
43976747b715Smrg           */
43986747b715Smrg          lt_fatal (__FILE__, __LINE__,
43996747b715Smrg		    "unrecognized %s option: '%s'",
44006747b715Smrg                    ltwrapper_option_prefix, argv[i]);
44016747b715Smrg        }
44026747b715Smrg      /* otherwise ... */
44036747b715Smrg      newargz[++newargc] = xstrdup (argv[i]);
44044642e01fSmrg    }
44056747b715Smrg  newargz[++newargc] = NULL;
44066747b715Smrg
44076747b715SmrgEOF
44086747b715Smrg	    cat <<EOF
44096747b715Smrg  /* The GNU banner must be the first non-error debug message */
44106747b715Smrg  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
44116747b715SmrgEOF
44126747b715Smrg	    cat <<"EOF"
44136747b715Smrg  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
44146747b715Smrg  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
441505b261ecSmrg
44164642e01fSmrg  tmp_pathspec = find_executable (argv[0]);
44174642e01fSmrg  if (tmp_pathspec == NULL)
44186747b715Smrg    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
44196747b715Smrg  lt_debugprintf (__FILE__, __LINE__,
44206747b715Smrg                  "(main) found exe (before symlink chase) at: %s\n",
44216747b715Smrg		  tmp_pathspec);
44224642e01fSmrg
44234642e01fSmrg  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
44246747b715Smrg  lt_debugprintf (__FILE__, __LINE__,
44256747b715Smrg                  "(main) found exe (after symlink chase) at: %s\n",
44266747b715Smrg		  actual_cwrapper_path);
44274642e01fSmrg  XFREE (tmp_pathspec);
44284642e01fSmrg
44296747b715Smrg  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
44304642e01fSmrg  strendzap (actual_cwrapper_path, actual_cwrapper_name);
44314642e01fSmrg
44324642e01fSmrg  /* wrapper name transforms */
44334642e01fSmrg  strendzap (actual_cwrapper_name, ".exe");
44344642e01fSmrg  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
44354642e01fSmrg  XFREE (actual_cwrapper_name);
44364642e01fSmrg  actual_cwrapper_name = tmp_pathspec;
44374642e01fSmrg  tmp_pathspec = 0;
44384642e01fSmrg
44394642e01fSmrg  /* target_name transforms -- use actual target program name; might have lt- prefix */
44404642e01fSmrg  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
44414642e01fSmrg  strendzap (target_name, ".exe");
44424642e01fSmrg  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
44434642e01fSmrg  XFREE (target_name);
44444642e01fSmrg  target_name = tmp_pathspec;
44454642e01fSmrg  tmp_pathspec = 0;
44464642e01fSmrg
44476747b715Smrg  lt_debugprintf (__FILE__, __LINE__,
44486747b715Smrg		  "(main) libtool target name: %s\n",
44496747b715Smrg		  target_name);
44504642e01fSmrgEOF
445105b261ecSmrg
44524642e01fSmrg	    cat <<EOF
44534642e01fSmrg  newargz[0] =
44544642e01fSmrg    XMALLOC (char, (strlen (actual_cwrapper_path) +
44554642e01fSmrg		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
44564642e01fSmrg  strcpy (newargz[0], actual_cwrapper_path);
44574642e01fSmrg  strcat (newargz[0], "$objdir");
44584642e01fSmrg  strcat (newargz[0], "/");
44594642e01fSmrgEOF
446005b261ecSmrg
44614642e01fSmrg	    cat <<"EOF"
44624642e01fSmrg  /* stop here, and copy so we don't have to do this twice */
44634642e01fSmrg  tmp_pathspec = xstrdup (newargz[0]);
446405b261ecSmrg
44654642e01fSmrg  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
44664642e01fSmrg  strcat (newargz[0], actual_cwrapper_name);
446705b261ecSmrg
44684642e01fSmrg  /* DO want the lt- prefix here if it exists, so use target_name */
44694642e01fSmrg  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
44704642e01fSmrg  XFREE (tmp_pathspec);
44714642e01fSmrg  tmp_pathspec = NULL;
44724642e01fSmrgEOF
447305b261ecSmrg
44744642e01fSmrg	    case $host_os in
44754642e01fSmrg	      mingw*)
44764642e01fSmrg	    cat <<"EOF"
44774642e01fSmrg  {
44784642e01fSmrg    char* p;
44794642e01fSmrg    while ((p = strchr (newargz[0], '\\')) != NULL)
44804642e01fSmrg      {
44814642e01fSmrg	*p = '/';
44824642e01fSmrg      }
44834642e01fSmrg    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
44844642e01fSmrg      {
44854642e01fSmrg	*p = '/';
44864642e01fSmrg      }
44874642e01fSmrg  }
44884642e01fSmrgEOF
44894642e01fSmrg	    ;;
44904642e01fSmrg	    esac
449105b261ecSmrg
44924642e01fSmrg	    cat <<"EOF"
44934642e01fSmrg  XFREE (target_name);
44944642e01fSmrg  XFREE (actual_cwrapper_path);
44954642e01fSmrg  XFREE (actual_cwrapper_name);
449605b261ecSmrg
44974642e01fSmrg  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
44984642e01fSmrg  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
44996747b715Smrg  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
45006747b715Smrg     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
45016747b715Smrg     because on Windows, both *_VARNAMEs are PATH but uninstalled
45026747b715Smrg     libraries must come first. */
45034642e01fSmrg  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
45046747b715Smrg  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
450505b261ecSmrg
45066747b715Smrg  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
45076747b715Smrg		  nonnull (lt_argv_zero));
45084642e01fSmrg  for (i = 0; i < newargc; i++)
45094642e01fSmrg    {
45106747b715Smrg      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
45116747b715Smrg		      i, nonnull (newargz[i]));
45124642e01fSmrg    }
451305b261ecSmrg
45144642e01fSmrgEOF
451505b261ecSmrg
45164642e01fSmrg	    case $host_os in
45174642e01fSmrg	      mingw*)
45184642e01fSmrg		cat <<"EOF"
45194642e01fSmrg  /* execv doesn't actually work on mingw as expected on unix */
45206747b715Smrg  newargz = prepare_spawn (newargz);
45214642e01fSmrg  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
45224642e01fSmrg  if (rval == -1)
45234642e01fSmrg    {
45244642e01fSmrg      /* failed to start process */
45256747b715Smrg      lt_debugprintf (__FILE__, __LINE__,
45266747b715Smrg		      "(main) failed to launch target \"%s\": %s\n",
45276747b715Smrg		      lt_argv_zero, nonnull (strerror (errno)));
45284642e01fSmrg      return 127;
45294642e01fSmrg    }
45304642e01fSmrg  return rval;
45314642e01fSmrgEOF
45324642e01fSmrg		;;
45334642e01fSmrg	      *)
45344642e01fSmrg		cat <<"EOF"
45354642e01fSmrg  execv (lt_argv_zero, newargz);
45364642e01fSmrg  return rval; /* =127, but avoids unused variable warning */
45374642e01fSmrgEOF
45384642e01fSmrg		;;
45394642e01fSmrg	    esac
454005b261ecSmrg
45414642e01fSmrg	    cat <<"EOF"
45424642e01fSmrg}
454305b261ecSmrg
45444642e01fSmrgvoid *
45454642e01fSmrgxmalloc (size_t num)
45464642e01fSmrg{
45474642e01fSmrg  void *p = (void *) malloc (num);
45484642e01fSmrg  if (!p)
45496747b715Smrg    lt_fatal (__FILE__, __LINE__, "memory exhausted");
455005b261ecSmrg
45514642e01fSmrg  return p;
45524642e01fSmrg}
455305b261ecSmrg
45544642e01fSmrgchar *
45554642e01fSmrgxstrdup (const char *string)
45564642e01fSmrg{
45574642e01fSmrg  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
45584642e01fSmrg			  string) : NULL;
45594642e01fSmrg}
456005b261ecSmrg
45614642e01fSmrgconst char *
45624642e01fSmrgbase_name (const char *name)
45634642e01fSmrg{
45644642e01fSmrg  const char *base;
456505b261ecSmrg
45664642e01fSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
45674642e01fSmrg  /* Skip over the disk name in MSDOS pathnames. */
45684642e01fSmrg  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
45694642e01fSmrg    name += 2;
45704642e01fSmrg#endif
457105b261ecSmrg
45724642e01fSmrg  for (base = name; *name; name++)
45734642e01fSmrg    if (IS_DIR_SEPARATOR (*name))
45744642e01fSmrg      base = name + 1;
45754642e01fSmrg  return base;
45764642e01fSmrg}
457705b261ecSmrg
45784642e01fSmrgint
45794642e01fSmrgcheck_executable (const char *path)
45804642e01fSmrg{
45814642e01fSmrg  struct stat st;
458205b261ecSmrg
45836747b715Smrg  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
45846747b715Smrg                  nonempty (path));
45854642e01fSmrg  if ((!path) || (!*path))
45864642e01fSmrg    return 0;
458705b261ecSmrg
45884642e01fSmrg  if ((stat (path, &st) >= 0)
45894642e01fSmrg      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
45904642e01fSmrg    return 1;
45914642e01fSmrg  else
45924642e01fSmrg    return 0;
45934642e01fSmrg}
459405b261ecSmrg
45954642e01fSmrgint
45964642e01fSmrgmake_executable (const char *path)
45974642e01fSmrg{
45984642e01fSmrg  int rval = 0;
45994642e01fSmrg  struct stat st;
460005b261ecSmrg
46016747b715Smrg  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
46026747b715Smrg                  nonempty (path));
46034642e01fSmrg  if ((!path) || (!*path))
46044642e01fSmrg    return 0;
460505b261ecSmrg
46064642e01fSmrg  if (stat (path, &st) >= 0)
46074642e01fSmrg    {
46084642e01fSmrg      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
46094642e01fSmrg    }
46104642e01fSmrg  return rval;
46114642e01fSmrg}
461205b261ecSmrg
46134642e01fSmrg/* Searches for the full path of the wrapper.  Returns
46144642e01fSmrg   newly allocated full path name if found, NULL otherwise
46154642e01fSmrg   Does not chase symlinks, even on platforms that support them.
46164642e01fSmrg*/
46174642e01fSmrgchar *
46184642e01fSmrgfind_executable (const char *wrapper)
46194642e01fSmrg{
46204642e01fSmrg  int has_slash = 0;
46214642e01fSmrg  const char *p;
46224642e01fSmrg  const char *p_next;
46234642e01fSmrg  /* static buffer for getcwd */
46244642e01fSmrg  char tmp[LT_PATHMAX + 1];
46254642e01fSmrg  int tmp_len;
46264642e01fSmrg  char *concat_name;
462705b261ecSmrg
46286747b715Smrg  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
46296747b715Smrg                  nonempty (wrapper));
463005b261ecSmrg
46314642e01fSmrg  if ((wrapper == NULL) || (*wrapper == '\0'))
46324642e01fSmrg    return NULL;
463305b261ecSmrg
46344642e01fSmrg  /* Absolute path? */
46354642e01fSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
46364642e01fSmrg  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
46374642e01fSmrg    {
46384642e01fSmrg      concat_name = xstrdup (wrapper);
46394642e01fSmrg      if (check_executable (concat_name))
46404642e01fSmrg	return concat_name;
46414642e01fSmrg      XFREE (concat_name);
46424642e01fSmrg    }
46434642e01fSmrg  else
46444642e01fSmrg    {
46454642e01fSmrg#endif
46464642e01fSmrg      if (IS_DIR_SEPARATOR (wrapper[0]))
46474642e01fSmrg	{
46484642e01fSmrg	  concat_name = xstrdup (wrapper);
46494642e01fSmrg	  if (check_executable (concat_name))
46504642e01fSmrg	    return concat_name;
46514642e01fSmrg	  XFREE (concat_name);
46524642e01fSmrg	}
46534642e01fSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
46544642e01fSmrg    }
46554642e01fSmrg#endif
465605b261ecSmrg
46574642e01fSmrg  for (p = wrapper; *p; p++)
46584642e01fSmrg    if (*p == '/')
46594642e01fSmrg      {
46604642e01fSmrg	has_slash = 1;
46614642e01fSmrg	break;
46624642e01fSmrg      }
46634642e01fSmrg  if (!has_slash)
46644642e01fSmrg    {
46654642e01fSmrg      /* no slashes; search PATH */
46664642e01fSmrg      const char *path = getenv ("PATH");
46674642e01fSmrg      if (path != NULL)
46684642e01fSmrg	{
46694642e01fSmrg	  for (p = path; *p; p = p_next)
46704642e01fSmrg	    {
46714642e01fSmrg	      const char *q;
46724642e01fSmrg	      size_t p_len;
46734642e01fSmrg	      for (q = p; *q; q++)
46744642e01fSmrg		if (IS_PATH_SEPARATOR (*q))
46754642e01fSmrg		  break;
46764642e01fSmrg	      p_len = q - p;
46774642e01fSmrg	      p_next = (*q == '\0' ? q : q + 1);
46784642e01fSmrg	      if (p_len == 0)
46794642e01fSmrg		{
46804642e01fSmrg		  /* empty path: current directory */
46814642e01fSmrg		  if (getcwd (tmp, LT_PATHMAX) == NULL)
46826747b715Smrg		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
46836747b715Smrg                              nonnull (strerror (errno)));
46844642e01fSmrg		  tmp_len = strlen (tmp);
46854642e01fSmrg		  concat_name =
46864642e01fSmrg		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
46874642e01fSmrg		  memcpy (concat_name, tmp, tmp_len);
46884642e01fSmrg		  concat_name[tmp_len] = '/';
46894642e01fSmrg		  strcpy (concat_name + tmp_len + 1, wrapper);
46904642e01fSmrg		}
46914642e01fSmrg	      else
46924642e01fSmrg		{
46934642e01fSmrg		  concat_name =
46944642e01fSmrg		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
46954642e01fSmrg		  memcpy (concat_name, p, p_len);
46964642e01fSmrg		  concat_name[p_len] = '/';
46974642e01fSmrg		  strcpy (concat_name + p_len + 1, wrapper);
46984642e01fSmrg		}
46994642e01fSmrg	      if (check_executable (concat_name))
47004642e01fSmrg		return concat_name;
47014642e01fSmrg	      XFREE (concat_name);
47024642e01fSmrg	    }
47034642e01fSmrg	}
47044642e01fSmrg      /* not found in PATH; assume curdir */
47054642e01fSmrg    }
47064642e01fSmrg  /* Relative path | not found in path: prepend cwd */
47074642e01fSmrg  if (getcwd (tmp, LT_PATHMAX) == NULL)
47086747b715Smrg    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
47096747b715Smrg              nonnull (strerror (errno)));
47104642e01fSmrg  tmp_len = strlen (tmp);
47114642e01fSmrg  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
47124642e01fSmrg  memcpy (concat_name, tmp, tmp_len);
47134642e01fSmrg  concat_name[tmp_len] = '/';
47144642e01fSmrg  strcpy (concat_name + tmp_len + 1, wrapper);
471505b261ecSmrg
47164642e01fSmrg  if (check_executable (concat_name))
47174642e01fSmrg    return concat_name;
47184642e01fSmrg  XFREE (concat_name);
47194642e01fSmrg  return NULL;
47204642e01fSmrg}
472105b261ecSmrg
47224642e01fSmrgchar *
47234642e01fSmrgchase_symlinks (const char *pathspec)
47244642e01fSmrg{
47254642e01fSmrg#ifndef S_ISLNK
47264642e01fSmrg  return xstrdup (pathspec);
47274642e01fSmrg#else
47284642e01fSmrg  char buf[LT_PATHMAX];
47294642e01fSmrg  struct stat s;
47304642e01fSmrg  char *tmp_pathspec = xstrdup (pathspec);
47314642e01fSmrg  char *p;
47324642e01fSmrg  int has_symlinks = 0;
47334642e01fSmrg  while (strlen (tmp_pathspec) && !has_symlinks)
47344642e01fSmrg    {
47356747b715Smrg      lt_debugprintf (__FILE__, __LINE__,
47366747b715Smrg		      "checking path component for symlinks: %s\n",
47376747b715Smrg		      tmp_pathspec);
47384642e01fSmrg      if (lstat (tmp_pathspec, &s) == 0)
47394642e01fSmrg	{
47404642e01fSmrg	  if (S_ISLNK (s.st_mode) != 0)
47414642e01fSmrg	    {
47424642e01fSmrg	      has_symlinks = 1;
47434642e01fSmrg	      break;
47444642e01fSmrg	    }
474505b261ecSmrg
47464642e01fSmrg	  /* search backwards for last DIR_SEPARATOR */
47474642e01fSmrg	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
47484642e01fSmrg	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
47494642e01fSmrg	    p--;
47504642e01fSmrg	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
47514642e01fSmrg	    {
47524642e01fSmrg	      /* no more DIR_SEPARATORS left */
47534642e01fSmrg	      break;
47544642e01fSmrg	    }
47554642e01fSmrg	  *p = '\0';
47564642e01fSmrg	}
47574642e01fSmrg      else
47584642e01fSmrg	{
47596747b715Smrg	  lt_fatal (__FILE__, __LINE__,
47606747b715Smrg		    "error accessing file \"%s\": %s",
47616747b715Smrg		    tmp_pathspec, nonnull (strerror (errno)));
47624642e01fSmrg	}
47634642e01fSmrg    }
47644642e01fSmrg  XFREE (tmp_pathspec);
476505b261ecSmrg
47664642e01fSmrg  if (!has_symlinks)
47674642e01fSmrg    {
47684642e01fSmrg      return xstrdup (pathspec);
47694642e01fSmrg    }
477005b261ecSmrg
47714642e01fSmrg  tmp_pathspec = realpath (pathspec, buf);
47724642e01fSmrg  if (tmp_pathspec == 0)
47734642e01fSmrg    {
47746747b715Smrg      lt_fatal (__FILE__, __LINE__,
47756747b715Smrg		"could not follow symlinks for %s", pathspec);
47764642e01fSmrg    }
47774642e01fSmrg  return xstrdup (tmp_pathspec);
47784642e01fSmrg#endif
47794642e01fSmrg}
478005b261ecSmrg
47814642e01fSmrgchar *
47824642e01fSmrgstrendzap (char *str, const char *pat)
47834642e01fSmrg{
47844642e01fSmrg  size_t len, patlen;
478505b261ecSmrg
47864642e01fSmrg  assert (str != NULL);
47874642e01fSmrg  assert (pat != NULL);
478805b261ecSmrg
47894642e01fSmrg  len = strlen (str);
47904642e01fSmrg  patlen = strlen (pat);
479105b261ecSmrg
47924642e01fSmrg  if (patlen <= len)
47934642e01fSmrg    {
47944642e01fSmrg      str += len - patlen;
47954642e01fSmrg      if (strcmp (str, pat) == 0)
47964642e01fSmrg	*str = '\0';
47974642e01fSmrg    }
47984642e01fSmrg  return str;
47994642e01fSmrg}
480005b261ecSmrg
48016747b715Smrgvoid
48026747b715Smrglt_debugprintf (const char *file, int line, const char *fmt, ...)
48036747b715Smrg{
48046747b715Smrg  va_list args;
48056747b715Smrg  if (lt_debug)
48066747b715Smrg    {
48076747b715Smrg      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
48086747b715Smrg      va_start (args, fmt);
48096747b715Smrg      (void) vfprintf (stderr, fmt, args);
48106747b715Smrg      va_end (args);
48116747b715Smrg    }
48126747b715Smrg}
48136747b715Smrg
48144642e01fSmrgstatic void
48156747b715Smrglt_error_core (int exit_status, const char *file,
48166747b715Smrg	       int line, const char *mode,
48174642e01fSmrg	       const char *message, va_list ap)
48184642e01fSmrg{
48196747b715Smrg  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
48204642e01fSmrg  vfprintf (stderr, message, ap);
48214642e01fSmrg  fprintf (stderr, ".\n");
482205b261ecSmrg
48234642e01fSmrg  if (exit_status >= 0)
48244642e01fSmrg    exit (exit_status);
48254642e01fSmrg}
482605b261ecSmrg
48274642e01fSmrgvoid
48286747b715Smrglt_fatal (const char *file, int line, const char *message, ...)
48294642e01fSmrg{
48304642e01fSmrg  va_list ap;
48314642e01fSmrg  va_start (ap, message);
48326747b715Smrg  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
48334642e01fSmrg  va_end (ap);
48344642e01fSmrg}
483505b261ecSmrg
48366747b715Smrgstatic const char *
48376747b715Smrgnonnull (const char *s)
48386747b715Smrg{
48396747b715Smrg  return s ? s : "(null)";
48406747b715Smrg}
48416747b715Smrg
48426747b715Smrgstatic const char *
48436747b715Smrgnonempty (const char *s)
48446747b715Smrg{
48456747b715Smrg  return (s && !*s) ? "(empty)" : nonnull (s);
48466747b715Smrg}
48476747b715Smrg
48484642e01fSmrgvoid
48494642e01fSmrglt_setenv (const char *name, const char *value)
48504642e01fSmrg{
48516747b715Smrg  lt_debugprintf (__FILE__, __LINE__,
48526747b715Smrg		  "(lt_setenv) setting '%s' to '%s'\n",
48536747b715Smrg                  nonnull (name), nonnull (value));
48544642e01fSmrg  {
48554642e01fSmrg#ifdef HAVE_SETENV
48564642e01fSmrg    /* always make a copy, for consistency with !HAVE_SETENV */
48574642e01fSmrg    char *str = xstrdup (value);
48584642e01fSmrg    setenv (name, str, 1);
48594642e01fSmrg#else
48604642e01fSmrg    int len = strlen (name) + 1 + strlen (value) + 1;
48614642e01fSmrg    char *str = XMALLOC (char, len);
48624642e01fSmrg    sprintf (str, "%s=%s", name, value);
48634642e01fSmrg    if (putenv (str) != EXIT_SUCCESS)
48644642e01fSmrg      {
48654642e01fSmrg        XFREE (str);
48664642e01fSmrg      }
48674642e01fSmrg#endif
48684642e01fSmrg  }
48694642e01fSmrg}
487005b261ecSmrg
48714642e01fSmrgchar *
48724642e01fSmrglt_extend_str (const char *orig_value, const char *add, int to_end)
48734642e01fSmrg{
48744642e01fSmrg  char *new_value;
48754642e01fSmrg  if (orig_value && *orig_value)
48764642e01fSmrg    {
48774642e01fSmrg      int orig_value_len = strlen (orig_value);
48784642e01fSmrg      int add_len = strlen (add);
48794642e01fSmrg      new_value = XMALLOC (char, add_len + orig_value_len + 1);
48804642e01fSmrg      if (to_end)
48814642e01fSmrg        {
48824642e01fSmrg          strcpy (new_value, orig_value);
48834642e01fSmrg          strcpy (new_value + orig_value_len, add);
48844642e01fSmrg        }
48854642e01fSmrg      else
48864642e01fSmrg        {
48874642e01fSmrg          strcpy (new_value, add);
48884642e01fSmrg          strcpy (new_value + add_len, orig_value);
48894642e01fSmrg        }
48904642e01fSmrg    }
48914642e01fSmrg  else
48924642e01fSmrg    {
48934642e01fSmrg      new_value = xstrdup (add);
48944642e01fSmrg    }
48954642e01fSmrg  return new_value;
48964642e01fSmrg}
489705b261ecSmrg
48984642e01fSmrgvoid
48994642e01fSmrglt_update_exe_path (const char *name, const char *value)
49004642e01fSmrg{
49016747b715Smrg  lt_debugprintf (__FILE__, __LINE__,
49026747b715Smrg		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
49036747b715Smrg                  nonnull (name), nonnull (value));
490405b261ecSmrg
49054642e01fSmrg  if (name && *name && value && *value)
49064642e01fSmrg    {
49074642e01fSmrg      char *new_value = lt_extend_str (getenv (name), value, 0);
49084642e01fSmrg      /* some systems can't cope with a ':'-terminated path #' */
49094642e01fSmrg      int len = strlen (new_value);
49104642e01fSmrg      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
49114642e01fSmrg        {
49124642e01fSmrg          new_value[len-1] = '\0';
49134642e01fSmrg        }
49144642e01fSmrg      lt_setenv (name, new_value);
49154642e01fSmrg      XFREE (new_value);
49164642e01fSmrg    }
49174642e01fSmrg}
491805b261ecSmrg
49194642e01fSmrgvoid
49204642e01fSmrglt_update_lib_path (const char *name, const char *value)
49214642e01fSmrg{
49226747b715Smrg  lt_debugprintf (__FILE__, __LINE__,
49236747b715Smrg		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
49246747b715Smrg                  nonnull (name), nonnull (value));
492505b261ecSmrg
49264642e01fSmrg  if (name && *name && value && *value)
49274642e01fSmrg    {
49284642e01fSmrg      char *new_value = lt_extend_str (getenv (name), value, 0);
49294642e01fSmrg      lt_setenv (name, new_value);
49304642e01fSmrg      XFREE (new_value);
49314642e01fSmrg    }
49324642e01fSmrg}
493305b261ecSmrg
49346747b715SmrgEOF
49356747b715Smrg	    case $host_os in
49366747b715Smrg	      mingw*)
49376747b715Smrg		cat <<"EOF"
49386747b715Smrg
49396747b715Smrg/* Prepares an argument vector before calling spawn().
49406747b715Smrg   Note that spawn() does not by itself call the command interpreter
49416747b715Smrg     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
49426747b715Smrg      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
49436747b715Smrg         GetVersionEx(&v);
49446747b715Smrg         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
49456747b715Smrg      }) ? "cmd.exe" : "command.com").
49466747b715Smrg   Instead it simply concatenates the arguments, separated by ' ', and calls
49476747b715Smrg   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
49486747b715Smrg   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
49496747b715Smrg   special way:
49506747b715Smrg   - Space and tab are interpreted as delimiters. They are not treated as
49516747b715Smrg     delimiters if they are surrounded by double quotes: "...".
49526747b715Smrg   - Unescaped double quotes are removed from the input. Their only effect is
49536747b715Smrg     that within double quotes, space and tab are treated like normal
49546747b715Smrg     characters.
49556747b715Smrg   - Backslashes not followed by double quotes are not special.
49566747b715Smrg   - But 2*n+1 backslashes followed by a double quote become
49576747b715Smrg     n backslashes followed by a double quote (n >= 0):
49586747b715Smrg       \" -> "
49596747b715Smrg       \\\" -> \"
49606747b715Smrg       \\\\\" -> \\"
49616747b715Smrg */
49626747b715Smrg#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"
49636747b715Smrg#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"
49646747b715Smrgchar **
49656747b715Smrgprepare_spawn (char **argv)
49666747b715Smrg{
49676747b715Smrg  size_t argc;
49686747b715Smrg  char **new_argv;
49696747b715Smrg  size_t i;
49706747b715Smrg
49716747b715Smrg  /* Count number of arguments.  */
49726747b715Smrg  for (argc = 0; argv[argc] != NULL; argc++)
49736747b715Smrg    ;
49746747b715Smrg
49756747b715Smrg  /* Allocate new argument vector.  */
49766747b715Smrg  new_argv = XMALLOC (char *, argc + 1);
49776747b715Smrg
49786747b715Smrg  /* Put quoted arguments into the new argument vector.  */
49796747b715Smrg  for (i = 0; i < argc; i++)
49806747b715Smrg    {
49816747b715Smrg      const char *string = argv[i];
49826747b715Smrg
49836747b715Smrg      if (string[0] == '\0')
49846747b715Smrg	new_argv[i] = xstrdup ("\"\"");
49856747b715Smrg      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
49866747b715Smrg	{
49876747b715Smrg	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
49886747b715Smrg	  size_t length;
49896747b715Smrg	  unsigned int backslashes;
49906747b715Smrg	  const char *s;
49916747b715Smrg	  char *quoted_string;
49926747b715Smrg	  char *p;
49936747b715Smrg
49946747b715Smrg	  length = 0;
49956747b715Smrg	  backslashes = 0;
49966747b715Smrg	  if (quote_around)
49976747b715Smrg	    length++;
49986747b715Smrg	  for (s = string; *s != '\0'; s++)
49996747b715Smrg	    {
50006747b715Smrg	      char c = *s;
50016747b715Smrg	      if (c == '"')
50026747b715Smrg		length += backslashes + 1;
50036747b715Smrg	      length++;
50046747b715Smrg	      if (c == '\\')
50056747b715Smrg		backslashes++;
50066747b715Smrg	      else
50076747b715Smrg		backslashes = 0;
50086747b715Smrg	    }
50096747b715Smrg	  if (quote_around)
50106747b715Smrg	    length += backslashes + 1;
50116747b715Smrg
50126747b715Smrg	  quoted_string = XMALLOC (char, length + 1);
50136747b715Smrg
50146747b715Smrg	  p = quoted_string;
50156747b715Smrg	  backslashes = 0;
50166747b715Smrg	  if (quote_around)
50176747b715Smrg	    *p++ = '"';
50186747b715Smrg	  for (s = string; *s != '\0'; s++)
50196747b715Smrg	    {
50206747b715Smrg	      char c = *s;
50216747b715Smrg	      if (c == '"')
50226747b715Smrg		{
50236747b715Smrg		  unsigned int j;
50246747b715Smrg		  for (j = backslashes + 1; j > 0; j--)
50256747b715Smrg		    *p++ = '\\';
50266747b715Smrg		}
50276747b715Smrg	      *p++ = c;
50286747b715Smrg	      if (c == '\\')
50296747b715Smrg		backslashes++;
50306747b715Smrg	      else
50316747b715Smrg		backslashes = 0;
50326747b715Smrg	    }
50336747b715Smrg	  if (quote_around)
50346747b715Smrg	    {
50356747b715Smrg	      unsigned int j;
50366747b715Smrg	      for (j = backslashes; j > 0; j--)
50376747b715Smrg		*p++ = '\\';
50386747b715Smrg	      *p++ = '"';
50396747b715Smrg	    }
50406747b715Smrg	  *p = '\0';
50416747b715Smrg
50426747b715Smrg	  new_argv[i] = quoted_string;
50436747b715Smrg	}
50446747b715Smrg      else
50456747b715Smrg	new_argv[i] = (char *) string;
50466747b715Smrg    }
50476747b715Smrg  new_argv[argc] = NULL;
50486747b715Smrg
50496747b715Smrg  return new_argv;
50506747b715Smrg}
50516747b715SmrgEOF
50526747b715Smrg		;;
50536747b715Smrg	    esac
50546747b715Smrg
50556747b715Smrg            cat <<"EOF"
50566747b715Smrgvoid lt_dump_script (FILE* f)
50576747b715Smrg{
50586747b715SmrgEOF
50596747b715Smrg	    func_emit_wrapper yes |
50606747b715Smrg              $SED -e 's/\([\\"]\)/\\\1/g' \
50616747b715Smrg	           -e 's/^/  fputs ("/' -e 's/$/\\n", f);/'
506205b261ecSmrg
50636747b715Smrg            cat <<"EOF"
50646747b715Smrg}
50654642e01fSmrgEOF
50664642e01fSmrg}
50674642e01fSmrg# end: func_emit_cwrapperexe_src
506805b261ecSmrg
50696747b715Smrg# func_win32_import_lib_p ARG
50706747b715Smrg# True if ARG is an import lib, as indicated by $file_magic_cmd
50716747b715Smrgfunc_win32_import_lib_p ()
50726747b715Smrg{
50736747b715Smrg    $opt_debug
50746747b715Smrg    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
50756747b715Smrg    *import*) : ;;
50766747b715Smrg    *) false ;;
50776747b715Smrg    esac
50786747b715Smrg}
50796747b715Smrg
50804642e01fSmrg# func_mode_link arg...
50814642e01fSmrgfunc_mode_link ()
50824642e01fSmrg{
50834642e01fSmrg    $opt_debug
50844642e01fSmrg    case $host in
50854642e01fSmrg    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
50864642e01fSmrg      # It is impossible to link a dll without this setting, and
50874642e01fSmrg      # we shouldn't force the makefile maintainer to figure out
50884642e01fSmrg      # which system we are compiling for in order to pass an extra
50894642e01fSmrg      # flag for every libtool invocation.
50904642e01fSmrg      # allow_undefined=no
509105b261ecSmrg
50924642e01fSmrg      # FIXME: Unfortunately, there are problems with the above when trying
50934642e01fSmrg      # to make a dll which has undefined symbols, in which case not
50944642e01fSmrg      # even a static library is built.  For now, we need to specify
50954642e01fSmrg      # -no-undefined on the libtool link line when we can be certain
50964642e01fSmrg      # that all symbols are satisfied, otherwise we get a static library.
50974642e01fSmrg      allow_undefined=yes
50984642e01fSmrg      ;;
50994642e01fSmrg    *)
51004642e01fSmrg      allow_undefined=yes
51014642e01fSmrg      ;;
51024642e01fSmrg    esac
51034642e01fSmrg    libtool_args=$nonopt
51044642e01fSmrg    base_compile="$nonopt $@"
51054642e01fSmrg    compile_command=$nonopt
51064642e01fSmrg    finalize_command=$nonopt
510705b261ecSmrg
51084642e01fSmrg    compile_rpath=
51094642e01fSmrg    finalize_rpath=
51104642e01fSmrg    compile_shlibpath=
51114642e01fSmrg    finalize_shlibpath=
51124642e01fSmrg    convenience=
51134642e01fSmrg    old_convenience=
51144642e01fSmrg    deplibs=
51154642e01fSmrg    old_deplibs=
51164642e01fSmrg    compiler_flags=
51174642e01fSmrg    linker_flags=
51184642e01fSmrg    dllsearchpath=
51194642e01fSmrg    lib_search_path=`pwd`
51204642e01fSmrg    inst_prefix_dir=
51214642e01fSmrg    new_inherited_linker_flags=
512205b261ecSmrg
51234642e01fSmrg    avoid_version=no
51246747b715Smrg    bindir=
51254642e01fSmrg    dlfiles=
51264642e01fSmrg    dlprefiles=
51274642e01fSmrg    dlself=no
51284642e01fSmrg    export_dynamic=no
51294642e01fSmrg    export_symbols=
51304642e01fSmrg    export_symbols_regex=
51314642e01fSmrg    generated=
51324642e01fSmrg    libobjs=
51334642e01fSmrg    ltlibs=
51344642e01fSmrg    module=no
51354642e01fSmrg    no_install=no
51364642e01fSmrg    objs=
51374642e01fSmrg    non_pic_objects=
51384642e01fSmrg    precious_files_regex=
51394642e01fSmrg    prefer_static_libs=no
51404642e01fSmrg    preload=no
51414642e01fSmrg    prev=
51424642e01fSmrg    prevarg=
51434642e01fSmrg    release=
51444642e01fSmrg    rpath=
51454642e01fSmrg    xrpath=
51464642e01fSmrg    perm_rpath=
51474642e01fSmrg    temp_rpath=
51484642e01fSmrg    thread_safe=no
51494642e01fSmrg    vinfo=
51504642e01fSmrg    vinfo_number=no
51514642e01fSmrg    weak_libs=
51524642e01fSmrg    single_module="${wl}-single_module"
51534642e01fSmrg    func_infer_tag $base_compile
515405b261ecSmrg
51554642e01fSmrg    # We need to know -static, to get the right output filenames.
51564642e01fSmrg    for arg
51574642e01fSmrg    do
51584642e01fSmrg      case $arg in
51594642e01fSmrg      -shared)
51604642e01fSmrg	test "$build_libtool_libs" != yes && \
51614642e01fSmrg	  func_fatal_configuration "can not build a shared library"
51624642e01fSmrg	build_old_libs=no
51634642e01fSmrg	break
51644642e01fSmrg	;;
51654642e01fSmrg      -all-static | -static | -static-libtool-libs)
51664642e01fSmrg	case $arg in
51674642e01fSmrg	-all-static)
51684642e01fSmrg	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
51694642e01fSmrg	    func_warning "complete static linking is impossible in this configuration"
51704642e01fSmrg	  fi
51714642e01fSmrg	  if test -n "$link_static_flag"; then
51724642e01fSmrg	    dlopen_self=$dlopen_self_static
51734642e01fSmrg	  fi
51744642e01fSmrg	  prefer_static_libs=yes
51754642e01fSmrg	  ;;
51764642e01fSmrg	-static)
51774642e01fSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
51784642e01fSmrg	    dlopen_self=$dlopen_self_static
51794642e01fSmrg	  fi
51804642e01fSmrg	  prefer_static_libs=built
51814642e01fSmrg	  ;;
51824642e01fSmrg	-static-libtool-libs)
51834642e01fSmrg	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
51844642e01fSmrg	    dlopen_self=$dlopen_self_static
51854642e01fSmrg	  fi
51864642e01fSmrg	  prefer_static_libs=yes
51874642e01fSmrg	  ;;
51884642e01fSmrg	esac
51894642e01fSmrg	build_libtool_libs=no
51904642e01fSmrg	build_old_libs=yes
51914642e01fSmrg	break
51924642e01fSmrg	;;
51934642e01fSmrg      esac
51944642e01fSmrg    done
519505b261ecSmrg
51964642e01fSmrg    # See if our shared archives depend on static archives.
51974642e01fSmrg    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
519805b261ecSmrg
51994642e01fSmrg    # Go through the arguments, transforming them on the way.
52004642e01fSmrg    while test "$#" -gt 0; do
52014642e01fSmrg      arg="$1"
52024642e01fSmrg      shift
52034642e01fSmrg      func_quote_for_eval "$arg"
52044642e01fSmrg      qarg=$func_quote_for_eval_unquoted_result
52054642e01fSmrg      func_append libtool_args " $func_quote_for_eval_result"
520605b261ecSmrg
52074642e01fSmrg      # If the previous option needs an argument, assign it.
52084642e01fSmrg      if test -n "$prev"; then
52094642e01fSmrg	case $prev in
52104642e01fSmrg	output)
52114642e01fSmrg	  func_append compile_command " @OUTPUT@"
52124642e01fSmrg	  func_append finalize_command " @OUTPUT@"
52134642e01fSmrg	  ;;
52144642e01fSmrg	esac
521505b261ecSmrg
52164642e01fSmrg	case $prev in
52176747b715Smrg	bindir)
52186747b715Smrg	  bindir="$arg"
52196747b715Smrg	  prev=
52206747b715Smrg	  continue
52216747b715Smrg	  ;;
52224642e01fSmrg	dlfiles|dlprefiles)
52234642e01fSmrg	  if test "$preload" = no; then
52244642e01fSmrg	    # Add the symbol object into the linking commands.
52254642e01fSmrg	    func_append compile_command " @SYMFILE@"
52264642e01fSmrg	    func_append finalize_command " @SYMFILE@"
52274642e01fSmrg	    preload=yes
522805b261ecSmrg	  fi
52294642e01fSmrg	  case $arg in
52304642e01fSmrg	  *.la | *.lo) ;;  # We handle these cases below.
52314642e01fSmrg	  force)
52324642e01fSmrg	    if test "$dlself" = no; then
52334642e01fSmrg	      dlself=needless
52344642e01fSmrg	      export_dynamic=yes
52354642e01fSmrg	    fi
52364642e01fSmrg	    prev=
52374642e01fSmrg	    continue
52384642e01fSmrg	    ;;
52394642e01fSmrg	  self)
52404642e01fSmrg	    if test "$prev" = dlprefiles; then
52414642e01fSmrg	      dlself=yes
52424642e01fSmrg	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
52434642e01fSmrg	      dlself=yes
52444642e01fSmrg	    else
52454642e01fSmrg	      dlself=needless
52464642e01fSmrg	      export_dynamic=yes
52474642e01fSmrg	    fi
52484642e01fSmrg	    prev=
52494642e01fSmrg	    continue
52504642e01fSmrg	    ;;
52514642e01fSmrg	  *)
52524642e01fSmrg	    if test "$prev" = dlfiles; then
52536747b715Smrg	      func_append dlfiles " $arg"
52544642e01fSmrg	    else
52556747b715Smrg	      func_append dlprefiles " $arg"
52564642e01fSmrg	    fi
52574642e01fSmrg	    prev=
52584642e01fSmrg	    continue
52594642e01fSmrg	    ;;
52604642e01fSmrg	  esac
52614642e01fSmrg	  ;;
52624642e01fSmrg	expsyms)
52634642e01fSmrg	  export_symbols="$arg"
52644642e01fSmrg	  test -f "$arg" \
52654642e01fSmrg	    || func_fatal_error "symbol file \`$arg' does not exist"
52664642e01fSmrg	  prev=
52674642e01fSmrg	  continue
52684642e01fSmrg	  ;;
52694642e01fSmrg	expsyms_regex)
52704642e01fSmrg	  export_symbols_regex="$arg"
52714642e01fSmrg	  prev=
52724642e01fSmrg	  continue
52734642e01fSmrg	  ;;
52744642e01fSmrg	framework)
527505b261ecSmrg	  case $host in
52764642e01fSmrg	    *-*-darwin*)
52774642e01fSmrg	      case "$deplibs " in
52784642e01fSmrg		*" $qarg.ltframework "*) ;;
52796747b715Smrg		*) func_append deplibs " $qarg.ltframework" # this is fixed later
52804642e01fSmrg		   ;;
52814642e01fSmrg	      esac
52824642e01fSmrg	      ;;
528305b261ecSmrg	  esac
52844642e01fSmrg	  prev=
52854642e01fSmrg	  continue
528605b261ecSmrg	  ;;
52874642e01fSmrg	inst_prefix)
52884642e01fSmrg	  inst_prefix_dir="$arg"
52894642e01fSmrg	  prev=
52904642e01fSmrg	  continue
529105b261ecSmrg	  ;;
52924642e01fSmrg	objectlist)
52934642e01fSmrg	  if test -f "$arg"; then
52944642e01fSmrg	    save_arg=$arg
52954642e01fSmrg	    moreargs=
52964642e01fSmrg	    for fil in `cat "$save_arg"`
52974642e01fSmrg	    do
52986747b715Smrg#	      func_append moreargs " $fil"
52994642e01fSmrg	      arg=$fil
53004642e01fSmrg	      # A libtool-controlled object.
530105b261ecSmrg
53024642e01fSmrg	      # Check to see that this really is a libtool object.
53034642e01fSmrg	      if func_lalib_unsafe_p "$arg"; then
53044642e01fSmrg		pic_object=
53054642e01fSmrg		non_pic_object=
530605b261ecSmrg
53074642e01fSmrg		# Read the .lo file
53084642e01fSmrg		func_source "$arg"
530905b261ecSmrg
53104642e01fSmrg		if test -z "$pic_object" ||
53114642e01fSmrg		   test -z "$non_pic_object" ||
53124642e01fSmrg		   test "$pic_object" = none &&
53134642e01fSmrg		   test "$non_pic_object" = none; then
53144642e01fSmrg		  func_fatal_error "cannot find name of object for \`$arg'"
53154642e01fSmrg		fi
531605b261ecSmrg
53174642e01fSmrg		# Extract subdirectory from the argument.
53184642e01fSmrg		func_dirname "$arg" "/" ""
53194642e01fSmrg		xdir="$func_dirname_result"
532005b261ecSmrg
53214642e01fSmrg		if test "$pic_object" != none; then
53224642e01fSmrg		  # Prepend the subdirectory the object is found in.
53234642e01fSmrg		  pic_object="$xdir$pic_object"
532405b261ecSmrg
53254642e01fSmrg		  if test "$prev" = dlfiles; then
53264642e01fSmrg		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
53276747b715Smrg		      func_append dlfiles " $pic_object"
53284642e01fSmrg		      prev=
53294642e01fSmrg		      continue
53304642e01fSmrg		    else
53314642e01fSmrg		      # If libtool objects are unsupported, then we need to preload.
53324642e01fSmrg		      prev=dlprefiles
53334642e01fSmrg		    fi
53344642e01fSmrg		  fi
533505b261ecSmrg
53364642e01fSmrg		  # CHECK ME:  I think I busted this.  -Ossama
53374642e01fSmrg		  if test "$prev" = dlprefiles; then
53384642e01fSmrg		    # Preload the old-style object.
53396747b715Smrg		    func_append dlprefiles " $pic_object"
53404642e01fSmrg		    prev=
53414642e01fSmrg		  fi
534205b261ecSmrg
53434642e01fSmrg		  # A PIC object.
53444642e01fSmrg		  func_append libobjs " $pic_object"
53454642e01fSmrg		  arg="$pic_object"
53464642e01fSmrg		fi
534705b261ecSmrg
53484642e01fSmrg		# Non-PIC object.
53494642e01fSmrg		if test "$non_pic_object" != none; then
53504642e01fSmrg		  # Prepend the subdirectory the object is found in.
53514642e01fSmrg		  non_pic_object="$xdir$non_pic_object"
535205b261ecSmrg
53534642e01fSmrg		  # A standard non-PIC object
53544642e01fSmrg		  func_append non_pic_objects " $non_pic_object"
53554642e01fSmrg		  if test -z "$pic_object" || test "$pic_object" = none ; then
53564642e01fSmrg		    arg="$non_pic_object"
53574642e01fSmrg		  fi
53584642e01fSmrg		else
53594642e01fSmrg		  # If the PIC object exists, use it instead.
53604642e01fSmrg		  # $xdir was prepended to $pic_object above.
53614642e01fSmrg		  non_pic_object="$pic_object"
53624642e01fSmrg		  func_append non_pic_objects " $non_pic_object"
53634642e01fSmrg		fi
53644642e01fSmrg	      else
53654642e01fSmrg		# Only an error if not doing a dry-run.
53664642e01fSmrg		if $opt_dry_run; then
53674642e01fSmrg		  # Extract subdirectory from the argument.
53684642e01fSmrg		  func_dirname "$arg" "/" ""
53694642e01fSmrg		  xdir="$func_dirname_result"
53704642e01fSmrg
53714642e01fSmrg		  func_lo2o "$arg"
53724642e01fSmrg		  pic_object=$xdir$objdir/$func_lo2o_result
53734642e01fSmrg		  non_pic_object=$xdir$func_lo2o_result
53744642e01fSmrg		  func_append libobjs " $pic_object"
53754642e01fSmrg		  func_append non_pic_objects " $non_pic_object"
53764642e01fSmrg	        else
53774642e01fSmrg		  func_fatal_error "\`$arg' is not a valid libtool object"
53784642e01fSmrg		fi
53794642e01fSmrg	      fi
53804642e01fSmrg	    done
538105b261ecSmrg	  else
53824642e01fSmrg	    func_fatal_error "link input file \`$arg' does not exist"
538305b261ecSmrg	  fi
53844642e01fSmrg	  arg=$save_arg
53854642e01fSmrg	  prev=
53864642e01fSmrg	  continue
53874642e01fSmrg	  ;;
53884642e01fSmrg	precious_regex)
53894642e01fSmrg	  precious_files_regex="$arg"
53904642e01fSmrg	  prev=
53914642e01fSmrg	  continue
53924642e01fSmrg	  ;;
53934642e01fSmrg	release)
53944642e01fSmrg	  release="-$arg"
53954642e01fSmrg	  prev=
53964642e01fSmrg	  continue
53974642e01fSmrg	  ;;
53984642e01fSmrg	rpath | xrpath)
53994642e01fSmrg	  # We need an absolute path.
54004642e01fSmrg	  case $arg in
54014642e01fSmrg	  [\\/]* | [A-Za-z]:[\\/]*) ;;
54024642e01fSmrg	  *)
54034642e01fSmrg	    func_fatal_error "only absolute run-paths are allowed"
54044642e01fSmrg	    ;;
54054642e01fSmrg	  esac
54064642e01fSmrg	  if test "$prev" = rpath; then
54074642e01fSmrg	    case "$rpath " in
54084642e01fSmrg	    *" $arg "*) ;;
54096747b715Smrg	    *) func_append rpath " $arg" ;;
54104642e01fSmrg	    esac
541105b261ecSmrg	  else
54124642e01fSmrg	    case "$xrpath " in
54134642e01fSmrg	    *" $arg "*) ;;
54146747b715Smrg	    *) func_append xrpath " $arg" ;;
54154642e01fSmrg	    esac
541605b261ecSmrg	  fi
54174642e01fSmrg	  prev=
54184642e01fSmrg	  continue
54194642e01fSmrg	  ;;
54204642e01fSmrg	shrext)
54214642e01fSmrg	  shrext_cmds="$arg"
54224642e01fSmrg	  prev=
54234642e01fSmrg	  continue
54244642e01fSmrg	  ;;
54254642e01fSmrg	weak)
54266747b715Smrg	  func_append weak_libs " $arg"
54274642e01fSmrg	  prev=
54284642e01fSmrg	  continue
54294642e01fSmrg	  ;;
54304642e01fSmrg	xcclinker)
54316747b715Smrg	  func_append linker_flags " $qarg"
54326747b715Smrg	  func_append compiler_flags " $qarg"
54334642e01fSmrg	  prev=
54344642e01fSmrg	  func_append compile_command " $qarg"
54354642e01fSmrg	  func_append finalize_command " $qarg"
54364642e01fSmrg	  continue
54374642e01fSmrg	  ;;
54384642e01fSmrg	xcompiler)
54396747b715Smrg	  func_append compiler_flags " $qarg"
54404642e01fSmrg	  prev=
54414642e01fSmrg	  func_append compile_command " $qarg"
54424642e01fSmrg	  func_append finalize_command " $qarg"
54434642e01fSmrg	  continue
54444642e01fSmrg	  ;;
54454642e01fSmrg	xlinker)
54466747b715Smrg	  func_append linker_flags " $qarg"
54476747b715Smrg	  func_append compiler_flags " $wl$qarg"
54484642e01fSmrg	  prev=
54494642e01fSmrg	  func_append compile_command " $wl$qarg"
54504642e01fSmrg	  func_append finalize_command " $wl$qarg"
54514642e01fSmrg	  continue
54524642e01fSmrg	  ;;
54534642e01fSmrg	*)
54544642e01fSmrg	  eval "$prev=\"\$arg\""
54554642e01fSmrg	  prev=
54564642e01fSmrg	  continue
54574642e01fSmrg	  ;;
545805b261ecSmrg	esac
54594642e01fSmrg      fi # test -n "$prev"
546005b261ecSmrg
54614642e01fSmrg      prevarg="$arg"
546205b261ecSmrg
54634642e01fSmrg      case $arg in
54644642e01fSmrg      -all-static)
54654642e01fSmrg	if test -n "$link_static_flag"; then
54664642e01fSmrg	  # See comment for -static flag below, for more details.
54674642e01fSmrg	  func_append compile_command " $link_static_flag"
54684642e01fSmrg	  func_append finalize_command " $link_static_flag"
54694642e01fSmrg	fi
54704642e01fSmrg	continue
54714642e01fSmrg	;;
547205b261ecSmrg
54734642e01fSmrg      -allow-undefined)
54744642e01fSmrg	# FIXME: remove this flag sometime in the future.
54754642e01fSmrg	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
54764642e01fSmrg	;;
547705b261ecSmrg
54784642e01fSmrg      -avoid-version)
54794642e01fSmrg	avoid_version=yes
54804642e01fSmrg	continue
54814642e01fSmrg	;;
548205b261ecSmrg
54836747b715Smrg      -bindir)
54846747b715Smrg	prev=bindir
54856747b715Smrg	continue
54866747b715Smrg	;;
54876747b715Smrg
54884642e01fSmrg      -dlopen)
54894642e01fSmrg	prev=dlfiles
54904642e01fSmrg	continue
54914642e01fSmrg	;;
549205b261ecSmrg
54934642e01fSmrg      -dlpreopen)
54944642e01fSmrg	prev=dlprefiles
54954642e01fSmrg	continue
54964642e01fSmrg	;;
549705b261ecSmrg
54984642e01fSmrg      -export-dynamic)
54994642e01fSmrg	export_dynamic=yes
55004642e01fSmrg	continue
55014642e01fSmrg	;;
550205b261ecSmrg
55034642e01fSmrg      -export-symbols | -export-symbols-regex)
55044642e01fSmrg	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
55054642e01fSmrg	  func_fatal_error "more than one -exported-symbols argument is not allowed"
55064642e01fSmrg	fi
55074642e01fSmrg	if test "X$arg" = "X-export-symbols"; then
55084642e01fSmrg	  prev=expsyms
55094642e01fSmrg	else
55104642e01fSmrg	  prev=expsyms_regex
55114642e01fSmrg	fi
55124642e01fSmrg	continue
55134642e01fSmrg	;;
551405b261ecSmrg
55154642e01fSmrg      -framework)
55164642e01fSmrg	prev=framework
55174642e01fSmrg	continue
55184642e01fSmrg	;;
551905b261ecSmrg
55204642e01fSmrg      -inst-prefix-dir)
55214642e01fSmrg	prev=inst_prefix
55224642e01fSmrg	continue
55234642e01fSmrg	;;
552405b261ecSmrg
55254642e01fSmrg      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
55264642e01fSmrg      # so, if we see these flags be careful not to treat them like -L
55274642e01fSmrg      -L[A-Z][A-Z]*:*)
55284642e01fSmrg	case $with_gcc/$host in
55294642e01fSmrg	no/*-*-irix* | /*-*-irix*)
55304642e01fSmrg	  func_append compile_command " $arg"
55314642e01fSmrg	  func_append finalize_command " $arg"
55324642e01fSmrg	  ;;
55334642e01fSmrg	esac
55344642e01fSmrg	continue
55354642e01fSmrg	;;
553605b261ecSmrg
55374642e01fSmrg      -L*)
55386747b715Smrg	func_stripname "-L" '' "$arg"
55396747b715Smrg	if test -z "$func_stripname_result"; then
55404642e01fSmrg	  if test "$#" -gt 0; then
55414642e01fSmrg	    func_fatal_error "require no space between \`-L' and \`$1'"
55424642e01fSmrg	  else
55434642e01fSmrg	    func_fatal_error "need path for \`-L' option"
55444642e01fSmrg	  fi
55454642e01fSmrg	fi
55466747b715Smrg	func_resolve_sysroot "$func_stripname_result"
55476747b715Smrg	dir=$func_resolve_sysroot_result
55484642e01fSmrg	# We need an absolute path.
55494642e01fSmrg	case $dir in
55504642e01fSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
55514642e01fSmrg	*)
55524642e01fSmrg	  absdir=`cd "$dir" && pwd`
55534642e01fSmrg	  test -z "$absdir" && \
55544642e01fSmrg	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
55554642e01fSmrg	  dir="$absdir"
55564642e01fSmrg	  ;;
55574642e01fSmrg	esac
55584642e01fSmrg	case "$deplibs " in
55596747b715Smrg	*" -L$dir "* | *" $arg "*)
55606747b715Smrg	  # Will only happen for absolute or sysroot arguments
55616747b715Smrg	  ;;
55624642e01fSmrg	*)
55636747b715Smrg	  # Preserve sysroot, but never include relative directories
55646747b715Smrg	  case $dir in
55656747b715Smrg	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
55666747b715Smrg	    *) func_append deplibs " -L$dir" ;;
55676747b715Smrg	  esac
55686747b715Smrg	  func_append lib_search_path " $dir"
55694642e01fSmrg	  ;;
55704642e01fSmrg	esac
55714642e01fSmrg	case $host in
55724642e01fSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
55736747b715Smrg	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
55744642e01fSmrg	  case :$dllsearchpath: in
55754642e01fSmrg	  *":$dir:"*) ;;
55764642e01fSmrg	  ::) dllsearchpath=$dir;;
55776747b715Smrg	  *) func_append dllsearchpath ":$dir";;
55784642e01fSmrg	  esac
55794642e01fSmrg	  case :$dllsearchpath: in
55804642e01fSmrg	  *":$testbindir:"*) ;;
55814642e01fSmrg	  ::) dllsearchpath=$testbindir;;
55826747b715Smrg	  *) func_append dllsearchpath ":$testbindir";;
55834642e01fSmrg	  esac
55844642e01fSmrg	  ;;
55854642e01fSmrg	esac
55864642e01fSmrg	continue
55874642e01fSmrg	;;
558805b261ecSmrg
55894642e01fSmrg      -l*)
55904642e01fSmrg	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
55914642e01fSmrg	  case $host in
55926747b715Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
55934642e01fSmrg	    # These systems don't actually have a C or math library (as such)
55944642e01fSmrg	    continue
55954642e01fSmrg	    ;;
55964642e01fSmrg	  *-*-os2*)
55974642e01fSmrg	    # These systems don't actually have a C library (as such)
55984642e01fSmrg	    test "X$arg" = "X-lc" && continue
55994642e01fSmrg	    ;;
56004642e01fSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
56014642e01fSmrg	    # Do not include libc due to us having libc/libc_r.
56024642e01fSmrg	    test "X$arg" = "X-lc" && continue
56034642e01fSmrg	    ;;
56044642e01fSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
56054642e01fSmrg	    # Rhapsody C and math libraries are in the System framework
56066747b715Smrg	    func_append deplibs " System.ltframework"
56074642e01fSmrg	    continue
56084642e01fSmrg	    ;;
56094642e01fSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
56104642e01fSmrg	    # Causes problems with __ctype
56114642e01fSmrg	    test "X$arg" = "X-lc" && continue
56124642e01fSmrg	    ;;
56134642e01fSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
56144642e01fSmrg	    # Compiler inserts libc in the correct place for threads to work
56154642e01fSmrg	    test "X$arg" = "X-lc" && continue
56164642e01fSmrg	    ;;
56174642e01fSmrg	  esac
56184642e01fSmrg	elif test "X$arg" = "X-lc_r"; then
56194642e01fSmrg	 case $host in
56204642e01fSmrg	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
56214642e01fSmrg	   # Do not include libc_r directly, use -pthread flag.
56224642e01fSmrg	   continue
56234642e01fSmrg	   ;;
56244642e01fSmrg	 esac
56254642e01fSmrg	fi
56266747b715Smrg	func_append deplibs " $arg"
56274642e01fSmrg	continue
56284642e01fSmrg	;;
562905b261ecSmrg
56304642e01fSmrg      -module)
56314642e01fSmrg	module=yes
56324642e01fSmrg	continue
56334642e01fSmrg	;;
563405b261ecSmrg
56354642e01fSmrg      # Tru64 UNIX uses -model [arg] to determine the layout of C++
56364642e01fSmrg      # classes, name mangling, and exception handling.
56374642e01fSmrg      # Darwin uses the -arch flag to determine output architecture.
56386747b715Smrg      -model|-arch|-isysroot|--sysroot)
56396747b715Smrg	func_append compiler_flags " $arg"
56404642e01fSmrg	func_append compile_command " $arg"
56414642e01fSmrg	func_append finalize_command " $arg"
56424642e01fSmrg	prev=xcompiler
56434642e01fSmrg	continue
56444642e01fSmrg	;;
564505b261ecSmrg
56464642e01fSmrg      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
56476747b715Smrg	func_append compiler_flags " $arg"
56484642e01fSmrg	func_append compile_command " $arg"
56494642e01fSmrg	func_append finalize_command " $arg"
56504642e01fSmrg	case "$new_inherited_linker_flags " in
56514642e01fSmrg	    *" $arg "*) ;;
56526747b715Smrg	    * ) func_append new_inherited_linker_flags " $arg" ;;
56534642e01fSmrg	esac
56544642e01fSmrg	continue
56554642e01fSmrg	;;
565605b261ecSmrg
56574642e01fSmrg      -multi_module)
56584642e01fSmrg	single_module="${wl}-multi_module"
56594642e01fSmrg	continue
56604642e01fSmrg	;;
566105b261ecSmrg
56624642e01fSmrg      -no-fast-install)
56634642e01fSmrg	fast_install=no
56644642e01fSmrg	continue
56654642e01fSmrg	;;
566605b261ecSmrg
56674642e01fSmrg      -no-install)
56684642e01fSmrg	case $host in
56694642e01fSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
56704642e01fSmrg	  # The PATH hackery in wrapper scripts is required on Windows
56714642e01fSmrg	  # and Darwin in order for the loader to find any dlls it needs.
56724642e01fSmrg	  func_warning "\`-no-install' is ignored for $host"
56734642e01fSmrg	  func_warning "assuming \`-no-fast-install' instead"
56744642e01fSmrg	  fast_install=no
56754642e01fSmrg	  ;;
56764642e01fSmrg	*) no_install=yes ;;
56774642e01fSmrg	esac
56784642e01fSmrg	continue
56794642e01fSmrg	;;
568005b261ecSmrg
56814642e01fSmrg      -no-undefined)
56824642e01fSmrg	allow_undefined=no
56834642e01fSmrg	continue
56844642e01fSmrg	;;
568505b261ecSmrg
56864642e01fSmrg      -objectlist)
56874642e01fSmrg	prev=objectlist
56884642e01fSmrg	continue
56894642e01fSmrg	;;
569005b261ecSmrg
56914642e01fSmrg      -o) prev=output ;;
569205b261ecSmrg
56934642e01fSmrg      -precious-files-regex)
56944642e01fSmrg	prev=precious_regex
56954642e01fSmrg	continue
56964642e01fSmrg	;;
569705b261ecSmrg
56984642e01fSmrg      -release)
56994642e01fSmrg	prev=release
57004642e01fSmrg	continue
57014642e01fSmrg	;;
570205b261ecSmrg
57034642e01fSmrg      -rpath)
57044642e01fSmrg	prev=rpath
57054642e01fSmrg	continue
57064642e01fSmrg	;;
570705b261ecSmrg
57084642e01fSmrg      -R)
57094642e01fSmrg	prev=xrpath
57104642e01fSmrg	continue
57114642e01fSmrg	;;
571205b261ecSmrg
57134642e01fSmrg      -R*)
57144642e01fSmrg	func_stripname '-R' '' "$arg"
57154642e01fSmrg	dir=$func_stripname_result
57164642e01fSmrg	# We need an absolute path.
57174642e01fSmrg	case $dir in
57184642e01fSmrg	[\\/]* | [A-Za-z]:[\\/]*) ;;
57196747b715Smrg	=*)
57206747b715Smrg	  func_stripname '=' '' "$dir"
57216747b715Smrg	  dir=$lt_sysroot$func_stripname_result
57226747b715Smrg	  ;;
57234642e01fSmrg	*)
57244642e01fSmrg	  func_fatal_error "only absolute run-paths are allowed"
57254642e01fSmrg	  ;;
57264642e01fSmrg	esac
57274642e01fSmrg	case "$xrpath " in
57284642e01fSmrg	*" $dir "*) ;;
57296747b715Smrg	*) func_append xrpath " $dir" ;;
57304642e01fSmrg	esac
57314642e01fSmrg	continue
57324642e01fSmrg	;;
573305b261ecSmrg
57344642e01fSmrg      -shared)
57354642e01fSmrg	# The effects of -shared are defined in a previous loop.
57364642e01fSmrg	continue
57374642e01fSmrg	;;
573805b261ecSmrg
57394642e01fSmrg      -shrext)
57404642e01fSmrg	prev=shrext
57414642e01fSmrg	continue
57424642e01fSmrg	;;
574305b261ecSmrg
57444642e01fSmrg      -static | -static-libtool-libs)
57454642e01fSmrg	# The effects of -static are defined in a previous loop.
57464642e01fSmrg	# We used to do the same as -all-static on platforms that
57474642e01fSmrg	# didn't have a PIC flag, but the assumption that the effects
57484642e01fSmrg	# would be equivalent was wrong.  It would break on at least
57494642e01fSmrg	# Digital Unix and AIX.
57504642e01fSmrg	continue
57514642e01fSmrg	;;
575205b261ecSmrg
57534642e01fSmrg      -thread-safe)
57544642e01fSmrg	thread_safe=yes
57554642e01fSmrg	continue
57564642e01fSmrg	;;
575705b261ecSmrg
57584642e01fSmrg      -version-info)
57594642e01fSmrg	prev=vinfo
57604642e01fSmrg	continue
57614642e01fSmrg	;;
576205b261ecSmrg
57634642e01fSmrg      -version-number)
57644642e01fSmrg	prev=vinfo
57654642e01fSmrg	vinfo_number=yes
57664642e01fSmrg	continue
57674642e01fSmrg	;;
576805b261ecSmrg
57694642e01fSmrg      -weak)
57704642e01fSmrg        prev=weak
57714642e01fSmrg	continue
57724642e01fSmrg	;;
577305b261ecSmrg
57744642e01fSmrg      -Wc,*)
57754642e01fSmrg	func_stripname '-Wc,' '' "$arg"
57764642e01fSmrg	args=$func_stripname_result
57774642e01fSmrg	arg=
57784642e01fSmrg	save_ifs="$IFS"; IFS=','
57794642e01fSmrg	for flag in $args; do
57804642e01fSmrg	  IFS="$save_ifs"
57814642e01fSmrg          func_quote_for_eval "$flag"
57826747b715Smrg	  func_append arg " $func_quote_for_eval_result"
57836747b715Smrg	  func_append compiler_flags " $func_quote_for_eval_result"
57844642e01fSmrg	done
57854642e01fSmrg	IFS="$save_ifs"
57864642e01fSmrg	func_stripname ' ' '' "$arg"
57874642e01fSmrg	arg=$func_stripname_result
57884642e01fSmrg	;;
578905b261ecSmrg
57904642e01fSmrg      -Wl,*)
57914642e01fSmrg	func_stripname '-Wl,' '' "$arg"
57924642e01fSmrg	args=$func_stripname_result
57934642e01fSmrg	arg=
57944642e01fSmrg	save_ifs="$IFS"; IFS=','
57954642e01fSmrg	for flag in $args; do
57964642e01fSmrg	  IFS="$save_ifs"
57974642e01fSmrg          func_quote_for_eval "$flag"
57986747b715Smrg	  func_append arg " $wl$func_quote_for_eval_result"
57996747b715Smrg	  func_append compiler_flags " $wl$func_quote_for_eval_result"
58006747b715Smrg	  func_append linker_flags " $func_quote_for_eval_result"
58014642e01fSmrg	done
58024642e01fSmrg	IFS="$save_ifs"
58034642e01fSmrg	func_stripname ' ' '' "$arg"
58044642e01fSmrg	arg=$func_stripname_result
58054642e01fSmrg	;;
580605b261ecSmrg
58074642e01fSmrg      -Xcompiler)
58084642e01fSmrg	prev=xcompiler
58094642e01fSmrg	continue
58104642e01fSmrg	;;
581105b261ecSmrg
58124642e01fSmrg      -Xlinker)
58134642e01fSmrg	prev=xlinker
58144642e01fSmrg	continue
58154642e01fSmrg	;;
581605b261ecSmrg
58174642e01fSmrg      -XCClinker)
58184642e01fSmrg	prev=xcclinker
58194642e01fSmrg	continue
58204642e01fSmrg	;;
582105b261ecSmrg
58224642e01fSmrg      # -msg_* for osf cc
58234642e01fSmrg      -msg_*)
58244642e01fSmrg	func_quote_for_eval "$arg"
58254642e01fSmrg	arg="$func_quote_for_eval_result"
58264642e01fSmrg	;;
582705b261ecSmrg
58286747b715Smrg      # Flags to be passed through unchanged, with rationale:
58296747b715Smrg      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
58306747b715Smrg      # -r[0-9][0-9]*        specify processor for the SGI compiler
58316747b715Smrg      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
58326747b715Smrg      # +DA*, +DD*           enable 64-bit mode for the HP compiler
58336747b715Smrg      # -q*                  compiler args for the IBM compiler
58346747b715Smrg      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
58356747b715Smrg      # -F/path              path to uninstalled frameworks, gcc on darwin
58366747b715Smrg      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
58376747b715Smrg      # @file                GCC response files
58386747b715Smrg      # -tp=*                Portland pgcc target processor selection
58396747b715Smrg      # --sysroot=*          for sysroot support
58406747b715Smrg      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
58414642e01fSmrg      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
58426747b715Smrg      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
58436747b715Smrg      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
58444642e01fSmrg        func_quote_for_eval "$arg"
58454642e01fSmrg	arg="$func_quote_for_eval_result"
58464642e01fSmrg        func_append compile_command " $arg"
58474642e01fSmrg        func_append finalize_command " $arg"
58486747b715Smrg        func_append compiler_flags " $arg"
58494642e01fSmrg        continue
58504642e01fSmrg        ;;
585105b261ecSmrg
58524642e01fSmrg      # Some other compiler flag.
58534642e01fSmrg      -* | +*)
58544642e01fSmrg        func_quote_for_eval "$arg"
58554642e01fSmrg	arg="$func_quote_for_eval_result"
58564642e01fSmrg	;;
585705b261ecSmrg
58584642e01fSmrg      *.$objext)
58594642e01fSmrg	# A standard object.
58606747b715Smrg	func_append objs " $arg"
58614642e01fSmrg	;;
586205b261ecSmrg
58634642e01fSmrg      *.lo)
58644642e01fSmrg	# A libtool-controlled object.
586505b261ecSmrg
58664642e01fSmrg	# Check to see that this really is a libtool object.
58674642e01fSmrg	if func_lalib_unsafe_p "$arg"; then
58684642e01fSmrg	  pic_object=
58694642e01fSmrg	  non_pic_object=
587005b261ecSmrg
58714642e01fSmrg	  # Read the .lo file
58724642e01fSmrg	  func_source "$arg"
587305b261ecSmrg
58744642e01fSmrg	  if test -z "$pic_object" ||
58754642e01fSmrg	     test -z "$non_pic_object" ||
58764642e01fSmrg	     test "$pic_object" = none &&
58774642e01fSmrg	     test "$non_pic_object" = none; then
58784642e01fSmrg	    func_fatal_error "cannot find name of object for \`$arg'"
58794642e01fSmrg	  fi
588005b261ecSmrg
58814642e01fSmrg	  # Extract subdirectory from the argument.
58824642e01fSmrg	  func_dirname "$arg" "/" ""
58834642e01fSmrg	  xdir="$func_dirname_result"
588405b261ecSmrg
58854642e01fSmrg	  if test "$pic_object" != none; then
58864642e01fSmrg	    # Prepend the subdirectory the object is found in.
58874642e01fSmrg	    pic_object="$xdir$pic_object"
588805b261ecSmrg
58894642e01fSmrg	    if test "$prev" = dlfiles; then
58904642e01fSmrg	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
58916747b715Smrg		func_append dlfiles " $pic_object"
58924642e01fSmrg		prev=
58934642e01fSmrg		continue
58944642e01fSmrg	      else
58954642e01fSmrg		# If libtool objects are unsupported, then we need to preload.
58964642e01fSmrg		prev=dlprefiles
58974642e01fSmrg	      fi
58984642e01fSmrg	    fi
589905b261ecSmrg
59004642e01fSmrg	    # CHECK ME:  I think I busted this.  -Ossama
59014642e01fSmrg	    if test "$prev" = dlprefiles; then
59024642e01fSmrg	      # Preload the old-style object.
59036747b715Smrg	      func_append dlprefiles " $pic_object"
59044642e01fSmrg	      prev=
59054642e01fSmrg	    fi
590605b261ecSmrg
59074642e01fSmrg	    # A PIC object.
59084642e01fSmrg	    func_append libobjs " $pic_object"
59094642e01fSmrg	    arg="$pic_object"
59104642e01fSmrg	  fi
591105b261ecSmrg
59124642e01fSmrg	  # Non-PIC object.
59134642e01fSmrg	  if test "$non_pic_object" != none; then
59144642e01fSmrg	    # Prepend the subdirectory the object is found in.
59154642e01fSmrg	    non_pic_object="$xdir$non_pic_object"
591605b261ecSmrg
59174642e01fSmrg	    # A standard non-PIC object
59184642e01fSmrg	    func_append non_pic_objects " $non_pic_object"
59194642e01fSmrg	    if test -z "$pic_object" || test "$pic_object" = none ; then
59204642e01fSmrg	      arg="$non_pic_object"
59214642e01fSmrg	    fi
59224642e01fSmrg	  else
59234642e01fSmrg	    # If the PIC object exists, use it instead.
59244642e01fSmrg	    # $xdir was prepended to $pic_object above.
59254642e01fSmrg	    non_pic_object="$pic_object"
59264642e01fSmrg	    func_append non_pic_objects " $non_pic_object"
59274642e01fSmrg	  fi
59284642e01fSmrg	else
59294642e01fSmrg	  # Only an error if not doing a dry-run.
59304642e01fSmrg	  if $opt_dry_run; then
59314642e01fSmrg	    # Extract subdirectory from the argument.
59324642e01fSmrg	    func_dirname "$arg" "/" ""
59334642e01fSmrg	    xdir="$func_dirname_result"
59344642e01fSmrg
59354642e01fSmrg	    func_lo2o "$arg"
59364642e01fSmrg	    pic_object=$xdir$objdir/$func_lo2o_result
59374642e01fSmrg	    non_pic_object=$xdir$func_lo2o_result
59384642e01fSmrg	    func_append libobjs " $pic_object"
59394642e01fSmrg	    func_append non_pic_objects " $non_pic_object"
59404642e01fSmrg	  else
59414642e01fSmrg	    func_fatal_error "\`$arg' is not a valid libtool object"
59424642e01fSmrg	  fi
59434642e01fSmrg	fi
59444642e01fSmrg	;;
59454642e01fSmrg
59464642e01fSmrg      *.$libext)
59474642e01fSmrg	# An archive.
59486747b715Smrg	func_append deplibs " $arg"
59496747b715Smrg	func_append old_deplibs " $arg"
59504642e01fSmrg	continue
59514642e01fSmrg	;;
59524642e01fSmrg
59534642e01fSmrg      *.la)
59544642e01fSmrg	# A libtool-controlled library.
59554642e01fSmrg
59566747b715Smrg	func_resolve_sysroot "$arg"
59574642e01fSmrg	if test "$prev" = dlfiles; then
59584642e01fSmrg	  # This library was specified with -dlopen.
59596747b715Smrg	  func_append dlfiles " $func_resolve_sysroot_result"
59604642e01fSmrg	  prev=
59614642e01fSmrg	elif test "$prev" = dlprefiles; then
59624642e01fSmrg	  # The library was specified with -dlpreopen.
59636747b715Smrg	  func_append dlprefiles " $func_resolve_sysroot_result"
59644642e01fSmrg	  prev=
59654642e01fSmrg	else
59666747b715Smrg	  func_append deplibs " $func_resolve_sysroot_result"
59674642e01fSmrg	fi
59684642e01fSmrg	continue
59694642e01fSmrg	;;
59704642e01fSmrg
59714642e01fSmrg      # Some other compiler argument.
59724642e01fSmrg      *)
59734642e01fSmrg	# Unknown arguments in both finalize_command and compile_command need
59744642e01fSmrg	# to be aesthetically quoted because they are evaled later.
59754642e01fSmrg	func_quote_for_eval "$arg"
59764642e01fSmrg	arg="$func_quote_for_eval_result"
59774642e01fSmrg	;;
59784642e01fSmrg      esac # arg
59794642e01fSmrg
59804642e01fSmrg      # Now actually substitute the argument into the commands.
59814642e01fSmrg      if test -n "$arg"; then
59824642e01fSmrg	func_append compile_command " $arg"
59834642e01fSmrg	func_append finalize_command " $arg"
59844642e01fSmrg      fi
59854642e01fSmrg    done # argument parsing loop
59864642e01fSmrg
59874642e01fSmrg    test -n "$prev" && \
59884642e01fSmrg      func_fatal_help "the \`$prevarg' option requires an argument"
59894642e01fSmrg
59904642e01fSmrg    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
59914642e01fSmrg      eval arg=\"$export_dynamic_flag_spec\"
59924642e01fSmrg      func_append compile_command " $arg"
59934642e01fSmrg      func_append finalize_command " $arg"
59944642e01fSmrg    fi
59954642e01fSmrg
59964642e01fSmrg    oldlibs=
59974642e01fSmrg    # calculate the name of the file, without its directory
59984642e01fSmrg    func_basename "$output"
59994642e01fSmrg    outputname="$func_basename_result"
60004642e01fSmrg    libobjs_save="$libobjs"
60014642e01fSmrg
60024642e01fSmrg    if test -n "$shlibpath_var"; then
60034642e01fSmrg      # get the directories listed in $shlibpath_var
60046747b715Smrg      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
60054642e01fSmrg    else
60064642e01fSmrg      shlib_search_path=
60074642e01fSmrg    fi
60084642e01fSmrg    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
60094642e01fSmrg    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
60104642e01fSmrg
60114642e01fSmrg    func_dirname "$output" "/" ""
60124642e01fSmrg    output_objdir="$func_dirname_result$objdir"
60136747b715Smrg    func_to_tool_file "$output_objdir/"
60146747b715Smrg    tool_output_objdir=$func_to_tool_file_result
60154642e01fSmrg    # Create the object directory.
60164642e01fSmrg    func_mkdir_p "$output_objdir"
60174642e01fSmrg
60184642e01fSmrg    # Determine the type of output
60194642e01fSmrg    case $output in
60204642e01fSmrg    "")
60214642e01fSmrg      func_fatal_help "you must specify an output file"
60224642e01fSmrg      ;;
60234642e01fSmrg    *.$libext) linkmode=oldlib ;;
60244642e01fSmrg    *.lo | *.$objext) linkmode=obj ;;
60254642e01fSmrg    *.la) linkmode=lib ;;
60264642e01fSmrg    *) linkmode=prog ;; # Anything else should be a program.
60274642e01fSmrg    esac
60284642e01fSmrg
60294642e01fSmrg    specialdeplibs=
60304642e01fSmrg
60314642e01fSmrg    libs=
60324642e01fSmrg    # Find all interdependent deplibs by searching for libraries
60334642e01fSmrg    # that are linked more than once (e.g. -la -lb -la)
60344642e01fSmrg    for deplib in $deplibs; do
60356747b715Smrg      if $opt_preserve_dup_deps ; then
60364642e01fSmrg	case "$libs " in
60376747b715Smrg	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
60384642e01fSmrg	esac
60394642e01fSmrg      fi
60406747b715Smrg      func_append libs " $deplib"
60414642e01fSmrg    done
60424642e01fSmrg
60434642e01fSmrg    if test "$linkmode" = lib; then
60444642e01fSmrg      libs="$predeps $libs $compiler_lib_search_path $postdeps"
60454642e01fSmrg
60464642e01fSmrg      # Compute libraries that are listed more than once in $predeps
60474642e01fSmrg      # $postdeps and mark them as special (i.e., whose duplicates are
60484642e01fSmrg      # not to be eliminated).
60494642e01fSmrg      pre_post_deps=
60504642e01fSmrg      if $opt_duplicate_compiler_generated_deps; then
60514642e01fSmrg	for pre_post_dep in $predeps $postdeps; do
60524642e01fSmrg	  case "$pre_post_deps " in
60536747b715Smrg	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
60544642e01fSmrg	  esac
60556747b715Smrg	  func_append pre_post_deps " $pre_post_dep"
60564642e01fSmrg	done
60574642e01fSmrg      fi
60584642e01fSmrg      pre_post_deps=
60594642e01fSmrg    fi
60604642e01fSmrg
60614642e01fSmrg    deplibs=
60624642e01fSmrg    newdependency_libs=
60634642e01fSmrg    newlib_search_path=
60644642e01fSmrg    need_relink=no # whether we're linking any uninstalled libtool libraries
60654642e01fSmrg    notinst_deplibs= # not-installed libtool libraries
60664642e01fSmrg    notinst_path= # paths that contain not-installed libtool libraries
60674642e01fSmrg
60684642e01fSmrg    case $linkmode in
60694642e01fSmrg    lib)
60704642e01fSmrg	passes="conv dlpreopen link"
60714642e01fSmrg	for file in $dlfiles $dlprefiles; do
60724642e01fSmrg	  case $file in
60734642e01fSmrg	  *.la) ;;
60744642e01fSmrg	  *)
60754642e01fSmrg	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
60764642e01fSmrg	    ;;
60774642e01fSmrg	  esac
60784642e01fSmrg	done
60794642e01fSmrg	;;
60804642e01fSmrg    prog)
60814642e01fSmrg	compile_deplibs=
60824642e01fSmrg	finalize_deplibs=
60834642e01fSmrg	alldeplibs=no
60844642e01fSmrg	newdlfiles=
60854642e01fSmrg	newdlprefiles=
60864642e01fSmrg	passes="conv scan dlopen dlpreopen link"
60874642e01fSmrg	;;
60884642e01fSmrg    *)  passes="conv"
60894642e01fSmrg	;;
60904642e01fSmrg    esac
60914642e01fSmrg
60924642e01fSmrg    for pass in $passes; do
60934642e01fSmrg      # The preopen pass in lib mode reverses $deplibs; put it back here
60944642e01fSmrg      # so that -L comes before libs that need it for instance...
60954642e01fSmrg      if test "$linkmode,$pass" = "lib,link"; then
60964642e01fSmrg	## FIXME: Find the place where the list is rebuilt in the wrong
60974642e01fSmrg	##        order, and fix it there properly
60984642e01fSmrg        tmp_deplibs=
60994642e01fSmrg	for deplib in $deplibs; do
61004642e01fSmrg	  tmp_deplibs="$deplib $tmp_deplibs"
61014642e01fSmrg	done
61024642e01fSmrg	deplibs="$tmp_deplibs"
61034642e01fSmrg      fi
61044642e01fSmrg
61054642e01fSmrg      if test "$linkmode,$pass" = "lib,link" ||
61064642e01fSmrg	 test "$linkmode,$pass" = "prog,scan"; then
61074642e01fSmrg	libs="$deplibs"
61084642e01fSmrg	deplibs=
61094642e01fSmrg      fi
61104642e01fSmrg      if test "$linkmode" = prog; then
61114642e01fSmrg	case $pass in
61124642e01fSmrg	dlopen) libs="$dlfiles" ;;
61134642e01fSmrg	dlpreopen) libs="$dlprefiles" ;;
61146747b715Smrg	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
61154642e01fSmrg	esac
61164642e01fSmrg      fi
61174642e01fSmrg      if test "$linkmode,$pass" = "lib,dlpreopen"; then
61184642e01fSmrg	# Collect and forward deplibs of preopened libtool libs
61194642e01fSmrg	for lib in $dlprefiles; do
61204642e01fSmrg	  # Ignore non-libtool-libs
61214642e01fSmrg	  dependency_libs=
61226747b715Smrg	  func_resolve_sysroot "$lib"
61234642e01fSmrg	  case $lib in
61246747b715Smrg	  *.la)	func_source "$func_resolve_sysroot_result" ;;
61254642e01fSmrg	  esac
61264642e01fSmrg
61274642e01fSmrg	  # Collect preopened libtool deplibs, except any this library
61284642e01fSmrg	  # has declared as weak libs
61294642e01fSmrg	  for deplib in $dependency_libs; do
61306747b715Smrg	    func_basename "$deplib"
61316747b715Smrg            deplib_base=$func_basename_result
61324642e01fSmrg	    case " $weak_libs " in
61334642e01fSmrg	    *" $deplib_base "*) ;;
61346747b715Smrg	    *) func_append deplibs " $deplib" ;;
61354642e01fSmrg	    esac
61364642e01fSmrg	  done
61374642e01fSmrg	done
61384642e01fSmrg	libs="$dlprefiles"
61394642e01fSmrg      fi
61404642e01fSmrg      if test "$pass" = dlopen; then
61414642e01fSmrg	# Collect dlpreopened libraries
61424642e01fSmrg	save_deplibs="$deplibs"
61434642e01fSmrg	deplibs=
61444642e01fSmrg      fi
61454642e01fSmrg
61464642e01fSmrg      for deplib in $libs; do
61474642e01fSmrg	lib=
61484642e01fSmrg	found=no
61494642e01fSmrg	case $deplib in
61504642e01fSmrg	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
61514642e01fSmrg	  if test "$linkmode,$pass" = "prog,link"; then
61524642e01fSmrg	    compile_deplibs="$deplib $compile_deplibs"
61534642e01fSmrg	    finalize_deplibs="$deplib $finalize_deplibs"
61544642e01fSmrg	  else
61556747b715Smrg	    func_append compiler_flags " $deplib"
61564642e01fSmrg	    if test "$linkmode" = lib ; then
61574642e01fSmrg		case "$new_inherited_linker_flags " in
61584642e01fSmrg		    *" $deplib "*) ;;
61596747b715Smrg		    * ) func_append new_inherited_linker_flags " $deplib" ;;
61604642e01fSmrg		esac
61614642e01fSmrg	    fi
61624642e01fSmrg	  fi
61634642e01fSmrg	  continue
61644642e01fSmrg	  ;;
61654642e01fSmrg	-l*)
61664642e01fSmrg	  if test "$linkmode" != lib && test "$linkmode" != prog; then
61674642e01fSmrg	    func_warning "\`-l' is ignored for archives/objects"
61684642e01fSmrg	    continue
61694642e01fSmrg	  fi
61704642e01fSmrg	  func_stripname '-l' '' "$deplib"
61714642e01fSmrg	  name=$func_stripname_result
61724642e01fSmrg	  if test "$linkmode" = lib; then
61734642e01fSmrg	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
61744642e01fSmrg	  else
61754642e01fSmrg	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
61764642e01fSmrg	  fi
61774642e01fSmrg	  for searchdir in $searchdirs; do
61784642e01fSmrg	    for search_ext in .la $std_shrext .so .a; do
61794642e01fSmrg	      # Search the libtool library
61804642e01fSmrg	      lib="$searchdir/lib${name}${search_ext}"
61814642e01fSmrg	      if test -f "$lib"; then
61824642e01fSmrg		if test "$search_ext" = ".la"; then
61834642e01fSmrg		  found=yes
61844642e01fSmrg		else
61854642e01fSmrg		  found=no
61864642e01fSmrg		fi
61874642e01fSmrg		break 2
61884642e01fSmrg	      fi
61894642e01fSmrg	    done
61904642e01fSmrg	  done
61914642e01fSmrg	  if test "$found" != yes; then
61924642e01fSmrg	    # deplib doesn't seem to be a libtool library
61934642e01fSmrg	    if test "$linkmode,$pass" = "prog,link"; then
61944642e01fSmrg	      compile_deplibs="$deplib $compile_deplibs"
61954642e01fSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
61964642e01fSmrg	    else
61974642e01fSmrg	      deplibs="$deplib $deplibs"
61984642e01fSmrg	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
61994642e01fSmrg	    fi
62004642e01fSmrg	    continue
62014642e01fSmrg	  else # deplib is a libtool library
62024642e01fSmrg	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
62034642e01fSmrg	    # We need to do some special things here, and not later.
62044642e01fSmrg	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
62054642e01fSmrg	      case " $predeps $postdeps " in
62064642e01fSmrg	      *" $deplib "*)
62074642e01fSmrg		if func_lalib_p "$lib"; then
62084642e01fSmrg		  library_names=
62094642e01fSmrg		  old_library=
62104642e01fSmrg		  func_source "$lib"
62114642e01fSmrg		  for l in $old_library $library_names; do
62124642e01fSmrg		    ll="$l"
62134642e01fSmrg		  done
62144642e01fSmrg		  if test "X$ll" = "X$old_library" ; then # only static version available
62154642e01fSmrg		    found=no
62164642e01fSmrg		    func_dirname "$lib" "" "."
62174642e01fSmrg		    ladir="$func_dirname_result"
62184642e01fSmrg		    lib=$ladir/$old_library
62194642e01fSmrg		    if test "$linkmode,$pass" = "prog,link"; then
62204642e01fSmrg		      compile_deplibs="$deplib $compile_deplibs"
62214642e01fSmrg		      finalize_deplibs="$deplib $finalize_deplibs"
62224642e01fSmrg		    else
62234642e01fSmrg		      deplibs="$deplib $deplibs"
62244642e01fSmrg		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
62254642e01fSmrg		    fi
62264642e01fSmrg		    continue
62274642e01fSmrg		  fi
62284642e01fSmrg		fi
62294642e01fSmrg		;;
62304642e01fSmrg	      *) ;;
62314642e01fSmrg	      esac
62324642e01fSmrg	    fi
62334642e01fSmrg	  fi
62344642e01fSmrg	  ;; # -l
62354642e01fSmrg	*.ltframework)
62364642e01fSmrg	  if test "$linkmode,$pass" = "prog,link"; then
62374642e01fSmrg	    compile_deplibs="$deplib $compile_deplibs"
62384642e01fSmrg	    finalize_deplibs="$deplib $finalize_deplibs"
62394642e01fSmrg	  else
62404642e01fSmrg	    deplibs="$deplib $deplibs"
62414642e01fSmrg	    if test "$linkmode" = lib ; then
62424642e01fSmrg		case "$new_inherited_linker_flags " in
62434642e01fSmrg		    *" $deplib "*) ;;
62446747b715Smrg		    * ) func_append new_inherited_linker_flags " $deplib" ;;
62454642e01fSmrg		esac
62464642e01fSmrg	    fi
62474642e01fSmrg	  fi
62484642e01fSmrg	  continue
62494642e01fSmrg	  ;;
62504642e01fSmrg	-L*)
62514642e01fSmrg	  case $linkmode in
62524642e01fSmrg	  lib)
62534642e01fSmrg	    deplibs="$deplib $deplibs"
62544642e01fSmrg	    test "$pass" = conv && continue
62554642e01fSmrg	    newdependency_libs="$deplib $newdependency_libs"
62564642e01fSmrg	    func_stripname '-L' '' "$deplib"
62576747b715Smrg	    func_resolve_sysroot "$func_stripname_result"
62586747b715Smrg	    func_append newlib_search_path " $func_resolve_sysroot_result"
62594642e01fSmrg	    ;;
62604642e01fSmrg	  prog)
62614642e01fSmrg	    if test "$pass" = conv; then
62624642e01fSmrg	      deplibs="$deplib $deplibs"
62634642e01fSmrg	      continue
62644642e01fSmrg	    fi
62654642e01fSmrg	    if test "$pass" = scan; then
62664642e01fSmrg	      deplibs="$deplib $deplibs"
62674642e01fSmrg	    else
62684642e01fSmrg	      compile_deplibs="$deplib $compile_deplibs"
62694642e01fSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
62704642e01fSmrg	    fi
62714642e01fSmrg	    func_stripname '-L' '' "$deplib"
62726747b715Smrg	    func_resolve_sysroot "$func_stripname_result"
62736747b715Smrg	    func_append newlib_search_path " $func_resolve_sysroot_result"
62744642e01fSmrg	    ;;
62754642e01fSmrg	  *)
62764642e01fSmrg	    func_warning "\`-L' is ignored for archives/objects"
62774642e01fSmrg	    ;;
62784642e01fSmrg	  esac # linkmode
62794642e01fSmrg	  continue
62804642e01fSmrg	  ;; # -L
62814642e01fSmrg	-R*)
62824642e01fSmrg	  if test "$pass" = link; then
62834642e01fSmrg	    func_stripname '-R' '' "$deplib"
62846747b715Smrg	    func_resolve_sysroot "$func_stripname_result"
62856747b715Smrg	    dir=$func_resolve_sysroot_result
62864642e01fSmrg	    # Make sure the xrpath contains only unique directories.
62874642e01fSmrg	    case "$xrpath " in
62884642e01fSmrg	    *" $dir "*) ;;
62896747b715Smrg	    *) func_append xrpath " $dir" ;;
62904642e01fSmrg	    esac
62914642e01fSmrg	  fi
62924642e01fSmrg	  deplibs="$deplib $deplibs"
62934642e01fSmrg	  continue
62944642e01fSmrg	  ;;
62956747b715Smrg	*.la)
62966747b715Smrg	  func_resolve_sysroot "$deplib"
62976747b715Smrg	  lib=$func_resolve_sysroot_result
62986747b715Smrg	  ;;
62994642e01fSmrg	*.$libext)
63004642e01fSmrg	  if test "$pass" = conv; then
63014642e01fSmrg	    deplibs="$deplib $deplibs"
63024642e01fSmrg	    continue
63034642e01fSmrg	  fi
63044642e01fSmrg	  case $linkmode in
63054642e01fSmrg	  lib)
63064642e01fSmrg	    # Linking convenience modules into shared libraries is allowed,
63074642e01fSmrg	    # but linking other static libraries is non-portable.
63084642e01fSmrg	    case " $dlpreconveniencelibs " in
63094642e01fSmrg	    *" $deplib "*) ;;
63104642e01fSmrg	    *)
63114642e01fSmrg	      valid_a_lib=no
63124642e01fSmrg	      case $deplibs_check_method in
63134642e01fSmrg		match_pattern*)
63144642e01fSmrg		  set dummy $deplibs_check_method; shift
63154642e01fSmrg		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
63166747b715Smrg		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
63174642e01fSmrg		    | $EGREP "$match_pattern_regex" > /dev/null; then
63184642e01fSmrg		    valid_a_lib=yes
63194642e01fSmrg		  fi
63204642e01fSmrg		;;
63214642e01fSmrg		pass_all)
63224642e01fSmrg		  valid_a_lib=yes
63234642e01fSmrg		;;
63244642e01fSmrg	      esac
63254642e01fSmrg	      if test "$valid_a_lib" != yes; then
63266747b715Smrg		echo
63274642e01fSmrg		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
63286747b715Smrg		echo "*** I have the capability to make that library automatically link in when"
63296747b715Smrg		echo "*** you link to this library.  But I can only do this if you have a"
63306747b715Smrg		echo "*** shared version of the library, which you do not appear to have"
63316747b715Smrg		echo "*** because the file extensions .$libext of this argument makes me believe"
63326747b715Smrg		echo "*** that it is just a static archive that I should not use here."
63334642e01fSmrg	      else
63346747b715Smrg		echo
63354642e01fSmrg		$ECHO "*** Warning: Linking the shared library $output against the"
63364642e01fSmrg		$ECHO "*** static library $deplib is not portable!"
63374642e01fSmrg		deplibs="$deplib $deplibs"
63384642e01fSmrg	      fi
63394642e01fSmrg	      ;;
63404642e01fSmrg	    esac
63414642e01fSmrg	    continue
63424642e01fSmrg	    ;;
63434642e01fSmrg	  prog)
63444642e01fSmrg	    if test "$pass" != link; then
63454642e01fSmrg	      deplibs="$deplib $deplibs"
63464642e01fSmrg	    else
63474642e01fSmrg	      compile_deplibs="$deplib $compile_deplibs"
63484642e01fSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
63494642e01fSmrg	    fi
63504642e01fSmrg	    continue
63514642e01fSmrg	    ;;
63524642e01fSmrg	  esac # linkmode
63534642e01fSmrg	  ;; # *.$libext
63544642e01fSmrg	*.lo | *.$objext)
63554642e01fSmrg	  if test "$pass" = conv; then
63564642e01fSmrg	    deplibs="$deplib $deplibs"
63574642e01fSmrg	  elif test "$linkmode" = prog; then
63584642e01fSmrg	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
63594642e01fSmrg	      # If there is no dlopen support or we're linking statically,
63604642e01fSmrg	      # we need to preload.
63616747b715Smrg	      func_append newdlprefiles " $deplib"
63624642e01fSmrg	      compile_deplibs="$deplib $compile_deplibs"
63634642e01fSmrg	      finalize_deplibs="$deplib $finalize_deplibs"
63644642e01fSmrg	    else
63656747b715Smrg	      func_append newdlfiles " $deplib"
63664642e01fSmrg	    fi
63674642e01fSmrg	  fi
63684642e01fSmrg	  continue
63694642e01fSmrg	  ;;
63704642e01fSmrg	%DEPLIBS%)
63714642e01fSmrg	  alldeplibs=yes
63724642e01fSmrg	  continue
63734642e01fSmrg	  ;;
63744642e01fSmrg	esac # case $deplib
63754642e01fSmrg
63764642e01fSmrg	if test "$found" = yes || test -f "$lib"; then :
63774642e01fSmrg	else
63784642e01fSmrg	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
63794642e01fSmrg	fi
63804642e01fSmrg
63814642e01fSmrg	# Check to see that this really is a libtool archive.
63824642e01fSmrg	func_lalib_unsafe_p "$lib" \
63834642e01fSmrg	  || func_fatal_error "\`$lib' is not a valid libtool archive"
63844642e01fSmrg
63854642e01fSmrg	func_dirname "$lib" "" "."
63864642e01fSmrg	ladir="$func_dirname_result"
63874642e01fSmrg
63884642e01fSmrg	dlname=
63894642e01fSmrg	dlopen=
63904642e01fSmrg	dlpreopen=
63914642e01fSmrg	libdir=
63924642e01fSmrg	library_names=
63934642e01fSmrg	old_library=
63944642e01fSmrg	inherited_linker_flags=
63954642e01fSmrg	# If the library was installed with an old release of libtool,
63964642e01fSmrg	# it will not redefine variables installed, or shouldnotlink
63974642e01fSmrg	installed=yes
63984642e01fSmrg	shouldnotlink=no
63994642e01fSmrg	avoidtemprpath=
64004642e01fSmrg
64014642e01fSmrg
64024642e01fSmrg	# Read the .la file
64034642e01fSmrg	func_source "$lib"
64044642e01fSmrg
64054642e01fSmrg	# Convert "-framework foo" to "foo.ltframework"
64064642e01fSmrg	if test -n "$inherited_linker_flags"; then
64076747b715Smrg	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
64084642e01fSmrg	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
64094642e01fSmrg	    case " $new_inherited_linker_flags " in
64104642e01fSmrg	      *" $tmp_inherited_linker_flag "*) ;;
64116747b715Smrg	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
64124642e01fSmrg	    esac
64134642e01fSmrg	  done
64144642e01fSmrg	fi
64156747b715Smrg	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
64164642e01fSmrg	if test "$linkmode,$pass" = "lib,link" ||
64174642e01fSmrg	   test "$linkmode,$pass" = "prog,scan" ||
64184642e01fSmrg	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
64196747b715Smrg	  test -n "$dlopen" && func_append dlfiles " $dlopen"
64206747b715Smrg	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
64214642e01fSmrg	fi
64224642e01fSmrg
64234642e01fSmrg	if test "$pass" = conv; then
64244642e01fSmrg	  # Only check for convenience libraries
64254642e01fSmrg	  deplibs="$lib $deplibs"
64264642e01fSmrg	  if test -z "$libdir"; then
64274642e01fSmrg	    if test -z "$old_library"; then
64284642e01fSmrg	      func_fatal_error "cannot find name of link library for \`$lib'"
64294642e01fSmrg	    fi
64304642e01fSmrg	    # It is a libtool convenience library, so add in its objects.
64316747b715Smrg	    func_append convenience " $ladir/$objdir/$old_library"
64326747b715Smrg	    func_append old_convenience " $ladir/$objdir/$old_library"
64334642e01fSmrg	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
64344642e01fSmrg	    func_fatal_error "\`$lib' is not a convenience library"
64354642e01fSmrg	  fi
64366747b715Smrg	  tmp_libs=
64376747b715Smrg	  for deplib in $dependency_libs; do
64386747b715Smrg	    deplibs="$deplib $deplibs"
64396747b715Smrg	    if $opt_preserve_dup_deps ; then
64406747b715Smrg	      case "$tmp_libs " in
64416747b715Smrg	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
64426747b715Smrg	      esac
64436747b715Smrg	    fi
64446747b715Smrg	    func_append tmp_libs " $deplib"
64456747b715Smrg	  done
64464642e01fSmrg	  continue
64474642e01fSmrg	fi # $pass = conv
64484642e01fSmrg
64494642e01fSmrg
64504642e01fSmrg	# Get the name of the library we link against.
64514642e01fSmrg	linklib=
64526747b715Smrg	if test -n "$old_library" &&
64536747b715Smrg	   { test "$prefer_static_libs" = yes ||
64546747b715Smrg	     test "$prefer_static_libs,$installed" = "built,no"; }; then
64556747b715Smrg	  linklib=$old_library
64566747b715Smrg	else
64576747b715Smrg	  for l in $old_library $library_names; do
64586747b715Smrg	    linklib="$l"
64596747b715Smrg	  done
64606747b715Smrg	fi
64614642e01fSmrg	if test -z "$linklib"; then
64624642e01fSmrg	  func_fatal_error "cannot find name of link library for \`$lib'"
64634642e01fSmrg	fi
64644642e01fSmrg
64654642e01fSmrg	# This library was specified with -dlopen.
64664642e01fSmrg	if test "$pass" = dlopen; then
64674642e01fSmrg	  if test -z "$libdir"; then
64684642e01fSmrg	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
64694642e01fSmrg	  fi
64704642e01fSmrg	  if test -z "$dlname" ||
64714642e01fSmrg	     test "$dlopen_support" != yes ||
64724642e01fSmrg	     test "$build_libtool_libs" = no; then
64734642e01fSmrg	    # If there is no dlname, no dlopen support or we're linking
64744642e01fSmrg	    # statically, we need to preload.  We also need to preload any
64754642e01fSmrg	    # dependent libraries so libltdl's deplib preloader doesn't
64764642e01fSmrg	    # bomb out in the load deplibs phase.
64776747b715Smrg	    func_append dlprefiles " $lib $dependency_libs"
64784642e01fSmrg	  else
64796747b715Smrg	    func_append newdlfiles " $lib"
64804642e01fSmrg	  fi
64814642e01fSmrg	  continue
64824642e01fSmrg	fi # $pass = dlopen
64834642e01fSmrg
64844642e01fSmrg	# We need an absolute path.
64854642e01fSmrg	case $ladir in
64864642e01fSmrg	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
64874642e01fSmrg	*)
64884642e01fSmrg	  abs_ladir=`cd "$ladir" && pwd`
64894642e01fSmrg	  if test -z "$abs_ladir"; then
64904642e01fSmrg	    func_warning "cannot determine absolute directory name of \`$ladir'"
64914642e01fSmrg	    func_warning "passing it literally to the linker, although it might fail"
64924642e01fSmrg	    abs_ladir="$ladir"
64934642e01fSmrg	  fi
64944642e01fSmrg	  ;;
64954642e01fSmrg	esac
64964642e01fSmrg	func_basename "$lib"
64974642e01fSmrg	laname="$func_basename_result"
64984642e01fSmrg
64994642e01fSmrg	# Find the relevant object directory and library name.
65004642e01fSmrg	if test "X$installed" = Xyes; then
65016747b715Smrg	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
65024642e01fSmrg	    func_warning "library \`$lib' was moved."
65034642e01fSmrg	    dir="$ladir"
65044642e01fSmrg	    absdir="$abs_ladir"
65054642e01fSmrg	    libdir="$abs_ladir"
65064642e01fSmrg	  else
65076747b715Smrg	    dir="$lt_sysroot$libdir"
65086747b715Smrg	    absdir="$lt_sysroot$libdir"
65094642e01fSmrg	  fi
65104642e01fSmrg	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
65114642e01fSmrg	else
65124642e01fSmrg	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
65134642e01fSmrg	    dir="$ladir"
65144642e01fSmrg	    absdir="$abs_ladir"
65154642e01fSmrg	    # Remove this search path later
65166747b715Smrg	    func_append notinst_path " $abs_ladir"
65174642e01fSmrg	  else
65184642e01fSmrg	    dir="$ladir/$objdir"
65194642e01fSmrg	    absdir="$abs_ladir/$objdir"
65204642e01fSmrg	    # Remove this search path later
65216747b715Smrg	    func_append notinst_path " $abs_ladir"
65224642e01fSmrg	  fi
65234642e01fSmrg	fi # $installed = yes
65244642e01fSmrg	func_stripname 'lib' '.la' "$laname"
65254642e01fSmrg	name=$func_stripname_result
65264642e01fSmrg
65274642e01fSmrg	# This library was specified with -dlpreopen.
65284642e01fSmrg	if test "$pass" = dlpreopen; then
65294642e01fSmrg	  if test -z "$libdir" && test "$linkmode" = prog; then
65304642e01fSmrg	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
65314642e01fSmrg	  fi
65326747b715Smrg	  case "$host" in
65336747b715Smrg	    # special handling for platforms with PE-DLLs.
65346747b715Smrg	    *cygwin* | *mingw* | *cegcc* )
65356747b715Smrg	      # Linker will automatically link against shared library if both
65366747b715Smrg	      # static and shared are present.  Therefore, ensure we extract
65376747b715Smrg	      # symbols from the import library if a shared library is present
65386747b715Smrg	      # (otherwise, the dlopen module name will be incorrect).  We do
65396747b715Smrg	      # this by putting the import library name into $newdlprefiles.
65406747b715Smrg	      # We recover the dlopen module name by 'saving' the la file
65416747b715Smrg	      # name in a special purpose variable, and (later) extracting the
65426747b715Smrg	      # dlname from the la file.
65436747b715Smrg	      if test -n "$dlname"; then
65446747b715Smrg	        func_tr_sh "$dir/$linklib"
65456747b715Smrg	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
65466747b715Smrg	        func_append newdlprefiles " $dir/$linklib"
65476747b715Smrg	      else
65486747b715Smrg	        func_append newdlprefiles " $dir/$old_library"
65496747b715Smrg	        # Keep a list of preopened convenience libraries to check
65506747b715Smrg	        # that they are being used correctly in the link pass.
65516747b715Smrg	        test -z "$libdir" && \
65526747b715Smrg	          func_append dlpreconveniencelibs " $dir/$old_library"
65536747b715Smrg	      fi
65546747b715Smrg	    ;;
65556747b715Smrg	    * )
65566747b715Smrg	      # Prefer using a static library (so that no silly _DYNAMIC symbols
65576747b715Smrg	      # are required to link).
65586747b715Smrg	      if test -n "$old_library"; then
65596747b715Smrg	        func_append newdlprefiles " $dir/$old_library"
65606747b715Smrg	        # Keep a list of preopened convenience libraries to check
65616747b715Smrg	        # that they are being used correctly in the link pass.
65626747b715Smrg	        test -z "$libdir" && \
65636747b715Smrg	          func_append dlpreconveniencelibs " $dir/$old_library"
65646747b715Smrg	      # Otherwise, use the dlname, so that lt_dlopen finds it.
65656747b715Smrg	      elif test -n "$dlname"; then
65666747b715Smrg	        func_append newdlprefiles " $dir/$dlname"
65676747b715Smrg	      else
65686747b715Smrg	        func_append newdlprefiles " $dir/$linklib"
65696747b715Smrg	      fi
65706747b715Smrg	    ;;
65716747b715Smrg	  esac
65724642e01fSmrg	fi # $pass = dlpreopen
65734642e01fSmrg
65744642e01fSmrg	if test -z "$libdir"; then
65754642e01fSmrg	  # Link the convenience library
65764642e01fSmrg	  if test "$linkmode" = lib; then
65774642e01fSmrg	    deplibs="$dir/$old_library $deplibs"
65784642e01fSmrg	  elif test "$linkmode,$pass" = "prog,link"; then
65794642e01fSmrg	    compile_deplibs="$dir/$old_library $compile_deplibs"
65804642e01fSmrg	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
65814642e01fSmrg	  else
65824642e01fSmrg	    deplibs="$lib $deplibs" # used for prog,scan pass
65834642e01fSmrg	  fi
65844642e01fSmrg	  continue
65854642e01fSmrg	fi
65864642e01fSmrg
65874642e01fSmrg
65884642e01fSmrg	if test "$linkmode" = prog && test "$pass" != link; then
65896747b715Smrg	  func_append newlib_search_path " $ladir"
65904642e01fSmrg	  deplibs="$lib $deplibs"
65914642e01fSmrg
65924642e01fSmrg	  linkalldeplibs=no
65934642e01fSmrg	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
65944642e01fSmrg	     test "$build_libtool_libs" = no; then
65954642e01fSmrg	    linkalldeplibs=yes
65964642e01fSmrg	  fi
65974642e01fSmrg
65984642e01fSmrg	  tmp_libs=
65994642e01fSmrg	  for deplib in $dependency_libs; do
66004642e01fSmrg	    case $deplib in
66014642e01fSmrg	    -L*) func_stripname '-L' '' "$deplib"
66026747b715Smrg	         func_resolve_sysroot "$func_stripname_result"
66036747b715Smrg	         func_append newlib_search_path " $func_resolve_sysroot_result"
66044642e01fSmrg		 ;;
66054642e01fSmrg	    esac
66064642e01fSmrg	    # Need to link against all dependency_libs?
66074642e01fSmrg	    if test "$linkalldeplibs" = yes; then
66084642e01fSmrg	      deplibs="$deplib $deplibs"
66094642e01fSmrg	    else
66104642e01fSmrg	      # Need to hardcode shared library paths
66114642e01fSmrg	      # or/and link against static libraries
66124642e01fSmrg	      newdependency_libs="$deplib $newdependency_libs"
66134642e01fSmrg	    fi
66146747b715Smrg	    if $opt_preserve_dup_deps ; then
66154642e01fSmrg	      case "$tmp_libs " in
66166747b715Smrg	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
66174642e01fSmrg	      esac
66184642e01fSmrg	    fi
66196747b715Smrg	    func_append tmp_libs " $deplib"
66204642e01fSmrg	  done # for deplib
66214642e01fSmrg	  continue
66224642e01fSmrg	fi # $linkmode = prog...
66234642e01fSmrg
66244642e01fSmrg	if test "$linkmode,$pass" = "prog,link"; then
66254642e01fSmrg	  if test -n "$library_names" &&
66264642e01fSmrg	     { { test "$prefer_static_libs" = no ||
66274642e01fSmrg	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
66284642e01fSmrg	       test -z "$old_library"; }; then
66294642e01fSmrg	    # We need to hardcode the library path
66304642e01fSmrg	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
66314642e01fSmrg	      # Make sure the rpath contains only unique directories.
66324642e01fSmrg	      case "$temp_rpath:" in
66334642e01fSmrg	      *"$absdir:"*) ;;
66346747b715Smrg	      *) func_append temp_rpath "$absdir:" ;;
66354642e01fSmrg	      esac
66364642e01fSmrg	    fi
66374642e01fSmrg
66384642e01fSmrg	    # Hardcode the library path.
66394642e01fSmrg	    # Skip directories that are in the system default run-time
66404642e01fSmrg	    # search path.
66414642e01fSmrg	    case " $sys_lib_dlsearch_path " in
66424642e01fSmrg	    *" $absdir "*) ;;
66434642e01fSmrg	    *)
66444642e01fSmrg	      case "$compile_rpath " in
66454642e01fSmrg	      *" $absdir "*) ;;
66466747b715Smrg	      *) func_append compile_rpath " $absdir" ;;
66474642e01fSmrg	      esac
66484642e01fSmrg	      ;;
66494642e01fSmrg	    esac
66504642e01fSmrg	    case " $sys_lib_dlsearch_path " in
66514642e01fSmrg	    *" $libdir "*) ;;
66524642e01fSmrg	    *)
66534642e01fSmrg	      case "$finalize_rpath " in
66544642e01fSmrg	      *" $libdir "*) ;;
66556747b715Smrg	      *) func_append finalize_rpath " $libdir" ;;
66564642e01fSmrg	      esac
66574642e01fSmrg	      ;;
66584642e01fSmrg	    esac
66594642e01fSmrg	  fi # $linkmode,$pass = prog,link...
66604642e01fSmrg
66614642e01fSmrg	  if test "$alldeplibs" = yes &&
66624642e01fSmrg	     { test "$deplibs_check_method" = pass_all ||
66634642e01fSmrg	       { test "$build_libtool_libs" = yes &&
66644642e01fSmrg		 test -n "$library_names"; }; }; then
66654642e01fSmrg	    # We only need to search for static libraries
66664642e01fSmrg	    continue
66674642e01fSmrg	  fi
66684642e01fSmrg	fi
66694642e01fSmrg
66704642e01fSmrg	link_static=no # Whether the deplib will be linked statically
66714642e01fSmrg	use_static_libs=$prefer_static_libs
66724642e01fSmrg	if test "$use_static_libs" = built && test "$installed" = yes; then
66734642e01fSmrg	  use_static_libs=no
66744642e01fSmrg	fi
66754642e01fSmrg	if test -n "$library_names" &&
66764642e01fSmrg	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
66774642e01fSmrg	  case $host in
66784642e01fSmrg	  *cygwin* | *mingw* | *cegcc*)
66794642e01fSmrg	      # No point in relinking DLLs because paths are not encoded
66806747b715Smrg	      func_append notinst_deplibs " $lib"
66814642e01fSmrg	      need_relink=no
66824642e01fSmrg	    ;;
66834642e01fSmrg	  *)
66844642e01fSmrg	    if test "$installed" = no; then
66856747b715Smrg	      func_append notinst_deplibs " $lib"
66864642e01fSmrg	      need_relink=yes
66874642e01fSmrg	    fi
66884642e01fSmrg	    ;;
66894642e01fSmrg	  esac
66904642e01fSmrg	  # This is a shared library
66914642e01fSmrg
66924642e01fSmrg	  # Warn about portability, can't link against -module's on some
66934642e01fSmrg	  # systems (darwin).  Don't bleat about dlopened modules though!
66944642e01fSmrg	  dlopenmodule=""
66954642e01fSmrg	  for dlpremoduletest in $dlprefiles; do
66964642e01fSmrg	    if test "X$dlpremoduletest" = "X$lib"; then
66974642e01fSmrg	      dlopenmodule="$dlpremoduletest"
66984642e01fSmrg	      break
66994642e01fSmrg	    fi
67004642e01fSmrg	  done
67014642e01fSmrg	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
67026747b715Smrg	    echo
67034642e01fSmrg	    if test "$linkmode" = prog; then
67044642e01fSmrg	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
67054642e01fSmrg	    else
67064642e01fSmrg	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
67074642e01fSmrg	    fi
67084642e01fSmrg	    $ECHO "*** $linklib is not portable!"
67094642e01fSmrg	  fi
67104642e01fSmrg	  if test "$linkmode" = lib &&
67114642e01fSmrg	     test "$hardcode_into_libs" = yes; then
67124642e01fSmrg	    # Hardcode the library path.
67134642e01fSmrg	    # Skip directories that are in the system default run-time
67144642e01fSmrg	    # search path.
67154642e01fSmrg	    case " $sys_lib_dlsearch_path " in
67164642e01fSmrg	    *" $absdir "*) ;;
67174642e01fSmrg	    *)
67184642e01fSmrg	      case "$compile_rpath " in
67194642e01fSmrg	      *" $absdir "*) ;;
67206747b715Smrg	      *) func_append compile_rpath " $absdir" ;;
67214642e01fSmrg	      esac
67224642e01fSmrg	      ;;
67234642e01fSmrg	    esac
67244642e01fSmrg	    case " $sys_lib_dlsearch_path " in
67254642e01fSmrg	    *" $libdir "*) ;;
67264642e01fSmrg	    *)
67274642e01fSmrg	      case "$finalize_rpath " in
67284642e01fSmrg	      *" $libdir "*) ;;
67296747b715Smrg	      *) func_append finalize_rpath " $libdir" ;;
67304642e01fSmrg	      esac
67314642e01fSmrg	      ;;
67324642e01fSmrg	    esac
67334642e01fSmrg	  fi
67344642e01fSmrg
67354642e01fSmrg	  if test -n "$old_archive_from_expsyms_cmds"; then
67364642e01fSmrg	    # figure out the soname
67374642e01fSmrg	    set dummy $library_names
67384642e01fSmrg	    shift
67394642e01fSmrg	    realname="$1"
67404642e01fSmrg	    shift
67414642e01fSmrg	    libname=`eval "\\$ECHO \"$libname_spec\""`
67424642e01fSmrg	    # use dlname if we got it. it's perfectly good, no?
67434642e01fSmrg	    if test -n "$dlname"; then
67444642e01fSmrg	      soname="$dlname"
67454642e01fSmrg	    elif test -n "$soname_spec"; then
67464642e01fSmrg	      # bleh windows
67474642e01fSmrg	      case $host in
67484642e01fSmrg	      *cygwin* | mingw* | *cegcc*)
67494642e01fSmrg	        func_arith $current - $age
67504642e01fSmrg		major=$func_arith_result
67514642e01fSmrg		versuffix="-$major"
67524642e01fSmrg		;;
67534642e01fSmrg	      esac
67544642e01fSmrg	      eval soname=\"$soname_spec\"
67554642e01fSmrg	    else
67564642e01fSmrg	      soname="$realname"
67574642e01fSmrg	    fi
67584642e01fSmrg
67594642e01fSmrg	    # Make a new name for the extract_expsyms_cmds to use
67604642e01fSmrg	    soroot="$soname"
67614642e01fSmrg	    func_basename "$soroot"
67624642e01fSmrg	    soname="$func_basename_result"
67634642e01fSmrg	    func_stripname 'lib' '.dll' "$soname"
67644642e01fSmrg	    newlib=libimp-$func_stripname_result.a
67654642e01fSmrg
67664642e01fSmrg	    # If the library has no export list, then create one now
67674642e01fSmrg	    if test -f "$output_objdir/$soname-def"; then :
67684642e01fSmrg	    else
67694642e01fSmrg	      func_verbose "extracting exported symbol list from \`$soname'"
67704642e01fSmrg	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
67714642e01fSmrg	    fi
67724642e01fSmrg
67734642e01fSmrg	    # Create $newlib
67744642e01fSmrg	    if test -f "$output_objdir/$newlib"; then :; else
67754642e01fSmrg	      func_verbose "generating import library for \`$soname'"
67764642e01fSmrg	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
67774642e01fSmrg	    fi
67784642e01fSmrg	    # make sure the library variables are pointing to the new library
67794642e01fSmrg	    dir=$output_objdir
67804642e01fSmrg	    linklib=$newlib
67814642e01fSmrg	  fi # test -n "$old_archive_from_expsyms_cmds"
67824642e01fSmrg
67836747b715Smrg	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
67844642e01fSmrg	    add_shlibpath=
67854642e01fSmrg	    add_dir=
67864642e01fSmrg	    add=
67874642e01fSmrg	    lib_linked=yes
67884642e01fSmrg	    case $hardcode_action in
67894642e01fSmrg	    immediate | unsupported)
67904642e01fSmrg	      if test "$hardcode_direct" = no; then
67914642e01fSmrg		add="$dir/$linklib"
67924642e01fSmrg		case $host in
67934642e01fSmrg		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
67944642e01fSmrg		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
67954642e01fSmrg		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
67964642e01fSmrg		    *-*-unixware7*) add_dir="-L$dir" ;;
67974642e01fSmrg		  *-*-darwin* )
67984642e01fSmrg		    # if the lib is a (non-dlopened) module then we can not
67994642e01fSmrg		    # link against it, someone is ignoring the earlier warnings
68004642e01fSmrg		    if /usr/bin/file -L $add 2> /dev/null |
68014642e01fSmrg			 $GREP ": [^:]* bundle" >/dev/null ; then
68024642e01fSmrg		      if test "X$dlopenmodule" != "X$lib"; then
68034642e01fSmrg			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
68044642e01fSmrg			if test -z "$old_library" ; then
68056747b715Smrg			  echo
68066747b715Smrg			  echo "*** And there doesn't seem to be a static archive available"
68076747b715Smrg			  echo "*** The link will probably fail, sorry"
68084642e01fSmrg			else
68094642e01fSmrg			  add="$dir/$old_library"
68104642e01fSmrg			fi
68114642e01fSmrg		      elif test -n "$old_library"; then
68124642e01fSmrg			add="$dir/$old_library"
68134642e01fSmrg		      fi
68144642e01fSmrg		    fi
68154642e01fSmrg		esac
68164642e01fSmrg	      elif test "$hardcode_minus_L" = no; then
68174642e01fSmrg		case $host in
68184642e01fSmrg		*-*-sunos*) add_shlibpath="$dir" ;;
68194642e01fSmrg		esac
68204642e01fSmrg		add_dir="-L$dir"
68214642e01fSmrg		add="-l$name"
68224642e01fSmrg	      elif test "$hardcode_shlibpath_var" = no; then
68234642e01fSmrg		add_shlibpath="$dir"
68244642e01fSmrg		add="-l$name"
68254642e01fSmrg	      else
68264642e01fSmrg		lib_linked=no
68274642e01fSmrg	      fi
68284642e01fSmrg	      ;;
68294642e01fSmrg	    relink)
68304642e01fSmrg	      if test "$hardcode_direct" = yes &&
68314642e01fSmrg	         test "$hardcode_direct_absolute" = no; then
68324642e01fSmrg		add="$dir/$linklib"
68334642e01fSmrg	      elif test "$hardcode_minus_L" = yes; then
68344642e01fSmrg		add_dir="-L$dir"
68354642e01fSmrg		# Try looking first in the location we're being installed to.
68364642e01fSmrg		if test -n "$inst_prefix_dir"; then
68374642e01fSmrg		  case $libdir in
68384642e01fSmrg		    [\\/]*)
68396747b715Smrg		      func_append add_dir " -L$inst_prefix_dir$libdir"
68404642e01fSmrg		      ;;
68414642e01fSmrg		  esac
68424642e01fSmrg		fi
68434642e01fSmrg		add="-l$name"
68444642e01fSmrg	      elif test "$hardcode_shlibpath_var" = yes; then
68454642e01fSmrg		add_shlibpath="$dir"
68464642e01fSmrg		add="-l$name"
68474642e01fSmrg	      else
68484642e01fSmrg		lib_linked=no
68494642e01fSmrg	      fi
68504642e01fSmrg	      ;;
68514642e01fSmrg	    *) lib_linked=no ;;
68524642e01fSmrg	    esac
68534642e01fSmrg
68544642e01fSmrg	    if test "$lib_linked" != yes; then
68554642e01fSmrg	      func_fatal_configuration "unsupported hardcode properties"
68564642e01fSmrg	    fi
68574642e01fSmrg
68584642e01fSmrg	    if test -n "$add_shlibpath"; then
68594642e01fSmrg	      case :$compile_shlibpath: in
68604642e01fSmrg	      *":$add_shlibpath:"*) ;;
68616747b715Smrg	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
68624642e01fSmrg	      esac
68634642e01fSmrg	    fi
68644642e01fSmrg	    if test "$linkmode" = prog; then
68654642e01fSmrg	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
68664642e01fSmrg	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
68674642e01fSmrg	    else
68684642e01fSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
68694642e01fSmrg	      test -n "$add" && deplibs="$add $deplibs"
68704642e01fSmrg	      if test "$hardcode_direct" != yes &&
68714642e01fSmrg		 test "$hardcode_minus_L" != yes &&
68724642e01fSmrg		 test "$hardcode_shlibpath_var" = yes; then
68734642e01fSmrg		case :$finalize_shlibpath: in
68744642e01fSmrg		*":$libdir:"*) ;;
68756747b715Smrg		*) func_append finalize_shlibpath "$libdir:" ;;
68764642e01fSmrg		esac
68774642e01fSmrg	      fi
68784642e01fSmrg	    fi
68794642e01fSmrg	  fi
68804642e01fSmrg
68816747b715Smrg	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
68824642e01fSmrg	    add_shlibpath=
68834642e01fSmrg	    add_dir=
68844642e01fSmrg	    add=
68854642e01fSmrg	    # Finalize command for both is simple: just hardcode it.
68864642e01fSmrg	    if test "$hardcode_direct" = yes &&
68874642e01fSmrg	       test "$hardcode_direct_absolute" = no; then
68884642e01fSmrg	      add="$libdir/$linklib"
68894642e01fSmrg	    elif test "$hardcode_minus_L" = yes; then
68904642e01fSmrg	      add_dir="-L$libdir"
68914642e01fSmrg	      add="-l$name"
68924642e01fSmrg	    elif test "$hardcode_shlibpath_var" = yes; then
68934642e01fSmrg	      case :$finalize_shlibpath: in
68944642e01fSmrg	      *":$libdir:"*) ;;
68956747b715Smrg	      *) func_append finalize_shlibpath "$libdir:" ;;
68964642e01fSmrg	      esac
68974642e01fSmrg	      add="-l$name"
68984642e01fSmrg	    elif test "$hardcode_automatic" = yes; then
68994642e01fSmrg	      if test -n "$inst_prefix_dir" &&
69004642e01fSmrg		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
69014642e01fSmrg		add="$inst_prefix_dir$libdir/$linklib"
69024642e01fSmrg	      else
69034642e01fSmrg		add="$libdir/$linklib"
69044642e01fSmrg	      fi
69054642e01fSmrg	    else
69064642e01fSmrg	      # We cannot seem to hardcode it, guess we'll fake it.
69074642e01fSmrg	      add_dir="-L$libdir"
69084642e01fSmrg	      # Try looking first in the location we're being installed to.
69094642e01fSmrg	      if test -n "$inst_prefix_dir"; then
69104642e01fSmrg		case $libdir in
69114642e01fSmrg		  [\\/]*)
69126747b715Smrg		    func_append add_dir " -L$inst_prefix_dir$libdir"
69134642e01fSmrg		    ;;
69144642e01fSmrg		esac
69154642e01fSmrg	      fi
69164642e01fSmrg	      add="-l$name"
69174642e01fSmrg	    fi
69184642e01fSmrg
69194642e01fSmrg	    if test "$linkmode" = prog; then
69204642e01fSmrg	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
69214642e01fSmrg	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
69224642e01fSmrg	    else
69234642e01fSmrg	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
69244642e01fSmrg	      test -n "$add" && deplibs="$add $deplibs"
69254642e01fSmrg	    fi
69264642e01fSmrg	  fi
69274642e01fSmrg	elif test "$linkmode" = prog; then
69284642e01fSmrg	  # Here we assume that one of hardcode_direct or hardcode_minus_L
69294642e01fSmrg	  # is not unsupported.  This is valid on all known static and
69304642e01fSmrg	  # shared platforms.
69314642e01fSmrg	  if test "$hardcode_direct" != unsupported; then
69324642e01fSmrg	    test -n "$old_library" && linklib="$old_library"
69334642e01fSmrg	    compile_deplibs="$dir/$linklib $compile_deplibs"
69344642e01fSmrg	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
69354642e01fSmrg	  else
69364642e01fSmrg	    compile_deplibs="-l$name -L$dir $compile_deplibs"
69374642e01fSmrg	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
69384642e01fSmrg	  fi
69394642e01fSmrg	elif test "$build_libtool_libs" = yes; then
69404642e01fSmrg	  # Not a shared library
69414642e01fSmrg	  if test "$deplibs_check_method" != pass_all; then
69424642e01fSmrg	    # We're trying link a shared library against a static one
69434642e01fSmrg	    # but the system doesn't support it.
69444642e01fSmrg
69454642e01fSmrg	    # Just print a warning and add the library to dependency_libs so
69464642e01fSmrg	    # that the program can be linked against the static library.
69476747b715Smrg	    echo
69484642e01fSmrg	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
69496747b715Smrg	    echo "*** I have the capability to make that library automatically link in when"
69506747b715Smrg	    echo "*** you link to this library.  But I can only do this if you have a"
69516747b715Smrg	    echo "*** shared version of the library, which you do not appear to have."
69524642e01fSmrg	    if test "$module" = yes; then
69536747b715Smrg	      echo "*** But as you try to build a module library, libtool will still create "
69546747b715Smrg	      echo "*** a static module, that should work as long as the dlopening application"
69556747b715Smrg	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
69564642e01fSmrg	      if test -z "$global_symbol_pipe"; then
69576747b715Smrg		echo
69586747b715Smrg		echo "*** However, this would only work if libtool was able to extract symbol"
69596747b715Smrg		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
69606747b715Smrg		echo "*** not find such a program.  So, this module is probably useless."
69616747b715Smrg		echo "*** \`nm' from GNU binutils and a full rebuild may help."
69624642e01fSmrg	      fi
69634642e01fSmrg	      if test "$build_old_libs" = no; then
69644642e01fSmrg		build_libtool_libs=module
69654642e01fSmrg		build_old_libs=yes
69664642e01fSmrg	      else
69674642e01fSmrg		build_libtool_libs=no
69684642e01fSmrg	      fi
69694642e01fSmrg	    fi
69704642e01fSmrg	  else
69714642e01fSmrg	    deplibs="$dir/$old_library $deplibs"
69724642e01fSmrg	    link_static=yes
69734642e01fSmrg	  fi
69744642e01fSmrg	fi # link shared/static library?
69754642e01fSmrg
69764642e01fSmrg	if test "$linkmode" = lib; then
69774642e01fSmrg	  if test -n "$dependency_libs" &&
69784642e01fSmrg	     { test "$hardcode_into_libs" != yes ||
69794642e01fSmrg	       test "$build_old_libs" = yes ||
69804642e01fSmrg	       test "$link_static" = yes; }; then
69814642e01fSmrg	    # Extract -R from dependency_libs
69824642e01fSmrg	    temp_deplibs=
69834642e01fSmrg	    for libdir in $dependency_libs; do
69844642e01fSmrg	      case $libdir in
69854642e01fSmrg	      -R*) func_stripname '-R' '' "$libdir"
69864642e01fSmrg	           temp_xrpath=$func_stripname_result
69874642e01fSmrg		   case " $xrpath " in
69884642e01fSmrg		   *" $temp_xrpath "*) ;;
69896747b715Smrg		   *) func_append xrpath " $temp_xrpath";;
69904642e01fSmrg		   esac;;
69916747b715Smrg	      *) func_append temp_deplibs " $libdir";;
69924642e01fSmrg	      esac
69934642e01fSmrg	    done
69944642e01fSmrg	    dependency_libs="$temp_deplibs"
69954642e01fSmrg	  fi
69964642e01fSmrg
69976747b715Smrg	  func_append newlib_search_path " $absdir"
69984642e01fSmrg	  # Link against this library
69994642e01fSmrg	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
70004642e01fSmrg	  # ... and its dependency_libs
70014642e01fSmrg	  tmp_libs=
70024642e01fSmrg	  for deplib in $dependency_libs; do
70034642e01fSmrg	    newdependency_libs="$deplib $newdependency_libs"
70046747b715Smrg	    case $deplib in
70056747b715Smrg              -L*) func_stripname '-L' '' "$deplib"
70066747b715Smrg                   func_resolve_sysroot "$func_stripname_result";;
70076747b715Smrg              *) func_resolve_sysroot "$deplib" ;;
70086747b715Smrg            esac
70096747b715Smrg	    if $opt_preserve_dup_deps ; then
70104642e01fSmrg	      case "$tmp_libs " in
70116747b715Smrg	      *" $func_resolve_sysroot_result "*)
70126747b715Smrg                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
70134642e01fSmrg	      esac
70144642e01fSmrg	    fi
70156747b715Smrg	    func_append tmp_libs " $func_resolve_sysroot_result"
70164642e01fSmrg	  done
70174642e01fSmrg
70184642e01fSmrg	  if test "$link_all_deplibs" != no; then
70194642e01fSmrg	    # Add the search paths of all dependency libraries
70204642e01fSmrg	    for deplib in $dependency_libs; do
70214642e01fSmrg	      path=
70224642e01fSmrg	      case $deplib in
70234642e01fSmrg	      -L*) path="$deplib" ;;
70244642e01fSmrg	      *.la)
70256747b715Smrg	        func_resolve_sysroot "$deplib"
70266747b715Smrg	        deplib=$func_resolve_sysroot_result
70274642e01fSmrg	        func_dirname "$deplib" "" "."
70286747b715Smrg		dir=$func_dirname_result
70294642e01fSmrg		# We need an absolute path.
70304642e01fSmrg		case $dir in
70314642e01fSmrg		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
70324642e01fSmrg		*)
70334642e01fSmrg		  absdir=`cd "$dir" && pwd`
70344642e01fSmrg		  if test -z "$absdir"; then
70354642e01fSmrg		    func_warning "cannot determine absolute directory name of \`$dir'"
70364642e01fSmrg		    absdir="$dir"
70374642e01fSmrg		  fi
70384642e01fSmrg		  ;;
70394642e01fSmrg		esac
70404642e01fSmrg		if $GREP "^installed=no" $deplib > /dev/null; then
70414642e01fSmrg		case $host in
70424642e01fSmrg		*-*-darwin*)
70434642e01fSmrg		  depdepl=
70444642e01fSmrg		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
70454642e01fSmrg		  if test -n "$deplibrary_names" ; then
70464642e01fSmrg		    for tmp in $deplibrary_names ; do
70474642e01fSmrg		      depdepl=$tmp
70484642e01fSmrg		    done
70494642e01fSmrg		    if test -f "$absdir/$objdir/$depdepl" ; then
70504642e01fSmrg		      depdepl="$absdir/$objdir/$depdepl"
70514642e01fSmrg		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
70524642e01fSmrg                      if test -z "$darwin_install_name"; then
70534642e01fSmrg                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
70544642e01fSmrg                      fi
70556747b715Smrg		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
70566747b715Smrg		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
70574642e01fSmrg		      path=
70584642e01fSmrg		    fi
70594642e01fSmrg		  fi
70604642e01fSmrg		  ;;
70614642e01fSmrg		*)
70624642e01fSmrg		  path="-L$absdir/$objdir"
70634642e01fSmrg		  ;;
70644642e01fSmrg		esac
70654642e01fSmrg		else
70664642e01fSmrg		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
70674642e01fSmrg		  test -z "$libdir" && \
70684642e01fSmrg		    func_fatal_error "\`$deplib' is not a valid libtool archive"
70694642e01fSmrg		  test "$absdir" != "$libdir" && \
70704642e01fSmrg		    func_warning "\`$deplib' seems to be moved"
70714642e01fSmrg
70724642e01fSmrg		  path="-L$absdir"
70734642e01fSmrg		fi
70744642e01fSmrg		;;
70754642e01fSmrg	      esac
70764642e01fSmrg	      case " $deplibs " in
70774642e01fSmrg	      *" $path "*) ;;
70784642e01fSmrg	      *) deplibs="$path $deplibs" ;;
70794642e01fSmrg	      esac
70804642e01fSmrg	    done
70814642e01fSmrg	  fi # link_all_deplibs != no
70824642e01fSmrg	fi # linkmode = lib
70834642e01fSmrg      done # for deplib in $libs
70844642e01fSmrg      if test "$pass" = link; then
70854642e01fSmrg	if test "$linkmode" = "prog"; then
70864642e01fSmrg	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
70874642e01fSmrg	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
70884642e01fSmrg	else
70896747b715Smrg	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
70904642e01fSmrg	fi
70914642e01fSmrg      fi
70924642e01fSmrg      dependency_libs="$newdependency_libs"
70934642e01fSmrg      if test "$pass" = dlpreopen; then
70944642e01fSmrg	# Link the dlpreopened libraries before other libraries
70954642e01fSmrg	for deplib in $save_deplibs; do
70964642e01fSmrg	  deplibs="$deplib $deplibs"
70974642e01fSmrg	done
70984642e01fSmrg      fi
70994642e01fSmrg      if test "$pass" != dlopen; then
71004642e01fSmrg	if test "$pass" != conv; then
71014642e01fSmrg	  # Make sure lib_search_path contains only unique directories.
71024642e01fSmrg	  lib_search_path=
71034642e01fSmrg	  for dir in $newlib_search_path; do
71044642e01fSmrg	    case "$lib_search_path " in
71054642e01fSmrg	    *" $dir "*) ;;
71066747b715Smrg	    *) func_append lib_search_path " $dir" ;;
71074642e01fSmrg	    esac
71084642e01fSmrg	  done
71094642e01fSmrg	  newlib_search_path=
71104642e01fSmrg	fi
71114642e01fSmrg
71124642e01fSmrg	if test "$linkmode,$pass" != "prog,link"; then
71134642e01fSmrg	  vars="deplibs"
71144642e01fSmrg	else
71154642e01fSmrg	  vars="compile_deplibs finalize_deplibs"
71164642e01fSmrg	fi
71174642e01fSmrg	for var in $vars dependency_libs; do
71184642e01fSmrg	  # Add libraries to $var in reverse order
71194642e01fSmrg	  eval tmp_libs=\"\$$var\"
71204642e01fSmrg	  new_libs=
71214642e01fSmrg	  for deplib in $tmp_libs; do
71224642e01fSmrg	    # FIXME: Pedantically, this is the right thing to do, so
71234642e01fSmrg	    #        that some nasty dependency loop isn't accidentally
71244642e01fSmrg	    #        broken:
71254642e01fSmrg	    #new_libs="$deplib $new_libs"
71264642e01fSmrg	    # Pragmatically, this seems to cause very few problems in
71274642e01fSmrg	    # practice:
71284642e01fSmrg	    case $deplib in
71294642e01fSmrg	    -L*) new_libs="$deplib $new_libs" ;;
71304642e01fSmrg	    -R*) ;;
71314642e01fSmrg	    *)
71324642e01fSmrg	      # And here is the reason: when a library appears more
71334642e01fSmrg	      # than once as an explicit dependence of a library, or
71344642e01fSmrg	      # is implicitly linked in more than once by the
71354642e01fSmrg	      # compiler, it is considered special, and multiple
71364642e01fSmrg	      # occurrences thereof are not removed.  Compare this
71374642e01fSmrg	      # with having the same library being listed as a
71384642e01fSmrg	      # dependency of multiple other libraries: in this case,
71394642e01fSmrg	      # we know (pedantically, we assume) the library does not
71404642e01fSmrg	      # need to be listed more than once, so we keep only the
71414642e01fSmrg	      # last copy.  This is not always right, but it is rare
71424642e01fSmrg	      # enough that we require users that really mean to play
71434642e01fSmrg	      # such unportable linking tricks to link the library
71444642e01fSmrg	      # using -Wl,-lname, so that libtool does not consider it
71454642e01fSmrg	      # for duplicate removal.
71464642e01fSmrg	      case " $specialdeplibs " in
71474642e01fSmrg	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
71484642e01fSmrg	      *)
71494642e01fSmrg		case " $new_libs " in
71504642e01fSmrg		*" $deplib "*) ;;
71514642e01fSmrg		*) new_libs="$deplib $new_libs" ;;
71524642e01fSmrg		esac
71534642e01fSmrg		;;
71544642e01fSmrg	      esac
71554642e01fSmrg	      ;;
71564642e01fSmrg	    esac
71574642e01fSmrg	  done
71584642e01fSmrg	  tmp_libs=
71594642e01fSmrg	  for deplib in $new_libs; do
71604642e01fSmrg	    case $deplib in
71614642e01fSmrg	    -L*)
71624642e01fSmrg	      case " $tmp_libs " in
71634642e01fSmrg	      *" $deplib "*) ;;
71646747b715Smrg	      *) func_append tmp_libs " $deplib" ;;
71654642e01fSmrg	      esac
71664642e01fSmrg	      ;;
71676747b715Smrg	    *) func_append tmp_libs " $deplib" ;;
71684642e01fSmrg	    esac
71694642e01fSmrg	  done
71704642e01fSmrg	  eval $var=\"$tmp_libs\"
71714642e01fSmrg	done # for var
71724642e01fSmrg      fi
71734642e01fSmrg      # Last step: remove runtime libs from dependency_libs
71744642e01fSmrg      # (they stay in deplibs)
71754642e01fSmrg      tmp_libs=
71764642e01fSmrg      for i in $dependency_libs ; do
71774642e01fSmrg	case " $predeps $postdeps $compiler_lib_search_path " in
71784642e01fSmrg	*" $i "*)
71794642e01fSmrg	  i=""
71804642e01fSmrg	  ;;
71814642e01fSmrg	esac
71824642e01fSmrg	if test -n "$i" ; then
71836747b715Smrg	  func_append tmp_libs " $i"
71844642e01fSmrg	fi
71854642e01fSmrg      done
71864642e01fSmrg      dependency_libs=$tmp_libs
71874642e01fSmrg    done # for pass
71884642e01fSmrg    if test "$linkmode" = prog; then
71894642e01fSmrg      dlfiles="$newdlfiles"
71904642e01fSmrg    fi
71914642e01fSmrg    if test "$linkmode" = prog || test "$linkmode" = lib; then
71924642e01fSmrg      dlprefiles="$newdlprefiles"
71934642e01fSmrg    fi
71944642e01fSmrg
71954642e01fSmrg    case $linkmode in
71964642e01fSmrg    oldlib)
71974642e01fSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
71984642e01fSmrg	func_warning "\`-dlopen' is ignored for archives"
71994642e01fSmrg      fi
72004642e01fSmrg
72014642e01fSmrg      case " $deplibs" in
72024642e01fSmrg      *\ -l* | *\ -L*)
72034642e01fSmrg	func_warning "\`-l' and \`-L' are ignored for archives" ;;
72044642e01fSmrg      esac
72054642e01fSmrg
72064642e01fSmrg      test -n "$rpath" && \
72074642e01fSmrg	func_warning "\`-rpath' is ignored for archives"
72084642e01fSmrg
72094642e01fSmrg      test -n "$xrpath" && \
72104642e01fSmrg	func_warning "\`-R' is ignored for archives"
72114642e01fSmrg
72124642e01fSmrg      test -n "$vinfo" && \
72134642e01fSmrg	func_warning "\`-version-info/-version-number' is ignored for archives"
72144642e01fSmrg
72154642e01fSmrg      test -n "$release" && \
72164642e01fSmrg	func_warning "\`-release' is ignored for archives"
72174642e01fSmrg
72184642e01fSmrg      test -n "$export_symbols$export_symbols_regex" && \
72194642e01fSmrg	func_warning "\`-export-symbols' is ignored for archives"
72204642e01fSmrg
72214642e01fSmrg      # Now set the variables for building old libraries.
72224642e01fSmrg      build_libtool_libs=no
72234642e01fSmrg      oldlibs="$output"
72246747b715Smrg      func_append objs "$old_deplibs"
72254642e01fSmrg      ;;
72264642e01fSmrg
72274642e01fSmrg    lib)
72284642e01fSmrg      # Make sure we only generate libraries of the form `libNAME.la'.
72294642e01fSmrg      case $outputname in
72304642e01fSmrg      lib*)
72314642e01fSmrg	func_stripname 'lib' '.la' "$outputname"
72324642e01fSmrg	name=$func_stripname_result
72334642e01fSmrg	eval shared_ext=\"$shrext_cmds\"
72344642e01fSmrg	eval libname=\"$libname_spec\"
72354642e01fSmrg	;;
72364642e01fSmrg      *)
72374642e01fSmrg	test "$module" = no && \
72384642e01fSmrg	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
72394642e01fSmrg
72404642e01fSmrg	if test "$need_lib_prefix" != no; then
72414642e01fSmrg	  # Add the "lib" prefix for modules if required
72424642e01fSmrg	  func_stripname '' '.la' "$outputname"
72434642e01fSmrg	  name=$func_stripname_result
72444642e01fSmrg	  eval shared_ext=\"$shrext_cmds\"
72454642e01fSmrg	  eval libname=\"$libname_spec\"
72464642e01fSmrg	else
72474642e01fSmrg	  func_stripname '' '.la' "$outputname"
72484642e01fSmrg	  libname=$func_stripname_result
72494642e01fSmrg	fi
72504642e01fSmrg	;;
72514642e01fSmrg      esac
72524642e01fSmrg
72534642e01fSmrg      if test -n "$objs"; then
72544642e01fSmrg	if test "$deplibs_check_method" != pass_all; then
72554642e01fSmrg	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
72564642e01fSmrg	else
72576747b715Smrg	  echo
72584642e01fSmrg	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
72594642e01fSmrg	  $ECHO "*** objects $objs is not portable!"
72606747b715Smrg	  func_append libobjs " $objs"
72614642e01fSmrg	fi
72624642e01fSmrg      fi
72634642e01fSmrg
72644642e01fSmrg      test "$dlself" != no && \
72654642e01fSmrg	func_warning "\`-dlopen self' is ignored for libtool libraries"
72664642e01fSmrg
72674642e01fSmrg      set dummy $rpath
72684642e01fSmrg      shift
72694642e01fSmrg      test "$#" -gt 1 && \
72704642e01fSmrg	func_warning "ignoring multiple \`-rpath's for a libtool library"
72714642e01fSmrg
72724642e01fSmrg      install_libdir="$1"
72734642e01fSmrg
72744642e01fSmrg      oldlibs=
72754642e01fSmrg      if test -z "$rpath"; then
72764642e01fSmrg	if test "$build_libtool_libs" = yes; then
72774642e01fSmrg	  # Building a libtool convenience library.
72784642e01fSmrg	  # Some compilers have problems with a `.al' extension so
72794642e01fSmrg	  # convenience libraries should have the same extension an
72804642e01fSmrg	  # archive normally would.
72814642e01fSmrg	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
72824642e01fSmrg	  build_libtool_libs=convenience
72834642e01fSmrg	  build_old_libs=yes
72844642e01fSmrg	fi
72854642e01fSmrg
72864642e01fSmrg	test -n "$vinfo" && \
72874642e01fSmrg	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
72884642e01fSmrg
72894642e01fSmrg	test -n "$release" && \
72904642e01fSmrg	  func_warning "\`-release' is ignored for convenience libraries"
72914642e01fSmrg      else
72924642e01fSmrg
72934642e01fSmrg	# Parse the version information argument.
72944642e01fSmrg	save_ifs="$IFS"; IFS=':'
72954642e01fSmrg	set dummy $vinfo 0 0 0
72964642e01fSmrg	shift
72974642e01fSmrg	IFS="$save_ifs"
72984642e01fSmrg
72994642e01fSmrg	test -n "$7" && \
73004642e01fSmrg	  func_fatal_help "too many parameters to \`-version-info'"
73014642e01fSmrg
73024642e01fSmrg	# convert absolute version numbers to libtool ages
73034642e01fSmrg	# this retains compatibility with .la files and attempts
73044642e01fSmrg	# to make the code below a bit more comprehensible
73054642e01fSmrg
73064642e01fSmrg	case $vinfo_number in
73074642e01fSmrg	yes)
73084642e01fSmrg	  number_major="$1"
73094642e01fSmrg	  number_minor="$2"
73104642e01fSmrg	  number_revision="$3"
73114642e01fSmrg	  #
73124642e01fSmrg	  # There are really only two kinds -- those that
73134642e01fSmrg	  # use the current revision as the major version
73144642e01fSmrg	  # and those that subtract age and use age as
73154642e01fSmrg	  # a minor version.  But, then there is irix
73164642e01fSmrg	  # which has an extra 1 added just for fun
73174642e01fSmrg	  #
73184642e01fSmrg	  case $version_type in
73194642e01fSmrg	  darwin|linux|osf|windows|none)
73204642e01fSmrg	    func_arith $number_major + $number_minor
73214642e01fSmrg	    current=$func_arith_result
73224642e01fSmrg	    age="$number_minor"
73234642e01fSmrg	    revision="$number_revision"
73244642e01fSmrg	    ;;
73256747b715Smrg	  freebsd-aout|freebsd-elf|qnx|sunos)
73264642e01fSmrg	    current="$number_major"
73274642e01fSmrg	    revision="$number_minor"
73284642e01fSmrg	    age="0"
73294642e01fSmrg	    ;;
73304642e01fSmrg	  irix|nonstopux)
73314642e01fSmrg	    func_arith $number_major + $number_minor
73324642e01fSmrg	    current=$func_arith_result
73334642e01fSmrg	    age="$number_minor"
73344642e01fSmrg	    revision="$number_minor"
73354642e01fSmrg	    lt_irix_increment=no
73364642e01fSmrg	    ;;
73374642e01fSmrg	  esac
73384642e01fSmrg	  ;;
73394642e01fSmrg	no)
73404642e01fSmrg	  current="$1"
73414642e01fSmrg	  revision="$2"
73424642e01fSmrg	  age="$3"
73434642e01fSmrg	  ;;
73444642e01fSmrg	esac
73454642e01fSmrg
73464642e01fSmrg	# Check that each of the things are valid numbers.
73474642e01fSmrg	case $current in
73484642e01fSmrg	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]) ;;
73494642e01fSmrg	*)
73504642e01fSmrg	  func_error "CURRENT \`$current' must be a nonnegative integer"
73514642e01fSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
73524642e01fSmrg	  ;;
73534642e01fSmrg	esac
73544642e01fSmrg
73554642e01fSmrg	case $revision in
73564642e01fSmrg	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]) ;;
73574642e01fSmrg	*)
73584642e01fSmrg	  func_error "REVISION \`$revision' must be a nonnegative integer"
73594642e01fSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
73604642e01fSmrg	  ;;
73614642e01fSmrg	esac
73624642e01fSmrg
73634642e01fSmrg	case $age in
73644642e01fSmrg	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]) ;;
73654642e01fSmrg	*)
73664642e01fSmrg	  func_error "AGE \`$age' must be a nonnegative integer"
73674642e01fSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
73684642e01fSmrg	  ;;
73694642e01fSmrg	esac
73704642e01fSmrg
73714642e01fSmrg	if test "$age" -gt "$current"; then
73724642e01fSmrg	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
73734642e01fSmrg	  func_fatal_error "\`$vinfo' is not valid version information"
73744642e01fSmrg	fi
73754642e01fSmrg
73764642e01fSmrg	# Calculate the version variables.
73774642e01fSmrg	major=
73784642e01fSmrg	versuffix=
73794642e01fSmrg	verstring=
73804642e01fSmrg	case $version_type in
73814642e01fSmrg	none) ;;
73824642e01fSmrg
73834642e01fSmrg	darwin)
73844642e01fSmrg	  # Like Linux, but with the current version available in
73854642e01fSmrg	  # verstring for coding it into the library header
73864642e01fSmrg	  func_arith $current - $age
73874642e01fSmrg	  major=.$func_arith_result
73884642e01fSmrg	  versuffix="$major.$age.$revision"
73894642e01fSmrg	  # Darwin ld doesn't like 0 for these options...
73904642e01fSmrg	  func_arith $current + 1
73914642e01fSmrg	  minor_current=$func_arith_result
73924642e01fSmrg	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
73934642e01fSmrg	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
73944642e01fSmrg	  ;;
73954642e01fSmrg
73964642e01fSmrg	freebsd-aout)
73974642e01fSmrg	  major=".$current"
73984642e01fSmrg	  versuffix=".$current.$revision";
73994642e01fSmrg	  ;;
74004642e01fSmrg
74014642e01fSmrg	freebsd-elf)
74024642e01fSmrg	  major=".$current"
74034642e01fSmrg	  versuffix=".$current"
74044642e01fSmrg	  ;;
74054642e01fSmrg
74064642e01fSmrg	irix | nonstopux)
74074642e01fSmrg	  if test "X$lt_irix_increment" = "Xno"; then
74084642e01fSmrg	    func_arith $current - $age
74094642e01fSmrg	  else
74104642e01fSmrg	    func_arith $current - $age + 1
74114642e01fSmrg	  fi
74124642e01fSmrg	  major=$func_arith_result
74134642e01fSmrg
74144642e01fSmrg	  case $version_type in
74154642e01fSmrg	    nonstopux) verstring_prefix=nonstopux ;;
74164642e01fSmrg	    *)         verstring_prefix=sgi ;;
74174642e01fSmrg	  esac
74184642e01fSmrg	  verstring="$verstring_prefix$major.$revision"
74194642e01fSmrg
74204642e01fSmrg	  # Add in all the interfaces that we are compatible with.
74214642e01fSmrg	  loop=$revision
74224642e01fSmrg	  while test "$loop" -ne 0; do
74234642e01fSmrg	    func_arith $revision - $loop
74244642e01fSmrg	    iface=$func_arith_result
74254642e01fSmrg	    func_arith $loop - 1
74264642e01fSmrg	    loop=$func_arith_result
74274642e01fSmrg	    verstring="$verstring_prefix$major.$iface:$verstring"
74284642e01fSmrg	  done
74294642e01fSmrg
74304642e01fSmrg	  # Before this point, $major must not contain `.'.
74314642e01fSmrg	  major=.$major
74324642e01fSmrg	  versuffix="$major.$revision"
74334642e01fSmrg	  ;;
74344642e01fSmrg
74354642e01fSmrg	linux)
74364642e01fSmrg	  func_arith $current - $age
74374642e01fSmrg	  major=.$func_arith_result
74384642e01fSmrg	  versuffix="$major.$age.$revision"
74394642e01fSmrg	  ;;
74404642e01fSmrg
74414642e01fSmrg	osf)
74424642e01fSmrg	  func_arith $current - $age
74434642e01fSmrg	  major=.$func_arith_result
74444642e01fSmrg	  versuffix=".$current.$age.$revision"
74454642e01fSmrg	  verstring="$current.$age.$revision"
74464642e01fSmrg
74474642e01fSmrg	  # Add in all the interfaces that we are compatible with.
74484642e01fSmrg	  loop=$age
74494642e01fSmrg	  while test "$loop" -ne 0; do
74504642e01fSmrg	    func_arith $current - $loop
74514642e01fSmrg	    iface=$func_arith_result
74524642e01fSmrg	    func_arith $loop - 1
74534642e01fSmrg	    loop=$func_arith_result
74544642e01fSmrg	    verstring="$verstring:${iface}.0"
74554642e01fSmrg	  done
74564642e01fSmrg
74574642e01fSmrg	  # Make executables depend on our current version.
74586747b715Smrg	  func_append verstring ":${current}.0"
74594642e01fSmrg	  ;;
74604642e01fSmrg
74614642e01fSmrg	qnx)
74624642e01fSmrg	  major=".$current"
74634642e01fSmrg	  versuffix=".$current"
74644642e01fSmrg	  ;;
74654642e01fSmrg
74664642e01fSmrg	sunos)
74674642e01fSmrg	  major=".$current"
74684642e01fSmrg	  versuffix=".$current.$revision"
74694642e01fSmrg	  ;;
74704642e01fSmrg
74714642e01fSmrg	windows)
74724642e01fSmrg	  # Use '-' rather than '.', since we only want one
74734642e01fSmrg	  # extension on DOS 8.3 filesystems.
74744642e01fSmrg	  func_arith $current - $age
74754642e01fSmrg	  major=$func_arith_result
74764642e01fSmrg	  versuffix="-$major"
74774642e01fSmrg	  ;;
74784642e01fSmrg
74794642e01fSmrg	*)
74804642e01fSmrg	  func_fatal_configuration "unknown library version type \`$version_type'"
74814642e01fSmrg	  ;;
74824642e01fSmrg	esac
74834642e01fSmrg
74844642e01fSmrg	# Clear the version info if we defaulted, and they specified a release.
74854642e01fSmrg	if test -z "$vinfo" && test -n "$release"; then
74864642e01fSmrg	  major=
74874642e01fSmrg	  case $version_type in
74884642e01fSmrg	  darwin)
74894642e01fSmrg	    # we can't check for "0.0" in archive_cmds due to quoting
74904642e01fSmrg	    # problems, so we reset it completely
74914642e01fSmrg	    verstring=
74924642e01fSmrg	    ;;
74934642e01fSmrg	  *)
74944642e01fSmrg	    verstring="0.0"
74954642e01fSmrg	    ;;
74964642e01fSmrg	  esac
74974642e01fSmrg	  if test "$need_version" = no; then
74984642e01fSmrg	    versuffix=
74994642e01fSmrg	  else
75004642e01fSmrg	    versuffix=".0.0"
75014642e01fSmrg	  fi
75024642e01fSmrg	fi
75034642e01fSmrg
75044642e01fSmrg	# Remove version info from name if versioning should be avoided
75054642e01fSmrg	if test "$avoid_version" = yes && test "$need_version" = no; then
75064642e01fSmrg	  major=
75074642e01fSmrg	  versuffix=
75084642e01fSmrg	  verstring=""
75094642e01fSmrg	fi
75104642e01fSmrg
75114642e01fSmrg	# Check to see if the archive will have undefined symbols.
75124642e01fSmrg	if test "$allow_undefined" = yes; then
75134642e01fSmrg	  if test "$allow_undefined_flag" = unsupported; then
75144642e01fSmrg	    func_warning "undefined symbols not allowed in $host shared libraries"
75154642e01fSmrg	    build_libtool_libs=no
75164642e01fSmrg	    build_old_libs=yes
75174642e01fSmrg	  fi
75184642e01fSmrg	else
75194642e01fSmrg	  # Don't allow undefined symbols.
75204642e01fSmrg	  allow_undefined_flag="$no_undefined_flag"
75214642e01fSmrg	fi
75224642e01fSmrg
75234642e01fSmrg      fi
75244642e01fSmrg
75254642e01fSmrg      func_generate_dlsyms "$libname" "$libname" "yes"
75266747b715Smrg      func_append libobjs " $symfileobj"
75274642e01fSmrg      test "X$libobjs" = "X " && libobjs=
75284642e01fSmrg
75296747b715Smrg      if test "$opt_mode" != relink; then
75304642e01fSmrg	# Remove our outputs, but don't remove object files since they
75314642e01fSmrg	# may have been created when compiling PIC objects.
75324642e01fSmrg	removelist=
75334642e01fSmrg	tempremovelist=`$ECHO "$output_objdir/*"`
75344642e01fSmrg	for p in $tempremovelist; do
75354642e01fSmrg	  case $p in
75364642e01fSmrg	    *.$objext | *.gcno)
75374642e01fSmrg	       ;;
75384642e01fSmrg	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
75394642e01fSmrg	       if test "X$precious_files_regex" != "X"; then
75404642e01fSmrg		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
75414642e01fSmrg		 then
75424642e01fSmrg		   continue
75434642e01fSmrg		 fi
75444642e01fSmrg	       fi
75456747b715Smrg	       func_append removelist " $p"
75464642e01fSmrg	       ;;
75474642e01fSmrg	    *) ;;
75484642e01fSmrg	  esac
75494642e01fSmrg	done
75504642e01fSmrg	test -n "$removelist" && \
75514642e01fSmrg	  func_show_eval "${RM}r \$removelist"
75524642e01fSmrg      fi
75534642e01fSmrg
75544642e01fSmrg      # Now set the variables for building old libraries.
75554642e01fSmrg      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
75566747b715Smrg	func_append oldlibs " $output_objdir/$libname.$libext"
75574642e01fSmrg
75584642e01fSmrg	# Transform .lo files to .o files.
75596747b715Smrg	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
75604642e01fSmrg      fi
75614642e01fSmrg
75624642e01fSmrg      # Eliminate all temporary directories.
75634642e01fSmrg      #for path in $notinst_path; do
75646747b715Smrg      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
75656747b715Smrg      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
75666747b715Smrg      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
75674642e01fSmrg      #done
75684642e01fSmrg
75694642e01fSmrg      if test -n "$xrpath"; then
75704642e01fSmrg	# If the user specified any rpath flags, then add them.
75714642e01fSmrg	temp_xrpath=
75724642e01fSmrg	for libdir in $xrpath; do
75736747b715Smrg	  func_replace_sysroot "$libdir"
75746747b715Smrg	  func_append temp_xrpath " -R$func_replace_sysroot_result"
75754642e01fSmrg	  case "$finalize_rpath " in
75764642e01fSmrg	  *" $libdir "*) ;;
75776747b715Smrg	  *) func_append finalize_rpath " $libdir" ;;
75784642e01fSmrg	  esac
75794642e01fSmrg	done
75804642e01fSmrg	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
75814642e01fSmrg	  dependency_libs="$temp_xrpath $dependency_libs"
75824642e01fSmrg	fi
75834642e01fSmrg      fi
75844642e01fSmrg
75854642e01fSmrg      # Make sure dlfiles contains only unique files that won't be dlpreopened
75864642e01fSmrg      old_dlfiles="$dlfiles"
75874642e01fSmrg      dlfiles=
75884642e01fSmrg      for lib in $old_dlfiles; do
75894642e01fSmrg	case " $dlprefiles $dlfiles " in
75904642e01fSmrg	*" $lib "*) ;;
75916747b715Smrg	*) func_append dlfiles " $lib" ;;
75924642e01fSmrg	esac
75934642e01fSmrg      done
75944642e01fSmrg
75954642e01fSmrg      # Make sure dlprefiles contains only unique files
75964642e01fSmrg      old_dlprefiles="$dlprefiles"
75974642e01fSmrg      dlprefiles=
75984642e01fSmrg      for lib in $old_dlprefiles; do
75994642e01fSmrg	case "$dlprefiles " in
76004642e01fSmrg	*" $lib "*) ;;
76016747b715Smrg	*) func_append dlprefiles " $lib" ;;
76024642e01fSmrg	esac
76034642e01fSmrg      done
76044642e01fSmrg
76054642e01fSmrg      if test "$build_libtool_libs" = yes; then
76064642e01fSmrg	if test -n "$rpath"; then
76074642e01fSmrg	  case $host in
76086747b715Smrg	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
76094642e01fSmrg	    # these systems don't actually have a c library (as such)!
76104642e01fSmrg	    ;;
76114642e01fSmrg	  *-*-rhapsody* | *-*-darwin1.[012])
76124642e01fSmrg	    # Rhapsody C library is in the System framework
76136747b715Smrg	    func_append deplibs " System.ltframework"
76144642e01fSmrg	    ;;
76154642e01fSmrg	  *-*-netbsd*)
76164642e01fSmrg	    # Don't link with libc until the a.out ld.so is fixed.
76174642e01fSmrg	    ;;
76184642e01fSmrg	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
76194642e01fSmrg	    # Do not include libc due to us having libc/libc_r.
76204642e01fSmrg	    ;;
76214642e01fSmrg	  *-*-sco3.2v5* | *-*-sco5v6*)
76224642e01fSmrg	    # Causes problems with __ctype
76234642e01fSmrg	    ;;
76244642e01fSmrg	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
76254642e01fSmrg	    # Compiler inserts libc in the correct place for threads to work
76264642e01fSmrg	    ;;
76274642e01fSmrg	  *)
76284642e01fSmrg	    # Add libc to deplibs on all other systems if necessary.
76294642e01fSmrg	    if test "$build_libtool_need_lc" = "yes"; then
76306747b715Smrg	      func_append deplibs " -lc"
76314642e01fSmrg	    fi
76324642e01fSmrg	    ;;
76334642e01fSmrg	  esac
76344642e01fSmrg	fi
76354642e01fSmrg
76364642e01fSmrg	# Transform deplibs into only deplibs that can be linked in shared.
76374642e01fSmrg	name_save=$name
76384642e01fSmrg	libname_save=$libname
76394642e01fSmrg	release_save=$release
76404642e01fSmrg	versuffix_save=$versuffix
76414642e01fSmrg	major_save=$major
76424642e01fSmrg	# I'm not sure if I'm treating the release correctly.  I think
76434642e01fSmrg	# release should show up in the -l (ie -lgmp5) so we don't want to
76444642e01fSmrg	# add it in twice.  Is that correct?
76454642e01fSmrg	release=""
76464642e01fSmrg	versuffix=""
76474642e01fSmrg	major=""
76484642e01fSmrg	newdeplibs=
76494642e01fSmrg	droppeddeps=no
76504642e01fSmrg	case $deplibs_check_method in
76514642e01fSmrg	pass_all)
76524642e01fSmrg	  # Don't check for shared/static.  Everything works.
76534642e01fSmrg	  # This might be a little naive.  We might want to check
76544642e01fSmrg	  # whether the library exists or not.  But this is on
76554642e01fSmrg	  # osf3 & osf4 and I'm not really sure... Just
76564642e01fSmrg	  # implementing what was already the behavior.
76574642e01fSmrg	  newdeplibs=$deplibs
76584642e01fSmrg	  ;;
76594642e01fSmrg	test_compile)
76604642e01fSmrg	  # This code stresses the "libraries are programs" paradigm to its
76614642e01fSmrg	  # limits. Maybe even breaks it.  We compile a program, linking it
76624642e01fSmrg	  # against the deplibs as a proxy for the library.  Then we can check
76634642e01fSmrg	  # whether they linked in statically or dynamically with ldd.
76644642e01fSmrg	  $opt_dry_run || $RM conftest.c
76654642e01fSmrg	  cat > conftest.c <<EOF
76664642e01fSmrg	  int main() { return 0; }
76674642e01fSmrgEOF
76684642e01fSmrg	  $opt_dry_run || $RM conftest
76694642e01fSmrg	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
76704642e01fSmrg	    ldd_output=`ldd conftest`
76714642e01fSmrg	    for i in $deplibs; do
76724642e01fSmrg	      case $i in
76734642e01fSmrg	      -l*)
76744642e01fSmrg		func_stripname -l '' "$i"
76754642e01fSmrg		name=$func_stripname_result
76764642e01fSmrg		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
76774642e01fSmrg		  case " $predeps $postdeps " in
76784642e01fSmrg		  *" $i "*)
76796747b715Smrg		    func_append newdeplibs " $i"
76804642e01fSmrg		    i=""
76814642e01fSmrg		    ;;
76824642e01fSmrg		  esac
76834642e01fSmrg		fi
76844642e01fSmrg		if test -n "$i" ; then
76854642e01fSmrg		  libname=`eval "\\$ECHO \"$libname_spec\""`
76864642e01fSmrg		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
76874642e01fSmrg		  set dummy $deplib_matches; shift
76884642e01fSmrg		  deplib_match=$1
76894642e01fSmrg		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
76906747b715Smrg		    func_append newdeplibs " $i"
76914642e01fSmrg		  else
76924642e01fSmrg		    droppeddeps=yes
76936747b715Smrg		    echo
76944642e01fSmrg		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
76956747b715Smrg		    echo "*** I have the capability to make that library automatically link in when"
76966747b715Smrg		    echo "*** you link to this library.  But I can only do this if you have a"
76976747b715Smrg		    echo "*** shared version of the library, which I believe you do not have"
76986747b715Smrg		    echo "*** because a test_compile did reveal that the linker did not use it for"
76996747b715Smrg		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
77004642e01fSmrg		  fi
77014642e01fSmrg		fi
77024642e01fSmrg		;;
77034642e01fSmrg	      *)
77046747b715Smrg		func_append newdeplibs " $i"
77054642e01fSmrg		;;
77064642e01fSmrg	      esac
77074642e01fSmrg	    done
77084642e01fSmrg	  else
77094642e01fSmrg	    # Error occurred in the first compile.  Let's try to salvage
77104642e01fSmrg	    # the situation: Compile a separate program for each library.
77114642e01fSmrg	    for i in $deplibs; do
77124642e01fSmrg	      case $i in
77134642e01fSmrg	      -l*)
77144642e01fSmrg		func_stripname -l '' "$i"
77154642e01fSmrg		name=$func_stripname_result
77164642e01fSmrg		$opt_dry_run || $RM conftest
77174642e01fSmrg		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
77184642e01fSmrg		  ldd_output=`ldd conftest`
77194642e01fSmrg		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
77204642e01fSmrg		    case " $predeps $postdeps " in
77214642e01fSmrg		    *" $i "*)
77226747b715Smrg		      func_append newdeplibs " $i"
77234642e01fSmrg		      i=""
77244642e01fSmrg		      ;;
77254642e01fSmrg		    esac
77264642e01fSmrg		  fi
77274642e01fSmrg		  if test -n "$i" ; then
77284642e01fSmrg		    libname=`eval "\\$ECHO \"$libname_spec\""`
77294642e01fSmrg		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
77304642e01fSmrg		    set dummy $deplib_matches; shift
77314642e01fSmrg		    deplib_match=$1
77324642e01fSmrg		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
77336747b715Smrg		      func_append newdeplibs " $i"
77344642e01fSmrg		    else
77354642e01fSmrg		      droppeddeps=yes
77366747b715Smrg		      echo
77374642e01fSmrg		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
77386747b715Smrg		      echo "*** I have the capability to make that library automatically link in when"
77396747b715Smrg		      echo "*** you link to this library.  But I can only do this if you have a"
77406747b715Smrg		      echo "*** shared version of the library, which you do not appear to have"
77416747b715Smrg		      echo "*** because a test_compile did reveal that the linker did not use this one"
77426747b715Smrg		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
77434642e01fSmrg		    fi
77444642e01fSmrg		  fi
77454642e01fSmrg		else
77464642e01fSmrg		  droppeddeps=yes
77476747b715Smrg		  echo
77484642e01fSmrg		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
77496747b715Smrg		  echo "*** make it link in!  You will probably need to install it or some"
77506747b715Smrg		  echo "*** library that it depends on before this library will be fully"
77516747b715Smrg		  echo "*** functional.  Installing it before continuing would be even better."
77524642e01fSmrg		fi
77534642e01fSmrg		;;
77544642e01fSmrg	      *)
77556747b715Smrg		func_append newdeplibs " $i"
77564642e01fSmrg		;;
77574642e01fSmrg	      esac
77584642e01fSmrg	    done
77594642e01fSmrg	  fi
77604642e01fSmrg	  ;;
77614642e01fSmrg	file_magic*)
77624642e01fSmrg	  set dummy $deplibs_check_method; shift
77634642e01fSmrg	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
77644642e01fSmrg	  for a_deplib in $deplibs; do
77654642e01fSmrg	    case $a_deplib in
77664642e01fSmrg	    -l*)
77674642e01fSmrg	      func_stripname -l '' "$a_deplib"
77684642e01fSmrg	      name=$func_stripname_result
77694642e01fSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
77704642e01fSmrg		case " $predeps $postdeps " in
77714642e01fSmrg		*" $a_deplib "*)
77726747b715Smrg		  func_append newdeplibs " $a_deplib"
77734642e01fSmrg		  a_deplib=""
77744642e01fSmrg		  ;;
77754642e01fSmrg		esac
77764642e01fSmrg	      fi
77774642e01fSmrg	      if test -n "$a_deplib" ; then
77784642e01fSmrg		libname=`eval "\\$ECHO \"$libname_spec\""`
77796747b715Smrg		if test -n "$file_magic_glob"; then
77806747b715Smrg		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
77816747b715Smrg		else
77826747b715Smrg		  libnameglob=$libname
77836747b715Smrg		fi
77846747b715Smrg		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
77854642e01fSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
77866747b715Smrg		  if test "$want_nocaseglob" = yes; then
77876747b715Smrg		    shopt -s nocaseglob
77886747b715Smrg		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
77896747b715Smrg		    $nocaseglob
77906747b715Smrg		  else
77916747b715Smrg		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
77926747b715Smrg		  fi
77934642e01fSmrg		  for potent_lib in $potential_libs; do
77944642e01fSmrg		      # Follow soft links.
77954642e01fSmrg		      if ls -lLd "$potent_lib" 2>/dev/null |
77964642e01fSmrg			 $GREP " -> " >/dev/null; then
77974642e01fSmrg			continue
77984642e01fSmrg		      fi
77994642e01fSmrg		      # The statement above tries to avoid entering an
78004642e01fSmrg		      # endless loop below, in case of cyclic links.
78014642e01fSmrg		      # We might still enter an endless loop, since a link
78024642e01fSmrg		      # loop can be closed while we follow links,
78034642e01fSmrg		      # but so what?
78044642e01fSmrg		      potlib="$potent_lib"
78054642e01fSmrg		      while test -h "$potlib" 2>/dev/null; do
78064642e01fSmrg			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
78074642e01fSmrg			case $potliblink in
78084642e01fSmrg			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
78096747b715Smrg			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
78104642e01fSmrg			esac
78114642e01fSmrg		      done
78124642e01fSmrg		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
78134642e01fSmrg			 $SED -e 10q |
78144642e01fSmrg			 $EGREP "$file_magic_regex" > /dev/null; then
78156747b715Smrg			func_append newdeplibs " $a_deplib"
78164642e01fSmrg			a_deplib=""
78174642e01fSmrg			break 2
78184642e01fSmrg		      fi
78194642e01fSmrg		  done
78204642e01fSmrg		done
78214642e01fSmrg	      fi
78224642e01fSmrg	      if test -n "$a_deplib" ; then
78234642e01fSmrg		droppeddeps=yes
78246747b715Smrg		echo
78254642e01fSmrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
78266747b715Smrg		echo "*** I have the capability to make that library automatically link in when"
78276747b715Smrg		echo "*** you link to this library.  But I can only do this if you have a"
78286747b715Smrg		echo "*** shared version of the library, which you do not appear to have"
78296747b715Smrg		echo "*** because I did check the linker path looking for a file starting"
78304642e01fSmrg		if test -z "$potlib" ; then
78314642e01fSmrg		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
78324642e01fSmrg		else
78334642e01fSmrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
78344642e01fSmrg		  $ECHO "*** using a file magic. Last file checked: $potlib"
78354642e01fSmrg		fi
78364642e01fSmrg	      fi
78374642e01fSmrg	      ;;
78384642e01fSmrg	    *)
78394642e01fSmrg	      # Add a -L argument.
78406747b715Smrg	      func_append newdeplibs " $a_deplib"
78414642e01fSmrg	      ;;
78424642e01fSmrg	    esac
78434642e01fSmrg	  done # Gone through all deplibs.
78444642e01fSmrg	  ;;
78454642e01fSmrg	match_pattern*)
78464642e01fSmrg	  set dummy $deplibs_check_method; shift
78474642e01fSmrg	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
78484642e01fSmrg	  for a_deplib in $deplibs; do
78494642e01fSmrg	    case $a_deplib in
78504642e01fSmrg	    -l*)
78514642e01fSmrg	      func_stripname -l '' "$a_deplib"
78524642e01fSmrg	      name=$func_stripname_result
78534642e01fSmrg	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
78544642e01fSmrg		case " $predeps $postdeps " in
78554642e01fSmrg		*" $a_deplib "*)
78566747b715Smrg		  func_append newdeplibs " $a_deplib"
78574642e01fSmrg		  a_deplib=""
78584642e01fSmrg		  ;;
78594642e01fSmrg		esac
78604642e01fSmrg	      fi
78614642e01fSmrg	      if test -n "$a_deplib" ; then
78624642e01fSmrg		libname=`eval "\\$ECHO \"$libname_spec\""`
78634642e01fSmrg		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
78644642e01fSmrg		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
78654642e01fSmrg		  for potent_lib in $potential_libs; do
78664642e01fSmrg		    potlib="$potent_lib" # see symlink-check above in file_magic test
78676747b715Smrg		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
78684642e01fSmrg		       $EGREP "$match_pattern_regex" > /dev/null; then
78696747b715Smrg		      func_append newdeplibs " $a_deplib"
78704642e01fSmrg		      a_deplib=""
78714642e01fSmrg		      break 2
78724642e01fSmrg		    fi
78734642e01fSmrg		  done
78744642e01fSmrg		done
78754642e01fSmrg	      fi
78764642e01fSmrg	      if test -n "$a_deplib" ; then
78774642e01fSmrg		droppeddeps=yes
78786747b715Smrg		echo
78794642e01fSmrg		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
78806747b715Smrg		echo "*** I have the capability to make that library automatically link in when"
78816747b715Smrg		echo "*** you link to this library.  But I can only do this if you have a"
78826747b715Smrg		echo "*** shared version of the library, which you do not appear to have"
78836747b715Smrg		echo "*** because I did check the linker path looking for a file starting"
78844642e01fSmrg		if test -z "$potlib" ; then
78854642e01fSmrg		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
78864642e01fSmrg		else
78874642e01fSmrg		  $ECHO "*** with $libname and none of the candidates passed a file format test"
78884642e01fSmrg		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
78894642e01fSmrg		fi
78904642e01fSmrg	      fi
78914642e01fSmrg	      ;;
78924642e01fSmrg	    *)
78934642e01fSmrg	      # Add a -L argument.
78946747b715Smrg	      func_append newdeplibs " $a_deplib"
78954642e01fSmrg	      ;;
78964642e01fSmrg	    esac
78974642e01fSmrg	  done # Gone through all deplibs.
78984642e01fSmrg	  ;;
78994642e01fSmrg	none | unknown | *)
79004642e01fSmrg	  newdeplibs=""
79016747b715Smrg	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
79024642e01fSmrg	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
79034642e01fSmrg	    for i in $predeps $postdeps ; do
79044642e01fSmrg	      # can't use Xsed below, because $i might contain '/'
79056747b715Smrg	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
79064642e01fSmrg	    done
79074642e01fSmrg	  fi
79086747b715Smrg	  case $tmp_deplibs in
79096747b715Smrg	  *[!\	\ ]*)
79106747b715Smrg	    echo
79114642e01fSmrg	    if test "X$deplibs_check_method" = "Xnone"; then
79126747b715Smrg	      echo "*** Warning: inter-library dependencies are not supported in this platform."
79134642e01fSmrg	    else
79146747b715Smrg	      echo "*** Warning: inter-library dependencies are not known to be supported."
79154642e01fSmrg	    fi
79166747b715Smrg	    echo "*** All declared inter-library dependencies are being dropped."
79174642e01fSmrg	    droppeddeps=yes
79186747b715Smrg	    ;;
79196747b715Smrg	  esac
79204642e01fSmrg	  ;;
79214642e01fSmrg	esac
79224642e01fSmrg	versuffix=$versuffix_save
79234642e01fSmrg	major=$major_save
79244642e01fSmrg	release=$release_save
79254642e01fSmrg	libname=$libname_save
79264642e01fSmrg	name=$name_save
79274642e01fSmrg
79284642e01fSmrg	case $host in
79294642e01fSmrg	*-*-rhapsody* | *-*-darwin1.[012])
79304642e01fSmrg	  # On Rhapsody replace the C library with the System framework
79316747b715Smrg	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
79324642e01fSmrg	  ;;
79334642e01fSmrg	esac
79344642e01fSmrg
79354642e01fSmrg	if test "$droppeddeps" = yes; then
79364642e01fSmrg	  if test "$module" = yes; then
79376747b715Smrg	    echo
79386747b715Smrg	    echo "*** Warning: libtool could not satisfy all declared inter-library"
79394642e01fSmrg	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
79406747b715Smrg	    echo "*** a static module, that should work as long as the dlopening"
79416747b715Smrg	    echo "*** application is linked with the -dlopen flag."
79424642e01fSmrg	    if test -z "$global_symbol_pipe"; then
79436747b715Smrg	      echo
79446747b715Smrg	      echo "*** However, this would only work if libtool was able to extract symbol"
79456747b715Smrg	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
79466747b715Smrg	      echo "*** not find such a program.  So, this module is probably useless."
79476747b715Smrg	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
79484642e01fSmrg	    fi
79494642e01fSmrg	    if test "$build_old_libs" = no; then
79504642e01fSmrg	      oldlibs="$output_objdir/$libname.$libext"
79514642e01fSmrg	      build_libtool_libs=module
79524642e01fSmrg	      build_old_libs=yes
79534642e01fSmrg	    else
79544642e01fSmrg	      build_libtool_libs=no
79554642e01fSmrg	    fi
79564642e01fSmrg	  else
79576747b715Smrg	    echo "*** The inter-library dependencies that have been dropped here will be"
79586747b715Smrg	    echo "*** automatically added whenever a program is linked with this library"
79596747b715Smrg	    echo "*** or is declared to -dlopen it."
79604642e01fSmrg
79614642e01fSmrg	    if test "$allow_undefined" = no; then
79626747b715Smrg	      echo
79636747b715Smrg	      echo "*** Since this library must not contain undefined symbols,"
79646747b715Smrg	      echo "*** because either the platform does not support them or"
79656747b715Smrg	      echo "*** it was explicitly requested with -no-undefined,"
79666747b715Smrg	      echo "*** libtool will only create a static version of it."
79674642e01fSmrg	      if test "$build_old_libs" = no; then
79684642e01fSmrg		oldlibs="$output_objdir/$libname.$libext"
79694642e01fSmrg		build_libtool_libs=module
79704642e01fSmrg		build_old_libs=yes
79714642e01fSmrg	      else
79724642e01fSmrg		build_libtool_libs=no
79734642e01fSmrg	      fi
79744642e01fSmrg	    fi
79754642e01fSmrg	  fi
79764642e01fSmrg	fi
79774642e01fSmrg	# Done checking deplibs!
79784642e01fSmrg	deplibs=$newdeplibs
79794642e01fSmrg      fi
79804642e01fSmrg      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
79814642e01fSmrg      case $host in
79824642e01fSmrg	*-*-darwin*)
79836747b715Smrg	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
79846747b715Smrg	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
79856747b715Smrg	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
79864642e01fSmrg	  ;;
79874642e01fSmrg      esac
79884642e01fSmrg
79894642e01fSmrg      # move library search paths that coincide with paths to not yet
79904642e01fSmrg      # installed libraries to the beginning of the library search list
79914642e01fSmrg      new_libs=
79924642e01fSmrg      for path in $notinst_path; do
79934642e01fSmrg	case " $new_libs " in
79944642e01fSmrg	*" -L$path/$objdir "*) ;;
79954642e01fSmrg	*)
79964642e01fSmrg	  case " $deplibs " in
79974642e01fSmrg	  *" -L$path/$objdir "*)
79986747b715Smrg	    func_append new_libs " -L$path/$objdir" ;;
79994642e01fSmrg	  esac
80004642e01fSmrg	  ;;
80014642e01fSmrg	esac
80024642e01fSmrg      done
80034642e01fSmrg      for deplib in $deplibs; do
80044642e01fSmrg	case $deplib in
80054642e01fSmrg	-L*)
80064642e01fSmrg	  case " $new_libs " in
80074642e01fSmrg	  *" $deplib "*) ;;
80086747b715Smrg	  *) func_append new_libs " $deplib" ;;
80094642e01fSmrg	  esac
80104642e01fSmrg	  ;;
80116747b715Smrg	*) func_append new_libs " $deplib" ;;
80124642e01fSmrg	esac
80134642e01fSmrg      done
80144642e01fSmrg      deplibs="$new_libs"
80154642e01fSmrg
80164642e01fSmrg      # All the library-specific variables (install_libdir is set above).
80174642e01fSmrg      library_names=
80184642e01fSmrg      old_library=
80194642e01fSmrg      dlname=
80204642e01fSmrg
80214642e01fSmrg      # Test again, we may have decided not to build it any more
80224642e01fSmrg      if test "$build_libtool_libs" = yes; then
80234642e01fSmrg	if test "$hardcode_into_libs" = yes; then
80244642e01fSmrg	  # Hardcode the library paths
80254642e01fSmrg	  hardcode_libdirs=
80264642e01fSmrg	  dep_rpath=
80274642e01fSmrg	  rpath="$finalize_rpath"
80286747b715Smrg	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
80294642e01fSmrg	  for libdir in $rpath; do
80304642e01fSmrg	    if test -n "$hardcode_libdir_flag_spec"; then
80314642e01fSmrg	      if test -n "$hardcode_libdir_separator"; then
80326747b715Smrg		func_replace_sysroot "$libdir"
80336747b715Smrg		libdir=$func_replace_sysroot_result
80344642e01fSmrg		if test -z "$hardcode_libdirs"; then
80354642e01fSmrg		  hardcode_libdirs="$libdir"
80364642e01fSmrg		else
80374642e01fSmrg		  # Just accumulate the unique libdirs.
80384642e01fSmrg		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
80394642e01fSmrg		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
80404642e01fSmrg		    ;;
80414642e01fSmrg		  *)
80426747b715Smrg		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
80434642e01fSmrg		    ;;
80444642e01fSmrg		  esac
80454642e01fSmrg		fi
80464642e01fSmrg	      else
80474642e01fSmrg		eval flag=\"$hardcode_libdir_flag_spec\"
80486747b715Smrg		func_append dep_rpath " $flag"
80494642e01fSmrg	      fi
80504642e01fSmrg	    elif test -n "$runpath_var"; then
80514642e01fSmrg	      case "$perm_rpath " in
80524642e01fSmrg	      *" $libdir "*) ;;
80536747b715Smrg	      *) func_apped perm_rpath " $libdir" ;;
80544642e01fSmrg	      esac
80554642e01fSmrg	    fi
80564642e01fSmrg	  done
80574642e01fSmrg	  # Substitute the hardcoded libdirs into the rpath.
80584642e01fSmrg	  if test -n "$hardcode_libdir_separator" &&
80594642e01fSmrg	     test -n "$hardcode_libdirs"; then
80604642e01fSmrg	    libdir="$hardcode_libdirs"
80614642e01fSmrg	    if test -n "$hardcode_libdir_flag_spec_ld"; then
80624642e01fSmrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
80634642e01fSmrg	    else
80644642e01fSmrg	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
80654642e01fSmrg	    fi
80664642e01fSmrg	  fi
80674642e01fSmrg	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
80684642e01fSmrg	    # We should set the runpath_var.
80694642e01fSmrg	    rpath=
80704642e01fSmrg	    for dir in $perm_rpath; do
80716747b715Smrg	      func_append rpath "$dir:"
80724642e01fSmrg	    done
80734642e01fSmrg	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
80744642e01fSmrg	  fi
80754642e01fSmrg	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
80764642e01fSmrg	fi
807705b261ecSmrg
80784642e01fSmrg	shlibpath="$finalize_shlibpath"
80796747b715Smrg	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
80804642e01fSmrg	if test -n "$shlibpath"; then
80814642e01fSmrg	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
80824642e01fSmrg	fi
808305b261ecSmrg
80844642e01fSmrg	# Get the real and link names of the library.
80854642e01fSmrg	eval shared_ext=\"$shrext_cmds\"
80864642e01fSmrg	eval library_names=\"$library_names_spec\"
80874642e01fSmrg	set dummy $library_names
80884642e01fSmrg	shift
80894642e01fSmrg	realname="$1"
80904642e01fSmrg	shift
809105b261ecSmrg
80924642e01fSmrg	if test -n "$soname_spec"; then
80934642e01fSmrg	  eval soname=\"$soname_spec\"
80944642e01fSmrg	else
80954642e01fSmrg	  soname="$realname"
80964642e01fSmrg	fi
80974642e01fSmrg	if test -z "$dlname"; then
80984642e01fSmrg	  dlname=$soname
80994642e01fSmrg	fi
810005b261ecSmrg
81014642e01fSmrg	lib="$output_objdir/$realname"
81024642e01fSmrg	linknames=
81034642e01fSmrg	for link
81044642e01fSmrg	do
81056747b715Smrg	  func_append linknames " $link"
81064642e01fSmrg	done
810705b261ecSmrg
81084642e01fSmrg	# Use standard objects if they are pic
81096747b715Smrg	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
81104642e01fSmrg	test "X$libobjs" = "X " && libobjs=
811105b261ecSmrg
81124642e01fSmrg	delfiles=
81134642e01fSmrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
81144642e01fSmrg	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
81154642e01fSmrg	  export_symbols="$output_objdir/$libname.uexp"
81166747b715Smrg	  func_append delfiles " $export_symbols"
81174642e01fSmrg	fi
811805b261ecSmrg
81194642e01fSmrg	orig_export_symbols=
81204642e01fSmrg	case $host_os in
81214642e01fSmrg	cygwin* | mingw* | cegcc*)
81224642e01fSmrg	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
81234642e01fSmrg	    # exporting using user supplied symfile
81244642e01fSmrg	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
81254642e01fSmrg	      # and it's NOT already a .def file. Must figure out
81264642e01fSmrg	      # which of the given symbols are data symbols and tag
81274642e01fSmrg	      # them as such. So, trigger use of export_symbols_cmds.
81284642e01fSmrg	      # export_symbols gets reassigned inside the "prepare
81294642e01fSmrg	      # the list of exported symbols" if statement, so the
81304642e01fSmrg	      # include_expsyms logic still works.
81314642e01fSmrg	      orig_export_symbols="$export_symbols"
81324642e01fSmrg	      export_symbols=
81334642e01fSmrg	      always_export_symbols=yes
81344642e01fSmrg	    fi
81354642e01fSmrg	  fi
81364642e01fSmrg	  ;;
81374642e01fSmrg	esac
813805b261ecSmrg
81394642e01fSmrg	# Prepare the list of exported symbols
81404642e01fSmrg	if test -z "$export_symbols"; then
81414642e01fSmrg	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
81424642e01fSmrg	    func_verbose "generating symbol list for \`$libname.la'"
81434642e01fSmrg	    export_symbols="$output_objdir/$libname.exp"
81444642e01fSmrg	    $opt_dry_run || $RM $export_symbols
81454642e01fSmrg	    cmds=$export_symbols_cmds
81464642e01fSmrg	    save_ifs="$IFS"; IFS='~'
81476747b715Smrg	    for cmd1 in $cmds; do
81484642e01fSmrg	      IFS="$save_ifs"
81496747b715Smrg	      # Take the normal branch if the nm_file_list_spec branch
81506747b715Smrg	      # doesn't work or if tool conversion is not needed.
81516747b715Smrg	      case $nm_file_list_spec~$to_tool_file_cmd in
81526747b715Smrg		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
81536747b715Smrg		  try_normal_branch=yes
81546747b715Smrg		  eval cmd=\"$cmd1\"
81556747b715Smrg		  func_len " $cmd"
81566747b715Smrg		  len=$func_len_result
81576747b715Smrg		  ;;
81586747b715Smrg		*)
81596747b715Smrg		  try_normal_branch=no
81606747b715Smrg		  ;;
81616747b715Smrg	      esac
81626747b715Smrg	      if test "$try_normal_branch" = yes \
81636747b715Smrg		 && { test "$len" -lt "$max_cmd_len" \
81646747b715Smrg		      || test "$max_cmd_len" -le -1; }
81656747b715Smrg	      then
81666747b715Smrg		func_show_eval "$cmd" 'exit $?'
81676747b715Smrg		skipped_export=false
81686747b715Smrg	      elif test -n "$nm_file_list_spec"; then
81696747b715Smrg		func_basename "$output"
81706747b715Smrg		output_la=$func_basename_result
81716747b715Smrg		save_libobjs=$libobjs
81726747b715Smrg		save_output=$output
81736747b715Smrg		output=${output_objdir}/${output_la}.nm
81746747b715Smrg		func_to_tool_file "$output"
81756747b715Smrg		libobjs=$nm_file_list_spec$func_to_tool_file_result
81766747b715Smrg		func_append delfiles " $output"
81776747b715Smrg		func_verbose "creating $NM input file list: $output"
81786747b715Smrg		for obj in $save_libobjs; do
81796747b715Smrg		  func_to_tool_file "$obj"
81806747b715Smrg		  $ECHO "$func_to_tool_file_result"
81816747b715Smrg		done > "$output"
81826747b715Smrg		eval cmd=\"$cmd1\"
81834642e01fSmrg		func_show_eval "$cmd" 'exit $?'
81846747b715Smrg		output=$save_output
81856747b715Smrg		libobjs=$save_libobjs
81864642e01fSmrg		skipped_export=false
81874642e01fSmrg	      else
81884642e01fSmrg		# The command line is too long to execute in one step.
81894642e01fSmrg		func_verbose "using reloadable object file for export list..."
81904642e01fSmrg		skipped_export=:
81914642e01fSmrg		# Break out early, otherwise skipped_export may be
81924642e01fSmrg		# set to false by a later but shorter cmd.
81934642e01fSmrg		break
81944642e01fSmrg	      fi
81954642e01fSmrg	    done
81964642e01fSmrg	    IFS="$save_ifs"
81974642e01fSmrg	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
81984642e01fSmrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
81994642e01fSmrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
82004642e01fSmrg	    fi
82014642e01fSmrg	  fi
820205b261ecSmrg	fi
820305b261ecSmrg
82044642e01fSmrg	if test -n "$export_symbols" && test -n "$include_expsyms"; then
82054642e01fSmrg	  tmp_export_symbols="$export_symbols"
82064642e01fSmrg	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
82076747b715Smrg	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
82084642e01fSmrg	fi
820905b261ecSmrg
82104642e01fSmrg	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
82114642e01fSmrg	  # The given exports_symbols file has to be filtered, so filter it.
82124642e01fSmrg	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
82134642e01fSmrg	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
82144642e01fSmrg	  # 's' commands which not all seds can handle. GNU sed should be fine
82154642e01fSmrg	  # though. Also, the filter scales superlinearly with the number of
82164642e01fSmrg	  # global variables. join(1) would be nice here, but unfortunately
82174642e01fSmrg	  # isn't a blessed tool.
82184642e01fSmrg	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
82196747b715Smrg	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
82204642e01fSmrg	  export_symbols=$output_objdir/$libname.def
82214642e01fSmrg	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
82224642e01fSmrg	fi
822305b261ecSmrg
82244642e01fSmrg	tmp_deplibs=
82254642e01fSmrg	for test_deplib in $deplibs; do
82264642e01fSmrg	  case " $convenience " in
82274642e01fSmrg	  *" $test_deplib "*) ;;
82284642e01fSmrg	  *)
82296747b715Smrg	    func_append tmp_deplibs " $test_deplib"
82304642e01fSmrg	    ;;
82314642e01fSmrg	  esac
82324642e01fSmrg	done
82334642e01fSmrg	deplibs="$tmp_deplibs"
823405b261ecSmrg
82354642e01fSmrg	if test -n "$convenience"; then
82364642e01fSmrg	  if test -n "$whole_archive_flag_spec" &&
82374642e01fSmrg	    test "$compiler_needs_object" = yes &&
82384642e01fSmrg	    test -z "$libobjs"; then
82394642e01fSmrg	    # extract the archives, so we have objects to list.
82404642e01fSmrg	    # TODO: could optimize this to just extract one archive.
82414642e01fSmrg	    whole_archive_flag_spec=
82424642e01fSmrg	  fi
82434642e01fSmrg	  if test -n "$whole_archive_flag_spec"; then
82444642e01fSmrg	    save_libobjs=$libobjs
82454642e01fSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
82464642e01fSmrg	    test "X$libobjs" = "X " && libobjs=
82474642e01fSmrg	  else
82484642e01fSmrg	    gentop="$output_objdir/${outputname}x"
82496747b715Smrg	    func_append generated " $gentop"
825005b261ecSmrg
82514642e01fSmrg	    func_extract_archives $gentop $convenience
82526747b715Smrg	    func_append libobjs " $func_extract_archives_result"
82534642e01fSmrg	    test "X$libobjs" = "X " && libobjs=
82544642e01fSmrg	  fi
825505b261ecSmrg	fi
825605b261ecSmrg
82574642e01fSmrg	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
82584642e01fSmrg	  eval flag=\"$thread_safe_flag_spec\"
82596747b715Smrg	  func_append linker_flags " $flag"
826005b261ecSmrg	fi
826105b261ecSmrg
82624642e01fSmrg	# Make a backup of the uninstalled library when relinking
82636747b715Smrg	if test "$opt_mode" = relink; then
82644642e01fSmrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
82654642e01fSmrg	fi
826605b261ecSmrg
82674642e01fSmrg	# Do each of the archive commands.
82684642e01fSmrg	if test "$module" = yes && test -n "$module_cmds" ; then
82694642e01fSmrg	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
82704642e01fSmrg	    eval test_cmds=\"$module_expsym_cmds\"
82714642e01fSmrg	    cmds=$module_expsym_cmds
82724642e01fSmrg	  else
82734642e01fSmrg	    eval test_cmds=\"$module_cmds\"
82744642e01fSmrg	    cmds=$module_cmds
82754642e01fSmrg	  fi
827605b261ecSmrg	else
82774642e01fSmrg	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
82784642e01fSmrg	    eval test_cmds=\"$archive_expsym_cmds\"
82794642e01fSmrg	    cmds=$archive_expsym_cmds
82804642e01fSmrg	  else
82814642e01fSmrg	    eval test_cmds=\"$archive_cmds\"
82824642e01fSmrg	    cmds=$archive_cmds
82834642e01fSmrg	  fi
828405b261ecSmrg	fi
828505b261ecSmrg
82864642e01fSmrg	if test "X$skipped_export" != "X:" &&
82874642e01fSmrg	   func_len " $test_cmds" &&
82884642e01fSmrg	   len=$func_len_result &&
82894642e01fSmrg	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
82904642e01fSmrg	  :
82914642e01fSmrg	else
82924642e01fSmrg	  # The command line is too long to link in one step, link piecewise
82934642e01fSmrg	  # or, if using GNU ld and skipped_export is not :, use a linker
82944642e01fSmrg	  # script.
829505b261ecSmrg
82964642e01fSmrg	  # Save the value of $output and $libobjs because we want to
82974642e01fSmrg	  # use them later.  If we have whole_archive_flag_spec, we
82984642e01fSmrg	  # want to use save_libobjs as it was before
82994642e01fSmrg	  # whole_archive_flag_spec was expanded, because we can't
83004642e01fSmrg	  # assume the linker understands whole_archive_flag_spec.
83014642e01fSmrg	  # This may have to be revisited, in case too many
83024642e01fSmrg	  # convenience libraries get linked in and end up exceeding
83034642e01fSmrg	  # the spec.
83044642e01fSmrg	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
83054642e01fSmrg	    save_libobjs=$libobjs
83064642e01fSmrg	  fi
83074642e01fSmrg	  save_output=$output
83086747b715Smrg	  func_basename "$output"
83096747b715Smrg	  output_la=$func_basename_result
831005b261ecSmrg
83114642e01fSmrg	  # Clear the reloadable object creation command queue and
83124642e01fSmrg	  # initialize k to one.
83134642e01fSmrg	  test_cmds=
83144642e01fSmrg	  concat_cmds=
83154642e01fSmrg	  objlist=
83164642e01fSmrg	  last_robj=
83174642e01fSmrg	  k=1
83184642e01fSmrg
83194642e01fSmrg	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
83204642e01fSmrg	    output=${output_objdir}/${output_la}.lnkscript
83214642e01fSmrg	    func_verbose "creating GNU ld script: $output"
83226747b715Smrg	    echo 'INPUT (' > $output
83234642e01fSmrg	    for obj in $save_libobjs
832405b261ecSmrg	    do
83256747b715Smrg	      func_to_tool_file "$obj"
83266747b715Smrg	      $ECHO "$func_to_tool_file_result" >> $output
83274642e01fSmrg	    done
83286747b715Smrg	    echo ')' >> $output
83296747b715Smrg	    func_append delfiles " $output"
83306747b715Smrg	    func_to_tool_file "$output"
83316747b715Smrg	    output=$func_to_tool_file_result
83324642e01fSmrg	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
83334642e01fSmrg	    output=${output_objdir}/${output_la}.lnk
83344642e01fSmrg	    func_verbose "creating linker input file list: $output"
83354642e01fSmrg	    : > $output
83364642e01fSmrg	    set x $save_libobjs
83374642e01fSmrg	    shift
83384642e01fSmrg	    firstobj=
83394642e01fSmrg	    if test "$compiler_needs_object" = yes; then
83404642e01fSmrg	      firstobj="$1 "
83414642e01fSmrg	      shift
83424642e01fSmrg	    fi
83434642e01fSmrg	    for obj
83444642e01fSmrg	    do
83456747b715Smrg	      func_to_tool_file "$obj"
83466747b715Smrg	      $ECHO "$func_to_tool_file_result" >> $output
83474642e01fSmrg	    done
83486747b715Smrg	    func_append delfiles " $output"
83496747b715Smrg	    func_to_tool_file "$output"
83506747b715Smrg	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
83514642e01fSmrg	  else
83524642e01fSmrg	    if test -n "$save_libobjs"; then
83534642e01fSmrg	      func_verbose "creating reloadable object files..."
83544642e01fSmrg	      output=$output_objdir/$output_la-${k}.$objext
83554642e01fSmrg	      eval test_cmds=\"$reload_cmds\"
83564642e01fSmrg	      func_len " $test_cmds"
83574642e01fSmrg	      len0=$func_len_result
83584642e01fSmrg	      len=$len0
83594642e01fSmrg
83604642e01fSmrg	      # Loop over the list of objects to be linked.
83614642e01fSmrg	      for obj in $save_libobjs
83624642e01fSmrg	      do
83634642e01fSmrg		func_len " $obj"
83644642e01fSmrg		func_arith $len + $func_len_result
83654642e01fSmrg		len=$func_arith_result
83664642e01fSmrg		if test "X$objlist" = X ||
83674642e01fSmrg		   test "$len" -lt "$max_cmd_len"; then
83684642e01fSmrg		  func_append objlist " $obj"
83694642e01fSmrg		else
83704642e01fSmrg		  # The command $test_cmds is almost too long, add a
83714642e01fSmrg		  # command to the queue.
83724642e01fSmrg		  if test "$k" -eq 1 ; then
83734642e01fSmrg		    # The first file doesn't have a previous command to add.
83746747b715Smrg		    reload_objs=$objlist
83756747b715Smrg		    eval concat_cmds=\"$reload_cmds\"
83764642e01fSmrg		  else
83774642e01fSmrg		    # All subsequent reloadable object files will link in
83784642e01fSmrg		    # the last one created.
83796747b715Smrg		    reload_objs="$objlist $last_robj"
83806747b715Smrg		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
83814642e01fSmrg		  fi
83824642e01fSmrg		  last_robj=$output_objdir/$output_la-${k}.$objext
83834642e01fSmrg		  func_arith $k + 1
83844642e01fSmrg		  k=$func_arith_result
83854642e01fSmrg		  output=$output_objdir/$output_la-${k}.$objext
83866747b715Smrg		  objlist=" $obj"
83874642e01fSmrg		  func_len " $last_robj"
83884642e01fSmrg		  func_arith $len0 + $func_len_result
83894642e01fSmrg		  len=$func_arith_result
83904642e01fSmrg		fi
83914642e01fSmrg	      done
83924642e01fSmrg	      # Handle the remaining objects by creating one last
83934642e01fSmrg	      # reloadable object file.  All subsequent reloadable object
83944642e01fSmrg	      # files will link in the last one created.
83954642e01fSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
83966747b715Smrg	      reload_objs="$objlist $last_robj"
83976747b715Smrg	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
83984642e01fSmrg	      if test -n "$last_robj"; then
83994642e01fSmrg	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
84004642e01fSmrg	      fi
84016747b715Smrg	      func_append delfiles " $output"
840205b261ecSmrg
84034642e01fSmrg	    else
84044642e01fSmrg	      output=
84054642e01fSmrg	    fi
840605b261ecSmrg
84074642e01fSmrg	    if ${skipped_export-false}; then
84084642e01fSmrg	      func_verbose "generating symbol list for \`$libname.la'"
84094642e01fSmrg	      export_symbols="$output_objdir/$libname.exp"
84104642e01fSmrg	      $opt_dry_run || $RM $export_symbols
84114642e01fSmrg	      libobjs=$output
84124642e01fSmrg	      # Append the command to create the export file.
84134642e01fSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
84144642e01fSmrg	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
84154642e01fSmrg	      if test -n "$last_robj"; then
84164642e01fSmrg		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
84174642e01fSmrg	      fi
841805b261ecSmrg	    fi
841905b261ecSmrg
84204642e01fSmrg	    test -n "$save_libobjs" &&
84214642e01fSmrg	      func_verbose "creating a temporary reloadable object file: $output"
842205b261ecSmrg
84234642e01fSmrg	    # Loop through the commands generated above and execute them.
84244642e01fSmrg	    save_ifs="$IFS"; IFS='~'
84254642e01fSmrg	    for cmd in $concat_cmds; do
84264642e01fSmrg	      IFS="$save_ifs"
84274642e01fSmrg	      $opt_silent || {
84284642e01fSmrg		  func_quote_for_expand "$cmd"
84294642e01fSmrg		  eval "func_echo $func_quote_for_expand_result"
84304642e01fSmrg	      }
84314642e01fSmrg	      $opt_dry_run || eval "$cmd" || {
84324642e01fSmrg		lt_exit=$?
84334642e01fSmrg
84344642e01fSmrg		# Restore the uninstalled library and exit
84356747b715Smrg		if test "$opt_mode" = relink; then
84364642e01fSmrg		  ( cd "$output_objdir" && \
84374642e01fSmrg		    $RM "${realname}T" && \
84384642e01fSmrg		    $MV "${realname}U" "$realname" )
84394642e01fSmrg		fi
844005b261ecSmrg
84414642e01fSmrg		exit $lt_exit
84424642e01fSmrg	      }
84434642e01fSmrg	    done
84444642e01fSmrg	    IFS="$save_ifs"
844505b261ecSmrg
84464642e01fSmrg	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
84474642e01fSmrg	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
84484642e01fSmrg	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
844905b261ecSmrg	    fi
845005b261ecSmrg	  fi
845105b261ecSmrg
84524642e01fSmrg          if ${skipped_export-false}; then
84534642e01fSmrg	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
84544642e01fSmrg	      tmp_export_symbols="$export_symbols"
84554642e01fSmrg	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
84566747b715Smrg	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
84574642e01fSmrg	    fi
845805b261ecSmrg
84594642e01fSmrg	    if test -n "$orig_export_symbols"; then
84604642e01fSmrg	      # The given exports_symbols file has to be filtered, so filter it.
84614642e01fSmrg	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
84624642e01fSmrg	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
84634642e01fSmrg	      # 's' commands which not all seds can handle. GNU sed should be fine
84644642e01fSmrg	      # though. Also, the filter scales superlinearly with the number of
84654642e01fSmrg	      # global variables. join(1) would be nice here, but unfortunately
84664642e01fSmrg	      # isn't a blessed tool.
84674642e01fSmrg	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
84686747b715Smrg	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
84694642e01fSmrg	      export_symbols=$output_objdir/$libname.def
84704642e01fSmrg	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
84714642e01fSmrg	    fi
84724642e01fSmrg	  fi
847305b261ecSmrg
84744642e01fSmrg	  libobjs=$output
84754642e01fSmrg	  # Restore the value of output.
84764642e01fSmrg	  output=$save_output
847705b261ecSmrg
84784642e01fSmrg	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
84794642e01fSmrg	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
84804642e01fSmrg	    test "X$libobjs" = "X " && libobjs=
84814642e01fSmrg	  fi
84824642e01fSmrg	  # Expand the library linking commands again to reset the
84834642e01fSmrg	  # value of $libobjs for piecewise linking.
848405b261ecSmrg
84854642e01fSmrg	  # Do each of the archive commands.
84864642e01fSmrg	  if test "$module" = yes && test -n "$module_cmds" ; then
84874642e01fSmrg	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
84884642e01fSmrg	      cmds=$module_expsym_cmds
84894642e01fSmrg	    else
84904642e01fSmrg	      cmds=$module_cmds
849105b261ecSmrg	    fi
849205b261ecSmrg	  else
84934642e01fSmrg	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
84944642e01fSmrg	      cmds=$archive_expsym_cmds
84954642e01fSmrg	    else
84964642e01fSmrg	      cmds=$archive_cmds
84974642e01fSmrg	    fi
849805b261ecSmrg	  fi
84994642e01fSmrg	fi
850005b261ecSmrg
85014642e01fSmrg	if test -n "$delfiles"; then
85024642e01fSmrg	  # Append the command to remove temporary files to $cmds.
85034642e01fSmrg	  eval cmds=\"\$cmds~\$RM $delfiles\"
85044642e01fSmrg	fi
850505b261ecSmrg
85064642e01fSmrg	# Add any objects from preloaded convenience libraries
85074642e01fSmrg	if test -n "$dlprefiles"; then
85084642e01fSmrg	  gentop="$output_objdir/${outputname}x"
85096747b715Smrg	  func_append generated " $gentop"
851005b261ecSmrg
85114642e01fSmrg	  func_extract_archives $gentop $dlprefiles
85126747b715Smrg	  func_append libobjs " $func_extract_archives_result"
85134642e01fSmrg	  test "X$libobjs" = "X " && libobjs=
85144642e01fSmrg	fi
851505b261ecSmrg
85164642e01fSmrg	save_ifs="$IFS"; IFS='~'
85174642e01fSmrg	for cmd in $cmds; do
85184642e01fSmrg	  IFS="$save_ifs"
85194642e01fSmrg	  eval cmd=\"$cmd\"
85204642e01fSmrg	  $opt_silent || {
85214642e01fSmrg	    func_quote_for_expand "$cmd"
85224642e01fSmrg	    eval "func_echo $func_quote_for_expand_result"
85234642e01fSmrg	  }
85244642e01fSmrg	  $opt_dry_run || eval "$cmd" || {
85254642e01fSmrg	    lt_exit=$?
852605b261ecSmrg
85274642e01fSmrg	    # Restore the uninstalled library and exit
85286747b715Smrg	    if test "$opt_mode" = relink; then
85294642e01fSmrg	      ( cd "$output_objdir" && \
85304642e01fSmrg	        $RM "${realname}T" && \
85314642e01fSmrg		$MV "${realname}U" "$realname" )
85324642e01fSmrg	    fi
853305b261ecSmrg
85344642e01fSmrg	    exit $lt_exit
85354642e01fSmrg	  }
85364642e01fSmrg	done
85374642e01fSmrg	IFS="$save_ifs"
853805b261ecSmrg
85394642e01fSmrg	# Restore the uninstalled library and exit
85406747b715Smrg	if test "$opt_mode" = relink; then
85414642e01fSmrg	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
854205b261ecSmrg
85434642e01fSmrg	  if test -n "$convenience"; then
85444642e01fSmrg	    if test -z "$whole_archive_flag_spec"; then
85454642e01fSmrg	      func_show_eval '${RM}r "$gentop"'
85464642e01fSmrg	    fi
85474642e01fSmrg	  fi
854805b261ecSmrg
85494642e01fSmrg	  exit $EXIT_SUCCESS
85504642e01fSmrg	fi
85514642e01fSmrg
85524642e01fSmrg	# Create links to the real library.
85534642e01fSmrg	for linkname in $linknames; do
85544642e01fSmrg	  if test "$realname" != "$linkname"; then
85554642e01fSmrg	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
855605b261ecSmrg	  fi
855705b261ecSmrg	done
855805b261ecSmrg
85594642e01fSmrg	# If -module or -export-dynamic was specified, set the dlname.
85604642e01fSmrg	if test "$module" = yes || test "$export_dynamic" = yes; then
85614642e01fSmrg	  # On all known operating systems, these are identical.
85624642e01fSmrg	  dlname="$soname"
85634642e01fSmrg	fi
85644642e01fSmrg      fi
856505b261ecSmrg      ;;
856605b261ecSmrg
85674642e01fSmrg    obj)
85684642e01fSmrg      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
85694642e01fSmrg	func_warning "\`-dlopen' is ignored for objects"
85704642e01fSmrg      fi
857105b261ecSmrg
85724642e01fSmrg      case " $deplibs" in
85734642e01fSmrg      *\ -l* | *\ -L*)
85744642e01fSmrg	func_warning "\`-l' and \`-L' are ignored for objects" ;;
857505b261ecSmrg      esac
857605b261ecSmrg
85774642e01fSmrg      test -n "$rpath" && \
85784642e01fSmrg	func_warning "\`-rpath' is ignored for objects"
85794642e01fSmrg
85804642e01fSmrg      test -n "$xrpath" && \
85814642e01fSmrg	func_warning "\`-R' is ignored for objects"
858205b261ecSmrg
85834642e01fSmrg      test -n "$vinfo" && \
85844642e01fSmrg	func_warning "\`-version-info' is ignored for objects"
858505b261ecSmrg
85864642e01fSmrg      test -n "$release" && \
85874642e01fSmrg	func_warning "\`-release' is ignored for objects"
85884642e01fSmrg
85894642e01fSmrg      case $output in
85904642e01fSmrg      *.lo)
85914642e01fSmrg	test -n "$objs$old_deplibs" && \
85924642e01fSmrg	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
85934642e01fSmrg
85944642e01fSmrg	libobj=$output
85954642e01fSmrg	func_lo2o "$libobj"
85964642e01fSmrg	obj=$func_lo2o_result
859705b261ecSmrg	;;
859805b261ecSmrg      *)
85994642e01fSmrg	libobj=
86004642e01fSmrg	obj="$output"
860105b261ecSmrg	;;
860205b261ecSmrg      esac
860305b261ecSmrg
86044642e01fSmrg      # Delete the old objects.
86054642e01fSmrg      $opt_dry_run || $RM $obj $libobj
860605b261ecSmrg
86074642e01fSmrg      # Objects from convenience libraries.  This assumes
86084642e01fSmrg      # single-version convenience libraries.  Whenever we create
86094642e01fSmrg      # different ones for PIC/non-PIC, this we'll have to duplicate
86104642e01fSmrg      # the extraction.
86114642e01fSmrg      reload_conv_objs=
86124642e01fSmrg      gentop=
86134642e01fSmrg      # reload_cmds runs $LD directly, so let us get rid of
86144642e01fSmrg      # -Wl from whole_archive_flag_spec and hope we can get by with
86154642e01fSmrg      # turning comma into space..
86164642e01fSmrg      wl=
861705b261ecSmrg
86184642e01fSmrg      if test -n "$convenience"; then
86194642e01fSmrg	if test -n "$whole_archive_flag_spec"; then
86204642e01fSmrg	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
86216747b715Smrg	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
86224642e01fSmrg	else
86234642e01fSmrg	  gentop="$output_objdir/${obj}x"
86246747b715Smrg	  func_append generated " $gentop"
862505b261ecSmrg
86264642e01fSmrg	  func_extract_archives $gentop $convenience
86274642e01fSmrg	  reload_conv_objs="$reload_objs $func_extract_archives_result"
86284642e01fSmrg	fi
862905b261ecSmrg      fi
863005b261ecSmrg
86316747b715Smrg      # If we're not building shared, we need to use non_pic_objs
86326747b715Smrg      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
86336747b715Smrg
86344642e01fSmrg      # Create the old-style object.
86356747b715Smrg      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
863605b261ecSmrg
86374642e01fSmrg      output="$obj"
86384642e01fSmrg      func_execute_cmds "$reload_cmds" 'exit $?'
863905b261ecSmrg
86404642e01fSmrg      # Exit if we aren't doing a library object file.
86414642e01fSmrg      if test -z "$libobj"; then
86424642e01fSmrg	if test -n "$gentop"; then
86434642e01fSmrg	  func_show_eval '${RM}r "$gentop"'
86444642e01fSmrg	fi
86454642e01fSmrg
86464642e01fSmrg	exit $EXIT_SUCCESS
864705b261ecSmrg      fi
86484642e01fSmrg
86494642e01fSmrg      if test "$build_libtool_libs" != yes; then
86504642e01fSmrg	if test -n "$gentop"; then
86514642e01fSmrg	  func_show_eval '${RM}r "$gentop"'
86524642e01fSmrg	fi
86534642e01fSmrg
86544642e01fSmrg	# Create an invalid libtool object if no PIC, so that we don't
86554642e01fSmrg	# accidentally link it into a program.
86564642e01fSmrg	# $show "echo timestamp > $libobj"
86574642e01fSmrg	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
86584642e01fSmrg	exit $EXIT_SUCCESS
86594642e01fSmrg      fi
86604642e01fSmrg
86614642e01fSmrg      if test -n "$pic_flag" || test "$pic_mode" != default; then
86624642e01fSmrg	# Only do commands if we really have different PIC objects.
86634642e01fSmrg	reload_objs="$libobjs $reload_conv_objs"
86644642e01fSmrg	output="$libobj"
86654642e01fSmrg	func_execute_cmds "$reload_cmds" 'exit $?'
86664642e01fSmrg      fi
86674642e01fSmrg
86684642e01fSmrg      if test -n "$gentop"; then
86694642e01fSmrg	func_show_eval '${RM}r "$gentop"'
86704642e01fSmrg      fi
86714642e01fSmrg
86724642e01fSmrg      exit $EXIT_SUCCESS
867305b261ecSmrg      ;;
867405b261ecSmrg
86754642e01fSmrg    prog)
86764642e01fSmrg      case $host in
86774642e01fSmrg	*cygwin*) func_stripname '' '.exe' "$output"
86784642e01fSmrg	          output=$func_stripname_result.exe;;
86794642e01fSmrg      esac
86804642e01fSmrg      test -n "$vinfo" && \
86814642e01fSmrg	func_warning "\`-version-info' is ignored for programs"
868205b261ecSmrg
86834642e01fSmrg      test -n "$release" && \
86844642e01fSmrg	func_warning "\`-release' is ignored for programs"
868505b261ecSmrg
86864642e01fSmrg      test "$preload" = yes \
86874642e01fSmrg        && test "$dlopen_support" = unknown \
86884642e01fSmrg	&& test "$dlopen_self" = unknown \
86894642e01fSmrg	&& test "$dlopen_self_static" = unknown && \
86904642e01fSmrg	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
86914642e01fSmrg
86924642e01fSmrg      case $host in
86934642e01fSmrg      *-*-rhapsody* | *-*-darwin1.[012])
86944642e01fSmrg	# On Rhapsody replace the C library is the System framework
86956747b715Smrg	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
86966747b715Smrg	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
869705b261ecSmrg	;;
86984642e01fSmrg      esac
869905b261ecSmrg
87004642e01fSmrg      case $host in
87014642e01fSmrg      *-*-darwin*)
87024642e01fSmrg	# Don't allow lazy linking, it breaks C++ global constructors
87034642e01fSmrg	# But is supposedly fixed on 10.4 or later (yay!).
87044642e01fSmrg	if test "$tagname" = CXX ; then
87054642e01fSmrg	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
87064642e01fSmrg	    10.[0123])
87076747b715Smrg	      func_append compile_command " ${wl}-bind_at_load"
87086747b715Smrg	      func_append finalize_command " ${wl}-bind_at_load"
87094642e01fSmrg	    ;;
87104642e01fSmrg	  esac
871105b261ecSmrg	fi
87124642e01fSmrg	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
87136747b715Smrg	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
87146747b715Smrg	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
87154642e01fSmrg	;;
87164642e01fSmrg      esac
871705b261ecSmrg
871805b261ecSmrg
87194642e01fSmrg      # move library search paths that coincide with paths to not yet
87204642e01fSmrg      # installed libraries to the beginning of the library search list
87214642e01fSmrg      new_libs=
87224642e01fSmrg      for path in $notinst_path; do
87234642e01fSmrg	case " $new_libs " in
87244642e01fSmrg	*" -L$path/$objdir "*) ;;
87254642e01fSmrg	*)
87264642e01fSmrg	  case " $compile_deplibs " in
87274642e01fSmrg	  *" -L$path/$objdir "*)
87286747b715Smrg	    func_append new_libs " -L$path/$objdir" ;;
872905b261ecSmrg	  esac
87304642e01fSmrg	  ;;
87314642e01fSmrg	esac
87324642e01fSmrg      done
87334642e01fSmrg      for deplib in $compile_deplibs; do
87344642e01fSmrg	case $deplib in
87354642e01fSmrg	-L*)
87364642e01fSmrg	  case " $new_libs " in
87374642e01fSmrg	  *" $deplib "*) ;;
87386747b715Smrg	  *) func_append new_libs " $deplib" ;;
873905b261ecSmrg	  esac
87404642e01fSmrg	  ;;
87416747b715Smrg	*) func_append new_libs " $deplib" ;;
87424642e01fSmrg	esac
87434642e01fSmrg      done
87444642e01fSmrg      compile_deplibs="$new_libs"
874505b261ecSmrg
874605b261ecSmrg
87476747b715Smrg      func_append compile_command " $compile_deplibs"
87486747b715Smrg      func_append finalize_command " $finalize_deplibs"
874905b261ecSmrg
87504642e01fSmrg      if test -n "$rpath$xrpath"; then
87514642e01fSmrg	# If the user specified any rpath flags, then add them.
87524642e01fSmrg	for libdir in $rpath $xrpath; do
87534642e01fSmrg	  # This is the magic to use -rpath.
87544642e01fSmrg	  case "$finalize_rpath " in
87554642e01fSmrg	  *" $libdir "*) ;;
87566747b715Smrg	  *) func_append finalize_rpath " $libdir" ;;
87574642e01fSmrg	  esac
87584642e01fSmrg	done
87594642e01fSmrg      fi
876005b261ecSmrg
87614642e01fSmrg      # Now hardcode the library paths
87624642e01fSmrg      rpath=
87634642e01fSmrg      hardcode_libdirs=
87644642e01fSmrg      for libdir in $compile_rpath $finalize_rpath; do
87654642e01fSmrg	if test -n "$hardcode_libdir_flag_spec"; then
87664642e01fSmrg	  if test -n "$hardcode_libdir_separator"; then
87674642e01fSmrg	    if test -z "$hardcode_libdirs"; then
87684642e01fSmrg	      hardcode_libdirs="$libdir"
87694642e01fSmrg	    else
87704642e01fSmrg	      # Just accumulate the unique libdirs.
87714642e01fSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
87724642e01fSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
87734642e01fSmrg		;;
87744642e01fSmrg	      *)
87756747b715Smrg		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
87764642e01fSmrg		;;
87774642e01fSmrg	      esac
87784642e01fSmrg	    fi
877905b261ecSmrg	  else
87804642e01fSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
87816747b715Smrg	    func_append rpath " $flag"
878205b261ecSmrg	  fi
87834642e01fSmrg	elif test -n "$runpath_var"; then
87844642e01fSmrg	  case "$perm_rpath " in
87854642e01fSmrg	  *" $libdir "*) ;;
87866747b715Smrg	  *) func_append perm_rpath " $libdir" ;;
87874642e01fSmrg	  esac
87884642e01fSmrg	fi
87894642e01fSmrg	case $host in
87904642e01fSmrg	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
87914642e01fSmrg	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
87924642e01fSmrg	  case :$dllsearchpath: in
87934642e01fSmrg	  *":$libdir:"*) ;;
87944642e01fSmrg	  ::) dllsearchpath=$libdir;;
87956747b715Smrg	  *) func_append dllsearchpath ":$libdir";;
87964642e01fSmrg	  esac
87974642e01fSmrg	  case :$dllsearchpath: in
87984642e01fSmrg	  *":$testbindir:"*) ;;
87994642e01fSmrg	  ::) dllsearchpath=$testbindir;;
88006747b715Smrg	  *) func_append dllsearchpath ":$testbindir";;
88014642e01fSmrg	  esac
88024642e01fSmrg	  ;;
88034642e01fSmrg	esac
88044642e01fSmrg      done
88054642e01fSmrg      # Substitute the hardcoded libdirs into the rpath.
88064642e01fSmrg      if test -n "$hardcode_libdir_separator" &&
88074642e01fSmrg	 test -n "$hardcode_libdirs"; then
88084642e01fSmrg	libdir="$hardcode_libdirs"
88094642e01fSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
88104642e01fSmrg      fi
88114642e01fSmrg      compile_rpath="$rpath"
881205b261ecSmrg
88134642e01fSmrg      rpath=
88144642e01fSmrg      hardcode_libdirs=
88154642e01fSmrg      for libdir in $finalize_rpath; do
88164642e01fSmrg	if test -n "$hardcode_libdir_flag_spec"; then
88174642e01fSmrg	  if test -n "$hardcode_libdir_separator"; then
88184642e01fSmrg	    if test -z "$hardcode_libdirs"; then
88194642e01fSmrg	      hardcode_libdirs="$libdir"
88204642e01fSmrg	    else
88214642e01fSmrg	      # Just accumulate the unique libdirs.
88224642e01fSmrg	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
88234642e01fSmrg	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
88244642e01fSmrg		;;
88254642e01fSmrg	      *)
88266747b715Smrg		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
88274642e01fSmrg		;;
88284642e01fSmrg	      esac
88294642e01fSmrg	    fi
883005b261ecSmrg	  else
88314642e01fSmrg	    eval flag=\"$hardcode_libdir_flag_spec\"
88326747b715Smrg	    func_append rpath " $flag"
883305b261ecSmrg	  fi
88344642e01fSmrg	elif test -n "$runpath_var"; then
88354642e01fSmrg	  case "$finalize_perm_rpath " in
88364642e01fSmrg	  *" $libdir "*) ;;
88376747b715Smrg	  *) func_append finalize_perm_rpath " $libdir" ;;
88384642e01fSmrg	  esac
883905b261ecSmrg	fi
88404642e01fSmrg      done
88414642e01fSmrg      # Substitute the hardcoded libdirs into the rpath.
88424642e01fSmrg      if test -n "$hardcode_libdir_separator" &&
88434642e01fSmrg	 test -n "$hardcode_libdirs"; then
88444642e01fSmrg	libdir="$hardcode_libdirs"
88454642e01fSmrg	eval rpath=\" $hardcode_libdir_flag_spec\"
88464642e01fSmrg      fi
88474642e01fSmrg      finalize_rpath="$rpath"
884805b261ecSmrg
88494642e01fSmrg      if test -n "$libobjs" && test "$build_old_libs" = yes; then
88504642e01fSmrg	# Transform all the library objects into standard objects.
88516747b715Smrg	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
88526747b715Smrg	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
88534642e01fSmrg      fi
885405b261ecSmrg
88554642e01fSmrg      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
885605b261ecSmrg
88574642e01fSmrg      # template prelinking step
88584642e01fSmrg      if test -n "$prelink_cmds"; then
88594642e01fSmrg	func_execute_cmds "$prelink_cmds" 'exit $?'
88604642e01fSmrg      fi
886105b261ecSmrg
88624642e01fSmrg      wrappers_required=yes
88634642e01fSmrg      case $host in
88646747b715Smrg      *cegcc* | *mingw32ce*)
88656747b715Smrg        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
88666747b715Smrg        wrappers_required=no
88676747b715Smrg        ;;
88684642e01fSmrg      *cygwin* | *mingw* )
88694642e01fSmrg        if test "$build_libtool_libs" != yes; then
88704642e01fSmrg          wrappers_required=no
88714642e01fSmrg        fi
88724642e01fSmrg        ;;
88734642e01fSmrg      *)
88744642e01fSmrg        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
88754642e01fSmrg          wrappers_required=no
88764642e01fSmrg        fi
88774642e01fSmrg        ;;
88784642e01fSmrg      esac
88794642e01fSmrg      if test "$wrappers_required" = no; then
88804642e01fSmrg	# Replace the output file specification.
88816747b715Smrg	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
88824642e01fSmrg	link_command="$compile_command$compile_rpath"
888305b261ecSmrg
88844642e01fSmrg	# We have no uninstalled library dependencies, so finalize right now.
88854642e01fSmrg	exit_status=0
88864642e01fSmrg	func_show_eval "$link_command" 'exit_status=$?'
888705b261ecSmrg
88886747b715Smrg	if test -n "$postlink_cmds"; then
88896747b715Smrg	  func_to_tool_file "$output"
88906747b715Smrg	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
88916747b715Smrg	  func_execute_cmds "$postlink_cmds" 'exit $?'
88926747b715Smrg	fi
88936747b715Smrg
88944642e01fSmrg	# Delete the generated files.
88954642e01fSmrg	if test -f "$output_objdir/${outputname}S.${objext}"; then
88964642e01fSmrg	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
889705b261ecSmrg	fi
889805b261ecSmrg
88994642e01fSmrg	exit $exit_status
89004642e01fSmrg      fi
890105b261ecSmrg
89024642e01fSmrg      if test -n "$compile_shlibpath$finalize_shlibpath"; then
89034642e01fSmrg	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
89044642e01fSmrg      fi
89054642e01fSmrg      if test -n "$finalize_shlibpath"; then
89064642e01fSmrg	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
89074642e01fSmrg      fi
890805b261ecSmrg
89094642e01fSmrg      compile_var=
89104642e01fSmrg      finalize_var=
89114642e01fSmrg      if test -n "$runpath_var"; then
89124642e01fSmrg	if test -n "$perm_rpath"; then
89134642e01fSmrg	  # We should set the runpath_var.
89144642e01fSmrg	  rpath=
89154642e01fSmrg	  for dir in $perm_rpath; do
89166747b715Smrg	    func_append rpath "$dir:"
89174642e01fSmrg	  done
89184642e01fSmrg	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
891905b261ecSmrg	fi
89204642e01fSmrg	if test -n "$finalize_perm_rpath"; then
89214642e01fSmrg	  # We should set the runpath_var.
89224642e01fSmrg	  rpath=
89234642e01fSmrg	  for dir in $finalize_perm_rpath; do
89246747b715Smrg	    func_append rpath "$dir:"
89254642e01fSmrg	  done
89264642e01fSmrg	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
892705b261ecSmrg	fi
89284642e01fSmrg      fi
892905b261ecSmrg
89304642e01fSmrg      if test "$no_install" = yes; then
89314642e01fSmrg	# We don't need to create a wrapper script.
89324642e01fSmrg	link_command="$compile_var$compile_command$compile_rpath"
89334642e01fSmrg	# Replace the output file specification.
89346747b715Smrg	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
89354642e01fSmrg	# Delete the old output file.
89364642e01fSmrg	$opt_dry_run || $RM $output
89374642e01fSmrg	# Link the executable and exit
89384642e01fSmrg	func_show_eval "$link_command" 'exit $?'
89396747b715Smrg
89406747b715Smrg	if test -n "$postlink_cmds"; then
89416747b715Smrg	  func_to_tool_file "$output"
89426747b715Smrg	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
89436747b715Smrg	  func_execute_cmds "$postlink_cmds" 'exit $?'
89446747b715Smrg	fi
89456747b715Smrg
894605b261ecSmrg	exit $EXIT_SUCCESS
89474642e01fSmrg      fi
894805b261ecSmrg
89494642e01fSmrg      if test "$hardcode_action" = relink; then
89504642e01fSmrg	# Fast installation is not supported
89514642e01fSmrg	link_command="$compile_var$compile_command$compile_rpath"
89524642e01fSmrg	relink_command="$finalize_var$finalize_command$finalize_rpath"
89534642e01fSmrg
89544642e01fSmrg	func_warning "this platform does not like uninstalled shared libraries"
89554642e01fSmrg	func_warning "\`$output' will be relinked during installation"
89564642e01fSmrg      else
89574642e01fSmrg	if test "$fast_install" != no; then
89584642e01fSmrg	  link_command="$finalize_var$compile_command$finalize_rpath"
89594642e01fSmrg	  if test "$fast_install" = yes; then
89606747b715Smrg	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
89614642e01fSmrg	  else
89624642e01fSmrg	    # fast_install is set to needless
89634642e01fSmrg	    relink_command=
89644642e01fSmrg	  fi
896505b261ecSmrg	else
89664642e01fSmrg	  link_command="$compile_var$compile_command$compile_rpath"
89674642e01fSmrg	  relink_command="$finalize_var$finalize_command$finalize_rpath"
896805b261ecSmrg	fi
89694642e01fSmrg      fi
897005b261ecSmrg
89714642e01fSmrg      # Replace the output file specification.
89726747b715Smrg      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
897305b261ecSmrg
89744642e01fSmrg      # Delete the old output files.
89754642e01fSmrg      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
897605b261ecSmrg
89774642e01fSmrg      func_show_eval "$link_command" 'exit $?'
897805b261ecSmrg
89796747b715Smrg      if test -n "$postlink_cmds"; then
89806747b715Smrg	func_to_tool_file "$output_objdir/$outputname"
89816747b715Smrg	postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
89826747b715Smrg	func_execute_cmds "$postlink_cmds" 'exit $?'
89836747b715Smrg      fi
89846747b715Smrg
89854642e01fSmrg      # Now create the wrapper script.
89864642e01fSmrg      func_verbose "creating $output"
898705b261ecSmrg
89884642e01fSmrg      # Quote the relink command for shipping.
89894642e01fSmrg      if test -n "$relink_command"; then
89904642e01fSmrg	# Preserve any variables that may affect compiler behavior
89914642e01fSmrg	for var in $variables_saved_for_relink; do
89924642e01fSmrg	  if eval test -z \"\${$var+set}\"; then
89934642e01fSmrg	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
89944642e01fSmrg	  elif eval var_value=\$$var; test -z "$var_value"; then
89954642e01fSmrg	    relink_command="$var=; export $var; $relink_command"
899605b261ecSmrg	  else
89974642e01fSmrg	    func_quote_for_eval "$var_value"
89984642e01fSmrg	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
899905b261ecSmrg	  fi
90004642e01fSmrg	done
90014642e01fSmrg	relink_command="(cd `pwd`; $relink_command)"
90026747b715Smrg	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
90034642e01fSmrg      fi
90044642e01fSmrg
90054642e01fSmrg      # Only actually do things if not in dry run mode.
90064642e01fSmrg      $opt_dry_run || {
90074642e01fSmrg	# win32 will think the script is a binary if it has
90084642e01fSmrg	# a .exe suffix, so we strip it off here.
90094642e01fSmrg	case $output in
90104642e01fSmrg	  *.exe) func_stripname '' '.exe' "$output"
90114642e01fSmrg	         output=$func_stripname_result ;;
90124642e01fSmrg	esac
90134642e01fSmrg	# test for cygwin because mv fails w/o .exe extensions
90144642e01fSmrg	case $host in
90154642e01fSmrg	  *cygwin*)
90164642e01fSmrg	    exeext=.exe
90174642e01fSmrg	    func_stripname '' '.exe' "$outputname"
90184642e01fSmrg	    outputname=$func_stripname_result ;;
90194642e01fSmrg	  *) exeext= ;;
902005b261ecSmrg	esac
90214642e01fSmrg	case $host in
90224642e01fSmrg	  *cygwin* | *mingw* )
90234642e01fSmrg	    func_dirname_and_basename "$output" "" "."
90244642e01fSmrg	    output_name=$func_basename_result
90254642e01fSmrg	    output_path=$func_dirname_result
90264642e01fSmrg	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
90274642e01fSmrg	    cwrapper="$output_path/$output_name.exe"
90284642e01fSmrg	    $RM $cwrappersource $cwrapper
90294642e01fSmrg	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
90304642e01fSmrg
90314642e01fSmrg	    func_emit_cwrapperexe_src > $cwrappersource
90324642e01fSmrg
90334642e01fSmrg	    # The wrapper executable is built using the $host compiler,
90344642e01fSmrg	    # because it contains $host paths and files. If cross-
90354642e01fSmrg	    # compiling, it, like the target executable, must be
90364642e01fSmrg	    # executed on the $host or under an emulation environment.
90374642e01fSmrg	    $opt_dry_run || {
90384642e01fSmrg	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
90394642e01fSmrg	      $STRIP $cwrapper
90404642e01fSmrg	    }
904105b261ecSmrg
90424642e01fSmrg	    # Now, create the wrapper script for func_source use:
90434642e01fSmrg	    func_ltwrapper_scriptname $cwrapper
90444642e01fSmrg	    $RM $func_ltwrapper_scriptname_result
90454642e01fSmrg	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
90464642e01fSmrg	    $opt_dry_run || {
90474642e01fSmrg	      # note: this script will not be executed, so do not chmod.
90484642e01fSmrg	      if test "x$build" = "x$host" ; then
90494642e01fSmrg		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
90504642e01fSmrg	      else
90514642e01fSmrg		func_emit_wrapper no > $func_ltwrapper_scriptname_result
90524642e01fSmrg	      fi
90534642e01fSmrg	    }
90544642e01fSmrg	  ;;
90554642e01fSmrg	  * )
90564642e01fSmrg	    $RM $output
90574642e01fSmrg	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
905805b261ecSmrg
90594642e01fSmrg	    func_emit_wrapper no > $output
90604642e01fSmrg	    chmod +x $output
90614642e01fSmrg	  ;;
90624642e01fSmrg	esac
90634642e01fSmrg      }
90644642e01fSmrg      exit $EXIT_SUCCESS
90654642e01fSmrg      ;;
90664642e01fSmrg    esac
906705b261ecSmrg
90684642e01fSmrg    # See if we need to build an old-fashioned archive.
90694642e01fSmrg    for oldlib in $oldlibs; do
907005b261ecSmrg
90714642e01fSmrg      if test "$build_libtool_libs" = convenience; then
90724642e01fSmrg	oldobjs="$libobjs_save $symfileobj"
90734642e01fSmrg	addlibs="$convenience"
90744642e01fSmrg	build_libtool_libs=no
90754642e01fSmrg      else
90764642e01fSmrg	if test "$build_libtool_libs" = module; then
90774642e01fSmrg	  oldobjs="$libobjs_save"
90784642e01fSmrg	  build_libtool_libs=no
90794642e01fSmrg	else
90804642e01fSmrg	  oldobjs="$old_deplibs $non_pic_objects"
90814642e01fSmrg	  if test "$preload" = yes && test -f "$symfileobj"; then
90826747b715Smrg	    func_append oldobjs " $symfileobj"
90834642e01fSmrg	  fi
90844642e01fSmrg	fi
90854642e01fSmrg	addlibs="$old_convenience"
908605b261ecSmrg      fi
908705b261ecSmrg
90884642e01fSmrg      if test -n "$addlibs"; then
90894642e01fSmrg	gentop="$output_objdir/${outputname}x"
90906747b715Smrg	func_append generated " $gentop"
909105b261ecSmrg
90924642e01fSmrg	func_extract_archives $gentop $addlibs
90936747b715Smrg	func_append oldobjs " $func_extract_archives_result"
90944642e01fSmrg      fi
909505b261ecSmrg
90964642e01fSmrg      # Do each command in the archive commands.
90974642e01fSmrg      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
90984642e01fSmrg	cmds=$old_archive_from_new_cmds
90994642e01fSmrg      else
910005b261ecSmrg
91014642e01fSmrg	# Add any objects from preloaded convenience libraries
91024642e01fSmrg	if test -n "$dlprefiles"; then
91034642e01fSmrg	  gentop="$output_objdir/${outputname}x"
91046747b715Smrg	  func_append generated " $gentop"
910505b261ecSmrg
91064642e01fSmrg	  func_extract_archives $gentop $dlprefiles
91076747b715Smrg	  func_append oldobjs " $func_extract_archives_result"
91084642e01fSmrg	fi
910905b261ecSmrg
91104642e01fSmrg	# POSIX demands no paths to be encoded in archives.  We have
91114642e01fSmrg	# to avoid creating archives with duplicate basenames if we
91124642e01fSmrg	# might have to extract them afterwards, e.g., when creating a
91134642e01fSmrg	# static archive out of a convenience library, or when linking
91144642e01fSmrg	# the entirety of a libtool archive into another (currently
91154642e01fSmrg	# not supported by libtool).
91164642e01fSmrg	if (for obj in $oldobjs
91174642e01fSmrg	    do
91184642e01fSmrg	      func_basename "$obj"
91194642e01fSmrg	      $ECHO "$func_basename_result"
91204642e01fSmrg	    done | sort | sort -uc >/dev/null 2>&1); then
91214642e01fSmrg	  :
91224642e01fSmrg	else
91236747b715Smrg	  echo "copying selected object files to avoid basename conflicts..."
91244642e01fSmrg	  gentop="$output_objdir/${outputname}x"
91256747b715Smrg	  func_append generated " $gentop"
91264642e01fSmrg	  func_mkdir_p "$gentop"
91274642e01fSmrg	  save_oldobjs=$oldobjs
91284642e01fSmrg	  oldobjs=
91294642e01fSmrg	  counter=1
91304642e01fSmrg	  for obj in $save_oldobjs
91314642e01fSmrg	  do
91324642e01fSmrg	    func_basename "$obj"
91334642e01fSmrg	    objbase="$func_basename_result"
91344642e01fSmrg	    case " $oldobjs " in
91354642e01fSmrg	    " ") oldobjs=$obj ;;
91364642e01fSmrg	    *[\ /]"$objbase "*)
91374642e01fSmrg	      while :; do
91384642e01fSmrg		# Make sure we don't pick an alternate name that also
91394642e01fSmrg		# overlaps.
91404642e01fSmrg		newobj=lt$counter-$objbase
91414642e01fSmrg		func_arith $counter + 1
91424642e01fSmrg		counter=$func_arith_result
91434642e01fSmrg		case " $oldobjs " in
91444642e01fSmrg		*[\ /]"$newobj "*) ;;
91454642e01fSmrg		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
91464642e01fSmrg		esac
91474642e01fSmrg	      done
91484642e01fSmrg	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
91496747b715Smrg	      func_append oldobjs " $gentop/$newobj"
91504642e01fSmrg	      ;;
91516747b715Smrg	    *) func_append oldobjs " $obj" ;;
91524642e01fSmrg	    esac
915305b261ecSmrg	  done
915405b261ecSmrg	fi
91554642e01fSmrg	eval cmds=\"$old_archive_cmds\"
915605b261ecSmrg
91574642e01fSmrg	func_len " $cmds"
91584642e01fSmrg	len=$func_len_result
91594642e01fSmrg	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
91604642e01fSmrg	  cmds=$old_archive_cmds
91616747b715Smrg	elif test -n "$archiver_list_spec"; then
91626747b715Smrg	  func_verbose "using command file archive linking..."
91636747b715Smrg	  for obj in $oldobjs
91646747b715Smrg	  do
91656747b715Smrg	    func_to_tool_file "$obj"
91666747b715Smrg	    $ECHO "$func_to_tool_file_result"
91676747b715Smrg	  done > $output_objdir/$libname.libcmd
91686747b715Smrg	  func_to_tool_file "$output_objdir/$libname.libcmd"
91696747b715Smrg	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
91706747b715Smrg	  cmds=$old_archive_cmds
91714642e01fSmrg	else
91724642e01fSmrg	  # the command line is too long to link in one step, link in parts
91734642e01fSmrg	  func_verbose "using piecewise archive linking..."
91744642e01fSmrg	  save_RANLIB=$RANLIB
91754642e01fSmrg	  RANLIB=:
91764642e01fSmrg	  objlist=
91774642e01fSmrg	  concat_cmds=
91784642e01fSmrg	  save_oldobjs=$oldobjs
91794642e01fSmrg	  oldobjs=
91804642e01fSmrg	  # Is there a better way of finding the last object in the list?
91814642e01fSmrg	  for obj in $save_oldobjs
91824642e01fSmrg	  do
91834642e01fSmrg	    last_oldobj=$obj
91844642e01fSmrg	  done
91854642e01fSmrg	  eval test_cmds=\"$old_archive_cmds\"
91864642e01fSmrg	  func_len " $test_cmds"
91874642e01fSmrg	  len0=$func_len_result
91884642e01fSmrg	  len=$len0
91894642e01fSmrg	  for obj in $save_oldobjs
91904642e01fSmrg	  do
91914642e01fSmrg	    func_len " $obj"
91924642e01fSmrg	    func_arith $len + $func_len_result
91934642e01fSmrg	    len=$func_arith_result
91944642e01fSmrg	    func_append objlist " $obj"
91954642e01fSmrg	    if test "$len" -lt "$max_cmd_len"; then
91964642e01fSmrg	      :
91974642e01fSmrg	    else
91984642e01fSmrg	      # the above command should be used before it gets too long
91994642e01fSmrg	      oldobjs=$objlist
92004642e01fSmrg	      if test "$obj" = "$last_oldobj" ; then
92014642e01fSmrg		RANLIB=$save_RANLIB
92024642e01fSmrg	      fi
92034642e01fSmrg	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
92044642e01fSmrg	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
92054642e01fSmrg	      objlist=
92064642e01fSmrg	      len=$len0
92074642e01fSmrg	    fi
92084642e01fSmrg	  done
92094642e01fSmrg	  RANLIB=$save_RANLIB
92104642e01fSmrg	  oldobjs=$objlist
92114642e01fSmrg	  if test "X$oldobjs" = "X" ; then
92124642e01fSmrg	    eval cmds=\"\$concat_cmds\"
92134642e01fSmrg	  else
92144642e01fSmrg	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
92154642e01fSmrg	  fi
92164642e01fSmrg	fi
92174642e01fSmrg      fi
92184642e01fSmrg      func_execute_cmds "$cmds" 'exit $?'
921905b261ecSmrg    done
922005b261ecSmrg
92214642e01fSmrg    test -n "$generated" && \
92224642e01fSmrg      func_show_eval "${RM}r$generated"
922305b261ecSmrg
92244642e01fSmrg    # Now create the libtool archive.
92254642e01fSmrg    case $output in
92264642e01fSmrg    *.la)
92274642e01fSmrg      old_library=
92284642e01fSmrg      test "$build_old_libs" = yes && old_library="$libname.$libext"
92294642e01fSmrg      func_verbose "creating $output"
923005b261ecSmrg
92314642e01fSmrg      # Preserve any variables that may affect compiler behavior
92324642e01fSmrg      for var in $variables_saved_for_relink; do
92334642e01fSmrg	if eval test -z \"\${$var+set}\"; then
92344642e01fSmrg	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
92354642e01fSmrg	elif eval var_value=\$$var; test -z "$var_value"; then
92364642e01fSmrg	  relink_command="$var=; export $var; $relink_command"
923705b261ecSmrg	else
92384642e01fSmrg	  func_quote_for_eval "$var_value"
92394642e01fSmrg	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
924005b261ecSmrg	fi
92414642e01fSmrg      done
92424642e01fSmrg      # Quote the link command for shipping.
92434642e01fSmrg      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
92446747b715Smrg      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
92454642e01fSmrg      if test "$hardcode_automatic" = yes ; then
92464642e01fSmrg	relink_command=
92474642e01fSmrg      fi
924805b261ecSmrg
92494642e01fSmrg      # Only create the output if not a dry run.
92504642e01fSmrg      $opt_dry_run || {
92514642e01fSmrg	for installed in no yes; do
92524642e01fSmrg	  if test "$installed" = yes; then
92534642e01fSmrg	    if test -z "$install_libdir"; then
92544642e01fSmrg	      break
92554642e01fSmrg	    fi
92564642e01fSmrg	    output="$output_objdir/$outputname"i
92574642e01fSmrg	    # Replace all uninstalled libtool libraries with the installed ones
92584642e01fSmrg	    newdependency_libs=
92594642e01fSmrg	    for deplib in $dependency_libs; do
92604642e01fSmrg	      case $deplib in
92614642e01fSmrg	      *.la)
92624642e01fSmrg		func_basename "$deplib"
92634642e01fSmrg		name="$func_basename_result"
92644642e01fSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
92654642e01fSmrg		test -z "$libdir" && \
92664642e01fSmrg		  func_fatal_error "\`$deplib' is not a valid libtool archive"
92676747b715Smrg		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
92686747b715Smrg		;;
92696747b715Smrg	      -L*)
92706747b715Smrg		func_stripname -L '' "$deplib"
92716747b715Smrg		func_replace_sysroot "$func_stripname_result"
92726747b715Smrg		func_append newdependency_libs " -L$func_replace_sysroot_result"
92734642e01fSmrg		;;
92746747b715Smrg	      -R*)
92756747b715Smrg		func_stripname -R '' "$deplib"
92766747b715Smrg		func_replace_sysroot "$func_stripname_result"
92776747b715Smrg		func_append newdependency_libs " -R$func_replace_sysroot_result"
92786747b715Smrg		;;
92796747b715Smrg	      *) func_append newdependency_libs " $deplib" ;;
92804642e01fSmrg	      esac
92814642e01fSmrg	    done
92824642e01fSmrg	    dependency_libs="$newdependency_libs"
92834642e01fSmrg	    newdlfiles=
92844642e01fSmrg
92854642e01fSmrg	    for lib in $dlfiles; do
92864642e01fSmrg	      case $lib in
92874642e01fSmrg	      *.la)
92884642e01fSmrg	        func_basename "$lib"
92894642e01fSmrg		name="$func_basename_result"
92904642e01fSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
92914642e01fSmrg		test -z "$libdir" && \
92924642e01fSmrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
92936747b715Smrg		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
92944642e01fSmrg		;;
92956747b715Smrg	      *) func_append newdlfiles " $lib" ;;
92964642e01fSmrg	      esac
92974642e01fSmrg	    done
92984642e01fSmrg	    dlfiles="$newdlfiles"
92994642e01fSmrg	    newdlprefiles=
93004642e01fSmrg	    for lib in $dlprefiles; do
93014642e01fSmrg	      case $lib in
93024642e01fSmrg	      *.la)
93034642e01fSmrg		# Only pass preopened files to the pseudo-archive (for
93044642e01fSmrg		# eventual linking with the app. that links it) if we
93054642e01fSmrg		# didn't already link the preopened objects directly into
93064642e01fSmrg		# the library:
93074642e01fSmrg		func_basename "$lib"
93084642e01fSmrg		name="$func_basename_result"
93094642e01fSmrg		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
93104642e01fSmrg		test -z "$libdir" && \
93114642e01fSmrg		  func_fatal_error "\`$lib' is not a valid libtool archive"
93126747b715Smrg		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
93134642e01fSmrg		;;
93144642e01fSmrg	      esac
93154642e01fSmrg	    done
93164642e01fSmrg	    dlprefiles="$newdlprefiles"
93174642e01fSmrg	  else
93184642e01fSmrg	    newdlfiles=
93194642e01fSmrg	    for lib in $dlfiles; do
93204642e01fSmrg	      case $lib in
93214642e01fSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
93224642e01fSmrg		*) abs=`pwd`"/$lib" ;;
93234642e01fSmrg	      esac
93246747b715Smrg	      func_append newdlfiles " $abs"
93254642e01fSmrg	    done
93264642e01fSmrg	    dlfiles="$newdlfiles"
93274642e01fSmrg	    newdlprefiles=
93284642e01fSmrg	    for lib in $dlprefiles; do
93294642e01fSmrg	      case $lib in
93304642e01fSmrg		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
93314642e01fSmrg		*) abs=`pwd`"/$lib" ;;
93324642e01fSmrg	      esac
93336747b715Smrg	      func_append newdlprefiles " $abs"
93344642e01fSmrg	    done
93354642e01fSmrg	    dlprefiles="$newdlprefiles"
93364642e01fSmrg	  fi
93374642e01fSmrg	  $RM $output
93384642e01fSmrg	  # place dlname in correct position for cygwin
93396747b715Smrg	  # In fact, it would be nice if we could use this code for all target
93406747b715Smrg	  # systems that can't hard-code library paths into their executables
93416747b715Smrg	  # and that have no shared library path variable independent of PATH,
93426747b715Smrg	  # but it turns out we can't easily determine that from inspecting
93436747b715Smrg	  # libtool variables, so we have to hard-code the OSs to which it
93446747b715Smrg	  # applies here; at the moment, that means platforms that use the PE
93456747b715Smrg	  # object format with DLL files.  See the long comment at the top of
93466747b715Smrg	  # tests/bindir.at for full details.
93474642e01fSmrg	  tdlname=$dlname
93484642e01fSmrg	  case $host,$output,$installed,$module,$dlname in
93496747b715Smrg	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
93506747b715Smrg	      # If a -bindir argument was supplied, place the dll there.
93516747b715Smrg	      if test "x$bindir" != x ;
93526747b715Smrg	      then
93536747b715Smrg		func_relative_path "$install_libdir" "$bindir"
93546747b715Smrg		tdlname=$func_relative_path_result$dlname
93556747b715Smrg	      else
93566747b715Smrg		# Otherwise fall back on heuristic.
93576747b715Smrg		tdlname=../bin/$dlname
93586747b715Smrg	      fi
93596747b715Smrg	      ;;
93604642e01fSmrg	  esac
93614642e01fSmrg	  $ECHO > $output "\
93624642e01fSmrg# $outputname - a libtool library file
93634642e01fSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
93644642e01fSmrg#
93654642e01fSmrg# Please DO NOT delete this file!
93664642e01fSmrg# It is necessary for linking the library.
936705b261ecSmrg
93684642e01fSmrg# The name that we can dlopen(3).
93694642e01fSmrgdlname='$tdlname'
937005b261ecSmrg
93714642e01fSmrg# Names of this library.
93724642e01fSmrglibrary_names='$library_names'
937305b261ecSmrg
93744642e01fSmrg# The name of the static archive.
93754642e01fSmrgold_library='$old_library'
937605b261ecSmrg
93774642e01fSmrg# Linker flags that can not go in dependency_libs.
93784642e01fSmrginherited_linker_flags='$new_inherited_linker_flags'
937905b261ecSmrg
93804642e01fSmrg# Libraries that this one depends upon.
93814642e01fSmrgdependency_libs='$dependency_libs'
938205b261ecSmrg
93834642e01fSmrg# Names of additional weak libraries provided by this library
93844642e01fSmrgweak_library_names='$weak_libs'
938505b261ecSmrg
93864642e01fSmrg# Version information for $libname.
93874642e01fSmrgcurrent=$current
93884642e01fSmrgage=$age
93894642e01fSmrgrevision=$revision
939005b261ecSmrg
93914642e01fSmrg# Is this an already installed library?
93924642e01fSmrginstalled=$installed
939305b261ecSmrg
93944642e01fSmrg# Should we warn about portability when linking against -modules?
93954642e01fSmrgshouldnotlink=$module
939605b261ecSmrg
93974642e01fSmrg# Files to dlopen/dlpreopen
93984642e01fSmrgdlopen='$dlfiles'
93994642e01fSmrgdlpreopen='$dlprefiles'
940005b261ecSmrg
94014642e01fSmrg# Directory that this library needs to be installed in:
94024642e01fSmrglibdir='$install_libdir'"
94034642e01fSmrg	  if test "$installed" = no && test "$need_relink" = yes; then
94044642e01fSmrg	    $ECHO >> $output "\
94054642e01fSmrgrelink_command=\"$relink_command\""
94064642e01fSmrg	  fi
94074642e01fSmrg	done
94084642e01fSmrg      }
940905b261ecSmrg
94104642e01fSmrg      # Do a symbolic link so that the libtool archive can be found in
94114642e01fSmrg      # LD_LIBRARY_PATH before the program is installed.
94124642e01fSmrg      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
94134642e01fSmrg      ;;
94144642e01fSmrg    esac
94154642e01fSmrg    exit $EXIT_SUCCESS
94164642e01fSmrg}
941705b261ecSmrg
94186747b715Smrg{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
94194642e01fSmrg    func_mode_link ${1+"$@"}
942005b261ecSmrg
942105b261ecSmrg
94224642e01fSmrg# func_mode_uninstall arg...
94234642e01fSmrgfunc_mode_uninstall ()
94244642e01fSmrg{
94254642e01fSmrg    $opt_debug
94264642e01fSmrg    RM="$nonopt"
942705b261ecSmrg    files=
942805b261ecSmrg    rmforce=
942905b261ecSmrg    exit_status=0
943005b261ecSmrg
943105b261ecSmrg    # This variable tells wrapper scripts just to set variables rather
943205b261ecSmrg    # than running their programs.
943305b261ecSmrg    libtool_install_magic="$magic"
943405b261ecSmrg
943505b261ecSmrg    for arg
943605b261ecSmrg    do
943705b261ecSmrg      case $arg in
94386747b715Smrg      -f) func_append RM " $arg"; rmforce=yes ;;
94396747b715Smrg      -*) func_append RM " $arg" ;;
94406747b715Smrg      *) func_append files " $arg" ;;
944105b261ecSmrg      esac
944205b261ecSmrg    done
944305b261ecSmrg
94444642e01fSmrg    test -z "$RM" && \
94454642e01fSmrg      func_fatal_help "you must specify an RM program"
944605b261ecSmrg
944705b261ecSmrg    rmdirs=
944805b261ecSmrg
944905b261ecSmrg    for file in $files; do
94504642e01fSmrg      func_dirname "$file" "" "."
94514642e01fSmrg      dir="$func_dirname_result"
94524642e01fSmrg      if test "X$dir" = X.; then
94536747b715Smrg	odir="$objdir"
945405b261ecSmrg      else
94556747b715Smrg	odir="$dir/$objdir"
945605b261ecSmrg      fi
94574642e01fSmrg      func_basename "$file"
94584642e01fSmrg      name="$func_basename_result"
94596747b715Smrg      test "$opt_mode" = uninstall && odir="$dir"
946005b261ecSmrg
94616747b715Smrg      # Remember odir for removal later, being careful to avoid duplicates
94626747b715Smrg      if test "$opt_mode" = clean; then
946305b261ecSmrg	case " $rmdirs " in
94646747b715Smrg	  *" $odir "*) ;;
94656747b715Smrg	  *) func_append rmdirs " $odir" ;;
946605b261ecSmrg	esac
946705b261ecSmrg      fi
946805b261ecSmrg
946905b261ecSmrg      # Don't error if the file doesn't exist and rm -f was used.
94704642e01fSmrg      if { test -L "$file"; } >/dev/null 2>&1 ||
94714642e01fSmrg	 { test -h "$file"; } >/dev/null 2>&1 ||
94724642e01fSmrg	 test -f "$file"; then
947305b261ecSmrg	:
947405b261ecSmrg      elif test -d "$file"; then
947505b261ecSmrg	exit_status=1
947605b261ecSmrg	continue
947705b261ecSmrg      elif test "$rmforce" = yes; then
947805b261ecSmrg	continue
947905b261ecSmrg      fi
948005b261ecSmrg
948105b261ecSmrg      rmfiles="$file"
948205b261ecSmrg
948305b261ecSmrg      case $name in
948405b261ecSmrg      *.la)
948505b261ecSmrg	# Possibly a libtool archive, so verify it.
94864642e01fSmrg	if func_lalib_p "$file"; then
94874642e01fSmrg	  func_source $dir/$name
948805b261ecSmrg
948905b261ecSmrg	  # Delete the libtool libraries and symlinks.
949005b261ecSmrg	  for n in $library_names; do
94916747b715Smrg	    func_append rmfiles " $odir/$n"
949205b261ecSmrg	  done
94936747b715Smrg	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
949405b261ecSmrg
94956747b715Smrg	  case "$opt_mode" in
949605b261ecSmrg	  clean)
94976747b715Smrg	    case " $library_names " in
949805b261ecSmrg	    *" $dlname "*) ;;
94996747b715Smrg	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
950005b261ecSmrg	    esac
95016747b715Smrg	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
950205b261ecSmrg	    ;;
950305b261ecSmrg	  uninstall)
950405b261ecSmrg	    if test -n "$library_names"; then
950505b261ecSmrg	      # Do each command in the postuninstall commands.
95064642e01fSmrg	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
950705b261ecSmrg	    fi
950805b261ecSmrg
950905b261ecSmrg	    if test -n "$old_library"; then
951005b261ecSmrg	      # Do each command in the old_postuninstall commands.
95114642e01fSmrg	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
951205b261ecSmrg	    fi
951305b261ecSmrg	    # FIXME: should reinstall the best remaining shared library.
951405b261ecSmrg	    ;;
951505b261ecSmrg	  esac
951605b261ecSmrg	fi
951705b261ecSmrg	;;
951805b261ecSmrg
951905b261ecSmrg      *.lo)
952005b261ecSmrg	# Possibly a libtool object, so verify it.
95214642e01fSmrg	if func_lalib_p "$file"; then
952205b261ecSmrg
952305b261ecSmrg	  # Read the .lo file
95244642e01fSmrg	  func_source $dir/$name
952505b261ecSmrg
952605b261ecSmrg	  # Add PIC object to the list of files to remove.
95274642e01fSmrg	  if test -n "$pic_object" &&
95284642e01fSmrg	     test "$pic_object" != none; then
95296747b715Smrg	    func_append rmfiles " $dir/$pic_object"
953005b261ecSmrg	  fi
953105b261ecSmrg
953205b261ecSmrg	  # Add non-PIC object to the list of files to remove.
95334642e01fSmrg	  if test -n "$non_pic_object" &&
95344642e01fSmrg	     test "$non_pic_object" != none; then
95356747b715Smrg	    func_append rmfiles " $dir/$non_pic_object"
953605b261ecSmrg	  fi
953705b261ecSmrg	fi
953805b261ecSmrg	;;
953905b261ecSmrg
954005b261ecSmrg      *)
95416747b715Smrg	if test "$opt_mode" = clean ; then
954205b261ecSmrg	  noexename=$name
954305b261ecSmrg	  case $file in
954405b261ecSmrg	  *.exe)
95454642e01fSmrg	    func_stripname '' '.exe' "$file"
95464642e01fSmrg	    file=$func_stripname_result
95474642e01fSmrg	    func_stripname '' '.exe' "$name"
95484642e01fSmrg	    noexename=$func_stripname_result
954905b261ecSmrg	    # $file with .exe has already been added to rmfiles,
955005b261ecSmrg	    # add $file without .exe
95516747b715Smrg	    func_append rmfiles " $file"
955205b261ecSmrg	    ;;
955305b261ecSmrg	  esac
955405b261ecSmrg	  # Do a test to see if this is a libtool program.
95554642e01fSmrg	  if func_ltwrapper_p "$file"; then
95564642e01fSmrg	    if func_ltwrapper_executable_p "$file"; then
95574642e01fSmrg	      func_ltwrapper_scriptname "$file"
95584642e01fSmrg	      relink_command=
95594642e01fSmrg	      func_source $func_ltwrapper_scriptname_result
95606747b715Smrg	      func_append rmfiles " $func_ltwrapper_scriptname_result"
95614642e01fSmrg	    else
95624642e01fSmrg	      relink_command=
95634642e01fSmrg	      func_source $dir/$noexename
95644642e01fSmrg	    fi
956505b261ecSmrg
956605b261ecSmrg	    # note $name still contains .exe if it was in $file originally
956705b261ecSmrg	    # as does the version of $file that was added into $rmfiles
95686747b715Smrg	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
956905b261ecSmrg	    if test "$fast_install" = yes && test -n "$relink_command"; then
95706747b715Smrg	      func_append rmfiles " $odir/lt-$name"
957105b261ecSmrg	    fi
957205b261ecSmrg	    if test "X$noexename" != "X$name" ; then
95736747b715Smrg	      func_append rmfiles " $odir/lt-${noexename}.c"
957405b261ecSmrg	    fi
957505b261ecSmrg	  fi
957605b261ecSmrg	fi
957705b261ecSmrg	;;
957805b261ecSmrg      esac
95794642e01fSmrg      func_show_eval "$RM $rmfiles" 'exit_status=1'
958005b261ecSmrg    done
958105b261ecSmrg
958205b261ecSmrg    # Try to remove the ${objdir}s in the directories where we deleted files
958305b261ecSmrg    for dir in $rmdirs; do
958405b261ecSmrg      if test -d "$dir"; then
95854642e01fSmrg	func_show_eval "rmdir $dir >/dev/null 2>&1"
958605b261ecSmrg      fi
958705b261ecSmrg    done
958805b261ecSmrg
958905b261ecSmrg    exit $exit_status
95904642e01fSmrg}
959105b261ecSmrg
95926747b715Smrg{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
95934642e01fSmrg    func_mode_uninstall ${1+"$@"}
959405b261ecSmrg
95956747b715Smrgtest -z "$opt_mode" && {
95964642e01fSmrg  help="$generic_help"
95974642e01fSmrg  func_fatal_help "you must specify a MODE"
95984642e01fSmrg}
95994642e01fSmrg
96004642e01fSmrgtest -z "$exec_cmd" && \
96016747b715Smrg  func_fatal_help "invalid operation mode \`$opt_mode'"
960205b261ecSmrg
960305b261ecSmrgif test -n "$exec_cmd"; then
96044642e01fSmrg  eval exec "$exec_cmd"
960505b261ecSmrg  exit $EXIT_FAILURE
960605b261ecSmrgfi
960705b261ecSmrg
96084642e01fSmrgexit $exit_status
960905b261ecSmrg
961005b261ecSmrg
961105b261ecSmrg# The TAGs below are defined such that we never get into a situation
961205b261ecSmrg# in which we disable both kinds of libraries.  Given conflicting
961305b261ecSmrg# choices, we go for a static library, that is the most portable,
961405b261ecSmrg# since we can't tell whether shared libraries were disabled because
961505b261ecSmrg# the user asked for that or because the platform doesn't support
961605b261ecSmrg# them.  This is particularly important on AIX, because we don't
961705b261ecSmrg# support having both static and shared libraries enabled at the same
961805b261ecSmrg# time on that platform, so we default to a shared-only configuration.
961905b261ecSmrg# If a disable-shared tag is given, we'll fallback to a static-only
962005b261ecSmrg# configuration.  But we'll never go from static-only to shared-only.
962105b261ecSmrg
962205b261ecSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
96234642e01fSmrgbuild_libtool_libs=no
96244642e01fSmrgbuild_old_libs=yes
962505b261ecSmrg# ### END LIBTOOL TAG CONFIG: disable-shared
962605b261ecSmrg
962705b261ecSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static
96284642e01fSmrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
962905b261ecSmrg# ### END LIBTOOL TAG CONFIG: disable-static
963005b261ecSmrg
963105b261ecSmrg# Local Variables:
963205b261ecSmrg# mode:shell-script
963305b261ecSmrg# sh-indentation:2
963405b261ecSmrg# End:
96354642e01fSmrg# vi:sw=2
96364642e01fSmrg
9637