14215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
2ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# libtool (GNU libtool) 2.4.2
34215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
44215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
5ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
6ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
74215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This is free software; see the source for copying conditions.  There is NO
84215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
94215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# GNU Libtool is free software; you can redistribute it and/or modify
11893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# it under the terms of the GNU General Public License as published by
12893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# the Free Software Foundation; either version 2 of the License, or
13893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# (at your option) any later version.
14893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#
154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# As a special exception to the GNU General Public License,
164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# if you distribute this file as part of a program or library that
174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# is built using GNU Libtool, you may include this file under the
184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# same distribution terms that you use for the rest of that program.
194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#
204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# GNU Libtool is distributed in the hope that it will be useful, but
21893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# WITHOUT ANY WARRANTY; without even the implied warranty of
22893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
23893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# General Public License for more details.
24893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#
25893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# You should have received a copy of the GNU General Public License
264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# along with GNU Libtool; see the file COPYING.  If not, a copy
274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# can be downloaded from http://www.gnu.org/licenses/gpl.html,
284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# or obtained by writing to the Free Software Foundation, Inc.,
294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Usage: $progname [OPTION]... [MODE-ARG]...
324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#
334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Provide generalized library-building support services.
34893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#
35ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#       --config             show all configuration variables
36ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#       --debug              enable verbose shell tracing
37ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#   -n, --dry-run            display commands without modifying any files
38ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#       --features           display basic configuration information and exit
39ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#       --mode=MODE          use operation mode MODE
40ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#       --preserve-dup-deps  don't remove duplicate dependency libraries
41ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#       --quiet, --silent    don't print informational messages
42ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#       --no-quiet, --no-silent
43ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#                            print informational messages (default)
44ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#       --no-warn            don't display warning messages
45ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#       --tag=TAG            use configuration variables from tag TAG
46ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#   -v, --verbose            print more informational messages than default
47ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#       --no-verbose         don't print the extra informational messages
48ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#       --version            print version information
49ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#   -h, --help, --help-all   print short, long, or detailed help message
504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#
514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# MODE must be one of the following:
524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#
53ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#         clean              remove files from the build directory
54ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#         compile            compile a source file into a libtool object
55ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#         execute            automatically set library path, then run a program
56ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#         finish             complete the installation of libtool libraries
57ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#         install            install libraries or executables
58ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#         link               create a library or an executable
59ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#         uninstall          remove libraries from an installed directory
604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#
61ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# MODE-ARGS vary depending on the MODE.  When passed as first option,
62ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#
654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# When reporting a bug, please describe a test case to reproduce it and
664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# include the following information:
674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#
68ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#         host-triplet:	$host
69ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#         shell:		$SHELL
70ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#         compiler:		$LTCC
71ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#         compiler flags:		$LTCFLAGS
72ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#         linker:		$LD (gnu? $with_gnu_ld)
73ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#         $progname:	(GNU libtool) 2.4.2
74ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#         automake:	$automake_version
75ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#         autoconf:	$autoconf_version
764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#
774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Report bugs to <bug-libtool@gnu.org>.
78ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
79ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# General help using GNU software: <http://www.gnu.org/gethelp/>.
804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
81ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikPROGRAM=libtool
824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectPACKAGE=libtool
83ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikVERSION=2.4.2
845f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottTIMESTAMP=""
85ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikpackage_revision=1.3337
864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Be Bourne compatible
884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  emulate sh
904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  NULLCMD=:
914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  # is contrary to our usage.  Disable this feature.
934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  alias -g '${1+"$@"}'='"$@"'
944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  setopt NO_GLOB_SUBST
954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectelse
964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfi
984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectBIN_SH=xpg4; export BIN_SH # for Tru64
994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectDUALCASE=1; export DUALCASE # for MKS sh
1004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
101ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# A function that is used when there is no print builtin or printf.
102ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_fallback_echo ()
103ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
104ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  eval 'cat <<_LTECHO_EOF
105ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$1
106ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik_LTECHO_EOF'
107ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
108ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# NLS nuisances: We save the old values to restore during execute mode.
1104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlt_user_locale=
1114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlt_safe_locale=
1124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
1134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdo
1144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  eval "if test \"\${$lt_var+set}\" = set; then
1154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project          save_$lt_var=\$$lt_var
1164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project          $lt_var=C
1174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  export $lt_var
1184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
1194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
1204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi"
1214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdone
122ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikLC_ALL=C
123ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikLANGUAGE=C
124ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikexport LANGUAGE LC_ALL
1254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
1264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project$lt_unset CDPATH
1274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
1284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
129ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
130ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# is ksh but when the shell is invoked as "sh" and the current value of
131ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# the _XPG environment variable is not equal to 1 (one), the special
132ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# positional parameter $0, within a function call, is the name of the
133ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# function.
134ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikprogpath="$0"
1354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
1364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
1374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
1384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${CP="cp -f"}
139ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiktest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
1404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${MAKE="make"}
1414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${MKDIR="mkdir"}
1424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${MV="mv -f"}
1434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${RM="rm -f"}
1444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
1454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${Xsed="$SED -e 1s/^X//"}
146893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
1474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Global variables:
1484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEXIT_SUCCESS=0
1494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEXIT_FAILURE=1
1504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
1514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
1524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
1534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectexit_status=$EXIT_SUCCESS
1544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
1554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Make sure IFS has a sensible default
1564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlt_nl='
1574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project'
1584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectIFS=" 	$lt_nl"
1594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
1604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdirname="s,/[^/]*$,,"
1614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbasename="s,^.*/,,"
1624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
163ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_dirname file append nondir_replacement
164ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
165ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# otherwise set result to NONDIR_REPLACEMENT.
166ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_dirname ()
167ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
168ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
169ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    if test "X$func_dirname_result" = "X${1}"; then
170ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_dirname_result="${3}"
171ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    else
172ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_dirname_result="$func_dirname_result${2}"
173ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    fi
174ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_dirname may be replaced by extended shell implementation
175ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
176ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
177ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_basename file
178ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_basename ()
179ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
180ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
181ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_basename may be replaced by extended shell implementation
182ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
183ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_dirname_and_basename file append nondir_replacement
1854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# perform func_basename and func_dirname in a single function
1864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# call:
1874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#   dirname:  Compute the dirname of FILE.  If nonempty,
1884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#             add APPEND to the result, otherwise set result
1894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#             to NONDIR_REPLACEMENT.
1904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#             value returned in "$func_dirname_result"
1914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#   basename: Compute filename of FILE.
1924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#             value retuned in "$func_basename_result"
1934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Implementation must be kept synchronized with func_dirname
1944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# and func_basename. For efficiency, we do not delegate to
1954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# those functions but instead duplicate the functionality here.
1964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_dirname_and_basename ()
1974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
198ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # Extract subdirectory from the argument.
199ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
200ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    if test "X$func_dirname_result" = "X${1}"; then
201ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_dirname_result="${3}"
202ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    else
203ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_dirname_result="$func_dirname_result${2}"
204ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    fi
205ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
206ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_dirname_and_basename may be replaced by extended shell implementation
207ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
208ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
209ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_stripname prefix suffix name
210ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# strip PREFIX and SUFFIX off of NAME.
211ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# PREFIX and SUFFIX must not contain globbing or regex special
212ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# characters, hashes, percent signs, but SUFFIX may contain a leading
213ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# dot (in which case that matches only a dot).
214ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_strip_suffix prefix name
215ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_stripname ()
216ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
217ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    case ${2} in
218ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
219ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
220ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    esac
221ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_stripname may be replaced by extended shell implementation
222ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
223ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
224ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# These SED scripts presuppose an absolute path with a trailing slash.
225ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikpathcar='s,^/\([^/]*\).*$,\1,'
226ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikpathcdr='s,^/[^/]*,,'
227ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikremovedotparts=':dotsl
228ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		s@/\./@/@g
229ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		t dotsl
230ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		s,/\.$,/,'
231ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikcollapseslashes='s@/\{1,\}@/@g'
232ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfinalslash='s,/*$,/,'
233ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
234ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_normal_abspath PATH
235ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Remove doubled-up and trailing slashes, "." path components,
236ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# and cancel out any ".." path components in PATH after making
237ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# it an absolute path.
238ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#             value returned in "$func_normal_abspath_result"
239ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_normal_abspath ()
240ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
241ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # Start from root dir and reassemble the path.
242ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_normal_abspath_result=
243ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_normal_abspath_tpath=$1
244ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_normal_abspath_altnamespace=
245ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  case $func_normal_abspath_tpath in
246ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    "")
247ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # Empty path, that just means $cwd.
248ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_stripname '' '/' "`pwd`"
249ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_normal_abspath_result=$func_stripname_result
250ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      return
251ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    ;;
252ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # The next three entries are used to spot a run of precisely
253ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # two leading slashes without using negated character classes;
254ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # we take advantage of case's first-match behaviour.
255ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    ///*)
256ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # Unusual form of absolute path, do nothing.
257ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    ;;
258ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    //*)
259ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # Not necessarily an ordinary path; POSIX reserves leading '//'
260ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # and for example Cygwin uses it to access remote file shares
261ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # over CIFS/SMB, so we conserve a leading double slash if found.
262ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_normal_abspath_altnamespace=/
263ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    ;;
264ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    /*)
265ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # Absolute path, do nothing.
266ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    ;;
267ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    *)
268ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # Relative path, prepend $cwd.
269ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
270ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    ;;
271ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  esac
272ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # Cancel out all the simple stuff to save iterations.  We also want
273ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # the path to end with a slash for ease of parsing, so make sure
274ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # there is one (and only one) here.
275ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
276ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
277ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  while :; do
278ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # Processed it all yet?
279ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    if test "$func_normal_abspath_tpath" = / ; then
280ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # If we ascended to the root using ".." the result may be empty now.
281ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if test -z "$func_normal_abspath_result" ; then
282ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        func_normal_abspath_result=/
283ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      fi
284ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      break
285ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    fi
286ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
287ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        -e "$pathcar"`
288ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
289ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        -e "$pathcdr"`
290ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # Figure out what to do with it
291ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    case $func_normal_abspath_tcomponent in
292ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      "")
293ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        # Trailing empty path component, ignore it.
294ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      ;;
295ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      ..)
296ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        # Parent dir; strip last assembled component from result.
297ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        func_dirname "$func_normal_abspath_result"
298ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        func_normal_abspath_result=$func_dirname_result
299ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      ;;
300ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      *)
301ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        # Actual path component, append it.
302ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
303ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      ;;
304ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    esac
305ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  done
306ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # Restore leading double-slash if one was found on entry.
307ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
3084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
3094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
310ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_relative_path SRCDIR DSTDIR
311ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# generates a relative path from SRCDIR to DSTDIR, with a trailing
312ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# slash if non-empty, suitable for immediately appending a filename
313ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# without needing to append a separator.
314ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#             value returned in "$func_relative_path_result"
315ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_relative_path ()
316ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
317ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_relative_path_result=
318ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_normal_abspath "$1"
319ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_relative_path_tlibdir=$func_normal_abspath_result
320ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_normal_abspath "$2"
321ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_relative_path_tbindir=$func_normal_abspath_result
322ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
323ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # Ascend the tree starting from libdir
324ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  while :; do
325ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # check if we have found a prefix of bindir
326ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    case $func_relative_path_tbindir in
327ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      $func_relative_path_tlibdir)
328ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        # found an exact match
329ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        func_relative_path_tcancelled=
330ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        break
331ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        ;;
332ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      $func_relative_path_tlibdir*)
333ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        # found a matching prefix
334ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
335ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        func_relative_path_tcancelled=$func_stripname_result
336ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        if test -z "$func_relative_path_result"; then
337ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik          func_relative_path_result=.
338ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        fi
339ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        break
340ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        ;;
341ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      *)
342ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        func_dirname $func_relative_path_tlibdir
343ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        func_relative_path_tlibdir=${func_dirname_result}
344ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        if test "x$func_relative_path_tlibdir" = x ; then
345ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik          # Have to descend all the way to the root!
346ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik          func_relative_path_result=../$func_relative_path_result
347ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik          func_relative_path_tcancelled=$func_relative_path_tbindir
348ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik          break
349ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        fi
350ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        func_relative_path_result=../$func_relative_path_result
351ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        ;;
352ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    esac
353ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  done
354893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
355ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # Now calculate path; take care to avoid doubling-up slashes.
356ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_stripname '' '/' "$func_relative_path_result"
357ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_relative_path_result=$func_stripname_result
358ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_stripname '/' '/' "$func_relative_path_tcancelled"
359ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test "x$func_stripname_result" != x ; then
360ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
361ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
362ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
363ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # Normalisation. If bindir is libdir, return empty string,
364ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # else relative path ending with a slash; either way, target
365ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # file name can be directly appended.
366ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test ! -z "$func_relative_path_result"; then
367ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_stripname './' '' "$func_relative_path_result/"
368ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_relative_path_result=$func_stripname_result
369ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
370ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
371893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
372893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# The name of this program:
3734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_dirname_and_basename "$progpath"
3744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectprogname=$func_basename_result
375893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
3764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Make sure we have an absolute path for reexecution:
3774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectcase $progpath in
3784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  [\\/]*|[A-Za-z]:\\*) ;;
3794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  *[\\/]*)
3804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project     progdir=$func_dirname_result
3814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project     progdir=`cd "$progdir" && pwd`
3824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project     progpath="$progdir/$progname"
3834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project     ;;
3844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  *)
3854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project     save_IFS="$IFS"
386ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik     IFS=${PATH_SEPARATOR-:}
3874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project     for progdir in $PATH; do
3884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project       IFS="$save_IFS"
3894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project       test -x "$progdir/$progname" && break
3904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project     done
3914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project     IFS="$save_IFS"
3924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project     test -n "$progdir" || progdir=`pwd`
3934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project     progpath="$progdir/$progname"
3944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project     ;;
3954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectesac
396893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
3974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Sed substitution that helps us do robust quoting.  It backslashifies
3984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# metacharacters that are still active within double-quoted strings.
3994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectXsed="${SED}"' -e 1s/^X//'
4004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectsed_quote_subst='s/\([`"$\\]\)/\\\1/g'
4014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
4024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Same as above, but do not quote variable references.
4034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
4044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
405ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Sed substitution that turns a string into a regex matching for the
406ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# string literally.
407ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiksed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
408ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
409ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Sed substitution that converts a w32 file name or path
410ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# which contains forward slashes, into one that contains
411ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# (escaped) backslashes.  A very naive implementation.
412ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiklt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
413ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
4144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Re-`\' parameter expansions in output of double_quote_subst that were
4154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
4164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# in input to double_quote_subst, that '$' was protected from expansion.
4174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Since each input `\' is now two `\'s, look for any number of runs of
4184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
4194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbs='\\'
4204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbs2='\\\\'
4214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbs4='\\\\\\\\'
4224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdollar='\$'
4234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectsed_double_backslash="\
4244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  s/$bs4/&\\
4254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/g
4264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  s/^$bs2$dollar/$bs&/
4274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
4284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  s/\n//g"
4294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
4304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Standard options:
4314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectopt_dry_run=false
4324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectopt_help=false
4334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectopt_quiet=false
4344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectopt_verbose=false
4354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectopt_warning=:
4364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
4374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_echo arg...
4384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed message, along with the current mode
4394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# name if it has been set yet.
4404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_echo ()
4414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
442ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
4434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
444893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
4454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_verbose arg...
4464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed message in verbose mode only.
4474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_verbose ()
4484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
4494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $opt_verbose && func_echo ${1+"$@"}
450893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
4514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # A bug in bash halts the script if the last line of a function
4524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # fails when set -e is in force, so we need another command to
4534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # work around that:
4544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    :
4554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
456893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
457ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_echo_all arg...
458ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Invoke $ECHO with all args, space-separated.
459ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_echo_all ()
460ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
461ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    $ECHO "$*"
462ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
463ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
4644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_error arg...
4654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed message to standard error.
4664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_error ()
4674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
468ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
4694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
470893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
4714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_warning arg...
4724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed warning message to standard error.
4734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_warning ()
4744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
475ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
476893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
4774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # bash bug again:
4784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    :
4794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
480893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
4814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_fatal_error arg...
4824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed message to standard error, and exit.
4834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_fatal_error ()
4844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
4854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_error ${1+"$@"}
4864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    exit $EXIT_FAILURE
4874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
488893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
4894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_fatal_help arg...
4904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed message to standard error, followed by
4914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# a help hint, and exit.
4924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_fatal_help ()
4934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
4944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_error ${1+"$@"}
4954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_fatal_error "$help"
4964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
4974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecthelp="Try \`$progname --help' for more information."  ## default
498893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
499893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
5004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_grep expression filename
5014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Check whether EXPRESSION matches any line of FILENAME, without output.
5024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_grep ()
5034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
5044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $GREP "$1" "$2" >/dev/null 2>&1
5054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
5064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
5074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
5084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_mkdir_p directory-path
5094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Make sure the entire path to DIRECTORY-PATH is available.
5104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mkdir_p ()
5114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
5124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    my_directory_path="$1"
5134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    my_dir_list=
5144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
5154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
5164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
5174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Protect directory names starting with `-'
5184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case $my_directory_path in
5194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        -*) my_directory_path="./$my_directory_path" ;;
5204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      esac
5214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
5224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # While some portion of DIR does not yet exist...
5234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      while test ! -d "$my_directory_path"; do
5244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        # ...make a list in topmost first order.  Use a colon delimited
5254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# list incase some portion of path contains whitespace.
5264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        my_dir_list="$my_directory_path:$my_dir_list"
5274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
5284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        # If the last portion added has no slash in it, the list is done
5294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        case $my_directory_path in */*) ;; *) break ;; esac
5304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
5314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        # ...otherwise throw away the child directory and loop
532ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
5334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      done
534ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
5354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
5364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      save_mkdir_p_IFS="$IFS"; IFS=':'
5374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      for my_dir in $my_dir_list; do
5384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	IFS="$save_mkdir_p_IFS"
5394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        # mkdir can fail with a `File exist' error if two processes
5404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        # try to create one of the directories concurrently.  Don't
5414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        # stop in that case!
5424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        $MKDIR "$my_dir" 2>/dev/null || :
5434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      done
5444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      IFS="$save_mkdir_p_IFS"
5454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
5464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Bail out if we (or some other process) failed to create a directory.
5474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test -d "$my_directory_path" || \
5484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        func_fatal_error "Failed to create \`$1'"
5494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
5504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
551893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
552893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
553893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# func_mktempdir [string]
554893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# Make a temporary directory that won't clash with other running
555893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# libtool processes, and avoids race conditions if possible.  If
556893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# given, STRING is the basename for that directory.
557893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectfunc_mktempdir ()
558893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{
559893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    my_template="${TMPDIR-/tmp}/${1-$progname}"
560893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
5614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test "$opt_dry_run" = ":"; then
562893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      # Return a directory name, but don't create it in dry-run mode
563893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      my_tmpdir="${my_template}-$$"
564893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    else
565893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
566893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      # If mktemp works, use that first and foremost
567893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
568893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
569893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      if test ! -d "$my_tmpdir"; then
5704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        # Failing that, at least try and use $RANDOM to avoid a race
5714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        my_tmpdir="${my_template}-${RANDOM-0}$$"
572893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
5734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        save_mktempdir_umask=`umask`
5744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        umask 0077
5754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        $MKDIR "$my_tmpdir"
5764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        umask $save_mktempdir_umask
577893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
578893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
579893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      # If we're not in dry-run mode, bomb out on failure
5804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test -d "$my_tmpdir" || \
5814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
582893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    fi
583893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
584ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    $ECHO "$my_tmpdir"
585893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project}
586893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
587893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
5884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_quote_for_eval arg
5894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Aesthetically quote ARG to be evaled later.
5904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
5914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# is double-quoted, suitable for a subsequent eval, whereas
5924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
5934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# which are still active within double quotes backslashified.
5944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_quote_for_eval ()
595893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{
5964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    case $1 in
5974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *[\\\`\"\$]*)
598ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
5994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *)
6004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        func_quote_for_eval_unquoted_result="$1" ;;
6014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    esac
6024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
6034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    case $func_quote_for_eval_unquoted_result in
6044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Double-quote args containing shell metacharacters to delay
6054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # word splitting, command substitution and and variable
6064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # expansion for a subsequent eval.
6074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Many Bourne shells cannot handle close brackets correctly
6084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # in scan sets, so we specify it separately.
6094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
6104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
6114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        ;;
6124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *)
6134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
614893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    esac
615893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project}
616893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
617893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
6184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_quote_for_expand arg
6194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Aesthetically quote ARG to be evaled later; same as above,
6204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# but do not quote variable references.
6214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_quote_for_expand ()
622893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{
6234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    case $1 in
6244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *[\\\`\"]*)
625ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	my_arg=`$ECHO "$1" | $SED \
6264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
627893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      *)
6284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        my_arg="$1" ;;
6294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    esac
6304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
6314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    case $my_arg in
6324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Double-quote args containing shell metacharacters to delay
6334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # word splitting and command substitution for a subsequent eval.
6344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Many Bourne shells cannot handle close brackets correctly
6354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # in scan sets, so we specify it separately.
6364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
6374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        my_arg="\"$my_arg\""
6384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        ;;
6394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    esac
6404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
6414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_quote_for_expand_result="$my_arg"
642893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project}
643893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
644893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
6454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_show_eval cmd [fail_exp]
6464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
6474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
6484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# is given, then evaluate it.
6494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_show_eval ()
650893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{
6514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    my_cmd="$1"
6524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    my_fail_exp="${2-:}"
653893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
6544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    ${opt_silent-false} || {
6554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_quote_for_expand "$my_cmd"
6564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      eval "func_echo $func_quote_for_expand_result"
6574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    }
6584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
6594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if ${opt_dry_run-false}; then :; else
6604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      eval "$my_cmd"
6614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      my_status=$?
6624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test "$my_status" -eq 0; then :; else
6634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	eval "(exit $my_status); $my_fail_exp"
6644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
665893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    fi
666893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project}
667893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
6684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
6694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_show_eval_locale cmd [fail_exp]
6704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
6714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
6724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# is given, then evaluate it.  Use the saved locale for evaluation.
6734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_show_eval_locale ()
674893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{
6754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    my_cmd="$1"
6764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    my_fail_exp="${2-:}"
677893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
6784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    ${opt_silent-false} || {
6794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_quote_for_expand "$my_cmd"
6804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      eval "func_echo $func_quote_for_expand_result"
6814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    }
6824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
6834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if ${opt_dry_run-false}; then :; else
6844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      eval "$lt_user_locale
6854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    $my_cmd"
6864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      my_status=$?
6874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      eval "$lt_safe_locale"
6884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test "$my_status" -eq 0; then :; else
6894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	eval "(exit $my_status); $my_fail_exp"
690893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
6914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
692893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project}
693893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
694ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_tr_sh
695ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Turn $1 into a string suitable for a shell variable name.
696ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Result is stored in $func_tr_sh_result.  All characters
697ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
698ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# if $1 begins with a digit, a '_' is prepended as well.
699ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_tr_sh ()
700ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
701ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  case $1 in
702ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  [0-9]* | *[!a-zA-Z0-9_]*)
703ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
704ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    ;;
705ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  * )
706ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_tr_sh_result=$1
707ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    ;;
708ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  esac
709ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
7104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
7114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
7124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_version
7134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo version message to standard output and exit.
7144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_version ()
7154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
716ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    $opt_debug
717ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
718ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    $SED -n '/(C)/!b go
719ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	:more
720ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	/\./!{
721ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  N
722ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  s/\n# / /
723ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  b more
724ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	}
725ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	:go
726ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	/^# '$PROGRAM' (GNU /,/# warranty; / {
7274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        s/^# //
7284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	s/^# *$//
7294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
7304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        p
7314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project     }' < "$progpath"
7324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project     exit $?
7334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
7344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
7354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_usage
7364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo short help message to standard output and exit.
7374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_usage ()
7384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
739ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    $opt_debug
740ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
741ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    $SED -n '/^# Usage:/,/^#  *.*--help/ {
7424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        s/^# //
7434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	s/^# *$//
7444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	s/\$progname/'$progname'/
7454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	p
7464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    }' < "$progpath"
747ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    echo
7484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $ECHO "run \`$progname --help | more' for full usage"
7494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    exit $?
7504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
7514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
752ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_help [NOEXIT]
753ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Echo long help message to standard output and exit,
754ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# unless 'noexit' is passed as argument.
7554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_help ()
7564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
757ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    $opt_debug
758ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
7594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $SED -n '/^# Usage:/,/# Report bugs to/ {
760ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	:print
7614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        s/^# //
7624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	s/^# *$//
7634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	s*\$progname*'$progname'*
7644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	s*\$host*'"$host"'*
7654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	s*\$SHELL*'"$SHELL"'*
7664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	s*\$LTCC*'"$LTCC"'*
7674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	s*\$LTCFLAGS*'"$LTCFLAGS"'*
7684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	s*\$LD*'"$LD"'*
7694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	s/\$with_gnu_ld/'"$with_gnu_ld"'/
770ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
771ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
7724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	p
773ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	d
774ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik     }
775ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik     /^# .* home page:/b print
776ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik     /^# General help using/b print
777ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik     ' < "$progpath"
778ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    ret=$?
779ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    if test -z "$1"; then
780ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      exit $ret
781ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    fi
7824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
7834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
7844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_missing_arg argname
7854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed message to standard error and set global
7864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# exit_cmd.
7874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_missing_arg ()
7884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
789ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    $opt_debug
790ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
791ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_error "missing argument for $1."
7924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    exit_cmd=exit
7934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
7944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
7954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
796ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_split_short_opt shortopt
797ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Set func_split_short_opt_name and func_split_short_opt_arg shell
798ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# variables after splitting SHORTOPT after the 2nd character.
799ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_split_short_opt ()
800ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
801ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
802ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
8034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
804ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
805ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
806ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_split_short_opt may be replaced by extended shell implementation
807ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
808ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
809ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_split_long_opt longopt
810ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Set func_split_long_opt_name and func_split_long_opt_arg shell
811ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# variables after splitting LONGOPT at the `=' sign.
812ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_split_long_opt ()
813ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
814ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
815ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    my_sed_long_arg='1s/^--[^=]*=//'
816ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
817ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
818ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
819ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_split_long_opt may be replaced by extended shell implementation
820ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
821ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikexit_cmd=:
8224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
8234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
8244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
825893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
826893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
8274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectmagic="%%%MAGIC variable%%%"
8284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectmagic_exe="%%%MAGIC EXE variable%%%"
829893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
8304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Global variables.
8314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectnonopt=
8324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectpreserve_args=
8334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlo2o="s/\\.lo\$/.${objext}/"
8344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecto2lo="s/\\.${objext}\$/.lo/"
8354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectextracted_archives=
8364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectextracted_serial=0
837893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
8384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# If this variable is set in any of the actions, the command in it
8394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# will be execed at the end.  This prevents here-documents from being
8404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# left over by shells.
8414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectexec_cmd=
842893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
843ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_append var value
844ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Append VALUE to the end of shell variable VAR.
845ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_append ()
846ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
847ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    eval "${1}=\$${1}\${2}"
848ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_append may be replaced by extended shell implementation
849ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
850ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_append_quoted var value
851ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Quote VALUE and append to the end of shell variable VAR, separated
852ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# by a space.
853ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_append_quoted ()
854ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
855ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_quote_for_eval "${2}"
856ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
857ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_append_quoted may be replaced by extended shell implementation
858ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
859ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
860ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_arith arithmetic-term...
861ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_arith ()
862ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
863ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_arith_result=`expr "${@}"`
864ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_arith may be replaced by extended shell implementation
865ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
866ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
867ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_len string
868ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# STRING may not start with a hyphen.
869ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_len ()
870ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
871ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
872ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_len may be replaced by extended shell implementation
873ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
874ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
875ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_lo2o object
876ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_lo2o ()
877ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
878ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
879ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_lo2o may be replaced by extended shell implementation
880ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
881ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
882ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_xform libobj-or-source
883ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_xform ()
884ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
885ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
886ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_xform may be replaced by extended shell implementation
887ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
888ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
8894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_fatal_configuration arg...
8904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed message to standard error, followed by
8914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# a configuration failure hint, and exit.
8924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_fatal_configuration ()
8934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
8944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_error ${1+"$@"}
8954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_error "See the $PACKAGE documentation for more information."
8964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_fatal_error "Fatal configuration error."
8974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
8984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
8994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
9004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_config
9014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Display the configuration for all the tags in this script.
9024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_config ()
9034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
9044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    re_begincf='^# ### BEGIN LIBTOOL'
9054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    re_endcf='^# ### END LIBTOOL'
9064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
9074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # Default configuration.
9084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
909893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
910893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    # Now print the configurations for the tags.
911893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    for tagname in $taglist; do
9124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
913893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    done
914893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    exit $?
9164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
917893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_features
9194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Display the features supported by this script.
9204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_features ()
9214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
922ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    echo "host: $host"
923893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    if test "$build_libtool_libs" = yes; then
924ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      echo "enable shared libraries"
925893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    else
926ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      echo "disable shared libraries"
927893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    fi
928893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    if test "$build_old_libs" = yes; then
929ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      echo "enable static libraries"
930893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    else
931ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      echo "disable static libraries"
932893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    fi
9334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
934893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    exit $?
9354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
9364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
9374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_enable_tag tagname
9384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Verify that TAGNAME is valid, and either flag an error and exit, or
9394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
9404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# variable here.
9414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_enable_tag ()
9424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
9434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  # Global variable:
9444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  tagname="$1"
945893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
9474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
9484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  sed_extractcf="/$re_begincf/,/$re_endcf/p"
949893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  # Validate tagname.
9514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  case $tagname in
9524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    *[!-_A-Za-z0-9,/]*)
9534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_fatal_error "invalid tag name: $tagname"
9544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      ;;
9554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  esac
956893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  # Don't test for the "default" C tag, as we know it's
9584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  # there but not specially marked.
9594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  case $tagname in
9604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    CC) ;;
9614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    *)
9624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
9634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	taglist="$taglist $tagname"
9644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
9654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Evaluate the configuration.  Be careful to quote the path
9664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# and the sed script, to avoid splitting on whitespace, but
9674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# also don't use non-portable quotes within backquotes within
9684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# quotes we have to do it in 2 steps:
9694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
9704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	eval "$extractedcf"
9714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      else
9724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_error "ignoring unknown tag $tagname"
9734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
9744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      ;;
9754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  esac
9764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
977893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
978ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_check_version_match
979ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Ensure that we are using m4 macros, and libtool script from the same
980ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# release of libtool.
981ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_check_version_match ()
9824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
983ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test "$package_revision" != "$macro_revision"; then
984ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    if test "$VERSION" != "$macro_version"; then
985ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if test -z "$macro_version"; then
986ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        cat >&2 <<_LT_EOF
987ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
988ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: definition of this LT_INIT comes from an older release.
989ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
990ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: and run autoconf again.
991ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik_LT_EOF
992ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      else
993ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        cat >&2 <<_LT_EOF
994ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
995ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
996ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
997ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: and run autoconf again.
998ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik_LT_EOF
999ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      fi
1000ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    else
1001ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      cat >&2 <<_LT_EOF
1002ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
1003ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: but the definition of this LT_INIT comes from revision $macro_revision.
1004ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: You should recreate aclocal.m4 with macros from revision $package_revision
1005ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: of $PACKAGE $VERSION and run autoconf again.
1006ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik_LT_EOF
1007ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    fi
1008ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1009ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    exit $EXIT_MISMATCH
1010ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
1011ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1012ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1013ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1014ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Shorthand for --mode=foo, only valid as the first argument
1015ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikcase $1 in
1016ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikclean|clea|cle|cl)
1017ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  shift; set dummy --mode clean ${1+"$@"}; shift
1018ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  ;;
1019ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikcompile|compil|compi|comp|com|co|c)
1020ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  shift; set dummy --mode compile ${1+"$@"}; shift
1021ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  ;;
1022ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikexecute|execut|execu|exec|exe|ex|e)
1023ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  shift; set dummy --mode execute ${1+"$@"}; shift
1024ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  ;;
1025ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfinish|finis|fini|fin|fi|f)
1026ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  shift; set dummy --mode finish ${1+"$@"}; shift
1027ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  ;;
1028ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikinstall|instal|insta|inst|ins|in|i)
1029ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  shift; set dummy --mode install ${1+"$@"}; shift
1030ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  ;;
1031ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiklink|lin|li|l)
1032ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  shift; set dummy --mode link ${1+"$@"}; shift
1033ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  ;;
1034ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikuninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
1035ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  shift; set dummy --mode uninstall ${1+"$@"}; shift
1036ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  ;;
1037ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikesac
1038ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1039ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1040ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1041ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Option defaults:
1042ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_debug=:
1043ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_dry_run=false
1044ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_config=false
1045ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_preserve_dup_deps=false
1046ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_features=false
1047ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_finish=false
1048ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_help=false
1049ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_help_all=false
1050ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_silent=:
1051ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_warning=:
1052ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_verbose=:
1053ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_silent=false
1054ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_verbose=false
1055893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
1056893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
1057ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Parse options once, thoroughly.  This comes as soon as possible in the
1058ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# script to make things like `--version' happen as quickly as we can.
1059ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1060ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # this just eases exit handling
1061ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  while test $# -gt 0; do
10624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    opt="$1"
10634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    shift
10644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    case $opt in
1065ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      --debug|-x)	opt_debug='set -x'
10664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			func_echo "enabling shell trace mode"
10674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			$opt_debug
10684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			;;
1069ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      --dry-run|--dryrun|-n)
1070ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			opt_dry_run=:
10714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			;;
1072ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      --config)
1073ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			opt_config=:
1074ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_config
1075ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			;;
1076ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      --dlopen|-dlopen)
1077ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			optarg="$1"
1078ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			opt_dlopen="${opt_dlopen+$opt_dlopen
1079ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}$optarg"
10804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			shift
10814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			;;
10824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      --preserve-dup-deps)
1083ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			opt_preserve_dup_deps=:
10844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			;;
1085ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      --features)
1086ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			opt_features=:
1087ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_features
1088ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			;;
1089ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      --finish)
1090ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			opt_finish=:
1091ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikset dummy --mode finish ${1+"$@"}; shift
1092ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			;;
1093ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      --help)
1094ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			opt_help=:
1095ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			;;
1096ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      --help-all)
1097ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			opt_help_all=:
1098ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_help=': help-all'
1099ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			;;
1100ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      --mode)
1101ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			test $# = 0 && func_missing_arg $opt && break
1102ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			optarg="$1"
1103ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			opt_mode="$optarg"
1104ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikcase $optarg in
1105ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # Valid mode arguments:
1106ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  clean|compile|execute|finish|install|link|relink|uninstall) ;;
1107ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1108ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # Catch anything else as an error
1109ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  *) func_error "invalid argument for $opt"
1110ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik     exit_cmd=exit
1111ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik     break
1112ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik     ;;
1113ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikesac
1114ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			shift
1115ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			;;
1116ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      --no-silent|--no-quiet)
11174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			opt_silent=false
1118ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_append preserve_args " $opt"
11194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			;;
1120ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      --no-warning|--no-warn)
1121ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			opt_warning=false
1122ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_append preserve_args " $opt"
1123ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			;;
1124ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      --no-verbose)
1125ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			opt_verbose=false
1126ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_append preserve_args " $opt"
1127ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			;;
1128ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      --silent|--quiet)
1129ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			opt_silent=:
1130ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_append preserve_args " $opt"
1131ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        opt_verbose=false
1132ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			;;
1133ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      --verbose|-v)
1134ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			opt_verbose=:
1135ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_append preserve_args " $opt"
1136ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_silent=false
1137ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			;;
1138ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      --tag)
1139ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			test $# = 0 && func_missing_arg $opt && break
1140ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			optarg="$1"
1141ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			opt_tag="$optarg"
1142ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_append preserve_args " $opt $optarg"
1143ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_enable_tag "$optarg"
11444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			shift
11454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			;;
11464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
1147ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      -\?|-h)		func_usage				;;
1148ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      --help)		func_help				;;
1149ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      --version)	func_version				;;
1150ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
11514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Separate optargs to long options:
1152ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      --*=*)
1153ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			func_split_long_opt "$opt"
1154ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
11554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			shift
11564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			;;
11574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
1158ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # Separate non-argument short options:
1159ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      -\?*|-h*|-n*|-v*)
1160ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			func_split_short_opt "$opt"
1161ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
1162ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			shift
11634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			;;
1164ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1165ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      --)		break					;;
1166ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
1167ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
11684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    esac
11694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  done
11704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
1171ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # Validate options:
1172ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1173ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # save first non-option argument
1174ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test "$#" -gt 0; then
1175ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    nonopt="$opt"
1176ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    shift
1177ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
1178ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1179ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # preserve --debug
1180ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  test "$opt_debug" = : || func_append preserve_args " --debug"
11814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
11824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  case $host in
11835f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    *cygwin* | *mingw* | *pw32* | *cegcc*)
11844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # don't eliminate duplications in $postdeps and $predeps
11854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      opt_duplicate_compiler_generated_deps=:
1186893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      ;;
1187893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    *)
1188ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
11894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      ;;
11904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  esac
1191893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
1192ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_help || {
1193ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # Sanity checks first:
1194ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_check_version_match
11954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
1196ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
1197ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_fatal_configuration "not configured to build any kind of library"
11984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
11994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
1200ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # Darwin sucks
1201ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    eval std_shrext=\"$shrext_cmds\"
12024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
1203ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # Only execute mode is allowed to have -dlopen flags.
1204ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
1205ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_error "unrecognized option \`-dlopen'"
1206ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      $ECHO "$help" 1>&2
1207ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      exit $EXIT_FAILURE
1208ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    fi
1209893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
1210ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # Change the help message to a mode-specific one.
1211ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    generic_help="$help"
1212ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    help="Try \`$progname --help --mode=$opt_mode' for more information."
1213ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  }
12144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
12154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
1216ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # Bail if the options were screwed
1217ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $exit_cmd $EXIT_FAILURE
1218ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
12194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
12204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
1221893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
1222893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
1223ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik## ----------- ##
1224ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik##    Main.    ##
1225ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik## ----------- ##
1226893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
12274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_lalib_p file
12284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# True iff FILE is a libtool `.la' library or `.lo' object file.
12294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This function is only a basic sanity check; it will hardly flush out
12304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# determined imposters.
12314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_lalib_p ()
12324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
12335f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    test -f "$1" &&
12345f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott      $SED -e 4q "$1" 2>/dev/null \
12355f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
12364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
1237893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
12384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_lalib_unsafe_p file
12394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# True iff FILE is a libtool `.la' library or `.lo' object file.
12404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This function implements the same check as func_lalib_p without
12414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# resorting to external programs.  To this end, it redirects stdin and
12424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# closes it afterwards, without saving the original file descriptor.
12434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# As a safety measure, use it only where a negative result would be
12444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# fatal anyway.  Works if `file' does not exist.
12454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_lalib_unsafe_p ()
12464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
12474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    lalib_p=no
12485f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
12494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	for lalib_p_l in 1 2 3 4
12504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	do
12514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    read lalib_p_line
12524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case "$lalib_p_line" in
12534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
12544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
12554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	done
12564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	exec 0<&5 5<&-
12574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
12584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    test "$lalib_p" = yes
12594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
1260893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
12614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_ltwrapper_script_p file
12624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# True iff FILE is a libtool wrapper script
12634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This function is only a basic sanity check; it will hardly flush out
12644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# determined imposters.
12654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_ltwrapper_script_p ()
12664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
12674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_lalib_p "$1"
12684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
1269893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
12704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_ltwrapper_executable_p file
12714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# True iff FILE is a libtool wrapper executable
12724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This function is only a basic sanity check; it will hardly flush out
12734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# determined imposters.
12744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_ltwrapper_executable_p ()
12754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
12764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_ltwrapper_exec_suffix=
12774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    case $1 in
12784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    *.exe) ;;
12794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    *) func_ltwrapper_exec_suffix=.exe ;;
12804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    esac
12814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
12824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
1283893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
12844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_ltwrapper_scriptname file
12854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Assumes file is an ltwrapper_executable
12864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# uses $file to determine the appropriate filename for a
12874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# temporary ltwrapper_script.
12884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_ltwrapper_scriptname ()
12894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
1290ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_dirname_and_basename "$1" "" "."
1291ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_stripname '' '.exe' "$func_basename_result"
1292ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
12934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
1294893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
12954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_ltwrapper_p file
12964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# True iff FILE is a libtool wrapper script or wrapper executable
12974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This function is only a basic sanity check; it will hardly flush out
12984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# determined imposters.
12994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_ltwrapper_p ()
13004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
13014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
13024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
1303893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
1304893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
13054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_execute_cmds commands fail_cmd
13064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Execute tilde-delimited COMMANDS.
13074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# If FAIL_CMD is given, eval that upon failure.
13084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# FAIL_CMD may read-access the current command in variable CMD!
13094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_execute_cmds ()
13104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
13114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $opt_debug
13124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    save_ifs=$IFS; IFS='~'
13134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    for cmd in $1; do
13144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      IFS=$save_ifs
13154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      eval cmd=\"$cmd\"
13164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_show_eval "$cmd" "${2-:}"
13174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    done
13184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    IFS=$save_ifs
13194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
13204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
13214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
13224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_source file
13234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Source FILE, adding directory component if necessary.
13244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Note that it is not necessary on cygwin/mingw to append a dot to
13254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
13264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# behavior happens only for exec(3), not for open(2)!  Also, sourcing
13274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# `FILE.' does not work on cygwin managed mounts.
13284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_source ()
13294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
13304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $opt_debug
13314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    case $1 in
13324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    */* | *\\*)	. "$1" ;;
13334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    *)		. "./$1" ;;
13344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    esac
13354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
13364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
13374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
1338ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_resolve_sysroot PATH
1339ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Replace a leading = in PATH with a sysroot.  Store the result into
1340ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_resolve_sysroot_result
1341ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_resolve_sysroot ()
1342ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1343ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_resolve_sysroot_result=$1
1344ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  case $func_resolve_sysroot_result in
1345ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  =*)
1346ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_stripname '=' '' "$func_resolve_sysroot_result"
1347ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
1348ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    ;;
1349ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  esac
1350ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1351ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1352ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_replace_sysroot PATH
1353ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# If PATH begins with the sysroot, replace it with = and
1354ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# store the result into func_replace_sysroot_result.
1355ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_replace_sysroot ()
1356ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1357ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  case "$lt_sysroot:$1" in
1358ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  ?*:"$lt_sysroot"*)
1359ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_stripname "$lt_sysroot" '' "$1"
1360ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_replace_sysroot_result="=$func_stripname_result"
1361ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    ;;
1362ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  *)
1363ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # Including no sysroot.
1364ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_replace_sysroot_result=$1
1365ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    ;;
1366ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  esac
1367ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1368ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
13694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_infer_tag arg
13704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Infer tagged configuration to use if any are available and
13714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# if one wasn't chosen via the "--tag" command line option.
13724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Only attempt this if the compiler in the base compile
13734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# command doesn't match the default compiler.
13744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# arg is usually of the form 'gcc ...'
13754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_infer_tag ()
13764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
13774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $opt_debug
13784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test -n "$available_tags" && test -z "$tagname"; then
13794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      CC_quoted=
13804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      for arg in $CC; do
1381ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_append_quoted CC_quoted "$arg"
13824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      done
1383ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      CC_expanded=`func_echo_all $CC`
1384ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      CC_quoted_expanded=`func_echo_all $CC_quoted`
13854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case $@ in
13864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Blanks in the command may have been stripped by the calling shell,
13874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # but not from the CC environment variable when configure was run.
1388ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1389ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
13904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Blanks at the start of $base_compile will cause this to fail
13914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # if we don't check for them as well.
13924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *)
13934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	for z in $available_tags; do
13944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
13954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Evaluate the configuration.
13964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
13974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    CC_quoted=
13984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    for arg in $CC; do
13994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # Double-quote args containing other shell metacharacters.
1400ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append_quoted CC_quoted "$arg"
14014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    done
1402ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    CC_expanded=`func_echo_all $CC`
1403ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    CC_quoted_expanded=`func_echo_all $CC_quoted`
14044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case "$@ " in
1405ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1406ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
14074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # The compiler in the base compile command matches
14084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # the one in the tagged configuration.
14094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # Assume this is the tagged configuration we want.
14104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      tagname=$z
14114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      break
1412893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	      ;;
1413893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    esac
14144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
14154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	done
14164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# If $tagname still isn't set, then no tagged configuration
14174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# was found and let the user know that the "--tag" command
14184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# line option must be used.
14194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -z "$tagname"; then
14204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_echo "unable to infer tagged configuration"
14214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_fatal_error "specify a tag with \`--tag'"
14224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#	else
14234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#	  func_verbose "using $tagname tagged configuration"
14244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
14254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
14264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      esac
14274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
14284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
14294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
14304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
14314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
14324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_write_libtool_object output_name pic_name nonpic_name
14334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Create a libtool object file (analogous to a ".la" file),
14344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# but don't create it if we're doing a dry run.
14354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_write_libtool_object ()
14364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
14374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    write_libobj=${1}
14384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test "$build_libtool_libs" = yes; then
14394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      write_lobj=\'${2}\'
14404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    else
14414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      write_lobj=none
14424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
14434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
14444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test "$build_old_libs" = yes; then
14454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      write_oldobj=\'${3}\'
14464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    else
14474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      write_oldobj=none
14484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
14494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
14504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $opt_dry_run || {
14514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      cat >${write_libobj}T <<EOF
14524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# $write_libobj - a libtool object file
14534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
14544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#
14554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Please DO NOT delete this file!
14564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# It is necessary for linking the library.
14574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
14584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Name of the PIC object.
14594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectpic_object=$write_lobj
14604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
14614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Name of the non-PIC object
14624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectnon_pic_object=$write_oldobj
14634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
14644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF
14654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      $MV "${write_libobj}T" "${write_libobj}"
14664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    }
14674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
14684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
1469ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1470ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik##################################################
1471ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
1472ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik##################################################
1473ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1474ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_core_file_wine_to_w32 ARG
1475ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Helper function used by file name conversion functions when $build is *nix,
1476ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# and $host is mingw, cygwin, or some other w32 environment. Relies on a
1477ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# correctly configured wine environment available, with the winepath program
1478ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# in $build's $PATH.
1479ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#
1480ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# ARG is the $build file name to be converted to w32 format.
1481ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Result is available in $func_convert_core_file_wine_to_w32_result, and will
1482ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# be empty on error (or when ARG is empty)
1483ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_core_file_wine_to_w32 ()
1484ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1485ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
1486ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_convert_core_file_wine_to_w32_result="$1"
1487ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test -n "$1"; then
1488ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # Unfortunately, winepath does not exit with a non-zero error code, so we
1489ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # are forced to check the contents of stdout. On the other hand, if the
1490ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # command is not found, the shell will set an exit code of 127 and print
1491ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # *an error message* to stdout. So we must check for both error code of
1492ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # zero AND non-empty stdout, which explains the odd construction:
1493ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
1494ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
1495ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
1496ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        $SED -e "$lt_sed_naive_backslashify"`
1497ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    else
1498ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_convert_core_file_wine_to_w32_result=
1499ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    fi
1500ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
1501ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1502ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end: func_convert_core_file_wine_to_w32
1503ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1504ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1505ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_core_path_wine_to_w32 ARG
1506ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Helper function used by path conversion functions when $build is *nix, and
1507ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
1508ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# configured wine environment available, with the winepath program in $build's
1509ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# $PATH. Assumes ARG has no leading or trailing path separator characters.
1510ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#
1511ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# ARG is path to be converted from $build format to win32.
1512ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Result is available in $func_convert_core_path_wine_to_w32_result.
1513ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Unconvertible file (directory) names in ARG are skipped; if no directory names
1514ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# are convertible, then the result may be empty.
1515ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_core_path_wine_to_w32 ()
1516ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1517ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
1518ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # unfortunately, winepath doesn't convert paths, only file names
1519ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_convert_core_path_wine_to_w32_result=""
1520ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test -n "$1"; then
1521ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    oldIFS=$IFS
1522ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    IFS=:
1523ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    for func_convert_core_path_wine_to_w32_f in $1; do
1524ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      IFS=$oldIFS
1525ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
1526ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
1527ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        if test -z "$func_convert_core_path_wine_to_w32_result"; then
1528ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
1529ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        else
1530ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
1531ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        fi
1532ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      fi
1533ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    done
1534ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    IFS=$oldIFS
1535ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
1536ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1537ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end: func_convert_core_path_wine_to_w32
1538ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1539ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1540ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_cygpath ARGS...
1541ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
1542ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
1543ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
1544ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# (2), returns the Cygwin file name or path in func_cygpath_result (input
1545ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# file name or path is assumed to be in w32 format, as previously converted
1546ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# from $build's *nix or MSYS format). In case (3), returns the w32 file name
1547ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# or path in func_cygpath_result (input file name or path is assumed to be in
1548ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Cygwin format). Returns an empty string on error.
1549ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#
1550ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# ARGS are passed to cygpath, with the last one being the file name or path to
1551ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# be converted.
1552ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#
1553ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
1554ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# environment variable; do not put it in $PATH.
1555ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_cygpath ()
1556ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1557ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
1558ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
1559ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
1560ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    if test "$?" -ne 0; then
1561ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # on failure, ensure result is empty
1562ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_cygpath_result=
1563ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    fi
1564ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  else
1565ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_cygpath_result=
1566ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
1567ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
1568ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1569ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#end: func_cygpath
1570ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1571ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1572ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_core_msys_to_w32 ARG
1573ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert file name or path ARG from MSYS format to w32 format.  Return
1574ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# result in func_convert_core_msys_to_w32_result.
1575ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_core_msys_to_w32 ()
1576ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1577ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
1578ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # awkward: cmd appends spaces to result
1579ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
1580ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
1581ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1582ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#end: func_convert_core_msys_to_w32
1583ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1584ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1585ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_file_check ARG1 ARG2
1586ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Verify that ARG1 (a file name in $build format) was converted to $host
1587ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# format in ARG2. Otherwise, emit an error message, but continue (resetting
1588ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_to_host_file_result to ARG1).
1589ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_file_check ()
1590ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1591ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
1592ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test -z "$2" && test -n "$1" ; then
1593ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_error "Could not determine host file name corresponding to"
1594ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_error "  \`$1'"
1595ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_error "Continuing, but uninstalled executables may not work."
1596ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # Fallback:
1597ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_to_host_file_result="$1"
1598ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
1599ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1600ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_file_check
1601ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1602ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1603ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
1604ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Verify that FROM_PATH (a path in $build format) was converted to $host
1605ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
1606ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_to_host_file_result to a simplistic fallback value (see below).
1607ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_path_check ()
1608ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1609ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
1610ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test -z "$4" && test -n "$3"; then
1611ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_error "Could not determine the host path corresponding to"
1612ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_error "  \`$3'"
1613ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_error "Continuing, but uninstalled executables may not work."
1614ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # Fallback.  This is a deliberately simplistic "conversion" and
1615ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # should not be "improved".  See libtool.info.
1616ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    if test "x$1" != "x$2"; then
1617ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      lt_replace_pathsep_chars="s|$1|$2|g"
1618ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_to_host_path_result=`echo "$3" |
1619ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        $SED -e "$lt_replace_pathsep_chars"`
1620ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    else
1621ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_to_host_path_result="$3"
1622ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    fi
1623ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
1624ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1625ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_path_check
1626ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1627ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1628ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
1629ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
1630ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# and appending REPL if ORIG matches BACKPAT.
1631ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_path_front_back_pathsep ()
1632ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1633ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
1634ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  case $4 in
1635ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
1636ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    ;;
1637ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  esac
1638ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  case $4 in
1639ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $2 ) func_append func_to_host_path_result "$3"
1640ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    ;;
1641ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  esac
1642ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1643ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_path_front_back_pathsep
1644ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1645ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1646ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik##################################################
1647ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# $build to $host FILE NAME CONVERSION FUNCTIONS #
1648ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik##################################################
1649ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# invoked via `$to_host_file_cmd ARG'
1650ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#
1651ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# In each case, ARG is the path to be converted from $build to $host format.
1652ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Result will be available in $func_to_host_file_result.
1653ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1654ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1655ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_to_host_file ARG
1656ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Converts the file name ARG from $build format to $host format. Return result
1657ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# in func_to_host_file_result.
1658ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_to_host_file ()
1659ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1660ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
1661ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $to_host_file_cmd "$1"
1662ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1663ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_to_host_file
1664ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1665ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1666ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_to_tool_file ARG LAZY
1667ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# converts the file name ARG from $build format to toolchain format. Return
1668ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# result in func_to_tool_file_result.  If the conversion in use is listed
1669ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# in (the comma separated) LAZY, no conversion takes place.
1670ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_to_tool_file ()
1671ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1672ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
1673ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  case ,$2, in
1674ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    *,"$to_tool_file_cmd",*)
1675ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_to_tool_file_result=$1
1676ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      ;;
1677ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    *)
1678ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      $to_tool_file_cmd "$1"
1679ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_to_tool_file_result=$func_to_host_file_result
1680ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      ;;
1681ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  esac
1682ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1683ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_to_tool_file
1684ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1685ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1686ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_file_noop ARG
1687ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Copy ARG to func_to_host_file_result.
1688ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_file_noop ()
1689ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1690ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_to_host_file_result="$1"
1691ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1692ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_file_noop
1693ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1694ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1695ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_file_msys_to_w32 ARG
1696ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
1697ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# conversion to w32 is not available inside the cwrapper.  Returns result in
1698ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_to_host_file_result.
1699ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_file_msys_to_w32 ()
1700ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1701ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
1702ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_to_host_file_result="$1"
1703ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test -n "$1"; then
1704ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_convert_core_msys_to_w32 "$1"
1705ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
1706ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
1707ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_convert_file_check "$1" "$func_to_host_file_result"
1708ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1709ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_file_msys_to_w32
1710ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1711ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1712ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_file_cygwin_to_w32 ARG
1713ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert file name ARG from Cygwin to w32 format.  Returns result in
1714ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_to_host_file_result.
1715ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_file_cygwin_to_w32 ()
1716ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1717ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
1718ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_to_host_file_result="$1"
1719ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test -n "$1"; then
1720ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
1721ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # LT_CYGPATH in this case.
1722ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_to_host_file_result=`cygpath -m "$1"`
1723ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
1724ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_convert_file_check "$1" "$func_to_host_file_result"
1725ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1726ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_file_cygwin_to_w32
1727ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1728ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1729ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_file_nix_to_w32 ARG
1730ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert file name ARG from *nix to w32 format.  Requires a wine environment
1731ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# and a working winepath. Returns result in func_to_host_file_result.
1732ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_file_nix_to_w32 ()
1733ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1734ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
1735ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_to_host_file_result="$1"
1736ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test -n "$1"; then
1737ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_convert_core_file_wine_to_w32 "$1"
1738ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
1739ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
1740ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_convert_file_check "$1" "$func_to_host_file_result"
1741ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1742ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_file_nix_to_w32
1743ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1744ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1745ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_file_msys_to_cygwin ARG
1746ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
1747ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Returns result in func_to_host_file_result.
1748ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_file_msys_to_cygwin ()
1749ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1750ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
1751ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_to_host_file_result="$1"
1752ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test -n "$1"; then
1753ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_convert_core_msys_to_w32 "$1"
1754ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_cygpath -u "$func_convert_core_msys_to_w32_result"
1755ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_to_host_file_result="$func_cygpath_result"
1756ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
1757ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_convert_file_check "$1" "$func_to_host_file_result"
1758ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1759ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_file_msys_to_cygwin
1760ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1761ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1762ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_file_nix_to_cygwin ARG
1763ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
1764ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
1765ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# in func_to_host_file_result.
1766ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_file_nix_to_cygwin ()
1767ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1768ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
1769ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_to_host_file_result="$1"
1770ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test -n "$1"; then
1771ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
1772ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_convert_core_file_wine_to_w32 "$1"
1773ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
1774ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_to_host_file_result="$func_cygpath_result"
1775ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
1776ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_convert_file_check "$1" "$func_to_host_file_result"
1777ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1778ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_file_nix_to_cygwin
1779ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1780ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1781ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#############################################
1782ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# $build to $host PATH CONVERSION FUNCTIONS #
1783ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#############################################
1784ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# invoked via `$to_host_path_cmd ARG'
1785ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#
1786ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# In each case, ARG is the path to be converted from $build to $host format.
1787ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# The result will be available in $func_to_host_path_result.
1788ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#
1789ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Path separators are also converted from $build format to $host format.  If
1790ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# ARG begins or ends with a path separator character, it is preserved (but
1791ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# converted to $host format) on output.
1792ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#
1793ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# All path conversion functions are named using the following convention:
1794ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#   file name conversion function    : func_convert_file_X_to_Y ()
1795ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#   path conversion function         : func_convert_path_X_to_Y ()
1796ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# where, for any given $build/$host combination the 'X_to_Y' value is the
1797ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# same.  If conversion functions are added for new $build/$host combinations,
1798ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# the two new functions must follow this pattern, or func_init_to_host_path_cmd
1799ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# will break.
1800ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1801ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1802ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_init_to_host_path_cmd
1803ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Ensures that function "pointer" variable $to_host_path_cmd is set to the
1804ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# appropriate value, based on the value of $to_host_file_cmd.
1805ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikto_host_path_cmd=
1806ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_init_to_host_path_cmd ()
1807ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1808ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
1809ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test -z "$to_host_path_cmd"; then
1810ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
1811ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    to_host_path_cmd="func_convert_path_${func_stripname_result}"
1812ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
1813ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1814ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1815ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1816ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_to_host_path ARG
1817ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Converts the path ARG from $build format to $host format. Return result
1818ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# in func_to_host_path_result.
1819ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_to_host_path ()
1820ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1821ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
1822ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_init_to_host_path_cmd
1823ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $to_host_path_cmd "$1"
1824ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1825ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_to_host_path
1826ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1827ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1828ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_path_noop ARG
1829ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Copy ARG to func_to_host_path_result.
1830ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_path_noop ()
1831ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1832ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_to_host_path_result="$1"
1833ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1834ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_path_noop
1835ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1836ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1837ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_path_msys_to_w32 ARG
1838ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
1839ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# conversion to w32 is not available inside the cwrapper.  Returns result in
1840ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_to_host_path_result.
1841ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_path_msys_to_w32 ()
1842ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1843ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
1844ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_to_host_path_result="$1"
1845ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test -n "$1"; then
1846ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # Remove leading and trailing path separator characters from ARG.  MSYS
1847ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
1848ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # and winepath ignores them completely.
1849ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_stripname : : "$1"
1850ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_to_host_path_tmp1=$func_stripname_result
1851ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
1852ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
1853ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_convert_path_check : ";" \
1854ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1855ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1856ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
1857ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1858ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_path_msys_to_w32
1859ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1860ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1861ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_path_cygwin_to_w32 ARG
1862ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert path ARG from Cygwin to w32 format.  Returns result in
1863ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_to_host_file_result.
1864ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_path_cygwin_to_w32 ()
1865ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1866ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
1867ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_to_host_path_result="$1"
1868ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test -n "$1"; then
1869ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # See func_convert_path_msys_to_w32:
1870ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_stripname : : "$1"
1871ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_to_host_path_tmp1=$func_stripname_result
1872ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
1873ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_convert_path_check : ";" \
1874ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1875ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1876ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
1877ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1878ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_path_cygwin_to_w32
1879ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1880ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1881ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_path_nix_to_w32 ARG
1882ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert path ARG from *nix to w32 format.  Requires a wine environment and
1883ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# a working winepath.  Returns result in func_to_host_file_result.
1884ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_path_nix_to_w32 ()
1885ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1886ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
1887ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_to_host_path_result="$1"
1888ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test -n "$1"; then
1889ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # See func_convert_path_msys_to_w32:
1890ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_stripname : : "$1"
1891ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_to_host_path_tmp1=$func_stripname_result
1892ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
1893ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
1894ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_convert_path_check : ";" \
1895ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1896ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1897ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
1898ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1899ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_path_nix_to_w32
1900ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1901ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1902ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_path_msys_to_cygwin ARG
1903ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
1904ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Returns result in func_to_host_file_result.
1905ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_path_msys_to_cygwin ()
1906ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1907ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
1908ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_to_host_path_result="$1"
1909ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test -n "$1"; then
1910ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # See func_convert_path_msys_to_w32:
1911ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_stripname : : "$1"
1912ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_to_host_path_tmp1=$func_stripname_result
1913ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
1914ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
1915ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_to_host_path_result="$func_cygpath_result"
1916ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_convert_path_check : : \
1917ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1918ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
1919ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
1920ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1921ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_path_msys_to_cygwin
1922ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1923ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1924ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_path_nix_to_cygwin ARG
1925ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
1926ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
1927ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_to_host_file_result.
1928ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_path_nix_to_cygwin ()
1929ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
1930ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
1931ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_to_host_path_result="$1"
1932ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test -n "$1"; then
1933ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # Remove leading and trailing path separator characters from
1934ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # ARG. msys behavior is inconsistent here, cygpath turns them
1935ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # into '.;' and ';.', and winepath ignores them completely.
1936ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_stripname : : "$1"
1937ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_to_host_path_tmp1=$func_stripname_result
1938ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
1939ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
1940ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_to_host_path_result="$func_cygpath_result"
1941ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_convert_path_check : : \
1942ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      "$func_to_host_path_tmp1" "$func_to_host_path_result"
1943ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
1944ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
1945ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
1946ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_path_nix_to_cygwin
1947ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
1948ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
19494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_mode_compile arg...
19504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mode_compile ()
19514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
19524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $opt_debug
19534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # Get the compilation command and the source file.
19544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    base_compile=
19554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
19564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    suppress_opt=yes
19574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    suppress_output=
19584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    arg_mode=normal
19594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    libobj=
19604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    later=
19614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    pie_flag=
19624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
19634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    for arg
19644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    do
19654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case $arg_mode in
19664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      arg  )
19674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# do not "continue".  Instead, add this to base_compile
19684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	lastarg="$arg"
19694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	arg_mode=normal
19704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
19714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
19724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      target )
19734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	libobj="$arg"
19744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	arg_mode=normal
19754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
19764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
19774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
19784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      normal )
19794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Accept any command-line options.
19804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $arg in
19814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	-o)
19824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  test -n "$libobj" && \
19834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_fatal_error "you cannot specify \`-o' more than once"
19844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  arg_mode=target
19854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
19864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
19874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
19884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	-pie | -fpie | -fPIE)
1989ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik          func_append pie_flag " $arg"
19904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
19914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
19924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
19934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	-shared | -static | -prefer-pic | -prefer-non-pic)
1994ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append later " $arg"
19954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
19964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
19974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
19984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	-no-suppress)
19994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  suppress_opt=no
20004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
20014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
20024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
20034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	-Xcompiler)
20044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
20054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue      #  The current "srcfile" will either be retained or
20064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;            #  replaced later.  I would guess that would be a bug.
20074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
20084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	-Wc,*)
20094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_stripname '-Wc,' '' "$arg"
20104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  args=$func_stripname_result
20114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  lastarg=
20124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  save_ifs="$IFS"; IFS=','
20134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for arg in $args; do
20144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    IFS="$save_ifs"
2015ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append_quoted lastarg "$arg"
2016893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  done
2017893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  IFS="$save_ifs"
20184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_stripname ' ' '' "$lastarg"
20194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  lastarg=$func_stripname_result
2020893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2021893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  # Add the arguments to base_compile.
2022ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append base_compile " $lastarg"
2023893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  continue
2024893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  ;;
2025893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
20264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*)
2027893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  # Accept the current argument as the source file.
2028893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  # The previous "srcfile" becomes the current argument.
2029893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  #
2030893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  lastarg="$srcfile"
2031893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  srcfile="$arg"
2032893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  ;;
2033893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	esac  #  case $arg
2034893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	;;
2035893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      esac    #  case $arg_mode
2036893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2037893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      # Aesthetically quote the previous argument.
2038ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_append_quoted base_compile "$lastarg"
2039893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    done # for arg
2040893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2041893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    case $arg_mode in
2042893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    arg)
20434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_fatal_error "you must specify an argument for -Xcompile"
2044893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      ;;
2045893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    target)
20464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_fatal_error "you must specify a target with \`-o'"
2047893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      ;;
2048893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    *)
2049893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      # Get the name of the library object.
20504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test -z "$libobj" && {
20514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_basename "$srcfile"
20524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	libobj="$func_basename_result"
20534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      }
2054893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      ;;
2055893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    esac
2056893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2057893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    # Recognize several different file suffixes.
2058893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    # If the user specifies -o file.o, it is replaced with file.lo
2059893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    case $libobj in
20604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    *.[cCFSifmso] | \
20614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    *.ada | *.adb | *.ads | *.asm | \
20624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
2063ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
20644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_xform "$libobj"
20654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      libobj=$func_xform_result
20664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      ;;
2067893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    esac
2068893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2069893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    case $libobj in
20704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
2071893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    *)
20724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_fatal_error "cannot determine name of library object from \`$libobj'"
2073893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      ;;
2074893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    esac
2075893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2076893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    func_infer_tag $base_compile
2077893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2078893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    for arg in $later; do
2079893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      case $arg in
20804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -shared)
20814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	test "$build_libtool_libs" != yes && \
20824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_fatal_configuration "can not build a shared library"
20834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	build_old_libs=no
20844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
20854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
20864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
2087893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      -static)
20884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	build_libtool_libs=no
2089893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	build_old_libs=yes
2090893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	continue
2091893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	;;
2092893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2093893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      -prefer-pic)
2094893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	pic_mode=yes
2095893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	continue
2096893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	;;
2097893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2098893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      -prefer-non-pic)
2099893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	pic_mode=no
2100893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	continue
2101893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	;;
2102893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      esac
2103893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    done
2104893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
21054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_quote_for_eval "$libobj"
21064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    test "X$libobj" != "X$func_quote_for_eval_result" \
21074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
21084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      && func_warning "libobj name \`$libobj' may not contain shell special characters."
21094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_dirname_and_basename "$obj" "/" ""
21104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    objname="$func_basename_result"
21114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    xdir="$func_dirname_result"
2112893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    lobj=${xdir}$objdir/$objname
2113893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
21144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    test -z "$base_compile" && \
21154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_fatal_help "you must specify a compilation command"
2116893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2117893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    # Delete any leftover library objects.
2118893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    if test "$build_old_libs" = yes; then
2119893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      removelist="$obj $lobj $libobj ${libobj}T"
2120893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    else
2121893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      removelist="$lobj $libobj ${libobj}T"
2122893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    fi
2123893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2124893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    # On Cygwin there's no "real" PIC flag so we must build both object types
2125893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    case $host_os in
21265f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    cygwin* | mingw* | pw32* | os2* | cegcc*)
2127893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      pic_mode=default
2128893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      ;;
2129893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    esac
2130893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
2131893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      # non-PIC code in shared libraries is not supported
2132893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      pic_mode=default
2133893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    fi
2134893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2135893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    # Calculate the filename of the output object if compiler does
2136893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    # not support -o with -c
2137893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    if test "$compiler_c_o" = no; then
2138ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
2139893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      lockfile="$output_obj.lock"
2140893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    else
2141893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      output_obj=
2142893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      need_locks=no
2143893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      lockfile=
2144893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    fi
2145893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2146893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    # Lock this critical section if it is needed
2147893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    # We use this script file to make the link, it avoids creating a new file
2148893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    if test "$need_locks" = yes; then
21494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
21504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_echo "Waiting for $lockfile to be removed"
2151893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	sleep 2
2152893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      done
2153893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    elif test "$need_locks" = warn; then
2154893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      if test -f "$lockfile"; then
21554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	$ECHO "\
2156893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project*** ERROR, $lockfile exists and contains:
2157893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project`cat $lockfile 2>/dev/null`
2158893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2159893912bfc2683463dc3e2c445336752d012563d3The Android Open Source ProjectThis indicates that another process is trying to use the same
2160893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttemporary object file, and libtool could not work around it because
2161893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectyour compiler does not support \`-c' and \`-o' together.  If you
2162893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectrepeat this compilation, it may succeed, by chance, but you had better
2163893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectavoid parallel builds (make -j) in this platform, or get a better
2164893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectcompiler."
2165893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
21664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	$opt_dry_run || $RM $removelist
2167893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	exit $EXIT_FAILURE
2168893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
2169ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_append removelist " $output_obj"
21704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      $ECHO "$srcfile" > "$lockfile"
2171893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    fi
2172893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
21734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $opt_dry_run || $RM $removelist
2174ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_append removelist " $lockfile"
21754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
21764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
2177ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
2178ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    srcfile=$func_to_tool_file_result
21794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_quote_for_eval "$srcfile"
21804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    qsrcfile=$func_quote_for_eval_result
2181893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2182893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    # Only build a PIC object if we are building libtool libraries.
2183893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    if test "$build_libtool_libs" = yes; then
2184893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      # Without this assignment, base_compile gets emptied.
2185893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fbsd_hideous_sh_bug=$base_compile
2186893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2187893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      if test "$pic_mode" != no; then
2188893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	command="$base_compile $qsrcfile $pic_flag"
2189893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      else
2190893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	# Don't build PIC code
2191893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	command="$base_compile $qsrcfile"
2192893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
2193893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
21944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_mkdir_p "$xdir$objdir"
2195893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2196893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      if test -z "$output_obj"; then
2197893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	# Place PIC objects in $objdir
2198ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_append command " -o $lobj"
2199893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
2200893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
22014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_show_eval_locale "$command"	\
22024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
2203893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2204893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      if test "$need_locks" = warn &&
2205893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
22064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	$ECHO "\
2207893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project*** ERROR, $lockfile contains:
2208893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project`cat $lockfile 2>/dev/null`
2209893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2210893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectbut it should contain:
2211893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project$srcfile
2212893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2213893912bfc2683463dc3e2c445336752d012563d3The Android Open Source ProjectThis indicates that another process is trying to use the same
2214893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttemporary object file, and libtool could not work around it because
2215893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectyour compiler does not support \`-c' and \`-o' together.  If you
2216893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectrepeat this compilation, it may succeed, by chance, but you had better
2217893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectavoid parallel builds (make -j) in this platform, or get a better
2218893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectcompiler."
2219893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
22204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	$opt_dry_run || $RM $removelist
2221893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	exit $EXIT_FAILURE
2222893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
2223893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2224893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      # Just move the object if needed, then go on to compile the next one
2225893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
22264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_show_eval '$MV "$output_obj" "$lobj"' \
22274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
2228893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
2229893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2230893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      # Allow error messages only from the first compilation.
2231893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      if test "$suppress_opt" = yes; then
22324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	suppress_output=' >/dev/null 2>&1'
2233893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
2234893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    fi
2235893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2236893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    # Only build a position-dependent object if we build old libraries.
2237893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    if test "$build_old_libs" = yes; then
2238893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      if test "$pic_mode" != yes; then
2239893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	# Don't build PIC code
22404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	command="$base_compile $qsrcfile$pie_flag"
2241893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      else
2242893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	command="$base_compile $qsrcfile $pic_flag"
2243893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
2244893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      if test "$compiler_c_o" = yes; then
2245ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_append command " -o $obj"
2246893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
2247893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2248893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      # Suppress compiler output if we already did a PIC compilation.
2249ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_append command "$suppress_output"
22504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_show_eval_locale "$command" \
22514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
2252893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2253893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      if test "$need_locks" = warn &&
2254893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
22554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	$ECHO "\
2256893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project*** ERROR, $lockfile contains:
2257893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project`cat $lockfile 2>/dev/null`
2258893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2259893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectbut it should contain:
2260893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project$srcfile
2261893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2262893912bfc2683463dc3e2c445336752d012563d3The Android Open Source ProjectThis indicates that another process is trying to use the same
2263893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttemporary object file, and libtool could not work around it because
2264893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectyour compiler does not support \`-c' and \`-o' together.  If you
2265893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectrepeat this compilation, it may succeed, by chance, but you had better
2266893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectavoid parallel builds (make -j) in this platform, or get a better
2267893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectcompiler."
2268893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
22694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	$opt_dry_run || $RM $removelist
2270893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	exit $EXIT_FAILURE
2271893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
2272893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2273893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      # Just move the object if needed
2274893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
22754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_show_eval '$MV "$output_obj" "$obj"' \
22764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
2277893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
2278893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    fi
2279893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
22804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $opt_dry_run || {
22814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
2282893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
22834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Unlock the critical section if it was locked
22844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test "$need_locks" != no; then
22854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	removelist=$lockfile
22864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        $RM "$lockfile"
22874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
22884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    }
2289893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2290893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    exit $EXIT_SUCCESS
22914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
2292893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
22934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project$opt_help || {
2294ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
22954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
2296893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
22974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mode_help ()
22984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
22994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # We need to display help for each of the modes.
2300ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    case $opt_mode in
23014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      "")
23024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        # Generic help is extracted from the usage comments
23034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        # at the start of this file.
23044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        func_help
23054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        ;;
2306893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      clean)
23084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        $ECHO \
23094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
2310893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectRemove files from the build directory.
2312893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectRM is the name of the program to use to delete files associated with each FILE
23144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
23154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectto RM.
2316893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectIf FILE is a libtool library, object or program, all the files associated
23184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectwith it are deleted. Otherwise, only FILE itself is deleted using RM."
23194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        ;;
2320893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      compile)
23224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      $ECHO \
23234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
2324893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectCompile a source file into a libtool library object.
2326893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThis mode accepts the following additional options:
2328893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
23304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -no-suppress      do not suppress compiler output for multiple passes
2331ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  -prefer-pic       try to build PIC objects only
2332ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  -prefer-non-pic   try to build non-PIC objects only
23334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -shared           do not build a \`.o' file suitable for static linking
23344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -static           only build a \`.o' file suitable for static linking
2335ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  -Wc,FLAG          pass FLAG directly to the compiler
2336893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
23384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfrom the given SOURCEFILE.
2339893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThe output file name is determined by removing the directory component from
23414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectSOURCEFILE, then substituting the C source code suffix \`.c' with the
23424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlibrary object suffix, \`.lo'."
23434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        ;;
2344893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      execute)
23464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        $ECHO \
23474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
2348893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectAutomatically set library path, then run a program.
2350893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThis mode accepts the following additional options:
2352893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -dlopen FILE      add the directory containing FILE to the library path
2354893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThis mode sets the library path environment variable according to \`-dlopen'
23564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectflags.
2357893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectIf any of the ARGS are libtool executable wrappers, then they are translated
23594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectinto their corresponding uninstalled binary, and any of their required library
23604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdirectories are added to the library path.
2361893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThen, COMMAND is executed, with ARGS as arguments."
23634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        ;;
2364893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      finish)
23664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        $ECHO \
23674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
2368893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectComplete the installation of libtool libraries.
2370893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEach LIBDIR is a directory that contains libtool libraries.
2372893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThe commands that this mode executes may require superuser privileges.  Use
23744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectthe \`--dry-run' option if you just want to see what would be executed."
23754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        ;;
2376893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      install)
23784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        $ECHO \
23794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
2380893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectInstall executables or libraries.
2382893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectINSTALL-COMMAND is the installation command.  The first component should be
23844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecteither the \`install' or \`cp' program.
2385893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThe following components of INSTALL-COMMAND are treated specially:
2387893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2388ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
2389893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThe rest of the components are interpreted as arguments to that command (only
23914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectBSD-compatible install options are recognized)."
23924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        ;;
2393893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      link)
23954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        $ECHO \
23964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
2397893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
23984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectLink object files or libraries together to form another library, or to
23994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectcreate an executable program.
2400893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
24014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectLINK-COMMAND is a command using the C compiler that you would use to create
24024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecta program from several object files.
2403893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
24044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThe following components of LINK-COMMAND are treated specially:
2405893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
24064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -all-static       do not do any dynamic linking at all
24074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -avoid-version    do not add a version suffix if possible
2408ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  -bindir BINDIR    specify path to binaries directory (for systems where
2409ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik                    libraries must be found in the PATH setting at runtime)
24104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
24114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
24124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
24134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -export-symbols SYMFILE
24144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project                    try to export only the symbols listed in SYMFILE
24154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -export-symbols-regex REGEX
24164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project                    try to export only the symbols matching REGEX
24174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -LLIBDIR          search LIBDIR for required installed libraries
24184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -lNAME            OUTPUT-FILE requires the installed library libNAME
24194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -module           build a library that can dlopened
24204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -no-fast-install  disable the fast-install mode
24214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -no-install       link a not-installable executable
24224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -no-undefined     declare that a library does not refer to external symbols
24234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
24244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -objectlist FILE  Use a list of object files found in FILE to specify objects
24254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -precious-files-regex REGEX
24264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project                    don't remove output files matching REGEX
24274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -release RELEASE  specify package release information
24284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
24294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
24304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -shared           only do dynamic linking of libtool libraries
24314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -shrext SUFFIX    override the standard shared library file extension
24324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -static           do not do any dynamic linking of uninstalled libtool libraries
24334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -static-libtool-libs
24344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project                    do not do any dynamic linking of libtool libraries
24354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -version-info CURRENT[:REVISION[:AGE]]
24364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project                    specify library version info [each variable defaults to 0]
24374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  -weak LIBNAME     declare that the target provides the LIBNAME interface
2438ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  -Wc,FLAG
2439ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
2440ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  -Wl,FLAG
2441ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
2442ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
2443893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
24444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectAll other options (arguments beginning with \`-') are ignored.
2445893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
24464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEvery other argument is treated as a filename.  Files ending in \`.la' are
24474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecttreated as uninstalled libtool libraries, other files are standard or library
24484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectobject files.
2449893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
24504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
24514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectonly library objects (\`.lo' files) may be specified, and \`-rpath' is
24524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectrequired, except when creating a convenience library.
2453893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
24544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
24554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectusing \`ar' and \`ranlib', or on Windows using \`lib'.
2456893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
24574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
24584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectis created, otherwise an executable program is created."
2459893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project        ;;
2460893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
24614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      uninstall)
24624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        $ECHO \
24634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
2464893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
24654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectRemove libraries from an installation directory.
2466893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
24674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectRM is the name of the program to use to delete files associated with each FILE
24684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
24694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectto RM.
2470893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
24714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectIf FILE is a libtool library, all the files associated with it are deleted.
24724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectOtherwise, only FILE itself is deleted using RM."
24734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        ;;
2474893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
24754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *)
2476ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        func_fatal_help "invalid operation mode \`$opt_mode'"
24774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        ;;
24784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    esac
2479893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2480ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    echo
24814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $ECHO "Try \`$progname --help' for more information about other modes."
24824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
2483893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2484ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Now that we've collected a possible --mode arg, show help if necessary
2485ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikif $opt_help; then
2486ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test "$opt_help" = :; then
2487ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_mode_help
2488ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  else
2489ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    {
2490ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_help noexit
2491ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      for opt_mode in compile link execute install finish uninstall clean; do
2492ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_mode_help
2493ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      done
2494ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
2495ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    {
2496ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_help noexit
2497ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      for opt_mode in compile link execute install finish uninstall clean; do
2498ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	echo
2499ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_mode_help
2500ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      done
2501ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    } |
2502ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    sed '1d
2503ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      /^When reporting/,/^Report/{
2504ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	H
2505ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	d
2506ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      }
2507ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      $x
2508ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      /information about other modes/d
2509ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      /more detailed .*MODE/d
2510ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
2511ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
2512ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  exit $?
2513ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfi
2514893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2515893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
25164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_mode_execute arg...
25174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mode_execute ()
25184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
25194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $opt_debug
25204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # The first argument is the command name.
25214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    cmd="$nonopt"
25224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    test -z "$cmd" && \
25234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_fatal_help "you must specify a COMMAND"
2524893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
25254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # Handle -dlopen flags immediately.
2526ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    for file in $opt_dlopen; do
25274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test -f "$file" \
25284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	|| func_fatal_help "\`$file' is not a file"
2529893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
25304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      dir=
25314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case $file in
25324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *.la)
2533ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_resolve_sysroot "$file"
2534ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	file=$func_resolve_sysroot_result
2535ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
25364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Check to see that this really is a libtool archive.
25374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_lalib_unsafe_p "$file" \
25384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  || func_fatal_help "\`$lib' is not a valid libtool archive"
2539893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
25404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Read the libtool library.
25414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	dlname=
25424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	library_names=
25434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_source "$file"
2544893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
25454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Skip this library if it cannot be dlopened.
25464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -z "$dlname"; then
25474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Warn if it was a shared library.
25484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  test -n "$library_names" && \
25494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_warning "\`$file' was not linked with \`-export-dynamic'"
25504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
25514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
2552893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
25534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_dirname "$file" "" "."
25544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	dir="$func_dirname_result"
2555893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
25564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -f "$dir/$objdir/$dlname"; then
2557ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append dir "/$objdir"
25584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	else
25594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test ! -f "$dir/$dlname"; then
25604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
25614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
25624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
2563893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	;;
2564893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
25654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *.lo)
25664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Just add the directory containing the .lo file.
25674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_dirname "$file" "" "."
25684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	dir="$func_dirname_result"
2569893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	;;
2570893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
25714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *)
25724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
2573893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	continue
2574893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	;;
25754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      esac
2576893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
25774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Get the absolute pathname.
25784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      absdir=`cd "$dir" && pwd`
25794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test -n "$absdir" && dir="$absdir"
2580893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
25814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Now add the directory to shlibpath_var.
25824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if eval "test -z \"\$$shlibpath_var\""; then
25834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	eval "$shlibpath_var=\"\$dir\""
25844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      else
25854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
25864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
25874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    done
2588893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
25894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # This variable tells wrapper scripts just to set shlibpath_var
25904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # rather than running their programs.
25914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    libtool_execute_magic="$magic"
2592893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
25934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # Check if any of the arguments is a wrapper script.
25944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    args=
25954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    for file
25964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    do
25974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case $file in
2598ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      -* | *.la | *.lo ) ;;
25994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *)
26004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Do a test to see if this is really a libtool program.
26014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if func_ltwrapper_script_p "$file"; then
26024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_source "$file"
26034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Transform arg to wrapped name.
26044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  file="$progdir/$program"
26054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	elif func_ltwrapper_executable_p "$file"; then
26064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_ltwrapper_scriptname "$file"
26074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_source "$func_ltwrapper_scriptname_result"
26084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Transform arg to wrapped name.
26094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  file="$progdir/$program"
26104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
26114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
26124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      esac
26134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Quote arguments (to preserve shell metacharacters).
2614ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_append_quoted args "$file"
26154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    done
2616893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
26174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test "X$opt_dry_run" = Xfalse; then
26184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$shlibpath_var"; then
26194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Export the shlibpath_var.
26204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	eval "export $shlibpath_var"
26214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
2622893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
26234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Restore saved environment variables
26244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
26254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      do
26264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	eval "if test \"\${save_$lt_var+set}\" = set; then
26274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project                $lt_var=\$save_$lt_var; export $lt_var
26284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      else
26294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		$lt_unset $lt_var
26304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi"
26314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      done
2632893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
26334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Now prepare to actually exec the command.
26344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      exec_cmd="\$cmd$args"
26354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    else
26364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Display what would be done.
26374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$shlibpath_var"; then
26384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
2639ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	echo "export $shlibpath_var"
26404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
26414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      $ECHO "$cmd$args"
26424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      exit $EXIT_SUCCESS
26434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
26444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
2645893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2646ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiktest "$opt_mode" = execute && func_mode_execute ${1+"$@"}
2647893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2648893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
26494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_mode_finish arg...
26504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mode_finish ()
26514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
26524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $opt_debug
2653ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    libs=
2654ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    libdirs=
26554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    admincmds=
2656893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2657ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    for opt in "$nonopt" ${1+"$@"}
2658ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    do
2659ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if test -d "$opt"; then
2660ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_append libdirs " $opt"
2661ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
2662ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      elif test -f "$opt"; then
2663ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	if func_lalib_unsafe_p "$opt"; then
2664ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append libs " $opt"
2665ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	else
2666ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_warning "\`$opt' is not a valid libtool archive"
2667ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	fi
2668ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
2669ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      else
2670ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_fatal_error "invalid argument \`$opt'"
2671ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      fi
2672ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    done
2673ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
2674ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    if test -n "$libs"; then
2675ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if test -n "$lt_sysroot"; then
2676ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
2677ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
2678ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      else
2679ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        sysroot_cmd=
2680ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      fi
2681ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
2682ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # Remove sysroot references
2683ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if $opt_dry_run; then
2684ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        for lib in $libs; do
2685ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
2686ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        done
2687ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      else
2688ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        tmpdir=`func_mktempdir`
2689ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        for lib in $libs; do
2690ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
2691ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    > $tmpdir/tmp-la
2692ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  mv -f $tmpdir/tmp-la $lib
2693ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	done
2694ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        ${RM}r "$tmpdir"
2695ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      fi
2696ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    fi
2697893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2698ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
26994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      for libdir in $libdirs; do
27004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$finish_cmds"; then
27014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Do each command in the finish commands.
27024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
27034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project'"$cmd"'"'
27044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
27054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$finish_eval"; then
27064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Do the single finish_eval.
27074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  eval cmds=\"$finish_eval\"
2708ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  $opt_dry_run || eval "$cmds" || func_append admincmds "
27094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project       $cmds"
27104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
27114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      done
27124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
2713893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
27144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # Exit here if they wanted silent mode.
27154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $opt_silent && exit $EXIT_SUCCESS
2716893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2717ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2718ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      echo "----------------------------------------------------------------------"
2719ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      echo "Libraries have been installed in:"
2720ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      for libdir in $libdirs; do
2721ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	$ECHO "   $libdir"
2722ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      done
2723ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      echo
2724ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      echo "If you ever happen to want to link against installed libraries"
2725ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      echo "in a given directory, LIBDIR, you must either use libtool, and"
2726ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
2727ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      echo "flag during linking and do at least one of the following:"
2728ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if test -n "$shlibpath_var"; then
2729ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
2730ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	echo "     during execution"
2731ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      fi
2732ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if test -n "$runpath_var"; then
2733ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
2734ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	echo "     during linking"
2735ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      fi
2736ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if test -n "$hardcode_libdir_flag_spec"; then
2737ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	libdir=LIBDIR
2738ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	eval flag=\"$hardcode_libdir_flag_spec\"
2739893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2740ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	$ECHO "   - use the \`$flag' linker flag"
2741ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      fi
2742ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if test -n "$admincmds"; then
2743ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	$ECHO "   - have your system administrator run these commands:$admincmds"
2744ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      fi
2745ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if test -f /etc/ld.so.conf; then
2746ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
2747ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      fi
2748ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      echo
2749893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2750ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      echo "See any operating system documentation about shared libraries for"
2751ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      case $host in
2752ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	solaris2.[6789]|solaris2.1[0-9])
2753ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
2754ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  echo "pages."
2755ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  ;;
2756ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	*)
2757ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
2758ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  ;;
2759ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      esac
2760ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      echo "----------------------------------------------------------------------"
2761ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    fi
27624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    exit $EXIT_SUCCESS
27634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
2764893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2765ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiktest "$opt_mode" = finish && func_mode_finish ${1+"$@"}
2766893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
2767893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
27684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_mode_install arg...
27694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mode_install ()
27704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
27714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $opt_debug
27724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # There may be an optional sh(1) argument at the beginning of
27734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # install_prog (especially on Windows NT).
27744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
27754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project       # Allow the use of GNU shtool's install command.
2776ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik       case $nonopt in *shtool*) :;; *) false;; esac; then
27774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Aesthetically quote it.
27784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_quote_for_eval "$nonopt"
27794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      install_prog="$func_quote_for_eval_result "
27804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      arg=$1
27814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      shift
27824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    else
27834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      install_prog=
27844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      arg=$nonopt
27854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
27864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
27874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # The real first argument should be the name of the installation program.
27884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # Aesthetically quote it.
27894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_quote_for_eval "$arg"
2790ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_append install_prog "$func_quote_for_eval_result"
2791ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    install_shared_prog=$install_prog
2792ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    case " $install_prog " in
2793ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      *[\\\ /]cp\ *) install_cp=: ;;
2794ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      *) install_cp=false ;;
2795ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    esac
27964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
27974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # We need to accept at least all the BSD install flags.
27984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    dest=
27994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    files=
28004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    opts=
28014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    prev=
28024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    install_type=
28034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    isdir=no
28044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    stripme=
2805ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    no_mode=:
28064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    for arg
28074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    do
2808ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      arg2=
28094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$dest"; then
2810ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_append files " $dest"
28114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	dest=$arg
2812893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	continue
28134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
2814893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
28154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case $arg in
28164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -d) isdir=yes ;;
28174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -f)
2818ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	if $install_cp; then :; else
2819ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  prev=$arg
2820ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	fi
2821893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	;;
28224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -g | -m | -o)
28234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	prev=$arg
28244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
28254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -s)
28264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	stripme=" -s"
28274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
28284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
28294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -*)
28304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
28314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *)
28324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# If the previous option needed an argument, then skip it.
28334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$prev"; then
2834ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
2835ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    arg2=$install_override_mode
2836ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    no_mode=false
2837ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  fi
28384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prev=
28394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	else
28404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  dest=$arg
28414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
28424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
28434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
28444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      esac
2845893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
28464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Aesthetically quote the argument.
28474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_quote_for_eval "$arg"
2848ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_append install_prog " $func_quote_for_eval_result"
2849ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if test -n "$arg2"; then
2850ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_quote_for_eval "$arg2"
2851ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      fi
2852ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_append install_shared_prog " $func_quote_for_eval_result"
28534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    done
2854893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
28554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    test -z "$install_prog" && \
28564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_fatal_help "you must specify an install program"
2857893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
28584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    test -n "$prev" && \
28594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_fatal_help "the \`$prev' option requires an argument"
28604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
2861ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    if test -n "$install_override_mode" && $no_mode; then
2862ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if $install_cp; then :; else
2863ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_quote_for_eval "$install_override_mode"
2864ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_append install_shared_prog " -m $func_quote_for_eval_result"
2865ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      fi
2866ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    fi
2867ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
28684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test -z "$files"; then
28694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -z "$dest"; then
28704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_fatal_help "no file or destination specified"
28714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      else
28724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_fatal_help "you must specify a destination"
28734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
2874893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    fi
2875893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
28764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # Strip any trailing slash from the destination.
28774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_stripname '' '/' "$dest"
28784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    dest=$func_stripname_result
2879893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
28804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # Check to see that the destination is a directory.
28814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    test -d "$dest" && isdir=yes
28824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test "$isdir" = yes; then
28834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      destdir="$dest"
28844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      destname=
2885893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    else
28864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_dirname_and_basename "$dest" "" "."
28874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      destdir="$func_dirname_result"
28884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      destname="$func_basename_result"
2889893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
28904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Not a directory, so check to see that there is only one file specified.
28914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      set dummy $files; shift
28924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test "$#" -gt 1 && \
28934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_fatal_help "\`$dest' is not a directory"
2894893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    fi
28954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    case $destdir in
28964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    [\\/]* | [A-Za-z]:[\\/]*) ;;
2897893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    *)
28984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      for file in $files; do
28994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $file in
29004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*.lo) ;;
29014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*)
29024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_fatal_help "\`$destdir' must be an absolute directory name"
29034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
29044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
29054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      done
2906893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      ;;
2907893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    esac
2908893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
29094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # This variable tells wrapper scripts just to set variables rather
29104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # than running their programs.
29114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    libtool_install_magic="$magic"
2912893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
29134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    staticlibs=
29144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    future_libdirs=
29154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    current_libdirs=
29164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    for file in $files; do
2917893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
29184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Do each installation.
29194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case $file in
29204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *.$libext)
29214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Do the static libraries later.
2922ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_append staticlibs " $file"
29234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
29244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
29254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *.la)
2926ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_resolve_sysroot "$file"
2927ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	file=$func_resolve_sysroot_result
2928ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
29294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Check to see that this really is a libtool archive.
29304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_lalib_unsafe_p "$file" \
29314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  || func_fatal_help "\`$file' is not a valid libtool archive"
29324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
29334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	library_names=
29344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	old_library=
29354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	relink_command=
29364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_source "$file"
29374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
29384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Add the libdir to current_libdirs if it is the destination.
29394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "X$destdir" = "X$libdir"; then
29404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case "$current_libdirs " in
29414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *" $libdir "*) ;;
2942ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *) func_append current_libdirs " $libdir" ;;
2943893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  esac
29444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	else
29454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Note the libdir as a future libdir.
29464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case "$future_libdirs " in
29474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *" $libdir "*) ;;
2948ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *) func_append future_libdirs " $libdir" ;;
29494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
29504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
2951893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
29524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_dirname "$file" "/" ""
29534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	dir="$func_dirname_result"
2954ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_append dir "$objdir"
29554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
29564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$relink_command"; then
29574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Determine the prefix the user has applied to our future dir.
2958ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
29594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
29604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Don't allow the user to place us outside of our expected
29614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # location b/c this prevents finding dependent libraries that
29624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # are installed to the same prefix.
29634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # At present, this check doesn't affect windows .dll's that
29644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # are installed into $libdir/../bin (currently, that works fine)
29654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # but it's something to keep an eye on.
29664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  test "$inst_prefix_dir" = "$destdir" && \
29674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
29684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
29694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$inst_prefix_dir"; then
29704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Stick the inst_prefix_dir data into the link command.
2971ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
29724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
2973ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
29744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
29754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
29764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_warning "relinking \`$file'"
29774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_show_eval "$relink_command" \
29784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
29794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
29804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
29814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# See the names of the shared library.
29824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	set dummy $library_names; shift
29834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$1"; then
29844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  realname="$1"
29854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  shift
29864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
29874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  srcname="$realname"
29884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  test -n "$relink_command" && srcname="$realname"T
29894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
29904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Install the shared library and build the symlinks.
2991ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
29924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      'exit $?'
29934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  tstripme="$stripme"
29944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case $host_os in
29955f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	  cygwin* | mingw* | pw32* | cegcc*)
29964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case $realname in
29974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *.dll.a)
29984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      tstripme=""
29994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      ;;
30004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
3001893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    ;;
3002893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  esac
30034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$tstripme" && test -n "$striplib"; then
30044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
3005893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  fi
30064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
30074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$#" -gt 0; then
30084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Delete the old symlinks, and create new ones.
30094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Try `ln -sf' first, because the `ln' binary might depend on
30104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
30114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # so we also need to try rm && ln -s.
30124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    for linkname
30134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    do
30144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      test "$linkname" != "$realname" \
30154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
3016893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    done
3017893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  fi
3018893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
30194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Do each command in the postinstall commands.
30204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  lib="$destdir/$realname"
30214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_execute_cmds "$postinstall_cmds" 'exit $?'
3022893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
3023893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
30244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Install the pseudo-library for information purposes.
30254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_basename "$file"
30264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	name="$func_basename_result"
30274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	instname="$dir/$name"i
30284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
3029893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
30304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Maybe install the static library, too.
3031ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
30324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
3033893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
30344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *.lo)
30354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Install (i.e. copy) a libtool object.
3036893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
30374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Figure out destination file name, if it wasn't already specified.
30384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$destname"; then
30394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  destfile="$destdir/$destname"
30404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	else
30414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_basename "$file"
30424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  destfile="$func_basename_result"
30434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  destfile="$destdir/$destfile"
30444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
30454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
30464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Deduce the name of the destination old-style object file.
30474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $destfile in
30484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*.lo)
30494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_lo2o "$destfile"
30504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  staticdest=$func_lo2o_result
30514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
30524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*.$objext)
30534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  staticdest="$destfile"
30544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  destfile=
30554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
30564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*)
30574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
30584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
3059893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	esac
3060893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
30614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Install the libtool object if requested.
30624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	test -n "$destfile" && \
30634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_show_eval "$install_prog $file $destfile" 'exit $?'
30644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
30654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Install the old object if enabled.
30664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$build_old_libs" = yes; then
30674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Deduce the name of the old-style object file.
30684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_lo2o "$file"
30694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  staticobj=$func_lo2o_result
30704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
3071893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
30724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	exit $EXIT_SUCCESS
30734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
3074893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
30754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *)
30764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Figure out destination file name, if it wasn't already specified.
30774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$destname"; then
30784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  destfile="$destdir/$destname"
30794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	else
30804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_basename "$file"
30814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  destfile="$func_basename_result"
30824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  destfile="$destdir/$destfile"
30834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
30844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
30854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# If the file is missing, and there is a .exe on the end, strip it
30864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# because it is most likely a libtool script we actually want to
30874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# install
30884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	stripped_ext=""
30894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $file in
30904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *.exe)
30914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test ! -f "$file"; then
30924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_stripname '' '.exe' "$file"
30934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      file=$func_stripname_result
30944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      stripped_ext=".exe"
3095893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    fi
30964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
30974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
3098893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
30994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Do a test to see if this is really a libtool program.
31004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $host in
31015f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	*cygwin* | *mingw*)
31024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if func_ltwrapper_executable_p "$file"; then
31034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_ltwrapper_scriptname "$file"
31044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      wrapper=$func_ltwrapper_scriptname_result
31054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
31064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_stripname '' '.exe' "$file"
31074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      wrapper=$func_stripname_result
31084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
31094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
31104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*)
31114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    wrapper=$file
31124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
31134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
31144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if func_ltwrapper_script_p "$wrapper"; then
31154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  notinst_deplibs=
31164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  relink_command=
3117893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
31184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_source "$wrapper"
3119893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
31204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Check the variables that should have been set.
31214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  test -z "$generated_by_libtool_version" && \
31224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
31234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
31244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  finalize=yes
31254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for lib in $notinst_deplibs; do
31264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Check to see that each library is installed.
31274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    libdir=
31284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -f "$lib"; then
31294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_source "$lib"
31304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
3131ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
31324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -n "$libdir" && test ! -f "$libfile"; then
31334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_warning "\`$lib' has not been installed in \`$libdir'"
31344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      finalize=no
31354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
31364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  done
31374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
31384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  relink_command=
31394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_source "$wrapper"
31404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
31414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  outputname=
31424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$fast_install" = no && test -n "$relink_command"; then
31434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    $opt_dry_run || {
31444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test "$finalize" = yes; then
31454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	        tmpdir=`func_mktempdir`
31464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		func_basename "$file$stripped_ext"
31474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		file="$func_basename_result"
31484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	        outputname="$tmpdir/$file"
31494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	        # Replace the output file specification.
3150ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
31514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
31524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	        $opt_silent || {
31534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	          func_quote_for_expand "$relink_command"
31544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  eval "func_echo $func_quote_for_expand_result"
31554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	        }
31564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	        if eval "$relink_command"; then :
31574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	          else
31584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  func_error "error: relink \`$file' with the above command before installing it"
31594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  $opt_dry_run || ${RM}r "$tmpdir"
31604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  continue
31614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	        fi
31624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	        file="$outputname"
31634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      else
31644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	        func_warning "cannot relink \`$file'"
31654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
31664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    }
3167893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  else
31684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Install the binary that we compiled earlier.
3169ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
3170893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  fi
31714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
3172893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
31734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# remove .exe since cygwin /usr/bin/install will append another
31744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# one anyway
31754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $install_prog,$host in
31764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*/usr/bin/install*,*cygwin*)
31774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case $file:$destfile in
31784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *.exe:*.exe)
31794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # this is ok
31804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
31814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *.exe:*)
31824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    destfile=$destfile.exe
31834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
31844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *:*.exe)
31854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_stripname '' '.exe' "$destfile"
31864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    destfile=$func_stripname_result
31874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
31884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
3189893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  ;;
3190893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	esac
31914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
31924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	$opt_dry_run || if test -n "$outputname"; then
31934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ${RM}r "$tmpdir"
31944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
31954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
31964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      esac
31974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    done
3198893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
31994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    for file in $staticlibs; do
32004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_basename "$file"
32014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      name="$func_basename_result"
3202893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
32034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Set up the ranlib parameters.
32044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      oldlib="$destdir/$name"
3205ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
3206ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      tool_oldlib=$func_to_tool_file_result
3207893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
32084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
3209893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
32104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$stripme" && test -n "$old_striplib"; then
3211ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
32124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
3213893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
32144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Do each command in the postinstall commands.
32154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
32164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    done
3217893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
32184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    test -n "$future_libdirs" && \
32194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_warning "remember to run \`$progname --finish$future_libdirs'"
3220893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
32214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test -n "$current_libdirs"; then
32224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Maybe just do a dry run.
32234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      $opt_dry_run && current_libdirs=" -n$current_libdirs"
32244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
32254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    else
32264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      exit $EXIT_SUCCESS
32274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
32284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
3229893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
3230ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiktest "$opt_mode" = install && func_mode_install ${1+"$@"}
3231893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
3232893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
32334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_generate_dlsyms outputname originator pic_p
32344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Extract symbols from dlprefiles and create ${outputname}S.o with
32354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# a dlpreopen symbol table.
32364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_generate_dlsyms ()
32374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
32384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $opt_debug
32394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    my_outputname="$1"
32404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    my_originator="$2"
32414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    my_pic_p="${3-no}"
32424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
32434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    my_dlsyms=
32444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
32454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
32464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$NM" && test -n "$global_symbol_pipe"; then
32474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	my_dlsyms="${my_outputname}S.c"
32484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      else
32494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_error "not configured to extract global symbols from dlpreopened files"
32504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
32514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
3252893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
32534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test -n "$my_dlsyms"; then
32544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case $my_dlsyms in
32554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      "") ;;
32564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *.c)
32574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Discover the nlist of each of the dlfiles.
32584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	nlist="$output_objdir/${my_outputname}.nm"
32594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
32604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
32614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
32624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Parse the name list into a source file.
32634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_verbose "creating $output_objdir/$my_dlsyms"
32644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
32654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
32664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
32674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
32684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
32694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifdef __cplusplus
32704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectextern \"C\" {
32714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif
32724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
3273ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
3274ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
3275ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#endif
3276ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
3277ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
3278ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
3279ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik/* DATA imports from DLLs on WIN32 con't be const, because runtime
3280ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik   relocations are performed -- see ld's documentation on pseudo-relocs.  */
3281ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define LT_DLSYM_CONST
3282ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#elif defined(__osf__)
3283ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik/* This system does not cope well with relocations in const data.  */
3284ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define LT_DLSYM_CONST
3285ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#else
3286ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define LT_DLSYM_CONST const
3287ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#endif
3288ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
32894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* External symbol declarations for the compiler. */\
32904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"
32914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
32924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$dlself" = yes; then
32934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_verbose "generating symbol list for \`$output'"
32944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
32954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
32964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
32974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Add our own program objects to the symbol list.
3298ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
32994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for progfile in $progfiles; do
3300ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
3301ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
3302ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
33034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  done
33044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
33054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$exclude_expsyms"; then
33064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    $opt_dry_run || {
33074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
33084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      eval '$MV "$nlist"T "$nlist"'
33094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    }
3310893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  fi
3311893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
33124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$export_symbols_regex"; then
33134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    $opt_dry_run || {
33144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
33154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      eval '$MV "$nlist"T "$nlist"'
33164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    }
3317893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  fi
33184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
33194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Prepare the list of exported symbols
33204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -z "$export_symbols"; then
33214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    export_symbols="$output_objdir/$outputname.exp"
33224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    $opt_dry_run || {
33234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      $RM $export_symbols
33244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
33254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case $host in
33265f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	      *cygwin* | *mingw* | *cegcc* )
33274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
33284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
33294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	        ;;
3330893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	      esac
33314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    }
33324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
33334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    $opt_dry_run || {
33344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
33354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
33364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      eval '$MV "$nlist"T "$nlist"'
33374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case $host in
3338ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        *cygwin* | *mingw* | *cegcc* )
33394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
33404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
33414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	          ;;
3342893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	      esac
33434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    }
3344893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  fi
33454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
3346893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
33474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	for dlprefile in $dlprefiles; do
33484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_verbose "extracting global C symbols from \`$dlprefile'"
33494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_basename "$dlprefile"
33504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  name="$func_basename_result"
3351ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik          case $host in
3352ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    *cygwin* | *mingw* | *cegcc* )
3353ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      # if an import library, we need to obtain dlname
3354ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      if func_win32_import_lib_p "$dlprefile"; then
3355ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        func_tr_sh "$dlprefile"
3356ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
3357ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        dlprefile_dlbasename=""
3358ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
3359ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	          # Use subshell, to avoid clobbering current variable values
3360ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
3361ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	          if test -n "$dlprefile_dlname" ; then
3362ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	            func_basename "$dlprefile_dlname"
3363ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	            dlprefile_dlbasename="$func_basename_result"
3364ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	          else
3365ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	            # no lafile. user explicitly requested -dlpreopen <import library>.
3366ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	            $sharedlib_from_linklib_cmd "$dlprefile"
3367ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	            dlprefile_dlbasename=$sharedlib_from_linklib_result
3368ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	          fi
3369ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        fi
3370ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        $opt_dry_run || {
3371ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	          if test -n "$dlprefile_dlbasename" ; then
3372ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
3373ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	          else
3374ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	            func_warning "Could not compute DLL name from $name"
3375ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	            eval '$ECHO ": $name " >> "$nlist"'
3376ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	          fi
3377ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3378ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
3379ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
3380ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        }
3381ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      else # not an import lib
3382ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        $opt_dry_run || {
3383ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	          eval '$ECHO ": $name " >> "$nlist"'
3384ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3385ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3386ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        }
3387ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      fi
3388ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    ;;
3389ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    *)
3390ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      $opt_dry_run || {
3391ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        eval '$ECHO ": $name " >> "$nlist"'
3392ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3393ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3394ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      }
3395ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    ;;
3396ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik          esac
33974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	done
3398893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
33994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	$opt_dry_run || {
34004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Make sure we have at least an empty file.
34014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  test -f "$nlist" || : > "$nlist"
3402893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
34034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$exclude_expsyms"; then
34044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
34054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    $MV "$nlist"T "$nlist"
3406893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  fi
3407893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
34084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Try sorting and uniquifying the output.
34094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if $GREP -v "^: " < "$nlist" |
34104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if sort -k 3 </dev/null >/dev/null 2>&1; then
34114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		sort -k 3
3412893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	      else
34134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		sort +2
34144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi |
34154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      uniq > "$nlist"S; then
34164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    :
3417893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  else
34184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    $GREP -v "^: " < "$nlist" > "$nlist"S
3419893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  fi
3420893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
34214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -f "$nlist"S; then
34224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
3423893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  else
3424ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
3425893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  fi
3426893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
3427ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  echo >> "$output_objdir/$my_dlsyms" "\
3428893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
34294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* The mapping between symbol names and symbols.  */
34304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecttypedef struct {
34314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  const char *name;
34324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  void *address;
34334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} lt_dlsymlist;
3434ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikextern LT_DLSYM_CONST lt_dlsymlist
34354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlt_${my_prefix}_LTX_preloaded_symbols[];
3436ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikLT_DLSYM_CONST lt_dlsymlist
34374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlt_${my_prefix}_LTX_preloaded_symbols[] =
34384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{\
34394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  { \"$my_originator\", (void *) 0 },"
3440893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
34414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case $need_lib_prefix in
34424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  no)
34434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
34444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
34454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *)
34464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
34474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
34484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
3449ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  echo >> "$output_objdir/$my_dlsyms" "\
34504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  {0, (void *) 0}
34514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project};
3452893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
34534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* This works around a problem in FreeBSD linker */
34544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifdef FREEBSD_WORKAROUND
34554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectstatic const void *lt_preloaded_setup() {
34564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  return lt_${my_prefix}_LTX_preloaded_symbols;
34574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
34584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif
3459893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
34604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifdef __cplusplus
34614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
34624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif\
34634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"
34644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	} # !$opt_dry_run
3465893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
34664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	pic_flag_for_symtable=
34674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case "$compile_command " in
34684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*" -static "*) ;;
34694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*)
34704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case $host in
34714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # compiling the symbol table file with pic_flag works around
34724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # a FreeBSD bug that causes programs to crash when -lm is
34734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # linked before any other PIC object.  But we must not use
34744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # pic_flag when linking with -static.  The problem exists in
34754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
3476ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
34774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
34784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *-*-hpux*)
34794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    pic_flag_for_symtable=" $pic_flag"  ;;
34804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *)
34814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "X$my_pic_p" != Xno; then
34824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      pic_flag_for_symtable=" $pic_flag"
34834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
34844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
34854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
34864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
34874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
34884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	symtab_cflags=
34894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	for arg in $LTCFLAGS; do
34904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case $arg in
34914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  -pie | -fpie | -fPIE) ;;
3492ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *) func_append symtab_cflags " $arg" ;;
34934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
34944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	done
3495893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
34964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Now compile the dynamic symbol file.
34974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
3498893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
34994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Clean up the generated files.
35004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
3501893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
35024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Transform the symbol file into the correct name.
35034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	symfileobj="$output_objdir/${my_outputname}S.$objext"
35044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $host in
35055f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	*cygwin* | *mingw* | *cegcc* )
35064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -f "$output_objdir/$my_outputname.def"; then
3507ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3508ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
35094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
3510ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3511ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
35124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
35134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
35144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*)
3515ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3516ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
35174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
35184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
3519893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	;;
3520893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      *)
35214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_fatal_error "unknown suffix for \`$my_dlsyms'"
3522893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	;;
3523893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      esac
35244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    else
35254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # We keep going just in case the user didn't refer to
35264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
35274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # really was required.
3528893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
35294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Nullify the symbol file.
3530ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
3531ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
35324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
35334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
3534893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
35354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_win32_libid arg
35364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# return the library type of file 'arg'
35374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#
35384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Need a lot of goo to handle *both* DLLs and import libs
35394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Has to be a shell function in order to 'eat' the argument
35404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# that is supplied when $file_magic_command is called.
3541ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Despite the name, also deal with 64 bit binaries.
35424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_win32_libid ()
35434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
35444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  $opt_debug
35454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  win32_libid_type="unknown"
35464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  win32_fileres=`file -L $1 2>/dev/null`
35474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  case $win32_fileres in
35484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  *ar\ archive\ import\ library*) # definitely import
35494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    win32_libid_type="x86 archive import"
35504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    ;;
35514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  *ar\ archive*) # could be an import, or static
3552ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
35534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
3554ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
3555ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_to_tool_file "$1" func_convert_file_msys_to_w32
3556ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
35574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	$SED -n -e '
35584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    1,100{
35594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		/ I /{
35604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    s,.*,import,
35614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    p
35624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    q
35634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		}
35644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    }'`
35654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case $win32_nmres in
35664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      import*)  win32_libid_type="x86 archive import";;
35674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *)        win32_libid_type="x86 archive static";;
35684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      esac
35694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
35704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    ;;
35714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  *DLL*)
35724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    win32_libid_type="x86 DLL"
35734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    ;;
35744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  *executable*) # but shell scripts are "executable" too...
35754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    case $win32_fileres in
35764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    *MS\ Windows\ PE\ Intel*)
35774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      win32_libid_type="x86 DLL"
35784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      ;;
35794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    esac
35804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    ;;
35814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  esac
35824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  $ECHO "$win32_libid_type"
35834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
3584893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
3585ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_cygming_dll_for_implib ARG
3586ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#
3587ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Platform-specific function to extract the
3588ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# name of the DLL associated with the specified
3589ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# import library ARG.
3590ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Invoked by eval'ing the libtool variable
3591ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#    $sharedlib_from_linklib_cmd
3592ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Result is available in the variable
3593ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#    $sharedlib_from_linklib_result
3594ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_cygming_dll_for_implib ()
3595ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
3596ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
3597ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
3598ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
3599ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
3600ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
3601ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#
3602ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# The is the core of a fallback implementation of a
3603ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# platform-specific function to extract the name of the
3604ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# DLL associated with the specified import library LIBNAME.
3605ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#
3606ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# SECTION_NAME is either .idata$6 or .idata$7, depending
3607ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# on the platform and compiler that created the implib.
3608ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#
3609ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Echos the name of the DLL associated with the
3610ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# specified import library.
3611ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_cygming_dll_for_implib_fallback_core ()
3612ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
3613ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
3614ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
3615ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
3616ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    $SED '/^Contents of section '"$match_literal"':/{
3617ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # Place marker at beginning of archive member dllname section
3618ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      s/.*/====MARK====/
3619ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      p
3620ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      d
3621ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    }
3622ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # These lines can sometimes be longer than 43 characters, but
3623ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # are always uninteresting
3624ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    /:[	 ]*file format pe[i]\{,1\}-/d
3625ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    /^In archive [^:]*:/d
3626ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # Ensure marker is printed
3627ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    /^====MARK====/p
3628ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # Remove all lines with less than 43 characters
3629ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    /^.\{43\}/!d
3630ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # From remaining lines, remove first 43 characters
3631ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    s/^.\{43\}//' |
3632ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    $SED -n '
3633ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # Join marker and all lines until next marker into a single line
3634ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      /^====MARK====/ b para
3635ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      H
3636ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      $ b para
3637ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      b
3638ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      :para
3639ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      x
3640ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      s/\n//g
3641ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # Remove the marker
3642ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      s/^====MARK====//
3643ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # Remove trailing dots and whitespace
3644ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      s/[\. \t]*$//
3645ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # Print
3646ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      /./p' |
3647ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # we now have a list, one entry per line, of the stringified
3648ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # contents of the appropriate section of all members of the
3649ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # archive which possess that section. Heuristic: eliminate
3650ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # all those which have a first or second character that is
3651ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # a '.' (that is, objdump's representation of an unprintable
3652ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # character.) This should work for all archives with less than
3653ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # 0x302f exports -- but will fail for DLLs whose name actually
3654ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # begins with a literal '.' or a single character followed by
3655ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # a '.'.
3656ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    #
3657ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # Of those that remain, print the first one.
3658ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    $SED -e '/^\./d;/^.\./d;q'
3659ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
3660ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
3661ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_cygming_gnu_implib_p ARG
3662ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# This predicate returns with zero status (TRUE) if
3663ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# ARG is a GNU/binutils-style import library. Returns
3664ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# with nonzero status (FALSE) otherwise.
3665ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_cygming_gnu_implib_p ()
3666ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
3667ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
3668ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_to_tool_file "$1" func_convert_file_msys_to_w32
3669ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  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)$'`
3670ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  test -n "$func_cygming_gnu_implib_tmp"
3671ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
3672ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
3673ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_cygming_ms_implib_p ARG
3674ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# This predicate returns with zero status (TRUE) if
3675ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# ARG is an MS-style import library. Returns
3676ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# with nonzero status (FALSE) otherwise.
3677ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_cygming_ms_implib_p ()
3678ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
3679ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
3680ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_to_tool_file "$1" func_convert_file_msys_to_w32
3681ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
3682ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  test -n "$func_cygming_ms_implib_tmp"
3683ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
3684ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
3685ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_cygming_dll_for_implib_fallback ARG
3686ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Platform-specific function to extract the
3687ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# name of the DLL associated with the specified
3688ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# import library ARG.
3689ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#
3690ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# This fallback implementation is for use when $DLLTOOL
3691ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# does not support the --identify-strict option.
3692ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Invoked by eval'ing the libtool variable
3693ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#    $sharedlib_from_linklib_cmd
3694ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Result is available in the variable
3695ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#    $sharedlib_from_linklib_result
3696ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_cygming_dll_for_implib_fallback ()
3697ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
3698ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $opt_debug
3699ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if func_cygming_gnu_implib_p "$1" ; then
3700ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # binutils import library
3701ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
3702ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  elif func_cygming_ms_implib_p "$1" ; then
3703ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # ms-generated import library
3704ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
3705ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  else
3706ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # unknown
3707ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    sharedlib_from_linklib_result=""
3708ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
3709ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
3710893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
3711893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
37124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_extract_an_archive dir oldlib
37134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_extract_an_archive ()
37144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
37154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $opt_debug
37164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    f_ex_an_ar_dir="$1"; shift
37174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    f_ex_an_ar_oldlib="$1"
3718ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    if test "$lock_old_archive_extraction" = yes; then
3719ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      lockfile=$f_ex_an_ar_oldlib.lock
3720ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
3721ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_echo "Waiting for $lockfile to be removed"
3722ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	sleep 2
3723ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      done
3724ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    fi
3725ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
3726ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		   'stat=$?; rm -f "$lockfile"; exit $stat'
3727ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    if test "$lock_old_archive_extraction" = yes; then
3728ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      $opt_dry_run || rm -f "$lockfile"
3729ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    fi
37304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
37314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project     :
37324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    else
37334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
37344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
37354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
3736893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
3737893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
37384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_extract_archives gentop oldlib ...
37394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_extract_archives ()
37404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
37414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $opt_debug
37424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    my_gentop="$1"; shift
37434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    my_oldlibs=${1+"$@"}
37444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    my_oldobjs=""
37454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    my_xlib=""
37464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    my_xabs=""
37474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    my_xdir=""
3748893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
37494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    for my_xlib in $my_oldlibs; do
37504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Extract the objects.
37514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case $my_xlib in
37524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
37534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*) my_xabs=`pwd`"/$my_xlib" ;;
37544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      esac
37554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_basename "$my_xlib"
37564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      my_xlib="$func_basename_result"
37574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      my_xlib_u=$my_xlib
37584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      while :; do
37594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        case " $extracted_archives " in
37604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*" $my_xlib_u "*)
37614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_arith $extracted_serial + 1
37624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  extracted_serial=$func_arith_result
37634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
37644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*) break ;;
3765893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	esac
37664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      done
37674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      extracted_archives="$extracted_archives $my_xlib_u"
37684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      my_xdir="$my_gentop/$my_xlib_u"
3769893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
37704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_mkdir_p "$my_xdir"
3771893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
37724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case $host in
37734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *-darwin*)
37744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_verbose "Extracting $my_xabs"
37754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Do not bother doing anything if just a dry run
37764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	$opt_dry_run || {
37774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  darwin_orig_dir=`pwd`
37784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  cd $my_xdir || exit $?
37794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  darwin_archive=$my_xabs
37804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  darwin_curdir=`pwd`
37814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  darwin_base_archive=`basename "$darwin_archive"`
37824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
37834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$darwin_arches"; then
37844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
37854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    darwin_arch=
37864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
37874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    for darwin_arch in  $darwin_arches ; do
37884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
37894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
37904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
37914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
37924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      cd "$darwin_curdir"
37934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
37944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    done # $darwin_arches
37954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
37964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
37974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    darwin_file=
37984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    darwin_files=
37994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    for darwin_file in $darwin_filelist; do
3800ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
38014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      $LIPO -create -output "$darwin_file" $darwin_files
38024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    done # $darwin_filelist
38034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    $RM -rf unfat-$$
38044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    cd "$darwin_orig_dir"
38054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
38064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    cd $darwin_orig_dir
38074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_extract_an_archive "$my_xdir" "$my_xabs"
38084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi # $darwin_arches
38094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	} # !$opt_dry_run
38104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
38114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *)
38124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        func_extract_an_archive "$my_xdir" "$my_xabs"
38134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
38144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      esac
3815ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
38164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    done
3817893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
38184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_extract_archives_result="$my_oldobjs"
38194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
3820893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
38214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
3822ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_emit_wrapper [arg=no]
3823ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#
3824ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Emit a libtool wrapper script on stdout.
3825ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Don't directly open a file because we may want to
3826ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# incorporate the script contents within a cygwin/mingw
3827ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# wrapper executable.  Must ONLY be called from within
3828ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_mode_link because it depends on a number of variables
3829ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# set therein.
38304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#
3831ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
3832ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# variable will take.  If 'yes', then the emitted script
3833ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# will assume that the directory in which it is stored is
3834ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# the $objdir directory.  This is a cygwin/mingw-specific
3835ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# behavior.
3836ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_emit_wrapper ()
38374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
3838ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_emit_wrapper_arg1=${1-no}
3839893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
38404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	$ECHO "\
38414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#! $SHELL
3842893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
38434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# $output - temporary wrapper script for $objdir/$outputname
38444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
38454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#
38464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# The $output program cannot be directly executed until all the libtool
38474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# libraries that it depends on are installed.
38484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#
38494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This wrapper script should never be moved out of the build directory.
38504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# If it is, it will not operate correctly.
3851893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
38524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Sed substitution that helps us do robust quoting.  It backslashifies
38534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# metacharacters that are still active within double-quoted strings.
38544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectsed_quote_subst='$sed_quote_subst'
3855893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
38564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Be Bourne compatible
38574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
38584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  emulate sh
38594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  NULLCMD=:
38604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
38614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  # is contrary to our usage.  Disable this feature.
38624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  alias -g '\${1+\"\$@\"}'='\"\$@\"'
38634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  setopt NO_GLOB_SUBST
38644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectelse
38654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
38664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfi
38674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectBIN_SH=xpg4; export BIN_SH # for Tru64
38684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectDUALCASE=1; export DUALCASE # for MKS sh
3869893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
38704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# The HP-UX ksh and POSIX shell print the target directory to stdout
38714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# if CDPATH is set.
38724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
3873893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
38744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectrelink_command=\"$relink_command\"
3875893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
38764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This environment variable determines our operation mode.
38774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectif test \"\$libtool_install_magic\" = \"$magic\"; then
38784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  # install mode needs the following variables:
38794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  generated_by_libtool_version='$macro_version'
38804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  notinst_deplibs='$notinst_deplibs'
38814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectelse
38824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  # When we are sourced in execute mode, \$file and \$ECHO are already set.
38834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if test \"\$libtool_execute_magic\" != \"$magic\"; then
3884ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    file=\"\$0\""
3885ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
3886ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
3887ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    $ECHO "\
3888ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
3889ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# A function that is used when there is no print builtin or printf.
3890ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_fallback_echo ()
3891ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
3892ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  eval 'cat <<_LTECHO_EOF
3893ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik\$1
3894ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik_LTECHO_EOF'
3895ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
3896ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    ECHO=\"$qECHO\"
3897ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
3898ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
3899ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Very basic option parsing. These options are (a) specific to
3900ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# the libtool wrapper, (b) are identical between the wrapper
3901ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# /script/ and the wrapper /executable/ which is used only on
3902ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# windows platforms, and (c) all begin with the string "--lt-"
3903ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# (application programs are unlikely to have options which match
3904ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# this pattern).
3905ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#
3906ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# There are only two supported options: --lt-debug and
3907ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# --lt-dump-script. There is, deliberately, no --lt-help.
3908ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#
3909ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# The first argument to this parsing function should be the
3910ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# script's $0 value, followed by "$@".
3911ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiklt_option_debug=
3912ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_parse_lt_options ()
3913ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
3914ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  lt_script_arg0=\$0
3915ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  shift
3916ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  for lt_opt
3917ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  do
3918ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    case \"\$lt_opt\" in
3919ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    --lt-debug) lt_option_debug=1 ;;
3920ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    --lt-dump-script)
3921ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
3922ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
3923ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
3924ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        cat \"\$lt_dump_D/\$lt_dump_F\"
3925ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        exit 0
3926ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      ;;
3927ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    --lt-*)
3928ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
3929ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        exit 1
3930ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      ;;
3931ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    esac
3932ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  done
3933ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
3934ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # Print the debug banner immediately:
3935ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if test -n \"\$lt_option_debug\"; then
3936ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
3937ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fi
3938ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
3939ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
3940ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Used when --lt-debug. Prints its arguments to stdout
3941ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# (redirection is the responsibility of the caller)
3942ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_lt_dump_args ()
3943ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
3944ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  lt_dump_args_N=1;
3945ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  for lt_arg
3946ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  do
3947ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
3948ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
3949ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  done
3950ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
3951ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
3952ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Core function for launching the target application
3953ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_exec_program_core ()
3954ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
39554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"
3956ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  case $host in
3957ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # Backslashes separate directories on plain windows
3958ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  *-*-mingw | *-*-os2* | *-cegcc*)
3959ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    $ECHO "\
3960ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if test -n \"\$lt_option_debug\"; then
3961ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
3962ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        func_lt_dump_args \${1+\"\$@\"} 1>&2
3963ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      fi
3964ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
3965ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik"
3966ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    ;;
3967ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
3968ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  *)
3969ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    $ECHO "\
3970ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if test -n \"\$lt_option_debug\"; then
3971ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
3972ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        func_lt_dump_args \${1+\"\$@\"} 1>&2
3973ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      fi
3974ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      exec \"\$progdir/\$program\" \${1+\"\$@\"}
3975ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik"
3976ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    ;;
3977ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  esac
3978ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  $ECHO "\
3979ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
3980ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      exit 1
3981ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
3982ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
3983ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# A function to encapsulate launching the target application
3984ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Strips options in the --lt-* namespace from \$@ and
3985ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# launches target application with the remaining arguments.
3986ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_exec_program ()
3987ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
3988ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  case \" \$* \" in
3989ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  *\\ --lt-*)
3990ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    for lt_wr_arg
3991ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    do
3992ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      case \$lt_wr_arg in
3993ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      --lt-*) ;;
3994ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
3995ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      esac
3996ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      shift
3997ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    done ;;
3998ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  esac
3999ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_exec_program_core \${1+\"\$@\"}
4000ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
4001ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
4002ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  # Parse options
4003ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
4004893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
40054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  # Find the directory that this script lives in.
4006ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
40074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
4008893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
40094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  # Follow symbolic links until we get to the real thisdir.
4010ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
40114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  while test -n \"\$file\"; do
4012ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
4013893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
40144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # If there was a directory component, then change thisdir.
40154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test \"x\$destdir\" != \"x\$file\"; then
40164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case \"\$destdir\" in
40174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
40184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *) thisdir=\"\$thisdir/\$destdir\" ;;
40194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      esac
40204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
4021893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
4022ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
4023ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
40244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  done
4025893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
40264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  # Usually 'no', except on cygwin/mingw when embedded into
40274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  # the cwrapper.
4028ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
40294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
40304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # special case for '.'
40314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test \"\$thisdir\" = \".\"; then
40324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      thisdir=\`pwd\`
40334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
40344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # remove .libs from thisdir
40354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    case \"\$thisdir\" in
4036ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
40374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $objdir )   thisdir=. ;;
40384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    esac
40394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  fi
4040893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
40414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  # Try to get the absolute directory name.
40424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  absdir=\`cd \"\$thisdir\" && pwd\`
40434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  test -n \"\$absdir\" && thisdir=\"\$absdir\"
40444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"
4045893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
40464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$fast_install" = yes; then
40474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  $ECHO "\
40484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  program=lt-'$outputname'$exeext
40494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  progdir=\"\$thisdir/$objdir\"
4050893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
40514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if test ! -f \"\$progdir/\$program\" ||
40524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
40534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
4054893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
40554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    file=\"\$\$-\$program\"
4056893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
40574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test ! -d \"\$progdir\"; then
40584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      $MKDIR \"\$progdir\"
40594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    else
40604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      $RM \"\$progdir/\$file\"
40614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi"
4062893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
40634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  $ECHO "\
40644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
40654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # relink executable if necessary
40664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test -n \"\$relink_command\"; then
40674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
40684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      else
40694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	$ECHO \"\$relink_command_output\" >&2
40704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	$RM \"\$progdir/\$file\"
40714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	exit 1
4072893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
40734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
4074893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
40754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
40764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    { $RM \"\$progdir/\$program\";
40774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
40784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $RM \"\$progdir/\$file\"
40794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  fi"
40804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	else
40814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  $ECHO "\
40824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  program='$outputname'
40834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  progdir=\"\$thisdir/$objdir\"
40844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"
4085893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
4086893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
40874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	$ECHO "\
4088893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
40894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if test -f \"\$progdir/\$program\"; then"
4090893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
4091ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	# fixup the dll searchpath if we need to.
4092ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	#
4093ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	# Fix the DLL searchpath if we need to.  Do this before prepending
4094ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	# to shlibpath, because on Windows, both are PATH and uninstalled
4095ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	# libraries must come first.
4096ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	if test -n "$dllsearchpath"; then
4097ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  $ECHO "\
4098ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    # Add the dll search path components to the executable PATH
4099ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    PATH=$dllsearchpath:\$PATH
4100ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik"
4101ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	fi
4102ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
41034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Export our shlibpath_var if we have one.
41044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
41054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  $ECHO "\
41064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # Add our own library path to $shlibpath_var
41074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
4108893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
41094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # Some systems cannot cope with colon-terminated $shlibpath_var
41104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # The second colon is a workaround for a bug in BeOS R4 sed
4111ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
41124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
41134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    export $shlibpath_var
41144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"
4115893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
4116893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
41174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	$ECHO "\
41184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test \"\$libtool_execute_magic\" != \"$magic\"; then
41194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Run the actual program with our arguments.
4120ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_exec_program \${1+\"\$@\"}
41214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
41224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  else
41234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # The program doesn't exist.
41244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
41254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
4126ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
41274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    exit 1
41284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  fi
41294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfi\
41304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"
41314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
41325f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott
4133893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
41344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_emit_cwrapperexe_src
41354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# emit the source code for a wrapper executable on stdout
41364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Must ONLY be called from within func_mode_link because
41374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# it depends on a number of variable set therein.
41384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_emit_cwrapperexe_src ()
41394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
41404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	cat <<EOF
4141893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
41424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
41434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
41444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
41454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project   The $output program cannot be directly executed until all the libtool
41464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project   libraries that it depends on are installed.
41474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
41484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project   This wrapper executable should never be moved out of the build directory.
41494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project   If it is, it will not operate correctly.
41504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project*/
4151893912bfc2683463dc3e2c445336752d012563d3The Android Open Source ProjectEOF
41524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    cat <<"EOF"
4153ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#ifdef _MSC_VER
4154ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define _CRT_SECURE_NO_DEPRECATE 1
4155ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#endif
41564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <stdio.h>
41574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <stdlib.h>
41584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifdef _MSC_VER
41594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# include <direct.h>
41604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# include <process.h>
41614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# include <io.h>
41624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#else
41634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# include <unistd.h>
41644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# include <stdint.h>
41654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# ifdef __CYGWIN__
41664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#  include <io.h>
41674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# endif
41684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif
41694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <malloc.h>
41704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <stdarg.h>
41714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <assert.h>
41724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <string.h>
41734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <ctype.h>
41744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <errno.h>
41754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <fcntl.h>
41764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <sys/stat.h>
41774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
4178ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik/* declarations of non-ANSI functions */
4179ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#if defined(__MINGW32__)
4180ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# ifdef __STRICT_ANSI__
4181ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikint _putenv (const char *);
4182ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# endif
4183ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#elif defined(__CYGWIN__)
4184ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# ifdef __STRICT_ANSI__
4185ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikchar *realpath (const char *, char *);
4186ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikint putenv (char *);
4187ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikint setenv (const char *, const char *, int);
4188ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# endif
4189ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik/* #elif defined (other platforms) ... */
4190ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#endif
4191ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
4192ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik/* portability defines, excluding path handling macros */
4193ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#if defined(_MSC_VER)
4194ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define setmode _setmode
4195ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define stat    _stat
4196ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define chmod   _chmod
4197ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define getcwd  _getcwd
4198ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define putenv  _putenv
4199ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define S_IXUSR _S_IEXEC
4200ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# ifndef _INTPTR_T_DEFINED
4201ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#  define _INTPTR_T_DEFINED
4202ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#  define intptr_t int
4203ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# endif
4204ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#elif defined(__MINGW32__)
4205ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define setmode _setmode
4206ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define stat    _stat
4207ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define chmod   _chmod
4208ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define getcwd  _getcwd
4209ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define putenv  _putenv
4210ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#elif defined(__CYGWIN__)
4211ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define HAVE_SETENV
4212ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define FOPEN_WB "wb"
4213ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik/* #elif defined (other platforms) ... */
4214ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#endif
4215ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
42164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#if defined(PATH_MAX)
42174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define LT_PATHMAX PATH_MAX
42184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#elif defined(MAXPATHLEN)
42194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define LT_PATHMAX MAXPATHLEN
42204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#else
42214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define LT_PATHMAX 1024
42224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif
42234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
42244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef S_IXOTH
42254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define S_IXOTH 0
42264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif
42274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef S_IXGRP
42284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define S_IXGRP 0
42294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif
42304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
4231ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik/* path handling portability macros */
42324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef DIR_SEPARATOR
42334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define DIR_SEPARATOR '/'
42344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define PATH_SEPARATOR ':'
42354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif
42364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
42374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
42384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  defined (__OS2__)
42394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define HAVE_DOS_BASED_FILE_SYSTEM
42404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define FOPEN_WB "wb"
42414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# ifndef DIR_SEPARATOR_2
42424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#  define DIR_SEPARATOR_2 '\\'
42434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# endif
42444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# ifndef PATH_SEPARATOR_2
42454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#  define PATH_SEPARATOR_2 ';'
42464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# endif
42474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif
42484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
42494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef DIR_SEPARATOR_2
42504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
42514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#else /* DIR_SEPARATOR_2 */
42524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define IS_DIR_SEPARATOR(ch) \
42534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
42544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif /* DIR_SEPARATOR_2 */
42554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
42564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef PATH_SEPARATOR_2
42574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
42584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#else /* PATH_SEPARATOR_2 */
42594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
42604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif /* PATH_SEPARATOR_2 */
42614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
42624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef FOPEN_WB
42634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define FOPEN_WB "w"
42644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif
42654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef _O_BINARY
42664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define _O_BINARY 0
42674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif
42684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
42694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
42704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#define XFREE(stale) do { \
42714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if (stale) { free ((void *) stale); stale = 0; } \
42724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} while (0)
42734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
4274ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#if defined(LT_DEBUGWRAPPER)
4275ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikstatic int lt_debug = 1;
42764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#else
4277ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikstatic int lt_debug = 0;
42784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif
42794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
4280ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
42814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
42824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectvoid *xmalloc (size_t num);
42834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar *xstrdup (const char *string);
42844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectconst char *base_name (const char *name);
42854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar *find_executable (const char *wrapper);
42864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar *chase_symlinks (const char *pathspec);
42874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectint make_executable (const char *path);
42884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectint check_executable (const char *path);
42894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar *strendzap (char *str, const char *pat);
4290ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikvoid lt_debugprintf (const char *file, int line, const char *fmt, ...);
4291ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikvoid lt_fatal (const char *file, int line, const char *message, ...);
4292ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikstatic const char *nonnull (const char *s);
4293ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikstatic const char *nonempty (const char *s);
42945f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid lt_setenv (const char *name, const char *value);
42955f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
42965f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid lt_update_exe_path (const char *name, const char *value);
42975f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid lt_update_lib_path (const char *name, const char *value);
4298ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikchar **prepare_spawn (char **argv);
4299ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikvoid lt_dump_script (FILE *f);
43005f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF
43014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
43024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    cat <<EOF
4303ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikvolatile const char * MAGIC_EXE = "$magic_exe";
43045f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * LIB_PATH_VARNAME = "$shlibpath_var";
43055f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF
43065f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott
43075f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4308ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik              func_to_host_path "$temp_rpath"
43095f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	      cat <<EOF
4310ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikconst char * LIB_PATH_VALUE   = "$func_to_host_path_result";
43115f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF
43125f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	    else
43135f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	      cat <<"EOF"
43145f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * LIB_PATH_VALUE   = "";
43155f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF
43165f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	    fi
43175f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott
43185f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	    if test -n "$dllsearchpath"; then
4319ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik              func_to_host_path "$dllsearchpath:"
43205f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	      cat <<EOF
43215f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * EXE_PATH_VARNAME = "PATH";
4322ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikconst char * EXE_PATH_VALUE   = "$func_to_host_path_result";
43235f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF
43245f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	    else
43255f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	      cat <<"EOF"
43265f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * EXE_PATH_VARNAME = "";
43275f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * EXE_PATH_VALUE   = "";
43285f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF
43295f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	    fi
43305f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott
43315f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	    if test "$fast_install" = yes; then
43325f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	      cat <<EOF
43335f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
43345f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF
43355f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	    else
43365f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	      cat <<EOF
43375f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
43385f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF
43395f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	    fi
43405f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott
43415f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott
43425f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	    cat <<"EOF"
43435f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott
43445f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott#define LTWRAPPER_OPTION_PREFIX         "--lt-"
43455f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott
43465f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
43475f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
4348ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikstatic const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
43494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
43504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectint
43514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectmain (int argc, char *argv[])
43524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
43534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  char **newargz;
43545f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  int  newargc;
43554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  char *tmp_pathspec;
43564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  char *actual_cwrapper_path;
43575f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  char *actual_cwrapper_name;
43585f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  char *target_name;
43595f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  char *lt_argv_zero;
43604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  intptr_t rval = 127;
43614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
43624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  int i;
43634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
43644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  program_name = (char *) xstrdup (base_name (argv[0]));
4365ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  newargz = XMALLOC (char *, argc + 1);
43664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
4367ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  /* very simple arg parsing; don't want to rely on getopt
4368ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik   * also, copy all non cwrapper options to newargz, except
4369ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik   * argz[0], which is handled differently
4370ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik   */
4371ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  newargc=0;
43724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  for (i = 1; i < argc; i++)
43734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    {
43744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if (strcmp (argv[i], dumpscript_opt) == 0)
43754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	{
43764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF
43774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case "$host" in
43784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *mingw* | *cygwin* )
43794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		# make stdout use "unix" line endings
43804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		echo "          setmode(1,_O_BINARY);"
43814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		;;
43824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
43834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
43845f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	    cat <<"EOF"
4385ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  lt_dump_script (stdout);
43864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  return 0;
43874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	}
4388ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if (strcmp (argv[i], debug_opt) == 0)
4389ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	{
4390ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik          lt_debug = 1;
4391ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik          continue;
4392ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	}
4393ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
4394ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        {
4395ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
4396ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik             namespace, but it is not one of the ones we know about and
4397ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik             have already dealt with, above (inluding dump-script), then
4398ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik             report an error. Otherwise, targets might begin to believe
4399ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
4400ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik             namespace. The first time any user complains about this, we'll
4401ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
4402ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik             or a configure.ac-settable value.
4403ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik           */
4404ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik          lt_fatal (__FILE__, __LINE__,
4405ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    "unrecognized %s option: '%s'",
4406ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik                    ltwrapper_option_prefix, argv[i]);
4407ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        }
4408ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      /* otherwise ... */
4409ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      newargz[++newargc] = xstrdup (argv[i]);
44104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    }
4411ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  newargz[++newargc] = NULL;
4412ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
4413ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikEOF
4414ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    cat <<EOF
4415ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  /* The GNU banner must be the first non-error debug message */
4416ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
4417ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikEOF
4418ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    cat <<"EOF"
4419ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
4420ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
44214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
44224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  tmp_pathspec = find_executable (argv[0]);
44234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if (tmp_pathspec == NULL)
4424ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
4425ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  lt_debugprintf (__FILE__, __LINE__,
4426ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik                  "(main) found exe (before symlink chase) at: %s\n",
4427ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  tmp_pathspec);
44284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
44294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
4430ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  lt_debugprintf (__FILE__, __LINE__,
4431ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik                  "(main) found exe (after symlink chase) at: %s\n",
4432ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  actual_cwrapper_path);
44334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  XFREE (tmp_pathspec);
44344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
4435ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
44365f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  strendzap (actual_cwrapper_path, actual_cwrapper_name);
44375f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott
44385f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  /* wrapper name transforms */
44395f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  strendzap (actual_cwrapper_name, ".exe");
44405f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
44415f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  XFREE (actual_cwrapper_name);
44425f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  actual_cwrapper_name = tmp_pathspec;
44434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  tmp_pathspec = 0;
44445f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott
44455f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  /* target_name transforms -- use actual target program name; might have lt- prefix */
44465f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
44475f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  strendzap (target_name, ".exe");
44485f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
44495f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  XFREE (target_name);
44505f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  target_name = tmp_pathspec;
44515f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  tmp_pathspec = 0;
44525f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott
4453ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  lt_debugprintf (__FILE__, __LINE__,
4454ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  "(main) libtool target name: %s\n",
4455ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  target_name);
44564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF
4457893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
44584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    cat <<EOF
44595f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  newargz[0] =
44604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    XMALLOC (char, (strlen (actual_cwrapper_path) +
44615f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
44625f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  strcpy (newargz[0], actual_cwrapper_path);
44635f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  strcat (newargz[0], "$objdir");
44645f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  strcat (newargz[0], "/");
44654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF
4466893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
44675f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	    cat <<"EOF"
44685f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  /* stop here, and copy so we don't have to do this twice */
44695f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  tmp_pathspec = xstrdup (newargz[0]);
44705f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott
44715f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
44725f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  strcat (newargz[0], actual_cwrapper_name);
44735f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott
44745f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  /* DO want the lt- prefix here if it exists, so use target_name */
44755f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
44765f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  XFREE (tmp_pathspec);
44775f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  tmp_pathspec = NULL;
44785f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF
4479893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
44804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case $host_os in
44814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      mingw*)
44824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    cat <<"EOF"
44834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  {
44844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    char* p;
44855f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    while ((p = strchr (newargz[0], '\\')) != NULL)
44865f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott      {
44875f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	*p = '/';
44885f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott      }
44895f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
44904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      {
44914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*p = '/';
44924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      }
44934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  }
44944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF
44954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
44964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
4497893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
44984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    cat <<"EOF"
44995f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  XFREE (target_name);
45004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  XFREE (actual_cwrapper_path);
45015f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  XFREE (actual_cwrapper_name);
4502893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
45035f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
45045f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
4505ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
4506ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
4507ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik     because on Windows, both *_VARNAMEs are PATH but uninstalled
4508ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik     libraries must come first. */
45095f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
4510ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
4511893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
4512ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
4513ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  nonnull (lt_argv_zero));
45145f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  for (i = 0; i < newargc; i++)
45154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    {
4516ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
4517ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		      i, nonnull (newargz[i]));
45184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    }
4519893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
45204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF
4521893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
45224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case $host_os in
45234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      mingw*)
45245f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott		cat <<"EOF"
45254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  /* execv doesn't actually work on mingw as expected on unix */
4526ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  newargz = prepare_spawn (newargz);
45275f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
45284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if (rval == -1)
45294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    {
45304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      /* failed to start process */
4531ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      lt_debugprintf (__FILE__, __LINE__,
4532ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		      "(main) failed to launch target \"%s\": %s\n",
4533ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		      lt_argv_zero, nonnull (strerror (errno)));
45344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      return 127;
45354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    }
45364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  return rval;
45374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF
45384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		;;
45394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *)
45405f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott		cat <<"EOF"
45415f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  execv (lt_argv_zero, newargz);
45424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  return rval; /* =127, but avoids unused variable warning */
45434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF
45444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		;;
45454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
4546893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
45474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    cat <<"EOF"
45485f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott}
4549893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
45504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectvoid *
45514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectxmalloc (size_t num)
45524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
45534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  void *p = (void *) malloc (num);
45544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if (!p)
4555ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    lt_fatal (__FILE__, __LINE__, "memory exhausted");
4556893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
45574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  return p;
45584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
4559893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
45604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar *
45614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectxstrdup (const char *string)
45624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
45634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
45644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			  string) : NULL;
45654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
4566893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
45674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectconst char *
45684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbase_name (const char *name)
45694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
45704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  const char *base;
4571893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
45724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
45734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  /* Skip over the disk name in MSDOS pathnames. */
45744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
45754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    name += 2;
45764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif
4577893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
45784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  for (base = name; *name; name++)
45794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if (IS_DIR_SEPARATOR (*name))
45804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      base = name + 1;
45814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  return base;
45824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
4583893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
45844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectint
45854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectcheck_executable (const char *path)
45864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
45874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  struct stat st;
4588893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
4589ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
4590ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik                  nonempty (path));
45914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if ((!path) || (!*path))
45924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    return 0;
4593893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
45944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if ((stat (path, &st) >= 0)
45954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
45964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    return 1;
45974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  else
45984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    return 0;
45994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
4600893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
46014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectint
46024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectmake_executable (const char *path)
46034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
46044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  int rval = 0;
46054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  struct stat st;
4606893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
4607ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
4608ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik                  nonempty (path));
46094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if ((!path) || (!*path))
46104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    return 0;
4611893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
46124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if (stat (path, &st) >= 0)
46134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    {
46144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
46154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    }
46164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  return rval;
46174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
4618893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
46194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* Searches for the full path of the wrapper.  Returns
46204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project   newly allocated full path name if found, NULL otherwise
46214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project   Does not chase symlinks, even on platforms that support them.
46224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project*/
46234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar *
46244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfind_executable (const char *wrapper)
46254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
46264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  int has_slash = 0;
46274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  const char *p;
46284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  const char *p_next;
46294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  /* static buffer for getcwd */
46304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  char tmp[LT_PATHMAX + 1];
46314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  int tmp_len;
46324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  char *concat_name;
4633893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
4634ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
4635ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik                  nonempty (wrapper));
4636893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
46374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if ((wrapper == NULL) || (*wrapper == '\0'))
46384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    return NULL;
4639893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
46404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  /* Absolute path? */
46414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
46424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
46434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    {
46444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      concat_name = xstrdup (wrapper);
46454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if (check_executable (concat_name))
46464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	return concat_name;
46474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      XFREE (concat_name);
46484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    }
46494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  else
46504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    {
46514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif
46524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if (IS_DIR_SEPARATOR (wrapper[0]))
46534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	{
46544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  concat_name = xstrdup (wrapper);
46554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if (check_executable (concat_name))
46564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    return concat_name;
46574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  XFREE (concat_name);
46584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	}
46594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
46604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    }
46614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif
4662893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
46634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  for (p = wrapper; *p; p++)
46644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if (*p == '/')
46654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      {
46664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	has_slash = 1;
46674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	break;
46684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      }
46694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if (!has_slash)
46704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    {
46714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      /* no slashes; search PATH */
46724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      const char *path = getenv ("PATH");
46734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if (path != NULL)
46744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	{
46754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for (p = path; *p; p = p_next)
46764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    {
46774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      const char *q;
46784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      size_t p_len;
46794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      for (q = p; *q; q++)
46804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		if (IS_PATH_SEPARATOR (*q))
46814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  break;
46824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      p_len = q - p;
46834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      p_next = (*q == '\0' ? q : q + 1);
46844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if (p_len == 0)
46854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		{
46864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  /* empty path: current directory */
46874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  if (getcwd (tmp, LT_PATHMAX) == NULL)
4688ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
4689ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik                              nonnull (strerror (errno)));
46904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  tmp_len = strlen (tmp);
46914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  concat_name =
46924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
46934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  memcpy (concat_name, tmp, tmp_len);
46944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  concat_name[tmp_len] = '/';
46954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  strcpy (concat_name + tmp_len + 1, wrapper);
46964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		}
46974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      else
46984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		{
46994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  concat_name =
47004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
47014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  memcpy (concat_name, p, p_len);
47024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  concat_name[p_len] = '/';
47034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  strcpy (concat_name + p_len + 1, wrapper);
47044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		}
47054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if (check_executable (concat_name))
47064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		return concat_name;
47074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      XFREE (concat_name);
47084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    }
47094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	}
47104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      /* not found in PATH; assume curdir */
47114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    }
47124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  /* Relative path | not found in path: prepend cwd */
47134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if (getcwd (tmp, LT_PATHMAX) == NULL)
4714ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
4715ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik              nonnull (strerror (errno)));
47164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  tmp_len = strlen (tmp);
47174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
47184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  memcpy (concat_name, tmp, tmp_len);
47194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  concat_name[tmp_len] = '/';
47204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  strcpy (concat_name + tmp_len + 1, wrapper);
4721893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
47224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if (check_executable (concat_name))
47234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    return concat_name;
47244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  XFREE (concat_name);
47254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  return NULL;
47264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
4727893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
47284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar *
47294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchase_symlinks (const char *pathspec)
47304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
47314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef S_ISLNK
47324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  return xstrdup (pathspec);
47334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#else
47344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  char buf[LT_PATHMAX];
47354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  struct stat s;
47364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  char *tmp_pathspec = xstrdup (pathspec);
47374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  char *p;
47384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  int has_symlinks = 0;
47394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  while (strlen (tmp_pathspec) && !has_symlinks)
47404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    {
4741ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      lt_debugprintf (__FILE__, __LINE__,
4742ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		      "checking path component for symlinks: %s\n",
4743ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		      tmp_pathspec);
47444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if (lstat (tmp_pathspec, &s) == 0)
47454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	{
47464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if (S_ISLNK (s.st_mode) != 0)
47474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    {
47484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      has_symlinks = 1;
47494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      break;
47504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    }
4751893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
47524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  /* search backwards for last DIR_SEPARATOR */
47534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
47544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
47554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    p--;
47564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
47574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    {
47584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      /* no more DIR_SEPARATORS left */
47594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      break;
47604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    }
47614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *p = '\0';
47624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	}
47634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      else
47644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	{
4765ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  lt_fatal (__FILE__, __LINE__,
4766ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    "error accessing file \"%s\": %s",
4767ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    tmp_pathspec, nonnull (strerror (errno)));
47684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	}
47694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    }
47704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  XFREE (tmp_pathspec);
4771893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
47724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if (!has_symlinks)
47734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    {
47744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      return xstrdup (pathspec);
47754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    }
4776893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
47774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  tmp_pathspec = realpath (pathspec, buf);
47784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if (tmp_pathspec == 0)
47794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    {
4780ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      lt_fatal (__FILE__, __LINE__,
4781ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		"could not follow symlinks for %s", pathspec);
47824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    }
47834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  return xstrdup (tmp_pathspec);
47844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif
47854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
4786893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
47874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar *
47884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectstrendzap (char *str, const char *pat)
47894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
47904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  size_t len, patlen;
4791893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
47924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  assert (str != NULL);
47934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  assert (pat != NULL);
4794893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
47954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  len = strlen (str);
47964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  patlen = strlen (pat);
4797893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
47984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if (patlen <= len)
47994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    {
48004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      str += len - patlen;
48014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if (strcmp (str, pat) == 0)
48024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*str = '\0';
48034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    }
48044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  return str;
48054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
4806893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
4807ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikvoid
4808ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiklt_debugprintf (const char *file, int line, const char *fmt, ...)
4809ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
4810ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  va_list args;
4811ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  if (lt_debug)
4812ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    {
4813ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
4814ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      va_start (args, fmt);
4815ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      (void) vfprintf (stderr, fmt, args);
4816ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      va_end (args);
4817ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    }
4818ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
4819ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
48204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectstatic void
4821ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiklt_error_core (int exit_status, const char *file,
4822ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	       int line, const char *mode,
48234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	       const char *message, va_list ap)
48244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
4825ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
48264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  vfprintf (stderr, message, ap);
48274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  fprintf (stderr, ".\n");
4828893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
48294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  if (exit_status >= 0)
48304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    exit (exit_status);
48314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
4832893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
48334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectvoid
4834ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiklt_fatal (const char *file, int line, const char *message, ...)
48354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
48364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  va_list ap;
48374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  va_start (ap, message);
4838ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
48394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  va_end (ap);
48404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
48415f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott
4842ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikstatic const char *
4843ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiknonnull (const char *s)
4844ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
4845ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  return s ? s : "(null)";
4846ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
4847ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
4848ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikstatic const char *
4849ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiknonempty (const char *s)
4850ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
4851ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  return (s && !*s) ? "(empty)" : nonnull (s);
4852ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
4853ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
48545f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid
48555f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottlt_setenv (const char *name, const char *value)
48565f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott{
4857ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  lt_debugprintf (__FILE__, __LINE__,
4858ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  "(lt_setenv) setting '%s' to '%s'\n",
4859ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik                  nonnull (name), nonnull (value));
48605f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  {
48615f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott#ifdef HAVE_SETENV
48625f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    /* always make a copy, for consistency with !HAVE_SETENV */
48635f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    char *str = xstrdup (value);
48645f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    setenv (name, str, 1);
48655f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott#else
48665f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    int len = strlen (name) + 1 + strlen (value) + 1;
48675f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    char *str = XMALLOC (char, len);
48685f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    sprintf (str, "%s=%s", name, value);
48695f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    if (putenv (str) != EXIT_SUCCESS)
48705f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott      {
48715f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott        XFREE (str);
48725f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott      }
48735f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott#endif
48745f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  }
48755f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott}
48765f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott
48775f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottchar *
48785f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottlt_extend_str (const char *orig_value, const char *add, int to_end)
48795f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott{
48805f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  char *new_value;
48815f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  if (orig_value && *orig_value)
48825f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    {
48835f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott      int orig_value_len = strlen (orig_value);
48845f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott      int add_len = strlen (add);
48855f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott      new_value = XMALLOC (char, add_len + orig_value_len + 1);
48865f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott      if (to_end)
48875f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott        {
48885f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott          strcpy (new_value, orig_value);
48895f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott          strcpy (new_value + orig_value_len, add);
48905f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott        }
48915f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott      else
48925f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott        {
48935f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott          strcpy (new_value, add);
48945f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott          strcpy (new_value + add_len, orig_value);
48955f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott        }
48965f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    }
48975f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  else
48985f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    {
48995f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott      new_value = xstrdup (add);
49005f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    }
49015f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  return new_value;
49025f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott}
49035f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott
49045f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid
49055f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottlt_update_exe_path (const char *name, const char *value)
49065f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott{
4907ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  lt_debugprintf (__FILE__, __LINE__,
4908ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
4909ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik                  nonnull (name), nonnull (value));
49105f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott
49115f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  if (name && *name && value && *value)
49125f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    {
49135f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott      char *new_value = lt_extend_str (getenv (name), value, 0);
49145f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott      /* some systems can't cope with a ':'-terminated path #' */
49155f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott      int len = strlen (new_value);
49165f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
49175f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott        {
49185f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott          new_value[len-1] = '\0';
49195f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott        }
49205f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott      lt_setenv (name, new_value);
49215f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott      XFREE (new_value);
49225f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    }
49235f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott}
49245f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott
49255f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid
49265f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottlt_update_lib_path (const char *name, const char *value)
49275f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott{
4928ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  lt_debugprintf (__FILE__, __LINE__,
4929ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
4930ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik                  nonnull (name), nonnull (value));
49315f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott
49325f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott  if (name && *name && value && *value)
49335f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    {
49345f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott      char *new_value = lt_extend_str (getenv (name), value, 0);
49355f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott      lt_setenv (name, new_value);
49365f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott      XFREE (new_value);
49375f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    }
49385f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott}
49395f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott
4940ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikEOF
4941ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    case $host_os in
4942ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      mingw*)
4943ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		cat <<"EOF"
4944ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
4945ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik/* Prepares an argument vector before calling spawn().
4946ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik   Note that spawn() does not by itself call the command interpreter
4947ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
4948ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
4949ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik         GetVersionEx(&v);
4950ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
4951ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      }) ? "cmd.exe" : "command.com").
4952ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik   Instead it simply concatenates the arguments, separated by ' ', and calls
4953ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
4954ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
4955ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik   special way:
4956ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik   - Space and tab are interpreted as delimiters. They are not treated as
4957ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik     delimiters if they are surrounded by double quotes: "...".
4958ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik   - Unescaped double quotes are removed from the input. Their only effect is
4959ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik     that within double quotes, space and tab are treated like normal
4960ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik     characters.
4961ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik   - Backslashes not followed by double quotes are not special.
4962ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik   - But 2*n+1 backslashes followed by a double quote become
4963ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik     n backslashes followed by a double quote (n >= 0):
4964ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik       \" -> "
4965ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik       \\\" -> \"
4966ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik       \\\\\" -> \\"
4967ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik */
4968ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#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"
4969ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#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"
4970ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikchar **
4971ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikprepare_spawn (char **argv)
4972ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
4973ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  size_t argc;
4974ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  char **new_argv;
4975ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  size_t i;
4976ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
4977ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  /* Count number of arguments.  */
4978ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  for (argc = 0; argv[argc] != NULL; argc++)
4979ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    ;
4980ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
4981ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  /* Allocate new argument vector.  */
4982ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  new_argv = XMALLOC (char *, argc + 1);
4983ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
4984ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  /* Put quoted arguments into the new argument vector.  */
4985ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  for (i = 0; i < argc; i++)
4986ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    {
4987ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      const char *string = argv[i];
4988ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
4989ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if (string[0] == '\0')
4990ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	new_argv[i] = xstrdup ("\"\"");
4991ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
4992ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	{
4993ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
4994ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  size_t length;
4995ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  unsigned int backslashes;
4996ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  const char *s;
4997ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  char *quoted_string;
4998ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  char *p;
4999ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
5000ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  length = 0;
5001ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  backslashes = 0;
5002ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  if (quote_around)
5003ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    length++;
5004ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  for (s = string; *s != '\0'; s++)
5005ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    {
5006ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      char c = *s;
5007ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      if (c == '"')
5008ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		length += backslashes + 1;
5009ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      length++;
5010ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      if (c == '\\')
5011ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		backslashes++;
5012ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      else
5013ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		backslashes = 0;
5014ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    }
5015ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  if (quote_around)
5016ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    length += backslashes + 1;
5017ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
5018ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  quoted_string = XMALLOC (char, length + 1);
5019ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
5020ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  p = quoted_string;
5021ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  backslashes = 0;
5022ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  if (quote_around)
5023ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    *p++ = '"';
5024ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  for (s = string; *s != '\0'; s++)
5025ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    {
5026ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      char c = *s;
5027ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      if (c == '"')
5028ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		{
5029ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  unsigned int j;
5030ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  for (j = backslashes + 1; j > 0; j--)
5031ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    *p++ = '\\';
5032ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		}
5033ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      *p++ = c;
5034ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      if (c == '\\')
5035ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		backslashes++;
5036ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      else
5037ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		backslashes = 0;
5038ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    }
5039ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  if (quote_around)
5040ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    {
5041ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      unsigned int j;
5042ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      for (j = backslashes; j > 0; j--)
5043ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		*p++ = '\\';
5044ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      *p++ = '"';
5045ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    }
5046ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *p = '\0';
5047ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
5048ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  new_argv[i] = quoted_string;
5049ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	}
5050ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      else
5051ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	new_argv[i] = (char *) string;
5052ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    }
5053ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  new_argv[argc] = NULL;
5054ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
5055ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  return new_argv;
5056ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
5057ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikEOF
5058ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		;;
5059ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    esac
50605f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott
5061ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik            cat <<"EOF"
5062ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikvoid lt_dump_script (FILE* f)
5063ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
5064ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikEOF
5065ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_emit_wrapper yes |
5066ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      $SED -n -e '
5067ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiks/^\(.\{79\}\)\(..*\)/\1\
5068ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik\2/
5069ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikh
5070ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiks/\([\\"]\)/\\\1/g
5071ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiks/$/\\n/
5072ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiks/\([^\n]*\).*/  fputs ("\1", f);/p
5073ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikg
5074ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikD'
5075ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik            cat <<"EOF"
5076ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
50774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF
50784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
50794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# end: func_emit_cwrapperexe_src
5080893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
5081ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_win32_import_lib_p ARG
5082ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# True if ARG is an import lib, as indicated by $file_magic_cmd
5083ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_win32_import_lib_p ()
5084ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{
5085ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    $opt_debug
5086ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
5087ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    *import*) : ;;
5088ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    *) false ;;
5089ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    esac
5090ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}
5091ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
50924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_mode_link arg...
50934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mode_link ()
50944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
50954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $opt_debug
50964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    case $host in
50975f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
50984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # It is impossible to link a dll without this setting, and
50994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # we shouldn't force the makefile maintainer to figure out
51004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # which system we are compiling for in order to pass an extra
51014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # flag for every libtool invocation.
51024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # allow_undefined=no
5103893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
51044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # FIXME: Unfortunately, there are problems with the above when trying
51054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # to make a dll which has undefined symbols, in which case not
51064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # even a static library is built.  For now, we need to specify
51074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # -no-undefined on the libtool link line when we can be certain
51084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # that all symbols are satisfied, otherwise we get a static library.
51094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      allow_undefined=yes
51104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      ;;
51114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    *)
51124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      allow_undefined=yes
51134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      ;;
51144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    esac
51154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    libtool_args=$nonopt
51164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    base_compile="$nonopt $@"
51174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    compile_command=$nonopt
51184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    finalize_command=$nonopt
5119893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
51204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    compile_rpath=
51214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    finalize_rpath=
51224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    compile_shlibpath=
51234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    finalize_shlibpath=
51244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    convenience=
51254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    old_convenience=
51264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    deplibs=
51274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    old_deplibs=
51284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    compiler_flags=
51294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    linker_flags=
51304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    dllsearchpath=
51314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    lib_search_path=`pwd`
51324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    inst_prefix_dir=
51334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    new_inherited_linker_flags=
5134893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
51354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    avoid_version=no
5136ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    bindir=
51374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    dlfiles=
51384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    dlprefiles=
51394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    dlself=no
51404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    export_dynamic=no
51414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    export_symbols=
51424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    export_symbols_regex=
51434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    generated=
51444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    libobjs=
51454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    ltlibs=
51464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    module=no
51474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    no_install=no
51484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    objs=
51494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    non_pic_objects=
51504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    precious_files_regex=
51514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    prefer_static_libs=no
51524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    preload=no
51534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    prev=
51544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    prevarg=
51554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    release=
51564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    rpath=
51574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    xrpath=
51584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    perm_rpath=
51594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    temp_rpath=
51604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    thread_safe=no
51614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    vinfo=
51624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    vinfo_number=no
51634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    weak_libs=
51644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    single_module="${wl}-single_module"
51654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_infer_tag $base_compile
5166893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
51674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # We need to know -static, to get the right output filenames.
51684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    for arg
51694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    do
51704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case $arg in
51714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -shared)
51724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	test "$build_libtool_libs" != yes && \
51734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_fatal_configuration "can not build a shared library"
51744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	build_old_libs=no
51754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	break
51764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
51774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -all-static | -static | -static-libtool-libs)
51784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $arg in
51794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	-all-static)
51804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
51814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_warning "complete static linking is impossible in this configuration"
51824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
51834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$link_static_flag"; then
51844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    dlopen_self=$dlopen_self_static
51854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
51864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prefer_static_libs=yes
51874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
51884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	-static)
51894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
51904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    dlopen_self=$dlopen_self_static
51914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
51924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prefer_static_libs=built
51934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
51944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	-static-libtool-libs)
51954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
51964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    dlopen_self=$dlopen_self_static
51974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
51984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prefer_static_libs=yes
51994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
52004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
52014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	build_libtool_libs=no
52024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	build_old_libs=yes
52034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	break
52044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
52054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      esac
52064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    done
5207893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
52084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # See if our shared archives depend on static archives.
52094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
5210893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
52114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # Go through the arguments, transforming them on the way.
52124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    while test "$#" -gt 0; do
52134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      arg="$1"
52144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      shift
52154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_quote_for_eval "$arg"
52164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      qarg=$func_quote_for_eval_unquoted_result
52174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_append libtool_args " $func_quote_for_eval_result"
5218893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
52194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # If the previous option needs an argument, assign it.
52204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$prev"; then
52214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $prev in
52224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	output)
52234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_append compile_command " @OUTPUT@"
52244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_append finalize_command " @OUTPUT@"
52254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
52264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
5227893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
52284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $prev in
5229ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	bindir)
5230ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  bindir="$arg"
5231ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  prev=
5232ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  continue
5233ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  ;;
52344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	dlfiles|dlprefiles)
52354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$preload" = no; then
52364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Add the symbol object into the linking commands.
52374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_append compile_command " @SYMFILE@"
52384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_append finalize_command " @SYMFILE@"
52394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    preload=yes
52404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
52414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case $arg in
52424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *.la | *.lo) ;;  # We handle these cases below.
52434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  force)
52444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$dlself" = no; then
52454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      dlself=needless
52464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      export_dynamic=yes
52474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
52484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    prev=
52494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    continue
52504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
52514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  self)
52524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$prev" = dlprefiles; then
52534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      dlself=yes
52544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
52554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      dlself=yes
52564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
52574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      dlself=needless
52584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      export_dynamic=yes
52594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
52604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    prev=
52614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    continue
52624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
52634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *)
52644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$prev" = dlfiles; then
5265ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append dlfiles " $arg"
52664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
5267ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append dlprefiles " $arg"
52684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
52694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    prev=
52704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    continue
52714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
52724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
52734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
52744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	expsyms)
52754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  export_symbols="$arg"
52764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  test -f "$arg" \
52774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    || func_fatal_error "symbol file \`$arg' does not exist"
52784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prev=
52794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
52804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
52814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	expsyms_regex)
52824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  export_symbols_regex="$arg"
52834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prev=
52844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
52854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
52864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	framework)
52874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case $host in
52884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *-*-darwin*)
52894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case "$deplibs " in
52904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		*" $qarg.ltframework "*) ;;
5291ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		*) func_append deplibs " $qarg.ltframework" # this is fixed later
52924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		   ;;
52934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
52944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      ;;
52954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
52964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prev=
52974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
52984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
52994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	inst_prefix)
53004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  inst_prefix_dir="$arg"
53014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prev=
53024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
53034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
53044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	objectlist)
53054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -f "$arg"; then
53064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    save_arg=$arg
53074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    moreargs=
53084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    for fil in `cat "$save_arg"`
53094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    do
5310ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#	      func_append moreargs " $fil"
53114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      arg=$fil
53124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # A libtool-controlled object.
5313893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
53144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # Check to see that this really is a libtool object.
53154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if func_lalib_unsafe_p "$arg"; then
53164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		pic_object=
53174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		non_pic_object=
5318893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
53194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		# Read the .lo file
53204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		func_source "$arg"
5321893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
53224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		if test -z "$pic_object" ||
53234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		   test -z "$non_pic_object" ||
53244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		   test "$pic_object" = none &&
53254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		   test "$non_pic_object" = none; then
53264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  func_fatal_error "cannot find name of object for \`$arg'"
53274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		fi
5328893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
53294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		# Extract subdirectory from the argument.
53304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		func_dirname "$arg" "/" ""
53314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		xdir="$func_dirname_result"
5332893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
53334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		if test "$pic_object" != none; then
53344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  # Prepend the subdirectory the object is found in.
53354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  pic_object="$xdir$pic_object"
5336893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
53374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  if test "$prev" = dlfiles; then
53384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5339ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		      func_append dlfiles " $pic_object"
53404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      prev=
53414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      continue
53424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    else
53434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      # If libtool objects are unsupported, then we need to preload.
53444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      prev=dlprefiles
53454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    fi
53464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  fi
5347893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
53484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  # CHECK ME:  I think I busted this.  -Ossama
53494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  if test "$prev" = dlprefiles; then
53504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    # Preload the old-style object.
5351ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    func_append dlprefiles " $pic_object"
53524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    prev=
53534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  fi
5354893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
53554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  # A PIC object.
53564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  func_append libobjs " $pic_object"
53574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  arg="$pic_object"
53584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		fi
5359893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
53604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		# Non-PIC object.
53614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		if test "$non_pic_object" != none; then
53624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  # Prepend the subdirectory the object is found in.
53634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  non_pic_object="$xdir$non_pic_object"
5364893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
53654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  # A standard non-PIC object
53664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  func_append non_pic_objects " $non_pic_object"
53674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  if test -z "$pic_object" || test "$pic_object" = none ; then
53684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    arg="$non_pic_object"
53694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  fi
53704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		else
53714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  # If the PIC object exists, use it instead.
53724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  # $xdir was prepended to $pic_object above.
53734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  non_pic_object="$pic_object"
53744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  func_append non_pic_objects " $non_pic_object"
53754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		fi
53764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      else
53774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		# Only an error if not doing a dry-run.
53784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		if $opt_dry_run; then
53794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  # Extract subdirectory from the argument.
53804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  func_dirname "$arg" "/" ""
53814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  xdir="$func_dirname_result"
53824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
53834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  func_lo2o "$arg"
53844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  pic_object=$xdir$objdir/$func_lo2o_result
53854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  non_pic_object=$xdir$func_lo2o_result
53864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  func_append libobjs " $pic_object"
53874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  func_append non_pic_objects " $non_pic_object"
53884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	        else
53894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  func_fatal_error "\`$arg' is not a valid libtool object"
53904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		fi
53914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
53924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    done
53934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
53944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_fatal_error "link input file \`$arg' does not exist"
53954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
53964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  arg=$save_arg
53974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prev=
53984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
5399893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  ;;
54004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	precious_regex)
54014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  precious_files_regex="$arg"
54024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prev=
54034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
54044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
54054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	release)
54064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  release="-$arg"
54074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prev=
54084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
54094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
54104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	rpath | xrpath)
54114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # We need an absolute path.
54124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case $arg in
54134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  [\\/]* | [A-Za-z]:[\\/]*) ;;
54144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *)
54154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_fatal_error "only absolute run-paths are allowed"
54164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
5417893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  esac
54184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$prev" = rpath; then
54194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case "$rpath " in
54204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *" $arg "*) ;;
5421ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    *) func_append rpath " $arg" ;;
54224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
54234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
54244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case "$xrpath " in
54254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *" $arg "*) ;;
5426ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    *) func_append xrpath " $arg" ;;
54274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
54284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
54294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prev=
54304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
54314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
54324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	shrext)
54334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  shrext_cmds="$arg"
54344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prev=
54354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
54364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
54374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	weak)
5438ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append weak_libs " $arg"
54394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prev=
54404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
54414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
54424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	xcclinker)
5443ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append linker_flags " $qarg"
5444ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append compiler_flags " $qarg"
54454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prev=
54464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_append compile_command " $qarg"
54474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_append finalize_command " $qarg"
54484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
54494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
54504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	xcompiler)
5451ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append compiler_flags " $qarg"
54524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prev=
54534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_append compile_command " $qarg"
54544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_append finalize_command " $qarg"
54554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
54564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
54574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	xlinker)
5458ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append linker_flags " $qarg"
5459ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append compiler_flags " $wl$qarg"
54604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prev=
54614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_append compile_command " $wl$qarg"
54624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_append finalize_command " $wl$qarg"
54634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
54644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
54654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*)
54664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  eval "$prev=\"\$arg\""
54674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prev=
54684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
5469893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  ;;
5470893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	esac
54714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi # test -n "$prev"
5472893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
54734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      prevarg="$arg"
5474893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
54754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case $arg in
54764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -all-static)
54774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$link_static_flag"; then
54784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # See comment for -static flag below, for more details.
54794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_append compile_command " $link_static_flag"
54804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_append finalize_command " $link_static_flag"
54814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
54824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
54834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5484893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
54854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -allow-undefined)
54864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# FIXME: remove this flag sometime in the future.
54874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
54884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5489893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
54904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -avoid-version)
54914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	avoid_version=yes
54924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
54934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
54944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
5495ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      -bindir)
5496ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	prev=bindir
5497ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	continue
5498ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	;;
5499ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
55004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -dlopen)
55014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	prev=dlfiles
55024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
55034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
55044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
55054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -dlpreopen)
55064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	prev=dlprefiles
55074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
55084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
55094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
55104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -export-dynamic)
55114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	export_dynamic=yes
55124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
55134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
55144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
55154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -export-symbols | -export-symbols-regex)
55164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
55174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_fatal_error "more than one -exported-symbols argument is not allowed"
55184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
55194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "X$arg" = "X-export-symbols"; then
55204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prev=expsyms
55214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	else
55224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prev=expsyms_regex
5523893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
55244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
55254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
55264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
55274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -framework)
55284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	prev=framework
55294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
55304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
55314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
55324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -inst-prefix-dir)
55334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	prev=inst_prefix
55344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
55354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
55364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
55374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
55384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # so, if we see these flags be careful not to treat them like -L
55394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -L[A-Z][A-Z]*:*)
55404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $with_gcc/$host in
55414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	no/*-*-irix* | /*-*-irix*)
55424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_append compile_command " $arg"
55434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_append finalize_command " $arg"
55444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
55454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
55464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
55474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
55484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
55494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -L*)
5550ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_stripname "-L" '' "$arg"
5551ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	if test -z "$func_stripname_result"; then
55525f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	  if test "$#" -gt 0; then
55535f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	    func_fatal_error "require no space between \`-L' and \`$1'"
55545f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	  else
55555f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	    func_fatal_error "need path for \`-L' option"
55565f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	  fi
55575f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	fi
5558ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_resolve_sysroot "$func_stripname_result"
5559ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	dir=$func_resolve_sysroot_result
55604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# We need an absolute path.
55614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $dir in
55624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	[\\/]* | [A-Za-z]:[\\/]*) ;;
55634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*)
55644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  absdir=`cd "$dir" && pwd`
55654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  test -z "$absdir" && \
55664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
55674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  dir="$absdir"
55684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
55694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
55704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case "$deplibs " in
5571ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	*" -L$dir "* | *" $arg "*)
5572ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  # Will only happen for absolute or sysroot arguments
5573ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  ;;
55744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*)
5575ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  # Preserve sysroot, but never include relative directories
5576ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  case $dir in
5577ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
5578ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    *) func_append deplibs " -L$dir" ;;
5579ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  esac
5580ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append lib_search_path " $dir"
55814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
55824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
5583893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	case $host in
55845f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
5585ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
5586893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  case :$dllsearchpath: in
55874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *":$dir:"*) ;;
55885f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	  ::) dllsearchpath=$dir;;
5589ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *) func_append dllsearchpath ":$dir";;
5590893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  esac
5591893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  case :$dllsearchpath: in
5592893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  *":$testbindir:"*) ;;
55935f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	  ::) dllsearchpath=$testbindir;;
5594ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *) func_append dllsearchpath ":$testbindir";;
5595893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  esac
5596893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  ;;
5597893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	esac
55984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
55994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5600893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
56014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -l*)
56024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
56034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case $host in
5604ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
56054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # These systems don't actually have a C or math library (as such)
56064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    continue
56074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
56084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *-*-os2*)
56094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # These systems don't actually have a C library (as such)
56104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    test "X$arg" = "X-lc" && continue
56114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
56124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
56134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Do not include libc due to us having libc/libc_r.
56144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    test "X$arg" = "X-lc" && continue
56154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
56164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *-*-rhapsody* | *-*-darwin1.[012])
56174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Rhapsody C and math libraries are in the System framework
5618ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append deplibs " System.ltframework"
56194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    continue
56204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
56214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *-*-sco3.2v5* | *-*-sco5v6*)
56224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Causes problems with __ctype
56234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    test "X$arg" = "X-lc" && continue
56244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
56254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
56264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Compiler inserts libc in the correct place for threads to work
56274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    test "X$arg" = "X-lc" && continue
56284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
5629893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  esac
56304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	elif test "X$arg" = "X-lc_r"; then
56314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	 case $host in
56324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
56334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	   # Do not include libc_r directly, use -pthread flag.
56344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	   continue
56354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	   ;;
56364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	 esac
5637893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
5638ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_append deplibs " $arg"
56394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
56404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5641893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
56424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -module)
56434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	module=yes
56444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
56454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5646893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
56474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Tru64 UNIX uses -model [arg] to determine the layout of C++
56484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # classes, name mangling, and exception handling.
56494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Darwin uses the -arch flag to determine output architecture.
5650ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      -model|-arch|-isysroot|--sysroot)
5651ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_append compiler_flags " $arg"
56524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_append compile_command " $arg"
56534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_append finalize_command " $arg"
56544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	prev=xcompiler
56554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
56564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5657893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
5658ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
5659ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
5660ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_append compiler_flags " $arg"
56614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_append compile_command " $arg"
56624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_append finalize_command " $arg"
56634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case "$new_inherited_linker_flags " in
56644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *" $arg "*) ;;
5665ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    * ) func_append new_inherited_linker_flags " $arg" ;;
56664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
56674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
56684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5669893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
56704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -multi_module)
56714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	single_module="${wl}-multi_module"
56724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
56734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5674893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
56754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -no-fast-install)
56764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fast_install=no
56774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
56784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5679893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
56804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -no-install)
56814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $host in
56825f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
56834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # The PATH hackery in wrapper scripts is required on Windows
56844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # and Darwin in order for the loader to find any dlls it needs.
56854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_warning "\`-no-install' is ignored for $host"
56864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_warning "assuming \`-no-fast-install' instead"
56874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fast_install=no
56884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
56894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*) no_install=yes ;;
56904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
56914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
56924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5693893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
56944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -no-undefined)
56954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	allow_undefined=no
56964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
56974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5698893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
56994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -objectlist)
57004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	prev=objectlist
57014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
57024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5703893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
57044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -o) prev=output ;;
5705893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
57064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -precious-files-regex)
57074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	prev=precious_regex
57084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
57094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5710893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
57114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -release)
57124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	prev=release
57134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
57144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5715893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
57164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -rpath)
57174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	prev=rpath
57184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
57194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5720893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
57214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -R)
57224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	prev=xrpath
57234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
57244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5725893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
57264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -R*)
57274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_stripname '-R' '' "$arg"
57284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	dir=$func_stripname_result
57294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# We need an absolute path.
57304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $dir in
57314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	[\\/]* | [A-Za-z]:[\\/]*) ;;
5732ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	=*)
5733ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_stripname '=' '' "$dir"
5734ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  dir=$lt_sysroot$func_stripname_result
5735ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  ;;
57364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*)
57374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_fatal_error "only absolute run-paths are allowed"
57384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
57394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
57404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case "$xrpath " in
57414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*" $dir "*) ;;
5742ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	*) func_append xrpath " $dir" ;;
57434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
57444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
57454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5746893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
57474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -shared)
57484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# The effects of -shared are defined in a previous loop.
57494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
57504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5751893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
57524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -shrext)
57534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	prev=shrext
57544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
57554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5756893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
57574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -static | -static-libtool-libs)
57584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# The effects of -static are defined in a previous loop.
57594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# We used to do the same as -all-static on platforms that
57604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# didn't have a PIC flag, but the assumption that the effects
57614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# would be equivalent was wrong.  It would break on at least
57624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Digital Unix and AIX.
57634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
57644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5765893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
57664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -thread-safe)
57674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	thread_safe=yes
57684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
57694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5770893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
57714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -version-info)
57724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	prev=vinfo
57734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
57744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5775893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
57764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -version-number)
57774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	prev=vinfo
57784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	vinfo_number=yes
57794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
57804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5781893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
57824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -weak)
57834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        prev=weak
57844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
57854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5786893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
57874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -Wc,*)
57884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_stripname '-Wc,' '' "$arg"
57894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	args=$func_stripname_result
57904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	arg=
57914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	save_ifs="$IFS"; IFS=','
57924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	for flag in $args; do
57934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  IFS="$save_ifs"
57944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project          func_quote_for_eval "$flag"
5795ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append arg " $func_quote_for_eval_result"
5796ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append compiler_flags " $func_quote_for_eval_result"
57974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	done
57984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	IFS="$save_ifs"
57994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_stripname ' ' '' "$arg"
58004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	arg=$func_stripname_result
58014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5802893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
58034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -Wl,*)
58044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_stripname '-Wl,' '' "$arg"
58054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	args=$func_stripname_result
58064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	arg=
58074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	save_ifs="$IFS"; IFS=','
58084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	for flag in $args; do
58094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  IFS="$save_ifs"
58104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project          func_quote_for_eval "$flag"
5811ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append arg " $wl$func_quote_for_eval_result"
5812ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append compiler_flags " $wl$func_quote_for_eval_result"
5813ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append linker_flags " $func_quote_for_eval_result"
58144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	done
58154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	IFS="$save_ifs"
58164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_stripname ' ' '' "$arg"
58174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	arg=$func_stripname_result
58184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5819893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
58204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -Xcompiler)
58214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	prev=xcompiler
58224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
58234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5824893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
58254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -Xlinker)
58264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	prev=xlinker
58274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
58284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5829893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
58304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -XCClinker)
58314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	prev=xcclinker
58324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
58334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5834893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
58354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # -msg_* for osf cc
58364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -msg_*)
58374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_quote_for_eval "$arg"
58384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	arg="$func_quote_for_eval_result"
58394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5840893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
5841ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # Flags to be passed through unchanged, with rationale:
5842ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
5843ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # -r[0-9][0-9]*        specify processor for the SGI compiler
5844ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
5845ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # +DA*, +DD*           enable 64-bit mode for the HP compiler
5846ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # -q*                  compiler args for the IBM compiler
5847ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
5848ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # -F/path              path to uninstalled frameworks, gcc on darwin
5849ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
5850ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # @file                GCC response files
5851ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # -tp=*                Portland pgcc target processor selection
5852ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # --sysroot=*          for sysroot support
5853ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
58544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
5855ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
5856ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
58574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        func_quote_for_eval "$arg"
58584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	arg="$func_quote_for_eval_result"
58594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        func_append compile_command " $arg"
58604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        func_append finalize_command " $arg"
5861ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        func_append compiler_flags " $arg"
58624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        continue
58634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        ;;
5864893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
58654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Some other compiler flag.
58664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      -* | +*)
58674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        func_quote_for_eval "$arg"
58684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	arg="$func_quote_for_eval_result"
58694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5870893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
58714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *.$objext)
58724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# A standard object.
5873ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_append objs " $arg"
58744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5875893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
58764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *.lo)
58774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# A libtool-controlled object.
5878893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
58794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Check to see that this really is a libtool object.
58804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if func_lalib_unsafe_p "$arg"; then
58814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  pic_object=
58824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  non_pic_object=
5883893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
58844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Read the .lo file
58854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_source "$arg"
5886893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
58874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -z "$pic_object" ||
58884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	     test -z "$non_pic_object" ||
58894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	     test "$pic_object" = none &&
58904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	     test "$non_pic_object" = none; then
58914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_fatal_error "cannot find name of object for \`$arg'"
58924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
5893893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
58944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Extract subdirectory from the argument.
58954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_dirname "$arg" "/" ""
58964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  xdir="$func_dirname_result"
5897893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
58984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$pic_object" != none; then
58994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Prepend the subdirectory the object is found in.
59004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    pic_object="$xdir$pic_object"
5901893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
59024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$prev" = dlfiles; then
59034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5904ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_append dlfiles " $pic_object"
59054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		prev=
59064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		continue
59074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      else
59084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		# If libtool objects are unsupported, then we need to preload.
59094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		prev=dlprefiles
59104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
59114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
5912893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
59134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # CHECK ME:  I think I busted this.  -Ossama
59144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$prev" = dlprefiles; then
59154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # Preload the old-style object.
5916ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append dlprefiles " $pic_object"
59174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      prev=
59184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
5919893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
59204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # A PIC object.
59214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_append libobjs " $pic_object"
59224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    arg="$pic_object"
59234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
5924893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
59254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Non-PIC object.
59264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$non_pic_object" != none; then
59274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Prepend the subdirectory the object is found in.
59284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    non_pic_object="$xdir$non_pic_object"
5929893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
59304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # A standard non-PIC object
59314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_append non_pic_objects " $non_pic_object"
59324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -z "$pic_object" || test "$pic_object" = none ; then
59334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      arg="$non_pic_object"
59344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
5935893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  else
59364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # If the PIC object exists, use it instead.
59374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # $xdir was prepended to $pic_object above.
59384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    non_pic_object="$pic_object"
59394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_append non_pic_objects " $non_pic_object"
5940893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  fi
5941893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	else
59424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Only an error if not doing a dry-run.
59434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if $opt_dry_run; then
59444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Extract subdirectory from the argument.
59454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_dirname "$arg" "/" ""
59464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    xdir="$func_dirname_result"
59474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
59484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_lo2o "$arg"
59494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    pic_object=$xdir$objdir/$func_lo2o_result
59504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    non_pic_object=$xdir$func_lo2o_result
59514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_append libobjs " $pic_object"
59524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_append non_pic_objects " $non_pic_object"
59534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
59544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_fatal_error "\`$arg' is not a valid libtool object"
59554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
5956893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
59574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5958893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
59594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *.$libext)
59604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# An archive.
5961ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_append deplibs " $arg"
5962ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_append old_deplibs " $arg"
59634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
59644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5965893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
59664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *.la)
59674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# A libtool-controlled library.
5968893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
5969ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_resolve_sysroot "$arg"
59704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$prev" = dlfiles; then
59714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # This library was specified with -dlopen.
5972ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append dlfiles " $func_resolve_sysroot_result"
59734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prev=
59744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	elif test "$prev" = dlprefiles; then
59754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # The library was specified with -dlpreopen.
5976ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append dlprefiles " $func_resolve_sysroot_result"
59774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prev=
59784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	else
5979ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append deplibs " $func_resolve_sysroot_result"
59804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
59814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	continue
59824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
5983893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
59844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Some other compiler argument.
59854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *)
59864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Unknown arguments in both finalize_command and compile_command need
59874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# to be aesthetically quoted because they are evaled later.
59884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_quote_for_eval "$arg"
59894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	arg="$func_quote_for_eval_result"
59904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
59914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      esac # arg
5992893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
59934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Now actually substitute the argument into the commands.
59944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$arg"; then
59954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_append compile_command " $arg"
59964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_append finalize_command " $arg"
5997893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
59984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    done # argument parsing loop
5999893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
60004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    test -n "$prev" && \
60014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_fatal_help "the \`$prevarg' option requires an argument"
6002893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
60034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
60044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      eval arg=\"$export_dynamic_flag_spec\"
60054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_append compile_command " $arg"
60064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_append finalize_command " $arg"
60074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
6008893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
60094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    oldlibs=
60104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # calculate the name of the file, without its directory
60114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_basename "$output"
60124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    outputname="$func_basename_result"
60134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    libobjs_save="$libobjs"
6014893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
60154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test -n "$shlibpath_var"; then
60164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # get the directories listed in $shlibpath_var
6017ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
60184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    else
60194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      shlib_search_path=
60204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
60214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
60224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
6023893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
60244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_dirname "$output" "/" ""
60254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    output_objdir="$func_dirname_result$objdir"
6026ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    func_to_tool_file "$output_objdir/"
6027ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik    tool_output_objdir=$func_to_tool_file_result
60284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # Create the object directory.
60294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_mkdir_p "$output_objdir"
6030893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
60314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # Determine the type of output
60324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    case $output in
60334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    "")
60344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_fatal_help "you must specify an output file"
60354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      ;;
60364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    *.$libext) linkmode=oldlib ;;
60374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    *.lo | *.$objext) linkmode=obj ;;
60384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    *.la) linkmode=lib ;;
60394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    *) linkmode=prog ;; # Anything else should be a program.
60404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    esac
6041893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
60424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    specialdeplibs=
6043893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
60444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    libs=
60454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # Find all interdependent deplibs by searching for libraries
60464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # that are linked more than once (e.g. -la -lb -la)
60474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    for deplib in $deplibs; do
6048ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if $opt_preserve_dup_deps ; then
60494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case "$libs " in
6050ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
60514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
60524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
6053ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_append libs " $deplib"
60544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    done
6055893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
60564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test "$linkmode" = lib; then
60574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      libs="$predeps $libs $compiler_lib_search_path $postdeps"
6058893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
60594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Compute libraries that are listed more than once in $predeps
60604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # $postdeps and mark them as special (i.e., whose duplicates are
60614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # not to be eliminated).
60624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      pre_post_deps=
60634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if $opt_duplicate_compiler_generated_deps; then
60644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	for pre_post_dep in $predeps $postdeps; do
60654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case "$pre_post_deps " in
6066ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
60674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
6068ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append pre_post_deps " $pre_post_dep"
60694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	done
60704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
60714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      pre_post_deps=
60724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
6073893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
60744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    deplibs=
60754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    newdependency_libs=
60764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    newlib_search_path=
60774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    need_relink=no # whether we're linking any uninstalled libtool libraries
60784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    notinst_deplibs= # not-installed libtool libraries
60794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    notinst_path= # paths that contain not-installed libtool libraries
6080893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
60814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    case $linkmode in
60824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    lib)
60834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	passes="conv dlpreopen link"
60844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	for file in $dlfiles $dlprefiles; do
60854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case $file in
60864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *.la) ;;
60874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *)
60884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
60894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
60904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
60914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	done
60924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
60934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    prog)
60944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	compile_deplibs=
60954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	finalize_deplibs=
60964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	alldeplibs=no
60974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	newdlfiles=
60984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	newdlprefiles=
60994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	passes="conv scan dlopen dlpreopen link"
61004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
61014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    *)  passes="conv"
61024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
61034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    esac
6104893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
61054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    for pass in $passes; do
61064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # The preopen pass in lib mode reverses $deplibs; put it back here
61074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # so that -L comes before libs that need it for instance...
61084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test "$linkmode,$pass" = "lib,link"; then
61094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	## FIXME: Find the place where the list is rebuilt in the wrong
61104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	##        order, and fix it there properly
61114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        tmp_deplibs=
61124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	for deplib in $deplibs; do
61134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  tmp_deplibs="$deplib $tmp_deplibs"
61144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	done
61154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	deplibs="$tmp_deplibs"
61164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
6117893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
61184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test "$linkmode,$pass" = "lib,link" ||
61194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	 test "$linkmode,$pass" = "prog,scan"; then
61204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	libs="$deplibs"
61214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	deplibs=
61224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
61234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test "$linkmode" = prog; then
61244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $pass in
61254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	dlopen) libs="$dlfiles" ;;
61264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	dlpreopen) libs="$dlprefiles" ;;
61274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
61284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
61294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
61304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test "$linkmode,$pass" = "lib,dlpreopen"; then
61314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Collect and forward deplibs of preopened libtool libs
61324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	for lib in $dlprefiles; do
61334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Ignore non-libtool-libs
61344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  dependency_libs=
6135ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_resolve_sysroot "$lib"
61364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case $lib in
6137ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *.la)	func_source "$func_resolve_sysroot_result" ;;
61384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
6139893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
61404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Collect preopened libtool deplibs, except any this library
61414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # has declared as weak libs
61424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for deplib in $dependency_libs; do
6143ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_basename "$deplib"
6144ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik            deplib_base=$func_basename_result
61454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case " $weak_libs " in
61464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *" $deplib_base "*) ;;
6147ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    *) func_append deplibs " $deplib" ;;
61484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
61494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  done
61504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	done
61514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	libs="$dlprefiles"
61524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
61534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test "$pass" = dlopen; then
61544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Collect dlpreopened libraries
61554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	save_deplibs="$deplibs"
61564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	deplibs=
61574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
6158893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
61594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      for deplib in $libs; do
61604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	lib=
61614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	found=no
61624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $deplib in
6163ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
6164ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
61654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$linkmode,$pass" = "prog,link"; then
61664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    compile_deplibs="$deplib $compile_deplibs"
61674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    finalize_deplibs="$deplib $finalize_deplibs"
61684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
6169ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append compiler_flags " $deplib"
61704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$linkmode" = lib ; then
61714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		case "$new_inherited_linker_flags " in
61724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    *" $deplib "*) ;;
6173ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    * ) func_append new_inherited_linker_flags " $deplib" ;;
61744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		esac
61754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
61764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
61774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
61784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
61794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	-l*)
61804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$linkmode" != lib && test "$linkmode" != prog; then
61814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_warning "\`-l' is ignored for archives/objects"
61824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    continue
61834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
61844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_stripname '-l' '' "$deplib"
61854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  name=$func_stripname_result
61864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$linkmode" = lib; then
61874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
61884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
61894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
61904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
61914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for searchdir in $searchdirs; do
61924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    for search_ext in .la $std_shrext .so .a; do
61934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # Search the libtool library
61944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      lib="$searchdir/lib${name}${search_ext}"
61954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test -f "$lib"; then
61964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		if test "$search_ext" = ".la"; then
61974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  found=yes
61984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		else
61994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  found=no
62004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		fi
62014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		break 2
62024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
62034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    done
62044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  done
62054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$found" != yes; then
62064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # deplib doesn't seem to be a libtool library
62074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$linkmode,$pass" = "prog,link"; then
62084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      compile_deplibs="$deplib $compile_deplibs"
62094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      finalize_deplibs="$deplib $finalize_deplibs"
62104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
62114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      deplibs="$deplib $deplibs"
62124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
62134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
62144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    continue
62154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else # deplib is a libtool library
62164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
62174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # We need to do some special things here, and not later.
62184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
62194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case " $predeps $postdeps " in
62204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *" $deplib "*)
62214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		if func_lalib_p "$lib"; then
62224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  library_names=
62234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  old_library=
62244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  func_source "$lib"
62254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  for l in $old_library $library_names; do
62264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    ll="$l"
62274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  done
62284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  if test "X$ll" = "X$old_library" ; then # only static version available
62294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    found=no
62304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    func_dirname "$lib" "" "."
62314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    ladir="$func_dirname_result"
62324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    lib=$ladir/$old_library
62334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    if test "$linkmode,$pass" = "prog,link"; then
62344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      compile_deplibs="$deplib $compile_deplibs"
62354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      finalize_deplibs="$deplib $finalize_deplibs"
62364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    else
62374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      deplibs="$deplib $deplibs"
62384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
62394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    fi
62404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    continue
62414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  fi
62424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		fi
62434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		;;
62444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *) ;;
62454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
62464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
62474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
62484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;; # -l
62494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*.ltframework)
62504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$linkmode,$pass" = "prog,link"; then
62514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    compile_deplibs="$deplib $compile_deplibs"
62524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    finalize_deplibs="$deplib $finalize_deplibs"
62534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
62544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    deplibs="$deplib $deplibs"
62554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$linkmode" = lib ; then
62564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		case "$new_inherited_linker_flags " in
62574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    *" $deplib "*) ;;
6258ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    * ) func_append new_inherited_linker_flags " $deplib" ;;
62594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		esac
62604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
62614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
62624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
62634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
62644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	-L*)
62654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case $linkmode in
62664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  lib)
62674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    deplibs="$deplib $deplibs"
62684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    test "$pass" = conv && continue
62694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    newdependency_libs="$deplib $newdependency_libs"
62704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_stripname '-L' '' "$deplib"
6271ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_resolve_sysroot "$func_stripname_result"
6272ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append newlib_search_path " $func_resolve_sysroot_result"
62734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
62744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prog)
62754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$pass" = conv; then
62764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      deplibs="$deplib $deplibs"
62774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      continue
62784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
62794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$pass" = scan; then
62804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      deplibs="$deplib $deplibs"
62814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
62824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      compile_deplibs="$deplib $compile_deplibs"
62834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      finalize_deplibs="$deplib $finalize_deplibs"
62844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
62854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_stripname '-L' '' "$deplib"
6286ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_resolve_sysroot "$func_stripname_result"
6287ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append newlib_search_path " $func_resolve_sysroot_result"
62884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
62894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *)
62904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_warning "\`-L' is ignored for archives/objects"
62914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
62924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac # linkmode
62934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
62944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;; # -L
62954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	-R*)
62964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$pass" = link; then
62974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_stripname '-R' '' "$deplib"
6298ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_resolve_sysroot "$func_stripname_result"
6299ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    dir=$func_resolve_sysroot_result
63004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Make sure the xrpath contains only unique directories.
63014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case "$xrpath " in
63024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *" $dir "*) ;;
6303ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    *) func_append xrpath " $dir" ;;
63044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
63054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
63064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  deplibs="$deplib $deplibs"
63074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
63084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
6309ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	*.la)
6310ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_resolve_sysroot "$deplib"
6311ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  lib=$func_resolve_sysroot_result
6312ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  ;;
63134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*.$libext)
63144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$pass" = conv; then
63154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    deplibs="$deplib $deplibs"
63164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    continue
63174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
63184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case $linkmode in
63194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  lib)
63204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Linking convenience modules into shared libraries is allowed,
63214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # but linking other static libraries is non-portable.
63224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case " $dlpreconveniencelibs " in
63234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *" $deplib "*) ;;
63244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *)
63254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      valid_a_lib=no
63264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case $deplibs_check_method in
63274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		match_pattern*)
63284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  set dummy $deplibs_check_method; shift
63294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
6330ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
63314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    | $EGREP "$match_pattern_regex" > /dev/null; then
63324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    valid_a_lib=yes
63334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  fi
63344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		;;
63354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		pass_all)
63364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  valid_a_lib=yes
63374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		;;
63384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
63394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test "$valid_a_lib" != yes; then
6340ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo
63414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
6342ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo "*** I have the capability to make that library automatically link in when"
6343ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo "*** you link to this library.  But I can only do this if you have a"
6344ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo "*** shared version of the library, which you do not appear to have"
6345ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo "*** because the file extensions .$libext of this argument makes me believe"
6346ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo "*** that it is just a static archive that I should not use here."
63474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      else
6348ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo
63494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		$ECHO "*** Warning: Linking the shared library $output against the"
63504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		$ECHO "*** static library $deplib is not portable!"
63514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		deplibs="$deplib $deplibs"
63524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
63534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      ;;
63544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
63554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    continue
63564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
63574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  prog)
63584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$pass" != link; then
63594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      deplibs="$deplib $deplibs"
63604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
63614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      compile_deplibs="$deplib $compile_deplibs"
63624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      finalize_deplibs="$deplib $finalize_deplibs"
63634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
63644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    continue
63654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
63664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac # linkmode
63674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;; # *.$libext
63684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*.lo | *.$objext)
63694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$pass" = conv; then
63704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    deplibs="$deplib $deplibs"
63714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  elif test "$linkmode" = prog; then
63724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
63734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # If there is no dlopen support or we're linking statically,
63744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # we need to preload.
6375ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append newdlprefiles " $deplib"
63764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      compile_deplibs="$deplib $compile_deplibs"
63774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      finalize_deplibs="$deplib $finalize_deplibs"
63784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
6379ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append newdlfiles " $deplib"
63804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
63814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
63824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
63834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
63844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	%DEPLIBS%)
63854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  alldeplibs=yes
63864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
63874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
63884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac # case $deplib
6389893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
63904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$found" = yes || test -f "$lib"; then :
63914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	else
63924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
63934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
6394893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
63954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Check to see that this really is a libtool archive.
63964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_lalib_unsafe_p "$lib" \
63974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  || func_fatal_error "\`$lib' is not a valid libtool archive"
6398893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
63994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_dirname "$lib" "" "."
64004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	ladir="$func_dirname_result"
6401893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
64024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	dlname=
64034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	dlopen=
64044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	dlpreopen=
64054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	libdir=
64064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	library_names=
64074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	old_library=
64084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	inherited_linker_flags=
64094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# If the library was installed with an old release of libtool,
64104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# it will not redefine variables installed, or shouldnotlink
64114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	installed=yes
64124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	shouldnotlink=no
64134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	avoidtemprpath=
6414893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
6415893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
64164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Read the .la file
64174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_source "$lib"
64184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
64194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Convert "-framework foo" to "foo.ltframework"
64204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$inherited_linker_flags"; then
6421ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
64224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
64234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case " $new_inherited_linker_flags " in
64244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *" $tmp_inherited_linker_flag "*) ;;
6425ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
64264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
64274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  done
64284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
6429ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
64304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$linkmode,$pass" = "lib,link" ||
64314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	   test "$linkmode,$pass" = "prog,scan" ||
64324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
6433ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  test -n "$dlopen" && func_append dlfiles " $dlopen"
6434ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
64354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
6436893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
64374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$pass" = conv; then
64384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Only check for convenience libraries
64394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  deplibs="$lib $deplibs"
64404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -z "$libdir"; then
64414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -z "$old_library"; then
64424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_fatal_error "cannot find name of link library for \`$lib'"
64434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
64444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # It is a libtool convenience library, so add in its objects.
6445ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append convenience " $ladir/$objdir/$old_library"
6446ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append old_convenience " $ladir/$objdir/$old_library"
64474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
64484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_fatal_error "\`$lib' is not a convenience library"
64494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
64504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  tmp_libs=
64514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for deplib in $dependency_libs; do
64524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    deplibs="$deplib $deplibs"
6453ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    if $opt_preserve_dup_deps ; then
64544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case "$tmp_libs " in
6455ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
64564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
64574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
6458ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append tmp_libs " $deplib"
64594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  done
64604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
64614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi # $pass = conv
6462893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
6463893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
64644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Get the name of the library we link against.
64654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	linklib=
6466ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	if test -n "$old_library" &&
6467ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	   { test "$prefer_static_libs" = yes ||
6468ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	     test "$prefer_static_libs,$installed" = "built,no"; }; then
6469ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  linklib=$old_library
6470ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	else
6471ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  for l in $old_library $library_names; do
6472ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    linklib="$l"
6473ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  done
6474ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	fi
64754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -z "$linklib"; then
64764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_fatal_error "cannot find name of link library for \`$lib'"
64774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
6478893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
64794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# This library was specified with -dlopen.
64804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$pass" = dlopen; then
64814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -z "$libdir"; then
64824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
64834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
64844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -z "$dlname" ||
64854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	     test "$dlopen_support" != yes ||
64864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	     test "$build_libtool_libs" = no; then
64874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # If there is no dlname, no dlopen support or we're linking
64884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # statically, we need to preload.  We also need to preload any
64894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # dependent libraries so libltdl's deplib preloader doesn't
64904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # bomb out in the load deplibs phase.
6491ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append dlprefiles " $lib $dependency_libs"
64924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
6493ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append newdlfiles " $lib"
64944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
64954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
64964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi # $pass = dlopen
6497893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
64984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# We need an absolute path.
64994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $ladir in
65004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
65014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*)
65024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  abs_ladir=`cd "$ladir" && pwd`
65034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -z "$abs_ladir"; then
65044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_warning "cannot determine absolute directory name of \`$ladir'"
65054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_warning "passing it literally to the linker, although it might fail"
65064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    abs_ladir="$ladir"
65074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
65084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
65094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
65104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_basename "$lib"
65114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	laname="$func_basename_result"
6512893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
65134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Find the relevant object directory and library name.
65144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "X$installed" = Xyes; then
6515ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
65164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_warning "library \`$lib' was moved."
65174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    dir="$ladir"
65184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    absdir="$abs_ladir"
65194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    libdir="$abs_ladir"
65204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
6521ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    dir="$lt_sysroot$libdir"
6522ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    absdir="$lt_sysroot$libdir"
65234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
65244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
65254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	else
65264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
65274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    dir="$ladir"
65284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    absdir="$abs_ladir"
65294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Remove this search path later
6530ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append notinst_path " $abs_ladir"
65314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
65324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    dir="$ladir/$objdir"
65334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    absdir="$abs_ladir/$objdir"
65344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Remove this search path later
6535ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append notinst_path " $abs_ladir"
65364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
65374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi # $installed = yes
65384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_stripname 'lib' '.la' "$laname"
65394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	name=$func_stripname_result
6540893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
65414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# This library was specified with -dlpreopen.
65424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$pass" = dlpreopen; then
65434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -z "$libdir" && test "$linkmode" = prog; then
65444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
65454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
6546ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  case "$host" in
6547ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    # special handling for platforms with PE-DLLs.
6548ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    *cygwin* | *mingw* | *cegcc* )
6549ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      # Linker will automatically link against shared library if both
6550ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      # static and shared are present.  Therefore, ensure we extract
6551ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      # symbols from the import library if a shared library is present
6552ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      # (otherwise, the dlopen module name will be incorrect).  We do
6553ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      # this by putting the import library name into $newdlprefiles.
6554ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      # We recover the dlopen module name by 'saving' the la file
6555ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      # name in a special purpose variable, and (later) extracting the
6556ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      # dlname from the la file.
6557ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      if test -n "$dlname"; then
6558ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        func_tr_sh "$dir/$linklib"
6559ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
6560ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        func_append newdlprefiles " $dir/$linklib"
6561ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      else
6562ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        func_append newdlprefiles " $dir/$old_library"
6563ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        # Keep a list of preopened convenience libraries to check
6564ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        # that they are being used correctly in the link pass.
6565ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        test -z "$libdir" && \
6566ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	          func_append dlpreconveniencelibs " $dir/$old_library"
6567ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      fi
6568ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    ;;
6569ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    * )
6570ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      # Prefer using a static library (so that no silly _DYNAMIC symbols
6571ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      # are required to link).
6572ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      if test -n "$old_library"; then
6573ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        func_append newdlprefiles " $dir/$old_library"
6574ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        # Keep a list of preopened convenience libraries to check
6575ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        # that they are being used correctly in the link pass.
6576ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        test -z "$libdir" && \
6577ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	          func_append dlpreconveniencelibs " $dir/$old_library"
6578ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      # Otherwise, use the dlname, so that lt_dlopen finds it.
6579ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      elif test -n "$dlname"; then
6580ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        func_append newdlprefiles " $dir/$dlname"
6581ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      else
6582ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        func_append newdlprefiles " $dir/$linklib"
6583ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      fi
6584ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    ;;
6585ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  esac
65864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi # $pass = dlpreopen
6587893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
65884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -z "$libdir"; then
65894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Link the convenience library
65904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$linkmode" = lib; then
65914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    deplibs="$dir/$old_library $deplibs"
65924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  elif test "$linkmode,$pass" = "prog,link"; then
65934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    compile_deplibs="$dir/$old_library $compile_deplibs"
65944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
65954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
65964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    deplibs="$lib $deplibs" # used for prog,scan pass
65974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
65984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
65994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
6600893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
6601893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
66024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$linkmode" = prog && test "$pass" != link; then
6603ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append newlib_search_path " $ladir"
66044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  deplibs="$lib $deplibs"
6605893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
66064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  linkalldeplibs=no
66074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
66084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	     test "$build_libtool_libs" = no; then
66094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    linkalldeplibs=yes
66104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
6611893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
66124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  tmp_libs=
66134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for deplib in $dependency_libs; do
66144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case $deplib in
66154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    -L*) func_stripname '-L' '' "$deplib"
6616ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	         func_resolve_sysroot "$func_stripname_result"
6617ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	         func_append newlib_search_path " $func_resolve_sysroot_result"
66184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		 ;;
66194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
66204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Need to link against all dependency_libs?
66214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$linkalldeplibs" = yes; then
66224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      deplibs="$deplib $deplibs"
66234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
66244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # Need to hardcode shared library paths
66254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # or/and link against static libraries
66264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      newdependency_libs="$deplib $newdependency_libs"
66274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
6628ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    if $opt_preserve_dup_deps ; then
66294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case "$tmp_libs " in
6630ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
66314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
66324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
6633ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append tmp_libs " $deplib"
66344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  done # for deplib
66354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  continue
66364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi # $linkmode = prog...
6637893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
66384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$linkmode,$pass" = "prog,link"; then
66394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$library_names" &&
66404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	     { { test "$prefer_static_libs" = no ||
66414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
66424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	       test -z "$old_library"; }; then
66434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # We need to hardcode the library path
66444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
66454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # Make sure the rpath contains only unique directories.
66464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case "$temp_rpath:" in
66474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *"$absdir:"*) ;;
6648ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      *) func_append temp_rpath "$absdir:" ;;
66494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
66504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
6651893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
66524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Hardcode the library path.
66534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Skip directories that are in the system default run-time
66544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # search path.
66554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case " $sys_lib_dlsearch_path " in
66564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *" $absdir "*) ;;
66574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *)
66584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case "$compile_rpath " in
66594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *" $absdir "*) ;;
6660ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      *) func_append compile_rpath " $absdir" ;;
66614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
66624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      ;;
66634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
66644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case " $sys_lib_dlsearch_path " in
66654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *" $libdir "*) ;;
66664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *)
66674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case "$finalize_rpath " in
66684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *" $libdir "*) ;;
6669ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      *) func_append finalize_rpath " $libdir" ;;
66704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
66714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      ;;
66724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
66734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi # $linkmode,$pass = prog,link...
6674893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
66754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$alldeplibs" = yes &&
66764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	     { test "$deplibs_check_method" = pass_all ||
66774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	       { test "$build_libtool_libs" = yes &&
66784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		 test -n "$library_names"; }; }; then
66794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # We only need to search for static libraries
66804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    continue
66814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
66824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
6683893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
66844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	link_static=no # Whether the deplib will be linked statically
66854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	use_static_libs=$prefer_static_libs
66864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$use_static_libs" = built && test "$installed" = yes; then
66874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  use_static_libs=no
66884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
66894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$library_names" &&
66904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
66914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case $host in
66925f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	  *cygwin* | *mingw* | *cegcc*)
66934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # No point in relinking DLLs because paths are not encoded
6694ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append notinst_deplibs " $lib"
66954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      need_relink=no
66964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
66974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *)
66984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$installed" = no; then
6699ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append notinst_deplibs " $lib"
67004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      need_relink=yes
67014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
67024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
67034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
67044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # This is a shared library
6705893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
67064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Warn about portability, can't link against -module's on some
67074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # systems (darwin).  Don't bleat about dlopened modules though!
67084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  dlopenmodule=""
67094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for dlpremoduletest in $dlprefiles; do
67104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "X$dlpremoduletest" = "X$lib"; then
67114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      dlopenmodule="$dlpremoduletest"
67124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      break
67134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
67144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  done
67154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
6716ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    echo
67174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$linkmode" = prog; then
67184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
67194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
67204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
67214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
67224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    $ECHO "*** $linklib is not portable!"
67234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
67244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$linkmode" = lib &&
67254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	     test "$hardcode_into_libs" = yes; then
67264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Hardcode the library path.
67274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Skip directories that are in the system default run-time
67284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # search path.
67294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case " $sys_lib_dlsearch_path " in
67304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *" $absdir "*) ;;
67314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *)
67324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case "$compile_rpath " in
67334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *" $absdir "*) ;;
6734ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      *) func_append compile_rpath " $absdir" ;;
67354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
67364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      ;;
67374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
67384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case " $sys_lib_dlsearch_path " in
67394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *" $libdir "*) ;;
67404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *)
67414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case "$finalize_rpath " in
67424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *" $libdir "*) ;;
6743ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      *) func_append finalize_rpath " $libdir" ;;
67444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
67454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      ;;
67464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
67474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
6748893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
67494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$old_archive_from_expsyms_cmds"; then
67504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # figure out the soname
67514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    set dummy $library_names
67524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    shift
67534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    realname="$1"
67544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    shift
67554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    libname=`eval "\\$ECHO \"$libname_spec\""`
67564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # use dlname if we got it. it's perfectly good, no?
67574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -n "$dlname"; then
67584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      soname="$dlname"
67594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    elif test -n "$soname_spec"; then
67604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # bleh windows
67614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case $host in
67625f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	      *cygwin* | mingw* | *cegcc*)
67634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	        func_arith $current - $age
67644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		major=$func_arith_result
67654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		versuffix="-$major"
67664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		;;
67674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
67684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      eval soname=\"$soname_spec\"
67694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
67704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      soname="$realname"
67714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
6772893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
67734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Make a new name for the extract_expsyms_cmds to use
67744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    soroot="$soname"
67754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_basename "$soroot"
67764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    soname="$func_basename_result"
67774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_stripname 'lib' '.dll' "$soname"
67784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    newlib=libimp-$func_stripname_result.a
6779893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
67804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # If the library has no export list, then create one now
67814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -f "$output_objdir/$soname-def"; then :
67824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
67834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_verbose "extracting exported symbol list from \`$soname'"
67844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
67854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
6786893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
67874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Create $newlib
67884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -f "$output_objdir/$newlib"; then :; else
67894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_verbose "generating import library for \`$soname'"
67904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
67914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
67924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # make sure the library variables are pointing to the new library
67934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    dir=$output_objdir
67944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    linklib=$newlib
67954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi # test -n "$old_archive_from_expsyms_cmds"
6796893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
6797ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
67984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    add_shlibpath=
67994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    add_dir=
68004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    add=
68014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    lib_linked=yes
68024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case $hardcode_action in
68034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    immediate | unsupported)
68044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test "$hardcode_direct" = no; then
68054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		add="$dir/$linklib"
68064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		case $host in
68074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
68084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
68094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
68104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    *-*-unixware7*) add_dir="-L$dir" ;;
68114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  *-*-darwin* )
68124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    # if the lib is a (non-dlopened) module then we can not
68134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    # link against it, someone is ignoring the earlier warnings
68144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    if /usr/bin/file -L $add 2> /dev/null |
68154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			 $GREP ": [^:]* bundle" >/dev/null ; then
68164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      if test "X$dlopenmodule" != "X$lib"; then
68174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
68184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			if test -z "$old_library" ; then
6819ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			  echo
6820ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			  echo "*** And there doesn't seem to be a static archive available"
6821ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			  echo "*** The link will probably fail, sorry"
68224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			else
68234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			  add="$dir/$old_library"
68244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			fi
68254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      elif test -n "$old_library"; then
68264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			add="$dir/$old_library"
68274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      fi
68284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    fi
68294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		esac
68304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      elif test "$hardcode_minus_L" = no; then
68314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		case $host in
68324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		*-*-sunos*) add_shlibpath="$dir" ;;
68334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		esac
68344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		add_dir="-L$dir"
68354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		add="-l$name"
68364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      elif test "$hardcode_shlibpath_var" = no; then
68374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		add_shlibpath="$dir"
68384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		add="-l$name"
68394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      else
68404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		lib_linked=no
68414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
68424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      ;;
68434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    relink)
68444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test "$hardcode_direct" = yes &&
68454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	         test "$hardcode_direct_absolute" = no; then
68464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		add="$dir/$linklib"
68474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      elif test "$hardcode_minus_L" = yes; then
6848ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		add_dir="-L$absdir"
68494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		# Try looking first in the location we're being installed to.
68504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		if test -n "$inst_prefix_dir"; then
68514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  case $libdir in
68524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    [\\/]*)
6853ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		      func_append add_dir " -L$inst_prefix_dir$libdir"
68544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      ;;
68554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  esac
68564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		fi
68574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		add="-l$name"
68584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      elif test "$hardcode_shlibpath_var" = yes; then
68594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		add_shlibpath="$dir"
68604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		add="-l$name"
68614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      else
68624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		lib_linked=no
68634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
68644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      ;;
68654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *) lib_linked=no ;;
68664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
6867893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
68684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$lib_linked" != yes; then
68694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_fatal_configuration "unsupported hardcode properties"
68704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
6871893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
68724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -n "$add_shlibpath"; then
68734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case :$compile_shlibpath: in
68744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *":$add_shlibpath:"*) ;;
6875ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
68764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
68774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
68784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$linkmode" = prog; then
68794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
68804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
68814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
68824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
68834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      test -n "$add" && deplibs="$add $deplibs"
68844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test "$hardcode_direct" != yes &&
68854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		 test "$hardcode_minus_L" != yes &&
68864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		 test "$hardcode_shlibpath_var" = yes; then
68874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		case :$finalize_shlibpath: in
68884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		*":$libdir:"*) ;;
6889ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		*) func_append finalize_shlibpath "$libdir:" ;;
68904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		esac
68914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
68924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
68934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
6894893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
6895ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
68964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    add_shlibpath=
68974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    add_dir=
68984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    add=
68994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Finalize command for both is simple: just hardcode it.
69004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$hardcode_direct" = yes &&
69014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	       test "$hardcode_direct_absolute" = no; then
69024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      add="$libdir/$linklib"
69034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    elif test "$hardcode_minus_L" = yes; then
69044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      add_dir="-L$libdir"
69054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      add="-l$name"
69064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    elif test "$hardcode_shlibpath_var" = yes; then
69074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case :$finalize_shlibpath: in
69084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *":$libdir:"*) ;;
6909ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      *) func_append finalize_shlibpath "$libdir:" ;;
69104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
69114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      add="-l$name"
69124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    elif test "$hardcode_automatic" = yes; then
69134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test -n "$inst_prefix_dir" &&
69144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
69154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		add="$inst_prefix_dir$libdir/$linklib"
69164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      else
69174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		add="$libdir/$linklib"
69184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
69194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
69204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # We cannot seem to hardcode it, guess we'll fake it.
69214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      add_dir="-L$libdir"
69224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # Try looking first in the location we're being installed to.
69234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test -n "$inst_prefix_dir"; then
69244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		case $libdir in
69254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  [\\/]*)
6926ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    func_append add_dir " -L$inst_prefix_dir$libdir"
69274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    ;;
69284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		esac
69294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
69304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      add="-l$name"
69314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
6932893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
69334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$linkmode" = prog; then
69344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
69354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
69364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
69374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
69384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      test -n "$add" && deplibs="$add $deplibs"
69394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
69404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
69414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	elif test "$linkmode" = prog; then
69424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Here we assume that one of hardcode_direct or hardcode_minus_L
69434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # is not unsupported.  This is valid on all known static and
69444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # shared platforms.
69454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$hardcode_direct" != unsupported; then
69464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    test -n "$old_library" && linklib="$old_library"
69474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    compile_deplibs="$dir/$linklib $compile_deplibs"
69484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
69494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
69504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    compile_deplibs="-l$name -L$dir $compile_deplibs"
69514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
69524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
69534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	elif test "$build_libtool_libs" = yes; then
69544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Not a shared library
69554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$deplibs_check_method" != pass_all; then
69564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # We're trying link a shared library against a static one
69574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # but the system doesn't support it.
6958893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
69594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Just print a warning and add the library to dependency_libs so
69604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # that the program can be linked against the static library.
6961ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    echo
69624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
6963ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    echo "*** I have the capability to make that library automatically link in when"
6964ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    echo "*** you link to this library.  But I can only do this if you have a"
6965ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    echo "*** shared version of the library, which you do not appear to have."
69664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$module" = yes; then
6967ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      echo "*** But as you try to build a module library, libtool will still create "
6968ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      echo "*** a static module, that should work as long as the dlopening application"
6969ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
69704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test -z "$global_symbol_pipe"; then
6971ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo
6972ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo "*** However, this would only work if libtool was able to extract symbol"
6973ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
6974ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo "*** not find such a program.  So, this module is probably useless."
6975ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo "*** \`nm' from GNU binutils and a full rebuild may help."
69764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
69774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test "$build_old_libs" = no; then
69784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		build_libtool_libs=module
69794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		build_old_libs=yes
69804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      else
69814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		build_libtool_libs=no
69824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
69834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
69844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
69854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    deplibs="$dir/$old_library $deplibs"
69864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    link_static=yes
69874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
69884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi # link shared/static library?
6989893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
69904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$linkmode" = lib; then
69914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$dependency_libs" &&
69924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	     { test "$hardcode_into_libs" != yes ||
69934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	       test "$build_old_libs" = yes ||
69944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	       test "$link_static" = yes; }; then
69954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Extract -R from dependency_libs
69964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    temp_deplibs=
69974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    for libdir in $dependency_libs; do
69984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case $libdir in
69994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      -R*) func_stripname '-R' '' "$libdir"
70004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	           temp_xrpath=$func_stripname_result
70014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		   case " $xrpath " in
70024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		   *" $temp_xrpath "*) ;;
7003ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		   *) func_append xrpath " $temp_xrpath";;
70044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		   esac;;
7005ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      *) func_append temp_deplibs " $libdir";;
70064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
70074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    done
70084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    dependency_libs="$temp_deplibs"
70094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
70104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
7011ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append newlib_search_path " $absdir"
70124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Link against this library
70134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
70144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # ... and its dependency_libs
70154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  tmp_libs=
70164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for deplib in $dependency_libs; do
70174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    newdependency_libs="$deplib $newdependency_libs"
7018ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    case $deplib in
7019ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik              -L*) func_stripname '-L' '' "$deplib"
7020ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik                   func_resolve_sysroot "$func_stripname_result";;
7021ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik              *) func_resolve_sysroot "$deplib" ;;
7022ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik            esac
7023ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    if $opt_preserve_dup_deps ; then
70244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case "$tmp_libs " in
7025ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      *" $func_resolve_sysroot_result "*)
7026ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
70274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
70284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
7029ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append tmp_libs " $func_resolve_sysroot_result"
70304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  done
70314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
70324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$link_all_deplibs" != no; then
70334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Add the search paths of all dependency libraries
70344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    for deplib in $dependency_libs; do
7035ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      path=
70364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case $deplib in
70374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      -L*) path="$deplib" ;;
70384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *.la)
7039ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        func_resolve_sysroot "$deplib"
7040ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	        deplib=$func_resolve_sysroot_result
70414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	        func_dirname "$deplib" "" "."
7042ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		dir=$func_dirname_result
70434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		# We need an absolute path.
70444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		case $dir in
70454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
70464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		*)
70474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  absdir=`cd "$dir" && pwd`
70484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  if test -z "$absdir"; then
70494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    func_warning "cannot determine absolute directory name of \`$dir'"
70504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    absdir="$dir"
70514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  fi
70524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  ;;
70534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		esac
70544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		if $GREP "^installed=no" $deplib > /dev/null; then
70554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		case $host in
70564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		*-*-darwin*)
70574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  depdepl=
70584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
70594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  if test -n "$deplibrary_names" ; then
70604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    for tmp in $deplibrary_names ; do
70614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      depdepl=$tmp
70624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    done
70634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    if test -f "$absdir/$objdir/$depdepl" ; then
70644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      depdepl="$absdir/$objdir/$depdepl"
70655f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
70664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project                      if test -z "$darwin_install_name"; then
70675f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
70684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project                      fi
7069ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
7070ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
70714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      path=
70724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    fi
70734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  fi
70744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  ;;
70754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		*)
70764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  path="-L$absdir/$objdir"
70774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  ;;
70784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		esac
70794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		else
70804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
70814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  test -z "$libdir" && \
70824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    func_fatal_error "\`$deplib' is not a valid libtool archive"
70834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  test "$absdir" != "$libdir" && \
70844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    func_warning "\`$deplib' seems to be moved"
70854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
70864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  path="-L$absdir"
70874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		fi
70884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		;;
70894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
70904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case " $deplibs " in
70914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *" $path "*) ;;
70924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *) deplibs="$path $deplibs" ;;
70934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
70944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    done
70954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi # link_all_deplibs != no
70964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi # linkmode = lib
70974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      done # for deplib in $libs
70984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test "$pass" = link; then
70994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$linkmode" = "prog"; then
71004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
71014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
71024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	else
7103ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
71044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
71054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
71064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      dependency_libs="$newdependency_libs"
71074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test "$pass" = dlpreopen; then
71084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Link the dlpreopened libraries before other libraries
71094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	for deplib in $save_deplibs; do
71104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  deplibs="$deplib $deplibs"
71114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	done
71124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
71134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test "$pass" != dlopen; then
71144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$pass" != conv; then
71154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Make sure lib_search_path contains only unique directories.
71164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  lib_search_path=
71174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for dir in $newlib_search_path; do
71184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case "$lib_search_path " in
71194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *" $dir "*) ;;
7120ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    *) func_append lib_search_path " $dir" ;;
71214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
71224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  done
71234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  newlib_search_path=
71244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
71254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
71264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$linkmode,$pass" != "prog,link"; then
71274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  vars="deplibs"
71284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	else
71294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  vars="compile_deplibs finalize_deplibs"
71304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
71314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	for var in $vars dependency_libs; do
71324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Add libraries to $var in reverse order
71334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  eval tmp_libs=\"\$$var\"
71344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  new_libs=
71354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for deplib in $tmp_libs; do
71364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # FIXME: Pedantically, this is the right thing to do, so
71374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    #        that some nasty dependency loop isn't accidentally
71384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    #        broken:
71394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    #new_libs="$deplib $new_libs"
71404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Pragmatically, this seems to cause very few problems in
71414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # practice:
71424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case $deplib in
71434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    -L*) new_libs="$deplib $new_libs" ;;
71444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    -R*) ;;
71454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *)
71464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # And here is the reason: when a library appears more
71474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # than once as an explicit dependence of a library, or
71484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # is implicitly linked in more than once by the
71494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # compiler, it is considered special, and multiple
71504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # occurrences thereof are not removed.  Compare this
71514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # with having the same library being listed as a
71524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # dependency of multiple other libraries: in this case,
71534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # we know (pedantically, we assume) the library does not
71544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # need to be listed more than once, so we keep only the
71554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # last copy.  This is not always right, but it is rare
71564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # enough that we require users that really mean to play
71574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # such unportable linking tricks to link the library
71584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # using -Wl,-lname, so that libtool does not consider it
71594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # for duplicate removal.
71604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case " $specialdeplibs " in
71614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
71624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *)
71634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		case " $new_libs " in
71644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		*" $deplib "*) ;;
71654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		*) new_libs="$deplib $new_libs" ;;
71664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		esac
71674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		;;
71684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
71694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      ;;
71704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
71714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  done
71724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  tmp_libs=
71734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for deplib in $new_libs; do
71744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case $deplib in
71754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    -L*)
71764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case " $tmp_libs " in
71774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *" $deplib "*) ;;
7178ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      *) func_append tmp_libs " $deplib" ;;
71794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
71804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      ;;
7181ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    *) func_append tmp_libs " $deplib" ;;
71824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
71834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  done
71844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  eval $var=\"$tmp_libs\"
71854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	done # for var
71864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
71874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Last step: remove runtime libs from dependency_libs
71884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # (they stay in deplibs)
71894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      tmp_libs=
71904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      for i in $dependency_libs ; do
71914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case " $predeps $postdeps $compiler_lib_search_path " in
71924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*" $i "*)
71934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  i=""
71944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
71954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
71964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$i" ; then
7197ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append tmp_libs " $i"
71984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
71994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      done
72004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      dependency_libs=$tmp_libs
72014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    done # for pass
72024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test "$linkmode" = prog; then
72034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      dlfiles="$newdlfiles"
72044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
72054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    if test "$linkmode" = prog || test "$linkmode" = lib; then
72064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      dlprefiles="$newdlprefiles"
72074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    fi
72084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
72094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    case $linkmode in
72104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    oldlib)
72114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
72124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_warning "\`-dlopen' is ignored for archives"
72134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
72144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
72154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case " $deplibs" in
72164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *\ -l* | *\ -L*)
72174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_warning "\`-l' and \`-L' are ignored for archives" ;;
72184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      esac
72194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
72204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test -n "$rpath" && \
72214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_warning "\`-rpath' is ignored for archives"
72224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
72234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test -n "$xrpath" && \
72244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_warning "\`-R' is ignored for archives"
72254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
72264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test -n "$vinfo" && \
72274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_warning "\`-version-info/-version-number' is ignored for archives"
72284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
72294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test -n "$release" && \
72304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_warning "\`-release' is ignored for archives"
72314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
72324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test -n "$export_symbols$export_symbols_regex" && \
72334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_warning "\`-export-symbols' is ignored for archives"
72344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
72354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Now set the variables for building old libraries.
72364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      build_libtool_libs=no
72374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      oldlibs="$output"
7238ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_append objs "$old_deplibs"
72394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      ;;
72404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
72414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    lib)
72424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Make sure we only generate libraries of the form `libNAME.la'.
72434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case $outputname in
72444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      lib*)
72454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_stripname 'lib' '.la' "$outputname"
72464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	name=$func_stripname_result
72474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	eval shared_ext=\"$shrext_cmds\"
72484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	eval libname=\"$libname_spec\"
72494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
72504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *)
72514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	test "$module" = no && \
72524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
72534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
72544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$need_lib_prefix" != no; then
72554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Add the "lib" prefix for modules if required
72564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_stripname '' '.la' "$outputname"
72574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  name=$func_stripname_result
72584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  eval shared_ext=\"$shrext_cmds\"
72594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  eval libname=\"$libname_spec\"
72604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	else
72614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_stripname '' '.la' "$outputname"
72624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  libname=$func_stripname_result
72634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
72644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
72654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      esac
72664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
72674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$objs"; then
72684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$deplibs_check_method" != pass_all; then
72694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
72704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	else
7271ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  echo
72724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
72734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  $ECHO "*** objects $objs is not portable!"
7274ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append libobjs " $objs"
72754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
72764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
72774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
72784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test "$dlself" != no && \
72794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_warning "\`-dlopen self' is ignored for libtool libraries"
72804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
72814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      set dummy $rpath
72824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      shift
72834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test "$#" -gt 1 && \
72844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_warning "ignoring multiple \`-rpath's for a libtool library"
72854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
72864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      install_libdir="$1"
72874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
72884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      oldlibs=
72894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -z "$rpath"; then
72904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$build_libtool_libs" = yes; then
72914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Building a libtool convenience library.
72924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Some compilers have problems with a `.al' extension so
72934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # convenience libraries should have the same extension an
72944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # archive normally would.
72954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
72964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  build_libtool_libs=convenience
72974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  build_old_libs=yes
72984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
72994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
73004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	test -n "$vinfo" && \
73014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
73024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
73034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	test -n "$release" && \
73044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_warning "\`-release' is ignored for convenience libraries"
73054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      else
73064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
73074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Parse the version information argument.
73084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	save_ifs="$IFS"; IFS=':'
73094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	set dummy $vinfo 0 0 0
73104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	shift
73114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	IFS="$save_ifs"
73124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
73134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	test -n "$7" && \
73144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_fatal_help "too many parameters to \`-version-info'"
73154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
73164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# convert absolute version numbers to libtool ages
73174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# this retains compatibility with .la files and attempts
73184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# to make the code below a bit more comprehensible
73194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
73204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $vinfo_number in
73214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	yes)
73224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  number_major="$1"
73234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  number_minor="$2"
73244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  number_revision="$3"
73254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  #
73264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # There are really only two kinds -- those that
73274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # use the current revision as the major version
73284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # and those that subtract age and use age as
73294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # a minor version.  But, then there is irix
73304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # which has an extra 1 added just for fun
73314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  #
73324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case $version_type in
7333ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  # correct linux to gnu/linux during the next big refactor
73344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  darwin|linux|osf|windows|none)
73354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_arith $number_major + $number_minor
73364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    current=$func_arith_result
73374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    age="$number_minor"
73384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    revision="$number_revision"
73394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
7340ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  freebsd-aout|freebsd-elf|qnx|sunos)
73414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    current="$number_major"
73424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    revision="$number_minor"
73434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    age="0"
73444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
73454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  irix|nonstopux)
73464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_arith $number_major + $number_minor
73474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    current=$func_arith_result
73484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    age="$number_minor"
73494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    revision="$number_minor"
73504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    lt_irix_increment=no
73514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
73524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
73534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
73544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	no)
73554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  current="$1"
73564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  revision="$2"
73574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  age="$3"
73584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
73594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
73604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
73614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Check that each of the things are valid numbers.
73624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $current in
73634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	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]) ;;
73644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*)
73654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_error "CURRENT \`$current' must be a nonnegative integer"
73664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_fatal_error "\`$vinfo' is not valid version information"
73674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
73684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
73694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
73704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $revision in
73714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	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]) ;;
73724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*)
73734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_error "REVISION \`$revision' must be a nonnegative integer"
73744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_fatal_error "\`$vinfo' is not valid version information"
73754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
73764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
73774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
73784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $age in
73794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	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]) ;;
73804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*)
73814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_error "AGE \`$age' must be a nonnegative integer"
73824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_fatal_error "\`$vinfo' is not valid version information"
73834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
73844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
73854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
73864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$age" -gt "$current"; then
73874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
73884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_fatal_error "\`$vinfo' is not valid version information"
73894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
73904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
73914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Calculate the version variables.
73924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	major=
73934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	versuffix=
73944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	verstring=
73954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $version_type in
73964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	none) ;;
73974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
73984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	darwin)
73994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Like Linux, but with the current version available in
74004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # verstring for coding it into the library header
74014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_arith $current - $age
74024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  major=.$func_arith_result
74034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  versuffix="$major.$age.$revision"
74044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Darwin ld doesn't like 0 for these options...
74054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_arith $current + 1
74064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  minor_current=$func_arith_result
74074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
74084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
74094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
74104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
74114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	freebsd-aout)
74124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  major=".$current"
74134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  versuffix=".$current.$revision";
74144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
74154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
74164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	freebsd-elf)
74174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  major=".$current"
74184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  versuffix=".$current"
74194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
74204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
74214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	irix | nonstopux)
74224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "X$lt_irix_increment" = "Xno"; then
74234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_arith $current - $age
74244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
74254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_arith $current - $age + 1
74264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
74274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  major=$func_arith_result
74284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
74294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case $version_type in
74304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    nonstopux) verstring_prefix=nonstopux ;;
74314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *)         verstring_prefix=sgi ;;
74324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
74334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  verstring="$verstring_prefix$major.$revision"
74344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
74354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Add in all the interfaces that we are compatible with.
74364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  loop=$revision
74374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  while test "$loop" -ne 0; do
74384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_arith $revision - $loop
74394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    iface=$func_arith_result
74404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_arith $loop - 1
74414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    loop=$func_arith_result
74424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    verstring="$verstring_prefix$major.$iface:$verstring"
74434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  done
74444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
74454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Before this point, $major must not contain `.'.
74464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  major=.$major
74474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  versuffix="$major.$revision"
74484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
74494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
7450ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	linux) # correct to gnu/linux during the next big refactor
74514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_arith $current - $age
74524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  major=.$func_arith_result
74534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  versuffix="$major.$age.$revision"
74544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
74554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
74564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	osf)
74574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_arith $current - $age
74584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  major=.$func_arith_result
74594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  versuffix=".$current.$age.$revision"
74604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  verstring="$current.$age.$revision"
74614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
74624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Add in all the interfaces that we are compatible with.
74634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  loop=$age
74644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  while test "$loop" -ne 0; do
74654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_arith $current - $loop
74664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    iface=$func_arith_result
74674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_arith $loop - 1
74684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    loop=$func_arith_result
74694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    verstring="$verstring:${iface}.0"
74704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  done
74714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
74724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Make executables depend on our current version.
7473ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append verstring ":${current}.0"
74744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
74754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
74764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	qnx)
74774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  major=".$current"
74784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  versuffix=".$current"
74794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
74804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
74814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	sunos)
74824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  major=".$current"
74834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  versuffix=".$current.$revision"
74844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
74854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
74864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	windows)
74874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Use '-' rather than '.', since we only want one
74884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # extension on DOS 8.3 filesystems.
74894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_arith $current - $age
74904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  major=$func_arith_result
74914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  versuffix="-$major"
74924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
74934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
74944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*)
74954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_fatal_configuration "unknown library version type \`$version_type'"
74964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
74974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
74984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
74994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Clear the version info if we defaulted, and they specified a release.
75004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -z "$vinfo" && test -n "$release"; then
75014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  major=
75024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case $version_type in
75034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  darwin)
75044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # we can't check for "0.0" in archive_cmds due to quoting
75054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # problems, so we reset it completely
75064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    verstring=
75074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
75084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *)
75094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    verstring="0.0"
75104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
75114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
75124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$need_version" = no; then
75134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    versuffix=
75144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
75154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    versuffix=".0.0"
75164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
75174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
75184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
75194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Remove version info from name if versioning should be avoided
75204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$avoid_version" = yes && test "$need_version" = no; then
75214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  major=
75224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  versuffix=
75234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  verstring=""
75244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
75254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
75264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Check to see if the archive will have undefined symbols.
75274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$allow_undefined" = yes; then
75284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$allow_undefined_flag" = unsupported; then
75294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_warning "undefined symbols not allowed in $host shared libraries"
75304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    build_libtool_libs=no
75314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    build_old_libs=yes
75324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
75334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	else
75344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Don't allow undefined symbols.
75354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  allow_undefined_flag="$no_undefined_flag"
75364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
75374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
75384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
75394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
75404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_generate_dlsyms "$libname" "$libname" "yes"
7541ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_append libobjs " $symfileobj"
75424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test "X$libobjs" = "X " && libobjs=
75434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
7544ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if test "$opt_mode" != relink; then
75454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Remove our outputs, but don't remove object files since they
75464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# may have been created when compiling PIC objects.
75474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	removelist=
75484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	tempremovelist=`$ECHO "$output_objdir/*"`
75494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	for p in $tempremovelist; do
75504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case $p in
75515f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	    *.$objext | *.gcno)
75524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	       ;;
75534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
75544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	       if test "X$precious_files_regex" != "X"; then
75554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
75564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		 then
75574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		   continue
75584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		 fi
75594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	       fi
7560ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	       func_append removelist " $p"
75614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	       ;;
75624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *) ;;
75634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
75644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	done
75654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	test -n "$removelist" && \
75664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_show_eval "${RM}r \$removelist"
75674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
75684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
75694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Now set the variables for building old libraries.
75704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
7571ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_append oldlibs " $output_objdir/$libname.$libext"
75724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
75734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Transform .lo files to .o files.
7574ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
75754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
75764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
75774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Eliminate all temporary directories.
75784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      #for path in $notinst_path; do
7579ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
7580ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
7581ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
75824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      #done
75834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
75844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$xrpath"; then
75854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# If the user specified any rpath flags, then add them.
75864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	temp_xrpath=
75874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	for libdir in $xrpath; do
7588ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_replace_sysroot "$libdir"
7589ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append temp_xrpath " -R$func_replace_sysroot_result"
75904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case "$finalize_rpath " in
75914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *" $libdir "*) ;;
7592ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *) func_append finalize_rpath " $libdir" ;;
75934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
75944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	done
75954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
75964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  dependency_libs="$temp_xrpath $dependency_libs"
75974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
75984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
75994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
76004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Make sure dlfiles contains only unique files that won't be dlpreopened
76014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      old_dlfiles="$dlfiles"
76024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      dlfiles=
76034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      for lib in $old_dlfiles; do
76044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case " $dlprefiles $dlfiles " in
76054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*" $lib "*) ;;
7606ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	*) func_append dlfiles " $lib" ;;
76074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
76084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      done
76094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
76104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Make sure dlprefiles contains only unique files
76114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      old_dlprefiles="$dlprefiles"
76124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      dlprefiles=
76134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      for lib in $old_dlprefiles; do
76144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case "$dlprefiles " in
76154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*" $lib "*) ;;
7616ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	*) func_append dlprefiles " $lib" ;;
76174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
76184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      done
7619893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
76204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test "$build_libtool_libs" = yes; then
76214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$rpath"; then
76224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case $host in
7623ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
76244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # these systems don't actually have a c library (as such)!
76254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
76264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *-*-rhapsody* | *-*-darwin1.[012])
76274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Rhapsody C library is in the System framework
7628ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append deplibs " System.ltframework"
76294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
76304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *-*-netbsd*)
76314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Don't link with libc until the a.out ld.so is fixed.
76324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
76334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
76344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Do not include libc due to us having libc/libc_r.
76354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
76364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *-*-sco3.2v5* | *-*-sco5v6*)
76374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Causes problems with __ctype
76384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
76394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
76404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Compiler inserts libc in the correct place for threads to work
76414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
76424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *)
76434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Add libc to deplibs on all other systems if necessary.
76444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$build_libtool_need_lc" = "yes"; then
7645ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append deplibs " -lc"
76464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
76474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
76484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
76494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
76504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
76514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Transform deplibs into only deplibs that can be linked in shared.
76524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	name_save=$name
76534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	libname_save=$libname
76544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	release_save=$release
76554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	versuffix_save=$versuffix
76564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	major_save=$major
76574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# I'm not sure if I'm treating the release correctly.  I think
76584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# release should show up in the -l (ie -lgmp5) so we don't want to
76594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# add it in twice.  Is that correct?
76604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	release=""
76614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	versuffix=""
76624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	major=""
76634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	newdeplibs=
76644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	droppeddeps=no
76654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $deplibs_check_method in
76664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	pass_all)
76674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Don't check for shared/static.  Everything works.
76684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # This might be a little naive.  We might want to check
76694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # whether the library exists or not.  But this is on
76704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # osf3 & osf4 and I'm not really sure... Just
76714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # implementing what was already the behavior.
76724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  newdeplibs=$deplibs
76734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
76744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	test_compile)
76754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # This code stresses the "libraries are programs" paradigm to its
76764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # limits. Maybe even breaks it.  We compile a program, linking it
76774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # against the deplibs as a proxy for the library.  Then we can check
76784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # whether they linked in statically or dynamically with ldd.
76794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  $opt_dry_run || $RM conftest.c
76804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  cat > conftest.c <<EOF
76814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  int main() { return 0; }
76824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF
76834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  $opt_dry_run || $RM conftest
76844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
76854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ldd_output=`ldd conftest`
76864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    for i in $deplibs; do
76874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case $i in
76884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      -l*)
76894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		func_stripname -l '' "$i"
76904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		name=$func_stripname_result
76914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
76924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  case " $predeps $postdeps " in
76934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  *" $i "*)
7694ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    func_append newdeplibs " $i"
76954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    i=""
76964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    ;;
76974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  esac
76984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		fi
76994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		if test -n "$i" ; then
77004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  libname=`eval "\\$ECHO \"$libname_spec\""`
77014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
77024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  set dummy $deplib_matches; shift
77034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  deplib_match=$1
77044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
7705ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    func_append newdeplibs " $i"
77064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  else
77074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    droppeddeps=yes
7708ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    echo
77094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
7710ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    echo "*** I have the capability to make that library automatically link in when"
7711ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    echo "*** you link to this library.  But I can only do this if you have a"
7712ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    echo "*** shared version of the library, which I believe you do not have"
7713ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    echo "*** because a test_compile did reveal that the linker did not use it for"
7714ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
77154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  fi
77164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		fi
77174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		;;
77184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *)
7719ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_append newdeplibs " $i"
77204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		;;
77214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
77224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    done
77234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
77244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Error occurred in the first compile.  Let's try to salvage
77254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # the situation: Compile a separate program for each library.
77264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    for i in $deplibs; do
77274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case $i in
77284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      -l*)
77294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		func_stripname -l '' "$i"
77304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		name=$func_stripname_result
77314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		$opt_dry_run || $RM conftest
77324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
77334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  ldd_output=`ldd conftest`
77344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
77354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    case " $predeps $postdeps " in
77364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    *" $i "*)
7737ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		      func_append newdeplibs " $i"
77384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      i=""
77394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      ;;
77404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    esac
77414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  fi
77424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  if test -n "$i" ; then
77434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    libname=`eval "\\$ECHO \"$libname_spec\""`
77444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
77454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    set dummy $deplib_matches; shift
77464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    deplib_match=$1
77474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
7748ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		      func_append newdeplibs " $i"
77494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    else
77504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      droppeddeps=yes
7751ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		      echo
77524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
7753ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		      echo "*** I have the capability to make that library automatically link in when"
7754ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		      echo "*** you link to this library.  But I can only do this if you have a"
7755ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		      echo "*** shared version of the library, which you do not appear to have"
7756ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		      echo "*** because a test_compile did reveal that the linker did not use this one"
7757ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
77584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    fi
77594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  fi
77604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		else
77614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  droppeddeps=yes
7762ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  echo
77634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
7764ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  echo "*** make it link in!  You will probably need to install it or some"
7765ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  echo "*** library that it depends on before this library will be fully"
7766ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  echo "*** functional.  Installing it before continuing would be even better."
77674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		fi
77684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		;;
77694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *)
7770ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_append newdeplibs " $i"
77714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		;;
77724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
77734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    done
77744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
77754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
77764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	file_magic*)
77774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  set dummy $deplibs_check_method; shift
77784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
77794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for a_deplib in $deplibs; do
77804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case $a_deplib in
77814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    -l*)
77824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_stripname -l '' "$a_deplib"
77834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      name=$func_stripname_result
77844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
77854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		case " $predeps $postdeps " in
77864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		*" $a_deplib "*)
7787ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  func_append newdeplibs " $a_deplib"
77884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  a_deplib=""
77894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  ;;
77904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		esac
77914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
77924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test -n "$a_deplib" ; then
77934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		libname=`eval "\\$ECHO \"$libname_spec\""`
7794ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		if test -n "$file_magic_glob"; then
7795ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
7796ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		else
7797ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  libnameglob=$libname
7798ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		fi
7799ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
78004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
7801ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  if test "$want_nocaseglob" = yes; then
7802ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    shopt -s nocaseglob
7803ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
7804ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    $nocaseglob
7805ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  else
7806ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
7807ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  fi
78084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  for potent_lib in $potential_libs; do
78094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      # Follow soft links.
78104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      if ls -lLd "$potent_lib" 2>/dev/null |
78114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			 $GREP " -> " >/dev/null; then
78124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			continue
78134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      fi
78144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      # The statement above tries to avoid entering an
78154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      # endless loop below, in case of cyclic links.
78164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      # We might still enter an endless loop, since a link
78174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      # loop can be closed while we follow links,
78184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      # but so what?
78194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      potlib="$potent_lib"
78204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      while test -h "$potlib" 2>/dev/null; do
78214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
78224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			case $potliblink in
78234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
7824ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
78254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			esac
78264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      done
78274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
78284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			 $SED -e 10q |
78294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			 $EGREP "$file_magic_regex" > /dev/null; then
7830ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik			func_append newdeplibs " $a_deplib"
78314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			a_deplib=""
78324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project			break 2
78334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      fi
78344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  done
78354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		done
78364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
78374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test -n "$a_deplib" ; then
78384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		droppeddeps=yes
7839ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo
78404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7841ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo "*** I have the capability to make that library automatically link in when"
7842ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo "*** you link to this library.  But I can only do this if you have a"
7843ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo "*** shared version of the library, which you do not appear to have"
7844ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo "*** because I did check the linker path looking for a file starting"
78454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		if test -z "$potlib" ; then
78464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
78474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		else
78484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  $ECHO "*** with $libname and none of the candidates passed a file format test"
78494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  $ECHO "*** using a file magic. Last file checked: $potlib"
78504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		fi
78514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
78524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      ;;
78534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *)
78544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # Add a -L argument.
7855ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append newdeplibs " $a_deplib"
78564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      ;;
78574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
78584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  done # Gone through all deplibs.
78594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
78604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	match_pattern*)
78614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  set dummy $deplibs_check_method; shift
78624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
78634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for a_deplib in $deplibs; do
78644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case $a_deplib in
78654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    -l*)
78664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_stripname -l '' "$a_deplib"
78674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      name=$func_stripname_result
78684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
78694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		case " $predeps $postdeps " in
78704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		*" $a_deplib "*)
7871ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  func_append newdeplibs " $a_deplib"
78724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  a_deplib=""
78734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  ;;
78744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		esac
78754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
78764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test -n "$a_deplib" ; then
78774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		libname=`eval "\\$ECHO \"$libname_spec\""`
78784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
78794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
78804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  for potent_lib in $potential_libs; do
78814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    potlib="$potent_lib" # see symlink-check above in file_magic test
7882ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
78834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		       $EGREP "$match_pattern_regex" > /dev/null; then
7884ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		      func_append newdeplibs " $a_deplib"
78854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      a_deplib=""
78864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		      break 2
78874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    fi
78884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  done
78894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		done
78904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
78914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test -n "$a_deplib" ; then
78924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		droppeddeps=yes
7893ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo
78944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7895ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo "*** I have the capability to make that library automatically link in when"
7896ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo "*** you link to this library.  But I can only do this if you have a"
7897ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo "*** shared version of the library, which you do not appear to have"
7898ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		echo "*** because I did check the linker path looking for a file starting"
78994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		if test -z "$potlib" ; then
79004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
79014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		else
79024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  $ECHO "*** with $libname and none of the candidates passed a file format test"
79034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
79044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		fi
79054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
79064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      ;;
79074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *)
79084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # Add a -L argument.
7909ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append newdeplibs " $a_deplib"
79104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      ;;
79114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
79124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  done # Gone through all deplibs.
79134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
79144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	none | unknown | *)
79154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  newdeplibs=""
7916ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
79174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
79184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    for i in $predeps $postdeps ; do
79194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # can't use Xsed below, because $i might contain '/'
7920ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
79214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    done
79224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
7923ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  case $tmp_deplibs in
7924ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *[!\	\ ]*)
7925ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    echo
79264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "X$deplibs_check_method" = "Xnone"; then
7927ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      echo "*** Warning: inter-library dependencies are not supported in this platform."
79284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
7929ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      echo "*** Warning: inter-library dependencies are not known to be supported."
79304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
7931ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    echo "*** All declared inter-library dependencies are being dropped."
79324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    droppeddeps=yes
7933ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    ;;
7934ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  esac
79354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
79364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
79374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	versuffix=$versuffix_save
79384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	major=$major_save
79394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	release=$release_save
79404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	libname=$libname_save
79414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	name=$name_save
79424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
79434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $host in
79444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*-*-rhapsody* | *-*-darwin1.[012])
79454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # On Rhapsody replace the C library with the System framework
7946ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
79474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
79484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
79494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
79504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$droppeddeps" = yes; then
79514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$module" = yes; then
7952ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    echo
7953ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    echo "*** Warning: libtool could not satisfy all declared inter-library"
79544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
7955ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    echo "*** a static module, that should work as long as the dlopening"
7956ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    echo "*** application is linked with the -dlopen flag."
79574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -z "$global_symbol_pipe"; then
7958ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      echo
7959ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      echo "*** However, this would only work if libtool was able to extract symbol"
7960ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
7961ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      echo "*** not find such a program.  So, this module is probably useless."
7962ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
79634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
79644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$build_old_libs" = no; then
79654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      oldlibs="$output_objdir/$libname.$libext"
79664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      build_libtool_libs=module
79674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      build_old_libs=yes
79684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
79694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      build_libtool_libs=no
79704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
79714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
7972ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    echo "*** The inter-library dependencies that have been dropped here will be"
7973ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    echo "*** automatically added whenever a program is linked with this library"
7974ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    echo "*** or is declared to -dlopen it."
79754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
79764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$allow_undefined" = no; then
7977ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      echo
7978ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      echo "*** Since this library must not contain undefined symbols,"
7979ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      echo "*** because either the platform does not support them or"
7980ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      echo "*** it was explicitly requested with -no-undefined,"
7981ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      echo "*** libtool will only create a static version of it."
79824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test "$build_old_libs" = no; then
79834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		oldlibs="$output_objdir/$libname.$libext"
79844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		build_libtool_libs=module
79854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		build_old_libs=yes
79864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      else
79874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		build_libtool_libs=no
79884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
79894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
79904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
7991893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
79924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Done checking deplibs!
79934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	deplibs=$newdeplibs
79944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
79954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
79964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case $host in
79974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*-*-darwin*)
7998ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7999ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8000ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8001893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  ;;
80024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      esac
8003893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
80044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # move library search paths that coincide with paths to not yet
80054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # installed libraries to the beginning of the library search list
80064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      new_libs=
80074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      for path in $notinst_path; do
80084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case " $new_libs " in
80094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*" -L$path/$objdir "*) ;;
8010893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	*)
80114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case " $deplibs " in
80124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *" -L$path/$objdir "*)
8013ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append new_libs " -L$path/$objdir" ;;
80144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
8015893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  ;;
8016893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	esac
80174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      done
80184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      for deplib in $deplibs; do
80194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $deplib in
80204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	-L*)
80214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case " $new_libs " in
80224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *" $deplib "*) ;;
8023ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *) func_append new_libs " $deplib" ;;
80244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
80254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
8026ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	*) func_append new_libs " $deplib" ;;
80274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
80284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      done
80294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      deplibs="$new_libs"
8030893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
80314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # All the library-specific variables (install_libdir is set above).
80324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      library_names=
80334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      old_library=
80344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      dlname=
8035893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
80364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Test again, we may have decided not to build it any more
80374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test "$build_libtool_libs" = yes; then
8038ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	# Remove ${wl} instances when linking with ld.
8039ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	# FIXME: should test the right _cmds variable.
8040ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	case $archive_cmds in
8041ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *\$LD\ *) wl= ;;
8042ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        esac
80434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$hardcode_into_libs" = yes; then
80444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Hardcode the library paths
80454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  hardcode_libdirs=
80464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  dep_rpath=
80474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  rpath="$finalize_rpath"
8048ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
80494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for libdir in $rpath; do
80504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -n "$hardcode_libdir_flag_spec"; then
80514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test -n "$hardcode_libdir_separator"; then
8052ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_replace_sysroot "$libdir"
8053ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		libdir=$func_replace_sysroot_result
80544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		if test -z "$hardcode_libdirs"; then
80554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  hardcode_libdirs="$libdir"
80564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		else
80574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  # Just accumulate the unique libdirs.
80584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
80594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
80604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    ;;
80614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  *)
8062ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
80634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    ;;
80644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  esac
80654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		fi
80664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      else
80674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		eval flag=\"$hardcode_libdir_flag_spec\"
8068ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_append dep_rpath " $flag"
80694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
80704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    elif test -n "$runpath_var"; then
80714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case "$perm_rpath " in
80724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *" $libdir "*) ;;
8073ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      *) func_append perm_rpath " $libdir" ;;
80744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
80754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
80764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  done
80774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Substitute the hardcoded libdirs into the rpath.
80784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$hardcode_libdir_separator" &&
80794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	     test -n "$hardcode_libdirs"; then
80804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    libdir="$hardcode_libdirs"
8081ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
80824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
80834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
80844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # We should set the runpath_var.
80854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    rpath=
80864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    for dir in $perm_rpath; do
8087ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append rpath "$dir:"
80884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    done
80894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
80904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
80914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
8092893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
8093893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
80944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	shlibpath="$finalize_shlibpath"
8095ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
80964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$shlibpath"; then
80974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
80984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
8099893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
81004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Get the real and link names of the library.
81014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	eval shared_ext=\"$shrext_cmds\"
81024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	eval library_names=\"$library_names_spec\"
81034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	set dummy $library_names
81044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	shift
81054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	realname="$1"
81064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	shift
8107893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
81084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$soname_spec"; then
81094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  eval soname=\"$soname_spec\"
8110893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	else
81114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  soname="$realname"
81124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
81134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -z "$dlname"; then
81144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  dlname=$soname
81154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
8116893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
81174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	lib="$output_objdir/$realname"
81184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	linknames=
81194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	for link
81204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	do
8121ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append linknames " $link"
81224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	done
8123893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
81244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Use standard objects if they are pic
8125ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
81264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	test "X$libobjs" = "X " && libobjs=
81274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
81284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	delfiles=
81294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$export_symbols" && test -n "$include_expsyms"; then
81304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
81314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  export_symbols="$output_objdir/$libname.uexp"
8132ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append delfiles " $export_symbols"
81334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
81344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
81354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	orig_export_symbols=
81364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $host_os in
81375f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	cygwin* | mingw* | cegcc*)
81384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
81394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # exporting using user supplied symfile
81404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
81414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # and it's NOT already a .def file. Must figure out
81424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # which of the given symbols are data symbols and tag
81434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # them as such. So, trigger use of export_symbols_cmds.
81444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # export_symbols gets reassigned inside the "prepare
81454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # the list of exported symbols" if statement, so the
81464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # include_expsyms logic still works.
81474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      orig_export_symbols="$export_symbols"
81484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      export_symbols=
81494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      always_export_symbols=yes
8150893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    fi
8151893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  fi
81524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
81534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
8154893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
81554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Prepare the list of exported symbols
81564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -z "$export_symbols"; then
81574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
81584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_verbose "generating symbol list for \`$libname.la'"
81594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    export_symbols="$output_objdir/$libname.exp"
81604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    $opt_dry_run || $RM $export_symbols
81614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    cmds=$export_symbols_cmds
81624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    save_ifs="$IFS"; IFS='~'
8163ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    for cmd1 in $cmds; do
81644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      IFS="$save_ifs"
8165ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      # Take the normal branch if the nm_file_list_spec branch
8166ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      # doesn't work or if tool conversion is not needed.
8167ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      case $nm_file_list_spec~$to_tool_file_cmd in
8168ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
8169ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  try_normal_branch=yes
8170ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  eval cmd=\"$cmd1\"
8171ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  func_len " $cmd"
8172ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  len=$func_len_result
8173ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  ;;
8174ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		*)
8175ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  try_normal_branch=no
8176ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  ;;
8177ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      esac
8178ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      if test "$try_normal_branch" = yes \
8179ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		 && { test "$len" -lt "$max_cmd_len" \
8180ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		      || test "$max_cmd_len" -le -1; }
8181ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      then
8182ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_show_eval "$cmd" 'exit $?'
8183ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		skipped_export=false
8184ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      elif test -n "$nm_file_list_spec"; then
8185ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_basename "$output"
8186ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		output_la=$func_basename_result
8187ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		save_libobjs=$libobjs
8188ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		save_output=$output
8189ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		output=${output_objdir}/${output_la}.nm
8190ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_to_tool_file "$output"
8191ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		libobjs=$nm_file_list_spec$func_to_tool_file_result
8192ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_append delfiles " $output"
8193ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_verbose "creating $NM input file list: $output"
8194ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		for obj in $save_libobjs; do
8195ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  func_to_tool_file "$obj"
8196ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  $ECHO "$func_to_tool_file_result"
8197ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		done > "$output"
8198ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		eval cmd=\"$cmd1\"
81994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		func_show_eval "$cmd" 'exit $?'
8200ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		output=$save_output
8201ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		libobjs=$save_libobjs
82024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		skipped_export=false
82034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      else
82044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		# The command line is too long to execute in one step.
82054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		func_verbose "using reloadable object file for export list..."
82064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		skipped_export=:
82074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		# Break out early, otherwise skipped_export may be
82084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		# set to false by a later but shorter cmd.
82094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		break
82104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
82114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    done
82124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    IFS="$save_ifs"
82134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
82144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
82154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
82164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
82174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
8218893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
8219893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
82204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$export_symbols" && test -n "$include_expsyms"; then
82214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  tmp_export_symbols="$export_symbols"
82224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
8223ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
82244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
8225893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
82264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
82274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # The given exports_symbols file has to be filtered, so filter it.
82284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
82294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
82304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # 's' commands which not all seds can handle. GNU sed should be fine
82314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # though. Also, the filter scales superlinearly with the number of
82324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # global variables. join(1) would be nice here, but unfortunately
82334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # isn't a blessed tool.
82344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
8235ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
82364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  export_symbols=$output_objdir/$libname.def
82374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
82384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
8239893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
82404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	tmp_deplibs=
82414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	for test_deplib in $deplibs; do
82424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case " $convenience " in
82434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *" $test_deplib "*) ;;
82444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *)
8245ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append tmp_deplibs " $test_deplib"
82464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
82474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
82484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	done
82494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	deplibs="$tmp_deplibs"
82504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
82514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$convenience"; then
82524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$whole_archive_flag_spec" &&
82534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    test "$compiler_needs_object" = yes &&
82544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    test -z "$libobjs"; then
82554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # extract the archives, so we have objects to list.
82564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # TODO: could optimize this to just extract one archive.
82574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    whole_archive_flag_spec=
82584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
82594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$whole_archive_flag_spec"; then
82604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    save_libobjs=$libobjs
82614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
82624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    test "X$libobjs" = "X " && libobjs=
8263893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  else
82644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    gentop="$output_objdir/${outputname}x"
8265ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append generated " $gentop"
82664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
82674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_extract_archives $gentop $convenience
8268ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append libobjs " $func_extract_archives_result"
82694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    test "X$libobjs" = "X " && libobjs=
8270893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  fi
8271893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
8272893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
82734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
82744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  eval flag=\"$thread_safe_flag_spec\"
8275ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append linker_flags " $flag"
82764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
8277893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
82784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Make a backup of the uninstalled library when relinking
8279ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	if test "$opt_mode" = relink; then
82804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
82814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
8282893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
82834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Do each of the archive commands.
82844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$module" = yes && test -n "$module_cmds" ; then
82854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
82864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    eval test_cmds=\"$module_expsym_cmds\"
82874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    cmds=$module_expsym_cmds
82884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
82894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    eval test_cmds=\"$module_cmds\"
82904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    cmds=$module_cmds
82914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
8292893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	else
82934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
82944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    eval test_cmds=\"$archive_expsym_cmds\"
82954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    cmds=$archive_expsym_cmds
82964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
82974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    eval test_cmds=\"$archive_cmds\"
82984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    cmds=$archive_cmds
82994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
8300893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
8301893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
83024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "X$skipped_export" != "X:" &&
83034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	   func_len " $test_cmds" &&
83044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	   len=$func_len_result &&
83054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
83064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  :
83074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	else
83084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # The command line is too long to link in one step, link piecewise
83094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # or, if using GNU ld and skipped_export is not :, use a linker
83104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # script.
8311893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
83124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Save the value of $output and $libobjs because we want to
83134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # use them later.  If we have whole_archive_flag_spec, we
83144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # want to use save_libobjs as it was before
83154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # whole_archive_flag_spec was expanded, because we can't
83164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # assume the linker understands whole_archive_flag_spec.
83174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # This may have to be revisited, in case too many
83184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # convenience libraries get linked in and end up exceeding
83194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # the spec.
83204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
83214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    save_libobjs=$libobjs
83224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
83234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  save_output=$output
8324ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_basename "$output"
8325ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  output_la=$func_basename_result
83264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
83274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Clear the reloadable object creation command queue and
83284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # initialize k to one.
83294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  test_cmds=
83304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  concat_cmds=
83314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  objlist=
83324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  last_robj=
83334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  k=1
83344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
83354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
83364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    output=${output_objdir}/${output_la}.lnkscript
83374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_verbose "creating GNU ld script: $output"
8338ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    echo 'INPUT (' > $output
83394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    for obj in $save_libobjs
83404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    do
8341ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_to_tool_file "$obj"
8342ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      $ECHO "$func_to_tool_file_result" >> $output
83434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    done
8344ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    echo ')' >> $output
8345ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append delfiles " $output"
8346ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_to_tool_file "$output"
8347ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    output=$func_to_tool_file_result
83484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
83494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    output=${output_objdir}/${output_la}.lnk
83504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_verbose "creating linker input file list: $output"
83514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    : > $output
83524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    set x $save_libobjs
83534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    shift
83544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    firstobj=
83554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$compiler_needs_object" = yes; then
83564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      firstobj="$1 "
83574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      shift
8358893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    fi
83594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    for obj
83604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    do
8361ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_to_tool_file "$obj"
8362ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      $ECHO "$func_to_tool_file_result" >> $output
8363893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    done
8364ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append delfiles " $output"
8365ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_to_tool_file "$output"
8366ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
83674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
83684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -n "$save_libobjs"; then
83694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_verbose "creating reloadable object files..."
83704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      output=$output_objdir/$output_la-${k}.$objext
83714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      eval test_cmds=\"$reload_cmds\"
83724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_len " $test_cmds"
83734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      len0=$func_len_result
83744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      len=$len0
83754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
83764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # Loop over the list of objects to be linked.
83774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      for obj in $save_libobjs
83784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      do
83794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		func_len " $obj"
83804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		func_arith $len + $func_len_result
83814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		len=$func_arith_result
83824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		if test "X$objlist" = X ||
83834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		   test "$len" -lt "$max_cmd_len"; then
83844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  func_append objlist " $obj"
83854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		else
83864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  # The command $test_cmds is almost too long, add a
83874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  # command to the queue.
83884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  if test "$k" -eq 1 ; then
83894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    # The first file doesn't have a previous command to add.
8390ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    reload_objs=$objlist
8391ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    eval concat_cmds=\"$reload_cmds\"
83924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  else
83934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    # All subsequent reloadable object files will link in
83944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    # the last one created.
8395ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    reload_objs="$objlist $last_robj"
8396ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
83974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  fi
83984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  last_robj=$output_objdir/$output_la-${k}.$objext
83994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  func_arith $k + 1
84004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  k=$func_arith_result
84014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  output=$output_objdir/$output_la-${k}.$objext
8402ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		  objlist=" $obj"
84034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  func_len " $last_robj"
84044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  func_arith $len0 + $func_len_result
84054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  len=$func_arith_result
84064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		fi
84074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      done
84084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # Handle the remaining objects by creating one last
84094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # reloadable object file.  All subsequent reloadable object
84104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # files will link in the last one created.
84114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8412ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      reload_objs="$objlist $last_robj"
8413ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
84144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test -n "$last_robj"; then
84154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
8416893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	      fi
8417ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append delfiles " $output"
84184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
84194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
84204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      output=
84214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
84224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
84234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if ${skipped_export-false}; then
84244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_verbose "generating symbol list for \`$libname.la'"
84254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      export_symbols="$output_objdir/$libname.exp"
84264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      $opt_dry_run || $RM $export_symbols
84274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      libobjs=$output
84284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # Append the command to create the export file.
84294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
84304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
84314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test -n "$last_robj"; then
84324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
8433893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	      fi
84344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
84354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
84364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    test -n "$save_libobjs" &&
84374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_verbose "creating a temporary reloadable object file: $output"
84384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
84394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Loop through the commands generated above and execute them.
84404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    save_ifs="$IFS"; IFS='~'
84414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    for cmd in $concat_cmds; do
84424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      IFS="$save_ifs"
84434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      $opt_silent || {
84444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  func_quote_for_expand "$cmd"
84454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  eval "func_echo $func_quote_for_expand_result"
84464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      }
84474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      $opt_dry_run || eval "$cmd" || {
84484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		lt_exit=$?
84494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
84504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		# Restore the uninstalled library and exit
8451ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		if test "$opt_mode" = relink; then
84524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  ( cd "$output_objdir" && \
84534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    $RM "${realname}T" && \
84544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		    $MV "${realname}U" "$realname" )
84554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		fi
84564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
84574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		exit $lt_exit
84584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      }
8459893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    done
84604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    IFS="$save_ifs"
84614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
84624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
84634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
84644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
84654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
8466893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  fi
8467893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
84684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project          if ${skipped_export-false}; then
84694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
84704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      tmp_export_symbols="$export_symbols"
84714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
8472ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
84734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
8474893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
84754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -n "$orig_export_symbols"; then
84764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # The given exports_symbols file has to be filtered, so filter it.
84774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
84784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
84794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # 's' commands which not all seds can handle. GNU sed should be fine
84804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # though. Also, the filter scales superlinearly with the number of
84814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # global variables. join(1) would be nice here, but unfortunately
84824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # isn't a blessed tool.
84834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
8484ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
84854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      export_symbols=$output_objdir/$libname.def
84864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
84874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
84884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
8489893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
84904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  libobjs=$output
84914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Restore the value of output.
84924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  output=$save_output
8493893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
84944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
84954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
84964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    test "X$libobjs" = "X " && libobjs=
84974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
84984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Expand the library linking commands again to reset the
84994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # value of $libobjs for piecewise linking.
8500893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
85014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Do each of the archive commands.
85024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$module" = yes && test -n "$module_cmds" ; then
85034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
85044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      cmds=$module_expsym_cmds
85054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
85064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      cmds=$module_cmds
85074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
85084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
85094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
85104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      cmds=$archive_expsym_cmds
85114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
85124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      cmds=$archive_cmds
85134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
85144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
85154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
8516893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
85174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$delfiles"; then
85184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Append the command to remove temporary files to $cmds.
85194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  eval cmds=\"\$cmds~\$RM $delfiles\"
85204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
8521893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
85224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Add any objects from preloaded convenience libraries
85234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$dlprefiles"; then
85244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  gentop="$output_objdir/${outputname}x"
8525ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append generated " $gentop"
8526893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
85274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_extract_archives $gentop $dlprefiles
8528ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append libobjs " $func_extract_archives_result"
85294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  test "X$libobjs" = "X " && libobjs=
85304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
8531893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
85324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	save_ifs="$IFS"; IFS='~'
85334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	for cmd in $cmds; do
85344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  IFS="$save_ifs"
85354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  eval cmd=\"$cmd\"
85364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  $opt_silent || {
85374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_quote_for_expand "$cmd"
85384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    eval "func_echo $func_quote_for_expand_result"
85394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  }
85404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  $opt_dry_run || eval "$cmd" || {
85414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    lt_exit=$?
85424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
85434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Restore the uninstalled library and exit
8544ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    if test "$opt_mode" = relink; then
85454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      ( cd "$output_objdir" && \
85464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	        $RM "${realname}T" && \
85474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		$MV "${realname}U" "$realname" )
85484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
85494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
85504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    exit $lt_exit
85514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  }
8552893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	done
85534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	IFS="$save_ifs"
8554893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
85554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Restore the uninstalled library and exit
8556ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	if test "$opt_mode" = relink; then
85574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
8558893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
85594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$convenience"; then
85604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -z "$whole_archive_flag_spec"; then
85614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_show_eval '${RM}r "$gentop"'
85624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
85634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
8564893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
85654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  exit $EXIT_SUCCESS
85664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
85674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
85684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Create links to the real library.
85694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	for linkname in $linknames; do
85704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$realname" != "$linkname"; then
85714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
85724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
85734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	done
8574893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
85754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# If -module or -export-dynamic was specified, set the dlname.
85764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$module" = yes || test "$export_dynamic" = yes; then
85774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # On all known operating systems, these are identical.
85784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  dlname="$soname"
85794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
85804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
8581893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      ;;
8582893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
85834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    obj)
85844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
85854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_warning "\`-dlopen' is ignored for objects"
8586893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
8587893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
85884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case " $deplibs" in
85894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *\ -l* | *\ -L*)
85904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_warning "\`-l' and \`-L' are ignored for objects" ;;
85914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      esac
85924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
85934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test -n "$rpath" && \
85944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_warning "\`-rpath' is ignored for objects"
85954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
85964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test -n "$xrpath" && \
85974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_warning "\`-R' is ignored for objects"
85984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
85994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test -n "$vinfo" && \
86004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_warning "\`-version-info' is ignored for objects"
86014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
86024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test -n "$release" && \
86034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_warning "\`-release' is ignored for objects"
86044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
86054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case $output in
86064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *.lo)
86074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	test -n "$objs$old_deplibs" && \
86084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
86094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
86104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	libobj=$output
86114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_lo2o "$libobj"
86124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	obj=$func_lo2o_result
8613893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	;;
8614893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      *)
86154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	libobj=
86164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	obj="$output"
8617893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	;;
8618893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      esac
8619893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
86204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Delete the old objects.
86214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      $opt_dry_run || $RM $obj $libobj
8622893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
86234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Objects from convenience libraries.  This assumes
86244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # single-version convenience libraries.  Whenever we create
86254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # different ones for PIC/non-PIC, this we'll have to duplicate
86264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # the extraction.
86274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      reload_conv_objs=
86284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      gentop=
86294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # reload_cmds runs $LD directly, so let us get rid of
86304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # -Wl from whole_archive_flag_spec and hope we can get by with
86314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # turning comma into space..
86324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      wl=
8633893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
86344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$convenience"; then
86354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$whole_archive_flag_spec"; then
86364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
8637ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
86384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	else
86394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  gentop="$output_objdir/${obj}x"
8640ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append generated " $gentop"
8641893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
86424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_extract_archives $gentop $convenience
86434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  reload_conv_objs="$reload_objs $func_extract_archives_result"
86444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
8645893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
8646893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
8647ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # If we're not building shared, we need to use non_pic_objs
8648ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
8649ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
86504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Create the old-style object.
8651ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
8652893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
86534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      output="$obj"
86544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_execute_cmds "$reload_cmds" 'exit $?'
8655893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
86564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Exit if we aren't doing a library object file.
86574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -z "$libobj"; then
86584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$gentop"; then
86594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_show_eval '${RM}r "$gentop"'
86604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
86614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
86624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	exit $EXIT_SUCCESS
8663893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
86644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
86654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test "$build_libtool_libs" != yes; then
86664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$gentop"; then
86674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_show_eval '${RM}r "$gentop"'
86684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
86694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
86704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Create an invalid libtool object if no PIC, so that we don't
86714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# accidentally link it into a program.
86724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# $show "echo timestamp > $libobj"
86734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
86744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	exit $EXIT_SUCCESS
86754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
86764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
86774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$pic_flag" || test "$pic_mode" != default; then
86784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Only do commands if we really have different PIC objects.
86794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	reload_objs="$libobjs $reload_conv_objs"
86804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	output="$libobj"
86814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_execute_cmds "$reload_cmds" 'exit $?'
86824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
86834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
86844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$gentop"; then
86854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_show_eval '${RM}r "$gentop"'
86864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
86874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
86884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      exit $EXIT_SUCCESS
8689893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      ;;
8690893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
86914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    prog)
86924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case $host in
86934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*cygwin*) func_stripname '' '.exe' "$output"
86944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	          output=$func_stripname_result.exe;;
86954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      esac
86964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test -n "$vinfo" && \
86974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_warning "\`-version-info' is ignored for programs"
8698893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
86994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test -n "$release" && \
87004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_warning "\`-release' is ignored for programs"
8701893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
87024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test "$preload" = yes \
87034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        && test "$dlopen_support" = unknown \
87044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	&& test "$dlopen_self" = unknown \
87054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	&& test "$dlopen_self_static" = unknown && \
87064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
87074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
87084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case $host in
87094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *-*-rhapsody* | *-*-darwin1.[012])
87104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# On Rhapsody replace the C library is the System framework
8711ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
8712ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
8713893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	;;
87144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      esac
8715893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
87164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case $host in
87174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *-*-darwin*)
87184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Don't allow lazy linking, it breaks C++ global constructors
87194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# But is supposedly fixed on 10.4 or later (yay!).
87204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$tagname" = CXX ; then
87214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
87224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    10.[0123])
8723ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append compile_command " ${wl}-bind_at_load"
8724ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append finalize_command " ${wl}-bind_at_load"
87254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    ;;
87264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
8727893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
87284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
8729ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8730ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
87314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	;;
87324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      esac
8733893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
8734893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
87354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # move library search paths that coincide with paths to not yet
87364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # installed libraries to the beginning of the library search list
87374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      new_libs=
87384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      for path in $notinst_path; do
87394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case " $new_libs " in
87404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*" -L$path/$objdir "*) ;;
87414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	*)
87424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case " $compile_deplibs " in
87434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *" -L$path/$objdir "*)
8744ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append new_libs " -L$path/$objdir" ;;
8745893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  esac
87464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
87474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
87484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      done
87494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      for deplib in $compile_deplibs; do
87504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $deplib in
87514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	-L*)
87524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case " $new_libs " in
87534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *" $deplib "*) ;;
8754ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *) func_append new_libs " $deplib" ;;
8755893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  esac
87564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
8757ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	*) func_append new_libs " $deplib" ;;
87584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
87594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      done
87604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      compile_deplibs="$new_libs"
8761893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
8762893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
8763ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_append compile_command " $compile_deplibs"
8764ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      func_append finalize_command " $finalize_deplibs"
8765893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
87664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$rpath$xrpath"; then
87674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# If the user specified any rpath flags, then add them.
87684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	for libdir in $rpath $xrpath; do
87694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # This is the magic to use -rpath.
87704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case "$finalize_rpath " in
87714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *" $libdir "*) ;;
8772ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *) func_append finalize_rpath " $libdir" ;;
87734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
87744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	done
87754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
8776893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
87774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Now hardcode the library paths
87784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      rpath=
87794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      hardcode_libdirs=
87804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      for libdir in $compile_rpath $finalize_rpath; do
87814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$hardcode_libdir_flag_spec"; then
87824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$hardcode_libdir_separator"; then
87834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -z "$hardcode_libdirs"; then
87844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      hardcode_libdirs="$libdir"
87854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
87864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # Just accumulate the unique libdirs.
87874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
87884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
87894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		;;
87904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *)
8791ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
87924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		;;
87934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
87944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
8795893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  else
87964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    eval flag=\"$hardcode_libdir_flag_spec\"
8797ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append rpath " $flag"
8798893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  fi
87994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	elif test -n "$runpath_var"; then
88004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case "$perm_rpath " in
88014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *" $libdir "*) ;;
8802ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *) func_append perm_rpath " $libdir" ;;
88034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
88044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
88054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $host in
88065f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
88074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
88084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case :$dllsearchpath: in
88094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *":$libdir:"*) ;;
88105f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	  ::) dllsearchpath=$libdir;;
8811ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *) func_append dllsearchpath ":$libdir";;
88124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
88134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case :$dllsearchpath: in
88144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *":$testbindir:"*) ;;
88155f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	  ::) dllsearchpath=$testbindir;;
8816ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *) func_append dllsearchpath ":$testbindir";;
88174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
88184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
88194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
88204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      done
88214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Substitute the hardcoded libdirs into the rpath.
88224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$hardcode_libdir_separator" &&
88234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	 test -n "$hardcode_libdirs"; then
88244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	libdir="$hardcode_libdirs"
88254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	eval rpath=\" $hardcode_libdir_flag_spec\"
88264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
88274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      compile_rpath="$rpath"
8828893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
88294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      rpath=
88304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      hardcode_libdirs=
88314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      for libdir in $finalize_rpath; do
88324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$hardcode_libdir_flag_spec"; then
88334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$hardcode_libdir_separator"; then
88344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -z "$hardcode_libdirs"; then
88354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      hardcode_libdirs="$libdir"
88364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
88374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # Just accumulate the unique libdirs.
88384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
88394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
88404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		;;
88414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *)
8842ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
88434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		;;
88444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
88454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
8846893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  else
88474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    eval flag=\"$hardcode_libdir_flag_spec\"
8848ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append rpath " $flag"
8849893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  fi
88504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	elif test -n "$runpath_var"; then
88514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case "$finalize_perm_rpath " in
88524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *" $libdir "*) ;;
8853ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *) func_append finalize_perm_rpath " $libdir" ;;
88544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
8855893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
88564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      done
88574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Substitute the hardcoded libdirs into the rpath.
88584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$hardcode_libdir_separator" &&
88594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	 test -n "$hardcode_libdirs"; then
88604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	libdir="$hardcode_libdirs"
88614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	eval rpath=\" $hardcode_libdir_flag_spec\"
88624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
88634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      finalize_rpath="$rpath"
8864893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
88654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$libobjs" && test "$build_old_libs" = yes; then
88664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Transform all the library objects into standard objects.
8867ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
8868ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
88694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
8870893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
88714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
8872893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
88734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # template prelinking step
88744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$prelink_cmds"; then
88754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_execute_cmds "$prelink_cmds" 'exit $?'
88764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
8877893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
88784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      wrappers_required=yes
88794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      case $host in
8880ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      *cegcc* | *mingw32ce*)
8881ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
8882ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        wrappers_required=no
8883ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik        ;;
88844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *cygwin* | *mingw* )
88854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        if test "$build_libtool_libs" != yes; then
88864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project          wrappers_required=no
88874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        fi
88884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        ;;
88894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      *)
88904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
88914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project          wrappers_required=no
88924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        fi
88934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project        ;;
88944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      esac
88954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test "$wrappers_required" = no; then
88964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Replace the output file specification.
8897ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
88984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	link_command="$compile_command$compile_rpath"
8899893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
89004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# We have no uninstalled library dependencies, so finalize right now.
89014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	exit_status=0
89024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_show_eval "$link_command" 'exit_status=$?'
8903893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
8904ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	if test -n "$postlink_cmds"; then
8905ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_to_tool_file "$output"
8906ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
8907ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_execute_cmds "$postlink_cmds" 'exit $?'
8908ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	fi
8909ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
89104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Delete the generated files.
89114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -f "$output_objdir/${outputname}S.${objext}"; then
89124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
8913893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
8914893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
89154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	exit $exit_status
89164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
8917893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
89184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$compile_shlibpath$finalize_shlibpath"; then
89194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
89204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
89214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$finalize_shlibpath"; then
89224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
89234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
8924893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
89254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      compile_var=
89264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      finalize_var=
89274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$runpath_var"; then
89284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$perm_rpath"; then
89294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # We should set the runpath_var.
89304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  rpath=
89314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for dir in $perm_rpath; do
8932ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append rpath "$dir:"
89334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  done
89344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
8935893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
89364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$finalize_perm_rpath"; then
89374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # We should set the runpath_var.
89384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  rpath=
89394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for dir in $finalize_perm_rpath; do
8940ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append rpath "$dir:"
89414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  done
89424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
8943893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
89444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
8945893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
89464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test "$no_install" = yes; then
89474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# We don't need to create a wrapper script.
89484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	link_command="$compile_var$compile_command$compile_rpath"
89494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Replace the output file specification.
8950ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
89514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Delete the old output file.
89524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	$opt_dry_run || $RM $output
89534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Link the executable and exit
89544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_show_eval "$link_command" 'exit $?'
8955ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
8956ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	if test -n "$postlink_cmds"; then
8957ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_to_tool_file "$output"
8958ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
8959ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_execute_cmds "$postlink_cmds" 'exit $?'
8960ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	fi
8961ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
8962893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	exit $EXIT_SUCCESS
89634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
8964893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
89654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test "$hardcode_action" = relink; then
89664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Fast installation is not supported
89674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	link_command="$compile_var$compile_command$compile_rpath"
89684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	relink_command="$finalize_var$finalize_command$finalize_rpath"
89694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
89704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_warning "this platform does not like uninstalled shared libraries"
89714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_warning "\`$output' will be relinked during installation"
89724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      else
89734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$fast_install" != no; then
89744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  link_command="$finalize_var$compile_command$finalize_rpath"
89754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$fast_install" = yes; then
8976ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
89774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
89784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # fast_install is set to needless
89794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    relink_command=
89804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
8981893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	else
89824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  link_command="$compile_var$compile_command$compile_rpath"
89834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  relink_command="$finalize_var$finalize_command$finalize_rpath"
8984893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
89854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
8986893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
89874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Replace the output file specification.
8988ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
8989893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
89904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Delete the old output files.
89914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
8992893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
89934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_show_eval "$link_command" 'exit $?'
8994893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
8995ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if test -n "$postlink_cmds"; then
8996ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_to_tool_file "$output_objdir/$outputname"
8997ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	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'`
8998ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_execute_cmds "$postlink_cmds" 'exit $?'
8999ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      fi
9000ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik
90014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Now create the wrapper script.
90024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_verbose "creating $output"
9003893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
90044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Quote the relink command for shipping.
90054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$relink_command"; then
90064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Preserve any variables that may affect compiler behavior
90074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	for var in $variables_saved_for_relink; do
90084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if eval test -z \"\${$var+set}\"; then
90094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
90104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  elif eval var_value=\$$var; test -z "$var_value"; then
90114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    relink_command="$var=; export $var; $relink_command"
9012893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  else
90134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_quote_for_eval "$var_value"
90144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
9015893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  fi
90164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	done
90174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	relink_command="(cd `pwd`; $relink_command)"
9018ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
90194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
9020893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
90214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Only actually do things if not in dry run mode.
90224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      $opt_dry_run || {
90234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# win32 will think the script is a binary if it has
90244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# a .exe suffix, so we strip it off here.
90254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $output in
90264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *.exe) func_stripname '' '.exe' "$output"
90274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	         output=$func_stripname_result ;;
90284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
90294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# test for cygwin because mv fails w/o .exe extensions
90304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $host in
90314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *cygwin*)
90324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    exeext=.exe
90334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_stripname '' '.exe' "$outputname"
90344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    outputname=$func_stripname_result ;;
90354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *) exeext= ;;
90364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
90374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	case $host in
90384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  *cygwin* | *mingw* )
90394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_dirname_and_basename "$output" "" "."
90404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    output_name=$func_basename_result
90414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    output_path=$func_dirname_result
90424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
90434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    cwrapper="$output_path/$output_name.exe"
90444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    $RM $cwrappersource $cwrapper
90454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
90464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
90474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_emit_cwrapperexe_src > $cwrappersource
90484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
90495f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	    # The wrapper executable is built using the $host compiler,
90505f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	    # because it contains $host paths and files. If cross-
90515f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	    # compiling, it, like the target executable, must be
90525f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott	    # executed on the $host or under an emulation environment.
90534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    $opt_dry_run || {
90544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
90554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      $STRIP $cwrapper
90564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    }
9057893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
90584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Now, create the wrapper script for func_source use:
90594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_ltwrapper_scriptname $cwrapper
90604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    $RM $func_ltwrapper_scriptname_result
90614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
90624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    $opt_dry_run || {
90634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # note: this script will not be executed, so do not chmod.
90644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test "x$build" = "x$host" ; then
90654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
90664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      else
90674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		func_emit_wrapper no > $func_ltwrapper_scriptname_result
90684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
90694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    }
90704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
90714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  * )
90724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    $RM $output
90734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
9074893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
90754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_emit_wrapper no > $output
90764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    chmod +x $output
90774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  ;;
90784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	esac
90794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      }
90804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      exit $EXIT_SUCCESS
90814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      ;;
90824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    esac
9083893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
90844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # See if we need to build an old-fashioned archive.
90854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    for oldlib in $oldlibs; do
90864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
90874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test "$build_libtool_libs" = convenience; then
90884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	oldobjs="$libobjs_save $symfileobj"
90894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	addlibs="$convenience"
90904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	build_libtool_libs=no
90914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      else
90924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$build_libtool_libs" = module; then
90934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  oldobjs="$libobjs_save"
90944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  build_libtool_libs=no
90954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	else
90964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  oldobjs="$old_deplibs $non_pic_objects"
90974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$preload" = yes && test -f "$symfileobj"; then
9098ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append oldobjs " $symfileobj"
90994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
91004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
91014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	addlibs="$old_convenience"
9102893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
9103893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
91044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$addlibs"; then
91054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	gentop="$output_objdir/${outputname}x"
9106ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_append generated " $gentop"
9107893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
91084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_extract_archives $gentop $addlibs
9109ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_append oldobjs " $func_extract_archives_result"
91104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
9111893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
91124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Do each command in the archive commands.
91134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
91144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	cmds=$old_archive_from_new_cmds
91154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      else
9116893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
91174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# Add any objects from preloaded convenience libraries
91184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test -n "$dlprefiles"; then
91194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  gentop="$output_objdir/${outputname}x"
9120ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append generated " $gentop"
9121893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
91224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_extract_archives $gentop $dlprefiles
9123ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append oldobjs " $func_extract_archives_result"
91244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
9125893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
91264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# POSIX demands no paths to be encoded in archives.  We have
91274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# to avoid creating archives with duplicate basenames if we
91284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# might have to extract them afterwards, e.g., when creating a
91294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# static archive out of a convenience library, or when linking
91304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# the entirety of a libtool archive into another (currently
91314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	# not supported by libtool).
91324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if (for obj in $oldobjs
91334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    do
91344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_basename "$obj"
91354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      $ECHO "$func_basename_result"
91364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    done | sort | sort -uc >/dev/null 2>&1); then
91374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  :
91384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	else
9139ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  echo "copying selected object files to avoid basename conflicts..."
91404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  gentop="$output_objdir/${outputname}x"
9141ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_append generated " $gentop"
91424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_mkdir_p "$gentop"
91434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  save_oldobjs=$oldobjs
91444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  oldobjs=
91454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  counter=1
91464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for obj in $save_oldobjs
91474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  do
91484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_basename "$obj"
91494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    objbase="$func_basename_result"
91504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    case " $oldobjs " in
91514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    " ") oldobjs=$obj ;;
91524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    *[\ /]"$objbase "*)
91534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      while :; do
91544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		# Make sure we don't pick an alternate name that also
91554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		# overlaps.
91564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		newobj=lt$counter-$objbase
91574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		func_arith $counter + 1
91584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		counter=$func_arith_result
91594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		case " $oldobjs " in
91604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		*[\ /]"$newobj "*) ;;
91614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
91624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		esac
91634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      done
91644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
9165ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append oldobjs " $gentop/$newobj"
91664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      ;;
9167ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    *) func_append oldobjs " $obj" ;;
91684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    esac
9169893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  done
9170893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
9171ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
9172ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	tool_oldlib=$func_to_tool_file_result
91734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	eval cmds=\"$old_archive_cmds\"
9174893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
91754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_len " $cmds"
91764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	len=$func_len_result
91774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
91784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  cmds=$old_archive_cmds
9179ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	elif test -n "$archiver_list_spec"; then
9180ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_verbose "using command file archive linking..."
9181ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  for obj in $oldobjs
9182ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  do
9183ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_to_tool_file "$obj"
9184ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    $ECHO "$func_to_tool_file_result"
9185ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  done > $output_objdir/$libname.libcmd
9186ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  func_to_tool_file "$output_objdir/$libname.libcmd"
9187ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
9188ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  cmds=$old_archive_cmds
91894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	else
91904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # the command line is too long to link in one step, link in parts
91914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_verbose "using piecewise archive linking..."
91924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  save_RANLIB=$RANLIB
91934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  RANLIB=:
91944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  objlist=
91954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  concat_cmds=
91964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  save_oldobjs=$oldobjs
91974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  oldobjs=
91984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # Is there a better way of finding the last object in the list?
91994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for obj in $save_oldobjs
92004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  do
92014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    last_oldobj=$obj
92024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  done
92034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  eval test_cmds=\"$old_archive_cmds\"
92044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_len " $test_cmds"
92054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  len0=$func_len_result
92064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  len=$len0
92074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  for obj in $save_oldobjs
92084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  do
92094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_len " $obj"
92104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_arith $len + $func_len_result
92114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    len=$func_arith_result
92124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_append objlist " $obj"
92134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test "$len" -lt "$max_cmd_len"; then
92144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      :
92154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
92164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      # the above command should be used before it gets too long
92174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      oldobjs=$objlist
92184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      if test "$obj" = "$last_oldobj" ; then
92194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		RANLIB=$save_RANLIB
92204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      fi
92214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
92224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
92234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      objlist=
92244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      len=$len0
92254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
92264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  done
92274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  RANLIB=$save_RANLIB
92284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  oldobjs=$objlist
92294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "X$oldobjs" = "X" ; then
92304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    eval cmds=\"\$concat_cmds\"
92314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
92324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
92334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
92344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	fi
92354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
92364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_execute_cmds "$cmds" 'exit $?'
9237893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    done
9238893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
92394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    test -n "$generated" && \
92404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_show_eval "${RM}r$generated"
9241893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
92424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    # Now create the libtool archive.
92434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    case $output in
92444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    *.la)
92454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      old_library=
92464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      test "$build_old_libs" = yes && old_library="$libname.$libext"
92474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_verbose "creating $output"
9248893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
92494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Preserve any variables that may affect compiler behavior
92504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      for var in $variables_saved_for_relink; do
92514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if eval test -z \"\${$var+set}\"; then
92524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
92534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	elif eval var_value=\$$var; test -z "$var_value"; then
92544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  relink_command="$var=; export $var; $relink_command"
9255893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	else
92564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_quote_for_eval "$var_value"
92574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
9258893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
92594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      done
92604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Quote the link command for shipping.
92614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
9262ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
92634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test "$hardcode_automatic" = yes ; then
92644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	relink_command=
92654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      fi
9266893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
92674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Only create the output if not a dry run.
92684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      $opt_dry_run || {
92694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	for installed in no yes; do
92704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$installed" = yes; then
92714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if test -z "$install_libdir"; then
92724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      break
92734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
92744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    output="$output_objdir/$outputname"i
92754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    # Replace all uninstalled libtool libraries with the installed ones
92764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    newdependency_libs=
92774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    for deplib in $dependency_libs; do
92784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case $deplib in
92794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *.la)
92804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		func_basename "$deplib"
92814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		name="$func_basename_result"
9282ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_resolve_sysroot "$deplib"
9283ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
92844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		test -z "$libdir" && \
92854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  func_fatal_error "\`$deplib' is not a valid libtool archive"
9286ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
9287ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		;;
9288ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      -L*)
9289ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_stripname -L '' "$deplib"
9290ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_replace_sysroot "$func_stripname_result"
9291ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_append newdependency_libs " -L$func_replace_sysroot_result"
92924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		;;
9293ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      -R*)
9294ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_stripname -R '' "$deplib"
9295ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_replace_sysroot "$func_stripname_result"
9296ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_append newdependency_libs " -R$func_replace_sysroot_result"
9297ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		;;
9298ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      *) func_append newdependency_libs " $deplib" ;;
92994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
93004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    done
93014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    dependency_libs="$newdependency_libs"
93024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    newdlfiles=
93034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
93044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    for lib in $dlfiles; do
93054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case $lib in
93064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *.la)
93074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	        func_basename "$lib"
93084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		name="$func_basename_result"
93094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
93104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		test -z "$libdir" && \
93114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  func_fatal_error "\`$lib' is not a valid libtool archive"
9312ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
93134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		;;
9314ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      *) func_append newdlfiles " $lib" ;;
93154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
93164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    done
93174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    dlfiles="$newdlfiles"
93184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    newdlprefiles=
93194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    for lib in $dlprefiles; do
93204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case $lib in
93214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      *.la)
93224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		# Only pass preopened files to the pseudo-archive (for
93234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		# eventual linking with the app. that links it) if we
93244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		# didn't already link the preopened objects directly into
93254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		# the library:
93264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		func_basename "$lib"
93274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		name="$func_basename_result"
93284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
93294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		test -z "$libdir" && \
93304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		  func_fatal_error "\`$lib' is not a valid libtool archive"
9331ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
93324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		;;
93334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
93344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    done
93354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    dlprefiles="$newdlprefiles"
93364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  else
93374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    newdlfiles=
93384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    for lib in $dlfiles; do
93394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case $lib in
93404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
93414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		*) abs=`pwd`"/$lib" ;;
93424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
9343ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append newdlfiles " $abs"
93444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    done
93454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    dlfiles="$newdlfiles"
93464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    newdlprefiles=
93474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    for lib in $dlprefiles; do
93484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      case $lib in
93494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
93504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project		*) abs=`pwd`"/$lib" ;;
93514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      esac
9352ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append newdlprefiles " $abs"
93534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    done
93544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    dlprefiles="$newdlprefiles"
93554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
93564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  $RM $output
93574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  # place dlname in correct position for cygwin
9358ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  # In fact, it would be nice if we could use this code for all target
9359ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  # systems that can't hard-code library paths into their executables
9360ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  # and that have no shared library path variable independent of PATH,
9361ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  # but it turns out we can't easily determine that from inspecting
9362ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  # libtool variables, so we have to hard-code the OSs to which it
9363ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  # applies here; at the moment, that means platforms that use the PE
9364ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  # object format with DLL files.  See the long comment at the top of
9365ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  # tests/bindir.at for full details.
93664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  tdlname=$dlname
93674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  case $host,$output,$installed,$module,$dlname in
9368ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
9369ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      # If a -bindir argument was supplied, place the dll there.
9370ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      if test "x$bindir" != x ;
9371ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      then
9372ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		func_relative_path "$install_libdir" "$bindir"
9373ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		tdlname=$func_relative_path_result$dlname
9374ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      else
9375ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		# Otherwise fall back on heuristic.
9376ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik		tdlname=../bin/$dlname
9377ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      fi
9378ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      ;;
93794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  esac
93804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  $ECHO > $output "\
93814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# $outputname - a libtool library file
93824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
93834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#
93844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Please DO NOT delete this file!
93854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# It is necessary for linking the library.
9386893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
93874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# The name that we can dlopen(3).
93884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdlname='$tdlname'
9389893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
93904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Names of this library.
93914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlibrary_names='$library_names'
9392893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
93934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# The name of the static archive.
93944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectold_library='$old_library'
9395893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
93964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Linker flags that can not go in dependency_libs.
93974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectinherited_linker_flags='$new_inherited_linker_flags'
9398893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
93994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Libraries that this one depends upon.
94004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdependency_libs='$dependency_libs'
9401893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
94024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Names of additional weak libraries provided by this library
94034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectweak_library_names='$weak_libs'
9404893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
94054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Version information for $libname.
94064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectcurrent=$current
94074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectage=$age
94084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectrevision=$revision
9409893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
94104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Is this an already installed library?
94114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectinstalled=$installed
9412893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
94134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Should we warn about portability when linking against -modules?
94144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectshouldnotlink=$module
9415893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
94164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Files to dlopen/dlpreopen
94174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdlopen='$dlfiles'
94184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdlpreopen='$dlprefiles'
9419893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
94204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Directory that this library needs to be installed in:
94214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlibdir='$install_libdir'"
94224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test "$installed" = no && test "$need_relink" = yes; then
94234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    $ECHO >> $output "\
94244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectrelink_command=\"$relink_command\""
94254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  fi
94264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	done
94274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      }
9428893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
94294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # Do a symbolic link so that the libtool archive can be found in
94304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      # LD_LIBRARY_PATH before the program is installed.
94314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
94324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      ;;
94334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    esac
94344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    exit $EXIT_SUCCESS
94354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
9436893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9437ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
94384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_mode_link ${1+"$@"}
9439893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9440893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
94414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_mode_uninstall arg...
94424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mode_uninstall ()
94434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{
94444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    $opt_debug
94454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    RM="$nonopt"
9446893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    files=
9447893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    rmforce=
9448893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    exit_status=0
9449893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9450893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    # This variable tells wrapper scripts just to set variables rather
9451893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    # than running their programs.
9452893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    libtool_install_magic="$magic"
9453893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9454893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    for arg
9455893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    do
9456893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      case $arg in
9457ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      -f) func_append RM " $arg"; rmforce=yes ;;
9458ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      -*) func_append RM " $arg" ;;
9459ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      *) func_append files " $arg" ;;
9460893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      esac
9461893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    done
9462893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
94634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    test -z "$RM" && \
94644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_fatal_help "you must specify an RM program"
9465893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9466893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    rmdirs=
9467893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9468893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    for file in $files; do
94694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_dirname "$file" "" "."
94704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      dir="$func_dirname_result"
94714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if test "X$dir" = X.; then
9472ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	odir="$objdir"
9473893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      else
9474ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	odir="$dir/$objdir"
9475893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
94764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_basename "$file"
94774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      name="$func_basename_result"
9478ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      test "$opt_mode" = uninstall && odir="$dir"
9479893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9480ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      # Remember odir for removal later, being careful to avoid duplicates
9481ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik      if test "$opt_mode" = clean; then
9482893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	case " $rmdirs " in
9483ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *" $odir "*) ;;
9484ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  *) func_append rmdirs " $odir" ;;
9485893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	esac
9486893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
9487893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9488893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      # Don't error if the file doesn't exist and rm -f was used.
94894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      if { test -L "$file"; } >/dev/null 2>&1 ||
94904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	 { test -h "$file"; } >/dev/null 2>&1 ||
94914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	 test -f "$file"; then
9492893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	:
9493893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      elif test -d "$file"; then
9494893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	exit_status=1
9495893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	continue
9496893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      elif test "$rmforce" = yes; then
9497893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	continue
9498893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
9499893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9500893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      rmfiles="$file"
9501893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9502893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      case $name in
9503893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      *.la)
9504893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	# Possibly a libtool archive, so verify it.
95054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if func_lalib_p "$file"; then
95064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_source $dir/$name
9507893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9508893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  # Delete the libtool libraries and symlinks.
9509893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  for n in $library_names; do
9510ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append rmfiles " $odir/$n"
9511893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  done
9512ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
9513893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9514ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	  case "$opt_mode" in
9515893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  clean)
9516ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    case " $library_names " in
9517893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    *" $dlname "*) ;;
9518ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
9519893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    esac
9520ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
9521893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    ;;
9522893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  uninstall)
9523893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    if test -n "$library_names"; then
9524893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	      # Do each command in the postuninstall commands.
95254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
9526893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    fi
9527893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9528893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    if test -n "$old_library"; then
9529893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	      # Do each command in the old_postuninstall commands.
95304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
9531893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    fi
9532893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    # FIXME: should reinstall the best remaining shared library.
9533893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    ;;
9534893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  esac
9535893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
9536893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	;;
9537893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9538893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      *.lo)
9539893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	# Possibly a libtool object, so verify it.
95404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	if func_lalib_p "$file"; then
9541893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9542893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  # Read the .lo file
95434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  func_source $dir/$name
9544893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9545893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  # Add PIC object to the list of files to remove.
95464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$pic_object" &&
95474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	     test "$pic_object" != none; then
9548ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append rmfiles " $dir/$pic_object"
9549893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  fi
9550893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9551893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  # Add non-PIC object to the list of files to remove.
95524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if test -n "$non_pic_object" &&
95534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	     test "$non_pic_object" != none; then
9554ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append rmfiles " $dir/$non_pic_object"
9555893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  fi
9556893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
9557893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	;;
9558893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9559893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      *)
9560ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	if test "$opt_mode" = clean ; then
9561893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  noexename=$name
9562893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  case $file in
9563893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  *.exe)
95644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_stripname '' '.exe' "$file"
95654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    file=$func_stripname_result
95664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    func_stripname '' '.exe' "$name"
95674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    noexename=$func_stripname_result
9568893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    # $file with .exe has already been added to rmfiles,
9569893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    # add $file without .exe
9570ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append rmfiles " $file"
9571893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    ;;
9572893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  esac
9573893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  # Do a test to see if this is a libtool program.
95744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	  if func_ltwrapper_p "$file"; then
95754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    if func_ltwrapper_executable_p "$file"; then
95764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_ltwrapper_scriptname "$file"
95774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      relink_command=
95784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_source $func_ltwrapper_scriptname_result
9579ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append rmfiles " $func_ltwrapper_scriptname_result"
95804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    else
95814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      relink_command=
95824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	      func_source $dir/$noexename
95834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	    fi
9584893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9585893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    # note $name still contains .exe if it was in $file originally
9586893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    # as does the version of $file that was added into $rmfiles
9587ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
9588893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    if test "$fast_install" = yes && test -n "$relink_command"; then
9589ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append rmfiles " $odir/lt-$name"
9590893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    fi
9591893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    if test "X$noexename" != "X$name" ; then
9592ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik	      func_append rmfiles " $odir/lt-${noexename}.c"
9593893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	    fi
9594893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	  fi
9595893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	fi
9596893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project	;;
9597893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      esac
95984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project      func_show_eval "$RM $rmfiles" 'exit_status=1'
9599893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    done
9600893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9601893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    # Try to remove the ${objdir}s in the directories where we deleted files
9602893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    for dir in $rmdirs; do
9603893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      if test -d "$dir"; then
96044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project	func_show_eval "rmdir $dir >/dev/null 2>&1"
9605893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project      fi
9606893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    done
9607893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9608893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project    exit $exit_status
96094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
9610893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9611ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
96124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project    func_mode_uninstall ${1+"$@"}
9613893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9614ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiktest -z "$opt_mode" && {
96154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  help="$generic_help"
96164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  func_fatal_help "you must specify a MODE"
96174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}
96184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
96194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecttest -z "$exec_cmd" && \
9620ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik  func_fatal_help "invalid operation mode \`$opt_mode'"
9621893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9622893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectif test -n "$exec_cmd"; then
96234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project  eval exec "$exec_cmd"
9624893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project  exit $EXIT_FAILURE
9625893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectfi
9626893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
96274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectexit $exit_status
9628893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9629893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9630893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# The TAGs below are defined such that we never get into a situation
9631893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# in which we disable both kinds of libraries.  Given conflicting
9632893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# choices, we go for a static library, that is the most portable,
9633893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# since we can't tell whether shared libraries were disabled because
9634893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# the user asked for that or because the platform doesn't support
9635893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# them.  This is particularly important on AIX, because we don't
9636893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# support having both static and shared libraries enabled at the same
9637893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# time on that platform, so we default to a shared-only configuration.
9638893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# If a disable-shared tag is given, we'll fallback to a static-only
9639893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# configuration.  But we'll never go from static-only to shared-only.
9640893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9641893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
96424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbuild_libtool_libs=no
96434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbuild_old_libs=yes
9644893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# ### END LIBTOOL TAG CONFIG: disable-shared
9645893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9646893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# ### BEGIN LIBTOOL TAG CONFIG: disable-static
96474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
9648893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# ### END LIBTOOL TAG CONFIG: disable-static
9649893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project
9650893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# Local Variables:
9651893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# mode:shell-script
9652893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# sh-indentation:2
9653893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# End:
96544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# vi:sw=2
96554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project
9656