1885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# libtool (GNU libtool) 2.4.2
3885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
4885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
6885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
7885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This is free software; see the source for copying conditions.  There is NO
8885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
10885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# GNU Libtool is free software; you can redistribute it and/or modify
11885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# it under the terms of the GNU General Public License as published by
12885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# the Free Software Foundation; either version 2 of the License, or
13885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# (at your option) any later version.
14885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
15885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# As a special exception to the GNU General Public License,
16885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# if you distribute this file as part of a program or library that
17885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# is built using GNU Libtool, you may include this file under the
18885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# same distribution terms that you use for the rest of that program.
19885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
20885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# GNU Libtool is distributed in the hope that it will be useful, but
21885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# WITHOUT ANY WARRANTY; without even the implied warranty of
22885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
23885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# General Public License for more details.
24885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
25885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# You should have received a copy of the GNU General Public License
26885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# along with GNU Libtool; see the file COPYING.  If not, a copy
27885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# can be downloaded from http://www.gnu.org/licenses/gpl.html,
28885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# or obtained by writing to the Free Software Foundation, Inc.,
29885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
30885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
31885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Usage: $progname [OPTION]... [MODE-ARG]...
32885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
33885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Provide generalized library-building support services.
34885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
35885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#       --config             show all configuration variables
36885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#       --debug              enable verbose shell tracing
37885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#   -n, --dry-run            display commands without modifying any files
38885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#       --features           display basic configuration information and exit
39885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#       --mode=MODE          use operation mode MODE
40885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#       --preserve-dup-deps  don't remove duplicate dependency libraries
41885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#       --quiet, --silent    don't print informational messages
42885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#       --no-quiet, --no-silent
43885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#                            print informational messages (default)
44885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#       --no-warn            don't display warning messages
45885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#       --tag=TAG            use configuration variables from tag TAG
46885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#   -v, --verbose            print more informational messages than default
47885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#       --no-verbose         don't print the extra informational messages
48885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#       --version            print version information
49885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#   -h, --help, --help-all   print short, long, or detailed help message
50885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
51885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# MODE must be one of the following:
52885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
53885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#         clean              remove files from the build directory
54885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#         compile            compile a source file into a libtool object
55885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#         execute            automatically set library path, then run a program
56885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#         finish             complete the installation of libtool libraries
57885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#         install            install libraries or executables
58885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#         link               create a library or an executable
59885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#         uninstall          remove libraries from an installed directory
60885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
61885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# MODE-ARGS vary depending on the MODE.  When passed as first option,
62885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
63885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
64885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
65885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# When reporting a bug, please describe a test case to reproduce it and
66885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# include the following information:
67885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
68885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#         host-triplet:	$host
69885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#         shell:		$SHELL
70885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#         compiler:		$LTCC
71885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#         compiler flags:		$LTCFLAGS
72885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#         linker:		$LD (gnu? $with_gnu_ld)
73885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#         $progname:	(GNU libtool) 2.4.2
74885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#         automake:	$automake_version
75885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#         autoconf:	$autoconf_version
76885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
77885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Report bugs to <bug-libtool@gnu.org>.
78885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
79885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# General help using GNU software: <http://www.gnu.org/gethelp/>.
80885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
81885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgPROGRAM=libtool
82885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgPACKAGE=libtool
83885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgVERSION=2.4.2
84885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgTIMESTAMP=""
85885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgpackage_revision=1.3337
86885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
87885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Be Bourne compatible
88885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
89885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  emulate sh
90885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  NULLCMD=:
91885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
92885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # is contrary to our usage.  Disable this feature.
93885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  alias -g '${1+"$@"}'='"$@"'
94885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  setopt NO_GLOB_SUBST
95885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgelse
96885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
97885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfi
98885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgBIN_SH=xpg4; export BIN_SH # for Tru64
99885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgDUALCASE=1; export DUALCASE # for MKS sh
100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# A function that is used when there is no print builtin or printf.
102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_fallback_echo ()
103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  eval 'cat <<_LTECHO_EOF
105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$1
106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org_LTECHO_EOF'
107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# NLS nuisances: We save the old values to restore during execute mode.
110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_user_locale=
111885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_safe_locale=
112885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
113885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgdo
114885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  eval "if test \"\${$lt_var+set}\" = set; then
115885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          save_$lt_var=\$$lt_var
116885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          $lt_var=C
117885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  export $lt_var
118885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
119885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
120885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi"
121885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgdone
122885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgLC_ALL=C
123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgLANGUAGE=C
124885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgexport LANGUAGE LC_ALL
125885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
126885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$lt_unset CDPATH
127885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
128885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
129885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
130885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# is ksh but when the shell is invoked as "sh" and the current value of
131885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# the _XPG environment variable is not equal to 1 (one), the special
132885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# positional parameter $0, within a function call, is the name of the
133885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# function.
134885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgprogpath="$0"
135885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
136885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
137885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
138885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org: ${CP="cp -f"}
139885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
140885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org: ${MAKE="make"}
141885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org: ${MKDIR="mkdir"}
142885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org: ${MV="mv -f"}
143885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org: ${RM="rm -f"}
144885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
145885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org: ${Xsed="$SED -e 1s/^X//"}
146885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
147885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Global variables:
148885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEXIT_SUCCESS=0
149885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEXIT_FAILURE=1
150885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
151885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
152885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
153885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgexit_status=$EXIT_SUCCESS
154885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
155885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Make sure IFS has a sensible default
156885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_nl='
157885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org'
158885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgIFS=" 	$lt_nl"
159885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
160885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgdirname="s,/[^/]*$,,"
161885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgbasename="s,^.*/,,"
162885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
163885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_dirname file append nondir_replacement
164885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
165885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# otherwise set result to NONDIR_REPLACEMENT.
166885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_dirname ()
167885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
168885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
169885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "X$func_dirname_result" = "X${1}"; then
170885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_dirname_result="${3}"
171885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    else
172885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_dirname_result="$func_dirname_result${2}"
173885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
174885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_dirname may be replaced by extended shell implementation
175885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
176885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
177885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_basename file
178885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_basename ()
179885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
180885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
181885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_basename may be replaced by extended shell implementation
182885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
183885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
184885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_dirname_and_basename file append nondir_replacement
185885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# perform func_basename and func_dirname in a single function
186885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# call:
187885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#   dirname:  Compute the dirname of FILE.  If nonempty,
188885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#             add APPEND to the result, otherwise set result
189885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#             to NONDIR_REPLACEMENT.
190885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#             value returned in "$func_dirname_result"
191885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#   basename: Compute filename of FILE.
192885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#             value retuned in "$func_basename_result"
193885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Implementation must be kept synchronized with func_dirname
194885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# and func_basename. For efficiency, we do not delegate to
195885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# those functions but instead duplicate the functionality here.
196885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_dirname_and_basename ()
197885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
198885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Extract subdirectory from the argument.
199885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
200885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "X$func_dirname_result" = "X${1}"; then
201885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_dirname_result="${3}"
202885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    else
203885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_dirname_result="$func_dirname_result${2}"
204885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
205885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
206885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_dirname_and_basename may be replaced by extended shell implementation
207885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
208885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
209885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_stripname prefix suffix name
210885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# strip PREFIX and SUFFIX off of NAME.
211885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# PREFIX and SUFFIX must not contain globbing or regex special
212885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# characters, hashes, percent signs, but SUFFIX may contain a leading
213885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# dot (in which case that matches only a dot).
214885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_strip_suffix prefix name
215885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_stripname ()
216885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
217885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case ${2} in
218885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
219885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
220885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
221885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_stripname may be replaced by extended shell implementation
222885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
223885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
224885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# These SED scripts presuppose an absolute path with a trailing slash.
225885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgpathcar='s,^/\([^/]*\).*$,\1,'
226885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgpathcdr='s,^/[^/]*,,'
227885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgremovedotparts=':dotsl
228885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		s@/\./@/@g
229885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		t dotsl
230885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		s,/\.$,/,'
231885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcollapseslashes='s@/\{1,\}@/@g'
232885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfinalslash='s,/*$,/,'
233885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
234885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_normal_abspath PATH
235885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Remove doubled-up and trailing slashes, "." path components,
236885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# and cancel out any ".." path components in PATH after making
237885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# it an absolute path.
238885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#             value returned in "$func_normal_abspath_result"
239885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_normal_abspath ()
240885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
241885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Start from root dir and reassemble the path.
242885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_normal_abspath_result=
243885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_normal_abspath_tpath=$1
244885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_normal_abspath_altnamespace=
245885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  case $func_normal_abspath_tpath in
246885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    "")
247885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Empty path, that just means $cwd.
248885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_stripname '' '/' "`pwd`"
249885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_normal_abspath_result=$func_stripname_result
250885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      return
251885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ;;
252885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # The next three entries are used to spot a run of precisely
253885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # two leading slashes without using negated character classes;
254885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # we take advantage of case's first-match behaviour.
255885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ///*)
256885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Unusual form of absolute path, do nothing.
257885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ;;
258885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    //*)
259885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Not necessarily an ordinary path; POSIX reserves leading '//'
260885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # and for example Cygwin uses it to access remote file shares
261885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # over CIFS/SMB, so we conserve a leading double slash if found.
262885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_normal_abspath_altnamespace=/
263885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ;;
264885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    /*)
265885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Absolute path, do nothing.
266885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ;;
267885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *)
268885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Relative path, prepend $cwd.
269885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
270885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ;;
271885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  esac
272885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Cancel out all the simple stuff to save iterations.  We also want
273885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # the path to end with a slash for ease of parsing, so make sure
274885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # there is one (and only one) here.
275885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
276885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
277885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  while :; do
278885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Processed it all yet?
279885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$func_normal_abspath_tpath" = / ; then
280885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # If we ascended to the root using ".." the result may be empty now.
281885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -z "$func_normal_abspath_result" ; then
282885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_normal_abspath_result=/
283885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
284885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      break
285885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
286885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
287885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        -e "$pathcar"`
288885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
289885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        -e "$pathcdr"`
290885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Figure out what to do with it
291885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case $func_normal_abspath_tcomponent in
292885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      "")
293885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        # Trailing empty path component, ignore it.
294885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
295885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ..)
296885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        # Parent dir; strip last assembled component from result.
297885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_dirname "$func_normal_abspath_result"
298885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_normal_abspath_result=$func_dirname_result
299885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
300885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *)
301885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        # Actual path component, append it.
302885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
303885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
304885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
305885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  done
306885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Restore leading double-slash if one was found on entry.
307885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
308885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
309885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
310885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_relative_path SRCDIR DSTDIR
311885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# generates a relative path from SRCDIR to DSTDIR, with a trailing
312885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# slash if non-empty, suitable for immediately appending a filename
313885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# without needing to append a separator.
314885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#             value returned in "$func_relative_path_result"
315885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_relative_path ()
316885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
317885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_relative_path_result=
318885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_normal_abspath "$1"
319885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_relative_path_tlibdir=$func_normal_abspath_result
320885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_normal_abspath "$2"
321885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_relative_path_tbindir=$func_normal_abspath_result
322885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
323885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Ascend the tree starting from libdir
324885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  while :; do
325885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # check if we have found a prefix of bindir
326885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case $func_relative_path_tbindir in
327885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      $func_relative_path_tlibdir)
328885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        # found an exact match
329885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_relative_path_tcancelled=
330885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        break
331885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        ;;
332885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      $func_relative_path_tlibdir*)
333885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        # found a matching prefix
334885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
335885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_relative_path_tcancelled=$func_stripname_result
336885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        if test -z "$func_relative_path_result"; then
337885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          func_relative_path_result=.
338885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        fi
339885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        break
340885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        ;;
341885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *)
342885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_dirname $func_relative_path_tlibdir
343885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_relative_path_tlibdir=${func_dirname_result}
344885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        if test "x$func_relative_path_tlibdir" = x ; then
345885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          # Have to descend all the way to the root!
346885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          func_relative_path_result=../$func_relative_path_result
347885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          func_relative_path_tcancelled=$func_relative_path_tbindir
348885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          break
349885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        fi
350885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_relative_path_result=../$func_relative_path_result
351885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        ;;
352885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
353885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  done
354885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
355885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Now calculate path; take care to avoid doubling-up slashes.
356885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_stripname '' '/' "$func_relative_path_result"
357885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_relative_path_result=$func_stripname_result
358885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_stripname '/' '/' "$func_relative_path_tcancelled"
359885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test "x$func_stripname_result" != x ; then
360885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
361885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
362885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
363885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Normalisation. If bindir is libdir, return empty string,
364885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # else relative path ending with a slash; either way, target
365885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # file name can be directly appended.
366885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test ! -z "$func_relative_path_result"; then
367885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_stripname './' '' "$func_relative_path_result/"
368885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_relative_path_result=$func_stripname_result
369885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
370885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
371885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
372885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# The name of this program:
373885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_dirname_and_basename "$progpath"
374885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgprogname=$func_basename_result
375885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
376885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Make sure we have an absolute path for reexecution:
377885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcase $progpath in
378885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  [\\/]*|[A-Za-z]:\\*) ;;
379885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  *[\\/]*)
380885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     progdir=$func_dirname_result
381885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     progdir=`cd "$progdir" && pwd`
382885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     progpath="$progdir/$progname"
383885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     ;;
384885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  *)
385885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     save_IFS="$IFS"
386885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     IFS=${PATH_SEPARATOR-:}
387885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     for progdir in $PATH; do
388885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org       IFS="$save_IFS"
389885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org       test -x "$progdir/$progname" && break
390885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     done
391885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     IFS="$save_IFS"
392885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     test -n "$progdir" || progdir=`pwd`
393885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     progpath="$progdir/$progname"
394885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     ;;
395885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgesac
396885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
397885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Sed substitution that helps us do robust quoting.  It backslashifies
398885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# metacharacters that are still active within double-quoted strings.
399885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgXsed="${SED}"' -e 1s/^X//'
400885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgsed_quote_subst='s/\([`"$\\]\)/\\\1/g'
401885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
402885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Same as above, but do not quote variable references.
403885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
404885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
405885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Sed substitution that turns a string into a regex matching for the
406885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# string literally.
407885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgsed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
408885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
409885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Sed substitution that converts a w32 file name or path
410885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# which contains forward slashes, into one that contains
411885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# (escaped) backslashes.  A very naive implementation.
412885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
413885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
414885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Re-`\' parameter expansions in output of double_quote_subst that were
415885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
416885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# in input to double_quote_subst, that '$' was protected from expansion.
417885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Since each input `\' is now two `\'s, look for any number of runs of
418885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
419885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgbs='\\'
420885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgbs2='\\\\'
421885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgbs4='\\\\\\\\'
422885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgdollar='\$'
423885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgsed_double_backslash="\
424885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  s/$bs4/&\\
425885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/g
426885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  s/^$bs2$dollar/$bs&/
427885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
428885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  s/\n//g"
429885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
430885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Standard options:
431885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_dry_run=false
432885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_help=false
433885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_quiet=false
434885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_verbose=false
435885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_warning=:
436885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
437885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_echo arg...
438885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo program name prefixed message, along with the current mode
439885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# name if it has been set yet.
440885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_echo ()
441885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
442885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
443885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
444885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
445885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_verbose arg...
446885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo program name prefixed message in verbose mode only.
447885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_verbose ()
448885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
449885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_verbose && func_echo ${1+"$@"}
450885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
451885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # A bug in bash halts the script if the last line of a function
452885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # fails when set -e is in force, so we need another command to
453885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # work around that:
454885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    :
455885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
456885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
457885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_echo_all arg...
458885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Invoke $ECHO with all args, space-separated.
459885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_echo_all ()
460885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
461885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $ECHO "$*"
462885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
463885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
464885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_error arg...
465885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo program name prefixed message to standard error.
466885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_error ()
467885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
468885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
469885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
470885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
471885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_warning arg...
472885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo program name prefixed warning message to standard error.
473885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_warning ()
474885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
475885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
476885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
477885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # bash bug again:
478885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    :
479885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
480885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
481885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_fatal_error arg...
482885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo program name prefixed message to standard error, and exit.
483885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_fatal_error ()
484885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
485885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_error ${1+"$@"}
486885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    exit $EXIT_FAILURE
487885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
488885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
489885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_fatal_help arg...
490885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo program name prefixed message to standard error, followed by
491885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# a help hint, and exit.
492885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_fatal_help ()
493885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
494885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_error ${1+"$@"}
495885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_fatal_error "$help"
496885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
497885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orghelp="Try \`$progname --help' for more information."  ## default
498885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
499885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
500885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_grep expression filename
501885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Check whether EXPRESSION matches any line of FILENAME, without output.
502885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_grep ()
503885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
504885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $GREP "$1" "$2" >/dev/null 2>&1
505885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
506885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
507885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
508885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_mkdir_p directory-path
509885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Make sure the entire path to DIRECTORY-PATH is available.
510885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_mkdir_p ()
511885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
512885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_directory_path="$1"
513885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_dir_list=
514885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
515885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
516885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
517885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Protect directory names starting with `-'
518885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $my_directory_path in
519885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        -*) my_directory_path="./$my_directory_path" ;;
520885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
521885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
522885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # While some portion of DIR does not yet exist...
523885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      while test ! -d "$my_directory_path"; do
524885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        # ...make a list in topmost first order.  Use a colon delimited
525885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# list incase some portion of path contains whitespace.
526885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        my_dir_list="$my_directory_path:$my_dir_list"
527885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
528885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        # If the last portion added has no slash in it, the list is done
529885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        case $my_directory_path in */*) ;; *) break ;; esac
530885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
531885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        # ...otherwise throw away the child directory and loop
532885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
533885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
534885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
535885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
536885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      save_mkdir_p_IFS="$IFS"; IFS=':'
537885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      for my_dir in $my_dir_list; do
538885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	IFS="$save_mkdir_p_IFS"
539885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        # mkdir can fail with a `File exist' error if two processes
540885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        # try to create one of the directories concurrently.  Don't
541885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        # stop in that case!
542885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        $MKDIR "$my_dir" 2>/dev/null || :
543885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
544885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      IFS="$save_mkdir_p_IFS"
545885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
546885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Bail out if we (or some other process) failed to create a directory.
547885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test -d "$my_directory_path" || \
548885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_fatal_error "Failed to create \`$1'"
549885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
550885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
551885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
552885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
553885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_mktempdir [string]
554885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Make a temporary directory that won't clash with other running
555885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# libtool processes, and avoids race conditions if possible.  If
556885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# given, STRING is the basename for that directory.
557885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_mktempdir ()
558885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
559885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_template="${TMPDIR-/tmp}/${1-$progname}"
560885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
561885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$opt_dry_run" = ":"; then
562885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Return a directory name, but don't create it in dry-run mode
563885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      my_tmpdir="${my_template}-$$"
564885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    else
565885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
566885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # If mktemp works, use that first and foremost
567885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
568885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
569885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test ! -d "$my_tmpdir"; then
570885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        # Failing that, at least try and use $RANDOM to avoid a race
571885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        my_tmpdir="${my_template}-${RANDOM-0}$$"
572885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
573885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        save_mktempdir_umask=`umask`
574885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        umask 0077
575885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        $MKDIR "$my_tmpdir"
576885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        umask $save_mktempdir_umask
577885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
578885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
579885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # If we're not in dry-run mode, bomb out on failure
580885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test -d "$my_tmpdir" || \
581885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
582885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
583885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
584885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $ECHO "$my_tmpdir"
585885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
586885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
587885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
588885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_quote_for_eval arg
589885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Aesthetically quote ARG to be evaled later.
590885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
591885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# is double-quoted, suitable for a subsequent eval, whereas
592885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
593885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# which are still active within double quotes backslashified.
594885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_quote_for_eval ()
595885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
596885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case $1 in
597885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *[\\\`\"\$]*)
598885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
599885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *)
600885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_quote_for_eval_unquoted_result="$1" ;;
601885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
602885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
603885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case $func_quote_for_eval_unquoted_result in
604885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Double-quote args containing shell metacharacters to delay
605885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # word splitting, command substitution and and variable
606885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # expansion for a subsequent eval.
607885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Many Bourne shells cannot handle close brackets correctly
608885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # in scan sets, so we specify it separately.
609885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
610885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
611885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        ;;
612885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *)
613885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
614885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
615885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
616885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
617885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
618885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_quote_for_expand arg
619885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Aesthetically quote ARG to be evaled later; same as above,
620885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# but do not quote variable references.
621885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_quote_for_expand ()
622885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
623885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case $1 in
624885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *[\\\`\"]*)
625885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	my_arg=`$ECHO "$1" | $SED \
626885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
627885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *)
628885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        my_arg="$1" ;;
629885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
630885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
631885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case $my_arg in
632885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Double-quote args containing shell metacharacters to delay
633885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # word splitting and command substitution for a subsequent eval.
634885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Many Bourne shells cannot handle close brackets correctly
635885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # in scan sets, so we specify it separately.
636885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
637885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        my_arg="\"$my_arg\""
638885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        ;;
639885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
640885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
641885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_quote_for_expand_result="$my_arg"
642885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
643885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
644885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
645885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_show_eval cmd [fail_exp]
646885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
647885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
648885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# is given, then evaluate it.
649885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_show_eval ()
650885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
651885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_cmd="$1"
652885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_fail_exp="${2-:}"
653885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
654885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ${opt_silent-false} || {
655885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_quote_for_expand "$my_cmd"
656885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      eval "func_echo $func_quote_for_expand_result"
657885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
658885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
659885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if ${opt_dry_run-false}; then :; else
660885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      eval "$my_cmd"
661885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      my_status=$?
662885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$my_status" -eq 0; then :; else
663885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	eval "(exit $my_status); $my_fail_exp"
664885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
665885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
666885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
667885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
668885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
669885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_show_eval_locale cmd [fail_exp]
670885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
671885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
672885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# is given, then evaluate it.  Use the saved locale for evaluation.
673885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_show_eval_locale ()
674885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
675885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_cmd="$1"
676885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_fail_exp="${2-:}"
677885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
678885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ${opt_silent-false} || {
679885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_quote_for_expand "$my_cmd"
680885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      eval "func_echo $func_quote_for_expand_result"
681885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
682885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
683885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if ${opt_dry_run-false}; then :; else
684885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      eval "$lt_user_locale
685885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $my_cmd"
686885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      my_status=$?
687885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      eval "$lt_safe_locale"
688885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$my_status" -eq 0; then :; else
689885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	eval "(exit $my_status); $my_fail_exp"
690885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
691885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
692885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
693885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
694885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_tr_sh
695885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Turn $1 into a string suitable for a shell variable name.
696885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Result is stored in $func_tr_sh_result.  All characters
697885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
698885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# if $1 begins with a digit, a '_' is prepended as well.
699885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_tr_sh ()
700885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
701885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  case $1 in
702885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  [0-9]* | *[!a-zA-Z0-9_]*)
703885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
704885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ;;
705885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  * )
706885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_tr_sh_result=$1
707885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ;;
708885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  esac
709885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
710885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
711885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
712885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_version
713885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo version message to standard output and exit.
714885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_version ()
715885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
716885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_debug
717885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
718885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $SED -n '/(C)/!b go
719885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	:more
720885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	/\./!{
721885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  N
722885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  s/\n# / /
723885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  b more
724885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	}
725885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	:go
726885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	/^# '$PROGRAM' (GNU /,/# warranty; / {
727885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        s/^# //
728885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	s/^# *$//
729885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
730885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        p
731885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     }' < "$progpath"
732885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     exit $?
733885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
734885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
735885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_usage
736885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo short help message to standard output and exit.
737885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_usage ()
738885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
739885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_debug
740885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
741885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $SED -n '/^# Usage:/,/^#  *.*--help/ {
742885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        s/^# //
743885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	s/^# *$//
744885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	s/\$progname/'$progname'/
745885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	p
746885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }' < "$progpath"
747885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    echo
748885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $ECHO "run \`$progname --help | more' for full usage"
749885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    exit $?
750885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
751885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
752885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_help [NOEXIT]
753885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo long help message to standard output and exit,
754885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# unless 'noexit' is passed as argument.
755885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_help ()
756885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
757885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_debug
758885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
759885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $SED -n '/^# Usage:/,/# Report bugs to/ {
760885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	:print
761885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        s/^# //
762885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	s/^# *$//
763885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	s*\$progname*'$progname'*
764885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	s*\$host*'"$host"'*
765885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	s*\$SHELL*'"$SHELL"'*
766885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	s*\$LTCC*'"$LTCC"'*
767885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	s*\$LTCFLAGS*'"$LTCFLAGS"'*
768885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	s*\$LD*'"$LD"'*
769885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	s/\$with_gnu_ld/'"$with_gnu_ld"'/
770885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
771885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
772885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	p
773885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	d
774885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     }
775885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     /^# .* home page:/b print
776885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     /^# General help using/b print
777885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     ' < "$progpath"
778885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ret=$?
779885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test -z "$1"; then
780885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      exit $ret
781885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
782885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
783885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
784885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_missing_arg argname
785885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo program name prefixed message to standard error and set global
786885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# exit_cmd.
787885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_missing_arg ()
788885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
789885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_debug
790885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
791885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_error "missing argument for $1."
792885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    exit_cmd=exit
793885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
794885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
795885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
796885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_split_short_opt shortopt
797885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Set func_split_short_opt_name and func_split_short_opt_arg shell
798885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# variables after splitting SHORTOPT after the 2nd character.
799885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_split_short_opt ()
800885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
801885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
802885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
803885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
804885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
805885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
806885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_split_short_opt may be replaced by extended shell implementation
807885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
808885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
809885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_split_long_opt longopt
810885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Set func_split_long_opt_name and func_split_long_opt_arg shell
811885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# variables after splitting LONGOPT at the `=' sign.
812885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_split_long_opt ()
813885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
814885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
815885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_sed_long_arg='1s/^--[^=]*=//'
816885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
817885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
818885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
819885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_split_long_opt may be replaced by extended shell implementation
820885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
821885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgexit_cmd=:
822885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
823885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
824885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
825885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
826885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
827885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgmagic="%%%MAGIC variable%%%"
828885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgmagic_exe="%%%MAGIC EXE variable%%%"
829885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
830885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Global variables.
831885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgnonopt=
832885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgpreserve_args=
833885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglo2o="s/\\.lo\$/.${objext}/"
834885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgo2lo="s/\\.${objext}\$/.lo/"
835885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgextracted_archives=
836885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgextracted_serial=0
837885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
838885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# If this variable is set in any of the actions, the command in it
839885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# will be execed at the end.  This prevents here-documents from being
840885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# left over by shells.
841885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgexec_cmd=
842885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
843885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_append var value
844885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Append VALUE to the end of shell variable VAR.
845885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_append ()
846885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
847885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    eval "${1}=\$${1}\${2}"
848885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_append may be replaced by extended shell implementation
849885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
850885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_append_quoted var value
851885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Quote VALUE and append to the end of shell variable VAR, separated
852885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# by a space.
853885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_append_quoted ()
854885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
855885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_quote_for_eval "${2}"
856885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
857885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_append_quoted may be replaced by extended shell implementation
858885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
859885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
860885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_arith arithmetic-term...
861885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_arith ()
862885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
863885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_arith_result=`expr "${@}"`
864885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_arith may be replaced by extended shell implementation
865885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
866885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
867885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_len string
868885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# STRING may not start with a hyphen.
869885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_len ()
870885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
871885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
872885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_len may be replaced by extended shell implementation
873885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
874885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
875885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_lo2o object
876885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_lo2o ()
877885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
878885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
879885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_lo2o may be replaced by extended shell implementation
880885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
881885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
882885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_xform libobj-or-source
883885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_xform ()
884885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
885885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
886885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_xform may be replaced by extended shell implementation
887885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
888885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
889885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_fatal_configuration arg...
890885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo program name prefixed message to standard error, followed by
891885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# a configuration failure hint, and exit.
892885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_fatal_configuration ()
893885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
894885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_error ${1+"$@"}
895885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_error "See the $PACKAGE documentation for more information."
896885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_fatal_error "Fatal configuration error."
897885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
898885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
899885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
900885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_config
901885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Display the configuration for all the tags in this script.
902885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_config ()
903885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
904885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    re_begincf='^# ### BEGIN LIBTOOL'
905885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    re_endcf='^# ### END LIBTOOL'
906885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
907885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Default configuration.
908885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
909885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
910885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Now print the configurations for the tags.
911885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    for tagname in $taglist; do
912885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
913885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    done
914885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
915885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    exit $?
916885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
917885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
918885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_features
919885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Display the features supported by this script.
920885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_features ()
921885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
922885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    echo "host: $host"
923885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$build_libtool_libs" = yes; then
924885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      echo "enable shared libraries"
925885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    else
926885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      echo "disable shared libraries"
927885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
928885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$build_old_libs" = yes; then
929885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      echo "enable static libraries"
930885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    else
931885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      echo "disable static libraries"
932885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
933885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
934885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    exit $?
935885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
936885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
937885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_enable_tag tagname
938885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Verify that TAGNAME is valid, and either flag an error and exit, or
939885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
940885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# variable here.
941885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_enable_tag ()
942885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
943885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Global variable:
944885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  tagname="$1"
945885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
946885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
947885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
948885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  sed_extractcf="/$re_begincf/,/$re_endcf/p"
949885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
950885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Validate tagname.
951885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  case $tagname in
952885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *[!-_A-Za-z0-9,/]*)
953885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_fatal_error "invalid tag name: $tagname"
954885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
955885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  esac
956885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
957885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Don't test for the "default" C tag, as we know it's
958885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # there but not specially marked.
959885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  case $tagname in
960885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    CC) ;;
961885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *)
962885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
963885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	taglist="$taglist $tagname"
964885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
965885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Evaluate the configuration.  Be careful to quote the path
966885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# and the sed script, to avoid splitting on whitespace, but
967885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# also don't use non-portable quotes within backquotes within
968885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# quotes we have to do it in 2 steps:
969885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
970885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	eval "$extractedcf"
971885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      else
972885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_error "ignoring unknown tag $tagname"
973885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
974885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
975885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  esac
976885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
977885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
978885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_check_version_match
979885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Ensure that we are using m4 macros, and libtool script from the same
980885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# release of libtool.
981885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_check_version_match ()
982885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
983885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test "$package_revision" != "$macro_revision"; then
984885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$VERSION" != "$macro_version"; then
985885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -z "$macro_version"; then
986885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        cat >&2 <<_LT_EOF
987885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
988885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: definition of this LT_INIT comes from an older release.
989885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
990885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: and run autoconf again.
991885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org_LT_EOF
992885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      else
993885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        cat >&2 <<_LT_EOF
994885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
995885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
996885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
997885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: and run autoconf again.
998885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org_LT_EOF
999885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
1000885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    else
1001885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      cat >&2 <<_LT_EOF
1002885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
1003885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: but the definition of this LT_INIT comes from revision $macro_revision.
1004885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: You should recreate aclocal.m4 with macros from revision $package_revision
1005885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: of $PACKAGE $VERSION and run autoconf again.
1006885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org_LT_EOF
1007885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
1008885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1009885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    exit $EXIT_MISMATCH
1010885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
1011885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1012885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1013885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1014885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Shorthand for --mode=foo, only valid as the first argument
1015885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcase $1 in
1016885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgclean|clea|cle|cl)
1017885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  shift; set dummy --mode clean ${1+"$@"}; shift
1018885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  ;;
1019885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcompile|compil|compi|comp|com|co|c)
1020885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  shift; set dummy --mode compile ${1+"$@"}; shift
1021885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  ;;
1022885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgexecute|execut|execu|exec|exe|ex|e)
1023885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  shift; set dummy --mode execute ${1+"$@"}; shift
1024885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  ;;
1025885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfinish|finis|fini|fin|fi|f)
1026885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  shift; set dummy --mode finish ${1+"$@"}; shift
1027885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  ;;
1028885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orginstall|instal|insta|inst|ins|in|i)
1029885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  shift; set dummy --mode install ${1+"$@"}; shift
1030885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  ;;
1031885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglink|lin|li|l)
1032885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  shift; set dummy --mode link ${1+"$@"}; shift
1033885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  ;;
1034885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orguninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
1035885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  shift; set dummy --mode uninstall ${1+"$@"}; shift
1036885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  ;;
1037885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgesac
1038885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1039885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1040885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1041885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Option defaults:
1042885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_debug=:
1043885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_dry_run=false
1044885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_config=false
1045885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_preserve_dup_deps=false
1046885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_features=false
1047885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_finish=false
1048885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_help=false
1049885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_help_all=false
1050885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_silent=:
1051885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_warning=:
1052885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_verbose=:
1053885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_silent=false
1054885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_verbose=false
1055885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1056885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1057885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Parse options once, thoroughly.  This comes as soon as possible in the
1058885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# script to make things like `--version' happen as quickly as we can.
1059885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1060885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # this just eases exit handling
1061885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  while test $# -gt 0; do
1062885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    opt="$1"
1063885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    shift
1064885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case $opt in
1065885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      --debug|-x)	opt_debug='set -x'
1066885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			func_echo "enabling shell trace mode"
1067885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			$opt_debug
1068885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			;;
1069885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      --dry-run|--dryrun|-n)
1070885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			opt_dry_run=:
1071885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			;;
1072885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      --config)
1073885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			opt_config=:
1074885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_config
1075885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			;;
1076885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      --dlopen|-dlopen)
1077885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			optarg="$1"
1078885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			opt_dlopen="${opt_dlopen+$opt_dlopen
1079885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}$optarg"
1080885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			shift
1081885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			;;
1082885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      --preserve-dup-deps)
1083885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			opt_preserve_dup_deps=:
1084885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			;;
1085885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      --features)
1086885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			opt_features=:
1087885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_features
1088885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			;;
1089885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      --finish)
1090885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			opt_finish=:
1091885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgset dummy --mode finish ${1+"$@"}; shift
1092885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			;;
1093885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      --help)
1094885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			opt_help=:
1095885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			;;
1096885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      --help-all)
1097885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			opt_help_all=:
1098885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_help=': help-all'
1099885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			;;
1100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      --mode)
1101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			test $# = 0 && func_missing_arg $opt && break
1102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			optarg="$1"
1103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			opt_mode="$optarg"
1104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcase $optarg in
1105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Valid mode arguments:
1106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  clean|compile|execute|finish|install|link|relink|uninstall) ;;
1107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Catch anything else as an error
1109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  *) func_error "invalid argument for $opt"
1110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     exit_cmd=exit
1111885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     break
1112885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     ;;
1113885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgesac
1114885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			shift
1115885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			;;
1116885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      --no-silent|--no-quiet)
1117885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			opt_silent=false
1118885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_append preserve_args " $opt"
1119885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			;;
1120885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      --no-warning|--no-warn)
1121885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			opt_warning=false
1122885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_append preserve_args " $opt"
1123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			;;
1124885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      --no-verbose)
1125885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			opt_verbose=false
1126885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_append preserve_args " $opt"
1127885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			;;
1128885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      --silent|--quiet)
1129885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			opt_silent=:
1130885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_append preserve_args " $opt"
1131885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        opt_verbose=false
1132885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			;;
1133885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      --verbose|-v)
1134885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			opt_verbose=:
1135885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_append preserve_args " $opt"
1136885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_silent=false
1137885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			;;
1138885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      --tag)
1139885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			test $# = 0 && func_missing_arg $opt && break
1140885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			optarg="$1"
1141885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			opt_tag="$optarg"
1142885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_append preserve_args " $opt $optarg"
1143885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_enable_tag "$optarg"
1144885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			shift
1145885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			;;
1146885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1147885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -\?|-h)		func_usage				;;
1148885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      --help)		func_help				;;
1149885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      --version)	func_version				;;
1150885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1151885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Separate optargs to long options:
1152885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      --*=*)
1153885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			func_split_long_opt "$opt"
1154885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
1155885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			shift
1156885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			;;
1157885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1158885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Separate non-argument short options:
1159885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -\?*|-h*|-n*|-v*)
1160885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			func_split_short_opt "$opt"
1161885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
1162885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			shift
1163885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			;;
1164885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1165885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      --)		break					;;
1166885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
1167885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
1168885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
1169885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  done
1170885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1171885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Validate options:
1172885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1173885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # save first non-option argument
1174885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test "$#" -gt 0; then
1175885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    nonopt="$opt"
1176885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    shift
1177885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
1178885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1179885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # preserve --debug
1180885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  test "$opt_debug" = : || func_append preserve_args " --debug"
1181885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1182885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  case $host in
1183885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *cygwin* | *mingw* | *pw32* | *cegcc*)
1184885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # don't eliminate duplications in $postdeps and $predeps
1185885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      opt_duplicate_compiler_generated_deps=:
1186885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
1187885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *)
1188885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
1189885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
1190885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  esac
1191885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1192885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_help || {
1193885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Sanity checks first:
1194885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_check_version_match
1195885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1196885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
1197885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_fatal_configuration "not configured to build any kind of library"
1198885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
1199885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1200885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Darwin sucks
1201885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    eval std_shrext=\"$shrext_cmds\"
1202885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1203885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Only execute mode is allowed to have -dlopen flags.
1204885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
1205885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_error "unrecognized option \`-dlopen'"
1206885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      $ECHO "$help" 1>&2
1207885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      exit $EXIT_FAILURE
1208885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
1209885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1210885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Change the help message to a mode-specific one.
1211885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    generic_help="$help"
1212885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    help="Try \`$progname --help --mode=$opt_mode' for more information."
1213885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  }
1214885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1215885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1216885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Bail if the options were screwed
1217885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $exit_cmd $EXIT_FAILURE
1218885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1219885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1220885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1221885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1222885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1223885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org## ----------- ##
1224885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org##    Main.    ##
1225885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org## ----------- ##
1226885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1227885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_lalib_p file
1228885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# True iff FILE is a libtool `.la' library or `.lo' object file.
1229885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This function is only a basic sanity check; it will hardly flush out
1230885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# determined imposters.
1231885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_lalib_p ()
1232885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1233885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    test -f "$1" &&
1234885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      $SED -e 4q "$1" 2>/dev/null \
1235885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
1236885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1237885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1238885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_lalib_unsafe_p file
1239885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# True iff FILE is a libtool `.la' library or `.lo' object file.
1240885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This function implements the same check as func_lalib_p without
1241885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# resorting to external programs.  To this end, it redirects stdin and
1242885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# closes it afterwards, without saving the original file descriptor.
1243885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# As a safety measure, use it only where a negative result would be
1244885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# fatal anyway.  Works if `file' does not exist.
1245885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_lalib_unsafe_p ()
1246885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1247885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    lalib_p=no
1248885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
1249885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	for lalib_p_l in 1 2 3 4
1250885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	do
1251885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    read lalib_p_line
1252885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case "$lalib_p_line" in
1253885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
1254885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
1255885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done
1256885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	exec 0<&5 5<&-
1257885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
1258885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    test "$lalib_p" = yes
1259885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1260885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1261885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_ltwrapper_script_p file
1262885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# True iff FILE is a libtool wrapper script
1263885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This function is only a basic sanity check; it will hardly flush out
1264885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# determined imposters.
1265885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_ltwrapper_script_p ()
1266885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1267885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_lalib_p "$1"
1268885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1269885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1270885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_ltwrapper_executable_p file
1271885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# True iff FILE is a libtool wrapper executable
1272885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This function is only a basic sanity check; it will hardly flush out
1273885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# determined imposters.
1274885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_ltwrapper_executable_p ()
1275885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1276885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_ltwrapper_exec_suffix=
1277885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case $1 in
1278885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *.exe) ;;
1279885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *) func_ltwrapper_exec_suffix=.exe ;;
1280885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
1281885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
1282885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1283885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1284885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_ltwrapper_scriptname file
1285885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Assumes file is an ltwrapper_executable
1286885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# uses $file to determine the appropriate filename for a
1287885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# temporary ltwrapper_script.
1288885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_ltwrapper_scriptname ()
1289885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1290885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_dirname_and_basename "$1" "" "."
1291885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_stripname '' '.exe' "$func_basename_result"
1292885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
1293885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1294885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1295885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_ltwrapper_p file
1296885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# True iff FILE is a libtool wrapper script or wrapper executable
1297885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This function is only a basic sanity check; it will hardly flush out
1298885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# determined imposters.
1299885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_ltwrapper_p ()
1300885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1301885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
1302885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1303885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1304885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1305885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_execute_cmds commands fail_cmd
1306885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Execute tilde-delimited COMMANDS.
1307885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# If FAIL_CMD is given, eval that upon failure.
1308885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# FAIL_CMD may read-access the current command in variable CMD!
1309885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_execute_cmds ()
1310885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1311885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_debug
1312885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    save_ifs=$IFS; IFS='~'
1313885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    for cmd in $1; do
1314885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      IFS=$save_ifs
1315885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      eval cmd=\"$cmd\"
1316885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_show_eval "$cmd" "${2-:}"
1317885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    done
1318885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    IFS=$save_ifs
1319885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1320885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1321885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1322885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_source file
1323885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Source FILE, adding directory component if necessary.
1324885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Note that it is not necessary on cygwin/mingw to append a dot to
1325885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
1326885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# behavior happens only for exec(3), not for open(2)!  Also, sourcing
1327885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# `FILE.' does not work on cygwin managed mounts.
1328885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_source ()
1329885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1330885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_debug
1331885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case $1 in
1332885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    */* | *\\*)	. "$1" ;;
1333885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *)		. "./$1" ;;
1334885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
1335885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1336885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1337885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1338885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_resolve_sysroot PATH
1339885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Replace a leading = in PATH with a sysroot.  Store the result into
1340885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_resolve_sysroot_result
1341885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_resolve_sysroot ()
1342885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1343885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_resolve_sysroot_result=$1
1344885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  case $func_resolve_sysroot_result in
1345885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  =*)
1346885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_stripname '=' '' "$func_resolve_sysroot_result"
1347885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
1348885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ;;
1349885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  esac
1350885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1351885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1352885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_replace_sysroot PATH
1353885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# If PATH begins with the sysroot, replace it with = and
1354885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# store the result into func_replace_sysroot_result.
1355885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_replace_sysroot ()
1356885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1357885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  case "$lt_sysroot:$1" in
1358885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  ?*:"$lt_sysroot"*)
1359885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_stripname "$lt_sysroot" '' "$1"
1360885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_replace_sysroot_result="=$func_stripname_result"
1361885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ;;
1362885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  *)
1363885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Including no sysroot.
1364885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_replace_sysroot_result=$1
1365885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ;;
1366885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  esac
1367885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1368885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1369885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_infer_tag arg
1370885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Infer tagged configuration to use if any are available and
1371885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# if one wasn't chosen via the "--tag" command line option.
1372885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Only attempt this if the compiler in the base compile
1373885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# command doesn't match the default compiler.
1374885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# arg is usually of the form 'gcc ...'
1375885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_infer_tag ()
1376885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1377885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_debug
1378885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test -n "$available_tags" && test -z "$tagname"; then
1379885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      CC_quoted=
1380885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      for arg in $CC; do
1381885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append_quoted CC_quoted "$arg"
1382885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
1383885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      CC_expanded=`func_echo_all $CC`
1384885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      CC_quoted_expanded=`func_echo_all $CC_quoted`
1385885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $@ in
1386885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Blanks in the command may have been stripped by the calling shell,
1387885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # but not from the CC environment variable when configure was run.
1388885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1389885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
1390885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Blanks at the start of $base_compile will cause this to fail
1391885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # if we don't check for them as well.
1392885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *)
1393885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	for z in $available_tags; do
1394885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
1395885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Evaluate the configuration.
1396885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
1397885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    CC_quoted=
1398885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    for arg in $CC; do
1399885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # Double-quote args containing other shell metacharacters.
1400885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append_quoted CC_quoted "$arg"
1401885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done
1402885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    CC_expanded=`func_echo_all $CC`
1403885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    CC_quoted_expanded=`func_echo_all $CC_quoted`
1404885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case "$@ " in
1405885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1406885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
1407885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # The compiler in the base compile command matches
1408885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # the one in the tagged configuration.
1409885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # Assume this is the tagged configuration we want.
1410885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      tagname=$z
1411885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      break
1412885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      ;;
1413885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
1414885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
1415885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done
1416885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# If $tagname still isn't set, then no tagged configuration
1417885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# was found and let the user know that the "--tag" command
1418885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# line option must be used.
1419885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -z "$tagname"; then
1420885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_echo "unable to infer tagged configuration"
1421885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_fatal_error "specify a tag with \`--tag'"
1422885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#	else
1423885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#	  func_verbose "using $tagname tagged configuration"
1424885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
1425885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
1426885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
1427885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
1428885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1429885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1430885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1431885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1432885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_write_libtool_object output_name pic_name nonpic_name
1433885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Create a libtool object file (analogous to a ".la" file),
1434885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# but don't create it if we're doing a dry run.
1435885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_write_libtool_object ()
1436885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1437885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    write_libobj=${1}
1438885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$build_libtool_libs" = yes; then
1439885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      write_lobj=\'${2}\'
1440885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    else
1441885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      write_lobj=none
1442885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
1443885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1444885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$build_old_libs" = yes; then
1445885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      write_oldobj=\'${3}\'
1446885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    else
1447885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      write_oldobj=none
1448885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
1449885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1450885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_dry_run || {
1451885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      cat >${write_libobj}T <<EOF
1452885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# $write_libobj - a libtool object file
1453885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1454885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
1455885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Please DO NOT delete this file!
1456885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# It is necessary for linking the library.
1457885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1458885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Name of the PIC object.
1459885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgpic_object=$write_lobj
1460885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1461885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Name of the non-PIC object
1462885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgnon_pic_object=$write_oldobj
1463885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1464885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
1465885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      $MV "${write_libobj}T" "${write_libobj}"
1466885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
1467885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1468885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1469885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1470885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org##################################################
1471885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
1472885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org##################################################
1473885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1474885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_core_file_wine_to_w32 ARG
1475885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Helper function used by file name conversion functions when $build is *nix,
1476885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# and $host is mingw, cygwin, or some other w32 environment. Relies on a
1477885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# correctly configured wine environment available, with the winepath program
1478885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# in $build's $PATH.
1479885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
1480885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ARG is the $build file name to be converted to w32 format.
1481885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Result is available in $func_convert_core_file_wine_to_w32_result, and will
1482885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# be empty on error (or when ARG is empty)
1483885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_core_file_wine_to_w32 ()
1484885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1485885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
1486885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_convert_core_file_wine_to_w32_result="$1"
1487885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test -n "$1"; then
1488885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Unfortunately, winepath does not exit with a non-zero error code, so we
1489885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # are forced to check the contents of stdout. On the other hand, if the
1490885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # command is not found, the shell will set an exit code of 127 and print
1491885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # *an error message* to stdout. So we must check for both error code of
1492885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # zero AND non-empty stdout, which explains the odd construction:
1493885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
1494885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
1495885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
1496885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        $SED -e "$lt_sed_naive_backslashify"`
1497885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    else
1498885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_convert_core_file_wine_to_w32_result=
1499885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
1500885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
1501885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1502885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end: func_convert_core_file_wine_to_w32
1503885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1504885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1505885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_core_path_wine_to_w32 ARG
1506885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Helper function used by path conversion functions when $build is *nix, and
1507885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
1508885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# configured wine environment available, with the winepath program in $build's
1509885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# $PATH. Assumes ARG has no leading or trailing path separator characters.
1510885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
1511885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ARG is path to be converted from $build format to win32.
1512885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Result is available in $func_convert_core_path_wine_to_w32_result.
1513885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Unconvertible file (directory) names in ARG are skipped; if no directory names
1514885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# are convertible, then the result may be empty.
1515885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_core_path_wine_to_w32 ()
1516885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1517885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
1518885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # unfortunately, winepath doesn't convert paths, only file names
1519885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_convert_core_path_wine_to_w32_result=""
1520885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test -n "$1"; then
1521885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    oldIFS=$IFS
1522885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    IFS=:
1523885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    for func_convert_core_path_wine_to_w32_f in $1; do
1524885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      IFS=$oldIFS
1525885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
1526885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
1527885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        if test -z "$func_convert_core_path_wine_to_w32_result"; then
1528885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
1529885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        else
1530885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
1531885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        fi
1532885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
1533885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    done
1534885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    IFS=$oldIFS
1535885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
1536885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1537885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end: func_convert_core_path_wine_to_w32
1538885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1539885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1540885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_cygpath ARGS...
1541885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
1542885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
1543885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
1544885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# (2), returns the Cygwin file name or path in func_cygpath_result (input
1545885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# file name or path is assumed to be in w32 format, as previously converted
1546885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# from $build's *nix or MSYS format). In case (3), returns the w32 file name
1547885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# or path in func_cygpath_result (input file name or path is assumed to be in
1548885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Cygwin format). Returns an empty string on error.
1549885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
1550885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ARGS are passed to cygpath, with the last one being the file name or path to
1551885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# be converted.
1552885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
1553885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
1554885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# environment variable; do not put it in $PATH.
1555885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_cygpath ()
1556885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1557885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
1558885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
1559885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
1560885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$?" -ne 0; then
1561885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # on failure, ensure result is empty
1562885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_cygpath_result=
1563885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
1564885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  else
1565885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_cygpath_result=
1566885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
1567885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
1568885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1569885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#end: func_cygpath
1570885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1571885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1572885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_core_msys_to_w32 ARG
1573885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert file name or path ARG from MSYS format to w32 format.  Return
1574885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# result in func_convert_core_msys_to_w32_result.
1575885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_core_msys_to_w32 ()
1576885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1577885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
1578885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # awkward: cmd appends spaces to result
1579885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
1580885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
1581885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1582885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#end: func_convert_core_msys_to_w32
1583885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1584885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1585885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_file_check ARG1 ARG2
1586885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Verify that ARG1 (a file name in $build format) was converted to $host
1587885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# format in ARG2. Otherwise, emit an error message, but continue (resetting
1588885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_to_host_file_result to ARG1).
1589885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_file_check ()
1590885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1591885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
1592885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test -z "$2" && test -n "$1" ; then
1593885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_error "Could not determine host file name corresponding to"
1594885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_error "  \`$1'"
1595885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_error "Continuing, but uninstalled executables may not work."
1596885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Fallback:
1597885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_to_host_file_result="$1"
1598885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
1599885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1600885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_file_check
1601885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1602885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1603885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
1604885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Verify that FROM_PATH (a path in $build format) was converted to $host
1605885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
1606885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_to_host_file_result to a simplistic fallback value (see below).
1607885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_path_check ()
1608885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1609885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
1610885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test -z "$4" && test -n "$3"; then
1611885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_error "Could not determine the host path corresponding to"
1612885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_error "  \`$3'"
1613885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_error "Continuing, but uninstalled executables may not work."
1614885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Fallback.  This is a deliberately simplistic "conversion" and
1615885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # should not be "improved".  See libtool.info.
1616885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "x$1" != "x$2"; then
1617885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      lt_replace_pathsep_chars="s|$1|$2|g"
1618885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_to_host_path_result=`echo "$3" |
1619885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        $SED -e "$lt_replace_pathsep_chars"`
1620885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    else
1621885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_to_host_path_result="$3"
1622885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
1623885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
1624885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1625885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_path_check
1626885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1627885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1628885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
1629885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
1630885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# and appending REPL if ORIG matches BACKPAT.
1631885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_path_front_back_pathsep ()
1632885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1633885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
1634885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  case $4 in
1635885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
1636885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ;;
1637885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  esac
1638885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  case $4 in
1639885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $2 ) func_append func_to_host_path_result "$3"
1640885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ;;
1641885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  esac
1642885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1643885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_path_front_back_pathsep
1644885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1645885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1646885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org##################################################
1647885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# $build to $host FILE NAME CONVERSION FUNCTIONS #
1648885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org##################################################
1649885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# invoked via `$to_host_file_cmd ARG'
1650885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
1651885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# In each case, ARG is the path to be converted from $build to $host format.
1652885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Result will be available in $func_to_host_file_result.
1653885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1654885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1655885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_to_host_file ARG
1656885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Converts the file name ARG from $build format to $host format. Return result
1657885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# in func_to_host_file_result.
1658885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_to_host_file ()
1659885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1660885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
1661885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $to_host_file_cmd "$1"
1662885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1663885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_to_host_file
1664885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1665885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1666885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_to_tool_file ARG LAZY
1667885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# converts the file name ARG from $build format to toolchain format. Return
1668885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# result in func_to_tool_file_result.  If the conversion in use is listed
1669885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# in (the comma separated) LAZY, no conversion takes place.
1670885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_to_tool_file ()
1671885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1672885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
1673885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  case ,$2, in
1674885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *,"$to_tool_file_cmd",*)
1675885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_to_tool_file_result=$1
1676885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
1677885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *)
1678885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      $to_tool_file_cmd "$1"
1679885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_to_tool_file_result=$func_to_host_file_result
1680885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
1681885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  esac
1682885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1683885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_to_tool_file
1684885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1685885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1686885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_file_noop ARG
1687885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Copy ARG to func_to_host_file_result.
1688885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_file_noop ()
1689885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1690885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_to_host_file_result="$1"
1691885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1692885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_file_noop
1693885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1694885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1695885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_file_msys_to_w32 ARG
1696885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
1697885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# conversion to w32 is not available inside the cwrapper.  Returns result in
1698885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_to_host_file_result.
1699885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_file_msys_to_w32 ()
1700885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1701885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
1702885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_to_host_file_result="$1"
1703885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test -n "$1"; then
1704885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_convert_core_msys_to_w32 "$1"
1705885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
1706885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
1707885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_convert_file_check "$1" "$func_to_host_file_result"
1708885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1709885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_file_msys_to_w32
1710885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1711885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1712885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_file_cygwin_to_w32 ARG
1713885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert file name ARG from Cygwin to w32 format.  Returns result in
1714885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_to_host_file_result.
1715885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_file_cygwin_to_w32 ()
1716885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1717885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
1718885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_to_host_file_result="$1"
1719885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test -n "$1"; then
1720885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
1721885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # LT_CYGPATH in this case.
1722885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_to_host_file_result=`cygpath -m "$1"`
1723885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
1724885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_convert_file_check "$1" "$func_to_host_file_result"
1725885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1726885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_file_cygwin_to_w32
1727885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1728885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1729885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_file_nix_to_w32 ARG
1730885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert file name ARG from *nix to w32 format.  Requires a wine environment
1731885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# and a working winepath. Returns result in func_to_host_file_result.
1732885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_file_nix_to_w32 ()
1733885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1734885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
1735885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_to_host_file_result="$1"
1736885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test -n "$1"; then
1737885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_convert_core_file_wine_to_w32 "$1"
1738885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
1739885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
1740885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_convert_file_check "$1" "$func_to_host_file_result"
1741885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1742885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_file_nix_to_w32
1743885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1744885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1745885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_file_msys_to_cygwin ARG
1746885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
1747885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Returns result in func_to_host_file_result.
1748885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_file_msys_to_cygwin ()
1749885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1750885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
1751885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_to_host_file_result="$1"
1752885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test -n "$1"; then
1753885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_convert_core_msys_to_w32 "$1"
1754885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_cygpath -u "$func_convert_core_msys_to_w32_result"
1755885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_to_host_file_result="$func_cygpath_result"
1756885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
1757885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_convert_file_check "$1" "$func_to_host_file_result"
1758885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1759885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_file_msys_to_cygwin
1760885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1761885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1762885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_file_nix_to_cygwin ARG
1763885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
1764885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
1765885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# in func_to_host_file_result.
1766885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_file_nix_to_cygwin ()
1767885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1768885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
1769885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_to_host_file_result="$1"
1770885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test -n "$1"; then
1771885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
1772885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_convert_core_file_wine_to_w32 "$1"
1773885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
1774885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_to_host_file_result="$func_cygpath_result"
1775885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
1776885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_convert_file_check "$1" "$func_to_host_file_result"
1777885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1778885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_file_nix_to_cygwin
1779885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1780885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1781885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#############################################
1782885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# $build to $host PATH CONVERSION FUNCTIONS #
1783885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#############################################
1784885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# invoked via `$to_host_path_cmd ARG'
1785885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
1786885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# In each case, ARG is the path to be converted from $build to $host format.
1787885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# The result will be available in $func_to_host_path_result.
1788885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
1789885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Path separators are also converted from $build format to $host format.  If
1790885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ARG begins or ends with a path separator character, it is preserved (but
1791885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# converted to $host format) on output.
1792885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
1793885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# All path conversion functions are named using the following convention:
1794885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#   file name conversion function    : func_convert_file_X_to_Y ()
1795885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#   path conversion function         : func_convert_path_X_to_Y ()
1796885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# where, for any given $build/$host combination the 'X_to_Y' value is the
1797885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# same.  If conversion functions are added for new $build/$host combinations,
1798885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# the two new functions must follow this pattern, or func_init_to_host_path_cmd
1799885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# will break.
1800885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1801885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1802885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_init_to_host_path_cmd
1803885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Ensures that function "pointer" variable $to_host_path_cmd is set to the
1804885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# appropriate value, based on the value of $to_host_file_cmd.
1805885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgto_host_path_cmd=
1806885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_init_to_host_path_cmd ()
1807885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1808885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
1809885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test -z "$to_host_path_cmd"; then
1810885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
1811885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    to_host_path_cmd="func_convert_path_${func_stripname_result}"
1812885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
1813885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1814885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1815885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1816885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_to_host_path ARG
1817885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Converts the path ARG from $build format to $host format. Return result
1818885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# in func_to_host_path_result.
1819885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_to_host_path ()
1820885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1821885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
1822885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_init_to_host_path_cmd
1823885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $to_host_path_cmd "$1"
1824885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1825885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_to_host_path
1826885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1827885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1828885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_path_noop ARG
1829885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Copy ARG to func_to_host_path_result.
1830885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_path_noop ()
1831885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1832885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_to_host_path_result="$1"
1833885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1834885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_path_noop
1835885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1836885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1837885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_path_msys_to_w32 ARG
1838885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
1839885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# conversion to w32 is not available inside the cwrapper.  Returns result in
1840885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_to_host_path_result.
1841885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_path_msys_to_w32 ()
1842885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1843885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
1844885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_to_host_path_result="$1"
1845885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test -n "$1"; then
1846885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Remove leading and trailing path separator characters from ARG.  MSYS
1847885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
1848885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # and winepath ignores them completely.
1849885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_stripname : : "$1"
1850885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_to_host_path_tmp1=$func_stripname_result
1851885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
1852885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
1853885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_convert_path_check : ";" \
1854885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1855885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1856885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
1857885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1858885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_path_msys_to_w32
1859885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1860885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1861885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_path_cygwin_to_w32 ARG
1862885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert path ARG from Cygwin to w32 format.  Returns result in
1863885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_to_host_file_result.
1864885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_path_cygwin_to_w32 ()
1865885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1866885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
1867885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_to_host_path_result="$1"
1868885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test -n "$1"; then
1869885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # See func_convert_path_msys_to_w32:
1870885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_stripname : : "$1"
1871885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_to_host_path_tmp1=$func_stripname_result
1872885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
1873885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_convert_path_check : ";" \
1874885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1875885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1876885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
1877885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1878885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_path_cygwin_to_w32
1879885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1880885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1881885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_path_nix_to_w32 ARG
1882885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert path ARG from *nix to w32 format.  Requires a wine environment and
1883885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# a working winepath.  Returns result in func_to_host_file_result.
1884885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_path_nix_to_w32 ()
1885885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1886885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
1887885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_to_host_path_result="$1"
1888885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test -n "$1"; then
1889885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # See func_convert_path_msys_to_w32:
1890885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_stripname : : "$1"
1891885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_to_host_path_tmp1=$func_stripname_result
1892885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
1893885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
1894885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_convert_path_check : ";" \
1895885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1896885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1897885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
1898885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1899885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_path_nix_to_w32
1900885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1901885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1902885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_path_msys_to_cygwin ARG
1903885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
1904885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Returns result in func_to_host_file_result.
1905885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_path_msys_to_cygwin ()
1906885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1907885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
1908885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_to_host_path_result="$1"
1909885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test -n "$1"; then
1910885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # See func_convert_path_msys_to_w32:
1911885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_stripname : : "$1"
1912885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_to_host_path_tmp1=$func_stripname_result
1913885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
1914885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
1915885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_to_host_path_result="$func_cygpath_result"
1916885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_convert_path_check : : \
1917885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1918885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
1919885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
1920885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1921885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_path_msys_to_cygwin
1922885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1923885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1924885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_path_nix_to_cygwin ARG
1925885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
1926885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
1927885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_to_host_file_result.
1928885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_path_nix_to_cygwin ()
1929885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1930885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
1931885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_to_host_path_result="$1"
1932885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test -n "$1"; then
1933885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Remove leading and trailing path separator characters from
1934885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # ARG. msys behavior is inconsistent here, cygpath turns them
1935885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # into '.;' and ';.', and winepath ignores them completely.
1936885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_stripname : : "$1"
1937885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_to_host_path_tmp1=$func_stripname_result
1938885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
1939885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
1940885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_to_host_path_result="$func_cygpath_result"
1941885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_convert_path_check : : \
1942885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1943885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
1944885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
1945885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
1946885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_path_nix_to_cygwin
1947885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1948885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1949885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_mode_compile arg...
1950885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_mode_compile ()
1951885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
1952885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_debug
1953885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Get the compilation command and the source file.
1954885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    base_compile=
1955885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
1956885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    suppress_opt=yes
1957885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    suppress_output=
1958885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    arg_mode=normal
1959885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    libobj=
1960885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    later=
1961885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    pie_flag=
1962885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1963885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    for arg
1964885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    do
1965885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $arg_mode in
1966885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      arg  )
1967885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# do not "continue".  Instead, add this to base_compile
1968885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	lastarg="$arg"
1969885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	arg_mode=normal
1970885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
1971885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1972885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      target )
1973885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	libobj="$arg"
1974885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	arg_mode=normal
1975885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
1976885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
1977885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1978885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      normal )
1979885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Accept any command-line options.
1980885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $arg in
1981885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	-o)
1982885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  test -n "$libobj" && \
1983885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_fatal_error "you cannot specify \`-o' more than once"
1984885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  arg_mode=target
1985885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
1986885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
1987885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1988885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	-pie | -fpie | -fPIE)
1989885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          func_append pie_flag " $arg"
1990885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
1991885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
1992885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1993885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	-shared | -static | -prefer-pic | -prefer-non-pic)
1994885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append later " $arg"
1995885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
1996885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
1997885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
1998885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	-no-suppress)
1999885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  suppress_opt=no
2000885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
2001885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
2002885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2003885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	-Xcompiler)
2004885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
2005885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue      #  The current "srcfile" will either be retained or
2006885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;            #  replaced later.  I would guess that would be a bug.
2007885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2008885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	-Wc,*)
2009885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_stripname '-Wc,' '' "$arg"
2010885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  args=$func_stripname_result
2011885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  lastarg=
2012885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  save_ifs="$IFS"; IFS=','
2013885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for arg in $args; do
2014885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    IFS="$save_ifs"
2015885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append_quoted lastarg "$arg"
2016885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
2017885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  IFS="$save_ifs"
2018885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_stripname ' ' '' "$lastarg"
2019885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  lastarg=$func_stripname_result
2020885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2021885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Add the arguments to base_compile.
2022885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append base_compile " $lastarg"
2023885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
2024885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
2025885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2026885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*)
2027885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Accept the current argument as the source file.
2028885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # The previous "srcfile" becomes the current argument.
2029885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  #
2030885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  lastarg="$srcfile"
2031885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  srcfile="$arg"
2032885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
2033885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac  #  case $arg
2034885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
2035885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac    #  case $arg_mode
2036885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2037885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Aesthetically quote the previous argument.
2038885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_append_quoted base_compile "$lastarg"
2039885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    done # for arg
2040885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2041885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case $arg_mode in
2042885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    arg)
2043885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_fatal_error "you must specify an argument for -Xcompile"
2044885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
2045885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    target)
2046885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_fatal_error "you must specify a target with \`-o'"
2047885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
2048885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *)
2049885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Get the name of the library object.
2050885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test -z "$libobj" && {
2051885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_basename "$srcfile"
2052885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	libobj="$func_basename_result"
2053885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      }
2054885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
2055885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
2056885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2057885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Recognize several different file suffixes.
2058885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # If the user specifies -o file.o, it is replaced with file.lo
2059885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case $libobj in
2060885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *.[cCFSifmso] | \
2061885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *.ada | *.adb | *.ads | *.asm | \
2062885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
2063885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
2064885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_xform "$libobj"
2065885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      libobj=$func_xform_result
2066885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
2067885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
2068885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2069885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case $libobj in
2070885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
2071885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *)
2072885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_fatal_error "cannot determine name of library object from \`$libobj'"
2073885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
2074885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
2075885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2076885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_infer_tag $base_compile
2077885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2078885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    for arg in $later; do
2079885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $arg in
2080885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -shared)
2081885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	test "$build_libtool_libs" != yes && \
2082885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_fatal_configuration "can not build a shared library"
2083885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	build_old_libs=no
2084885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
2085885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
2086885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2087885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -static)
2088885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	build_libtool_libs=no
2089885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	build_old_libs=yes
2090885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
2091885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
2092885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2093885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -prefer-pic)
2094885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	pic_mode=yes
2095885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
2096885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
2097885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2098885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -prefer-non-pic)
2099885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	pic_mode=no
2100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
2101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
2102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
2103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    done
2104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_quote_for_eval "$libobj"
2106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    test "X$libobj" != "X$func_quote_for_eval_result" \
2107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
2108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      && func_warning "libobj name \`$libobj' may not contain shell special characters."
2109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_dirname_and_basename "$obj" "/" ""
2110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    objname="$func_basename_result"
2111885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    xdir="$func_dirname_result"
2112885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    lobj=${xdir}$objdir/$objname
2113885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2114885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    test -z "$base_compile" && \
2115885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_fatal_help "you must specify a compilation command"
2116885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2117885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Delete any leftover library objects.
2118885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$build_old_libs" = yes; then
2119885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      removelist="$obj $lobj $libobj ${libobj}T"
2120885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    else
2121885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      removelist="$lobj $libobj ${libobj}T"
2122885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
2123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2124885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # On Cygwin there's no "real" PIC flag so we must build both object types
2125885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case $host_os in
2126885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    cygwin* | mingw* | pw32* | os2* | cegcc*)
2127885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      pic_mode=default
2128885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
2129885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
2130885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
2131885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # non-PIC code in shared libraries is not supported
2132885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      pic_mode=default
2133885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
2134885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2135885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Calculate the filename of the output object if compiler does
2136885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # not support -o with -c
2137885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$compiler_c_o" = no; then
2138885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
2139885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      lockfile="$output_obj.lock"
2140885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    else
2141885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      output_obj=
2142885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      need_locks=no
2143885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      lockfile=
2144885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
2145885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2146885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Lock this critical section if it is needed
2147885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # We use this script file to make the link, it avoids creating a new file
2148885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$need_locks" = yes; then
2149885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
2150885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_echo "Waiting for $lockfile to be removed"
2151885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	sleep 2
2152885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
2153885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    elif test "$need_locks" = warn; then
2154885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -f "$lockfile"; then
2155885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	$ECHO "\
2156885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org*** ERROR, $lockfile exists and contains:
2157885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org`cat $lockfile 2>/dev/null`
2158885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2159885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThis indicates that another process is trying to use the same
2160885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtemporary object file, and libtool could not work around it because
2161885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgyour compiler does not support \`-c' and \`-o' together.  If you
2162885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgrepeat this compilation, it may succeed, by chance, but you had better
2163885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgavoid parallel builds (make -j) in this platform, or get a better
2164885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcompiler."
2165885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2166885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	$opt_dry_run || $RM $removelist
2167885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	exit $EXIT_FAILURE
2168885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2169885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_append removelist " $output_obj"
2170885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      $ECHO "$srcfile" > "$lockfile"
2171885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
2172885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2173885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_dry_run || $RM $removelist
2174885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_append removelist " $lockfile"
2175885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
2176885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2177885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
2178885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    srcfile=$func_to_tool_file_result
2179885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_quote_for_eval "$srcfile"
2180885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    qsrcfile=$func_quote_for_eval_result
2181885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2182885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Only build a PIC object if we are building libtool libraries.
2183885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$build_libtool_libs" = yes; then
2184885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Without this assignment, base_compile gets emptied.
2185885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fbsd_hideous_sh_bug=$base_compile
2186885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2187885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$pic_mode" != no; then
2188885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	command="$base_compile $qsrcfile $pic_flag"
2189885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      else
2190885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Don't build PIC code
2191885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	command="$base_compile $qsrcfile"
2192885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2193885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2194885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_mkdir_p "$xdir$objdir"
2195885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2196885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -z "$output_obj"; then
2197885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Place PIC objects in $objdir
2198885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append command " -o $lobj"
2199885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2200885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2201885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_show_eval_locale "$command"	\
2202885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
2203885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2204885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$need_locks" = warn &&
2205885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
2206885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	$ECHO "\
2207885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org*** ERROR, $lockfile contains:
2208885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org`cat $lockfile 2>/dev/null`
2209885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2210885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgbut it should contain:
2211885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$srcfile
2212885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2213885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThis indicates that another process is trying to use the same
2214885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtemporary object file, and libtool could not work around it because
2215885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgyour compiler does not support \`-c' and \`-o' together.  If you
2216885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgrepeat this compilation, it may succeed, by chance, but you had better
2217885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgavoid parallel builds (make -j) in this platform, or get a better
2218885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcompiler."
2219885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2220885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	$opt_dry_run || $RM $removelist
2221885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	exit $EXIT_FAILURE
2222885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2223885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2224885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Just move the object if needed, then go on to compile the next one
2225885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
2226885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_show_eval '$MV "$output_obj" "$lobj"' \
2227885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
2228885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2229885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2230885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Allow error messages only from the first compilation.
2231885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$suppress_opt" = yes; then
2232885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	suppress_output=' >/dev/null 2>&1'
2233885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2234885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
2235885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2236885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Only build a position-dependent object if we build old libraries.
2237885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$build_old_libs" = yes; then
2238885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$pic_mode" != yes; then
2239885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Don't build PIC code
2240885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	command="$base_compile $qsrcfile$pie_flag"
2241885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      else
2242885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	command="$base_compile $qsrcfile $pic_flag"
2243885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2244885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$compiler_c_o" = yes; then
2245885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append command " -o $obj"
2246885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2247885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2248885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Suppress compiler output if we already did a PIC compilation.
2249885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_append command "$suppress_output"
2250885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_show_eval_locale "$command" \
2251885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
2252885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2253885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$need_locks" = warn &&
2254885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
2255885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	$ECHO "\
2256885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org*** ERROR, $lockfile contains:
2257885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org`cat $lockfile 2>/dev/null`
2258885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2259885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgbut it should contain:
2260885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$srcfile
2261885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2262885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThis indicates that another process is trying to use the same
2263885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtemporary object file, and libtool could not work around it because
2264885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgyour compiler does not support \`-c' and \`-o' together.  If you
2265885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgrepeat this compilation, it may succeed, by chance, but you had better
2266885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgavoid parallel builds (make -j) in this platform, or get a better
2267885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcompiler."
2268885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2269885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	$opt_dry_run || $RM $removelist
2270885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	exit $EXIT_FAILURE
2271885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2272885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2273885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Just move the object if needed
2274885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
2275885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_show_eval '$MV "$output_obj" "$obj"' \
2276885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
2277885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2278885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
2279885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2280885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_dry_run || {
2281885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
2282885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2283885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Unlock the critical section if it was locked
2284885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$need_locks" != no; then
2285885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	removelist=$lockfile
2286885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        $RM "$lockfile"
2287885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2288885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
2289885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2290885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    exit $EXIT_SUCCESS
2291885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
2292885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2293885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$opt_help || {
2294885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
2295885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
2296885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2297885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_mode_help ()
2298885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
2299885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # We need to display help for each of the modes.
2300885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case $opt_mode in
2301885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      "")
2302885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        # Generic help is extracted from the usage comments
2303885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        # at the start of this file.
2304885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_help
2305885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        ;;
2306885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2307885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      clean)
2308885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        $ECHO \
2309885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
2310885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2311885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgRemove files from the build directory.
2312885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2313885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgRM is the name of the program to use to delete files associated with each FILE
2314885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
2315885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgto RM.
2316885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2317885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgIf FILE is a libtool library, object or program, all the files associated
2318885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgwith it are deleted. Otherwise, only FILE itself is deleted using RM."
2319885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        ;;
2320885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2321885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      compile)
2322885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      $ECHO \
2323885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
2324885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2325885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgCompile a source file into a libtool library object.
2326885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2327885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThis mode accepts the following additional options:
2328885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2329885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
2330885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -no-suppress      do not suppress compiler output for multiple passes
2331885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -prefer-pic       try to build PIC objects only
2332885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -prefer-non-pic   try to build non-PIC objects only
2333885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -shared           do not build a \`.o' file suitable for static linking
2334885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -static           only build a \`.o' file suitable for static linking
2335885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -Wc,FLAG          pass FLAG directly to the compiler
2336885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2337885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
2338885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfrom the given SOURCEFILE.
2339885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2340885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThe output file name is determined by removing the directory component from
2341885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgSOURCEFILE, then substituting the C source code suffix \`.c' with the
2342885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglibrary object suffix, \`.lo'."
2343885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        ;;
2344885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2345885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      execute)
2346885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        $ECHO \
2347885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
2348885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2349885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgAutomatically set library path, then run a program.
2350885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2351885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThis mode accepts the following additional options:
2352885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2353885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -dlopen FILE      add the directory containing FILE to the library path
2354885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2355885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThis mode sets the library path environment variable according to \`-dlopen'
2356885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgflags.
2357885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2358885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgIf any of the ARGS are libtool executable wrappers, then they are translated
2359885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orginto their corresponding uninstalled binary, and any of their required library
2360885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgdirectories are added to the library path.
2361885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2362885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThen, COMMAND is executed, with ARGS as arguments."
2363885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        ;;
2364885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2365885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      finish)
2366885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        $ECHO \
2367885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
2368885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2369885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgComplete the installation of libtool libraries.
2370885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2371885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEach LIBDIR is a directory that contains libtool libraries.
2372885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2373885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThe commands that this mode executes may require superuser privileges.  Use
2374885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgthe \`--dry-run' option if you just want to see what would be executed."
2375885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        ;;
2376885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2377885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      install)
2378885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        $ECHO \
2379885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
2380885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2381885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgInstall executables or libraries.
2382885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2383885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgINSTALL-COMMAND is the installation command.  The first component should be
2384885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgeither the \`install' or \`cp' program.
2385885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2386885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThe following components of INSTALL-COMMAND are treated specially:
2387885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2388885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
2389885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2390885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThe rest of the components are interpreted as arguments to that command (only
2391885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgBSD-compatible install options are recognized)."
2392885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        ;;
2393885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2394885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      link)
2395885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        $ECHO \
2396885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
2397885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2398885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgLink object files or libraries together to form another library, or to
2399885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcreate an executable program.
2400885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2401885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgLINK-COMMAND is a command using the C compiler that you would use to create
2402885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orga program from several object files.
2403885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2404885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThe following components of LINK-COMMAND are treated specially:
2405885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2406885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -all-static       do not do any dynamic linking at all
2407885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -avoid-version    do not add a version suffix if possible
2408885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -bindir BINDIR    specify path to binaries directory (for systems where
2409885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                    libraries must be found in the PATH setting at runtime)
2410885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
2411885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
2412885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
2413885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -export-symbols SYMFILE
2414885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                    try to export only the symbols listed in SYMFILE
2415885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -export-symbols-regex REGEX
2416885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                    try to export only the symbols matching REGEX
2417885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -LLIBDIR          search LIBDIR for required installed libraries
2418885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -lNAME            OUTPUT-FILE requires the installed library libNAME
2419885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -module           build a library that can dlopened
2420885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -no-fast-install  disable the fast-install mode
2421885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -no-install       link a not-installable executable
2422885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -no-undefined     declare that a library does not refer to external symbols
2423885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
2424885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -objectlist FILE  Use a list of object files found in FILE to specify objects
2425885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -precious-files-regex REGEX
2426885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                    don't remove output files matching REGEX
2427885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -release RELEASE  specify package release information
2428885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
2429885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
2430885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -shared           only do dynamic linking of libtool libraries
2431885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -shrext SUFFIX    override the standard shared library file extension
2432885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -static           do not do any dynamic linking of uninstalled libtool libraries
2433885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -static-libtool-libs
2434885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                    do not do any dynamic linking of libtool libraries
2435885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -version-info CURRENT[:REVISION[:AGE]]
2436885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                    specify library version info [each variable defaults to 0]
2437885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -weak LIBNAME     declare that the target provides the LIBNAME interface
2438885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -Wc,FLAG
2439885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
2440885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -Wl,FLAG
2441885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
2442885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
2443885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2444885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgAll other options (arguments beginning with \`-') are ignored.
2445885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2446885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEvery other argument is treated as a filename.  Files ending in \`.la' are
2447885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtreated as uninstalled libtool libraries, other files are standard or library
2448885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgobject files.
2449885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2450885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
2451885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgonly library objects (\`.lo' files) may be specified, and \`-rpath' is
2452885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgrequired, except when creating a convenience library.
2453885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2454885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
2455885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgusing \`ar' and \`ranlib', or on Windows using \`lib'.
2456885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2457885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
2458885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgis created, otherwise an executable program is created."
2459885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        ;;
2460885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2461885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      uninstall)
2462885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        $ECHO \
2463885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
2464885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2465885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgRemove libraries from an installation directory.
2466885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2467885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgRM is the name of the program to use to delete files associated with each FILE
2468885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
2469885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgto RM.
2470885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2471885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgIf FILE is a libtool library, all the files associated with it are deleted.
2472885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgOtherwise, only FILE itself is deleted using RM."
2473885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        ;;
2474885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2475885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *)
2476885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_fatal_help "invalid operation mode \`$opt_mode'"
2477885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        ;;
2478885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
2479885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2480885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    echo
2481885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $ECHO "Try \`$progname --help' for more information about other modes."
2482885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
2483885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2484885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Now that we've collected a possible --mode arg, show help if necessary
2485885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgif $opt_help; then
2486885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test "$opt_help" = :; then
2487885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_mode_help
2488885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  else
2489885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    {
2490885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_help noexit
2491885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      for opt_mode in compile link execute install finish uninstall clean; do
2492885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_mode_help
2493885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
2494885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
2495885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    {
2496885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_help noexit
2497885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      for opt_mode in compile link execute install finish uninstall clean; do
2498885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	echo
2499885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_mode_help
2500885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
2501885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    } |
2502885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    sed '1d
2503885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      /^When reporting/,/^Report/{
2504885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	H
2505885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	d
2506885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      }
2507885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      $x
2508885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      /information about other modes/d
2509885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      /more detailed .*MODE/d
2510885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
2511885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
2512885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  exit $?
2513885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfi
2514885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2515885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2516885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_mode_execute arg...
2517885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_mode_execute ()
2518885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
2519885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_debug
2520885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # The first argument is the command name.
2521885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    cmd="$nonopt"
2522885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    test -z "$cmd" && \
2523885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_fatal_help "you must specify a COMMAND"
2524885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2525885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Handle -dlopen flags immediately.
2526885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    for file in $opt_dlopen; do
2527885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test -f "$file" \
2528885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	|| func_fatal_help "\`$file' is not a file"
2529885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2530885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      dir=
2531885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $file in
2532885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *.la)
2533885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_resolve_sysroot "$file"
2534885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	file=$func_resolve_sysroot_result
2535885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2536885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Check to see that this really is a libtool archive.
2537885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_lalib_unsafe_p "$file" \
2538885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  || func_fatal_help "\`$lib' is not a valid libtool archive"
2539885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2540885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Read the libtool library.
2541885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	dlname=
2542885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	library_names=
2543885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_source "$file"
2544885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2545885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Skip this library if it cannot be dlopened.
2546885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -z "$dlname"; then
2547885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Warn if it was a shared library.
2548885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  test -n "$library_names" && \
2549885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_warning "\`$file' was not linked with \`-export-dynamic'"
2550885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
2551885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
2552885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2553885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_dirname "$file" "" "."
2554885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	dir="$func_dirname_result"
2555885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2556885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -f "$dir/$objdir/$dlname"; then
2557885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append dir "/$objdir"
2558885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
2559885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test ! -f "$dir/$dlname"; then
2560885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
2561885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
2562885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
2563885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
2564885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2565885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *.lo)
2566885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Just add the directory containing the .lo file.
2567885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_dirname "$file" "" "."
2568885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	dir="$func_dirname_result"
2569885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
2570885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2571885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *)
2572885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
2573885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
2574885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
2575885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
2576885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2577885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Get the absolute pathname.
2578885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      absdir=`cd "$dir" && pwd`
2579885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test -n "$absdir" && dir="$absdir"
2580885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2581885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Now add the directory to shlibpath_var.
2582885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if eval "test -z \"\$$shlibpath_var\""; then
2583885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	eval "$shlibpath_var=\"\$dir\""
2584885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      else
2585885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
2586885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2587885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    done
2588885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2589885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # This variable tells wrapper scripts just to set shlibpath_var
2590885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # rather than running their programs.
2591885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    libtool_execute_magic="$magic"
2592885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2593885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Check if any of the arguments is a wrapper script.
2594885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    args=
2595885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    for file
2596885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    do
2597885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $file in
2598885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -* | *.la | *.lo ) ;;
2599885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *)
2600885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Do a test to see if this is really a libtool program.
2601885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if func_ltwrapper_script_p "$file"; then
2602885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_source "$file"
2603885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Transform arg to wrapped name.
2604885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  file="$progdir/$program"
2605885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	elif func_ltwrapper_executable_p "$file"; then
2606885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_ltwrapper_scriptname "$file"
2607885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_source "$func_ltwrapper_scriptname_result"
2608885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Transform arg to wrapped name.
2609885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  file="$progdir/$program"
2610885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
2611885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
2612885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
2613885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Quote arguments (to preserve shell metacharacters).
2614885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_append_quoted args "$file"
2615885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    done
2616885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2617885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "X$opt_dry_run" = Xfalse; then
2618885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$shlibpath_var"; then
2619885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Export the shlibpath_var.
2620885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	eval "export $shlibpath_var"
2621885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2622885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2623885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Restore saved environment variables
2624885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
2625885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      do
2626885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	eval "if test \"\${save_$lt_var+set}\" = set; then
2627885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                $lt_var=\$save_$lt_var; export $lt_var
2628885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      else
2629885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		$lt_unset $lt_var
2630885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi"
2631885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
2632885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2633885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Now prepare to actually exec the command.
2634885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      exec_cmd="\$cmd$args"
2635885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    else
2636885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Display what would be done.
2637885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$shlibpath_var"; then
2638885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
2639885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	echo "export $shlibpath_var"
2640885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2641885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      $ECHO "$cmd$args"
2642885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      exit $EXIT_SUCCESS
2643885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
2644885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
2645885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2646885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtest "$opt_mode" = execute && func_mode_execute ${1+"$@"}
2647885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2648885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2649885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_mode_finish arg...
2650885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_mode_finish ()
2651885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
2652885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_debug
2653885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    libs=
2654885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    libdirs=
2655885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    admincmds=
2656885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2657885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    for opt in "$nonopt" ${1+"$@"}
2658885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    do
2659885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -d "$opt"; then
2660885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append libdirs " $opt"
2661885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2662885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      elif test -f "$opt"; then
2663885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if func_lalib_unsafe_p "$opt"; then
2664885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append libs " $opt"
2665885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
2666885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_warning "\`$opt' is not a valid libtool archive"
2667885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
2668885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2669885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      else
2670885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_fatal_error "invalid argument \`$opt'"
2671885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2672885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    done
2673885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2674885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test -n "$libs"; then
2675885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$lt_sysroot"; then
2676885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
2677885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
2678885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      else
2679885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        sysroot_cmd=
2680885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2681885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2682885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Remove sysroot references
2683885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if $opt_dry_run; then
2684885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        for lib in $libs; do
2685885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
2686885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        done
2687885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      else
2688885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        tmpdir=`func_mktempdir`
2689885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        for lib in $libs; do
2690885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
2691885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    > $tmpdir/tmp-la
2692885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  mv -f $tmpdir/tmp-la $lib
2693885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done
2694885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        ${RM}r "$tmpdir"
2695885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2696885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
2697885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2698885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2699885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      for libdir in $libdirs; do
2700885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$finish_cmds"; then
2701885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Do each command in the finish commands.
2702885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
2703885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org'"$cmd"'"'
2704885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
2705885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$finish_eval"; then
2706885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Do the single finish_eval.
2707885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  eval cmds=\"$finish_eval\"
2708885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  $opt_dry_run || eval "$cmds" || func_append admincmds "
2709885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org       $cmds"
2710885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
2711885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
2712885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
2713885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2714885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Exit here if they wanted silent mode.
2715885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_silent && exit $EXIT_SUCCESS
2716885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2717885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2718885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      echo "----------------------------------------------------------------------"
2719885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      echo "Libraries have been installed in:"
2720885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      for libdir in $libdirs; do
2721885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	$ECHO "   $libdir"
2722885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
2723885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      echo
2724885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      echo "If you ever happen to want to link against installed libraries"
2725885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      echo "in a given directory, LIBDIR, you must either use libtool, and"
2726885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
2727885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      echo "flag during linking and do at least one of the following:"
2728885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$shlibpath_var"; then
2729885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
2730885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	echo "     during execution"
2731885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2732885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$runpath_var"; then
2733885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
2734885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	echo "     during linking"
2735885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2736885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$hardcode_libdir_flag_spec"; then
2737885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	libdir=LIBDIR
2738885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	eval flag=\"$hardcode_libdir_flag_spec\"
2739885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2740885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	$ECHO "   - use the \`$flag' linker flag"
2741885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2742885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$admincmds"; then
2743885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	$ECHO "   - have your system administrator run these commands:$admincmds"
2744885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2745885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -f /etc/ld.so.conf; then
2746885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
2747885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2748885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      echo
2749885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2750885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      echo "See any operating system documentation about shared libraries for"
2751885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $host in
2752885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	solaris2.[6789]|solaris2.1[0-9])
2753885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
2754885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  echo "pages."
2755885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
2756885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*)
2757885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
2758885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
2759885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
2760885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      echo "----------------------------------------------------------------------"
2761885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
2762885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    exit $EXIT_SUCCESS
2763885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
2764885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2765885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtest "$opt_mode" = finish && func_mode_finish ${1+"$@"}
2766885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2767885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2768885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_mode_install arg...
2769885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_mode_install ()
2770885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
2771885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_debug
2772885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # There may be an optional sh(1) argument at the beginning of
2773885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # install_prog (especially on Windows NT).
2774885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
2775885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org       # Allow the use of GNU shtool's install command.
2776885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org       case $nonopt in *shtool*) :;; *) false;; esac; then
2777885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Aesthetically quote it.
2778885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_quote_for_eval "$nonopt"
2779885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      install_prog="$func_quote_for_eval_result "
2780885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      arg=$1
2781885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      shift
2782885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    else
2783885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      install_prog=
2784885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      arg=$nonopt
2785885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
2786885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2787885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # The real first argument should be the name of the installation program.
2788885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Aesthetically quote it.
2789885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_quote_for_eval "$arg"
2790885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_append install_prog "$func_quote_for_eval_result"
2791885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    install_shared_prog=$install_prog
2792885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case " $install_prog " in
2793885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *[\\\ /]cp\ *) install_cp=: ;;
2794885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *) install_cp=false ;;
2795885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
2796885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2797885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # We need to accept at least all the BSD install flags.
2798885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    dest=
2799885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    files=
2800885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    opts=
2801885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    prev=
2802885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    install_type=
2803885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    isdir=no
2804885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    stripme=
2805885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    no_mode=:
2806885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    for arg
2807885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    do
2808885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      arg2=
2809885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$dest"; then
2810885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append files " $dest"
2811885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	dest=$arg
2812885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
2813885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2814885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2815885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $arg in
2816885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -d) isdir=yes ;;
2817885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -f)
2818885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if $install_cp; then :; else
2819885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prev=$arg
2820885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
2821885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
2822885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -g | -m | -o)
2823885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	prev=$arg
2824885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
2825885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -s)
2826885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	stripme=" -s"
2827885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
2828885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
2829885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -*)
2830885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
2831885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *)
2832885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# If the previous option needed an argument, then skip it.
2833885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$prev"; then
2834885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
2835885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    arg2=$install_override_mode
2836885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    no_mode=false
2837885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
2838885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prev=
2839885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
2840885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  dest=$arg
2841885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
2842885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
2843885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
2844885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
2845885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2846885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Aesthetically quote the argument.
2847885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_quote_for_eval "$arg"
2848885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_append install_prog " $func_quote_for_eval_result"
2849885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$arg2"; then
2850885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_quote_for_eval "$arg2"
2851885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2852885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_append install_shared_prog " $func_quote_for_eval_result"
2853885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    done
2854885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2855885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    test -z "$install_prog" && \
2856885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_fatal_help "you must specify an install program"
2857885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2858885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    test -n "$prev" && \
2859885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_fatal_help "the \`$prev' option requires an argument"
2860885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2861885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test -n "$install_override_mode" && $no_mode; then
2862885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if $install_cp; then :; else
2863885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_quote_for_eval "$install_override_mode"
2864885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append install_shared_prog " -m $func_quote_for_eval_result"
2865885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2866885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
2867885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2868885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test -z "$files"; then
2869885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -z "$dest"; then
2870885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_fatal_help "no file or destination specified"
2871885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      else
2872885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_fatal_help "you must specify a destination"
2873885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
2874885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
2875885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2876885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Strip any trailing slash from the destination.
2877885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_stripname '' '/' "$dest"
2878885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    dest=$func_stripname_result
2879885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2880885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Check to see that the destination is a directory.
2881885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    test -d "$dest" && isdir=yes
2882885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$isdir" = yes; then
2883885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      destdir="$dest"
2884885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      destname=
2885885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    else
2886885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_dirname_and_basename "$dest" "" "."
2887885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      destdir="$func_dirname_result"
2888885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      destname="$func_basename_result"
2889885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2890885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Not a directory, so check to see that there is only one file specified.
2891885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      set dummy $files; shift
2892885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test "$#" -gt 1 && \
2893885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_fatal_help "\`$dest' is not a directory"
2894885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
2895885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case $destdir in
2896885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    [\\/]* | [A-Za-z]:[\\/]*) ;;
2897885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *)
2898885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      for file in $files; do
2899885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $file in
2900885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*.lo) ;;
2901885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*)
2902885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_fatal_help "\`$destdir' must be an absolute directory name"
2903885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
2904885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
2905885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
2906885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
2907885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
2908885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2909885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # This variable tells wrapper scripts just to set variables rather
2910885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # than running their programs.
2911885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    libtool_install_magic="$magic"
2912885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2913885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    staticlibs=
2914885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    future_libdirs=
2915885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    current_libdirs=
2916885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    for file in $files; do
2917885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2918885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Do each installation.
2919885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $file in
2920885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *.$libext)
2921885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Do the static libraries later.
2922885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append staticlibs " $file"
2923885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
2924885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2925885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *.la)
2926885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_resolve_sysroot "$file"
2927885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	file=$func_resolve_sysroot_result
2928885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2929885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Check to see that this really is a libtool archive.
2930885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_lalib_unsafe_p "$file" \
2931885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  || func_fatal_help "\`$file' is not a valid libtool archive"
2932885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2933885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	library_names=
2934885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	old_library=
2935885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	relink_command=
2936885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_source "$file"
2937885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2938885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Add the libdir to current_libdirs if it is the destination.
2939885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "X$destdir" = "X$libdir"; then
2940885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case "$current_libdirs " in
2941885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *" $libdir "*) ;;
2942885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *) func_append current_libdirs " $libdir" ;;
2943885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
2944885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
2945885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Note the libdir as a future libdir.
2946885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case "$future_libdirs " in
2947885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *" $libdir "*) ;;
2948885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *) func_append future_libdirs " $libdir" ;;
2949885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
2950885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
2951885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2952885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_dirname "$file" "/" ""
2953885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	dir="$func_dirname_result"
2954885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append dir "$objdir"
2955885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2956885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$relink_command"; then
2957885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Determine the prefix the user has applied to our future dir.
2958885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
2959885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2960885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Don't allow the user to place us outside of our expected
2961885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # location b/c this prevents finding dependent libraries that
2962885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # are installed to the same prefix.
2963885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # At present, this check doesn't affect windows .dll's that
2964885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # are installed into $libdir/../bin (currently, that works fine)
2965885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # but it's something to keep an eye on.
2966885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  test "$inst_prefix_dir" = "$destdir" && \
2967885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
2968885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2969885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$inst_prefix_dir"; then
2970885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Stick the inst_prefix_dir data into the link command.
2971885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
2972885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
2973885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
2974885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
2975885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2976885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_warning "relinking \`$file'"
2977885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_show_eval "$relink_command" \
2978885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
2979885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
2980885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2981885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# See the names of the shared library.
2982885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	set dummy $library_names; shift
2983885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$1"; then
2984885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  realname="$1"
2985885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  shift
2986885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2987885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  srcname="$realname"
2988885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  test -n "$relink_command" && srcname="$realname"T
2989885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
2990885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Install the shared library and build the symlinks.
2991885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
2992885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      'exit $?'
2993885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  tstripme="$stripme"
2994885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $host_os in
2995885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  cygwin* | mingw* | pw32* | cegcc*)
2996885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case $realname in
2997885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *.dll.a)
2998885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      tstripme=""
2999885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      ;;
3000885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
3001885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
3002885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
3003885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$tstripme" && test -n "$striplib"; then
3004885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
3005885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
3006885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3007885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$#" -gt 0; then
3008885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Delete the old symlinks, and create new ones.
3009885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Try `ln -sf' first, because the `ln' binary might depend on
3010885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
3011885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # so we also need to try rm && ln -s.
3012885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    for linkname
3013885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    do
3014885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      test "$linkname" != "$realname" \
3015885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
3016885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done
3017885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
3018885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3019885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Do each command in the postinstall commands.
3020885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  lib="$destdir/$realname"
3021885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_execute_cmds "$postinstall_cmds" 'exit $?'
3022885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
3023885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3024885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Install the pseudo-library for information purposes.
3025885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_basename "$file"
3026885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	name="$func_basename_result"
3027885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	instname="$dir/$name"i
3028885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
3029885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3030885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Maybe install the static library, too.
3031885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
3032885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
3033885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3034885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *.lo)
3035885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Install (i.e. copy) a libtool object.
3036885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3037885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Figure out destination file name, if it wasn't already specified.
3038885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$destname"; then
3039885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  destfile="$destdir/$destname"
3040885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
3041885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_basename "$file"
3042885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  destfile="$func_basename_result"
3043885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  destfile="$destdir/$destfile"
3044885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
3045885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3046885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Deduce the name of the destination old-style object file.
3047885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $destfile in
3048885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*.lo)
3049885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_lo2o "$destfile"
3050885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  staticdest=$func_lo2o_result
3051885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
3052885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*.$objext)
3053885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  staticdest="$destfile"
3054885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  destfile=
3055885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
3056885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*)
3057885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
3058885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
3059885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
3060885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3061885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Install the libtool object if requested.
3062885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	test -n "$destfile" && \
3063885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_show_eval "$install_prog $file $destfile" 'exit $?'
3064885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3065885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Install the old object if enabled.
3066885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$build_old_libs" = yes; then
3067885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Deduce the name of the old-style object file.
3068885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_lo2o "$file"
3069885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  staticobj=$func_lo2o_result
3070885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
3071885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
3072885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	exit $EXIT_SUCCESS
3073885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
3074885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3075885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *)
3076885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Figure out destination file name, if it wasn't already specified.
3077885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$destname"; then
3078885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  destfile="$destdir/$destname"
3079885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
3080885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_basename "$file"
3081885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  destfile="$func_basename_result"
3082885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  destfile="$destdir/$destfile"
3083885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
3084885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3085885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# If the file is missing, and there is a .exe on the end, strip it
3086885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# because it is most likely a libtool script we actually want to
3087885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# install
3088885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	stripped_ext=""
3089885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $file in
3090885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *.exe)
3091885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test ! -f "$file"; then
3092885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_stripname '' '.exe' "$file"
3093885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      file=$func_stripname_result
3094885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      stripped_ext=".exe"
3095885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
3096885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
3097885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
3098885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3099885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Do a test to see if this is really a libtool program.
3100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $host in
3101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*cygwin* | *mingw*)
3102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if func_ltwrapper_executable_p "$file"; then
3103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_ltwrapper_scriptname "$file"
3104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      wrapper=$func_ltwrapper_scriptname_result
3105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
3106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_stripname '' '.exe' "$file"
3107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      wrapper=$func_stripname_result
3108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
3109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
3110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*)
3111885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    wrapper=$file
3112885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
3113885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
3114885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if func_ltwrapper_script_p "$wrapper"; then
3115885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  notinst_deplibs=
3116885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  relink_command=
3117885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3118885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_source "$wrapper"
3119885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3120885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Check the variables that should have been set.
3121885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  test -z "$generated_by_libtool_version" && \
3122885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
3123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3124885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  finalize=yes
3125885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for lib in $notinst_deplibs; do
3126885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Check to see that each library is installed.
3127885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    libdir=
3128885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -f "$lib"; then
3129885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_source "$lib"
3130885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
3131885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
3132885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -n "$libdir" && test ! -f "$libfile"; then
3133885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_warning "\`$lib' has not been installed in \`$libdir'"
3134885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      finalize=no
3135885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
3136885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
3137885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3138885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  relink_command=
3139885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_source "$wrapper"
3140885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3141885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  outputname=
3142885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$fast_install" = no && test -n "$relink_command"; then
3143885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $opt_dry_run || {
3144885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test "$finalize" = yes; then
3145885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        tmpdir=`func_mktempdir`
3146885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_basename "$file$stripped_ext"
3147885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		file="$func_basename_result"
3148885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        outputname="$tmpdir/$file"
3149885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        # Replace the output file specification.
3150885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
3151885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3152885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        $opt_silent || {
3153885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	          func_quote_for_expand "$relink_command"
3154885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  eval "func_echo $func_quote_for_expand_result"
3155885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        }
3156885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        if eval "$relink_command"; then :
3157885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	          else
3158885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_error "error: relink \`$file' with the above command before installing it"
3159885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  $opt_dry_run || ${RM}r "$tmpdir"
3160885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  continue
3161885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        fi
3162885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        file="$outputname"
3163885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      else
3164885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        func_warning "cannot relink \`$file'"
3165885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
3166885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    }
3167885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
3168885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Install the binary that we compiled earlier.
3169885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
3170885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
3171885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
3172885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3173885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# remove .exe since cygwin /usr/bin/install will append another
3174885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# one anyway
3175885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $install_prog,$host in
3176885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*/usr/bin/install*,*cygwin*)
3177885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $file:$destfile in
3178885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *.exe:*.exe)
3179885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # this is ok
3180885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
3181885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *.exe:*)
3182885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    destfile=$destfile.exe
3183885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
3184885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *:*.exe)
3185885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_stripname '' '.exe' "$destfile"
3186885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    destfile=$func_stripname_result
3187885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
3188885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
3189885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
3190885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
3191885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
3192885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	$opt_dry_run || if test -n "$outputname"; then
3193885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ${RM}r "$tmpdir"
3194885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
3195885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
3196885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
3197885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    done
3198885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3199885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    for file in $staticlibs; do
3200885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_basename "$file"
3201885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      name="$func_basename_result"
3202885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3203885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Set up the ranlib parameters.
3204885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      oldlib="$destdir/$name"
3205885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
3206885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      tool_oldlib=$func_to_tool_file_result
3207885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3208885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
3209885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3210885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$stripme" && test -n "$old_striplib"; then
3211885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
3212885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
3213885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3214885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Do each command in the postinstall commands.
3215885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
3216885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    done
3217885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3218885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    test -n "$future_libdirs" && \
3219885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_warning "remember to run \`$progname --finish$future_libdirs'"
3220885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3221885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test -n "$current_libdirs"; then
3222885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Maybe just do a dry run.
3223885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      $opt_dry_run && current_libdirs=" -n$current_libdirs"
3224885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
3225885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    else
3226885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      exit $EXIT_SUCCESS
3227885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
3228885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
3229885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3230885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtest "$opt_mode" = install && func_mode_install ${1+"$@"}
3231885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3232885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3233885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_generate_dlsyms outputname originator pic_p
3234885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Extract symbols from dlprefiles and create ${outputname}S.o with
3235885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# a dlpreopen symbol table.
3236885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_generate_dlsyms ()
3237885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
3238885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_debug
3239885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_outputname="$1"
3240885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_originator="$2"
3241885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_pic_p="${3-no}"
3242885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
3243885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_dlsyms=
3244885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3245885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3246885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$NM" && test -n "$global_symbol_pipe"; then
3247885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	my_dlsyms="${my_outputname}S.c"
3248885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      else
3249885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_error "not configured to extract global symbols from dlpreopened files"
3250885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
3251885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
3252885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3253885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test -n "$my_dlsyms"; then
3254885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $my_dlsyms in
3255885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      "") ;;
3256885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *.c)
3257885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Discover the nlist of each of the dlfiles.
3258885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	nlist="$output_objdir/${my_outputname}.nm"
3259885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3260885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
3261885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3262885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Parse the name list into a source file.
3263885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_verbose "creating $output_objdir/$my_dlsyms"
3264885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3265885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
3266885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
3267885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
3268885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3269885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifdef __cplusplus
3270885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgextern \"C\" {
3271885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif
3272885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3273885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
3274885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
3275885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif
3276885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3277885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
3278885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
3279885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* DATA imports from DLLs on WIN32 con't be const, because runtime
3280885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org   relocations are performed -- see ld's documentation on pseudo-relocs.  */
3281885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define LT_DLSYM_CONST
3282885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#elif defined(__osf__)
3283885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* This system does not cope well with relocations in const data.  */
3284885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define LT_DLSYM_CONST
3285885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#else
3286885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define LT_DLSYM_CONST const
3287885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif
3288885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3289885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* External symbol declarations for the compiler. */\
3290885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"
3291885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3292885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$dlself" = yes; then
3293885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_verbose "generating symbol list for \`$output'"
3294885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3295885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
3296885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3297885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Add our own program objects to the symbol list.
3298885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
3299885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for progfile in $progfiles; do
3300885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
3301885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
3302885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
3303885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
3304885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3305885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$exclude_expsyms"; then
3306885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $opt_dry_run || {
3307885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
3308885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      eval '$MV "$nlist"T "$nlist"'
3309885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    }
3310885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
3311885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3312885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$export_symbols_regex"; then
3313885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $opt_dry_run || {
3314885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
3315885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      eval '$MV "$nlist"T "$nlist"'
3316885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    }
3317885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
3318885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3319885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Prepare the list of exported symbols
3320885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -z "$export_symbols"; then
3321885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    export_symbols="$output_objdir/$outputname.exp"
3322885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $opt_dry_run || {
3323885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      $RM $export_symbols
3324885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
3325885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case $host in
3326885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *cygwin* | *mingw* | *cegcc* )
3327885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3328885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
3329885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        ;;
3330885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
3331885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    }
3332885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
3333885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $opt_dry_run || {
3334885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
3335885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
3336885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      eval '$MV "$nlist"T "$nlist"'
3337885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case $host in
3338885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        *cygwin* | *mingw* | *cegcc* )
3339885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3340885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
3341885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	          ;;
3342885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
3343885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    }
3344885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
3345885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
3346885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3347885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	for dlprefile in $dlprefiles; do
3348885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_verbose "extracting global C symbols from \`$dlprefile'"
3349885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_basename "$dlprefile"
3350885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  name="$func_basename_result"
3351885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          case $host in
3352885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *cygwin* | *mingw* | *cegcc* )
3353885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # if an import library, we need to obtain dlname
3354885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if func_win32_import_lib_p "$dlprefile"; then
3355885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        func_tr_sh "$dlprefile"
3356885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
3357885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        dlprefile_dlbasename=""
3358885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
3359885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	          # Use subshell, to avoid clobbering current variable values
3360885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
3361885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	          if test -n "$dlprefile_dlname" ; then
3362885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	            func_basename "$dlprefile_dlname"
3363885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	            dlprefile_dlbasename="$func_basename_result"
3364885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	          else
3365885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	            # no lafile. user explicitly requested -dlpreopen <import library>.
3366885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	            $sharedlib_from_linklib_cmd "$dlprefile"
3367885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	            dlprefile_dlbasename=$sharedlib_from_linklib_result
3368885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	          fi
3369885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        fi
3370885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        $opt_dry_run || {
3371885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	          if test -n "$dlprefile_dlbasename" ; then
3372885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
3373885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	          else
3374885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	            func_warning "Could not compute DLL name from $name"
3375885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	            eval '$ECHO ": $name " >> "$nlist"'
3376885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	          fi
3377885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3378885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
3379885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
3380885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        }
3381885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      else # not an import lib
3382885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        $opt_dry_run || {
3383885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	          eval '$ECHO ": $name " >> "$nlist"'
3384885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3385885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3386885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        }
3387885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
3388885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
3389885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *)
3390885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      $opt_dry_run || {
3391885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        eval '$ECHO ": $name " >> "$nlist"'
3392885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3393885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3394885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      }
3395885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
3396885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          esac
3397885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done
3398885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3399885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	$opt_dry_run || {
3400885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Make sure we have at least an empty file.
3401885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  test -f "$nlist" || : > "$nlist"
3402885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3403885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$exclude_expsyms"; then
3404885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
3405885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $MV "$nlist"T "$nlist"
3406885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
3407885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3408885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Try sorting and uniquifying the output.
3409885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if $GREP -v "^: " < "$nlist" |
3410885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if sort -k 3 </dev/null >/dev/null 2>&1; then
3411885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		sort -k 3
3412885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      else
3413885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		sort +2
3414885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi |
3415885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      uniq > "$nlist"S; then
3416885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    :
3417885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
3418885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $GREP -v "^: " < "$nlist" > "$nlist"S
3419885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
3420885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3421885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -f "$nlist"S; then
3422885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
3423885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
3424885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
3425885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
3426885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3427885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  echo >> "$output_objdir/$my_dlsyms" "\
3428885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3429885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* The mapping between symbol names and symbols.  */
3430885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtypedef struct {
3431885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  const char *name;
3432885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  void *address;
3433885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} lt_dlsymlist;
3434885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgextern LT_DLSYM_CONST lt_dlsymlist
3435885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_${my_prefix}_LTX_preloaded_symbols[];
3436885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgLT_DLSYM_CONST lt_dlsymlist
3437885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_${my_prefix}_LTX_preloaded_symbols[] =
3438885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{\
3439885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  { \"$my_originator\", (void *) 0 },"
3440885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3441885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $need_lib_prefix in
3442885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  no)
3443885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
3444885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
3445885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *)
3446885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
3447885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
3448885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
3449885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  echo >> "$output_objdir/$my_dlsyms" "\
3450885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  {0, (void *) 0}
3451885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org};
3452885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3453885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* This works around a problem in FreeBSD linker */
3454885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifdef FREEBSD_WORKAROUND
3455885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic const void *lt_preloaded_setup() {
3456885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  return lt_${my_prefix}_LTX_preloaded_symbols;
3457885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
3458885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif
3459885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3460885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifdef __cplusplus
3461885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
3462885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif\
3463885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"
3464885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	} # !$opt_dry_run
3465885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3466885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	pic_flag_for_symtable=
3467885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case "$compile_command " in
3468885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*" -static "*) ;;
3469885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*)
3470885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $host in
3471885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # compiling the symbol table file with pic_flag works around
3472885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # a FreeBSD bug that causes programs to crash when -lm is
3473885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # linked before any other PIC object.  But we must not use
3474885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # pic_flag when linking with -static.  The problem exists in
3475885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
3476885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
3477885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
3478885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *-*-hpux*)
3479885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    pic_flag_for_symtable=" $pic_flag"  ;;
3480885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *)
3481885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "X$my_pic_p" != Xno; then
3482885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      pic_flag_for_symtable=" $pic_flag"
3483885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
3484885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
3485885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
3486885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
3487885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
3488885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	symtab_cflags=
3489885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	for arg in $LTCFLAGS; do
3490885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $arg in
3491885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  -pie | -fpie | -fPIE) ;;
3492885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *) func_append symtab_cflags " $arg" ;;
3493885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
3494885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done
3495885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3496885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Now compile the dynamic symbol file.
3497885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
3498885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3499885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Clean up the generated files.
3500885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
3501885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3502885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Transform the symbol file into the correct name.
3503885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	symfileobj="$output_objdir/${my_outputname}S.$objext"
3504885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $host in
3505885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*cygwin* | *mingw* | *cegcc* )
3506885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -f "$output_objdir/$my_outputname.def"; then
3507885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3508885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3509885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
3510885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3511885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3512885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
3513885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
3514885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*)
3515885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3516885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3517885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
3518885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
3519885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
3520885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *)
3521885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_fatal_error "unknown suffix for \`$my_dlsyms'"
3522885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
3523885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
3524885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    else
3525885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # We keep going just in case the user didn't refer to
3526885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
3527885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # really was required.
3528885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3529885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Nullify the symbol file.
3530885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
3531885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
3532885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
3533885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
3534885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3535885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_win32_libid arg
3536885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# return the library type of file 'arg'
3537885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
3538885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Need a lot of goo to handle *both* DLLs and import libs
3539885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Has to be a shell function in order to 'eat' the argument
3540885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# that is supplied when $file_magic_command is called.
3541885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Despite the name, also deal with 64 bit binaries.
3542885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_win32_libid ()
3543885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
3544885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
3545885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  win32_libid_type="unknown"
3546885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  win32_fileres=`file -L $1 2>/dev/null`
3547885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  case $win32_fileres in
3548885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  *ar\ archive\ import\ library*) # definitely import
3549885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    win32_libid_type="x86 archive import"
3550885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ;;
3551885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  *ar\ archive*) # could be an import, or static
3552885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
3553885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
3554885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
3555885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_to_tool_file "$1" func_convert_file_msys_to_w32
3556885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
3557885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	$SED -n -e '
3558885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    1,100{
3559885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		/ I /{
3560885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    s,.*,import,
3561885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    p
3562885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    q
3563885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		}
3564885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    }'`
3565885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $win32_nmres in
3566885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      import*)  win32_libid_type="x86 archive import";;
3567885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *)        win32_libid_type="x86 archive static";;
3568885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
3569885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
3570885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ;;
3571885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  *DLL*)
3572885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    win32_libid_type="x86 DLL"
3573885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ;;
3574885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  *executable*) # but shell scripts are "executable" too...
3575885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case $win32_fileres in
3576885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *MS\ Windows\ PE\ Intel*)
3577885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      win32_libid_type="x86 DLL"
3578885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
3579885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
3580885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ;;
3581885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  esac
3582885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $ECHO "$win32_libid_type"
3583885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
3584885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3585885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_cygming_dll_for_implib ARG
3586885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
3587885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Platform-specific function to extract the
3588885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# name of the DLL associated with the specified
3589885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# import library ARG.
3590885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Invoked by eval'ing the libtool variable
3591885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#    $sharedlib_from_linklib_cmd
3592885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Result is available in the variable
3593885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#    $sharedlib_from_linklib_result
3594885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_cygming_dll_for_implib ()
3595885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
3596885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
3597885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
3598885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
3599885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3600885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
3601885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
3602885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# The is the core of a fallback implementation of a
3603885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# platform-specific function to extract the name of the
3604885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# DLL associated with the specified import library LIBNAME.
3605885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
3606885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# SECTION_NAME is either .idata$6 or .idata$7, depending
3607885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# on the platform and compiler that created the implib.
3608885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
3609885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echos the name of the DLL associated with the
3610885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# specified import library.
3611885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_cygming_dll_for_implib_fallback_core ()
3612885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
3613885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
3614885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
3615885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
3616885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $SED '/^Contents of section '"$match_literal"':/{
3617885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Place marker at beginning of archive member dllname section
3618885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      s/.*/====MARK====/
3619885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      p
3620885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      d
3621885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
3622885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # These lines can sometimes be longer than 43 characters, but
3623885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # are always uninteresting
3624885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    /:[	 ]*file format pe[i]\{,1\}-/d
3625885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    /^In archive [^:]*:/d
3626885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Ensure marker is printed
3627885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    /^====MARK====/p
3628885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Remove all lines with less than 43 characters
3629885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    /^.\{43\}/!d
3630885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # From remaining lines, remove first 43 characters
3631885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    s/^.\{43\}//' |
3632885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $SED -n '
3633885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Join marker and all lines until next marker into a single line
3634885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      /^====MARK====/ b para
3635885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      H
3636885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      $ b para
3637885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      b
3638885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      :para
3639885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      x
3640885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      s/\n//g
3641885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Remove the marker
3642885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      s/^====MARK====//
3643885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Remove trailing dots and whitespace
3644885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      s/[\. \t]*$//
3645885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Print
3646885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      /./p' |
3647885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # we now have a list, one entry per line, of the stringified
3648885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # contents of the appropriate section of all members of the
3649885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # archive which possess that section. Heuristic: eliminate
3650885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # all those which have a first or second character that is
3651885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # a '.' (that is, objdump's representation of an unprintable
3652885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # character.) This should work for all archives with less than
3653885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # 0x302f exports -- but will fail for DLLs whose name actually
3654885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # begins with a literal '.' or a single character followed by
3655885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # a '.'.
3656885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    #
3657885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Of those that remain, print the first one.
3658885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $SED -e '/^\./d;/^.\./d;q'
3659885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
3660885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3661885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_cygming_gnu_implib_p ARG
3662885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This predicate returns with zero status (TRUE) if
3663885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ARG is a GNU/binutils-style import library. Returns
3664885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# with nonzero status (FALSE) otherwise.
3665885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_cygming_gnu_implib_p ()
3666885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
3667885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
3668885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_to_tool_file "$1" func_convert_file_msys_to_w32
3669885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  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)$'`
3670885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  test -n "$func_cygming_gnu_implib_tmp"
3671885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
3672885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3673885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_cygming_ms_implib_p ARG
3674885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This predicate returns with zero status (TRUE) if
3675885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ARG is an MS-style import library. Returns
3676885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# with nonzero status (FALSE) otherwise.
3677885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_cygming_ms_implib_p ()
3678885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
3679885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
3680885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_to_tool_file "$1" func_convert_file_msys_to_w32
3681885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
3682885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  test -n "$func_cygming_ms_implib_tmp"
3683885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
3684885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3685885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_cygming_dll_for_implib_fallback ARG
3686885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Platform-specific function to extract the
3687885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# name of the DLL associated with the specified
3688885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# import library ARG.
3689885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
3690885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This fallback implementation is for use when $DLLTOOL
3691885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# does not support the --identify-strict option.
3692885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Invoked by eval'ing the libtool variable
3693885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#    $sharedlib_from_linklib_cmd
3694885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Result is available in the variable
3695885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#    $sharedlib_from_linklib_result
3696885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_cygming_dll_for_implib_fallback ()
3697885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
3698885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $opt_debug
3699885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if func_cygming_gnu_implib_p "$1" ; then
3700885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # binutils import library
3701885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
3702885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  elif func_cygming_ms_implib_p "$1" ; then
3703885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # ms-generated import library
3704885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
3705885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  else
3706885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # unknown
3707885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    sharedlib_from_linklib_result=""
3708885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
3709885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
3710885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3711885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3712885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_extract_an_archive dir oldlib
3713885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_extract_an_archive ()
3714885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
3715885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_debug
3716885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    f_ex_an_ar_dir="$1"; shift
3717885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    f_ex_an_ar_oldlib="$1"
3718885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$lock_old_archive_extraction" = yes; then
3719885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      lockfile=$f_ex_an_ar_oldlib.lock
3720885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
3721885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_echo "Waiting for $lockfile to be removed"
3722885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	sleep 2
3723885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
3724885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
3725885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
3726885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		   'stat=$?; rm -f "$lockfile"; exit $stat'
3727885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$lock_old_archive_extraction" = yes; then
3728885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      $opt_dry_run || rm -f "$lockfile"
3729885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
3730885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
3731885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     :
3732885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    else
3733885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
3734885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
3735885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
3736885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3737885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3738885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_extract_archives gentop oldlib ...
3739885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_extract_archives ()
3740885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
3741885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_debug
3742885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_gentop="$1"; shift
3743885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_oldlibs=${1+"$@"}
3744885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_oldobjs=""
3745885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_xlib=""
3746885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_xabs=""
3747885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    my_xdir=""
3748885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3749885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    for my_xlib in $my_oldlibs; do
3750885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Extract the objects.
3751885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $my_xlib in
3752885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
3753885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*) my_xabs=`pwd`"/$my_xlib" ;;
3754885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
3755885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_basename "$my_xlib"
3756885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      my_xlib="$func_basename_result"
3757885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      my_xlib_u=$my_xlib
3758885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      while :; do
3759885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        case " $extracted_archives " in
3760885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*" $my_xlib_u "*)
3761885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_arith $extracted_serial + 1
3762885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  extracted_serial=$func_arith_result
3763885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
3764885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*) break ;;
3765885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
3766885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
3767885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      extracted_archives="$extracted_archives $my_xlib_u"
3768885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      my_xdir="$my_gentop/$my_xlib_u"
3769885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3770885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_mkdir_p "$my_xdir"
3771885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3772885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $host in
3773885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *-darwin*)
3774885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_verbose "Extracting $my_xabs"
3775885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Do not bother doing anything if just a dry run
3776885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	$opt_dry_run || {
3777885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  darwin_orig_dir=`pwd`
3778885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  cd $my_xdir || exit $?
3779885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  darwin_archive=$my_xabs
3780885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  darwin_curdir=`pwd`
3781885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  darwin_base_archive=`basename "$darwin_archive"`
3782885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
3783885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$darwin_arches"; then
3784885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
3785885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    darwin_arch=
3786885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
3787885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    for darwin_arch in  $darwin_arches ; do
3788885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3789885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
3790885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3791885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
3792885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      cd "$darwin_curdir"
3793885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
3794885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done # $darwin_arches
3795885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
3796885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
3797885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    darwin_file=
3798885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    darwin_files=
3799885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    for darwin_file in $darwin_filelist; do
3800885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
3801885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      $LIPO -create -output "$darwin_file" $darwin_files
3802885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done # $darwin_filelist
3803885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $RM -rf unfat-$$
3804885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    cd "$darwin_orig_dir"
3805885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
3806885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    cd $darwin_orig_dir
3807885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_extract_an_archive "$my_xdir" "$my_xabs"
3808885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi # $darwin_arches
3809885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	} # !$opt_dry_run
3810885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
3811885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *)
3812885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_extract_an_archive "$my_xdir" "$my_xabs"
3813885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
3814885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
3815885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
3816885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    done
3817885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3818885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_extract_archives_result="$my_oldobjs"
3819885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
3820885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3821885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3822885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_emit_wrapper [arg=no]
3823885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
3824885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Emit a libtool wrapper script on stdout.
3825885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Don't directly open a file because we may want to
3826885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# incorporate the script contents within a cygwin/mingw
3827885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# wrapper executable.  Must ONLY be called from within
3828885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_mode_link because it depends on a number of variables
3829885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# set therein.
3830885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
3831885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
3832885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# variable will take.  If 'yes', then the emitted script
3833885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# will assume that the directory in which it is stored is
3834885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# the $objdir directory.  This is a cygwin/mingw-specific
3835885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# behavior.
3836885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_emit_wrapper ()
3837885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
3838885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_emit_wrapper_arg1=${1-no}
3839885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3840885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	$ECHO "\
3841885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#! $SHELL
3842885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3843885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# $output - temporary wrapper script for $objdir/$outputname
3844885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
3845885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
3846885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# The $output program cannot be directly executed until all the libtool
3847885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# libraries that it depends on are installed.
3848885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
3849885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This wrapper script should never be moved out of the build directory.
3850885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# If it is, it will not operate correctly.
3851885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3852885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Sed substitution that helps us do robust quoting.  It backslashifies
3853885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# metacharacters that are still active within double-quoted strings.
3854885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgsed_quote_subst='$sed_quote_subst'
3855885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3856885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Be Bourne compatible
3857885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
3858885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  emulate sh
3859885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  NULLCMD=:
3860885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
3861885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # is contrary to our usage.  Disable this feature.
3862885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  alias -g '\${1+\"\$@\"}'='\"\$@\"'
3863885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  setopt NO_GLOB_SUBST
3864885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgelse
3865885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
3866885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfi
3867885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgBIN_SH=xpg4; export BIN_SH # for Tru64
3868885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgDUALCASE=1; export DUALCASE # for MKS sh
3869885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3870885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# The HP-UX ksh and POSIX shell print the target directory to stdout
3871885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# if CDPATH is set.
3872885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
3873885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3874885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgrelink_command=\"$relink_command\"
3875885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3876885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This environment variable determines our operation mode.
3877885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgif test \"\$libtool_install_magic\" = \"$magic\"; then
3878885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # install mode needs the following variables:
3879885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  generated_by_libtool_version='$macro_version'
3880885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  notinst_deplibs='$notinst_deplibs'
3881885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgelse
3882885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # When we are sourced in execute mode, \$file and \$ECHO are already set.
3883885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test \"\$libtool_execute_magic\" != \"$magic\"; then
3884885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    file=\"\$0\""
3885885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3886885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
3887885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $ECHO "\
3888885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3889885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# A function that is used when there is no print builtin or printf.
3890885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_fallback_echo ()
3891885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
3892885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  eval 'cat <<_LTECHO_EOF
3893885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org\$1
3894885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org_LTECHO_EOF'
3895885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
3896885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ECHO=\"$qECHO\"
3897885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
3898885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3899885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Very basic option parsing. These options are (a) specific to
3900885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# the libtool wrapper, (b) are identical between the wrapper
3901885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# /script/ and the wrapper /executable/ which is used only on
3902885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# windows platforms, and (c) all begin with the string "--lt-"
3903885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# (application programs are unlikely to have options which match
3904885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# this pattern).
3905885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
3906885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# There are only two supported options: --lt-debug and
3907885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# --lt-dump-script. There is, deliberately, no --lt-help.
3908885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
3909885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# The first argument to this parsing function should be the
3910885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# script's $0 value, followed by "$@".
3911885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_option_debug=
3912885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_parse_lt_options ()
3913885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
3914885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  lt_script_arg0=\$0
3915885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  shift
3916885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  for lt_opt
3917885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  do
3918885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case \"\$lt_opt\" in
3919885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    --lt-debug) lt_option_debug=1 ;;
3920885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    --lt-dump-script)
3921885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
3922885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
3923885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
3924885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        cat \"\$lt_dump_D/\$lt_dump_F\"
3925885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        exit 0
3926885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
3927885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    --lt-*)
3928885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
3929885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        exit 1
3930885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
3931885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
3932885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  done
3933885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3934885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Print the debug banner immediately:
3935885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test -n \"\$lt_option_debug\"; then
3936885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
3937885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
3938885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
3939885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3940885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Used when --lt-debug. Prints its arguments to stdout
3941885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# (redirection is the responsibility of the caller)
3942885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_lt_dump_args ()
3943885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
3944885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  lt_dump_args_N=1;
3945885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  for lt_arg
3946885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  do
3947885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
3948885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
3949885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  done
3950885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
3951885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3952885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Core function for launching the target application
3953885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_exec_program_core ()
3954885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
3955885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"
3956885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  case $host in
3957885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Backslashes separate directories on plain windows
3958885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  *-*-mingw | *-*-os2* | *-cegcc*)
3959885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $ECHO "\
3960885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n \"\$lt_option_debug\"; then
3961885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
3962885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_lt_dump_args \${1+\"\$@\"} 1>&2
3963885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
3964885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
3965885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"
3966885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ;;
3967885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3968885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  *)
3969885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $ECHO "\
3970885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n \"\$lt_option_debug\"; then
3971885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
3972885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_lt_dump_args \${1+\"\$@\"} 1>&2
3973885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
3974885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      exec \"\$progdir/\$program\" \${1+\"\$@\"}
3975885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"
3976885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ;;
3977885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  esac
3978885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  $ECHO "\
3979885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
3980885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      exit 1
3981885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
3982885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
3983885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# A function to encapsulate launching the target application
3984885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Strips options in the --lt-* namespace from \$@ and
3985885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# launches target application with the remaining arguments.
3986885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_exec_program ()
3987885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
3988885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  case \" \$* \" in
3989885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  *\\ --lt-*)
3990885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    for lt_wr_arg
3991885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    do
3992885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case \$lt_wr_arg in
3993885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      --lt-*) ;;
3994885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
3995885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
3996885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      shift
3997885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    done ;;
3998885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  esac
3999885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_exec_program_core \${1+\"\$@\"}
4000885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
4001885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4002885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Parse options
4003885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
4004885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4005885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Find the directory that this script lives in.
4006885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
4007885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
4008885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4009885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Follow symbolic links until we get to the real thisdir.
4010885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
4011885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  while test -n \"\$file\"; do
4012885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
4013885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4014885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # If there was a directory component, then change thisdir.
4015885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test \"x\$destdir\" != \"x\$file\"; then
4016885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case \"\$destdir\" in
4017885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
4018885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *) thisdir=\"\$thisdir/\$destdir\" ;;
4019885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
4020885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
4021885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4022885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
4023885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
4024885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  done
4025885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4026885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Usually 'no', except on cygwin/mingw when embedded into
4027885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # the cwrapper.
4028885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
4029885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
4030885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # special case for '.'
4031885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test \"\$thisdir\" = \".\"; then
4032885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      thisdir=\`pwd\`
4033885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
4034885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # remove .libs from thisdir
4035885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case \"\$thisdir\" in
4036885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
4037885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $objdir )   thisdir=. ;;
4038885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
4039885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
4040885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4041885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  # Try to get the absolute directory name.
4042885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  absdir=\`cd \"\$thisdir\" && pwd\`
4043885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  test -n \"\$absdir\" && thisdir=\"\$absdir\"
4044885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"
4045885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4046885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$fast_install" = yes; then
4047885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  $ECHO "\
4048885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  program=lt-'$outputname'$exeext
4049885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  progdir=\"\$thisdir/$objdir\"
4050885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4051885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test ! -f \"\$progdir/\$program\" ||
4052885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
4053885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
4054885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4055885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    file=\"\$\$-\$program\"
4056885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4057885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test ! -d \"\$progdir\"; then
4058885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      $MKDIR \"\$progdir\"
4059885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    else
4060885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      $RM \"\$progdir/\$file\"
4061885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi"
4062885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4063885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  $ECHO "\
4064885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4065885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # relink executable if necessary
4066885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test -n \"\$relink_command\"; then
4067885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
4068885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      else
4069885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	$ECHO \"\$relink_command_output\" >&2
4070885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	$RM \"\$progdir/\$file\"
4071885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	exit 1
4072885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
4073885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
4074885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4075885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
4076885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    { $RM \"\$progdir/\$program\";
4077885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
4078885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $RM \"\$progdir/\$file\"
4079885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi"
4080885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
4081885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  $ECHO "\
4082885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  program='$outputname'
4083885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  progdir=\"\$thisdir/$objdir\"
4084885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"
4085885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
4086885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4087885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	$ECHO "\
4088885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4089885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if test -f \"\$progdir/\$program\"; then"
4090885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4091885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# fixup the dll searchpath if we need to.
4092885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	#
4093885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Fix the DLL searchpath if we need to.  Do this before prepending
4094885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# to shlibpath, because on Windows, both are PATH and uninstalled
4095885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# libraries must come first.
4096885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$dllsearchpath"; then
4097885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  $ECHO "\
4098885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Add the dll search path components to the executable PATH
4099885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    PATH=$dllsearchpath:\$PATH
4100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"
4101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
4102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Export our shlibpath_var if we have one.
4104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  $ECHO "\
4106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Add our own library path to $shlibpath_var
4107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
4108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Some systems cannot cope with colon-terminated $shlibpath_var
4110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # The second colon is a workaround for a bug in BeOS R4 sed
4111885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
4112885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4113885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    export $shlibpath_var
4114885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"
4115885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
4116885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4117885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	$ECHO "\
4118885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test \"\$libtool_execute_magic\" != \"$magic\"; then
4119885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Run the actual program with our arguments.
4120885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_exec_program \${1+\"\$@\"}
4121885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
4122885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  else
4123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # The program doesn't exist.
4124885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
4125885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
4126885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
4127885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    exit 1
4128885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fi
4129885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfi\
4130885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"
4131885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
4132885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4133885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4134885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_emit_cwrapperexe_src
4135885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# emit the source code for a wrapper executable on stdout
4136885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Must ONLY be called from within func_mode_link because
4137885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# it depends on a number of variable set therein.
4138885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_emit_cwrapperexe_src ()
4139885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
4140885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	cat <<EOF
4141885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4142885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
4143885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
4144885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4145885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org   The $output program cannot be directly executed until all the libtool
4146885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org   libraries that it depends on are installed.
4147885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4148885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org   This wrapper executable should never be moved out of the build directory.
4149885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org   If it is, it will not operate correctly.
4150885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org*/
4151885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
4152885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    cat <<"EOF"
4153885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifdef _MSC_VER
4154885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define _CRT_SECURE_NO_DEPRECATE 1
4155885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif
4156885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include <stdio.h>
4157885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include <stdlib.h>
4158885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifdef _MSC_VER
4159885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# include <direct.h>
4160885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# include <process.h>
4161885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# include <io.h>
4162885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#else
4163885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# include <unistd.h>
4164885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# include <stdint.h>
4165885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ifdef __CYGWIN__
4166885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#  include <io.h>
4167885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# endif
4168885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif
4169885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include <malloc.h>
4170885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include <stdarg.h>
4171885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include <assert.h>
4172885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include <string.h>
4173885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include <ctype.h>
4174885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include <errno.h>
4175885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include <fcntl.h>
4176885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include <sys/stat.h>
4177885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4178885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* declarations of non-ANSI functions */
4179885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#if defined(__MINGW32__)
4180885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ifdef __STRICT_ANSI__
4181885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgint _putenv (const char *);
4182885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# endif
4183885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#elif defined(__CYGWIN__)
4184885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ifdef __STRICT_ANSI__
4185885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar *realpath (const char *, char *);
4186885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgint putenv (char *);
4187885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgint setenv (const char *, const char *, int);
4188885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# endif
4189885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* #elif defined (other platforms) ... */
4190885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif
4191885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4192885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* portability defines, excluding path handling macros */
4193885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#if defined(_MSC_VER)
4194885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define setmode _setmode
4195885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define stat    _stat
4196885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define chmod   _chmod
4197885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define getcwd  _getcwd
4198885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define putenv  _putenv
4199885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define S_IXUSR _S_IEXEC
4200885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ifndef _INTPTR_T_DEFINED
4201885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#  define _INTPTR_T_DEFINED
4202885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#  define intptr_t int
4203885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# endif
4204885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#elif defined(__MINGW32__)
4205885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define setmode _setmode
4206885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define stat    _stat
4207885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define chmod   _chmod
4208885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define getcwd  _getcwd
4209885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define putenv  _putenv
4210885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#elif defined(__CYGWIN__)
4211885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define HAVE_SETENV
4212885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define FOPEN_WB "wb"
4213885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* #elif defined (other platforms) ... */
4214885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif
4215885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4216885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#if defined(PATH_MAX)
4217885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define LT_PATHMAX PATH_MAX
4218885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#elif defined(MAXPATHLEN)
4219885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define LT_PATHMAX MAXPATHLEN
4220885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#else
4221885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define LT_PATHMAX 1024
4222885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif
4223885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4224885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifndef S_IXOTH
4225885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define S_IXOTH 0
4226885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif
4227885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifndef S_IXGRP
4228885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define S_IXGRP 0
4229885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif
4230885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4231885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* path handling portability macros */
4232885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifndef DIR_SEPARATOR
4233885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define DIR_SEPARATOR '/'
4234885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define PATH_SEPARATOR ':'
4235885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif
4236885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4237885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
4238885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  defined (__OS2__)
4239885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define HAVE_DOS_BASED_FILE_SYSTEM
4240885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define FOPEN_WB "wb"
4241885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ifndef DIR_SEPARATOR_2
4242885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#  define DIR_SEPARATOR_2 '\\'
4243885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# endif
4244885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ifndef PATH_SEPARATOR_2
4245885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#  define PATH_SEPARATOR_2 ';'
4246885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# endif
4247885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif
4248885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4249885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifndef DIR_SEPARATOR_2
4250885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
4251885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#else /* DIR_SEPARATOR_2 */
4252885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define IS_DIR_SEPARATOR(ch) \
4253885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
4254885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif /* DIR_SEPARATOR_2 */
4255885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4256885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifndef PATH_SEPARATOR_2
4257885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
4258885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#else /* PATH_SEPARATOR_2 */
4259885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
4260885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif /* PATH_SEPARATOR_2 */
4261885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4262885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifndef FOPEN_WB
4263885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define FOPEN_WB "w"
4264885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif
4265885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifndef _O_BINARY
4266885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define _O_BINARY 0
4267885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif
4268885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4269885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
4270885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#define XFREE(stale) do { \
4271885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if (stale) { free ((void *) stale); stale = 0; } \
4272885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} while (0)
4273885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4274885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#if defined(LT_DEBUGWRAPPER)
4275885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic int lt_debug = 1;
4276885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#else
4277885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic int lt_debug = 0;
4278885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif
4279885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4280885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
4281885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4282885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid *xmalloc (size_t num);
4283885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar *xstrdup (const char *string);
4284885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char *base_name (const char *name);
4285885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar *find_executable (const char *wrapper);
4286885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar *chase_symlinks (const char *pathspec);
4287885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgint make_executable (const char *path);
4288885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgint check_executable (const char *path);
4289885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar *strendzap (char *str, const char *pat);
4290885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid lt_debugprintf (const char *file, int line, const char *fmt, ...);
4291885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid lt_fatal (const char *file, int line, const char *message, ...);
4292885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic const char *nonnull (const char *s);
4293885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic const char *nonempty (const char *s);
4294885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid lt_setenv (const char *name, const char *value);
4295885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
4296885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid lt_update_exe_path (const char *name, const char *value);
4297885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid lt_update_lib_path (const char *name, const char *value);
4298885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar **prepare_spawn (char **argv);
4299885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid lt_dump_script (FILE *f);
4300885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
4301885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4302885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    cat <<EOF
4303885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvolatile const char * MAGIC_EXE = "$magic_exe";
4304885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char * LIB_PATH_VARNAME = "$shlibpath_var";
4305885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
4306885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4307885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4308885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org              func_to_host_path "$temp_rpath"
4309885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      cat <<EOF
4310885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char * LIB_PATH_VALUE   = "$func_to_host_path_result";
4311885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
4312885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
4313885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      cat <<"EOF"
4314885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char * LIB_PATH_VALUE   = "";
4315885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
4316885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
4317885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4318885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -n "$dllsearchpath"; then
4319885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org              func_to_host_path "$dllsearchpath:"
4320885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      cat <<EOF
4321885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char * EXE_PATH_VARNAME = "PATH";
4322885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char * EXE_PATH_VALUE   = "$func_to_host_path_result";
4323885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
4324885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
4325885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      cat <<"EOF"
4326885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char * EXE_PATH_VARNAME = "";
4327885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char * EXE_PATH_VALUE   = "";
4328885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
4329885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
4330885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4331885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$fast_install" = yes; then
4332885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      cat <<EOF
4333885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
4334885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
4335885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
4336885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      cat <<EOF
4337885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
4338885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
4339885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
4340885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4341885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4342885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    cat <<"EOF"
4343885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4344885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#define LTWRAPPER_OPTION_PREFIX         "--lt-"
4345885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4346885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
4347885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
4348885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
4349885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4350885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgint
4351885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgmain (int argc, char *argv[])
4352885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
4353885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  char **newargz;
4354885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  int  newargc;
4355885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  char *tmp_pathspec;
4356885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  char *actual_cwrapper_path;
4357885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  char *actual_cwrapper_name;
4358885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  char *target_name;
4359885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  char *lt_argv_zero;
4360885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  intptr_t rval = 127;
4361885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4362885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  int i;
4363885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4364885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  program_name = (char *) xstrdup (base_name (argv[0]));
4365885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  newargz = XMALLOC (char *, argc + 1);
4366885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4367885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  /* very simple arg parsing; don't want to rely on getopt
4368885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org   * also, copy all non cwrapper options to newargz, except
4369885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org   * argz[0], which is handled differently
4370885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org   */
4371885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  newargc=0;
4372885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  for (i = 1; i < argc; i++)
4373885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    {
4374885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if (strcmp (argv[i], dumpscript_opt) == 0)
4375885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	{
4376885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
4377885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case "$host" in
4378885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *mingw* | *cygwin* )
4379885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		# make stdout use "unix" line endings
4380885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo "          setmode(1,_O_BINARY);"
4381885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
4382885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
4383885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4384885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    cat <<"EOF"
4385885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  lt_dump_script (stdout);
4386885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  return 0;
4387885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	}
4388885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if (strcmp (argv[i], debug_opt) == 0)
4389885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	{
4390885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          lt_debug = 1;
4391885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          continue;
4392885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	}
4393885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
4394885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        {
4395885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
4396885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org             namespace, but it is not one of the ones we know about and
4397885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org             have already dealt with, above (inluding dump-script), then
4398885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org             report an error. Otherwise, targets might begin to believe
4399885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
4400885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org             namespace. The first time any user complains about this, we'll
4401885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
4402885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org             or a configure.ac-settable value.
4403885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org           */
4404885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          lt_fatal (__FILE__, __LINE__,
4405885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    "unrecognized %s option: '%s'",
4406885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                    ltwrapper_option_prefix, argv[i]);
4407885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        }
4408885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      /* otherwise ... */
4409885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      newargz[++newargc] = xstrdup (argv[i]);
4410885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
4411885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  newargz[++newargc] = NULL;
4412885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4413885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
4414885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    cat <<EOF
4415885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  /* The GNU banner must be the first non-error debug message */
4416885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
4417885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
4418885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    cat <<"EOF"
4419885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
4420885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
4421885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4422885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  tmp_pathspec = find_executable (argv[0]);
4423885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if (tmp_pathspec == NULL)
4424885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
4425885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  lt_debugprintf (__FILE__, __LINE__,
4426885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                  "(main) found exe (before symlink chase) at: %s\n",
4427885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  tmp_pathspec);
4428885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4429885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
4430885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  lt_debugprintf (__FILE__, __LINE__,
4431885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                  "(main) found exe (after symlink chase) at: %s\n",
4432885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  actual_cwrapper_path);
4433885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  XFREE (tmp_pathspec);
4434885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4435885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
4436885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  strendzap (actual_cwrapper_path, actual_cwrapper_name);
4437885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4438885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  /* wrapper name transforms */
4439885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  strendzap (actual_cwrapper_name, ".exe");
4440885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
4441885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  XFREE (actual_cwrapper_name);
4442885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  actual_cwrapper_name = tmp_pathspec;
4443885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  tmp_pathspec = 0;
4444885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4445885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  /* target_name transforms -- use actual target program name; might have lt- prefix */
4446885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
4447885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  strendzap (target_name, ".exe");
4448885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
4449885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  XFREE (target_name);
4450885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  target_name = tmp_pathspec;
4451885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  tmp_pathspec = 0;
4452885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4453885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  lt_debugprintf (__FILE__, __LINE__,
4454885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  "(main) libtool target name: %s\n",
4455885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  target_name);
4456885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
4457885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4458885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    cat <<EOF
4459885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  newargz[0] =
4460885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    XMALLOC (char, (strlen (actual_cwrapper_path) +
4461885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
4462885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  strcpy (newargz[0], actual_cwrapper_path);
4463885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  strcat (newargz[0], "$objdir");
4464885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  strcat (newargz[0], "/");
4465885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
4466885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4467885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    cat <<"EOF"
4468885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  /* stop here, and copy so we don't have to do this twice */
4469885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  tmp_pathspec = xstrdup (newargz[0]);
4470885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4471885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
4472885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  strcat (newargz[0], actual_cwrapper_name);
4473885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4474885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  /* DO want the lt- prefix here if it exists, so use target_name */
4475885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
4476885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  XFREE (tmp_pathspec);
4477885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  tmp_pathspec = NULL;
4478885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
4479885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4480885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case $host_os in
4481885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      mingw*)
4482885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    cat <<"EOF"
4483885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  {
4484885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    char* p;
4485885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    while ((p = strchr (newargz[0], '\\')) != NULL)
4486885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      {
4487885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*p = '/';
4488885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      }
4489885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
4490885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      {
4491885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*p = '/';
4492885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      }
4493885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  }
4494885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
4495885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
4496885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
4497885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4498885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    cat <<"EOF"
4499885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  XFREE (target_name);
4500885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  XFREE (actual_cwrapper_path);
4501885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  XFREE (actual_cwrapper_name);
4502885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4503885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
4504885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
4505885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
4506885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
4507885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     because on Windows, both *_VARNAMEs are PATH but uninstalled
4508885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     libraries must come first. */
4509885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
4510885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
4511885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4512885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
4513885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  nonnull (lt_argv_zero));
4514885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  for (i = 0; i < newargc; i++)
4515885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    {
4516885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
4517885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      i, nonnull (newargz[i]));
4518885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
4519885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4520885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
4521885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4522885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case $host_os in
4523885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      mingw*)
4524885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		cat <<"EOF"
4525885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  /* execv doesn't actually work on mingw as expected on unix */
4526885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  newargz = prepare_spawn (newargz);
4527885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
4528885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if (rval == -1)
4529885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    {
4530885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      /* failed to start process */
4531885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      lt_debugprintf (__FILE__, __LINE__,
4532885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      "(main) failed to launch target \"%s\": %s\n",
4533885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      lt_argv_zero, nonnull (strerror (errno)));
4534885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      return 127;
4535885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
4536885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  return rval;
4537885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
4538885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
4539885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *)
4540885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		cat <<"EOF"
4541885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  execv (lt_argv_zero, newargz);
4542885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  return rval; /* =127, but avoids unused variable warning */
4543885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
4544885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
4545885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
4546885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4547885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    cat <<"EOF"
4548885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
4549885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4550885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid *
4551885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgxmalloc (size_t num)
4552885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
4553885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  void *p = (void *) malloc (num);
4554885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if (!p)
4555885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    lt_fatal (__FILE__, __LINE__, "memory exhausted");
4556885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4557885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  return p;
4558885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
4559885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4560885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar *
4561885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgxstrdup (const char *string)
4562885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
4563885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
4564885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			  string) : NULL;
4565885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
4566885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4567885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char *
4568885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgbase_name (const char *name)
4569885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
4570885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  const char *base;
4571885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4572885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4573885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  /* Skip over the disk name in MSDOS pathnames. */
4574885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
4575885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    name += 2;
4576885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif
4577885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4578885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  for (base = name; *name; name++)
4579885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if (IS_DIR_SEPARATOR (*name))
4580885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      base = name + 1;
4581885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  return base;
4582885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
4583885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4584885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgint
4585885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcheck_executable (const char *path)
4586885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
4587885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  struct stat st;
4588885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4589885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
4590885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                  nonempty (path));
4591885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if ((!path) || (!*path))
4592885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    return 0;
4593885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4594885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if ((stat (path, &st) >= 0)
4595885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
4596885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    return 1;
4597885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  else
4598885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    return 0;
4599885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
4600885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4601885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgint
4602885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgmake_executable (const char *path)
4603885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
4604885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  int rval = 0;
4605885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  struct stat st;
4606885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4607885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
4608885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                  nonempty (path));
4609885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if ((!path) || (!*path))
4610885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    return 0;
4611885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4612885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if (stat (path, &st) >= 0)
4613885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    {
4614885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
4615885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
4616885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  return rval;
4617885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
4618885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4619885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* Searches for the full path of the wrapper.  Returns
4620885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org   newly allocated full path name if found, NULL otherwise
4621885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org   Does not chase symlinks, even on platforms that support them.
4622885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org*/
4623885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar *
4624885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfind_executable (const char *wrapper)
4625885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
4626885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  int has_slash = 0;
4627885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  const char *p;
4628885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  const char *p_next;
4629885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  /* static buffer for getcwd */
4630885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  char tmp[LT_PATHMAX + 1];
4631885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  int tmp_len;
4632885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  char *concat_name;
4633885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4634885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
4635885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                  nonempty (wrapper));
4636885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4637885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if ((wrapper == NULL) || (*wrapper == '\0'))
4638885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    return NULL;
4639885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4640885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  /* Absolute path? */
4641885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4642885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
4643885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    {
4644885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      concat_name = xstrdup (wrapper);
4645885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if (check_executable (concat_name))
4646885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	return concat_name;
4647885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      XFREE (concat_name);
4648885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
4649885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  else
4650885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    {
4651885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif
4652885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if (IS_DIR_SEPARATOR (wrapper[0]))
4653885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	{
4654885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  concat_name = xstrdup (wrapper);
4655885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if (check_executable (concat_name))
4656885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    return concat_name;
4657885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  XFREE (concat_name);
4658885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	}
4659885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4660885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
4661885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif
4662885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4663885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  for (p = wrapper; *p; p++)
4664885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if (*p == '/')
4665885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      {
4666885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	has_slash = 1;
4667885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	break;
4668885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      }
4669885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if (!has_slash)
4670885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    {
4671885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      /* no slashes; search PATH */
4672885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      const char *path = getenv ("PATH");
4673885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if (path != NULL)
4674885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	{
4675885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for (p = path; *p; p = p_next)
4676885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    {
4677885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      const char *q;
4678885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      size_t p_len;
4679885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      for (q = p; *q; q++)
4680885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		if (IS_PATH_SEPARATOR (*q))
4681885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  break;
4682885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      p_len = q - p;
4683885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      p_next = (*q == '\0' ? q : q + 1);
4684885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if (p_len == 0)
4685885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		{
4686885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  /* empty path: current directory */
4687885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  if (getcwd (tmp, LT_PATHMAX) == NULL)
4688885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
4689885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                              nonnull (strerror (errno)));
4690885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  tmp_len = strlen (tmp);
4691885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  concat_name =
4692885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
4693885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  memcpy (concat_name, tmp, tmp_len);
4694885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  concat_name[tmp_len] = '/';
4695885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  strcpy (concat_name + tmp_len + 1, wrapper);
4696885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		}
4697885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      else
4698885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		{
4699885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  concat_name =
4700885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
4701885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  memcpy (concat_name, p, p_len);
4702885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  concat_name[p_len] = '/';
4703885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  strcpy (concat_name + p_len + 1, wrapper);
4704885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		}
4705885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if (check_executable (concat_name))
4706885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		return concat_name;
4707885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      XFREE (concat_name);
4708885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    }
4709885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	}
4710885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      /* not found in PATH; assume curdir */
4711885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
4712885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  /* Relative path | not found in path: prepend cwd */
4713885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if (getcwd (tmp, LT_PATHMAX) == NULL)
4714885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
4715885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org              nonnull (strerror (errno)));
4716885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  tmp_len = strlen (tmp);
4717885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
4718885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  memcpy (concat_name, tmp, tmp_len);
4719885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  concat_name[tmp_len] = '/';
4720885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  strcpy (concat_name + tmp_len + 1, wrapper);
4721885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4722885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if (check_executable (concat_name))
4723885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    return concat_name;
4724885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  XFREE (concat_name);
4725885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  return NULL;
4726885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
4727885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4728885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar *
4729885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchase_symlinks (const char *pathspec)
4730885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
4731885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifndef S_ISLNK
4732885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  return xstrdup (pathspec);
4733885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#else
4734885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  char buf[LT_PATHMAX];
4735885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  struct stat s;
4736885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  char *tmp_pathspec = xstrdup (pathspec);
4737885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  char *p;
4738885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  int has_symlinks = 0;
4739885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  while (strlen (tmp_pathspec) && !has_symlinks)
4740885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    {
4741885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      lt_debugprintf (__FILE__, __LINE__,
4742885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      "checking path component for symlinks: %s\n",
4743885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      tmp_pathspec);
4744885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if (lstat (tmp_pathspec, &s) == 0)
4745885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	{
4746885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if (S_ISLNK (s.st_mode) != 0)
4747885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    {
4748885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      has_symlinks = 1;
4749885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      break;
4750885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    }
4751885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4752885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  /* search backwards for last DIR_SEPARATOR */
4753885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
4754885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4755885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    p--;
4756885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4757885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    {
4758885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      /* no more DIR_SEPARATORS left */
4759885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      break;
4760885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    }
4761885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *p = '\0';
4762885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	}
4763885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      else
4764885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	{
4765885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  lt_fatal (__FILE__, __LINE__,
4766885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    "error accessing file \"%s\": %s",
4767885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    tmp_pathspec, nonnull (strerror (errno)));
4768885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	}
4769885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
4770885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  XFREE (tmp_pathspec);
4771885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4772885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if (!has_symlinks)
4773885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    {
4774885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      return xstrdup (pathspec);
4775885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
4776885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4777885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  tmp_pathspec = realpath (pathspec, buf);
4778885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if (tmp_pathspec == 0)
4779885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    {
4780885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      lt_fatal (__FILE__, __LINE__,
4781885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		"could not follow symlinks for %s", pathspec);
4782885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
4783885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  return xstrdup (tmp_pathspec);
4784885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif
4785885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
4786885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4787885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar *
4788885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstrendzap (char *str, const char *pat)
4789885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
4790885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  size_t len, patlen;
4791885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4792885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  assert (str != NULL);
4793885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  assert (pat != NULL);
4794885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4795885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  len = strlen (str);
4796885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  patlen = strlen (pat);
4797885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4798885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if (patlen <= len)
4799885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    {
4800885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      str += len - patlen;
4801885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if (strcmp (str, pat) == 0)
4802885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*str = '\0';
4803885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
4804885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  return str;
4805885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
4806885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4807885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid
4808885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_debugprintf (const char *file, int line, const char *fmt, ...)
4809885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
4810885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  va_list args;
4811885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if (lt_debug)
4812885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    {
4813885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
4814885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      va_start (args, fmt);
4815885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      (void) vfprintf (stderr, fmt, args);
4816885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      va_end (args);
4817885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
4818885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
4819885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4820885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic void
4821885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_error_core (int exit_status, const char *file,
4822885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	       int line, const char *mode,
4823885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	       const char *message, va_list ap)
4824885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
4825885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
4826885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  vfprintf (stderr, message, ap);
4827885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  fprintf (stderr, ".\n");
4828885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4829885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if (exit_status >= 0)
4830885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    exit (exit_status);
4831885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
4832885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4833885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid
4834885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_fatal (const char *file, int line, const char *message, ...)
4835885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
4836885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  va_list ap;
4837885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  va_start (ap, message);
4838885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
4839885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  va_end (ap);
4840885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
4841885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4842885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic const char *
4843885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgnonnull (const char *s)
4844885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
4845885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  return s ? s : "(null)";
4846885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
4847885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4848885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic const char *
4849885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgnonempty (const char *s)
4850885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
4851885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  return (s && !*s) ? "(empty)" : nonnull (s);
4852885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
4853885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4854885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid
4855885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_setenv (const char *name, const char *value)
4856885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
4857885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  lt_debugprintf (__FILE__, __LINE__,
4858885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  "(lt_setenv) setting '%s' to '%s'\n",
4859885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                  nonnull (name), nonnull (value));
4860885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  {
4861885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifdef HAVE_SETENV
4862885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    /* always make a copy, for consistency with !HAVE_SETENV */
4863885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    char *str = xstrdup (value);
4864885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    setenv (name, str, 1);
4865885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#else
4866885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    int len = strlen (name) + 1 + strlen (value) + 1;
4867885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    char *str = XMALLOC (char, len);
4868885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    sprintf (str, "%s=%s", name, value);
4869885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if (putenv (str) != EXIT_SUCCESS)
4870885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      {
4871885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        XFREE (str);
4872885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      }
4873885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif
4874885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  }
4875885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
4876885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4877885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar *
4878885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_extend_str (const char *orig_value, const char *add, int to_end)
4879885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
4880885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  char *new_value;
4881885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if (orig_value && *orig_value)
4882885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    {
4883885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      int orig_value_len = strlen (orig_value);
4884885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      int add_len = strlen (add);
4885885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      new_value = XMALLOC (char, add_len + orig_value_len + 1);
4886885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if (to_end)
4887885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        {
4888885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          strcpy (new_value, orig_value);
4889885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          strcpy (new_value + orig_value_len, add);
4890885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        }
4891885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      else
4892885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        {
4893885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          strcpy (new_value, add);
4894885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          strcpy (new_value + add_len, orig_value);
4895885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        }
4896885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
4897885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  else
4898885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    {
4899885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      new_value = xstrdup (add);
4900885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
4901885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  return new_value;
4902885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
4903885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4904885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid
4905885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_update_exe_path (const char *name, const char *value)
4906885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
4907885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  lt_debugprintf (__FILE__, __LINE__,
4908885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
4909885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                  nonnull (name), nonnull (value));
4910885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4911885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if (name && *name && value && *value)
4912885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    {
4913885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      char *new_value = lt_extend_str (getenv (name), value, 0);
4914885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      /* some systems can't cope with a ':'-terminated path #' */
4915885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      int len = strlen (new_value);
4916885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
4917885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        {
4918885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          new_value[len-1] = '\0';
4919885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        }
4920885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      lt_setenv (name, new_value);
4921885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      XFREE (new_value);
4922885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
4923885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
4924885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4925885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid
4926885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_update_lib_path (const char *name, const char *value)
4927885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
4928885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  lt_debugprintf (__FILE__, __LINE__,
4929885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
4930885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                  nonnull (name), nonnull (value));
4931885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4932885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  if (name && *name && value && *value)
4933885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    {
4934885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      char *new_value = lt_extend_str (getenv (name), value, 0);
4935885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      lt_setenv (name, new_value);
4936885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      XFREE (new_value);
4937885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
4938885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
4939885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4940885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
4941885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case $host_os in
4942885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      mingw*)
4943885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		cat <<"EOF"
4944885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4945885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* Prepares an argument vector before calling spawn().
4946885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org   Note that spawn() does not by itself call the command interpreter
4947885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
4948885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
4949885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org         GetVersionEx(&v);
4950885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
4951885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      }) ? "cmd.exe" : "command.com").
4952885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org   Instead it simply concatenates the arguments, separated by ' ', and calls
4953885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
4954885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
4955885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org   special way:
4956885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org   - Space and tab are interpreted as delimiters. They are not treated as
4957885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     delimiters if they are surrounded by double quotes: "...".
4958885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org   - Unescaped double quotes are removed from the input. Their only effect is
4959885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     that within double quotes, space and tab are treated like normal
4960885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     characters.
4961885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org   - Backslashes not followed by double quotes are not special.
4962885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org   - But 2*n+1 backslashes followed by a double quote become
4963885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org     n backslashes followed by a double quote (n >= 0):
4964885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org       \" -> "
4965885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org       \\\" -> \"
4966885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org       \\\\\" -> \\"
4967885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org */
4968885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#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"
4969885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#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"
4970885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar **
4971885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgprepare_spawn (char **argv)
4972885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
4973885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  size_t argc;
4974885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  char **new_argv;
4975885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  size_t i;
4976885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4977885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  /* Count number of arguments.  */
4978885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  for (argc = 0; argv[argc] != NULL; argc++)
4979885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ;
4980885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4981885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  /* Allocate new argument vector.  */
4982885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  new_argv = XMALLOC (char *, argc + 1);
4983885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4984885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  /* Put quoted arguments into the new argument vector.  */
4985885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  for (i = 0; i < argc; i++)
4986885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    {
4987885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      const char *string = argv[i];
4988885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
4989885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if (string[0] == '\0')
4990885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	new_argv[i] = xstrdup ("\"\"");
4991885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
4992885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	{
4993885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
4994885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  size_t length;
4995885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  unsigned int backslashes;
4996885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  const char *s;
4997885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  char *quoted_string;
4998885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  char *p;
4999885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5000885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  length = 0;
5001885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  backslashes = 0;
5002885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if (quote_around)
5003885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    length++;
5004885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for (s = string; *s != '\0'; s++)
5005885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    {
5006885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      char c = *s;
5007885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if (c == '"')
5008885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		length += backslashes + 1;
5009885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      length++;
5010885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if (c == '\\')
5011885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		backslashes++;
5012885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      else
5013885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		backslashes = 0;
5014885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    }
5015885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if (quote_around)
5016885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    length += backslashes + 1;
5017885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5018885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  quoted_string = XMALLOC (char, length + 1);
5019885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5020885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  p = quoted_string;
5021885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  backslashes = 0;
5022885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if (quote_around)
5023885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *p++ = '"';
5024885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for (s = string; *s != '\0'; s++)
5025885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    {
5026885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      char c = *s;
5027885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if (c == '"')
5028885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		{
5029885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  unsigned int j;
5030885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  for (j = backslashes + 1; j > 0; j--)
5031885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    *p++ = '\\';
5032885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		}
5033885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *p++ = c;
5034885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if (c == '\\')
5035885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		backslashes++;
5036885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      else
5037885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		backslashes = 0;
5038885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    }
5039885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if (quote_around)
5040885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    {
5041885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      unsigned int j;
5042885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      for (j = backslashes; j > 0; j--)
5043885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		*p++ = '\\';
5044885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *p++ = '"';
5045885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    }
5046885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *p = '\0';
5047885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5048885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  new_argv[i] = quoted_string;
5049885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	}
5050885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      else
5051885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	new_argv[i] = (char *) string;
5052885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    }
5053885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  new_argv[argc] = NULL;
5054885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5055885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  return new_argv;
5056885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
5057885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
5058885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
5059885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
5060885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5061885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org            cat <<"EOF"
5062885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid lt_dump_script (FILE* f)
5063885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
5064885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
5065885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_emit_wrapper yes |
5066885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      $SED -n -e '
5067885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgs/^\(.\{79\}\)\(..*\)/\1\
5068885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org\2/
5069885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgh
5070885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgs/\([\\"]\)/\\\1/g
5071885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgs/$/\\n/
5072885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgs/\([^\n]*\).*/  fputs ("\1", f);/p
5073885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgg
5074885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgD'
5075885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org            cat <<"EOF"
5076885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
5077885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
5078885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
5079885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end: func_emit_cwrapperexe_src
5080885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5081885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_win32_import_lib_p ARG
5082885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# True if ARG is an import lib, as indicated by $file_magic_cmd
5083885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_win32_import_lib_p ()
5084885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
5085885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_debug
5086885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
5087885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *import*) : ;;
5088885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *) false ;;
5089885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
5090885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
5091885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5092885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_mode_link arg...
5093885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_mode_link ()
5094885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
5095885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_debug
5096885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case $host in
5097885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
5098885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # It is impossible to link a dll without this setting, and
5099885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # we shouldn't force the makefile maintainer to figure out
5100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # which system we are compiling for in order to pass an extra
5101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # flag for every libtool invocation.
5102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # allow_undefined=no
5103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # FIXME: Unfortunately, there are problems with the above when trying
5105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # to make a dll which has undefined symbols, in which case not
5106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # even a static library is built.  For now, we need to specify
5107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # -no-undefined on the libtool link line when we can be certain
5108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # that all symbols are satisfied, otherwise we get a static library.
5109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      allow_undefined=yes
5110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
5111885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *)
5112885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      allow_undefined=yes
5113885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
5114885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
5115885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    libtool_args=$nonopt
5116885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    base_compile="$nonopt $@"
5117885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    compile_command=$nonopt
5118885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    finalize_command=$nonopt
5119885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5120885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    compile_rpath=
5121885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    finalize_rpath=
5122885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    compile_shlibpath=
5123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    finalize_shlibpath=
5124885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    convenience=
5125885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    old_convenience=
5126885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    deplibs=
5127885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    old_deplibs=
5128885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    compiler_flags=
5129885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    linker_flags=
5130885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    dllsearchpath=
5131885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    lib_search_path=`pwd`
5132885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    inst_prefix_dir=
5133885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    new_inherited_linker_flags=
5134885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5135885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    avoid_version=no
5136885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    bindir=
5137885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    dlfiles=
5138885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    dlprefiles=
5139885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    dlself=no
5140885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    export_dynamic=no
5141885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    export_symbols=
5142885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    export_symbols_regex=
5143885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    generated=
5144885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    libobjs=
5145885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    ltlibs=
5146885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    module=no
5147885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    no_install=no
5148885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    objs=
5149885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    non_pic_objects=
5150885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    precious_files_regex=
5151885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    prefer_static_libs=no
5152885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    preload=no
5153885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    prev=
5154885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    prevarg=
5155885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    release=
5156885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    rpath=
5157885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    xrpath=
5158885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    perm_rpath=
5159885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    temp_rpath=
5160885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    thread_safe=no
5161885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    vinfo=
5162885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    vinfo_number=no
5163885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    weak_libs=
5164885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    single_module="${wl}-single_module"
5165885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_infer_tag $base_compile
5166885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5167885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # We need to know -static, to get the right output filenames.
5168885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    for arg
5169885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    do
5170885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $arg in
5171885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -shared)
5172885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	test "$build_libtool_libs" != yes && \
5173885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_fatal_configuration "can not build a shared library"
5174885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	build_old_libs=no
5175885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	break
5176885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5177885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -all-static | -static | -static-libtool-libs)
5178885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $arg in
5179885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	-all-static)
5180885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
5181885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_warning "complete static linking is impossible in this configuration"
5182885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
5183885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$link_static_flag"; then
5184885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    dlopen_self=$dlopen_self_static
5185885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
5186885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prefer_static_libs=yes
5187885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5188885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	-static)
5189885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
5190885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    dlopen_self=$dlopen_self_static
5191885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
5192885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prefer_static_libs=built
5193885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5194885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	-static-libtool-libs)
5195885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
5196885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    dlopen_self=$dlopen_self_static
5197885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
5198885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prefer_static_libs=yes
5199885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5200885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
5201885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	build_libtool_libs=no
5202885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	build_old_libs=yes
5203885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	break
5204885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5205885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
5206885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    done
5207885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5208885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # See if our shared archives depend on static archives.
5209885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
5210885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5211885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Go through the arguments, transforming them on the way.
5212885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    while test "$#" -gt 0; do
5213885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      arg="$1"
5214885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      shift
5215885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_quote_for_eval "$arg"
5216885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      qarg=$func_quote_for_eval_unquoted_result
5217885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_append libtool_args " $func_quote_for_eval_result"
5218885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5219885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # If the previous option needs an argument, assign it.
5220885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$prev"; then
5221885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $prev in
5222885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	output)
5223885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append compile_command " @OUTPUT@"
5224885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append finalize_command " @OUTPUT@"
5225885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5226885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
5227885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5228885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $prev in
5229885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	bindir)
5230885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  bindir="$arg"
5231885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prev=
5232885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
5233885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5234885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	dlfiles|dlprefiles)
5235885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$preload" = no; then
5236885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Add the symbol object into the linking commands.
5237885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append compile_command " @SYMFILE@"
5238885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append finalize_command " @SYMFILE@"
5239885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    preload=yes
5240885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
5241885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $arg in
5242885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *.la | *.lo) ;;  # We handle these cases below.
5243885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  force)
5244885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$dlself" = no; then
5245885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      dlself=needless
5246885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      export_dynamic=yes
5247885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
5248885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    prev=
5249885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    continue
5250885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
5251885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  self)
5252885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$prev" = dlprefiles; then
5253885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      dlself=yes
5254885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
5255885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      dlself=yes
5256885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
5257885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      dlself=needless
5258885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      export_dynamic=yes
5259885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
5260885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    prev=
5261885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    continue
5262885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
5263885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *)
5264885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$prev" = dlfiles; then
5265885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append dlfiles " $arg"
5266885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
5267885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append dlprefiles " $arg"
5268885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
5269885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    prev=
5270885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    continue
5271885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
5272885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
5273885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5274885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	expsyms)
5275885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  export_symbols="$arg"
5276885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  test -f "$arg" \
5277885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    || func_fatal_error "symbol file \`$arg' does not exist"
5278885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prev=
5279885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
5280885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5281885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	expsyms_regex)
5282885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  export_symbols_regex="$arg"
5283885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prev=
5284885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
5285885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5286885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	framework)
5287885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $host in
5288885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *-*-darwin*)
5289885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case "$deplibs " in
5290885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		*" $qarg.ltframework "*) ;;
5291885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		*) func_append deplibs " $qarg.ltframework" # this is fixed later
5292885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		   ;;
5293885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
5294885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      ;;
5295885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
5296885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prev=
5297885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
5298885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5299885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	inst_prefix)
5300885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  inst_prefix_dir="$arg"
5301885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prev=
5302885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
5303885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5304885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	objectlist)
5305885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -f "$arg"; then
5306885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    save_arg=$arg
5307885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    moreargs=
5308885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    for fil in `cat "$save_arg"`
5309885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    do
5310885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#	      func_append moreargs " $fil"
5311885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      arg=$fil
5312885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # A libtool-controlled object.
5313885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5314885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # Check to see that this really is a libtool object.
5315885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if func_lalib_unsafe_p "$arg"; then
5316885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		pic_object=
5317885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		non_pic_object=
5318885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5319885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		# Read the .lo file
5320885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_source "$arg"
5321885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5322885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		if test -z "$pic_object" ||
5323885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		   test -z "$non_pic_object" ||
5324885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		   test "$pic_object" = none &&
5325885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		   test "$non_pic_object" = none; then
5326885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_fatal_error "cannot find name of object for \`$arg'"
5327885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		fi
5328885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5329885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		# Extract subdirectory from the argument.
5330885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_dirname "$arg" "/" ""
5331885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		xdir="$func_dirname_result"
5332885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5333885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		if test "$pic_object" != none; then
5334885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  # Prepend the subdirectory the object is found in.
5335885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  pic_object="$xdir$pic_object"
5336885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5337885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  if test "$prev" = dlfiles; then
5338885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5339885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      func_append dlfiles " $pic_object"
5340885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      prev=
5341885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      continue
5342885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    else
5343885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      # If libtool objects are unsupported, then we need to preload.
5344885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      prev=dlprefiles
5345885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    fi
5346885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  fi
5347885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5348885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  # CHECK ME:  I think I busted this.  -Ossama
5349885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  if test "$prev" = dlprefiles; then
5350885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    # Preload the old-style object.
5351885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    func_append dlprefiles " $pic_object"
5352885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    prev=
5353885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  fi
5354885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5355885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  # A PIC object.
5356885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_append libobjs " $pic_object"
5357885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  arg="$pic_object"
5358885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		fi
5359885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5360885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		# Non-PIC object.
5361885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		if test "$non_pic_object" != none; then
5362885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  # Prepend the subdirectory the object is found in.
5363885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  non_pic_object="$xdir$non_pic_object"
5364885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5365885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  # A standard non-PIC object
5366885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_append non_pic_objects " $non_pic_object"
5367885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  if test -z "$pic_object" || test "$pic_object" = none ; then
5368885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    arg="$non_pic_object"
5369885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  fi
5370885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		else
5371885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  # If the PIC object exists, use it instead.
5372885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  # $xdir was prepended to $pic_object above.
5373885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  non_pic_object="$pic_object"
5374885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_append non_pic_objects " $non_pic_object"
5375885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		fi
5376885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      else
5377885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		# Only an error if not doing a dry-run.
5378885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		if $opt_dry_run; then
5379885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  # Extract subdirectory from the argument.
5380885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_dirname "$arg" "/" ""
5381885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  xdir="$func_dirname_result"
5382885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5383885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_lo2o "$arg"
5384885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  pic_object=$xdir$objdir/$func_lo2o_result
5385885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  non_pic_object=$xdir$func_lo2o_result
5386885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_append libobjs " $pic_object"
5387885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_append non_pic_objects " $non_pic_object"
5388885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        else
5389885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_fatal_error "\`$arg' is not a valid libtool object"
5390885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		fi
5391885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
5392885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done
5393885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
5394885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_fatal_error "link input file \`$arg' does not exist"
5395885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
5396885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  arg=$save_arg
5397885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prev=
5398885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
5399885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5400885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	precious_regex)
5401885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  precious_files_regex="$arg"
5402885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prev=
5403885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
5404885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5405885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	release)
5406885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  release="-$arg"
5407885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prev=
5408885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
5409885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5410885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	rpath | xrpath)
5411885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # We need an absolute path.
5412885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $arg in
5413885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  [\\/]* | [A-Za-z]:[\\/]*) ;;
5414885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *)
5415885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_fatal_error "only absolute run-paths are allowed"
5416885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
5417885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
5418885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$prev" = rpath; then
5419885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case "$rpath " in
5420885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *" $arg "*) ;;
5421885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *) func_append rpath " $arg" ;;
5422885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
5423885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
5424885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case "$xrpath " in
5425885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *" $arg "*) ;;
5426885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *) func_append xrpath " $arg" ;;
5427885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
5428885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
5429885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prev=
5430885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
5431885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5432885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	shrext)
5433885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  shrext_cmds="$arg"
5434885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prev=
5435885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
5436885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5437885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	weak)
5438885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append weak_libs " $arg"
5439885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prev=
5440885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
5441885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5442885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	xcclinker)
5443885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append linker_flags " $qarg"
5444885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append compiler_flags " $qarg"
5445885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prev=
5446885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append compile_command " $qarg"
5447885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append finalize_command " $qarg"
5448885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
5449885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5450885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	xcompiler)
5451885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append compiler_flags " $qarg"
5452885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prev=
5453885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append compile_command " $qarg"
5454885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append finalize_command " $qarg"
5455885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
5456885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5457885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	xlinker)
5458885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append linker_flags " $qarg"
5459885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append compiler_flags " $wl$qarg"
5460885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prev=
5461885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append compile_command " $wl$qarg"
5462885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append finalize_command " $wl$qarg"
5463885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
5464885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5465885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*)
5466885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  eval "$prev=\"\$arg\""
5467885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prev=
5468885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
5469885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5470885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
5471885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi # test -n "$prev"
5472885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5473885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      prevarg="$arg"
5474885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5475885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $arg in
5476885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -all-static)
5477885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$link_static_flag"; then
5478885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # See comment for -static flag below, for more details.
5479885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append compile_command " $link_static_flag"
5480885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append finalize_command " $link_static_flag"
5481885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
5482885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5483885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5484885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5485885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -allow-undefined)
5486885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# FIXME: remove this flag sometime in the future.
5487885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
5488885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5489885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5490885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -avoid-version)
5491885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	avoid_version=yes
5492885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5493885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5494885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5495885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -bindir)
5496885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	prev=bindir
5497885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5498885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5499885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5500885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -dlopen)
5501885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	prev=dlfiles
5502885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5503885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5504885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5505885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -dlpreopen)
5506885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	prev=dlprefiles
5507885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5508885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5509885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5510885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -export-dynamic)
5511885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	export_dynamic=yes
5512885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5513885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5514885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5515885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -export-symbols | -export-symbols-regex)
5516885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
5517885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_fatal_error "more than one -exported-symbols argument is not allowed"
5518885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
5519885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "X$arg" = "X-export-symbols"; then
5520885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prev=expsyms
5521885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
5522885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prev=expsyms_regex
5523885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
5524885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5525885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5526885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5527885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -framework)
5528885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	prev=framework
5529885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5530885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5531885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5532885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -inst-prefix-dir)
5533885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	prev=inst_prefix
5534885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5535885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5536885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5537885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
5538885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # so, if we see these flags be careful not to treat them like -L
5539885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -L[A-Z][A-Z]*:*)
5540885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $with_gcc/$host in
5541885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	no/*-*-irix* | /*-*-irix*)
5542885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append compile_command " $arg"
5543885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append finalize_command " $arg"
5544885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5545885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
5546885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5547885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5548885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5549885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -L*)
5550885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_stripname "-L" '' "$arg"
5551885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -z "$func_stripname_result"; then
5552885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$#" -gt 0; then
5553885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_fatal_error "require no space between \`-L' and \`$1'"
5554885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
5555885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_fatal_error "need path for \`-L' option"
5556885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
5557885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
5558885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_resolve_sysroot "$func_stripname_result"
5559885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	dir=$func_resolve_sysroot_result
5560885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# We need an absolute path.
5561885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $dir in
5562885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	[\\/]* | [A-Za-z]:[\\/]*) ;;
5563885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*)
5564885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  absdir=`cd "$dir" && pwd`
5565885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  test -z "$absdir" && \
5566885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
5567885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  dir="$absdir"
5568885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5569885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
5570885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case "$deplibs " in
5571885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*" -L$dir "* | *" $arg "*)
5572885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Will only happen for absolute or sysroot arguments
5573885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5574885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*)
5575885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Preserve sysroot, but never include relative directories
5576885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $dir in
5577885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
5578885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *) func_append deplibs " -L$dir" ;;
5579885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
5580885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append lib_search_path " $dir"
5581885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5582885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
5583885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $host in
5584885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
5585885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
5586885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case :$dllsearchpath: in
5587885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *":$dir:"*) ;;
5588885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ::) dllsearchpath=$dir;;
5589885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *) func_append dllsearchpath ":$dir";;
5590885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
5591885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case :$dllsearchpath: in
5592885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *":$testbindir:"*) ;;
5593885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ::) dllsearchpath=$testbindir;;
5594885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *) func_append dllsearchpath ":$testbindir";;
5595885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
5596885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5597885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
5598885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5599885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5600885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5601885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -l*)
5602885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
5603885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $host in
5604885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
5605885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # These systems don't actually have a C or math library (as such)
5606885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    continue
5607885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
5608885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *-*-os2*)
5609885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # These systems don't actually have a C library (as such)
5610885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    test "X$arg" = "X-lc" && continue
5611885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
5612885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
5613885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Do not include libc due to us having libc/libc_r.
5614885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    test "X$arg" = "X-lc" && continue
5615885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
5616885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *-*-rhapsody* | *-*-darwin1.[012])
5617885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Rhapsody C and math libraries are in the System framework
5618885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append deplibs " System.ltframework"
5619885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    continue
5620885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
5621885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *-*-sco3.2v5* | *-*-sco5v6*)
5622885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Causes problems with __ctype
5623885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    test "X$arg" = "X-lc" && continue
5624885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
5625885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
5626885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Compiler inserts libc in the correct place for threads to work
5627885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    test "X$arg" = "X-lc" && continue
5628885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
5629885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
5630885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	elif test "X$arg" = "X-lc_r"; then
5631885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	 case $host in
5632885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
5633885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	   # Do not include libc_r directly, use -pthread flag.
5634885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	   continue
5635885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	   ;;
5636885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	 esac
5637885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
5638885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append deplibs " $arg"
5639885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5640885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5641885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5642885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -module)
5643885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	module=yes
5644885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5645885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5646885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5647885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Tru64 UNIX uses -model [arg] to determine the layout of C++
5648885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # classes, name mangling, and exception handling.
5649885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Darwin uses the -arch flag to determine output architecture.
5650885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -model|-arch|-isysroot|--sysroot)
5651885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append compiler_flags " $arg"
5652885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append compile_command " $arg"
5653885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append finalize_command " $arg"
5654885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	prev=xcompiler
5655885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5656885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5657885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5658885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
5659885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
5660885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append compiler_flags " $arg"
5661885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append compile_command " $arg"
5662885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append finalize_command " $arg"
5663885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case "$new_inherited_linker_flags " in
5664885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *" $arg "*) ;;
5665885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    * ) func_append new_inherited_linker_flags " $arg" ;;
5666885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
5667885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5668885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5669885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5670885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -multi_module)
5671885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	single_module="${wl}-multi_module"
5672885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5673885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5674885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5675885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -no-fast-install)
5676885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fast_install=no
5677885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5678885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5679885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5680885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -no-install)
5681885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $host in
5682885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
5683885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # The PATH hackery in wrapper scripts is required on Windows
5684885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # and Darwin in order for the loader to find any dlls it needs.
5685885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_warning "\`-no-install' is ignored for $host"
5686885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_warning "assuming \`-no-fast-install' instead"
5687885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fast_install=no
5688885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5689885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*) no_install=yes ;;
5690885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
5691885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5692885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5693885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5694885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -no-undefined)
5695885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	allow_undefined=no
5696885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5697885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5698885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5699885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -objectlist)
5700885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	prev=objectlist
5701885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5702885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5703885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5704885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -o) prev=output ;;
5705885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5706885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -precious-files-regex)
5707885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	prev=precious_regex
5708885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5709885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5710885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5711885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -release)
5712885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	prev=release
5713885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5714885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5715885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5716885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -rpath)
5717885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	prev=rpath
5718885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5719885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5720885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5721885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -R)
5722885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	prev=xrpath
5723885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5724885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5725885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5726885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -R*)
5727885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_stripname '-R' '' "$arg"
5728885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	dir=$func_stripname_result
5729885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# We need an absolute path.
5730885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $dir in
5731885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	[\\/]* | [A-Za-z]:[\\/]*) ;;
5732885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	=*)
5733885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_stripname '=' '' "$dir"
5734885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  dir=$lt_sysroot$func_stripname_result
5735885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5736885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*)
5737885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_fatal_error "only absolute run-paths are allowed"
5738885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
5739885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
5740885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case "$xrpath " in
5741885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*" $dir "*) ;;
5742885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*) func_append xrpath " $dir" ;;
5743885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
5744885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5745885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5746885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5747885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -shared)
5748885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# The effects of -shared are defined in a previous loop.
5749885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5750885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5751885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5752885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -shrext)
5753885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	prev=shrext
5754885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5755885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5756885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5757885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -static | -static-libtool-libs)
5758885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# The effects of -static are defined in a previous loop.
5759885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# We used to do the same as -all-static on platforms that
5760885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# didn't have a PIC flag, but the assumption that the effects
5761885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# would be equivalent was wrong.  It would break on at least
5762885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Digital Unix and AIX.
5763885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5764885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5765885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5766885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -thread-safe)
5767885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	thread_safe=yes
5768885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5769885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5770885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5771885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -version-info)
5772885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	prev=vinfo
5773885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5774885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5775885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5776885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -version-number)
5777885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	prev=vinfo
5778885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	vinfo_number=yes
5779885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5780885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5781885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5782885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -weak)
5783885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        prev=weak
5784885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5785885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5786885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5787885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -Wc,*)
5788885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_stripname '-Wc,' '' "$arg"
5789885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	args=$func_stripname_result
5790885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	arg=
5791885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	save_ifs="$IFS"; IFS=','
5792885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	for flag in $args; do
5793885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  IFS="$save_ifs"
5794885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          func_quote_for_eval "$flag"
5795885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append arg " $func_quote_for_eval_result"
5796885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append compiler_flags " $func_quote_for_eval_result"
5797885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done
5798885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	IFS="$save_ifs"
5799885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_stripname ' ' '' "$arg"
5800885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	arg=$func_stripname_result
5801885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5802885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5803885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -Wl,*)
5804885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_stripname '-Wl,' '' "$arg"
5805885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	args=$func_stripname_result
5806885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	arg=
5807885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	save_ifs="$IFS"; IFS=','
5808885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	for flag in $args; do
5809885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  IFS="$save_ifs"
5810885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          func_quote_for_eval "$flag"
5811885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append arg " $wl$func_quote_for_eval_result"
5812885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append compiler_flags " $wl$func_quote_for_eval_result"
5813885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append linker_flags " $func_quote_for_eval_result"
5814885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done
5815885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	IFS="$save_ifs"
5816885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_stripname ' ' '' "$arg"
5817885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	arg=$func_stripname_result
5818885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5819885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5820885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -Xcompiler)
5821885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	prev=xcompiler
5822885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5823885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5824885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5825885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -Xlinker)
5826885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	prev=xlinker
5827885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5828885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5829885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5830885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -XCClinker)
5831885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	prev=xcclinker
5832885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5833885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5834885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5835885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # -msg_* for osf cc
5836885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -msg_*)
5837885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_quote_for_eval "$arg"
5838885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	arg="$func_quote_for_eval_result"
5839885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5840885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5841885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Flags to be passed through unchanged, with rationale:
5842885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
5843885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # -r[0-9][0-9]*        specify processor for the SGI compiler
5844885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
5845885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # +DA*, +DD*           enable 64-bit mode for the HP compiler
5846885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # -q*                  compiler args for the IBM compiler
5847885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
5848885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # -F/path              path to uninstalled frameworks, gcc on darwin
5849885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
5850885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # @file                GCC response files
5851885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # -tp=*                Portland pgcc target processor selection
5852885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # --sysroot=*          for sysroot support
5853885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
5854885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
5855885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
5856885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
5857885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_quote_for_eval "$arg"
5858885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	arg="$func_quote_for_eval_result"
5859885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_append compile_command " $arg"
5860885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_append finalize_command " $arg"
5861885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_append compiler_flags " $arg"
5862885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        continue
5863885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        ;;
5864885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5865885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Some other compiler flag.
5866885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -* | +*)
5867885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        func_quote_for_eval "$arg"
5868885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	arg="$func_quote_for_eval_result"
5869885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5870885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5871885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *.$objext)
5872885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# A standard object.
5873885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append objs " $arg"
5874885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5875885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5876885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *.lo)
5877885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# A libtool-controlled object.
5878885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5879885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Check to see that this really is a libtool object.
5880885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if func_lalib_unsafe_p "$arg"; then
5881885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  pic_object=
5882885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  non_pic_object=
5883885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5884885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Read the .lo file
5885885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_source "$arg"
5886885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5887885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -z "$pic_object" ||
5888885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	     test -z "$non_pic_object" ||
5889885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	     test "$pic_object" = none &&
5890885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	     test "$non_pic_object" = none; then
5891885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_fatal_error "cannot find name of object for \`$arg'"
5892885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
5893885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5894885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Extract subdirectory from the argument.
5895885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_dirname "$arg" "/" ""
5896885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  xdir="$func_dirname_result"
5897885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5898885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$pic_object" != none; then
5899885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Prepend the subdirectory the object is found in.
5900885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    pic_object="$xdir$pic_object"
5901885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5902885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$prev" = dlfiles; then
5903885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5904885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_append dlfiles " $pic_object"
5905885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		prev=
5906885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		continue
5907885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      else
5908885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		# If libtool objects are unsupported, then we need to preload.
5909885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		prev=dlprefiles
5910885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
5911885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
5912885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5913885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # CHECK ME:  I think I busted this.  -Ossama
5914885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$prev" = dlprefiles; then
5915885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # Preload the old-style object.
5916885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append dlprefiles " $pic_object"
5917885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      prev=
5918885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
5919885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5920885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # A PIC object.
5921885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append libobjs " $pic_object"
5922885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    arg="$pic_object"
5923885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
5924885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5925885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Non-PIC object.
5926885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$non_pic_object" != none; then
5927885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Prepend the subdirectory the object is found in.
5928885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    non_pic_object="$xdir$non_pic_object"
5929885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5930885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # A standard non-PIC object
5931885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append non_pic_objects " $non_pic_object"
5932885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -z "$pic_object" || test "$pic_object" = none ; then
5933885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      arg="$non_pic_object"
5934885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
5935885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
5936885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # If the PIC object exists, use it instead.
5937885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # $xdir was prepended to $pic_object above.
5938885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    non_pic_object="$pic_object"
5939885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append non_pic_objects " $non_pic_object"
5940885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
5941885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
5942885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Only an error if not doing a dry-run.
5943885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if $opt_dry_run; then
5944885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Extract subdirectory from the argument.
5945885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_dirname "$arg" "/" ""
5946885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    xdir="$func_dirname_result"
5947885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5948885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_lo2o "$arg"
5949885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    pic_object=$xdir$objdir/$func_lo2o_result
5950885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    non_pic_object=$xdir$func_lo2o_result
5951885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append libobjs " $pic_object"
5952885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append non_pic_objects " $non_pic_object"
5953885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
5954885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_fatal_error "\`$arg' is not a valid libtool object"
5955885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
5956885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
5957885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5958885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5959885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *.$libext)
5960885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# An archive.
5961885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append deplibs " $arg"
5962885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append old_deplibs " $arg"
5963885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5964885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5965885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5966885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *.la)
5967885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# A libtool-controlled library.
5968885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5969885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_resolve_sysroot "$arg"
5970885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$prev" = dlfiles; then
5971885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # This library was specified with -dlopen.
5972885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append dlfiles " $func_resolve_sysroot_result"
5973885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prev=
5974885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	elif test "$prev" = dlprefiles; then
5975885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # The library was specified with -dlpreopen.
5976885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append dlprefiles " $func_resolve_sysroot_result"
5977885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prev=
5978885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
5979885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append deplibs " $func_resolve_sysroot_result"
5980885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
5981885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
5982885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5983885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5984885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Some other compiler argument.
5985885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *)
5986885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Unknown arguments in both finalize_command and compile_command need
5987885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# to be aesthetically quoted because they are evaled later.
5988885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_quote_for_eval "$arg"
5989885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	arg="$func_quote_for_eval_result"
5990885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
5991885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac # arg
5992885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
5993885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Now actually substitute the argument into the commands.
5994885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$arg"; then
5995885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append compile_command " $arg"
5996885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append finalize_command " $arg"
5997885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
5998885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    done # argument parsing loop
5999885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6000885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    test -n "$prev" && \
6001885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_fatal_help "the \`$prevarg' option requires an argument"
6002885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6003885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
6004885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      eval arg=\"$export_dynamic_flag_spec\"
6005885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_append compile_command " $arg"
6006885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_append finalize_command " $arg"
6007885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
6008885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6009885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    oldlibs=
6010885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # calculate the name of the file, without its directory
6011885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_basename "$output"
6012885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    outputname="$func_basename_result"
6013885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    libobjs_save="$libobjs"
6014885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6015885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test -n "$shlibpath_var"; then
6016885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # get the directories listed in $shlibpath_var
6017885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
6018885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    else
6019885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      shlib_search_path=
6020885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
6021885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
6022885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
6023885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6024885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_dirname "$output" "/" ""
6025885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    output_objdir="$func_dirname_result$objdir"
6026885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_to_tool_file "$output_objdir/"
6027885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    tool_output_objdir=$func_to_tool_file_result
6028885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Create the object directory.
6029885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_mkdir_p "$output_objdir"
6030885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6031885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Determine the type of output
6032885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case $output in
6033885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    "")
6034885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_fatal_help "you must specify an output file"
6035885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
6036885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *.$libext) linkmode=oldlib ;;
6037885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *.lo | *.$objext) linkmode=obj ;;
6038885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *.la) linkmode=lib ;;
6039885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *) linkmode=prog ;; # Anything else should be a program.
6040885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
6041885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6042885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    specialdeplibs=
6043885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6044885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    libs=
6045885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Find all interdependent deplibs by searching for libraries
6046885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # that are linked more than once (e.g. -la -lb -la)
6047885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    for deplib in $deplibs; do
6048885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if $opt_preserve_dup_deps ; then
6049885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case "$libs " in
6050885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
6051885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
6052885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
6053885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_append libs " $deplib"
6054885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    done
6055885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6056885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$linkmode" = lib; then
6057885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      libs="$predeps $libs $compiler_lib_search_path $postdeps"
6058885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6059885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Compute libraries that are listed more than once in $predeps
6060885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # $postdeps and mark them as special (i.e., whose duplicates are
6061885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # not to be eliminated).
6062885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      pre_post_deps=
6063885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if $opt_duplicate_compiler_generated_deps; then
6064885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	for pre_post_dep in $predeps $postdeps; do
6065885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case "$pre_post_deps " in
6066885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
6067885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
6068885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append pre_post_deps " $pre_post_dep"
6069885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done
6070885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
6071885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      pre_post_deps=
6072885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
6073885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6074885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    deplibs=
6075885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    newdependency_libs=
6076885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    newlib_search_path=
6077885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    need_relink=no # whether we're linking any uninstalled libtool libraries
6078885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    notinst_deplibs= # not-installed libtool libraries
6079885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    notinst_path= # paths that contain not-installed libtool libraries
6080885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6081885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case $linkmode in
6082885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    lib)
6083885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	passes="conv dlpreopen link"
6084885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	for file in $dlfiles $dlprefiles; do
6085885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $file in
6086885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *.la) ;;
6087885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *)
6088885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
6089885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
6090885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
6091885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done
6092885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
6093885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    prog)
6094885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	compile_deplibs=
6095885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	finalize_deplibs=
6096885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	alldeplibs=no
6097885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	newdlfiles=
6098885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	newdlprefiles=
6099885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	passes="conv scan dlopen dlpreopen link"
6100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
6101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *)  passes="conv"
6102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
6103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
6104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    for pass in $passes; do
6106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # The preopen pass in lib mode reverses $deplibs; put it back here
6107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # so that -L comes before libs that need it for instance...
6108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$linkmode,$pass" = "lib,link"; then
6109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	## FIXME: Find the place where the list is rebuilt in the wrong
6110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	##        order, and fix it there properly
6111885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        tmp_deplibs=
6112885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	for deplib in $deplibs; do
6113885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  tmp_deplibs="$deplib $tmp_deplibs"
6114885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done
6115885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	deplibs="$tmp_deplibs"
6116885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
6117885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6118885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$linkmode,$pass" = "lib,link" ||
6119885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	 test "$linkmode,$pass" = "prog,scan"; then
6120885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	libs="$deplibs"
6121885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	deplibs=
6122885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
6123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$linkmode" = prog; then
6124885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $pass in
6125885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	dlopen) libs="$dlfiles" ;;
6126885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	dlpreopen) libs="$dlprefiles" ;;
6127885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
6128885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
6129885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
6130885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$linkmode,$pass" = "lib,dlpreopen"; then
6131885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Collect and forward deplibs of preopened libtool libs
6132885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	for lib in $dlprefiles; do
6133885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Ignore non-libtool-libs
6134885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  dependency_libs=
6135885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_resolve_sysroot "$lib"
6136885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $lib in
6137885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *.la)	func_source "$func_resolve_sysroot_result" ;;
6138885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
6139885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6140885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Collect preopened libtool deplibs, except any this library
6141885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # has declared as weak libs
6142885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for deplib in $dependency_libs; do
6143885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_basename "$deplib"
6144885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org            deplib_base=$func_basename_result
6145885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case " $weak_libs " in
6146885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *" $deplib_base "*) ;;
6147885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *) func_append deplibs " $deplib" ;;
6148885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
6149885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
6150885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done
6151885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	libs="$dlprefiles"
6152885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
6153885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$pass" = dlopen; then
6154885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Collect dlpreopened libraries
6155885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	save_deplibs="$deplibs"
6156885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	deplibs=
6157885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
6158885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6159885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      for deplib in $libs; do
6160885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	lib=
6161885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	found=no
6162885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $deplib in
6163885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
6164885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
6165885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$linkmode,$pass" = "prog,link"; then
6166885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    compile_deplibs="$deplib $compile_deplibs"
6167885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    finalize_deplibs="$deplib $finalize_deplibs"
6168885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
6169885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append compiler_flags " $deplib"
6170885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$linkmode" = lib ; then
6171885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		case "$new_inherited_linker_flags " in
6172885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    *" $deplib "*) ;;
6173885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    * ) func_append new_inherited_linker_flags " $deplib" ;;
6174885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		esac
6175885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6176885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6177885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
6178885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
6179885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	-l*)
6180885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$linkmode" != lib && test "$linkmode" != prog; then
6181885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_warning "\`-l' is ignored for archives/objects"
6182885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    continue
6183885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6184885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_stripname '-l' '' "$deplib"
6185885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  name=$func_stripname_result
6186885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$linkmode" = lib; then
6187885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
6188885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
6189885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
6190885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6191885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for searchdir in $searchdirs; do
6192885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    for search_ext in .la $std_shrext .so .a; do
6193885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # Search the libtool library
6194885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      lib="$searchdir/lib${name}${search_ext}"
6195885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test -f "$lib"; then
6196885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		if test "$search_ext" = ".la"; then
6197885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  found=yes
6198885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		else
6199885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  found=no
6200885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		fi
6201885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		break 2
6202885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
6203885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done
6204885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
6205885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$found" != yes; then
6206885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # deplib doesn't seem to be a libtool library
6207885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$linkmode,$pass" = "prog,link"; then
6208885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      compile_deplibs="$deplib $compile_deplibs"
6209885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      finalize_deplibs="$deplib $finalize_deplibs"
6210885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
6211885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      deplibs="$deplib $deplibs"
6212885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
6213885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6214885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    continue
6215885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else # deplib is a libtool library
6216885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
6217885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # We need to do some special things here, and not later.
6218885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6219885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case " $predeps $postdeps " in
6220885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *" $deplib "*)
6221885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		if func_lalib_p "$lib"; then
6222885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  library_names=
6223885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  old_library=
6224885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_source "$lib"
6225885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  for l in $old_library $library_names; do
6226885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    ll="$l"
6227885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  done
6228885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  if test "X$ll" = "X$old_library" ; then # only static version available
6229885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    found=no
6230885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    func_dirname "$lib" "" "."
6231885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    ladir="$func_dirname_result"
6232885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    lib=$ladir/$old_library
6233885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    if test "$linkmode,$pass" = "prog,link"; then
6234885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      compile_deplibs="$deplib $compile_deplibs"
6235885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      finalize_deplibs="$deplib $finalize_deplibs"
6236885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    else
6237885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      deplibs="$deplib $deplibs"
6238885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
6239885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    fi
6240885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    continue
6241885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  fi
6242885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		fi
6243885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
6244885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *) ;;
6245885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
6246885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6247885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6248885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;; # -l
6249885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*.ltframework)
6250885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$linkmode,$pass" = "prog,link"; then
6251885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    compile_deplibs="$deplib $compile_deplibs"
6252885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    finalize_deplibs="$deplib $finalize_deplibs"
6253885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
6254885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    deplibs="$deplib $deplibs"
6255885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$linkmode" = lib ; then
6256885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		case "$new_inherited_linker_flags " in
6257885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    *" $deplib "*) ;;
6258885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    * ) func_append new_inherited_linker_flags " $deplib" ;;
6259885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		esac
6260885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6261885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6262885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
6263885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
6264885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	-L*)
6265885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $linkmode in
6266885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  lib)
6267885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    deplibs="$deplib $deplibs"
6268885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    test "$pass" = conv && continue
6269885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    newdependency_libs="$deplib $newdependency_libs"
6270885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_stripname '-L' '' "$deplib"
6271885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_resolve_sysroot "$func_stripname_result"
6272885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append newlib_search_path " $func_resolve_sysroot_result"
6273885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
6274885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prog)
6275885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$pass" = conv; then
6276885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      deplibs="$deplib $deplibs"
6277885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      continue
6278885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6279885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$pass" = scan; then
6280885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      deplibs="$deplib $deplibs"
6281885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
6282885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      compile_deplibs="$deplib $compile_deplibs"
6283885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      finalize_deplibs="$deplib $finalize_deplibs"
6284885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6285885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_stripname '-L' '' "$deplib"
6286885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_resolve_sysroot "$func_stripname_result"
6287885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append newlib_search_path " $func_resolve_sysroot_result"
6288885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
6289885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *)
6290885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_warning "\`-L' is ignored for archives/objects"
6291885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
6292885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac # linkmode
6293885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
6294885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;; # -L
6295885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	-R*)
6296885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$pass" = link; then
6297885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_stripname '-R' '' "$deplib"
6298885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_resolve_sysroot "$func_stripname_result"
6299885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    dir=$func_resolve_sysroot_result
6300885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Make sure the xrpath contains only unique directories.
6301885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case "$xrpath " in
6302885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *" $dir "*) ;;
6303885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *) func_append xrpath " $dir" ;;
6304885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
6305885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6306885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  deplibs="$deplib $deplibs"
6307885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
6308885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
6309885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*.la)
6310885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_resolve_sysroot "$deplib"
6311885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  lib=$func_resolve_sysroot_result
6312885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
6313885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*.$libext)
6314885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$pass" = conv; then
6315885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    deplibs="$deplib $deplibs"
6316885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    continue
6317885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6318885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $linkmode in
6319885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  lib)
6320885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Linking convenience modules into shared libraries is allowed,
6321885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # but linking other static libraries is non-portable.
6322885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case " $dlpreconveniencelibs " in
6323885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *" $deplib "*) ;;
6324885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *)
6325885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      valid_a_lib=no
6326885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case $deplibs_check_method in
6327885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		match_pattern*)
6328885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  set dummy $deplibs_check_method; shift
6329885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
6330885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
6331885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    | $EGREP "$match_pattern_regex" > /dev/null; then
6332885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    valid_a_lib=yes
6333885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  fi
6334885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
6335885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		pass_all)
6336885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  valid_a_lib=yes
6337885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
6338885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
6339885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test "$valid_a_lib" != yes; then
6340885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo
6341885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
6342885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo "*** I have the capability to make that library automatically link in when"
6343885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo "*** you link to this library.  But I can only do this if you have a"
6344885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo "*** shared version of the library, which you do not appear to have"
6345885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo "*** because the file extensions .$libext of this argument makes me believe"
6346885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo "*** that it is just a static archive that I should not use here."
6347885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      else
6348885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo
6349885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		$ECHO "*** Warning: Linking the shared library $output against the"
6350885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		$ECHO "*** static library $deplib is not portable!"
6351885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		deplibs="$deplib $deplibs"
6352885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
6353885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      ;;
6354885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
6355885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    continue
6356885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
6357885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  prog)
6358885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$pass" != link; then
6359885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      deplibs="$deplib $deplibs"
6360885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
6361885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      compile_deplibs="$deplib $compile_deplibs"
6362885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      finalize_deplibs="$deplib $finalize_deplibs"
6363885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6364885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    continue
6365885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
6366885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac # linkmode
6367885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;; # *.$libext
6368885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*.lo | *.$objext)
6369885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$pass" = conv; then
6370885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    deplibs="$deplib $deplibs"
6371885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  elif test "$linkmode" = prog; then
6372885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
6373885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # If there is no dlopen support or we're linking statically,
6374885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # we need to preload.
6375885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append newdlprefiles " $deplib"
6376885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      compile_deplibs="$deplib $compile_deplibs"
6377885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      finalize_deplibs="$deplib $finalize_deplibs"
6378885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
6379885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append newdlfiles " $deplib"
6380885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6381885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6382885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
6383885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
6384885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	%DEPLIBS%)
6385885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  alldeplibs=yes
6386885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
6387885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
6388885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac # case $deplib
6389885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6390885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$found" = yes || test -f "$lib"; then :
6391885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
6392885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
6393885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
6394885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6395885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Check to see that this really is a libtool archive.
6396885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_lalib_unsafe_p "$lib" \
6397885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  || func_fatal_error "\`$lib' is not a valid libtool archive"
6398885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6399885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_dirname "$lib" "" "."
6400885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	ladir="$func_dirname_result"
6401885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6402885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	dlname=
6403885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	dlopen=
6404885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	dlpreopen=
6405885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	libdir=
6406885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	library_names=
6407885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	old_library=
6408885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	inherited_linker_flags=
6409885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# If the library was installed with an old release of libtool,
6410885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# it will not redefine variables installed, or shouldnotlink
6411885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	installed=yes
6412885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	shouldnotlink=no
6413885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	avoidtemprpath=
6414885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6415885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6416885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Read the .la file
6417885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_source "$lib"
6418885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6419885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Convert "-framework foo" to "foo.ltframework"
6420885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$inherited_linker_flags"; then
6421885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
6422885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
6423885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case " $new_inherited_linker_flags " in
6424885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *" $tmp_inherited_linker_flag "*) ;;
6425885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
6426885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
6427885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
6428885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
6429885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
6430885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$linkmode,$pass" = "lib,link" ||
6431885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	   test "$linkmode,$pass" = "prog,scan" ||
6432885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
6433885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  test -n "$dlopen" && func_append dlfiles " $dlopen"
6434885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
6435885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
6436885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6437885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$pass" = conv; then
6438885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Only check for convenience libraries
6439885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  deplibs="$lib $deplibs"
6440885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -z "$libdir"; then
6441885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -z "$old_library"; then
6442885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_fatal_error "cannot find name of link library for \`$lib'"
6443885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6444885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # It is a libtool convenience library, so add in its objects.
6445885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append convenience " $ladir/$objdir/$old_library"
6446885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append old_convenience " $ladir/$objdir/$old_library"
6447885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
6448885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_fatal_error "\`$lib' is not a convenience library"
6449885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6450885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  tmp_libs=
6451885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for deplib in $dependency_libs; do
6452885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    deplibs="$deplib $deplibs"
6453885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if $opt_preserve_dup_deps ; then
6454885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case "$tmp_libs " in
6455885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
6456885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
6457885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6458885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append tmp_libs " $deplib"
6459885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
6460885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
6461885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi # $pass = conv
6462885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6463885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6464885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Get the name of the library we link against.
6465885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	linklib=
6466885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$old_library" &&
6467885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	   { test "$prefer_static_libs" = yes ||
6468885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	     test "$prefer_static_libs,$installed" = "built,no"; }; then
6469885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  linklib=$old_library
6470885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
6471885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for l in $old_library $library_names; do
6472885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    linklib="$l"
6473885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
6474885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
6475885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -z "$linklib"; then
6476885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_fatal_error "cannot find name of link library for \`$lib'"
6477885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
6478885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6479885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# This library was specified with -dlopen.
6480885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$pass" = dlopen; then
6481885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -z "$libdir"; then
6482885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
6483885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6484885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -z "$dlname" ||
6485885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	     test "$dlopen_support" != yes ||
6486885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	     test "$build_libtool_libs" = no; then
6487885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # If there is no dlname, no dlopen support or we're linking
6488885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # statically, we need to preload.  We also need to preload any
6489885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # dependent libraries so libltdl's deplib preloader doesn't
6490885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # bomb out in the load deplibs phase.
6491885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append dlprefiles " $lib $dependency_libs"
6492885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
6493885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append newdlfiles " $lib"
6494885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6495885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
6496885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi # $pass = dlopen
6497885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6498885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# We need an absolute path.
6499885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $ladir in
6500885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
6501885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*)
6502885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  abs_ladir=`cd "$ladir" && pwd`
6503885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -z "$abs_ladir"; then
6504885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_warning "cannot determine absolute directory name of \`$ladir'"
6505885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_warning "passing it literally to the linker, although it might fail"
6506885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    abs_ladir="$ladir"
6507885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6508885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
6509885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
6510885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_basename "$lib"
6511885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	laname="$func_basename_result"
6512885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6513885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Find the relevant object directory and library name.
6514885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "X$installed" = Xyes; then
6515885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
6516885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_warning "library \`$lib' was moved."
6517885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    dir="$ladir"
6518885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    absdir="$abs_ladir"
6519885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    libdir="$abs_ladir"
6520885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
6521885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    dir="$lt_sysroot$libdir"
6522885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    absdir="$lt_sysroot$libdir"
6523885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6524885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
6525885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
6526885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
6527885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    dir="$ladir"
6528885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    absdir="$abs_ladir"
6529885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Remove this search path later
6530885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append notinst_path " $abs_ladir"
6531885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
6532885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    dir="$ladir/$objdir"
6533885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    absdir="$abs_ladir/$objdir"
6534885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Remove this search path later
6535885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append notinst_path " $abs_ladir"
6536885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6537885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi # $installed = yes
6538885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_stripname 'lib' '.la' "$laname"
6539885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	name=$func_stripname_result
6540885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6541885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# This library was specified with -dlpreopen.
6542885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$pass" = dlpreopen; then
6543885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -z "$libdir" && test "$linkmode" = prog; then
6544885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
6545885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6546885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case "$host" in
6547885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # special handling for platforms with PE-DLLs.
6548885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *cygwin* | *mingw* | *cegcc* )
6549885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # Linker will automatically link against shared library if both
6550885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # static and shared are present.  Therefore, ensure we extract
6551885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # symbols from the import library if a shared library is present
6552885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # (otherwise, the dlopen module name will be incorrect).  We do
6553885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # this by putting the import library name into $newdlprefiles.
6554885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # We recover the dlopen module name by 'saving' the la file
6555885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # name in a special purpose variable, and (later) extracting the
6556885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # dlname from the la file.
6557885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test -n "$dlname"; then
6558885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        func_tr_sh "$dir/$linklib"
6559885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
6560885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        func_append newdlprefiles " $dir/$linklib"
6561885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      else
6562885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        func_append newdlprefiles " $dir/$old_library"
6563885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        # Keep a list of preopened convenience libraries to check
6564885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        # that they are being used correctly in the link pass.
6565885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        test -z "$libdir" && \
6566885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	          func_append dlpreconveniencelibs " $dir/$old_library"
6567885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
6568885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
6569885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    * )
6570885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # Prefer using a static library (so that no silly _DYNAMIC symbols
6571885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # are required to link).
6572885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test -n "$old_library"; then
6573885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        func_append newdlprefiles " $dir/$old_library"
6574885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        # Keep a list of preopened convenience libraries to check
6575885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        # that they are being used correctly in the link pass.
6576885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        test -z "$libdir" && \
6577885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	          func_append dlpreconveniencelibs " $dir/$old_library"
6578885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # Otherwise, use the dlname, so that lt_dlopen finds it.
6579885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      elif test -n "$dlname"; then
6580885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        func_append newdlprefiles " $dir/$dlname"
6581885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      else
6582885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        func_append newdlprefiles " $dir/$linklib"
6583885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
6584885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
6585885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
6586885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi # $pass = dlpreopen
6587885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6588885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -z "$libdir"; then
6589885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Link the convenience library
6590885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$linkmode" = lib; then
6591885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    deplibs="$dir/$old_library $deplibs"
6592885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  elif test "$linkmode,$pass" = "prog,link"; then
6593885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    compile_deplibs="$dir/$old_library $compile_deplibs"
6594885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
6595885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
6596885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    deplibs="$lib $deplibs" # used for prog,scan pass
6597885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6598885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
6599885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
6600885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6601885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6602885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$linkmode" = prog && test "$pass" != link; then
6603885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append newlib_search_path " $ladir"
6604885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  deplibs="$lib $deplibs"
6605885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6606885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  linkalldeplibs=no
6607885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
6608885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	     test "$build_libtool_libs" = no; then
6609885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    linkalldeplibs=yes
6610885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6611885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6612885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  tmp_libs=
6613885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for deplib in $dependency_libs; do
6614885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case $deplib in
6615885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    -L*) func_stripname '-L' '' "$deplib"
6616885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	         func_resolve_sysroot "$func_stripname_result"
6617885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	         func_append newlib_search_path " $func_resolve_sysroot_result"
6618885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		 ;;
6619885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
6620885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Need to link against all dependency_libs?
6621885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$linkalldeplibs" = yes; then
6622885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      deplibs="$deplib $deplibs"
6623885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
6624885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # Need to hardcode shared library paths
6625885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # or/and link against static libraries
6626885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      newdependency_libs="$deplib $newdependency_libs"
6627885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6628885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if $opt_preserve_dup_deps ; then
6629885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case "$tmp_libs " in
6630885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
6631885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
6632885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6633885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append tmp_libs " $deplib"
6634885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done # for deplib
6635885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  continue
6636885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi # $linkmode = prog...
6637885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6638885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$linkmode,$pass" = "prog,link"; then
6639885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$library_names" &&
6640885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	     { { test "$prefer_static_libs" = no ||
6641885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
6642885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	       test -z "$old_library"; }; then
6643885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # We need to hardcode the library path
6644885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
6645885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # Make sure the rpath contains only unique directories.
6646885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case "$temp_rpath:" in
6647885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *"$absdir:"*) ;;
6648885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *) func_append temp_rpath "$absdir:" ;;
6649885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
6650885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6651885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6652885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Hardcode the library path.
6653885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Skip directories that are in the system default run-time
6654885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # search path.
6655885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case " $sys_lib_dlsearch_path " in
6656885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *" $absdir "*) ;;
6657885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *)
6658885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case "$compile_rpath " in
6659885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *" $absdir "*) ;;
6660885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *) func_append compile_rpath " $absdir" ;;
6661885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
6662885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      ;;
6663885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
6664885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case " $sys_lib_dlsearch_path " in
6665885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *" $libdir "*) ;;
6666885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *)
6667885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case "$finalize_rpath " in
6668885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *" $libdir "*) ;;
6669885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *) func_append finalize_rpath " $libdir" ;;
6670885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
6671885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      ;;
6672885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
6673885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi # $linkmode,$pass = prog,link...
6674885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6675885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$alldeplibs" = yes &&
6676885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	     { test "$deplibs_check_method" = pass_all ||
6677885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	       { test "$build_libtool_libs" = yes &&
6678885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		 test -n "$library_names"; }; }; then
6679885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # We only need to search for static libraries
6680885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    continue
6681885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6682885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
6683885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6684885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	link_static=no # Whether the deplib will be linked statically
6685885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	use_static_libs=$prefer_static_libs
6686885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$use_static_libs" = built && test "$installed" = yes; then
6687885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  use_static_libs=no
6688885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
6689885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$library_names" &&
6690885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
6691885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $host in
6692885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *cygwin* | *mingw* | *cegcc*)
6693885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # No point in relinking DLLs because paths are not encoded
6694885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append notinst_deplibs " $lib"
6695885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      need_relink=no
6696885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
6697885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *)
6698885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$installed" = no; then
6699885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append notinst_deplibs " $lib"
6700885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      need_relink=yes
6701885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6702885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
6703885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
6704885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # This is a shared library
6705885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6706885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Warn about portability, can't link against -module's on some
6707885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # systems (darwin).  Don't bleat about dlopened modules though!
6708885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  dlopenmodule=""
6709885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for dlpremoduletest in $dlprefiles; do
6710885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "X$dlpremoduletest" = "X$lib"; then
6711885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      dlopenmodule="$dlpremoduletest"
6712885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      break
6713885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6714885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
6715885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
6716885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    echo
6717885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$linkmode" = prog; then
6718885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
6719885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
6720885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
6721885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6722885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $ECHO "*** $linklib is not portable!"
6723885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6724885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$linkmode" = lib &&
6725885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	     test "$hardcode_into_libs" = yes; then
6726885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Hardcode the library path.
6727885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Skip directories that are in the system default run-time
6728885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # search path.
6729885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case " $sys_lib_dlsearch_path " in
6730885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *" $absdir "*) ;;
6731885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *)
6732885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case "$compile_rpath " in
6733885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *" $absdir "*) ;;
6734885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *) func_append compile_rpath " $absdir" ;;
6735885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
6736885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      ;;
6737885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
6738885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case " $sys_lib_dlsearch_path " in
6739885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *" $libdir "*) ;;
6740885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *)
6741885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case "$finalize_rpath " in
6742885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *" $libdir "*) ;;
6743885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *) func_append finalize_rpath " $libdir" ;;
6744885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
6745885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      ;;
6746885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
6747885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6748885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6749885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$old_archive_from_expsyms_cmds"; then
6750885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # figure out the soname
6751885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    set dummy $library_names
6752885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    shift
6753885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    realname="$1"
6754885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    shift
6755885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    libname=`eval "\\$ECHO \"$libname_spec\""`
6756885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # use dlname if we got it. it's perfectly good, no?
6757885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -n "$dlname"; then
6758885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      soname="$dlname"
6759885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    elif test -n "$soname_spec"; then
6760885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # bleh windows
6761885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case $host in
6762885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *cygwin* | mingw* | *cegcc*)
6763885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        func_arith $current - $age
6764885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		major=$func_arith_result
6765885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		versuffix="-$major"
6766885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
6767885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
6768885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      eval soname=\"$soname_spec\"
6769885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
6770885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      soname="$realname"
6771885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6772885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6773885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Make a new name for the extract_expsyms_cmds to use
6774885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    soroot="$soname"
6775885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_basename "$soroot"
6776885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    soname="$func_basename_result"
6777885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_stripname 'lib' '.dll' "$soname"
6778885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    newlib=libimp-$func_stripname_result.a
6779885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6780885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # If the library has no export list, then create one now
6781885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -f "$output_objdir/$soname-def"; then :
6782885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
6783885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_verbose "extracting exported symbol list from \`$soname'"
6784885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
6785885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6786885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6787885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Create $newlib
6788885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -f "$output_objdir/$newlib"; then :; else
6789885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_verbose "generating import library for \`$soname'"
6790885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
6791885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6792885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # make sure the library variables are pointing to the new library
6793885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    dir=$output_objdir
6794885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    linklib=$newlib
6795885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi # test -n "$old_archive_from_expsyms_cmds"
6796885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6797885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
6798885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    add_shlibpath=
6799885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    add_dir=
6800885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    add=
6801885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    lib_linked=yes
6802885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case $hardcode_action in
6803885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    immediate | unsupported)
6804885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test "$hardcode_direct" = no; then
6805885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		add="$dir/$linklib"
6806885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		case $host in
6807885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
6808885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
6809885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
6810885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    *-*-unixware7*) add_dir="-L$dir" ;;
6811885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  *-*-darwin* )
6812885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    # if the lib is a (non-dlopened) module then we can not
6813885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    # link against it, someone is ignoring the earlier warnings
6814885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    if /usr/bin/file -L $add 2> /dev/null |
6815885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			 $GREP ": [^:]* bundle" >/dev/null ; then
6816885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      if test "X$dlopenmodule" != "X$lib"; then
6817885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
6818885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			if test -z "$old_library" ; then
6819885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			  echo
6820885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			  echo "*** And there doesn't seem to be a static archive available"
6821885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			  echo "*** The link will probably fail, sorry"
6822885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			else
6823885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			  add="$dir/$old_library"
6824885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			fi
6825885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      elif test -n "$old_library"; then
6826885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			add="$dir/$old_library"
6827885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      fi
6828885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    fi
6829885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		esac
6830885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      elif test "$hardcode_minus_L" = no; then
6831885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		case $host in
6832885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		*-*-sunos*) add_shlibpath="$dir" ;;
6833885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		esac
6834885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		add_dir="-L$dir"
6835885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		add="-l$name"
6836885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      elif test "$hardcode_shlibpath_var" = no; then
6837885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		add_shlibpath="$dir"
6838885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		add="-l$name"
6839885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      else
6840885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		lib_linked=no
6841885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
6842885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      ;;
6843885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    relink)
6844885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test "$hardcode_direct" = yes &&
6845885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	         test "$hardcode_direct_absolute" = no; then
6846885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		add="$dir/$linklib"
6847885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      elif test "$hardcode_minus_L" = yes; then
6848885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		add_dir="-L$absdir"
6849885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		# Try looking first in the location we're being installed to.
6850885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		if test -n "$inst_prefix_dir"; then
6851885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  case $libdir in
6852885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    [\\/]*)
6853885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      func_append add_dir " -L$inst_prefix_dir$libdir"
6854885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      ;;
6855885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  esac
6856885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		fi
6857885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		add="-l$name"
6858885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      elif test "$hardcode_shlibpath_var" = yes; then
6859885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		add_shlibpath="$dir"
6860885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		add="-l$name"
6861885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      else
6862885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		lib_linked=no
6863885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
6864885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      ;;
6865885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *) lib_linked=no ;;
6866885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
6867885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6868885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$lib_linked" != yes; then
6869885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_fatal_configuration "unsupported hardcode properties"
6870885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6871885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6872885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -n "$add_shlibpath"; then
6873885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case :$compile_shlibpath: in
6874885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *":$add_shlibpath:"*) ;;
6875885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
6876885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
6877885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6878885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$linkmode" = prog; then
6879885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
6880885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
6881885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
6882885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
6883885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      test -n "$add" && deplibs="$add $deplibs"
6884885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test "$hardcode_direct" != yes &&
6885885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		 test "$hardcode_minus_L" != yes &&
6886885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		 test "$hardcode_shlibpath_var" = yes; then
6887885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		case :$finalize_shlibpath: in
6888885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		*":$libdir:"*) ;;
6889885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		*) func_append finalize_shlibpath "$libdir:" ;;
6890885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		esac
6891885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
6892885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6893885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6894885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6895885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
6896885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    add_shlibpath=
6897885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    add_dir=
6898885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    add=
6899885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Finalize command for both is simple: just hardcode it.
6900885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$hardcode_direct" = yes &&
6901885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	       test "$hardcode_direct_absolute" = no; then
6902885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      add="$libdir/$linklib"
6903885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    elif test "$hardcode_minus_L" = yes; then
6904885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      add_dir="-L$libdir"
6905885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      add="-l$name"
6906885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    elif test "$hardcode_shlibpath_var" = yes; then
6907885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case :$finalize_shlibpath: in
6908885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *":$libdir:"*) ;;
6909885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *) func_append finalize_shlibpath "$libdir:" ;;
6910885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
6911885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      add="-l$name"
6912885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    elif test "$hardcode_automatic" = yes; then
6913885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test -n "$inst_prefix_dir" &&
6914885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
6915885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		add="$inst_prefix_dir$libdir/$linklib"
6916885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      else
6917885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		add="$libdir/$linklib"
6918885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
6919885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
6920885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # We cannot seem to hardcode it, guess we'll fake it.
6921885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      add_dir="-L$libdir"
6922885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # Try looking first in the location we're being installed to.
6923885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test -n "$inst_prefix_dir"; then
6924885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		case $libdir in
6925885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  [\\/]*)
6926885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    func_append add_dir " -L$inst_prefix_dir$libdir"
6927885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    ;;
6928885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		esac
6929885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
6930885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      add="-l$name"
6931885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6932885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6933885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$linkmode" = prog; then
6934885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
6935885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
6936885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
6937885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
6938885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      test -n "$add" && deplibs="$add $deplibs"
6939885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6940885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6941885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	elif test "$linkmode" = prog; then
6942885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Here we assume that one of hardcode_direct or hardcode_minus_L
6943885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # is not unsupported.  This is valid on all known static and
6944885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # shared platforms.
6945885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$hardcode_direct" != unsupported; then
6946885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    test -n "$old_library" && linklib="$old_library"
6947885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    compile_deplibs="$dir/$linklib $compile_deplibs"
6948885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
6949885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
6950885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    compile_deplibs="-l$name -L$dir $compile_deplibs"
6951885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
6952885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6953885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	elif test "$build_libtool_libs" = yes; then
6954885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Not a shared library
6955885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$deplibs_check_method" != pass_all; then
6956885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # We're trying link a shared library against a static one
6957885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # but the system doesn't support it.
6958885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6959885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Just print a warning and add the library to dependency_libs so
6960885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # that the program can be linked against the static library.
6961885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    echo
6962885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
6963885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    echo "*** I have the capability to make that library automatically link in when"
6964885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    echo "*** you link to this library.  But I can only do this if you have a"
6965885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    echo "*** shared version of the library, which you do not appear to have."
6966885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$module" = yes; then
6967885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      echo "*** But as you try to build a module library, libtool will still create "
6968885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      echo "*** a static module, that should work as long as the dlopening application"
6969885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
6970885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test -z "$global_symbol_pipe"; then
6971885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo
6972885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo "*** However, this would only work if libtool was able to extract symbol"
6973885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
6974885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo "*** not find such a program.  So, this module is probably useless."
6975885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo "*** \`nm' from GNU binutils and a full rebuild may help."
6976885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
6977885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test "$build_old_libs" = no; then
6978885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		build_libtool_libs=module
6979885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		build_old_libs=yes
6980885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      else
6981885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		build_libtool_libs=no
6982885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
6983885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
6984885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
6985885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    deplibs="$dir/$old_library $deplibs"
6986885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    link_static=yes
6987885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
6988885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi # link shared/static library?
6989885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
6990885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$linkmode" = lib; then
6991885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$dependency_libs" &&
6992885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	     { test "$hardcode_into_libs" != yes ||
6993885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	       test "$build_old_libs" = yes ||
6994885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	       test "$link_static" = yes; }; then
6995885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Extract -R from dependency_libs
6996885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    temp_deplibs=
6997885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    for libdir in $dependency_libs; do
6998885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case $libdir in
6999885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      -R*) func_stripname '-R' '' "$libdir"
7000885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	           temp_xrpath=$func_stripname_result
7001885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		   case " $xrpath " in
7002885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		   *" $temp_xrpath "*) ;;
7003885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		   *) func_append xrpath " $temp_xrpath";;
7004885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		   esac;;
7005885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *) func_append temp_deplibs " $libdir";;
7006885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
7007885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done
7008885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    dependency_libs="$temp_deplibs"
7009885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
7010885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7011885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append newlib_search_path " $absdir"
7012885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Link against this library
7013885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
7014885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # ... and its dependency_libs
7015885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  tmp_libs=
7016885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for deplib in $dependency_libs; do
7017885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    newdependency_libs="$deplib $newdependency_libs"
7018885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case $deplib in
7019885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org              -L*) func_stripname '-L' '' "$deplib"
7020885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                   func_resolve_sysroot "$func_stripname_result";;
7021885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org              *) func_resolve_sysroot "$deplib" ;;
7022885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org            esac
7023885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if $opt_preserve_dup_deps ; then
7024885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case "$tmp_libs " in
7025885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *" $func_resolve_sysroot_result "*)
7026885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
7027885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
7028885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
7029885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append tmp_libs " $func_resolve_sysroot_result"
7030885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
7031885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7032885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$link_all_deplibs" != no; then
7033885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Add the search paths of all dependency libraries
7034885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    for deplib in $dependency_libs; do
7035885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      path=
7036885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case $deplib in
7037885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      -L*) path="$deplib" ;;
7038885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *.la)
7039885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        func_resolve_sysroot "$deplib"
7040885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        deplib=$func_resolve_sysroot_result
7041885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        func_dirname "$deplib" "" "."
7042885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		dir=$func_dirname_result
7043885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		# We need an absolute path.
7044885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		case $dir in
7045885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
7046885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		*)
7047885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  absdir=`cd "$dir" && pwd`
7048885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  if test -z "$absdir"; then
7049885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    func_warning "cannot determine absolute directory name of \`$dir'"
7050885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    absdir="$dir"
7051885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  fi
7052885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  ;;
7053885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		esac
7054885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		if $GREP "^installed=no" $deplib > /dev/null; then
7055885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		case $host in
7056885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		*-*-darwin*)
7057885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  depdepl=
7058885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
7059885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  if test -n "$deplibrary_names" ; then
7060885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    for tmp in $deplibrary_names ; do
7061885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      depdepl=$tmp
7062885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    done
7063885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    if test -f "$absdir/$objdir/$depdepl" ; then
7064885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      depdepl="$absdir/$objdir/$depdepl"
7065885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
7066885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                      if test -z "$darwin_install_name"; then
7067885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
7068885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org                      fi
7069885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
7070885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
7071885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      path=
7072885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    fi
7073885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  fi
7074885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  ;;
7075885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		*)
7076885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  path="-L$absdir/$objdir"
7077885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  ;;
7078885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		esac
7079885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		else
7080885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
7081885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  test -z "$libdir" && \
7082885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    func_fatal_error "\`$deplib' is not a valid libtool archive"
7083885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  test "$absdir" != "$libdir" && \
7084885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    func_warning "\`$deplib' seems to be moved"
7085885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7086885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  path="-L$absdir"
7087885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		fi
7088885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
7089885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
7090885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case " $deplibs " in
7091885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *" $path "*) ;;
7092885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *) deplibs="$path $deplibs" ;;
7093885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
7094885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done
7095885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi # link_all_deplibs != no
7096885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi # linkmode = lib
7097885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done # for deplib in $libs
7098885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$pass" = link; then
7099885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$linkmode" = "prog"; then
7100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
7101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
7102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
7103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
7105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
7106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      dependency_libs="$newdependency_libs"
7107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$pass" = dlpreopen; then
7108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Link the dlpreopened libraries before other libraries
7109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	for deplib in $save_deplibs; do
7110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  deplibs="$deplib $deplibs"
7111885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done
7112885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
7113885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$pass" != dlopen; then
7114885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$pass" != conv; then
7115885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Make sure lib_search_path contains only unique directories.
7116885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  lib_search_path=
7117885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for dir in $newlib_search_path; do
7118885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case "$lib_search_path " in
7119885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *" $dir "*) ;;
7120885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *) func_append lib_search_path " $dir" ;;
7121885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
7122885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
7123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  newlib_search_path=
7124885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
7125885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7126885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$linkmode,$pass" != "prog,link"; then
7127885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  vars="deplibs"
7128885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
7129885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  vars="compile_deplibs finalize_deplibs"
7130885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
7131885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	for var in $vars dependency_libs; do
7132885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Add libraries to $var in reverse order
7133885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  eval tmp_libs=\"\$$var\"
7134885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  new_libs=
7135885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for deplib in $tmp_libs; do
7136885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # FIXME: Pedantically, this is the right thing to do, so
7137885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    #        that some nasty dependency loop isn't accidentally
7138885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    #        broken:
7139885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    #new_libs="$deplib $new_libs"
7140885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Pragmatically, this seems to cause very few problems in
7141885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # practice:
7142885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case $deplib in
7143885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    -L*) new_libs="$deplib $new_libs" ;;
7144885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    -R*) ;;
7145885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *)
7146885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # And here is the reason: when a library appears more
7147885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # than once as an explicit dependence of a library, or
7148885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # is implicitly linked in more than once by the
7149885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # compiler, it is considered special, and multiple
7150885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # occurrences thereof are not removed.  Compare this
7151885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # with having the same library being listed as a
7152885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # dependency of multiple other libraries: in this case,
7153885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # we know (pedantically, we assume) the library does not
7154885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # need to be listed more than once, so we keep only the
7155885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # last copy.  This is not always right, but it is rare
7156885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # enough that we require users that really mean to play
7157885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # such unportable linking tricks to link the library
7158885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # using -Wl,-lname, so that libtool does not consider it
7159885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # for duplicate removal.
7160885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case " $specialdeplibs " in
7161885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
7162885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *)
7163885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		case " $new_libs " in
7164885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		*" $deplib "*) ;;
7165885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		*) new_libs="$deplib $new_libs" ;;
7166885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		esac
7167885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
7168885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
7169885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      ;;
7170885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
7171885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
7172885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  tmp_libs=
7173885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for deplib in $new_libs; do
7174885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case $deplib in
7175885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    -L*)
7176885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case " $tmp_libs " in
7177885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *" $deplib "*) ;;
7178885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *) func_append tmp_libs " $deplib" ;;
7179885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
7180885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      ;;
7181885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *) func_append tmp_libs " $deplib" ;;
7182885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
7183885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
7184885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  eval $var=\"$tmp_libs\"
7185885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done # for var
7186885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
7187885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Last step: remove runtime libs from dependency_libs
7188885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # (they stay in deplibs)
7189885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      tmp_libs=
7190885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      for i in $dependency_libs ; do
7191885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case " $predeps $postdeps $compiler_lib_search_path " in
7192885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*" $i "*)
7193885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  i=""
7194885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7195885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
7196885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$i" ; then
7197885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append tmp_libs " $i"
7198885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
7199885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
7200885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      dependency_libs=$tmp_libs
7201885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    done # for pass
7202885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$linkmode" = prog; then
7203885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      dlfiles="$newdlfiles"
7204885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
7205885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    if test "$linkmode" = prog || test "$linkmode" = lib; then
7206885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      dlprefiles="$newdlprefiles"
7207885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    fi
7208885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7209885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case $linkmode in
7210885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    oldlib)
7211885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
7212885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_warning "\`-dlopen' is ignored for archives"
7213885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
7214885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7215885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case " $deplibs" in
7216885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *\ -l* | *\ -L*)
7217885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_warning "\`-l' and \`-L' are ignored for archives" ;;
7218885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
7219885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7220885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test -n "$rpath" && \
7221885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_warning "\`-rpath' is ignored for archives"
7222885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7223885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test -n "$xrpath" && \
7224885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_warning "\`-R' is ignored for archives"
7225885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7226885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test -n "$vinfo" && \
7227885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_warning "\`-version-info/-version-number' is ignored for archives"
7228885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7229885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test -n "$release" && \
7230885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_warning "\`-release' is ignored for archives"
7231885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7232885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test -n "$export_symbols$export_symbols_regex" && \
7233885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_warning "\`-export-symbols' is ignored for archives"
7234885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7235885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Now set the variables for building old libraries.
7236885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      build_libtool_libs=no
7237885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      oldlibs="$output"
7238885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_append objs "$old_deplibs"
7239885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
7240885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7241885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    lib)
7242885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Make sure we only generate libraries of the form `libNAME.la'.
7243885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $outputname in
7244885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      lib*)
7245885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_stripname 'lib' '.la' "$outputname"
7246885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	name=$func_stripname_result
7247885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	eval shared_ext=\"$shrext_cmds\"
7248885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	eval libname=\"$libname_spec\"
7249885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
7250885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *)
7251885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	test "$module" = no && \
7252885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
7253885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7254885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$need_lib_prefix" != no; then
7255885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Add the "lib" prefix for modules if required
7256885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_stripname '' '.la' "$outputname"
7257885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  name=$func_stripname_result
7258885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  eval shared_ext=\"$shrext_cmds\"
7259885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  eval libname=\"$libname_spec\"
7260885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
7261885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_stripname '' '.la' "$outputname"
7262885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  libname=$func_stripname_result
7263885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
7264885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
7265885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
7266885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7267885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$objs"; then
7268885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$deplibs_check_method" != pass_all; then
7269885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
7270885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
7271885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  echo
7272885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
7273885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  $ECHO "*** objects $objs is not portable!"
7274885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append libobjs " $objs"
7275885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
7276885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
7277885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7278885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test "$dlself" != no && \
7279885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_warning "\`-dlopen self' is ignored for libtool libraries"
7280885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7281885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      set dummy $rpath
7282885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      shift
7283885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test "$#" -gt 1 && \
7284885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_warning "ignoring multiple \`-rpath's for a libtool library"
7285885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7286885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      install_libdir="$1"
7287885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7288885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      oldlibs=
7289885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -z "$rpath"; then
7290885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$build_libtool_libs" = yes; then
7291885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Building a libtool convenience library.
7292885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Some compilers have problems with a `.al' extension so
7293885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # convenience libraries should have the same extension an
7294885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # archive normally would.
7295885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
7296885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  build_libtool_libs=convenience
7297885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  build_old_libs=yes
7298885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
7299885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7300885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	test -n "$vinfo" && \
7301885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
7302885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7303885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	test -n "$release" && \
7304885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_warning "\`-release' is ignored for convenience libraries"
7305885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      else
7306885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7307885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Parse the version information argument.
7308885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	save_ifs="$IFS"; IFS=':'
7309885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	set dummy $vinfo 0 0 0
7310885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	shift
7311885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	IFS="$save_ifs"
7312885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7313885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	test -n "$7" && \
7314885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_fatal_help "too many parameters to \`-version-info'"
7315885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7316885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# convert absolute version numbers to libtool ages
7317885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# this retains compatibility with .la files and attempts
7318885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# to make the code below a bit more comprehensible
7319885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7320885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $vinfo_number in
7321885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	yes)
7322885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  number_major="$1"
7323885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  number_minor="$2"
7324885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  number_revision="$3"
7325885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  #
7326885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # There are really only two kinds -- those that
7327885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # use the current revision as the major version
7328885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # and those that subtract age and use age as
7329885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # a minor version.  But, then there is irix
7330885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # which has an extra 1 added just for fun
7331885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  #
7332885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $version_type in
7333885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # correct linux to gnu/linux during the next big refactor
7334885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  darwin|linux|osf|windows|none)
7335885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_arith $number_major + $number_minor
7336885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    current=$func_arith_result
7337885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    age="$number_minor"
7338885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    revision="$number_revision"
7339885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
7340885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  freebsd-aout|freebsd-elf|qnx|sunos)
7341885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    current="$number_major"
7342885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    revision="$number_minor"
7343885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    age="0"
7344885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
7345885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  irix|nonstopux)
7346885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_arith $number_major + $number_minor
7347885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    current=$func_arith_result
7348885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    age="$number_minor"
7349885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    revision="$number_minor"
7350885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    lt_irix_increment=no
7351885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
7352885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
7353885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7354885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	no)
7355885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  current="$1"
7356885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  revision="$2"
7357885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  age="$3"
7358885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7359885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
7360885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7361885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Check that each of the things are valid numbers.
7362885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $current in
7363885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	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]) ;;
7364885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*)
7365885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_error "CURRENT \`$current' must be a nonnegative integer"
7366885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_fatal_error "\`$vinfo' is not valid version information"
7367885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7368885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
7369885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7370885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $revision in
7371885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	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]) ;;
7372885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*)
7373885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_error "REVISION \`$revision' must be a nonnegative integer"
7374885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_fatal_error "\`$vinfo' is not valid version information"
7375885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7376885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
7377885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7378885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $age in
7379885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	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]) ;;
7380885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*)
7381885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_error "AGE \`$age' must be a nonnegative integer"
7382885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_fatal_error "\`$vinfo' is not valid version information"
7383885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7384885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
7385885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7386885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$age" -gt "$current"; then
7387885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
7388885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_fatal_error "\`$vinfo' is not valid version information"
7389885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
7390885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7391885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Calculate the version variables.
7392885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	major=
7393885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	versuffix=
7394885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	verstring=
7395885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $version_type in
7396885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	none) ;;
7397885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7398885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	darwin)
7399885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Like Linux, but with the current version available in
7400885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # verstring for coding it into the library header
7401885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_arith $current - $age
7402885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  major=.$func_arith_result
7403885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  versuffix="$major.$age.$revision"
7404885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Darwin ld doesn't like 0 for these options...
7405885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_arith $current + 1
7406885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  minor_current=$func_arith_result
7407885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
7408885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
7409885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7410885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7411885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	freebsd-aout)
7412885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  major=".$current"
7413885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  versuffix=".$current.$revision";
7414885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7415885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7416885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	freebsd-elf)
7417885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  major=".$current"
7418885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  versuffix=".$current"
7419885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7420885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7421885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	irix | nonstopux)
7422885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "X$lt_irix_increment" = "Xno"; then
7423885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_arith $current - $age
7424885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
7425885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_arith $current - $age + 1
7426885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
7427885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  major=$func_arith_result
7428885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7429885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $version_type in
7430885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    nonstopux) verstring_prefix=nonstopux ;;
7431885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *)         verstring_prefix=sgi ;;
7432885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
7433885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  verstring="$verstring_prefix$major.$revision"
7434885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7435885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Add in all the interfaces that we are compatible with.
7436885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  loop=$revision
7437885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  while test "$loop" -ne 0; do
7438885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_arith $revision - $loop
7439885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    iface=$func_arith_result
7440885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_arith $loop - 1
7441885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    loop=$func_arith_result
7442885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    verstring="$verstring_prefix$major.$iface:$verstring"
7443885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
7444885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7445885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Before this point, $major must not contain `.'.
7446885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  major=.$major
7447885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  versuffix="$major.$revision"
7448885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7449885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7450885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	linux) # correct to gnu/linux during the next big refactor
7451885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_arith $current - $age
7452885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  major=.$func_arith_result
7453885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  versuffix="$major.$age.$revision"
7454885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7455885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7456885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	osf)
7457885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_arith $current - $age
7458885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  major=.$func_arith_result
7459885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  versuffix=".$current.$age.$revision"
7460885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  verstring="$current.$age.$revision"
7461885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7462885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Add in all the interfaces that we are compatible with.
7463885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  loop=$age
7464885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  while test "$loop" -ne 0; do
7465885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_arith $current - $loop
7466885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    iface=$func_arith_result
7467885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_arith $loop - 1
7468885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    loop=$func_arith_result
7469885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    verstring="$verstring:${iface}.0"
7470885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
7471885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7472885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Make executables depend on our current version.
7473885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append verstring ":${current}.0"
7474885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7475885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7476885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	qnx)
7477885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  major=".$current"
7478885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  versuffix=".$current"
7479885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7480885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7481885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	sunos)
7482885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  major=".$current"
7483885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  versuffix=".$current.$revision"
7484885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7485885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7486885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	windows)
7487885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Use '-' rather than '.', since we only want one
7488885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # extension on DOS 8.3 filesystems.
7489885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_arith $current - $age
7490885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  major=$func_arith_result
7491885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  versuffix="-$major"
7492885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7493885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7494885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*)
7495885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_fatal_configuration "unknown library version type \`$version_type'"
7496885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7497885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
7498885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7499885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Clear the version info if we defaulted, and they specified a release.
7500885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -z "$vinfo" && test -n "$release"; then
7501885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  major=
7502885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $version_type in
7503885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  darwin)
7504885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # we can't check for "0.0" in archive_cmds due to quoting
7505885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # problems, so we reset it completely
7506885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    verstring=
7507885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
7508885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *)
7509885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    verstring="0.0"
7510885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
7511885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
7512885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$need_version" = no; then
7513885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    versuffix=
7514885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
7515885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    versuffix=".0.0"
7516885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
7517885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
7518885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7519885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Remove version info from name if versioning should be avoided
7520885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$avoid_version" = yes && test "$need_version" = no; then
7521885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  major=
7522885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  versuffix=
7523885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  verstring=""
7524885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
7525885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7526885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Check to see if the archive will have undefined symbols.
7527885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$allow_undefined" = yes; then
7528885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$allow_undefined_flag" = unsupported; then
7529885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_warning "undefined symbols not allowed in $host shared libraries"
7530885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    build_libtool_libs=no
7531885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    build_old_libs=yes
7532885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
7533885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
7534885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Don't allow undefined symbols.
7535885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  allow_undefined_flag="$no_undefined_flag"
7536885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
7537885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7538885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
7539885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7540885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_generate_dlsyms "$libname" "$libname" "yes"
7541885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_append libobjs " $symfileobj"
7542885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test "X$libobjs" = "X " && libobjs=
7543885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7544885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$opt_mode" != relink; then
7545885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Remove our outputs, but don't remove object files since they
7546885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# may have been created when compiling PIC objects.
7547885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	removelist=
7548885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	tempremovelist=`$ECHO "$output_objdir/*"`
7549885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	for p in $tempremovelist; do
7550885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $p in
7551885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *.$objext | *.gcno)
7552885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	       ;;
7553885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
7554885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	       if test "X$precious_files_regex" != "X"; then
7555885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
7556885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		 then
7557885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		   continue
7558885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		 fi
7559885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	       fi
7560885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	       func_append removelist " $p"
7561885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	       ;;
7562885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *) ;;
7563885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
7564885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done
7565885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	test -n "$removelist" && \
7566885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_show_eval "${RM}r \$removelist"
7567885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
7568885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7569885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Now set the variables for building old libraries.
7570885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
7571885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append oldlibs " $output_objdir/$libname.$libext"
7572885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7573885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Transform .lo files to .o files.
7574885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
7575885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
7576885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7577885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Eliminate all temporary directories.
7578885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      #for path in $notinst_path; do
7579885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
7580885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
7581885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
7582885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      #done
7583885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7584885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$xrpath"; then
7585885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# If the user specified any rpath flags, then add them.
7586885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	temp_xrpath=
7587885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	for libdir in $xrpath; do
7588885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_replace_sysroot "$libdir"
7589885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append temp_xrpath " -R$func_replace_sysroot_result"
7590885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case "$finalize_rpath " in
7591885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *" $libdir "*) ;;
7592885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *) func_append finalize_rpath " $libdir" ;;
7593885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
7594885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done
7595885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
7596885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  dependency_libs="$temp_xrpath $dependency_libs"
7597885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
7598885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
7599885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7600885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Make sure dlfiles contains only unique files that won't be dlpreopened
7601885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      old_dlfiles="$dlfiles"
7602885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      dlfiles=
7603885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      for lib in $old_dlfiles; do
7604885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case " $dlprefiles $dlfiles " in
7605885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*" $lib "*) ;;
7606885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*) func_append dlfiles " $lib" ;;
7607885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
7608885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
7609885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7610885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Make sure dlprefiles contains only unique files
7611885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      old_dlprefiles="$dlprefiles"
7612885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      dlprefiles=
7613885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      for lib in $old_dlprefiles; do
7614885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case "$dlprefiles " in
7615885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*" $lib "*) ;;
7616885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*) func_append dlprefiles " $lib" ;;
7617885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
7618885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
7619885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7620885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$build_libtool_libs" = yes; then
7621885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$rpath"; then
7622885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $host in
7623885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
7624885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # these systems don't actually have a c library (as such)!
7625885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
7626885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *-*-rhapsody* | *-*-darwin1.[012])
7627885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Rhapsody C library is in the System framework
7628885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append deplibs " System.ltframework"
7629885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
7630885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *-*-netbsd*)
7631885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Don't link with libc until the a.out ld.so is fixed.
7632885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
7633885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
7634885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Do not include libc due to us having libc/libc_r.
7635885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
7636885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *-*-sco3.2v5* | *-*-sco5v6*)
7637885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Causes problems with __ctype
7638885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
7639885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
7640885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Compiler inserts libc in the correct place for threads to work
7641885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
7642885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *)
7643885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Add libc to deplibs on all other systems if necessary.
7644885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$build_libtool_need_lc" = "yes"; then
7645885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append deplibs " -lc"
7646885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
7647885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
7648885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
7649885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
7650885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7651885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Transform deplibs into only deplibs that can be linked in shared.
7652885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	name_save=$name
7653885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	libname_save=$libname
7654885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	release_save=$release
7655885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	versuffix_save=$versuffix
7656885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	major_save=$major
7657885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# I'm not sure if I'm treating the release correctly.  I think
7658885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# release should show up in the -l (ie -lgmp5) so we don't want to
7659885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# add it in twice.  Is that correct?
7660885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	release=""
7661885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	versuffix=""
7662885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	major=""
7663885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	newdeplibs=
7664885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	droppeddeps=no
7665885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $deplibs_check_method in
7666885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	pass_all)
7667885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Don't check for shared/static.  Everything works.
7668885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # This might be a little naive.  We might want to check
7669885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # whether the library exists or not.  But this is on
7670885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # osf3 & osf4 and I'm not really sure... Just
7671885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # implementing what was already the behavior.
7672885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  newdeplibs=$deplibs
7673885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7674885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	test_compile)
7675885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # This code stresses the "libraries are programs" paradigm to its
7676885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # limits. Maybe even breaks it.  We compile a program, linking it
7677885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # against the deplibs as a proxy for the library.  Then we can check
7678885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # whether they linked in statically or dynamically with ldd.
7679885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  $opt_dry_run || $RM conftest.c
7680885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  cat > conftest.c <<EOF
7681885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  int main() { return 0; }
7682885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF
7683885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  $opt_dry_run || $RM conftest
7684885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
7685885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ldd_output=`ldd conftest`
7686885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    for i in $deplibs; do
7687885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case $i in
7688885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      -l*)
7689885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_stripname -l '' "$i"
7690885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		name=$func_stripname_result
7691885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7692885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  case " $predeps $postdeps " in
7693885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  *" $i "*)
7694885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    func_append newdeplibs " $i"
7695885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    i=""
7696885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    ;;
7697885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  esac
7698885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		fi
7699885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		if test -n "$i" ; then
7700885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  libname=`eval "\\$ECHO \"$libname_spec\""`
7701885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
7702885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  set dummy $deplib_matches; shift
7703885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  deplib_match=$1
7704885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
7705885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    func_append newdeplibs " $i"
7706885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  else
7707885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    droppeddeps=yes
7708885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    echo
7709885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
7710885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    echo "*** I have the capability to make that library automatically link in when"
7711885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    echo "*** you link to this library.  But I can only do this if you have a"
7712885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    echo "*** shared version of the library, which I believe you do not have"
7713885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    echo "*** because a test_compile did reveal that the linker did not use it for"
7714885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
7715885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  fi
7716885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		fi
7717885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
7718885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *)
7719885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_append newdeplibs " $i"
7720885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
7721885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
7722885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done
7723885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
7724885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Error occurred in the first compile.  Let's try to salvage
7725885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # the situation: Compile a separate program for each library.
7726885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    for i in $deplibs; do
7727885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case $i in
7728885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      -l*)
7729885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_stripname -l '' "$i"
7730885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		name=$func_stripname_result
7731885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		$opt_dry_run || $RM conftest
7732885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
7733885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  ldd_output=`ldd conftest`
7734885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7735885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    case " $predeps $postdeps " in
7736885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    *" $i "*)
7737885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      func_append newdeplibs " $i"
7738885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      i=""
7739885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      ;;
7740885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    esac
7741885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  fi
7742885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  if test -n "$i" ; then
7743885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    libname=`eval "\\$ECHO \"$libname_spec\""`
7744885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
7745885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    set dummy $deplib_matches; shift
7746885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    deplib_match=$1
7747885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
7748885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      func_append newdeplibs " $i"
7749885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    else
7750885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      droppeddeps=yes
7751885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      echo
7752885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
7753885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      echo "*** I have the capability to make that library automatically link in when"
7754885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      echo "*** you link to this library.  But I can only do this if you have a"
7755885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      echo "*** shared version of the library, which you do not appear to have"
7756885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      echo "*** because a test_compile did reveal that the linker did not use this one"
7757885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
7758885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    fi
7759885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  fi
7760885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		else
7761885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  droppeddeps=yes
7762885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  echo
7763885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
7764885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  echo "*** make it link in!  You will probably need to install it or some"
7765885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  echo "*** library that it depends on before this library will be fully"
7766885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  echo "*** functional.  Installing it before continuing would be even better."
7767885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		fi
7768885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
7769885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *)
7770885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_append newdeplibs " $i"
7771885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
7772885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
7773885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done
7774885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
7775885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7776885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	file_magic*)
7777885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  set dummy $deplibs_check_method; shift
7778885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7779885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for a_deplib in $deplibs; do
7780885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case $a_deplib in
7781885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    -l*)
7782885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_stripname -l '' "$a_deplib"
7783885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      name=$func_stripname_result
7784885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7785885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		case " $predeps $postdeps " in
7786885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		*" $a_deplib "*)
7787885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_append newdeplibs " $a_deplib"
7788885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  a_deplib=""
7789885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  ;;
7790885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		esac
7791885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
7792885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test -n "$a_deplib" ; then
7793885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		libname=`eval "\\$ECHO \"$libname_spec\""`
7794885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		if test -n "$file_magic_glob"; then
7795885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
7796885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		else
7797885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  libnameglob=$libname
7798885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		fi
7799885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
7800885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
7801885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  if test "$want_nocaseglob" = yes; then
7802885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    shopt -s nocaseglob
7803885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
7804885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    $nocaseglob
7805885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  else
7806885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
7807885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  fi
7808885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  for potent_lib in $potential_libs; do
7809885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      # Follow soft links.
7810885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      if ls -lLd "$potent_lib" 2>/dev/null |
7811885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			 $GREP " -> " >/dev/null; then
7812885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			continue
7813885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      fi
7814885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      # The statement above tries to avoid entering an
7815885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      # endless loop below, in case of cyclic links.
7816885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      # We might still enter an endless loop, since a link
7817885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      # loop can be closed while we follow links,
7818885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      # but so what?
7819885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      potlib="$potent_lib"
7820885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      while test -h "$potlib" 2>/dev/null; do
7821885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
7822885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			case $potliblink in
7823885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
7824885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
7825885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			esac
7826885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      done
7827885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
7828885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			 $SED -e 10q |
7829885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			 $EGREP "$file_magic_regex" > /dev/null; then
7830885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			func_append newdeplibs " $a_deplib"
7831885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			a_deplib=""
7832885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org			break 2
7833885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      fi
7834885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  done
7835885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		done
7836885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
7837885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test -n "$a_deplib" ; then
7838885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		droppeddeps=yes
7839885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo
7840885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7841885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo "*** I have the capability to make that library automatically link in when"
7842885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo "*** you link to this library.  But I can only do this if you have a"
7843885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo "*** shared version of the library, which you do not appear to have"
7844885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo "*** because I did check the linker path looking for a file starting"
7845885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		if test -z "$potlib" ; then
7846885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
7847885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		else
7848885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  $ECHO "*** with $libname and none of the candidates passed a file format test"
7849885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  $ECHO "*** using a file magic. Last file checked: $potlib"
7850885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		fi
7851885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
7852885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      ;;
7853885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *)
7854885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # Add a -L argument.
7855885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append newdeplibs " $a_deplib"
7856885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      ;;
7857885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
7858885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done # Gone through all deplibs.
7859885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7860885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	match_pattern*)
7861885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  set dummy $deplibs_check_method; shift
7862885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7863885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for a_deplib in $deplibs; do
7864885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case $a_deplib in
7865885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    -l*)
7866885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_stripname -l '' "$a_deplib"
7867885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      name=$func_stripname_result
7868885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7869885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		case " $predeps $postdeps " in
7870885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		*" $a_deplib "*)
7871885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_append newdeplibs " $a_deplib"
7872885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  a_deplib=""
7873885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  ;;
7874885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		esac
7875885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
7876885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test -n "$a_deplib" ; then
7877885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		libname=`eval "\\$ECHO \"$libname_spec\""`
7878885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
7879885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
7880885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  for potent_lib in $potential_libs; do
7881885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    potlib="$potent_lib" # see symlink-check above in file_magic test
7882885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
7883885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		       $EGREP "$match_pattern_regex" > /dev/null; then
7884885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      func_append newdeplibs " $a_deplib"
7885885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      a_deplib=""
7886885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      break 2
7887885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    fi
7888885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  done
7889885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		done
7890885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
7891885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test -n "$a_deplib" ; then
7892885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		droppeddeps=yes
7893885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo
7894885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7895885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo "*** I have the capability to make that library automatically link in when"
7896885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo "*** you link to this library.  But I can only do this if you have a"
7897885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo "*** shared version of the library, which you do not appear to have"
7898885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		echo "*** because I did check the linker path looking for a file starting"
7899885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		if test -z "$potlib" ; then
7900885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
7901885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		else
7902885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  $ECHO "*** with $libname and none of the candidates passed a file format test"
7903885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
7904885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		fi
7905885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
7906885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      ;;
7907885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *)
7908885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # Add a -L argument.
7909885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append newdeplibs " $a_deplib"
7910885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      ;;
7911885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
7912885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done # Gone through all deplibs.
7913885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7914885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	none | unknown | *)
7915885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  newdeplibs=""
7916885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
7917885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7918885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    for i in $predeps $postdeps ; do
7919885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # can't use Xsed below, because $i might contain '/'
7920885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
7921885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done
7922885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
7923885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $tmp_deplibs in
7924885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *[!\	\ ]*)
7925885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    echo
7926885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "X$deplibs_check_method" = "Xnone"; then
7927885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      echo "*** Warning: inter-library dependencies are not supported in this platform."
7928885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
7929885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      echo "*** Warning: inter-library dependencies are not known to be supported."
7930885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
7931885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    echo "*** All declared inter-library dependencies are being dropped."
7932885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    droppeddeps=yes
7933885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
7934885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
7935885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7936885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
7937885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	versuffix=$versuffix_save
7938885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	major=$major_save
7939885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	release=$release_save
7940885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	libname=$libname_save
7941885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	name=$name_save
7942885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7943885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $host in
7944885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*-*-rhapsody* | *-*-darwin1.[012])
7945885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # On Rhapsody replace the C library with the System framework
7946885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
7947885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
7948885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
7949885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7950885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$droppeddeps" = yes; then
7951885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$module" = yes; then
7952885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    echo
7953885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    echo "*** Warning: libtool could not satisfy all declared inter-library"
7954885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
7955885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    echo "*** a static module, that should work as long as the dlopening"
7956885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    echo "*** application is linked with the -dlopen flag."
7957885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -z "$global_symbol_pipe"; then
7958885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      echo
7959885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      echo "*** However, this would only work if libtool was able to extract symbol"
7960885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
7961885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      echo "*** not find such a program.  So, this module is probably useless."
7962885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
7963885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
7964885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$build_old_libs" = no; then
7965885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      oldlibs="$output_objdir/$libname.$libext"
7966885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      build_libtool_libs=module
7967885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      build_old_libs=yes
7968885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
7969885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      build_libtool_libs=no
7970885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
7971885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
7972885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    echo "*** The inter-library dependencies that have been dropped here will be"
7973885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    echo "*** automatically added whenever a program is linked with this library"
7974885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    echo "*** or is declared to -dlopen it."
7975885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
7976885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$allow_undefined" = no; then
7977885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      echo
7978885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      echo "*** Since this library must not contain undefined symbols,"
7979885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      echo "*** because either the platform does not support them or"
7980885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      echo "*** it was explicitly requested with -no-undefined,"
7981885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      echo "*** libtool will only create a static version of it."
7982885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test "$build_old_libs" = no; then
7983885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		oldlibs="$output_objdir/$libname.$libext"
7984885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		build_libtool_libs=module
7985885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		build_old_libs=yes
7986885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      else
7987885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		build_libtool_libs=no
7988885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
7989885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
7990885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
7991885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
7992885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Done checking deplibs!
7993885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	deplibs=$newdeplibs
7994885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
7995885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
7996885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $host in
7997885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*-*-darwin*)
7998885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7999885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8000885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8001885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
8002885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
8003885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8004885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # move library search paths that coincide with paths to not yet
8005885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # installed libraries to the beginning of the library search list
8006885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      new_libs=
8007885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      for path in $notinst_path; do
8008885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case " $new_libs " in
8009885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*" -L$path/$objdir "*) ;;
8010885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*)
8011885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case " $deplibs " in
8012885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *" -L$path/$objdir "*)
8013885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append new_libs " -L$path/$objdir" ;;
8014885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
8015885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
8016885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
8017885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
8018885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      for deplib in $deplibs; do
8019885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $deplib in
8020885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	-L*)
8021885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case " $new_libs " in
8022885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *" $deplib "*) ;;
8023885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *) func_append new_libs " $deplib" ;;
8024885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
8025885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
8026885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*) func_append new_libs " $deplib" ;;
8027885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
8028885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
8029885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      deplibs="$new_libs"
8030885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8031885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # All the library-specific variables (install_libdir is set above).
8032885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      library_names=
8033885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      old_library=
8034885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      dlname=
8035885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8036885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Test again, we may have decided not to build it any more
8037885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$build_libtool_libs" = yes; then
8038885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Remove ${wl} instances when linking with ld.
8039885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# FIXME: should test the right _cmds variable.
8040885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $archive_cmds in
8041885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *\$LD\ *) wl= ;;
8042885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        esac
8043885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$hardcode_into_libs" = yes; then
8044885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Hardcode the library paths
8045885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  hardcode_libdirs=
8046885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  dep_rpath=
8047885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  rpath="$finalize_rpath"
8048885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
8049885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for libdir in $rpath; do
8050885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -n "$hardcode_libdir_flag_spec"; then
8051885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test -n "$hardcode_libdir_separator"; then
8052885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_replace_sysroot "$libdir"
8053885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		libdir=$func_replace_sysroot_result
8054885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		if test -z "$hardcode_libdirs"; then
8055885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  hardcode_libdirs="$libdir"
8056885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		else
8057885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  # Just accumulate the unique libdirs.
8058885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8059885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8060885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    ;;
8061885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  *)
8062885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8063885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    ;;
8064885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  esac
8065885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		fi
8066885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      else
8067885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		eval flag=\"$hardcode_libdir_flag_spec\"
8068885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_append dep_rpath " $flag"
8069885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
8070885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    elif test -n "$runpath_var"; then
8071885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case "$perm_rpath " in
8072885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *" $libdir "*) ;;
8073885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *) func_append perm_rpath " $libdir" ;;
8074885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
8075885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
8076885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
8077885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Substitute the hardcoded libdirs into the rpath.
8078885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$hardcode_libdir_separator" &&
8079885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	     test -n "$hardcode_libdirs"; then
8080885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    libdir="$hardcode_libdirs"
8081885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
8082885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
8083885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
8084885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # We should set the runpath_var.
8085885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    rpath=
8086885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    for dir in $perm_rpath; do
8087885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append rpath "$dir:"
8088885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done
8089885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
8090885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
8091885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
8092885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8093885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8094885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	shlibpath="$finalize_shlibpath"
8095885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
8096885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$shlibpath"; then
8097885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
8098885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8099885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Get the real and link names of the library.
8101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	eval shared_ext=\"$shrext_cmds\"
8102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	eval library_names=\"$library_names_spec\"
8103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	set dummy $library_names
8104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	shift
8105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	realname="$1"
8106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	shift
8107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$soname_spec"; then
8109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  eval soname=\"$soname_spec\"
8110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
8111885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  soname="$realname"
8112885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8113885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -z "$dlname"; then
8114885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  dlname=$soname
8115885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8116885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8117885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	lib="$output_objdir/$realname"
8118885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	linknames=
8119885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	for link
8120885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	do
8121885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append linknames " $link"
8122885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done
8123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8124885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Use standard objects if they are pic
8125885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
8126885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	test "X$libobjs" = "X " && libobjs=
8127885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8128885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	delfiles=
8129885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$export_symbols" && test -n "$include_expsyms"; then
8130885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
8131885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  export_symbols="$output_objdir/$libname.uexp"
8132885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append delfiles " $export_symbols"
8133885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8134885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8135885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	orig_export_symbols=
8136885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $host_os in
8137885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	cygwin* | mingw* | cegcc*)
8138885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
8139885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # exporting using user supplied symfile
8140885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
8141885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # and it's NOT already a .def file. Must figure out
8142885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # which of the given symbols are data symbols and tag
8143885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # them as such. So, trigger use of export_symbols_cmds.
8144885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # export_symbols gets reassigned inside the "prepare
8145885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # the list of exported symbols" if statement, so the
8146885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # include_expsyms logic still works.
8147885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      orig_export_symbols="$export_symbols"
8148885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      export_symbols=
8149885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      always_export_symbols=yes
8150885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
8151885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
8152885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
8153885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
8154885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8155885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Prepare the list of exported symbols
8156885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -z "$export_symbols"; then
8157885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
8158885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_verbose "generating symbol list for \`$libname.la'"
8159885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    export_symbols="$output_objdir/$libname.exp"
8160885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $opt_dry_run || $RM $export_symbols
8161885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    cmds=$export_symbols_cmds
8162885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    save_ifs="$IFS"; IFS='~'
8163885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    for cmd1 in $cmds; do
8164885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      IFS="$save_ifs"
8165885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # Take the normal branch if the nm_file_list_spec branch
8166885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # doesn't work or if tool conversion is not needed.
8167885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case $nm_file_list_spec~$to_tool_file_cmd in
8168885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
8169885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  try_normal_branch=yes
8170885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  eval cmd=\"$cmd1\"
8171885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_len " $cmd"
8172885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  len=$func_len_result
8173885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  ;;
8174885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		*)
8175885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  try_normal_branch=no
8176885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  ;;
8177885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
8178885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test "$try_normal_branch" = yes \
8179885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		 && { test "$len" -lt "$max_cmd_len" \
8180885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		      || test "$max_cmd_len" -le -1; }
8181885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      then
8182885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_show_eval "$cmd" 'exit $?'
8183885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		skipped_export=false
8184885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      elif test -n "$nm_file_list_spec"; then
8185885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_basename "$output"
8186885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		output_la=$func_basename_result
8187885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		save_libobjs=$libobjs
8188885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		save_output=$output
8189885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		output=${output_objdir}/${output_la}.nm
8190885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_to_tool_file "$output"
8191885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		libobjs=$nm_file_list_spec$func_to_tool_file_result
8192885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_append delfiles " $output"
8193885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_verbose "creating $NM input file list: $output"
8194885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		for obj in $save_libobjs; do
8195885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_to_tool_file "$obj"
8196885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  $ECHO "$func_to_tool_file_result"
8197885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		done > "$output"
8198885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		eval cmd=\"$cmd1\"
8199885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_show_eval "$cmd" 'exit $?'
8200885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		output=$save_output
8201885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		libobjs=$save_libobjs
8202885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		skipped_export=false
8203885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      else
8204885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		# The command line is too long to execute in one step.
8205885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_verbose "using reloadable object file for export list..."
8206885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		skipped_export=:
8207885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		# Break out early, otherwise skipped_export may be
8208885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		# set to false by a later but shorter cmd.
8209885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		break
8210885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
8211885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done
8212885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    IFS="$save_ifs"
8213885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
8214885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
8215885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
8216885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
8217885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
8218885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8219885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8220885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$export_symbols" && test -n "$include_expsyms"; then
8221885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  tmp_export_symbols="$export_symbols"
8222885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
8223885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
8224885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8225885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8226885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
8227885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # The given exports_symbols file has to be filtered, so filter it.
8228885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
8229885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
8230885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # 's' commands which not all seds can handle. GNU sed should be fine
8231885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # though. Also, the filter scales superlinearly with the number of
8232885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # global variables. join(1) would be nice here, but unfortunately
8233885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # isn't a blessed tool.
8234885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
8235885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
8236885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  export_symbols=$output_objdir/$libname.def
8237885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
8238885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8239885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8240885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	tmp_deplibs=
8241885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	for test_deplib in $deplibs; do
8242885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case " $convenience " in
8243885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *" $test_deplib "*) ;;
8244885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *)
8245885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append tmp_deplibs " $test_deplib"
8246885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
8247885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
8248885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done
8249885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	deplibs="$tmp_deplibs"
8250885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8251885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$convenience"; then
8252885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$whole_archive_flag_spec" &&
8253885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    test "$compiler_needs_object" = yes &&
8254885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    test -z "$libobjs"; then
8255885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # extract the archives, so we have objects to list.
8256885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # TODO: could optimize this to just extract one archive.
8257885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    whole_archive_flag_spec=
8258885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
8259885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$whole_archive_flag_spec"; then
8260885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    save_libobjs=$libobjs
8261885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
8262885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    test "X$libobjs" = "X " && libobjs=
8263885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
8264885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    gentop="$output_objdir/${outputname}x"
8265885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append generated " $gentop"
8266885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8267885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_extract_archives $gentop $convenience
8268885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append libobjs " $func_extract_archives_result"
8269885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    test "X$libobjs" = "X " && libobjs=
8270885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
8271885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8272885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8273885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
8274885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  eval flag=\"$thread_safe_flag_spec\"
8275885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append linker_flags " $flag"
8276885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8277885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8278885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Make a backup of the uninstalled library when relinking
8279885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$opt_mode" = relink; then
8280885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
8281885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8282885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8283885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Do each of the archive commands.
8284885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$module" = yes && test -n "$module_cmds" ; then
8285885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
8286885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    eval test_cmds=\"$module_expsym_cmds\"
8287885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    cmds=$module_expsym_cmds
8288885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
8289885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    eval test_cmds=\"$module_cmds\"
8290885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    cmds=$module_cmds
8291885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
8292885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
8293885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
8294885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    eval test_cmds=\"$archive_expsym_cmds\"
8295885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    cmds=$archive_expsym_cmds
8296885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
8297885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    eval test_cmds=\"$archive_cmds\"
8298885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    cmds=$archive_cmds
8299885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
8300885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8301885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8302885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "X$skipped_export" != "X:" &&
8303885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	   func_len " $test_cmds" &&
8304885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	   len=$func_len_result &&
8305885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
8306885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  :
8307885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
8308885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # The command line is too long to link in one step, link piecewise
8309885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # or, if using GNU ld and skipped_export is not :, use a linker
8310885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # script.
8311885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8312885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Save the value of $output and $libobjs because we want to
8313885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # use them later.  If we have whole_archive_flag_spec, we
8314885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # want to use save_libobjs as it was before
8315885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # whole_archive_flag_spec was expanded, because we can't
8316885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # assume the linker understands whole_archive_flag_spec.
8317885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # This may have to be revisited, in case too many
8318885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # convenience libraries get linked in and end up exceeding
8319885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # the spec.
8320885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
8321885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    save_libobjs=$libobjs
8322885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
8323885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  save_output=$output
8324885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_basename "$output"
8325885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  output_la=$func_basename_result
8326885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8327885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Clear the reloadable object creation command queue and
8328885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # initialize k to one.
8329885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  test_cmds=
8330885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  concat_cmds=
8331885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  objlist=
8332885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  last_robj=
8333885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  k=1
8334885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8335885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
8336885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    output=${output_objdir}/${output_la}.lnkscript
8337885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_verbose "creating GNU ld script: $output"
8338885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    echo 'INPUT (' > $output
8339885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    for obj in $save_libobjs
8340885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    do
8341885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_to_tool_file "$obj"
8342885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      $ECHO "$func_to_tool_file_result" >> $output
8343885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done
8344885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    echo ')' >> $output
8345885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append delfiles " $output"
8346885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_to_tool_file "$output"
8347885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    output=$func_to_tool_file_result
8348885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
8349885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    output=${output_objdir}/${output_la}.lnk
8350885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_verbose "creating linker input file list: $output"
8351885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    : > $output
8352885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    set x $save_libobjs
8353885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    shift
8354885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    firstobj=
8355885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$compiler_needs_object" = yes; then
8356885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      firstobj="$1 "
8357885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      shift
8358885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
8359885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    for obj
8360885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    do
8361885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_to_tool_file "$obj"
8362885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      $ECHO "$func_to_tool_file_result" >> $output
8363885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done
8364885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append delfiles " $output"
8365885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_to_tool_file "$output"
8366885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
8367885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
8368885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -n "$save_libobjs"; then
8369885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_verbose "creating reloadable object files..."
8370885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      output=$output_objdir/$output_la-${k}.$objext
8371885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      eval test_cmds=\"$reload_cmds\"
8372885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_len " $test_cmds"
8373885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      len0=$func_len_result
8374885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      len=$len0
8375885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8376885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # Loop over the list of objects to be linked.
8377885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      for obj in $save_libobjs
8378885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      do
8379885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_len " $obj"
8380885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_arith $len + $func_len_result
8381885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		len=$func_arith_result
8382885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		if test "X$objlist" = X ||
8383885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		   test "$len" -lt "$max_cmd_len"; then
8384885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_append objlist " $obj"
8385885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		else
8386885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  # The command $test_cmds is almost too long, add a
8387885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  # command to the queue.
8388885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  if test "$k" -eq 1 ; then
8389885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    # The first file doesn't have a previous command to add.
8390885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    reload_objs=$objlist
8391885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    eval concat_cmds=\"$reload_cmds\"
8392885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  else
8393885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    # All subsequent reloadable object files will link in
8394885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    # the last one created.
8395885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    reload_objs="$objlist $last_robj"
8396885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
8397885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  fi
8398885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  last_robj=$output_objdir/$output_la-${k}.$objext
8399885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_arith $k + 1
8400885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  k=$func_arith_result
8401885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  output=$output_objdir/$output_la-${k}.$objext
8402885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  objlist=" $obj"
8403885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_len " $last_robj"
8404885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_arith $len0 + $func_len_result
8405885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  len=$func_arith_result
8406885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		fi
8407885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      done
8408885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # Handle the remaining objects by creating one last
8409885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # reloadable object file.  All subsequent reloadable object
8410885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # files will link in the last one created.
8411885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8412885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      reload_objs="$objlist $last_robj"
8413885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
8414885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test -n "$last_robj"; then
8415885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
8416885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
8417885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append delfiles " $output"
8418885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8419885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
8420885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      output=
8421885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
8422885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8423885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if ${skipped_export-false}; then
8424885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_verbose "generating symbol list for \`$libname.la'"
8425885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      export_symbols="$output_objdir/$libname.exp"
8426885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      $opt_dry_run || $RM $export_symbols
8427885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      libobjs=$output
8428885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # Append the command to create the export file.
8429885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8430885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
8431885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test -n "$last_robj"; then
8432885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
8433885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
8434885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
8435885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8436885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    test -n "$save_libobjs" &&
8437885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_verbose "creating a temporary reloadable object file: $output"
8438885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8439885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Loop through the commands generated above and execute them.
8440885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    save_ifs="$IFS"; IFS='~'
8441885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    for cmd in $concat_cmds; do
8442885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      IFS="$save_ifs"
8443885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      $opt_silent || {
8444885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_quote_for_expand "$cmd"
8445885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  eval "func_echo $func_quote_for_expand_result"
8446885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      }
8447885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      $opt_dry_run || eval "$cmd" || {
8448885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		lt_exit=$?
8449885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8450885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		# Restore the uninstalled library and exit
8451885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		if test "$opt_mode" = relink; then
8452885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  ( cd "$output_objdir" && \
8453885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    $RM "${realname}T" && \
8454885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		    $MV "${realname}U" "$realname" )
8455885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		fi
8456885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8457885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		exit $lt_exit
8458885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      }
8459885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done
8460885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    IFS="$save_ifs"
8461885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8462885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
8463885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
8464885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
8465885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
8466885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
8467885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8468885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          if ${skipped_export-false}; then
8469885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
8470885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      tmp_export_symbols="$export_symbols"
8471885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
8472885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
8473885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
8474885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8475885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -n "$orig_export_symbols"; then
8476885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # The given exports_symbols file has to be filtered, so filter it.
8477885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
8478885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
8479885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # 's' commands which not all seds can handle. GNU sed should be fine
8480885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # though. Also, the filter scales superlinearly with the number of
8481885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # global variables. join(1) would be nice here, but unfortunately
8482885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # isn't a blessed tool.
8483885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
8484885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
8485885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      export_symbols=$output_objdir/$libname.def
8486885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
8487885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
8488885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
8489885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8490885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  libobjs=$output
8491885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Restore the value of output.
8492885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  output=$save_output
8493885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8494885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
8495885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
8496885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    test "X$libobjs" = "X " && libobjs=
8497885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
8498885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Expand the library linking commands again to reset the
8499885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # value of $libobjs for piecewise linking.
8500885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8501885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Do each of the archive commands.
8502885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$module" = yes && test -n "$module_cmds" ; then
8503885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
8504885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      cmds=$module_expsym_cmds
8505885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
8506885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      cmds=$module_cmds
8507885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
8508885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
8509885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
8510885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      cmds=$archive_expsym_cmds
8511885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
8512885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      cmds=$archive_cmds
8513885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
8514885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
8515885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8516885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8517885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$delfiles"; then
8518885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Append the command to remove temporary files to $cmds.
8519885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  eval cmds=\"\$cmds~\$RM $delfiles\"
8520885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8521885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8522885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Add any objects from preloaded convenience libraries
8523885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$dlprefiles"; then
8524885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  gentop="$output_objdir/${outputname}x"
8525885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append generated " $gentop"
8526885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8527885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_extract_archives $gentop $dlprefiles
8528885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append libobjs " $func_extract_archives_result"
8529885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  test "X$libobjs" = "X " && libobjs=
8530885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8531885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8532885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	save_ifs="$IFS"; IFS='~'
8533885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	for cmd in $cmds; do
8534885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  IFS="$save_ifs"
8535885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  eval cmd=\"$cmd\"
8536885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  $opt_silent || {
8537885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_quote_for_expand "$cmd"
8538885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    eval "func_echo $func_quote_for_expand_result"
8539885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  }
8540885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  $opt_dry_run || eval "$cmd" || {
8541885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    lt_exit=$?
8542885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8543885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Restore the uninstalled library and exit
8544885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$opt_mode" = relink; then
8545885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      ( cd "$output_objdir" && \
8546885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        $RM "${realname}T" && \
8547885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		$MV "${realname}U" "$realname" )
8548885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
8549885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8550885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    exit $lt_exit
8551885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  }
8552885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done
8553885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	IFS="$save_ifs"
8554885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8555885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Restore the uninstalled library and exit
8556885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$opt_mode" = relink; then
8557885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
8558885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8559885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$convenience"; then
8560885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -z "$whole_archive_flag_spec"; then
8561885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_show_eval '${RM}r "$gentop"'
8562885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
8563885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
8564885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8565885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  exit $EXIT_SUCCESS
8566885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8567885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8568885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Create links to the real library.
8569885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	for linkname in $linknames; do
8570885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$realname" != "$linkname"; then
8571885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
8572885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
8573885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done
8574885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8575885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# If -module or -export-dynamic was specified, set the dlname.
8576885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$module" = yes || test "$export_dynamic" = yes; then
8577885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # On all known operating systems, these are identical.
8578885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  dlname="$soname"
8579885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8580885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
8581885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
8582885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8583885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    obj)
8584885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
8585885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_warning "\`-dlopen' is ignored for objects"
8586885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
8587885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8588885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case " $deplibs" in
8589885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *\ -l* | *\ -L*)
8590885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_warning "\`-l' and \`-L' are ignored for objects" ;;
8591885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
8592885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8593885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test -n "$rpath" && \
8594885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_warning "\`-rpath' is ignored for objects"
8595885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8596885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test -n "$xrpath" && \
8597885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_warning "\`-R' is ignored for objects"
8598885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8599885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test -n "$vinfo" && \
8600885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_warning "\`-version-info' is ignored for objects"
8601885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8602885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test -n "$release" && \
8603885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_warning "\`-release' is ignored for objects"
8604885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8605885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $output in
8606885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *.lo)
8607885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	test -n "$objs$old_deplibs" && \
8608885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
8609885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8610885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	libobj=$output
8611885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_lo2o "$libobj"
8612885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	obj=$func_lo2o_result
8613885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
8614885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *)
8615885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	libobj=
8616885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	obj="$output"
8617885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
8618885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
8619885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8620885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Delete the old objects.
8621885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      $opt_dry_run || $RM $obj $libobj
8622885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8623885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Objects from convenience libraries.  This assumes
8624885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # single-version convenience libraries.  Whenever we create
8625885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # different ones for PIC/non-PIC, this we'll have to duplicate
8626885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # the extraction.
8627885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      reload_conv_objs=
8628885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      gentop=
8629885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # reload_cmds runs $LD directly, so let us get rid of
8630885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # -Wl from whole_archive_flag_spec and hope we can get by with
8631885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # turning comma into space..
8632885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      wl=
8633885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8634885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$convenience"; then
8635885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$whole_archive_flag_spec"; then
8636885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
8637885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
8638885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
8639885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  gentop="$output_objdir/${obj}x"
8640885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append generated " $gentop"
8641885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8642885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_extract_archives $gentop $convenience
8643885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  reload_conv_objs="$reload_objs $func_extract_archives_result"
8644885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8645885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
8646885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8647885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # If we're not building shared, we need to use non_pic_objs
8648885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
8649885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8650885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Create the old-style object.
8651885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
8652885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8653885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      output="$obj"
8654885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_execute_cmds "$reload_cmds" 'exit $?'
8655885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8656885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Exit if we aren't doing a library object file.
8657885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -z "$libobj"; then
8658885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$gentop"; then
8659885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_show_eval '${RM}r "$gentop"'
8660885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8661885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8662885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	exit $EXIT_SUCCESS
8663885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
8664885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8665885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$build_libtool_libs" != yes; then
8666885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$gentop"; then
8667885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_show_eval '${RM}r "$gentop"'
8668885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8669885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8670885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Create an invalid libtool object if no PIC, so that we don't
8671885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# accidentally link it into a program.
8672885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# $show "echo timestamp > $libobj"
8673885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
8674885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	exit $EXIT_SUCCESS
8675885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
8676885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8677885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$pic_flag" || test "$pic_mode" != default; then
8678885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Only do commands if we really have different PIC objects.
8679885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	reload_objs="$libobjs $reload_conv_objs"
8680885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	output="$libobj"
8681885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_execute_cmds "$reload_cmds" 'exit $?'
8682885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
8683885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8684885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$gentop"; then
8685885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_show_eval '${RM}r "$gentop"'
8686885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
8687885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8688885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      exit $EXIT_SUCCESS
8689885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
8690885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8691885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    prog)
8692885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $host in
8693885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*cygwin*) func_stripname '' '.exe' "$output"
8694885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	          output=$func_stripname_result.exe;;
8695885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
8696885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test -n "$vinfo" && \
8697885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_warning "\`-version-info' is ignored for programs"
8698885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8699885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test -n "$release" && \
8700885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_warning "\`-release' is ignored for programs"
8701885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8702885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test "$preload" = yes \
8703885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        && test "$dlopen_support" = unknown \
8704885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	&& test "$dlopen_self" = unknown \
8705885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	&& test "$dlopen_self_static" = unknown && \
8706885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
8707885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8708885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $host in
8709885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *-*-rhapsody* | *-*-darwin1.[012])
8710885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# On Rhapsody replace the C library is the System framework
8711885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
8712885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
8713885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
8714885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
8715885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8716885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $host in
8717885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *-*-darwin*)
8718885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Don't allow lazy linking, it breaks C++ global constructors
8719885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# But is supposedly fixed on 10.4 or later (yay!).
8720885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$tagname" = CXX ; then
8721885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
8722885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    10.[0123])
8723885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append compile_command " ${wl}-bind_at_load"
8724885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append finalize_command " ${wl}-bind_at_load"
8725885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
8726885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
8727885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8728885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
8729885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8730885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8731885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
8732885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
8733885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8734885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8735885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # move library search paths that coincide with paths to not yet
8736885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # installed libraries to the beginning of the library search list
8737885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      new_libs=
8738885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      for path in $notinst_path; do
8739885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case " $new_libs " in
8740885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*" -L$path/$objdir "*) ;;
8741885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*)
8742885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case " $compile_deplibs " in
8743885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *" -L$path/$objdir "*)
8744885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append new_libs " -L$path/$objdir" ;;
8745885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
8746885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
8747885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
8748885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
8749885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      for deplib in $compile_deplibs; do
8750885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $deplib in
8751885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	-L*)
8752885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case " $new_libs " in
8753885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *" $deplib "*) ;;
8754885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *) func_append new_libs " $deplib" ;;
8755885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
8756885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
8757885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*) func_append new_libs " $deplib" ;;
8758885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
8759885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
8760885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      compile_deplibs="$new_libs"
8761885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8762885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8763885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_append compile_command " $compile_deplibs"
8764885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_append finalize_command " $finalize_deplibs"
8765885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8766885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$rpath$xrpath"; then
8767885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# If the user specified any rpath flags, then add them.
8768885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	for libdir in $rpath $xrpath; do
8769885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # This is the magic to use -rpath.
8770885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case "$finalize_rpath " in
8771885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *" $libdir "*) ;;
8772885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *) func_append finalize_rpath " $libdir" ;;
8773885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
8774885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done
8775885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
8776885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8777885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Now hardcode the library paths
8778885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      rpath=
8779885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      hardcode_libdirs=
8780885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      for libdir in $compile_rpath $finalize_rpath; do
8781885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$hardcode_libdir_flag_spec"; then
8782885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$hardcode_libdir_separator"; then
8783885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -z "$hardcode_libdirs"; then
8784885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      hardcode_libdirs="$libdir"
8785885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
8786885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # Just accumulate the unique libdirs.
8787885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8788885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8789885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
8790885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *)
8791885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8792885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
8793885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
8794885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
8795885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
8796885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    eval flag=\"$hardcode_libdir_flag_spec\"
8797885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append rpath " $flag"
8798885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
8799885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	elif test -n "$runpath_var"; then
8800885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case "$perm_rpath " in
8801885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *" $libdir "*) ;;
8802885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *) func_append perm_rpath " $libdir" ;;
8803885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
8804885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8805885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $host in
8806885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
8807885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
8808885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case :$dllsearchpath: in
8809885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *":$libdir:"*) ;;
8810885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ::) dllsearchpath=$libdir;;
8811885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *) func_append dllsearchpath ":$libdir";;
8812885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
8813885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case :$dllsearchpath: in
8814885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *":$testbindir:"*) ;;
8815885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ::) dllsearchpath=$testbindir;;
8816885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *) func_append dllsearchpath ":$testbindir";;
8817885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
8818885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
8819885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
8820885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
8821885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Substitute the hardcoded libdirs into the rpath.
8822885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$hardcode_libdir_separator" &&
8823885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	 test -n "$hardcode_libdirs"; then
8824885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	libdir="$hardcode_libdirs"
8825885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	eval rpath=\" $hardcode_libdir_flag_spec\"
8826885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
8827885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      compile_rpath="$rpath"
8828885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8829885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      rpath=
8830885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      hardcode_libdirs=
8831885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      for libdir in $finalize_rpath; do
8832885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$hardcode_libdir_flag_spec"; then
8833885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$hardcode_libdir_separator"; then
8834885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -z "$hardcode_libdirs"; then
8835885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      hardcode_libdirs="$libdir"
8836885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
8837885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # Just accumulate the unique libdirs.
8838885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8839885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8840885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
8841885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *)
8842885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8843885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
8844885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
8845885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
8846885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
8847885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    eval flag=\"$hardcode_libdir_flag_spec\"
8848885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append rpath " $flag"
8849885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
8850885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	elif test -n "$runpath_var"; then
8851885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case "$finalize_perm_rpath " in
8852885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *" $libdir "*) ;;
8853885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *) func_append finalize_perm_rpath " $libdir" ;;
8854885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
8855885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8856885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
8857885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Substitute the hardcoded libdirs into the rpath.
8858885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$hardcode_libdir_separator" &&
8859885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	 test -n "$hardcode_libdirs"; then
8860885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	libdir="$hardcode_libdirs"
8861885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	eval rpath=\" $hardcode_libdir_flag_spec\"
8862885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
8863885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      finalize_rpath="$rpath"
8864885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8865885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$libobjs" && test "$build_old_libs" = yes; then
8866885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Transform all the library objects into standard objects.
8867885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
8868885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
8869885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
8870885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8871885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
8872885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8873885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # template prelinking step
8874885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$prelink_cmds"; then
8875885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_execute_cmds "$prelink_cmds" 'exit $?'
8876885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
8877885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8878885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      wrappers_required=yes
8879885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $host in
8880885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *cegcc* | *mingw32ce*)
8881885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
8882885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        wrappers_required=no
8883885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        ;;
8884885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *cygwin* | *mingw* )
8885885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        if test "$build_libtool_libs" != yes; then
8886885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          wrappers_required=no
8887885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        fi
8888885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        ;;
8889885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *)
8890885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
8891885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org          wrappers_required=no
8892885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        fi
8893885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org        ;;
8894885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
8895885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$wrappers_required" = no; then
8896885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Replace the output file specification.
8897885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8898885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	link_command="$compile_command$compile_rpath"
8899885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8900885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# We have no uninstalled library dependencies, so finalize right now.
8901885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	exit_status=0
8902885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_show_eval "$link_command" 'exit_status=$?'
8903885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8904885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$postlink_cmds"; then
8905885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_to_tool_file "$output"
8906885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
8907885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_execute_cmds "$postlink_cmds" 'exit $?'
8908885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8909885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8910885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Delete the generated files.
8911885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -f "$output_objdir/${outputname}S.${objext}"; then
8912885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
8913885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8914885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8915885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	exit $exit_status
8916885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
8917885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8918885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$compile_shlibpath$finalize_shlibpath"; then
8919885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
8920885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
8921885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$finalize_shlibpath"; then
8922885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
8923885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
8924885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8925885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      compile_var=
8926885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      finalize_var=
8927885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$runpath_var"; then
8928885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$perm_rpath"; then
8929885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # We should set the runpath_var.
8930885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  rpath=
8931885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for dir in $perm_rpath; do
8932885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append rpath "$dir:"
8933885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
8934885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
8935885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8936885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$finalize_perm_rpath"; then
8937885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # We should set the runpath_var.
8938885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  rpath=
8939885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for dir in $finalize_perm_rpath; do
8940885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append rpath "$dir:"
8941885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
8942885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
8943885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8944885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
8945885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8946885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$no_install" = yes; then
8947885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# We don't need to create a wrapper script.
8948885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	link_command="$compile_var$compile_command$compile_rpath"
8949885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Replace the output file specification.
8950885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8951885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Delete the old output file.
8952885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	$opt_dry_run || $RM $output
8953885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Link the executable and exit
8954885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_show_eval "$link_command" 'exit $?'
8955885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8956885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$postlink_cmds"; then
8957885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_to_tool_file "$output"
8958885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
8959885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_execute_cmds "$postlink_cmds" 'exit $?'
8960885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8961885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8962885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	exit $EXIT_SUCCESS
8963885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
8964885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8965885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$hardcode_action" = relink; then
8966885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Fast installation is not supported
8967885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	link_command="$compile_var$compile_command$compile_rpath"
8968885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	relink_command="$finalize_var$finalize_command$finalize_rpath"
8969885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8970885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_warning "this platform does not like uninstalled shared libraries"
8971885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_warning "\`$output' will be relinked during installation"
8972885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      else
8973885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$fast_install" != no; then
8974885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  link_command="$finalize_var$compile_command$finalize_rpath"
8975885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$fast_install" = yes; then
8976885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
8977885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
8978885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # fast_install is set to needless
8979885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    relink_command=
8980885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
8981885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
8982885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  link_command="$compile_var$compile_command$compile_rpath"
8983885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  relink_command="$finalize_var$finalize_command$finalize_rpath"
8984885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
8985885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
8986885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8987885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Replace the output file specification.
8988885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
8989885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8990885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Delete the old output files.
8991885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
8992885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8993885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_show_eval "$link_command" 'exit $?'
8994885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
8995885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$postlink_cmds"; then
8996885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_to_tool_file "$output_objdir/$outputname"
8997885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	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'`
8998885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_execute_cmds "$postlink_cmds" 'exit $?'
8999885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
9000885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9001885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Now create the wrapper script.
9002885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_verbose "creating $output"
9003885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9004885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Quote the relink command for shipping.
9005885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$relink_command"; then
9006885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Preserve any variables that may affect compiler behavior
9007885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	for var in $variables_saved_for_relink; do
9008885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if eval test -z \"\${$var+set}\"; then
9009885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
9010885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  elif eval var_value=\$$var; test -z "$var_value"; then
9011885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    relink_command="$var=; export $var; $relink_command"
9012885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
9013885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_quote_for_eval "$var_value"
9014885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
9015885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
9016885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done
9017885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	relink_command="(cd `pwd`; $relink_command)"
9018885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
9019885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
9020885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9021885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Only actually do things if not in dry run mode.
9022885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      $opt_dry_run || {
9023885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# win32 will think the script is a binary if it has
9024885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# a .exe suffix, so we strip it off here.
9025885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $output in
9026885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *.exe) func_stripname '' '.exe' "$output"
9027885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	         output=$func_stripname_result ;;
9028885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
9029885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# test for cygwin because mv fails w/o .exe extensions
9030885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $host in
9031885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *cygwin*)
9032885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    exeext=.exe
9033885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_stripname '' '.exe' "$outputname"
9034885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    outputname=$func_stripname_result ;;
9035885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *) exeext= ;;
9036885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
9037885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case $host in
9038885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *cygwin* | *mingw* )
9039885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_dirname_and_basename "$output" "" "."
9040885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    output_name=$func_basename_result
9041885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    output_path=$func_dirname_result
9042885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
9043885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    cwrapper="$output_path/$output_name.exe"
9044885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $RM $cwrappersource $cwrapper
9045885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
9046885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9047885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_emit_cwrapperexe_src > $cwrappersource
9048885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9049885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # The wrapper executable is built using the $host compiler,
9050885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # because it contains $host paths and files. If cross-
9051885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # compiling, it, like the target executable, must be
9052885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # executed on the $host or under an emulation environment.
9053885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $opt_dry_run || {
9054885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
9055885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      $STRIP $cwrapper
9056885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    }
9057885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9058885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Now, create the wrapper script for func_source use:
9059885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_ltwrapper_scriptname $cwrapper
9060885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $RM $func_ltwrapper_scriptname_result
9061885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
9062885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $opt_dry_run || {
9063885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # note: this script will not be executed, so do not chmod.
9064885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test "x$build" = "x$host" ; then
9065885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
9066885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      else
9067885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_emit_wrapper no > $func_ltwrapper_scriptname_result
9068885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
9069885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    }
9070885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
9071885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  * )
9072885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $RM $output
9073885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
9074885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9075885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_emit_wrapper no > $output
9076885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    chmod +x $output
9077885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  ;;
9078885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
9079885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      }
9080885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      exit $EXIT_SUCCESS
9081885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
9082885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
9083885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9084885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # See if we need to build an old-fashioned archive.
9085885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    for oldlib in $oldlibs; do
9086885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9087885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$build_libtool_libs" = convenience; then
9088885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	oldobjs="$libobjs_save $symfileobj"
9089885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	addlibs="$convenience"
9090885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	build_libtool_libs=no
9091885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      else
9092885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$build_libtool_libs" = module; then
9093885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  oldobjs="$libobjs_save"
9094885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  build_libtool_libs=no
9095885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
9096885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  oldobjs="$old_deplibs $non_pic_objects"
9097885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$preload" = yes && test -f "$symfileobj"; then
9098885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append oldobjs " $symfileobj"
9099885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
9100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
9101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	addlibs="$old_convenience"
9102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
9103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$addlibs"; then
9105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	gentop="$output_objdir/${outputname}x"
9106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append generated " $gentop"
9107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_extract_archives $gentop $addlibs
9109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_append oldobjs " $func_extract_archives_result"
9110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
9111885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9112885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Do each command in the archive commands.
9113885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
9114885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	cmds=$old_archive_from_new_cmds
9115885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      else
9116885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9117885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Add any objects from preloaded convenience libraries
9118885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test -n "$dlprefiles"; then
9119885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  gentop="$output_objdir/${outputname}x"
9120885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append generated " $gentop"
9121885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9122885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_extract_archives $gentop $dlprefiles
9123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append oldobjs " $func_extract_archives_result"
9124885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
9125885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9126885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# POSIX demands no paths to be encoded in archives.  We have
9127885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# to avoid creating archives with duplicate basenames if we
9128885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# might have to extract them afterwards, e.g., when creating a
9129885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# static archive out of a convenience library, or when linking
9130885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# the entirety of a libtool archive into another (currently
9131885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# not supported by libtool).
9132885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if (for obj in $oldobjs
9133885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    do
9134885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_basename "$obj"
9135885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      $ECHO "$func_basename_result"
9136885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done | sort | sort -uc >/dev/null 2>&1); then
9137885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  :
9138885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
9139885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  echo "copying selected object files to avoid basename conflicts..."
9140885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  gentop="$output_objdir/${outputname}x"
9141885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_append generated " $gentop"
9142885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_mkdir_p "$gentop"
9143885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  save_oldobjs=$oldobjs
9144885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  oldobjs=
9145885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  counter=1
9146885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for obj in $save_oldobjs
9147885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  do
9148885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_basename "$obj"
9149885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    objbase="$func_basename_result"
9150885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case " $oldobjs " in
9151885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    " ") oldobjs=$obj ;;
9152885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *[\ /]"$objbase "*)
9153885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      while :; do
9154885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		# Make sure we don't pick an alternate name that also
9155885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		# overlaps.
9156885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		newobj=lt$counter-$objbase
9157885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_arith $counter + 1
9158885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		counter=$func_arith_result
9159885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		case " $oldobjs " in
9160885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		*[\ /]"$newobj "*) ;;
9161885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
9162885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		esac
9163885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      done
9164885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
9165885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append oldobjs " $gentop/$newobj"
9166885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      ;;
9167885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *) func_append oldobjs " $obj" ;;
9168885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
9169885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
9170885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
9171885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
9172885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	tool_oldlib=$func_to_tool_file_result
9173885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	eval cmds=\"$old_archive_cmds\"
9174885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9175885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_len " $cmds"
9176885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	len=$func_len_result
9177885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
9178885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  cmds=$old_archive_cmds
9179885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	elif test -n "$archiver_list_spec"; then
9180885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_verbose "using command file archive linking..."
9181885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for obj in $oldobjs
9182885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  do
9183885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_to_tool_file "$obj"
9184885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $ECHO "$func_to_tool_file_result"
9185885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done > $output_objdir/$libname.libcmd
9186885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_to_tool_file "$output_objdir/$libname.libcmd"
9187885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
9188885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  cmds=$old_archive_cmds
9189885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
9190885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # the command line is too long to link in one step, link in parts
9191885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_verbose "using piecewise archive linking..."
9192885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  save_RANLIB=$RANLIB
9193885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  RANLIB=:
9194885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  objlist=
9195885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  concat_cmds=
9196885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  save_oldobjs=$oldobjs
9197885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  oldobjs=
9198885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Is there a better way of finding the last object in the list?
9199885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for obj in $save_oldobjs
9200885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  do
9201885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    last_oldobj=$obj
9202885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
9203885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  eval test_cmds=\"$old_archive_cmds\"
9204885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_len " $test_cmds"
9205885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  len0=$func_len_result
9206885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  len=$len0
9207885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for obj in $save_oldobjs
9208885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  do
9209885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_len " $obj"
9210885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_arith $len + $func_len_result
9211885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    len=$func_arith_result
9212885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append objlist " $obj"
9213885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$len" -lt "$max_cmd_len"; then
9214885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      :
9215885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
9216885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # the above command should be used before it gets too long
9217885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      oldobjs=$objlist
9218885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test "$obj" = "$last_oldobj" ; then
9219885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		RANLIB=$save_RANLIB
9220885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
9221885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
9222885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
9223885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      objlist=
9224885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      len=$len0
9225885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
9226885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
9227885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  RANLIB=$save_RANLIB
9228885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  oldobjs=$objlist
9229885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "X$oldobjs" = "X" ; then
9230885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    eval cmds=\"\$concat_cmds\"
9231885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
9232885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
9233885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
9234885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
9235885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
9236885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_execute_cmds "$cmds" 'exit $?'
9237885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    done
9238885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9239885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    test -n "$generated" && \
9240885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_show_eval "${RM}r$generated"
9241885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9242885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Now create the libtool archive.
9243885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    case $output in
9244885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    *.la)
9245885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      old_library=
9246885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test "$build_old_libs" = yes && old_library="$libname.$libext"
9247885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_verbose "creating $output"
9248885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9249885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Preserve any variables that may affect compiler behavior
9250885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      for var in $variables_saved_for_relink; do
9251885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if eval test -z \"\${$var+set}\"; then
9252885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
9253885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	elif eval var_value=\$$var; test -z "$var_value"; then
9254885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  relink_command="$var=; export $var; $relink_command"
9255885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	else
9256885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_quote_for_eval "$var_value"
9257885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
9258885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
9259885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      done
9260885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Quote the link command for shipping.
9261885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
9262885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
9263885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$hardcode_automatic" = yes ; then
9264885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	relink_command=
9265885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
9266885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9267885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Only create the output if not a dry run.
9268885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      $opt_dry_run || {
9269885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	for installed in no yes; do
9270885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$installed" = yes; then
9271885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -z "$install_libdir"; then
9272885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      break
9273885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
9274885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    output="$output_objdir/$outputname"i
9275885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # Replace all uninstalled libtool libraries with the installed ones
9276885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    newdependency_libs=
9277885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    for deplib in $dependency_libs; do
9278885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case $deplib in
9279885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *.la)
9280885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_basename "$deplib"
9281885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		name="$func_basename_result"
9282885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_resolve_sysroot "$deplib"
9283885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
9284885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		test -z "$libdir" && \
9285885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_fatal_error "\`$deplib' is not a valid libtool archive"
9286885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
9287885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
9288885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      -L*)
9289885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_stripname -L '' "$deplib"
9290885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_replace_sysroot "$func_stripname_result"
9291885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_append newdependency_libs " -L$func_replace_sysroot_result"
9292885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
9293885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      -R*)
9294885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_stripname -R '' "$deplib"
9295885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_replace_sysroot "$func_stripname_result"
9296885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_append newdependency_libs " -R$func_replace_sysroot_result"
9297885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
9298885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *) func_append newdependency_libs " $deplib" ;;
9299885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
9300885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done
9301885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    dependency_libs="$newdependency_libs"
9302885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    newdlfiles=
9303885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9304885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    for lib in $dlfiles; do
9305885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case $lib in
9306885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *.la)
9307885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	        func_basename "$lib"
9308885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		name="$func_basename_result"
9309885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
9310885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		test -z "$libdir" && \
9311885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_fatal_error "\`$lib' is not a valid libtool archive"
9312885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
9313885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
9314885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *) func_append newdlfiles " $lib" ;;
9315885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
9316885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done
9317885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    dlfiles="$newdlfiles"
9318885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    newdlprefiles=
9319885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    for lib in $dlprefiles; do
9320885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case $lib in
9321885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      *.la)
9322885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		# Only pass preopened files to the pseudo-archive (for
9323885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		# eventual linking with the app. that links it) if we
9324885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		# didn't already link the preopened objects directly into
9325885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		# the library:
9326885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_basename "$lib"
9327885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		name="$func_basename_result"
9328885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
9329885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		test -z "$libdir" && \
9330885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		  func_fatal_error "\`$lib' is not a valid libtool archive"
9331885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
9332885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		;;
9333885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
9334885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done
9335885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    dlprefiles="$newdlprefiles"
9336885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  else
9337885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    newdlfiles=
9338885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    for lib in $dlfiles; do
9339885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case $lib in
9340885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
9341885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		*) abs=`pwd`"/$lib" ;;
9342885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
9343885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append newdlfiles " $abs"
9344885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done
9345885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    dlfiles="$newdlfiles"
9346885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    newdlprefiles=
9347885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    for lib in $dlprefiles; do
9348885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      case $lib in
9349885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
9350885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		*) abs=`pwd`"/$lib" ;;
9351885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      esac
9352885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append newdlprefiles " $abs"
9353885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    done
9354885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    dlprefiles="$newdlprefiles"
9355885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
9356885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  $RM $output
9357885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # place dlname in correct position for cygwin
9358885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # In fact, it would be nice if we could use this code for all target
9359885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # systems that can't hard-code library paths into their executables
9360885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # and that have no shared library path variable independent of PATH,
9361885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # but it turns out we can't easily determine that from inspecting
9362885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # libtool variables, so we have to hard-code the OSs to which it
9363885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # applies here; at the moment, that means platforms that use the PE
9364885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # object format with DLL files.  See the long comment at the top of
9365885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # tests/bindir.at for full details.
9366885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  tdlname=$dlname
9367885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $host,$output,$installed,$module,$dlname in
9368885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
9369885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # If a -bindir argument was supplied, place the dll there.
9370885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      if test "x$bindir" != x ;
9371885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      then
9372885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		func_relative_path "$install_libdir" "$bindir"
9373885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		tdlname=$func_relative_path_result$dlname
9374885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      else
9375885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		# Otherwise fall back on heuristic.
9376885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org		tdlname=../bin/$dlname
9377885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      fi
9378885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      ;;
9379885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
9380885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  $ECHO > $output "\
9381885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# $outputname - a libtool library file
9382885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
9383885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#
9384885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Please DO NOT delete this file!
9385885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# It is necessary for linking the library.
9386885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9387885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# The name that we can dlopen(3).
9388885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgdlname='$tdlname'
9389885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9390885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Names of this library.
9391885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglibrary_names='$library_names'
9392885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9393885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# The name of the static archive.
9394885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgold_library='$old_library'
9395885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9396885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Linker flags that can not go in dependency_libs.
9397885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orginherited_linker_flags='$new_inherited_linker_flags'
9398885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9399885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Libraries that this one depends upon.
9400885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgdependency_libs='$dependency_libs'
9401885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9402885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Names of additional weak libraries provided by this library
9403885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgweak_library_names='$weak_libs'
9404885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9405885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Version information for $libname.
9406885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcurrent=$current
9407885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgage=$age
9408885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgrevision=$revision
9409885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9410885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Is this an already installed library?
9411885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orginstalled=$installed
9412885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9413885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Should we warn about portability when linking against -modules?
9414885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgshouldnotlink=$module
9415885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9416885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Files to dlopen/dlpreopen
9417885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgdlopen='$dlfiles'
9418885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgdlpreopen='$dlprefiles'
9419885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9420885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Directory that this library needs to be installed in:
9421885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglibdir='$install_libdir'"
9422885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test "$installed" = no && test "$need_relink" = yes; then
9423885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    $ECHO >> $output "\
9424885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgrelink_command=\"$relink_command\""
9425885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
9426885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	done
9427885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      }
9428885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9429885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Do a symbolic link so that the libtool archive can be found in
9430885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # LD_LIBRARY_PATH before the program is installed.
9431885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
9432885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      ;;
9433885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    esac
9434885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    exit $EXIT_SUCCESS
9435885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
9436885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9437885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
9438885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_mode_link ${1+"$@"}
9439885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9440885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9441885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_mode_uninstall arg...
9442885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_mode_uninstall ()
9443885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{
9444885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    $opt_debug
9445885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    RM="$nonopt"
9446885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    files=
9447885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    rmforce=
9448885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    exit_status=0
9449885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9450885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # This variable tells wrapper scripts just to set variables rather
9451885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # than running their programs.
9452885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    libtool_install_magic="$magic"
9453885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9454885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    for arg
9455885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    do
9456885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $arg in
9457885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -f) func_append RM " $arg"; rmforce=yes ;;
9458885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      -*) func_append RM " $arg" ;;
9459885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *) func_append files " $arg" ;;
9460885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
9461885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    done
9462885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9463885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    test -z "$RM" && \
9464885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_fatal_help "you must specify an RM program"
9465885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9466885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    rmdirs=
9467885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9468885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    for file in $files; do
9469885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_dirname "$file" "" "."
9470885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      dir="$func_dirname_result"
9471885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "X$dir" = X.; then
9472885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	odir="$objdir"
9473885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      else
9474885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	odir="$dir/$objdir"
9475885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
9476885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_basename "$file"
9477885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      name="$func_basename_result"
9478885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      test "$opt_mode" = uninstall && odir="$dir"
9479885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9480885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Remember odir for removal later, being careful to avoid duplicates
9481885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test "$opt_mode" = clean; then
9482885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	case " $rmdirs " in
9483885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *" $odir "*) ;;
9484885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *) func_append rmdirs " $odir" ;;
9485885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	esac
9486885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
9487885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9488885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      # Don't error if the file doesn't exist and rm -f was used.
9489885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if { test -L "$file"; } >/dev/null 2>&1 ||
9490885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	 { test -h "$file"; } >/dev/null 2>&1 ||
9491885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	 test -f "$file"; then
9492885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	:
9493885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      elif test -d "$file"; then
9494885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	exit_status=1
9495885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
9496885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      elif test "$rmforce" = yes; then
9497885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	continue
9498885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
9499885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9500885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      rmfiles="$file"
9501885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9502885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      case $name in
9503885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *.la)
9504885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Possibly a libtool archive, so verify it.
9505885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if func_lalib_p "$file"; then
9506885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_source $dir/$name
9507885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9508885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Delete the libtool libraries and symlinks.
9509885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  for n in $library_names; do
9510885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append rmfiles " $odir/$n"
9511885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  done
9512885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
9513885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9514885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case "$opt_mode" in
9515885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  clean)
9516885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    case " $library_names " in
9517885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *" $dlname "*) ;;
9518885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
9519885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    esac
9520885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
9521885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
9522885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  uninstall)
9523885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -n "$library_names"; then
9524885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # Do each command in the postuninstall commands.
9525885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
9526885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
9527885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9528885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test -n "$old_library"; then
9529885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      # Do each command in the old_postuninstall commands.
9530885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
9531885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
9532885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # FIXME: should reinstall the best remaining shared library.
9533885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
9534885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
9535885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
9536885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
9537885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9538885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *.lo)
9539885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	# Possibly a libtool object, so verify it.
9540885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if func_lalib_p "$file"; then
9541885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9542885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Read the .lo file
9543885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  func_source $dir/$name
9544885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9545885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Add PIC object to the list of files to remove.
9546885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$pic_object" &&
9547885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	     test "$pic_object" != none; then
9548885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append rmfiles " $dir/$pic_object"
9549885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
9550885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9551885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Add non-PIC object to the list of files to remove.
9552885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if test -n "$non_pic_object" &&
9553885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	     test "$non_pic_object" != none; then
9554885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append rmfiles " $dir/$non_pic_object"
9555885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
9556885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
9557885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
9558885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9559885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      *)
9560885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	if test "$opt_mode" = clean ; then
9561885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  noexename=$name
9562885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  case $file in
9563885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  *.exe)
9564885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_stripname '' '.exe' "$file"
9565885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    file=$func_stripname_result
9566885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_stripname '' '.exe' "$name"
9567885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    noexename=$func_stripname_result
9568885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # $file with .exe has already been added to rmfiles,
9569885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # add $file without .exe
9570885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append rmfiles " $file"
9571885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    ;;
9572885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  esac
9573885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  # Do a test to see if this is a libtool program.
9574885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  if func_ltwrapper_p "$file"; then
9575885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if func_ltwrapper_executable_p "$file"; then
9576885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_ltwrapper_scriptname "$file"
9577885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      relink_command=
9578885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_source $func_ltwrapper_scriptname_result
9579885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append rmfiles " $func_ltwrapper_scriptname_result"
9580885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    else
9581885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      relink_command=
9582885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_source $dir/$noexename
9583885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
9584885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9585885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # note $name still contains .exe if it was in $file originally
9586885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    # as does the version of $file that was added into $rmfiles
9587885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
9588885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "$fast_install" = yes && test -n "$relink_command"; then
9589885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append rmfiles " $odir/lt-$name"
9590885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
9591885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    if test "X$noexename" != "X$name" ; then
9592885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	      func_append rmfiles " $odir/lt-${noexename}.c"
9593885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	    fi
9594885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	  fi
9595885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	fi
9596885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	;;
9597885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      esac
9598885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      func_show_eval "$RM $rmfiles" 'exit_status=1'
9599885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    done
9600885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9601885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    # Try to remove the ${objdir}s in the directories where we deleted files
9602885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    for dir in $rmdirs; do
9603885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      if test -d "$dir"; then
9604885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org	func_show_eval "rmdir $dir >/dev/null 2>&1"
9605885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org      fi
9606885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    done
9607885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9608885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    exit $exit_status
9609885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
9610885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9611885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
9612885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org    func_mode_uninstall ${1+"$@"}
9613885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9614885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtest -z "$opt_mode" && {
9615885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  help="$generic_help"
9616885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_fatal_help "you must specify a MODE"
9617885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}
9618885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9619885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtest -z "$exec_cmd" && \
9620885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  func_fatal_help "invalid operation mode \`$opt_mode'"
9621885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9622885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgif test -n "$exec_cmd"; then
9623885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  eval exec "$exec_cmd"
9624885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org  exit $EXIT_FAILURE
9625885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfi
9626885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9627885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgexit $exit_status
9628885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9629885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9630885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# The TAGs below are defined such that we never get into a situation
9631885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# in which we disable both kinds of libraries.  Given conflicting
9632885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# choices, we go for a static library, that is the most portable,
9633885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# since we can't tell whether shared libraries were disabled because
9634885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# the user asked for that or because the platform doesn't support
9635885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# them.  This is particularly important on AIX, because we don't
9636885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# support having both static and shared libraries enabled at the same
9637885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# time on that platform, so we default to a shared-only configuration.
9638885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# If a disable-shared tag is given, we'll fallback to a static-only
9639885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# configuration.  But we'll never go from static-only to shared-only.
9640885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9641885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
9642885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgbuild_libtool_libs=no
9643885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgbuild_old_libs=yes
9644885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ### END LIBTOOL TAG CONFIG: disable-shared
9645885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9646885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ### BEGIN LIBTOOL TAG CONFIG: disable-static
9647885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
9648885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ### END LIBTOOL TAG CONFIG: disable-static
9649885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9650885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Local Variables:
9651885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# mode:shell-script
9652885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# sh-indentation:2
9653885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# End:
9654885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# vi:sw=2
9655885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org
9656