xref: /aosp_15_r20/external/libpng/ltmain.sh (revision a67afe4df73cf47866eedc69947994b8ff839aba)
1*a67afe4dSAndroid Build Coastguard Worker#! /usr/bin/env sh
2*a67afe4dSAndroid Build Coastguard Worker## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
3*a67afe4dSAndroid Build Coastguard Worker##               by inline-source v2019-02-19.15
4*a67afe4dSAndroid Build Coastguard Worker
5*a67afe4dSAndroid Build Coastguard Worker# libtool (GNU libtool) 2.4.7
6*a67afe4dSAndroid Build Coastguard Worker# Provide generalized library-building support services.
7*a67afe4dSAndroid Build Coastguard Worker# Written by Gordon Matzigkeit <[email protected]>, 1996
8*a67afe4dSAndroid Build Coastguard Worker
9*a67afe4dSAndroid Build Coastguard Worker# Copyright (C) 1996-2019, 2021-2022 Free Software Foundation, Inc.
10*a67afe4dSAndroid Build Coastguard Worker# This is free software; see the source for copying conditions.  There is NO
11*a67afe4dSAndroid Build Coastguard Worker# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12*a67afe4dSAndroid Build Coastguard Worker
13*a67afe4dSAndroid Build Coastguard Worker# GNU Libtool is free software; you can redistribute it and/or modify
14*a67afe4dSAndroid Build Coastguard Worker# it under the terms of the GNU General Public License as published by
15*a67afe4dSAndroid Build Coastguard Worker# the Free Software Foundation; either version 2 of the License, or
16*a67afe4dSAndroid Build Coastguard Worker# (at your option) any later version.
17*a67afe4dSAndroid Build Coastguard Worker#
18*a67afe4dSAndroid Build Coastguard Worker# As a special exception to the GNU General Public License,
19*a67afe4dSAndroid Build Coastguard Worker# if you distribute this file as part of a program or library that
20*a67afe4dSAndroid Build Coastguard Worker# is built using GNU Libtool, you may include this file under the
21*a67afe4dSAndroid Build Coastguard Worker# same distribution terms that you use for the rest of that program.
22*a67afe4dSAndroid Build Coastguard Worker#
23*a67afe4dSAndroid Build Coastguard Worker# GNU Libtool is distributed in the hope that it will be useful, but
24*a67afe4dSAndroid Build Coastguard Worker# WITHOUT ANY WARRANTY; without even the implied warranty of
25*a67afe4dSAndroid Build Coastguard Worker# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
26*a67afe4dSAndroid Build Coastguard Worker# General Public License for more details.
27*a67afe4dSAndroid Build Coastguard Worker#
28*a67afe4dSAndroid Build Coastguard Worker# You should have received a copy of the GNU General Public License
29*a67afe4dSAndroid Build Coastguard Worker# along with this program.  If not, see <http://www.gnu.org/licenses/>.
30*a67afe4dSAndroid Build Coastguard Worker
31*a67afe4dSAndroid Build Coastguard Worker
32*a67afe4dSAndroid Build Coastguard WorkerPROGRAM=libtool
33*a67afe4dSAndroid Build Coastguard WorkerPACKAGE=libtool
34*a67afe4dSAndroid Build Coastguard WorkerVERSION=2.4.7
35*a67afe4dSAndroid Build Coastguard Workerpackage_revision=2.4.7
36*a67afe4dSAndroid Build Coastguard Worker
37*a67afe4dSAndroid Build Coastguard Worker
38*a67afe4dSAndroid Build Coastguard Worker## ------ ##
39*a67afe4dSAndroid Build Coastguard Worker## Usage. ##
40*a67afe4dSAndroid Build Coastguard Worker## ------ ##
41*a67afe4dSAndroid Build Coastguard Worker
42*a67afe4dSAndroid Build Coastguard Worker# Run './libtool --help' for help with using this script from the
43*a67afe4dSAndroid Build Coastguard Worker# command line.
44*a67afe4dSAndroid Build Coastguard Worker
45*a67afe4dSAndroid Build Coastguard Worker
46*a67afe4dSAndroid Build Coastguard Worker## ------------------------------- ##
47*a67afe4dSAndroid Build Coastguard Worker## User overridable command paths. ##
48*a67afe4dSAndroid Build Coastguard Worker## ------------------------------- ##
49*a67afe4dSAndroid Build Coastguard Worker
50*a67afe4dSAndroid Build Coastguard Worker# After configure completes, it has a better idea of some of the
51*a67afe4dSAndroid Build Coastguard Worker# shell tools we need than the defaults used by the functions shared
52*a67afe4dSAndroid Build Coastguard Worker# with bootstrap, so set those here where they can still be over-
53*a67afe4dSAndroid Build Coastguard Worker# ridden by the user, but otherwise take precedence.
54*a67afe4dSAndroid Build Coastguard Worker
55*a67afe4dSAndroid Build Coastguard Worker: ${AUTOCONF="autoconf"}
56*a67afe4dSAndroid Build Coastguard Worker: ${AUTOMAKE="automake"}
57*a67afe4dSAndroid Build Coastguard Worker
58*a67afe4dSAndroid Build Coastguard Worker
59*a67afe4dSAndroid Build Coastguard Worker## -------------------------- ##
60*a67afe4dSAndroid Build Coastguard Worker## Source external libraries. ##
61*a67afe4dSAndroid Build Coastguard Worker## -------------------------- ##
62*a67afe4dSAndroid Build Coastguard Worker
63*a67afe4dSAndroid Build Coastguard Worker# Much of our low-level functionality needs to be sourced from external
64*a67afe4dSAndroid Build Coastguard Worker# libraries, which are installed to $pkgauxdir.
65*a67afe4dSAndroid Build Coastguard Worker
66*a67afe4dSAndroid Build Coastguard Worker# Set a version string for this script.
67*a67afe4dSAndroid Build Coastguard Workerscriptversion=2019-02-19.15; # UTC
68*a67afe4dSAndroid Build Coastguard Worker
69*a67afe4dSAndroid Build Coastguard Worker# General shell script boiler plate, and helper functions.
70*a67afe4dSAndroid Build Coastguard Worker# Written by Gary V. Vaughan, 2004
71*a67afe4dSAndroid Build Coastguard Worker
72*a67afe4dSAndroid Build Coastguard Worker# This is free software.  There is NO warranty; not even for
73*a67afe4dSAndroid Build Coastguard Worker# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
74*a67afe4dSAndroid Build Coastguard Worker#
75*a67afe4dSAndroid Build Coastguard Worker# Copyright (C) 2004-2019, 2021 Bootstrap Authors
76*a67afe4dSAndroid Build Coastguard Worker#
77*a67afe4dSAndroid Build Coastguard Worker# This file is dual licensed under the terms of the MIT license
78*a67afe4dSAndroid Build Coastguard Worker# <https://opensource.org/license/MIT>, and GPL version 2 or later
79*a67afe4dSAndroid Build Coastguard Worker# <http://www.gnu.org/licenses/gpl-2.0.html>.  You must apply one of
80*a67afe4dSAndroid Build Coastguard Worker# these licenses when using or redistributing this software or any of
81*a67afe4dSAndroid Build Coastguard Worker# the files within it.  See the URLs above, or the file `LICENSE`
82*a67afe4dSAndroid Build Coastguard Worker# included in the Bootstrap distribution for the full license texts.
83*a67afe4dSAndroid Build Coastguard Worker
84*a67afe4dSAndroid Build Coastguard Worker# Please report bugs or propose patches to:
85*a67afe4dSAndroid Build Coastguard Worker# <https://github.com/gnulib-modules/bootstrap/issues>
86*a67afe4dSAndroid Build Coastguard Worker
87*a67afe4dSAndroid Build Coastguard Worker
88*a67afe4dSAndroid Build Coastguard Worker## ------ ##
89*a67afe4dSAndroid Build Coastguard Worker## Usage. ##
90*a67afe4dSAndroid Build Coastguard Worker## ------ ##
91*a67afe4dSAndroid Build Coastguard Worker
92*a67afe4dSAndroid Build Coastguard Worker# Evaluate this file near the top of your script to gain access to
93*a67afe4dSAndroid Build Coastguard Worker# the functions and variables defined here:
94*a67afe4dSAndroid Build Coastguard Worker#
95*a67afe4dSAndroid Build Coastguard Worker#   . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh
96*a67afe4dSAndroid Build Coastguard Worker#
97*a67afe4dSAndroid Build Coastguard Worker# If you need to override any of the default environment variable
98*a67afe4dSAndroid Build Coastguard Worker# settings, do that before evaluating this file.
99*a67afe4dSAndroid Build Coastguard Worker
100*a67afe4dSAndroid Build Coastguard Worker
101*a67afe4dSAndroid Build Coastguard Worker## -------------------- ##
102*a67afe4dSAndroid Build Coastguard Worker## Shell normalisation. ##
103*a67afe4dSAndroid Build Coastguard Worker## -------------------- ##
104*a67afe4dSAndroid Build Coastguard Worker
105*a67afe4dSAndroid Build Coastguard Worker# Some shells need a little help to be as Bourne compatible as possible.
106*a67afe4dSAndroid Build Coastguard Worker# Before doing anything else, make sure all that help has been provided!
107*a67afe4dSAndroid Build Coastguard Worker
108*a67afe4dSAndroid Build Coastguard WorkerDUALCASE=1; export DUALCASE # for MKS sh
109*a67afe4dSAndroid Build Coastguard Workerif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
110*a67afe4dSAndroid Build Coastguard Worker  emulate sh
111*a67afe4dSAndroid Build Coastguard Worker  NULLCMD=:
112*a67afe4dSAndroid Build Coastguard Worker  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
113*a67afe4dSAndroid Build Coastguard Worker  # is contrary to our usage.  Disable this feature.
114*a67afe4dSAndroid Build Coastguard Worker  alias -g '${1+"$@"}'='"$@"'
115*a67afe4dSAndroid Build Coastguard Worker  setopt NO_GLOB_SUBST
116*a67afe4dSAndroid Build Coastguard Workerelse
117*a67afe4dSAndroid Build Coastguard Worker  case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac
118*a67afe4dSAndroid Build Coastguard Workerfi
119*a67afe4dSAndroid Build Coastguard Worker
120*a67afe4dSAndroid Build Coastguard Worker# NLS nuisances: We save the old values in case they are required later.
121*a67afe4dSAndroid Build Coastguard Worker_G_user_locale=
122*a67afe4dSAndroid Build Coastguard Worker_G_safe_locale=
123*a67afe4dSAndroid Build Coastguard Workerfor _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
124*a67afe4dSAndroid Build Coastguard Workerdo
125*a67afe4dSAndroid Build Coastguard Worker  eval "if test set = \"\${$_G_var+set}\"; then
126*a67afe4dSAndroid Build Coastguard Worker          save_$_G_var=\$$_G_var
127*a67afe4dSAndroid Build Coastguard Worker          $_G_var=C
128*a67afe4dSAndroid Build Coastguard Worker	  export $_G_var
129*a67afe4dSAndroid Build Coastguard Worker	  _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\"
130*a67afe4dSAndroid Build Coastguard Worker	  _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"
131*a67afe4dSAndroid Build Coastguard Worker	fi"
132*a67afe4dSAndroid Build Coastguard Workerdone
133*a67afe4dSAndroid Build Coastguard Worker# These NLS vars are set unconditionally (bootstrap issue #24).  Unset those
134*a67afe4dSAndroid Build Coastguard Worker# in case the environment reset is needed later and the $save_* variant is not
135*a67afe4dSAndroid Build Coastguard Worker# defined (see the code above).
136*a67afe4dSAndroid Build Coastguard WorkerLC_ALL=C
137*a67afe4dSAndroid Build Coastguard WorkerLANGUAGE=C
138*a67afe4dSAndroid Build Coastguard Workerexport LANGUAGE LC_ALL
139*a67afe4dSAndroid Build Coastguard Worker
140*a67afe4dSAndroid Build Coastguard Worker# Make sure IFS has a sensible default
141*a67afe4dSAndroid Build Coastguard Workersp=' '
142*a67afe4dSAndroid Build Coastguard Workernl='
143*a67afe4dSAndroid Build Coastguard Worker'
144*a67afe4dSAndroid Build Coastguard WorkerIFS="$sp	$nl"
145*a67afe4dSAndroid Build Coastguard Worker
146*a67afe4dSAndroid Build Coastguard Worker# There are apparently some retarded systems that use ';' as a PATH separator!
147*a67afe4dSAndroid Build Coastguard Workerif test "${PATH_SEPARATOR+set}" != set; then
148*a67afe4dSAndroid Build Coastguard Worker  PATH_SEPARATOR=:
149*a67afe4dSAndroid Build Coastguard Worker  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
150*a67afe4dSAndroid Build Coastguard Worker    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
151*a67afe4dSAndroid Build Coastguard Worker      PATH_SEPARATOR=';'
152*a67afe4dSAndroid Build Coastguard Worker  }
153*a67afe4dSAndroid Build Coastguard Workerfi
154*a67afe4dSAndroid Build Coastguard Worker
155*a67afe4dSAndroid Build Coastguard Worker
156*a67afe4dSAndroid Build Coastguard Worker# func_unset VAR
157*a67afe4dSAndroid Build Coastguard Worker# --------------
158*a67afe4dSAndroid Build Coastguard Worker# Portably unset VAR.
159*a67afe4dSAndroid Build Coastguard Worker# In some shells, an 'unset VAR' statement leaves a non-zero return
160*a67afe4dSAndroid Build Coastguard Worker# status if VAR is already unset, which might be problematic if the
161*a67afe4dSAndroid Build Coastguard Worker# statement is used at the end of a function (thus poisoning its return
162*a67afe4dSAndroid Build Coastguard Worker# value) or when 'set -e' is active (causing even a spurious abort of
163*a67afe4dSAndroid Build Coastguard Worker# the script in this case).
164*a67afe4dSAndroid Build Coastguard Workerfunc_unset ()
165*a67afe4dSAndroid Build Coastguard Worker{
166*a67afe4dSAndroid Build Coastguard Worker    { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; }
167*a67afe4dSAndroid Build Coastguard Worker}
168*a67afe4dSAndroid Build Coastguard Worker
169*a67afe4dSAndroid Build Coastguard Worker
170*a67afe4dSAndroid Build Coastguard Worker# Make sure CDPATH doesn't cause `cd` commands to output the target dir.
171*a67afe4dSAndroid Build Coastguard Workerfunc_unset CDPATH
172*a67afe4dSAndroid Build Coastguard Worker
173*a67afe4dSAndroid Build Coastguard Worker# Make sure ${,E,F}GREP behave sanely.
174*a67afe4dSAndroid Build Coastguard Workerfunc_unset GREP_OPTIONS
175*a67afe4dSAndroid Build Coastguard Worker
176*a67afe4dSAndroid Build Coastguard Worker
177*a67afe4dSAndroid Build Coastguard Worker## ------------------------- ##
178*a67afe4dSAndroid Build Coastguard Worker## Locate command utilities. ##
179*a67afe4dSAndroid Build Coastguard Worker## ------------------------- ##
180*a67afe4dSAndroid Build Coastguard Worker
181*a67afe4dSAndroid Build Coastguard Worker
182*a67afe4dSAndroid Build Coastguard Worker# func_executable_p FILE
183*a67afe4dSAndroid Build Coastguard Worker# ----------------------
184*a67afe4dSAndroid Build Coastguard Worker# Check that FILE is an executable regular file.
185*a67afe4dSAndroid Build Coastguard Workerfunc_executable_p ()
186*a67afe4dSAndroid Build Coastguard Worker{
187*a67afe4dSAndroid Build Coastguard Worker    test -f "$1" && test -x "$1"
188*a67afe4dSAndroid Build Coastguard Worker}
189*a67afe4dSAndroid Build Coastguard Worker
190*a67afe4dSAndroid Build Coastguard Worker
191*a67afe4dSAndroid Build Coastguard Worker# func_path_progs PROGS_LIST CHECK_FUNC [PATH]
192*a67afe4dSAndroid Build Coastguard Worker# --------------------------------------------
193*a67afe4dSAndroid Build Coastguard Worker# Search for either a program that responds to --version with output
194*a67afe4dSAndroid Build Coastguard Worker# containing "GNU", or else returned by CHECK_FUNC otherwise, by
195*a67afe4dSAndroid Build Coastguard Worker# trying all the directories in PATH with each of the elements of
196*a67afe4dSAndroid Build Coastguard Worker# PROGS_LIST.
197*a67afe4dSAndroid Build Coastguard Worker#
198*a67afe4dSAndroid Build Coastguard Worker# CHECK_FUNC should accept the path to a candidate program, and
199*a67afe4dSAndroid Build Coastguard Worker# set $func_check_prog_result if it truncates its output less than
200*a67afe4dSAndroid Build Coastguard Worker# $_G_path_prog_max characters.
201*a67afe4dSAndroid Build Coastguard Workerfunc_path_progs ()
202*a67afe4dSAndroid Build Coastguard Worker{
203*a67afe4dSAndroid Build Coastguard Worker    _G_progs_list=$1
204*a67afe4dSAndroid Build Coastguard Worker    _G_check_func=$2
205*a67afe4dSAndroid Build Coastguard Worker    _G_PATH=${3-"$PATH"}
206*a67afe4dSAndroid Build Coastguard Worker
207*a67afe4dSAndroid Build Coastguard Worker    _G_path_prog_max=0
208*a67afe4dSAndroid Build Coastguard Worker    _G_path_prog_found=false
209*a67afe4dSAndroid Build Coastguard Worker    _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:}
210*a67afe4dSAndroid Build Coastguard Worker    for _G_dir in $_G_PATH; do
211*a67afe4dSAndroid Build Coastguard Worker      IFS=$_G_save_IFS
212*a67afe4dSAndroid Build Coastguard Worker      test -z "$_G_dir" && _G_dir=.
213*a67afe4dSAndroid Build Coastguard Worker      for _G_prog_name in $_G_progs_list; do
214*a67afe4dSAndroid Build Coastguard Worker        for _exeext in '' .EXE; do
215*a67afe4dSAndroid Build Coastguard Worker          _G_path_prog=$_G_dir/$_G_prog_name$_exeext
216*a67afe4dSAndroid Build Coastguard Worker          func_executable_p "$_G_path_prog" || continue
217*a67afe4dSAndroid Build Coastguard Worker          case `"$_G_path_prog" --version 2>&1` in
218*a67afe4dSAndroid Build Coastguard Worker            *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;;
219*a67afe4dSAndroid Build Coastguard Worker            *)     $_G_check_func $_G_path_prog
220*a67afe4dSAndroid Build Coastguard Worker		   func_path_progs_result=$func_check_prog_result
221*a67afe4dSAndroid Build Coastguard Worker		   ;;
222*a67afe4dSAndroid Build Coastguard Worker          esac
223*a67afe4dSAndroid Build Coastguard Worker          $_G_path_prog_found && break 3
224*a67afe4dSAndroid Build Coastguard Worker        done
225*a67afe4dSAndroid Build Coastguard Worker      done
226*a67afe4dSAndroid Build Coastguard Worker    done
227*a67afe4dSAndroid Build Coastguard Worker    IFS=$_G_save_IFS
228*a67afe4dSAndroid Build Coastguard Worker    test -z "$func_path_progs_result" && {
229*a67afe4dSAndroid Build Coastguard Worker      echo "no acceptable sed could be found in \$PATH" >&2
230*a67afe4dSAndroid Build Coastguard Worker      exit 1
231*a67afe4dSAndroid Build Coastguard Worker    }
232*a67afe4dSAndroid Build Coastguard Worker}
233*a67afe4dSAndroid Build Coastguard Worker
234*a67afe4dSAndroid Build Coastguard Worker
235*a67afe4dSAndroid Build Coastguard Worker# We want to be able to use the functions in this file before configure
236*a67afe4dSAndroid Build Coastguard Worker# has figured out where the best binaries are kept, which means we have
237*a67afe4dSAndroid Build Coastguard Worker# to search for them ourselves - except when the results are already set
238*a67afe4dSAndroid Build Coastguard Worker# where we skip the searches.
239*a67afe4dSAndroid Build Coastguard Worker
240*a67afe4dSAndroid Build Coastguard Worker# Unless the user overrides by setting SED, search the path for either GNU
241*a67afe4dSAndroid Build Coastguard Worker# sed, or the sed that truncates its output the least.
242*a67afe4dSAndroid Build Coastguard Workertest -z "$SED" && {
243*a67afe4dSAndroid Build Coastguard Worker  _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
244*a67afe4dSAndroid Build Coastguard Worker  for _G_i in 1 2 3 4 5 6 7; do
245*a67afe4dSAndroid Build Coastguard Worker    _G_sed_script=$_G_sed_script$nl$_G_sed_script
246*a67afe4dSAndroid Build Coastguard Worker  done
247*a67afe4dSAndroid Build Coastguard Worker  echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed
248*a67afe4dSAndroid Build Coastguard Worker  _G_sed_script=
249*a67afe4dSAndroid Build Coastguard Worker
250*a67afe4dSAndroid Build Coastguard Worker  func_check_prog_sed ()
251*a67afe4dSAndroid Build Coastguard Worker  {
252*a67afe4dSAndroid Build Coastguard Worker    _G_path_prog=$1
253*a67afe4dSAndroid Build Coastguard Worker
254*a67afe4dSAndroid Build Coastguard Worker    _G_count=0
255*a67afe4dSAndroid Build Coastguard Worker    printf 0123456789 >conftest.in
256*a67afe4dSAndroid Build Coastguard Worker    while :
257*a67afe4dSAndroid Build Coastguard Worker    do
258*a67afe4dSAndroid Build Coastguard Worker      cat conftest.in conftest.in >conftest.tmp
259*a67afe4dSAndroid Build Coastguard Worker      mv conftest.tmp conftest.in
260*a67afe4dSAndroid Build Coastguard Worker      cp conftest.in conftest.nl
261*a67afe4dSAndroid Build Coastguard Worker      echo '' >> conftest.nl
262*a67afe4dSAndroid Build Coastguard Worker      "$_G_path_prog" -f conftest.sed <conftest.nl >conftest.out 2>/dev/null || break
263*a67afe4dSAndroid Build Coastguard Worker      diff conftest.out conftest.nl >/dev/null 2>&1 || break
264*a67afe4dSAndroid Build Coastguard Worker      _G_count=`expr $_G_count + 1`
265*a67afe4dSAndroid Build Coastguard Worker      if test "$_G_count" -gt "$_G_path_prog_max"; then
266*a67afe4dSAndroid Build Coastguard Worker        # Best one so far, save it but keep looking for a better one
267*a67afe4dSAndroid Build Coastguard Worker        func_check_prog_result=$_G_path_prog
268*a67afe4dSAndroid Build Coastguard Worker        _G_path_prog_max=$_G_count
269*a67afe4dSAndroid Build Coastguard Worker      fi
270*a67afe4dSAndroid Build Coastguard Worker      # 10*(2^10) chars as input seems more than enough
271*a67afe4dSAndroid Build Coastguard Worker      test 10 -lt "$_G_count" && break
272*a67afe4dSAndroid Build Coastguard Worker    done
273*a67afe4dSAndroid Build Coastguard Worker    rm -f conftest.in conftest.tmp conftest.nl conftest.out
274*a67afe4dSAndroid Build Coastguard Worker  }
275*a67afe4dSAndroid Build Coastguard Worker
276*a67afe4dSAndroid Build Coastguard Worker  func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin"
277*a67afe4dSAndroid Build Coastguard Worker  rm -f conftest.sed
278*a67afe4dSAndroid Build Coastguard Worker  SED=$func_path_progs_result
279*a67afe4dSAndroid Build Coastguard Worker}
280*a67afe4dSAndroid Build Coastguard Worker
281*a67afe4dSAndroid Build Coastguard Worker
282*a67afe4dSAndroid Build Coastguard Worker# Unless the user overrides by setting GREP, search the path for either GNU
283*a67afe4dSAndroid Build Coastguard Worker# grep, or the grep that truncates its output the least.
284*a67afe4dSAndroid Build Coastguard Workertest -z "$GREP" && {
285*a67afe4dSAndroid Build Coastguard Worker  func_check_prog_grep ()
286*a67afe4dSAndroid Build Coastguard Worker  {
287*a67afe4dSAndroid Build Coastguard Worker    _G_path_prog=$1
288*a67afe4dSAndroid Build Coastguard Worker
289*a67afe4dSAndroid Build Coastguard Worker    _G_count=0
290*a67afe4dSAndroid Build Coastguard Worker    _G_path_prog_max=0
291*a67afe4dSAndroid Build Coastguard Worker    printf 0123456789 >conftest.in
292*a67afe4dSAndroid Build Coastguard Worker    while :
293*a67afe4dSAndroid Build Coastguard Worker    do
294*a67afe4dSAndroid Build Coastguard Worker      cat conftest.in conftest.in >conftest.tmp
295*a67afe4dSAndroid Build Coastguard Worker      mv conftest.tmp conftest.in
296*a67afe4dSAndroid Build Coastguard Worker      cp conftest.in conftest.nl
297*a67afe4dSAndroid Build Coastguard Worker      echo 'GREP' >> conftest.nl
298*a67afe4dSAndroid Build Coastguard Worker      "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' <conftest.nl >conftest.out 2>/dev/null || break
299*a67afe4dSAndroid Build Coastguard Worker      diff conftest.out conftest.nl >/dev/null 2>&1 || break
300*a67afe4dSAndroid Build Coastguard Worker      _G_count=`expr $_G_count + 1`
301*a67afe4dSAndroid Build Coastguard Worker      if test "$_G_count" -gt "$_G_path_prog_max"; then
302*a67afe4dSAndroid Build Coastguard Worker        # Best one so far, save it but keep looking for a better one
303*a67afe4dSAndroid Build Coastguard Worker        func_check_prog_result=$_G_path_prog
304*a67afe4dSAndroid Build Coastguard Worker        _G_path_prog_max=$_G_count
305*a67afe4dSAndroid Build Coastguard Worker      fi
306*a67afe4dSAndroid Build Coastguard Worker      # 10*(2^10) chars as input seems more than enough
307*a67afe4dSAndroid Build Coastguard Worker      test 10 -lt "$_G_count" && break
308*a67afe4dSAndroid Build Coastguard Worker    done
309*a67afe4dSAndroid Build Coastguard Worker    rm -f conftest.in conftest.tmp conftest.nl conftest.out
310*a67afe4dSAndroid Build Coastguard Worker  }
311*a67afe4dSAndroid Build Coastguard Worker
312*a67afe4dSAndroid Build Coastguard Worker  func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin"
313*a67afe4dSAndroid Build Coastguard Worker  GREP=$func_path_progs_result
314*a67afe4dSAndroid Build Coastguard Worker}
315*a67afe4dSAndroid Build Coastguard Worker
316*a67afe4dSAndroid Build Coastguard Worker
317*a67afe4dSAndroid Build Coastguard Worker## ------------------------------- ##
318*a67afe4dSAndroid Build Coastguard Worker## User overridable command paths. ##
319*a67afe4dSAndroid Build Coastguard Worker## ------------------------------- ##
320*a67afe4dSAndroid Build Coastguard Worker
321*a67afe4dSAndroid Build Coastguard Worker# All uppercase variable names are used for environment variables.  These
322*a67afe4dSAndroid Build Coastguard Worker# variables can be overridden by the user before calling a script that
323*a67afe4dSAndroid Build Coastguard Worker# uses them if a suitable command of that name is not already available
324*a67afe4dSAndroid Build Coastguard Worker# in the command search PATH.
325*a67afe4dSAndroid Build Coastguard Worker
326*a67afe4dSAndroid Build Coastguard Worker: ${CP="cp -f"}
327*a67afe4dSAndroid Build Coastguard Worker: ${ECHO="printf %s\n"}
328*a67afe4dSAndroid Build Coastguard Worker: ${EGREP="$GREP -E"}
329*a67afe4dSAndroid Build Coastguard Worker: ${FGREP="$GREP -F"}
330*a67afe4dSAndroid Build Coastguard Worker: ${LN_S="ln -s"}
331*a67afe4dSAndroid Build Coastguard Worker: ${MAKE="make"}
332*a67afe4dSAndroid Build Coastguard Worker: ${MKDIR="mkdir"}
333*a67afe4dSAndroid Build Coastguard Worker: ${MV="mv -f"}
334*a67afe4dSAndroid Build Coastguard Worker: ${RM="rm -f"}
335*a67afe4dSAndroid Build Coastguard Worker: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
336*a67afe4dSAndroid Build Coastguard Worker
337*a67afe4dSAndroid Build Coastguard Worker
338*a67afe4dSAndroid Build Coastguard Worker## -------------------- ##
339*a67afe4dSAndroid Build Coastguard Worker## Useful sed snippets. ##
340*a67afe4dSAndroid Build Coastguard Worker## -------------------- ##
341*a67afe4dSAndroid Build Coastguard Worker
342*a67afe4dSAndroid Build Coastguard Workersed_dirname='s|/[^/]*$||'
343*a67afe4dSAndroid Build Coastguard Workersed_basename='s|^.*/||'
344*a67afe4dSAndroid Build Coastguard Worker
345*a67afe4dSAndroid Build Coastguard Worker# Sed substitution that helps us do robust quoting.  It backslashifies
346*a67afe4dSAndroid Build Coastguard Worker# metacharacters that are still active within double-quoted strings.
347*a67afe4dSAndroid Build Coastguard Workersed_quote_subst='s|\([`"$\\]\)|\\\1|g'
348*a67afe4dSAndroid Build Coastguard Worker
349*a67afe4dSAndroid Build Coastguard Worker# Same as above, but do not quote variable references.
350*a67afe4dSAndroid Build Coastguard Workersed_double_quote_subst='s/\(["`\\]\)/\\\1/g'
351*a67afe4dSAndroid Build Coastguard Worker
352*a67afe4dSAndroid Build Coastguard Worker# Sed substitution that turns a string into a regex matching for the
353*a67afe4dSAndroid Build Coastguard Worker# string literally.
354*a67afe4dSAndroid Build Coastguard Workersed_make_literal_regex='s|[].[^$\\*\/]|\\&|g'
355*a67afe4dSAndroid Build Coastguard Worker
356*a67afe4dSAndroid Build Coastguard Worker# Sed substitution that converts a w32 file name or path
357*a67afe4dSAndroid Build Coastguard Worker# that contains forward slashes, into one that contains
358*a67afe4dSAndroid Build Coastguard Worker# (escaped) backslashes.  A very naive implementation.
359*a67afe4dSAndroid Build Coastguard Workersed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
360*a67afe4dSAndroid Build Coastguard Worker
361*a67afe4dSAndroid Build Coastguard Worker# Re-'\' parameter expansions in output of sed_double_quote_subst that
362*a67afe4dSAndroid Build Coastguard Worker# were '\'-ed in input to the same.  If an odd number of '\' preceded a
363*a67afe4dSAndroid Build Coastguard Worker# '$' in input to sed_double_quote_subst, that '$' was protected from
364*a67afe4dSAndroid Build Coastguard Worker# expansion.  Since each input '\' is now two '\'s, look for any number
365*a67afe4dSAndroid Build Coastguard Worker# of runs of four '\'s followed by two '\'s and then a '$'.  '\' that '$'.
366*a67afe4dSAndroid Build Coastguard Worker_G_bs='\\'
367*a67afe4dSAndroid Build Coastguard Worker_G_bs2='\\\\'
368*a67afe4dSAndroid Build Coastguard Worker_G_bs4='\\\\\\\\'
369*a67afe4dSAndroid Build Coastguard Worker_G_dollar='\$'
370*a67afe4dSAndroid Build Coastguard Workersed_double_backslash="\
371*a67afe4dSAndroid Build Coastguard Worker  s/$_G_bs4/&\\
372*a67afe4dSAndroid Build Coastguard Worker/g
373*a67afe4dSAndroid Build Coastguard Worker  s/^$_G_bs2$_G_dollar/$_G_bs&/
374*a67afe4dSAndroid Build Coastguard Worker  s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g
375*a67afe4dSAndroid Build Coastguard Worker  s/\n//g"
376*a67afe4dSAndroid Build Coastguard Worker
377*a67afe4dSAndroid Build Coastguard Worker# require_check_ifs_backslash
378*a67afe4dSAndroid Build Coastguard Worker# ---------------------------
379*a67afe4dSAndroid Build Coastguard Worker# Check if we can use backslash as IFS='\' separator, and set
380*a67afe4dSAndroid Build Coastguard Worker# $check_ifs_backshlash_broken to ':' or 'false'.
381*a67afe4dSAndroid Build Coastguard Workerrequire_check_ifs_backslash=func_require_check_ifs_backslash
382*a67afe4dSAndroid Build Coastguard Workerfunc_require_check_ifs_backslash ()
383*a67afe4dSAndroid Build Coastguard Worker{
384*a67afe4dSAndroid Build Coastguard Worker  _G_save_IFS=$IFS
385*a67afe4dSAndroid Build Coastguard Worker  IFS='\'
386*a67afe4dSAndroid Build Coastguard Worker  _G_check_ifs_backshlash='a\\b'
387*a67afe4dSAndroid Build Coastguard Worker  for _G_i in $_G_check_ifs_backshlash
388*a67afe4dSAndroid Build Coastguard Worker  do
389*a67afe4dSAndroid Build Coastguard Worker  case $_G_i in
390*a67afe4dSAndroid Build Coastguard Worker  a)
391*a67afe4dSAndroid Build Coastguard Worker    check_ifs_backshlash_broken=false
392*a67afe4dSAndroid Build Coastguard Worker    ;;
393*a67afe4dSAndroid Build Coastguard Worker  '')
394*a67afe4dSAndroid Build Coastguard Worker    break
395*a67afe4dSAndroid Build Coastguard Worker    ;;
396*a67afe4dSAndroid Build Coastguard Worker  *)
397*a67afe4dSAndroid Build Coastguard Worker    check_ifs_backshlash_broken=:
398*a67afe4dSAndroid Build Coastguard Worker    break
399*a67afe4dSAndroid Build Coastguard Worker    ;;
400*a67afe4dSAndroid Build Coastguard Worker  esac
401*a67afe4dSAndroid Build Coastguard Worker  done
402*a67afe4dSAndroid Build Coastguard Worker  IFS=$_G_save_IFS
403*a67afe4dSAndroid Build Coastguard Worker  require_check_ifs_backslash=:
404*a67afe4dSAndroid Build Coastguard Worker}
405*a67afe4dSAndroid Build Coastguard Worker
406*a67afe4dSAndroid Build Coastguard Worker
407*a67afe4dSAndroid Build Coastguard Worker## ----------------- ##
408*a67afe4dSAndroid Build Coastguard Worker## Global variables. ##
409*a67afe4dSAndroid Build Coastguard Worker## ----------------- ##
410*a67afe4dSAndroid Build Coastguard Worker
411*a67afe4dSAndroid Build Coastguard Worker# Except for the global variables explicitly listed below, the following
412*a67afe4dSAndroid Build Coastguard Worker# functions in the '^func_' namespace, and the '^require_' namespace
413*a67afe4dSAndroid Build Coastguard Worker# variables initialised in the 'Resource management' section, sourcing
414*a67afe4dSAndroid Build Coastguard Worker# this file will not pollute your global namespace with anything
415*a67afe4dSAndroid Build Coastguard Worker# else. There's no portable way to scope variables in Bourne shell
416*a67afe4dSAndroid Build Coastguard Worker# though, so actually running these functions will sometimes place
417*a67afe4dSAndroid Build Coastguard Worker# results into a variable named after the function, and often use
418*a67afe4dSAndroid Build Coastguard Worker# temporary variables in the '^_G_' namespace. If you are careful to
419*a67afe4dSAndroid Build Coastguard Worker# avoid using those namespaces casually in your sourcing script, things
420*a67afe4dSAndroid Build Coastguard Worker# should continue to work as you expect. And, of course, you can freely
421*a67afe4dSAndroid Build Coastguard Worker# overwrite any of the functions or variables defined here before
422*a67afe4dSAndroid Build Coastguard Worker# calling anything to customize them.
423*a67afe4dSAndroid Build Coastguard Worker
424*a67afe4dSAndroid Build Coastguard WorkerEXIT_SUCCESS=0
425*a67afe4dSAndroid Build Coastguard WorkerEXIT_FAILURE=1
426*a67afe4dSAndroid Build Coastguard WorkerEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
427*a67afe4dSAndroid Build Coastguard WorkerEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
428*a67afe4dSAndroid Build Coastguard Worker
429*a67afe4dSAndroid Build Coastguard Worker# Allow overriding, eg assuming that you follow the convention of
430*a67afe4dSAndroid Build Coastguard Worker# putting '$debug_cmd' at the start of all your functions, you can get
431*a67afe4dSAndroid Build Coastguard Worker# bash to show function call trace with:
432*a67afe4dSAndroid Build Coastguard Worker#
433*a67afe4dSAndroid Build Coastguard Worker#    debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name
434*a67afe4dSAndroid Build Coastguard Workerdebug_cmd=${debug_cmd-":"}
435*a67afe4dSAndroid Build Coastguard Workerexit_cmd=:
436*a67afe4dSAndroid Build Coastguard Worker
437*a67afe4dSAndroid Build Coastguard Worker# By convention, finish your script with:
438*a67afe4dSAndroid Build Coastguard Worker#
439*a67afe4dSAndroid Build Coastguard Worker#    exit $exit_status
440*a67afe4dSAndroid Build Coastguard Worker#
441*a67afe4dSAndroid Build Coastguard Worker# so that you can set exit_status to non-zero if you want to indicate
442*a67afe4dSAndroid Build Coastguard Worker# something went wrong during execution without actually bailing out at
443*a67afe4dSAndroid Build Coastguard Worker# the point of failure.
444*a67afe4dSAndroid Build Coastguard Workerexit_status=$EXIT_SUCCESS
445*a67afe4dSAndroid Build Coastguard Worker
446*a67afe4dSAndroid Build Coastguard Worker# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
447*a67afe4dSAndroid Build Coastguard Worker# is ksh but when the shell is invoked as "sh" and the current value of
448*a67afe4dSAndroid Build Coastguard Worker# the _XPG environment variable is not equal to 1 (one), the special
449*a67afe4dSAndroid Build Coastguard Worker# positional parameter $0, within a function call, is the name of the
450*a67afe4dSAndroid Build Coastguard Worker# function.
451*a67afe4dSAndroid Build Coastguard Workerprogpath=$0
452*a67afe4dSAndroid Build Coastguard Worker
453*a67afe4dSAndroid Build Coastguard Worker# The name of this program.
454*a67afe4dSAndroid Build Coastguard Workerprogname=`$ECHO "$progpath" |$SED "$sed_basename"`
455*a67afe4dSAndroid Build Coastguard Worker
456*a67afe4dSAndroid Build Coastguard Worker# Make sure we have an absolute progpath for reexecution:
457*a67afe4dSAndroid Build Coastguard Workercase $progpath in
458*a67afe4dSAndroid Build Coastguard Worker  [\\/]*|[A-Za-z]:\\*) ;;
459*a67afe4dSAndroid Build Coastguard Worker  *[\\/]*)
460*a67afe4dSAndroid Build Coastguard Worker     progdir=`$ECHO "$progpath" |$SED "$sed_dirname"`
461*a67afe4dSAndroid Build Coastguard Worker     progdir=`cd "$progdir" && pwd`
462*a67afe4dSAndroid Build Coastguard Worker     progpath=$progdir/$progname
463*a67afe4dSAndroid Build Coastguard Worker     ;;
464*a67afe4dSAndroid Build Coastguard Worker  *)
465*a67afe4dSAndroid Build Coastguard Worker     _G_IFS=$IFS
466*a67afe4dSAndroid Build Coastguard Worker     IFS=${PATH_SEPARATOR-:}
467*a67afe4dSAndroid Build Coastguard Worker     for progdir in $PATH; do
468*a67afe4dSAndroid Build Coastguard Worker       IFS=$_G_IFS
469*a67afe4dSAndroid Build Coastguard Worker       test -x "$progdir/$progname" && break
470*a67afe4dSAndroid Build Coastguard Worker     done
471*a67afe4dSAndroid Build Coastguard Worker     IFS=$_G_IFS
472*a67afe4dSAndroid Build Coastguard Worker     test -n "$progdir" || progdir=`pwd`
473*a67afe4dSAndroid Build Coastguard Worker     progpath=$progdir/$progname
474*a67afe4dSAndroid Build Coastguard Worker     ;;
475*a67afe4dSAndroid Build Coastguard Workeresac
476*a67afe4dSAndroid Build Coastguard Worker
477*a67afe4dSAndroid Build Coastguard Worker
478*a67afe4dSAndroid Build Coastguard Worker## ----------------- ##
479*a67afe4dSAndroid Build Coastguard Worker## Standard options. ##
480*a67afe4dSAndroid Build Coastguard Worker## ----------------- ##
481*a67afe4dSAndroid Build Coastguard Worker
482*a67afe4dSAndroid Build Coastguard Worker# The following options affect the operation of the functions defined
483*a67afe4dSAndroid Build Coastguard Worker# below, and should be set appropriately depending on run-time para-
484*a67afe4dSAndroid Build Coastguard Worker# meters passed on the command line.
485*a67afe4dSAndroid Build Coastguard Worker
486*a67afe4dSAndroid Build Coastguard Workeropt_dry_run=false
487*a67afe4dSAndroid Build Coastguard Workeropt_quiet=false
488*a67afe4dSAndroid Build Coastguard Workeropt_verbose=false
489*a67afe4dSAndroid Build Coastguard Worker
490*a67afe4dSAndroid Build Coastguard Worker# Categories 'all' and 'none' are always available.  Append any others
491*a67afe4dSAndroid Build Coastguard Worker# you will pass as the first argument to func_warning from your own
492*a67afe4dSAndroid Build Coastguard Worker# code.
493*a67afe4dSAndroid Build Coastguard Workerwarning_categories=
494*a67afe4dSAndroid Build Coastguard Worker
495*a67afe4dSAndroid Build Coastguard Worker# By default, display warnings according to 'opt_warning_types'.  Set
496*a67afe4dSAndroid Build Coastguard Worker# 'warning_func'  to ':' to elide all warnings, or func_fatal_error to
497*a67afe4dSAndroid Build Coastguard Worker# treat the next displayed warning as a fatal error.
498*a67afe4dSAndroid Build Coastguard Workerwarning_func=func_warn_and_continue
499*a67afe4dSAndroid Build Coastguard Worker
500*a67afe4dSAndroid Build Coastguard Worker# Set to 'all' to display all warnings, 'none' to suppress all
501*a67afe4dSAndroid Build Coastguard Worker# warnings, or a space delimited list of some subset of
502*a67afe4dSAndroid Build Coastguard Worker# 'warning_categories' to display only the listed warnings.
503*a67afe4dSAndroid Build Coastguard Workeropt_warning_types=all
504*a67afe4dSAndroid Build Coastguard Worker
505*a67afe4dSAndroid Build Coastguard Worker
506*a67afe4dSAndroid Build Coastguard Worker## -------------------- ##
507*a67afe4dSAndroid Build Coastguard Worker## Resource management. ##
508*a67afe4dSAndroid Build Coastguard Worker## -------------------- ##
509*a67afe4dSAndroid Build Coastguard Worker
510*a67afe4dSAndroid Build Coastguard Worker# This section contains definitions for functions that each ensure a
511*a67afe4dSAndroid Build Coastguard Worker# particular resource (a file, or a non-empty configuration variable for
512*a67afe4dSAndroid Build Coastguard Worker# example) is available, and if appropriate to extract default values
513*a67afe4dSAndroid Build Coastguard Worker# from pertinent package files. Call them using their associated
514*a67afe4dSAndroid Build Coastguard Worker# 'require_*' variable to ensure that they are executed, at most, once.
515*a67afe4dSAndroid Build Coastguard Worker#
516*a67afe4dSAndroid Build Coastguard Worker# It's entirely deliberate that calling these functions can set
517*a67afe4dSAndroid Build Coastguard Worker# variables that don't obey the namespace limitations obeyed by the rest
518*a67afe4dSAndroid Build Coastguard Worker# of this file, in order that that they be as useful as possible to
519*a67afe4dSAndroid Build Coastguard Worker# callers.
520*a67afe4dSAndroid Build Coastguard Worker
521*a67afe4dSAndroid Build Coastguard Worker
522*a67afe4dSAndroid Build Coastguard Worker# require_term_colors
523*a67afe4dSAndroid Build Coastguard Worker# -------------------
524*a67afe4dSAndroid Build Coastguard Worker# Allow display of bold text on terminals that support it.
525*a67afe4dSAndroid Build Coastguard Workerrequire_term_colors=func_require_term_colors
526*a67afe4dSAndroid Build Coastguard Workerfunc_require_term_colors ()
527*a67afe4dSAndroid Build Coastguard Worker{
528*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
529*a67afe4dSAndroid Build Coastguard Worker
530*a67afe4dSAndroid Build Coastguard Worker    test -t 1 && {
531*a67afe4dSAndroid Build Coastguard Worker      # COLORTERM and USE_ANSI_COLORS environment variables take
532*a67afe4dSAndroid Build Coastguard Worker      # precedence, because most terminfo databases neglect to describe
533*a67afe4dSAndroid Build Coastguard Worker      # whether color sequences are supported.
534*a67afe4dSAndroid Build Coastguard Worker      test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"}
535*a67afe4dSAndroid Build Coastguard Worker
536*a67afe4dSAndroid Build Coastguard Worker      if test 1 = "$USE_ANSI_COLORS"; then
537*a67afe4dSAndroid Build Coastguard Worker        # Standard ANSI escape sequences
538*a67afe4dSAndroid Build Coastguard Worker        tc_reset=''
539*a67afe4dSAndroid Build Coastguard Worker        tc_bold='';   tc_standout=''
540*a67afe4dSAndroid Build Coastguard Worker        tc_red='';   tc_green=''
541*a67afe4dSAndroid Build Coastguard Worker        tc_blue='';  tc_cyan=''
542*a67afe4dSAndroid Build Coastguard Worker      else
543*a67afe4dSAndroid Build Coastguard Worker        # Otherwise trust the terminfo database after all.
544*a67afe4dSAndroid Build Coastguard Worker        test -n "`tput sgr0 2>/dev/null`" && {
545*a67afe4dSAndroid Build Coastguard Worker          tc_reset=`tput sgr0`
546*a67afe4dSAndroid Build Coastguard Worker          test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold`
547*a67afe4dSAndroid Build Coastguard Worker          tc_standout=$tc_bold
548*a67afe4dSAndroid Build Coastguard Worker          test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso`
549*a67afe4dSAndroid Build Coastguard Worker          test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1`
550*a67afe4dSAndroid Build Coastguard Worker          test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2`
551*a67afe4dSAndroid Build Coastguard Worker          test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4`
552*a67afe4dSAndroid Build Coastguard Worker          test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5`
553*a67afe4dSAndroid Build Coastguard Worker        }
554*a67afe4dSAndroid Build Coastguard Worker      fi
555*a67afe4dSAndroid Build Coastguard Worker    }
556*a67afe4dSAndroid Build Coastguard Worker
557*a67afe4dSAndroid Build Coastguard Worker    require_term_colors=:
558*a67afe4dSAndroid Build Coastguard Worker}
559*a67afe4dSAndroid Build Coastguard Worker
560*a67afe4dSAndroid Build Coastguard Worker
561*a67afe4dSAndroid Build Coastguard Worker## ----------------- ##
562*a67afe4dSAndroid Build Coastguard Worker## Function library. ##
563*a67afe4dSAndroid Build Coastguard Worker## ----------------- ##
564*a67afe4dSAndroid Build Coastguard Worker
565*a67afe4dSAndroid Build Coastguard Worker# This section contains a variety of useful functions to call in your
566*a67afe4dSAndroid Build Coastguard Worker# scripts. Take note of the portable wrappers for features provided by
567*a67afe4dSAndroid Build Coastguard Worker# some modern shells, which will fall back to slower equivalents on
568*a67afe4dSAndroid Build Coastguard Worker# less featureful shells.
569*a67afe4dSAndroid Build Coastguard Worker
570*a67afe4dSAndroid Build Coastguard Worker
571*a67afe4dSAndroid Build Coastguard Worker# func_append VAR VALUE
572*a67afe4dSAndroid Build Coastguard Worker# ---------------------
573*a67afe4dSAndroid Build Coastguard Worker# Append VALUE onto the existing contents of VAR.
574*a67afe4dSAndroid Build Coastguard Worker
575*a67afe4dSAndroid Build Coastguard Worker  # We should try to minimise forks, especially on Windows where they are
576*a67afe4dSAndroid Build Coastguard Worker  # unreasonably slow, so skip the feature probes when bash or zsh are
577*a67afe4dSAndroid Build Coastguard Worker  # being used:
578*a67afe4dSAndroid Build Coastguard Worker  if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
579*a67afe4dSAndroid Build Coastguard Worker    : ${_G_HAVE_ARITH_OP="yes"}
580*a67afe4dSAndroid Build Coastguard Worker    : ${_G_HAVE_XSI_OPS="yes"}
581*a67afe4dSAndroid Build Coastguard Worker    # The += operator was introduced in bash 3.1
582*a67afe4dSAndroid Build Coastguard Worker    case $BASH_VERSION in
583*a67afe4dSAndroid Build Coastguard Worker      [12].* | 3.0 | 3.0*) ;;
584*a67afe4dSAndroid Build Coastguard Worker      *)
585*a67afe4dSAndroid Build Coastguard Worker        : ${_G_HAVE_PLUSEQ_OP="yes"}
586*a67afe4dSAndroid Build Coastguard Worker        ;;
587*a67afe4dSAndroid Build Coastguard Worker    esac
588*a67afe4dSAndroid Build Coastguard Worker  fi
589*a67afe4dSAndroid Build Coastguard Worker
590*a67afe4dSAndroid Build Coastguard Worker  # _G_HAVE_PLUSEQ_OP
591*a67afe4dSAndroid Build Coastguard Worker  # Can be empty, in which case the shell is probed, "yes" if += is
592*a67afe4dSAndroid Build Coastguard Worker  # useable or anything else if it does not work.
593*a67afe4dSAndroid Build Coastguard Worker  test -z "$_G_HAVE_PLUSEQ_OP" \
594*a67afe4dSAndroid Build Coastguard Worker    && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \
595*a67afe4dSAndroid Build Coastguard Worker    && _G_HAVE_PLUSEQ_OP=yes
596*a67afe4dSAndroid Build Coastguard Worker
597*a67afe4dSAndroid Build Coastguard Workerif test yes = "$_G_HAVE_PLUSEQ_OP"
598*a67afe4dSAndroid Build Coastguard Workerthen
599*a67afe4dSAndroid Build Coastguard Worker  # This is an XSI compatible shell, allowing a faster implementation...
600*a67afe4dSAndroid Build Coastguard Worker  eval 'func_append ()
601*a67afe4dSAndroid Build Coastguard Worker  {
602*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
603*a67afe4dSAndroid Build Coastguard Worker
604*a67afe4dSAndroid Build Coastguard Worker    eval "$1+=\$2"
605*a67afe4dSAndroid Build Coastguard Worker  }'
606*a67afe4dSAndroid Build Coastguard Workerelse
607*a67afe4dSAndroid Build Coastguard Worker  # ...otherwise fall back to using expr, which is often a shell builtin.
608*a67afe4dSAndroid Build Coastguard Worker  func_append ()
609*a67afe4dSAndroid Build Coastguard Worker  {
610*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
611*a67afe4dSAndroid Build Coastguard Worker
612*a67afe4dSAndroid Build Coastguard Worker    eval "$1=\$$1\$2"
613*a67afe4dSAndroid Build Coastguard Worker  }
614*a67afe4dSAndroid Build Coastguard Workerfi
615*a67afe4dSAndroid Build Coastguard Worker
616*a67afe4dSAndroid Build Coastguard Worker
617*a67afe4dSAndroid Build Coastguard Worker# func_append_quoted VAR VALUE
618*a67afe4dSAndroid Build Coastguard Worker# ----------------------------
619*a67afe4dSAndroid Build Coastguard Worker# Quote VALUE and append to the end of shell variable VAR, separated
620*a67afe4dSAndroid Build Coastguard Worker# by a space.
621*a67afe4dSAndroid Build Coastguard Workerif test yes = "$_G_HAVE_PLUSEQ_OP"; then
622*a67afe4dSAndroid Build Coastguard Worker  eval 'func_append_quoted ()
623*a67afe4dSAndroid Build Coastguard Worker  {
624*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
625*a67afe4dSAndroid Build Coastguard Worker
626*a67afe4dSAndroid Build Coastguard Worker    func_quote_arg pretty "$2"
627*a67afe4dSAndroid Build Coastguard Worker    eval "$1+=\\ \$func_quote_arg_result"
628*a67afe4dSAndroid Build Coastguard Worker  }'
629*a67afe4dSAndroid Build Coastguard Workerelse
630*a67afe4dSAndroid Build Coastguard Worker  func_append_quoted ()
631*a67afe4dSAndroid Build Coastguard Worker  {
632*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
633*a67afe4dSAndroid Build Coastguard Worker
634*a67afe4dSAndroid Build Coastguard Worker    func_quote_arg pretty "$2"
635*a67afe4dSAndroid Build Coastguard Worker    eval "$1=\$$1\\ \$func_quote_arg_result"
636*a67afe4dSAndroid Build Coastguard Worker  }
637*a67afe4dSAndroid Build Coastguard Workerfi
638*a67afe4dSAndroid Build Coastguard Worker
639*a67afe4dSAndroid Build Coastguard Worker
640*a67afe4dSAndroid Build Coastguard Worker# func_append_uniq VAR VALUE
641*a67afe4dSAndroid Build Coastguard Worker# --------------------------
642*a67afe4dSAndroid Build Coastguard Worker# Append unique VALUE onto the existing contents of VAR, assuming
643*a67afe4dSAndroid Build Coastguard Worker# entries are delimited by the first character of VALUE.  For example:
644*a67afe4dSAndroid Build Coastguard Worker#
645*a67afe4dSAndroid Build Coastguard Worker#   func_append_uniq options " --another-option option-argument"
646*a67afe4dSAndroid Build Coastguard Worker#
647*a67afe4dSAndroid Build Coastguard Worker# will only append to $options if " --another-option option-argument "
648*a67afe4dSAndroid Build Coastguard Worker# is not already present somewhere in $options already (note spaces at
649*a67afe4dSAndroid Build Coastguard Worker# each end implied by leading space in second argument).
650*a67afe4dSAndroid Build Coastguard Workerfunc_append_uniq ()
651*a67afe4dSAndroid Build Coastguard Worker{
652*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
653*a67afe4dSAndroid Build Coastguard Worker
654*a67afe4dSAndroid Build Coastguard Worker    eval _G_current_value='`$ECHO $'$1'`'
655*a67afe4dSAndroid Build Coastguard Worker    _G_delim=`expr "$2" : '\(.\)'`
656*a67afe4dSAndroid Build Coastguard Worker
657*a67afe4dSAndroid Build Coastguard Worker    case $_G_delim$_G_current_value$_G_delim in
658*a67afe4dSAndroid Build Coastguard Worker      *"$2$_G_delim"*) ;;
659*a67afe4dSAndroid Build Coastguard Worker      *) func_append "$@" ;;
660*a67afe4dSAndroid Build Coastguard Worker    esac
661*a67afe4dSAndroid Build Coastguard Worker}
662*a67afe4dSAndroid Build Coastguard Worker
663*a67afe4dSAndroid Build Coastguard Worker
664*a67afe4dSAndroid Build Coastguard Worker# func_arith TERM...
665*a67afe4dSAndroid Build Coastguard Worker# ------------------
666*a67afe4dSAndroid Build Coastguard Worker# Set func_arith_result to the result of evaluating TERMs.
667*a67afe4dSAndroid Build Coastguard Worker  test -z "$_G_HAVE_ARITH_OP" \
668*a67afe4dSAndroid Build Coastguard Worker    && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \
669*a67afe4dSAndroid Build Coastguard Worker    && _G_HAVE_ARITH_OP=yes
670*a67afe4dSAndroid Build Coastguard Worker
671*a67afe4dSAndroid Build Coastguard Workerif test yes = "$_G_HAVE_ARITH_OP"; then
672*a67afe4dSAndroid Build Coastguard Worker  eval 'func_arith ()
673*a67afe4dSAndroid Build Coastguard Worker  {
674*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
675*a67afe4dSAndroid Build Coastguard Worker
676*a67afe4dSAndroid Build Coastguard Worker    func_arith_result=$(( $* ))
677*a67afe4dSAndroid Build Coastguard Worker  }'
678*a67afe4dSAndroid Build Coastguard Workerelse
679*a67afe4dSAndroid Build Coastguard Worker  func_arith ()
680*a67afe4dSAndroid Build Coastguard Worker  {
681*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
682*a67afe4dSAndroid Build Coastguard Worker
683*a67afe4dSAndroid Build Coastguard Worker    func_arith_result=`expr "$@"`
684*a67afe4dSAndroid Build Coastguard Worker  }
685*a67afe4dSAndroid Build Coastguard Workerfi
686*a67afe4dSAndroid Build Coastguard Worker
687*a67afe4dSAndroid Build Coastguard Worker
688*a67afe4dSAndroid Build Coastguard Worker# func_basename FILE
689*a67afe4dSAndroid Build Coastguard Worker# ------------------
690*a67afe4dSAndroid Build Coastguard Worker# Set func_basename_result to FILE with everything up to and including
691*a67afe4dSAndroid Build Coastguard Worker# the last / stripped.
692*a67afe4dSAndroid Build Coastguard Workerif test yes = "$_G_HAVE_XSI_OPS"; then
693*a67afe4dSAndroid Build Coastguard Worker  # If this shell supports suffix pattern removal, then use it to avoid
694*a67afe4dSAndroid Build Coastguard Worker  # forking. Hide the definitions single quotes in case the shell chokes
695*a67afe4dSAndroid Build Coastguard Worker  # on unsupported syntax...
696*a67afe4dSAndroid Build Coastguard Worker  _b='func_basename_result=${1##*/}'
697*a67afe4dSAndroid Build Coastguard Worker  _d='case $1 in
698*a67afe4dSAndroid Build Coastguard Worker        */*) func_dirname_result=${1%/*}$2 ;;
699*a67afe4dSAndroid Build Coastguard Worker        *  ) func_dirname_result=$3        ;;
700*a67afe4dSAndroid Build Coastguard Worker      esac'
701*a67afe4dSAndroid Build Coastguard Worker
702*a67afe4dSAndroid Build Coastguard Workerelse
703*a67afe4dSAndroid Build Coastguard Worker  # ...otherwise fall back to using sed.
704*a67afe4dSAndroid Build Coastguard Worker  _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`'
705*a67afe4dSAndroid Build Coastguard Worker  _d='func_dirname_result=`$ECHO "$1"  |$SED "$sed_dirname"`
706*a67afe4dSAndroid Build Coastguard Worker      if test "X$func_dirname_result" = "X$1"; then
707*a67afe4dSAndroid Build Coastguard Worker        func_dirname_result=$3
708*a67afe4dSAndroid Build Coastguard Worker      else
709*a67afe4dSAndroid Build Coastguard Worker        func_append func_dirname_result "$2"
710*a67afe4dSAndroid Build Coastguard Worker      fi'
711*a67afe4dSAndroid Build Coastguard Workerfi
712*a67afe4dSAndroid Build Coastguard Worker
713*a67afe4dSAndroid Build Coastguard Workereval 'func_basename ()
714*a67afe4dSAndroid Build Coastguard Worker{
715*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
716*a67afe4dSAndroid Build Coastguard Worker
717*a67afe4dSAndroid Build Coastguard Worker    '"$_b"'
718*a67afe4dSAndroid Build Coastguard Worker}'
719*a67afe4dSAndroid Build Coastguard Worker
720*a67afe4dSAndroid Build Coastguard Worker
721*a67afe4dSAndroid Build Coastguard Worker# func_dirname FILE APPEND NONDIR_REPLACEMENT
722*a67afe4dSAndroid Build Coastguard Worker# -------------------------------------------
723*a67afe4dSAndroid Build Coastguard Worker# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
724*a67afe4dSAndroid Build Coastguard Worker# otherwise set result to NONDIR_REPLACEMENT.
725*a67afe4dSAndroid Build Coastguard Workereval 'func_dirname ()
726*a67afe4dSAndroid Build Coastguard Worker{
727*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
728*a67afe4dSAndroid Build Coastguard Worker
729*a67afe4dSAndroid Build Coastguard Worker    '"$_d"'
730*a67afe4dSAndroid Build Coastguard Worker}'
731*a67afe4dSAndroid Build Coastguard Worker
732*a67afe4dSAndroid Build Coastguard Worker
733*a67afe4dSAndroid Build Coastguard Worker# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT
734*a67afe4dSAndroid Build Coastguard Worker# --------------------------------------------------------
735*a67afe4dSAndroid Build Coastguard Worker# Perform func_basename and func_dirname in a single function
736*a67afe4dSAndroid Build Coastguard Worker# call:
737*a67afe4dSAndroid Build Coastguard Worker#   dirname:  Compute the dirname of FILE.  If nonempty,
738*a67afe4dSAndroid Build Coastguard Worker#             add APPEND to the result, otherwise set result
739*a67afe4dSAndroid Build Coastguard Worker#             to NONDIR_REPLACEMENT.
740*a67afe4dSAndroid Build Coastguard Worker#             value returned in "$func_dirname_result"
741*a67afe4dSAndroid Build Coastguard Worker#   basename: Compute filename of FILE.
742*a67afe4dSAndroid Build Coastguard Worker#             value retuned in "$func_basename_result"
743*a67afe4dSAndroid Build Coastguard Worker# For efficiency, we do not delegate to the functions above but instead
744*a67afe4dSAndroid Build Coastguard Worker# duplicate the functionality here.
745*a67afe4dSAndroid Build Coastguard Workereval 'func_dirname_and_basename ()
746*a67afe4dSAndroid Build Coastguard Worker{
747*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
748*a67afe4dSAndroid Build Coastguard Worker
749*a67afe4dSAndroid Build Coastguard Worker    '"$_b"'
750*a67afe4dSAndroid Build Coastguard Worker    '"$_d"'
751*a67afe4dSAndroid Build Coastguard Worker}'
752*a67afe4dSAndroid Build Coastguard Worker
753*a67afe4dSAndroid Build Coastguard Worker
754*a67afe4dSAndroid Build Coastguard Worker# func_echo ARG...
755*a67afe4dSAndroid Build Coastguard Worker# ----------------
756*a67afe4dSAndroid Build Coastguard Worker# Echo program name prefixed message.
757*a67afe4dSAndroid Build Coastguard Workerfunc_echo ()
758*a67afe4dSAndroid Build Coastguard Worker{
759*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
760*a67afe4dSAndroid Build Coastguard Worker
761*a67afe4dSAndroid Build Coastguard Worker    _G_message=$*
762*a67afe4dSAndroid Build Coastguard Worker
763*a67afe4dSAndroid Build Coastguard Worker    func_echo_IFS=$IFS
764*a67afe4dSAndroid Build Coastguard Worker    IFS=$nl
765*a67afe4dSAndroid Build Coastguard Worker    for _G_line in $_G_message; do
766*a67afe4dSAndroid Build Coastguard Worker      IFS=$func_echo_IFS
767*a67afe4dSAndroid Build Coastguard Worker      $ECHO "$progname: $_G_line"
768*a67afe4dSAndroid Build Coastguard Worker    done
769*a67afe4dSAndroid Build Coastguard Worker    IFS=$func_echo_IFS
770*a67afe4dSAndroid Build Coastguard Worker}
771*a67afe4dSAndroid Build Coastguard Worker
772*a67afe4dSAndroid Build Coastguard Worker
773*a67afe4dSAndroid Build Coastguard Worker# func_echo_all ARG...
774*a67afe4dSAndroid Build Coastguard Worker# --------------------
775*a67afe4dSAndroid Build Coastguard Worker# Invoke $ECHO with all args, space-separated.
776*a67afe4dSAndroid Build Coastguard Workerfunc_echo_all ()
777*a67afe4dSAndroid Build Coastguard Worker{
778*a67afe4dSAndroid Build Coastguard Worker    $ECHO "$*"
779*a67afe4dSAndroid Build Coastguard Worker}
780*a67afe4dSAndroid Build Coastguard Worker
781*a67afe4dSAndroid Build Coastguard Worker
782*a67afe4dSAndroid Build Coastguard Worker# func_echo_infix_1 INFIX ARG...
783*a67afe4dSAndroid Build Coastguard Worker# ------------------------------
784*a67afe4dSAndroid Build Coastguard Worker# Echo program name, followed by INFIX on the first line, with any
785*a67afe4dSAndroid Build Coastguard Worker# additional lines not showing INFIX.
786*a67afe4dSAndroid Build Coastguard Workerfunc_echo_infix_1 ()
787*a67afe4dSAndroid Build Coastguard Worker{
788*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
789*a67afe4dSAndroid Build Coastguard Worker
790*a67afe4dSAndroid Build Coastguard Worker    $require_term_colors
791*a67afe4dSAndroid Build Coastguard Worker
792*a67afe4dSAndroid Build Coastguard Worker    _G_infix=$1; shift
793*a67afe4dSAndroid Build Coastguard Worker    _G_indent=$_G_infix
794*a67afe4dSAndroid Build Coastguard Worker    _G_prefix="$progname: $_G_infix: "
795*a67afe4dSAndroid Build Coastguard Worker    _G_message=$*
796*a67afe4dSAndroid Build Coastguard Worker
797*a67afe4dSAndroid Build Coastguard Worker    # Strip color escape sequences before counting printable length
798*a67afe4dSAndroid Build Coastguard Worker    for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan"
799*a67afe4dSAndroid Build Coastguard Worker    do
800*a67afe4dSAndroid Build Coastguard Worker      test -n "$_G_tc" && {
801*a67afe4dSAndroid Build Coastguard Worker        _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"`
802*a67afe4dSAndroid Build Coastguard Worker        _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"`
803*a67afe4dSAndroid Build Coastguard Worker      }
804*a67afe4dSAndroid Build Coastguard Worker    done
805*a67afe4dSAndroid Build Coastguard Worker    _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`"  " ## exclude from sc_prohibit_nested_quotes
806*a67afe4dSAndroid Build Coastguard Worker
807*a67afe4dSAndroid Build Coastguard Worker    func_echo_infix_1_IFS=$IFS
808*a67afe4dSAndroid Build Coastguard Worker    IFS=$nl
809*a67afe4dSAndroid Build Coastguard Worker    for _G_line in $_G_message; do
810*a67afe4dSAndroid Build Coastguard Worker      IFS=$func_echo_infix_1_IFS
811*a67afe4dSAndroid Build Coastguard Worker      $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2
812*a67afe4dSAndroid Build Coastguard Worker      _G_prefix=$_G_indent
813*a67afe4dSAndroid Build Coastguard Worker    done
814*a67afe4dSAndroid Build Coastguard Worker    IFS=$func_echo_infix_1_IFS
815*a67afe4dSAndroid Build Coastguard Worker}
816*a67afe4dSAndroid Build Coastguard Worker
817*a67afe4dSAndroid Build Coastguard Worker
818*a67afe4dSAndroid Build Coastguard Worker# func_error ARG...
819*a67afe4dSAndroid Build Coastguard Worker# -----------------
820*a67afe4dSAndroid Build Coastguard Worker# Echo program name prefixed message to standard error.
821*a67afe4dSAndroid Build Coastguard Workerfunc_error ()
822*a67afe4dSAndroid Build Coastguard Worker{
823*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
824*a67afe4dSAndroid Build Coastguard Worker
825*a67afe4dSAndroid Build Coastguard Worker    $require_term_colors
826*a67afe4dSAndroid Build Coastguard Worker
827*a67afe4dSAndroid Build Coastguard Worker    func_echo_infix_1 "  $tc_standout${tc_red}error$tc_reset" "$*" >&2
828*a67afe4dSAndroid Build Coastguard Worker}
829*a67afe4dSAndroid Build Coastguard Worker
830*a67afe4dSAndroid Build Coastguard Worker
831*a67afe4dSAndroid Build Coastguard Worker# func_fatal_error ARG...
832*a67afe4dSAndroid Build Coastguard Worker# -----------------------
833*a67afe4dSAndroid Build Coastguard Worker# Echo program name prefixed message to standard error, and exit.
834*a67afe4dSAndroid Build Coastguard Workerfunc_fatal_error ()
835*a67afe4dSAndroid Build Coastguard Worker{
836*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
837*a67afe4dSAndroid Build Coastguard Worker
838*a67afe4dSAndroid Build Coastguard Worker    func_error "$*"
839*a67afe4dSAndroid Build Coastguard Worker    exit $EXIT_FAILURE
840*a67afe4dSAndroid Build Coastguard Worker}
841*a67afe4dSAndroid Build Coastguard Worker
842*a67afe4dSAndroid Build Coastguard Worker
843*a67afe4dSAndroid Build Coastguard Worker# func_grep EXPRESSION FILENAME
844*a67afe4dSAndroid Build Coastguard Worker# -----------------------------
845*a67afe4dSAndroid Build Coastguard Worker# Check whether EXPRESSION matches any line of FILENAME, without output.
846*a67afe4dSAndroid Build Coastguard Workerfunc_grep ()
847*a67afe4dSAndroid Build Coastguard Worker{
848*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
849*a67afe4dSAndroid Build Coastguard Worker
850*a67afe4dSAndroid Build Coastguard Worker    $GREP "$1" "$2" >/dev/null 2>&1
851*a67afe4dSAndroid Build Coastguard Worker}
852*a67afe4dSAndroid Build Coastguard Worker
853*a67afe4dSAndroid Build Coastguard Worker
854*a67afe4dSAndroid Build Coastguard Worker# func_len STRING
855*a67afe4dSAndroid Build Coastguard Worker# ---------------
856*a67afe4dSAndroid Build Coastguard Worker# Set func_len_result to the length of STRING. STRING may not
857*a67afe4dSAndroid Build Coastguard Worker# start with a hyphen.
858*a67afe4dSAndroid Build Coastguard Worker  test -z "$_G_HAVE_XSI_OPS" \
859*a67afe4dSAndroid Build Coastguard Worker    && (eval 'x=a/b/c;
860*a67afe4dSAndroid Build Coastguard Worker      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
861*a67afe4dSAndroid Build Coastguard Worker    && _G_HAVE_XSI_OPS=yes
862*a67afe4dSAndroid Build Coastguard Worker
863*a67afe4dSAndroid Build Coastguard Workerif test yes = "$_G_HAVE_XSI_OPS"; then
864*a67afe4dSAndroid Build Coastguard Worker  eval 'func_len ()
865*a67afe4dSAndroid Build Coastguard Worker  {
866*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
867*a67afe4dSAndroid Build Coastguard Worker
868*a67afe4dSAndroid Build Coastguard Worker    func_len_result=${#1}
869*a67afe4dSAndroid Build Coastguard Worker  }'
870*a67afe4dSAndroid Build Coastguard Workerelse
871*a67afe4dSAndroid Build Coastguard Worker  func_len ()
872*a67afe4dSAndroid Build Coastguard Worker  {
873*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
874*a67afe4dSAndroid Build Coastguard Worker
875*a67afe4dSAndroid Build Coastguard Worker    func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
876*a67afe4dSAndroid Build Coastguard Worker  }
877*a67afe4dSAndroid Build Coastguard Workerfi
878*a67afe4dSAndroid Build Coastguard Worker
879*a67afe4dSAndroid Build Coastguard Worker
880*a67afe4dSAndroid Build Coastguard Worker# func_mkdir_p DIRECTORY-PATH
881*a67afe4dSAndroid Build Coastguard Worker# ---------------------------
882*a67afe4dSAndroid Build Coastguard Worker# Make sure the entire path to DIRECTORY-PATH is available.
883*a67afe4dSAndroid Build Coastguard Workerfunc_mkdir_p ()
884*a67afe4dSAndroid Build Coastguard Worker{
885*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
886*a67afe4dSAndroid Build Coastguard Worker
887*a67afe4dSAndroid Build Coastguard Worker    _G_directory_path=$1
888*a67afe4dSAndroid Build Coastguard Worker    _G_dir_list=
889*a67afe4dSAndroid Build Coastguard Worker
890*a67afe4dSAndroid Build Coastguard Worker    if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then
891*a67afe4dSAndroid Build Coastguard Worker
892*a67afe4dSAndroid Build Coastguard Worker      # Protect directory names starting with '-'
893*a67afe4dSAndroid Build Coastguard Worker      case $_G_directory_path in
894*a67afe4dSAndroid Build Coastguard Worker        -*) _G_directory_path=./$_G_directory_path ;;
895*a67afe4dSAndroid Build Coastguard Worker      esac
896*a67afe4dSAndroid Build Coastguard Worker
897*a67afe4dSAndroid Build Coastguard Worker      # While some portion of DIR does not yet exist...
898*a67afe4dSAndroid Build Coastguard Worker      while test ! -d "$_G_directory_path"; do
899*a67afe4dSAndroid Build Coastguard Worker        # ...make a list in topmost first order.  Use a colon delimited
900*a67afe4dSAndroid Build Coastguard Worker	# list incase some portion of path contains whitespace.
901*a67afe4dSAndroid Build Coastguard Worker        _G_dir_list=$_G_directory_path:$_G_dir_list
902*a67afe4dSAndroid Build Coastguard Worker
903*a67afe4dSAndroid Build Coastguard Worker        # If the last portion added has no slash in it, the list is done
904*a67afe4dSAndroid Build Coastguard Worker        case $_G_directory_path in */*) ;; *) break ;; esac
905*a67afe4dSAndroid Build Coastguard Worker
906*a67afe4dSAndroid Build Coastguard Worker        # ...otherwise throw away the child directory and loop
907*a67afe4dSAndroid Build Coastguard Worker        _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"`
908*a67afe4dSAndroid Build Coastguard Worker      done
909*a67afe4dSAndroid Build Coastguard Worker      _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'`
910*a67afe4dSAndroid Build Coastguard Worker
911*a67afe4dSAndroid Build Coastguard Worker      func_mkdir_p_IFS=$IFS; IFS=:
912*a67afe4dSAndroid Build Coastguard Worker      for _G_dir in $_G_dir_list; do
913*a67afe4dSAndroid Build Coastguard Worker	IFS=$func_mkdir_p_IFS
914*a67afe4dSAndroid Build Coastguard Worker        # mkdir can fail with a 'File exist' error if two processes
915*a67afe4dSAndroid Build Coastguard Worker        # try to create one of the directories concurrently.  Don't
916*a67afe4dSAndroid Build Coastguard Worker        # stop in that case!
917*a67afe4dSAndroid Build Coastguard Worker        $MKDIR "$_G_dir" 2>/dev/null || :
918*a67afe4dSAndroid Build Coastguard Worker      done
919*a67afe4dSAndroid Build Coastguard Worker      IFS=$func_mkdir_p_IFS
920*a67afe4dSAndroid Build Coastguard Worker
921*a67afe4dSAndroid Build Coastguard Worker      # Bail out if we (or some other process) failed to create a directory.
922*a67afe4dSAndroid Build Coastguard Worker      test -d "$_G_directory_path" || \
923*a67afe4dSAndroid Build Coastguard Worker        func_fatal_error "Failed to create '$1'"
924*a67afe4dSAndroid Build Coastguard Worker    fi
925*a67afe4dSAndroid Build Coastguard Worker}
926*a67afe4dSAndroid Build Coastguard Worker
927*a67afe4dSAndroid Build Coastguard Worker
928*a67afe4dSAndroid Build Coastguard Worker# func_mktempdir [BASENAME]
929*a67afe4dSAndroid Build Coastguard Worker# -------------------------
930*a67afe4dSAndroid Build Coastguard Worker# Make a temporary directory that won't clash with other running
931*a67afe4dSAndroid Build Coastguard Worker# libtool processes, and avoids race conditions if possible.  If
932*a67afe4dSAndroid Build Coastguard Worker# given, BASENAME is the basename for that directory.
933*a67afe4dSAndroid Build Coastguard Workerfunc_mktempdir ()
934*a67afe4dSAndroid Build Coastguard Worker{
935*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
936*a67afe4dSAndroid Build Coastguard Worker
937*a67afe4dSAndroid Build Coastguard Worker    _G_template=${TMPDIR-/tmp}/${1-$progname}
938*a67afe4dSAndroid Build Coastguard Worker
939*a67afe4dSAndroid Build Coastguard Worker    if test : = "$opt_dry_run"; then
940*a67afe4dSAndroid Build Coastguard Worker      # Return a directory name, but don't create it in dry-run mode
941*a67afe4dSAndroid Build Coastguard Worker      _G_tmpdir=$_G_template-$$
942*a67afe4dSAndroid Build Coastguard Worker    else
943*a67afe4dSAndroid Build Coastguard Worker
944*a67afe4dSAndroid Build Coastguard Worker      # If mktemp works, use that first and foremost
945*a67afe4dSAndroid Build Coastguard Worker      _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null`
946*a67afe4dSAndroid Build Coastguard Worker
947*a67afe4dSAndroid Build Coastguard Worker      if test ! -d "$_G_tmpdir"; then
948*a67afe4dSAndroid Build Coastguard Worker        # Failing that, at least try and use $RANDOM to avoid a race
949*a67afe4dSAndroid Build Coastguard Worker        _G_tmpdir=$_G_template-${RANDOM-0}$$
950*a67afe4dSAndroid Build Coastguard Worker
951*a67afe4dSAndroid Build Coastguard Worker        func_mktempdir_umask=`umask`
952*a67afe4dSAndroid Build Coastguard Worker        umask 0077
953*a67afe4dSAndroid Build Coastguard Worker        $MKDIR "$_G_tmpdir"
954*a67afe4dSAndroid Build Coastguard Worker        umask $func_mktempdir_umask
955*a67afe4dSAndroid Build Coastguard Worker      fi
956*a67afe4dSAndroid Build Coastguard Worker
957*a67afe4dSAndroid Build Coastguard Worker      # If we're not in dry-run mode, bomb out on failure
958*a67afe4dSAndroid Build Coastguard Worker      test -d "$_G_tmpdir" || \
959*a67afe4dSAndroid Build Coastguard Worker        func_fatal_error "cannot create temporary directory '$_G_tmpdir'"
960*a67afe4dSAndroid Build Coastguard Worker    fi
961*a67afe4dSAndroid Build Coastguard Worker
962*a67afe4dSAndroid Build Coastguard Worker    $ECHO "$_G_tmpdir"
963*a67afe4dSAndroid Build Coastguard Worker}
964*a67afe4dSAndroid Build Coastguard Worker
965*a67afe4dSAndroid Build Coastguard Worker
966*a67afe4dSAndroid Build Coastguard Worker# func_normal_abspath PATH
967*a67afe4dSAndroid Build Coastguard Worker# ------------------------
968*a67afe4dSAndroid Build Coastguard Worker# Remove doubled-up and trailing slashes, "." path components,
969*a67afe4dSAndroid Build Coastguard Worker# and cancel out any ".." path components in PATH after making
970*a67afe4dSAndroid Build Coastguard Worker# it an absolute path.
971*a67afe4dSAndroid Build Coastguard Workerfunc_normal_abspath ()
972*a67afe4dSAndroid Build Coastguard Worker{
973*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
974*a67afe4dSAndroid Build Coastguard Worker
975*a67afe4dSAndroid Build Coastguard Worker    # These SED scripts presuppose an absolute path with a trailing slash.
976*a67afe4dSAndroid Build Coastguard Worker    _G_pathcar='s|^/\([^/]*\).*$|\1|'
977*a67afe4dSAndroid Build Coastguard Worker    _G_pathcdr='s|^/[^/]*||'
978*a67afe4dSAndroid Build Coastguard Worker    _G_removedotparts=':dotsl
979*a67afe4dSAndroid Build Coastguard Worker		s|/\./|/|g
980*a67afe4dSAndroid Build Coastguard Worker		t dotsl
981*a67afe4dSAndroid Build Coastguard Worker		s|/\.$|/|'
982*a67afe4dSAndroid Build Coastguard Worker    _G_collapseslashes='s|/\{1,\}|/|g'
983*a67afe4dSAndroid Build Coastguard Worker    _G_finalslash='s|/*$|/|'
984*a67afe4dSAndroid Build Coastguard Worker
985*a67afe4dSAndroid Build Coastguard Worker    # Start from root dir and reassemble the path.
986*a67afe4dSAndroid Build Coastguard Worker    func_normal_abspath_result=
987*a67afe4dSAndroid Build Coastguard Worker    func_normal_abspath_tpath=$1
988*a67afe4dSAndroid Build Coastguard Worker    func_normal_abspath_altnamespace=
989*a67afe4dSAndroid Build Coastguard Worker    case $func_normal_abspath_tpath in
990*a67afe4dSAndroid Build Coastguard Worker      "")
991*a67afe4dSAndroid Build Coastguard Worker        # Empty path, that just means $cwd.
992*a67afe4dSAndroid Build Coastguard Worker        func_stripname '' '/' "`pwd`"
993*a67afe4dSAndroid Build Coastguard Worker        func_normal_abspath_result=$func_stripname_result
994*a67afe4dSAndroid Build Coastguard Worker        return
995*a67afe4dSAndroid Build Coastguard Worker        ;;
996*a67afe4dSAndroid Build Coastguard Worker      # The next three entries are used to spot a run of precisely
997*a67afe4dSAndroid Build Coastguard Worker      # two leading slashes without using negated character classes;
998*a67afe4dSAndroid Build Coastguard Worker      # we take advantage of case's first-match behaviour.
999*a67afe4dSAndroid Build Coastguard Worker      ///*)
1000*a67afe4dSAndroid Build Coastguard Worker        # Unusual form of absolute path, do nothing.
1001*a67afe4dSAndroid Build Coastguard Worker        ;;
1002*a67afe4dSAndroid Build Coastguard Worker      //*)
1003*a67afe4dSAndroid Build Coastguard Worker        # Not necessarily an ordinary path; POSIX reserves leading '//'
1004*a67afe4dSAndroid Build Coastguard Worker        # and for example Cygwin uses it to access remote file shares
1005*a67afe4dSAndroid Build Coastguard Worker        # over CIFS/SMB, so we conserve a leading double slash if found.
1006*a67afe4dSAndroid Build Coastguard Worker        func_normal_abspath_altnamespace=/
1007*a67afe4dSAndroid Build Coastguard Worker        ;;
1008*a67afe4dSAndroid Build Coastguard Worker      /*)
1009*a67afe4dSAndroid Build Coastguard Worker        # Absolute path, do nothing.
1010*a67afe4dSAndroid Build Coastguard Worker        ;;
1011*a67afe4dSAndroid Build Coastguard Worker      *)
1012*a67afe4dSAndroid Build Coastguard Worker        # Relative path, prepend $cwd.
1013*a67afe4dSAndroid Build Coastguard Worker        func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
1014*a67afe4dSAndroid Build Coastguard Worker        ;;
1015*a67afe4dSAndroid Build Coastguard Worker    esac
1016*a67afe4dSAndroid Build Coastguard Worker
1017*a67afe4dSAndroid Build Coastguard Worker    # Cancel out all the simple stuff to save iterations.  We also want
1018*a67afe4dSAndroid Build Coastguard Worker    # the path to end with a slash for ease of parsing, so make sure
1019*a67afe4dSAndroid Build Coastguard Worker    # there is one (and only one) here.
1020*a67afe4dSAndroid Build Coastguard Worker    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
1021*a67afe4dSAndroid Build Coastguard Worker          -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"`
1022*a67afe4dSAndroid Build Coastguard Worker    while :; do
1023*a67afe4dSAndroid Build Coastguard Worker      # Processed it all yet?
1024*a67afe4dSAndroid Build Coastguard Worker      if test / = "$func_normal_abspath_tpath"; then
1025*a67afe4dSAndroid Build Coastguard Worker        # If we ascended to the root using ".." the result may be empty now.
1026*a67afe4dSAndroid Build Coastguard Worker        if test -z "$func_normal_abspath_result"; then
1027*a67afe4dSAndroid Build Coastguard Worker          func_normal_abspath_result=/
1028*a67afe4dSAndroid Build Coastguard Worker        fi
1029*a67afe4dSAndroid Build Coastguard Worker        break
1030*a67afe4dSAndroid Build Coastguard Worker      fi
1031*a67afe4dSAndroid Build Coastguard Worker      func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
1032*a67afe4dSAndroid Build Coastguard Worker          -e "$_G_pathcar"`
1033*a67afe4dSAndroid Build Coastguard Worker      func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
1034*a67afe4dSAndroid Build Coastguard Worker          -e "$_G_pathcdr"`
1035*a67afe4dSAndroid Build Coastguard Worker      # Figure out what to do with it
1036*a67afe4dSAndroid Build Coastguard Worker      case $func_normal_abspath_tcomponent in
1037*a67afe4dSAndroid Build Coastguard Worker        "")
1038*a67afe4dSAndroid Build Coastguard Worker          # Trailing empty path component, ignore it.
1039*a67afe4dSAndroid Build Coastguard Worker          ;;
1040*a67afe4dSAndroid Build Coastguard Worker        ..)
1041*a67afe4dSAndroid Build Coastguard Worker          # Parent dir; strip last assembled component from result.
1042*a67afe4dSAndroid Build Coastguard Worker          func_dirname "$func_normal_abspath_result"
1043*a67afe4dSAndroid Build Coastguard Worker          func_normal_abspath_result=$func_dirname_result
1044*a67afe4dSAndroid Build Coastguard Worker          ;;
1045*a67afe4dSAndroid Build Coastguard Worker        *)
1046*a67afe4dSAndroid Build Coastguard Worker          # Actual path component, append it.
1047*a67afe4dSAndroid Build Coastguard Worker          func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent"
1048*a67afe4dSAndroid Build Coastguard Worker          ;;
1049*a67afe4dSAndroid Build Coastguard Worker      esac
1050*a67afe4dSAndroid Build Coastguard Worker    done
1051*a67afe4dSAndroid Build Coastguard Worker    # Restore leading double-slash if one was found on entry.
1052*a67afe4dSAndroid Build Coastguard Worker    func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
1053*a67afe4dSAndroid Build Coastguard Worker}
1054*a67afe4dSAndroid Build Coastguard Worker
1055*a67afe4dSAndroid Build Coastguard Worker
1056*a67afe4dSAndroid Build Coastguard Worker# func_notquiet ARG...
1057*a67afe4dSAndroid Build Coastguard Worker# --------------------
1058*a67afe4dSAndroid Build Coastguard Worker# Echo program name prefixed message only when not in quiet mode.
1059*a67afe4dSAndroid Build Coastguard Workerfunc_notquiet ()
1060*a67afe4dSAndroid Build Coastguard Worker{
1061*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1062*a67afe4dSAndroid Build Coastguard Worker
1063*a67afe4dSAndroid Build Coastguard Worker    $opt_quiet || func_echo ${1+"$@"}
1064*a67afe4dSAndroid Build Coastguard Worker
1065*a67afe4dSAndroid Build Coastguard Worker    # A bug in bash halts the script if the last line of a function
1066*a67afe4dSAndroid Build Coastguard Worker    # fails when set -e is in force, so we need another command to
1067*a67afe4dSAndroid Build Coastguard Worker    # work around that:
1068*a67afe4dSAndroid Build Coastguard Worker    :
1069*a67afe4dSAndroid Build Coastguard Worker}
1070*a67afe4dSAndroid Build Coastguard Worker
1071*a67afe4dSAndroid Build Coastguard Worker
1072*a67afe4dSAndroid Build Coastguard Worker# func_relative_path SRCDIR DSTDIR
1073*a67afe4dSAndroid Build Coastguard Worker# --------------------------------
1074*a67afe4dSAndroid Build Coastguard Worker# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR.
1075*a67afe4dSAndroid Build Coastguard Workerfunc_relative_path ()
1076*a67afe4dSAndroid Build Coastguard Worker{
1077*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1078*a67afe4dSAndroid Build Coastguard Worker
1079*a67afe4dSAndroid Build Coastguard Worker    func_relative_path_result=
1080*a67afe4dSAndroid Build Coastguard Worker    func_normal_abspath "$1"
1081*a67afe4dSAndroid Build Coastguard Worker    func_relative_path_tlibdir=$func_normal_abspath_result
1082*a67afe4dSAndroid Build Coastguard Worker    func_normal_abspath "$2"
1083*a67afe4dSAndroid Build Coastguard Worker    func_relative_path_tbindir=$func_normal_abspath_result
1084*a67afe4dSAndroid Build Coastguard Worker
1085*a67afe4dSAndroid Build Coastguard Worker    # Ascend the tree starting from libdir
1086*a67afe4dSAndroid Build Coastguard Worker    while :; do
1087*a67afe4dSAndroid Build Coastguard Worker      # check if we have found a prefix of bindir
1088*a67afe4dSAndroid Build Coastguard Worker      case $func_relative_path_tbindir in
1089*a67afe4dSAndroid Build Coastguard Worker        $func_relative_path_tlibdir)
1090*a67afe4dSAndroid Build Coastguard Worker          # found an exact match
1091*a67afe4dSAndroid Build Coastguard Worker          func_relative_path_tcancelled=
1092*a67afe4dSAndroid Build Coastguard Worker          break
1093*a67afe4dSAndroid Build Coastguard Worker          ;;
1094*a67afe4dSAndroid Build Coastguard Worker        $func_relative_path_tlibdir*)
1095*a67afe4dSAndroid Build Coastguard Worker          # found a matching prefix
1096*a67afe4dSAndroid Build Coastguard Worker          func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
1097*a67afe4dSAndroid Build Coastguard Worker          func_relative_path_tcancelled=$func_stripname_result
1098*a67afe4dSAndroid Build Coastguard Worker          if test -z "$func_relative_path_result"; then
1099*a67afe4dSAndroid Build Coastguard Worker            func_relative_path_result=.
1100*a67afe4dSAndroid Build Coastguard Worker          fi
1101*a67afe4dSAndroid Build Coastguard Worker          break
1102*a67afe4dSAndroid Build Coastguard Worker          ;;
1103*a67afe4dSAndroid Build Coastguard Worker        *)
1104*a67afe4dSAndroid Build Coastguard Worker          func_dirname $func_relative_path_tlibdir
1105*a67afe4dSAndroid Build Coastguard Worker          func_relative_path_tlibdir=$func_dirname_result
1106*a67afe4dSAndroid Build Coastguard Worker          if test -z "$func_relative_path_tlibdir"; then
1107*a67afe4dSAndroid Build Coastguard Worker            # Have to descend all the way to the root!
1108*a67afe4dSAndroid Build Coastguard Worker            func_relative_path_result=../$func_relative_path_result
1109*a67afe4dSAndroid Build Coastguard Worker            func_relative_path_tcancelled=$func_relative_path_tbindir
1110*a67afe4dSAndroid Build Coastguard Worker            break
1111*a67afe4dSAndroid Build Coastguard Worker          fi
1112*a67afe4dSAndroid Build Coastguard Worker          func_relative_path_result=../$func_relative_path_result
1113*a67afe4dSAndroid Build Coastguard Worker          ;;
1114*a67afe4dSAndroid Build Coastguard Worker      esac
1115*a67afe4dSAndroid Build Coastguard Worker    done
1116*a67afe4dSAndroid Build Coastguard Worker
1117*a67afe4dSAndroid Build Coastguard Worker    # Now calculate path; take care to avoid doubling-up slashes.
1118*a67afe4dSAndroid Build Coastguard Worker    func_stripname '' '/' "$func_relative_path_result"
1119*a67afe4dSAndroid Build Coastguard Worker    func_relative_path_result=$func_stripname_result
1120*a67afe4dSAndroid Build Coastguard Worker    func_stripname '/' '/' "$func_relative_path_tcancelled"
1121*a67afe4dSAndroid Build Coastguard Worker    if test -n "$func_stripname_result"; then
1122*a67afe4dSAndroid Build Coastguard Worker      func_append func_relative_path_result "/$func_stripname_result"
1123*a67afe4dSAndroid Build Coastguard Worker    fi
1124*a67afe4dSAndroid Build Coastguard Worker
1125*a67afe4dSAndroid Build Coastguard Worker    # Normalisation. If bindir is libdir, return '.' else relative path.
1126*a67afe4dSAndroid Build Coastguard Worker    if test -n "$func_relative_path_result"; then
1127*a67afe4dSAndroid Build Coastguard Worker      func_stripname './' '' "$func_relative_path_result"
1128*a67afe4dSAndroid Build Coastguard Worker      func_relative_path_result=$func_stripname_result
1129*a67afe4dSAndroid Build Coastguard Worker    fi
1130*a67afe4dSAndroid Build Coastguard Worker
1131*a67afe4dSAndroid Build Coastguard Worker    test -n "$func_relative_path_result" || func_relative_path_result=.
1132*a67afe4dSAndroid Build Coastguard Worker
1133*a67afe4dSAndroid Build Coastguard Worker    :
1134*a67afe4dSAndroid Build Coastguard Worker}
1135*a67afe4dSAndroid Build Coastguard Worker
1136*a67afe4dSAndroid Build Coastguard Worker
1137*a67afe4dSAndroid Build Coastguard Worker# func_quote_portable EVAL ARG
1138*a67afe4dSAndroid Build Coastguard Worker# ----------------------------
1139*a67afe4dSAndroid Build Coastguard Worker# Internal function to portably implement func_quote_arg.  Note that we still
1140*a67afe4dSAndroid Build Coastguard Worker# keep attention to performance here so we as much as possible try to avoid
1141*a67afe4dSAndroid Build Coastguard Worker# calling sed binary (so far O(N) complexity as long as func_append is O(1)).
1142*a67afe4dSAndroid Build Coastguard Workerfunc_quote_portable ()
1143*a67afe4dSAndroid Build Coastguard Worker{
1144*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1145*a67afe4dSAndroid Build Coastguard Worker
1146*a67afe4dSAndroid Build Coastguard Worker    $require_check_ifs_backslash
1147*a67afe4dSAndroid Build Coastguard Worker
1148*a67afe4dSAndroid Build Coastguard Worker    func_quote_portable_result=$2
1149*a67afe4dSAndroid Build Coastguard Worker
1150*a67afe4dSAndroid Build Coastguard Worker    # one-time-loop (easy break)
1151*a67afe4dSAndroid Build Coastguard Worker    while true
1152*a67afe4dSAndroid Build Coastguard Worker    do
1153*a67afe4dSAndroid Build Coastguard Worker      if $1; then
1154*a67afe4dSAndroid Build Coastguard Worker        func_quote_portable_result=`$ECHO "$2" | $SED \
1155*a67afe4dSAndroid Build Coastguard Worker          -e "$sed_double_quote_subst" -e "$sed_double_backslash"`
1156*a67afe4dSAndroid Build Coastguard Worker        break
1157*a67afe4dSAndroid Build Coastguard Worker      fi
1158*a67afe4dSAndroid Build Coastguard Worker
1159*a67afe4dSAndroid Build Coastguard Worker      # Quote for eval.
1160*a67afe4dSAndroid Build Coastguard Worker      case $func_quote_portable_result in
1161*a67afe4dSAndroid Build Coastguard Worker        *[\\\`\"\$]*)
1162*a67afe4dSAndroid Build Coastguard Worker          # Fallback to sed for $func_check_bs_ifs_broken=:, or when the string
1163*a67afe4dSAndroid Build Coastguard Worker          # contains the shell wildcard characters.
1164*a67afe4dSAndroid Build Coastguard Worker          case $check_ifs_backshlash_broken$func_quote_portable_result in
1165*a67afe4dSAndroid Build Coastguard Worker            :*|*[\[\*\?]*)
1166*a67afe4dSAndroid Build Coastguard Worker              func_quote_portable_result=`$ECHO "$func_quote_portable_result" \
1167*a67afe4dSAndroid Build Coastguard Worker                  | $SED "$sed_quote_subst"`
1168*a67afe4dSAndroid Build Coastguard Worker              break
1169*a67afe4dSAndroid Build Coastguard Worker              ;;
1170*a67afe4dSAndroid Build Coastguard Worker          esac
1171*a67afe4dSAndroid Build Coastguard Worker
1172*a67afe4dSAndroid Build Coastguard Worker          func_quote_portable_old_IFS=$IFS
1173*a67afe4dSAndroid Build Coastguard Worker          for _G_char in '\' '`' '"' '$'
1174*a67afe4dSAndroid Build Coastguard Worker          do
1175*a67afe4dSAndroid Build Coastguard Worker            # STATE($1) PREV($2) SEPARATOR($3)
1176*a67afe4dSAndroid Build Coastguard Worker            set start "" ""
1177*a67afe4dSAndroid Build Coastguard Worker            func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy
1178*a67afe4dSAndroid Build Coastguard Worker            IFS=$_G_char
1179*a67afe4dSAndroid Build Coastguard Worker            for _G_part in $func_quote_portable_result
1180*a67afe4dSAndroid Build Coastguard Worker            do
1181*a67afe4dSAndroid Build Coastguard Worker              case $1 in
1182*a67afe4dSAndroid Build Coastguard Worker              quote)
1183*a67afe4dSAndroid Build Coastguard Worker                func_append func_quote_portable_result "$3$2"
1184*a67afe4dSAndroid Build Coastguard Worker                set quote "$_G_part" "\\$_G_char"
1185*a67afe4dSAndroid Build Coastguard Worker                ;;
1186*a67afe4dSAndroid Build Coastguard Worker              start)
1187*a67afe4dSAndroid Build Coastguard Worker                set first "" ""
1188*a67afe4dSAndroid Build Coastguard Worker                func_quote_portable_result=
1189*a67afe4dSAndroid Build Coastguard Worker                ;;
1190*a67afe4dSAndroid Build Coastguard Worker              first)
1191*a67afe4dSAndroid Build Coastguard Worker                set quote "$_G_part" ""
1192*a67afe4dSAndroid Build Coastguard Worker                ;;
1193*a67afe4dSAndroid Build Coastguard Worker              esac
1194*a67afe4dSAndroid Build Coastguard Worker            done
1195*a67afe4dSAndroid Build Coastguard Worker          done
1196*a67afe4dSAndroid Build Coastguard Worker          IFS=$func_quote_portable_old_IFS
1197*a67afe4dSAndroid Build Coastguard Worker          ;;
1198*a67afe4dSAndroid Build Coastguard Worker        *) ;;
1199*a67afe4dSAndroid Build Coastguard Worker      esac
1200*a67afe4dSAndroid Build Coastguard Worker      break
1201*a67afe4dSAndroid Build Coastguard Worker    done
1202*a67afe4dSAndroid Build Coastguard Worker
1203*a67afe4dSAndroid Build Coastguard Worker    func_quote_portable_unquoted_result=$func_quote_portable_result
1204*a67afe4dSAndroid Build Coastguard Worker    case $func_quote_portable_result in
1205*a67afe4dSAndroid Build Coastguard Worker      # double-quote args containing shell metacharacters to delay
1206*a67afe4dSAndroid Build Coastguard Worker      # word splitting, command substitution and variable expansion
1207*a67afe4dSAndroid Build Coastguard Worker      # for a subsequent eval.
1208*a67afe4dSAndroid Build Coastguard Worker      # many bourne shells cannot handle close brackets correctly
1209*a67afe4dSAndroid Build Coastguard Worker      # in scan sets, so we specify it separately.
1210*a67afe4dSAndroid Build Coastguard Worker      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
1211*a67afe4dSAndroid Build Coastguard Worker        func_quote_portable_result=\"$func_quote_portable_result\"
1212*a67afe4dSAndroid Build Coastguard Worker        ;;
1213*a67afe4dSAndroid Build Coastguard Worker    esac
1214*a67afe4dSAndroid Build Coastguard Worker}
1215*a67afe4dSAndroid Build Coastguard Worker
1216*a67afe4dSAndroid Build Coastguard Worker
1217*a67afe4dSAndroid Build Coastguard Worker# func_quotefast_eval ARG
1218*a67afe4dSAndroid Build Coastguard Worker# -----------------------
1219*a67afe4dSAndroid Build Coastguard Worker# Quote one ARG (internal).  This is equivalent to 'func_quote_arg eval ARG',
1220*a67afe4dSAndroid Build Coastguard Worker# but optimized for speed.  Result is stored in $func_quotefast_eval.
1221*a67afe4dSAndroid Build Coastguard Workerif test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then
1222*a67afe4dSAndroid Build Coastguard Worker  printf -v _GL_test_printf_tilde %q '~'
1223*a67afe4dSAndroid Build Coastguard Worker  if test '\~' = "$_GL_test_printf_tilde"; then
1224*a67afe4dSAndroid Build Coastguard Worker    func_quotefast_eval ()
1225*a67afe4dSAndroid Build Coastguard Worker    {
1226*a67afe4dSAndroid Build Coastguard Worker      printf -v func_quotefast_eval_result %q "$1"
1227*a67afe4dSAndroid Build Coastguard Worker    }
1228*a67afe4dSAndroid Build Coastguard Worker  else
1229*a67afe4dSAndroid Build Coastguard Worker    # Broken older Bash implementations.  Make those faster too if possible.
1230*a67afe4dSAndroid Build Coastguard Worker    func_quotefast_eval ()
1231*a67afe4dSAndroid Build Coastguard Worker    {
1232*a67afe4dSAndroid Build Coastguard Worker      case $1 in
1233*a67afe4dSAndroid Build Coastguard Worker        '~'*)
1234*a67afe4dSAndroid Build Coastguard Worker          func_quote_portable false "$1"
1235*a67afe4dSAndroid Build Coastguard Worker          func_quotefast_eval_result=$func_quote_portable_result
1236*a67afe4dSAndroid Build Coastguard Worker          ;;
1237*a67afe4dSAndroid Build Coastguard Worker        *)
1238*a67afe4dSAndroid Build Coastguard Worker          printf -v func_quotefast_eval_result %q "$1"
1239*a67afe4dSAndroid Build Coastguard Worker          ;;
1240*a67afe4dSAndroid Build Coastguard Worker      esac
1241*a67afe4dSAndroid Build Coastguard Worker    }
1242*a67afe4dSAndroid Build Coastguard Worker  fi
1243*a67afe4dSAndroid Build Coastguard Workerelse
1244*a67afe4dSAndroid Build Coastguard Worker  func_quotefast_eval ()
1245*a67afe4dSAndroid Build Coastguard Worker  {
1246*a67afe4dSAndroid Build Coastguard Worker    func_quote_portable false "$1"
1247*a67afe4dSAndroid Build Coastguard Worker    func_quotefast_eval_result=$func_quote_portable_result
1248*a67afe4dSAndroid Build Coastguard Worker  }
1249*a67afe4dSAndroid Build Coastguard Workerfi
1250*a67afe4dSAndroid Build Coastguard Worker
1251*a67afe4dSAndroid Build Coastguard Worker
1252*a67afe4dSAndroid Build Coastguard Worker# func_quote_arg MODEs ARG
1253*a67afe4dSAndroid Build Coastguard Worker# ------------------------
1254*a67afe4dSAndroid Build Coastguard Worker# Quote one ARG to be evaled later.  MODEs argument may contain zero or more
1255*a67afe4dSAndroid Build Coastguard Worker# specifiers listed below separated by ',' character.  This function returns two
1256*a67afe4dSAndroid Build Coastguard Worker# values:
1257*a67afe4dSAndroid Build Coastguard Worker#   i) func_quote_arg_result
1258*a67afe4dSAndroid Build Coastguard Worker#      double-quoted (when needed), suitable for a subsequent eval
1259*a67afe4dSAndroid Build Coastguard Worker#  ii) func_quote_arg_unquoted_result
1260*a67afe4dSAndroid Build Coastguard Worker#      has all characters that are still active within double
1261*a67afe4dSAndroid Build Coastguard Worker#      quotes backslashified.  Available only if 'unquoted' is specified.
1262*a67afe4dSAndroid Build Coastguard Worker#
1263*a67afe4dSAndroid Build Coastguard Worker# Available modes:
1264*a67afe4dSAndroid Build Coastguard Worker# ----------------
1265*a67afe4dSAndroid Build Coastguard Worker# 'eval' (default)
1266*a67afe4dSAndroid Build Coastguard Worker#       - escape shell special characters
1267*a67afe4dSAndroid Build Coastguard Worker# 'expand'
1268*a67afe4dSAndroid Build Coastguard Worker#       - the same as 'eval';  but do not quote variable references
1269*a67afe4dSAndroid Build Coastguard Worker# 'pretty'
1270*a67afe4dSAndroid Build Coastguard Worker#       - request aesthetic output, i.e. '"a b"' instead of 'a\ b'.  This might
1271*a67afe4dSAndroid Build Coastguard Worker#         be used later in func_quote to get output like: 'echo "a b"' instead
1272*a67afe4dSAndroid Build Coastguard Worker#         of 'echo a\ b'.  This is slower than default on some shells.
1273*a67afe4dSAndroid Build Coastguard Worker# 'unquoted'
1274*a67afe4dSAndroid Build Coastguard Worker#       - produce also $func_quote_arg_unquoted_result which does not contain
1275*a67afe4dSAndroid Build Coastguard Worker#         wrapping double-quotes.
1276*a67afe4dSAndroid Build Coastguard Worker#
1277*a67afe4dSAndroid Build Coastguard Worker# Examples for 'func_quote_arg pretty,unquoted string':
1278*a67afe4dSAndroid Build Coastguard Worker#
1279*a67afe4dSAndroid Build Coastguard Worker#   string      | *_result              | *_unquoted_result
1280*a67afe4dSAndroid Build Coastguard Worker#   ------------+-----------------------+-------------------
1281*a67afe4dSAndroid Build Coastguard Worker#   "           | \"                    | \"
1282*a67afe4dSAndroid Build Coastguard Worker#   a b         | "a b"                 | a b
1283*a67afe4dSAndroid Build Coastguard Worker#   "a b"       | "\"a b\""             | \"a b\"
1284*a67afe4dSAndroid Build Coastguard Worker#   *           | "*"                   | *
1285*a67afe4dSAndroid Build Coastguard Worker#   z="${x-$y}" | "z=\"\${x-\$y}\""     | z=\"\${x-\$y}\"
1286*a67afe4dSAndroid Build Coastguard Worker#
1287*a67afe4dSAndroid Build Coastguard Worker# Examples for 'func_quote_arg pretty,unquoted,expand string':
1288*a67afe4dSAndroid Build Coastguard Worker#
1289*a67afe4dSAndroid Build Coastguard Worker#   string        |   *_result          |  *_unquoted_result
1290*a67afe4dSAndroid Build Coastguard Worker#   --------------+---------------------+--------------------
1291*a67afe4dSAndroid Build Coastguard Worker#   z="${x-$y}"   | "z=\"${x-$y}\""     | z=\"${x-$y}\"
1292*a67afe4dSAndroid Build Coastguard Workerfunc_quote_arg ()
1293*a67afe4dSAndroid Build Coastguard Worker{
1294*a67afe4dSAndroid Build Coastguard Worker    _G_quote_expand=false
1295*a67afe4dSAndroid Build Coastguard Worker    case ,$1, in
1296*a67afe4dSAndroid Build Coastguard Worker      *,expand,*)
1297*a67afe4dSAndroid Build Coastguard Worker        _G_quote_expand=:
1298*a67afe4dSAndroid Build Coastguard Worker        ;;
1299*a67afe4dSAndroid Build Coastguard Worker    esac
1300*a67afe4dSAndroid Build Coastguard Worker
1301*a67afe4dSAndroid Build Coastguard Worker    case ,$1, in
1302*a67afe4dSAndroid Build Coastguard Worker      *,pretty,*|*,expand,*|*,unquoted,*)
1303*a67afe4dSAndroid Build Coastguard Worker        func_quote_portable $_G_quote_expand "$2"
1304*a67afe4dSAndroid Build Coastguard Worker        func_quote_arg_result=$func_quote_portable_result
1305*a67afe4dSAndroid Build Coastguard Worker        func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result
1306*a67afe4dSAndroid Build Coastguard Worker        ;;
1307*a67afe4dSAndroid Build Coastguard Worker      *)
1308*a67afe4dSAndroid Build Coastguard Worker        # Faster quote-for-eval for some shells.
1309*a67afe4dSAndroid Build Coastguard Worker        func_quotefast_eval "$2"
1310*a67afe4dSAndroid Build Coastguard Worker        func_quote_arg_result=$func_quotefast_eval_result
1311*a67afe4dSAndroid Build Coastguard Worker        ;;
1312*a67afe4dSAndroid Build Coastguard Worker    esac
1313*a67afe4dSAndroid Build Coastguard Worker}
1314*a67afe4dSAndroid Build Coastguard Worker
1315*a67afe4dSAndroid Build Coastguard Worker
1316*a67afe4dSAndroid Build Coastguard Worker# func_quote MODEs ARGs...
1317*a67afe4dSAndroid Build Coastguard Worker# ------------------------
1318*a67afe4dSAndroid Build Coastguard Worker# Quote all ARGs to be evaled later and join them into single command.  See
1319*a67afe4dSAndroid Build Coastguard Worker# func_quote_arg's description for more info.
1320*a67afe4dSAndroid Build Coastguard Workerfunc_quote ()
1321*a67afe4dSAndroid Build Coastguard Worker{
1322*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1323*a67afe4dSAndroid Build Coastguard Worker    _G_func_quote_mode=$1 ; shift
1324*a67afe4dSAndroid Build Coastguard Worker    func_quote_result=
1325*a67afe4dSAndroid Build Coastguard Worker    while test 0 -lt $#; do
1326*a67afe4dSAndroid Build Coastguard Worker      func_quote_arg "$_G_func_quote_mode" "$1"
1327*a67afe4dSAndroid Build Coastguard Worker      if test -n "$func_quote_result"; then
1328*a67afe4dSAndroid Build Coastguard Worker        func_append func_quote_result " $func_quote_arg_result"
1329*a67afe4dSAndroid Build Coastguard Worker      else
1330*a67afe4dSAndroid Build Coastguard Worker        func_append func_quote_result "$func_quote_arg_result"
1331*a67afe4dSAndroid Build Coastguard Worker      fi
1332*a67afe4dSAndroid Build Coastguard Worker      shift
1333*a67afe4dSAndroid Build Coastguard Worker    done
1334*a67afe4dSAndroid Build Coastguard Worker}
1335*a67afe4dSAndroid Build Coastguard Worker
1336*a67afe4dSAndroid Build Coastguard Worker
1337*a67afe4dSAndroid Build Coastguard Worker# func_stripname PREFIX SUFFIX NAME
1338*a67afe4dSAndroid Build Coastguard Worker# ---------------------------------
1339*a67afe4dSAndroid Build Coastguard Worker# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result.
1340*a67afe4dSAndroid Build Coastguard Worker# PREFIX and SUFFIX must not contain globbing or regex special
1341*a67afe4dSAndroid Build Coastguard Worker# characters, hashes, percent signs, but SUFFIX may contain a leading
1342*a67afe4dSAndroid Build Coastguard Worker# dot (in which case that matches only a dot).
1343*a67afe4dSAndroid Build Coastguard Workerif test yes = "$_G_HAVE_XSI_OPS"; then
1344*a67afe4dSAndroid Build Coastguard Worker  eval 'func_stripname ()
1345*a67afe4dSAndroid Build Coastguard Worker  {
1346*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1347*a67afe4dSAndroid Build Coastguard Worker
1348*a67afe4dSAndroid Build Coastguard Worker    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
1349*a67afe4dSAndroid Build Coastguard Worker    # positional parameters, so assign one to ordinary variable first.
1350*a67afe4dSAndroid Build Coastguard Worker    func_stripname_result=$3
1351*a67afe4dSAndroid Build Coastguard Worker    func_stripname_result=${func_stripname_result#"$1"}
1352*a67afe4dSAndroid Build Coastguard Worker    func_stripname_result=${func_stripname_result%"$2"}
1353*a67afe4dSAndroid Build Coastguard Worker  }'
1354*a67afe4dSAndroid Build Coastguard Workerelse
1355*a67afe4dSAndroid Build Coastguard Worker  func_stripname ()
1356*a67afe4dSAndroid Build Coastguard Worker  {
1357*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1358*a67afe4dSAndroid Build Coastguard Worker
1359*a67afe4dSAndroid Build Coastguard Worker    case $2 in
1360*a67afe4dSAndroid Build Coastguard Worker      .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;;
1361*a67afe4dSAndroid Build Coastguard Worker      *)  func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;;
1362*a67afe4dSAndroid Build Coastguard Worker    esac
1363*a67afe4dSAndroid Build Coastguard Worker  }
1364*a67afe4dSAndroid Build Coastguard Workerfi
1365*a67afe4dSAndroid Build Coastguard Worker
1366*a67afe4dSAndroid Build Coastguard Worker
1367*a67afe4dSAndroid Build Coastguard Worker# func_show_eval CMD [FAIL_EXP]
1368*a67afe4dSAndroid Build Coastguard Worker# -----------------------------
1369*a67afe4dSAndroid Build Coastguard Worker# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
1370*a67afe4dSAndroid Build Coastguard Worker# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
1371*a67afe4dSAndroid Build Coastguard Worker# is given, then evaluate it.
1372*a67afe4dSAndroid Build Coastguard Workerfunc_show_eval ()
1373*a67afe4dSAndroid Build Coastguard Worker{
1374*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1375*a67afe4dSAndroid Build Coastguard Worker
1376*a67afe4dSAndroid Build Coastguard Worker    _G_cmd=$1
1377*a67afe4dSAndroid Build Coastguard Worker    _G_fail_exp=${2-':'}
1378*a67afe4dSAndroid Build Coastguard Worker
1379*a67afe4dSAndroid Build Coastguard Worker    func_quote_arg pretty,expand "$_G_cmd"
1380*a67afe4dSAndroid Build Coastguard Worker    eval "func_notquiet $func_quote_arg_result"
1381*a67afe4dSAndroid Build Coastguard Worker
1382*a67afe4dSAndroid Build Coastguard Worker    $opt_dry_run || {
1383*a67afe4dSAndroid Build Coastguard Worker      eval "$_G_cmd"
1384*a67afe4dSAndroid Build Coastguard Worker      _G_status=$?
1385*a67afe4dSAndroid Build Coastguard Worker      if test 0 -ne "$_G_status"; then
1386*a67afe4dSAndroid Build Coastguard Worker	eval "(exit $_G_status); $_G_fail_exp"
1387*a67afe4dSAndroid Build Coastguard Worker      fi
1388*a67afe4dSAndroid Build Coastguard Worker    }
1389*a67afe4dSAndroid Build Coastguard Worker}
1390*a67afe4dSAndroid Build Coastguard Worker
1391*a67afe4dSAndroid Build Coastguard Worker
1392*a67afe4dSAndroid Build Coastguard Worker# func_show_eval_locale CMD [FAIL_EXP]
1393*a67afe4dSAndroid Build Coastguard Worker# ------------------------------------
1394*a67afe4dSAndroid Build Coastguard Worker# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
1395*a67afe4dSAndroid Build Coastguard Worker# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
1396*a67afe4dSAndroid Build Coastguard Worker# is given, then evaluate it.  Use the saved locale for evaluation.
1397*a67afe4dSAndroid Build Coastguard Workerfunc_show_eval_locale ()
1398*a67afe4dSAndroid Build Coastguard Worker{
1399*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1400*a67afe4dSAndroid Build Coastguard Worker
1401*a67afe4dSAndroid Build Coastguard Worker    _G_cmd=$1
1402*a67afe4dSAndroid Build Coastguard Worker    _G_fail_exp=${2-':'}
1403*a67afe4dSAndroid Build Coastguard Worker
1404*a67afe4dSAndroid Build Coastguard Worker    $opt_quiet || {
1405*a67afe4dSAndroid Build Coastguard Worker      func_quote_arg expand,pretty "$_G_cmd"
1406*a67afe4dSAndroid Build Coastguard Worker      eval "func_echo $func_quote_arg_result"
1407*a67afe4dSAndroid Build Coastguard Worker    }
1408*a67afe4dSAndroid Build Coastguard Worker
1409*a67afe4dSAndroid Build Coastguard Worker    $opt_dry_run || {
1410*a67afe4dSAndroid Build Coastguard Worker      eval "$_G_user_locale
1411*a67afe4dSAndroid Build Coastguard Worker	    $_G_cmd"
1412*a67afe4dSAndroid Build Coastguard Worker      _G_status=$?
1413*a67afe4dSAndroid Build Coastguard Worker      eval "$_G_safe_locale"
1414*a67afe4dSAndroid Build Coastguard Worker      if test 0 -ne "$_G_status"; then
1415*a67afe4dSAndroid Build Coastguard Worker	eval "(exit $_G_status); $_G_fail_exp"
1416*a67afe4dSAndroid Build Coastguard Worker      fi
1417*a67afe4dSAndroid Build Coastguard Worker    }
1418*a67afe4dSAndroid Build Coastguard Worker}
1419*a67afe4dSAndroid Build Coastguard Worker
1420*a67afe4dSAndroid Build Coastguard Worker
1421*a67afe4dSAndroid Build Coastguard Worker# func_tr_sh
1422*a67afe4dSAndroid Build Coastguard Worker# ----------
1423*a67afe4dSAndroid Build Coastguard Worker# Turn $1 into a string suitable for a shell variable name.
1424*a67afe4dSAndroid Build Coastguard Worker# Result is stored in $func_tr_sh_result.  All characters
1425*a67afe4dSAndroid Build Coastguard Worker# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
1426*a67afe4dSAndroid Build Coastguard Worker# if $1 begins with a digit, a '_' is prepended as well.
1427*a67afe4dSAndroid Build Coastguard Workerfunc_tr_sh ()
1428*a67afe4dSAndroid Build Coastguard Worker{
1429*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1430*a67afe4dSAndroid Build Coastguard Worker
1431*a67afe4dSAndroid Build Coastguard Worker    case $1 in
1432*a67afe4dSAndroid Build Coastguard Worker    [0-9]* | *[!a-zA-Z0-9_]*)
1433*a67afe4dSAndroid Build Coastguard Worker      func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'`
1434*a67afe4dSAndroid Build Coastguard Worker      ;;
1435*a67afe4dSAndroid Build Coastguard Worker    * )
1436*a67afe4dSAndroid Build Coastguard Worker      func_tr_sh_result=$1
1437*a67afe4dSAndroid Build Coastguard Worker      ;;
1438*a67afe4dSAndroid Build Coastguard Worker    esac
1439*a67afe4dSAndroid Build Coastguard Worker}
1440*a67afe4dSAndroid Build Coastguard Worker
1441*a67afe4dSAndroid Build Coastguard Worker
1442*a67afe4dSAndroid Build Coastguard Worker# func_verbose ARG...
1443*a67afe4dSAndroid Build Coastguard Worker# -------------------
1444*a67afe4dSAndroid Build Coastguard Worker# Echo program name prefixed message in verbose mode only.
1445*a67afe4dSAndroid Build Coastguard Workerfunc_verbose ()
1446*a67afe4dSAndroid Build Coastguard Worker{
1447*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1448*a67afe4dSAndroid Build Coastguard Worker
1449*a67afe4dSAndroid Build Coastguard Worker    $opt_verbose && func_echo "$*"
1450*a67afe4dSAndroid Build Coastguard Worker
1451*a67afe4dSAndroid Build Coastguard Worker    :
1452*a67afe4dSAndroid Build Coastguard Worker}
1453*a67afe4dSAndroid Build Coastguard Worker
1454*a67afe4dSAndroid Build Coastguard Worker
1455*a67afe4dSAndroid Build Coastguard Worker# func_warn_and_continue ARG...
1456*a67afe4dSAndroid Build Coastguard Worker# -----------------------------
1457*a67afe4dSAndroid Build Coastguard Worker# Echo program name prefixed warning message to standard error.
1458*a67afe4dSAndroid Build Coastguard Workerfunc_warn_and_continue ()
1459*a67afe4dSAndroid Build Coastguard Worker{
1460*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1461*a67afe4dSAndroid Build Coastguard Worker
1462*a67afe4dSAndroid Build Coastguard Worker    $require_term_colors
1463*a67afe4dSAndroid Build Coastguard Worker
1464*a67afe4dSAndroid Build Coastguard Worker    func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2
1465*a67afe4dSAndroid Build Coastguard Worker}
1466*a67afe4dSAndroid Build Coastguard Worker
1467*a67afe4dSAndroid Build Coastguard Worker
1468*a67afe4dSAndroid Build Coastguard Worker# func_warning CATEGORY ARG...
1469*a67afe4dSAndroid Build Coastguard Worker# ----------------------------
1470*a67afe4dSAndroid Build Coastguard Worker# Echo program name prefixed warning message to standard error. Warning
1471*a67afe4dSAndroid Build Coastguard Worker# messages can be filtered according to CATEGORY, where this function
1472*a67afe4dSAndroid Build Coastguard Worker# elides messages where CATEGORY is not listed in the global variable
1473*a67afe4dSAndroid Build Coastguard Worker# 'opt_warning_types'.
1474*a67afe4dSAndroid Build Coastguard Workerfunc_warning ()
1475*a67afe4dSAndroid Build Coastguard Worker{
1476*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1477*a67afe4dSAndroid Build Coastguard Worker
1478*a67afe4dSAndroid Build Coastguard Worker    # CATEGORY must be in the warning_categories list!
1479*a67afe4dSAndroid Build Coastguard Worker    case " $warning_categories " in
1480*a67afe4dSAndroid Build Coastguard Worker      *" $1 "*) ;;
1481*a67afe4dSAndroid Build Coastguard Worker      *) func_internal_error "invalid warning category '$1'" ;;
1482*a67afe4dSAndroid Build Coastguard Worker    esac
1483*a67afe4dSAndroid Build Coastguard Worker
1484*a67afe4dSAndroid Build Coastguard Worker    _G_category=$1
1485*a67afe4dSAndroid Build Coastguard Worker    shift
1486*a67afe4dSAndroid Build Coastguard Worker
1487*a67afe4dSAndroid Build Coastguard Worker    case " $opt_warning_types " in
1488*a67afe4dSAndroid Build Coastguard Worker      *" $_G_category "*) $warning_func ${1+"$@"} ;;
1489*a67afe4dSAndroid Build Coastguard Worker    esac
1490*a67afe4dSAndroid Build Coastguard Worker}
1491*a67afe4dSAndroid Build Coastguard Worker
1492*a67afe4dSAndroid Build Coastguard Worker
1493*a67afe4dSAndroid Build Coastguard Worker# func_sort_ver VER1 VER2
1494*a67afe4dSAndroid Build Coastguard Worker# -----------------------
1495*a67afe4dSAndroid Build Coastguard Worker# 'sort -V' is not generally available.
1496*a67afe4dSAndroid Build Coastguard Worker# Note this deviates from the version comparison in automake
1497*a67afe4dSAndroid Build Coastguard Worker# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
1498*a67afe4dSAndroid Build Coastguard Worker# but this should suffice as we won't be specifying old
1499*a67afe4dSAndroid Build Coastguard Worker# version formats or redundant trailing .0 in bootstrap.conf.
1500*a67afe4dSAndroid Build Coastguard Worker# If we did want full compatibility then we should probably
1501*a67afe4dSAndroid Build Coastguard Worker# use m4_version_compare from autoconf.
1502*a67afe4dSAndroid Build Coastguard Workerfunc_sort_ver ()
1503*a67afe4dSAndroid Build Coastguard Worker{
1504*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1505*a67afe4dSAndroid Build Coastguard Worker
1506*a67afe4dSAndroid Build Coastguard Worker    printf '%s\n%s\n' "$1" "$2" \
1507*a67afe4dSAndroid Build Coastguard Worker      | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n
1508*a67afe4dSAndroid Build Coastguard Worker}
1509*a67afe4dSAndroid Build Coastguard Worker
1510*a67afe4dSAndroid Build Coastguard Worker# func_lt_ver PREV CURR
1511*a67afe4dSAndroid Build Coastguard Worker# ---------------------
1512*a67afe4dSAndroid Build Coastguard Worker# Return true if PREV and CURR are in the correct order according to
1513*a67afe4dSAndroid Build Coastguard Worker# func_sort_ver, otherwise false.  Use it like this:
1514*a67afe4dSAndroid Build Coastguard Worker#
1515*a67afe4dSAndroid Build Coastguard Worker#  func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..."
1516*a67afe4dSAndroid Build Coastguard Workerfunc_lt_ver ()
1517*a67afe4dSAndroid Build Coastguard Worker{
1518*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1519*a67afe4dSAndroid Build Coastguard Worker
1520*a67afe4dSAndroid Build Coastguard Worker    test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q`
1521*a67afe4dSAndroid Build Coastguard Worker}
1522*a67afe4dSAndroid Build Coastguard Worker
1523*a67afe4dSAndroid Build Coastguard Worker
1524*a67afe4dSAndroid Build Coastguard Worker# Local variables:
1525*a67afe4dSAndroid Build Coastguard Worker# mode: shell-script
1526*a67afe4dSAndroid Build Coastguard Worker# sh-indentation: 2
1527*a67afe4dSAndroid Build Coastguard Worker# eval: (add-hook 'before-save-hook 'time-stamp)
1528*a67afe4dSAndroid Build Coastguard Worker# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
1529*a67afe4dSAndroid Build Coastguard Worker# time-stamp-time-zone: "UTC"
1530*a67afe4dSAndroid Build Coastguard Worker# End:
1531*a67afe4dSAndroid Build Coastguard Worker#! /bin/sh
1532*a67afe4dSAndroid Build Coastguard Worker
1533*a67afe4dSAndroid Build Coastguard Worker# A portable, pluggable option parser for Bourne shell.
1534*a67afe4dSAndroid Build Coastguard Worker# Written by Gary V. Vaughan, 2010
1535*a67afe4dSAndroid Build Coastguard Worker
1536*a67afe4dSAndroid Build Coastguard Worker# This is free software.  There is NO warranty; not even for
1537*a67afe4dSAndroid Build Coastguard Worker# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1538*a67afe4dSAndroid Build Coastguard Worker#
1539*a67afe4dSAndroid Build Coastguard Worker# Copyright (C) 2010-2019, 2021 Bootstrap Authors
1540*a67afe4dSAndroid Build Coastguard Worker#
1541*a67afe4dSAndroid Build Coastguard Worker# This file is dual licensed under the terms of the MIT license
1542*a67afe4dSAndroid Build Coastguard Worker# <https://opensource.org/license/MIT>, and GPL version 2 or later
1543*a67afe4dSAndroid Build Coastguard Worker# <http://www.gnu.org/licenses/gpl-2.0.html>.  You must apply one of
1544*a67afe4dSAndroid Build Coastguard Worker# these licenses when using or redistributing this software or any of
1545*a67afe4dSAndroid Build Coastguard Worker# the files within it.  See the URLs above, or the file `LICENSE`
1546*a67afe4dSAndroid Build Coastguard Worker# included in the Bootstrap distribution for the full license texts.
1547*a67afe4dSAndroid Build Coastguard Worker
1548*a67afe4dSAndroid Build Coastguard Worker# Please report bugs or propose patches to:
1549*a67afe4dSAndroid Build Coastguard Worker# <https://github.com/gnulib-modules/bootstrap/issues>
1550*a67afe4dSAndroid Build Coastguard Worker
1551*a67afe4dSAndroid Build Coastguard Worker# Set a version string for this script.
1552*a67afe4dSAndroid Build Coastguard Workerscriptversion=2019-02-19.15; # UTC
1553*a67afe4dSAndroid Build Coastguard Worker
1554*a67afe4dSAndroid Build Coastguard Worker
1555*a67afe4dSAndroid Build Coastguard Worker## ------ ##
1556*a67afe4dSAndroid Build Coastguard Worker## Usage. ##
1557*a67afe4dSAndroid Build Coastguard Worker## ------ ##
1558*a67afe4dSAndroid Build Coastguard Worker
1559*a67afe4dSAndroid Build Coastguard Worker# This file is a library for parsing options in your shell scripts along
1560*a67afe4dSAndroid Build Coastguard Worker# with assorted other useful supporting features that you can make use
1561*a67afe4dSAndroid Build Coastguard Worker# of too.
1562*a67afe4dSAndroid Build Coastguard Worker#
1563*a67afe4dSAndroid Build Coastguard Worker# For the simplest scripts you might need only:
1564*a67afe4dSAndroid Build Coastguard Worker#
1565*a67afe4dSAndroid Build Coastguard Worker#   #!/bin/sh
1566*a67afe4dSAndroid Build Coastguard Worker#   . relative/path/to/funclib.sh
1567*a67afe4dSAndroid Build Coastguard Worker#   . relative/path/to/options-parser
1568*a67afe4dSAndroid Build Coastguard Worker#   scriptversion=1.0
1569*a67afe4dSAndroid Build Coastguard Worker#   func_options ${1+"$@"}
1570*a67afe4dSAndroid Build Coastguard Worker#   eval set dummy "$func_options_result"; shift
1571*a67afe4dSAndroid Build Coastguard Worker#   ...rest of your script...
1572*a67afe4dSAndroid Build Coastguard Worker#
1573*a67afe4dSAndroid Build Coastguard Worker# In order for the '--version' option to work, you will need to have a
1574*a67afe4dSAndroid Build Coastguard Worker# suitably formatted comment like the one at the top of this file
1575*a67afe4dSAndroid Build Coastguard Worker# starting with '# Written by ' and ending with '# Copyright'.
1576*a67afe4dSAndroid Build Coastguard Worker#
1577*a67afe4dSAndroid Build Coastguard Worker# For '-h' and '--help' to work, you will also need a one line
1578*a67afe4dSAndroid Build Coastguard Worker# description of your script's purpose in a comment directly above the
1579*a67afe4dSAndroid Build Coastguard Worker# '# Written by ' line, like the one at the top of this file.
1580*a67afe4dSAndroid Build Coastguard Worker#
1581*a67afe4dSAndroid Build Coastguard Worker# The default options also support '--debug', which will turn on shell
1582*a67afe4dSAndroid Build Coastguard Worker# execution tracing (see the comment above debug_cmd below for another
1583*a67afe4dSAndroid Build Coastguard Worker# use), and '--verbose' and the func_verbose function to allow your script
1584*a67afe4dSAndroid Build Coastguard Worker# to display verbose messages only when your user has specified
1585*a67afe4dSAndroid Build Coastguard Worker# '--verbose'.
1586*a67afe4dSAndroid Build Coastguard Worker#
1587*a67afe4dSAndroid Build Coastguard Worker# After sourcing this file, you can plug in processing for additional
1588*a67afe4dSAndroid Build Coastguard Worker# options by amending the variables from the 'Configuration' section
1589*a67afe4dSAndroid Build Coastguard Worker# below, and following the instructions in the 'Option parsing'
1590*a67afe4dSAndroid Build Coastguard Worker# section further down.
1591*a67afe4dSAndroid Build Coastguard Worker
1592*a67afe4dSAndroid Build Coastguard Worker## -------------- ##
1593*a67afe4dSAndroid Build Coastguard Worker## Configuration. ##
1594*a67afe4dSAndroid Build Coastguard Worker## -------------- ##
1595*a67afe4dSAndroid Build Coastguard Worker
1596*a67afe4dSAndroid Build Coastguard Worker# You should override these variables in your script after sourcing this
1597*a67afe4dSAndroid Build Coastguard Worker# file so that they reflect the customisations you have added to the
1598*a67afe4dSAndroid Build Coastguard Worker# option parser.
1599*a67afe4dSAndroid Build Coastguard Worker
1600*a67afe4dSAndroid Build Coastguard Worker# The usage line for option parsing errors and the start of '-h' and
1601*a67afe4dSAndroid Build Coastguard Worker# '--help' output messages. You can embed shell variables for delayed
1602*a67afe4dSAndroid Build Coastguard Worker# expansion at the time the message is displayed, but you will need to
1603*a67afe4dSAndroid Build Coastguard Worker# quote other shell meta-characters carefully to prevent them being
1604*a67afe4dSAndroid Build Coastguard Worker# expanded when the contents are evaled.
1605*a67afe4dSAndroid Build Coastguard Workerusage='$progpath [OPTION]...'
1606*a67afe4dSAndroid Build Coastguard Worker
1607*a67afe4dSAndroid Build Coastguard Worker# Short help message in response to '-h' and '--help'.  Add to this or
1608*a67afe4dSAndroid Build Coastguard Worker# override it after sourcing this library to reflect the full set of
1609*a67afe4dSAndroid Build Coastguard Worker# options your script accepts.
1610*a67afe4dSAndroid Build Coastguard Workerusage_message="\
1611*a67afe4dSAndroid Build Coastguard Worker       --debug        enable verbose shell tracing
1612*a67afe4dSAndroid Build Coastguard Worker   -W, --warnings=CATEGORY
1613*a67afe4dSAndroid Build Coastguard Worker                      report the warnings falling in CATEGORY [all]
1614*a67afe4dSAndroid Build Coastguard Worker   -v, --verbose      verbosely report processing
1615*a67afe4dSAndroid Build Coastguard Worker       --version      print version information and exit
1616*a67afe4dSAndroid Build Coastguard Worker   -h, --help         print short or long help message and exit
1617*a67afe4dSAndroid Build Coastguard Worker"
1618*a67afe4dSAndroid Build Coastguard Worker
1619*a67afe4dSAndroid Build Coastguard Worker# Additional text appended to 'usage_message' in response to '--help'.
1620*a67afe4dSAndroid Build Coastguard Workerlong_help_message="
1621*a67afe4dSAndroid Build Coastguard WorkerWarning categories include:
1622*a67afe4dSAndroid Build Coastguard Worker       'all'          show all warnings
1623*a67afe4dSAndroid Build Coastguard Worker       'none'         turn off all the warnings
1624*a67afe4dSAndroid Build Coastguard Worker       'error'        warnings are treated as fatal errors"
1625*a67afe4dSAndroid Build Coastguard Worker
1626*a67afe4dSAndroid Build Coastguard Worker# Help message printed before fatal option parsing errors.
1627*a67afe4dSAndroid Build Coastguard Workerfatal_help="Try '\$progname --help' for more information."
1628*a67afe4dSAndroid Build Coastguard Worker
1629*a67afe4dSAndroid Build Coastguard Worker
1630*a67afe4dSAndroid Build Coastguard Worker
1631*a67afe4dSAndroid Build Coastguard Worker## ------------------------- ##
1632*a67afe4dSAndroid Build Coastguard Worker## Hook function management. ##
1633*a67afe4dSAndroid Build Coastguard Worker## ------------------------- ##
1634*a67afe4dSAndroid Build Coastguard Worker
1635*a67afe4dSAndroid Build Coastguard Worker# This section contains functions for adding, removing, and running hooks
1636*a67afe4dSAndroid Build Coastguard Worker# in the main code.  A hook is just a list of function names that can be
1637*a67afe4dSAndroid Build Coastguard Worker# run in order later on.
1638*a67afe4dSAndroid Build Coastguard Worker
1639*a67afe4dSAndroid Build Coastguard Worker# func_hookable FUNC_NAME
1640*a67afe4dSAndroid Build Coastguard Worker# -----------------------
1641*a67afe4dSAndroid Build Coastguard Worker# Declare that FUNC_NAME will run hooks added with
1642*a67afe4dSAndroid Build Coastguard Worker# 'func_add_hook FUNC_NAME ...'.
1643*a67afe4dSAndroid Build Coastguard Workerfunc_hookable ()
1644*a67afe4dSAndroid Build Coastguard Worker{
1645*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1646*a67afe4dSAndroid Build Coastguard Worker
1647*a67afe4dSAndroid Build Coastguard Worker    func_append hookable_fns " $1"
1648*a67afe4dSAndroid Build Coastguard Worker}
1649*a67afe4dSAndroid Build Coastguard Worker
1650*a67afe4dSAndroid Build Coastguard Worker
1651*a67afe4dSAndroid Build Coastguard Worker# func_add_hook FUNC_NAME HOOK_FUNC
1652*a67afe4dSAndroid Build Coastguard Worker# ---------------------------------
1653*a67afe4dSAndroid Build Coastguard Worker# Request that FUNC_NAME call HOOK_FUNC before it returns.  FUNC_NAME must
1654*a67afe4dSAndroid Build Coastguard Worker# first have been declared "hookable" by a call to 'func_hookable'.
1655*a67afe4dSAndroid Build Coastguard Workerfunc_add_hook ()
1656*a67afe4dSAndroid Build Coastguard Worker{
1657*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1658*a67afe4dSAndroid Build Coastguard Worker
1659*a67afe4dSAndroid Build Coastguard Worker    case " $hookable_fns " in
1660*a67afe4dSAndroid Build Coastguard Worker      *" $1 "*) ;;
1661*a67afe4dSAndroid Build Coastguard Worker      *) func_fatal_error "'$1' does not accept hook functions." ;;
1662*a67afe4dSAndroid Build Coastguard Worker    esac
1663*a67afe4dSAndroid Build Coastguard Worker
1664*a67afe4dSAndroid Build Coastguard Worker    eval func_append ${1}_hooks '" $2"'
1665*a67afe4dSAndroid Build Coastguard Worker}
1666*a67afe4dSAndroid Build Coastguard Worker
1667*a67afe4dSAndroid Build Coastguard Worker
1668*a67afe4dSAndroid Build Coastguard Worker# func_remove_hook FUNC_NAME HOOK_FUNC
1669*a67afe4dSAndroid Build Coastguard Worker# ------------------------------------
1670*a67afe4dSAndroid Build Coastguard Worker# Remove HOOK_FUNC from the list of hook functions to be called by
1671*a67afe4dSAndroid Build Coastguard Worker# FUNC_NAME.
1672*a67afe4dSAndroid Build Coastguard Workerfunc_remove_hook ()
1673*a67afe4dSAndroid Build Coastguard Worker{
1674*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1675*a67afe4dSAndroid Build Coastguard Worker
1676*a67afe4dSAndroid Build Coastguard Worker    eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`'
1677*a67afe4dSAndroid Build Coastguard Worker}
1678*a67afe4dSAndroid Build Coastguard Worker
1679*a67afe4dSAndroid Build Coastguard Worker
1680*a67afe4dSAndroid Build Coastguard Worker# func_propagate_result FUNC_NAME_A FUNC_NAME_B
1681*a67afe4dSAndroid Build Coastguard Worker# ---------------------------------------------
1682*a67afe4dSAndroid Build Coastguard Worker# If the *_result variable of FUNC_NAME_A _is set_, assign its value to
1683*a67afe4dSAndroid Build Coastguard Worker# *_result variable of FUNC_NAME_B.
1684*a67afe4dSAndroid Build Coastguard Workerfunc_propagate_result ()
1685*a67afe4dSAndroid Build Coastguard Worker{
1686*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1687*a67afe4dSAndroid Build Coastguard Worker
1688*a67afe4dSAndroid Build Coastguard Worker    func_propagate_result_result=:
1689*a67afe4dSAndroid Build Coastguard Worker    if eval "test \"\${${1}_result+set}\" = set"
1690*a67afe4dSAndroid Build Coastguard Worker    then
1691*a67afe4dSAndroid Build Coastguard Worker      eval "${2}_result=\$${1}_result"
1692*a67afe4dSAndroid Build Coastguard Worker    else
1693*a67afe4dSAndroid Build Coastguard Worker      func_propagate_result_result=false
1694*a67afe4dSAndroid Build Coastguard Worker    fi
1695*a67afe4dSAndroid Build Coastguard Worker}
1696*a67afe4dSAndroid Build Coastguard Worker
1697*a67afe4dSAndroid Build Coastguard Worker
1698*a67afe4dSAndroid Build Coastguard Worker# func_run_hooks FUNC_NAME [ARG]...
1699*a67afe4dSAndroid Build Coastguard Worker# ---------------------------------
1700*a67afe4dSAndroid Build Coastguard Worker# Run all hook functions registered to FUNC_NAME.
1701*a67afe4dSAndroid Build Coastguard Worker# It's assumed that the list of hook functions contains nothing more
1702*a67afe4dSAndroid Build Coastguard Worker# than a whitespace-delimited list of legal shell function names, and
1703*a67afe4dSAndroid Build Coastguard Worker# no effort is wasted trying to catch shell meta-characters or preserve
1704*a67afe4dSAndroid Build Coastguard Worker# whitespace.
1705*a67afe4dSAndroid Build Coastguard Workerfunc_run_hooks ()
1706*a67afe4dSAndroid Build Coastguard Worker{
1707*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1708*a67afe4dSAndroid Build Coastguard Worker
1709*a67afe4dSAndroid Build Coastguard Worker    case " $hookable_fns " in
1710*a67afe4dSAndroid Build Coastguard Worker      *" $1 "*) ;;
1711*a67afe4dSAndroid Build Coastguard Worker      *) func_fatal_error "'$1' does not support hook functions." ;;
1712*a67afe4dSAndroid Build Coastguard Worker    esac
1713*a67afe4dSAndroid Build Coastguard Worker
1714*a67afe4dSAndroid Build Coastguard Worker    eval _G_hook_fns=\$$1_hooks; shift
1715*a67afe4dSAndroid Build Coastguard Worker
1716*a67afe4dSAndroid Build Coastguard Worker    for _G_hook in $_G_hook_fns; do
1717*a67afe4dSAndroid Build Coastguard Worker      func_unset "${_G_hook}_result"
1718*a67afe4dSAndroid Build Coastguard Worker      eval $_G_hook '${1+"$@"}'
1719*a67afe4dSAndroid Build Coastguard Worker      func_propagate_result $_G_hook func_run_hooks
1720*a67afe4dSAndroid Build Coastguard Worker      if $func_propagate_result_result; then
1721*a67afe4dSAndroid Build Coastguard Worker        eval set dummy "$func_run_hooks_result"; shift
1722*a67afe4dSAndroid Build Coastguard Worker      fi
1723*a67afe4dSAndroid Build Coastguard Worker    done
1724*a67afe4dSAndroid Build Coastguard Worker}
1725*a67afe4dSAndroid Build Coastguard Worker
1726*a67afe4dSAndroid Build Coastguard Worker
1727*a67afe4dSAndroid Build Coastguard Worker
1728*a67afe4dSAndroid Build Coastguard Worker## --------------- ##
1729*a67afe4dSAndroid Build Coastguard Worker## Option parsing. ##
1730*a67afe4dSAndroid Build Coastguard Worker## --------------- ##
1731*a67afe4dSAndroid Build Coastguard Worker
1732*a67afe4dSAndroid Build Coastguard Worker# In order to add your own option parsing hooks, you must accept the
1733*a67afe4dSAndroid Build Coastguard Worker# full positional parameter list from your hook function.  You may remove
1734*a67afe4dSAndroid Build Coastguard Worker# or edit any options that you action, and then pass back the remaining
1735*a67afe4dSAndroid Build Coastguard Worker# unprocessed options in '<hooked_function_name>_result', escaped
1736*a67afe4dSAndroid Build Coastguard Worker# suitably for 'eval'.
1737*a67afe4dSAndroid Build Coastguard Worker#
1738*a67afe4dSAndroid Build Coastguard Worker# The '<hooked_function_name>_result' variable is automatically unset
1739*a67afe4dSAndroid Build Coastguard Worker# before your hook gets called; for best performance, only set the
1740*a67afe4dSAndroid Build Coastguard Worker# *_result variable when necessary (i.e. don't call the 'func_quote'
1741*a67afe4dSAndroid Build Coastguard Worker# function unnecessarily because it can be an expensive operation on some
1742*a67afe4dSAndroid Build Coastguard Worker# machines).
1743*a67afe4dSAndroid Build Coastguard Worker#
1744*a67afe4dSAndroid Build Coastguard Worker# Like this:
1745*a67afe4dSAndroid Build Coastguard Worker#
1746*a67afe4dSAndroid Build Coastguard Worker#    my_options_prep ()
1747*a67afe4dSAndroid Build Coastguard Worker#    {
1748*a67afe4dSAndroid Build Coastguard Worker#        $debug_cmd
1749*a67afe4dSAndroid Build Coastguard Worker#
1750*a67afe4dSAndroid Build Coastguard Worker#        # Extend the existing usage message.
1751*a67afe4dSAndroid Build Coastguard Worker#        usage_message=$usage_message'
1752*a67afe4dSAndroid Build Coastguard Worker#      -s, --silent       don'\''t print informational messages
1753*a67afe4dSAndroid Build Coastguard Worker#    '
1754*a67afe4dSAndroid Build Coastguard Worker#        # No change in '$@' (ignored completely by this hook).  Leave
1755*a67afe4dSAndroid Build Coastguard Worker#        # my_options_prep_result variable intact.
1756*a67afe4dSAndroid Build Coastguard Worker#    }
1757*a67afe4dSAndroid Build Coastguard Worker#    func_add_hook func_options_prep my_options_prep
1758*a67afe4dSAndroid Build Coastguard Worker#
1759*a67afe4dSAndroid Build Coastguard Worker#
1760*a67afe4dSAndroid Build Coastguard Worker#    my_silent_option ()
1761*a67afe4dSAndroid Build Coastguard Worker#    {
1762*a67afe4dSAndroid Build Coastguard Worker#        $debug_cmd
1763*a67afe4dSAndroid Build Coastguard Worker#
1764*a67afe4dSAndroid Build Coastguard Worker#        args_changed=false
1765*a67afe4dSAndroid Build Coastguard Worker#
1766*a67afe4dSAndroid Build Coastguard Worker#        # Note that, for efficiency, we parse as many options as we can
1767*a67afe4dSAndroid Build Coastguard Worker#        # recognise in a loop before passing the remainder back to the
1768*a67afe4dSAndroid Build Coastguard Worker#        # caller on the first unrecognised argument we encounter.
1769*a67afe4dSAndroid Build Coastguard Worker#        while test $# -gt 0; do
1770*a67afe4dSAndroid Build Coastguard Worker#          opt=$1; shift
1771*a67afe4dSAndroid Build Coastguard Worker#          case $opt in
1772*a67afe4dSAndroid Build Coastguard Worker#            --silent|-s) opt_silent=:
1773*a67afe4dSAndroid Build Coastguard Worker#                         args_changed=:
1774*a67afe4dSAndroid Build Coastguard Worker#                         ;;
1775*a67afe4dSAndroid Build Coastguard Worker#            # Separate non-argument short options:
1776*a67afe4dSAndroid Build Coastguard Worker#            -s*)         func_split_short_opt "$_G_opt"
1777*a67afe4dSAndroid Build Coastguard Worker#                         set dummy "$func_split_short_opt_name" \
1778*a67afe4dSAndroid Build Coastguard Worker#                             "-$func_split_short_opt_arg" ${1+"$@"}
1779*a67afe4dSAndroid Build Coastguard Worker#                         shift
1780*a67afe4dSAndroid Build Coastguard Worker#                         args_changed=:
1781*a67afe4dSAndroid Build Coastguard Worker#                         ;;
1782*a67afe4dSAndroid Build Coastguard Worker#            *)           # Make sure the first unrecognised option "$_G_opt"
1783*a67afe4dSAndroid Build Coastguard Worker#                         # is added back to "$@" in case we need it later,
1784*a67afe4dSAndroid Build Coastguard Worker#                         # if $args_changed was set to 'true'.
1785*a67afe4dSAndroid Build Coastguard Worker#                         set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
1786*a67afe4dSAndroid Build Coastguard Worker#          esac
1787*a67afe4dSAndroid Build Coastguard Worker#        done
1788*a67afe4dSAndroid Build Coastguard Worker#
1789*a67afe4dSAndroid Build Coastguard Worker#        # Only call 'func_quote' here if we processed at least one argument.
1790*a67afe4dSAndroid Build Coastguard Worker#        if $args_changed; then
1791*a67afe4dSAndroid Build Coastguard Worker#          func_quote eval ${1+"$@"}
1792*a67afe4dSAndroid Build Coastguard Worker#          my_silent_option_result=$func_quote_result
1793*a67afe4dSAndroid Build Coastguard Worker#        fi
1794*a67afe4dSAndroid Build Coastguard Worker#    }
1795*a67afe4dSAndroid Build Coastguard Worker#    func_add_hook func_parse_options my_silent_option
1796*a67afe4dSAndroid Build Coastguard Worker#
1797*a67afe4dSAndroid Build Coastguard Worker#
1798*a67afe4dSAndroid Build Coastguard Worker#    my_option_validation ()
1799*a67afe4dSAndroid Build Coastguard Worker#    {
1800*a67afe4dSAndroid Build Coastguard Worker#        $debug_cmd
1801*a67afe4dSAndroid Build Coastguard Worker#
1802*a67afe4dSAndroid Build Coastguard Worker#        $opt_silent && $opt_verbose && func_fatal_help "\
1803*a67afe4dSAndroid Build Coastguard Worker#    '--silent' and '--verbose' options are mutually exclusive."
1804*a67afe4dSAndroid Build Coastguard Worker#    }
1805*a67afe4dSAndroid Build Coastguard Worker#    func_add_hook func_validate_options my_option_validation
1806*a67afe4dSAndroid Build Coastguard Worker#
1807*a67afe4dSAndroid Build Coastguard Worker# You'll also need to manually amend $usage_message to reflect the extra
1808*a67afe4dSAndroid Build Coastguard Worker# options you parse.  It's preferable to append if you can, so that
1809*a67afe4dSAndroid Build Coastguard Worker# multiple option parsing hooks can be added safely.
1810*a67afe4dSAndroid Build Coastguard Worker
1811*a67afe4dSAndroid Build Coastguard Worker
1812*a67afe4dSAndroid Build Coastguard Worker# func_options_finish [ARG]...
1813*a67afe4dSAndroid Build Coastguard Worker# ----------------------------
1814*a67afe4dSAndroid Build Coastguard Worker# Finishing the option parse loop (call 'func_options' hooks ATM).
1815*a67afe4dSAndroid Build Coastguard Workerfunc_options_finish ()
1816*a67afe4dSAndroid Build Coastguard Worker{
1817*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1818*a67afe4dSAndroid Build Coastguard Worker
1819*a67afe4dSAndroid Build Coastguard Worker    func_run_hooks func_options ${1+"$@"}
1820*a67afe4dSAndroid Build Coastguard Worker    func_propagate_result func_run_hooks func_options_finish
1821*a67afe4dSAndroid Build Coastguard Worker}
1822*a67afe4dSAndroid Build Coastguard Worker
1823*a67afe4dSAndroid Build Coastguard Worker
1824*a67afe4dSAndroid Build Coastguard Worker# func_options [ARG]...
1825*a67afe4dSAndroid Build Coastguard Worker# ---------------------
1826*a67afe4dSAndroid Build Coastguard Worker# All the functions called inside func_options are hookable. See the
1827*a67afe4dSAndroid Build Coastguard Worker# individual implementations for details.
1828*a67afe4dSAndroid Build Coastguard Workerfunc_hookable func_options
1829*a67afe4dSAndroid Build Coastguard Workerfunc_options ()
1830*a67afe4dSAndroid Build Coastguard Worker{
1831*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1832*a67afe4dSAndroid Build Coastguard Worker
1833*a67afe4dSAndroid Build Coastguard Worker    _G_options_quoted=false
1834*a67afe4dSAndroid Build Coastguard Worker
1835*a67afe4dSAndroid Build Coastguard Worker    for my_func in options_prep parse_options validate_options options_finish
1836*a67afe4dSAndroid Build Coastguard Worker    do
1837*a67afe4dSAndroid Build Coastguard Worker      func_unset func_${my_func}_result
1838*a67afe4dSAndroid Build Coastguard Worker      func_unset func_run_hooks_result
1839*a67afe4dSAndroid Build Coastguard Worker      eval func_$my_func '${1+"$@"}'
1840*a67afe4dSAndroid Build Coastguard Worker      func_propagate_result func_$my_func func_options
1841*a67afe4dSAndroid Build Coastguard Worker      if $func_propagate_result_result; then
1842*a67afe4dSAndroid Build Coastguard Worker        eval set dummy "$func_options_result"; shift
1843*a67afe4dSAndroid Build Coastguard Worker        _G_options_quoted=:
1844*a67afe4dSAndroid Build Coastguard Worker      fi
1845*a67afe4dSAndroid Build Coastguard Worker    done
1846*a67afe4dSAndroid Build Coastguard Worker
1847*a67afe4dSAndroid Build Coastguard Worker    $_G_options_quoted || {
1848*a67afe4dSAndroid Build Coastguard Worker      # As we (func_options) are top-level options-parser function and
1849*a67afe4dSAndroid Build Coastguard Worker      # nobody quoted "$@" for us yet, we need to do it explicitly for
1850*a67afe4dSAndroid Build Coastguard Worker      # caller.
1851*a67afe4dSAndroid Build Coastguard Worker      func_quote eval ${1+"$@"}
1852*a67afe4dSAndroid Build Coastguard Worker      func_options_result=$func_quote_result
1853*a67afe4dSAndroid Build Coastguard Worker    }
1854*a67afe4dSAndroid Build Coastguard Worker}
1855*a67afe4dSAndroid Build Coastguard Worker
1856*a67afe4dSAndroid Build Coastguard Worker
1857*a67afe4dSAndroid Build Coastguard Worker# func_options_prep [ARG]...
1858*a67afe4dSAndroid Build Coastguard Worker# --------------------------
1859*a67afe4dSAndroid Build Coastguard Worker# All initialisations required before starting the option parse loop.
1860*a67afe4dSAndroid Build Coastguard Worker# Note that when calling hook functions, we pass through the list of
1861*a67afe4dSAndroid Build Coastguard Worker# positional parameters.  If a hook function modifies that list, and
1862*a67afe4dSAndroid Build Coastguard Worker# needs to propagate that back to rest of this script, then the complete
1863*a67afe4dSAndroid Build Coastguard Worker# modified list must be put in 'func_run_hooks_result' before returning.
1864*a67afe4dSAndroid Build Coastguard Workerfunc_hookable func_options_prep
1865*a67afe4dSAndroid Build Coastguard Workerfunc_options_prep ()
1866*a67afe4dSAndroid Build Coastguard Worker{
1867*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1868*a67afe4dSAndroid Build Coastguard Worker
1869*a67afe4dSAndroid Build Coastguard Worker    # Option defaults:
1870*a67afe4dSAndroid Build Coastguard Worker    opt_verbose=false
1871*a67afe4dSAndroid Build Coastguard Worker    opt_warning_types=
1872*a67afe4dSAndroid Build Coastguard Worker
1873*a67afe4dSAndroid Build Coastguard Worker    func_run_hooks func_options_prep ${1+"$@"}
1874*a67afe4dSAndroid Build Coastguard Worker    func_propagate_result func_run_hooks func_options_prep
1875*a67afe4dSAndroid Build Coastguard Worker}
1876*a67afe4dSAndroid Build Coastguard Worker
1877*a67afe4dSAndroid Build Coastguard Worker
1878*a67afe4dSAndroid Build Coastguard Worker# func_parse_options [ARG]...
1879*a67afe4dSAndroid Build Coastguard Worker# ---------------------------
1880*a67afe4dSAndroid Build Coastguard Worker# The main option parsing loop.
1881*a67afe4dSAndroid Build Coastguard Workerfunc_hookable func_parse_options
1882*a67afe4dSAndroid Build Coastguard Workerfunc_parse_options ()
1883*a67afe4dSAndroid Build Coastguard Worker{
1884*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
1885*a67afe4dSAndroid Build Coastguard Worker
1886*a67afe4dSAndroid Build Coastguard Worker    _G_parse_options_requote=false
1887*a67afe4dSAndroid Build Coastguard Worker    # this just eases exit handling
1888*a67afe4dSAndroid Build Coastguard Worker    while test $# -gt 0; do
1889*a67afe4dSAndroid Build Coastguard Worker      # Defer to hook functions for initial option parsing, so they
1890*a67afe4dSAndroid Build Coastguard Worker      # get priority in the event of reusing an option name.
1891*a67afe4dSAndroid Build Coastguard Worker      func_run_hooks func_parse_options ${1+"$@"}
1892*a67afe4dSAndroid Build Coastguard Worker      func_propagate_result func_run_hooks func_parse_options
1893*a67afe4dSAndroid Build Coastguard Worker      if $func_propagate_result_result; then
1894*a67afe4dSAndroid Build Coastguard Worker        eval set dummy "$func_parse_options_result"; shift
1895*a67afe4dSAndroid Build Coastguard Worker        # Even though we may have changed "$@", we passed the "$@" array
1896*a67afe4dSAndroid Build Coastguard Worker        # down into the hook and it quoted it for us (because we are in
1897*a67afe4dSAndroid Build Coastguard Worker        # this if-branch).  No need to quote it again.
1898*a67afe4dSAndroid Build Coastguard Worker        _G_parse_options_requote=false
1899*a67afe4dSAndroid Build Coastguard Worker      fi
1900*a67afe4dSAndroid Build Coastguard Worker
1901*a67afe4dSAndroid Build Coastguard Worker      # Break out of the loop if we already parsed every option.
1902*a67afe4dSAndroid Build Coastguard Worker      test $# -gt 0 || break
1903*a67afe4dSAndroid Build Coastguard Worker
1904*a67afe4dSAndroid Build Coastguard Worker      # We expect that one of the options parsed in this function matches
1905*a67afe4dSAndroid Build Coastguard Worker      # and thus we remove _G_opt from "$@" and need to re-quote.
1906*a67afe4dSAndroid Build Coastguard Worker      _G_match_parse_options=:
1907*a67afe4dSAndroid Build Coastguard Worker      _G_opt=$1
1908*a67afe4dSAndroid Build Coastguard Worker      shift
1909*a67afe4dSAndroid Build Coastguard Worker      case $_G_opt in
1910*a67afe4dSAndroid Build Coastguard Worker        --debug|-x)   debug_cmd='set -x'
1911*a67afe4dSAndroid Build Coastguard Worker                      func_echo "enabling shell trace mode" >&2
1912*a67afe4dSAndroid Build Coastguard Worker                      $debug_cmd
1913*a67afe4dSAndroid Build Coastguard Worker                      ;;
1914*a67afe4dSAndroid Build Coastguard Worker
1915*a67afe4dSAndroid Build Coastguard Worker        --no-warnings|--no-warning|--no-warn)
1916*a67afe4dSAndroid Build Coastguard Worker                      set dummy --warnings none ${1+"$@"}
1917*a67afe4dSAndroid Build Coastguard Worker                      shift
1918*a67afe4dSAndroid Build Coastguard Worker		      ;;
1919*a67afe4dSAndroid Build Coastguard Worker
1920*a67afe4dSAndroid Build Coastguard Worker        --warnings|--warning|-W)
1921*a67afe4dSAndroid Build Coastguard Worker                      if test $# = 0 && func_missing_arg $_G_opt; then
1922*a67afe4dSAndroid Build Coastguard Worker                        _G_parse_options_requote=:
1923*a67afe4dSAndroid Build Coastguard Worker                        break
1924*a67afe4dSAndroid Build Coastguard Worker                      fi
1925*a67afe4dSAndroid Build Coastguard Worker                      case " $warning_categories $1" in
1926*a67afe4dSAndroid Build Coastguard Worker                        *" $1 "*)
1927*a67afe4dSAndroid Build Coastguard Worker                          # trailing space prevents matching last $1 above
1928*a67afe4dSAndroid Build Coastguard Worker                          func_append_uniq opt_warning_types " $1"
1929*a67afe4dSAndroid Build Coastguard Worker                          ;;
1930*a67afe4dSAndroid Build Coastguard Worker                        *all)
1931*a67afe4dSAndroid Build Coastguard Worker                          opt_warning_types=$warning_categories
1932*a67afe4dSAndroid Build Coastguard Worker                          ;;
1933*a67afe4dSAndroid Build Coastguard Worker                        *none)
1934*a67afe4dSAndroid Build Coastguard Worker                          opt_warning_types=none
1935*a67afe4dSAndroid Build Coastguard Worker                          warning_func=:
1936*a67afe4dSAndroid Build Coastguard Worker                          ;;
1937*a67afe4dSAndroid Build Coastguard Worker                        *error)
1938*a67afe4dSAndroid Build Coastguard Worker                          opt_warning_types=$warning_categories
1939*a67afe4dSAndroid Build Coastguard Worker                          warning_func=func_fatal_error
1940*a67afe4dSAndroid Build Coastguard Worker                          ;;
1941*a67afe4dSAndroid Build Coastguard Worker                        *)
1942*a67afe4dSAndroid Build Coastguard Worker                          func_fatal_error \
1943*a67afe4dSAndroid Build Coastguard Worker                             "unsupported warning category: '$1'"
1944*a67afe4dSAndroid Build Coastguard Worker                          ;;
1945*a67afe4dSAndroid Build Coastguard Worker                      esac
1946*a67afe4dSAndroid Build Coastguard Worker                      shift
1947*a67afe4dSAndroid Build Coastguard Worker                      ;;
1948*a67afe4dSAndroid Build Coastguard Worker
1949*a67afe4dSAndroid Build Coastguard Worker        --verbose|-v) opt_verbose=: ;;
1950*a67afe4dSAndroid Build Coastguard Worker        --version)    func_version ;;
1951*a67afe4dSAndroid Build Coastguard Worker        -\?|-h)       func_usage ;;
1952*a67afe4dSAndroid Build Coastguard Worker        --help)       func_help ;;
1953*a67afe4dSAndroid Build Coastguard Worker
1954*a67afe4dSAndroid Build Coastguard Worker	# Separate optargs to long options (plugins may need this):
1955*a67afe4dSAndroid Build Coastguard Worker	--*=*)        func_split_equals "$_G_opt"
1956*a67afe4dSAndroid Build Coastguard Worker	              set dummy "$func_split_equals_lhs" \
1957*a67afe4dSAndroid Build Coastguard Worker                          "$func_split_equals_rhs" ${1+"$@"}
1958*a67afe4dSAndroid Build Coastguard Worker                      shift
1959*a67afe4dSAndroid Build Coastguard Worker                      ;;
1960*a67afe4dSAndroid Build Coastguard Worker
1961*a67afe4dSAndroid Build Coastguard Worker       # Separate optargs to short options:
1962*a67afe4dSAndroid Build Coastguard Worker        -W*)
1963*a67afe4dSAndroid Build Coastguard Worker                      func_split_short_opt "$_G_opt"
1964*a67afe4dSAndroid Build Coastguard Worker                      set dummy "$func_split_short_opt_name" \
1965*a67afe4dSAndroid Build Coastguard Worker                          "$func_split_short_opt_arg" ${1+"$@"}
1966*a67afe4dSAndroid Build Coastguard Worker                      shift
1967*a67afe4dSAndroid Build Coastguard Worker                      ;;
1968*a67afe4dSAndroid Build Coastguard Worker
1969*a67afe4dSAndroid Build Coastguard Worker        # Separate non-argument short options:
1970*a67afe4dSAndroid Build Coastguard Worker        -\?*|-h*|-v*|-x*)
1971*a67afe4dSAndroid Build Coastguard Worker                      func_split_short_opt "$_G_opt"
1972*a67afe4dSAndroid Build Coastguard Worker                      set dummy "$func_split_short_opt_name" \
1973*a67afe4dSAndroid Build Coastguard Worker                          "-$func_split_short_opt_arg" ${1+"$@"}
1974*a67afe4dSAndroid Build Coastguard Worker                      shift
1975*a67afe4dSAndroid Build Coastguard Worker                      ;;
1976*a67afe4dSAndroid Build Coastguard Worker
1977*a67afe4dSAndroid Build Coastguard Worker        --)           _G_parse_options_requote=: ; break ;;
1978*a67afe4dSAndroid Build Coastguard Worker        -*)           func_fatal_help "unrecognised option: '$_G_opt'" ;;
1979*a67afe4dSAndroid Build Coastguard Worker        *)            set dummy "$_G_opt" ${1+"$@"}; shift
1980*a67afe4dSAndroid Build Coastguard Worker                      _G_match_parse_options=false
1981*a67afe4dSAndroid Build Coastguard Worker                      break
1982*a67afe4dSAndroid Build Coastguard Worker                      ;;
1983*a67afe4dSAndroid Build Coastguard Worker      esac
1984*a67afe4dSAndroid Build Coastguard Worker
1985*a67afe4dSAndroid Build Coastguard Worker      if $_G_match_parse_options; then
1986*a67afe4dSAndroid Build Coastguard Worker        _G_parse_options_requote=:
1987*a67afe4dSAndroid Build Coastguard Worker      fi
1988*a67afe4dSAndroid Build Coastguard Worker    done
1989*a67afe4dSAndroid Build Coastguard Worker
1990*a67afe4dSAndroid Build Coastguard Worker    if $_G_parse_options_requote; then
1991*a67afe4dSAndroid Build Coastguard Worker      # save modified positional parameters for caller
1992*a67afe4dSAndroid Build Coastguard Worker      func_quote eval ${1+"$@"}
1993*a67afe4dSAndroid Build Coastguard Worker      func_parse_options_result=$func_quote_result
1994*a67afe4dSAndroid Build Coastguard Worker    fi
1995*a67afe4dSAndroid Build Coastguard Worker}
1996*a67afe4dSAndroid Build Coastguard Worker
1997*a67afe4dSAndroid Build Coastguard Worker
1998*a67afe4dSAndroid Build Coastguard Worker# func_validate_options [ARG]...
1999*a67afe4dSAndroid Build Coastguard Worker# ------------------------------
2000*a67afe4dSAndroid Build Coastguard Worker# Perform any sanity checks on option settings and/or unconsumed
2001*a67afe4dSAndroid Build Coastguard Worker# arguments.
2002*a67afe4dSAndroid Build Coastguard Workerfunc_hookable func_validate_options
2003*a67afe4dSAndroid Build Coastguard Workerfunc_validate_options ()
2004*a67afe4dSAndroid Build Coastguard Worker{
2005*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
2006*a67afe4dSAndroid Build Coastguard Worker
2007*a67afe4dSAndroid Build Coastguard Worker    # Display all warnings if -W was not given.
2008*a67afe4dSAndroid Build Coastguard Worker    test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"
2009*a67afe4dSAndroid Build Coastguard Worker
2010*a67afe4dSAndroid Build Coastguard Worker    func_run_hooks func_validate_options ${1+"$@"}
2011*a67afe4dSAndroid Build Coastguard Worker    func_propagate_result func_run_hooks func_validate_options
2012*a67afe4dSAndroid Build Coastguard Worker
2013*a67afe4dSAndroid Build Coastguard Worker    # Bail if the options were screwed!
2014*a67afe4dSAndroid Build Coastguard Worker    $exit_cmd $EXIT_FAILURE
2015*a67afe4dSAndroid Build Coastguard Worker}
2016*a67afe4dSAndroid Build Coastguard Worker
2017*a67afe4dSAndroid Build Coastguard Worker
2018*a67afe4dSAndroid Build Coastguard Worker
2019*a67afe4dSAndroid Build Coastguard Worker## ----------------- ##
2020*a67afe4dSAndroid Build Coastguard Worker## Helper functions. ##
2021*a67afe4dSAndroid Build Coastguard Worker## ----------------- ##
2022*a67afe4dSAndroid Build Coastguard Worker
2023*a67afe4dSAndroid Build Coastguard Worker# This section contains the helper functions used by the rest of the
2024*a67afe4dSAndroid Build Coastguard Worker# hookable option parser framework in ascii-betical order.
2025*a67afe4dSAndroid Build Coastguard Worker
2026*a67afe4dSAndroid Build Coastguard Worker
2027*a67afe4dSAndroid Build Coastguard Worker# func_fatal_help ARG...
2028*a67afe4dSAndroid Build Coastguard Worker# ----------------------
2029*a67afe4dSAndroid Build Coastguard Worker# Echo program name prefixed message to standard error, followed by
2030*a67afe4dSAndroid Build Coastguard Worker# a help hint, and exit.
2031*a67afe4dSAndroid Build Coastguard Workerfunc_fatal_help ()
2032*a67afe4dSAndroid Build Coastguard Worker{
2033*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
2034*a67afe4dSAndroid Build Coastguard Worker
2035*a67afe4dSAndroid Build Coastguard Worker    eval \$ECHO \""Usage: $usage"\"
2036*a67afe4dSAndroid Build Coastguard Worker    eval \$ECHO \""$fatal_help"\"
2037*a67afe4dSAndroid Build Coastguard Worker    func_error ${1+"$@"}
2038*a67afe4dSAndroid Build Coastguard Worker    exit $EXIT_FAILURE
2039*a67afe4dSAndroid Build Coastguard Worker}
2040*a67afe4dSAndroid Build Coastguard Worker
2041*a67afe4dSAndroid Build Coastguard Worker
2042*a67afe4dSAndroid Build Coastguard Worker# func_help
2043*a67afe4dSAndroid Build Coastguard Worker# ---------
2044*a67afe4dSAndroid Build Coastguard Worker# Echo long help message to standard output and exit.
2045*a67afe4dSAndroid Build Coastguard Workerfunc_help ()
2046*a67afe4dSAndroid Build Coastguard Worker{
2047*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
2048*a67afe4dSAndroid Build Coastguard Worker
2049*a67afe4dSAndroid Build Coastguard Worker    func_usage_message
2050*a67afe4dSAndroid Build Coastguard Worker    $ECHO "$long_help_message"
2051*a67afe4dSAndroid Build Coastguard Worker    exit 0
2052*a67afe4dSAndroid Build Coastguard Worker}
2053*a67afe4dSAndroid Build Coastguard Worker
2054*a67afe4dSAndroid Build Coastguard Worker
2055*a67afe4dSAndroid Build Coastguard Worker# func_missing_arg ARGNAME
2056*a67afe4dSAndroid Build Coastguard Worker# ------------------------
2057*a67afe4dSAndroid Build Coastguard Worker# Echo program name prefixed message to standard error and set global
2058*a67afe4dSAndroid Build Coastguard Worker# exit_cmd.
2059*a67afe4dSAndroid Build Coastguard Workerfunc_missing_arg ()
2060*a67afe4dSAndroid Build Coastguard Worker{
2061*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
2062*a67afe4dSAndroid Build Coastguard Worker
2063*a67afe4dSAndroid Build Coastguard Worker    func_error "Missing argument for '$1'."
2064*a67afe4dSAndroid Build Coastguard Worker    exit_cmd=exit
2065*a67afe4dSAndroid Build Coastguard Worker}
2066*a67afe4dSAndroid Build Coastguard Worker
2067*a67afe4dSAndroid Build Coastguard Worker
2068*a67afe4dSAndroid Build Coastguard Worker# func_split_equals STRING
2069*a67afe4dSAndroid Build Coastguard Worker# ------------------------
2070*a67afe4dSAndroid Build Coastguard Worker# Set func_split_equals_lhs and func_split_equals_rhs shell variables
2071*a67afe4dSAndroid Build Coastguard Worker# after splitting STRING at the '=' sign.
2072*a67afe4dSAndroid Build Coastguard Workertest -z "$_G_HAVE_XSI_OPS" \
2073*a67afe4dSAndroid Build Coastguard Worker    && (eval 'x=a/b/c;
2074*a67afe4dSAndroid Build Coastguard Worker      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
2075*a67afe4dSAndroid Build Coastguard Worker    && _G_HAVE_XSI_OPS=yes
2076*a67afe4dSAndroid Build Coastguard Worker
2077*a67afe4dSAndroid Build Coastguard Workerif test yes = "$_G_HAVE_XSI_OPS"
2078*a67afe4dSAndroid Build Coastguard Workerthen
2079*a67afe4dSAndroid Build Coastguard Worker  # This is an XSI compatible shell, allowing a faster implementation...
2080*a67afe4dSAndroid Build Coastguard Worker  eval 'func_split_equals ()
2081*a67afe4dSAndroid Build Coastguard Worker  {
2082*a67afe4dSAndroid Build Coastguard Worker      $debug_cmd
2083*a67afe4dSAndroid Build Coastguard Worker
2084*a67afe4dSAndroid Build Coastguard Worker      func_split_equals_lhs=${1%%=*}
2085*a67afe4dSAndroid Build Coastguard Worker      func_split_equals_rhs=${1#*=}
2086*a67afe4dSAndroid Build Coastguard Worker      if test "x$func_split_equals_lhs" = "x$1"; then
2087*a67afe4dSAndroid Build Coastguard Worker        func_split_equals_rhs=
2088*a67afe4dSAndroid Build Coastguard Worker      fi
2089*a67afe4dSAndroid Build Coastguard Worker  }'
2090*a67afe4dSAndroid Build Coastguard Workerelse
2091*a67afe4dSAndroid Build Coastguard Worker  # ...otherwise fall back to using expr, which is often a shell builtin.
2092*a67afe4dSAndroid Build Coastguard Worker  func_split_equals ()
2093*a67afe4dSAndroid Build Coastguard Worker  {
2094*a67afe4dSAndroid Build Coastguard Worker      $debug_cmd
2095*a67afe4dSAndroid Build Coastguard Worker
2096*a67afe4dSAndroid Build Coastguard Worker      func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`
2097*a67afe4dSAndroid Build Coastguard Worker      func_split_equals_rhs=
2098*a67afe4dSAndroid Build Coastguard Worker      test "x$func_split_equals_lhs=" = "x$1" \
2099*a67afe4dSAndroid Build Coastguard Worker        || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`
2100*a67afe4dSAndroid Build Coastguard Worker  }
2101*a67afe4dSAndroid Build Coastguard Workerfi #func_split_equals
2102*a67afe4dSAndroid Build Coastguard Worker
2103*a67afe4dSAndroid Build Coastguard Worker
2104*a67afe4dSAndroid Build Coastguard Worker# func_split_short_opt SHORTOPT
2105*a67afe4dSAndroid Build Coastguard Worker# -----------------------------
2106*a67afe4dSAndroid Build Coastguard Worker# Set func_split_short_opt_name and func_split_short_opt_arg shell
2107*a67afe4dSAndroid Build Coastguard Worker# variables after splitting SHORTOPT after the 2nd character.
2108*a67afe4dSAndroid Build Coastguard Workerif test yes = "$_G_HAVE_XSI_OPS"
2109*a67afe4dSAndroid Build Coastguard Workerthen
2110*a67afe4dSAndroid Build Coastguard Worker  # This is an XSI compatible shell, allowing a faster implementation...
2111*a67afe4dSAndroid Build Coastguard Worker  eval 'func_split_short_opt ()
2112*a67afe4dSAndroid Build Coastguard Worker  {
2113*a67afe4dSAndroid Build Coastguard Worker      $debug_cmd
2114*a67afe4dSAndroid Build Coastguard Worker
2115*a67afe4dSAndroid Build Coastguard Worker      func_split_short_opt_arg=${1#??}
2116*a67afe4dSAndroid Build Coastguard Worker      func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
2117*a67afe4dSAndroid Build Coastguard Worker  }'
2118*a67afe4dSAndroid Build Coastguard Workerelse
2119*a67afe4dSAndroid Build Coastguard Worker  # ...otherwise fall back to using expr, which is often a shell builtin.
2120*a67afe4dSAndroid Build Coastguard Worker  func_split_short_opt ()
2121*a67afe4dSAndroid Build Coastguard Worker  {
2122*a67afe4dSAndroid Build Coastguard Worker      $debug_cmd
2123*a67afe4dSAndroid Build Coastguard Worker
2124*a67afe4dSAndroid Build Coastguard Worker      func_split_short_opt_name=`expr "x$1" : 'x\(-.\)'`
2125*a67afe4dSAndroid Build Coastguard Worker      func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`
2126*a67afe4dSAndroid Build Coastguard Worker  }
2127*a67afe4dSAndroid Build Coastguard Workerfi #func_split_short_opt
2128*a67afe4dSAndroid Build Coastguard Worker
2129*a67afe4dSAndroid Build Coastguard Worker
2130*a67afe4dSAndroid Build Coastguard Worker# func_usage
2131*a67afe4dSAndroid Build Coastguard Worker# ----------
2132*a67afe4dSAndroid Build Coastguard Worker# Echo short help message to standard output and exit.
2133*a67afe4dSAndroid Build Coastguard Workerfunc_usage ()
2134*a67afe4dSAndroid Build Coastguard Worker{
2135*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
2136*a67afe4dSAndroid Build Coastguard Worker
2137*a67afe4dSAndroid Build Coastguard Worker    func_usage_message
2138*a67afe4dSAndroid Build Coastguard Worker    $ECHO "Run '$progname --help |${PAGER-more}' for full usage"
2139*a67afe4dSAndroid Build Coastguard Worker    exit 0
2140*a67afe4dSAndroid Build Coastguard Worker}
2141*a67afe4dSAndroid Build Coastguard Worker
2142*a67afe4dSAndroid Build Coastguard Worker
2143*a67afe4dSAndroid Build Coastguard Worker# func_usage_message
2144*a67afe4dSAndroid Build Coastguard Worker# ------------------
2145*a67afe4dSAndroid Build Coastguard Worker# Echo short help message to standard output.
2146*a67afe4dSAndroid Build Coastguard Workerfunc_usage_message ()
2147*a67afe4dSAndroid Build Coastguard Worker{
2148*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
2149*a67afe4dSAndroid Build Coastguard Worker
2150*a67afe4dSAndroid Build Coastguard Worker    eval \$ECHO \""Usage: $usage"\"
2151*a67afe4dSAndroid Build Coastguard Worker    echo
2152*a67afe4dSAndroid Build Coastguard Worker    $SED -n 's|^# ||
2153*a67afe4dSAndroid Build Coastguard Worker        /^Written by/{
2154*a67afe4dSAndroid Build Coastguard Worker          x;p;x
2155*a67afe4dSAndroid Build Coastguard Worker        }
2156*a67afe4dSAndroid Build Coastguard Worker	h
2157*a67afe4dSAndroid Build Coastguard Worker	/^Written by/q' < "$progpath"
2158*a67afe4dSAndroid Build Coastguard Worker    echo
2159*a67afe4dSAndroid Build Coastguard Worker    eval \$ECHO \""$usage_message"\"
2160*a67afe4dSAndroid Build Coastguard Worker}
2161*a67afe4dSAndroid Build Coastguard Worker
2162*a67afe4dSAndroid Build Coastguard Worker
2163*a67afe4dSAndroid Build Coastguard Worker# func_version
2164*a67afe4dSAndroid Build Coastguard Worker# ------------
2165*a67afe4dSAndroid Build Coastguard Worker# Echo version message to standard output and exit.
2166*a67afe4dSAndroid Build Coastguard Worker# The version message is extracted from the calling file's header
2167*a67afe4dSAndroid Build Coastguard Worker# comments, with leading '# ' stripped:
2168*a67afe4dSAndroid Build Coastguard Worker#   1. First display the progname and version
2169*a67afe4dSAndroid Build Coastguard Worker#   2. Followed by the header comment line matching  /^# Written by /
2170*a67afe4dSAndroid Build Coastguard Worker#   3. Then a blank line followed by the first following line matching
2171*a67afe4dSAndroid Build Coastguard Worker#      /^# Copyright /
2172*a67afe4dSAndroid Build Coastguard Worker#   4. Immediately followed by any lines between the previous matches,
2173*a67afe4dSAndroid Build Coastguard Worker#      except lines preceding the intervening completely blank line.
2174*a67afe4dSAndroid Build Coastguard Worker# For example, see the header comments of this file.
2175*a67afe4dSAndroid Build Coastguard Workerfunc_version ()
2176*a67afe4dSAndroid Build Coastguard Worker{
2177*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
2178*a67afe4dSAndroid Build Coastguard Worker
2179*a67afe4dSAndroid Build Coastguard Worker    printf '%s\n' "$progname $scriptversion"
2180*a67afe4dSAndroid Build Coastguard Worker    $SED -n '
2181*a67afe4dSAndroid Build Coastguard Worker        /^# Written by /!b
2182*a67afe4dSAndroid Build Coastguard Worker        s|^# ||; p; n
2183*a67afe4dSAndroid Build Coastguard Worker
2184*a67afe4dSAndroid Build Coastguard Worker        :fwd2blnk
2185*a67afe4dSAndroid Build Coastguard Worker        /./ {
2186*a67afe4dSAndroid Build Coastguard Worker          n
2187*a67afe4dSAndroid Build Coastguard Worker          b fwd2blnk
2188*a67afe4dSAndroid Build Coastguard Worker        }
2189*a67afe4dSAndroid Build Coastguard Worker        p; n
2190*a67afe4dSAndroid Build Coastguard Worker
2191*a67afe4dSAndroid Build Coastguard Worker        :holdwrnt
2192*a67afe4dSAndroid Build Coastguard Worker        s|^# ||
2193*a67afe4dSAndroid Build Coastguard Worker        s|^# *$||
2194*a67afe4dSAndroid Build Coastguard Worker        /^Copyright /!{
2195*a67afe4dSAndroid Build Coastguard Worker          /./H
2196*a67afe4dSAndroid Build Coastguard Worker          n
2197*a67afe4dSAndroid Build Coastguard Worker          b holdwrnt
2198*a67afe4dSAndroid Build Coastguard Worker        }
2199*a67afe4dSAndroid Build Coastguard Worker
2200*a67afe4dSAndroid Build Coastguard Worker        s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
2201*a67afe4dSAndroid Build Coastguard Worker        G
2202*a67afe4dSAndroid Build Coastguard Worker        s|\(\n\)\n*|\1|g
2203*a67afe4dSAndroid Build Coastguard Worker        p; q' < "$progpath"
2204*a67afe4dSAndroid Build Coastguard Worker
2205*a67afe4dSAndroid Build Coastguard Worker    exit $?
2206*a67afe4dSAndroid Build Coastguard Worker}
2207*a67afe4dSAndroid Build Coastguard Worker
2208*a67afe4dSAndroid Build Coastguard Worker
2209*a67afe4dSAndroid Build Coastguard Worker# Local variables:
2210*a67afe4dSAndroid Build Coastguard Worker# mode: shell-script
2211*a67afe4dSAndroid Build Coastguard Worker# sh-indentation: 2
2212*a67afe4dSAndroid Build Coastguard Worker# eval: (add-hook 'before-save-hook 'time-stamp)
2213*a67afe4dSAndroid Build Coastguard Worker# time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC"
2214*a67afe4dSAndroid Build Coastguard Worker# time-stamp-time-zone: "UTC"
2215*a67afe4dSAndroid Build Coastguard Worker# End:
2216*a67afe4dSAndroid Build Coastguard Worker
2217*a67afe4dSAndroid Build Coastguard Worker# Set a version string.
2218*a67afe4dSAndroid Build Coastguard Workerscriptversion='(GNU libtool) 2.4.7'
2219*a67afe4dSAndroid Build Coastguard Worker
2220*a67afe4dSAndroid Build Coastguard Worker
2221*a67afe4dSAndroid Build Coastguard Worker# func_echo ARG...
2222*a67afe4dSAndroid Build Coastguard Worker# ----------------
2223*a67afe4dSAndroid Build Coastguard Worker# Libtool also displays the current mode in messages, so override
2224*a67afe4dSAndroid Build Coastguard Worker# funclib.sh func_echo with this custom definition.
2225*a67afe4dSAndroid Build Coastguard Workerfunc_echo ()
2226*a67afe4dSAndroid Build Coastguard Worker{
2227*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
2228*a67afe4dSAndroid Build Coastguard Worker
2229*a67afe4dSAndroid Build Coastguard Worker    _G_message=$*
2230*a67afe4dSAndroid Build Coastguard Worker
2231*a67afe4dSAndroid Build Coastguard Worker    func_echo_IFS=$IFS
2232*a67afe4dSAndroid Build Coastguard Worker    IFS=$nl
2233*a67afe4dSAndroid Build Coastguard Worker    for _G_line in $_G_message; do
2234*a67afe4dSAndroid Build Coastguard Worker      IFS=$func_echo_IFS
2235*a67afe4dSAndroid Build Coastguard Worker      $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line"
2236*a67afe4dSAndroid Build Coastguard Worker    done
2237*a67afe4dSAndroid Build Coastguard Worker    IFS=$func_echo_IFS
2238*a67afe4dSAndroid Build Coastguard Worker}
2239*a67afe4dSAndroid Build Coastguard Worker
2240*a67afe4dSAndroid Build Coastguard Worker
2241*a67afe4dSAndroid Build Coastguard Worker# func_warning ARG...
2242*a67afe4dSAndroid Build Coastguard Worker# -------------------
2243*a67afe4dSAndroid Build Coastguard Worker# Libtool warnings are not categorized, so override funclib.sh
2244*a67afe4dSAndroid Build Coastguard Worker# func_warning with this simpler definition.
2245*a67afe4dSAndroid Build Coastguard Workerfunc_warning ()
2246*a67afe4dSAndroid Build Coastguard Worker{
2247*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
2248*a67afe4dSAndroid Build Coastguard Worker
2249*a67afe4dSAndroid Build Coastguard Worker    $warning_func ${1+"$@"}
2250*a67afe4dSAndroid Build Coastguard Worker}
2251*a67afe4dSAndroid Build Coastguard Worker
2252*a67afe4dSAndroid Build Coastguard Worker
2253*a67afe4dSAndroid Build Coastguard Worker## ---------------- ##
2254*a67afe4dSAndroid Build Coastguard Worker## Options parsing. ##
2255*a67afe4dSAndroid Build Coastguard Worker## ---------------- ##
2256*a67afe4dSAndroid Build Coastguard Worker
2257*a67afe4dSAndroid Build Coastguard Worker# Hook in the functions to make sure our own options are parsed during
2258*a67afe4dSAndroid Build Coastguard Worker# the option parsing loop.
2259*a67afe4dSAndroid Build Coastguard Worker
2260*a67afe4dSAndroid Build Coastguard Workerusage='$progpath [OPTION]... [MODE-ARG]...'
2261*a67afe4dSAndroid Build Coastguard Worker
2262*a67afe4dSAndroid Build Coastguard Worker# Short help message in response to '-h'.
2263*a67afe4dSAndroid Build Coastguard Workerusage_message="Options:
2264*a67afe4dSAndroid Build Coastguard Worker       --config             show all configuration variables
2265*a67afe4dSAndroid Build Coastguard Worker       --debug              enable verbose shell tracing
2266*a67afe4dSAndroid Build Coastguard Worker   -n, --dry-run            display commands without modifying any files
2267*a67afe4dSAndroid Build Coastguard Worker       --features           display basic configuration information and exit
2268*a67afe4dSAndroid Build Coastguard Worker       --mode=MODE          use operation mode MODE
2269*a67afe4dSAndroid Build Coastguard Worker       --no-warnings        equivalent to '-Wnone'
2270*a67afe4dSAndroid Build Coastguard Worker       --preserve-dup-deps  don't remove duplicate dependency libraries
2271*a67afe4dSAndroid Build Coastguard Worker       --quiet, --silent    don't print informational messages
2272*a67afe4dSAndroid Build Coastguard Worker       --tag=TAG            use configuration variables from tag TAG
2273*a67afe4dSAndroid Build Coastguard Worker   -v, --verbose            print more informational messages than default
2274*a67afe4dSAndroid Build Coastguard Worker       --version            print version information
2275*a67afe4dSAndroid Build Coastguard Worker   -W, --warnings=CATEGORY  report the warnings falling in CATEGORY [all]
2276*a67afe4dSAndroid Build Coastguard Worker   -h, --help, --help-all   print short, long, or detailed help message
2277*a67afe4dSAndroid Build Coastguard Worker"
2278*a67afe4dSAndroid Build Coastguard Worker
2279*a67afe4dSAndroid Build Coastguard Worker# Additional text appended to 'usage_message' in response to '--help'.
2280*a67afe4dSAndroid Build Coastguard Workerfunc_help ()
2281*a67afe4dSAndroid Build Coastguard Worker{
2282*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
2283*a67afe4dSAndroid Build Coastguard Worker
2284*a67afe4dSAndroid Build Coastguard Worker    func_usage_message
2285*a67afe4dSAndroid Build Coastguard Worker    $ECHO "$long_help_message
2286*a67afe4dSAndroid Build Coastguard Worker
2287*a67afe4dSAndroid Build Coastguard WorkerMODE must be one of the following:
2288*a67afe4dSAndroid Build Coastguard Worker
2289*a67afe4dSAndroid Build Coastguard Worker       clean           remove files from the build directory
2290*a67afe4dSAndroid Build Coastguard Worker       compile         compile a source file into a libtool object
2291*a67afe4dSAndroid Build Coastguard Worker       execute         automatically set library path, then run a program
2292*a67afe4dSAndroid Build Coastguard Worker       finish          complete the installation of libtool libraries
2293*a67afe4dSAndroid Build Coastguard Worker       install         install libraries or executables
2294*a67afe4dSAndroid Build Coastguard Worker       link            create a library or an executable
2295*a67afe4dSAndroid Build Coastguard Worker       uninstall       remove libraries from an installed directory
2296*a67afe4dSAndroid Build Coastguard Worker
2297*a67afe4dSAndroid Build Coastguard WorkerMODE-ARGS vary depending on the MODE.  When passed as first option,
2298*a67afe4dSAndroid Build Coastguard Worker'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that.
2299*a67afe4dSAndroid Build Coastguard WorkerTry '$progname --help --mode=MODE' for a more detailed description of MODE.
2300*a67afe4dSAndroid Build Coastguard Worker
2301*a67afe4dSAndroid Build Coastguard WorkerWhen reporting a bug, please describe a test case to reproduce it and
2302*a67afe4dSAndroid Build Coastguard Workerinclude the following information:
2303*a67afe4dSAndroid Build Coastguard Worker
2304*a67afe4dSAndroid Build Coastguard Worker       host-triplet:   $host
2305*a67afe4dSAndroid Build Coastguard Worker       shell:          $SHELL
2306*a67afe4dSAndroid Build Coastguard Worker       compiler:       $LTCC
2307*a67afe4dSAndroid Build Coastguard Worker       compiler flags: $LTCFLAGS
2308*a67afe4dSAndroid Build Coastguard Worker       linker:         $LD (gnu? $with_gnu_ld)
2309*a67afe4dSAndroid Build Coastguard Worker       version:        $progname (GNU libtool) 2.4.7
2310*a67afe4dSAndroid Build Coastguard Worker       automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
2311*a67afe4dSAndroid Build Coastguard Worker       autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
2312*a67afe4dSAndroid Build Coastguard Worker
2313*a67afe4dSAndroid Build Coastguard WorkerReport bugs to <[email protected]>.
2314*a67afe4dSAndroid Build Coastguard WorkerGNU libtool home page: <http://www.gnu.org/software/libtool/>.
2315*a67afe4dSAndroid Build Coastguard WorkerGeneral help using GNU software: <http://www.gnu.org/gethelp/>."
2316*a67afe4dSAndroid Build Coastguard Worker    exit 0
2317*a67afe4dSAndroid Build Coastguard Worker}
2318*a67afe4dSAndroid Build Coastguard Worker
2319*a67afe4dSAndroid Build Coastguard Worker
2320*a67afe4dSAndroid Build Coastguard Worker# func_lo2o OBJECT-NAME
2321*a67afe4dSAndroid Build Coastguard Worker# ---------------------
2322*a67afe4dSAndroid Build Coastguard Worker# Transform OBJECT-NAME from a '.lo' suffix to the platform specific
2323*a67afe4dSAndroid Build Coastguard Worker# object suffix.
2324*a67afe4dSAndroid Build Coastguard Worker
2325*a67afe4dSAndroid Build Coastguard Workerlo2o=s/\\.lo\$/.$objext/
2326*a67afe4dSAndroid Build Coastguard Workero2lo=s/\\.$objext\$/.lo/
2327*a67afe4dSAndroid Build Coastguard Worker
2328*a67afe4dSAndroid Build Coastguard Workerif test yes = "$_G_HAVE_XSI_OPS"; then
2329*a67afe4dSAndroid Build Coastguard Worker  eval 'func_lo2o ()
2330*a67afe4dSAndroid Build Coastguard Worker  {
2331*a67afe4dSAndroid Build Coastguard Worker    case $1 in
2332*a67afe4dSAndroid Build Coastguard Worker      *.lo) func_lo2o_result=${1%.lo}.$objext ;;
2333*a67afe4dSAndroid Build Coastguard Worker      *   ) func_lo2o_result=$1               ;;
2334*a67afe4dSAndroid Build Coastguard Worker    esac
2335*a67afe4dSAndroid Build Coastguard Worker  }'
2336*a67afe4dSAndroid Build Coastguard Worker
2337*a67afe4dSAndroid Build Coastguard Worker  # func_xform LIBOBJ-OR-SOURCE
2338*a67afe4dSAndroid Build Coastguard Worker  # ---------------------------
2339*a67afe4dSAndroid Build Coastguard Worker  # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise)
2340*a67afe4dSAndroid Build Coastguard Worker  # suffix to a '.lo' libtool-object suffix.
2341*a67afe4dSAndroid Build Coastguard Worker  eval 'func_xform ()
2342*a67afe4dSAndroid Build Coastguard Worker  {
2343*a67afe4dSAndroid Build Coastguard Worker    func_xform_result=${1%.*}.lo
2344*a67afe4dSAndroid Build Coastguard Worker  }'
2345*a67afe4dSAndroid Build Coastguard Workerelse
2346*a67afe4dSAndroid Build Coastguard Worker  # ...otherwise fall back to using sed.
2347*a67afe4dSAndroid Build Coastguard Worker  func_lo2o ()
2348*a67afe4dSAndroid Build Coastguard Worker  {
2349*a67afe4dSAndroid Build Coastguard Worker    func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"`
2350*a67afe4dSAndroid Build Coastguard Worker  }
2351*a67afe4dSAndroid Build Coastguard Worker
2352*a67afe4dSAndroid Build Coastguard Worker  func_xform ()
2353*a67afe4dSAndroid Build Coastguard Worker  {
2354*a67afe4dSAndroid Build Coastguard Worker    func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'`
2355*a67afe4dSAndroid Build Coastguard Worker  }
2356*a67afe4dSAndroid Build Coastguard Workerfi
2357*a67afe4dSAndroid Build Coastguard Worker
2358*a67afe4dSAndroid Build Coastguard Worker
2359*a67afe4dSAndroid Build Coastguard Worker# func_fatal_configuration ARG...
2360*a67afe4dSAndroid Build Coastguard Worker# -------------------------------
2361*a67afe4dSAndroid Build Coastguard Worker# Echo program name prefixed message to standard error, followed by
2362*a67afe4dSAndroid Build Coastguard Worker# a configuration failure hint, and exit.
2363*a67afe4dSAndroid Build Coastguard Workerfunc_fatal_configuration ()
2364*a67afe4dSAndroid Build Coastguard Worker{
2365*a67afe4dSAndroid Build Coastguard Worker    func_fatal_error ${1+"$@"} \
2366*a67afe4dSAndroid Build Coastguard Worker      "See the $PACKAGE documentation for more information." \
2367*a67afe4dSAndroid Build Coastguard Worker      "Fatal configuration error."
2368*a67afe4dSAndroid Build Coastguard Worker}
2369*a67afe4dSAndroid Build Coastguard Worker
2370*a67afe4dSAndroid Build Coastguard Worker
2371*a67afe4dSAndroid Build Coastguard Worker# func_config
2372*a67afe4dSAndroid Build Coastguard Worker# -----------
2373*a67afe4dSAndroid Build Coastguard Worker# Display the configuration for all the tags in this script.
2374*a67afe4dSAndroid Build Coastguard Workerfunc_config ()
2375*a67afe4dSAndroid Build Coastguard Worker{
2376*a67afe4dSAndroid Build Coastguard Worker    re_begincf='^# ### BEGIN LIBTOOL'
2377*a67afe4dSAndroid Build Coastguard Worker    re_endcf='^# ### END LIBTOOL'
2378*a67afe4dSAndroid Build Coastguard Worker
2379*a67afe4dSAndroid Build Coastguard Worker    # Default configuration.
2380*a67afe4dSAndroid Build Coastguard Worker    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
2381*a67afe4dSAndroid Build Coastguard Worker
2382*a67afe4dSAndroid Build Coastguard Worker    # Now print the configurations for the tags.
2383*a67afe4dSAndroid Build Coastguard Worker    for tagname in $taglist; do
2384*a67afe4dSAndroid Build Coastguard Worker      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
2385*a67afe4dSAndroid Build Coastguard Worker    done
2386*a67afe4dSAndroid Build Coastguard Worker
2387*a67afe4dSAndroid Build Coastguard Worker    exit $?
2388*a67afe4dSAndroid Build Coastguard Worker}
2389*a67afe4dSAndroid Build Coastguard Worker
2390*a67afe4dSAndroid Build Coastguard Worker
2391*a67afe4dSAndroid Build Coastguard Worker# func_features
2392*a67afe4dSAndroid Build Coastguard Worker# -------------
2393*a67afe4dSAndroid Build Coastguard Worker# Display the features supported by this script.
2394*a67afe4dSAndroid Build Coastguard Workerfunc_features ()
2395*a67afe4dSAndroid Build Coastguard Worker{
2396*a67afe4dSAndroid Build Coastguard Worker    echo "host: $host"
2397*a67afe4dSAndroid Build Coastguard Worker    if test yes = "$build_libtool_libs"; then
2398*a67afe4dSAndroid Build Coastguard Worker      echo "enable shared libraries"
2399*a67afe4dSAndroid Build Coastguard Worker    else
2400*a67afe4dSAndroid Build Coastguard Worker      echo "disable shared libraries"
2401*a67afe4dSAndroid Build Coastguard Worker    fi
2402*a67afe4dSAndroid Build Coastguard Worker    if test yes = "$build_old_libs"; then
2403*a67afe4dSAndroid Build Coastguard Worker      echo "enable static libraries"
2404*a67afe4dSAndroid Build Coastguard Worker    else
2405*a67afe4dSAndroid Build Coastguard Worker      echo "disable static libraries"
2406*a67afe4dSAndroid Build Coastguard Worker    fi
2407*a67afe4dSAndroid Build Coastguard Worker
2408*a67afe4dSAndroid Build Coastguard Worker    exit $?
2409*a67afe4dSAndroid Build Coastguard Worker}
2410*a67afe4dSAndroid Build Coastguard Worker
2411*a67afe4dSAndroid Build Coastguard Worker
2412*a67afe4dSAndroid Build Coastguard Worker# func_enable_tag TAGNAME
2413*a67afe4dSAndroid Build Coastguard Worker# -----------------------
2414*a67afe4dSAndroid Build Coastguard Worker# Verify that TAGNAME is valid, and either flag an error and exit, or
2415*a67afe4dSAndroid Build Coastguard Worker# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
2416*a67afe4dSAndroid Build Coastguard Worker# variable here.
2417*a67afe4dSAndroid Build Coastguard Workerfunc_enable_tag ()
2418*a67afe4dSAndroid Build Coastguard Worker{
2419*a67afe4dSAndroid Build Coastguard Worker    # Global variable:
2420*a67afe4dSAndroid Build Coastguard Worker    tagname=$1
2421*a67afe4dSAndroid Build Coastguard Worker
2422*a67afe4dSAndroid Build Coastguard Worker    re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
2423*a67afe4dSAndroid Build Coastguard Worker    re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
2424*a67afe4dSAndroid Build Coastguard Worker    sed_extractcf=/$re_begincf/,/$re_endcf/p
2425*a67afe4dSAndroid Build Coastguard Worker
2426*a67afe4dSAndroid Build Coastguard Worker    # Validate tagname.
2427*a67afe4dSAndroid Build Coastguard Worker    case $tagname in
2428*a67afe4dSAndroid Build Coastguard Worker      *[!-_A-Za-z0-9,/]*)
2429*a67afe4dSAndroid Build Coastguard Worker        func_fatal_error "invalid tag name: $tagname"
2430*a67afe4dSAndroid Build Coastguard Worker        ;;
2431*a67afe4dSAndroid Build Coastguard Worker    esac
2432*a67afe4dSAndroid Build Coastguard Worker
2433*a67afe4dSAndroid Build Coastguard Worker    # Don't test for the "default" C tag, as we know it's
2434*a67afe4dSAndroid Build Coastguard Worker    # there but not specially marked.
2435*a67afe4dSAndroid Build Coastguard Worker    case $tagname in
2436*a67afe4dSAndroid Build Coastguard Worker        CC) ;;
2437*a67afe4dSAndroid Build Coastguard Worker    *)
2438*a67afe4dSAndroid Build Coastguard Worker        if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
2439*a67afe4dSAndroid Build Coastguard Worker	  taglist="$taglist $tagname"
2440*a67afe4dSAndroid Build Coastguard Worker
2441*a67afe4dSAndroid Build Coastguard Worker	  # Evaluate the configuration.  Be careful to quote the path
2442*a67afe4dSAndroid Build Coastguard Worker	  # and the sed script, to avoid splitting on whitespace, but
2443*a67afe4dSAndroid Build Coastguard Worker	  # also don't use non-portable quotes within backquotes within
2444*a67afe4dSAndroid Build Coastguard Worker	  # quotes we have to do it in 2 steps:
2445*a67afe4dSAndroid Build Coastguard Worker	  extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
2446*a67afe4dSAndroid Build Coastguard Worker	  eval "$extractedcf"
2447*a67afe4dSAndroid Build Coastguard Worker        else
2448*a67afe4dSAndroid Build Coastguard Worker	  func_error "ignoring unknown tag $tagname"
2449*a67afe4dSAndroid Build Coastguard Worker        fi
2450*a67afe4dSAndroid Build Coastguard Worker        ;;
2451*a67afe4dSAndroid Build Coastguard Worker    esac
2452*a67afe4dSAndroid Build Coastguard Worker}
2453*a67afe4dSAndroid Build Coastguard Worker
2454*a67afe4dSAndroid Build Coastguard Worker
2455*a67afe4dSAndroid Build Coastguard Worker# func_check_version_match
2456*a67afe4dSAndroid Build Coastguard Worker# ------------------------
2457*a67afe4dSAndroid Build Coastguard Worker# Ensure that we are using m4 macros, and libtool script from the same
2458*a67afe4dSAndroid Build Coastguard Worker# release of libtool.
2459*a67afe4dSAndroid Build Coastguard Workerfunc_check_version_match ()
2460*a67afe4dSAndroid Build Coastguard Worker{
2461*a67afe4dSAndroid Build Coastguard Worker    if test "$package_revision" != "$macro_revision"; then
2462*a67afe4dSAndroid Build Coastguard Worker      if test "$VERSION" != "$macro_version"; then
2463*a67afe4dSAndroid Build Coastguard Worker        if test -z "$macro_version"; then
2464*a67afe4dSAndroid Build Coastguard Worker          cat >&2 <<_LT_EOF
2465*a67afe4dSAndroid Build Coastguard Worker$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
2466*a67afe4dSAndroid Build Coastguard Worker$progname: definition of this LT_INIT comes from an older release.
2467*a67afe4dSAndroid Build Coastguard Worker$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
2468*a67afe4dSAndroid Build Coastguard Worker$progname: and run autoconf again.
2469*a67afe4dSAndroid Build Coastguard Worker_LT_EOF
2470*a67afe4dSAndroid Build Coastguard Worker        else
2471*a67afe4dSAndroid Build Coastguard Worker          cat >&2 <<_LT_EOF
2472*a67afe4dSAndroid Build Coastguard Worker$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
2473*a67afe4dSAndroid Build Coastguard Worker$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
2474*a67afe4dSAndroid Build Coastguard Worker$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
2475*a67afe4dSAndroid Build Coastguard Worker$progname: and run autoconf again.
2476*a67afe4dSAndroid Build Coastguard Worker_LT_EOF
2477*a67afe4dSAndroid Build Coastguard Worker        fi
2478*a67afe4dSAndroid Build Coastguard Worker      else
2479*a67afe4dSAndroid Build Coastguard Worker        cat >&2 <<_LT_EOF
2480*a67afe4dSAndroid Build Coastguard Worker$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
2481*a67afe4dSAndroid Build Coastguard Worker$progname: but the definition of this LT_INIT comes from revision $macro_revision.
2482*a67afe4dSAndroid Build Coastguard Worker$progname: You should recreate aclocal.m4 with macros from revision $package_revision
2483*a67afe4dSAndroid Build Coastguard Worker$progname: of $PACKAGE $VERSION and run autoconf again.
2484*a67afe4dSAndroid Build Coastguard Worker_LT_EOF
2485*a67afe4dSAndroid Build Coastguard Worker      fi
2486*a67afe4dSAndroid Build Coastguard Worker
2487*a67afe4dSAndroid Build Coastguard Worker      exit $EXIT_MISMATCH
2488*a67afe4dSAndroid Build Coastguard Worker    fi
2489*a67afe4dSAndroid Build Coastguard Worker}
2490*a67afe4dSAndroid Build Coastguard Worker
2491*a67afe4dSAndroid Build Coastguard Worker
2492*a67afe4dSAndroid Build Coastguard Worker# libtool_options_prep [ARG]...
2493*a67afe4dSAndroid Build Coastguard Worker# -----------------------------
2494*a67afe4dSAndroid Build Coastguard Worker# Preparation for options parsed by libtool.
2495*a67afe4dSAndroid Build Coastguard Workerlibtool_options_prep ()
2496*a67afe4dSAndroid Build Coastguard Worker{
2497*a67afe4dSAndroid Build Coastguard Worker    $debug_mode
2498*a67afe4dSAndroid Build Coastguard Worker
2499*a67afe4dSAndroid Build Coastguard Worker    # Option defaults:
2500*a67afe4dSAndroid Build Coastguard Worker    opt_config=false
2501*a67afe4dSAndroid Build Coastguard Worker    opt_dlopen=
2502*a67afe4dSAndroid Build Coastguard Worker    opt_dry_run=false
2503*a67afe4dSAndroid Build Coastguard Worker    opt_help=false
2504*a67afe4dSAndroid Build Coastguard Worker    opt_mode=
2505*a67afe4dSAndroid Build Coastguard Worker    opt_preserve_dup_deps=false
2506*a67afe4dSAndroid Build Coastguard Worker    opt_quiet=false
2507*a67afe4dSAndroid Build Coastguard Worker
2508*a67afe4dSAndroid Build Coastguard Worker    nonopt=
2509*a67afe4dSAndroid Build Coastguard Worker    preserve_args=
2510*a67afe4dSAndroid Build Coastguard Worker
2511*a67afe4dSAndroid Build Coastguard Worker    _G_rc_lt_options_prep=:
2512*a67afe4dSAndroid Build Coastguard Worker
2513*a67afe4dSAndroid Build Coastguard Worker    # Shorthand for --mode=foo, only valid as the first argument
2514*a67afe4dSAndroid Build Coastguard Worker    case $1 in
2515*a67afe4dSAndroid Build Coastguard Worker    clean|clea|cle|cl)
2516*a67afe4dSAndroid Build Coastguard Worker      shift; set dummy --mode clean ${1+"$@"}; shift
2517*a67afe4dSAndroid Build Coastguard Worker      ;;
2518*a67afe4dSAndroid Build Coastguard Worker    compile|compil|compi|comp|com|co|c)
2519*a67afe4dSAndroid Build Coastguard Worker      shift; set dummy --mode compile ${1+"$@"}; shift
2520*a67afe4dSAndroid Build Coastguard Worker      ;;
2521*a67afe4dSAndroid Build Coastguard Worker    execute|execut|execu|exec|exe|ex|e)
2522*a67afe4dSAndroid Build Coastguard Worker      shift; set dummy --mode execute ${1+"$@"}; shift
2523*a67afe4dSAndroid Build Coastguard Worker      ;;
2524*a67afe4dSAndroid Build Coastguard Worker    finish|finis|fini|fin|fi|f)
2525*a67afe4dSAndroid Build Coastguard Worker      shift; set dummy --mode finish ${1+"$@"}; shift
2526*a67afe4dSAndroid Build Coastguard Worker      ;;
2527*a67afe4dSAndroid Build Coastguard Worker    install|instal|insta|inst|ins|in|i)
2528*a67afe4dSAndroid Build Coastguard Worker      shift; set dummy --mode install ${1+"$@"}; shift
2529*a67afe4dSAndroid Build Coastguard Worker      ;;
2530*a67afe4dSAndroid Build Coastguard Worker    link|lin|li|l)
2531*a67afe4dSAndroid Build Coastguard Worker      shift; set dummy --mode link ${1+"$@"}; shift
2532*a67afe4dSAndroid Build Coastguard Worker      ;;
2533*a67afe4dSAndroid Build Coastguard Worker    uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
2534*a67afe4dSAndroid Build Coastguard Worker      shift; set dummy --mode uninstall ${1+"$@"}; shift
2535*a67afe4dSAndroid Build Coastguard Worker      ;;
2536*a67afe4dSAndroid Build Coastguard Worker    *)
2537*a67afe4dSAndroid Build Coastguard Worker      _G_rc_lt_options_prep=false
2538*a67afe4dSAndroid Build Coastguard Worker      ;;
2539*a67afe4dSAndroid Build Coastguard Worker    esac
2540*a67afe4dSAndroid Build Coastguard Worker
2541*a67afe4dSAndroid Build Coastguard Worker    if $_G_rc_lt_options_prep; then
2542*a67afe4dSAndroid Build Coastguard Worker      # Pass back the list of options.
2543*a67afe4dSAndroid Build Coastguard Worker      func_quote eval ${1+"$@"}
2544*a67afe4dSAndroid Build Coastguard Worker      libtool_options_prep_result=$func_quote_result
2545*a67afe4dSAndroid Build Coastguard Worker    fi
2546*a67afe4dSAndroid Build Coastguard Worker}
2547*a67afe4dSAndroid Build Coastguard Workerfunc_add_hook func_options_prep libtool_options_prep
2548*a67afe4dSAndroid Build Coastguard Worker
2549*a67afe4dSAndroid Build Coastguard Worker
2550*a67afe4dSAndroid Build Coastguard Worker# libtool_parse_options [ARG]...
2551*a67afe4dSAndroid Build Coastguard Worker# ---------------------------------
2552*a67afe4dSAndroid Build Coastguard Worker# Provide handling for libtool specific options.
2553*a67afe4dSAndroid Build Coastguard Workerlibtool_parse_options ()
2554*a67afe4dSAndroid Build Coastguard Worker{
2555*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
2556*a67afe4dSAndroid Build Coastguard Worker
2557*a67afe4dSAndroid Build Coastguard Worker    _G_rc_lt_parse_options=false
2558*a67afe4dSAndroid Build Coastguard Worker
2559*a67afe4dSAndroid Build Coastguard Worker    # Perform our own loop to consume as many options as possible in
2560*a67afe4dSAndroid Build Coastguard Worker    # each iteration.
2561*a67afe4dSAndroid Build Coastguard Worker    while test $# -gt 0; do
2562*a67afe4dSAndroid Build Coastguard Worker      _G_match_lt_parse_options=:
2563*a67afe4dSAndroid Build Coastguard Worker      _G_opt=$1
2564*a67afe4dSAndroid Build Coastguard Worker      shift
2565*a67afe4dSAndroid Build Coastguard Worker      case $_G_opt in
2566*a67afe4dSAndroid Build Coastguard Worker        --dry-run|--dryrun|-n)
2567*a67afe4dSAndroid Build Coastguard Worker                        opt_dry_run=:
2568*a67afe4dSAndroid Build Coastguard Worker                        ;;
2569*a67afe4dSAndroid Build Coastguard Worker
2570*a67afe4dSAndroid Build Coastguard Worker        --config)       func_config ;;
2571*a67afe4dSAndroid Build Coastguard Worker
2572*a67afe4dSAndroid Build Coastguard Worker        --dlopen|-dlopen)
2573*a67afe4dSAndroid Build Coastguard Worker                        opt_dlopen="${opt_dlopen+$opt_dlopen
2574*a67afe4dSAndroid Build Coastguard Worker}$1"
2575*a67afe4dSAndroid Build Coastguard Worker                        shift
2576*a67afe4dSAndroid Build Coastguard Worker                        ;;
2577*a67afe4dSAndroid Build Coastguard Worker
2578*a67afe4dSAndroid Build Coastguard Worker        --preserve-dup-deps)
2579*a67afe4dSAndroid Build Coastguard Worker                        opt_preserve_dup_deps=: ;;
2580*a67afe4dSAndroid Build Coastguard Worker
2581*a67afe4dSAndroid Build Coastguard Worker        --features)     func_features ;;
2582*a67afe4dSAndroid Build Coastguard Worker
2583*a67afe4dSAndroid Build Coastguard Worker        --finish)       set dummy --mode finish ${1+"$@"}; shift ;;
2584*a67afe4dSAndroid Build Coastguard Worker
2585*a67afe4dSAndroid Build Coastguard Worker        --help)         opt_help=: ;;
2586*a67afe4dSAndroid Build Coastguard Worker
2587*a67afe4dSAndroid Build Coastguard Worker        --help-all)     opt_help=': help-all' ;;
2588*a67afe4dSAndroid Build Coastguard Worker
2589*a67afe4dSAndroid Build Coastguard Worker        --mode)         test $# = 0 && func_missing_arg $_G_opt && break
2590*a67afe4dSAndroid Build Coastguard Worker                        opt_mode=$1
2591*a67afe4dSAndroid Build Coastguard Worker                        case $1 in
2592*a67afe4dSAndroid Build Coastguard Worker                          # Valid mode arguments:
2593*a67afe4dSAndroid Build Coastguard Worker                          clean|compile|execute|finish|install|link|relink|uninstall) ;;
2594*a67afe4dSAndroid Build Coastguard Worker
2595*a67afe4dSAndroid Build Coastguard Worker                          # Catch anything else as an error
2596*a67afe4dSAndroid Build Coastguard Worker                          *) func_error "invalid argument for $_G_opt"
2597*a67afe4dSAndroid Build Coastguard Worker                             exit_cmd=exit
2598*a67afe4dSAndroid Build Coastguard Worker                             break
2599*a67afe4dSAndroid Build Coastguard Worker                             ;;
2600*a67afe4dSAndroid Build Coastguard Worker                        esac
2601*a67afe4dSAndroid Build Coastguard Worker                        shift
2602*a67afe4dSAndroid Build Coastguard Worker                        ;;
2603*a67afe4dSAndroid Build Coastguard Worker
2604*a67afe4dSAndroid Build Coastguard Worker        --no-silent|--no-quiet)
2605*a67afe4dSAndroid Build Coastguard Worker                        opt_quiet=false
2606*a67afe4dSAndroid Build Coastguard Worker                        func_append preserve_args " $_G_opt"
2607*a67afe4dSAndroid Build Coastguard Worker                        ;;
2608*a67afe4dSAndroid Build Coastguard Worker
2609*a67afe4dSAndroid Build Coastguard Worker        --no-warnings|--no-warning|--no-warn)
2610*a67afe4dSAndroid Build Coastguard Worker                        opt_warning=false
2611*a67afe4dSAndroid Build Coastguard Worker                        func_append preserve_args " $_G_opt"
2612*a67afe4dSAndroid Build Coastguard Worker                        ;;
2613*a67afe4dSAndroid Build Coastguard Worker
2614*a67afe4dSAndroid Build Coastguard Worker        --no-verbose)
2615*a67afe4dSAndroid Build Coastguard Worker                        opt_verbose=false
2616*a67afe4dSAndroid Build Coastguard Worker                        func_append preserve_args " $_G_opt"
2617*a67afe4dSAndroid Build Coastguard Worker                        ;;
2618*a67afe4dSAndroid Build Coastguard Worker
2619*a67afe4dSAndroid Build Coastguard Worker        --silent|--quiet)
2620*a67afe4dSAndroid Build Coastguard Worker                        opt_quiet=:
2621*a67afe4dSAndroid Build Coastguard Worker                        opt_verbose=false
2622*a67afe4dSAndroid Build Coastguard Worker                        func_append preserve_args " $_G_opt"
2623*a67afe4dSAndroid Build Coastguard Worker                        ;;
2624*a67afe4dSAndroid Build Coastguard Worker
2625*a67afe4dSAndroid Build Coastguard Worker        --tag)          test $# = 0 && func_missing_arg $_G_opt && break
2626*a67afe4dSAndroid Build Coastguard Worker                        opt_tag=$1
2627*a67afe4dSAndroid Build Coastguard Worker                        func_append preserve_args " $_G_opt $1"
2628*a67afe4dSAndroid Build Coastguard Worker                        func_enable_tag "$1"
2629*a67afe4dSAndroid Build Coastguard Worker                        shift
2630*a67afe4dSAndroid Build Coastguard Worker                        ;;
2631*a67afe4dSAndroid Build Coastguard Worker
2632*a67afe4dSAndroid Build Coastguard Worker        --verbose|-v)   opt_quiet=false
2633*a67afe4dSAndroid Build Coastguard Worker                        opt_verbose=:
2634*a67afe4dSAndroid Build Coastguard Worker                        func_append preserve_args " $_G_opt"
2635*a67afe4dSAndroid Build Coastguard Worker                        ;;
2636*a67afe4dSAndroid Build Coastguard Worker
2637*a67afe4dSAndroid Build Coastguard Worker        # An option not handled by this hook function:
2638*a67afe4dSAndroid Build Coastguard Worker        *)              set dummy "$_G_opt" ${1+"$@"} ; shift
2639*a67afe4dSAndroid Build Coastguard Worker                        _G_match_lt_parse_options=false
2640*a67afe4dSAndroid Build Coastguard Worker                        break
2641*a67afe4dSAndroid Build Coastguard Worker                        ;;
2642*a67afe4dSAndroid Build Coastguard Worker      esac
2643*a67afe4dSAndroid Build Coastguard Worker      $_G_match_lt_parse_options && _G_rc_lt_parse_options=:
2644*a67afe4dSAndroid Build Coastguard Worker    done
2645*a67afe4dSAndroid Build Coastguard Worker
2646*a67afe4dSAndroid Build Coastguard Worker    if $_G_rc_lt_parse_options; then
2647*a67afe4dSAndroid Build Coastguard Worker      # save modified positional parameters for caller
2648*a67afe4dSAndroid Build Coastguard Worker      func_quote eval ${1+"$@"}
2649*a67afe4dSAndroid Build Coastguard Worker      libtool_parse_options_result=$func_quote_result
2650*a67afe4dSAndroid Build Coastguard Worker    fi
2651*a67afe4dSAndroid Build Coastguard Worker}
2652*a67afe4dSAndroid Build Coastguard Workerfunc_add_hook func_parse_options libtool_parse_options
2653*a67afe4dSAndroid Build Coastguard Worker
2654*a67afe4dSAndroid Build Coastguard Worker
2655*a67afe4dSAndroid Build Coastguard Worker
2656*a67afe4dSAndroid Build Coastguard Worker# libtool_validate_options [ARG]...
2657*a67afe4dSAndroid Build Coastguard Worker# ---------------------------------
2658*a67afe4dSAndroid Build Coastguard Worker# Perform any sanity checks on option settings and/or unconsumed
2659*a67afe4dSAndroid Build Coastguard Worker# arguments.
2660*a67afe4dSAndroid Build Coastguard Workerlibtool_validate_options ()
2661*a67afe4dSAndroid Build Coastguard Worker{
2662*a67afe4dSAndroid Build Coastguard Worker    # save first non-option argument
2663*a67afe4dSAndroid Build Coastguard Worker    if test 0 -lt $#; then
2664*a67afe4dSAndroid Build Coastguard Worker      nonopt=$1
2665*a67afe4dSAndroid Build Coastguard Worker      shift
2666*a67afe4dSAndroid Build Coastguard Worker    fi
2667*a67afe4dSAndroid Build Coastguard Worker
2668*a67afe4dSAndroid Build Coastguard Worker    # preserve --debug
2669*a67afe4dSAndroid Build Coastguard Worker    test : = "$debug_cmd" || func_append preserve_args " --debug"
2670*a67afe4dSAndroid Build Coastguard Worker
2671*a67afe4dSAndroid Build Coastguard Worker    case $host in
2672*a67afe4dSAndroid Build Coastguard Worker      # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
2673*a67afe4dSAndroid Build Coastguard Worker      # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
2674*a67afe4dSAndroid Build Coastguard Worker      *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
2675*a67afe4dSAndroid Build Coastguard Worker        # don't eliminate duplications in $postdeps and $predeps
2676*a67afe4dSAndroid Build Coastguard Worker        opt_duplicate_compiler_generated_deps=:
2677*a67afe4dSAndroid Build Coastguard Worker        ;;
2678*a67afe4dSAndroid Build Coastguard Worker      *)
2679*a67afe4dSAndroid Build Coastguard Worker        opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
2680*a67afe4dSAndroid Build Coastguard Worker        ;;
2681*a67afe4dSAndroid Build Coastguard Worker    esac
2682*a67afe4dSAndroid Build Coastguard Worker
2683*a67afe4dSAndroid Build Coastguard Worker    $opt_help || {
2684*a67afe4dSAndroid Build Coastguard Worker      # Sanity checks first:
2685*a67afe4dSAndroid Build Coastguard Worker      func_check_version_match
2686*a67afe4dSAndroid Build Coastguard Worker
2687*a67afe4dSAndroid Build Coastguard Worker      test yes != "$build_libtool_libs" \
2688*a67afe4dSAndroid Build Coastguard Worker        && test yes != "$build_old_libs" \
2689*a67afe4dSAndroid Build Coastguard Worker        && func_fatal_configuration "not configured to build any kind of library"
2690*a67afe4dSAndroid Build Coastguard Worker
2691*a67afe4dSAndroid Build Coastguard Worker      # Darwin sucks
2692*a67afe4dSAndroid Build Coastguard Worker      eval std_shrext=\"$shrext_cmds\"
2693*a67afe4dSAndroid Build Coastguard Worker
2694*a67afe4dSAndroid Build Coastguard Worker      # Only execute mode is allowed to have -dlopen flags.
2695*a67afe4dSAndroid Build Coastguard Worker      if test -n "$opt_dlopen" && test execute != "$opt_mode"; then
2696*a67afe4dSAndroid Build Coastguard Worker        func_error "unrecognized option '-dlopen'"
2697*a67afe4dSAndroid Build Coastguard Worker        $ECHO "$help" 1>&2
2698*a67afe4dSAndroid Build Coastguard Worker        exit $EXIT_FAILURE
2699*a67afe4dSAndroid Build Coastguard Worker      fi
2700*a67afe4dSAndroid Build Coastguard Worker
2701*a67afe4dSAndroid Build Coastguard Worker      # Change the help message to a mode-specific one.
2702*a67afe4dSAndroid Build Coastguard Worker      generic_help=$help
2703*a67afe4dSAndroid Build Coastguard Worker      help="Try '$progname --help --mode=$opt_mode' for more information."
2704*a67afe4dSAndroid Build Coastguard Worker    }
2705*a67afe4dSAndroid Build Coastguard Worker
2706*a67afe4dSAndroid Build Coastguard Worker    # Pass back the unparsed argument list
2707*a67afe4dSAndroid Build Coastguard Worker    func_quote eval ${1+"$@"}
2708*a67afe4dSAndroid Build Coastguard Worker    libtool_validate_options_result=$func_quote_result
2709*a67afe4dSAndroid Build Coastguard Worker}
2710*a67afe4dSAndroid Build Coastguard Workerfunc_add_hook func_validate_options libtool_validate_options
2711*a67afe4dSAndroid Build Coastguard Worker
2712*a67afe4dSAndroid Build Coastguard Worker
2713*a67afe4dSAndroid Build Coastguard Worker# Process options as early as possible so that --help and --version
2714*a67afe4dSAndroid Build Coastguard Worker# can return quickly.
2715*a67afe4dSAndroid Build Coastguard Workerfunc_options ${1+"$@"}
2716*a67afe4dSAndroid Build Coastguard Workereval set dummy "$func_options_result"; shift
2717*a67afe4dSAndroid Build Coastguard Worker
2718*a67afe4dSAndroid Build Coastguard Worker
2719*a67afe4dSAndroid Build Coastguard Worker
2720*a67afe4dSAndroid Build Coastguard Worker## ----------- ##
2721*a67afe4dSAndroid Build Coastguard Worker##    Main.    ##
2722*a67afe4dSAndroid Build Coastguard Worker## ----------- ##
2723*a67afe4dSAndroid Build Coastguard Worker
2724*a67afe4dSAndroid Build Coastguard Workermagic='%%%MAGIC variable%%%'
2725*a67afe4dSAndroid Build Coastguard Workermagic_exe='%%%MAGIC EXE variable%%%'
2726*a67afe4dSAndroid Build Coastguard Worker
2727*a67afe4dSAndroid Build Coastguard Worker# Global variables.
2728*a67afe4dSAndroid Build Coastguard Workerextracted_archives=
2729*a67afe4dSAndroid Build Coastguard Workerextracted_serial=0
2730*a67afe4dSAndroid Build Coastguard Worker
2731*a67afe4dSAndroid Build Coastguard Worker# If this variable is set in any of the actions, the command in it
2732*a67afe4dSAndroid Build Coastguard Worker# will be execed at the end.  This prevents here-documents from being
2733*a67afe4dSAndroid Build Coastguard Worker# left over by shells.
2734*a67afe4dSAndroid Build Coastguard Workerexec_cmd=
2735*a67afe4dSAndroid Build Coastguard Worker
2736*a67afe4dSAndroid Build Coastguard Worker
2737*a67afe4dSAndroid Build Coastguard Worker# A function that is used when there is no print builtin or printf.
2738*a67afe4dSAndroid Build Coastguard Workerfunc_fallback_echo ()
2739*a67afe4dSAndroid Build Coastguard Worker{
2740*a67afe4dSAndroid Build Coastguard Worker  eval 'cat <<_LTECHO_EOF
2741*a67afe4dSAndroid Build Coastguard Worker$1
2742*a67afe4dSAndroid Build Coastguard Worker_LTECHO_EOF'
2743*a67afe4dSAndroid Build Coastguard Worker}
2744*a67afe4dSAndroid Build Coastguard Worker
2745*a67afe4dSAndroid Build Coastguard Worker# func_generated_by_libtool
2746*a67afe4dSAndroid Build Coastguard Worker# True iff stdin has been generated by Libtool. This function is only
2747*a67afe4dSAndroid Build Coastguard Worker# a basic sanity check; it will hardly flush out determined imposters.
2748*a67afe4dSAndroid Build Coastguard Workerfunc_generated_by_libtool_p ()
2749*a67afe4dSAndroid Build Coastguard Worker{
2750*a67afe4dSAndroid Build Coastguard Worker  $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
2751*a67afe4dSAndroid Build Coastguard Worker}
2752*a67afe4dSAndroid Build Coastguard Worker
2753*a67afe4dSAndroid Build Coastguard Worker# func_lalib_p file
2754*a67afe4dSAndroid Build Coastguard Worker# True iff FILE is a libtool '.la' library or '.lo' object file.
2755*a67afe4dSAndroid Build Coastguard Worker# This function is only a basic sanity check; it will hardly flush out
2756*a67afe4dSAndroid Build Coastguard Worker# determined imposters.
2757*a67afe4dSAndroid Build Coastguard Workerfunc_lalib_p ()
2758*a67afe4dSAndroid Build Coastguard Worker{
2759*a67afe4dSAndroid Build Coastguard Worker    test -f "$1" &&
2760*a67afe4dSAndroid Build Coastguard Worker      $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p
2761*a67afe4dSAndroid Build Coastguard Worker}
2762*a67afe4dSAndroid Build Coastguard Worker
2763*a67afe4dSAndroid Build Coastguard Worker# func_lalib_unsafe_p file
2764*a67afe4dSAndroid Build Coastguard Worker# True iff FILE is a libtool '.la' library or '.lo' object file.
2765*a67afe4dSAndroid Build Coastguard Worker# This function implements the same check as func_lalib_p without
2766*a67afe4dSAndroid Build Coastguard Worker# resorting to external programs.  To this end, it redirects stdin and
2767*a67afe4dSAndroid Build Coastguard Worker# closes it afterwards, without saving the original file descriptor.
2768*a67afe4dSAndroid Build Coastguard Worker# As a safety measure, use it only where a negative result would be
2769*a67afe4dSAndroid Build Coastguard Worker# fatal anyway.  Works if 'file' does not exist.
2770*a67afe4dSAndroid Build Coastguard Workerfunc_lalib_unsafe_p ()
2771*a67afe4dSAndroid Build Coastguard Worker{
2772*a67afe4dSAndroid Build Coastguard Worker    lalib_p=no
2773*a67afe4dSAndroid Build Coastguard Worker    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
2774*a67afe4dSAndroid Build Coastguard Worker	for lalib_p_l in 1 2 3 4
2775*a67afe4dSAndroid Build Coastguard Worker	do
2776*a67afe4dSAndroid Build Coastguard Worker	    read lalib_p_line
2777*a67afe4dSAndroid Build Coastguard Worker	    case $lalib_p_line in
2778*a67afe4dSAndroid Build Coastguard Worker		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
2779*a67afe4dSAndroid Build Coastguard Worker	    esac
2780*a67afe4dSAndroid Build Coastguard Worker	done
2781*a67afe4dSAndroid Build Coastguard Worker	exec 0<&5 5<&-
2782*a67afe4dSAndroid Build Coastguard Worker    fi
2783*a67afe4dSAndroid Build Coastguard Worker    test yes = "$lalib_p"
2784*a67afe4dSAndroid Build Coastguard Worker}
2785*a67afe4dSAndroid Build Coastguard Worker
2786*a67afe4dSAndroid Build Coastguard Worker# func_ltwrapper_script_p file
2787*a67afe4dSAndroid Build Coastguard Worker# True iff FILE is a libtool wrapper script
2788*a67afe4dSAndroid Build Coastguard Worker# This function is only a basic sanity check; it will hardly flush out
2789*a67afe4dSAndroid Build Coastguard Worker# determined imposters.
2790*a67afe4dSAndroid Build Coastguard Workerfunc_ltwrapper_script_p ()
2791*a67afe4dSAndroid Build Coastguard Worker{
2792*a67afe4dSAndroid Build Coastguard Worker    test -f "$1" &&
2793*a67afe4dSAndroid Build Coastguard Worker      $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p
2794*a67afe4dSAndroid Build Coastguard Worker}
2795*a67afe4dSAndroid Build Coastguard Worker
2796*a67afe4dSAndroid Build Coastguard Worker# func_ltwrapper_executable_p file
2797*a67afe4dSAndroid Build Coastguard Worker# True iff FILE is a libtool wrapper executable
2798*a67afe4dSAndroid Build Coastguard Worker# This function is only a basic sanity check; it will hardly flush out
2799*a67afe4dSAndroid Build Coastguard Worker# determined imposters.
2800*a67afe4dSAndroid Build Coastguard Workerfunc_ltwrapper_executable_p ()
2801*a67afe4dSAndroid Build Coastguard Worker{
2802*a67afe4dSAndroid Build Coastguard Worker    func_ltwrapper_exec_suffix=
2803*a67afe4dSAndroid Build Coastguard Worker    case $1 in
2804*a67afe4dSAndroid Build Coastguard Worker    *.exe) ;;
2805*a67afe4dSAndroid Build Coastguard Worker    *) func_ltwrapper_exec_suffix=.exe ;;
2806*a67afe4dSAndroid Build Coastguard Worker    esac
2807*a67afe4dSAndroid Build Coastguard Worker    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
2808*a67afe4dSAndroid Build Coastguard Worker}
2809*a67afe4dSAndroid Build Coastguard Worker
2810*a67afe4dSAndroid Build Coastguard Worker# func_ltwrapper_scriptname file
2811*a67afe4dSAndroid Build Coastguard Worker# Assumes file is an ltwrapper_executable
2812*a67afe4dSAndroid Build Coastguard Worker# uses $file to determine the appropriate filename for a
2813*a67afe4dSAndroid Build Coastguard Worker# temporary ltwrapper_script.
2814*a67afe4dSAndroid Build Coastguard Workerfunc_ltwrapper_scriptname ()
2815*a67afe4dSAndroid Build Coastguard Worker{
2816*a67afe4dSAndroid Build Coastguard Worker    func_dirname_and_basename "$1" "" "."
2817*a67afe4dSAndroid Build Coastguard Worker    func_stripname '' '.exe' "$func_basename_result"
2818*a67afe4dSAndroid Build Coastguard Worker    func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper
2819*a67afe4dSAndroid Build Coastguard Worker}
2820*a67afe4dSAndroid Build Coastguard Worker
2821*a67afe4dSAndroid Build Coastguard Worker# func_ltwrapper_p file
2822*a67afe4dSAndroid Build Coastguard Worker# True iff FILE is a libtool wrapper script or wrapper executable
2823*a67afe4dSAndroid Build Coastguard Worker# This function is only a basic sanity check; it will hardly flush out
2824*a67afe4dSAndroid Build Coastguard Worker# determined imposters.
2825*a67afe4dSAndroid Build Coastguard Workerfunc_ltwrapper_p ()
2826*a67afe4dSAndroid Build Coastguard Worker{
2827*a67afe4dSAndroid Build Coastguard Worker    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
2828*a67afe4dSAndroid Build Coastguard Worker}
2829*a67afe4dSAndroid Build Coastguard Worker
2830*a67afe4dSAndroid Build Coastguard Worker
2831*a67afe4dSAndroid Build Coastguard Worker# func_execute_cmds commands fail_cmd
2832*a67afe4dSAndroid Build Coastguard Worker# Execute tilde-delimited COMMANDS.
2833*a67afe4dSAndroid Build Coastguard Worker# If FAIL_CMD is given, eval that upon failure.
2834*a67afe4dSAndroid Build Coastguard Worker# FAIL_CMD may read-access the current command in variable CMD!
2835*a67afe4dSAndroid Build Coastguard Workerfunc_execute_cmds ()
2836*a67afe4dSAndroid Build Coastguard Worker{
2837*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
2838*a67afe4dSAndroid Build Coastguard Worker
2839*a67afe4dSAndroid Build Coastguard Worker    save_ifs=$IFS; IFS='~'
2840*a67afe4dSAndroid Build Coastguard Worker    for cmd in $1; do
2841*a67afe4dSAndroid Build Coastguard Worker      IFS=$sp$nl
2842*a67afe4dSAndroid Build Coastguard Worker      eval cmd=\"$cmd\"
2843*a67afe4dSAndroid Build Coastguard Worker      IFS=$save_ifs
2844*a67afe4dSAndroid Build Coastguard Worker      func_show_eval "$cmd" "${2-:}"
2845*a67afe4dSAndroid Build Coastguard Worker    done
2846*a67afe4dSAndroid Build Coastguard Worker    IFS=$save_ifs
2847*a67afe4dSAndroid Build Coastguard Worker}
2848*a67afe4dSAndroid Build Coastguard Worker
2849*a67afe4dSAndroid Build Coastguard Worker
2850*a67afe4dSAndroid Build Coastguard Worker# func_source file
2851*a67afe4dSAndroid Build Coastguard Worker# Source FILE, adding directory component if necessary.
2852*a67afe4dSAndroid Build Coastguard Worker# Note that it is not necessary on cygwin/mingw to append a dot to
2853*a67afe4dSAndroid Build Coastguard Worker# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
2854*a67afe4dSAndroid Build Coastguard Worker# behavior happens only for exec(3), not for open(2)!  Also, sourcing
2855*a67afe4dSAndroid Build Coastguard Worker# 'FILE.' does not work on cygwin managed mounts.
2856*a67afe4dSAndroid Build Coastguard Workerfunc_source ()
2857*a67afe4dSAndroid Build Coastguard Worker{
2858*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
2859*a67afe4dSAndroid Build Coastguard Worker
2860*a67afe4dSAndroid Build Coastguard Worker    case $1 in
2861*a67afe4dSAndroid Build Coastguard Worker    */* | *\\*)	. "$1" ;;
2862*a67afe4dSAndroid Build Coastguard Worker    *)		. "./$1" ;;
2863*a67afe4dSAndroid Build Coastguard Worker    esac
2864*a67afe4dSAndroid Build Coastguard Worker}
2865*a67afe4dSAndroid Build Coastguard Worker
2866*a67afe4dSAndroid Build Coastguard Worker
2867*a67afe4dSAndroid Build Coastguard Worker# func_resolve_sysroot PATH
2868*a67afe4dSAndroid Build Coastguard Worker# Replace a leading = in PATH with a sysroot.  Store the result into
2869*a67afe4dSAndroid Build Coastguard Worker# func_resolve_sysroot_result
2870*a67afe4dSAndroid Build Coastguard Workerfunc_resolve_sysroot ()
2871*a67afe4dSAndroid Build Coastguard Worker{
2872*a67afe4dSAndroid Build Coastguard Worker  func_resolve_sysroot_result=$1
2873*a67afe4dSAndroid Build Coastguard Worker  case $func_resolve_sysroot_result in
2874*a67afe4dSAndroid Build Coastguard Worker  =*)
2875*a67afe4dSAndroid Build Coastguard Worker    func_stripname '=' '' "$func_resolve_sysroot_result"
2876*a67afe4dSAndroid Build Coastguard Worker    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
2877*a67afe4dSAndroid Build Coastguard Worker    ;;
2878*a67afe4dSAndroid Build Coastguard Worker  esac
2879*a67afe4dSAndroid Build Coastguard Worker}
2880*a67afe4dSAndroid Build Coastguard Worker
2881*a67afe4dSAndroid Build Coastguard Worker# func_replace_sysroot PATH
2882*a67afe4dSAndroid Build Coastguard Worker# If PATH begins with the sysroot, replace it with = and
2883*a67afe4dSAndroid Build Coastguard Worker# store the result into func_replace_sysroot_result.
2884*a67afe4dSAndroid Build Coastguard Workerfunc_replace_sysroot ()
2885*a67afe4dSAndroid Build Coastguard Worker{
2886*a67afe4dSAndroid Build Coastguard Worker  case $lt_sysroot:$1 in
2887*a67afe4dSAndroid Build Coastguard Worker  ?*:"$lt_sysroot"*)
2888*a67afe4dSAndroid Build Coastguard Worker    func_stripname "$lt_sysroot" '' "$1"
2889*a67afe4dSAndroid Build Coastguard Worker    func_replace_sysroot_result='='$func_stripname_result
2890*a67afe4dSAndroid Build Coastguard Worker    ;;
2891*a67afe4dSAndroid Build Coastguard Worker  *)
2892*a67afe4dSAndroid Build Coastguard Worker    # Including no sysroot.
2893*a67afe4dSAndroid Build Coastguard Worker    func_replace_sysroot_result=$1
2894*a67afe4dSAndroid Build Coastguard Worker    ;;
2895*a67afe4dSAndroid Build Coastguard Worker  esac
2896*a67afe4dSAndroid Build Coastguard Worker}
2897*a67afe4dSAndroid Build Coastguard Worker
2898*a67afe4dSAndroid Build Coastguard Worker# func_infer_tag arg
2899*a67afe4dSAndroid Build Coastguard Worker# Infer tagged configuration to use if any are available and
2900*a67afe4dSAndroid Build Coastguard Worker# if one wasn't chosen via the "--tag" command line option.
2901*a67afe4dSAndroid Build Coastguard Worker# Only attempt this if the compiler in the base compile
2902*a67afe4dSAndroid Build Coastguard Worker# command doesn't match the default compiler.
2903*a67afe4dSAndroid Build Coastguard Worker# arg is usually of the form 'gcc ...'
2904*a67afe4dSAndroid Build Coastguard Workerfunc_infer_tag ()
2905*a67afe4dSAndroid Build Coastguard Worker{
2906*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
2907*a67afe4dSAndroid Build Coastguard Worker
2908*a67afe4dSAndroid Build Coastguard Worker    if test -n "$available_tags" && test -z "$tagname"; then
2909*a67afe4dSAndroid Build Coastguard Worker      CC_quoted=
2910*a67afe4dSAndroid Build Coastguard Worker      for arg in $CC; do
2911*a67afe4dSAndroid Build Coastguard Worker	func_append_quoted CC_quoted "$arg"
2912*a67afe4dSAndroid Build Coastguard Worker      done
2913*a67afe4dSAndroid Build Coastguard Worker      CC_expanded=`func_echo_all $CC`
2914*a67afe4dSAndroid Build Coastguard Worker      CC_quoted_expanded=`func_echo_all $CC_quoted`
2915*a67afe4dSAndroid Build Coastguard Worker      case $@ in
2916*a67afe4dSAndroid Build Coastguard Worker      # Blanks in the command may have been stripped by the calling shell,
2917*a67afe4dSAndroid Build Coastguard Worker      # but not from the CC environment variable when configure was run.
2918*a67afe4dSAndroid Build Coastguard Worker      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
2919*a67afe4dSAndroid Build Coastguard Worker      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
2920*a67afe4dSAndroid Build Coastguard Worker      # Blanks at the start of $base_compile will cause this to fail
2921*a67afe4dSAndroid Build Coastguard Worker      # if we don't check for them as well.
2922*a67afe4dSAndroid Build Coastguard Worker      *)
2923*a67afe4dSAndroid Build Coastguard Worker	for z in $available_tags; do
2924*a67afe4dSAndroid Build Coastguard Worker	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
2925*a67afe4dSAndroid Build Coastguard Worker	    # Evaluate the configuration.
2926*a67afe4dSAndroid Build Coastguard Worker	    eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
2927*a67afe4dSAndroid Build Coastguard Worker	    CC_quoted=
2928*a67afe4dSAndroid Build Coastguard Worker	    for arg in $CC; do
2929*a67afe4dSAndroid Build Coastguard Worker	      # Double-quote args containing other shell metacharacters.
2930*a67afe4dSAndroid Build Coastguard Worker	      func_append_quoted CC_quoted "$arg"
2931*a67afe4dSAndroid Build Coastguard Worker	    done
2932*a67afe4dSAndroid Build Coastguard Worker	    CC_expanded=`func_echo_all $CC`
2933*a67afe4dSAndroid Build Coastguard Worker	    CC_quoted_expanded=`func_echo_all $CC_quoted`
2934*a67afe4dSAndroid Build Coastguard Worker	    case "$@ " in
2935*a67afe4dSAndroid Build Coastguard Worker	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
2936*a67afe4dSAndroid Build Coastguard Worker	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
2937*a67afe4dSAndroid Build Coastguard Worker	      # The compiler in the base compile command matches
2938*a67afe4dSAndroid Build Coastguard Worker	      # the one in the tagged configuration.
2939*a67afe4dSAndroid Build Coastguard Worker	      # Assume this is the tagged configuration we want.
2940*a67afe4dSAndroid Build Coastguard Worker	      tagname=$z
2941*a67afe4dSAndroid Build Coastguard Worker	      break
2942*a67afe4dSAndroid Build Coastguard Worker	      ;;
2943*a67afe4dSAndroid Build Coastguard Worker	    esac
2944*a67afe4dSAndroid Build Coastguard Worker	  fi
2945*a67afe4dSAndroid Build Coastguard Worker	done
2946*a67afe4dSAndroid Build Coastguard Worker	# If $tagname still isn't set, then no tagged configuration
2947*a67afe4dSAndroid Build Coastguard Worker	# was found and let the user know that the "--tag" command
2948*a67afe4dSAndroid Build Coastguard Worker	# line option must be used.
2949*a67afe4dSAndroid Build Coastguard Worker	if test -z "$tagname"; then
2950*a67afe4dSAndroid Build Coastguard Worker	  func_echo "unable to infer tagged configuration"
2951*a67afe4dSAndroid Build Coastguard Worker	  func_fatal_error "specify a tag with '--tag'"
2952*a67afe4dSAndroid Build Coastguard Worker#	else
2953*a67afe4dSAndroid Build Coastguard Worker#	  func_verbose "using $tagname tagged configuration"
2954*a67afe4dSAndroid Build Coastguard Worker	fi
2955*a67afe4dSAndroid Build Coastguard Worker	;;
2956*a67afe4dSAndroid Build Coastguard Worker      esac
2957*a67afe4dSAndroid Build Coastguard Worker    fi
2958*a67afe4dSAndroid Build Coastguard Worker}
2959*a67afe4dSAndroid Build Coastguard Worker
2960*a67afe4dSAndroid Build Coastguard Worker
2961*a67afe4dSAndroid Build Coastguard Worker
2962*a67afe4dSAndroid Build Coastguard Worker# func_write_libtool_object output_name pic_name nonpic_name
2963*a67afe4dSAndroid Build Coastguard Worker# Create a libtool object file (analogous to a ".la" file),
2964*a67afe4dSAndroid Build Coastguard Worker# but don't create it if we're doing a dry run.
2965*a67afe4dSAndroid Build Coastguard Workerfunc_write_libtool_object ()
2966*a67afe4dSAndroid Build Coastguard Worker{
2967*a67afe4dSAndroid Build Coastguard Worker    write_libobj=$1
2968*a67afe4dSAndroid Build Coastguard Worker    if test yes = "$build_libtool_libs"; then
2969*a67afe4dSAndroid Build Coastguard Worker      write_lobj=\'$2\'
2970*a67afe4dSAndroid Build Coastguard Worker    else
2971*a67afe4dSAndroid Build Coastguard Worker      write_lobj=none
2972*a67afe4dSAndroid Build Coastguard Worker    fi
2973*a67afe4dSAndroid Build Coastguard Worker
2974*a67afe4dSAndroid Build Coastguard Worker    if test yes = "$build_old_libs"; then
2975*a67afe4dSAndroid Build Coastguard Worker      write_oldobj=\'$3\'
2976*a67afe4dSAndroid Build Coastguard Worker    else
2977*a67afe4dSAndroid Build Coastguard Worker      write_oldobj=none
2978*a67afe4dSAndroid Build Coastguard Worker    fi
2979*a67afe4dSAndroid Build Coastguard Worker
2980*a67afe4dSAndroid Build Coastguard Worker    $opt_dry_run || {
2981*a67afe4dSAndroid Build Coastguard Worker      cat >${write_libobj}T <<EOF
2982*a67afe4dSAndroid Build Coastguard Worker# $write_libobj - a libtool object file
2983*a67afe4dSAndroid Build Coastguard Worker# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
2984*a67afe4dSAndroid Build Coastguard Worker#
2985*a67afe4dSAndroid Build Coastguard Worker# Please DO NOT delete this file!
2986*a67afe4dSAndroid Build Coastguard Worker# It is necessary for linking the library.
2987*a67afe4dSAndroid Build Coastguard Worker
2988*a67afe4dSAndroid Build Coastguard Worker# Name of the PIC object.
2989*a67afe4dSAndroid Build Coastguard Workerpic_object=$write_lobj
2990*a67afe4dSAndroid Build Coastguard Worker
2991*a67afe4dSAndroid Build Coastguard Worker# Name of the non-PIC object
2992*a67afe4dSAndroid Build Coastguard Workernon_pic_object=$write_oldobj
2993*a67afe4dSAndroid Build Coastguard Worker
2994*a67afe4dSAndroid Build Coastguard WorkerEOF
2995*a67afe4dSAndroid Build Coastguard Worker      $MV "${write_libobj}T" "$write_libobj"
2996*a67afe4dSAndroid Build Coastguard Worker    }
2997*a67afe4dSAndroid Build Coastguard Worker}
2998*a67afe4dSAndroid Build Coastguard Worker
2999*a67afe4dSAndroid Build Coastguard Worker
3000*a67afe4dSAndroid Build Coastguard Worker##################################################
3001*a67afe4dSAndroid Build Coastguard Worker# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
3002*a67afe4dSAndroid Build Coastguard Worker##################################################
3003*a67afe4dSAndroid Build Coastguard Worker
3004*a67afe4dSAndroid Build Coastguard Worker# func_convert_core_file_wine_to_w32 ARG
3005*a67afe4dSAndroid Build Coastguard Worker# Helper function used by file name conversion functions when $build is *nix,
3006*a67afe4dSAndroid Build Coastguard Worker# and $host is mingw, cygwin, or some other w32 environment. Relies on a
3007*a67afe4dSAndroid Build Coastguard Worker# correctly configured wine environment available, with the winepath program
3008*a67afe4dSAndroid Build Coastguard Worker# in $build's $PATH.
3009*a67afe4dSAndroid Build Coastguard Worker#
3010*a67afe4dSAndroid Build Coastguard Worker# ARG is the $build file name to be converted to w32 format.
3011*a67afe4dSAndroid Build Coastguard Worker# Result is available in $func_convert_core_file_wine_to_w32_result, and will
3012*a67afe4dSAndroid Build Coastguard Worker# be empty on error (or when ARG is empty)
3013*a67afe4dSAndroid Build Coastguard Workerfunc_convert_core_file_wine_to_w32 ()
3014*a67afe4dSAndroid Build Coastguard Worker{
3015*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3016*a67afe4dSAndroid Build Coastguard Worker
3017*a67afe4dSAndroid Build Coastguard Worker  func_convert_core_file_wine_to_w32_result=$1
3018*a67afe4dSAndroid Build Coastguard Worker  if test -n "$1"; then
3019*a67afe4dSAndroid Build Coastguard Worker    # Unfortunately, winepath does not exit with a non-zero error code, so we
3020*a67afe4dSAndroid Build Coastguard Worker    # are forced to check the contents of stdout. On the other hand, if the
3021*a67afe4dSAndroid Build Coastguard Worker    # command is not found, the shell will set an exit code of 127 and print
3022*a67afe4dSAndroid Build Coastguard Worker    # *an error message* to stdout. So we must check for both error code of
3023*a67afe4dSAndroid Build Coastguard Worker    # zero AND non-empty stdout, which explains the odd construction:
3024*a67afe4dSAndroid Build Coastguard Worker    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
3025*a67afe4dSAndroid Build Coastguard Worker    if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then
3026*a67afe4dSAndroid Build Coastguard Worker      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
3027*a67afe4dSAndroid Build Coastguard Worker        $SED -e "$sed_naive_backslashify"`
3028*a67afe4dSAndroid Build Coastguard Worker    else
3029*a67afe4dSAndroid Build Coastguard Worker      func_convert_core_file_wine_to_w32_result=
3030*a67afe4dSAndroid Build Coastguard Worker    fi
3031*a67afe4dSAndroid Build Coastguard Worker  fi
3032*a67afe4dSAndroid Build Coastguard Worker}
3033*a67afe4dSAndroid Build Coastguard Worker# end: func_convert_core_file_wine_to_w32
3034*a67afe4dSAndroid Build Coastguard Worker
3035*a67afe4dSAndroid Build Coastguard Worker
3036*a67afe4dSAndroid Build Coastguard Worker# func_convert_core_path_wine_to_w32 ARG
3037*a67afe4dSAndroid Build Coastguard Worker# Helper function used by path conversion functions when $build is *nix, and
3038*a67afe4dSAndroid Build Coastguard Worker# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
3039*a67afe4dSAndroid Build Coastguard Worker# configured wine environment available, with the winepath program in $build's
3040*a67afe4dSAndroid Build Coastguard Worker# $PATH. Assumes ARG has no leading or trailing path separator characters.
3041*a67afe4dSAndroid Build Coastguard Worker#
3042*a67afe4dSAndroid Build Coastguard Worker# ARG is path to be converted from $build format to win32.
3043*a67afe4dSAndroid Build Coastguard Worker# Result is available in $func_convert_core_path_wine_to_w32_result.
3044*a67afe4dSAndroid Build Coastguard Worker# Unconvertible file (directory) names in ARG are skipped; if no directory names
3045*a67afe4dSAndroid Build Coastguard Worker# are convertible, then the result may be empty.
3046*a67afe4dSAndroid Build Coastguard Workerfunc_convert_core_path_wine_to_w32 ()
3047*a67afe4dSAndroid Build Coastguard Worker{
3048*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3049*a67afe4dSAndroid Build Coastguard Worker
3050*a67afe4dSAndroid Build Coastguard Worker  # unfortunately, winepath doesn't convert paths, only file names
3051*a67afe4dSAndroid Build Coastguard Worker  func_convert_core_path_wine_to_w32_result=
3052*a67afe4dSAndroid Build Coastguard Worker  if test -n "$1"; then
3053*a67afe4dSAndroid Build Coastguard Worker    oldIFS=$IFS
3054*a67afe4dSAndroid Build Coastguard Worker    IFS=:
3055*a67afe4dSAndroid Build Coastguard Worker    for func_convert_core_path_wine_to_w32_f in $1; do
3056*a67afe4dSAndroid Build Coastguard Worker      IFS=$oldIFS
3057*a67afe4dSAndroid Build Coastguard Worker      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
3058*a67afe4dSAndroid Build Coastguard Worker      if test -n "$func_convert_core_file_wine_to_w32_result"; then
3059*a67afe4dSAndroid Build Coastguard Worker        if test -z "$func_convert_core_path_wine_to_w32_result"; then
3060*a67afe4dSAndroid Build Coastguard Worker          func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result
3061*a67afe4dSAndroid Build Coastguard Worker        else
3062*a67afe4dSAndroid Build Coastguard Worker          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
3063*a67afe4dSAndroid Build Coastguard Worker        fi
3064*a67afe4dSAndroid Build Coastguard Worker      fi
3065*a67afe4dSAndroid Build Coastguard Worker    done
3066*a67afe4dSAndroid Build Coastguard Worker    IFS=$oldIFS
3067*a67afe4dSAndroid Build Coastguard Worker  fi
3068*a67afe4dSAndroid Build Coastguard Worker}
3069*a67afe4dSAndroid Build Coastguard Worker# end: func_convert_core_path_wine_to_w32
3070*a67afe4dSAndroid Build Coastguard Worker
3071*a67afe4dSAndroid Build Coastguard Worker
3072*a67afe4dSAndroid Build Coastguard Worker# func_cygpath ARGS...
3073*a67afe4dSAndroid Build Coastguard Worker# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
3074*a67afe4dSAndroid Build Coastguard Worker# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
3075*a67afe4dSAndroid Build Coastguard Worker# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
3076*a67afe4dSAndroid Build Coastguard Worker# (2), returns the Cygwin file name or path in func_cygpath_result (input
3077*a67afe4dSAndroid Build Coastguard Worker# file name or path is assumed to be in w32 format, as previously converted
3078*a67afe4dSAndroid Build Coastguard Worker# from $build's *nix or MSYS format). In case (3), returns the w32 file name
3079*a67afe4dSAndroid Build Coastguard Worker# or path in func_cygpath_result (input file name or path is assumed to be in
3080*a67afe4dSAndroid Build Coastguard Worker# Cygwin format). Returns an empty string on error.
3081*a67afe4dSAndroid Build Coastguard Worker#
3082*a67afe4dSAndroid Build Coastguard Worker# ARGS are passed to cygpath, with the last one being the file name or path to
3083*a67afe4dSAndroid Build Coastguard Worker# be converted.
3084*a67afe4dSAndroid Build Coastguard Worker#
3085*a67afe4dSAndroid Build Coastguard Worker# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
3086*a67afe4dSAndroid Build Coastguard Worker# environment variable; do not put it in $PATH.
3087*a67afe4dSAndroid Build Coastguard Workerfunc_cygpath ()
3088*a67afe4dSAndroid Build Coastguard Worker{
3089*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3090*a67afe4dSAndroid Build Coastguard Worker
3091*a67afe4dSAndroid Build Coastguard Worker  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
3092*a67afe4dSAndroid Build Coastguard Worker    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
3093*a67afe4dSAndroid Build Coastguard Worker    if test "$?" -ne 0; then
3094*a67afe4dSAndroid Build Coastguard Worker      # on failure, ensure result is empty
3095*a67afe4dSAndroid Build Coastguard Worker      func_cygpath_result=
3096*a67afe4dSAndroid Build Coastguard Worker    fi
3097*a67afe4dSAndroid Build Coastguard Worker  else
3098*a67afe4dSAndroid Build Coastguard Worker    func_cygpath_result=
3099*a67afe4dSAndroid Build Coastguard Worker    func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'"
3100*a67afe4dSAndroid Build Coastguard Worker  fi
3101*a67afe4dSAndroid Build Coastguard Worker}
3102*a67afe4dSAndroid Build Coastguard Worker#end: func_cygpath
3103*a67afe4dSAndroid Build Coastguard Worker
3104*a67afe4dSAndroid Build Coastguard Worker
3105*a67afe4dSAndroid Build Coastguard Worker# func_convert_core_msys_to_w32 ARG
3106*a67afe4dSAndroid Build Coastguard Worker# Convert file name or path ARG from MSYS format to w32 format.  Return
3107*a67afe4dSAndroid Build Coastguard Worker# result in func_convert_core_msys_to_w32_result.
3108*a67afe4dSAndroid Build Coastguard Workerfunc_convert_core_msys_to_w32 ()
3109*a67afe4dSAndroid Build Coastguard Worker{
3110*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3111*a67afe4dSAndroid Build Coastguard Worker
3112*a67afe4dSAndroid Build Coastguard Worker  # awkward: cmd appends spaces to result
3113*a67afe4dSAndroid Build Coastguard Worker  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
3114*a67afe4dSAndroid Build Coastguard Worker    $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"`
3115*a67afe4dSAndroid Build Coastguard Worker}
3116*a67afe4dSAndroid Build Coastguard Worker#end: func_convert_core_msys_to_w32
3117*a67afe4dSAndroid Build Coastguard Worker
3118*a67afe4dSAndroid Build Coastguard Worker
3119*a67afe4dSAndroid Build Coastguard Worker# func_convert_file_check ARG1 ARG2
3120*a67afe4dSAndroid Build Coastguard Worker# Verify that ARG1 (a file name in $build format) was converted to $host
3121*a67afe4dSAndroid Build Coastguard Worker# format in ARG2. Otherwise, emit an error message, but continue (resetting
3122*a67afe4dSAndroid Build Coastguard Worker# func_to_host_file_result to ARG1).
3123*a67afe4dSAndroid Build Coastguard Workerfunc_convert_file_check ()
3124*a67afe4dSAndroid Build Coastguard Worker{
3125*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3126*a67afe4dSAndroid Build Coastguard Worker
3127*a67afe4dSAndroid Build Coastguard Worker  if test -z "$2" && test -n "$1"; then
3128*a67afe4dSAndroid Build Coastguard Worker    func_error "Could not determine host file name corresponding to"
3129*a67afe4dSAndroid Build Coastguard Worker    func_error "  '$1'"
3130*a67afe4dSAndroid Build Coastguard Worker    func_error "Continuing, but uninstalled executables may not work."
3131*a67afe4dSAndroid Build Coastguard Worker    # Fallback:
3132*a67afe4dSAndroid Build Coastguard Worker    func_to_host_file_result=$1
3133*a67afe4dSAndroid Build Coastguard Worker  fi
3134*a67afe4dSAndroid Build Coastguard Worker}
3135*a67afe4dSAndroid Build Coastguard Worker# end func_convert_file_check
3136*a67afe4dSAndroid Build Coastguard Worker
3137*a67afe4dSAndroid Build Coastguard Worker
3138*a67afe4dSAndroid Build Coastguard Worker# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
3139*a67afe4dSAndroid Build Coastguard Worker# Verify that FROM_PATH (a path in $build format) was converted to $host
3140*a67afe4dSAndroid Build Coastguard Worker# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
3141*a67afe4dSAndroid Build Coastguard Worker# func_to_host_file_result to a simplistic fallback value (see below).
3142*a67afe4dSAndroid Build Coastguard Workerfunc_convert_path_check ()
3143*a67afe4dSAndroid Build Coastguard Worker{
3144*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3145*a67afe4dSAndroid Build Coastguard Worker
3146*a67afe4dSAndroid Build Coastguard Worker  if test -z "$4" && test -n "$3"; then
3147*a67afe4dSAndroid Build Coastguard Worker    func_error "Could not determine the host path corresponding to"
3148*a67afe4dSAndroid Build Coastguard Worker    func_error "  '$3'"
3149*a67afe4dSAndroid Build Coastguard Worker    func_error "Continuing, but uninstalled executables may not work."
3150*a67afe4dSAndroid Build Coastguard Worker    # Fallback.  This is a deliberately simplistic "conversion" and
3151*a67afe4dSAndroid Build Coastguard Worker    # should not be "improved".  See libtool.info.
3152*a67afe4dSAndroid Build Coastguard Worker    if test "x$1" != "x$2"; then
3153*a67afe4dSAndroid Build Coastguard Worker      lt_replace_pathsep_chars="s|$1|$2|g"
3154*a67afe4dSAndroid Build Coastguard Worker      func_to_host_path_result=`echo "$3" |
3155*a67afe4dSAndroid Build Coastguard Worker        $SED -e "$lt_replace_pathsep_chars"`
3156*a67afe4dSAndroid Build Coastguard Worker    else
3157*a67afe4dSAndroid Build Coastguard Worker      func_to_host_path_result=$3
3158*a67afe4dSAndroid Build Coastguard Worker    fi
3159*a67afe4dSAndroid Build Coastguard Worker  fi
3160*a67afe4dSAndroid Build Coastguard Worker}
3161*a67afe4dSAndroid Build Coastguard Worker# end func_convert_path_check
3162*a67afe4dSAndroid Build Coastguard Worker
3163*a67afe4dSAndroid Build Coastguard Worker
3164*a67afe4dSAndroid Build Coastguard Worker# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
3165*a67afe4dSAndroid Build Coastguard Worker# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
3166*a67afe4dSAndroid Build Coastguard Worker# and appending REPL if ORIG matches BACKPAT.
3167*a67afe4dSAndroid Build Coastguard Workerfunc_convert_path_front_back_pathsep ()
3168*a67afe4dSAndroid Build Coastguard Worker{
3169*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3170*a67afe4dSAndroid Build Coastguard Worker
3171*a67afe4dSAndroid Build Coastguard Worker  case $4 in
3172*a67afe4dSAndroid Build Coastguard Worker  $1 ) func_to_host_path_result=$3$func_to_host_path_result
3173*a67afe4dSAndroid Build Coastguard Worker    ;;
3174*a67afe4dSAndroid Build Coastguard Worker  esac
3175*a67afe4dSAndroid Build Coastguard Worker  case $4 in
3176*a67afe4dSAndroid Build Coastguard Worker  $2 ) func_append func_to_host_path_result "$3"
3177*a67afe4dSAndroid Build Coastguard Worker    ;;
3178*a67afe4dSAndroid Build Coastguard Worker  esac
3179*a67afe4dSAndroid Build Coastguard Worker}
3180*a67afe4dSAndroid Build Coastguard Worker# end func_convert_path_front_back_pathsep
3181*a67afe4dSAndroid Build Coastguard Worker
3182*a67afe4dSAndroid Build Coastguard Worker
3183*a67afe4dSAndroid Build Coastguard Worker##################################################
3184*a67afe4dSAndroid Build Coastguard Worker# $build to $host FILE NAME CONVERSION FUNCTIONS #
3185*a67afe4dSAndroid Build Coastguard Worker##################################################
3186*a67afe4dSAndroid Build Coastguard Worker# invoked via '$to_host_file_cmd ARG'
3187*a67afe4dSAndroid Build Coastguard Worker#
3188*a67afe4dSAndroid Build Coastguard Worker# In each case, ARG is the path to be converted from $build to $host format.
3189*a67afe4dSAndroid Build Coastguard Worker# Result will be available in $func_to_host_file_result.
3190*a67afe4dSAndroid Build Coastguard Worker
3191*a67afe4dSAndroid Build Coastguard Worker
3192*a67afe4dSAndroid Build Coastguard Worker# func_to_host_file ARG
3193*a67afe4dSAndroid Build Coastguard Worker# Converts the file name ARG from $build format to $host format. Return result
3194*a67afe4dSAndroid Build Coastguard Worker# in func_to_host_file_result.
3195*a67afe4dSAndroid Build Coastguard Workerfunc_to_host_file ()
3196*a67afe4dSAndroid Build Coastguard Worker{
3197*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3198*a67afe4dSAndroid Build Coastguard Worker
3199*a67afe4dSAndroid Build Coastguard Worker  $to_host_file_cmd "$1"
3200*a67afe4dSAndroid Build Coastguard Worker}
3201*a67afe4dSAndroid Build Coastguard Worker# end func_to_host_file
3202*a67afe4dSAndroid Build Coastguard Worker
3203*a67afe4dSAndroid Build Coastguard Worker
3204*a67afe4dSAndroid Build Coastguard Worker# func_to_tool_file ARG LAZY
3205*a67afe4dSAndroid Build Coastguard Worker# converts the file name ARG from $build format to toolchain format. Return
3206*a67afe4dSAndroid Build Coastguard Worker# result in func_to_tool_file_result.  If the conversion in use is listed
3207*a67afe4dSAndroid Build Coastguard Worker# in (the comma separated) LAZY, no conversion takes place.
3208*a67afe4dSAndroid Build Coastguard Workerfunc_to_tool_file ()
3209*a67afe4dSAndroid Build Coastguard Worker{
3210*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3211*a67afe4dSAndroid Build Coastguard Worker
3212*a67afe4dSAndroid Build Coastguard Worker  case ,$2, in
3213*a67afe4dSAndroid Build Coastguard Worker    *,"$to_tool_file_cmd",*)
3214*a67afe4dSAndroid Build Coastguard Worker      func_to_tool_file_result=$1
3215*a67afe4dSAndroid Build Coastguard Worker      ;;
3216*a67afe4dSAndroid Build Coastguard Worker    *)
3217*a67afe4dSAndroid Build Coastguard Worker      $to_tool_file_cmd "$1"
3218*a67afe4dSAndroid Build Coastguard Worker      func_to_tool_file_result=$func_to_host_file_result
3219*a67afe4dSAndroid Build Coastguard Worker      ;;
3220*a67afe4dSAndroid Build Coastguard Worker  esac
3221*a67afe4dSAndroid Build Coastguard Worker}
3222*a67afe4dSAndroid Build Coastguard Worker# end func_to_tool_file
3223*a67afe4dSAndroid Build Coastguard Worker
3224*a67afe4dSAndroid Build Coastguard Worker
3225*a67afe4dSAndroid Build Coastguard Worker# func_convert_file_noop ARG
3226*a67afe4dSAndroid Build Coastguard Worker# Copy ARG to func_to_host_file_result.
3227*a67afe4dSAndroid Build Coastguard Workerfunc_convert_file_noop ()
3228*a67afe4dSAndroid Build Coastguard Worker{
3229*a67afe4dSAndroid Build Coastguard Worker  func_to_host_file_result=$1
3230*a67afe4dSAndroid Build Coastguard Worker}
3231*a67afe4dSAndroid Build Coastguard Worker# end func_convert_file_noop
3232*a67afe4dSAndroid Build Coastguard Worker
3233*a67afe4dSAndroid Build Coastguard Worker
3234*a67afe4dSAndroid Build Coastguard Worker# func_convert_file_msys_to_w32 ARG
3235*a67afe4dSAndroid Build Coastguard Worker# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
3236*a67afe4dSAndroid Build Coastguard Worker# conversion to w32 is not available inside the cwrapper.  Returns result in
3237*a67afe4dSAndroid Build Coastguard Worker# func_to_host_file_result.
3238*a67afe4dSAndroid Build Coastguard Workerfunc_convert_file_msys_to_w32 ()
3239*a67afe4dSAndroid Build Coastguard Worker{
3240*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3241*a67afe4dSAndroid Build Coastguard Worker
3242*a67afe4dSAndroid Build Coastguard Worker  func_to_host_file_result=$1
3243*a67afe4dSAndroid Build Coastguard Worker  if test -n "$1"; then
3244*a67afe4dSAndroid Build Coastguard Worker    func_convert_core_msys_to_w32 "$1"
3245*a67afe4dSAndroid Build Coastguard Worker    func_to_host_file_result=$func_convert_core_msys_to_w32_result
3246*a67afe4dSAndroid Build Coastguard Worker  fi
3247*a67afe4dSAndroid Build Coastguard Worker  func_convert_file_check "$1" "$func_to_host_file_result"
3248*a67afe4dSAndroid Build Coastguard Worker}
3249*a67afe4dSAndroid Build Coastguard Worker# end func_convert_file_msys_to_w32
3250*a67afe4dSAndroid Build Coastguard Worker
3251*a67afe4dSAndroid Build Coastguard Worker
3252*a67afe4dSAndroid Build Coastguard Worker# func_convert_file_cygwin_to_w32 ARG
3253*a67afe4dSAndroid Build Coastguard Worker# Convert file name ARG from Cygwin to w32 format.  Returns result in
3254*a67afe4dSAndroid Build Coastguard Worker# func_to_host_file_result.
3255*a67afe4dSAndroid Build Coastguard Workerfunc_convert_file_cygwin_to_w32 ()
3256*a67afe4dSAndroid Build Coastguard Worker{
3257*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3258*a67afe4dSAndroid Build Coastguard Worker
3259*a67afe4dSAndroid Build Coastguard Worker  func_to_host_file_result=$1
3260*a67afe4dSAndroid Build Coastguard Worker  if test -n "$1"; then
3261*a67afe4dSAndroid Build Coastguard Worker    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
3262*a67afe4dSAndroid Build Coastguard Worker    # LT_CYGPATH in this case.
3263*a67afe4dSAndroid Build Coastguard Worker    func_to_host_file_result=`cygpath -m "$1"`
3264*a67afe4dSAndroid Build Coastguard Worker  fi
3265*a67afe4dSAndroid Build Coastguard Worker  func_convert_file_check "$1" "$func_to_host_file_result"
3266*a67afe4dSAndroid Build Coastguard Worker}
3267*a67afe4dSAndroid Build Coastguard Worker# end func_convert_file_cygwin_to_w32
3268*a67afe4dSAndroid Build Coastguard Worker
3269*a67afe4dSAndroid Build Coastguard Worker
3270*a67afe4dSAndroid Build Coastguard Worker# func_convert_file_nix_to_w32 ARG
3271*a67afe4dSAndroid Build Coastguard Worker# Convert file name ARG from *nix to w32 format.  Requires a wine environment
3272*a67afe4dSAndroid Build Coastguard Worker# and a working winepath. Returns result in func_to_host_file_result.
3273*a67afe4dSAndroid Build Coastguard Workerfunc_convert_file_nix_to_w32 ()
3274*a67afe4dSAndroid Build Coastguard Worker{
3275*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3276*a67afe4dSAndroid Build Coastguard Worker
3277*a67afe4dSAndroid Build Coastguard Worker  func_to_host_file_result=$1
3278*a67afe4dSAndroid Build Coastguard Worker  if test -n "$1"; then
3279*a67afe4dSAndroid Build Coastguard Worker    func_convert_core_file_wine_to_w32 "$1"
3280*a67afe4dSAndroid Build Coastguard Worker    func_to_host_file_result=$func_convert_core_file_wine_to_w32_result
3281*a67afe4dSAndroid Build Coastguard Worker  fi
3282*a67afe4dSAndroid Build Coastguard Worker  func_convert_file_check "$1" "$func_to_host_file_result"
3283*a67afe4dSAndroid Build Coastguard Worker}
3284*a67afe4dSAndroid Build Coastguard Worker# end func_convert_file_nix_to_w32
3285*a67afe4dSAndroid Build Coastguard Worker
3286*a67afe4dSAndroid Build Coastguard Worker
3287*a67afe4dSAndroid Build Coastguard Worker# func_convert_file_msys_to_cygwin ARG
3288*a67afe4dSAndroid Build Coastguard Worker# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
3289*a67afe4dSAndroid Build Coastguard Worker# Returns result in func_to_host_file_result.
3290*a67afe4dSAndroid Build Coastguard Workerfunc_convert_file_msys_to_cygwin ()
3291*a67afe4dSAndroid Build Coastguard Worker{
3292*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3293*a67afe4dSAndroid Build Coastguard Worker
3294*a67afe4dSAndroid Build Coastguard Worker  func_to_host_file_result=$1
3295*a67afe4dSAndroid Build Coastguard Worker  if test -n "$1"; then
3296*a67afe4dSAndroid Build Coastguard Worker    func_convert_core_msys_to_w32 "$1"
3297*a67afe4dSAndroid Build Coastguard Worker    func_cygpath -u "$func_convert_core_msys_to_w32_result"
3298*a67afe4dSAndroid Build Coastguard Worker    func_to_host_file_result=$func_cygpath_result
3299*a67afe4dSAndroid Build Coastguard Worker  fi
3300*a67afe4dSAndroid Build Coastguard Worker  func_convert_file_check "$1" "$func_to_host_file_result"
3301*a67afe4dSAndroid Build Coastguard Worker}
3302*a67afe4dSAndroid Build Coastguard Worker# end func_convert_file_msys_to_cygwin
3303*a67afe4dSAndroid Build Coastguard Worker
3304*a67afe4dSAndroid Build Coastguard Worker
3305*a67afe4dSAndroid Build Coastguard Worker# func_convert_file_nix_to_cygwin ARG
3306*a67afe4dSAndroid Build Coastguard Worker# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
3307*a67afe4dSAndroid Build Coastguard Worker# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
3308*a67afe4dSAndroid Build Coastguard Worker# in func_to_host_file_result.
3309*a67afe4dSAndroid Build Coastguard Workerfunc_convert_file_nix_to_cygwin ()
3310*a67afe4dSAndroid Build Coastguard Worker{
3311*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3312*a67afe4dSAndroid Build Coastguard Worker
3313*a67afe4dSAndroid Build Coastguard Worker  func_to_host_file_result=$1
3314*a67afe4dSAndroid Build Coastguard Worker  if test -n "$1"; then
3315*a67afe4dSAndroid Build Coastguard Worker    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
3316*a67afe4dSAndroid Build Coastguard Worker    func_convert_core_file_wine_to_w32 "$1"
3317*a67afe4dSAndroid Build Coastguard Worker    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
3318*a67afe4dSAndroid Build Coastguard Worker    func_to_host_file_result=$func_cygpath_result
3319*a67afe4dSAndroid Build Coastguard Worker  fi
3320*a67afe4dSAndroid Build Coastguard Worker  func_convert_file_check "$1" "$func_to_host_file_result"
3321*a67afe4dSAndroid Build Coastguard Worker}
3322*a67afe4dSAndroid Build Coastguard Worker# end func_convert_file_nix_to_cygwin
3323*a67afe4dSAndroid Build Coastguard Worker
3324*a67afe4dSAndroid Build Coastguard Worker
3325*a67afe4dSAndroid Build Coastguard Worker#############################################
3326*a67afe4dSAndroid Build Coastguard Worker# $build to $host PATH CONVERSION FUNCTIONS #
3327*a67afe4dSAndroid Build Coastguard Worker#############################################
3328*a67afe4dSAndroid Build Coastguard Worker# invoked via '$to_host_path_cmd ARG'
3329*a67afe4dSAndroid Build Coastguard Worker#
3330*a67afe4dSAndroid Build Coastguard Worker# In each case, ARG is the path to be converted from $build to $host format.
3331*a67afe4dSAndroid Build Coastguard Worker# The result will be available in $func_to_host_path_result.
3332*a67afe4dSAndroid Build Coastguard Worker#
3333*a67afe4dSAndroid Build Coastguard Worker# Path separators are also converted from $build format to $host format.  If
3334*a67afe4dSAndroid Build Coastguard Worker# ARG begins or ends with a path separator character, it is preserved (but
3335*a67afe4dSAndroid Build Coastguard Worker# converted to $host format) on output.
3336*a67afe4dSAndroid Build Coastguard Worker#
3337*a67afe4dSAndroid Build Coastguard Worker# All path conversion functions are named using the following convention:
3338*a67afe4dSAndroid Build Coastguard Worker#   file name conversion function    : func_convert_file_X_to_Y ()
3339*a67afe4dSAndroid Build Coastguard Worker#   path conversion function         : func_convert_path_X_to_Y ()
3340*a67afe4dSAndroid Build Coastguard Worker# where, for any given $build/$host combination the 'X_to_Y' value is the
3341*a67afe4dSAndroid Build Coastguard Worker# same.  If conversion functions are added for new $build/$host combinations,
3342*a67afe4dSAndroid Build Coastguard Worker# the two new functions must follow this pattern, or func_init_to_host_path_cmd
3343*a67afe4dSAndroid Build Coastguard Worker# will break.
3344*a67afe4dSAndroid Build Coastguard Worker
3345*a67afe4dSAndroid Build Coastguard Worker
3346*a67afe4dSAndroid Build Coastguard Worker# func_init_to_host_path_cmd
3347*a67afe4dSAndroid Build Coastguard Worker# Ensures that function "pointer" variable $to_host_path_cmd is set to the
3348*a67afe4dSAndroid Build Coastguard Worker# appropriate value, based on the value of $to_host_file_cmd.
3349*a67afe4dSAndroid Build Coastguard Workerto_host_path_cmd=
3350*a67afe4dSAndroid Build Coastguard Workerfunc_init_to_host_path_cmd ()
3351*a67afe4dSAndroid Build Coastguard Worker{
3352*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3353*a67afe4dSAndroid Build Coastguard Worker
3354*a67afe4dSAndroid Build Coastguard Worker  if test -z "$to_host_path_cmd"; then
3355*a67afe4dSAndroid Build Coastguard Worker    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
3356*a67afe4dSAndroid Build Coastguard Worker    to_host_path_cmd=func_convert_path_$func_stripname_result
3357*a67afe4dSAndroid Build Coastguard Worker  fi
3358*a67afe4dSAndroid Build Coastguard Worker}
3359*a67afe4dSAndroid Build Coastguard Worker
3360*a67afe4dSAndroid Build Coastguard Worker
3361*a67afe4dSAndroid Build Coastguard Worker# func_to_host_path ARG
3362*a67afe4dSAndroid Build Coastguard Worker# Converts the path ARG from $build format to $host format. Return result
3363*a67afe4dSAndroid Build Coastguard Worker# in func_to_host_path_result.
3364*a67afe4dSAndroid Build Coastguard Workerfunc_to_host_path ()
3365*a67afe4dSAndroid Build Coastguard Worker{
3366*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3367*a67afe4dSAndroid Build Coastguard Worker
3368*a67afe4dSAndroid Build Coastguard Worker  func_init_to_host_path_cmd
3369*a67afe4dSAndroid Build Coastguard Worker  $to_host_path_cmd "$1"
3370*a67afe4dSAndroid Build Coastguard Worker}
3371*a67afe4dSAndroid Build Coastguard Worker# end func_to_host_path
3372*a67afe4dSAndroid Build Coastguard Worker
3373*a67afe4dSAndroid Build Coastguard Worker
3374*a67afe4dSAndroid Build Coastguard Worker# func_convert_path_noop ARG
3375*a67afe4dSAndroid Build Coastguard Worker# Copy ARG to func_to_host_path_result.
3376*a67afe4dSAndroid Build Coastguard Workerfunc_convert_path_noop ()
3377*a67afe4dSAndroid Build Coastguard Worker{
3378*a67afe4dSAndroid Build Coastguard Worker  func_to_host_path_result=$1
3379*a67afe4dSAndroid Build Coastguard Worker}
3380*a67afe4dSAndroid Build Coastguard Worker# end func_convert_path_noop
3381*a67afe4dSAndroid Build Coastguard Worker
3382*a67afe4dSAndroid Build Coastguard Worker
3383*a67afe4dSAndroid Build Coastguard Worker# func_convert_path_msys_to_w32 ARG
3384*a67afe4dSAndroid Build Coastguard Worker# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
3385*a67afe4dSAndroid Build Coastguard Worker# conversion to w32 is not available inside the cwrapper.  Returns result in
3386*a67afe4dSAndroid Build Coastguard Worker# func_to_host_path_result.
3387*a67afe4dSAndroid Build Coastguard Workerfunc_convert_path_msys_to_w32 ()
3388*a67afe4dSAndroid Build Coastguard Worker{
3389*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3390*a67afe4dSAndroid Build Coastguard Worker
3391*a67afe4dSAndroid Build Coastguard Worker  func_to_host_path_result=$1
3392*a67afe4dSAndroid Build Coastguard Worker  if test -n "$1"; then
3393*a67afe4dSAndroid Build Coastguard Worker    # Remove leading and trailing path separator characters from ARG.  MSYS
3394*a67afe4dSAndroid Build Coastguard Worker    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
3395*a67afe4dSAndroid Build Coastguard Worker    # and winepath ignores them completely.
3396*a67afe4dSAndroid Build Coastguard Worker    func_stripname : : "$1"
3397*a67afe4dSAndroid Build Coastguard Worker    func_to_host_path_tmp1=$func_stripname_result
3398*a67afe4dSAndroid Build Coastguard Worker    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
3399*a67afe4dSAndroid Build Coastguard Worker    func_to_host_path_result=$func_convert_core_msys_to_w32_result
3400*a67afe4dSAndroid Build Coastguard Worker    func_convert_path_check : ";" \
3401*a67afe4dSAndroid Build Coastguard Worker      "$func_to_host_path_tmp1" "$func_to_host_path_result"
3402*a67afe4dSAndroid Build Coastguard Worker    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
3403*a67afe4dSAndroid Build Coastguard Worker  fi
3404*a67afe4dSAndroid Build Coastguard Worker}
3405*a67afe4dSAndroid Build Coastguard Worker# end func_convert_path_msys_to_w32
3406*a67afe4dSAndroid Build Coastguard Worker
3407*a67afe4dSAndroid Build Coastguard Worker
3408*a67afe4dSAndroid Build Coastguard Worker# func_convert_path_cygwin_to_w32 ARG
3409*a67afe4dSAndroid Build Coastguard Worker# Convert path ARG from Cygwin to w32 format.  Returns result in
3410*a67afe4dSAndroid Build Coastguard Worker# func_to_host_file_result.
3411*a67afe4dSAndroid Build Coastguard Workerfunc_convert_path_cygwin_to_w32 ()
3412*a67afe4dSAndroid Build Coastguard Worker{
3413*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3414*a67afe4dSAndroid Build Coastguard Worker
3415*a67afe4dSAndroid Build Coastguard Worker  func_to_host_path_result=$1
3416*a67afe4dSAndroid Build Coastguard Worker  if test -n "$1"; then
3417*a67afe4dSAndroid Build Coastguard Worker    # See func_convert_path_msys_to_w32:
3418*a67afe4dSAndroid Build Coastguard Worker    func_stripname : : "$1"
3419*a67afe4dSAndroid Build Coastguard Worker    func_to_host_path_tmp1=$func_stripname_result
3420*a67afe4dSAndroid Build Coastguard Worker    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
3421*a67afe4dSAndroid Build Coastguard Worker    func_convert_path_check : ";" \
3422*a67afe4dSAndroid Build Coastguard Worker      "$func_to_host_path_tmp1" "$func_to_host_path_result"
3423*a67afe4dSAndroid Build Coastguard Worker    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
3424*a67afe4dSAndroid Build Coastguard Worker  fi
3425*a67afe4dSAndroid Build Coastguard Worker}
3426*a67afe4dSAndroid Build Coastguard Worker# end func_convert_path_cygwin_to_w32
3427*a67afe4dSAndroid Build Coastguard Worker
3428*a67afe4dSAndroid Build Coastguard Worker
3429*a67afe4dSAndroid Build Coastguard Worker# func_convert_path_nix_to_w32 ARG
3430*a67afe4dSAndroid Build Coastguard Worker# Convert path ARG from *nix to w32 format.  Requires a wine environment and
3431*a67afe4dSAndroid Build Coastguard Worker# a working winepath.  Returns result in func_to_host_file_result.
3432*a67afe4dSAndroid Build Coastguard Workerfunc_convert_path_nix_to_w32 ()
3433*a67afe4dSAndroid Build Coastguard Worker{
3434*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3435*a67afe4dSAndroid Build Coastguard Worker
3436*a67afe4dSAndroid Build Coastguard Worker  func_to_host_path_result=$1
3437*a67afe4dSAndroid Build Coastguard Worker  if test -n "$1"; then
3438*a67afe4dSAndroid Build Coastguard Worker    # See func_convert_path_msys_to_w32:
3439*a67afe4dSAndroid Build Coastguard Worker    func_stripname : : "$1"
3440*a67afe4dSAndroid Build Coastguard Worker    func_to_host_path_tmp1=$func_stripname_result
3441*a67afe4dSAndroid Build Coastguard Worker    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
3442*a67afe4dSAndroid Build Coastguard Worker    func_to_host_path_result=$func_convert_core_path_wine_to_w32_result
3443*a67afe4dSAndroid Build Coastguard Worker    func_convert_path_check : ";" \
3444*a67afe4dSAndroid Build Coastguard Worker      "$func_to_host_path_tmp1" "$func_to_host_path_result"
3445*a67afe4dSAndroid Build Coastguard Worker    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
3446*a67afe4dSAndroid Build Coastguard Worker  fi
3447*a67afe4dSAndroid Build Coastguard Worker}
3448*a67afe4dSAndroid Build Coastguard Worker# end func_convert_path_nix_to_w32
3449*a67afe4dSAndroid Build Coastguard Worker
3450*a67afe4dSAndroid Build Coastguard Worker
3451*a67afe4dSAndroid Build Coastguard Worker# func_convert_path_msys_to_cygwin ARG
3452*a67afe4dSAndroid Build Coastguard Worker# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
3453*a67afe4dSAndroid Build Coastguard Worker# Returns result in func_to_host_file_result.
3454*a67afe4dSAndroid Build Coastguard Workerfunc_convert_path_msys_to_cygwin ()
3455*a67afe4dSAndroid Build Coastguard Worker{
3456*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3457*a67afe4dSAndroid Build Coastguard Worker
3458*a67afe4dSAndroid Build Coastguard Worker  func_to_host_path_result=$1
3459*a67afe4dSAndroid Build Coastguard Worker  if test -n "$1"; then
3460*a67afe4dSAndroid Build Coastguard Worker    # See func_convert_path_msys_to_w32:
3461*a67afe4dSAndroid Build Coastguard Worker    func_stripname : : "$1"
3462*a67afe4dSAndroid Build Coastguard Worker    func_to_host_path_tmp1=$func_stripname_result
3463*a67afe4dSAndroid Build Coastguard Worker    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
3464*a67afe4dSAndroid Build Coastguard Worker    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
3465*a67afe4dSAndroid Build Coastguard Worker    func_to_host_path_result=$func_cygpath_result
3466*a67afe4dSAndroid Build Coastguard Worker    func_convert_path_check : : \
3467*a67afe4dSAndroid Build Coastguard Worker      "$func_to_host_path_tmp1" "$func_to_host_path_result"
3468*a67afe4dSAndroid Build Coastguard Worker    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
3469*a67afe4dSAndroid Build Coastguard Worker  fi
3470*a67afe4dSAndroid Build Coastguard Worker}
3471*a67afe4dSAndroid Build Coastguard Worker# end func_convert_path_msys_to_cygwin
3472*a67afe4dSAndroid Build Coastguard Worker
3473*a67afe4dSAndroid Build Coastguard Worker
3474*a67afe4dSAndroid Build Coastguard Worker# func_convert_path_nix_to_cygwin ARG
3475*a67afe4dSAndroid Build Coastguard Worker# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
3476*a67afe4dSAndroid Build Coastguard Worker# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
3477*a67afe4dSAndroid Build Coastguard Worker# func_to_host_file_result.
3478*a67afe4dSAndroid Build Coastguard Workerfunc_convert_path_nix_to_cygwin ()
3479*a67afe4dSAndroid Build Coastguard Worker{
3480*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3481*a67afe4dSAndroid Build Coastguard Worker
3482*a67afe4dSAndroid Build Coastguard Worker  func_to_host_path_result=$1
3483*a67afe4dSAndroid Build Coastguard Worker  if test -n "$1"; then
3484*a67afe4dSAndroid Build Coastguard Worker    # Remove leading and trailing path separator characters from
3485*a67afe4dSAndroid Build Coastguard Worker    # ARG. msys behavior is inconsistent here, cygpath turns them
3486*a67afe4dSAndroid Build Coastguard Worker    # into '.;' and ';.', and winepath ignores them completely.
3487*a67afe4dSAndroid Build Coastguard Worker    func_stripname : : "$1"
3488*a67afe4dSAndroid Build Coastguard Worker    func_to_host_path_tmp1=$func_stripname_result
3489*a67afe4dSAndroid Build Coastguard Worker    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
3490*a67afe4dSAndroid Build Coastguard Worker    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
3491*a67afe4dSAndroid Build Coastguard Worker    func_to_host_path_result=$func_cygpath_result
3492*a67afe4dSAndroid Build Coastguard Worker    func_convert_path_check : : \
3493*a67afe4dSAndroid Build Coastguard Worker      "$func_to_host_path_tmp1" "$func_to_host_path_result"
3494*a67afe4dSAndroid Build Coastguard Worker    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
3495*a67afe4dSAndroid Build Coastguard Worker  fi
3496*a67afe4dSAndroid Build Coastguard Worker}
3497*a67afe4dSAndroid Build Coastguard Worker# end func_convert_path_nix_to_cygwin
3498*a67afe4dSAndroid Build Coastguard Worker
3499*a67afe4dSAndroid Build Coastguard Worker
3500*a67afe4dSAndroid Build Coastguard Worker# func_dll_def_p FILE
3501*a67afe4dSAndroid Build Coastguard Worker# True iff FILE is a Windows DLL '.def' file.
3502*a67afe4dSAndroid Build Coastguard Worker# Keep in sync with _LT_DLL_DEF_P in libtool.m4
3503*a67afe4dSAndroid Build Coastguard Workerfunc_dll_def_p ()
3504*a67afe4dSAndroid Build Coastguard Worker{
3505*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
3506*a67afe4dSAndroid Build Coastguard Worker
3507*a67afe4dSAndroid Build Coastguard Worker  func_dll_def_p_tmp=`$SED -n \
3508*a67afe4dSAndroid Build Coastguard Worker    -e 's/^[	 ]*//' \
3509*a67afe4dSAndroid Build Coastguard Worker    -e '/^\(;.*\)*$/d' \
3510*a67afe4dSAndroid Build Coastguard Worker    -e 's/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p' \
3511*a67afe4dSAndroid Build Coastguard Worker    -e q \
3512*a67afe4dSAndroid Build Coastguard Worker    "$1"`
3513*a67afe4dSAndroid Build Coastguard Worker  test DEF = "$func_dll_def_p_tmp"
3514*a67afe4dSAndroid Build Coastguard Worker}
3515*a67afe4dSAndroid Build Coastguard Worker
3516*a67afe4dSAndroid Build Coastguard Worker
3517*a67afe4dSAndroid Build Coastguard Worker# func_mode_compile arg...
3518*a67afe4dSAndroid Build Coastguard Workerfunc_mode_compile ()
3519*a67afe4dSAndroid Build Coastguard Worker{
3520*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
3521*a67afe4dSAndroid Build Coastguard Worker
3522*a67afe4dSAndroid Build Coastguard Worker    # Get the compilation command and the source file.
3523*a67afe4dSAndroid Build Coastguard Worker    base_compile=
3524*a67afe4dSAndroid Build Coastguard Worker    srcfile=$nonopt  #  always keep a non-empty value in "srcfile"
3525*a67afe4dSAndroid Build Coastguard Worker    suppress_opt=yes
3526*a67afe4dSAndroid Build Coastguard Worker    suppress_output=
3527*a67afe4dSAndroid Build Coastguard Worker    arg_mode=normal
3528*a67afe4dSAndroid Build Coastguard Worker    libobj=
3529*a67afe4dSAndroid Build Coastguard Worker    later=
3530*a67afe4dSAndroid Build Coastguard Worker    pie_flag=
3531*a67afe4dSAndroid Build Coastguard Worker
3532*a67afe4dSAndroid Build Coastguard Worker    for arg
3533*a67afe4dSAndroid Build Coastguard Worker    do
3534*a67afe4dSAndroid Build Coastguard Worker      case $arg_mode in
3535*a67afe4dSAndroid Build Coastguard Worker      arg  )
3536*a67afe4dSAndroid Build Coastguard Worker	# do not "continue".  Instead, add this to base_compile
3537*a67afe4dSAndroid Build Coastguard Worker	lastarg=$arg
3538*a67afe4dSAndroid Build Coastguard Worker	arg_mode=normal
3539*a67afe4dSAndroid Build Coastguard Worker	;;
3540*a67afe4dSAndroid Build Coastguard Worker
3541*a67afe4dSAndroid Build Coastguard Worker      target )
3542*a67afe4dSAndroid Build Coastguard Worker	libobj=$arg
3543*a67afe4dSAndroid Build Coastguard Worker	arg_mode=normal
3544*a67afe4dSAndroid Build Coastguard Worker	continue
3545*a67afe4dSAndroid Build Coastguard Worker	;;
3546*a67afe4dSAndroid Build Coastguard Worker
3547*a67afe4dSAndroid Build Coastguard Worker      normal )
3548*a67afe4dSAndroid Build Coastguard Worker	# Accept any command-line options.
3549*a67afe4dSAndroid Build Coastguard Worker	case $arg in
3550*a67afe4dSAndroid Build Coastguard Worker	-o)
3551*a67afe4dSAndroid Build Coastguard Worker	  test -n "$libobj" && \
3552*a67afe4dSAndroid Build Coastguard Worker	    func_fatal_error "you cannot specify '-o' more than once"
3553*a67afe4dSAndroid Build Coastguard Worker	  arg_mode=target
3554*a67afe4dSAndroid Build Coastguard Worker	  continue
3555*a67afe4dSAndroid Build Coastguard Worker	  ;;
3556*a67afe4dSAndroid Build Coastguard Worker
3557*a67afe4dSAndroid Build Coastguard Worker	-pie | -fpie | -fPIE)
3558*a67afe4dSAndroid Build Coastguard Worker          func_append pie_flag " $arg"
3559*a67afe4dSAndroid Build Coastguard Worker	  continue
3560*a67afe4dSAndroid Build Coastguard Worker	  ;;
3561*a67afe4dSAndroid Build Coastguard Worker
3562*a67afe4dSAndroid Build Coastguard Worker	-shared | -static | -prefer-pic | -prefer-non-pic)
3563*a67afe4dSAndroid Build Coastguard Worker	  func_append later " $arg"
3564*a67afe4dSAndroid Build Coastguard Worker	  continue
3565*a67afe4dSAndroid Build Coastguard Worker	  ;;
3566*a67afe4dSAndroid Build Coastguard Worker
3567*a67afe4dSAndroid Build Coastguard Worker	-no-suppress)
3568*a67afe4dSAndroid Build Coastguard Worker	  suppress_opt=no
3569*a67afe4dSAndroid Build Coastguard Worker	  continue
3570*a67afe4dSAndroid Build Coastguard Worker	  ;;
3571*a67afe4dSAndroid Build Coastguard Worker
3572*a67afe4dSAndroid Build Coastguard Worker	-Xcompiler)
3573*a67afe4dSAndroid Build Coastguard Worker	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
3574*a67afe4dSAndroid Build Coastguard Worker	  continue      #  The current "srcfile" will either be retained or
3575*a67afe4dSAndroid Build Coastguard Worker	  ;;            #  replaced later.  I would guess that would be a bug.
3576*a67afe4dSAndroid Build Coastguard Worker
3577*a67afe4dSAndroid Build Coastguard Worker	-Wc,*)
3578*a67afe4dSAndroid Build Coastguard Worker	  func_stripname '-Wc,' '' "$arg"
3579*a67afe4dSAndroid Build Coastguard Worker	  args=$func_stripname_result
3580*a67afe4dSAndroid Build Coastguard Worker	  lastarg=
3581*a67afe4dSAndroid Build Coastguard Worker	  save_ifs=$IFS; IFS=,
3582*a67afe4dSAndroid Build Coastguard Worker	  for arg in $args; do
3583*a67afe4dSAndroid Build Coastguard Worker	    IFS=$save_ifs
3584*a67afe4dSAndroid Build Coastguard Worker	    func_append_quoted lastarg "$arg"
3585*a67afe4dSAndroid Build Coastguard Worker	  done
3586*a67afe4dSAndroid Build Coastguard Worker	  IFS=$save_ifs
3587*a67afe4dSAndroid Build Coastguard Worker	  func_stripname ' ' '' "$lastarg"
3588*a67afe4dSAndroid Build Coastguard Worker	  lastarg=$func_stripname_result
3589*a67afe4dSAndroid Build Coastguard Worker
3590*a67afe4dSAndroid Build Coastguard Worker	  # Add the arguments to base_compile.
3591*a67afe4dSAndroid Build Coastguard Worker	  func_append base_compile " $lastarg"
3592*a67afe4dSAndroid Build Coastguard Worker	  continue
3593*a67afe4dSAndroid Build Coastguard Worker	  ;;
3594*a67afe4dSAndroid Build Coastguard Worker
3595*a67afe4dSAndroid Build Coastguard Worker	*)
3596*a67afe4dSAndroid Build Coastguard Worker	  # Accept the current argument as the source file.
3597*a67afe4dSAndroid Build Coastguard Worker	  # The previous "srcfile" becomes the current argument.
3598*a67afe4dSAndroid Build Coastguard Worker	  #
3599*a67afe4dSAndroid Build Coastguard Worker	  lastarg=$srcfile
3600*a67afe4dSAndroid Build Coastguard Worker	  srcfile=$arg
3601*a67afe4dSAndroid Build Coastguard Worker	  ;;
3602*a67afe4dSAndroid Build Coastguard Worker	esac  #  case $arg
3603*a67afe4dSAndroid Build Coastguard Worker	;;
3604*a67afe4dSAndroid Build Coastguard Worker      esac    #  case $arg_mode
3605*a67afe4dSAndroid Build Coastguard Worker
3606*a67afe4dSAndroid Build Coastguard Worker      # Aesthetically quote the previous argument.
3607*a67afe4dSAndroid Build Coastguard Worker      func_append_quoted base_compile "$lastarg"
3608*a67afe4dSAndroid Build Coastguard Worker    done # for arg
3609*a67afe4dSAndroid Build Coastguard Worker
3610*a67afe4dSAndroid Build Coastguard Worker    case $arg_mode in
3611*a67afe4dSAndroid Build Coastguard Worker    arg)
3612*a67afe4dSAndroid Build Coastguard Worker      func_fatal_error "you must specify an argument for -Xcompile"
3613*a67afe4dSAndroid Build Coastguard Worker      ;;
3614*a67afe4dSAndroid Build Coastguard Worker    target)
3615*a67afe4dSAndroid Build Coastguard Worker      func_fatal_error "you must specify a target with '-o'"
3616*a67afe4dSAndroid Build Coastguard Worker      ;;
3617*a67afe4dSAndroid Build Coastguard Worker    *)
3618*a67afe4dSAndroid Build Coastguard Worker      # Get the name of the library object.
3619*a67afe4dSAndroid Build Coastguard Worker      test -z "$libobj" && {
3620*a67afe4dSAndroid Build Coastguard Worker	func_basename "$srcfile"
3621*a67afe4dSAndroid Build Coastguard Worker	libobj=$func_basename_result
3622*a67afe4dSAndroid Build Coastguard Worker      }
3623*a67afe4dSAndroid Build Coastguard Worker      ;;
3624*a67afe4dSAndroid Build Coastguard Worker    esac
3625*a67afe4dSAndroid Build Coastguard Worker
3626*a67afe4dSAndroid Build Coastguard Worker    # Recognize several different file suffixes.
3627*a67afe4dSAndroid Build Coastguard Worker    # If the user specifies -o file.o, it is replaced with file.lo
3628*a67afe4dSAndroid Build Coastguard Worker    case $libobj in
3629*a67afe4dSAndroid Build Coastguard Worker    *.[cCFSifmso] | \
3630*a67afe4dSAndroid Build Coastguard Worker    *.ada | *.adb | *.ads | *.asm | \
3631*a67afe4dSAndroid Build Coastguard Worker    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
3632*a67afe4dSAndroid Build Coastguard Worker    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
3633*a67afe4dSAndroid Build Coastguard Worker      func_xform "$libobj"
3634*a67afe4dSAndroid Build Coastguard Worker      libobj=$func_xform_result
3635*a67afe4dSAndroid Build Coastguard Worker      ;;
3636*a67afe4dSAndroid Build Coastguard Worker    esac
3637*a67afe4dSAndroid Build Coastguard Worker
3638*a67afe4dSAndroid Build Coastguard Worker    case $libobj in
3639*a67afe4dSAndroid Build Coastguard Worker    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
3640*a67afe4dSAndroid Build Coastguard Worker    *)
3641*a67afe4dSAndroid Build Coastguard Worker      func_fatal_error "cannot determine name of library object from '$libobj'"
3642*a67afe4dSAndroid Build Coastguard Worker      ;;
3643*a67afe4dSAndroid Build Coastguard Worker    esac
3644*a67afe4dSAndroid Build Coastguard Worker
3645*a67afe4dSAndroid Build Coastguard Worker    func_infer_tag $base_compile
3646*a67afe4dSAndroid Build Coastguard Worker
3647*a67afe4dSAndroid Build Coastguard Worker    for arg in $later; do
3648*a67afe4dSAndroid Build Coastguard Worker      case $arg in
3649*a67afe4dSAndroid Build Coastguard Worker      -shared)
3650*a67afe4dSAndroid Build Coastguard Worker	test yes = "$build_libtool_libs" \
3651*a67afe4dSAndroid Build Coastguard Worker	  || func_fatal_configuration "cannot build a shared library"
3652*a67afe4dSAndroid Build Coastguard Worker	build_old_libs=no
3653*a67afe4dSAndroid Build Coastguard Worker	continue
3654*a67afe4dSAndroid Build Coastguard Worker	;;
3655*a67afe4dSAndroid Build Coastguard Worker
3656*a67afe4dSAndroid Build Coastguard Worker      -static)
3657*a67afe4dSAndroid Build Coastguard Worker	build_libtool_libs=no
3658*a67afe4dSAndroid Build Coastguard Worker	build_old_libs=yes
3659*a67afe4dSAndroid Build Coastguard Worker	continue
3660*a67afe4dSAndroid Build Coastguard Worker	;;
3661*a67afe4dSAndroid Build Coastguard Worker
3662*a67afe4dSAndroid Build Coastguard Worker      -prefer-pic)
3663*a67afe4dSAndroid Build Coastguard Worker	pic_mode=yes
3664*a67afe4dSAndroid Build Coastguard Worker	continue
3665*a67afe4dSAndroid Build Coastguard Worker	;;
3666*a67afe4dSAndroid Build Coastguard Worker
3667*a67afe4dSAndroid Build Coastguard Worker      -prefer-non-pic)
3668*a67afe4dSAndroid Build Coastguard Worker	pic_mode=no
3669*a67afe4dSAndroid Build Coastguard Worker	continue
3670*a67afe4dSAndroid Build Coastguard Worker	;;
3671*a67afe4dSAndroid Build Coastguard Worker      esac
3672*a67afe4dSAndroid Build Coastguard Worker    done
3673*a67afe4dSAndroid Build Coastguard Worker
3674*a67afe4dSAndroid Build Coastguard Worker    func_quote_arg pretty "$libobj"
3675*a67afe4dSAndroid Build Coastguard Worker    test "X$libobj" != "X$func_quote_arg_result" \
3676*a67afe4dSAndroid Build Coastguard Worker      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
3677*a67afe4dSAndroid Build Coastguard Worker      && func_warning "libobj name '$libobj' may not contain shell special characters."
3678*a67afe4dSAndroid Build Coastguard Worker    func_dirname_and_basename "$obj" "/" ""
3679*a67afe4dSAndroid Build Coastguard Worker    objname=$func_basename_result
3680*a67afe4dSAndroid Build Coastguard Worker    xdir=$func_dirname_result
3681*a67afe4dSAndroid Build Coastguard Worker    lobj=$xdir$objdir/$objname
3682*a67afe4dSAndroid Build Coastguard Worker
3683*a67afe4dSAndroid Build Coastguard Worker    test -z "$base_compile" && \
3684*a67afe4dSAndroid Build Coastguard Worker      func_fatal_help "you must specify a compilation command"
3685*a67afe4dSAndroid Build Coastguard Worker
3686*a67afe4dSAndroid Build Coastguard Worker    # Delete any leftover library objects.
3687*a67afe4dSAndroid Build Coastguard Worker    if test yes = "$build_old_libs"; then
3688*a67afe4dSAndroid Build Coastguard Worker      removelist="$obj $lobj $libobj ${libobj}T"
3689*a67afe4dSAndroid Build Coastguard Worker    else
3690*a67afe4dSAndroid Build Coastguard Worker      removelist="$lobj $libobj ${libobj}T"
3691*a67afe4dSAndroid Build Coastguard Worker    fi
3692*a67afe4dSAndroid Build Coastguard Worker
3693*a67afe4dSAndroid Build Coastguard Worker    # On Cygwin there's no "real" PIC flag so we must build both object types
3694*a67afe4dSAndroid Build Coastguard Worker    case $host_os in
3695*a67afe4dSAndroid Build Coastguard Worker    cygwin* | mingw* | pw32* | os2* | cegcc*)
3696*a67afe4dSAndroid Build Coastguard Worker      pic_mode=default
3697*a67afe4dSAndroid Build Coastguard Worker      ;;
3698*a67afe4dSAndroid Build Coastguard Worker    esac
3699*a67afe4dSAndroid Build Coastguard Worker    if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then
3700*a67afe4dSAndroid Build Coastguard Worker      # non-PIC code in shared libraries is not supported
3701*a67afe4dSAndroid Build Coastguard Worker      pic_mode=default
3702*a67afe4dSAndroid Build Coastguard Worker    fi
3703*a67afe4dSAndroid Build Coastguard Worker
3704*a67afe4dSAndroid Build Coastguard Worker    # Calculate the filename of the output object if compiler does
3705*a67afe4dSAndroid Build Coastguard Worker    # not support -o with -c
3706*a67afe4dSAndroid Build Coastguard Worker    if test no = "$compiler_c_o"; then
3707*a67afe4dSAndroid Build Coastguard Worker      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext
3708*a67afe4dSAndroid Build Coastguard Worker      lockfile=$output_obj.lock
3709*a67afe4dSAndroid Build Coastguard Worker    else
3710*a67afe4dSAndroid Build Coastguard Worker      output_obj=
3711*a67afe4dSAndroid Build Coastguard Worker      need_locks=no
3712*a67afe4dSAndroid Build Coastguard Worker      lockfile=
3713*a67afe4dSAndroid Build Coastguard Worker    fi
3714*a67afe4dSAndroid Build Coastguard Worker
3715*a67afe4dSAndroid Build Coastguard Worker    # Lock this critical section if it is needed
3716*a67afe4dSAndroid Build Coastguard Worker    # We use this script file to make the link, it avoids creating a new file
3717*a67afe4dSAndroid Build Coastguard Worker    if test yes = "$need_locks"; then
3718*a67afe4dSAndroid Build Coastguard Worker      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
3719*a67afe4dSAndroid Build Coastguard Worker	func_echo "Waiting for $lockfile to be removed"
3720*a67afe4dSAndroid Build Coastguard Worker	sleep 2
3721*a67afe4dSAndroid Build Coastguard Worker      done
3722*a67afe4dSAndroid Build Coastguard Worker    elif test warn = "$need_locks"; then
3723*a67afe4dSAndroid Build Coastguard Worker      if test -f "$lockfile"; then
3724*a67afe4dSAndroid Build Coastguard Worker	$ECHO "\
3725*a67afe4dSAndroid Build Coastguard Worker*** ERROR, $lockfile exists and contains:
3726*a67afe4dSAndroid Build Coastguard Worker`cat $lockfile 2>/dev/null`
3727*a67afe4dSAndroid Build Coastguard Worker
3728*a67afe4dSAndroid Build Coastguard WorkerThis indicates that another process is trying to use the same
3729*a67afe4dSAndroid Build Coastguard Workertemporary object file, and libtool could not work around it because
3730*a67afe4dSAndroid Build Coastguard Workeryour compiler does not support '-c' and '-o' together.  If you
3731*a67afe4dSAndroid Build Coastguard Workerrepeat this compilation, it may succeed, by chance, but you had better
3732*a67afe4dSAndroid Build Coastguard Workeravoid parallel builds (make -j) in this platform, or get a better
3733*a67afe4dSAndroid Build Coastguard Workercompiler."
3734*a67afe4dSAndroid Build Coastguard Worker
3735*a67afe4dSAndroid Build Coastguard Worker	$opt_dry_run || $RM $removelist
3736*a67afe4dSAndroid Build Coastguard Worker	exit $EXIT_FAILURE
3737*a67afe4dSAndroid Build Coastguard Worker      fi
3738*a67afe4dSAndroid Build Coastguard Worker      func_append removelist " $output_obj"
3739*a67afe4dSAndroid Build Coastguard Worker      $ECHO "$srcfile" > "$lockfile"
3740*a67afe4dSAndroid Build Coastguard Worker    fi
3741*a67afe4dSAndroid Build Coastguard Worker
3742*a67afe4dSAndroid Build Coastguard Worker    $opt_dry_run || $RM $removelist
3743*a67afe4dSAndroid Build Coastguard Worker    func_append removelist " $lockfile"
3744*a67afe4dSAndroid Build Coastguard Worker    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
3745*a67afe4dSAndroid Build Coastguard Worker
3746*a67afe4dSAndroid Build Coastguard Worker    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
3747*a67afe4dSAndroid Build Coastguard Worker    srcfile=$func_to_tool_file_result
3748*a67afe4dSAndroid Build Coastguard Worker    func_quote_arg pretty "$srcfile"
3749*a67afe4dSAndroid Build Coastguard Worker    qsrcfile=$func_quote_arg_result
3750*a67afe4dSAndroid Build Coastguard Worker
3751*a67afe4dSAndroid Build Coastguard Worker    # Only build a PIC object if we are building libtool libraries.
3752*a67afe4dSAndroid Build Coastguard Worker    if test yes = "$build_libtool_libs"; then
3753*a67afe4dSAndroid Build Coastguard Worker      # Without this assignment, base_compile gets emptied.
3754*a67afe4dSAndroid Build Coastguard Worker      fbsd_hideous_sh_bug=$base_compile
3755*a67afe4dSAndroid Build Coastguard Worker
3756*a67afe4dSAndroid Build Coastguard Worker      if test no != "$pic_mode"; then
3757*a67afe4dSAndroid Build Coastguard Worker	command="$base_compile $qsrcfile $pic_flag"
3758*a67afe4dSAndroid Build Coastguard Worker      else
3759*a67afe4dSAndroid Build Coastguard Worker	# Don't build PIC code
3760*a67afe4dSAndroid Build Coastguard Worker	command="$base_compile $qsrcfile"
3761*a67afe4dSAndroid Build Coastguard Worker      fi
3762*a67afe4dSAndroid Build Coastguard Worker
3763*a67afe4dSAndroid Build Coastguard Worker      func_mkdir_p "$xdir$objdir"
3764*a67afe4dSAndroid Build Coastguard Worker
3765*a67afe4dSAndroid Build Coastguard Worker      if test -z "$output_obj"; then
3766*a67afe4dSAndroid Build Coastguard Worker	# Place PIC objects in $objdir
3767*a67afe4dSAndroid Build Coastguard Worker	func_append command " -o $lobj"
3768*a67afe4dSAndroid Build Coastguard Worker      fi
3769*a67afe4dSAndroid Build Coastguard Worker
3770*a67afe4dSAndroid Build Coastguard Worker      func_show_eval_locale "$command"	\
3771*a67afe4dSAndroid Build Coastguard Worker          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
3772*a67afe4dSAndroid Build Coastguard Worker
3773*a67afe4dSAndroid Build Coastguard Worker      if test warn = "$need_locks" &&
3774*a67afe4dSAndroid Build Coastguard Worker	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
3775*a67afe4dSAndroid Build Coastguard Worker	$ECHO "\
3776*a67afe4dSAndroid Build Coastguard Worker*** ERROR, $lockfile contains:
3777*a67afe4dSAndroid Build Coastguard Worker`cat $lockfile 2>/dev/null`
3778*a67afe4dSAndroid Build Coastguard Worker
3779*a67afe4dSAndroid Build Coastguard Workerbut it should contain:
3780*a67afe4dSAndroid Build Coastguard Worker$srcfile
3781*a67afe4dSAndroid Build Coastguard Worker
3782*a67afe4dSAndroid Build Coastguard WorkerThis indicates that another process is trying to use the same
3783*a67afe4dSAndroid Build Coastguard Workertemporary object file, and libtool could not work around it because
3784*a67afe4dSAndroid Build Coastguard Workeryour compiler does not support '-c' and '-o' together.  If you
3785*a67afe4dSAndroid Build Coastguard Workerrepeat this compilation, it may succeed, by chance, but you had better
3786*a67afe4dSAndroid Build Coastguard Workeravoid parallel builds (make -j) in this platform, or get a better
3787*a67afe4dSAndroid Build Coastguard Workercompiler."
3788*a67afe4dSAndroid Build Coastguard Worker
3789*a67afe4dSAndroid Build Coastguard Worker	$opt_dry_run || $RM $removelist
3790*a67afe4dSAndroid Build Coastguard Worker	exit $EXIT_FAILURE
3791*a67afe4dSAndroid Build Coastguard Worker      fi
3792*a67afe4dSAndroid Build Coastguard Worker
3793*a67afe4dSAndroid Build Coastguard Worker      # Just move the object if needed, then go on to compile the next one
3794*a67afe4dSAndroid Build Coastguard Worker      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
3795*a67afe4dSAndroid Build Coastguard Worker	func_show_eval '$MV "$output_obj" "$lobj"' \
3796*a67afe4dSAndroid Build Coastguard Worker	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
3797*a67afe4dSAndroid Build Coastguard Worker      fi
3798*a67afe4dSAndroid Build Coastguard Worker
3799*a67afe4dSAndroid Build Coastguard Worker      # Allow error messages only from the first compilation.
3800*a67afe4dSAndroid Build Coastguard Worker      if test yes = "$suppress_opt"; then
3801*a67afe4dSAndroid Build Coastguard Worker	suppress_output=' >/dev/null 2>&1'
3802*a67afe4dSAndroid Build Coastguard Worker      fi
3803*a67afe4dSAndroid Build Coastguard Worker    fi
3804*a67afe4dSAndroid Build Coastguard Worker
3805*a67afe4dSAndroid Build Coastguard Worker    # Only build a position-dependent object if we build old libraries.
3806*a67afe4dSAndroid Build Coastguard Worker    if test yes = "$build_old_libs"; then
3807*a67afe4dSAndroid Build Coastguard Worker      if test yes != "$pic_mode"; then
3808*a67afe4dSAndroid Build Coastguard Worker	# Don't build PIC code
3809*a67afe4dSAndroid Build Coastguard Worker	command="$base_compile $qsrcfile$pie_flag"
3810*a67afe4dSAndroid Build Coastguard Worker      else
3811*a67afe4dSAndroid Build Coastguard Worker	command="$base_compile $qsrcfile $pic_flag"
3812*a67afe4dSAndroid Build Coastguard Worker      fi
3813*a67afe4dSAndroid Build Coastguard Worker      if test yes = "$compiler_c_o"; then
3814*a67afe4dSAndroid Build Coastguard Worker	func_append command " -o $obj"
3815*a67afe4dSAndroid Build Coastguard Worker      fi
3816*a67afe4dSAndroid Build Coastguard Worker
3817*a67afe4dSAndroid Build Coastguard Worker      # Suppress compiler output if we already did a PIC compilation.
3818*a67afe4dSAndroid Build Coastguard Worker      func_append command "$suppress_output"
3819*a67afe4dSAndroid Build Coastguard Worker      func_show_eval_locale "$command" \
3820*a67afe4dSAndroid Build Coastguard Worker        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
3821*a67afe4dSAndroid Build Coastguard Worker
3822*a67afe4dSAndroid Build Coastguard Worker      if test warn = "$need_locks" &&
3823*a67afe4dSAndroid Build Coastguard Worker	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
3824*a67afe4dSAndroid Build Coastguard Worker	$ECHO "\
3825*a67afe4dSAndroid Build Coastguard Worker*** ERROR, $lockfile contains:
3826*a67afe4dSAndroid Build Coastguard Worker`cat $lockfile 2>/dev/null`
3827*a67afe4dSAndroid Build Coastguard Worker
3828*a67afe4dSAndroid Build Coastguard Workerbut it should contain:
3829*a67afe4dSAndroid Build Coastguard Worker$srcfile
3830*a67afe4dSAndroid Build Coastguard Worker
3831*a67afe4dSAndroid Build Coastguard WorkerThis indicates that another process is trying to use the same
3832*a67afe4dSAndroid Build Coastguard Workertemporary object file, and libtool could not work around it because
3833*a67afe4dSAndroid Build Coastguard Workeryour compiler does not support '-c' and '-o' together.  If you
3834*a67afe4dSAndroid Build Coastguard Workerrepeat this compilation, it may succeed, by chance, but you had better
3835*a67afe4dSAndroid Build Coastguard Workeravoid parallel builds (make -j) in this platform, or get a better
3836*a67afe4dSAndroid Build Coastguard Workercompiler."
3837*a67afe4dSAndroid Build Coastguard Worker
3838*a67afe4dSAndroid Build Coastguard Worker	$opt_dry_run || $RM $removelist
3839*a67afe4dSAndroid Build Coastguard Worker	exit $EXIT_FAILURE
3840*a67afe4dSAndroid Build Coastguard Worker      fi
3841*a67afe4dSAndroid Build Coastguard Worker
3842*a67afe4dSAndroid Build Coastguard Worker      # Just move the object if needed
3843*a67afe4dSAndroid Build Coastguard Worker      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
3844*a67afe4dSAndroid Build Coastguard Worker	func_show_eval '$MV "$output_obj" "$obj"' \
3845*a67afe4dSAndroid Build Coastguard Worker	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
3846*a67afe4dSAndroid Build Coastguard Worker      fi
3847*a67afe4dSAndroid Build Coastguard Worker    fi
3848*a67afe4dSAndroid Build Coastguard Worker
3849*a67afe4dSAndroid Build Coastguard Worker    $opt_dry_run || {
3850*a67afe4dSAndroid Build Coastguard Worker      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
3851*a67afe4dSAndroid Build Coastguard Worker
3852*a67afe4dSAndroid Build Coastguard Worker      # Unlock the critical section if it was locked
3853*a67afe4dSAndroid Build Coastguard Worker      if test no != "$need_locks"; then
3854*a67afe4dSAndroid Build Coastguard Worker	removelist=$lockfile
3855*a67afe4dSAndroid Build Coastguard Worker        $RM "$lockfile"
3856*a67afe4dSAndroid Build Coastguard Worker      fi
3857*a67afe4dSAndroid Build Coastguard Worker    }
3858*a67afe4dSAndroid Build Coastguard Worker
3859*a67afe4dSAndroid Build Coastguard Worker    exit $EXIT_SUCCESS
3860*a67afe4dSAndroid Build Coastguard Worker}
3861*a67afe4dSAndroid Build Coastguard Worker
3862*a67afe4dSAndroid Build Coastguard Worker$opt_help || {
3863*a67afe4dSAndroid Build Coastguard Worker  test compile = "$opt_mode" && func_mode_compile ${1+"$@"}
3864*a67afe4dSAndroid Build Coastguard Worker}
3865*a67afe4dSAndroid Build Coastguard Worker
3866*a67afe4dSAndroid Build Coastguard Workerfunc_mode_help ()
3867*a67afe4dSAndroid Build Coastguard Worker{
3868*a67afe4dSAndroid Build Coastguard Worker    # We need to display help for each of the modes.
3869*a67afe4dSAndroid Build Coastguard Worker    case $opt_mode in
3870*a67afe4dSAndroid Build Coastguard Worker      "")
3871*a67afe4dSAndroid Build Coastguard Worker        # Generic help is extracted from the usage comments
3872*a67afe4dSAndroid Build Coastguard Worker        # at the start of this file.
3873*a67afe4dSAndroid Build Coastguard Worker        func_help
3874*a67afe4dSAndroid Build Coastguard Worker        ;;
3875*a67afe4dSAndroid Build Coastguard Worker
3876*a67afe4dSAndroid Build Coastguard Worker      clean)
3877*a67afe4dSAndroid Build Coastguard Worker        $ECHO \
3878*a67afe4dSAndroid Build Coastguard Worker"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
3879*a67afe4dSAndroid Build Coastguard Worker
3880*a67afe4dSAndroid Build Coastguard WorkerRemove files from the build directory.
3881*a67afe4dSAndroid Build Coastguard Worker
3882*a67afe4dSAndroid Build Coastguard WorkerRM is the name of the program to use to delete files associated with each FILE
3883*a67afe4dSAndroid Build Coastguard Worker(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
3884*a67afe4dSAndroid Build Coastguard Workerto RM.
3885*a67afe4dSAndroid Build Coastguard Worker
3886*a67afe4dSAndroid Build Coastguard WorkerIf FILE is a libtool library, object or program, all the files associated
3887*a67afe4dSAndroid Build Coastguard Workerwith it are deleted. Otherwise, only FILE itself is deleted using RM."
3888*a67afe4dSAndroid Build Coastguard Worker        ;;
3889*a67afe4dSAndroid Build Coastguard Worker
3890*a67afe4dSAndroid Build Coastguard Worker      compile)
3891*a67afe4dSAndroid Build Coastguard Worker      $ECHO \
3892*a67afe4dSAndroid Build Coastguard Worker"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
3893*a67afe4dSAndroid Build Coastguard Worker
3894*a67afe4dSAndroid Build Coastguard WorkerCompile a source file into a libtool library object.
3895*a67afe4dSAndroid Build Coastguard Worker
3896*a67afe4dSAndroid Build Coastguard WorkerThis mode accepts the following additional options:
3897*a67afe4dSAndroid Build Coastguard Worker
3898*a67afe4dSAndroid Build Coastguard Worker  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
3899*a67afe4dSAndroid Build Coastguard Worker  -no-suppress      do not suppress compiler output for multiple passes
3900*a67afe4dSAndroid Build Coastguard Worker  -prefer-pic       try to build PIC objects only
3901*a67afe4dSAndroid Build Coastguard Worker  -prefer-non-pic   try to build non-PIC objects only
3902*a67afe4dSAndroid Build Coastguard Worker  -shared           do not build a '.o' file suitable for static linking
3903*a67afe4dSAndroid Build Coastguard Worker  -static           only build a '.o' file suitable for static linking
3904*a67afe4dSAndroid Build Coastguard Worker  -Wc,FLAG
3905*a67afe4dSAndroid Build Coastguard Worker  -Xcompiler FLAG   pass FLAG directly to the compiler
3906*a67afe4dSAndroid Build Coastguard Worker
3907*a67afe4dSAndroid Build Coastguard WorkerCOMPILE-COMMAND is a command to be used in creating a 'standard' object file
3908*a67afe4dSAndroid Build Coastguard Workerfrom the given SOURCEFILE.
3909*a67afe4dSAndroid Build Coastguard Worker
3910*a67afe4dSAndroid Build Coastguard WorkerThe output file name is determined by removing the directory component from
3911*a67afe4dSAndroid Build Coastguard WorkerSOURCEFILE, then substituting the C source code suffix '.c' with the
3912*a67afe4dSAndroid Build Coastguard Workerlibrary object suffix, '.lo'."
3913*a67afe4dSAndroid Build Coastguard Worker        ;;
3914*a67afe4dSAndroid Build Coastguard Worker
3915*a67afe4dSAndroid Build Coastguard Worker      execute)
3916*a67afe4dSAndroid Build Coastguard Worker        $ECHO \
3917*a67afe4dSAndroid Build Coastguard Worker"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
3918*a67afe4dSAndroid Build Coastguard Worker
3919*a67afe4dSAndroid Build Coastguard WorkerAutomatically set library path, then run a program.
3920*a67afe4dSAndroid Build Coastguard Worker
3921*a67afe4dSAndroid Build Coastguard WorkerThis mode accepts the following additional options:
3922*a67afe4dSAndroid Build Coastguard Worker
3923*a67afe4dSAndroid Build Coastguard Worker  -dlopen FILE      add the directory containing FILE to the library path
3924*a67afe4dSAndroid Build Coastguard Worker
3925*a67afe4dSAndroid Build Coastguard WorkerThis mode sets the library path environment variable according to '-dlopen'
3926*a67afe4dSAndroid Build Coastguard Workerflags.
3927*a67afe4dSAndroid Build Coastguard Worker
3928*a67afe4dSAndroid Build Coastguard WorkerIf any of the ARGS are libtool executable wrappers, then they are translated
3929*a67afe4dSAndroid Build Coastguard Workerinto their corresponding uninstalled binary, and any of their required library
3930*a67afe4dSAndroid Build Coastguard Workerdirectories are added to the library path.
3931*a67afe4dSAndroid Build Coastguard Worker
3932*a67afe4dSAndroid Build Coastguard WorkerThen, COMMAND is executed, with ARGS as arguments."
3933*a67afe4dSAndroid Build Coastguard Worker        ;;
3934*a67afe4dSAndroid Build Coastguard Worker
3935*a67afe4dSAndroid Build Coastguard Worker      finish)
3936*a67afe4dSAndroid Build Coastguard Worker        $ECHO \
3937*a67afe4dSAndroid Build Coastguard Worker"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
3938*a67afe4dSAndroid Build Coastguard Worker
3939*a67afe4dSAndroid Build Coastguard WorkerComplete the installation of libtool libraries.
3940*a67afe4dSAndroid Build Coastguard Worker
3941*a67afe4dSAndroid Build Coastguard WorkerEach LIBDIR is a directory that contains libtool libraries.
3942*a67afe4dSAndroid Build Coastguard Worker
3943*a67afe4dSAndroid Build Coastguard WorkerThe commands that this mode executes may require superuser privileges.  Use
3944*a67afe4dSAndroid Build Coastguard Workerthe '--dry-run' option if you just want to see what would be executed."
3945*a67afe4dSAndroid Build Coastguard Worker        ;;
3946*a67afe4dSAndroid Build Coastguard Worker
3947*a67afe4dSAndroid Build Coastguard Worker      install)
3948*a67afe4dSAndroid Build Coastguard Worker        $ECHO \
3949*a67afe4dSAndroid Build Coastguard Worker"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
3950*a67afe4dSAndroid Build Coastguard Worker
3951*a67afe4dSAndroid Build Coastguard WorkerInstall executables or libraries.
3952*a67afe4dSAndroid Build Coastguard Worker
3953*a67afe4dSAndroid Build Coastguard WorkerINSTALL-COMMAND is the installation command.  The first component should be
3954*a67afe4dSAndroid Build Coastguard Workereither the 'install' or 'cp' program.
3955*a67afe4dSAndroid Build Coastguard Worker
3956*a67afe4dSAndroid Build Coastguard WorkerThe following components of INSTALL-COMMAND are treated specially:
3957*a67afe4dSAndroid Build Coastguard Worker
3958*a67afe4dSAndroid Build Coastguard Worker  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
3959*a67afe4dSAndroid Build Coastguard Worker
3960*a67afe4dSAndroid Build Coastguard WorkerThe rest of the components are interpreted as arguments to that command (only
3961*a67afe4dSAndroid Build Coastguard WorkerBSD-compatible install options are recognized)."
3962*a67afe4dSAndroid Build Coastguard Worker        ;;
3963*a67afe4dSAndroid Build Coastguard Worker
3964*a67afe4dSAndroid Build Coastguard Worker      link)
3965*a67afe4dSAndroid Build Coastguard Worker        $ECHO \
3966*a67afe4dSAndroid Build Coastguard Worker"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
3967*a67afe4dSAndroid Build Coastguard Worker
3968*a67afe4dSAndroid Build Coastguard WorkerLink object files or libraries together to form another library, or to
3969*a67afe4dSAndroid Build Coastguard Workercreate an executable program.
3970*a67afe4dSAndroid Build Coastguard Worker
3971*a67afe4dSAndroid Build Coastguard WorkerLINK-COMMAND is a command using the C compiler that you would use to create
3972*a67afe4dSAndroid Build Coastguard Workera program from several object files.
3973*a67afe4dSAndroid Build Coastguard Worker
3974*a67afe4dSAndroid Build Coastguard WorkerThe following components of LINK-COMMAND are treated specially:
3975*a67afe4dSAndroid Build Coastguard Worker
3976*a67afe4dSAndroid Build Coastguard Worker  -all-static       do not do any dynamic linking at all
3977*a67afe4dSAndroid Build Coastguard Worker  -avoid-version    do not add a version suffix if possible
3978*a67afe4dSAndroid Build Coastguard Worker  -bindir BINDIR    specify path to binaries directory (for systems where
3979*a67afe4dSAndroid Build Coastguard Worker                    libraries must be found in the PATH setting at runtime)
3980*a67afe4dSAndroid Build Coastguard Worker  -dlopen FILE      '-dlpreopen' FILE if it cannot be dlopened at runtime
3981*a67afe4dSAndroid Build Coastguard Worker  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
3982*a67afe4dSAndroid Build Coastguard Worker  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
3983*a67afe4dSAndroid Build Coastguard Worker  -export-symbols SYMFILE
3984*a67afe4dSAndroid Build Coastguard Worker                    try to export only the symbols listed in SYMFILE
3985*a67afe4dSAndroid Build Coastguard Worker  -export-symbols-regex REGEX
3986*a67afe4dSAndroid Build Coastguard Worker                    try to export only the symbols matching REGEX
3987*a67afe4dSAndroid Build Coastguard Worker  -LLIBDIR          search LIBDIR for required installed libraries
3988*a67afe4dSAndroid Build Coastguard Worker  -lNAME            OUTPUT-FILE requires the installed library libNAME
3989*a67afe4dSAndroid Build Coastguard Worker  -module           build a library that can dlopened
3990*a67afe4dSAndroid Build Coastguard Worker  -no-fast-install  disable the fast-install mode
3991*a67afe4dSAndroid Build Coastguard Worker  -no-install       link a not-installable executable
3992*a67afe4dSAndroid Build Coastguard Worker  -no-undefined     declare that a library does not refer to external symbols
3993*a67afe4dSAndroid Build Coastguard Worker  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
3994*a67afe4dSAndroid Build Coastguard Worker  -objectlist FILE  use a list of object files found in FILE to specify objects
3995*a67afe4dSAndroid Build Coastguard Worker  -os2dllname NAME  force a short DLL name on OS/2 (no effect on other OSes)
3996*a67afe4dSAndroid Build Coastguard Worker  -precious-files-regex REGEX
3997*a67afe4dSAndroid Build Coastguard Worker                    don't remove output files matching REGEX
3998*a67afe4dSAndroid Build Coastguard Worker  -release RELEASE  specify package release information
3999*a67afe4dSAndroid Build Coastguard Worker  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
4000*a67afe4dSAndroid Build Coastguard Worker  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
4001*a67afe4dSAndroid Build Coastguard Worker  -shared           only do dynamic linking of libtool libraries
4002*a67afe4dSAndroid Build Coastguard Worker  -shrext SUFFIX    override the standard shared library file extension
4003*a67afe4dSAndroid Build Coastguard Worker  -static           do not do any dynamic linking of uninstalled libtool libraries
4004*a67afe4dSAndroid Build Coastguard Worker  -static-libtool-libs
4005*a67afe4dSAndroid Build Coastguard Worker                    do not do any dynamic linking of libtool libraries
4006*a67afe4dSAndroid Build Coastguard Worker  -version-info CURRENT[:REVISION[:AGE]]
4007*a67afe4dSAndroid Build Coastguard Worker                    specify library version info [each variable defaults to 0]
4008*a67afe4dSAndroid Build Coastguard Worker  -weak LIBNAME     declare that the target provides the LIBNAME interface
4009*a67afe4dSAndroid Build Coastguard Worker  -Wc,FLAG
4010*a67afe4dSAndroid Build Coastguard Worker  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
4011*a67afe4dSAndroid Build Coastguard Worker  -Wa,FLAG
4012*a67afe4dSAndroid Build Coastguard Worker  -Xassembler FLAG  pass linker-specific FLAG directly to the assembler
4013*a67afe4dSAndroid Build Coastguard Worker  -Wl,FLAG
4014*a67afe4dSAndroid Build Coastguard Worker  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
4015*a67afe4dSAndroid Build Coastguard Worker  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
4016*a67afe4dSAndroid Build Coastguard Worker
4017*a67afe4dSAndroid Build Coastguard WorkerAll other options (arguments beginning with '-') are ignored.
4018*a67afe4dSAndroid Build Coastguard Worker
4019*a67afe4dSAndroid Build Coastguard WorkerEvery other argument is treated as a filename.  Files ending in '.la' are
4020*a67afe4dSAndroid Build Coastguard Workertreated as uninstalled libtool libraries, other files are standard or library
4021*a67afe4dSAndroid Build Coastguard Workerobject files.
4022*a67afe4dSAndroid Build Coastguard Worker
4023*a67afe4dSAndroid Build Coastguard WorkerIf the OUTPUT-FILE ends in '.la', then a libtool library is created,
4024*a67afe4dSAndroid Build Coastguard Workeronly library objects ('.lo' files) may be specified, and '-rpath' is
4025*a67afe4dSAndroid Build Coastguard Workerrequired, except when creating a convenience library.
4026*a67afe4dSAndroid Build Coastguard Worker
4027*a67afe4dSAndroid Build Coastguard WorkerIf OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created
4028*a67afe4dSAndroid Build Coastguard Workerusing 'ar' and 'ranlib', or on Windows using 'lib'.
4029*a67afe4dSAndroid Build Coastguard Worker
4030*a67afe4dSAndroid Build Coastguard WorkerIf OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file
4031*a67afe4dSAndroid Build Coastguard Workeris created, otherwise an executable program is created."
4032*a67afe4dSAndroid Build Coastguard Worker        ;;
4033*a67afe4dSAndroid Build Coastguard Worker
4034*a67afe4dSAndroid Build Coastguard Worker      uninstall)
4035*a67afe4dSAndroid Build Coastguard Worker        $ECHO \
4036*a67afe4dSAndroid Build Coastguard Worker"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
4037*a67afe4dSAndroid Build Coastguard Worker
4038*a67afe4dSAndroid Build Coastguard WorkerRemove libraries from an installation directory.
4039*a67afe4dSAndroid Build Coastguard Worker
4040*a67afe4dSAndroid Build Coastguard WorkerRM is the name of the program to use to delete files associated with each FILE
4041*a67afe4dSAndroid Build Coastguard Worker(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
4042*a67afe4dSAndroid Build Coastguard Workerto RM.
4043*a67afe4dSAndroid Build Coastguard Worker
4044*a67afe4dSAndroid Build Coastguard WorkerIf FILE is a libtool library, all the files associated with it are deleted.
4045*a67afe4dSAndroid Build Coastguard WorkerOtherwise, only FILE itself is deleted using RM."
4046*a67afe4dSAndroid Build Coastguard Worker        ;;
4047*a67afe4dSAndroid Build Coastguard Worker
4048*a67afe4dSAndroid Build Coastguard Worker      *)
4049*a67afe4dSAndroid Build Coastguard Worker        func_fatal_help "invalid operation mode '$opt_mode'"
4050*a67afe4dSAndroid Build Coastguard Worker        ;;
4051*a67afe4dSAndroid Build Coastguard Worker    esac
4052*a67afe4dSAndroid Build Coastguard Worker
4053*a67afe4dSAndroid Build Coastguard Worker    echo
4054*a67afe4dSAndroid Build Coastguard Worker    $ECHO "Try '$progname --help' for more information about other modes."
4055*a67afe4dSAndroid Build Coastguard Worker}
4056*a67afe4dSAndroid Build Coastguard Worker
4057*a67afe4dSAndroid Build Coastguard Worker# Now that we've collected a possible --mode arg, show help if necessary
4058*a67afe4dSAndroid Build Coastguard Workerif $opt_help; then
4059*a67afe4dSAndroid Build Coastguard Worker  if test : = "$opt_help"; then
4060*a67afe4dSAndroid Build Coastguard Worker    func_mode_help
4061*a67afe4dSAndroid Build Coastguard Worker  else
4062*a67afe4dSAndroid Build Coastguard Worker    {
4063*a67afe4dSAndroid Build Coastguard Worker      func_help noexit
4064*a67afe4dSAndroid Build Coastguard Worker      for opt_mode in compile link execute install finish uninstall clean; do
4065*a67afe4dSAndroid Build Coastguard Worker	func_mode_help
4066*a67afe4dSAndroid Build Coastguard Worker      done
4067*a67afe4dSAndroid Build Coastguard Worker    } | $SED -n '1p; 2,$s/^Usage:/  or: /p'
4068*a67afe4dSAndroid Build Coastguard Worker    {
4069*a67afe4dSAndroid Build Coastguard Worker      func_help noexit
4070*a67afe4dSAndroid Build Coastguard Worker      for opt_mode in compile link execute install finish uninstall clean; do
4071*a67afe4dSAndroid Build Coastguard Worker	echo
4072*a67afe4dSAndroid Build Coastguard Worker	func_mode_help
4073*a67afe4dSAndroid Build Coastguard Worker      done
4074*a67afe4dSAndroid Build Coastguard Worker    } |
4075*a67afe4dSAndroid Build Coastguard Worker    $SED '1d
4076*a67afe4dSAndroid Build Coastguard Worker      /^When reporting/,/^Report/{
4077*a67afe4dSAndroid Build Coastguard Worker	H
4078*a67afe4dSAndroid Build Coastguard Worker	d
4079*a67afe4dSAndroid Build Coastguard Worker      }
4080*a67afe4dSAndroid Build Coastguard Worker      $x
4081*a67afe4dSAndroid Build Coastguard Worker      /information about other modes/d
4082*a67afe4dSAndroid Build Coastguard Worker      /more detailed .*MODE/d
4083*a67afe4dSAndroid Build Coastguard Worker      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
4084*a67afe4dSAndroid Build Coastguard Worker  fi
4085*a67afe4dSAndroid Build Coastguard Worker  exit $?
4086*a67afe4dSAndroid Build Coastguard Workerfi
4087*a67afe4dSAndroid Build Coastguard Worker
4088*a67afe4dSAndroid Build Coastguard Worker
4089*a67afe4dSAndroid Build Coastguard Worker# func_mode_execute arg...
4090*a67afe4dSAndroid Build Coastguard Workerfunc_mode_execute ()
4091*a67afe4dSAndroid Build Coastguard Worker{
4092*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
4093*a67afe4dSAndroid Build Coastguard Worker
4094*a67afe4dSAndroid Build Coastguard Worker    # The first argument is the command name.
4095*a67afe4dSAndroid Build Coastguard Worker    cmd=$nonopt
4096*a67afe4dSAndroid Build Coastguard Worker    test -z "$cmd" && \
4097*a67afe4dSAndroid Build Coastguard Worker      func_fatal_help "you must specify a COMMAND"
4098*a67afe4dSAndroid Build Coastguard Worker
4099*a67afe4dSAndroid Build Coastguard Worker    # Handle -dlopen flags immediately.
4100*a67afe4dSAndroid Build Coastguard Worker    for file in $opt_dlopen; do
4101*a67afe4dSAndroid Build Coastguard Worker      test -f "$file" \
4102*a67afe4dSAndroid Build Coastguard Worker	|| func_fatal_help "'$file' is not a file"
4103*a67afe4dSAndroid Build Coastguard Worker
4104*a67afe4dSAndroid Build Coastguard Worker      dir=
4105*a67afe4dSAndroid Build Coastguard Worker      case $file in
4106*a67afe4dSAndroid Build Coastguard Worker      *.la)
4107*a67afe4dSAndroid Build Coastguard Worker	func_resolve_sysroot "$file"
4108*a67afe4dSAndroid Build Coastguard Worker	file=$func_resolve_sysroot_result
4109*a67afe4dSAndroid Build Coastguard Worker
4110*a67afe4dSAndroid Build Coastguard Worker	# Check to see that this really is a libtool archive.
4111*a67afe4dSAndroid Build Coastguard Worker	func_lalib_unsafe_p "$file" \
4112*a67afe4dSAndroid Build Coastguard Worker	  || func_fatal_help "'$lib' is not a valid libtool archive"
4113*a67afe4dSAndroid Build Coastguard Worker
4114*a67afe4dSAndroid Build Coastguard Worker	# Read the libtool library.
4115*a67afe4dSAndroid Build Coastguard Worker	dlname=
4116*a67afe4dSAndroid Build Coastguard Worker	library_names=
4117*a67afe4dSAndroid Build Coastguard Worker	func_source "$file"
4118*a67afe4dSAndroid Build Coastguard Worker
4119*a67afe4dSAndroid Build Coastguard Worker	# Skip this library if it cannot be dlopened.
4120*a67afe4dSAndroid Build Coastguard Worker	if test -z "$dlname"; then
4121*a67afe4dSAndroid Build Coastguard Worker	  # Warn if it was a shared library.
4122*a67afe4dSAndroid Build Coastguard Worker	  test -n "$library_names" && \
4123*a67afe4dSAndroid Build Coastguard Worker	    func_warning "'$file' was not linked with '-export-dynamic'"
4124*a67afe4dSAndroid Build Coastguard Worker	  continue
4125*a67afe4dSAndroid Build Coastguard Worker	fi
4126*a67afe4dSAndroid Build Coastguard Worker
4127*a67afe4dSAndroid Build Coastguard Worker	func_dirname "$file" "" "."
4128*a67afe4dSAndroid Build Coastguard Worker	dir=$func_dirname_result
4129*a67afe4dSAndroid Build Coastguard Worker
4130*a67afe4dSAndroid Build Coastguard Worker	if test -f "$dir/$objdir/$dlname"; then
4131*a67afe4dSAndroid Build Coastguard Worker	  func_append dir "/$objdir"
4132*a67afe4dSAndroid Build Coastguard Worker	else
4133*a67afe4dSAndroid Build Coastguard Worker	  if test ! -f "$dir/$dlname"; then
4134*a67afe4dSAndroid Build Coastguard Worker	    func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'"
4135*a67afe4dSAndroid Build Coastguard Worker	  fi
4136*a67afe4dSAndroid Build Coastguard Worker	fi
4137*a67afe4dSAndroid Build Coastguard Worker	;;
4138*a67afe4dSAndroid Build Coastguard Worker
4139*a67afe4dSAndroid Build Coastguard Worker      *.lo)
4140*a67afe4dSAndroid Build Coastguard Worker	# Just add the directory containing the .lo file.
4141*a67afe4dSAndroid Build Coastguard Worker	func_dirname "$file" "" "."
4142*a67afe4dSAndroid Build Coastguard Worker	dir=$func_dirname_result
4143*a67afe4dSAndroid Build Coastguard Worker	;;
4144*a67afe4dSAndroid Build Coastguard Worker
4145*a67afe4dSAndroid Build Coastguard Worker      *)
4146*a67afe4dSAndroid Build Coastguard Worker	func_warning "'-dlopen' is ignored for non-libtool libraries and objects"
4147*a67afe4dSAndroid Build Coastguard Worker	continue
4148*a67afe4dSAndroid Build Coastguard Worker	;;
4149*a67afe4dSAndroid Build Coastguard Worker      esac
4150*a67afe4dSAndroid Build Coastguard Worker
4151*a67afe4dSAndroid Build Coastguard Worker      # Get the absolute pathname.
4152*a67afe4dSAndroid Build Coastguard Worker      absdir=`cd "$dir" && pwd`
4153*a67afe4dSAndroid Build Coastguard Worker      test -n "$absdir" && dir=$absdir
4154*a67afe4dSAndroid Build Coastguard Worker
4155*a67afe4dSAndroid Build Coastguard Worker      # Now add the directory to shlibpath_var.
4156*a67afe4dSAndroid Build Coastguard Worker      if eval "test -z \"\$$shlibpath_var\""; then
4157*a67afe4dSAndroid Build Coastguard Worker	eval "$shlibpath_var=\"\$dir\""
4158*a67afe4dSAndroid Build Coastguard Worker      else
4159*a67afe4dSAndroid Build Coastguard Worker	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
4160*a67afe4dSAndroid Build Coastguard Worker      fi
4161*a67afe4dSAndroid Build Coastguard Worker    done
4162*a67afe4dSAndroid Build Coastguard Worker
4163*a67afe4dSAndroid Build Coastguard Worker    # This variable tells wrapper scripts just to set shlibpath_var
4164*a67afe4dSAndroid Build Coastguard Worker    # rather than running their programs.
4165*a67afe4dSAndroid Build Coastguard Worker    libtool_execute_magic=$magic
4166*a67afe4dSAndroid Build Coastguard Worker
4167*a67afe4dSAndroid Build Coastguard Worker    # Check if any of the arguments is a wrapper script.
4168*a67afe4dSAndroid Build Coastguard Worker    args=
4169*a67afe4dSAndroid Build Coastguard Worker    for file
4170*a67afe4dSAndroid Build Coastguard Worker    do
4171*a67afe4dSAndroid Build Coastguard Worker      case $file in
4172*a67afe4dSAndroid Build Coastguard Worker      -* | *.la | *.lo ) ;;
4173*a67afe4dSAndroid Build Coastguard Worker      *)
4174*a67afe4dSAndroid Build Coastguard Worker	# Do a test to see if this is really a libtool program.
4175*a67afe4dSAndroid Build Coastguard Worker	if func_ltwrapper_script_p "$file"; then
4176*a67afe4dSAndroid Build Coastguard Worker	  func_source "$file"
4177*a67afe4dSAndroid Build Coastguard Worker	  # Transform arg to wrapped name.
4178*a67afe4dSAndroid Build Coastguard Worker	  file=$progdir/$program
4179*a67afe4dSAndroid Build Coastguard Worker	elif func_ltwrapper_executable_p "$file"; then
4180*a67afe4dSAndroid Build Coastguard Worker	  func_ltwrapper_scriptname "$file"
4181*a67afe4dSAndroid Build Coastguard Worker	  func_source "$func_ltwrapper_scriptname_result"
4182*a67afe4dSAndroid Build Coastguard Worker	  # Transform arg to wrapped name.
4183*a67afe4dSAndroid Build Coastguard Worker	  file=$progdir/$program
4184*a67afe4dSAndroid Build Coastguard Worker	fi
4185*a67afe4dSAndroid Build Coastguard Worker	;;
4186*a67afe4dSAndroid Build Coastguard Worker      esac
4187*a67afe4dSAndroid Build Coastguard Worker      # Quote arguments (to preserve shell metacharacters).
4188*a67afe4dSAndroid Build Coastguard Worker      func_append_quoted args "$file"
4189*a67afe4dSAndroid Build Coastguard Worker    done
4190*a67afe4dSAndroid Build Coastguard Worker
4191*a67afe4dSAndroid Build Coastguard Worker    if $opt_dry_run; then
4192*a67afe4dSAndroid Build Coastguard Worker      # Display what would be done.
4193*a67afe4dSAndroid Build Coastguard Worker      if test -n "$shlibpath_var"; then
4194*a67afe4dSAndroid Build Coastguard Worker	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
4195*a67afe4dSAndroid Build Coastguard Worker	echo "export $shlibpath_var"
4196*a67afe4dSAndroid Build Coastguard Worker      fi
4197*a67afe4dSAndroid Build Coastguard Worker      $ECHO "$cmd$args"
4198*a67afe4dSAndroid Build Coastguard Worker      exit $EXIT_SUCCESS
4199*a67afe4dSAndroid Build Coastguard Worker    else
4200*a67afe4dSAndroid Build Coastguard Worker      if test -n "$shlibpath_var"; then
4201*a67afe4dSAndroid Build Coastguard Worker	# Export the shlibpath_var.
4202*a67afe4dSAndroid Build Coastguard Worker	eval "export $shlibpath_var"
4203*a67afe4dSAndroid Build Coastguard Worker      fi
4204*a67afe4dSAndroid Build Coastguard Worker
4205*a67afe4dSAndroid Build Coastguard Worker      # Restore saved environment variables
4206*a67afe4dSAndroid Build Coastguard Worker      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
4207*a67afe4dSAndroid Build Coastguard Worker      do
4208*a67afe4dSAndroid Build Coastguard Worker	eval "if test \"\${save_$lt_var+set}\" = set; then
4209*a67afe4dSAndroid Build Coastguard Worker                $lt_var=\$save_$lt_var; export $lt_var
4210*a67afe4dSAndroid Build Coastguard Worker	      else
4211*a67afe4dSAndroid Build Coastguard Worker		$lt_unset $lt_var
4212*a67afe4dSAndroid Build Coastguard Worker	      fi"
4213*a67afe4dSAndroid Build Coastguard Worker      done
4214*a67afe4dSAndroid Build Coastguard Worker
4215*a67afe4dSAndroid Build Coastguard Worker      # Now prepare to actually exec the command.
4216*a67afe4dSAndroid Build Coastguard Worker      exec_cmd=\$cmd$args
4217*a67afe4dSAndroid Build Coastguard Worker    fi
4218*a67afe4dSAndroid Build Coastguard Worker}
4219*a67afe4dSAndroid Build Coastguard Worker
4220*a67afe4dSAndroid Build Coastguard Workertest execute = "$opt_mode" && func_mode_execute ${1+"$@"}
4221*a67afe4dSAndroid Build Coastguard Worker
4222*a67afe4dSAndroid Build Coastguard Worker
4223*a67afe4dSAndroid Build Coastguard Worker# func_mode_finish arg...
4224*a67afe4dSAndroid Build Coastguard Workerfunc_mode_finish ()
4225*a67afe4dSAndroid Build Coastguard Worker{
4226*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
4227*a67afe4dSAndroid Build Coastguard Worker
4228*a67afe4dSAndroid Build Coastguard Worker    libs=
4229*a67afe4dSAndroid Build Coastguard Worker    libdirs=
4230*a67afe4dSAndroid Build Coastguard Worker    admincmds=
4231*a67afe4dSAndroid Build Coastguard Worker
4232*a67afe4dSAndroid Build Coastguard Worker    for opt in "$nonopt" ${1+"$@"}
4233*a67afe4dSAndroid Build Coastguard Worker    do
4234*a67afe4dSAndroid Build Coastguard Worker      if test -d "$opt"; then
4235*a67afe4dSAndroid Build Coastguard Worker	func_append libdirs " $opt"
4236*a67afe4dSAndroid Build Coastguard Worker
4237*a67afe4dSAndroid Build Coastguard Worker      elif test -f "$opt"; then
4238*a67afe4dSAndroid Build Coastguard Worker	if func_lalib_unsafe_p "$opt"; then
4239*a67afe4dSAndroid Build Coastguard Worker	  func_append libs " $opt"
4240*a67afe4dSAndroid Build Coastguard Worker	else
4241*a67afe4dSAndroid Build Coastguard Worker	  func_warning "'$opt' is not a valid libtool archive"
4242*a67afe4dSAndroid Build Coastguard Worker	fi
4243*a67afe4dSAndroid Build Coastguard Worker
4244*a67afe4dSAndroid Build Coastguard Worker      else
4245*a67afe4dSAndroid Build Coastguard Worker	func_fatal_error "invalid argument '$opt'"
4246*a67afe4dSAndroid Build Coastguard Worker      fi
4247*a67afe4dSAndroid Build Coastguard Worker    done
4248*a67afe4dSAndroid Build Coastguard Worker
4249*a67afe4dSAndroid Build Coastguard Worker    if test -n "$libs"; then
4250*a67afe4dSAndroid Build Coastguard Worker      if test -n "$lt_sysroot"; then
4251*a67afe4dSAndroid Build Coastguard Worker        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
4252*a67afe4dSAndroid Build Coastguard Worker        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
4253*a67afe4dSAndroid Build Coastguard Worker      else
4254*a67afe4dSAndroid Build Coastguard Worker        sysroot_cmd=
4255*a67afe4dSAndroid Build Coastguard Worker      fi
4256*a67afe4dSAndroid Build Coastguard Worker
4257*a67afe4dSAndroid Build Coastguard Worker      # Remove sysroot references
4258*a67afe4dSAndroid Build Coastguard Worker      if $opt_dry_run; then
4259*a67afe4dSAndroid Build Coastguard Worker        for lib in $libs; do
4260*a67afe4dSAndroid Build Coastguard Worker          echo "removing references to $lt_sysroot and '=' prefixes from $lib"
4261*a67afe4dSAndroid Build Coastguard Worker        done
4262*a67afe4dSAndroid Build Coastguard Worker      else
4263*a67afe4dSAndroid Build Coastguard Worker        tmpdir=`func_mktempdir`
4264*a67afe4dSAndroid Build Coastguard Worker        for lib in $libs; do
4265*a67afe4dSAndroid Build Coastguard Worker	  $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
4266*a67afe4dSAndroid Build Coastguard Worker	    > $tmpdir/tmp-la
4267*a67afe4dSAndroid Build Coastguard Worker	  mv -f $tmpdir/tmp-la $lib
4268*a67afe4dSAndroid Build Coastguard Worker	done
4269*a67afe4dSAndroid Build Coastguard Worker        ${RM}r "$tmpdir"
4270*a67afe4dSAndroid Build Coastguard Worker      fi
4271*a67afe4dSAndroid Build Coastguard Worker    fi
4272*a67afe4dSAndroid Build Coastguard Worker
4273*a67afe4dSAndroid Build Coastguard Worker    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
4274*a67afe4dSAndroid Build Coastguard Worker      for libdir in $libdirs; do
4275*a67afe4dSAndroid Build Coastguard Worker	if test -n "$finish_cmds"; then
4276*a67afe4dSAndroid Build Coastguard Worker	  # Do each command in the finish commands.
4277*a67afe4dSAndroid Build Coastguard Worker	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
4278*a67afe4dSAndroid Build Coastguard Worker'"$cmd"'"'
4279*a67afe4dSAndroid Build Coastguard Worker	fi
4280*a67afe4dSAndroid Build Coastguard Worker	if test -n "$finish_eval"; then
4281*a67afe4dSAndroid Build Coastguard Worker	  # Do the single finish_eval.
4282*a67afe4dSAndroid Build Coastguard Worker	  eval cmds=\"$finish_eval\"
4283*a67afe4dSAndroid Build Coastguard Worker	  $opt_dry_run || eval "$cmds" || func_append admincmds "
4284*a67afe4dSAndroid Build Coastguard Worker       $cmds"
4285*a67afe4dSAndroid Build Coastguard Worker	fi
4286*a67afe4dSAndroid Build Coastguard Worker      done
4287*a67afe4dSAndroid Build Coastguard Worker    fi
4288*a67afe4dSAndroid Build Coastguard Worker
4289*a67afe4dSAndroid Build Coastguard Worker    # Exit here if they wanted silent mode.
4290*a67afe4dSAndroid Build Coastguard Worker    $opt_quiet && exit $EXIT_SUCCESS
4291*a67afe4dSAndroid Build Coastguard Worker
4292*a67afe4dSAndroid Build Coastguard Worker    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
4293*a67afe4dSAndroid Build Coastguard Worker      echo "----------------------------------------------------------------------"
4294*a67afe4dSAndroid Build Coastguard Worker      echo "Libraries have been installed in:"
4295*a67afe4dSAndroid Build Coastguard Worker      for libdir in $libdirs; do
4296*a67afe4dSAndroid Build Coastguard Worker	$ECHO "   $libdir"
4297*a67afe4dSAndroid Build Coastguard Worker      done
4298*a67afe4dSAndroid Build Coastguard Worker      echo
4299*a67afe4dSAndroid Build Coastguard Worker      echo "If you ever happen to want to link against installed libraries"
4300*a67afe4dSAndroid Build Coastguard Worker      echo "in a given directory, LIBDIR, you must either use libtool, and"
4301*a67afe4dSAndroid Build Coastguard Worker      echo "specify the full pathname of the library, or use the '-LLIBDIR'"
4302*a67afe4dSAndroid Build Coastguard Worker      echo "flag during linking and do at least one of the following:"
4303*a67afe4dSAndroid Build Coastguard Worker      if test -n "$shlibpath_var"; then
4304*a67afe4dSAndroid Build Coastguard Worker	echo "   - add LIBDIR to the '$shlibpath_var' environment variable"
4305*a67afe4dSAndroid Build Coastguard Worker	echo "     during execution"
4306*a67afe4dSAndroid Build Coastguard Worker      fi
4307*a67afe4dSAndroid Build Coastguard Worker      if test -n "$runpath_var"; then
4308*a67afe4dSAndroid Build Coastguard Worker	echo "   - add LIBDIR to the '$runpath_var' environment variable"
4309*a67afe4dSAndroid Build Coastguard Worker	echo "     during linking"
4310*a67afe4dSAndroid Build Coastguard Worker      fi
4311*a67afe4dSAndroid Build Coastguard Worker      if test -n "$hardcode_libdir_flag_spec"; then
4312*a67afe4dSAndroid Build Coastguard Worker	libdir=LIBDIR
4313*a67afe4dSAndroid Build Coastguard Worker	eval flag=\"$hardcode_libdir_flag_spec\"
4314*a67afe4dSAndroid Build Coastguard Worker
4315*a67afe4dSAndroid Build Coastguard Worker	$ECHO "   - use the '$flag' linker flag"
4316*a67afe4dSAndroid Build Coastguard Worker      fi
4317*a67afe4dSAndroid Build Coastguard Worker      if test -n "$admincmds"; then
4318*a67afe4dSAndroid Build Coastguard Worker	$ECHO "   - have your system administrator run these commands:$admincmds"
4319*a67afe4dSAndroid Build Coastguard Worker      fi
4320*a67afe4dSAndroid Build Coastguard Worker      if test -f /etc/ld.so.conf; then
4321*a67afe4dSAndroid Build Coastguard Worker	echo "   - have your system administrator add LIBDIR to '/etc/ld.so.conf'"
4322*a67afe4dSAndroid Build Coastguard Worker      fi
4323*a67afe4dSAndroid Build Coastguard Worker      echo
4324*a67afe4dSAndroid Build Coastguard Worker
4325*a67afe4dSAndroid Build Coastguard Worker      echo "See any operating system documentation about shared libraries for"
4326*a67afe4dSAndroid Build Coastguard Worker      case $host in
4327*a67afe4dSAndroid Build Coastguard Worker	solaris2.[6789]|solaris2.1[0-9])
4328*a67afe4dSAndroid Build Coastguard Worker	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
4329*a67afe4dSAndroid Build Coastguard Worker	  echo "pages."
4330*a67afe4dSAndroid Build Coastguard Worker	  ;;
4331*a67afe4dSAndroid Build Coastguard Worker	*)
4332*a67afe4dSAndroid Build Coastguard Worker	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
4333*a67afe4dSAndroid Build Coastguard Worker	  ;;
4334*a67afe4dSAndroid Build Coastguard Worker      esac
4335*a67afe4dSAndroid Build Coastguard Worker      echo "----------------------------------------------------------------------"
4336*a67afe4dSAndroid Build Coastguard Worker    fi
4337*a67afe4dSAndroid Build Coastguard Worker    exit $EXIT_SUCCESS
4338*a67afe4dSAndroid Build Coastguard Worker}
4339*a67afe4dSAndroid Build Coastguard Worker
4340*a67afe4dSAndroid Build Coastguard Workertest finish = "$opt_mode" && func_mode_finish ${1+"$@"}
4341*a67afe4dSAndroid Build Coastguard Worker
4342*a67afe4dSAndroid Build Coastguard Worker
4343*a67afe4dSAndroid Build Coastguard Worker# func_mode_install arg...
4344*a67afe4dSAndroid Build Coastguard Workerfunc_mode_install ()
4345*a67afe4dSAndroid Build Coastguard Worker{
4346*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
4347*a67afe4dSAndroid Build Coastguard Worker
4348*a67afe4dSAndroid Build Coastguard Worker    # There may be an optional sh(1) argument at the beginning of
4349*a67afe4dSAndroid Build Coastguard Worker    # install_prog (especially on Windows NT).
4350*a67afe4dSAndroid Build Coastguard Worker    if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" ||
4351*a67afe4dSAndroid Build Coastguard Worker       # Allow the use of GNU shtool's install command.
4352*a67afe4dSAndroid Build Coastguard Worker       case $nonopt in *shtool*) :;; *) false;; esac
4353*a67afe4dSAndroid Build Coastguard Worker    then
4354*a67afe4dSAndroid Build Coastguard Worker      # Aesthetically quote it.
4355*a67afe4dSAndroid Build Coastguard Worker      func_quote_arg pretty "$nonopt"
4356*a67afe4dSAndroid Build Coastguard Worker      install_prog="$func_quote_arg_result "
4357*a67afe4dSAndroid Build Coastguard Worker      arg=$1
4358*a67afe4dSAndroid Build Coastguard Worker      shift
4359*a67afe4dSAndroid Build Coastguard Worker    else
4360*a67afe4dSAndroid Build Coastguard Worker      install_prog=
4361*a67afe4dSAndroid Build Coastguard Worker      arg=$nonopt
4362*a67afe4dSAndroid Build Coastguard Worker    fi
4363*a67afe4dSAndroid Build Coastguard Worker
4364*a67afe4dSAndroid Build Coastguard Worker    # The real first argument should be the name of the installation program.
4365*a67afe4dSAndroid Build Coastguard Worker    # Aesthetically quote it.
4366*a67afe4dSAndroid Build Coastguard Worker    func_quote_arg pretty "$arg"
4367*a67afe4dSAndroid Build Coastguard Worker    func_append install_prog "$func_quote_arg_result"
4368*a67afe4dSAndroid Build Coastguard Worker    install_shared_prog=$install_prog
4369*a67afe4dSAndroid Build Coastguard Worker    case " $install_prog " in
4370*a67afe4dSAndroid Build Coastguard Worker      *[\\\ /]cp\ *) install_cp=: ;;
4371*a67afe4dSAndroid Build Coastguard Worker      *) install_cp=false ;;
4372*a67afe4dSAndroid Build Coastguard Worker    esac
4373*a67afe4dSAndroid Build Coastguard Worker
4374*a67afe4dSAndroid Build Coastguard Worker    # We need to accept at least all the BSD install flags.
4375*a67afe4dSAndroid Build Coastguard Worker    dest=
4376*a67afe4dSAndroid Build Coastguard Worker    files=
4377*a67afe4dSAndroid Build Coastguard Worker    opts=
4378*a67afe4dSAndroid Build Coastguard Worker    prev=
4379*a67afe4dSAndroid Build Coastguard Worker    install_type=
4380*a67afe4dSAndroid Build Coastguard Worker    isdir=false
4381*a67afe4dSAndroid Build Coastguard Worker    stripme=
4382*a67afe4dSAndroid Build Coastguard Worker    no_mode=:
4383*a67afe4dSAndroid Build Coastguard Worker    for arg
4384*a67afe4dSAndroid Build Coastguard Worker    do
4385*a67afe4dSAndroid Build Coastguard Worker      arg2=
4386*a67afe4dSAndroid Build Coastguard Worker      if test -n "$dest"; then
4387*a67afe4dSAndroid Build Coastguard Worker	func_append files " $dest"
4388*a67afe4dSAndroid Build Coastguard Worker	dest=$arg
4389*a67afe4dSAndroid Build Coastguard Worker	continue
4390*a67afe4dSAndroid Build Coastguard Worker      fi
4391*a67afe4dSAndroid Build Coastguard Worker
4392*a67afe4dSAndroid Build Coastguard Worker      case $arg in
4393*a67afe4dSAndroid Build Coastguard Worker      -d) isdir=: ;;
4394*a67afe4dSAndroid Build Coastguard Worker      -f)
4395*a67afe4dSAndroid Build Coastguard Worker	if $install_cp; then :; else
4396*a67afe4dSAndroid Build Coastguard Worker	  prev=$arg
4397*a67afe4dSAndroid Build Coastguard Worker	fi
4398*a67afe4dSAndroid Build Coastguard Worker	;;
4399*a67afe4dSAndroid Build Coastguard Worker      -g | -m | -o)
4400*a67afe4dSAndroid Build Coastguard Worker	prev=$arg
4401*a67afe4dSAndroid Build Coastguard Worker	;;
4402*a67afe4dSAndroid Build Coastguard Worker      -s)
4403*a67afe4dSAndroid Build Coastguard Worker	stripme=" -s"
4404*a67afe4dSAndroid Build Coastguard Worker	continue
4405*a67afe4dSAndroid Build Coastguard Worker	;;
4406*a67afe4dSAndroid Build Coastguard Worker      -*)
4407*a67afe4dSAndroid Build Coastguard Worker	;;
4408*a67afe4dSAndroid Build Coastguard Worker      *)
4409*a67afe4dSAndroid Build Coastguard Worker	# If the previous option needed an argument, then skip it.
4410*a67afe4dSAndroid Build Coastguard Worker	if test -n "$prev"; then
4411*a67afe4dSAndroid Build Coastguard Worker	  if test X-m = "X$prev" && test -n "$install_override_mode"; then
4412*a67afe4dSAndroid Build Coastguard Worker	    arg2=$install_override_mode
4413*a67afe4dSAndroid Build Coastguard Worker	    no_mode=false
4414*a67afe4dSAndroid Build Coastguard Worker	  fi
4415*a67afe4dSAndroid Build Coastguard Worker	  prev=
4416*a67afe4dSAndroid Build Coastguard Worker	else
4417*a67afe4dSAndroid Build Coastguard Worker	  dest=$arg
4418*a67afe4dSAndroid Build Coastguard Worker	  continue
4419*a67afe4dSAndroid Build Coastguard Worker	fi
4420*a67afe4dSAndroid Build Coastguard Worker	;;
4421*a67afe4dSAndroid Build Coastguard Worker      esac
4422*a67afe4dSAndroid Build Coastguard Worker
4423*a67afe4dSAndroid Build Coastguard Worker      # Aesthetically quote the argument.
4424*a67afe4dSAndroid Build Coastguard Worker      func_quote_arg pretty "$arg"
4425*a67afe4dSAndroid Build Coastguard Worker      func_append install_prog " $func_quote_arg_result"
4426*a67afe4dSAndroid Build Coastguard Worker      if test -n "$arg2"; then
4427*a67afe4dSAndroid Build Coastguard Worker	func_quote_arg pretty "$arg2"
4428*a67afe4dSAndroid Build Coastguard Worker      fi
4429*a67afe4dSAndroid Build Coastguard Worker      func_append install_shared_prog " $func_quote_arg_result"
4430*a67afe4dSAndroid Build Coastguard Worker    done
4431*a67afe4dSAndroid Build Coastguard Worker
4432*a67afe4dSAndroid Build Coastguard Worker    test -z "$install_prog" && \
4433*a67afe4dSAndroid Build Coastguard Worker      func_fatal_help "you must specify an install program"
4434*a67afe4dSAndroid Build Coastguard Worker
4435*a67afe4dSAndroid Build Coastguard Worker    test -n "$prev" && \
4436*a67afe4dSAndroid Build Coastguard Worker      func_fatal_help "the '$prev' option requires an argument"
4437*a67afe4dSAndroid Build Coastguard Worker
4438*a67afe4dSAndroid Build Coastguard Worker    if test -n "$install_override_mode" && $no_mode; then
4439*a67afe4dSAndroid Build Coastguard Worker      if $install_cp; then :; else
4440*a67afe4dSAndroid Build Coastguard Worker	func_quote_arg pretty "$install_override_mode"
4441*a67afe4dSAndroid Build Coastguard Worker	func_append install_shared_prog " -m $func_quote_arg_result"
4442*a67afe4dSAndroid Build Coastguard Worker      fi
4443*a67afe4dSAndroid Build Coastguard Worker    fi
4444*a67afe4dSAndroid Build Coastguard Worker
4445*a67afe4dSAndroid Build Coastguard Worker    if test -z "$files"; then
4446*a67afe4dSAndroid Build Coastguard Worker      if test -z "$dest"; then
4447*a67afe4dSAndroid Build Coastguard Worker	func_fatal_help "no file or destination specified"
4448*a67afe4dSAndroid Build Coastguard Worker      else
4449*a67afe4dSAndroid Build Coastguard Worker	func_fatal_help "you must specify a destination"
4450*a67afe4dSAndroid Build Coastguard Worker      fi
4451*a67afe4dSAndroid Build Coastguard Worker    fi
4452*a67afe4dSAndroid Build Coastguard Worker
4453*a67afe4dSAndroid Build Coastguard Worker    # Strip any trailing slash from the destination.
4454*a67afe4dSAndroid Build Coastguard Worker    func_stripname '' '/' "$dest"
4455*a67afe4dSAndroid Build Coastguard Worker    dest=$func_stripname_result
4456*a67afe4dSAndroid Build Coastguard Worker
4457*a67afe4dSAndroid Build Coastguard Worker    # Check to see that the destination is a directory.
4458*a67afe4dSAndroid Build Coastguard Worker    test -d "$dest" && isdir=:
4459*a67afe4dSAndroid Build Coastguard Worker    if $isdir; then
4460*a67afe4dSAndroid Build Coastguard Worker      destdir=$dest
4461*a67afe4dSAndroid Build Coastguard Worker      destname=
4462*a67afe4dSAndroid Build Coastguard Worker    else
4463*a67afe4dSAndroid Build Coastguard Worker      func_dirname_and_basename "$dest" "" "."
4464*a67afe4dSAndroid Build Coastguard Worker      destdir=$func_dirname_result
4465*a67afe4dSAndroid Build Coastguard Worker      destname=$func_basename_result
4466*a67afe4dSAndroid Build Coastguard Worker
4467*a67afe4dSAndroid Build Coastguard Worker      # Not a directory, so check to see that there is only one file specified.
4468*a67afe4dSAndroid Build Coastguard Worker      set dummy $files; shift
4469*a67afe4dSAndroid Build Coastguard Worker      test "$#" -gt 1 && \
4470*a67afe4dSAndroid Build Coastguard Worker	func_fatal_help "'$dest' is not a directory"
4471*a67afe4dSAndroid Build Coastguard Worker    fi
4472*a67afe4dSAndroid Build Coastguard Worker    case $destdir in
4473*a67afe4dSAndroid Build Coastguard Worker    [\\/]* | [A-Za-z]:[\\/]*) ;;
4474*a67afe4dSAndroid Build Coastguard Worker    *)
4475*a67afe4dSAndroid Build Coastguard Worker      for file in $files; do
4476*a67afe4dSAndroid Build Coastguard Worker	case $file in
4477*a67afe4dSAndroid Build Coastguard Worker	*.lo) ;;
4478*a67afe4dSAndroid Build Coastguard Worker	*)
4479*a67afe4dSAndroid Build Coastguard Worker	  func_fatal_help "'$destdir' must be an absolute directory name"
4480*a67afe4dSAndroid Build Coastguard Worker	  ;;
4481*a67afe4dSAndroid Build Coastguard Worker	esac
4482*a67afe4dSAndroid Build Coastguard Worker      done
4483*a67afe4dSAndroid Build Coastguard Worker      ;;
4484*a67afe4dSAndroid Build Coastguard Worker    esac
4485*a67afe4dSAndroid Build Coastguard Worker
4486*a67afe4dSAndroid Build Coastguard Worker    # This variable tells wrapper scripts just to set variables rather
4487*a67afe4dSAndroid Build Coastguard Worker    # than running their programs.
4488*a67afe4dSAndroid Build Coastguard Worker    libtool_install_magic=$magic
4489*a67afe4dSAndroid Build Coastguard Worker
4490*a67afe4dSAndroid Build Coastguard Worker    staticlibs=
4491*a67afe4dSAndroid Build Coastguard Worker    future_libdirs=
4492*a67afe4dSAndroid Build Coastguard Worker    current_libdirs=
4493*a67afe4dSAndroid Build Coastguard Worker    for file in $files; do
4494*a67afe4dSAndroid Build Coastguard Worker
4495*a67afe4dSAndroid Build Coastguard Worker      # Do each installation.
4496*a67afe4dSAndroid Build Coastguard Worker      case $file in
4497*a67afe4dSAndroid Build Coastguard Worker      *.$libext)
4498*a67afe4dSAndroid Build Coastguard Worker	# Do the static libraries later.
4499*a67afe4dSAndroid Build Coastguard Worker	func_append staticlibs " $file"
4500*a67afe4dSAndroid Build Coastguard Worker	;;
4501*a67afe4dSAndroid Build Coastguard Worker
4502*a67afe4dSAndroid Build Coastguard Worker      *.la)
4503*a67afe4dSAndroid Build Coastguard Worker	func_resolve_sysroot "$file"
4504*a67afe4dSAndroid Build Coastguard Worker	file=$func_resolve_sysroot_result
4505*a67afe4dSAndroid Build Coastguard Worker
4506*a67afe4dSAndroid Build Coastguard Worker	# Check to see that this really is a libtool archive.
4507*a67afe4dSAndroid Build Coastguard Worker	func_lalib_unsafe_p "$file" \
4508*a67afe4dSAndroid Build Coastguard Worker	  || func_fatal_help "'$file' is not a valid libtool archive"
4509*a67afe4dSAndroid Build Coastguard Worker
4510*a67afe4dSAndroid Build Coastguard Worker	library_names=
4511*a67afe4dSAndroid Build Coastguard Worker	old_library=
4512*a67afe4dSAndroid Build Coastguard Worker	relink_command=
4513*a67afe4dSAndroid Build Coastguard Worker	func_source "$file"
4514*a67afe4dSAndroid Build Coastguard Worker
4515*a67afe4dSAndroid Build Coastguard Worker	# Add the libdir to current_libdirs if it is the destination.
4516*a67afe4dSAndroid Build Coastguard Worker	if test "X$destdir" = "X$libdir"; then
4517*a67afe4dSAndroid Build Coastguard Worker	  case "$current_libdirs " in
4518*a67afe4dSAndroid Build Coastguard Worker	  *" $libdir "*) ;;
4519*a67afe4dSAndroid Build Coastguard Worker	  *) func_append current_libdirs " $libdir" ;;
4520*a67afe4dSAndroid Build Coastguard Worker	  esac
4521*a67afe4dSAndroid Build Coastguard Worker	else
4522*a67afe4dSAndroid Build Coastguard Worker	  # Note the libdir as a future libdir.
4523*a67afe4dSAndroid Build Coastguard Worker	  case "$future_libdirs " in
4524*a67afe4dSAndroid Build Coastguard Worker	  *" $libdir "*) ;;
4525*a67afe4dSAndroid Build Coastguard Worker	  *) func_append future_libdirs " $libdir" ;;
4526*a67afe4dSAndroid Build Coastguard Worker	  esac
4527*a67afe4dSAndroid Build Coastguard Worker	fi
4528*a67afe4dSAndroid Build Coastguard Worker
4529*a67afe4dSAndroid Build Coastguard Worker	func_dirname "$file" "/" ""
4530*a67afe4dSAndroid Build Coastguard Worker	dir=$func_dirname_result
4531*a67afe4dSAndroid Build Coastguard Worker	func_append dir "$objdir"
4532*a67afe4dSAndroid Build Coastguard Worker
4533*a67afe4dSAndroid Build Coastguard Worker	if test -n "$relink_command"; then
4534*a67afe4dSAndroid Build Coastguard Worker	  # Determine the prefix the user has applied to our future dir.
4535*a67afe4dSAndroid Build Coastguard Worker	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
4536*a67afe4dSAndroid Build Coastguard Worker
4537*a67afe4dSAndroid Build Coastguard Worker	  # Don't allow the user to place us outside of our expected
4538*a67afe4dSAndroid Build Coastguard Worker	  # location b/c this prevents finding dependent libraries that
4539*a67afe4dSAndroid Build Coastguard Worker	  # are installed to the same prefix.
4540*a67afe4dSAndroid Build Coastguard Worker	  # At present, this check doesn't affect windows .dll's that
4541*a67afe4dSAndroid Build Coastguard Worker	  # are installed into $libdir/../bin (currently, that works fine)
4542*a67afe4dSAndroid Build Coastguard Worker	  # but it's something to keep an eye on.
4543*a67afe4dSAndroid Build Coastguard Worker	  test "$inst_prefix_dir" = "$destdir" && \
4544*a67afe4dSAndroid Build Coastguard Worker	    func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir"
4545*a67afe4dSAndroid Build Coastguard Worker
4546*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$inst_prefix_dir"; then
4547*a67afe4dSAndroid Build Coastguard Worker	    # Stick the inst_prefix_dir data into the link command.
4548*a67afe4dSAndroid Build Coastguard Worker	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
4549*a67afe4dSAndroid Build Coastguard Worker	  else
4550*a67afe4dSAndroid Build Coastguard Worker	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
4551*a67afe4dSAndroid Build Coastguard Worker	  fi
4552*a67afe4dSAndroid Build Coastguard Worker
4553*a67afe4dSAndroid Build Coastguard Worker	  func_warning "relinking '$file'"
4554*a67afe4dSAndroid Build Coastguard Worker	  func_show_eval "$relink_command" \
4555*a67afe4dSAndroid Build Coastguard Worker	    'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"'
4556*a67afe4dSAndroid Build Coastguard Worker	fi
4557*a67afe4dSAndroid Build Coastguard Worker
4558*a67afe4dSAndroid Build Coastguard Worker	# See the names of the shared library.
4559*a67afe4dSAndroid Build Coastguard Worker	set dummy $library_names; shift
4560*a67afe4dSAndroid Build Coastguard Worker	if test -n "$1"; then
4561*a67afe4dSAndroid Build Coastguard Worker	  realname=$1
4562*a67afe4dSAndroid Build Coastguard Worker	  shift
4563*a67afe4dSAndroid Build Coastguard Worker
4564*a67afe4dSAndroid Build Coastguard Worker	  srcname=$realname
4565*a67afe4dSAndroid Build Coastguard Worker	  test -n "$relink_command" && srcname=${realname}T
4566*a67afe4dSAndroid Build Coastguard Worker
4567*a67afe4dSAndroid Build Coastguard Worker	  # Install the shared library and build the symlinks.
4568*a67afe4dSAndroid Build Coastguard Worker	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
4569*a67afe4dSAndroid Build Coastguard Worker	      'exit $?'
4570*a67afe4dSAndroid Build Coastguard Worker	  tstripme=$stripme
4571*a67afe4dSAndroid Build Coastguard Worker	  case $host_os in
4572*a67afe4dSAndroid Build Coastguard Worker	  cygwin* | mingw* | pw32* | cegcc*)
4573*a67afe4dSAndroid Build Coastguard Worker	    case $realname in
4574*a67afe4dSAndroid Build Coastguard Worker	    *.dll.a)
4575*a67afe4dSAndroid Build Coastguard Worker	      tstripme=
4576*a67afe4dSAndroid Build Coastguard Worker	      ;;
4577*a67afe4dSAndroid Build Coastguard Worker	    esac
4578*a67afe4dSAndroid Build Coastguard Worker	    ;;
4579*a67afe4dSAndroid Build Coastguard Worker	  os2*)
4580*a67afe4dSAndroid Build Coastguard Worker	    case $realname in
4581*a67afe4dSAndroid Build Coastguard Worker	    *_dll.a)
4582*a67afe4dSAndroid Build Coastguard Worker	      tstripme=
4583*a67afe4dSAndroid Build Coastguard Worker	      ;;
4584*a67afe4dSAndroid Build Coastguard Worker	    esac
4585*a67afe4dSAndroid Build Coastguard Worker	    ;;
4586*a67afe4dSAndroid Build Coastguard Worker	  esac
4587*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$tstripme" && test -n "$striplib"; then
4588*a67afe4dSAndroid Build Coastguard Worker	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
4589*a67afe4dSAndroid Build Coastguard Worker	  fi
4590*a67afe4dSAndroid Build Coastguard Worker
4591*a67afe4dSAndroid Build Coastguard Worker	  if test "$#" -gt 0; then
4592*a67afe4dSAndroid Build Coastguard Worker	    # Delete the old symlinks, and create new ones.
4593*a67afe4dSAndroid Build Coastguard Worker	    # Try 'ln -sf' first, because the 'ln' binary might depend on
4594*a67afe4dSAndroid Build Coastguard Worker	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
4595*a67afe4dSAndroid Build Coastguard Worker	    # so we also need to try rm && ln -s.
4596*a67afe4dSAndroid Build Coastguard Worker	    for linkname
4597*a67afe4dSAndroid Build Coastguard Worker	    do
4598*a67afe4dSAndroid Build Coastguard Worker	      test "$linkname" != "$realname" \
4599*a67afe4dSAndroid Build Coastguard Worker		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
4600*a67afe4dSAndroid Build Coastguard Worker	    done
4601*a67afe4dSAndroid Build Coastguard Worker	  fi
4602*a67afe4dSAndroid Build Coastguard Worker
4603*a67afe4dSAndroid Build Coastguard Worker	  # Do each command in the postinstall commands.
4604*a67afe4dSAndroid Build Coastguard Worker	  lib=$destdir/$realname
4605*a67afe4dSAndroid Build Coastguard Worker	  func_execute_cmds "$postinstall_cmds" 'exit $?'
4606*a67afe4dSAndroid Build Coastguard Worker	fi
4607*a67afe4dSAndroid Build Coastguard Worker
4608*a67afe4dSAndroid Build Coastguard Worker	# Install the pseudo-library for information purposes.
4609*a67afe4dSAndroid Build Coastguard Worker	func_basename "$file"
4610*a67afe4dSAndroid Build Coastguard Worker	name=$func_basename_result
4611*a67afe4dSAndroid Build Coastguard Worker	instname=$dir/${name}i
4612*a67afe4dSAndroid Build Coastguard Worker	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
4613*a67afe4dSAndroid Build Coastguard Worker
4614*a67afe4dSAndroid Build Coastguard Worker	# Maybe install the static library, too.
4615*a67afe4dSAndroid Build Coastguard Worker	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
4616*a67afe4dSAndroid Build Coastguard Worker	;;
4617*a67afe4dSAndroid Build Coastguard Worker
4618*a67afe4dSAndroid Build Coastguard Worker      *.lo)
4619*a67afe4dSAndroid Build Coastguard Worker	# Install (i.e. copy) a libtool object.
4620*a67afe4dSAndroid Build Coastguard Worker
4621*a67afe4dSAndroid Build Coastguard Worker	# Figure out destination file name, if it wasn't already specified.
4622*a67afe4dSAndroid Build Coastguard Worker	if test -n "$destname"; then
4623*a67afe4dSAndroid Build Coastguard Worker	  destfile=$destdir/$destname
4624*a67afe4dSAndroid Build Coastguard Worker	else
4625*a67afe4dSAndroid Build Coastguard Worker	  func_basename "$file"
4626*a67afe4dSAndroid Build Coastguard Worker	  destfile=$func_basename_result
4627*a67afe4dSAndroid Build Coastguard Worker	  destfile=$destdir/$destfile
4628*a67afe4dSAndroid Build Coastguard Worker	fi
4629*a67afe4dSAndroid Build Coastguard Worker
4630*a67afe4dSAndroid Build Coastguard Worker	# Deduce the name of the destination old-style object file.
4631*a67afe4dSAndroid Build Coastguard Worker	case $destfile in
4632*a67afe4dSAndroid Build Coastguard Worker	*.lo)
4633*a67afe4dSAndroid Build Coastguard Worker	  func_lo2o "$destfile"
4634*a67afe4dSAndroid Build Coastguard Worker	  staticdest=$func_lo2o_result
4635*a67afe4dSAndroid Build Coastguard Worker	  ;;
4636*a67afe4dSAndroid Build Coastguard Worker	*.$objext)
4637*a67afe4dSAndroid Build Coastguard Worker	  staticdest=$destfile
4638*a67afe4dSAndroid Build Coastguard Worker	  destfile=
4639*a67afe4dSAndroid Build Coastguard Worker	  ;;
4640*a67afe4dSAndroid Build Coastguard Worker	*)
4641*a67afe4dSAndroid Build Coastguard Worker	  func_fatal_help "cannot copy a libtool object to '$destfile'"
4642*a67afe4dSAndroid Build Coastguard Worker	  ;;
4643*a67afe4dSAndroid Build Coastguard Worker	esac
4644*a67afe4dSAndroid Build Coastguard Worker
4645*a67afe4dSAndroid Build Coastguard Worker	# Install the libtool object if requested.
4646*a67afe4dSAndroid Build Coastguard Worker	test -n "$destfile" && \
4647*a67afe4dSAndroid Build Coastguard Worker	  func_show_eval "$install_prog $file $destfile" 'exit $?'
4648*a67afe4dSAndroid Build Coastguard Worker
4649*a67afe4dSAndroid Build Coastguard Worker	# Install the old object if enabled.
4650*a67afe4dSAndroid Build Coastguard Worker	if test yes = "$build_old_libs"; then
4651*a67afe4dSAndroid Build Coastguard Worker	  # Deduce the name of the old-style object file.
4652*a67afe4dSAndroid Build Coastguard Worker	  func_lo2o "$file"
4653*a67afe4dSAndroid Build Coastguard Worker	  staticobj=$func_lo2o_result
4654*a67afe4dSAndroid Build Coastguard Worker	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
4655*a67afe4dSAndroid Build Coastguard Worker	fi
4656*a67afe4dSAndroid Build Coastguard Worker	exit $EXIT_SUCCESS
4657*a67afe4dSAndroid Build Coastguard Worker	;;
4658*a67afe4dSAndroid Build Coastguard Worker
4659*a67afe4dSAndroid Build Coastguard Worker      *)
4660*a67afe4dSAndroid Build Coastguard Worker	# Figure out destination file name, if it wasn't already specified.
4661*a67afe4dSAndroid Build Coastguard Worker	if test -n "$destname"; then
4662*a67afe4dSAndroid Build Coastguard Worker	  destfile=$destdir/$destname
4663*a67afe4dSAndroid Build Coastguard Worker	else
4664*a67afe4dSAndroid Build Coastguard Worker	  func_basename "$file"
4665*a67afe4dSAndroid Build Coastguard Worker	  destfile=$func_basename_result
4666*a67afe4dSAndroid Build Coastguard Worker	  destfile=$destdir/$destfile
4667*a67afe4dSAndroid Build Coastguard Worker	fi
4668*a67afe4dSAndroid Build Coastguard Worker
4669*a67afe4dSAndroid Build Coastguard Worker	# If the file is missing, and there is a .exe on the end, strip it
4670*a67afe4dSAndroid Build Coastguard Worker	# because it is most likely a libtool script we actually want to
4671*a67afe4dSAndroid Build Coastguard Worker	# install
4672*a67afe4dSAndroid Build Coastguard Worker	stripped_ext=
4673*a67afe4dSAndroid Build Coastguard Worker	case $file in
4674*a67afe4dSAndroid Build Coastguard Worker	  *.exe)
4675*a67afe4dSAndroid Build Coastguard Worker	    if test ! -f "$file"; then
4676*a67afe4dSAndroid Build Coastguard Worker	      func_stripname '' '.exe' "$file"
4677*a67afe4dSAndroid Build Coastguard Worker	      file=$func_stripname_result
4678*a67afe4dSAndroid Build Coastguard Worker	      stripped_ext=.exe
4679*a67afe4dSAndroid Build Coastguard Worker	    fi
4680*a67afe4dSAndroid Build Coastguard Worker	    ;;
4681*a67afe4dSAndroid Build Coastguard Worker	esac
4682*a67afe4dSAndroid Build Coastguard Worker
4683*a67afe4dSAndroid Build Coastguard Worker	# Do a test to see if this is really a libtool program.
4684*a67afe4dSAndroid Build Coastguard Worker	case $host in
4685*a67afe4dSAndroid Build Coastguard Worker	*cygwin* | *mingw*)
4686*a67afe4dSAndroid Build Coastguard Worker	    if func_ltwrapper_executable_p "$file"; then
4687*a67afe4dSAndroid Build Coastguard Worker	      func_ltwrapper_scriptname "$file"
4688*a67afe4dSAndroid Build Coastguard Worker	      wrapper=$func_ltwrapper_scriptname_result
4689*a67afe4dSAndroid Build Coastguard Worker	    else
4690*a67afe4dSAndroid Build Coastguard Worker	      func_stripname '' '.exe' "$file"
4691*a67afe4dSAndroid Build Coastguard Worker	      wrapper=$func_stripname_result
4692*a67afe4dSAndroid Build Coastguard Worker	    fi
4693*a67afe4dSAndroid Build Coastguard Worker	    ;;
4694*a67afe4dSAndroid Build Coastguard Worker	*)
4695*a67afe4dSAndroid Build Coastguard Worker	    wrapper=$file
4696*a67afe4dSAndroid Build Coastguard Worker	    ;;
4697*a67afe4dSAndroid Build Coastguard Worker	esac
4698*a67afe4dSAndroid Build Coastguard Worker	if func_ltwrapper_script_p "$wrapper"; then
4699*a67afe4dSAndroid Build Coastguard Worker	  notinst_deplibs=
4700*a67afe4dSAndroid Build Coastguard Worker	  relink_command=
4701*a67afe4dSAndroid Build Coastguard Worker
4702*a67afe4dSAndroid Build Coastguard Worker	  func_source "$wrapper"
4703*a67afe4dSAndroid Build Coastguard Worker
4704*a67afe4dSAndroid Build Coastguard Worker	  # Check the variables that should have been set.
4705*a67afe4dSAndroid Build Coastguard Worker	  test -z "$generated_by_libtool_version" && \
4706*a67afe4dSAndroid Build Coastguard Worker	    func_fatal_error "invalid libtool wrapper script '$wrapper'"
4707*a67afe4dSAndroid Build Coastguard Worker
4708*a67afe4dSAndroid Build Coastguard Worker	  finalize=:
4709*a67afe4dSAndroid Build Coastguard Worker	  for lib in $notinst_deplibs; do
4710*a67afe4dSAndroid Build Coastguard Worker	    # Check to see that each library is installed.
4711*a67afe4dSAndroid Build Coastguard Worker	    libdir=
4712*a67afe4dSAndroid Build Coastguard Worker	    if test -f "$lib"; then
4713*a67afe4dSAndroid Build Coastguard Worker	      func_source "$lib"
4714*a67afe4dSAndroid Build Coastguard Worker	    fi
4715*a67afe4dSAndroid Build Coastguard Worker	    libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'`
4716*a67afe4dSAndroid Build Coastguard Worker	    if test -n "$libdir" && test ! -f "$libfile"; then
4717*a67afe4dSAndroid Build Coastguard Worker	      func_warning "'$lib' has not been installed in '$libdir'"
4718*a67afe4dSAndroid Build Coastguard Worker	      finalize=false
4719*a67afe4dSAndroid Build Coastguard Worker	    fi
4720*a67afe4dSAndroid Build Coastguard Worker	  done
4721*a67afe4dSAndroid Build Coastguard Worker
4722*a67afe4dSAndroid Build Coastguard Worker	  relink_command=
4723*a67afe4dSAndroid Build Coastguard Worker	  func_source "$wrapper"
4724*a67afe4dSAndroid Build Coastguard Worker
4725*a67afe4dSAndroid Build Coastguard Worker	  outputname=
4726*a67afe4dSAndroid Build Coastguard Worker	  if test no = "$fast_install" && test -n "$relink_command"; then
4727*a67afe4dSAndroid Build Coastguard Worker	    $opt_dry_run || {
4728*a67afe4dSAndroid Build Coastguard Worker	      if $finalize; then
4729*a67afe4dSAndroid Build Coastguard Worker	        tmpdir=`func_mktempdir`
4730*a67afe4dSAndroid Build Coastguard Worker		func_basename "$file$stripped_ext"
4731*a67afe4dSAndroid Build Coastguard Worker		file=$func_basename_result
4732*a67afe4dSAndroid Build Coastguard Worker	        outputname=$tmpdir/$file
4733*a67afe4dSAndroid Build Coastguard Worker	        # Replace the output file specification.
4734*a67afe4dSAndroid Build Coastguard Worker	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
4735*a67afe4dSAndroid Build Coastguard Worker
4736*a67afe4dSAndroid Build Coastguard Worker	        $opt_quiet || {
4737*a67afe4dSAndroid Build Coastguard Worker	          func_quote_arg expand,pretty "$relink_command"
4738*a67afe4dSAndroid Build Coastguard Worker		  eval "func_echo $func_quote_arg_result"
4739*a67afe4dSAndroid Build Coastguard Worker	        }
4740*a67afe4dSAndroid Build Coastguard Worker	        if eval "$relink_command"; then :
4741*a67afe4dSAndroid Build Coastguard Worker	          else
4742*a67afe4dSAndroid Build Coastguard Worker		  func_error "error: relink '$file' with the above command before installing it"
4743*a67afe4dSAndroid Build Coastguard Worker		  $opt_dry_run || ${RM}r "$tmpdir"
4744*a67afe4dSAndroid Build Coastguard Worker		  continue
4745*a67afe4dSAndroid Build Coastguard Worker	        fi
4746*a67afe4dSAndroid Build Coastguard Worker	        file=$outputname
4747*a67afe4dSAndroid Build Coastguard Worker	      else
4748*a67afe4dSAndroid Build Coastguard Worker	        func_warning "cannot relink '$file'"
4749*a67afe4dSAndroid Build Coastguard Worker	      fi
4750*a67afe4dSAndroid Build Coastguard Worker	    }
4751*a67afe4dSAndroid Build Coastguard Worker	  else
4752*a67afe4dSAndroid Build Coastguard Worker	    # Install the binary that we compiled earlier.
4753*a67afe4dSAndroid Build Coastguard Worker	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
4754*a67afe4dSAndroid Build Coastguard Worker	  fi
4755*a67afe4dSAndroid Build Coastguard Worker	fi
4756*a67afe4dSAndroid Build Coastguard Worker
4757*a67afe4dSAndroid Build Coastguard Worker	# remove .exe since cygwin /usr/bin/install will append another
4758*a67afe4dSAndroid Build Coastguard Worker	# one anyway
4759*a67afe4dSAndroid Build Coastguard Worker	case $install_prog,$host in
4760*a67afe4dSAndroid Build Coastguard Worker	*/usr/bin/install*,*cygwin*)
4761*a67afe4dSAndroid Build Coastguard Worker	  case $file:$destfile in
4762*a67afe4dSAndroid Build Coastguard Worker	  *.exe:*.exe)
4763*a67afe4dSAndroid Build Coastguard Worker	    # this is ok
4764*a67afe4dSAndroid Build Coastguard Worker	    ;;
4765*a67afe4dSAndroid Build Coastguard Worker	  *.exe:*)
4766*a67afe4dSAndroid Build Coastguard Worker	    destfile=$destfile.exe
4767*a67afe4dSAndroid Build Coastguard Worker	    ;;
4768*a67afe4dSAndroid Build Coastguard Worker	  *:*.exe)
4769*a67afe4dSAndroid Build Coastguard Worker	    func_stripname '' '.exe' "$destfile"
4770*a67afe4dSAndroid Build Coastguard Worker	    destfile=$func_stripname_result
4771*a67afe4dSAndroid Build Coastguard Worker	    ;;
4772*a67afe4dSAndroid Build Coastguard Worker	  esac
4773*a67afe4dSAndroid Build Coastguard Worker	  ;;
4774*a67afe4dSAndroid Build Coastguard Worker	esac
4775*a67afe4dSAndroid Build Coastguard Worker	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
4776*a67afe4dSAndroid Build Coastguard Worker	$opt_dry_run || if test -n "$outputname"; then
4777*a67afe4dSAndroid Build Coastguard Worker	  ${RM}r "$tmpdir"
4778*a67afe4dSAndroid Build Coastguard Worker	fi
4779*a67afe4dSAndroid Build Coastguard Worker	;;
4780*a67afe4dSAndroid Build Coastguard Worker      esac
4781*a67afe4dSAndroid Build Coastguard Worker    done
4782*a67afe4dSAndroid Build Coastguard Worker
4783*a67afe4dSAndroid Build Coastguard Worker    for file in $staticlibs; do
4784*a67afe4dSAndroid Build Coastguard Worker      func_basename "$file"
4785*a67afe4dSAndroid Build Coastguard Worker      name=$func_basename_result
4786*a67afe4dSAndroid Build Coastguard Worker
4787*a67afe4dSAndroid Build Coastguard Worker      # Set up the ranlib parameters.
4788*a67afe4dSAndroid Build Coastguard Worker      oldlib=$destdir/$name
4789*a67afe4dSAndroid Build Coastguard Worker      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
4790*a67afe4dSAndroid Build Coastguard Worker      tool_oldlib=$func_to_tool_file_result
4791*a67afe4dSAndroid Build Coastguard Worker
4792*a67afe4dSAndroid Build Coastguard Worker      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
4793*a67afe4dSAndroid Build Coastguard Worker
4794*a67afe4dSAndroid Build Coastguard Worker      if test -n "$stripme" && test -n "$old_striplib"; then
4795*a67afe4dSAndroid Build Coastguard Worker	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
4796*a67afe4dSAndroid Build Coastguard Worker      fi
4797*a67afe4dSAndroid Build Coastguard Worker
4798*a67afe4dSAndroid Build Coastguard Worker      # Do each command in the postinstall commands.
4799*a67afe4dSAndroid Build Coastguard Worker      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
4800*a67afe4dSAndroid Build Coastguard Worker    done
4801*a67afe4dSAndroid Build Coastguard Worker
4802*a67afe4dSAndroid Build Coastguard Worker    test -n "$future_libdirs" && \
4803*a67afe4dSAndroid Build Coastguard Worker      func_warning "remember to run '$progname --finish$future_libdirs'"
4804*a67afe4dSAndroid Build Coastguard Worker
4805*a67afe4dSAndroid Build Coastguard Worker    if test -n "$current_libdirs"; then
4806*a67afe4dSAndroid Build Coastguard Worker      # Maybe just do a dry run.
4807*a67afe4dSAndroid Build Coastguard Worker      $opt_dry_run && current_libdirs=" -n$current_libdirs"
4808*a67afe4dSAndroid Build Coastguard Worker      exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs'
4809*a67afe4dSAndroid Build Coastguard Worker    else
4810*a67afe4dSAndroid Build Coastguard Worker      exit $EXIT_SUCCESS
4811*a67afe4dSAndroid Build Coastguard Worker    fi
4812*a67afe4dSAndroid Build Coastguard Worker}
4813*a67afe4dSAndroid Build Coastguard Worker
4814*a67afe4dSAndroid Build Coastguard Workertest install = "$opt_mode" && func_mode_install ${1+"$@"}
4815*a67afe4dSAndroid Build Coastguard Worker
4816*a67afe4dSAndroid Build Coastguard Worker
4817*a67afe4dSAndroid Build Coastguard Worker# func_generate_dlsyms outputname originator pic_p
4818*a67afe4dSAndroid Build Coastguard Worker# Extract symbols from dlprefiles and create ${outputname}S.o with
4819*a67afe4dSAndroid Build Coastguard Worker# a dlpreopen symbol table.
4820*a67afe4dSAndroid Build Coastguard Workerfunc_generate_dlsyms ()
4821*a67afe4dSAndroid Build Coastguard Worker{
4822*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
4823*a67afe4dSAndroid Build Coastguard Worker
4824*a67afe4dSAndroid Build Coastguard Worker    my_outputname=$1
4825*a67afe4dSAndroid Build Coastguard Worker    my_originator=$2
4826*a67afe4dSAndroid Build Coastguard Worker    my_pic_p=${3-false}
4827*a67afe4dSAndroid Build Coastguard Worker    my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'`
4828*a67afe4dSAndroid Build Coastguard Worker    my_dlsyms=
4829*a67afe4dSAndroid Build Coastguard Worker
4830*a67afe4dSAndroid Build Coastguard Worker    if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
4831*a67afe4dSAndroid Build Coastguard Worker      if test -n "$NM" && test -n "$global_symbol_pipe"; then
4832*a67afe4dSAndroid Build Coastguard Worker	my_dlsyms=${my_outputname}S.c
4833*a67afe4dSAndroid Build Coastguard Worker      else
4834*a67afe4dSAndroid Build Coastguard Worker	func_error "not configured to extract global symbols from dlpreopened files"
4835*a67afe4dSAndroid Build Coastguard Worker      fi
4836*a67afe4dSAndroid Build Coastguard Worker    fi
4837*a67afe4dSAndroid Build Coastguard Worker
4838*a67afe4dSAndroid Build Coastguard Worker    if test -n "$my_dlsyms"; then
4839*a67afe4dSAndroid Build Coastguard Worker      case $my_dlsyms in
4840*a67afe4dSAndroid Build Coastguard Worker      "") ;;
4841*a67afe4dSAndroid Build Coastguard Worker      *.c)
4842*a67afe4dSAndroid Build Coastguard Worker	# Discover the nlist of each of the dlfiles.
4843*a67afe4dSAndroid Build Coastguard Worker	nlist=$output_objdir/$my_outputname.nm
4844*a67afe4dSAndroid Build Coastguard Worker
4845*a67afe4dSAndroid Build Coastguard Worker	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
4846*a67afe4dSAndroid Build Coastguard Worker
4847*a67afe4dSAndroid Build Coastguard Worker	# Parse the name list into a source file.
4848*a67afe4dSAndroid Build Coastguard Worker	func_verbose "creating $output_objdir/$my_dlsyms"
4849*a67afe4dSAndroid Build Coastguard Worker
4850*a67afe4dSAndroid Build Coastguard Worker	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
4851*a67afe4dSAndroid Build Coastguard Worker/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */
4852*a67afe4dSAndroid Build Coastguard Worker/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */
4853*a67afe4dSAndroid Build Coastguard Worker
4854*a67afe4dSAndroid Build Coastguard Worker#ifdef __cplusplus
4855*a67afe4dSAndroid Build Coastguard Workerextern \"C\" {
4856*a67afe4dSAndroid Build Coastguard Worker#endif
4857*a67afe4dSAndroid Build Coastguard Worker
4858*a67afe4dSAndroid Build Coastguard Worker#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
4859*a67afe4dSAndroid Build Coastguard Worker#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
4860*a67afe4dSAndroid Build Coastguard Worker#endif
4861*a67afe4dSAndroid Build Coastguard Worker
4862*a67afe4dSAndroid Build Coastguard Worker/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
4863*a67afe4dSAndroid Build Coastguard Worker#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
4864*a67afe4dSAndroid Build Coastguard Worker/* DATA imports from DLLs on WIN32 can't be const, because runtime
4865*a67afe4dSAndroid Build Coastguard Worker   relocations are performed -- see ld's documentation on pseudo-relocs.  */
4866*a67afe4dSAndroid Build Coastguard Worker# define LT_DLSYM_CONST
4867*a67afe4dSAndroid Build Coastguard Worker#elif defined __osf__
4868*a67afe4dSAndroid Build Coastguard Worker/* This system does not cope well with relocations in const data.  */
4869*a67afe4dSAndroid Build Coastguard Worker# define LT_DLSYM_CONST
4870*a67afe4dSAndroid Build Coastguard Worker#else
4871*a67afe4dSAndroid Build Coastguard Worker# define LT_DLSYM_CONST const
4872*a67afe4dSAndroid Build Coastguard Worker#endif
4873*a67afe4dSAndroid Build Coastguard Worker
4874*a67afe4dSAndroid Build Coastguard Worker#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
4875*a67afe4dSAndroid Build Coastguard Worker
4876*a67afe4dSAndroid Build Coastguard Worker/* External symbol declarations for the compiler. */\
4877*a67afe4dSAndroid Build Coastguard Worker"
4878*a67afe4dSAndroid Build Coastguard Worker
4879*a67afe4dSAndroid Build Coastguard Worker	if test yes = "$dlself"; then
4880*a67afe4dSAndroid Build Coastguard Worker	  func_verbose "generating symbol list for '$output'"
4881*a67afe4dSAndroid Build Coastguard Worker
4882*a67afe4dSAndroid Build Coastguard Worker	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
4883*a67afe4dSAndroid Build Coastguard Worker
4884*a67afe4dSAndroid Build Coastguard Worker	  # Add our own program objects to the symbol list.
4885*a67afe4dSAndroid Build Coastguard Worker	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
4886*a67afe4dSAndroid Build Coastguard Worker	  for progfile in $progfiles; do
4887*a67afe4dSAndroid Build Coastguard Worker	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
4888*a67afe4dSAndroid Build Coastguard Worker	    func_verbose "extracting global C symbols from '$func_to_tool_file_result'"
4889*a67afe4dSAndroid Build Coastguard Worker	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
4890*a67afe4dSAndroid Build Coastguard Worker	  done
4891*a67afe4dSAndroid Build Coastguard Worker
4892*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$exclude_expsyms"; then
4893*a67afe4dSAndroid Build Coastguard Worker	    $opt_dry_run || {
4894*a67afe4dSAndroid Build Coastguard Worker	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
4895*a67afe4dSAndroid Build Coastguard Worker	      eval '$MV "$nlist"T "$nlist"'
4896*a67afe4dSAndroid Build Coastguard Worker	    }
4897*a67afe4dSAndroid Build Coastguard Worker	  fi
4898*a67afe4dSAndroid Build Coastguard Worker
4899*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$export_symbols_regex"; then
4900*a67afe4dSAndroid Build Coastguard Worker	    $opt_dry_run || {
4901*a67afe4dSAndroid Build Coastguard Worker	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
4902*a67afe4dSAndroid Build Coastguard Worker	      eval '$MV "$nlist"T "$nlist"'
4903*a67afe4dSAndroid Build Coastguard Worker	    }
4904*a67afe4dSAndroid Build Coastguard Worker	  fi
4905*a67afe4dSAndroid Build Coastguard Worker
4906*a67afe4dSAndroid Build Coastguard Worker	  # Prepare the list of exported symbols
4907*a67afe4dSAndroid Build Coastguard Worker	  if test -z "$export_symbols"; then
4908*a67afe4dSAndroid Build Coastguard Worker	    export_symbols=$output_objdir/$outputname.exp
4909*a67afe4dSAndroid Build Coastguard Worker	    $opt_dry_run || {
4910*a67afe4dSAndroid Build Coastguard Worker	      $RM $export_symbols
4911*a67afe4dSAndroid Build Coastguard Worker	      eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
4912*a67afe4dSAndroid Build Coastguard Worker	      case $host in
4913*a67afe4dSAndroid Build Coastguard Worker	      *cygwin* | *mingw* | *cegcc* )
4914*a67afe4dSAndroid Build Coastguard Worker                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4915*a67afe4dSAndroid Build Coastguard Worker                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
4916*a67afe4dSAndroid Build Coastguard Worker	        ;;
4917*a67afe4dSAndroid Build Coastguard Worker	      esac
4918*a67afe4dSAndroid Build Coastguard Worker	    }
4919*a67afe4dSAndroid Build Coastguard Worker	  else
4920*a67afe4dSAndroid Build Coastguard Worker	    $opt_dry_run || {
4921*a67afe4dSAndroid Build Coastguard Worker	      eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
4922*a67afe4dSAndroid Build Coastguard Worker	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
4923*a67afe4dSAndroid Build Coastguard Worker	      eval '$MV "$nlist"T "$nlist"'
4924*a67afe4dSAndroid Build Coastguard Worker	      case $host in
4925*a67afe4dSAndroid Build Coastguard Worker	        *cygwin* | *mingw* | *cegcc* )
4926*a67afe4dSAndroid Build Coastguard Worker	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4927*a67afe4dSAndroid Build Coastguard Worker	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
4928*a67afe4dSAndroid Build Coastguard Worker	          ;;
4929*a67afe4dSAndroid Build Coastguard Worker	      esac
4930*a67afe4dSAndroid Build Coastguard Worker	    }
4931*a67afe4dSAndroid Build Coastguard Worker	  fi
4932*a67afe4dSAndroid Build Coastguard Worker	fi
4933*a67afe4dSAndroid Build Coastguard Worker
4934*a67afe4dSAndroid Build Coastguard Worker	for dlprefile in $dlprefiles; do
4935*a67afe4dSAndroid Build Coastguard Worker	  func_verbose "extracting global C symbols from '$dlprefile'"
4936*a67afe4dSAndroid Build Coastguard Worker	  func_basename "$dlprefile"
4937*a67afe4dSAndroid Build Coastguard Worker	  name=$func_basename_result
4938*a67afe4dSAndroid Build Coastguard Worker          case $host in
4939*a67afe4dSAndroid Build Coastguard Worker	    *cygwin* | *mingw* | *cegcc* )
4940*a67afe4dSAndroid Build Coastguard Worker	      # if an import library, we need to obtain dlname
4941*a67afe4dSAndroid Build Coastguard Worker	      if func_win32_import_lib_p "$dlprefile"; then
4942*a67afe4dSAndroid Build Coastguard Worker	        func_tr_sh "$dlprefile"
4943*a67afe4dSAndroid Build Coastguard Worker	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
4944*a67afe4dSAndroid Build Coastguard Worker	        dlprefile_dlbasename=
4945*a67afe4dSAndroid Build Coastguard Worker	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
4946*a67afe4dSAndroid Build Coastguard Worker	          # Use subshell, to avoid clobbering current variable values
4947*a67afe4dSAndroid Build Coastguard Worker	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
4948*a67afe4dSAndroid Build Coastguard Worker	          if test -n "$dlprefile_dlname"; then
4949*a67afe4dSAndroid Build Coastguard Worker	            func_basename "$dlprefile_dlname"
4950*a67afe4dSAndroid Build Coastguard Worker	            dlprefile_dlbasename=$func_basename_result
4951*a67afe4dSAndroid Build Coastguard Worker	          else
4952*a67afe4dSAndroid Build Coastguard Worker	            # no lafile. user explicitly requested -dlpreopen <import library>.
4953*a67afe4dSAndroid Build Coastguard Worker	            $sharedlib_from_linklib_cmd "$dlprefile"
4954*a67afe4dSAndroid Build Coastguard Worker	            dlprefile_dlbasename=$sharedlib_from_linklib_result
4955*a67afe4dSAndroid Build Coastguard Worker	          fi
4956*a67afe4dSAndroid Build Coastguard Worker	        fi
4957*a67afe4dSAndroid Build Coastguard Worker	        $opt_dry_run || {
4958*a67afe4dSAndroid Build Coastguard Worker	          if test -n "$dlprefile_dlbasename"; then
4959*a67afe4dSAndroid Build Coastguard Worker	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
4960*a67afe4dSAndroid Build Coastguard Worker	          else
4961*a67afe4dSAndroid Build Coastguard Worker	            func_warning "Could not compute DLL name from $name"
4962*a67afe4dSAndroid Build Coastguard Worker	            eval '$ECHO ": $name " >> "$nlist"'
4963*a67afe4dSAndroid Build Coastguard Worker	          fi
4964*a67afe4dSAndroid Build Coastguard Worker	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
4965*a67afe4dSAndroid Build Coastguard Worker	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
4966*a67afe4dSAndroid Build Coastguard Worker	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
4967*a67afe4dSAndroid Build Coastguard Worker	        }
4968*a67afe4dSAndroid Build Coastguard Worker	      else # not an import lib
4969*a67afe4dSAndroid Build Coastguard Worker	        $opt_dry_run || {
4970*a67afe4dSAndroid Build Coastguard Worker	          eval '$ECHO ": $name " >> "$nlist"'
4971*a67afe4dSAndroid Build Coastguard Worker	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
4972*a67afe4dSAndroid Build Coastguard Worker	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
4973*a67afe4dSAndroid Build Coastguard Worker	        }
4974*a67afe4dSAndroid Build Coastguard Worker	      fi
4975*a67afe4dSAndroid Build Coastguard Worker	    ;;
4976*a67afe4dSAndroid Build Coastguard Worker	    *)
4977*a67afe4dSAndroid Build Coastguard Worker	      $opt_dry_run || {
4978*a67afe4dSAndroid Build Coastguard Worker	        eval '$ECHO ": $name " >> "$nlist"'
4979*a67afe4dSAndroid Build Coastguard Worker	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
4980*a67afe4dSAndroid Build Coastguard Worker	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
4981*a67afe4dSAndroid Build Coastguard Worker	      }
4982*a67afe4dSAndroid Build Coastguard Worker	    ;;
4983*a67afe4dSAndroid Build Coastguard Worker          esac
4984*a67afe4dSAndroid Build Coastguard Worker	done
4985*a67afe4dSAndroid Build Coastguard Worker
4986*a67afe4dSAndroid Build Coastguard Worker	$opt_dry_run || {
4987*a67afe4dSAndroid Build Coastguard Worker	  # Make sure we have at least an empty file.
4988*a67afe4dSAndroid Build Coastguard Worker	  test -f "$nlist" || : > "$nlist"
4989*a67afe4dSAndroid Build Coastguard Worker
4990*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$exclude_expsyms"; then
4991*a67afe4dSAndroid Build Coastguard Worker	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
4992*a67afe4dSAndroid Build Coastguard Worker	    $MV "$nlist"T "$nlist"
4993*a67afe4dSAndroid Build Coastguard Worker	  fi
4994*a67afe4dSAndroid Build Coastguard Worker
4995*a67afe4dSAndroid Build Coastguard Worker	  # Try sorting and uniquifying the output.
4996*a67afe4dSAndroid Build Coastguard Worker	  if $GREP -v "^: " < "$nlist" |
4997*a67afe4dSAndroid Build Coastguard Worker	      if sort -k 3 </dev/null >/dev/null 2>&1; then
4998*a67afe4dSAndroid Build Coastguard Worker		sort -k 3
4999*a67afe4dSAndroid Build Coastguard Worker	      else
5000*a67afe4dSAndroid Build Coastguard Worker		sort +2
5001*a67afe4dSAndroid Build Coastguard Worker	      fi |
5002*a67afe4dSAndroid Build Coastguard Worker	      uniq > "$nlist"S; then
5003*a67afe4dSAndroid Build Coastguard Worker	    :
5004*a67afe4dSAndroid Build Coastguard Worker	  else
5005*a67afe4dSAndroid Build Coastguard Worker	    $GREP -v "^: " < "$nlist" > "$nlist"S
5006*a67afe4dSAndroid Build Coastguard Worker	  fi
5007*a67afe4dSAndroid Build Coastguard Worker
5008*a67afe4dSAndroid Build Coastguard Worker	  if test -f "$nlist"S; then
5009*a67afe4dSAndroid Build Coastguard Worker	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
5010*a67afe4dSAndroid Build Coastguard Worker	  else
5011*a67afe4dSAndroid Build Coastguard Worker	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
5012*a67afe4dSAndroid Build Coastguard Worker	  fi
5013*a67afe4dSAndroid Build Coastguard Worker
5014*a67afe4dSAndroid Build Coastguard Worker	  func_show_eval '$RM "${nlist}I"'
5015*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$global_symbol_to_import"; then
5016*a67afe4dSAndroid Build Coastguard Worker	    eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I'
5017*a67afe4dSAndroid Build Coastguard Worker	  fi
5018*a67afe4dSAndroid Build Coastguard Worker
5019*a67afe4dSAndroid Build Coastguard Worker	  echo >> "$output_objdir/$my_dlsyms" "\
5020*a67afe4dSAndroid Build Coastguard Worker
5021*a67afe4dSAndroid Build Coastguard Worker/* The mapping between symbol names and symbols.  */
5022*a67afe4dSAndroid Build Coastguard Workertypedef struct {
5023*a67afe4dSAndroid Build Coastguard Worker  const char *name;
5024*a67afe4dSAndroid Build Coastguard Worker  void *address;
5025*a67afe4dSAndroid Build Coastguard Worker} lt_dlsymlist;
5026*a67afe4dSAndroid Build Coastguard Workerextern LT_DLSYM_CONST lt_dlsymlist
5027*a67afe4dSAndroid Build Coastguard Workerlt_${my_prefix}_LTX_preloaded_symbols[];\
5028*a67afe4dSAndroid Build Coastguard Worker"
5029*a67afe4dSAndroid Build Coastguard Worker
5030*a67afe4dSAndroid Build Coastguard Worker	  if test -s "$nlist"I; then
5031*a67afe4dSAndroid Build Coastguard Worker	    echo >> "$output_objdir/$my_dlsyms" "\
5032*a67afe4dSAndroid Build Coastguard Workerstatic void lt_syminit(void)
5033*a67afe4dSAndroid Build Coastguard Worker{
5034*a67afe4dSAndroid Build Coastguard Worker  LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols;
5035*a67afe4dSAndroid Build Coastguard Worker  for (; symbol->name; ++symbol)
5036*a67afe4dSAndroid Build Coastguard Worker    {"
5037*a67afe4dSAndroid Build Coastguard Worker	    $SED 's/.*/      if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms"
5038*a67afe4dSAndroid Build Coastguard Worker	    echo >> "$output_objdir/$my_dlsyms" "\
5039*a67afe4dSAndroid Build Coastguard Worker    }
5040*a67afe4dSAndroid Build Coastguard Worker}"
5041*a67afe4dSAndroid Build Coastguard Worker	  fi
5042*a67afe4dSAndroid Build Coastguard Worker	  echo >> "$output_objdir/$my_dlsyms" "\
5043*a67afe4dSAndroid Build Coastguard WorkerLT_DLSYM_CONST lt_dlsymlist
5044*a67afe4dSAndroid Build Coastguard Workerlt_${my_prefix}_LTX_preloaded_symbols[] =
5045*a67afe4dSAndroid Build Coastguard Worker{ {\"$my_originator\", (void *) 0},"
5046*a67afe4dSAndroid Build Coastguard Worker
5047*a67afe4dSAndroid Build Coastguard Worker	  if test -s "$nlist"I; then
5048*a67afe4dSAndroid Build Coastguard Worker	    echo >> "$output_objdir/$my_dlsyms" "\
5049*a67afe4dSAndroid Build Coastguard Worker  {\"@INIT@\", (void *) &lt_syminit},"
5050*a67afe4dSAndroid Build Coastguard Worker	  fi
5051*a67afe4dSAndroid Build Coastguard Worker
5052*a67afe4dSAndroid Build Coastguard Worker	  case $need_lib_prefix in
5053*a67afe4dSAndroid Build Coastguard Worker	  no)
5054*a67afe4dSAndroid Build Coastguard Worker	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
5055*a67afe4dSAndroid Build Coastguard Worker	    ;;
5056*a67afe4dSAndroid Build Coastguard Worker	  *)
5057*a67afe4dSAndroid Build Coastguard Worker	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
5058*a67afe4dSAndroid Build Coastguard Worker	    ;;
5059*a67afe4dSAndroid Build Coastguard Worker	  esac
5060*a67afe4dSAndroid Build Coastguard Worker	  echo >> "$output_objdir/$my_dlsyms" "\
5061*a67afe4dSAndroid Build Coastguard Worker  {0, (void *) 0}
5062*a67afe4dSAndroid Build Coastguard Worker};
5063*a67afe4dSAndroid Build Coastguard Worker
5064*a67afe4dSAndroid Build Coastguard Worker/* This works around a problem in FreeBSD linker */
5065*a67afe4dSAndroid Build Coastguard Worker#ifdef FREEBSD_WORKAROUND
5066*a67afe4dSAndroid Build Coastguard Workerstatic const void *lt_preloaded_setup() {
5067*a67afe4dSAndroid Build Coastguard Worker  return lt_${my_prefix}_LTX_preloaded_symbols;
5068*a67afe4dSAndroid Build Coastguard Worker}
5069*a67afe4dSAndroid Build Coastguard Worker#endif
5070*a67afe4dSAndroid Build Coastguard Worker
5071*a67afe4dSAndroid Build Coastguard Worker#ifdef __cplusplus
5072*a67afe4dSAndroid Build Coastguard Worker}
5073*a67afe4dSAndroid Build Coastguard Worker#endif\
5074*a67afe4dSAndroid Build Coastguard Worker"
5075*a67afe4dSAndroid Build Coastguard Worker	} # !$opt_dry_run
5076*a67afe4dSAndroid Build Coastguard Worker
5077*a67afe4dSAndroid Build Coastguard Worker	pic_flag_for_symtable=
5078*a67afe4dSAndroid Build Coastguard Worker	case "$compile_command " in
5079*a67afe4dSAndroid Build Coastguard Worker	*" -static "*) ;;
5080*a67afe4dSAndroid Build Coastguard Worker	*)
5081*a67afe4dSAndroid Build Coastguard Worker	  case $host in
5082*a67afe4dSAndroid Build Coastguard Worker	  # compiling the symbol table file with pic_flag works around
5083*a67afe4dSAndroid Build Coastguard Worker	  # a FreeBSD bug that causes programs to crash when -lm is
5084*a67afe4dSAndroid Build Coastguard Worker	  # linked before any other PIC object.  But we must not use
5085*a67afe4dSAndroid Build Coastguard Worker	  # pic_flag when linking with -static.  The problem exists in
5086*a67afe4dSAndroid Build Coastguard Worker	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
5087*a67afe4dSAndroid Build Coastguard Worker	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
5088*a67afe4dSAndroid Build Coastguard Worker	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
5089*a67afe4dSAndroid Build Coastguard Worker	  *-*-hpux*)
5090*a67afe4dSAndroid Build Coastguard Worker	    pic_flag_for_symtable=" $pic_flag"  ;;
5091*a67afe4dSAndroid Build Coastguard Worker	  *)
5092*a67afe4dSAndroid Build Coastguard Worker	    $my_pic_p && pic_flag_for_symtable=" $pic_flag"
5093*a67afe4dSAndroid Build Coastguard Worker	    ;;
5094*a67afe4dSAndroid Build Coastguard Worker	  esac
5095*a67afe4dSAndroid Build Coastguard Worker	  ;;
5096*a67afe4dSAndroid Build Coastguard Worker	esac
5097*a67afe4dSAndroid Build Coastguard Worker	symtab_cflags=
5098*a67afe4dSAndroid Build Coastguard Worker	for arg in $LTCFLAGS; do
5099*a67afe4dSAndroid Build Coastguard Worker	  case $arg in
5100*a67afe4dSAndroid Build Coastguard Worker	  -pie | -fpie | -fPIE) ;;
5101*a67afe4dSAndroid Build Coastguard Worker	  *) func_append symtab_cflags " $arg" ;;
5102*a67afe4dSAndroid Build Coastguard Worker	  esac
5103*a67afe4dSAndroid Build Coastguard Worker	done
5104*a67afe4dSAndroid Build Coastguard Worker
5105*a67afe4dSAndroid Build Coastguard Worker	# Now compile the dynamic symbol file.
5106*a67afe4dSAndroid Build Coastguard Worker	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
5107*a67afe4dSAndroid Build Coastguard Worker
5108*a67afe4dSAndroid Build Coastguard Worker	# Clean up the generated files.
5109*a67afe4dSAndroid Build Coastguard Worker	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"'
5110*a67afe4dSAndroid Build Coastguard Worker
5111*a67afe4dSAndroid Build Coastguard Worker	# Transform the symbol file into the correct name.
5112*a67afe4dSAndroid Build Coastguard Worker	symfileobj=$output_objdir/${my_outputname}S.$objext
5113*a67afe4dSAndroid Build Coastguard Worker	case $host in
5114*a67afe4dSAndroid Build Coastguard Worker	*cygwin* | *mingw* | *cegcc* )
5115*a67afe4dSAndroid Build Coastguard Worker	  if test -f "$output_objdir/$my_outputname.def"; then
5116*a67afe4dSAndroid Build Coastguard Worker	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
5117*a67afe4dSAndroid Build Coastguard Worker	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
5118*a67afe4dSAndroid Build Coastguard Worker	  else
5119*a67afe4dSAndroid Build Coastguard Worker	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
5120*a67afe4dSAndroid Build Coastguard Worker	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
5121*a67afe4dSAndroid Build Coastguard Worker	  fi
5122*a67afe4dSAndroid Build Coastguard Worker	  ;;
5123*a67afe4dSAndroid Build Coastguard Worker	*)
5124*a67afe4dSAndroid Build Coastguard Worker	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
5125*a67afe4dSAndroid Build Coastguard Worker	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
5126*a67afe4dSAndroid Build Coastguard Worker	  ;;
5127*a67afe4dSAndroid Build Coastguard Worker	esac
5128*a67afe4dSAndroid Build Coastguard Worker	;;
5129*a67afe4dSAndroid Build Coastguard Worker      *)
5130*a67afe4dSAndroid Build Coastguard Worker	func_fatal_error "unknown suffix for '$my_dlsyms'"
5131*a67afe4dSAndroid Build Coastguard Worker	;;
5132*a67afe4dSAndroid Build Coastguard Worker      esac
5133*a67afe4dSAndroid Build Coastguard Worker    else
5134*a67afe4dSAndroid Build Coastguard Worker      # We keep going just in case the user didn't refer to
5135*a67afe4dSAndroid Build Coastguard Worker      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
5136*a67afe4dSAndroid Build Coastguard Worker      # really was required.
5137*a67afe4dSAndroid Build Coastguard Worker
5138*a67afe4dSAndroid Build Coastguard Worker      # Nullify the symbol file.
5139*a67afe4dSAndroid Build Coastguard Worker      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
5140*a67afe4dSAndroid Build Coastguard Worker      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
5141*a67afe4dSAndroid Build Coastguard Worker    fi
5142*a67afe4dSAndroid Build Coastguard Worker}
5143*a67afe4dSAndroid Build Coastguard Worker
5144*a67afe4dSAndroid Build Coastguard Worker# func_cygming_gnu_implib_p ARG
5145*a67afe4dSAndroid Build Coastguard Worker# This predicate returns with zero status (TRUE) if
5146*a67afe4dSAndroid Build Coastguard Worker# ARG is a GNU/binutils-style import library. Returns
5147*a67afe4dSAndroid Build Coastguard Worker# with nonzero status (FALSE) otherwise.
5148*a67afe4dSAndroid Build Coastguard Workerfunc_cygming_gnu_implib_p ()
5149*a67afe4dSAndroid Build Coastguard Worker{
5150*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
5151*a67afe4dSAndroid Build Coastguard Worker
5152*a67afe4dSAndroid Build Coastguard Worker  func_to_tool_file "$1" func_convert_file_msys_to_w32
5153*a67afe4dSAndroid Build Coastguard Worker  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)$'`
5154*a67afe4dSAndroid Build Coastguard Worker  test -n "$func_cygming_gnu_implib_tmp"
5155*a67afe4dSAndroid Build Coastguard Worker}
5156*a67afe4dSAndroid Build Coastguard Worker
5157*a67afe4dSAndroid Build Coastguard Worker# func_cygming_ms_implib_p ARG
5158*a67afe4dSAndroid Build Coastguard Worker# This predicate returns with zero status (TRUE) if
5159*a67afe4dSAndroid Build Coastguard Worker# ARG is an MS-style import library. Returns
5160*a67afe4dSAndroid Build Coastguard Worker# with nonzero status (FALSE) otherwise.
5161*a67afe4dSAndroid Build Coastguard Workerfunc_cygming_ms_implib_p ()
5162*a67afe4dSAndroid Build Coastguard Worker{
5163*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
5164*a67afe4dSAndroid Build Coastguard Worker
5165*a67afe4dSAndroid Build Coastguard Worker  func_to_tool_file "$1" func_convert_file_msys_to_w32
5166*a67afe4dSAndroid Build Coastguard Worker  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
5167*a67afe4dSAndroid Build Coastguard Worker  test -n "$func_cygming_ms_implib_tmp"
5168*a67afe4dSAndroid Build Coastguard Worker}
5169*a67afe4dSAndroid Build Coastguard Worker
5170*a67afe4dSAndroid Build Coastguard Worker# func_win32_libid arg
5171*a67afe4dSAndroid Build Coastguard Worker# return the library type of file 'arg'
5172*a67afe4dSAndroid Build Coastguard Worker#
5173*a67afe4dSAndroid Build Coastguard Worker# Need a lot of goo to handle *both* DLLs and import libs
5174*a67afe4dSAndroid Build Coastguard Worker# Has to be a shell function in order to 'eat' the argument
5175*a67afe4dSAndroid Build Coastguard Worker# that is supplied when $file_magic_command is called.
5176*a67afe4dSAndroid Build Coastguard Worker# Despite the name, also deal with 64 bit binaries.
5177*a67afe4dSAndroid Build Coastguard Workerfunc_win32_libid ()
5178*a67afe4dSAndroid Build Coastguard Worker{
5179*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
5180*a67afe4dSAndroid Build Coastguard Worker
5181*a67afe4dSAndroid Build Coastguard Worker  win32_libid_type=unknown
5182*a67afe4dSAndroid Build Coastguard Worker  win32_fileres=`file -L $1 2>/dev/null`
5183*a67afe4dSAndroid Build Coastguard Worker  case $win32_fileres in
5184*a67afe4dSAndroid Build Coastguard Worker  *ar\ archive\ import\ library*) # definitely import
5185*a67afe4dSAndroid Build Coastguard Worker    win32_libid_type="x86 archive import"
5186*a67afe4dSAndroid Build Coastguard Worker    ;;
5187*a67afe4dSAndroid Build Coastguard Worker  *ar\ archive*) # could be an import, or static
5188*a67afe4dSAndroid Build Coastguard Worker    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
5189*a67afe4dSAndroid Build Coastguard Worker    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
5190*a67afe4dSAndroid Build Coastguard Worker       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
5191*a67afe4dSAndroid Build Coastguard Worker      case $nm_interface in
5192*a67afe4dSAndroid Build Coastguard Worker      "MS dumpbin")
5193*a67afe4dSAndroid Build Coastguard Worker	if func_cygming_ms_implib_p "$1" ||
5194*a67afe4dSAndroid Build Coastguard Worker	   func_cygming_gnu_implib_p "$1"
5195*a67afe4dSAndroid Build Coastguard Worker	then
5196*a67afe4dSAndroid Build Coastguard Worker	  win32_nmres=import
5197*a67afe4dSAndroid Build Coastguard Worker	else
5198*a67afe4dSAndroid Build Coastguard Worker	  win32_nmres=
5199*a67afe4dSAndroid Build Coastguard Worker	fi
5200*a67afe4dSAndroid Build Coastguard Worker	;;
5201*a67afe4dSAndroid Build Coastguard Worker      *)
5202*a67afe4dSAndroid Build Coastguard Worker	func_to_tool_file "$1" func_convert_file_msys_to_w32
5203*a67afe4dSAndroid Build Coastguard Worker	win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
5204*a67afe4dSAndroid Build Coastguard Worker	  $SED -n -e '
5205*a67afe4dSAndroid Build Coastguard Worker	    1,100{
5206*a67afe4dSAndroid Build Coastguard Worker		/ I /{
5207*a67afe4dSAndroid Build Coastguard Worker		    s|.*|import|
5208*a67afe4dSAndroid Build Coastguard Worker		    p
5209*a67afe4dSAndroid Build Coastguard Worker		    q
5210*a67afe4dSAndroid Build Coastguard Worker		}
5211*a67afe4dSAndroid Build Coastguard Worker	    }'`
5212*a67afe4dSAndroid Build Coastguard Worker	;;
5213*a67afe4dSAndroid Build Coastguard Worker      esac
5214*a67afe4dSAndroid Build Coastguard Worker      case $win32_nmres in
5215*a67afe4dSAndroid Build Coastguard Worker      import*)  win32_libid_type="x86 archive import";;
5216*a67afe4dSAndroid Build Coastguard Worker      *)        win32_libid_type="x86 archive static";;
5217*a67afe4dSAndroid Build Coastguard Worker      esac
5218*a67afe4dSAndroid Build Coastguard Worker    fi
5219*a67afe4dSAndroid Build Coastguard Worker    ;;
5220*a67afe4dSAndroid Build Coastguard Worker  *DLL*)
5221*a67afe4dSAndroid Build Coastguard Worker    win32_libid_type="x86 DLL"
5222*a67afe4dSAndroid Build Coastguard Worker    ;;
5223*a67afe4dSAndroid Build Coastguard Worker  *executable*) # but shell scripts are "executable" too...
5224*a67afe4dSAndroid Build Coastguard Worker    case $win32_fileres in
5225*a67afe4dSAndroid Build Coastguard Worker    *MS\ Windows\ PE\ Intel*)
5226*a67afe4dSAndroid Build Coastguard Worker      win32_libid_type="x86 DLL"
5227*a67afe4dSAndroid Build Coastguard Worker      ;;
5228*a67afe4dSAndroid Build Coastguard Worker    esac
5229*a67afe4dSAndroid Build Coastguard Worker    ;;
5230*a67afe4dSAndroid Build Coastguard Worker  esac
5231*a67afe4dSAndroid Build Coastguard Worker  $ECHO "$win32_libid_type"
5232*a67afe4dSAndroid Build Coastguard Worker}
5233*a67afe4dSAndroid Build Coastguard Worker
5234*a67afe4dSAndroid Build Coastguard Worker# func_cygming_dll_for_implib ARG
5235*a67afe4dSAndroid Build Coastguard Worker#
5236*a67afe4dSAndroid Build Coastguard Worker# Platform-specific function to extract the
5237*a67afe4dSAndroid Build Coastguard Worker# name of the DLL associated with the specified
5238*a67afe4dSAndroid Build Coastguard Worker# import library ARG.
5239*a67afe4dSAndroid Build Coastguard Worker# Invoked by eval'ing the libtool variable
5240*a67afe4dSAndroid Build Coastguard Worker#    $sharedlib_from_linklib_cmd
5241*a67afe4dSAndroid Build Coastguard Worker# Result is available in the variable
5242*a67afe4dSAndroid Build Coastguard Worker#    $sharedlib_from_linklib_result
5243*a67afe4dSAndroid Build Coastguard Workerfunc_cygming_dll_for_implib ()
5244*a67afe4dSAndroid Build Coastguard Worker{
5245*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
5246*a67afe4dSAndroid Build Coastguard Worker
5247*a67afe4dSAndroid Build Coastguard Worker  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
5248*a67afe4dSAndroid Build Coastguard Worker}
5249*a67afe4dSAndroid Build Coastguard Worker
5250*a67afe4dSAndroid Build Coastguard Worker# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
5251*a67afe4dSAndroid Build Coastguard Worker#
5252*a67afe4dSAndroid Build Coastguard Worker# The is the core of a fallback implementation of a
5253*a67afe4dSAndroid Build Coastguard Worker# platform-specific function to extract the name of the
5254*a67afe4dSAndroid Build Coastguard Worker# DLL associated with the specified import library LIBNAME.
5255*a67afe4dSAndroid Build Coastguard Worker#
5256*a67afe4dSAndroid Build Coastguard Worker# SECTION_NAME is either .idata$6 or .idata$7, depending
5257*a67afe4dSAndroid Build Coastguard Worker# on the platform and compiler that created the implib.
5258*a67afe4dSAndroid Build Coastguard Worker#
5259*a67afe4dSAndroid Build Coastguard Worker# Echos the name of the DLL associated with the
5260*a67afe4dSAndroid Build Coastguard Worker# specified import library.
5261*a67afe4dSAndroid Build Coastguard Workerfunc_cygming_dll_for_implib_fallback_core ()
5262*a67afe4dSAndroid Build Coastguard Worker{
5263*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
5264*a67afe4dSAndroid Build Coastguard Worker
5265*a67afe4dSAndroid Build Coastguard Worker  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
5266*a67afe4dSAndroid Build Coastguard Worker  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
5267*a67afe4dSAndroid Build Coastguard Worker    $SED '/^Contents of section '"$match_literal"':/{
5268*a67afe4dSAndroid Build Coastguard Worker      # Place marker at beginning of archive member dllname section
5269*a67afe4dSAndroid Build Coastguard Worker      s/.*/====MARK====/
5270*a67afe4dSAndroid Build Coastguard Worker      p
5271*a67afe4dSAndroid Build Coastguard Worker      d
5272*a67afe4dSAndroid Build Coastguard Worker    }
5273*a67afe4dSAndroid Build Coastguard Worker    # These lines can sometimes be longer than 43 characters, but
5274*a67afe4dSAndroid Build Coastguard Worker    # are always uninteresting
5275*a67afe4dSAndroid Build Coastguard Worker    /:[	 ]*file format pe[i]\{,1\}-/d
5276*a67afe4dSAndroid Build Coastguard Worker    /^In archive [^:]*:/d
5277*a67afe4dSAndroid Build Coastguard Worker    # Ensure marker is printed
5278*a67afe4dSAndroid Build Coastguard Worker    /^====MARK====/p
5279*a67afe4dSAndroid Build Coastguard Worker    # Remove all lines with less than 43 characters
5280*a67afe4dSAndroid Build Coastguard Worker    /^.\{43\}/!d
5281*a67afe4dSAndroid Build Coastguard Worker    # From remaining lines, remove first 43 characters
5282*a67afe4dSAndroid Build Coastguard Worker    s/^.\{43\}//' |
5283*a67afe4dSAndroid Build Coastguard Worker    $SED -n '
5284*a67afe4dSAndroid Build Coastguard Worker      # Join marker and all lines until next marker into a single line
5285*a67afe4dSAndroid Build Coastguard Worker      /^====MARK====/ b para
5286*a67afe4dSAndroid Build Coastguard Worker      H
5287*a67afe4dSAndroid Build Coastguard Worker      $ b para
5288*a67afe4dSAndroid Build Coastguard Worker      b
5289*a67afe4dSAndroid Build Coastguard Worker      :para
5290*a67afe4dSAndroid Build Coastguard Worker      x
5291*a67afe4dSAndroid Build Coastguard Worker      s/\n//g
5292*a67afe4dSAndroid Build Coastguard Worker      # Remove the marker
5293*a67afe4dSAndroid Build Coastguard Worker      s/^====MARK====//
5294*a67afe4dSAndroid Build Coastguard Worker      # Remove trailing dots and whitespace
5295*a67afe4dSAndroid Build Coastguard Worker      s/[\. \t]*$//
5296*a67afe4dSAndroid Build Coastguard Worker      # Print
5297*a67afe4dSAndroid Build Coastguard Worker      /./p' |
5298*a67afe4dSAndroid Build Coastguard Worker    # we now have a list, one entry per line, of the stringified
5299*a67afe4dSAndroid Build Coastguard Worker    # contents of the appropriate section of all members of the
5300*a67afe4dSAndroid Build Coastguard Worker    # archive that possess that section. Heuristic: eliminate
5301*a67afe4dSAndroid Build Coastguard Worker    # all those that have a first or second character that is
5302*a67afe4dSAndroid Build Coastguard Worker    # a '.' (that is, objdump's representation of an unprintable
5303*a67afe4dSAndroid Build Coastguard Worker    # character.) This should work for all archives with less than
5304*a67afe4dSAndroid Build Coastguard Worker    # 0x302f exports -- but will fail for DLLs whose name actually
5305*a67afe4dSAndroid Build Coastguard Worker    # begins with a literal '.' or a single character followed by
5306*a67afe4dSAndroid Build Coastguard Worker    # a '.'.
5307*a67afe4dSAndroid Build Coastguard Worker    #
5308*a67afe4dSAndroid Build Coastguard Worker    # Of those that remain, print the first one.
5309*a67afe4dSAndroid Build Coastguard Worker    $SED -e '/^\./d;/^.\./d;q'
5310*a67afe4dSAndroid Build Coastguard Worker}
5311*a67afe4dSAndroid Build Coastguard Worker
5312*a67afe4dSAndroid Build Coastguard Worker# func_cygming_dll_for_implib_fallback ARG
5313*a67afe4dSAndroid Build Coastguard Worker# Platform-specific function to extract the
5314*a67afe4dSAndroid Build Coastguard Worker# name of the DLL associated with the specified
5315*a67afe4dSAndroid Build Coastguard Worker# import library ARG.
5316*a67afe4dSAndroid Build Coastguard Worker#
5317*a67afe4dSAndroid Build Coastguard Worker# This fallback implementation is for use when $DLLTOOL
5318*a67afe4dSAndroid Build Coastguard Worker# does not support the --identify-strict option.
5319*a67afe4dSAndroid Build Coastguard Worker# Invoked by eval'ing the libtool variable
5320*a67afe4dSAndroid Build Coastguard Worker#    $sharedlib_from_linklib_cmd
5321*a67afe4dSAndroid Build Coastguard Worker# Result is available in the variable
5322*a67afe4dSAndroid Build Coastguard Worker#    $sharedlib_from_linklib_result
5323*a67afe4dSAndroid Build Coastguard Workerfunc_cygming_dll_for_implib_fallback ()
5324*a67afe4dSAndroid Build Coastguard Worker{
5325*a67afe4dSAndroid Build Coastguard Worker  $debug_cmd
5326*a67afe4dSAndroid Build Coastguard Worker
5327*a67afe4dSAndroid Build Coastguard Worker  if func_cygming_gnu_implib_p "$1"; then
5328*a67afe4dSAndroid Build Coastguard Worker    # binutils import library
5329*a67afe4dSAndroid Build Coastguard Worker    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
5330*a67afe4dSAndroid Build Coastguard Worker  elif func_cygming_ms_implib_p "$1"; then
5331*a67afe4dSAndroid Build Coastguard Worker    # ms-generated import library
5332*a67afe4dSAndroid Build Coastguard Worker    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
5333*a67afe4dSAndroid Build Coastguard Worker  else
5334*a67afe4dSAndroid Build Coastguard Worker    # unknown
5335*a67afe4dSAndroid Build Coastguard Worker    sharedlib_from_linklib_result=
5336*a67afe4dSAndroid Build Coastguard Worker  fi
5337*a67afe4dSAndroid Build Coastguard Worker}
5338*a67afe4dSAndroid Build Coastguard Worker
5339*a67afe4dSAndroid Build Coastguard Worker
5340*a67afe4dSAndroid Build Coastguard Worker# func_extract_an_archive dir oldlib
5341*a67afe4dSAndroid Build Coastguard Workerfunc_extract_an_archive ()
5342*a67afe4dSAndroid Build Coastguard Worker{
5343*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
5344*a67afe4dSAndroid Build Coastguard Worker
5345*a67afe4dSAndroid Build Coastguard Worker    f_ex_an_ar_dir=$1; shift
5346*a67afe4dSAndroid Build Coastguard Worker    f_ex_an_ar_oldlib=$1
5347*a67afe4dSAndroid Build Coastguard Worker    if test yes = "$lock_old_archive_extraction"; then
5348*a67afe4dSAndroid Build Coastguard Worker      lockfile=$f_ex_an_ar_oldlib.lock
5349*a67afe4dSAndroid Build Coastguard Worker      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
5350*a67afe4dSAndroid Build Coastguard Worker	func_echo "Waiting for $lockfile to be removed"
5351*a67afe4dSAndroid Build Coastguard Worker	sleep 2
5352*a67afe4dSAndroid Build Coastguard Worker      done
5353*a67afe4dSAndroid Build Coastguard Worker    fi
5354*a67afe4dSAndroid Build Coastguard Worker    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
5355*a67afe4dSAndroid Build Coastguard Worker		   'stat=$?; rm -f "$lockfile"; exit $stat'
5356*a67afe4dSAndroid Build Coastguard Worker    if test yes = "$lock_old_archive_extraction"; then
5357*a67afe4dSAndroid Build Coastguard Worker      $opt_dry_run || rm -f "$lockfile"
5358*a67afe4dSAndroid Build Coastguard Worker    fi
5359*a67afe4dSAndroid Build Coastguard Worker    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
5360*a67afe4dSAndroid Build Coastguard Worker     :
5361*a67afe4dSAndroid Build Coastguard Worker    else
5362*a67afe4dSAndroid Build Coastguard Worker      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
5363*a67afe4dSAndroid Build Coastguard Worker    fi
5364*a67afe4dSAndroid Build Coastguard Worker}
5365*a67afe4dSAndroid Build Coastguard Worker
5366*a67afe4dSAndroid Build Coastguard Worker
5367*a67afe4dSAndroid Build Coastguard Worker# func_extract_archives gentop oldlib ...
5368*a67afe4dSAndroid Build Coastguard Workerfunc_extract_archives ()
5369*a67afe4dSAndroid Build Coastguard Worker{
5370*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
5371*a67afe4dSAndroid Build Coastguard Worker
5372*a67afe4dSAndroid Build Coastguard Worker    my_gentop=$1; shift
5373*a67afe4dSAndroid Build Coastguard Worker    my_oldlibs=${1+"$@"}
5374*a67afe4dSAndroid Build Coastguard Worker    my_oldobjs=
5375*a67afe4dSAndroid Build Coastguard Worker    my_xlib=
5376*a67afe4dSAndroid Build Coastguard Worker    my_xabs=
5377*a67afe4dSAndroid Build Coastguard Worker    my_xdir=
5378*a67afe4dSAndroid Build Coastguard Worker
5379*a67afe4dSAndroid Build Coastguard Worker    for my_xlib in $my_oldlibs; do
5380*a67afe4dSAndroid Build Coastguard Worker      # Extract the objects.
5381*a67afe4dSAndroid Build Coastguard Worker      case $my_xlib in
5382*a67afe4dSAndroid Build Coastguard Worker	[\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;;
5383*a67afe4dSAndroid Build Coastguard Worker	*) my_xabs=`pwd`"/$my_xlib" ;;
5384*a67afe4dSAndroid Build Coastguard Worker      esac
5385*a67afe4dSAndroid Build Coastguard Worker      func_basename "$my_xlib"
5386*a67afe4dSAndroid Build Coastguard Worker      my_xlib=$func_basename_result
5387*a67afe4dSAndroid Build Coastguard Worker      my_xlib_u=$my_xlib
5388*a67afe4dSAndroid Build Coastguard Worker      while :; do
5389*a67afe4dSAndroid Build Coastguard Worker        case " $extracted_archives " in
5390*a67afe4dSAndroid Build Coastguard Worker	*" $my_xlib_u "*)
5391*a67afe4dSAndroid Build Coastguard Worker	  func_arith $extracted_serial + 1
5392*a67afe4dSAndroid Build Coastguard Worker	  extracted_serial=$func_arith_result
5393*a67afe4dSAndroid Build Coastguard Worker	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
5394*a67afe4dSAndroid Build Coastguard Worker	*) break ;;
5395*a67afe4dSAndroid Build Coastguard Worker	esac
5396*a67afe4dSAndroid Build Coastguard Worker      done
5397*a67afe4dSAndroid Build Coastguard Worker      extracted_archives="$extracted_archives $my_xlib_u"
5398*a67afe4dSAndroid Build Coastguard Worker      my_xdir=$my_gentop/$my_xlib_u
5399*a67afe4dSAndroid Build Coastguard Worker
5400*a67afe4dSAndroid Build Coastguard Worker      func_mkdir_p "$my_xdir"
5401*a67afe4dSAndroid Build Coastguard Worker
5402*a67afe4dSAndroid Build Coastguard Worker      case $host in
5403*a67afe4dSAndroid Build Coastguard Worker      *-darwin*)
5404*a67afe4dSAndroid Build Coastguard Worker	func_verbose "Extracting $my_xabs"
5405*a67afe4dSAndroid Build Coastguard Worker	# Do not bother doing anything if just a dry run
5406*a67afe4dSAndroid Build Coastguard Worker	$opt_dry_run || {
5407*a67afe4dSAndroid Build Coastguard Worker	  darwin_orig_dir=`pwd`
5408*a67afe4dSAndroid Build Coastguard Worker	  cd $my_xdir || exit $?
5409*a67afe4dSAndroid Build Coastguard Worker	  darwin_archive=$my_xabs
5410*a67afe4dSAndroid Build Coastguard Worker	  darwin_curdir=`pwd`
5411*a67afe4dSAndroid Build Coastguard Worker	  func_basename "$darwin_archive"
5412*a67afe4dSAndroid Build Coastguard Worker	  darwin_base_archive=$func_basename_result
5413*a67afe4dSAndroid Build Coastguard Worker	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
5414*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$darwin_arches"; then
5415*a67afe4dSAndroid Build Coastguard Worker	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
5416*a67afe4dSAndroid Build Coastguard Worker	    darwin_arch=
5417*a67afe4dSAndroid Build Coastguard Worker	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
5418*a67afe4dSAndroid Build Coastguard Worker	    for darwin_arch in  $darwin_arches; do
5419*a67afe4dSAndroid Build Coastguard Worker	      func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch"
5420*a67afe4dSAndroid Build Coastguard Worker	      $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive"
5421*a67afe4dSAndroid Build Coastguard Worker	      cd "unfat-$$/$darwin_base_archive-$darwin_arch"
5422*a67afe4dSAndroid Build Coastguard Worker	      func_extract_an_archive "`pwd`" "$darwin_base_archive"
5423*a67afe4dSAndroid Build Coastguard Worker	      cd "$darwin_curdir"
5424*a67afe4dSAndroid Build Coastguard Worker	      $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive"
5425*a67afe4dSAndroid Build Coastguard Worker	    done # $darwin_arches
5426*a67afe4dSAndroid Build Coastguard Worker            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
5427*a67afe4dSAndroid Build Coastguard Worker	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u`
5428*a67afe4dSAndroid Build Coastguard Worker	    darwin_file=
5429*a67afe4dSAndroid Build Coastguard Worker	    darwin_files=
5430*a67afe4dSAndroid Build Coastguard Worker	    for darwin_file in $darwin_filelist; do
5431*a67afe4dSAndroid Build Coastguard Worker	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
5432*a67afe4dSAndroid Build Coastguard Worker	      $LIPO -create -output "$darwin_file" $darwin_files
5433*a67afe4dSAndroid Build Coastguard Worker	    done # $darwin_filelist
5434*a67afe4dSAndroid Build Coastguard Worker	    $RM -rf unfat-$$
5435*a67afe4dSAndroid Build Coastguard Worker	    cd "$darwin_orig_dir"
5436*a67afe4dSAndroid Build Coastguard Worker	  else
5437*a67afe4dSAndroid Build Coastguard Worker	    cd $darwin_orig_dir
5438*a67afe4dSAndroid Build Coastguard Worker	    func_extract_an_archive "$my_xdir" "$my_xabs"
5439*a67afe4dSAndroid Build Coastguard Worker	  fi # $darwin_arches
5440*a67afe4dSAndroid Build Coastguard Worker	} # !$opt_dry_run
5441*a67afe4dSAndroid Build Coastguard Worker	;;
5442*a67afe4dSAndroid Build Coastguard Worker      *)
5443*a67afe4dSAndroid Build Coastguard Worker        func_extract_an_archive "$my_xdir" "$my_xabs"
5444*a67afe4dSAndroid Build Coastguard Worker	;;
5445*a67afe4dSAndroid Build Coastguard Worker      esac
5446*a67afe4dSAndroid Build Coastguard Worker      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
5447*a67afe4dSAndroid Build Coastguard Worker    done
5448*a67afe4dSAndroid Build Coastguard Worker
5449*a67afe4dSAndroid Build Coastguard Worker    func_extract_archives_result=$my_oldobjs
5450*a67afe4dSAndroid Build Coastguard Worker}
5451*a67afe4dSAndroid Build Coastguard Worker
5452*a67afe4dSAndroid Build Coastguard Worker
5453*a67afe4dSAndroid Build Coastguard Worker# func_emit_wrapper [arg=no]
5454*a67afe4dSAndroid Build Coastguard Worker#
5455*a67afe4dSAndroid Build Coastguard Worker# Emit a libtool wrapper script on stdout.
5456*a67afe4dSAndroid Build Coastguard Worker# Don't directly open a file because we may want to
5457*a67afe4dSAndroid Build Coastguard Worker# incorporate the script contents within a cygwin/mingw
5458*a67afe4dSAndroid Build Coastguard Worker# wrapper executable.  Must ONLY be called from within
5459*a67afe4dSAndroid Build Coastguard Worker# func_mode_link because it depends on a number of variables
5460*a67afe4dSAndroid Build Coastguard Worker# set therein.
5461*a67afe4dSAndroid Build Coastguard Worker#
5462*a67afe4dSAndroid Build Coastguard Worker# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
5463*a67afe4dSAndroid Build Coastguard Worker# variable will take.  If 'yes', then the emitted script
5464*a67afe4dSAndroid Build Coastguard Worker# will assume that the directory where it is stored is
5465*a67afe4dSAndroid Build Coastguard Worker# the $objdir directory.  This is a cygwin/mingw-specific
5466*a67afe4dSAndroid Build Coastguard Worker# behavior.
5467*a67afe4dSAndroid Build Coastguard Workerfunc_emit_wrapper ()
5468*a67afe4dSAndroid Build Coastguard Worker{
5469*a67afe4dSAndroid Build Coastguard Worker	func_emit_wrapper_arg1=${1-no}
5470*a67afe4dSAndroid Build Coastguard Worker
5471*a67afe4dSAndroid Build Coastguard Worker	$ECHO "\
5472*a67afe4dSAndroid Build Coastguard Worker#! $SHELL
5473*a67afe4dSAndroid Build Coastguard Worker
5474*a67afe4dSAndroid Build Coastguard Worker# $output - temporary wrapper script for $objdir/$outputname
5475*a67afe4dSAndroid Build Coastguard Worker# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
5476*a67afe4dSAndroid Build Coastguard Worker#
5477*a67afe4dSAndroid Build Coastguard Worker# The $output program cannot be directly executed until all the libtool
5478*a67afe4dSAndroid Build Coastguard Worker# libraries that it depends on are installed.
5479*a67afe4dSAndroid Build Coastguard Worker#
5480*a67afe4dSAndroid Build Coastguard Worker# This wrapper script should never be moved out of the build directory.
5481*a67afe4dSAndroid Build Coastguard Worker# If it is, it will not operate correctly.
5482*a67afe4dSAndroid Build Coastguard Worker
5483*a67afe4dSAndroid Build Coastguard Worker# Sed substitution that helps us do robust quoting.  It backslashifies
5484*a67afe4dSAndroid Build Coastguard Worker# metacharacters that are still active within double-quoted strings.
5485*a67afe4dSAndroid Build Coastguard Workersed_quote_subst='$sed_quote_subst'
5486*a67afe4dSAndroid Build Coastguard Worker
5487*a67afe4dSAndroid Build Coastguard Worker# Be Bourne compatible
5488*a67afe4dSAndroid Build Coastguard Workerif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
5489*a67afe4dSAndroid Build Coastguard Worker  emulate sh
5490*a67afe4dSAndroid Build Coastguard Worker  NULLCMD=:
5491*a67afe4dSAndroid Build Coastguard Worker  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
5492*a67afe4dSAndroid Build Coastguard Worker  # is contrary to our usage.  Disable this feature.
5493*a67afe4dSAndroid Build Coastguard Worker  alias -g '\${1+\"\$@\"}'='\"\$@\"'
5494*a67afe4dSAndroid Build Coastguard Worker  setopt NO_GLOB_SUBST
5495*a67afe4dSAndroid Build Coastguard Workerelse
5496*a67afe4dSAndroid Build Coastguard Worker  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
5497*a67afe4dSAndroid Build Coastguard Workerfi
5498*a67afe4dSAndroid Build Coastguard WorkerBIN_SH=xpg4; export BIN_SH # for Tru64
5499*a67afe4dSAndroid Build Coastguard WorkerDUALCASE=1; export DUALCASE # for MKS sh
5500*a67afe4dSAndroid Build Coastguard Worker
5501*a67afe4dSAndroid Build Coastguard Worker# The HP-UX ksh and POSIX shell print the target directory to stdout
5502*a67afe4dSAndroid Build Coastguard Worker# if CDPATH is set.
5503*a67afe4dSAndroid Build Coastguard Worker(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
5504*a67afe4dSAndroid Build Coastguard Worker
5505*a67afe4dSAndroid Build Coastguard Workerrelink_command=\"$relink_command\"
5506*a67afe4dSAndroid Build Coastguard Worker
5507*a67afe4dSAndroid Build Coastguard Worker# This environment variable determines our operation mode.
5508*a67afe4dSAndroid Build Coastguard Workerif test \"\$libtool_install_magic\" = \"$magic\"; then
5509*a67afe4dSAndroid Build Coastguard Worker  # install mode needs the following variables:
5510*a67afe4dSAndroid Build Coastguard Worker  generated_by_libtool_version='$macro_version'
5511*a67afe4dSAndroid Build Coastguard Worker  notinst_deplibs='$notinst_deplibs'
5512*a67afe4dSAndroid Build Coastguard Workerelse
5513*a67afe4dSAndroid Build Coastguard Worker  # When we are sourced in execute mode, \$file and \$ECHO are already set.
5514*a67afe4dSAndroid Build Coastguard Worker  if test \"\$libtool_execute_magic\" != \"$magic\"; then
5515*a67afe4dSAndroid Build Coastguard Worker    file=\"\$0\""
5516*a67afe4dSAndroid Build Coastguard Worker
5517*a67afe4dSAndroid Build Coastguard Worker    func_quote_arg pretty "$ECHO"
5518*a67afe4dSAndroid Build Coastguard Worker    qECHO=$func_quote_arg_result
5519*a67afe4dSAndroid Build Coastguard Worker    $ECHO "\
5520*a67afe4dSAndroid Build Coastguard Worker
5521*a67afe4dSAndroid Build Coastguard Worker# A function that is used when there is no print builtin or printf.
5522*a67afe4dSAndroid Build Coastguard Workerfunc_fallback_echo ()
5523*a67afe4dSAndroid Build Coastguard Worker{
5524*a67afe4dSAndroid Build Coastguard Worker  eval 'cat <<_LTECHO_EOF
5525*a67afe4dSAndroid Build Coastguard Worker\$1
5526*a67afe4dSAndroid Build Coastguard Worker_LTECHO_EOF'
5527*a67afe4dSAndroid Build Coastguard Worker}
5528*a67afe4dSAndroid Build Coastguard Worker    ECHO=$qECHO
5529*a67afe4dSAndroid Build Coastguard Worker  fi
5530*a67afe4dSAndroid Build Coastguard Worker
5531*a67afe4dSAndroid Build Coastguard Worker# Very basic option parsing. These options are (a) specific to
5532*a67afe4dSAndroid Build Coastguard Worker# the libtool wrapper, (b) are identical between the wrapper
5533*a67afe4dSAndroid Build Coastguard Worker# /script/ and the wrapper /executable/ that is used only on
5534*a67afe4dSAndroid Build Coastguard Worker# windows platforms, and (c) all begin with the string "--lt-"
5535*a67afe4dSAndroid Build Coastguard Worker# (application programs are unlikely to have options that match
5536*a67afe4dSAndroid Build Coastguard Worker# this pattern).
5537*a67afe4dSAndroid Build Coastguard Worker#
5538*a67afe4dSAndroid Build Coastguard Worker# There are only two supported options: --lt-debug and
5539*a67afe4dSAndroid Build Coastguard Worker# --lt-dump-script. There is, deliberately, no --lt-help.
5540*a67afe4dSAndroid Build Coastguard Worker#
5541*a67afe4dSAndroid Build Coastguard Worker# The first argument to this parsing function should be the
5542*a67afe4dSAndroid Build Coastguard Worker# script's $0 value, followed by "$@".
5543*a67afe4dSAndroid Build Coastguard Workerlt_option_debug=
5544*a67afe4dSAndroid Build Coastguard Workerfunc_parse_lt_options ()
5545*a67afe4dSAndroid Build Coastguard Worker{
5546*a67afe4dSAndroid Build Coastguard Worker  lt_script_arg0=\$0
5547*a67afe4dSAndroid Build Coastguard Worker  shift
5548*a67afe4dSAndroid Build Coastguard Worker  for lt_opt
5549*a67afe4dSAndroid Build Coastguard Worker  do
5550*a67afe4dSAndroid Build Coastguard Worker    case \"\$lt_opt\" in
5551*a67afe4dSAndroid Build Coastguard Worker    --lt-debug) lt_option_debug=1 ;;
5552*a67afe4dSAndroid Build Coastguard Worker    --lt-dump-script)
5553*a67afe4dSAndroid Build Coastguard Worker        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
5554*a67afe4dSAndroid Build Coastguard Worker        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
5555*a67afe4dSAndroid Build Coastguard Worker        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
5556*a67afe4dSAndroid Build Coastguard Worker        cat \"\$lt_dump_D/\$lt_dump_F\"
5557*a67afe4dSAndroid Build Coastguard Worker        exit 0
5558*a67afe4dSAndroid Build Coastguard Worker      ;;
5559*a67afe4dSAndroid Build Coastguard Worker    --lt-*)
5560*a67afe4dSAndroid Build Coastguard Worker        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
5561*a67afe4dSAndroid Build Coastguard Worker        exit 1
5562*a67afe4dSAndroid Build Coastguard Worker      ;;
5563*a67afe4dSAndroid Build Coastguard Worker    esac
5564*a67afe4dSAndroid Build Coastguard Worker  done
5565*a67afe4dSAndroid Build Coastguard Worker
5566*a67afe4dSAndroid Build Coastguard Worker  # Print the debug banner immediately:
5567*a67afe4dSAndroid Build Coastguard Worker  if test -n \"\$lt_option_debug\"; then
5568*a67afe4dSAndroid Build Coastguard Worker    echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2
5569*a67afe4dSAndroid Build Coastguard Worker  fi
5570*a67afe4dSAndroid Build Coastguard Worker}
5571*a67afe4dSAndroid Build Coastguard Worker
5572*a67afe4dSAndroid Build Coastguard Worker# Used when --lt-debug. Prints its arguments to stdout
5573*a67afe4dSAndroid Build Coastguard Worker# (redirection is the responsibility of the caller)
5574*a67afe4dSAndroid Build Coastguard Workerfunc_lt_dump_args ()
5575*a67afe4dSAndroid Build Coastguard Worker{
5576*a67afe4dSAndroid Build Coastguard Worker  lt_dump_args_N=1;
5577*a67afe4dSAndroid Build Coastguard Worker  for lt_arg
5578*a67afe4dSAndroid Build Coastguard Worker  do
5579*a67afe4dSAndroid Build Coastguard Worker    \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\"
5580*a67afe4dSAndroid Build Coastguard Worker    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
5581*a67afe4dSAndroid Build Coastguard Worker  done
5582*a67afe4dSAndroid Build Coastguard Worker}
5583*a67afe4dSAndroid Build Coastguard Worker
5584*a67afe4dSAndroid Build Coastguard Worker# Core function for launching the target application
5585*a67afe4dSAndroid Build Coastguard Workerfunc_exec_program_core ()
5586*a67afe4dSAndroid Build Coastguard Worker{
5587*a67afe4dSAndroid Build Coastguard Worker"
5588*a67afe4dSAndroid Build Coastguard Worker  case $host in
5589*a67afe4dSAndroid Build Coastguard Worker  # Backslashes separate directories on plain windows
5590*a67afe4dSAndroid Build Coastguard Worker  *-*-mingw | *-*-os2* | *-cegcc*)
5591*a67afe4dSAndroid Build Coastguard Worker    $ECHO "\
5592*a67afe4dSAndroid Build Coastguard Worker      if test -n \"\$lt_option_debug\"; then
5593*a67afe4dSAndroid Build Coastguard Worker        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
5594*a67afe4dSAndroid Build Coastguard Worker        func_lt_dump_args \${1+\"\$@\"} 1>&2
5595*a67afe4dSAndroid Build Coastguard Worker      fi
5596*a67afe4dSAndroid Build Coastguard Worker      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
5597*a67afe4dSAndroid Build Coastguard Worker"
5598*a67afe4dSAndroid Build Coastguard Worker    ;;
5599*a67afe4dSAndroid Build Coastguard Worker
5600*a67afe4dSAndroid Build Coastguard Worker  *)
5601*a67afe4dSAndroid Build Coastguard Worker    $ECHO "\
5602*a67afe4dSAndroid Build Coastguard Worker      if test -n \"\$lt_option_debug\"; then
5603*a67afe4dSAndroid Build Coastguard Worker        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2
5604*a67afe4dSAndroid Build Coastguard Worker        func_lt_dump_args \${1+\"\$@\"} 1>&2
5605*a67afe4dSAndroid Build Coastguard Worker      fi
5606*a67afe4dSAndroid Build Coastguard Worker      exec \"\$progdir/\$program\" \${1+\"\$@\"}
5607*a67afe4dSAndroid Build Coastguard Worker"
5608*a67afe4dSAndroid Build Coastguard Worker    ;;
5609*a67afe4dSAndroid Build Coastguard Worker  esac
5610*a67afe4dSAndroid Build Coastguard Worker  $ECHO "\
5611*a67afe4dSAndroid Build Coastguard Worker      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
5612*a67afe4dSAndroid Build Coastguard Worker      exit 1
5613*a67afe4dSAndroid Build Coastguard Worker}
5614*a67afe4dSAndroid Build Coastguard Worker
5615*a67afe4dSAndroid Build Coastguard Worker# A function to encapsulate launching the target application
5616*a67afe4dSAndroid Build Coastguard Worker# Strips options in the --lt-* namespace from \$@ and
5617*a67afe4dSAndroid Build Coastguard Worker# launches target application with the remaining arguments.
5618*a67afe4dSAndroid Build Coastguard Workerfunc_exec_program ()
5619*a67afe4dSAndroid Build Coastguard Worker{
5620*a67afe4dSAndroid Build Coastguard Worker  case \" \$* \" in
5621*a67afe4dSAndroid Build Coastguard Worker  *\\ --lt-*)
5622*a67afe4dSAndroid Build Coastguard Worker    for lt_wr_arg
5623*a67afe4dSAndroid Build Coastguard Worker    do
5624*a67afe4dSAndroid Build Coastguard Worker      case \$lt_wr_arg in
5625*a67afe4dSAndroid Build Coastguard Worker      --lt-*) ;;
5626*a67afe4dSAndroid Build Coastguard Worker      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
5627*a67afe4dSAndroid Build Coastguard Worker      esac
5628*a67afe4dSAndroid Build Coastguard Worker      shift
5629*a67afe4dSAndroid Build Coastguard Worker    done ;;
5630*a67afe4dSAndroid Build Coastguard Worker  esac
5631*a67afe4dSAndroid Build Coastguard Worker  func_exec_program_core \${1+\"\$@\"}
5632*a67afe4dSAndroid Build Coastguard Worker}
5633*a67afe4dSAndroid Build Coastguard Worker
5634*a67afe4dSAndroid Build Coastguard Worker  # Parse options
5635*a67afe4dSAndroid Build Coastguard Worker  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
5636*a67afe4dSAndroid Build Coastguard Worker
5637*a67afe4dSAndroid Build Coastguard Worker  # Find the directory that this script lives in.
5638*a67afe4dSAndroid Build Coastguard Worker  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
5639*a67afe4dSAndroid Build Coastguard Worker  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
5640*a67afe4dSAndroid Build Coastguard Worker
5641*a67afe4dSAndroid Build Coastguard Worker  # Follow symbolic links until we get to the real thisdir.
5642*a67afe4dSAndroid Build Coastguard Worker  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
5643*a67afe4dSAndroid Build Coastguard Worker  while test -n \"\$file\"; do
5644*a67afe4dSAndroid Build Coastguard Worker    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
5645*a67afe4dSAndroid Build Coastguard Worker
5646*a67afe4dSAndroid Build Coastguard Worker    # If there was a directory component, then change thisdir.
5647*a67afe4dSAndroid Build Coastguard Worker    if test \"x\$destdir\" != \"x\$file\"; then
5648*a67afe4dSAndroid Build Coastguard Worker      case \"\$destdir\" in
5649*a67afe4dSAndroid Build Coastguard Worker      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
5650*a67afe4dSAndroid Build Coastguard Worker      *) thisdir=\"\$thisdir/\$destdir\" ;;
5651*a67afe4dSAndroid Build Coastguard Worker      esac
5652*a67afe4dSAndroid Build Coastguard Worker    fi
5653*a67afe4dSAndroid Build Coastguard Worker
5654*a67afe4dSAndroid Build Coastguard Worker    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
5655*a67afe4dSAndroid Build Coastguard Worker    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
5656*a67afe4dSAndroid Build Coastguard Worker  done
5657*a67afe4dSAndroid Build Coastguard Worker
5658*a67afe4dSAndroid Build Coastguard Worker  # Usually 'no', except on cygwin/mingw when embedded into
5659*a67afe4dSAndroid Build Coastguard Worker  # the cwrapper.
5660*a67afe4dSAndroid Build Coastguard Worker  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
5661*a67afe4dSAndroid Build Coastguard Worker  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
5662*a67afe4dSAndroid Build Coastguard Worker    # special case for '.'
5663*a67afe4dSAndroid Build Coastguard Worker    if test \"\$thisdir\" = \".\"; then
5664*a67afe4dSAndroid Build Coastguard Worker      thisdir=\`pwd\`
5665*a67afe4dSAndroid Build Coastguard Worker    fi
5666*a67afe4dSAndroid Build Coastguard Worker    # remove .libs from thisdir
5667*a67afe4dSAndroid Build Coastguard Worker    case \"\$thisdir\" in
5668*a67afe4dSAndroid Build Coastguard Worker    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
5669*a67afe4dSAndroid Build Coastguard Worker    $objdir )   thisdir=. ;;
5670*a67afe4dSAndroid Build Coastguard Worker    esac
5671*a67afe4dSAndroid Build Coastguard Worker  fi
5672*a67afe4dSAndroid Build Coastguard Worker
5673*a67afe4dSAndroid Build Coastguard Worker  # Try to get the absolute directory name.
5674*a67afe4dSAndroid Build Coastguard Worker  absdir=\`cd \"\$thisdir\" && pwd\`
5675*a67afe4dSAndroid Build Coastguard Worker  test -n \"\$absdir\" && thisdir=\"\$absdir\"
5676*a67afe4dSAndroid Build Coastguard Worker"
5677*a67afe4dSAndroid Build Coastguard Worker
5678*a67afe4dSAndroid Build Coastguard Worker	if test yes = "$fast_install"; then
5679*a67afe4dSAndroid Build Coastguard Worker	  $ECHO "\
5680*a67afe4dSAndroid Build Coastguard Worker  program=lt-'$outputname'$exeext
5681*a67afe4dSAndroid Build Coastguard Worker  progdir=\"\$thisdir/$objdir\"
5682*a67afe4dSAndroid Build Coastguard Worker
5683*a67afe4dSAndroid Build Coastguard Worker  if test ! -f \"\$progdir/\$program\" ||
5684*a67afe4dSAndroid Build Coastguard Worker     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\
5685*a67afe4dSAndroid Build Coastguard Worker       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
5686*a67afe4dSAndroid Build Coastguard Worker
5687*a67afe4dSAndroid Build Coastguard Worker    file=\"\$\$-\$program\"
5688*a67afe4dSAndroid Build Coastguard Worker
5689*a67afe4dSAndroid Build Coastguard Worker    if test ! -d \"\$progdir\"; then
5690*a67afe4dSAndroid Build Coastguard Worker      $MKDIR \"\$progdir\"
5691*a67afe4dSAndroid Build Coastguard Worker    else
5692*a67afe4dSAndroid Build Coastguard Worker      $RM \"\$progdir/\$file\"
5693*a67afe4dSAndroid Build Coastguard Worker    fi"
5694*a67afe4dSAndroid Build Coastguard Worker
5695*a67afe4dSAndroid Build Coastguard Worker	  $ECHO "\
5696*a67afe4dSAndroid Build Coastguard Worker
5697*a67afe4dSAndroid Build Coastguard Worker    # relink executable if necessary
5698*a67afe4dSAndroid Build Coastguard Worker    if test -n \"\$relink_command\"; then
5699*a67afe4dSAndroid Build Coastguard Worker      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
5700*a67afe4dSAndroid Build Coastguard Worker      else
5701*a67afe4dSAndroid Build Coastguard Worker	\$ECHO \"\$relink_command_output\" >&2
5702*a67afe4dSAndroid Build Coastguard Worker	$RM \"\$progdir/\$file\"
5703*a67afe4dSAndroid Build Coastguard Worker	exit 1
5704*a67afe4dSAndroid Build Coastguard Worker      fi
5705*a67afe4dSAndroid Build Coastguard Worker    fi
5706*a67afe4dSAndroid Build Coastguard Worker
5707*a67afe4dSAndroid Build Coastguard Worker    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
5708*a67afe4dSAndroid Build Coastguard Worker    { $RM \"\$progdir/\$program\";
5709*a67afe4dSAndroid Build Coastguard Worker      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
5710*a67afe4dSAndroid Build Coastguard Worker    $RM \"\$progdir/\$file\"
5711*a67afe4dSAndroid Build Coastguard Worker  fi"
5712*a67afe4dSAndroid Build Coastguard Worker	else
5713*a67afe4dSAndroid Build Coastguard Worker	  $ECHO "\
5714*a67afe4dSAndroid Build Coastguard Worker  program='$outputname'
5715*a67afe4dSAndroid Build Coastguard Worker  progdir=\"\$thisdir/$objdir\"
5716*a67afe4dSAndroid Build Coastguard Worker"
5717*a67afe4dSAndroid Build Coastguard Worker	fi
5718*a67afe4dSAndroid Build Coastguard Worker
5719*a67afe4dSAndroid Build Coastguard Worker	$ECHO "\
5720*a67afe4dSAndroid Build Coastguard Worker
5721*a67afe4dSAndroid Build Coastguard Worker  if test -f \"\$progdir/\$program\"; then"
5722*a67afe4dSAndroid Build Coastguard Worker
5723*a67afe4dSAndroid Build Coastguard Worker	# fixup the dll searchpath if we need to.
5724*a67afe4dSAndroid Build Coastguard Worker	#
5725*a67afe4dSAndroid Build Coastguard Worker	# Fix the DLL searchpath if we need to.  Do this before prepending
5726*a67afe4dSAndroid Build Coastguard Worker	# to shlibpath, because on Windows, both are PATH and uninstalled
5727*a67afe4dSAndroid Build Coastguard Worker	# libraries must come first.
5728*a67afe4dSAndroid Build Coastguard Worker	if test -n "$dllsearchpath"; then
5729*a67afe4dSAndroid Build Coastguard Worker	  $ECHO "\
5730*a67afe4dSAndroid Build Coastguard Worker    # Add the dll search path components to the executable PATH
5731*a67afe4dSAndroid Build Coastguard Worker    PATH=$dllsearchpath:\$PATH
5732*a67afe4dSAndroid Build Coastguard Worker"
5733*a67afe4dSAndroid Build Coastguard Worker	fi
5734*a67afe4dSAndroid Build Coastguard Worker
5735*a67afe4dSAndroid Build Coastguard Worker	# Export our shlibpath_var if we have one.
5736*a67afe4dSAndroid Build Coastguard Worker	if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
5737*a67afe4dSAndroid Build Coastguard Worker	  $ECHO "\
5738*a67afe4dSAndroid Build Coastguard Worker    # Add our own library path to $shlibpath_var
5739*a67afe4dSAndroid Build Coastguard Worker    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
5740*a67afe4dSAndroid Build Coastguard Worker
5741*a67afe4dSAndroid Build Coastguard Worker    # Some systems cannot cope with colon-terminated $shlibpath_var
5742*a67afe4dSAndroid Build Coastguard Worker    # The second colon is a workaround for a bug in BeOS R4 sed
5743*a67afe4dSAndroid Build Coastguard Worker    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
5744*a67afe4dSAndroid Build Coastguard Worker
5745*a67afe4dSAndroid Build Coastguard Worker    export $shlibpath_var
5746*a67afe4dSAndroid Build Coastguard Worker"
5747*a67afe4dSAndroid Build Coastguard Worker	fi
5748*a67afe4dSAndroid Build Coastguard Worker
5749*a67afe4dSAndroid Build Coastguard Worker	$ECHO "\
5750*a67afe4dSAndroid Build Coastguard Worker    if test \"\$libtool_execute_magic\" != \"$magic\"; then
5751*a67afe4dSAndroid Build Coastguard Worker      # Run the actual program with our arguments.
5752*a67afe4dSAndroid Build Coastguard Worker      func_exec_program \${1+\"\$@\"}
5753*a67afe4dSAndroid Build Coastguard Worker    fi
5754*a67afe4dSAndroid Build Coastguard Worker  else
5755*a67afe4dSAndroid Build Coastguard Worker    # The program doesn't exist.
5756*a67afe4dSAndroid Build Coastguard Worker    \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2
5757*a67afe4dSAndroid Build Coastguard Worker    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
5758*a67afe4dSAndroid Build Coastguard Worker    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
5759*a67afe4dSAndroid Build Coastguard Worker    exit 1
5760*a67afe4dSAndroid Build Coastguard Worker  fi
5761*a67afe4dSAndroid Build Coastguard Workerfi\
5762*a67afe4dSAndroid Build Coastguard Worker"
5763*a67afe4dSAndroid Build Coastguard Worker}
5764*a67afe4dSAndroid Build Coastguard Worker
5765*a67afe4dSAndroid Build Coastguard Worker
5766*a67afe4dSAndroid Build Coastguard Worker# func_emit_cwrapperexe_src
5767*a67afe4dSAndroid Build Coastguard Worker# emit the source code for a wrapper executable on stdout
5768*a67afe4dSAndroid Build Coastguard Worker# Must ONLY be called from within func_mode_link because
5769*a67afe4dSAndroid Build Coastguard Worker# it depends on a number of variable set therein.
5770*a67afe4dSAndroid Build Coastguard Workerfunc_emit_cwrapperexe_src ()
5771*a67afe4dSAndroid Build Coastguard Worker{
5772*a67afe4dSAndroid Build Coastguard Worker	cat <<EOF
5773*a67afe4dSAndroid Build Coastguard Worker
5774*a67afe4dSAndroid Build Coastguard Worker/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
5775*a67afe4dSAndroid Build Coastguard Worker   Generated by $PROGRAM (GNU $PACKAGE) $VERSION
5776*a67afe4dSAndroid Build Coastguard Worker
5777*a67afe4dSAndroid Build Coastguard Worker   The $output program cannot be directly executed until all the libtool
5778*a67afe4dSAndroid Build Coastguard Worker   libraries that it depends on are installed.
5779*a67afe4dSAndroid Build Coastguard Worker
5780*a67afe4dSAndroid Build Coastguard Worker   This wrapper executable should never be moved out of the build directory.
5781*a67afe4dSAndroid Build Coastguard Worker   If it is, it will not operate correctly.
5782*a67afe4dSAndroid Build Coastguard Worker*/
5783*a67afe4dSAndroid Build Coastguard WorkerEOF
5784*a67afe4dSAndroid Build Coastguard Worker	    cat <<"EOF"
5785*a67afe4dSAndroid Build Coastguard Worker#ifdef _MSC_VER
5786*a67afe4dSAndroid Build Coastguard Worker# define _CRT_SECURE_NO_DEPRECATE 1
5787*a67afe4dSAndroid Build Coastguard Worker#endif
5788*a67afe4dSAndroid Build Coastguard Worker#include <stdio.h>
5789*a67afe4dSAndroid Build Coastguard Worker#include <stdlib.h>
5790*a67afe4dSAndroid Build Coastguard Worker#ifdef _MSC_VER
5791*a67afe4dSAndroid Build Coastguard Worker# include <direct.h>
5792*a67afe4dSAndroid Build Coastguard Worker# include <process.h>
5793*a67afe4dSAndroid Build Coastguard Worker# include <io.h>
5794*a67afe4dSAndroid Build Coastguard Worker#else
5795*a67afe4dSAndroid Build Coastguard Worker# include <unistd.h>
5796*a67afe4dSAndroid Build Coastguard Worker# include <stdint.h>
5797*a67afe4dSAndroid Build Coastguard Worker# ifdef __CYGWIN__
5798*a67afe4dSAndroid Build Coastguard Worker#  include <io.h>
5799*a67afe4dSAndroid Build Coastguard Worker# endif
5800*a67afe4dSAndroid Build Coastguard Worker#endif
5801*a67afe4dSAndroid Build Coastguard Worker#include <malloc.h>
5802*a67afe4dSAndroid Build Coastguard Worker#include <stdarg.h>
5803*a67afe4dSAndroid Build Coastguard Worker#include <assert.h>
5804*a67afe4dSAndroid Build Coastguard Worker#include <string.h>
5805*a67afe4dSAndroid Build Coastguard Worker#include <ctype.h>
5806*a67afe4dSAndroid Build Coastguard Worker#include <errno.h>
5807*a67afe4dSAndroid Build Coastguard Worker#include <fcntl.h>
5808*a67afe4dSAndroid Build Coastguard Worker#include <sys/stat.h>
5809*a67afe4dSAndroid Build Coastguard Worker
5810*a67afe4dSAndroid Build Coastguard Worker#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
5811*a67afe4dSAndroid Build Coastguard Worker
5812*a67afe4dSAndroid Build Coastguard Worker/* declarations of non-ANSI functions */
5813*a67afe4dSAndroid Build Coastguard Worker#if defined __MINGW32__
5814*a67afe4dSAndroid Build Coastguard Worker# ifdef __STRICT_ANSI__
5815*a67afe4dSAndroid Build Coastguard Workerint _putenv (const char *);
5816*a67afe4dSAndroid Build Coastguard Worker# endif
5817*a67afe4dSAndroid Build Coastguard Worker#elif defined __CYGWIN__
5818*a67afe4dSAndroid Build Coastguard Worker# ifdef __STRICT_ANSI__
5819*a67afe4dSAndroid Build Coastguard Workerchar *realpath (const char *, char *);
5820*a67afe4dSAndroid Build Coastguard Workerint putenv (char *);
5821*a67afe4dSAndroid Build Coastguard Workerint setenv (const char *, const char *, int);
5822*a67afe4dSAndroid Build Coastguard Worker# endif
5823*a67afe4dSAndroid Build Coastguard Worker/* #elif defined other_platform || defined ... */
5824*a67afe4dSAndroid Build Coastguard Worker#endif
5825*a67afe4dSAndroid Build Coastguard Worker
5826*a67afe4dSAndroid Build Coastguard Worker/* portability defines, excluding path handling macros */
5827*a67afe4dSAndroid Build Coastguard Worker#if defined _MSC_VER
5828*a67afe4dSAndroid Build Coastguard Worker# define setmode _setmode
5829*a67afe4dSAndroid Build Coastguard Worker# define stat    _stat
5830*a67afe4dSAndroid Build Coastguard Worker# define chmod   _chmod
5831*a67afe4dSAndroid Build Coastguard Worker# define getcwd  _getcwd
5832*a67afe4dSAndroid Build Coastguard Worker# define putenv  _putenv
5833*a67afe4dSAndroid Build Coastguard Worker# define S_IXUSR _S_IEXEC
5834*a67afe4dSAndroid Build Coastguard Worker#elif defined __MINGW32__
5835*a67afe4dSAndroid Build Coastguard Worker# define setmode _setmode
5836*a67afe4dSAndroid Build Coastguard Worker# define stat    _stat
5837*a67afe4dSAndroid Build Coastguard Worker# define chmod   _chmod
5838*a67afe4dSAndroid Build Coastguard Worker# define getcwd  _getcwd
5839*a67afe4dSAndroid Build Coastguard Worker# define putenv  _putenv
5840*a67afe4dSAndroid Build Coastguard Worker#elif defined __CYGWIN__
5841*a67afe4dSAndroid Build Coastguard Worker# define HAVE_SETENV
5842*a67afe4dSAndroid Build Coastguard Worker# define FOPEN_WB "wb"
5843*a67afe4dSAndroid Build Coastguard Worker/* #elif defined other platforms ... */
5844*a67afe4dSAndroid Build Coastguard Worker#endif
5845*a67afe4dSAndroid Build Coastguard Worker
5846*a67afe4dSAndroid Build Coastguard Worker#if defined PATH_MAX
5847*a67afe4dSAndroid Build Coastguard Worker# define LT_PATHMAX PATH_MAX
5848*a67afe4dSAndroid Build Coastguard Worker#elif defined MAXPATHLEN
5849*a67afe4dSAndroid Build Coastguard Worker# define LT_PATHMAX MAXPATHLEN
5850*a67afe4dSAndroid Build Coastguard Worker#else
5851*a67afe4dSAndroid Build Coastguard Worker# define LT_PATHMAX 1024
5852*a67afe4dSAndroid Build Coastguard Worker#endif
5853*a67afe4dSAndroid Build Coastguard Worker
5854*a67afe4dSAndroid Build Coastguard Worker#ifndef S_IXOTH
5855*a67afe4dSAndroid Build Coastguard Worker# define S_IXOTH 0
5856*a67afe4dSAndroid Build Coastguard Worker#endif
5857*a67afe4dSAndroid Build Coastguard Worker#ifndef S_IXGRP
5858*a67afe4dSAndroid Build Coastguard Worker# define S_IXGRP 0
5859*a67afe4dSAndroid Build Coastguard Worker#endif
5860*a67afe4dSAndroid Build Coastguard Worker
5861*a67afe4dSAndroid Build Coastguard Worker/* path handling portability macros */
5862*a67afe4dSAndroid Build Coastguard Worker#ifndef DIR_SEPARATOR
5863*a67afe4dSAndroid Build Coastguard Worker# define DIR_SEPARATOR '/'
5864*a67afe4dSAndroid Build Coastguard Worker# define PATH_SEPARATOR ':'
5865*a67afe4dSAndroid Build Coastguard Worker#endif
5866*a67afe4dSAndroid Build Coastguard Worker
5867*a67afe4dSAndroid Build Coastguard Worker#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \
5868*a67afe4dSAndroid Build Coastguard Worker  defined __OS2__
5869*a67afe4dSAndroid Build Coastguard Worker# define HAVE_DOS_BASED_FILE_SYSTEM
5870*a67afe4dSAndroid Build Coastguard Worker# define FOPEN_WB "wb"
5871*a67afe4dSAndroid Build Coastguard Worker# ifndef DIR_SEPARATOR_2
5872*a67afe4dSAndroid Build Coastguard Worker#  define DIR_SEPARATOR_2 '\\'
5873*a67afe4dSAndroid Build Coastguard Worker# endif
5874*a67afe4dSAndroid Build Coastguard Worker# ifndef PATH_SEPARATOR_2
5875*a67afe4dSAndroid Build Coastguard Worker#  define PATH_SEPARATOR_2 ';'
5876*a67afe4dSAndroid Build Coastguard Worker# endif
5877*a67afe4dSAndroid Build Coastguard Worker#endif
5878*a67afe4dSAndroid Build Coastguard Worker
5879*a67afe4dSAndroid Build Coastguard Worker#ifndef DIR_SEPARATOR_2
5880*a67afe4dSAndroid Build Coastguard Worker# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
5881*a67afe4dSAndroid Build Coastguard Worker#else /* DIR_SEPARATOR_2 */
5882*a67afe4dSAndroid Build Coastguard Worker# define IS_DIR_SEPARATOR(ch) \
5883*a67afe4dSAndroid Build Coastguard Worker	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
5884*a67afe4dSAndroid Build Coastguard Worker#endif /* DIR_SEPARATOR_2 */
5885*a67afe4dSAndroid Build Coastguard Worker
5886*a67afe4dSAndroid Build Coastguard Worker#ifndef PATH_SEPARATOR_2
5887*a67afe4dSAndroid Build Coastguard Worker# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
5888*a67afe4dSAndroid Build Coastguard Worker#else /* PATH_SEPARATOR_2 */
5889*a67afe4dSAndroid Build Coastguard Worker# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
5890*a67afe4dSAndroid Build Coastguard Worker#endif /* PATH_SEPARATOR_2 */
5891*a67afe4dSAndroid Build Coastguard Worker
5892*a67afe4dSAndroid Build Coastguard Worker#ifndef FOPEN_WB
5893*a67afe4dSAndroid Build Coastguard Worker# define FOPEN_WB "w"
5894*a67afe4dSAndroid Build Coastguard Worker#endif
5895*a67afe4dSAndroid Build Coastguard Worker#ifndef _O_BINARY
5896*a67afe4dSAndroid Build Coastguard Worker# define _O_BINARY 0
5897*a67afe4dSAndroid Build Coastguard Worker#endif
5898*a67afe4dSAndroid Build Coastguard Worker
5899*a67afe4dSAndroid Build Coastguard Worker#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
5900*a67afe4dSAndroid Build Coastguard Worker#define XFREE(stale) do { \
5901*a67afe4dSAndroid Build Coastguard Worker  if (stale) { free (stale); stale = 0; } \
5902*a67afe4dSAndroid Build Coastguard Worker} while (0)
5903*a67afe4dSAndroid Build Coastguard Worker
5904*a67afe4dSAndroid Build Coastguard Worker#if defined LT_DEBUGWRAPPER
5905*a67afe4dSAndroid Build Coastguard Workerstatic int lt_debug = 1;
5906*a67afe4dSAndroid Build Coastguard Worker#else
5907*a67afe4dSAndroid Build Coastguard Workerstatic int lt_debug = 0;
5908*a67afe4dSAndroid Build Coastguard Worker#endif
5909*a67afe4dSAndroid Build Coastguard Worker
5910*a67afe4dSAndroid Build Coastguard Workerconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
5911*a67afe4dSAndroid Build Coastguard Worker
5912*a67afe4dSAndroid Build Coastguard Workervoid *xmalloc (size_t num);
5913*a67afe4dSAndroid Build Coastguard Workerchar *xstrdup (const char *string);
5914*a67afe4dSAndroid Build Coastguard Workerconst char *base_name (const char *name);
5915*a67afe4dSAndroid Build Coastguard Workerchar *find_executable (const char *wrapper);
5916*a67afe4dSAndroid Build Coastguard Workerchar *chase_symlinks (const char *pathspec);
5917*a67afe4dSAndroid Build Coastguard Workerint make_executable (const char *path);
5918*a67afe4dSAndroid Build Coastguard Workerint check_executable (const char *path);
5919*a67afe4dSAndroid Build Coastguard Workerchar *strendzap (char *str, const char *pat);
5920*a67afe4dSAndroid Build Coastguard Workervoid lt_debugprintf (const char *file, int line, const char *fmt, ...);
5921*a67afe4dSAndroid Build Coastguard Workervoid lt_fatal (const char *file, int line, const char *message, ...);
5922*a67afe4dSAndroid Build Coastguard Workerstatic const char *nonnull (const char *s);
5923*a67afe4dSAndroid Build Coastguard Workerstatic const char *nonempty (const char *s);
5924*a67afe4dSAndroid Build Coastguard Workervoid lt_setenv (const char *name, const char *value);
5925*a67afe4dSAndroid Build Coastguard Workerchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
5926*a67afe4dSAndroid Build Coastguard Workervoid lt_update_exe_path (const char *name, const char *value);
5927*a67afe4dSAndroid Build Coastguard Workervoid lt_update_lib_path (const char *name, const char *value);
5928*a67afe4dSAndroid Build Coastguard Workerchar **prepare_spawn (char **argv);
5929*a67afe4dSAndroid Build Coastguard Workervoid lt_dump_script (FILE *f);
5930*a67afe4dSAndroid Build Coastguard WorkerEOF
5931*a67afe4dSAndroid Build Coastguard Worker
5932*a67afe4dSAndroid Build Coastguard Worker	    cat <<EOF
5933*a67afe4dSAndroid Build Coastguard Worker#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
5934*a67afe4dSAndroid Build Coastguard Worker# define externally_visible volatile
5935*a67afe4dSAndroid Build Coastguard Worker#else
5936*a67afe4dSAndroid Build Coastguard Worker# define externally_visible __attribute__((externally_visible)) volatile
5937*a67afe4dSAndroid Build Coastguard Worker#endif
5938*a67afe4dSAndroid Build Coastguard Workerexternally_visible const char * MAGIC_EXE = "$magic_exe";
5939*a67afe4dSAndroid Build Coastguard Workerconst char * LIB_PATH_VARNAME = "$shlibpath_var";
5940*a67afe4dSAndroid Build Coastguard WorkerEOF
5941*a67afe4dSAndroid Build Coastguard Worker
5942*a67afe4dSAndroid Build Coastguard Worker	    if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
5943*a67afe4dSAndroid Build Coastguard Worker              func_to_host_path "$temp_rpath"
5944*a67afe4dSAndroid Build Coastguard Worker	      cat <<EOF
5945*a67afe4dSAndroid Build Coastguard Workerconst char * LIB_PATH_VALUE   = "$func_to_host_path_result";
5946*a67afe4dSAndroid Build Coastguard WorkerEOF
5947*a67afe4dSAndroid Build Coastguard Worker	    else
5948*a67afe4dSAndroid Build Coastguard Worker	      cat <<"EOF"
5949*a67afe4dSAndroid Build Coastguard Workerconst char * LIB_PATH_VALUE   = "";
5950*a67afe4dSAndroid Build Coastguard WorkerEOF
5951*a67afe4dSAndroid Build Coastguard Worker	    fi
5952*a67afe4dSAndroid Build Coastguard Worker
5953*a67afe4dSAndroid Build Coastguard Worker	    if test -n "$dllsearchpath"; then
5954*a67afe4dSAndroid Build Coastguard Worker              func_to_host_path "$dllsearchpath:"
5955*a67afe4dSAndroid Build Coastguard Worker	      cat <<EOF
5956*a67afe4dSAndroid Build Coastguard Workerconst char * EXE_PATH_VARNAME = "PATH";
5957*a67afe4dSAndroid Build Coastguard Workerconst char * EXE_PATH_VALUE   = "$func_to_host_path_result";
5958*a67afe4dSAndroid Build Coastguard WorkerEOF
5959*a67afe4dSAndroid Build Coastguard Worker	    else
5960*a67afe4dSAndroid Build Coastguard Worker	      cat <<"EOF"
5961*a67afe4dSAndroid Build Coastguard Workerconst char * EXE_PATH_VARNAME = "";
5962*a67afe4dSAndroid Build Coastguard Workerconst char * EXE_PATH_VALUE   = "";
5963*a67afe4dSAndroid Build Coastguard WorkerEOF
5964*a67afe4dSAndroid Build Coastguard Worker	    fi
5965*a67afe4dSAndroid Build Coastguard Worker
5966*a67afe4dSAndroid Build Coastguard Worker	    if test yes = "$fast_install"; then
5967*a67afe4dSAndroid Build Coastguard Worker	      cat <<EOF
5968*a67afe4dSAndroid Build Coastguard Workerconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
5969*a67afe4dSAndroid Build Coastguard WorkerEOF
5970*a67afe4dSAndroid Build Coastguard Worker	    else
5971*a67afe4dSAndroid Build Coastguard Worker	      cat <<EOF
5972*a67afe4dSAndroid Build Coastguard Workerconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
5973*a67afe4dSAndroid Build Coastguard WorkerEOF
5974*a67afe4dSAndroid Build Coastguard Worker	    fi
5975*a67afe4dSAndroid Build Coastguard Worker
5976*a67afe4dSAndroid Build Coastguard Worker
5977*a67afe4dSAndroid Build Coastguard Worker	    cat <<"EOF"
5978*a67afe4dSAndroid Build Coastguard Worker
5979*a67afe4dSAndroid Build Coastguard Worker#define LTWRAPPER_OPTION_PREFIX         "--lt-"
5980*a67afe4dSAndroid Build Coastguard Worker
5981*a67afe4dSAndroid Build Coastguard Workerstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
5982*a67afe4dSAndroid Build Coastguard Workerstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
5983*a67afe4dSAndroid Build Coastguard Workerstatic const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
5984*a67afe4dSAndroid Build Coastguard Worker
5985*a67afe4dSAndroid Build Coastguard Workerint
5986*a67afe4dSAndroid Build Coastguard Workermain (int argc, char *argv[])
5987*a67afe4dSAndroid Build Coastguard Worker{
5988*a67afe4dSAndroid Build Coastguard Worker  char **newargz;
5989*a67afe4dSAndroid Build Coastguard Worker  int  newargc;
5990*a67afe4dSAndroid Build Coastguard Worker  char *tmp_pathspec;
5991*a67afe4dSAndroid Build Coastguard Worker  char *actual_cwrapper_path;
5992*a67afe4dSAndroid Build Coastguard Worker  char *actual_cwrapper_name;
5993*a67afe4dSAndroid Build Coastguard Worker  char *target_name;
5994*a67afe4dSAndroid Build Coastguard Worker  char *lt_argv_zero;
5995*a67afe4dSAndroid Build Coastguard Worker  int rval = 127;
5996*a67afe4dSAndroid Build Coastguard Worker
5997*a67afe4dSAndroid Build Coastguard Worker  int i;
5998*a67afe4dSAndroid Build Coastguard Worker
5999*a67afe4dSAndroid Build Coastguard Worker  program_name = (char *) xstrdup (base_name (argv[0]));
6000*a67afe4dSAndroid Build Coastguard Worker  newargz = XMALLOC (char *, (size_t) argc + 1);
6001*a67afe4dSAndroid Build Coastguard Worker
6002*a67afe4dSAndroid Build Coastguard Worker  /* very simple arg parsing; don't want to rely on getopt
6003*a67afe4dSAndroid Build Coastguard Worker   * also, copy all non cwrapper options to newargz, except
6004*a67afe4dSAndroid Build Coastguard Worker   * argz[0], which is handled differently
6005*a67afe4dSAndroid Build Coastguard Worker   */
6006*a67afe4dSAndroid Build Coastguard Worker  newargc=0;
6007*a67afe4dSAndroid Build Coastguard Worker  for (i = 1; i < argc; i++)
6008*a67afe4dSAndroid Build Coastguard Worker    {
6009*a67afe4dSAndroid Build Coastguard Worker      if (STREQ (argv[i], dumpscript_opt))
6010*a67afe4dSAndroid Build Coastguard Worker	{
6011*a67afe4dSAndroid Build Coastguard WorkerEOF
6012*a67afe4dSAndroid Build Coastguard Worker	    case $host in
6013*a67afe4dSAndroid Build Coastguard Worker	      *mingw* | *cygwin* )
6014*a67afe4dSAndroid Build Coastguard Worker		# make stdout use "unix" line endings
6015*a67afe4dSAndroid Build Coastguard Worker		echo "          setmode(1,_O_BINARY);"
6016*a67afe4dSAndroid Build Coastguard Worker		;;
6017*a67afe4dSAndroid Build Coastguard Worker	      esac
6018*a67afe4dSAndroid Build Coastguard Worker
6019*a67afe4dSAndroid Build Coastguard Worker	    cat <<"EOF"
6020*a67afe4dSAndroid Build Coastguard Worker	  lt_dump_script (stdout);
6021*a67afe4dSAndroid Build Coastguard Worker	  return 0;
6022*a67afe4dSAndroid Build Coastguard Worker	}
6023*a67afe4dSAndroid Build Coastguard Worker      if (STREQ (argv[i], debug_opt))
6024*a67afe4dSAndroid Build Coastguard Worker	{
6025*a67afe4dSAndroid Build Coastguard Worker          lt_debug = 1;
6026*a67afe4dSAndroid Build Coastguard Worker          continue;
6027*a67afe4dSAndroid Build Coastguard Worker	}
6028*a67afe4dSAndroid Build Coastguard Worker      if (STREQ (argv[i], ltwrapper_option_prefix))
6029*a67afe4dSAndroid Build Coastguard Worker        {
6030*a67afe4dSAndroid Build Coastguard Worker          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
6031*a67afe4dSAndroid Build Coastguard Worker             namespace, but it is not one of the ones we know about and
6032*a67afe4dSAndroid Build Coastguard Worker             have already dealt with, above (inluding dump-script), then
6033*a67afe4dSAndroid Build Coastguard Worker             report an error. Otherwise, targets might begin to believe
6034*a67afe4dSAndroid Build Coastguard Worker             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
6035*a67afe4dSAndroid Build Coastguard Worker             namespace. The first time any user complains about this, we'll
6036*a67afe4dSAndroid Build Coastguard Worker             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
6037*a67afe4dSAndroid Build Coastguard Worker             or a configure.ac-settable value.
6038*a67afe4dSAndroid Build Coastguard Worker           */
6039*a67afe4dSAndroid Build Coastguard Worker          lt_fatal (__FILE__, __LINE__,
6040*a67afe4dSAndroid Build Coastguard Worker		    "unrecognized %s option: '%s'",
6041*a67afe4dSAndroid Build Coastguard Worker                    ltwrapper_option_prefix, argv[i]);
6042*a67afe4dSAndroid Build Coastguard Worker        }
6043*a67afe4dSAndroid Build Coastguard Worker      /* otherwise ... */
6044*a67afe4dSAndroid Build Coastguard Worker      newargz[++newargc] = xstrdup (argv[i]);
6045*a67afe4dSAndroid Build Coastguard Worker    }
6046*a67afe4dSAndroid Build Coastguard Worker  newargz[++newargc] = NULL;
6047*a67afe4dSAndroid Build Coastguard Worker
6048*a67afe4dSAndroid Build Coastguard WorkerEOF
6049*a67afe4dSAndroid Build Coastguard Worker	    cat <<EOF
6050*a67afe4dSAndroid Build Coastguard Worker  /* The GNU banner must be the first non-error debug message */
6051*a67afe4dSAndroid Build Coastguard Worker  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n");
6052*a67afe4dSAndroid Build Coastguard WorkerEOF
6053*a67afe4dSAndroid Build Coastguard Worker	    cat <<"EOF"
6054*a67afe4dSAndroid Build Coastguard Worker  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
6055*a67afe4dSAndroid Build Coastguard Worker  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
6056*a67afe4dSAndroid Build Coastguard Worker
6057*a67afe4dSAndroid Build Coastguard Worker  tmp_pathspec = find_executable (argv[0]);
6058*a67afe4dSAndroid Build Coastguard Worker  if (tmp_pathspec == NULL)
6059*a67afe4dSAndroid Build Coastguard Worker    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
6060*a67afe4dSAndroid Build Coastguard Worker  lt_debugprintf (__FILE__, __LINE__,
6061*a67afe4dSAndroid Build Coastguard Worker                  "(main) found exe (before symlink chase) at: %s\n",
6062*a67afe4dSAndroid Build Coastguard Worker		  tmp_pathspec);
6063*a67afe4dSAndroid Build Coastguard Worker
6064*a67afe4dSAndroid Build Coastguard Worker  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
6065*a67afe4dSAndroid Build Coastguard Worker  lt_debugprintf (__FILE__, __LINE__,
6066*a67afe4dSAndroid Build Coastguard Worker                  "(main) found exe (after symlink chase) at: %s\n",
6067*a67afe4dSAndroid Build Coastguard Worker		  actual_cwrapper_path);
6068*a67afe4dSAndroid Build Coastguard Worker  XFREE (tmp_pathspec);
6069*a67afe4dSAndroid Build Coastguard Worker
6070*a67afe4dSAndroid Build Coastguard Worker  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
6071*a67afe4dSAndroid Build Coastguard Worker  strendzap (actual_cwrapper_path, actual_cwrapper_name);
6072*a67afe4dSAndroid Build Coastguard Worker
6073*a67afe4dSAndroid Build Coastguard Worker  /* wrapper name transforms */
6074*a67afe4dSAndroid Build Coastguard Worker  strendzap (actual_cwrapper_name, ".exe");
6075*a67afe4dSAndroid Build Coastguard Worker  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
6076*a67afe4dSAndroid Build Coastguard Worker  XFREE (actual_cwrapper_name);
6077*a67afe4dSAndroid Build Coastguard Worker  actual_cwrapper_name = tmp_pathspec;
6078*a67afe4dSAndroid Build Coastguard Worker  tmp_pathspec = 0;
6079*a67afe4dSAndroid Build Coastguard Worker
6080*a67afe4dSAndroid Build Coastguard Worker  /* target_name transforms -- use actual target program name; might have lt- prefix */
6081*a67afe4dSAndroid Build Coastguard Worker  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
6082*a67afe4dSAndroid Build Coastguard Worker  strendzap (target_name, ".exe");
6083*a67afe4dSAndroid Build Coastguard Worker  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
6084*a67afe4dSAndroid Build Coastguard Worker  XFREE (target_name);
6085*a67afe4dSAndroid Build Coastguard Worker  target_name = tmp_pathspec;
6086*a67afe4dSAndroid Build Coastguard Worker  tmp_pathspec = 0;
6087*a67afe4dSAndroid Build Coastguard Worker
6088*a67afe4dSAndroid Build Coastguard Worker  lt_debugprintf (__FILE__, __LINE__,
6089*a67afe4dSAndroid Build Coastguard Worker		  "(main) libtool target name: %s\n",
6090*a67afe4dSAndroid Build Coastguard Worker		  target_name);
6091*a67afe4dSAndroid Build Coastguard WorkerEOF
6092*a67afe4dSAndroid Build Coastguard Worker
6093*a67afe4dSAndroid Build Coastguard Worker	    cat <<EOF
6094*a67afe4dSAndroid Build Coastguard Worker  newargz[0] =
6095*a67afe4dSAndroid Build Coastguard Worker    XMALLOC (char, (strlen (actual_cwrapper_path) +
6096*a67afe4dSAndroid Build Coastguard Worker		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
6097*a67afe4dSAndroid Build Coastguard Worker  strcpy (newargz[0], actual_cwrapper_path);
6098*a67afe4dSAndroid Build Coastguard Worker  strcat (newargz[0], "$objdir");
6099*a67afe4dSAndroid Build Coastguard Worker  strcat (newargz[0], "/");
6100*a67afe4dSAndroid Build Coastguard WorkerEOF
6101*a67afe4dSAndroid Build Coastguard Worker
6102*a67afe4dSAndroid Build Coastguard Worker	    cat <<"EOF"
6103*a67afe4dSAndroid Build Coastguard Worker  /* stop here, and copy so we don't have to do this twice */
6104*a67afe4dSAndroid Build Coastguard Worker  tmp_pathspec = xstrdup (newargz[0]);
6105*a67afe4dSAndroid Build Coastguard Worker
6106*a67afe4dSAndroid Build Coastguard Worker  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
6107*a67afe4dSAndroid Build Coastguard Worker  strcat (newargz[0], actual_cwrapper_name);
6108*a67afe4dSAndroid Build Coastguard Worker
6109*a67afe4dSAndroid Build Coastguard Worker  /* DO want the lt- prefix here if it exists, so use target_name */
6110*a67afe4dSAndroid Build Coastguard Worker  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
6111*a67afe4dSAndroid Build Coastguard Worker  XFREE (tmp_pathspec);
6112*a67afe4dSAndroid Build Coastguard Worker  tmp_pathspec = NULL;
6113*a67afe4dSAndroid Build Coastguard WorkerEOF
6114*a67afe4dSAndroid Build Coastguard Worker
6115*a67afe4dSAndroid Build Coastguard Worker	    case $host_os in
6116*a67afe4dSAndroid Build Coastguard Worker	      mingw*)
6117*a67afe4dSAndroid Build Coastguard Worker	    cat <<"EOF"
6118*a67afe4dSAndroid Build Coastguard Worker  {
6119*a67afe4dSAndroid Build Coastguard Worker    char* p;
6120*a67afe4dSAndroid Build Coastguard Worker    while ((p = strchr (newargz[0], '\\')) != NULL)
6121*a67afe4dSAndroid Build Coastguard Worker      {
6122*a67afe4dSAndroid Build Coastguard Worker	*p = '/';
6123*a67afe4dSAndroid Build Coastguard Worker      }
6124*a67afe4dSAndroid Build Coastguard Worker    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
6125*a67afe4dSAndroid Build Coastguard Worker      {
6126*a67afe4dSAndroid Build Coastguard Worker	*p = '/';
6127*a67afe4dSAndroid Build Coastguard Worker      }
6128*a67afe4dSAndroid Build Coastguard Worker  }
6129*a67afe4dSAndroid Build Coastguard WorkerEOF
6130*a67afe4dSAndroid Build Coastguard Worker	    ;;
6131*a67afe4dSAndroid Build Coastguard Worker	    esac
6132*a67afe4dSAndroid Build Coastguard Worker
6133*a67afe4dSAndroid Build Coastguard Worker	    cat <<"EOF"
6134*a67afe4dSAndroid Build Coastguard Worker  XFREE (target_name);
6135*a67afe4dSAndroid Build Coastguard Worker  XFREE (actual_cwrapper_path);
6136*a67afe4dSAndroid Build Coastguard Worker  XFREE (actual_cwrapper_name);
6137*a67afe4dSAndroid Build Coastguard Worker
6138*a67afe4dSAndroid Build Coastguard Worker  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
6139*a67afe4dSAndroid Build Coastguard Worker  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
6140*a67afe4dSAndroid Build Coastguard Worker  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
6141*a67afe4dSAndroid Build Coastguard Worker     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
6142*a67afe4dSAndroid Build Coastguard Worker     because on Windows, both *_VARNAMEs are PATH but uninstalled
6143*a67afe4dSAndroid Build Coastguard Worker     libraries must come first. */
6144*a67afe4dSAndroid Build Coastguard Worker  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
6145*a67afe4dSAndroid Build Coastguard Worker  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
6146*a67afe4dSAndroid Build Coastguard Worker
6147*a67afe4dSAndroid Build Coastguard Worker  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
6148*a67afe4dSAndroid Build Coastguard Worker		  nonnull (lt_argv_zero));
6149*a67afe4dSAndroid Build Coastguard Worker  for (i = 0; i < newargc; i++)
6150*a67afe4dSAndroid Build Coastguard Worker    {
6151*a67afe4dSAndroid Build Coastguard Worker      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
6152*a67afe4dSAndroid Build Coastguard Worker		      i, nonnull (newargz[i]));
6153*a67afe4dSAndroid Build Coastguard Worker    }
6154*a67afe4dSAndroid Build Coastguard Worker
6155*a67afe4dSAndroid Build Coastguard WorkerEOF
6156*a67afe4dSAndroid Build Coastguard Worker
6157*a67afe4dSAndroid Build Coastguard Worker	    case $host_os in
6158*a67afe4dSAndroid Build Coastguard Worker	      mingw*)
6159*a67afe4dSAndroid Build Coastguard Worker		cat <<"EOF"
6160*a67afe4dSAndroid Build Coastguard Worker  /* execv doesn't actually work on mingw as expected on unix */
6161*a67afe4dSAndroid Build Coastguard Worker  newargz = prepare_spawn (newargz);
6162*a67afe4dSAndroid Build Coastguard Worker  rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
6163*a67afe4dSAndroid Build Coastguard Worker  if (rval == -1)
6164*a67afe4dSAndroid Build Coastguard Worker    {
6165*a67afe4dSAndroid Build Coastguard Worker      /* failed to start process */
6166*a67afe4dSAndroid Build Coastguard Worker      lt_debugprintf (__FILE__, __LINE__,
6167*a67afe4dSAndroid Build Coastguard Worker		      "(main) failed to launch target \"%s\": %s\n",
6168*a67afe4dSAndroid Build Coastguard Worker		      lt_argv_zero, nonnull (strerror (errno)));
6169*a67afe4dSAndroid Build Coastguard Worker      return 127;
6170*a67afe4dSAndroid Build Coastguard Worker    }
6171*a67afe4dSAndroid Build Coastguard Worker  return rval;
6172*a67afe4dSAndroid Build Coastguard WorkerEOF
6173*a67afe4dSAndroid Build Coastguard Worker		;;
6174*a67afe4dSAndroid Build Coastguard Worker	      *)
6175*a67afe4dSAndroid Build Coastguard Worker		cat <<"EOF"
6176*a67afe4dSAndroid Build Coastguard Worker  execv (lt_argv_zero, newargz);
6177*a67afe4dSAndroid Build Coastguard Worker  return rval; /* =127, but avoids unused variable warning */
6178*a67afe4dSAndroid Build Coastguard WorkerEOF
6179*a67afe4dSAndroid Build Coastguard Worker		;;
6180*a67afe4dSAndroid Build Coastguard Worker	    esac
6181*a67afe4dSAndroid Build Coastguard Worker
6182*a67afe4dSAndroid Build Coastguard Worker	    cat <<"EOF"
6183*a67afe4dSAndroid Build Coastguard Worker}
6184*a67afe4dSAndroid Build Coastguard Worker
6185*a67afe4dSAndroid Build Coastguard Workervoid *
6186*a67afe4dSAndroid Build Coastguard Workerxmalloc (size_t num)
6187*a67afe4dSAndroid Build Coastguard Worker{
6188*a67afe4dSAndroid Build Coastguard Worker  void *p = (void *) malloc (num);
6189*a67afe4dSAndroid Build Coastguard Worker  if (!p)
6190*a67afe4dSAndroid Build Coastguard Worker    lt_fatal (__FILE__, __LINE__, "memory exhausted");
6191*a67afe4dSAndroid Build Coastguard Worker
6192*a67afe4dSAndroid Build Coastguard Worker  return p;
6193*a67afe4dSAndroid Build Coastguard Worker}
6194*a67afe4dSAndroid Build Coastguard Worker
6195*a67afe4dSAndroid Build Coastguard Workerchar *
6196*a67afe4dSAndroid Build Coastguard Workerxstrdup (const char *string)
6197*a67afe4dSAndroid Build Coastguard Worker{
6198*a67afe4dSAndroid Build Coastguard Worker  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
6199*a67afe4dSAndroid Build Coastguard Worker			  string) : NULL;
6200*a67afe4dSAndroid Build Coastguard Worker}
6201*a67afe4dSAndroid Build Coastguard Worker
6202*a67afe4dSAndroid Build Coastguard Workerconst char *
6203*a67afe4dSAndroid Build Coastguard Workerbase_name (const char *name)
6204*a67afe4dSAndroid Build Coastguard Worker{
6205*a67afe4dSAndroid Build Coastguard Worker  const char *base;
6206*a67afe4dSAndroid Build Coastguard Worker
6207*a67afe4dSAndroid Build Coastguard Worker#if defined HAVE_DOS_BASED_FILE_SYSTEM
6208*a67afe4dSAndroid Build Coastguard Worker  /* Skip over the disk name in MSDOS pathnames. */
6209*a67afe4dSAndroid Build Coastguard Worker  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
6210*a67afe4dSAndroid Build Coastguard Worker    name += 2;
6211*a67afe4dSAndroid Build Coastguard Worker#endif
6212*a67afe4dSAndroid Build Coastguard Worker
6213*a67afe4dSAndroid Build Coastguard Worker  for (base = name; *name; name++)
6214*a67afe4dSAndroid Build Coastguard Worker    if (IS_DIR_SEPARATOR (*name))
6215*a67afe4dSAndroid Build Coastguard Worker      base = name + 1;
6216*a67afe4dSAndroid Build Coastguard Worker  return base;
6217*a67afe4dSAndroid Build Coastguard Worker}
6218*a67afe4dSAndroid Build Coastguard Worker
6219*a67afe4dSAndroid Build Coastguard Workerint
6220*a67afe4dSAndroid Build Coastguard Workercheck_executable (const char *path)
6221*a67afe4dSAndroid Build Coastguard Worker{
6222*a67afe4dSAndroid Build Coastguard Worker  struct stat st;
6223*a67afe4dSAndroid Build Coastguard Worker
6224*a67afe4dSAndroid Build Coastguard Worker  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
6225*a67afe4dSAndroid Build Coastguard Worker                  nonempty (path));
6226*a67afe4dSAndroid Build Coastguard Worker  if ((!path) || (!*path))
6227*a67afe4dSAndroid Build Coastguard Worker    return 0;
6228*a67afe4dSAndroid Build Coastguard Worker
6229*a67afe4dSAndroid Build Coastguard Worker  if ((stat (path, &st) >= 0)
6230*a67afe4dSAndroid Build Coastguard Worker      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
6231*a67afe4dSAndroid Build Coastguard Worker    return 1;
6232*a67afe4dSAndroid Build Coastguard Worker  else
6233*a67afe4dSAndroid Build Coastguard Worker    return 0;
6234*a67afe4dSAndroid Build Coastguard Worker}
6235*a67afe4dSAndroid Build Coastguard Worker
6236*a67afe4dSAndroid Build Coastguard Workerint
6237*a67afe4dSAndroid Build Coastguard Workermake_executable (const char *path)
6238*a67afe4dSAndroid Build Coastguard Worker{
6239*a67afe4dSAndroid Build Coastguard Worker  int rval = 0;
6240*a67afe4dSAndroid Build Coastguard Worker  struct stat st;
6241*a67afe4dSAndroid Build Coastguard Worker
6242*a67afe4dSAndroid Build Coastguard Worker  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
6243*a67afe4dSAndroid Build Coastguard Worker                  nonempty (path));
6244*a67afe4dSAndroid Build Coastguard Worker  if ((!path) || (!*path))
6245*a67afe4dSAndroid Build Coastguard Worker    return 0;
6246*a67afe4dSAndroid Build Coastguard Worker
6247*a67afe4dSAndroid Build Coastguard Worker  if (stat (path, &st) >= 0)
6248*a67afe4dSAndroid Build Coastguard Worker    {
6249*a67afe4dSAndroid Build Coastguard Worker      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
6250*a67afe4dSAndroid Build Coastguard Worker    }
6251*a67afe4dSAndroid Build Coastguard Worker  return rval;
6252*a67afe4dSAndroid Build Coastguard Worker}
6253*a67afe4dSAndroid Build Coastguard Worker
6254*a67afe4dSAndroid Build Coastguard Worker/* Searches for the full path of the wrapper.  Returns
6255*a67afe4dSAndroid Build Coastguard Worker   newly allocated full path name if found, NULL otherwise
6256*a67afe4dSAndroid Build Coastguard Worker   Does not chase symlinks, even on platforms that support them.
6257*a67afe4dSAndroid Build Coastguard Worker*/
6258*a67afe4dSAndroid Build Coastguard Workerchar *
6259*a67afe4dSAndroid Build Coastguard Workerfind_executable (const char *wrapper)
6260*a67afe4dSAndroid Build Coastguard Worker{
6261*a67afe4dSAndroid Build Coastguard Worker  int has_slash = 0;
6262*a67afe4dSAndroid Build Coastguard Worker  const char *p;
6263*a67afe4dSAndroid Build Coastguard Worker  const char *p_next;
6264*a67afe4dSAndroid Build Coastguard Worker  /* static buffer for getcwd */
6265*a67afe4dSAndroid Build Coastguard Worker  char tmp[LT_PATHMAX + 1];
6266*a67afe4dSAndroid Build Coastguard Worker  size_t tmp_len;
6267*a67afe4dSAndroid Build Coastguard Worker  char *concat_name;
6268*a67afe4dSAndroid Build Coastguard Worker
6269*a67afe4dSAndroid Build Coastguard Worker  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
6270*a67afe4dSAndroid Build Coastguard Worker                  nonempty (wrapper));
6271*a67afe4dSAndroid Build Coastguard Worker
6272*a67afe4dSAndroid Build Coastguard Worker  if ((wrapper == NULL) || (*wrapper == '\0'))
6273*a67afe4dSAndroid Build Coastguard Worker    return NULL;
6274*a67afe4dSAndroid Build Coastguard Worker
6275*a67afe4dSAndroid Build Coastguard Worker  /* Absolute path? */
6276*a67afe4dSAndroid Build Coastguard Worker#if defined HAVE_DOS_BASED_FILE_SYSTEM
6277*a67afe4dSAndroid Build Coastguard Worker  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
6278*a67afe4dSAndroid Build Coastguard Worker    {
6279*a67afe4dSAndroid Build Coastguard Worker      concat_name = xstrdup (wrapper);
6280*a67afe4dSAndroid Build Coastguard Worker      if (check_executable (concat_name))
6281*a67afe4dSAndroid Build Coastguard Worker	return concat_name;
6282*a67afe4dSAndroid Build Coastguard Worker      XFREE (concat_name);
6283*a67afe4dSAndroid Build Coastguard Worker    }
6284*a67afe4dSAndroid Build Coastguard Worker  else
6285*a67afe4dSAndroid Build Coastguard Worker    {
6286*a67afe4dSAndroid Build Coastguard Worker#endif
6287*a67afe4dSAndroid Build Coastguard Worker      if (IS_DIR_SEPARATOR (wrapper[0]))
6288*a67afe4dSAndroid Build Coastguard Worker	{
6289*a67afe4dSAndroid Build Coastguard Worker	  concat_name = xstrdup (wrapper);
6290*a67afe4dSAndroid Build Coastguard Worker	  if (check_executable (concat_name))
6291*a67afe4dSAndroid Build Coastguard Worker	    return concat_name;
6292*a67afe4dSAndroid Build Coastguard Worker	  XFREE (concat_name);
6293*a67afe4dSAndroid Build Coastguard Worker	}
6294*a67afe4dSAndroid Build Coastguard Worker#if defined HAVE_DOS_BASED_FILE_SYSTEM
6295*a67afe4dSAndroid Build Coastguard Worker    }
6296*a67afe4dSAndroid Build Coastguard Worker#endif
6297*a67afe4dSAndroid Build Coastguard Worker
6298*a67afe4dSAndroid Build Coastguard Worker  for (p = wrapper; *p; p++)
6299*a67afe4dSAndroid Build Coastguard Worker    if (*p == '/')
6300*a67afe4dSAndroid Build Coastguard Worker      {
6301*a67afe4dSAndroid Build Coastguard Worker	has_slash = 1;
6302*a67afe4dSAndroid Build Coastguard Worker	break;
6303*a67afe4dSAndroid Build Coastguard Worker      }
6304*a67afe4dSAndroid Build Coastguard Worker  if (!has_slash)
6305*a67afe4dSAndroid Build Coastguard Worker    {
6306*a67afe4dSAndroid Build Coastguard Worker      /* no slashes; search PATH */
6307*a67afe4dSAndroid Build Coastguard Worker      const char *path = getenv ("PATH");
6308*a67afe4dSAndroid Build Coastguard Worker      if (path != NULL)
6309*a67afe4dSAndroid Build Coastguard Worker	{
6310*a67afe4dSAndroid Build Coastguard Worker	  for (p = path; *p; p = p_next)
6311*a67afe4dSAndroid Build Coastguard Worker	    {
6312*a67afe4dSAndroid Build Coastguard Worker	      const char *q;
6313*a67afe4dSAndroid Build Coastguard Worker	      size_t p_len;
6314*a67afe4dSAndroid Build Coastguard Worker	      for (q = p; *q; q++)
6315*a67afe4dSAndroid Build Coastguard Worker		if (IS_PATH_SEPARATOR (*q))
6316*a67afe4dSAndroid Build Coastguard Worker		  break;
6317*a67afe4dSAndroid Build Coastguard Worker	      p_len = (size_t) (q - p);
6318*a67afe4dSAndroid Build Coastguard Worker	      p_next = (*q == '\0' ? q : q + 1);
6319*a67afe4dSAndroid Build Coastguard Worker	      if (p_len == 0)
6320*a67afe4dSAndroid Build Coastguard Worker		{
6321*a67afe4dSAndroid Build Coastguard Worker		  /* empty path: current directory */
6322*a67afe4dSAndroid Build Coastguard Worker		  if (getcwd (tmp, LT_PATHMAX) == NULL)
6323*a67afe4dSAndroid Build Coastguard Worker		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
6324*a67afe4dSAndroid Build Coastguard Worker                              nonnull (strerror (errno)));
6325*a67afe4dSAndroid Build Coastguard Worker		  tmp_len = strlen (tmp);
6326*a67afe4dSAndroid Build Coastguard Worker		  concat_name =
6327*a67afe4dSAndroid Build Coastguard Worker		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
6328*a67afe4dSAndroid Build Coastguard Worker		  memcpy (concat_name, tmp, tmp_len);
6329*a67afe4dSAndroid Build Coastguard Worker		  concat_name[tmp_len] = '/';
6330*a67afe4dSAndroid Build Coastguard Worker		  strcpy (concat_name + tmp_len + 1, wrapper);
6331*a67afe4dSAndroid Build Coastguard Worker		}
6332*a67afe4dSAndroid Build Coastguard Worker	      else
6333*a67afe4dSAndroid Build Coastguard Worker		{
6334*a67afe4dSAndroid Build Coastguard Worker		  concat_name =
6335*a67afe4dSAndroid Build Coastguard Worker		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
6336*a67afe4dSAndroid Build Coastguard Worker		  memcpy (concat_name, p, p_len);
6337*a67afe4dSAndroid Build Coastguard Worker		  concat_name[p_len] = '/';
6338*a67afe4dSAndroid Build Coastguard Worker		  strcpy (concat_name + p_len + 1, wrapper);
6339*a67afe4dSAndroid Build Coastguard Worker		}
6340*a67afe4dSAndroid Build Coastguard Worker	      if (check_executable (concat_name))
6341*a67afe4dSAndroid Build Coastguard Worker		return concat_name;
6342*a67afe4dSAndroid Build Coastguard Worker	      XFREE (concat_name);
6343*a67afe4dSAndroid Build Coastguard Worker	    }
6344*a67afe4dSAndroid Build Coastguard Worker	}
6345*a67afe4dSAndroid Build Coastguard Worker      /* not found in PATH; assume curdir */
6346*a67afe4dSAndroid Build Coastguard Worker    }
6347*a67afe4dSAndroid Build Coastguard Worker  /* Relative path | not found in path: prepend cwd */
6348*a67afe4dSAndroid Build Coastguard Worker  if (getcwd (tmp, LT_PATHMAX) == NULL)
6349*a67afe4dSAndroid Build Coastguard Worker    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
6350*a67afe4dSAndroid Build Coastguard Worker              nonnull (strerror (errno)));
6351*a67afe4dSAndroid Build Coastguard Worker  tmp_len = strlen (tmp);
6352*a67afe4dSAndroid Build Coastguard Worker  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
6353*a67afe4dSAndroid Build Coastguard Worker  memcpy (concat_name, tmp, tmp_len);
6354*a67afe4dSAndroid Build Coastguard Worker  concat_name[tmp_len] = '/';
6355*a67afe4dSAndroid Build Coastguard Worker  strcpy (concat_name + tmp_len + 1, wrapper);
6356*a67afe4dSAndroid Build Coastguard Worker
6357*a67afe4dSAndroid Build Coastguard Worker  if (check_executable (concat_name))
6358*a67afe4dSAndroid Build Coastguard Worker    return concat_name;
6359*a67afe4dSAndroid Build Coastguard Worker  XFREE (concat_name);
6360*a67afe4dSAndroid Build Coastguard Worker  return NULL;
6361*a67afe4dSAndroid Build Coastguard Worker}
6362*a67afe4dSAndroid Build Coastguard Worker
6363*a67afe4dSAndroid Build Coastguard Workerchar *
6364*a67afe4dSAndroid Build Coastguard Workerchase_symlinks (const char *pathspec)
6365*a67afe4dSAndroid Build Coastguard Worker{
6366*a67afe4dSAndroid Build Coastguard Worker#ifndef S_ISLNK
6367*a67afe4dSAndroid Build Coastguard Worker  return xstrdup (pathspec);
6368*a67afe4dSAndroid Build Coastguard Worker#else
6369*a67afe4dSAndroid Build Coastguard Worker  char buf[LT_PATHMAX];
6370*a67afe4dSAndroid Build Coastguard Worker  struct stat s;
6371*a67afe4dSAndroid Build Coastguard Worker  char *tmp_pathspec = xstrdup (pathspec);
6372*a67afe4dSAndroid Build Coastguard Worker  char *p;
6373*a67afe4dSAndroid Build Coastguard Worker  int has_symlinks = 0;
6374*a67afe4dSAndroid Build Coastguard Worker  while (strlen (tmp_pathspec) && !has_symlinks)
6375*a67afe4dSAndroid Build Coastguard Worker    {
6376*a67afe4dSAndroid Build Coastguard Worker      lt_debugprintf (__FILE__, __LINE__,
6377*a67afe4dSAndroid Build Coastguard Worker		      "checking path component for symlinks: %s\n",
6378*a67afe4dSAndroid Build Coastguard Worker		      tmp_pathspec);
6379*a67afe4dSAndroid Build Coastguard Worker      if (lstat (tmp_pathspec, &s) == 0)
6380*a67afe4dSAndroid Build Coastguard Worker	{
6381*a67afe4dSAndroid Build Coastguard Worker	  if (S_ISLNK (s.st_mode) != 0)
6382*a67afe4dSAndroid Build Coastguard Worker	    {
6383*a67afe4dSAndroid Build Coastguard Worker	      has_symlinks = 1;
6384*a67afe4dSAndroid Build Coastguard Worker	      break;
6385*a67afe4dSAndroid Build Coastguard Worker	    }
6386*a67afe4dSAndroid Build Coastguard Worker
6387*a67afe4dSAndroid Build Coastguard Worker	  /* search backwards for last DIR_SEPARATOR */
6388*a67afe4dSAndroid Build Coastguard Worker	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
6389*a67afe4dSAndroid Build Coastguard Worker	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
6390*a67afe4dSAndroid Build Coastguard Worker	    p--;
6391*a67afe4dSAndroid Build Coastguard Worker	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
6392*a67afe4dSAndroid Build Coastguard Worker	    {
6393*a67afe4dSAndroid Build Coastguard Worker	      /* no more DIR_SEPARATORS left */
6394*a67afe4dSAndroid Build Coastguard Worker	      break;
6395*a67afe4dSAndroid Build Coastguard Worker	    }
6396*a67afe4dSAndroid Build Coastguard Worker	  *p = '\0';
6397*a67afe4dSAndroid Build Coastguard Worker	}
6398*a67afe4dSAndroid Build Coastguard Worker      else
6399*a67afe4dSAndroid Build Coastguard Worker	{
6400*a67afe4dSAndroid Build Coastguard Worker	  lt_fatal (__FILE__, __LINE__,
6401*a67afe4dSAndroid Build Coastguard Worker		    "error accessing file \"%s\": %s",
6402*a67afe4dSAndroid Build Coastguard Worker		    tmp_pathspec, nonnull (strerror (errno)));
6403*a67afe4dSAndroid Build Coastguard Worker	}
6404*a67afe4dSAndroid Build Coastguard Worker    }
6405*a67afe4dSAndroid Build Coastguard Worker  XFREE (tmp_pathspec);
6406*a67afe4dSAndroid Build Coastguard Worker
6407*a67afe4dSAndroid Build Coastguard Worker  if (!has_symlinks)
6408*a67afe4dSAndroid Build Coastguard Worker    {
6409*a67afe4dSAndroid Build Coastguard Worker      return xstrdup (pathspec);
6410*a67afe4dSAndroid Build Coastguard Worker    }
6411*a67afe4dSAndroid Build Coastguard Worker
6412*a67afe4dSAndroid Build Coastguard Worker  tmp_pathspec = realpath (pathspec, buf);
6413*a67afe4dSAndroid Build Coastguard Worker  if (tmp_pathspec == 0)
6414*a67afe4dSAndroid Build Coastguard Worker    {
6415*a67afe4dSAndroid Build Coastguard Worker      lt_fatal (__FILE__, __LINE__,
6416*a67afe4dSAndroid Build Coastguard Worker		"could not follow symlinks for %s", pathspec);
6417*a67afe4dSAndroid Build Coastguard Worker    }
6418*a67afe4dSAndroid Build Coastguard Worker  return xstrdup (tmp_pathspec);
6419*a67afe4dSAndroid Build Coastguard Worker#endif
6420*a67afe4dSAndroid Build Coastguard Worker}
6421*a67afe4dSAndroid Build Coastguard Worker
6422*a67afe4dSAndroid Build Coastguard Workerchar *
6423*a67afe4dSAndroid Build Coastguard Workerstrendzap (char *str, const char *pat)
6424*a67afe4dSAndroid Build Coastguard Worker{
6425*a67afe4dSAndroid Build Coastguard Worker  size_t len, patlen;
6426*a67afe4dSAndroid Build Coastguard Worker
6427*a67afe4dSAndroid Build Coastguard Worker  assert (str != NULL);
6428*a67afe4dSAndroid Build Coastguard Worker  assert (pat != NULL);
6429*a67afe4dSAndroid Build Coastguard Worker
6430*a67afe4dSAndroid Build Coastguard Worker  len = strlen (str);
6431*a67afe4dSAndroid Build Coastguard Worker  patlen = strlen (pat);
6432*a67afe4dSAndroid Build Coastguard Worker
6433*a67afe4dSAndroid Build Coastguard Worker  if (patlen <= len)
6434*a67afe4dSAndroid Build Coastguard Worker    {
6435*a67afe4dSAndroid Build Coastguard Worker      str += len - patlen;
6436*a67afe4dSAndroid Build Coastguard Worker      if (STREQ (str, pat))
6437*a67afe4dSAndroid Build Coastguard Worker	*str = '\0';
6438*a67afe4dSAndroid Build Coastguard Worker    }
6439*a67afe4dSAndroid Build Coastguard Worker  return str;
6440*a67afe4dSAndroid Build Coastguard Worker}
6441*a67afe4dSAndroid Build Coastguard Worker
6442*a67afe4dSAndroid Build Coastguard Workervoid
6443*a67afe4dSAndroid Build Coastguard Workerlt_debugprintf (const char *file, int line, const char *fmt, ...)
6444*a67afe4dSAndroid Build Coastguard Worker{
6445*a67afe4dSAndroid Build Coastguard Worker  va_list args;
6446*a67afe4dSAndroid Build Coastguard Worker  if (lt_debug)
6447*a67afe4dSAndroid Build Coastguard Worker    {
6448*a67afe4dSAndroid Build Coastguard Worker      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
6449*a67afe4dSAndroid Build Coastguard Worker      va_start (args, fmt);
6450*a67afe4dSAndroid Build Coastguard Worker      (void) vfprintf (stderr, fmt, args);
6451*a67afe4dSAndroid Build Coastguard Worker      va_end (args);
6452*a67afe4dSAndroid Build Coastguard Worker    }
6453*a67afe4dSAndroid Build Coastguard Worker}
6454*a67afe4dSAndroid Build Coastguard Worker
6455*a67afe4dSAndroid Build Coastguard Workerstatic void
6456*a67afe4dSAndroid Build Coastguard Workerlt_error_core (int exit_status, const char *file,
6457*a67afe4dSAndroid Build Coastguard Worker	       int line, const char *mode,
6458*a67afe4dSAndroid Build Coastguard Worker	       const char *message, va_list ap)
6459*a67afe4dSAndroid Build Coastguard Worker{
6460*a67afe4dSAndroid Build Coastguard Worker  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
6461*a67afe4dSAndroid Build Coastguard Worker  vfprintf (stderr, message, ap);
6462*a67afe4dSAndroid Build Coastguard Worker  fprintf (stderr, ".\n");
6463*a67afe4dSAndroid Build Coastguard Worker
6464*a67afe4dSAndroid Build Coastguard Worker  if (exit_status >= 0)
6465*a67afe4dSAndroid Build Coastguard Worker    exit (exit_status);
6466*a67afe4dSAndroid Build Coastguard Worker}
6467*a67afe4dSAndroid Build Coastguard Worker
6468*a67afe4dSAndroid Build Coastguard Workervoid
6469*a67afe4dSAndroid Build Coastguard Workerlt_fatal (const char *file, int line, const char *message, ...)
6470*a67afe4dSAndroid Build Coastguard Worker{
6471*a67afe4dSAndroid Build Coastguard Worker  va_list ap;
6472*a67afe4dSAndroid Build Coastguard Worker  va_start (ap, message);
6473*a67afe4dSAndroid Build Coastguard Worker  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
6474*a67afe4dSAndroid Build Coastguard Worker  va_end (ap);
6475*a67afe4dSAndroid Build Coastguard Worker}
6476*a67afe4dSAndroid Build Coastguard Worker
6477*a67afe4dSAndroid Build Coastguard Workerstatic const char *
6478*a67afe4dSAndroid Build Coastguard Workernonnull (const char *s)
6479*a67afe4dSAndroid Build Coastguard Worker{
6480*a67afe4dSAndroid Build Coastguard Worker  return s ? s : "(null)";
6481*a67afe4dSAndroid Build Coastguard Worker}
6482*a67afe4dSAndroid Build Coastguard Worker
6483*a67afe4dSAndroid Build Coastguard Workerstatic const char *
6484*a67afe4dSAndroid Build Coastguard Workernonempty (const char *s)
6485*a67afe4dSAndroid Build Coastguard Worker{
6486*a67afe4dSAndroid Build Coastguard Worker  return (s && !*s) ? "(empty)" : nonnull (s);
6487*a67afe4dSAndroid Build Coastguard Worker}
6488*a67afe4dSAndroid Build Coastguard Worker
6489*a67afe4dSAndroid Build Coastguard Workervoid
6490*a67afe4dSAndroid Build Coastguard Workerlt_setenv (const char *name, const char *value)
6491*a67afe4dSAndroid Build Coastguard Worker{
6492*a67afe4dSAndroid Build Coastguard Worker  lt_debugprintf (__FILE__, __LINE__,
6493*a67afe4dSAndroid Build Coastguard Worker		  "(lt_setenv) setting '%s' to '%s'\n",
6494*a67afe4dSAndroid Build Coastguard Worker                  nonnull (name), nonnull (value));
6495*a67afe4dSAndroid Build Coastguard Worker  {
6496*a67afe4dSAndroid Build Coastguard Worker#ifdef HAVE_SETENV
6497*a67afe4dSAndroid Build Coastguard Worker    /* always make a copy, for consistency with !HAVE_SETENV */
6498*a67afe4dSAndroid Build Coastguard Worker    char *str = xstrdup (value);
6499*a67afe4dSAndroid Build Coastguard Worker    setenv (name, str, 1);
6500*a67afe4dSAndroid Build Coastguard Worker#else
6501*a67afe4dSAndroid Build Coastguard Worker    size_t len = strlen (name) + 1 + strlen (value) + 1;
6502*a67afe4dSAndroid Build Coastguard Worker    char *str = XMALLOC (char, len);
6503*a67afe4dSAndroid Build Coastguard Worker    sprintf (str, "%s=%s", name, value);
6504*a67afe4dSAndroid Build Coastguard Worker    if (putenv (str) != EXIT_SUCCESS)
6505*a67afe4dSAndroid Build Coastguard Worker      {
6506*a67afe4dSAndroid Build Coastguard Worker        XFREE (str);
6507*a67afe4dSAndroid Build Coastguard Worker      }
6508*a67afe4dSAndroid Build Coastguard Worker#endif
6509*a67afe4dSAndroid Build Coastguard Worker  }
6510*a67afe4dSAndroid Build Coastguard Worker}
6511*a67afe4dSAndroid Build Coastguard Worker
6512*a67afe4dSAndroid Build Coastguard Workerchar *
6513*a67afe4dSAndroid Build Coastguard Workerlt_extend_str (const char *orig_value, const char *add, int to_end)
6514*a67afe4dSAndroid Build Coastguard Worker{
6515*a67afe4dSAndroid Build Coastguard Worker  char *new_value;
6516*a67afe4dSAndroid Build Coastguard Worker  if (orig_value && *orig_value)
6517*a67afe4dSAndroid Build Coastguard Worker    {
6518*a67afe4dSAndroid Build Coastguard Worker      size_t orig_value_len = strlen (orig_value);
6519*a67afe4dSAndroid Build Coastguard Worker      size_t add_len = strlen (add);
6520*a67afe4dSAndroid Build Coastguard Worker      new_value = XMALLOC (char, add_len + orig_value_len + 1);
6521*a67afe4dSAndroid Build Coastguard Worker      if (to_end)
6522*a67afe4dSAndroid Build Coastguard Worker        {
6523*a67afe4dSAndroid Build Coastguard Worker          strcpy (new_value, orig_value);
6524*a67afe4dSAndroid Build Coastguard Worker          strcpy (new_value + orig_value_len, add);
6525*a67afe4dSAndroid Build Coastguard Worker        }
6526*a67afe4dSAndroid Build Coastguard Worker      else
6527*a67afe4dSAndroid Build Coastguard Worker        {
6528*a67afe4dSAndroid Build Coastguard Worker          strcpy (new_value, add);
6529*a67afe4dSAndroid Build Coastguard Worker          strcpy (new_value + add_len, orig_value);
6530*a67afe4dSAndroid Build Coastguard Worker        }
6531*a67afe4dSAndroid Build Coastguard Worker    }
6532*a67afe4dSAndroid Build Coastguard Worker  else
6533*a67afe4dSAndroid Build Coastguard Worker    {
6534*a67afe4dSAndroid Build Coastguard Worker      new_value = xstrdup (add);
6535*a67afe4dSAndroid Build Coastguard Worker    }
6536*a67afe4dSAndroid Build Coastguard Worker  return new_value;
6537*a67afe4dSAndroid Build Coastguard Worker}
6538*a67afe4dSAndroid Build Coastguard Worker
6539*a67afe4dSAndroid Build Coastguard Workervoid
6540*a67afe4dSAndroid Build Coastguard Workerlt_update_exe_path (const char *name, const char *value)
6541*a67afe4dSAndroid Build Coastguard Worker{
6542*a67afe4dSAndroid Build Coastguard Worker  lt_debugprintf (__FILE__, __LINE__,
6543*a67afe4dSAndroid Build Coastguard Worker		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
6544*a67afe4dSAndroid Build Coastguard Worker                  nonnull (name), nonnull (value));
6545*a67afe4dSAndroid Build Coastguard Worker
6546*a67afe4dSAndroid Build Coastguard Worker  if (name && *name && value && *value)
6547*a67afe4dSAndroid Build Coastguard Worker    {
6548*a67afe4dSAndroid Build Coastguard Worker      char *new_value = lt_extend_str (getenv (name), value, 0);
6549*a67afe4dSAndroid Build Coastguard Worker      /* some systems can't cope with a ':'-terminated path #' */
6550*a67afe4dSAndroid Build Coastguard Worker      size_t len = strlen (new_value);
6551*a67afe4dSAndroid Build Coastguard Worker      while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
6552*a67afe4dSAndroid Build Coastguard Worker        {
6553*a67afe4dSAndroid Build Coastguard Worker          new_value[--len] = '\0';
6554*a67afe4dSAndroid Build Coastguard Worker        }
6555*a67afe4dSAndroid Build Coastguard Worker      lt_setenv (name, new_value);
6556*a67afe4dSAndroid Build Coastguard Worker      XFREE (new_value);
6557*a67afe4dSAndroid Build Coastguard Worker    }
6558*a67afe4dSAndroid Build Coastguard Worker}
6559*a67afe4dSAndroid Build Coastguard Worker
6560*a67afe4dSAndroid Build Coastguard Workervoid
6561*a67afe4dSAndroid Build Coastguard Workerlt_update_lib_path (const char *name, const char *value)
6562*a67afe4dSAndroid Build Coastguard Worker{
6563*a67afe4dSAndroid Build Coastguard Worker  lt_debugprintf (__FILE__, __LINE__,
6564*a67afe4dSAndroid Build Coastguard Worker		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
6565*a67afe4dSAndroid Build Coastguard Worker                  nonnull (name), nonnull (value));
6566*a67afe4dSAndroid Build Coastguard Worker
6567*a67afe4dSAndroid Build Coastguard Worker  if (name && *name && value && *value)
6568*a67afe4dSAndroid Build Coastguard Worker    {
6569*a67afe4dSAndroid Build Coastguard Worker      char *new_value = lt_extend_str (getenv (name), value, 0);
6570*a67afe4dSAndroid Build Coastguard Worker      lt_setenv (name, new_value);
6571*a67afe4dSAndroid Build Coastguard Worker      XFREE (new_value);
6572*a67afe4dSAndroid Build Coastguard Worker    }
6573*a67afe4dSAndroid Build Coastguard Worker}
6574*a67afe4dSAndroid Build Coastguard Worker
6575*a67afe4dSAndroid Build Coastguard WorkerEOF
6576*a67afe4dSAndroid Build Coastguard Worker	    case $host_os in
6577*a67afe4dSAndroid Build Coastguard Worker	      mingw*)
6578*a67afe4dSAndroid Build Coastguard Worker		cat <<"EOF"
6579*a67afe4dSAndroid Build Coastguard Worker
6580*a67afe4dSAndroid Build Coastguard Worker/* Prepares an argument vector before calling spawn().
6581*a67afe4dSAndroid Build Coastguard Worker   Note that spawn() does not by itself call the command interpreter
6582*a67afe4dSAndroid Build Coastguard Worker     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
6583*a67afe4dSAndroid Build Coastguard Worker      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
6584*a67afe4dSAndroid Build Coastguard Worker         GetVersionEx(&v);
6585*a67afe4dSAndroid Build Coastguard Worker         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
6586*a67afe4dSAndroid Build Coastguard Worker      }) ? "cmd.exe" : "command.com").
6587*a67afe4dSAndroid Build Coastguard Worker   Instead it simply concatenates the arguments, separated by ' ', and calls
6588*a67afe4dSAndroid Build Coastguard Worker   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
6589*a67afe4dSAndroid Build Coastguard Worker   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
6590*a67afe4dSAndroid Build Coastguard Worker   special way:
6591*a67afe4dSAndroid Build Coastguard Worker   - Space and tab are interpreted as delimiters. They are not treated as
6592*a67afe4dSAndroid Build Coastguard Worker     delimiters if they are surrounded by double quotes: "...".
6593*a67afe4dSAndroid Build Coastguard Worker   - Unescaped double quotes are removed from the input. Their only effect is
6594*a67afe4dSAndroid Build Coastguard Worker     that within double quotes, space and tab are treated like normal
6595*a67afe4dSAndroid Build Coastguard Worker     characters.
6596*a67afe4dSAndroid Build Coastguard Worker   - Backslashes not followed by double quotes are not special.
6597*a67afe4dSAndroid Build Coastguard Worker   - But 2*n+1 backslashes followed by a double quote become
6598*a67afe4dSAndroid Build Coastguard Worker     n backslashes followed by a double quote (n >= 0):
6599*a67afe4dSAndroid Build Coastguard Worker       \" -> "
6600*a67afe4dSAndroid Build Coastguard Worker       \\\" -> \"
6601*a67afe4dSAndroid Build Coastguard Worker       \\\\\" -> \\"
6602*a67afe4dSAndroid Build Coastguard Worker */
6603*a67afe4dSAndroid Build Coastguard Worker#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"
6604*a67afe4dSAndroid Build Coastguard Worker#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"
6605*a67afe4dSAndroid Build Coastguard Workerchar **
6606*a67afe4dSAndroid Build Coastguard Workerprepare_spawn (char **argv)
6607*a67afe4dSAndroid Build Coastguard Worker{
6608*a67afe4dSAndroid Build Coastguard Worker  size_t argc;
6609*a67afe4dSAndroid Build Coastguard Worker  char **new_argv;
6610*a67afe4dSAndroid Build Coastguard Worker  size_t i;
6611*a67afe4dSAndroid Build Coastguard Worker
6612*a67afe4dSAndroid Build Coastguard Worker  /* Count number of arguments.  */
6613*a67afe4dSAndroid Build Coastguard Worker  for (argc = 0; argv[argc] != NULL; argc++)
6614*a67afe4dSAndroid Build Coastguard Worker    ;
6615*a67afe4dSAndroid Build Coastguard Worker
6616*a67afe4dSAndroid Build Coastguard Worker  /* Allocate new argument vector.  */
6617*a67afe4dSAndroid Build Coastguard Worker  new_argv = XMALLOC (char *, argc + 1);
6618*a67afe4dSAndroid Build Coastguard Worker
6619*a67afe4dSAndroid Build Coastguard Worker  /* Put quoted arguments into the new argument vector.  */
6620*a67afe4dSAndroid Build Coastguard Worker  for (i = 0; i < argc; i++)
6621*a67afe4dSAndroid Build Coastguard Worker    {
6622*a67afe4dSAndroid Build Coastguard Worker      const char *string = argv[i];
6623*a67afe4dSAndroid Build Coastguard Worker
6624*a67afe4dSAndroid Build Coastguard Worker      if (string[0] == '\0')
6625*a67afe4dSAndroid Build Coastguard Worker	new_argv[i] = xstrdup ("\"\"");
6626*a67afe4dSAndroid Build Coastguard Worker      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
6627*a67afe4dSAndroid Build Coastguard Worker	{
6628*a67afe4dSAndroid Build Coastguard Worker	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
6629*a67afe4dSAndroid Build Coastguard Worker	  size_t length;
6630*a67afe4dSAndroid Build Coastguard Worker	  unsigned int backslashes;
6631*a67afe4dSAndroid Build Coastguard Worker	  const char *s;
6632*a67afe4dSAndroid Build Coastguard Worker	  char *quoted_string;
6633*a67afe4dSAndroid Build Coastguard Worker	  char *p;
6634*a67afe4dSAndroid Build Coastguard Worker
6635*a67afe4dSAndroid Build Coastguard Worker	  length = 0;
6636*a67afe4dSAndroid Build Coastguard Worker	  backslashes = 0;
6637*a67afe4dSAndroid Build Coastguard Worker	  if (quote_around)
6638*a67afe4dSAndroid Build Coastguard Worker	    length++;
6639*a67afe4dSAndroid Build Coastguard Worker	  for (s = string; *s != '\0'; s++)
6640*a67afe4dSAndroid Build Coastguard Worker	    {
6641*a67afe4dSAndroid Build Coastguard Worker	      char c = *s;
6642*a67afe4dSAndroid Build Coastguard Worker	      if (c == '"')
6643*a67afe4dSAndroid Build Coastguard Worker		length += backslashes + 1;
6644*a67afe4dSAndroid Build Coastguard Worker	      length++;
6645*a67afe4dSAndroid Build Coastguard Worker	      if (c == '\\')
6646*a67afe4dSAndroid Build Coastguard Worker		backslashes++;
6647*a67afe4dSAndroid Build Coastguard Worker	      else
6648*a67afe4dSAndroid Build Coastguard Worker		backslashes = 0;
6649*a67afe4dSAndroid Build Coastguard Worker	    }
6650*a67afe4dSAndroid Build Coastguard Worker	  if (quote_around)
6651*a67afe4dSAndroid Build Coastguard Worker	    length += backslashes + 1;
6652*a67afe4dSAndroid Build Coastguard Worker
6653*a67afe4dSAndroid Build Coastguard Worker	  quoted_string = XMALLOC (char, length + 1);
6654*a67afe4dSAndroid Build Coastguard Worker
6655*a67afe4dSAndroid Build Coastguard Worker	  p = quoted_string;
6656*a67afe4dSAndroid Build Coastguard Worker	  backslashes = 0;
6657*a67afe4dSAndroid Build Coastguard Worker	  if (quote_around)
6658*a67afe4dSAndroid Build Coastguard Worker	    *p++ = '"';
6659*a67afe4dSAndroid Build Coastguard Worker	  for (s = string; *s != '\0'; s++)
6660*a67afe4dSAndroid Build Coastguard Worker	    {
6661*a67afe4dSAndroid Build Coastguard Worker	      char c = *s;
6662*a67afe4dSAndroid Build Coastguard Worker	      if (c == '"')
6663*a67afe4dSAndroid Build Coastguard Worker		{
6664*a67afe4dSAndroid Build Coastguard Worker		  unsigned int j;
6665*a67afe4dSAndroid Build Coastguard Worker		  for (j = backslashes + 1; j > 0; j--)
6666*a67afe4dSAndroid Build Coastguard Worker		    *p++ = '\\';
6667*a67afe4dSAndroid Build Coastguard Worker		}
6668*a67afe4dSAndroid Build Coastguard Worker	      *p++ = c;
6669*a67afe4dSAndroid Build Coastguard Worker	      if (c == '\\')
6670*a67afe4dSAndroid Build Coastguard Worker		backslashes++;
6671*a67afe4dSAndroid Build Coastguard Worker	      else
6672*a67afe4dSAndroid Build Coastguard Worker		backslashes = 0;
6673*a67afe4dSAndroid Build Coastguard Worker	    }
6674*a67afe4dSAndroid Build Coastguard Worker	  if (quote_around)
6675*a67afe4dSAndroid Build Coastguard Worker	    {
6676*a67afe4dSAndroid Build Coastguard Worker	      unsigned int j;
6677*a67afe4dSAndroid Build Coastguard Worker	      for (j = backslashes; j > 0; j--)
6678*a67afe4dSAndroid Build Coastguard Worker		*p++ = '\\';
6679*a67afe4dSAndroid Build Coastguard Worker	      *p++ = '"';
6680*a67afe4dSAndroid Build Coastguard Worker	    }
6681*a67afe4dSAndroid Build Coastguard Worker	  *p = '\0';
6682*a67afe4dSAndroid Build Coastguard Worker
6683*a67afe4dSAndroid Build Coastguard Worker	  new_argv[i] = quoted_string;
6684*a67afe4dSAndroid Build Coastguard Worker	}
6685*a67afe4dSAndroid Build Coastguard Worker      else
6686*a67afe4dSAndroid Build Coastguard Worker	new_argv[i] = (char *) string;
6687*a67afe4dSAndroid Build Coastguard Worker    }
6688*a67afe4dSAndroid Build Coastguard Worker  new_argv[argc] = NULL;
6689*a67afe4dSAndroid Build Coastguard Worker
6690*a67afe4dSAndroid Build Coastguard Worker  return new_argv;
6691*a67afe4dSAndroid Build Coastguard Worker}
6692*a67afe4dSAndroid Build Coastguard WorkerEOF
6693*a67afe4dSAndroid Build Coastguard Worker		;;
6694*a67afe4dSAndroid Build Coastguard Worker	    esac
6695*a67afe4dSAndroid Build Coastguard Worker
6696*a67afe4dSAndroid Build Coastguard Worker            cat <<"EOF"
6697*a67afe4dSAndroid Build Coastguard Workervoid lt_dump_script (FILE* f)
6698*a67afe4dSAndroid Build Coastguard Worker{
6699*a67afe4dSAndroid Build Coastguard WorkerEOF
6700*a67afe4dSAndroid Build Coastguard Worker	    func_emit_wrapper yes |
6701*a67afe4dSAndroid Build Coastguard Worker	      $SED -n -e '
6702*a67afe4dSAndroid Build Coastguard Workers/^\(.\{79\}\)\(..*\)/\1\
6703*a67afe4dSAndroid Build Coastguard Worker\2/
6704*a67afe4dSAndroid Build Coastguard Workerh
6705*a67afe4dSAndroid Build Coastguard Workers/\([\\"]\)/\\\1/g
6706*a67afe4dSAndroid Build Coastguard Workers/$/\\n/
6707*a67afe4dSAndroid Build Coastguard Workers/\([^\n]*\).*/  fputs ("\1", f);/p
6708*a67afe4dSAndroid Build Coastguard Workerg
6709*a67afe4dSAndroid Build Coastguard WorkerD'
6710*a67afe4dSAndroid Build Coastguard Worker            cat <<"EOF"
6711*a67afe4dSAndroid Build Coastguard Worker}
6712*a67afe4dSAndroid Build Coastguard WorkerEOF
6713*a67afe4dSAndroid Build Coastguard Worker}
6714*a67afe4dSAndroid Build Coastguard Worker# end: func_emit_cwrapperexe_src
6715*a67afe4dSAndroid Build Coastguard Worker
6716*a67afe4dSAndroid Build Coastguard Worker# func_win32_import_lib_p ARG
6717*a67afe4dSAndroid Build Coastguard Worker# True if ARG is an import lib, as indicated by $file_magic_cmd
6718*a67afe4dSAndroid Build Coastguard Workerfunc_win32_import_lib_p ()
6719*a67afe4dSAndroid Build Coastguard Worker{
6720*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
6721*a67afe4dSAndroid Build Coastguard Worker
6722*a67afe4dSAndroid Build Coastguard Worker    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
6723*a67afe4dSAndroid Build Coastguard Worker    *import*) : ;;
6724*a67afe4dSAndroid Build Coastguard Worker    *) false ;;
6725*a67afe4dSAndroid Build Coastguard Worker    esac
6726*a67afe4dSAndroid Build Coastguard Worker}
6727*a67afe4dSAndroid Build Coastguard Worker
6728*a67afe4dSAndroid Build Coastguard Worker# func_suncc_cstd_abi
6729*a67afe4dSAndroid Build Coastguard Worker# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!!
6730*a67afe4dSAndroid Build Coastguard Worker# Several compiler flags select an ABI that is incompatible with the
6731*a67afe4dSAndroid Build Coastguard Worker# Cstd library. Avoid specifying it if any are in CXXFLAGS.
6732*a67afe4dSAndroid Build Coastguard Workerfunc_suncc_cstd_abi ()
6733*a67afe4dSAndroid Build Coastguard Worker{
6734*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
6735*a67afe4dSAndroid Build Coastguard Worker
6736*a67afe4dSAndroid Build Coastguard Worker    case " $compile_command " in
6737*a67afe4dSAndroid Build Coastguard Worker    *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*)
6738*a67afe4dSAndroid Build Coastguard Worker      suncc_use_cstd_abi=no
6739*a67afe4dSAndroid Build Coastguard Worker      ;;
6740*a67afe4dSAndroid Build Coastguard Worker    *)
6741*a67afe4dSAndroid Build Coastguard Worker      suncc_use_cstd_abi=yes
6742*a67afe4dSAndroid Build Coastguard Worker      ;;
6743*a67afe4dSAndroid Build Coastguard Worker    esac
6744*a67afe4dSAndroid Build Coastguard Worker}
6745*a67afe4dSAndroid Build Coastguard Worker
6746*a67afe4dSAndroid Build Coastguard Worker# func_mode_link arg...
6747*a67afe4dSAndroid Build Coastguard Workerfunc_mode_link ()
6748*a67afe4dSAndroid Build Coastguard Worker{
6749*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
6750*a67afe4dSAndroid Build Coastguard Worker
6751*a67afe4dSAndroid Build Coastguard Worker    case $host in
6752*a67afe4dSAndroid Build Coastguard Worker    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
6753*a67afe4dSAndroid Build Coastguard Worker      # It is impossible to link a dll without this setting, and
6754*a67afe4dSAndroid Build Coastguard Worker      # we shouldn't force the makefile maintainer to figure out
6755*a67afe4dSAndroid Build Coastguard Worker      # what system we are compiling for in order to pass an extra
6756*a67afe4dSAndroid Build Coastguard Worker      # flag for every libtool invocation.
6757*a67afe4dSAndroid Build Coastguard Worker      # allow_undefined=no
6758*a67afe4dSAndroid Build Coastguard Worker
6759*a67afe4dSAndroid Build Coastguard Worker      # FIXME: Unfortunately, there are problems with the above when trying
6760*a67afe4dSAndroid Build Coastguard Worker      # to make a dll that has undefined symbols, in which case not
6761*a67afe4dSAndroid Build Coastguard Worker      # even a static library is built.  For now, we need to specify
6762*a67afe4dSAndroid Build Coastguard Worker      # -no-undefined on the libtool link line when we can be certain
6763*a67afe4dSAndroid Build Coastguard Worker      # that all symbols are satisfied, otherwise we get a static library.
6764*a67afe4dSAndroid Build Coastguard Worker      allow_undefined=yes
6765*a67afe4dSAndroid Build Coastguard Worker      ;;
6766*a67afe4dSAndroid Build Coastguard Worker    *)
6767*a67afe4dSAndroid Build Coastguard Worker      allow_undefined=yes
6768*a67afe4dSAndroid Build Coastguard Worker      ;;
6769*a67afe4dSAndroid Build Coastguard Worker    esac
6770*a67afe4dSAndroid Build Coastguard Worker    libtool_args=$nonopt
6771*a67afe4dSAndroid Build Coastguard Worker    base_compile="$nonopt $@"
6772*a67afe4dSAndroid Build Coastguard Worker    compile_command=$nonopt
6773*a67afe4dSAndroid Build Coastguard Worker    finalize_command=$nonopt
6774*a67afe4dSAndroid Build Coastguard Worker
6775*a67afe4dSAndroid Build Coastguard Worker    compile_rpath=
6776*a67afe4dSAndroid Build Coastguard Worker    finalize_rpath=
6777*a67afe4dSAndroid Build Coastguard Worker    compile_shlibpath=
6778*a67afe4dSAndroid Build Coastguard Worker    finalize_shlibpath=
6779*a67afe4dSAndroid Build Coastguard Worker    convenience=
6780*a67afe4dSAndroid Build Coastguard Worker    old_convenience=
6781*a67afe4dSAndroid Build Coastguard Worker    deplibs=
6782*a67afe4dSAndroid Build Coastguard Worker    old_deplibs=
6783*a67afe4dSAndroid Build Coastguard Worker    compiler_flags=
6784*a67afe4dSAndroid Build Coastguard Worker    linker_flags=
6785*a67afe4dSAndroid Build Coastguard Worker    dllsearchpath=
6786*a67afe4dSAndroid Build Coastguard Worker    lib_search_path=`pwd`
6787*a67afe4dSAndroid Build Coastguard Worker    inst_prefix_dir=
6788*a67afe4dSAndroid Build Coastguard Worker    new_inherited_linker_flags=
6789*a67afe4dSAndroid Build Coastguard Worker
6790*a67afe4dSAndroid Build Coastguard Worker    avoid_version=no
6791*a67afe4dSAndroid Build Coastguard Worker    bindir=
6792*a67afe4dSAndroid Build Coastguard Worker    dlfiles=
6793*a67afe4dSAndroid Build Coastguard Worker    dlprefiles=
6794*a67afe4dSAndroid Build Coastguard Worker    dlself=no
6795*a67afe4dSAndroid Build Coastguard Worker    export_dynamic=no
6796*a67afe4dSAndroid Build Coastguard Worker    export_symbols=
6797*a67afe4dSAndroid Build Coastguard Worker    export_symbols_regex=
6798*a67afe4dSAndroid Build Coastguard Worker    generated=
6799*a67afe4dSAndroid Build Coastguard Worker    libobjs=
6800*a67afe4dSAndroid Build Coastguard Worker    ltlibs=
6801*a67afe4dSAndroid Build Coastguard Worker    module=no
6802*a67afe4dSAndroid Build Coastguard Worker    no_install=no
6803*a67afe4dSAndroid Build Coastguard Worker    objs=
6804*a67afe4dSAndroid Build Coastguard Worker    os2dllname=
6805*a67afe4dSAndroid Build Coastguard Worker    non_pic_objects=
6806*a67afe4dSAndroid Build Coastguard Worker    precious_files_regex=
6807*a67afe4dSAndroid Build Coastguard Worker    prefer_static_libs=no
6808*a67afe4dSAndroid Build Coastguard Worker    preload=false
6809*a67afe4dSAndroid Build Coastguard Worker    prev=
6810*a67afe4dSAndroid Build Coastguard Worker    prevarg=
6811*a67afe4dSAndroid Build Coastguard Worker    release=
6812*a67afe4dSAndroid Build Coastguard Worker    rpath=
6813*a67afe4dSAndroid Build Coastguard Worker    xrpath=
6814*a67afe4dSAndroid Build Coastguard Worker    perm_rpath=
6815*a67afe4dSAndroid Build Coastguard Worker    temp_rpath=
6816*a67afe4dSAndroid Build Coastguard Worker    thread_safe=no
6817*a67afe4dSAndroid Build Coastguard Worker    vinfo=
6818*a67afe4dSAndroid Build Coastguard Worker    vinfo_number=no
6819*a67afe4dSAndroid Build Coastguard Worker    weak_libs=
6820*a67afe4dSAndroid Build Coastguard Worker    single_module=$wl-single_module
6821*a67afe4dSAndroid Build Coastguard Worker    func_infer_tag $base_compile
6822*a67afe4dSAndroid Build Coastguard Worker
6823*a67afe4dSAndroid Build Coastguard Worker    # We need to know -static, to get the right output filenames.
6824*a67afe4dSAndroid Build Coastguard Worker    for arg
6825*a67afe4dSAndroid Build Coastguard Worker    do
6826*a67afe4dSAndroid Build Coastguard Worker      case $arg in
6827*a67afe4dSAndroid Build Coastguard Worker      -shared)
6828*a67afe4dSAndroid Build Coastguard Worker	test yes != "$build_libtool_libs" \
6829*a67afe4dSAndroid Build Coastguard Worker	  && func_fatal_configuration "cannot build a shared library"
6830*a67afe4dSAndroid Build Coastguard Worker	build_old_libs=no
6831*a67afe4dSAndroid Build Coastguard Worker	break
6832*a67afe4dSAndroid Build Coastguard Worker	;;
6833*a67afe4dSAndroid Build Coastguard Worker      -all-static | -static | -static-libtool-libs)
6834*a67afe4dSAndroid Build Coastguard Worker	case $arg in
6835*a67afe4dSAndroid Build Coastguard Worker	-all-static)
6836*a67afe4dSAndroid Build Coastguard Worker	  if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then
6837*a67afe4dSAndroid Build Coastguard Worker	    func_warning "complete static linking is impossible in this configuration"
6838*a67afe4dSAndroid Build Coastguard Worker	  fi
6839*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$link_static_flag"; then
6840*a67afe4dSAndroid Build Coastguard Worker	    dlopen_self=$dlopen_self_static
6841*a67afe4dSAndroid Build Coastguard Worker	  fi
6842*a67afe4dSAndroid Build Coastguard Worker	  prefer_static_libs=yes
6843*a67afe4dSAndroid Build Coastguard Worker	  ;;
6844*a67afe4dSAndroid Build Coastguard Worker	-static)
6845*a67afe4dSAndroid Build Coastguard Worker	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
6846*a67afe4dSAndroid Build Coastguard Worker	    dlopen_self=$dlopen_self_static
6847*a67afe4dSAndroid Build Coastguard Worker	  fi
6848*a67afe4dSAndroid Build Coastguard Worker	  prefer_static_libs=built
6849*a67afe4dSAndroid Build Coastguard Worker	  ;;
6850*a67afe4dSAndroid Build Coastguard Worker	-static-libtool-libs)
6851*a67afe4dSAndroid Build Coastguard Worker	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
6852*a67afe4dSAndroid Build Coastguard Worker	    dlopen_self=$dlopen_self_static
6853*a67afe4dSAndroid Build Coastguard Worker	  fi
6854*a67afe4dSAndroid Build Coastguard Worker	  prefer_static_libs=yes
6855*a67afe4dSAndroid Build Coastguard Worker	  ;;
6856*a67afe4dSAndroid Build Coastguard Worker	esac
6857*a67afe4dSAndroid Build Coastguard Worker	build_libtool_libs=no
6858*a67afe4dSAndroid Build Coastguard Worker	build_old_libs=yes
6859*a67afe4dSAndroid Build Coastguard Worker	break
6860*a67afe4dSAndroid Build Coastguard Worker	;;
6861*a67afe4dSAndroid Build Coastguard Worker      esac
6862*a67afe4dSAndroid Build Coastguard Worker    done
6863*a67afe4dSAndroid Build Coastguard Worker
6864*a67afe4dSAndroid Build Coastguard Worker    # See if our shared archives depend on static archives.
6865*a67afe4dSAndroid Build Coastguard Worker    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
6866*a67afe4dSAndroid Build Coastguard Worker
6867*a67afe4dSAndroid Build Coastguard Worker    # Go through the arguments, transforming them on the way.
6868*a67afe4dSAndroid Build Coastguard Worker    while test "$#" -gt 0; do
6869*a67afe4dSAndroid Build Coastguard Worker      arg=$1
6870*a67afe4dSAndroid Build Coastguard Worker      shift
6871*a67afe4dSAndroid Build Coastguard Worker      func_quote_arg pretty,unquoted "$arg"
6872*a67afe4dSAndroid Build Coastguard Worker      qarg=$func_quote_arg_unquoted_result
6873*a67afe4dSAndroid Build Coastguard Worker      func_append libtool_args " $func_quote_arg_result"
6874*a67afe4dSAndroid Build Coastguard Worker
6875*a67afe4dSAndroid Build Coastguard Worker      # If the previous option needs an argument, assign it.
6876*a67afe4dSAndroid Build Coastguard Worker      if test -n "$prev"; then
6877*a67afe4dSAndroid Build Coastguard Worker	case $prev in
6878*a67afe4dSAndroid Build Coastguard Worker	output)
6879*a67afe4dSAndroid Build Coastguard Worker	  func_append compile_command " @OUTPUT@"
6880*a67afe4dSAndroid Build Coastguard Worker	  func_append finalize_command " @OUTPUT@"
6881*a67afe4dSAndroid Build Coastguard Worker	  ;;
6882*a67afe4dSAndroid Build Coastguard Worker	esac
6883*a67afe4dSAndroid Build Coastguard Worker
6884*a67afe4dSAndroid Build Coastguard Worker	case $prev in
6885*a67afe4dSAndroid Build Coastguard Worker	bindir)
6886*a67afe4dSAndroid Build Coastguard Worker	  bindir=$arg
6887*a67afe4dSAndroid Build Coastguard Worker	  prev=
6888*a67afe4dSAndroid Build Coastguard Worker	  continue
6889*a67afe4dSAndroid Build Coastguard Worker	  ;;
6890*a67afe4dSAndroid Build Coastguard Worker	dlfiles|dlprefiles)
6891*a67afe4dSAndroid Build Coastguard Worker	  $preload || {
6892*a67afe4dSAndroid Build Coastguard Worker	    # Add the symbol object into the linking commands.
6893*a67afe4dSAndroid Build Coastguard Worker	    func_append compile_command " @SYMFILE@"
6894*a67afe4dSAndroid Build Coastguard Worker	    func_append finalize_command " @SYMFILE@"
6895*a67afe4dSAndroid Build Coastguard Worker	    preload=:
6896*a67afe4dSAndroid Build Coastguard Worker	  }
6897*a67afe4dSAndroid Build Coastguard Worker	  case $arg in
6898*a67afe4dSAndroid Build Coastguard Worker	  *.la | *.lo) ;;  # We handle these cases below.
6899*a67afe4dSAndroid Build Coastguard Worker	  force)
6900*a67afe4dSAndroid Build Coastguard Worker	    if test no = "$dlself"; then
6901*a67afe4dSAndroid Build Coastguard Worker	      dlself=needless
6902*a67afe4dSAndroid Build Coastguard Worker	      export_dynamic=yes
6903*a67afe4dSAndroid Build Coastguard Worker	    fi
6904*a67afe4dSAndroid Build Coastguard Worker	    prev=
6905*a67afe4dSAndroid Build Coastguard Worker	    continue
6906*a67afe4dSAndroid Build Coastguard Worker	    ;;
6907*a67afe4dSAndroid Build Coastguard Worker	  self)
6908*a67afe4dSAndroid Build Coastguard Worker	    if test dlprefiles = "$prev"; then
6909*a67afe4dSAndroid Build Coastguard Worker	      dlself=yes
6910*a67afe4dSAndroid Build Coastguard Worker	    elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then
6911*a67afe4dSAndroid Build Coastguard Worker	      dlself=yes
6912*a67afe4dSAndroid Build Coastguard Worker	    else
6913*a67afe4dSAndroid Build Coastguard Worker	      dlself=needless
6914*a67afe4dSAndroid Build Coastguard Worker	      export_dynamic=yes
6915*a67afe4dSAndroid Build Coastguard Worker	    fi
6916*a67afe4dSAndroid Build Coastguard Worker	    prev=
6917*a67afe4dSAndroid Build Coastguard Worker	    continue
6918*a67afe4dSAndroid Build Coastguard Worker	    ;;
6919*a67afe4dSAndroid Build Coastguard Worker	  *)
6920*a67afe4dSAndroid Build Coastguard Worker	    if test dlfiles = "$prev"; then
6921*a67afe4dSAndroid Build Coastguard Worker	      func_append dlfiles " $arg"
6922*a67afe4dSAndroid Build Coastguard Worker	    else
6923*a67afe4dSAndroid Build Coastguard Worker	      func_append dlprefiles " $arg"
6924*a67afe4dSAndroid Build Coastguard Worker	    fi
6925*a67afe4dSAndroid Build Coastguard Worker	    prev=
6926*a67afe4dSAndroid Build Coastguard Worker	    continue
6927*a67afe4dSAndroid Build Coastguard Worker	    ;;
6928*a67afe4dSAndroid Build Coastguard Worker	  esac
6929*a67afe4dSAndroid Build Coastguard Worker	  ;;
6930*a67afe4dSAndroid Build Coastguard Worker	expsyms)
6931*a67afe4dSAndroid Build Coastguard Worker	  export_symbols=$arg
6932*a67afe4dSAndroid Build Coastguard Worker	  test -f "$arg" \
6933*a67afe4dSAndroid Build Coastguard Worker	    || func_fatal_error "symbol file '$arg' does not exist"
6934*a67afe4dSAndroid Build Coastguard Worker	  prev=
6935*a67afe4dSAndroid Build Coastguard Worker	  continue
6936*a67afe4dSAndroid Build Coastguard Worker	  ;;
6937*a67afe4dSAndroid Build Coastguard Worker	expsyms_regex)
6938*a67afe4dSAndroid Build Coastguard Worker	  export_symbols_regex=$arg
6939*a67afe4dSAndroid Build Coastguard Worker	  prev=
6940*a67afe4dSAndroid Build Coastguard Worker	  continue
6941*a67afe4dSAndroid Build Coastguard Worker	  ;;
6942*a67afe4dSAndroid Build Coastguard Worker	framework)
6943*a67afe4dSAndroid Build Coastguard Worker	  case $host in
6944*a67afe4dSAndroid Build Coastguard Worker	    *-*-darwin*)
6945*a67afe4dSAndroid Build Coastguard Worker	      case "$deplibs " in
6946*a67afe4dSAndroid Build Coastguard Worker		*" $qarg.ltframework "*) ;;
6947*a67afe4dSAndroid Build Coastguard Worker		*) func_append deplibs " $qarg.ltframework" # this is fixed later
6948*a67afe4dSAndroid Build Coastguard Worker		   ;;
6949*a67afe4dSAndroid Build Coastguard Worker	      esac
6950*a67afe4dSAndroid Build Coastguard Worker	      ;;
6951*a67afe4dSAndroid Build Coastguard Worker	  esac
6952*a67afe4dSAndroid Build Coastguard Worker	  prev=
6953*a67afe4dSAndroid Build Coastguard Worker	  continue
6954*a67afe4dSAndroid Build Coastguard Worker	  ;;
6955*a67afe4dSAndroid Build Coastguard Worker	inst_prefix)
6956*a67afe4dSAndroid Build Coastguard Worker	  inst_prefix_dir=$arg
6957*a67afe4dSAndroid Build Coastguard Worker	  prev=
6958*a67afe4dSAndroid Build Coastguard Worker	  continue
6959*a67afe4dSAndroid Build Coastguard Worker	  ;;
6960*a67afe4dSAndroid Build Coastguard Worker	mllvm)
6961*a67afe4dSAndroid Build Coastguard Worker	  # Clang does not use LLVM to link, so we can simply discard any
6962*a67afe4dSAndroid Build Coastguard Worker	  # '-mllvm $arg' options when doing the link step.
6963*a67afe4dSAndroid Build Coastguard Worker	  prev=
6964*a67afe4dSAndroid Build Coastguard Worker	  continue
6965*a67afe4dSAndroid Build Coastguard Worker	  ;;
6966*a67afe4dSAndroid Build Coastguard Worker	objectlist)
6967*a67afe4dSAndroid Build Coastguard Worker	  if test -f "$arg"; then
6968*a67afe4dSAndroid Build Coastguard Worker	    save_arg=$arg
6969*a67afe4dSAndroid Build Coastguard Worker	    moreargs=
6970*a67afe4dSAndroid Build Coastguard Worker	    for fil in `cat "$save_arg"`
6971*a67afe4dSAndroid Build Coastguard Worker	    do
6972*a67afe4dSAndroid Build Coastguard Worker#	      func_append moreargs " $fil"
6973*a67afe4dSAndroid Build Coastguard Worker	      arg=$fil
6974*a67afe4dSAndroid Build Coastguard Worker	      # A libtool-controlled object.
6975*a67afe4dSAndroid Build Coastguard Worker
6976*a67afe4dSAndroid Build Coastguard Worker	      # Check to see that this really is a libtool object.
6977*a67afe4dSAndroid Build Coastguard Worker	      if func_lalib_unsafe_p "$arg"; then
6978*a67afe4dSAndroid Build Coastguard Worker		pic_object=
6979*a67afe4dSAndroid Build Coastguard Worker		non_pic_object=
6980*a67afe4dSAndroid Build Coastguard Worker
6981*a67afe4dSAndroid Build Coastguard Worker		# Read the .lo file
6982*a67afe4dSAndroid Build Coastguard Worker		func_source "$arg"
6983*a67afe4dSAndroid Build Coastguard Worker
6984*a67afe4dSAndroid Build Coastguard Worker		if test -z "$pic_object" ||
6985*a67afe4dSAndroid Build Coastguard Worker		   test -z "$non_pic_object" ||
6986*a67afe4dSAndroid Build Coastguard Worker		   test none = "$pic_object" &&
6987*a67afe4dSAndroid Build Coastguard Worker		   test none = "$non_pic_object"; then
6988*a67afe4dSAndroid Build Coastguard Worker		  func_fatal_error "cannot find name of object for '$arg'"
6989*a67afe4dSAndroid Build Coastguard Worker		fi
6990*a67afe4dSAndroid Build Coastguard Worker
6991*a67afe4dSAndroid Build Coastguard Worker		# Extract subdirectory from the argument.
6992*a67afe4dSAndroid Build Coastguard Worker		func_dirname "$arg" "/" ""
6993*a67afe4dSAndroid Build Coastguard Worker		xdir=$func_dirname_result
6994*a67afe4dSAndroid Build Coastguard Worker
6995*a67afe4dSAndroid Build Coastguard Worker		if test none != "$pic_object"; then
6996*a67afe4dSAndroid Build Coastguard Worker		  # Prepend the subdirectory the object is found in.
6997*a67afe4dSAndroid Build Coastguard Worker		  pic_object=$xdir$pic_object
6998*a67afe4dSAndroid Build Coastguard Worker
6999*a67afe4dSAndroid Build Coastguard Worker		  if test dlfiles = "$prev"; then
7000*a67afe4dSAndroid Build Coastguard Worker		    if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
7001*a67afe4dSAndroid Build Coastguard Worker		      func_append dlfiles " $pic_object"
7002*a67afe4dSAndroid Build Coastguard Worker		      prev=
7003*a67afe4dSAndroid Build Coastguard Worker		      continue
7004*a67afe4dSAndroid Build Coastguard Worker		    else
7005*a67afe4dSAndroid Build Coastguard Worker		      # If libtool objects are unsupported, then we need to preload.
7006*a67afe4dSAndroid Build Coastguard Worker		      prev=dlprefiles
7007*a67afe4dSAndroid Build Coastguard Worker		    fi
7008*a67afe4dSAndroid Build Coastguard Worker		  fi
7009*a67afe4dSAndroid Build Coastguard Worker
7010*a67afe4dSAndroid Build Coastguard Worker		  # CHECK ME:  I think I busted this.  -Ossama
7011*a67afe4dSAndroid Build Coastguard Worker		  if test dlprefiles = "$prev"; then
7012*a67afe4dSAndroid Build Coastguard Worker		    # Preload the old-style object.
7013*a67afe4dSAndroid Build Coastguard Worker		    func_append dlprefiles " $pic_object"
7014*a67afe4dSAndroid Build Coastguard Worker		    prev=
7015*a67afe4dSAndroid Build Coastguard Worker		  fi
7016*a67afe4dSAndroid Build Coastguard Worker
7017*a67afe4dSAndroid Build Coastguard Worker		  # A PIC object.
7018*a67afe4dSAndroid Build Coastguard Worker		  func_append libobjs " $pic_object"
7019*a67afe4dSAndroid Build Coastguard Worker		  arg=$pic_object
7020*a67afe4dSAndroid Build Coastguard Worker		fi
7021*a67afe4dSAndroid Build Coastguard Worker
7022*a67afe4dSAndroid Build Coastguard Worker		# Non-PIC object.
7023*a67afe4dSAndroid Build Coastguard Worker		if test none != "$non_pic_object"; then
7024*a67afe4dSAndroid Build Coastguard Worker		  # Prepend the subdirectory the object is found in.
7025*a67afe4dSAndroid Build Coastguard Worker		  non_pic_object=$xdir$non_pic_object
7026*a67afe4dSAndroid Build Coastguard Worker
7027*a67afe4dSAndroid Build Coastguard Worker		  # A standard non-PIC object
7028*a67afe4dSAndroid Build Coastguard Worker		  func_append non_pic_objects " $non_pic_object"
7029*a67afe4dSAndroid Build Coastguard Worker		  if test -z "$pic_object" || test none = "$pic_object"; then
7030*a67afe4dSAndroid Build Coastguard Worker		    arg=$non_pic_object
7031*a67afe4dSAndroid Build Coastguard Worker		  fi
7032*a67afe4dSAndroid Build Coastguard Worker		else
7033*a67afe4dSAndroid Build Coastguard Worker		  # If the PIC object exists, use it instead.
7034*a67afe4dSAndroid Build Coastguard Worker		  # $xdir was prepended to $pic_object above.
7035*a67afe4dSAndroid Build Coastguard Worker		  non_pic_object=$pic_object
7036*a67afe4dSAndroid Build Coastguard Worker		  func_append non_pic_objects " $non_pic_object"
7037*a67afe4dSAndroid Build Coastguard Worker		fi
7038*a67afe4dSAndroid Build Coastguard Worker	      else
7039*a67afe4dSAndroid Build Coastguard Worker		# Only an error if not doing a dry-run.
7040*a67afe4dSAndroid Build Coastguard Worker		if $opt_dry_run; then
7041*a67afe4dSAndroid Build Coastguard Worker		  # Extract subdirectory from the argument.
7042*a67afe4dSAndroid Build Coastguard Worker		  func_dirname "$arg" "/" ""
7043*a67afe4dSAndroid Build Coastguard Worker		  xdir=$func_dirname_result
7044*a67afe4dSAndroid Build Coastguard Worker
7045*a67afe4dSAndroid Build Coastguard Worker		  func_lo2o "$arg"
7046*a67afe4dSAndroid Build Coastguard Worker		  pic_object=$xdir$objdir/$func_lo2o_result
7047*a67afe4dSAndroid Build Coastguard Worker		  non_pic_object=$xdir$func_lo2o_result
7048*a67afe4dSAndroid Build Coastguard Worker		  func_append libobjs " $pic_object"
7049*a67afe4dSAndroid Build Coastguard Worker		  func_append non_pic_objects " $non_pic_object"
7050*a67afe4dSAndroid Build Coastguard Worker	        else
7051*a67afe4dSAndroid Build Coastguard Worker		  func_fatal_error "'$arg' is not a valid libtool object"
7052*a67afe4dSAndroid Build Coastguard Worker		fi
7053*a67afe4dSAndroid Build Coastguard Worker	      fi
7054*a67afe4dSAndroid Build Coastguard Worker	    done
7055*a67afe4dSAndroid Build Coastguard Worker	  else
7056*a67afe4dSAndroid Build Coastguard Worker	    func_fatal_error "link input file '$arg' does not exist"
7057*a67afe4dSAndroid Build Coastguard Worker	  fi
7058*a67afe4dSAndroid Build Coastguard Worker	  arg=$save_arg
7059*a67afe4dSAndroid Build Coastguard Worker	  prev=
7060*a67afe4dSAndroid Build Coastguard Worker	  continue
7061*a67afe4dSAndroid Build Coastguard Worker	  ;;
7062*a67afe4dSAndroid Build Coastguard Worker	os2dllname)
7063*a67afe4dSAndroid Build Coastguard Worker	  os2dllname=$arg
7064*a67afe4dSAndroid Build Coastguard Worker	  prev=
7065*a67afe4dSAndroid Build Coastguard Worker	  continue
7066*a67afe4dSAndroid Build Coastguard Worker	  ;;
7067*a67afe4dSAndroid Build Coastguard Worker	precious_regex)
7068*a67afe4dSAndroid Build Coastguard Worker	  precious_files_regex=$arg
7069*a67afe4dSAndroid Build Coastguard Worker	  prev=
7070*a67afe4dSAndroid Build Coastguard Worker	  continue
7071*a67afe4dSAndroid Build Coastguard Worker	  ;;
7072*a67afe4dSAndroid Build Coastguard Worker	release)
7073*a67afe4dSAndroid Build Coastguard Worker	  release=-$arg
7074*a67afe4dSAndroid Build Coastguard Worker	  prev=
7075*a67afe4dSAndroid Build Coastguard Worker	  continue
7076*a67afe4dSAndroid Build Coastguard Worker	  ;;
7077*a67afe4dSAndroid Build Coastguard Worker	rpath | xrpath)
7078*a67afe4dSAndroid Build Coastguard Worker	  # We need an absolute path.
7079*a67afe4dSAndroid Build Coastguard Worker	  case $arg in
7080*a67afe4dSAndroid Build Coastguard Worker	  [\\/]* | [A-Za-z]:[\\/]*) ;;
7081*a67afe4dSAndroid Build Coastguard Worker	  *)
7082*a67afe4dSAndroid Build Coastguard Worker	    func_fatal_error "only absolute run-paths are allowed"
7083*a67afe4dSAndroid Build Coastguard Worker	    ;;
7084*a67afe4dSAndroid Build Coastguard Worker	  esac
7085*a67afe4dSAndroid Build Coastguard Worker	  if test rpath = "$prev"; then
7086*a67afe4dSAndroid Build Coastguard Worker	    case "$rpath " in
7087*a67afe4dSAndroid Build Coastguard Worker	    *" $arg "*) ;;
7088*a67afe4dSAndroid Build Coastguard Worker	    *) func_append rpath " $arg" ;;
7089*a67afe4dSAndroid Build Coastguard Worker	    esac
7090*a67afe4dSAndroid Build Coastguard Worker	  else
7091*a67afe4dSAndroid Build Coastguard Worker	    case "$xrpath " in
7092*a67afe4dSAndroid Build Coastguard Worker	    *" $arg "*) ;;
7093*a67afe4dSAndroid Build Coastguard Worker	    *) func_append xrpath " $arg" ;;
7094*a67afe4dSAndroid Build Coastguard Worker	    esac
7095*a67afe4dSAndroid Build Coastguard Worker	  fi
7096*a67afe4dSAndroid Build Coastguard Worker	  prev=
7097*a67afe4dSAndroid Build Coastguard Worker	  continue
7098*a67afe4dSAndroid Build Coastguard Worker	  ;;
7099*a67afe4dSAndroid Build Coastguard Worker	shrext)
7100*a67afe4dSAndroid Build Coastguard Worker	  shrext_cmds=$arg
7101*a67afe4dSAndroid Build Coastguard Worker	  prev=
7102*a67afe4dSAndroid Build Coastguard Worker	  continue
7103*a67afe4dSAndroid Build Coastguard Worker	  ;;
7104*a67afe4dSAndroid Build Coastguard Worker	weak)
7105*a67afe4dSAndroid Build Coastguard Worker	  func_append weak_libs " $arg"
7106*a67afe4dSAndroid Build Coastguard Worker	  prev=
7107*a67afe4dSAndroid Build Coastguard Worker	  continue
7108*a67afe4dSAndroid Build Coastguard Worker	  ;;
7109*a67afe4dSAndroid Build Coastguard Worker	xassembler)
7110*a67afe4dSAndroid Build Coastguard Worker	  func_append compiler_flags " -Xassembler $qarg"
7111*a67afe4dSAndroid Build Coastguard Worker	  prev=
7112*a67afe4dSAndroid Build Coastguard Worker	  func_append compile_command " -Xassembler $qarg"
7113*a67afe4dSAndroid Build Coastguard Worker	  func_append finalize_command " -Xassembler $qarg"
7114*a67afe4dSAndroid Build Coastguard Worker	  continue
7115*a67afe4dSAndroid Build Coastguard Worker	  ;;
7116*a67afe4dSAndroid Build Coastguard Worker	xcclinker)
7117*a67afe4dSAndroid Build Coastguard Worker	  func_append linker_flags " $qarg"
7118*a67afe4dSAndroid Build Coastguard Worker	  func_append compiler_flags " $qarg"
7119*a67afe4dSAndroid Build Coastguard Worker	  prev=
7120*a67afe4dSAndroid Build Coastguard Worker	  func_append compile_command " $qarg"
7121*a67afe4dSAndroid Build Coastguard Worker	  func_append finalize_command " $qarg"
7122*a67afe4dSAndroid Build Coastguard Worker	  continue
7123*a67afe4dSAndroid Build Coastguard Worker	  ;;
7124*a67afe4dSAndroid Build Coastguard Worker	xcompiler)
7125*a67afe4dSAndroid Build Coastguard Worker	  func_append compiler_flags " $qarg"
7126*a67afe4dSAndroid Build Coastguard Worker	  prev=
7127*a67afe4dSAndroid Build Coastguard Worker	  func_append compile_command " $qarg"
7128*a67afe4dSAndroid Build Coastguard Worker	  func_append finalize_command " $qarg"
7129*a67afe4dSAndroid Build Coastguard Worker	  continue
7130*a67afe4dSAndroid Build Coastguard Worker	  ;;
7131*a67afe4dSAndroid Build Coastguard Worker	xlinker)
7132*a67afe4dSAndroid Build Coastguard Worker	  func_append linker_flags " $qarg"
7133*a67afe4dSAndroid Build Coastguard Worker	  func_append compiler_flags " $wl$qarg"
7134*a67afe4dSAndroid Build Coastguard Worker	  prev=
7135*a67afe4dSAndroid Build Coastguard Worker	  func_append compile_command " $wl$qarg"
7136*a67afe4dSAndroid Build Coastguard Worker	  func_append finalize_command " $wl$qarg"
7137*a67afe4dSAndroid Build Coastguard Worker	  continue
7138*a67afe4dSAndroid Build Coastguard Worker	  ;;
7139*a67afe4dSAndroid Build Coastguard Worker	*)
7140*a67afe4dSAndroid Build Coastguard Worker	  eval "$prev=\"\$arg\""
7141*a67afe4dSAndroid Build Coastguard Worker	  prev=
7142*a67afe4dSAndroid Build Coastguard Worker	  continue
7143*a67afe4dSAndroid Build Coastguard Worker	  ;;
7144*a67afe4dSAndroid Build Coastguard Worker	esac
7145*a67afe4dSAndroid Build Coastguard Worker      fi # test -n "$prev"
7146*a67afe4dSAndroid Build Coastguard Worker
7147*a67afe4dSAndroid Build Coastguard Worker      prevarg=$arg
7148*a67afe4dSAndroid Build Coastguard Worker
7149*a67afe4dSAndroid Build Coastguard Worker      case $arg in
7150*a67afe4dSAndroid Build Coastguard Worker      -all-static)
7151*a67afe4dSAndroid Build Coastguard Worker	if test -n "$link_static_flag"; then
7152*a67afe4dSAndroid Build Coastguard Worker	  # See comment for -static flag below, for more details.
7153*a67afe4dSAndroid Build Coastguard Worker	  func_append compile_command " $link_static_flag"
7154*a67afe4dSAndroid Build Coastguard Worker	  func_append finalize_command " $link_static_flag"
7155*a67afe4dSAndroid Build Coastguard Worker	fi
7156*a67afe4dSAndroid Build Coastguard Worker	continue
7157*a67afe4dSAndroid Build Coastguard Worker	;;
7158*a67afe4dSAndroid Build Coastguard Worker
7159*a67afe4dSAndroid Build Coastguard Worker      -allow-undefined)
7160*a67afe4dSAndroid Build Coastguard Worker	# FIXME: remove this flag sometime in the future.
7161*a67afe4dSAndroid Build Coastguard Worker	func_fatal_error "'-allow-undefined' must not be used because it is the default"
7162*a67afe4dSAndroid Build Coastguard Worker	;;
7163*a67afe4dSAndroid Build Coastguard Worker
7164*a67afe4dSAndroid Build Coastguard Worker      -avoid-version)
7165*a67afe4dSAndroid Build Coastguard Worker	avoid_version=yes
7166*a67afe4dSAndroid Build Coastguard Worker	continue
7167*a67afe4dSAndroid Build Coastguard Worker	;;
7168*a67afe4dSAndroid Build Coastguard Worker
7169*a67afe4dSAndroid Build Coastguard Worker      -bindir)
7170*a67afe4dSAndroid Build Coastguard Worker	prev=bindir
7171*a67afe4dSAndroid Build Coastguard Worker	continue
7172*a67afe4dSAndroid Build Coastguard Worker	;;
7173*a67afe4dSAndroid Build Coastguard Worker
7174*a67afe4dSAndroid Build Coastguard Worker      -dlopen)
7175*a67afe4dSAndroid Build Coastguard Worker	prev=dlfiles
7176*a67afe4dSAndroid Build Coastguard Worker	continue
7177*a67afe4dSAndroid Build Coastguard Worker	;;
7178*a67afe4dSAndroid Build Coastguard Worker
7179*a67afe4dSAndroid Build Coastguard Worker      -dlpreopen)
7180*a67afe4dSAndroid Build Coastguard Worker	prev=dlprefiles
7181*a67afe4dSAndroid Build Coastguard Worker	continue
7182*a67afe4dSAndroid Build Coastguard Worker	;;
7183*a67afe4dSAndroid Build Coastguard Worker
7184*a67afe4dSAndroid Build Coastguard Worker      -export-dynamic)
7185*a67afe4dSAndroid Build Coastguard Worker	export_dynamic=yes
7186*a67afe4dSAndroid Build Coastguard Worker	continue
7187*a67afe4dSAndroid Build Coastguard Worker	;;
7188*a67afe4dSAndroid Build Coastguard Worker
7189*a67afe4dSAndroid Build Coastguard Worker      -export-symbols | -export-symbols-regex)
7190*a67afe4dSAndroid Build Coastguard Worker	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
7191*a67afe4dSAndroid Build Coastguard Worker	  func_fatal_error "more than one -exported-symbols argument is not allowed"
7192*a67afe4dSAndroid Build Coastguard Worker	fi
7193*a67afe4dSAndroid Build Coastguard Worker	if test X-export-symbols = "X$arg"; then
7194*a67afe4dSAndroid Build Coastguard Worker	  prev=expsyms
7195*a67afe4dSAndroid Build Coastguard Worker	else
7196*a67afe4dSAndroid Build Coastguard Worker	  prev=expsyms_regex
7197*a67afe4dSAndroid Build Coastguard Worker	fi
7198*a67afe4dSAndroid Build Coastguard Worker	continue
7199*a67afe4dSAndroid Build Coastguard Worker	;;
7200*a67afe4dSAndroid Build Coastguard Worker
7201*a67afe4dSAndroid Build Coastguard Worker      -framework)
7202*a67afe4dSAndroid Build Coastguard Worker	prev=framework
7203*a67afe4dSAndroid Build Coastguard Worker	continue
7204*a67afe4dSAndroid Build Coastguard Worker	;;
7205*a67afe4dSAndroid Build Coastguard Worker
7206*a67afe4dSAndroid Build Coastguard Worker      -inst-prefix-dir)
7207*a67afe4dSAndroid Build Coastguard Worker	prev=inst_prefix
7208*a67afe4dSAndroid Build Coastguard Worker	continue
7209*a67afe4dSAndroid Build Coastguard Worker	;;
7210*a67afe4dSAndroid Build Coastguard Worker
7211*a67afe4dSAndroid Build Coastguard Worker      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
7212*a67afe4dSAndroid Build Coastguard Worker      # so, if we see these flags be careful not to treat them like -L
7213*a67afe4dSAndroid Build Coastguard Worker      -L[A-Z][A-Z]*:*)
7214*a67afe4dSAndroid Build Coastguard Worker	case $with_gcc/$host in
7215*a67afe4dSAndroid Build Coastguard Worker	no/*-*-irix* | /*-*-irix*)
7216*a67afe4dSAndroid Build Coastguard Worker	  func_append compile_command " $arg"
7217*a67afe4dSAndroid Build Coastguard Worker	  func_append finalize_command " $arg"
7218*a67afe4dSAndroid Build Coastguard Worker	  ;;
7219*a67afe4dSAndroid Build Coastguard Worker	esac
7220*a67afe4dSAndroid Build Coastguard Worker	continue
7221*a67afe4dSAndroid Build Coastguard Worker	;;
7222*a67afe4dSAndroid Build Coastguard Worker
7223*a67afe4dSAndroid Build Coastguard Worker      -L*)
7224*a67afe4dSAndroid Build Coastguard Worker	func_stripname "-L" '' "$arg"
7225*a67afe4dSAndroid Build Coastguard Worker	if test -z "$func_stripname_result"; then
7226*a67afe4dSAndroid Build Coastguard Worker	  if test "$#" -gt 0; then
7227*a67afe4dSAndroid Build Coastguard Worker	    func_fatal_error "require no space between '-L' and '$1'"
7228*a67afe4dSAndroid Build Coastguard Worker	  else
7229*a67afe4dSAndroid Build Coastguard Worker	    func_fatal_error "need path for '-L' option"
7230*a67afe4dSAndroid Build Coastguard Worker	  fi
7231*a67afe4dSAndroid Build Coastguard Worker	fi
7232*a67afe4dSAndroid Build Coastguard Worker	func_resolve_sysroot "$func_stripname_result"
7233*a67afe4dSAndroid Build Coastguard Worker	dir=$func_resolve_sysroot_result
7234*a67afe4dSAndroid Build Coastguard Worker	# We need an absolute path.
7235*a67afe4dSAndroid Build Coastguard Worker	case $dir in
7236*a67afe4dSAndroid Build Coastguard Worker	[\\/]* | [A-Za-z]:[\\/]*) ;;
7237*a67afe4dSAndroid Build Coastguard Worker	*)
7238*a67afe4dSAndroid Build Coastguard Worker	  absdir=`cd "$dir" && pwd`
7239*a67afe4dSAndroid Build Coastguard Worker	  test -z "$absdir" && \
7240*a67afe4dSAndroid Build Coastguard Worker	    func_fatal_error "cannot determine absolute directory name of '$dir'"
7241*a67afe4dSAndroid Build Coastguard Worker	  dir=$absdir
7242*a67afe4dSAndroid Build Coastguard Worker	  ;;
7243*a67afe4dSAndroid Build Coastguard Worker	esac
7244*a67afe4dSAndroid Build Coastguard Worker	case "$deplibs " in
7245*a67afe4dSAndroid Build Coastguard Worker	*" -L$dir "* | *" $arg "*)
7246*a67afe4dSAndroid Build Coastguard Worker	  # Will only happen for absolute or sysroot arguments
7247*a67afe4dSAndroid Build Coastguard Worker	  ;;
7248*a67afe4dSAndroid Build Coastguard Worker	*)
7249*a67afe4dSAndroid Build Coastguard Worker	  # Preserve sysroot, but never include relative directories
7250*a67afe4dSAndroid Build Coastguard Worker	  case $dir in
7251*a67afe4dSAndroid Build Coastguard Worker	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
7252*a67afe4dSAndroid Build Coastguard Worker	    *) func_append deplibs " -L$dir" ;;
7253*a67afe4dSAndroid Build Coastguard Worker	  esac
7254*a67afe4dSAndroid Build Coastguard Worker	  func_append lib_search_path " $dir"
7255*a67afe4dSAndroid Build Coastguard Worker	  ;;
7256*a67afe4dSAndroid Build Coastguard Worker	esac
7257*a67afe4dSAndroid Build Coastguard Worker	case $host in
7258*a67afe4dSAndroid Build Coastguard Worker	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
7259*a67afe4dSAndroid Build Coastguard Worker	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
7260*a67afe4dSAndroid Build Coastguard Worker	  case :$dllsearchpath: in
7261*a67afe4dSAndroid Build Coastguard Worker	  *":$dir:"*) ;;
7262*a67afe4dSAndroid Build Coastguard Worker	  ::) dllsearchpath=$dir;;
7263*a67afe4dSAndroid Build Coastguard Worker	  *) func_append dllsearchpath ":$dir";;
7264*a67afe4dSAndroid Build Coastguard Worker	  esac
7265*a67afe4dSAndroid Build Coastguard Worker	  case :$dllsearchpath: in
7266*a67afe4dSAndroid Build Coastguard Worker	  *":$testbindir:"*) ;;
7267*a67afe4dSAndroid Build Coastguard Worker	  ::) dllsearchpath=$testbindir;;
7268*a67afe4dSAndroid Build Coastguard Worker	  *) func_append dllsearchpath ":$testbindir";;
7269*a67afe4dSAndroid Build Coastguard Worker	  esac
7270*a67afe4dSAndroid Build Coastguard Worker	  ;;
7271*a67afe4dSAndroid Build Coastguard Worker	esac
7272*a67afe4dSAndroid Build Coastguard Worker	continue
7273*a67afe4dSAndroid Build Coastguard Worker	;;
7274*a67afe4dSAndroid Build Coastguard Worker
7275*a67afe4dSAndroid Build Coastguard Worker      -l*)
7276*a67afe4dSAndroid Build Coastguard Worker	if test X-lc = "X$arg" || test X-lm = "X$arg"; then
7277*a67afe4dSAndroid Build Coastguard Worker	  case $host in
7278*a67afe4dSAndroid Build Coastguard Worker	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
7279*a67afe4dSAndroid Build Coastguard Worker	    # These systems don't actually have a C or math library (as such)
7280*a67afe4dSAndroid Build Coastguard Worker	    continue
7281*a67afe4dSAndroid Build Coastguard Worker	    ;;
7282*a67afe4dSAndroid Build Coastguard Worker	  *-*-os2*)
7283*a67afe4dSAndroid Build Coastguard Worker	    # These systems don't actually have a C library (as such)
7284*a67afe4dSAndroid Build Coastguard Worker	    test X-lc = "X$arg" && continue
7285*a67afe4dSAndroid Build Coastguard Worker	    ;;
7286*a67afe4dSAndroid Build Coastguard Worker	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*)
7287*a67afe4dSAndroid Build Coastguard Worker	    # Do not include libc due to us having libc/libc_r.
7288*a67afe4dSAndroid Build Coastguard Worker	    test X-lc = "X$arg" && continue
7289*a67afe4dSAndroid Build Coastguard Worker	    ;;
7290*a67afe4dSAndroid Build Coastguard Worker	  *-*-rhapsody* | *-*-darwin1.[012])
7291*a67afe4dSAndroid Build Coastguard Worker	    # Rhapsody C and math libraries are in the System framework
7292*a67afe4dSAndroid Build Coastguard Worker	    func_append deplibs " System.ltframework"
7293*a67afe4dSAndroid Build Coastguard Worker	    continue
7294*a67afe4dSAndroid Build Coastguard Worker	    ;;
7295*a67afe4dSAndroid Build Coastguard Worker	  *-*-sco3.2v5* | *-*-sco5v6*)
7296*a67afe4dSAndroid Build Coastguard Worker	    # Causes problems with __ctype
7297*a67afe4dSAndroid Build Coastguard Worker	    test X-lc = "X$arg" && continue
7298*a67afe4dSAndroid Build Coastguard Worker	    ;;
7299*a67afe4dSAndroid Build Coastguard Worker	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
7300*a67afe4dSAndroid Build Coastguard Worker	    # Compiler inserts libc in the correct place for threads to work
7301*a67afe4dSAndroid Build Coastguard Worker	    test X-lc = "X$arg" && continue
7302*a67afe4dSAndroid Build Coastguard Worker	    ;;
7303*a67afe4dSAndroid Build Coastguard Worker	  esac
7304*a67afe4dSAndroid Build Coastguard Worker	elif test X-lc_r = "X$arg"; then
7305*a67afe4dSAndroid Build Coastguard Worker	 case $host in
7306*a67afe4dSAndroid Build Coastguard Worker	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*)
7307*a67afe4dSAndroid Build Coastguard Worker	   # Do not include libc_r directly, use -pthread flag.
7308*a67afe4dSAndroid Build Coastguard Worker	   continue
7309*a67afe4dSAndroid Build Coastguard Worker	   ;;
7310*a67afe4dSAndroid Build Coastguard Worker	 esac
7311*a67afe4dSAndroid Build Coastguard Worker	fi
7312*a67afe4dSAndroid Build Coastguard Worker	func_append deplibs " $arg"
7313*a67afe4dSAndroid Build Coastguard Worker	continue
7314*a67afe4dSAndroid Build Coastguard Worker	;;
7315*a67afe4dSAndroid Build Coastguard Worker
7316*a67afe4dSAndroid Build Coastguard Worker      -mllvm)
7317*a67afe4dSAndroid Build Coastguard Worker	prev=mllvm
7318*a67afe4dSAndroid Build Coastguard Worker	continue
7319*a67afe4dSAndroid Build Coastguard Worker	;;
7320*a67afe4dSAndroid Build Coastguard Worker
7321*a67afe4dSAndroid Build Coastguard Worker      -module)
7322*a67afe4dSAndroid Build Coastguard Worker	module=yes
7323*a67afe4dSAndroid Build Coastguard Worker	continue
7324*a67afe4dSAndroid Build Coastguard Worker	;;
7325*a67afe4dSAndroid Build Coastguard Worker
7326*a67afe4dSAndroid Build Coastguard Worker      # Tru64 UNIX uses -model [arg] to determine the layout of C++
7327*a67afe4dSAndroid Build Coastguard Worker      # classes, name mangling, and exception handling.
7328*a67afe4dSAndroid Build Coastguard Worker      # Darwin uses the -arch flag to determine output architecture.
7329*a67afe4dSAndroid Build Coastguard Worker      -model|-arch|-isysroot|--sysroot)
7330*a67afe4dSAndroid Build Coastguard Worker	func_append compiler_flags " $arg"
7331*a67afe4dSAndroid Build Coastguard Worker	func_append compile_command " $arg"
7332*a67afe4dSAndroid Build Coastguard Worker	func_append finalize_command " $arg"
7333*a67afe4dSAndroid Build Coastguard Worker	prev=xcompiler
7334*a67afe4dSAndroid Build Coastguard Worker	continue
7335*a67afe4dSAndroid Build Coastguard Worker	;;
7336*a67afe4dSAndroid Build Coastguard Worker     # Solaris ld rejects as of 11.4. Refer to Oracle bug 22985199.
7337*a67afe4dSAndroid Build Coastguard Worker     -pthread)
7338*a67afe4dSAndroid Build Coastguard Worker	case $host in
7339*a67afe4dSAndroid Build Coastguard Worker	  *solaris2*) ;;
7340*a67afe4dSAndroid Build Coastguard Worker	  *)
7341*a67afe4dSAndroid Build Coastguard Worker	    case "$new_inherited_linker_flags " in
7342*a67afe4dSAndroid Build Coastguard Worker	        *" $arg "*) ;;
7343*a67afe4dSAndroid Build Coastguard Worker	        * ) func_append new_inherited_linker_flags " $arg" ;;
7344*a67afe4dSAndroid Build Coastguard Worker	    esac
7345*a67afe4dSAndroid Build Coastguard Worker	  ;;
7346*a67afe4dSAndroid Build Coastguard Worker	esac
7347*a67afe4dSAndroid Build Coastguard Worker	continue
7348*a67afe4dSAndroid Build Coastguard Worker	;;
7349*a67afe4dSAndroid Build Coastguard Worker      -mt|-mthreads|-kthread|-Kthread|-pthreads|--thread-safe \
7350*a67afe4dSAndroid Build Coastguard Worker      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
7351*a67afe4dSAndroid Build Coastguard Worker	func_append compiler_flags " $arg"
7352*a67afe4dSAndroid Build Coastguard Worker	func_append compile_command " $arg"
7353*a67afe4dSAndroid Build Coastguard Worker	func_append finalize_command " $arg"
7354*a67afe4dSAndroid Build Coastguard Worker	case "$new_inherited_linker_flags " in
7355*a67afe4dSAndroid Build Coastguard Worker	    *" $arg "*) ;;
7356*a67afe4dSAndroid Build Coastguard Worker	    * ) func_append new_inherited_linker_flags " $arg" ;;
7357*a67afe4dSAndroid Build Coastguard Worker	esac
7358*a67afe4dSAndroid Build Coastguard Worker	continue
7359*a67afe4dSAndroid Build Coastguard Worker	;;
7360*a67afe4dSAndroid Build Coastguard Worker
7361*a67afe4dSAndroid Build Coastguard Worker      -multi_module)
7362*a67afe4dSAndroid Build Coastguard Worker	single_module=$wl-multi_module
7363*a67afe4dSAndroid Build Coastguard Worker	continue
7364*a67afe4dSAndroid Build Coastguard Worker	;;
7365*a67afe4dSAndroid Build Coastguard Worker
7366*a67afe4dSAndroid Build Coastguard Worker      -no-fast-install)
7367*a67afe4dSAndroid Build Coastguard Worker	fast_install=no
7368*a67afe4dSAndroid Build Coastguard Worker	continue
7369*a67afe4dSAndroid Build Coastguard Worker	;;
7370*a67afe4dSAndroid Build Coastguard Worker
7371*a67afe4dSAndroid Build Coastguard Worker      -no-install)
7372*a67afe4dSAndroid Build Coastguard Worker	case $host in
7373*a67afe4dSAndroid Build Coastguard Worker	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
7374*a67afe4dSAndroid Build Coastguard Worker	  # The PATH hackery in wrapper scripts is required on Windows
7375*a67afe4dSAndroid Build Coastguard Worker	  # and Darwin in order for the loader to find any dlls it needs.
7376*a67afe4dSAndroid Build Coastguard Worker	  func_warning "'-no-install' is ignored for $host"
7377*a67afe4dSAndroid Build Coastguard Worker	  func_warning "assuming '-no-fast-install' instead"
7378*a67afe4dSAndroid Build Coastguard Worker	  fast_install=no
7379*a67afe4dSAndroid Build Coastguard Worker	  ;;
7380*a67afe4dSAndroid Build Coastguard Worker	*) no_install=yes ;;
7381*a67afe4dSAndroid Build Coastguard Worker	esac
7382*a67afe4dSAndroid Build Coastguard Worker	continue
7383*a67afe4dSAndroid Build Coastguard Worker	;;
7384*a67afe4dSAndroid Build Coastguard Worker
7385*a67afe4dSAndroid Build Coastguard Worker      -no-undefined)
7386*a67afe4dSAndroid Build Coastguard Worker	allow_undefined=no
7387*a67afe4dSAndroid Build Coastguard Worker	continue
7388*a67afe4dSAndroid Build Coastguard Worker	;;
7389*a67afe4dSAndroid Build Coastguard Worker
7390*a67afe4dSAndroid Build Coastguard Worker      -objectlist)
7391*a67afe4dSAndroid Build Coastguard Worker	prev=objectlist
7392*a67afe4dSAndroid Build Coastguard Worker	continue
7393*a67afe4dSAndroid Build Coastguard Worker	;;
7394*a67afe4dSAndroid Build Coastguard Worker
7395*a67afe4dSAndroid Build Coastguard Worker      -os2dllname)
7396*a67afe4dSAndroid Build Coastguard Worker	prev=os2dllname
7397*a67afe4dSAndroid Build Coastguard Worker	continue
7398*a67afe4dSAndroid Build Coastguard Worker	;;
7399*a67afe4dSAndroid Build Coastguard Worker
7400*a67afe4dSAndroid Build Coastguard Worker      -o) prev=output ;;
7401*a67afe4dSAndroid Build Coastguard Worker
7402*a67afe4dSAndroid Build Coastguard Worker      -precious-files-regex)
7403*a67afe4dSAndroid Build Coastguard Worker	prev=precious_regex
7404*a67afe4dSAndroid Build Coastguard Worker	continue
7405*a67afe4dSAndroid Build Coastguard Worker	;;
7406*a67afe4dSAndroid Build Coastguard Worker
7407*a67afe4dSAndroid Build Coastguard Worker      -release)
7408*a67afe4dSAndroid Build Coastguard Worker	prev=release
7409*a67afe4dSAndroid Build Coastguard Worker	continue
7410*a67afe4dSAndroid Build Coastguard Worker	;;
7411*a67afe4dSAndroid Build Coastguard Worker
7412*a67afe4dSAndroid Build Coastguard Worker      -rpath)
7413*a67afe4dSAndroid Build Coastguard Worker	prev=rpath
7414*a67afe4dSAndroid Build Coastguard Worker	continue
7415*a67afe4dSAndroid Build Coastguard Worker	;;
7416*a67afe4dSAndroid Build Coastguard Worker
7417*a67afe4dSAndroid Build Coastguard Worker      -R)
7418*a67afe4dSAndroid Build Coastguard Worker	prev=xrpath
7419*a67afe4dSAndroid Build Coastguard Worker	continue
7420*a67afe4dSAndroid Build Coastguard Worker	;;
7421*a67afe4dSAndroid Build Coastguard Worker
7422*a67afe4dSAndroid Build Coastguard Worker      -R*)
7423*a67afe4dSAndroid Build Coastguard Worker	func_stripname '-R' '' "$arg"
7424*a67afe4dSAndroid Build Coastguard Worker	dir=$func_stripname_result
7425*a67afe4dSAndroid Build Coastguard Worker	# We need an absolute path.
7426*a67afe4dSAndroid Build Coastguard Worker	case $dir in
7427*a67afe4dSAndroid Build Coastguard Worker	[\\/]* | [A-Za-z]:[\\/]*) ;;
7428*a67afe4dSAndroid Build Coastguard Worker	=*)
7429*a67afe4dSAndroid Build Coastguard Worker	  func_stripname '=' '' "$dir"
7430*a67afe4dSAndroid Build Coastguard Worker	  dir=$lt_sysroot$func_stripname_result
7431*a67afe4dSAndroid Build Coastguard Worker	  ;;
7432*a67afe4dSAndroid Build Coastguard Worker	*)
7433*a67afe4dSAndroid Build Coastguard Worker	  func_fatal_error "only absolute run-paths are allowed"
7434*a67afe4dSAndroid Build Coastguard Worker	  ;;
7435*a67afe4dSAndroid Build Coastguard Worker	esac
7436*a67afe4dSAndroid Build Coastguard Worker	case "$xrpath " in
7437*a67afe4dSAndroid Build Coastguard Worker	*" $dir "*) ;;
7438*a67afe4dSAndroid Build Coastguard Worker	*) func_append xrpath " $dir" ;;
7439*a67afe4dSAndroid Build Coastguard Worker	esac
7440*a67afe4dSAndroid Build Coastguard Worker	continue
7441*a67afe4dSAndroid Build Coastguard Worker	;;
7442*a67afe4dSAndroid Build Coastguard Worker
7443*a67afe4dSAndroid Build Coastguard Worker      -shared)
7444*a67afe4dSAndroid Build Coastguard Worker	# The effects of -shared are defined in a previous loop.
7445*a67afe4dSAndroid Build Coastguard Worker	continue
7446*a67afe4dSAndroid Build Coastguard Worker	;;
7447*a67afe4dSAndroid Build Coastguard Worker
7448*a67afe4dSAndroid Build Coastguard Worker      -shrext)
7449*a67afe4dSAndroid Build Coastguard Worker	prev=shrext
7450*a67afe4dSAndroid Build Coastguard Worker	continue
7451*a67afe4dSAndroid Build Coastguard Worker	;;
7452*a67afe4dSAndroid Build Coastguard Worker
7453*a67afe4dSAndroid Build Coastguard Worker      -static | -static-libtool-libs)
7454*a67afe4dSAndroid Build Coastguard Worker	# The effects of -static are defined in a previous loop.
7455*a67afe4dSAndroid Build Coastguard Worker	# We used to do the same as -all-static on platforms that
7456*a67afe4dSAndroid Build Coastguard Worker	# didn't have a PIC flag, but the assumption that the effects
7457*a67afe4dSAndroid Build Coastguard Worker	# would be equivalent was wrong.  It would break on at least
7458*a67afe4dSAndroid Build Coastguard Worker	# Digital Unix and AIX.
7459*a67afe4dSAndroid Build Coastguard Worker	continue
7460*a67afe4dSAndroid Build Coastguard Worker	;;
7461*a67afe4dSAndroid Build Coastguard Worker
7462*a67afe4dSAndroid Build Coastguard Worker      -thread-safe)
7463*a67afe4dSAndroid Build Coastguard Worker	thread_safe=yes
7464*a67afe4dSAndroid Build Coastguard Worker	continue
7465*a67afe4dSAndroid Build Coastguard Worker	;;
7466*a67afe4dSAndroid Build Coastguard Worker
7467*a67afe4dSAndroid Build Coastguard Worker      -version-info)
7468*a67afe4dSAndroid Build Coastguard Worker	prev=vinfo
7469*a67afe4dSAndroid Build Coastguard Worker	continue
7470*a67afe4dSAndroid Build Coastguard Worker	;;
7471*a67afe4dSAndroid Build Coastguard Worker
7472*a67afe4dSAndroid Build Coastguard Worker      -version-number)
7473*a67afe4dSAndroid Build Coastguard Worker	prev=vinfo
7474*a67afe4dSAndroid Build Coastguard Worker	vinfo_number=yes
7475*a67afe4dSAndroid Build Coastguard Worker	continue
7476*a67afe4dSAndroid Build Coastguard Worker	;;
7477*a67afe4dSAndroid Build Coastguard Worker
7478*a67afe4dSAndroid Build Coastguard Worker      -weak)
7479*a67afe4dSAndroid Build Coastguard Worker        prev=weak
7480*a67afe4dSAndroid Build Coastguard Worker	continue
7481*a67afe4dSAndroid Build Coastguard Worker	;;
7482*a67afe4dSAndroid Build Coastguard Worker
7483*a67afe4dSAndroid Build Coastguard Worker      -Wc,*)
7484*a67afe4dSAndroid Build Coastguard Worker	func_stripname '-Wc,' '' "$arg"
7485*a67afe4dSAndroid Build Coastguard Worker	args=$func_stripname_result
7486*a67afe4dSAndroid Build Coastguard Worker	arg=
7487*a67afe4dSAndroid Build Coastguard Worker	save_ifs=$IFS; IFS=,
7488*a67afe4dSAndroid Build Coastguard Worker	for flag in $args; do
7489*a67afe4dSAndroid Build Coastguard Worker	  IFS=$save_ifs
7490*a67afe4dSAndroid Build Coastguard Worker          func_quote_arg pretty "$flag"
7491*a67afe4dSAndroid Build Coastguard Worker	  func_append arg " $func_quote_arg_result"
7492*a67afe4dSAndroid Build Coastguard Worker	  func_append compiler_flags " $func_quote_arg_result"
7493*a67afe4dSAndroid Build Coastguard Worker	done
7494*a67afe4dSAndroid Build Coastguard Worker	IFS=$save_ifs
7495*a67afe4dSAndroid Build Coastguard Worker	func_stripname ' ' '' "$arg"
7496*a67afe4dSAndroid Build Coastguard Worker	arg=$func_stripname_result
7497*a67afe4dSAndroid Build Coastguard Worker	;;
7498*a67afe4dSAndroid Build Coastguard Worker
7499*a67afe4dSAndroid Build Coastguard Worker      -Wl,*)
7500*a67afe4dSAndroid Build Coastguard Worker	func_stripname '-Wl,' '' "$arg"
7501*a67afe4dSAndroid Build Coastguard Worker	args=$func_stripname_result
7502*a67afe4dSAndroid Build Coastguard Worker	arg=
7503*a67afe4dSAndroid Build Coastguard Worker	save_ifs=$IFS; IFS=,
7504*a67afe4dSAndroid Build Coastguard Worker	for flag in $args; do
7505*a67afe4dSAndroid Build Coastguard Worker	  IFS=$save_ifs
7506*a67afe4dSAndroid Build Coastguard Worker          func_quote_arg pretty "$flag"
7507*a67afe4dSAndroid Build Coastguard Worker	  func_append arg " $wl$func_quote_arg_result"
7508*a67afe4dSAndroid Build Coastguard Worker	  func_append compiler_flags " $wl$func_quote_arg_result"
7509*a67afe4dSAndroid Build Coastguard Worker	  func_append linker_flags " $func_quote_arg_result"
7510*a67afe4dSAndroid Build Coastguard Worker	done
7511*a67afe4dSAndroid Build Coastguard Worker	IFS=$save_ifs
7512*a67afe4dSAndroid Build Coastguard Worker	func_stripname ' ' '' "$arg"
7513*a67afe4dSAndroid Build Coastguard Worker	arg=$func_stripname_result
7514*a67afe4dSAndroid Build Coastguard Worker	;;
7515*a67afe4dSAndroid Build Coastguard Worker
7516*a67afe4dSAndroid Build Coastguard Worker      -Xassembler)
7517*a67afe4dSAndroid Build Coastguard Worker        prev=xassembler
7518*a67afe4dSAndroid Build Coastguard Worker        continue
7519*a67afe4dSAndroid Build Coastguard Worker        ;;
7520*a67afe4dSAndroid Build Coastguard Worker
7521*a67afe4dSAndroid Build Coastguard Worker      -Xcompiler)
7522*a67afe4dSAndroid Build Coastguard Worker	prev=xcompiler
7523*a67afe4dSAndroid Build Coastguard Worker	continue
7524*a67afe4dSAndroid Build Coastguard Worker	;;
7525*a67afe4dSAndroid Build Coastguard Worker
7526*a67afe4dSAndroid Build Coastguard Worker      -Xlinker)
7527*a67afe4dSAndroid Build Coastguard Worker	prev=xlinker
7528*a67afe4dSAndroid Build Coastguard Worker	continue
7529*a67afe4dSAndroid Build Coastguard Worker	;;
7530*a67afe4dSAndroid Build Coastguard Worker
7531*a67afe4dSAndroid Build Coastguard Worker      -XCClinker)
7532*a67afe4dSAndroid Build Coastguard Worker	prev=xcclinker
7533*a67afe4dSAndroid Build Coastguard Worker	continue
7534*a67afe4dSAndroid Build Coastguard Worker	;;
7535*a67afe4dSAndroid Build Coastguard Worker
7536*a67afe4dSAndroid Build Coastguard Worker      # -msg_* for osf cc
7537*a67afe4dSAndroid Build Coastguard Worker      -msg_*)
7538*a67afe4dSAndroid Build Coastguard Worker	func_quote_arg pretty "$arg"
7539*a67afe4dSAndroid Build Coastguard Worker	arg=$func_quote_arg_result
7540*a67afe4dSAndroid Build Coastguard Worker	;;
7541*a67afe4dSAndroid Build Coastguard Worker
7542*a67afe4dSAndroid Build Coastguard Worker      # Flags to be passed through unchanged, with rationale:
7543*a67afe4dSAndroid Build Coastguard Worker      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
7544*a67afe4dSAndroid Build Coastguard Worker      # -r[0-9][0-9]*        specify processor for the SGI compiler
7545*a67afe4dSAndroid Build Coastguard Worker      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
7546*a67afe4dSAndroid Build Coastguard Worker      # +DA*, +DD*           enable 64-bit mode for the HP compiler
7547*a67afe4dSAndroid Build Coastguard Worker      # -q*                  compiler args for the IBM compiler
7548*a67afe4dSAndroid Build Coastguard Worker      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
7549*a67afe4dSAndroid Build Coastguard Worker      # -F/path              path to uninstalled frameworks, gcc on darwin
7550*a67afe4dSAndroid Build Coastguard Worker      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
7551*a67afe4dSAndroid Build Coastguard Worker      # -fstack-protector*   stack protector flags for GCC
7552*a67afe4dSAndroid Build Coastguard Worker      # @file                GCC response files
7553*a67afe4dSAndroid Build Coastguard Worker      # -tp=*                Portland pgcc target processor selection
7554*a67afe4dSAndroid Build Coastguard Worker      # --sysroot=*          for sysroot support
7555*a67afe4dSAndroid Build Coastguard Worker      # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
7556*a67afe4dSAndroid Build Coastguard Worker      # -specs=*             GCC specs files
7557*a67afe4dSAndroid Build Coastguard Worker      # -stdlib=*            select c++ std lib with clang
7558*a67afe4dSAndroid Build Coastguard Worker      # -fsanitize=*         Clang/GCC memory and address sanitizer
7559*a67afe4dSAndroid Build Coastguard Worker      # -fuse-ld=*           Linker select flags for GCC
7560*a67afe4dSAndroid Build Coastguard Worker      # -Wa,*                Pass flags directly to the assembler
7561*a67afe4dSAndroid Build Coastguard Worker      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
7562*a67afe4dSAndroid Build Coastguard Worker      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
7563*a67afe4dSAndroid Build Coastguard Worker      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
7564*a67afe4dSAndroid Build Coastguard Worker      -specs=*|-fsanitize=*|-fuse-ld=*|-Wa,*)
7565*a67afe4dSAndroid Build Coastguard Worker        func_quote_arg pretty "$arg"
7566*a67afe4dSAndroid Build Coastguard Worker	arg=$func_quote_arg_result
7567*a67afe4dSAndroid Build Coastguard Worker        func_append compile_command " $arg"
7568*a67afe4dSAndroid Build Coastguard Worker        func_append finalize_command " $arg"
7569*a67afe4dSAndroid Build Coastguard Worker        func_append compiler_flags " $arg"
7570*a67afe4dSAndroid Build Coastguard Worker        continue
7571*a67afe4dSAndroid Build Coastguard Worker        ;;
7572*a67afe4dSAndroid Build Coastguard Worker
7573*a67afe4dSAndroid Build Coastguard Worker      -Z*)
7574*a67afe4dSAndroid Build Coastguard Worker        if test os2 = "`expr $host : '.*\(os2\)'`"; then
7575*a67afe4dSAndroid Build Coastguard Worker          # OS/2 uses -Zxxx to specify OS/2-specific options
7576*a67afe4dSAndroid Build Coastguard Worker	  compiler_flags="$compiler_flags $arg"
7577*a67afe4dSAndroid Build Coastguard Worker	  func_append compile_command " $arg"
7578*a67afe4dSAndroid Build Coastguard Worker	  func_append finalize_command " $arg"
7579*a67afe4dSAndroid Build Coastguard Worker	  case $arg in
7580*a67afe4dSAndroid Build Coastguard Worker	  -Zlinker | -Zstack)
7581*a67afe4dSAndroid Build Coastguard Worker	    prev=xcompiler
7582*a67afe4dSAndroid Build Coastguard Worker	    ;;
7583*a67afe4dSAndroid Build Coastguard Worker	  esac
7584*a67afe4dSAndroid Build Coastguard Worker	  continue
7585*a67afe4dSAndroid Build Coastguard Worker        else
7586*a67afe4dSAndroid Build Coastguard Worker	  # Otherwise treat like 'Some other compiler flag' below
7587*a67afe4dSAndroid Build Coastguard Worker	  func_quote_arg pretty "$arg"
7588*a67afe4dSAndroid Build Coastguard Worker	  arg=$func_quote_arg_result
7589*a67afe4dSAndroid Build Coastguard Worker        fi
7590*a67afe4dSAndroid Build Coastguard Worker	;;
7591*a67afe4dSAndroid Build Coastguard Worker
7592*a67afe4dSAndroid Build Coastguard Worker      # Some other compiler flag.
7593*a67afe4dSAndroid Build Coastguard Worker      -* | +*)
7594*a67afe4dSAndroid Build Coastguard Worker        func_quote_arg pretty "$arg"
7595*a67afe4dSAndroid Build Coastguard Worker	arg=$func_quote_arg_result
7596*a67afe4dSAndroid Build Coastguard Worker	;;
7597*a67afe4dSAndroid Build Coastguard Worker
7598*a67afe4dSAndroid Build Coastguard Worker      *.$objext)
7599*a67afe4dSAndroid Build Coastguard Worker	# A standard object.
7600*a67afe4dSAndroid Build Coastguard Worker	func_append objs " $arg"
7601*a67afe4dSAndroid Build Coastguard Worker	;;
7602*a67afe4dSAndroid Build Coastguard Worker
7603*a67afe4dSAndroid Build Coastguard Worker      *.lo)
7604*a67afe4dSAndroid Build Coastguard Worker	# A libtool-controlled object.
7605*a67afe4dSAndroid Build Coastguard Worker
7606*a67afe4dSAndroid Build Coastguard Worker	# Check to see that this really is a libtool object.
7607*a67afe4dSAndroid Build Coastguard Worker	if func_lalib_unsafe_p "$arg"; then
7608*a67afe4dSAndroid Build Coastguard Worker	  pic_object=
7609*a67afe4dSAndroid Build Coastguard Worker	  non_pic_object=
7610*a67afe4dSAndroid Build Coastguard Worker
7611*a67afe4dSAndroid Build Coastguard Worker	  # Read the .lo file
7612*a67afe4dSAndroid Build Coastguard Worker	  func_source "$arg"
7613*a67afe4dSAndroid Build Coastguard Worker
7614*a67afe4dSAndroid Build Coastguard Worker	  if test -z "$pic_object" ||
7615*a67afe4dSAndroid Build Coastguard Worker	     test -z "$non_pic_object" ||
7616*a67afe4dSAndroid Build Coastguard Worker	     test none = "$pic_object" &&
7617*a67afe4dSAndroid Build Coastguard Worker	     test none = "$non_pic_object"; then
7618*a67afe4dSAndroid Build Coastguard Worker	    func_fatal_error "cannot find name of object for '$arg'"
7619*a67afe4dSAndroid Build Coastguard Worker	  fi
7620*a67afe4dSAndroid Build Coastguard Worker
7621*a67afe4dSAndroid Build Coastguard Worker	  # Extract subdirectory from the argument.
7622*a67afe4dSAndroid Build Coastguard Worker	  func_dirname "$arg" "/" ""
7623*a67afe4dSAndroid Build Coastguard Worker	  xdir=$func_dirname_result
7624*a67afe4dSAndroid Build Coastguard Worker
7625*a67afe4dSAndroid Build Coastguard Worker	  test none = "$pic_object" || {
7626*a67afe4dSAndroid Build Coastguard Worker	    # Prepend the subdirectory the object is found in.
7627*a67afe4dSAndroid Build Coastguard Worker	    pic_object=$xdir$pic_object
7628*a67afe4dSAndroid Build Coastguard Worker
7629*a67afe4dSAndroid Build Coastguard Worker	    if test dlfiles = "$prev"; then
7630*a67afe4dSAndroid Build Coastguard Worker	      if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
7631*a67afe4dSAndroid Build Coastguard Worker		func_append dlfiles " $pic_object"
7632*a67afe4dSAndroid Build Coastguard Worker		prev=
7633*a67afe4dSAndroid Build Coastguard Worker		continue
7634*a67afe4dSAndroid Build Coastguard Worker	      else
7635*a67afe4dSAndroid Build Coastguard Worker		# If libtool objects are unsupported, then we need to preload.
7636*a67afe4dSAndroid Build Coastguard Worker		prev=dlprefiles
7637*a67afe4dSAndroid Build Coastguard Worker	      fi
7638*a67afe4dSAndroid Build Coastguard Worker	    fi
7639*a67afe4dSAndroid Build Coastguard Worker
7640*a67afe4dSAndroid Build Coastguard Worker	    # CHECK ME:  I think I busted this.  -Ossama
7641*a67afe4dSAndroid Build Coastguard Worker	    if test dlprefiles = "$prev"; then
7642*a67afe4dSAndroid Build Coastguard Worker	      # Preload the old-style object.
7643*a67afe4dSAndroid Build Coastguard Worker	      func_append dlprefiles " $pic_object"
7644*a67afe4dSAndroid Build Coastguard Worker	      prev=
7645*a67afe4dSAndroid Build Coastguard Worker	    fi
7646*a67afe4dSAndroid Build Coastguard Worker
7647*a67afe4dSAndroid Build Coastguard Worker	    # A PIC object.
7648*a67afe4dSAndroid Build Coastguard Worker	    func_append libobjs " $pic_object"
7649*a67afe4dSAndroid Build Coastguard Worker	    arg=$pic_object
7650*a67afe4dSAndroid Build Coastguard Worker	  }
7651*a67afe4dSAndroid Build Coastguard Worker
7652*a67afe4dSAndroid Build Coastguard Worker	  # Non-PIC object.
7653*a67afe4dSAndroid Build Coastguard Worker	  if test none != "$non_pic_object"; then
7654*a67afe4dSAndroid Build Coastguard Worker	    # Prepend the subdirectory the object is found in.
7655*a67afe4dSAndroid Build Coastguard Worker	    non_pic_object=$xdir$non_pic_object
7656*a67afe4dSAndroid Build Coastguard Worker
7657*a67afe4dSAndroid Build Coastguard Worker	    # A standard non-PIC object
7658*a67afe4dSAndroid Build Coastguard Worker	    func_append non_pic_objects " $non_pic_object"
7659*a67afe4dSAndroid Build Coastguard Worker	    if test -z "$pic_object" || test none = "$pic_object"; then
7660*a67afe4dSAndroid Build Coastguard Worker	      arg=$non_pic_object
7661*a67afe4dSAndroid Build Coastguard Worker	    fi
7662*a67afe4dSAndroid Build Coastguard Worker	  else
7663*a67afe4dSAndroid Build Coastguard Worker	    # If the PIC object exists, use it instead.
7664*a67afe4dSAndroid Build Coastguard Worker	    # $xdir was prepended to $pic_object above.
7665*a67afe4dSAndroid Build Coastguard Worker	    non_pic_object=$pic_object
7666*a67afe4dSAndroid Build Coastguard Worker	    func_append non_pic_objects " $non_pic_object"
7667*a67afe4dSAndroid Build Coastguard Worker	  fi
7668*a67afe4dSAndroid Build Coastguard Worker	else
7669*a67afe4dSAndroid Build Coastguard Worker	  # Only an error if not doing a dry-run.
7670*a67afe4dSAndroid Build Coastguard Worker	  if $opt_dry_run; then
7671*a67afe4dSAndroid Build Coastguard Worker	    # Extract subdirectory from the argument.
7672*a67afe4dSAndroid Build Coastguard Worker	    func_dirname "$arg" "/" ""
7673*a67afe4dSAndroid Build Coastguard Worker	    xdir=$func_dirname_result
7674*a67afe4dSAndroid Build Coastguard Worker
7675*a67afe4dSAndroid Build Coastguard Worker	    func_lo2o "$arg"
7676*a67afe4dSAndroid Build Coastguard Worker	    pic_object=$xdir$objdir/$func_lo2o_result
7677*a67afe4dSAndroid Build Coastguard Worker	    non_pic_object=$xdir$func_lo2o_result
7678*a67afe4dSAndroid Build Coastguard Worker	    func_append libobjs " $pic_object"
7679*a67afe4dSAndroid Build Coastguard Worker	    func_append non_pic_objects " $non_pic_object"
7680*a67afe4dSAndroid Build Coastguard Worker	  else
7681*a67afe4dSAndroid Build Coastguard Worker	    func_fatal_error "'$arg' is not a valid libtool object"
7682*a67afe4dSAndroid Build Coastguard Worker	  fi
7683*a67afe4dSAndroid Build Coastguard Worker	fi
7684*a67afe4dSAndroid Build Coastguard Worker	;;
7685*a67afe4dSAndroid Build Coastguard Worker
7686*a67afe4dSAndroid Build Coastguard Worker      *.$libext)
7687*a67afe4dSAndroid Build Coastguard Worker	# An archive.
7688*a67afe4dSAndroid Build Coastguard Worker	func_append deplibs " $arg"
7689*a67afe4dSAndroid Build Coastguard Worker	func_append old_deplibs " $arg"
7690*a67afe4dSAndroid Build Coastguard Worker	continue
7691*a67afe4dSAndroid Build Coastguard Worker	;;
7692*a67afe4dSAndroid Build Coastguard Worker
7693*a67afe4dSAndroid Build Coastguard Worker      *.la)
7694*a67afe4dSAndroid Build Coastguard Worker	# A libtool-controlled library.
7695*a67afe4dSAndroid Build Coastguard Worker
7696*a67afe4dSAndroid Build Coastguard Worker	func_resolve_sysroot "$arg"
7697*a67afe4dSAndroid Build Coastguard Worker	if test dlfiles = "$prev"; then
7698*a67afe4dSAndroid Build Coastguard Worker	  # This library was specified with -dlopen.
7699*a67afe4dSAndroid Build Coastguard Worker	  func_append dlfiles " $func_resolve_sysroot_result"
7700*a67afe4dSAndroid Build Coastguard Worker	  prev=
7701*a67afe4dSAndroid Build Coastguard Worker	elif test dlprefiles = "$prev"; then
7702*a67afe4dSAndroid Build Coastguard Worker	  # The library was specified with -dlpreopen.
7703*a67afe4dSAndroid Build Coastguard Worker	  func_append dlprefiles " $func_resolve_sysroot_result"
7704*a67afe4dSAndroid Build Coastguard Worker	  prev=
7705*a67afe4dSAndroid Build Coastguard Worker	else
7706*a67afe4dSAndroid Build Coastguard Worker	  func_append deplibs " $func_resolve_sysroot_result"
7707*a67afe4dSAndroid Build Coastguard Worker	fi
7708*a67afe4dSAndroid Build Coastguard Worker	continue
7709*a67afe4dSAndroid Build Coastguard Worker	;;
7710*a67afe4dSAndroid Build Coastguard Worker
7711*a67afe4dSAndroid Build Coastguard Worker      # Some other compiler argument.
7712*a67afe4dSAndroid Build Coastguard Worker      *)
7713*a67afe4dSAndroid Build Coastguard Worker	# Unknown arguments in both finalize_command and compile_command need
7714*a67afe4dSAndroid Build Coastguard Worker	# to be aesthetically quoted because they are evaled later.
7715*a67afe4dSAndroid Build Coastguard Worker	func_quote_arg pretty "$arg"
7716*a67afe4dSAndroid Build Coastguard Worker	arg=$func_quote_arg_result
7717*a67afe4dSAndroid Build Coastguard Worker	;;
7718*a67afe4dSAndroid Build Coastguard Worker      esac # arg
7719*a67afe4dSAndroid Build Coastguard Worker
7720*a67afe4dSAndroid Build Coastguard Worker      # Now actually substitute the argument into the commands.
7721*a67afe4dSAndroid Build Coastguard Worker      if test -n "$arg"; then
7722*a67afe4dSAndroid Build Coastguard Worker	func_append compile_command " $arg"
7723*a67afe4dSAndroid Build Coastguard Worker	func_append finalize_command " $arg"
7724*a67afe4dSAndroid Build Coastguard Worker      fi
7725*a67afe4dSAndroid Build Coastguard Worker    done # argument parsing loop
7726*a67afe4dSAndroid Build Coastguard Worker
7727*a67afe4dSAndroid Build Coastguard Worker    test -n "$prev" && \
7728*a67afe4dSAndroid Build Coastguard Worker      func_fatal_help "the '$prevarg' option requires an argument"
7729*a67afe4dSAndroid Build Coastguard Worker
7730*a67afe4dSAndroid Build Coastguard Worker    if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then
7731*a67afe4dSAndroid Build Coastguard Worker      eval arg=\"$export_dynamic_flag_spec\"
7732*a67afe4dSAndroid Build Coastguard Worker      func_append compile_command " $arg"
7733*a67afe4dSAndroid Build Coastguard Worker      func_append finalize_command " $arg"
7734*a67afe4dSAndroid Build Coastguard Worker    fi
7735*a67afe4dSAndroid Build Coastguard Worker
7736*a67afe4dSAndroid Build Coastguard Worker    oldlibs=
7737*a67afe4dSAndroid Build Coastguard Worker    # calculate the name of the file, without its directory
7738*a67afe4dSAndroid Build Coastguard Worker    func_basename "$output"
7739*a67afe4dSAndroid Build Coastguard Worker    outputname=$func_basename_result
7740*a67afe4dSAndroid Build Coastguard Worker    libobjs_save=$libobjs
7741*a67afe4dSAndroid Build Coastguard Worker
7742*a67afe4dSAndroid Build Coastguard Worker    if test -n "$shlibpath_var"; then
7743*a67afe4dSAndroid Build Coastguard Worker      # get the directories listed in $shlibpath_var
7744*a67afe4dSAndroid Build Coastguard Worker      eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\`
7745*a67afe4dSAndroid Build Coastguard Worker    else
7746*a67afe4dSAndroid Build Coastguard Worker      shlib_search_path=
7747*a67afe4dSAndroid Build Coastguard Worker    fi
7748*a67afe4dSAndroid Build Coastguard Worker    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
7749*a67afe4dSAndroid Build Coastguard Worker    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
7750*a67afe4dSAndroid Build Coastguard Worker
7751*a67afe4dSAndroid Build Coastguard Worker    # Definition is injected by LT_CONFIG during libtool generation.
7752*a67afe4dSAndroid Build Coastguard Worker    func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH"
7753*a67afe4dSAndroid Build Coastguard Worker
7754*a67afe4dSAndroid Build Coastguard Worker    func_dirname "$output" "/" ""
7755*a67afe4dSAndroid Build Coastguard Worker    output_objdir=$func_dirname_result$objdir
7756*a67afe4dSAndroid Build Coastguard Worker    func_to_tool_file "$output_objdir/"
7757*a67afe4dSAndroid Build Coastguard Worker    tool_output_objdir=$func_to_tool_file_result
7758*a67afe4dSAndroid Build Coastguard Worker    # Create the object directory.
7759*a67afe4dSAndroid Build Coastguard Worker    func_mkdir_p "$output_objdir"
7760*a67afe4dSAndroid Build Coastguard Worker
7761*a67afe4dSAndroid Build Coastguard Worker    # Determine the type of output
7762*a67afe4dSAndroid Build Coastguard Worker    case $output in
7763*a67afe4dSAndroid Build Coastguard Worker    "")
7764*a67afe4dSAndroid Build Coastguard Worker      func_fatal_help "you must specify an output file"
7765*a67afe4dSAndroid Build Coastguard Worker      ;;
7766*a67afe4dSAndroid Build Coastguard Worker    *.$libext) linkmode=oldlib ;;
7767*a67afe4dSAndroid Build Coastguard Worker    *.lo | *.$objext) linkmode=obj ;;
7768*a67afe4dSAndroid Build Coastguard Worker    *.la) linkmode=lib ;;
7769*a67afe4dSAndroid Build Coastguard Worker    *) linkmode=prog ;; # Anything else should be a program.
7770*a67afe4dSAndroid Build Coastguard Worker    esac
7771*a67afe4dSAndroid Build Coastguard Worker
7772*a67afe4dSAndroid Build Coastguard Worker    specialdeplibs=
7773*a67afe4dSAndroid Build Coastguard Worker
7774*a67afe4dSAndroid Build Coastguard Worker    libs=
7775*a67afe4dSAndroid Build Coastguard Worker    # Find all interdependent deplibs by searching for libraries
7776*a67afe4dSAndroid Build Coastguard Worker    # that are linked more than once (e.g. -la -lb -la)
7777*a67afe4dSAndroid Build Coastguard Worker    for deplib in $deplibs; do
7778*a67afe4dSAndroid Build Coastguard Worker      if $opt_preserve_dup_deps; then
7779*a67afe4dSAndroid Build Coastguard Worker	case "$libs " in
7780*a67afe4dSAndroid Build Coastguard Worker	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
7781*a67afe4dSAndroid Build Coastguard Worker	esac
7782*a67afe4dSAndroid Build Coastguard Worker      fi
7783*a67afe4dSAndroid Build Coastguard Worker      func_append libs " $deplib"
7784*a67afe4dSAndroid Build Coastguard Worker    done
7785*a67afe4dSAndroid Build Coastguard Worker
7786*a67afe4dSAndroid Build Coastguard Worker    if test lib = "$linkmode"; then
7787*a67afe4dSAndroid Build Coastguard Worker      libs="$predeps $libs $compiler_lib_search_path $postdeps"
7788*a67afe4dSAndroid Build Coastguard Worker
7789*a67afe4dSAndroid Build Coastguard Worker      # Compute libraries that are listed more than once in $predeps
7790*a67afe4dSAndroid Build Coastguard Worker      # $postdeps and mark them as special (i.e., whose duplicates are
7791*a67afe4dSAndroid Build Coastguard Worker      # not to be eliminated).
7792*a67afe4dSAndroid Build Coastguard Worker      pre_post_deps=
7793*a67afe4dSAndroid Build Coastguard Worker      if $opt_duplicate_compiler_generated_deps; then
7794*a67afe4dSAndroid Build Coastguard Worker	for pre_post_dep in $predeps $postdeps; do
7795*a67afe4dSAndroid Build Coastguard Worker	  case "$pre_post_deps " in
7796*a67afe4dSAndroid Build Coastguard Worker	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
7797*a67afe4dSAndroid Build Coastguard Worker	  esac
7798*a67afe4dSAndroid Build Coastguard Worker	  func_append pre_post_deps " $pre_post_dep"
7799*a67afe4dSAndroid Build Coastguard Worker	done
7800*a67afe4dSAndroid Build Coastguard Worker      fi
7801*a67afe4dSAndroid Build Coastguard Worker      pre_post_deps=
7802*a67afe4dSAndroid Build Coastguard Worker    fi
7803*a67afe4dSAndroid Build Coastguard Worker
7804*a67afe4dSAndroid Build Coastguard Worker    deplibs=
7805*a67afe4dSAndroid Build Coastguard Worker    newdependency_libs=
7806*a67afe4dSAndroid Build Coastguard Worker    newlib_search_path=
7807*a67afe4dSAndroid Build Coastguard Worker    need_relink=no # whether we're linking any uninstalled libtool libraries
7808*a67afe4dSAndroid Build Coastguard Worker    notinst_deplibs= # not-installed libtool libraries
7809*a67afe4dSAndroid Build Coastguard Worker    notinst_path= # paths that contain not-installed libtool libraries
7810*a67afe4dSAndroid Build Coastguard Worker
7811*a67afe4dSAndroid Build Coastguard Worker    case $linkmode in
7812*a67afe4dSAndroid Build Coastguard Worker    lib)
7813*a67afe4dSAndroid Build Coastguard Worker	passes="conv dlpreopen link"
7814*a67afe4dSAndroid Build Coastguard Worker	for file in $dlfiles $dlprefiles; do
7815*a67afe4dSAndroid Build Coastguard Worker	  case $file in
7816*a67afe4dSAndroid Build Coastguard Worker	  *.la) ;;
7817*a67afe4dSAndroid Build Coastguard Worker	  *)
7818*a67afe4dSAndroid Build Coastguard Worker	    func_fatal_help "libraries can '-dlopen' only libtool libraries: $file"
7819*a67afe4dSAndroid Build Coastguard Worker	    ;;
7820*a67afe4dSAndroid Build Coastguard Worker	  esac
7821*a67afe4dSAndroid Build Coastguard Worker	done
7822*a67afe4dSAndroid Build Coastguard Worker	;;
7823*a67afe4dSAndroid Build Coastguard Worker    prog)
7824*a67afe4dSAndroid Build Coastguard Worker	compile_deplibs=
7825*a67afe4dSAndroid Build Coastguard Worker	finalize_deplibs=
7826*a67afe4dSAndroid Build Coastguard Worker	alldeplibs=false
7827*a67afe4dSAndroid Build Coastguard Worker	newdlfiles=
7828*a67afe4dSAndroid Build Coastguard Worker	newdlprefiles=
7829*a67afe4dSAndroid Build Coastguard Worker	passes="conv scan dlopen dlpreopen link"
7830*a67afe4dSAndroid Build Coastguard Worker	;;
7831*a67afe4dSAndroid Build Coastguard Worker    *)  passes="conv"
7832*a67afe4dSAndroid Build Coastguard Worker	;;
7833*a67afe4dSAndroid Build Coastguard Worker    esac
7834*a67afe4dSAndroid Build Coastguard Worker
7835*a67afe4dSAndroid Build Coastguard Worker    for pass in $passes; do
7836*a67afe4dSAndroid Build Coastguard Worker      # The preopen pass in lib mode reverses $deplibs; put it back here
7837*a67afe4dSAndroid Build Coastguard Worker      # so that -L comes before libs that need it for instance...
7838*a67afe4dSAndroid Build Coastguard Worker      if test lib,link = "$linkmode,$pass"; then
7839*a67afe4dSAndroid Build Coastguard Worker	## FIXME: Find the place where the list is rebuilt in the wrong
7840*a67afe4dSAndroid Build Coastguard Worker	##        order, and fix it there properly
7841*a67afe4dSAndroid Build Coastguard Worker        tmp_deplibs=
7842*a67afe4dSAndroid Build Coastguard Worker	for deplib in $deplibs; do
7843*a67afe4dSAndroid Build Coastguard Worker	  tmp_deplibs="$deplib $tmp_deplibs"
7844*a67afe4dSAndroid Build Coastguard Worker	done
7845*a67afe4dSAndroid Build Coastguard Worker	deplibs=$tmp_deplibs
7846*a67afe4dSAndroid Build Coastguard Worker      fi
7847*a67afe4dSAndroid Build Coastguard Worker
7848*a67afe4dSAndroid Build Coastguard Worker      if test lib,link = "$linkmode,$pass" ||
7849*a67afe4dSAndroid Build Coastguard Worker	 test prog,scan = "$linkmode,$pass"; then
7850*a67afe4dSAndroid Build Coastguard Worker	libs=$deplibs
7851*a67afe4dSAndroid Build Coastguard Worker	deplibs=
7852*a67afe4dSAndroid Build Coastguard Worker      fi
7853*a67afe4dSAndroid Build Coastguard Worker      if test prog = "$linkmode"; then
7854*a67afe4dSAndroid Build Coastguard Worker	case $pass in
7855*a67afe4dSAndroid Build Coastguard Worker	dlopen) libs=$dlfiles ;;
7856*a67afe4dSAndroid Build Coastguard Worker	dlpreopen) libs=$dlprefiles ;;
7857*a67afe4dSAndroid Build Coastguard Worker	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
7858*a67afe4dSAndroid Build Coastguard Worker	esac
7859*a67afe4dSAndroid Build Coastguard Worker      fi
7860*a67afe4dSAndroid Build Coastguard Worker      if test lib,dlpreopen = "$linkmode,$pass"; then
7861*a67afe4dSAndroid Build Coastguard Worker	# Collect and forward deplibs of preopened libtool libs
7862*a67afe4dSAndroid Build Coastguard Worker	for lib in $dlprefiles; do
7863*a67afe4dSAndroid Build Coastguard Worker	  # Ignore non-libtool-libs
7864*a67afe4dSAndroid Build Coastguard Worker	  dependency_libs=
7865*a67afe4dSAndroid Build Coastguard Worker	  func_resolve_sysroot "$lib"
7866*a67afe4dSAndroid Build Coastguard Worker	  case $lib in
7867*a67afe4dSAndroid Build Coastguard Worker	  *.la)	func_source "$func_resolve_sysroot_result" ;;
7868*a67afe4dSAndroid Build Coastguard Worker	  esac
7869*a67afe4dSAndroid Build Coastguard Worker
7870*a67afe4dSAndroid Build Coastguard Worker	  # Collect preopened libtool deplibs, except any this library
7871*a67afe4dSAndroid Build Coastguard Worker	  # has declared as weak libs
7872*a67afe4dSAndroid Build Coastguard Worker	  for deplib in $dependency_libs; do
7873*a67afe4dSAndroid Build Coastguard Worker	    func_basename "$deplib"
7874*a67afe4dSAndroid Build Coastguard Worker            deplib_base=$func_basename_result
7875*a67afe4dSAndroid Build Coastguard Worker	    case " $weak_libs " in
7876*a67afe4dSAndroid Build Coastguard Worker	    *" $deplib_base "*) ;;
7877*a67afe4dSAndroid Build Coastguard Worker	    *) func_append deplibs " $deplib" ;;
7878*a67afe4dSAndroid Build Coastguard Worker	    esac
7879*a67afe4dSAndroid Build Coastguard Worker	  done
7880*a67afe4dSAndroid Build Coastguard Worker	done
7881*a67afe4dSAndroid Build Coastguard Worker	libs=$dlprefiles
7882*a67afe4dSAndroid Build Coastguard Worker      fi
7883*a67afe4dSAndroid Build Coastguard Worker      if test dlopen = "$pass"; then
7884*a67afe4dSAndroid Build Coastguard Worker	# Collect dlpreopened libraries
7885*a67afe4dSAndroid Build Coastguard Worker	save_deplibs=$deplibs
7886*a67afe4dSAndroid Build Coastguard Worker	deplibs=
7887*a67afe4dSAndroid Build Coastguard Worker      fi
7888*a67afe4dSAndroid Build Coastguard Worker
7889*a67afe4dSAndroid Build Coastguard Worker      for deplib in $libs; do
7890*a67afe4dSAndroid Build Coastguard Worker	lib=
7891*a67afe4dSAndroid Build Coastguard Worker	found=false
7892*a67afe4dSAndroid Build Coastguard Worker	case $deplib in
7893*a67afe4dSAndroid Build Coastguard Worker	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
7894*a67afe4dSAndroid Build Coastguard Worker        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
7895*a67afe4dSAndroid Build Coastguard Worker	  if test prog,link = "$linkmode,$pass"; then
7896*a67afe4dSAndroid Build Coastguard Worker	    compile_deplibs="$deplib $compile_deplibs"
7897*a67afe4dSAndroid Build Coastguard Worker	    finalize_deplibs="$deplib $finalize_deplibs"
7898*a67afe4dSAndroid Build Coastguard Worker	  else
7899*a67afe4dSAndroid Build Coastguard Worker	    func_append compiler_flags " $deplib"
7900*a67afe4dSAndroid Build Coastguard Worker	    if test lib = "$linkmode"; then
7901*a67afe4dSAndroid Build Coastguard Worker		case "$new_inherited_linker_flags " in
7902*a67afe4dSAndroid Build Coastguard Worker		    *" $deplib "*) ;;
7903*a67afe4dSAndroid Build Coastguard Worker		    * ) func_append new_inherited_linker_flags " $deplib" ;;
7904*a67afe4dSAndroid Build Coastguard Worker		esac
7905*a67afe4dSAndroid Build Coastguard Worker	    fi
7906*a67afe4dSAndroid Build Coastguard Worker	  fi
7907*a67afe4dSAndroid Build Coastguard Worker	  continue
7908*a67afe4dSAndroid Build Coastguard Worker	  ;;
7909*a67afe4dSAndroid Build Coastguard Worker	-l*)
7910*a67afe4dSAndroid Build Coastguard Worker	  if test lib != "$linkmode" && test prog != "$linkmode"; then
7911*a67afe4dSAndroid Build Coastguard Worker	    func_warning "'-l' is ignored for archives/objects"
7912*a67afe4dSAndroid Build Coastguard Worker	    continue
7913*a67afe4dSAndroid Build Coastguard Worker	  fi
7914*a67afe4dSAndroid Build Coastguard Worker	  func_stripname '-l' '' "$deplib"
7915*a67afe4dSAndroid Build Coastguard Worker	  name=$func_stripname_result
7916*a67afe4dSAndroid Build Coastguard Worker	  if test lib = "$linkmode"; then
7917*a67afe4dSAndroid Build Coastguard Worker	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
7918*a67afe4dSAndroid Build Coastguard Worker	  else
7919*a67afe4dSAndroid Build Coastguard Worker	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
7920*a67afe4dSAndroid Build Coastguard Worker	  fi
7921*a67afe4dSAndroid Build Coastguard Worker	  for searchdir in $searchdirs; do
7922*a67afe4dSAndroid Build Coastguard Worker	    for search_ext in .la $std_shrext .so .a; do
7923*a67afe4dSAndroid Build Coastguard Worker	      # Search the libtool library
7924*a67afe4dSAndroid Build Coastguard Worker	      lib=$searchdir/lib$name$search_ext
7925*a67afe4dSAndroid Build Coastguard Worker	      if test -f "$lib"; then
7926*a67afe4dSAndroid Build Coastguard Worker		if test .la = "$search_ext"; then
7927*a67afe4dSAndroid Build Coastguard Worker		  found=:
7928*a67afe4dSAndroid Build Coastguard Worker		else
7929*a67afe4dSAndroid Build Coastguard Worker		  found=false
7930*a67afe4dSAndroid Build Coastguard Worker		fi
7931*a67afe4dSAndroid Build Coastguard Worker		break 2
7932*a67afe4dSAndroid Build Coastguard Worker	      fi
7933*a67afe4dSAndroid Build Coastguard Worker	    done
7934*a67afe4dSAndroid Build Coastguard Worker	  done
7935*a67afe4dSAndroid Build Coastguard Worker	  if $found; then
7936*a67afe4dSAndroid Build Coastguard Worker	    # deplib is a libtool library
7937*a67afe4dSAndroid Build Coastguard Worker	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
7938*a67afe4dSAndroid Build Coastguard Worker	    # We need to do some special things here, and not later.
7939*a67afe4dSAndroid Build Coastguard Worker	    if test yes = "$allow_libtool_libs_with_static_runtimes"; then
7940*a67afe4dSAndroid Build Coastguard Worker	      case " $predeps $postdeps " in
7941*a67afe4dSAndroid Build Coastguard Worker	      *" $deplib "*)
7942*a67afe4dSAndroid Build Coastguard Worker		if func_lalib_p "$lib"; then
7943*a67afe4dSAndroid Build Coastguard Worker		  library_names=
7944*a67afe4dSAndroid Build Coastguard Worker		  old_library=
7945*a67afe4dSAndroid Build Coastguard Worker		  func_source "$lib"
7946*a67afe4dSAndroid Build Coastguard Worker		  for l in $old_library $library_names; do
7947*a67afe4dSAndroid Build Coastguard Worker		    ll=$l
7948*a67afe4dSAndroid Build Coastguard Worker		  done
7949*a67afe4dSAndroid Build Coastguard Worker		  if test "X$ll" = "X$old_library"; then # only static version available
7950*a67afe4dSAndroid Build Coastguard Worker		    found=false
7951*a67afe4dSAndroid Build Coastguard Worker		    func_dirname "$lib" "" "."
7952*a67afe4dSAndroid Build Coastguard Worker		    ladir=$func_dirname_result
7953*a67afe4dSAndroid Build Coastguard Worker		    lib=$ladir/$old_library
7954*a67afe4dSAndroid Build Coastguard Worker		    if test prog,link = "$linkmode,$pass"; then
7955*a67afe4dSAndroid Build Coastguard Worker		      compile_deplibs="$deplib $compile_deplibs"
7956*a67afe4dSAndroid Build Coastguard Worker		      finalize_deplibs="$deplib $finalize_deplibs"
7957*a67afe4dSAndroid Build Coastguard Worker		    else
7958*a67afe4dSAndroid Build Coastguard Worker		      deplibs="$deplib $deplibs"
7959*a67afe4dSAndroid Build Coastguard Worker		      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
7960*a67afe4dSAndroid Build Coastguard Worker		    fi
7961*a67afe4dSAndroid Build Coastguard Worker		    continue
7962*a67afe4dSAndroid Build Coastguard Worker		  fi
7963*a67afe4dSAndroid Build Coastguard Worker		fi
7964*a67afe4dSAndroid Build Coastguard Worker		;;
7965*a67afe4dSAndroid Build Coastguard Worker	      *) ;;
7966*a67afe4dSAndroid Build Coastguard Worker	      esac
7967*a67afe4dSAndroid Build Coastguard Worker	    fi
7968*a67afe4dSAndroid Build Coastguard Worker	  else
7969*a67afe4dSAndroid Build Coastguard Worker	    # deplib doesn't seem to be a libtool library
7970*a67afe4dSAndroid Build Coastguard Worker	    if test prog,link = "$linkmode,$pass"; then
7971*a67afe4dSAndroid Build Coastguard Worker	      compile_deplibs="$deplib $compile_deplibs"
7972*a67afe4dSAndroid Build Coastguard Worker	      finalize_deplibs="$deplib $finalize_deplibs"
7973*a67afe4dSAndroid Build Coastguard Worker	    else
7974*a67afe4dSAndroid Build Coastguard Worker	      deplibs="$deplib $deplibs"
7975*a67afe4dSAndroid Build Coastguard Worker	      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
7976*a67afe4dSAndroid Build Coastguard Worker	    fi
7977*a67afe4dSAndroid Build Coastguard Worker	    continue
7978*a67afe4dSAndroid Build Coastguard Worker	  fi
7979*a67afe4dSAndroid Build Coastguard Worker	  ;; # -l
7980*a67afe4dSAndroid Build Coastguard Worker	*.ltframework)
7981*a67afe4dSAndroid Build Coastguard Worker	  if test prog,link = "$linkmode,$pass"; then
7982*a67afe4dSAndroid Build Coastguard Worker	    compile_deplibs="$deplib $compile_deplibs"
7983*a67afe4dSAndroid Build Coastguard Worker	    finalize_deplibs="$deplib $finalize_deplibs"
7984*a67afe4dSAndroid Build Coastguard Worker	  else
7985*a67afe4dSAndroid Build Coastguard Worker	    deplibs="$deplib $deplibs"
7986*a67afe4dSAndroid Build Coastguard Worker	    if test lib = "$linkmode"; then
7987*a67afe4dSAndroid Build Coastguard Worker		case "$new_inherited_linker_flags " in
7988*a67afe4dSAndroid Build Coastguard Worker		    *" $deplib "*) ;;
7989*a67afe4dSAndroid Build Coastguard Worker		    * ) func_append new_inherited_linker_flags " $deplib" ;;
7990*a67afe4dSAndroid Build Coastguard Worker		esac
7991*a67afe4dSAndroid Build Coastguard Worker	    fi
7992*a67afe4dSAndroid Build Coastguard Worker	  fi
7993*a67afe4dSAndroid Build Coastguard Worker	  continue
7994*a67afe4dSAndroid Build Coastguard Worker	  ;;
7995*a67afe4dSAndroid Build Coastguard Worker	-L*)
7996*a67afe4dSAndroid Build Coastguard Worker	  case $linkmode in
7997*a67afe4dSAndroid Build Coastguard Worker	  lib)
7998*a67afe4dSAndroid Build Coastguard Worker	    deplibs="$deplib $deplibs"
7999*a67afe4dSAndroid Build Coastguard Worker	    test conv = "$pass" && continue
8000*a67afe4dSAndroid Build Coastguard Worker	    newdependency_libs="$deplib $newdependency_libs"
8001*a67afe4dSAndroid Build Coastguard Worker	    func_stripname '-L' '' "$deplib"
8002*a67afe4dSAndroid Build Coastguard Worker	    func_resolve_sysroot "$func_stripname_result"
8003*a67afe4dSAndroid Build Coastguard Worker	    func_append newlib_search_path " $func_resolve_sysroot_result"
8004*a67afe4dSAndroid Build Coastguard Worker	    ;;
8005*a67afe4dSAndroid Build Coastguard Worker	  prog)
8006*a67afe4dSAndroid Build Coastguard Worker	    if test conv = "$pass"; then
8007*a67afe4dSAndroid Build Coastguard Worker	      deplibs="$deplib $deplibs"
8008*a67afe4dSAndroid Build Coastguard Worker	      continue
8009*a67afe4dSAndroid Build Coastguard Worker	    fi
8010*a67afe4dSAndroid Build Coastguard Worker	    if test scan = "$pass"; then
8011*a67afe4dSAndroid Build Coastguard Worker	      deplibs="$deplib $deplibs"
8012*a67afe4dSAndroid Build Coastguard Worker	    else
8013*a67afe4dSAndroid Build Coastguard Worker	      compile_deplibs="$deplib $compile_deplibs"
8014*a67afe4dSAndroid Build Coastguard Worker	      finalize_deplibs="$deplib $finalize_deplibs"
8015*a67afe4dSAndroid Build Coastguard Worker	    fi
8016*a67afe4dSAndroid Build Coastguard Worker	    func_stripname '-L' '' "$deplib"
8017*a67afe4dSAndroid Build Coastguard Worker	    func_resolve_sysroot "$func_stripname_result"
8018*a67afe4dSAndroid Build Coastguard Worker	    func_append newlib_search_path " $func_resolve_sysroot_result"
8019*a67afe4dSAndroid Build Coastguard Worker	    ;;
8020*a67afe4dSAndroid Build Coastguard Worker	  *)
8021*a67afe4dSAndroid Build Coastguard Worker	    func_warning "'-L' is ignored for archives/objects"
8022*a67afe4dSAndroid Build Coastguard Worker	    ;;
8023*a67afe4dSAndroid Build Coastguard Worker	  esac # linkmode
8024*a67afe4dSAndroid Build Coastguard Worker	  continue
8025*a67afe4dSAndroid Build Coastguard Worker	  ;; # -L
8026*a67afe4dSAndroid Build Coastguard Worker	-R*)
8027*a67afe4dSAndroid Build Coastguard Worker	  if test link = "$pass"; then
8028*a67afe4dSAndroid Build Coastguard Worker	    func_stripname '-R' '' "$deplib"
8029*a67afe4dSAndroid Build Coastguard Worker	    func_resolve_sysroot "$func_stripname_result"
8030*a67afe4dSAndroid Build Coastguard Worker	    dir=$func_resolve_sysroot_result
8031*a67afe4dSAndroid Build Coastguard Worker	    # Make sure the xrpath contains only unique directories.
8032*a67afe4dSAndroid Build Coastguard Worker	    case "$xrpath " in
8033*a67afe4dSAndroid Build Coastguard Worker	    *" $dir "*) ;;
8034*a67afe4dSAndroid Build Coastguard Worker	    *) func_append xrpath " $dir" ;;
8035*a67afe4dSAndroid Build Coastguard Worker	    esac
8036*a67afe4dSAndroid Build Coastguard Worker	  fi
8037*a67afe4dSAndroid Build Coastguard Worker	  deplibs="$deplib $deplibs"
8038*a67afe4dSAndroid Build Coastguard Worker	  continue
8039*a67afe4dSAndroid Build Coastguard Worker	  ;;
8040*a67afe4dSAndroid Build Coastguard Worker	*.la)
8041*a67afe4dSAndroid Build Coastguard Worker	  func_resolve_sysroot "$deplib"
8042*a67afe4dSAndroid Build Coastguard Worker	  lib=$func_resolve_sysroot_result
8043*a67afe4dSAndroid Build Coastguard Worker	  ;;
8044*a67afe4dSAndroid Build Coastguard Worker	*.$libext)
8045*a67afe4dSAndroid Build Coastguard Worker	  if test conv = "$pass"; then
8046*a67afe4dSAndroid Build Coastguard Worker	    deplibs="$deplib $deplibs"
8047*a67afe4dSAndroid Build Coastguard Worker	    continue
8048*a67afe4dSAndroid Build Coastguard Worker	  fi
8049*a67afe4dSAndroid Build Coastguard Worker	  case $linkmode in
8050*a67afe4dSAndroid Build Coastguard Worker	  lib)
8051*a67afe4dSAndroid Build Coastguard Worker	    # Linking convenience modules into shared libraries is allowed,
8052*a67afe4dSAndroid Build Coastguard Worker	    # but linking other static libraries is non-portable.
8053*a67afe4dSAndroid Build Coastguard Worker	    case " $dlpreconveniencelibs " in
8054*a67afe4dSAndroid Build Coastguard Worker	    *" $deplib "*) ;;
8055*a67afe4dSAndroid Build Coastguard Worker	    *)
8056*a67afe4dSAndroid Build Coastguard Worker	      valid_a_lib=false
8057*a67afe4dSAndroid Build Coastguard Worker	      case $deplibs_check_method in
8058*a67afe4dSAndroid Build Coastguard Worker		match_pattern*)
8059*a67afe4dSAndroid Build Coastguard Worker		  set dummy $deplibs_check_method; shift
8060*a67afe4dSAndroid Build Coastguard Worker		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
8061*a67afe4dSAndroid Build Coastguard Worker		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
8062*a67afe4dSAndroid Build Coastguard Worker		    | $EGREP "$match_pattern_regex" > /dev/null; then
8063*a67afe4dSAndroid Build Coastguard Worker		    valid_a_lib=:
8064*a67afe4dSAndroid Build Coastguard Worker		  fi
8065*a67afe4dSAndroid Build Coastguard Worker		;;
8066*a67afe4dSAndroid Build Coastguard Worker		pass_all)
8067*a67afe4dSAndroid Build Coastguard Worker		  valid_a_lib=:
8068*a67afe4dSAndroid Build Coastguard Worker		;;
8069*a67afe4dSAndroid Build Coastguard Worker	      esac
8070*a67afe4dSAndroid Build Coastguard Worker	      if $valid_a_lib; then
8071*a67afe4dSAndroid Build Coastguard Worker		echo
8072*a67afe4dSAndroid Build Coastguard Worker		$ECHO "*** Warning: Linking the shared library $output against the"
8073*a67afe4dSAndroid Build Coastguard Worker		$ECHO "*** static library $deplib is not portable!"
8074*a67afe4dSAndroid Build Coastguard Worker		deplibs="$deplib $deplibs"
8075*a67afe4dSAndroid Build Coastguard Worker	      else
8076*a67afe4dSAndroid Build Coastguard Worker		echo
8077*a67afe4dSAndroid Build Coastguard Worker		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
8078*a67afe4dSAndroid Build Coastguard Worker		echo "*** I have the capability to make that library automatically link in when"
8079*a67afe4dSAndroid Build Coastguard Worker		echo "*** you link to this library.  But I can only do this if you have a"
8080*a67afe4dSAndroid Build Coastguard Worker		echo "*** shared version of the library, which you do not appear to have"
8081*a67afe4dSAndroid Build Coastguard Worker		echo "*** because the file extensions .$libext of this argument makes me believe"
8082*a67afe4dSAndroid Build Coastguard Worker		echo "*** that it is just a static archive that I should not use here."
8083*a67afe4dSAndroid Build Coastguard Worker	      fi
8084*a67afe4dSAndroid Build Coastguard Worker	      ;;
8085*a67afe4dSAndroid Build Coastguard Worker	    esac
8086*a67afe4dSAndroid Build Coastguard Worker	    continue
8087*a67afe4dSAndroid Build Coastguard Worker	    ;;
8088*a67afe4dSAndroid Build Coastguard Worker	  prog)
8089*a67afe4dSAndroid Build Coastguard Worker	    if test link != "$pass"; then
8090*a67afe4dSAndroid Build Coastguard Worker	      deplibs="$deplib $deplibs"
8091*a67afe4dSAndroid Build Coastguard Worker	    else
8092*a67afe4dSAndroid Build Coastguard Worker	      compile_deplibs="$deplib $compile_deplibs"
8093*a67afe4dSAndroid Build Coastguard Worker	      finalize_deplibs="$deplib $finalize_deplibs"
8094*a67afe4dSAndroid Build Coastguard Worker	    fi
8095*a67afe4dSAndroid Build Coastguard Worker	    continue
8096*a67afe4dSAndroid Build Coastguard Worker	    ;;
8097*a67afe4dSAndroid Build Coastguard Worker	  esac # linkmode
8098*a67afe4dSAndroid Build Coastguard Worker	  ;; # *.$libext
8099*a67afe4dSAndroid Build Coastguard Worker	*.lo | *.$objext)
8100*a67afe4dSAndroid Build Coastguard Worker	  if test conv = "$pass"; then
8101*a67afe4dSAndroid Build Coastguard Worker	    deplibs="$deplib $deplibs"
8102*a67afe4dSAndroid Build Coastguard Worker	  elif test prog = "$linkmode"; then
8103*a67afe4dSAndroid Build Coastguard Worker	    if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then
8104*a67afe4dSAndroid Build Coastguard Worker	      # If there is no dlopen support or we're linking statically,
8105*a67afe4dSAndroid Build Coastguard Worker	      # we need to preload.
8106*a67afe4dSAndroid Build Coastguard Worker	      func_append newdlprefiles " $deplib"
8107*a67afe4dSAndroid Build Coastguard Worker	      compile_deplibs="$deplib $compile_deplibs"
8108*a67afe4dSAndroid Build Coastguard Worker	      finalize_deplibs="$deplib $finalize_deplibs"
8109*a67afe4dSAndroid Build Coastguard Worker	    else
8110*a67afe4dSAndroid Build Coastguard Worker	      func_append newdlfiles " $deplib"
8111*a67afe4dSAndroid Build Coastguard Worker	    fi
8112*a67afe4dSAndroid Build Coastguard Worker	  fi
8113*a67afe4dSAndroid Build Coastguard Worker	  continue
8114*a67afe4dSAndroid Build Coastguard Worker	  ;;
8115*a67afe4dSAndroid Build Coastguard Worker	%DEPLIBS%)
8116*a67afe4dSAndroid Build Coastguard Worker	  alldeplibs=:
8117*a67afe4dSAndroid Build Coastguard Worker	  continue
8118*a67afe4dSAndroid Build Coastguard Worker	  ;;
8119*a67afe4dSAndroid Build Coastguard Worker	esac # case $deplib
8120*a67afe4dSAndroid Build Coastguard Worker
8121*a67afe4dSAndroid Build Coastguard Worker	$found || test -f "$lib" \
8122*a67afe4dSAndroid Build Coastguard Worker	  || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'"
8123*a67afe4dSAndroid Build Coastguard Worker
8124*a67afe4dSAndroid Build Coastguard Worker	# Check to see that this really is a libtool archive.
8125*a67afe4dSAndroid Build Coastguard Worker	func_lalib_unsafe_p "$lib" \
8126*a67afe4dSAndroid Build Coastguard Worker	  || func_fatal_error "'$lib' is not a valid libtool archive"
8127*a67afe4dSAndroid Build Coastguard Worker
8128*a67afe4dSAndroid Build Coastguard Worker	func_dirname "$lib" "" "."
8129*a67afe4dSAndroid Build Coastguard Worker	ladir=$func_dirname_result
8130*a67afe4dSAndroid Build Coastguard Worker
8131*a67afe4dSAndroid Build Coastguard Worker	dlname=
8132*a67afe4dSAndroid Build Coastguard Worker	dlopen=
8133*a67afe4dSAndroid Build Coastguard Worker	dlpreopen=
8134*a67afe4dSAndroid Build Coastguard Worker	libdir=
8135*a67afe4dSAndroid Build Coastguard Worker	library_names=
8136*a67afe4dSAndroid Build Coastguard Worker	old_library=
8137*a67afe4dSAndroid Build Coastguard Worker	inherited_linker_flags=
8138*a67afe4dSAndroid Build Coastguard Worker	# If the library was installed with an old release of libtool,
8139*a67afe4dSAndroid Build Coastguard Worker	# it will not redefine variables installed, or shouldnotlink
8140*a67afe4dSAndroid Build Coastguard Worker	installed=yes
8141*a67afe4dSAndroid Build Coastguard Worker	shouldnotlink=no
8142*a67afe4dSAndroid Build Coastguard Worker	avoidtemprpath=
8143*a67afe4dSAndroid Build Coastguard Worker
8144*a67afe4dSAndroid Build Coastguard Worker
8145*a67afe4dSAndroid Build Coastguard Worker	# Read the .la file
8146*a67afe4dSAndroid Build Coastguard Worker	func_source "$lib"
8147*a67afe4dSAndroid Build Coastguard Worker
8148*a67afe4dSAndroid Build Coastguard Worker	# Convert "-framework foo" to "foo.ltframework"
8149*a67afe4dSAndroid Build Coastguard Worker	if test -n "$inherited_linker_flags"; then
8150*a67afe4dSAndroid Build Coastguard Worker	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
8151*a67afe4dSAndroid Build Coastguard Worker	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
8152*a67afe4dSAndroid Build Coastguard Worker	    case " $new_inherited_linker_flags " in
8153*a67afe4dSAndroid Build Coastguard Worker	      *" $tmp_inherited_linker_flag "*) ;;
8154*a67afe4dSAndroid Build Coastguard Worker	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
8155*a67afe4dSAndroid Build Coastguard Worker	    esac
8156*a67afe4dSAndroid Build Coastguard Worker	  done
8157*a67afe4dSAndroid Build Coastguard Worker	fi
8158*a67afe4dSAndroid Build Coastguard Worker	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8159*a67afe4dSAndroid Build Coastguard Worker	if test lib,link = "$linkmode,$pass" ||
8160*a67afe4dSAndroid Build Coastguard Worker	   test prog,scan = "$linkmode,$pass" ||
8161*a67afe4dSAndroid Build Coastguard Worker	   { test prog != "$linkmode" && test lib != "$linkmode"; }; then
8162*a67afe4dSAndroid Build Coastguard Worker	  test -n "$dlopen" && func_append dlfiles " $dlopen"
8163*a67afe4dSAndroid Build Coastguard Worker	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
8164*a67afe4dSAndroid Build Coastguard Worker	fi
8165*a67afe4dSAndroid Build Coastguard Worker
8166*a67afe4dSAndroid Build Coastguard Worker	if test conv = "$pass"; then
8167*a67afe4dSAndroid Build Coastguard Worker	  # Only check for convenience libraries
8168*a67afe4dSAndroid Build Coastguard Worker	  deplibs="$lib $deplibs"
8169*a67afe4dSAndroid Build Coastguard Worker	  if test -z "$libdir"; then
8170*a67afe4dSAndroid Build Coastguard Worker	    if test -z "$old_library"; then
8171*a67afe4dSAndroid Build Coastguard Worker	      func_fatal_error "cannot find name of link library for '$lib'"
8172*a67afe4dSAndroid Build Coastguard Worker	    fi
8173*a67afe4dSAndroid Build Coastguard Worker	    # It is a libtool convenience library, so add in its objects.
8174*a67afe4dSAndroid Build Coastguard Worker	    func_append convenience " $ladir/$objdir/$old_library"
8175*a67afe4dSAndroid Build Coastguard Worker	    func_append old_convenience " $ladir/$objdir/$old_library"
8176*a67afe4dSAndroid Build Coastguard Worker	  elif test prog != "$linkmode" && test lib != "$linkmode"; then
8177*a67afe4dSAndroid Build Coastguard Worker	    func_fatal_error "'$lib' is not a convenience library"
8178*a67afe4dSAndroid Build Coastguard Worker	  fi
8179*a67afe4dSAndroid Build Coastguard Worker	  tmp_libs=
8180*a67afe4dSAndroid Build Coastguard Worker	  for deplib in $dependency_libs; do
8181*a67afe4dSAndroid Build Coastguard Worker	    deplibs="$deplib $deplibs"
8182*a67afe4dSAndroid Build Coastguard Worker	    if $opt_preserve_dup_deps; then
8183*a67afe4dSAndroid Build Coastguard Worker	      case "$tmp_libs " in
8184*a67afe4dSAndroid Build Coastguard Worker	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
8185*a67afe4dSAndroid Build Coastguard Worker	      esac
8186*a67afe4dSAndroid Build Coastguard Worker	    fi
8187*a67afe4dSAndroid Build Coastguard Worker	    func_append tmp_libs " $deplib"
8188*a67afe4dSAndroid Build Coastguard Worker	  done
8189*a67afe4dSAndroid Build Coastguard Worker	  continue
8190*a67afe4dSAndroid Build Coastguard Worker	fi # $pass = conv
8191*a67afe4dSAndroid Build Coastguard Worker
8192*a67afe4dSAndroid Build Coastguard Worker
8193*a67afe4dSAndroid Build Coastguard Worker	# Get the name of the library we link against.
8194*a67afe4dSAndroid Build Coastguard Worker	linklib=
8195*a67afe4dSAndroid Build Coastguard Worker	if test -n "$old_library" &&
8196*a67afe4dSAndroid Build Coastguard Worker	   { test yes = "$prefer_static_libs" ||
8197*a67afe4dSAndroid Build Coastguard Worker	     test built,no = "$prefer_static_libs,$installed"; }; then
8198*a67afe4dSAndroid Build Coastguard Worker	  linklib=$old_library
8199*a67afe4dSAndroid Build Coastguard Worker	else
8200*a67afe4dSAndroid Build Coastguard Worker	  for l in $old_library $library_names; do
8201*a67afe4dSAndroid Build Coastguard Worker	    linklib=$l
8202*a67afe4dSAndroid Build Coastguard Worker	  done
8203*a67afe4dSAndroid Build Coastguard Worker	fi
8204*a67afe4dSAndroid Build Coastguard Worker	if test -z "$linklib"; then
8205*a67afe4dSAndroid Build Coastguard Worker	  func_fatal_error "cannot find name of link library for '$lib'"
8206*a67afe4dSAndroid Build Coastguard Worker	fi
8207*a67afe4dSAndroid Build Coastguard Worker
8208*a67afe4dSAndroid Build Coastguard Worker	# This library was specified with -dlopen.
8209*a67afe4dSAndroid Build Coastguard Worker	if test dlopen = "$pass"; then
8210*a67afe4dSAndroid Build Coastguard Worker	  test -z "$libdir" \
8211*a67afe4dSAndroid Build Coastguard Worker	    && func_fatal_error "cannot -dlopen a convenience library: '$lib'"
8212*a67afe4dSAndroid Build Coastguard Worker	  if test -z "$dlname" ||
8213*a67afe4dSAndroid Build Coastguard Worker	     test yes != "$dlopen_support" ||
8214*a67afe4dSAndroid Build Coastguard Worker	     test no = "$build_libtool_libs"
8215*a67afe4dSAndroid Build Coastguard Worker	  then
8216*a67afe4dSAndroid Build Coastguard Worker	    # If there is no dlname, no dlopen support or we're linking
8217*a67afe4dSAndroid Build Coastguard Worker	    # statically, we need to preload.  We also need to preload any
8218*a67afe4dSAndroid Build Coastguard Worker	    # dependent libraries so libltdl's deplib preloader doesn't
8219*a67afe4dSAndroid Build Coastguard Worker	    # bomb out in the load deplibs phase.
8220*a67afe4dSAndroid Build Coastguard Worker	    func_append dlprefiles " $lib $dependency_libs"
8221*a67afe4dSAndroid Build Coastguard Worker	  else
8222*a67afe4dSAndroid Build Coastguard Worker	    func_append newdlfiles " $lib"
8223*a67afe4dSAndroid Build Coastguard Worker	  fi
8224*a67afe4dSAndroid Build Coastguard Worker	  continue
8225*a67afe4dSAndroid Build Coastguard Worker	fi # $pass = dlopen
8226*a67afe4dSAndroid Build Coastguard Worker
8227*a67afe4dSAndroid Build Coastguard Worker	# We need an absolute path.
8228*a67afe4dSAndroid Build Coastguard Worker	case $ladir in
8229*a67afe4dSAndroid Build Coastguard Worker	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;;
8230*a67afe4dSAndroid Build Coastguard Worker	*)
8231*a67afe4dSAndroid Build Coastguard Worker	  abs_ladir=`cd "$ladir" && pwd`
8232*a67afe4dSAndroid Build Coastguard Worker	  if test -z "$abs_ladir"; then
8233*a67afe4dSAndroid Build Coastguard Worker	    func_warning "cannot determine absolute directory name of '$ladir'"
8234*a67afe4dSAndroid Build Coastguard Worker	    func_warning "passing it literally to the linker, although it might fail"
8235*a67afe4dSAndroid Build Coastguard Worker	    abs_ladir=$ladir
8236*a67afe4dSAndroid Build Coastguard Worker	  fi
8237*a67afe4dSAndroid Build Coastguard Worker	  ;;
8238*a67afe4dSAndroid Build Coastguard Worker	esac
8239*a67afe4dSAndroid Build Coastguard Worker	func_basename "$lib"
8240*a67afe4dSAndroid Build Coastguard Worker	laname=$func_basename_result
8241*a67afe4dSAndroid Build Coastguard Worker
8242*a67afe4dSAndroid Build Coastguard Worker	# Find the relevant object directory and library name.
8243*a67afe4dSAndroid Build Coastguard Worker	if test yes = "$installed"; then
8244*a67afe4dSAndroid Build Coastguard Worker	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
8245*a67afe4dSAndroid Build Coastguard Worker	    func_warning "library '$lib' was moved."
8246*a67afe4dSAndroid Build Coastguard Worker	    dir=$ladir
8247*a67afe4dSAndroid Build Coastguard Worker	    absdir=$abs_ladir
8248*a67afe4dSAndroid Build Coastguard Worker	    libdir=$abs_ladir
8249*a67afe4dSAndroid Build Coastguard Worker	  else
8250*a67afe4dSAndroid Build Coastguard Worker	    dir=$lt_sysroot$libdir
8251*a67afe4dSAndroid Build Coastguard Worker	    absdir=$lt_sysroot$libdir
8252*a67afe4dSAndroid Build Coastguard Worker	  fi
8253*a67afe4dSAndroid Build Coastguard Worker	  test yes = "$hardcode_automatic" && avoidtemprpath=yes
8254*a67afe4dSAndroid Build Coastguard Worker	else
8255*a67afe4dSAndroid Build Coastguard Worker	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
8256*a67afe4dSAndroid Build Coastguard Worker	    dir=$ladir
8257*a67afe4dSAndroid Build Coastguard Worker	    absdir=$abs_ladir
8258*a67afe4dSAndroid Build Coastguard Worker	    # Remove this search path later
8259*a67afe4dSAndroid Build Coastguard Worker	    func_append notinst_path " $abs_ladir"
8260*a67afe4dSAndroid Build Coastguard Worker	  else
8261*a67afe4dSAndroid Build Coastguard Worker	    dir=$ladir/$objdir
8262*a67afe4dSAndroid Build Coastguard Worker	    absdir=$abs_ladir/$objdir
8263*a67afe4dSAndroid Build Coastguard Worker	    # Remove this search path later
8264*a67afe4dSAndroid Build Coastguard Worker	    func_append notinst_path " $abs_ladir"
8265*a67afe4dSAndroid Build Coastguard Worker	  fi
8266*a67afe4dSAndroid Build Coastguard Worker	fi # $installed = yes
8267*a67afe4dSAndroid Build Coastguard Worker	func_stripname 'lib' '.la' "$laname"
8268*a67afe4dSAndroid Build Coastguard Worker	name=$func_stripname_result
8269*a67afe4dSAndroid Build Coastguard Worker
8270*a67afe4dSAndroid Build Coastguard Worker	# This library was specified with -dlpreopen.
8271*a67afe4dSAndroid Build Coastguard Worker	if test dlpreopen = "$pass"; then
8272*a67afe4dSAndroid Build Coastguard Worker	  if test -z "$libdir" && test prog = "$linkmode"; then
8273*a67afe4dSAndroid Build Coastguard Worker	    func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'"
8274*a67afe4dSAndroid Build Coastguard Worker	  fi
8275*a67afe4dSAndroid Build Coastguard Worker	  case $host in
8276*a67afe4dSAndroid Build Coastguard Worker	    # special handling for platforms with PE-DLLs.
8277*a67afe4dSAndroid Build Coastguard Worker	    *cygwin* | *mingw* | *cegcc* )
8278*a67afe4dSAndroid Build Coastguard Worker	      # Linker will automatically link against shared library if both
8279*a67afe4dSAndroid Build Coastguard Worker	      # static and shared are present.  Therefore, ensure we extract
8280*a67afe4dSAndroid Build Coastguard Worker	      # symbols from the import library if a shared library is present
8281*a67afe4dSAndroid Build Coastguard Worker	      # (otherwise, the dlopen module name will be incorrect).  We do
8282*a67afe4dSAndroid Build Coastguard Worker	      # this by putting the import library name into $newdlprefiles.
8283*a67afe4dSAndroid Build Coastguard Worker	      # We recover the dlopen module name by 'saving' the la file
8284*a67afe4dSAndroid Build Coastguard Worker	      # name in a special purpose variable, and (later) extracting the
8285*a67afe4dSAndroid Build Coastguard Worker	      # dlname from the la file.
8286*a67afe4dSAndroid Build Coastguard Worker	      if test -n "$dlname"; then
8287*a67afe4dSAndroid Build Coastguard Worker	        func_tr_sh "$dir/$linklib"
8288*a67afe4dSAndroid Build Coastguard Worker	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
8289*a67afe4dSAndroid Build Coastguard Worker	        func_append newdlprefiles " $dir/$linklib"
8290*a67afe4dSAndroid Build Coastguard Worker	      else
8291*a67afe4dSAndroid Build Coastguard Worker	        func_append newdlprefiles " $dir/$old_library"
8292*a67afe4dSAndroid Build Coastguard Worker	        # Keep a list of preopened convenience libraries to check
8293*a67afe4dSAndroid Build Coastguard Worker	        # that they are being used correctly in the link pass.
8294*a67afe4dSAndroid Build Coastguard Worker	        test -z "$libdir" && \
8295*a67afe4dSAndroid Build Coastguard Worker	          func_append dlpreconveniencelibs " $dir/$old_library"
8296*a67afe4dSAndroid Build Coastguard Worker	      fi
8297*a67afe4dSAndroid Build Coastguard Worker	    ;;
8298*a67afe4dSAndroid Build Coastguard Worker	    * )
8299*a67afe4dSAndroid Build Coastguard Worker	      # Prefer using a static library (so that no silly _DYNAMIC symbols
8300*a67afe4dSAndroid Build Coastguard Worker	      # are required to link).
8301*a67afe4dSAndroid Build Coastguard Worker	      if test -n "$old_library"; then
8302*a67afe4dSAndroid Build Coastguard Worker	        func_append newdlprefiles " $dir/$old_library"
8303*a67afe4dSAndroid Build Coastguard Worker	        # Keep a list of preopened convenience libraries to check
8304*a67afe4dSAndroid Build Coastguard Worker	        # that they are being used correctly in the link pass.
8305*a67afe4dSAndroid Build Coastguard Worker	        test -z "$libdir" && \
8306*a67afe4dSAndroid Build Coastguard Worker	          func_append dlpreconveniencelibs " $dir/$old_library"
8307*a67afe4dSAndroid Build Coastguard Worker	      # Otherwise, use the dlname, so that lt_dlopen finds it.
8308*a67afe4dSAndroid Build Coastguard Worker	      elif test -n "$dlname"; then
8309*a67afe4dSAndroid Build Coastguard Worker	        func_append newdlprefiles " $dir/$dlname"
8310*a67afe4dSAndroid Build Coastguard Worker	      else
8311*a67afe4dSAndroid Build Coastguard Worker	        func_append newdlprefiles " $dir/$linklib"
8312*a67afe4dSAndroid Build Coastguard Worker	      fi
8313*a67afe4dSAndroid Build Coastguard Worker	    ;;
8314*a67afe4dSAndroid Build Coastguard Worker	  esac
8315*a67afe4dSAndroid Build Coastguard Worker	fi # $pass = dlpreopen
8316*a67afe4dSAndroid Build Coastguard Worker
8317*a67afe4dSAndroid Build Coastguard Worker	if test -z "$libdir"; then
8318*a67afe4dSAndroid Build Coastguard Worker	  # Link the convenience library
8319*a67afe4dSAndroid Build Coastguard Worker	  if test lib = "$linkmode"; then
8320*a67afe4dSAndroid Build Coastguard Worker	    deplibs="$dir/$old_library $deplibs"
8321*a67afe4dSAndroid Build Coastguard Worker	  elif test prog,link = "$linkmode,$pass"; then
8322*a67afe4dSAndroid Build Coastguard Worker	    compile_deplibs="$dir/$old_library $compile_deplibs"
8323*a67afe4dSAndroid Build Coastguard Worker	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
8324*a67afe4dSAndroid Build Coastguard Worker	  else
8325*a67afe4dSAndroid Build Coastguard Worker	    deplibs="$lib $deplibs" # used for prog,scan pass
8326*a67afe4dSAndroid Build Coastguard Worker	  fi
8327*a67afe4dSAndroid Build Coastguard Worker	  continue
8328*a67afe4dSAndroid Build Coastguard Worker	fi
8329*a67afe4dSAndroid Build Coastguard Worker
8330*a67afe4dSAndroid Build Coastguard Worker
8331*a67afe4dSAndroid Build Coastguard Worker	if test prog = "$linkmode" && test link != "$pass"; then
8332*a67afe4dSAndroid Build Coastguard Worker	  func_append newlib_search_path " $ladir"
8333*a67afe4dSAndroid Build Coastguard Worker	  deplibs="$lib $deplibs"
8334*a67afe4dSAndroid Build Coastguard Worker
8335*a67afe4dSAndroid Build Coastguard Worker	  linkalldeplibs=false
8336*a67afe4dSAndroid Build Coastguard Worker	  if test no != "$link_all_deplibs" || test -z "$library_names" ||
8337*a67afe4dSAndroid Build Coastguard Worker	     test no = "$build_libtool_libs"; then
8338*a67afe4dSAndroid Build Coastguard Worker	    linkalldeplibs=:
8339*a67afe4dSAndroid Build Coastguard Worker	  fi
8340*a67afe4dSAndroid Build Coastguard Worker
8341*a67afe4dSAndroid Build Coastguard Worker	  tmp_libs=
8342*a67afe4dSAndroid Build Coastguard Worker	  for deplib in $dependency_libs; do
8343*a67afe4dSAndroid Build Coastguard Worker	    case $deplib in
8344*a67afe4dSAndroid Build Coastguard Worker	    -L*) func_stripname '-L' '' "$deplib"
8345*a67afe4dSAndroid Build Coastguard Worker	         func_resolve_sysroot "$func_stripname_result"
8346*a67afe4dSAndroid Build Coastguard Worker	         func_append newlib_search_path " $func_resolve_sysroot_result"
8347*a67afe4dSAndroid Build Coastguard Worker		 ;;
8348*a67afe4dSAndroid Build Coastguard Worker	    esac
8349*a67afe4dSAndroid Build Coastguard Worker	    # Need to link against all dependency_libs?
8350*a67afe4dSAndroid Build Coastguard Worker	    if $linkalldeplibs; then
8351*a67afe4dSAndroid Build Coastguard Worker	      deplibs="$deplib $deplibs"
8352*a67afe4dSAndroid Build Coastguard Worker	    else
8353*a67afe4dSAndroid Build Coastguard Worker	      # Need to hardcode shared library paths
8354*a67afe4dSAndroid Build Coastguard Worker	      # or/and link against static libraries
8355*a67afe4dSAndroid Build Coastguard Worker	      newdependency_libs="$deplib $newdependency_libs"
8356*a67afe4dSAndroid Build Coastguard Worker	    fi
8357*a67afe4dSAndroid Build Coastguard Worker	    if $opt_preserve_dup_deps; then
8358*a67afe4dSAndroid Build Coastguard Worker	      case "$tmp_libs " in
8359*a67afe4dSAndroid Build Coastguard Worker	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
8360*a67afe4dSAndroid Build Coastguard Worker	      esac
8361*a67afe4dSAndroid Build Coastguard Worker	    fi
8362*a67afe4dSAndroid Build Coastguard Worker	    func_append tmp_libs " $deplib"
8363*a67afe4dSAndroid Build Coastguard Worker	  done # for deplib
8364*a67afe4dSAndroid Build Coastguard Worker	  continue
8365*a67afe4dSAndroid Build Coastguard Worker	fi # $linkmode = prog...
8366*a67afe4dSAndroid Build Coastguard Worker
8367*a67afe4dSAndroid Build Coastguard Worker	if test prog,link = "$linkmode,$pass"; then
8368*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$library_names" &&
8369*a67afe4dSAndroid Build Coastguard Worker	     { { test no = "$prefer_static_libs" ||
8370*a67afe4dSAndroid Build Coastguard Worker	         test built,yes = "$prefer_static_libs,$installed"; } ||
8371*a67afe4dSAndroid Build Coastguard Worker	       test -z "$old_library"; }; then
8372*a67afe4dSAndroid Build Coastguard Worker	    # We need to hardcode the library path
8373*a67afe4dSAndroid Build Coastguard Worker	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then
8374*a67afe4dSAndroid Build Coastguard Worker	      # Make sure the rpath contains only unique directories.
8375*a67afe4dSAndroid Build Coastguard Worker	      case $temp_rpath: in
8376*a67afe4dSAndroid Build Coastguard Worker	      *"$absdir:"*) ;;
8377*a67afe4dSAndroid Build Coastguard Worker	      *) func_append temp_rpath "$absdir:" ;;
8378*a67afe4dSAndroid Build Coastguard Worker	      esac
8379*a67afe4dSAndroid Build Coastguard Worker	    fi
8380*a67afe4dSAndroid Build Coastguard Worker
8381*a67afe4dSAndroid Build Coastguard Worker	    # Hardcode the library path.
8382*a67afe4dSAndroid Build Coastguard Worker	    # Skip directories that are in the system default run-time
8383*a67afe4dSAndroid Build Coastguard Worker	    # search path.
8384*a67afe4dSAndroid Build Coastguard Worker	    case " $sys_lib_dlsearch_path " in
8385*a67afe4dSAndroid Build Coastguard Worker	    *" $absdir "*) ;;
8386*a67afe4dSAndroid Build Coastguard Worker	    *)
8387*a67afe4dSAndroid Build Coastguard Worker	      case "$compile_rpath " in
8388*a67afe4dSAndroid Build Coastguard Worker	      *" $absdir "*) ;;
8389*a67afe4dSAndroid Build Coastguard Worker	      *) func_append compile_rpath " $absdir" ;;
8390*a67afe4dSAndroid Build Coastguard Worker	      esac
8391*a67afe4dSAndroid Build Coastguard Worker	      ;;
8392*a67afe4dSAndroid Build Coastguard Worker	    esac
8393*a67afe4dSAndroid Build Coastguard Worker	    case " $sys_lib_dlsearch_path " in
8394*a67afe4dSAndroid Build Coastguard Worker	    *" $libdir "*) ;;
8395*a67afe4dSAndroid Build Coastguard Worker	    *)
8396*a67afe4dSAndroid Build Coastguard Worker	      case "$finalize_rpath " in
8397*a67afe4dSAndroid Build Coastguard Worker	      *" $libdir "*) ;;
8398*a67afe4dSAndroid Build Coastguard Worker	      *) func_append finalize_rpath " $libdir" ;;
8399*a67afe4dSAndroid Build Coastguard Worker	      esac
8400*a67afe4dSAndroid Build Coastguard Worker	      ;;
8401*a67afe4dSAndroid Build Coastguard Worker	    esac
8402*a67afe4dSAndroid Build Coastguard Worker	  fi # $linkmode,$pass = prog,link...
8403*a67afe4dSAndroid Build Coastguard Worker
8404*a67afe4dSAndroid Build Coastguard Worker	  if $alldeplibs &&
8405*a67afe4dSAndroid Build Coastguard Worker	     { test pass_all = "$deplibs_check_method" ||
8406*a67afe4dSAndroid Build Coastguard Worker	       { test yes = "$build_libtool_libs" &&
8407*a67afe4dSAndroid Build Coastguard Worker		 test -n "$library_names"; }; }; then
8408*a67afe4dSAndroid Build Coastguard Worker	    # We only need to search for static libraries
8409*a67afe4dSAndroid Build Coastguard Worker	    continue
8410*a67afe4dSAndroid Build Coastguard Worker	  fi
8411*a67afe4dSAndroid Build Coastguard Worker	fi
8412*a67afe4dSAndroid Build Coastguard Worker
8413*a67afe4dSAndroid Build Coastguard Worker	link_static=no # Whether the deplib will be linked statically
8414*a67afe4dSAndroid Build Coastguard Worker	use_static_libs=$prefer_static_libs
8415*a67afe4dSAndroid Build Coastguard Worker	if test built = "$use_static_libs" && test yes = "$installed"; then
8416*a67afe4dSAndroid Build Coastguard Worker	  use_static_libs=no
8417*a67afe4dSAndroid Build Coastguard Worker	fi
8418*a67afe4dSAndroid Build Coastguard Worker	if test -n "$library_names" &&
8419*a67afe4dSAndroid Build Coastguard Worker	   { test no = "$use_static_libs" || test -z "$old_library"; }; then
8420*a67afe4dSAndroid Build Coastguard Worker	  case $host in
8421*a67afe4dSAndroid Build Coastguard Worker	  *cygwin* | *mingw* | *cegcc* | *os2*)
8422*a67afe4dSAndroid Build Coastguard Worker	      # No point in relinking DLLs because paths are not encoded
8423*a67afe4dSAndroid Build Coastguard Worker	      func_append notinst_deplibs " $lib"
8424*a67afe4dSAndroid Build Coastguard Worker	      need_relink=no
8425*a67afe4dSAndroid Build Coastguard Worker	    ;;
8426*a67afe4dSAndroid Build Coastguard Worker	  *)
8427*a67afe4dSAndroid Build Coastguard Worker	    if test no = "$installed"; then
8428*a67afe4dSAndroid Build Coastguard Worker	      func_append notinst_deplibs " $lib"
8429*a67afe4dSAndroid Build Coastguard Worker	      need_relink=yes
8430*a67afe4dSAndroid Build Coastguard Worker	    fi
8431*a67afe4dSAndroid Build Coastguard Worker	    ;;
8432*a67afe4dSAndroid Build Coastguard Worker	  esac
8433*a67afe4dSAndroid Build Coastguard Worker	  # This is a shared library
8434*a67afe4dSAndroid Build Coastguard Worker
8435*a67afe4dSAndroid Build Coastguard Worker	  # Warn about portability, can't link against -module's on some
8436*a67afe4dSAndroid Build Coastguard Worker	  # systems (darwin).  Don't bleat about dlopened modules though!
8437*a67afe4dSAndroid Build Coastguard Worker	  dlopenmodule=
8438*a67afe4dSAndroid Build Coastguard Worker	  for dlpremoduletest in $dlprefiles; do
8439*a67afe4dSAndroid Build Coastguard Worker	    if test "X$dlpremoduletest" = "X$lib"; then
8440*a67afe4dSAndroid Build Coastguard Worker	      dlopenmodule=$dlpremoduletest
8441*a67afe4dSAndroid Build Coastguard Worker	      break
8442*a67afe4dSAndroid Build Coastguard Worker	    fi
8443*a67afe4dSAndroid Build Coastguard Worker	  done
8444*a67afe4dSAndroid Build Coastguard Worker	  if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then
8445*a67afe4dSAndroid Build Coastguard Worker	    echo
8446*a67afe4dSAndroid Build Coastguard Worker	    if test prog = "$linkmode"; then
8447*a67afe4dSAndroid Build Coastguard Worker	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
8448*a67afe4dSAndroid Build Coastguard Worker	    else
8449*a67afe4dSAndroid Build Coastguard Worker	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
8450*a67afe4dSAndroid Build Coastguard Worker	    fi
8451*a67afe4dSAndroid Build Coastguard Worker	    $ECHO "*** $linklib is not portable!"
8452*a67afe4dSAndroid Build Coastguard Worker	  fi
8453*a67afe4dSAndroid Build Coastguard Worker	  if test lib = "$linkmode" &&
8454*a67afe4dSAndroid Build Coastguard Worker	     test yes = "$hardcode_into_libs"; then
8455*a67afe4dSAndroid Build Coastguard Worker	    # Hardcode the library path.
8456*a67afe4dSAndroid Build Coastguard Worker	    # Skip directories that are in the system default run-time
8457*a67afe4dSAndroid Build Coastguard Worker	    # search path.
8458*a67afe4dSAndroid Build Coastguard Worker	    case " $sys_lib_dlsearch_path " in
8459*a67afe4dSAndroid Build Coastguard Worker	    *" $absdir "*) ;;
8460*a67afe4dSAndroid Build Coastguard Worker	    *)
8461*a67afe4dSAndroid Build Coastguard Worker	      case "$compile_rpath " in
8462*a67afe4dSAndroid Build Coastguard Worker	      *" $absdir "*) ;;
8463*a67afe4dSAndroid Build Coastguard Worker	      *) func_append compile_rpath " $absdir" ;;
8464*a67afe4dSAndroid Build Coastguard Worker	      esac
8465*a67afe4dSAndroid Build Coastguard Worker	      ;;
8466*a67afe4dSAndroid Build Coastguard Worker	    esac
8467*a67afe4dSAndroid Build Coastguard Worker	    case " $sys_lib_dlsearch_path " in
8468*a67afe4dSAndroid Build Coastguard Worker	    *" $libdir "*) ;;
8469*a67afe4dSAndroid Build Coastguard Worker	    *)
8470*a67afe4dSAndroid Build Coastguard Worker	      case "$finalize_rpath " in
8471*a67afe4dSAndroid Build Coastguard Worker	      *" $libdir "*) ;;
8472*a67afe4dSAndroid Build Coastguard Worker	      *) func_append finalize_rpath " $libdir" ;;
8473*a67afe4dSAndroid Build Coastguard Worker	      esac
8474*a67afe4dSAndroid Build Coastguard Worker	      ;;
8475*a67afe4dSAndroid Build Coastguard Worker	    esac
8476*a67afe4dSAndroid Build Coastguard Worker	  fi
8477*a67afe4dSAndroid Build Coastguard Worker
8478*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$old_archive_from_expsyms_cmds"; then
8479*a67afe4dSAndroid Build Coastguard Worker	    # figure out the soname
8480*a67afe4dSAndroid Build Coastguard Worker	    set dummy $library_names
8481*a67afe4dSAndroid Build Coastguard Worker	    shift
8482*a67afe4dSAndroid Build Coastguard Worker	    realname=$1
8483*a67afe4dSAndroid Build Coastguard Worker	    shift
8484*a67afe4dSAndroid Build Coastguard Worker	    libname=`eval "\\$ECHO \"$libname_spec\""`
8485*a67afe4dSAndroid Build Coastguard Worker	    # use dlname if we got it. it's perfectly good, no?
8486*a67afe4dSAndroid Build Coastguard Worker	    if test -n "$dlname"; then
8487*a67afe4dSAndroid Build Coastguard Worker	      soname=$dlname
8488*a67afe4dSAndroid Build Coastguard Worker	    elif test -n "$soname_spec"; then
8489*a67afe4dSAndroid Build Coastguard Worker	      # bleh windows
8490*a67afe4dSAndroid Build Coastguard Worker	      case $host in
8491*a67afe4dSAndroid Build Coastguard Worker	      *cygwin* | mingw* | *cegcc* | *os2*)
8492*a67afe4dSAndroid Build Coastguard Worker	        func_arith $current - $age
8493*a67afe4dSAndroid Build Coastguard Worker		major=$func_arith_result
8494*a67afe4dSAndroid Build Coastguard Worker		versuffix=-$major
8495*a67afe4dSAndroid Build Coastguard Worker		;;
8496*a67afe4dSAndroid Build Coastguard Worker	      esac
8497*a67afe4dSAndroid Build Coastguard Worker	      eval soname=\"$soname_spec\"
8498*a67afe4dSAndroid Build Coastguard Worker	    else
8499*a67afe4dSAndroid Build Coastguard Worker	      soname=$realname
8500*a67afe4dSAndroid Build Coastguard Worker	    fi
8501*a67afe4dSAndroid Build Coastguard Worker
8502*a67afe4dSAndroid Build Coastguard Worker	    # Make a new name for the extract_expsyms_cmds to use
8503*a67afe4dSAndroid Build Coastguard Worker	    soroot=$soname
8504*a67afe4dSAndroid Build Coastguard Worker	    func_basename "$soroot"
8505*a67afe4dSAndroid Build Coastguard Worker	    soname=$func_basename_result
8506*a67afe4dSAndroid Build Coastguard Worker	    func_stripname 'lib' '.dll' "$soname"
8507*a67afe4dSAndroid Build Coastguard Worker	    newlib=libimp-$func_stripname_result.a
8508*a67afe4dSAndroid Build Coastguard Worker
8509*a67afe4dSAndroid Build Coastguard Worker	    # If the library has no export list, then create one now
8510*a67afe4dSAndroid Build Coastguard Worker	    if test -f "$output_objdir/$soname-def"; then :
8511*a67afe4dSAndroid Build Coastguard Worker	    else
8512*a67afe4dSAndroid Build Coastguard Worker	      func_verbose "extracting exported symbol list from '$soname'"
8513*a67afe4dSAndroid Build Coastguard Worker	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
8514*a67afe4dSAndroid Build Coastguard Worker	    fi
8515*a67afe4dSAndroid Build Coastguard Worker
8516*a67afe4dSAndroid Build Coastguard Worker	    # Create $newlib
8517*a67afe4dSAndroid Build Coastguard Worker	    if test -f "$output_objdir/$newlib"; then :; else
8518*a67afe4dSAndroid Build Coastguard Worker	      func_verbose "generating import library for '$soname'"
8519*a67afe4dSAndroid Build Coastguard Worker	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
8520*a67afe4dSAndroid Build Coastguard Worker	    fi
8521*a67afe4dSAndroid Build Coastguard Worker	    # make sure the library variables are pointing to the new library
8522*a67afe4dSAndroid Build Coastguard Worker	    dir=$output_objdir
8523*a67afe4dSAndroid Build Coastguard Worker	    linklib=$newlib
8524*a67afe4dSAndroid Build Coastguard Worker	  fi # test -n "$old_archive_from_expsyms_cmds"
8525*a67afe4dSAndroid Build Coastguard Worker
8526*a67afe4dSAndroid Build Coastguard Worker	  if test prog = "$linkmode" || test relink != "$opt_mode"; then
8527*a67afe4dSAndroid Build Coastguard Worker	    add_shlibpath=
8528*a67afe4dSAndroid Build Coastguard Worker	    add_dir=
8529*a67afe4dSAndroid Build Coastguard Worker	    add=
8530*a67afe4dSAndroid Build Coastguard Worker	    lib_linked=yes
8531*a67afe4dSAndroid Build Coastguard Worker	    case $hardcode_action in
8532*a67afe4dSAndroid Build Coastguard Worker	    immediate | unsupported)
8533*a67afe4dSAndroid Build Coastguard Worker	      if test no = "$hardcode_direct"; then
8534*a67afe4dSAndroid Build Coastguard Worker		add=$dir/$linklib
8535*a67afe4dSAndroid Build Coastguard Worker		case $host in
8536*a67afe4dSAndroid Build Coastguard Worker		  *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;;
8537*a67afe4dSAndroid Build Coastguard Worker		  *-*-sysv4*uw2*) add_dir=-L$dir ;;
8538*a67afe4dSAndroid Build Coastguard Worker		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
8539*a67afe4dSAndroid Build Coastguard Worker		    *-*-unixware7*) add_dir=-L$dir ;;
8540*a67afe4dSAndroid Build Coastguard Worker		  *-*-darwin* )
8541*a67afe4dSAndroid Build Coastguard Worker		    # if the lib is a (non-dlopened) module then we cannot
8542*a67afe4dSAndroid Build Coastguard Worker		    # link against it, someone is ignoring the earlier warnings
8543*a67afe4dSAndroid Build Coastguard Worker		    if /usr/bin/file -L $add 2> /dev/null |
8544*a67afe4dSAndroid Build Coastguard Worker			 $GREP ": [^:]* bundle" >/dev/null; then
8545*a67afe4dSAndroid Build Coastguard Worker		      if test "X$dlopenmodule" != "X$lib"; then
8546*a67afe4dSAndroid Build Coastguard Worker			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
8547*a67afe4dSAndroid Build Coastguard Worker			if test -z "$old_library"; then
8548*a67afe4dSAndroid Build Coastguard Worker			  echo
8549*a67afe4dSAndroid Build Coastguard Worker			  echo "*** And there doesn't seem to be a static archive available"
8550*a67afe4dSAndroid Build Coastguard Worker			  echo "*** The link will probably fail, sorry"
8551*a67afe4dSAndroid Build Coastguard Worker			else
8552*a67afe4dSAndroid Build Coastguard Worker			  add=$dir/$old_library
8553*a67afe4dSAndroid Build Coastguard Worker			fi
8554*a67afe4dSAndroid Build Coastguard Worker		      elif test -n "$old_library"; then
8555*a67afe4dSAndroid Build Coastguard Worker			add=$dir/$old_library
8556*a67afe4dSAndroid Build Coastguard Worker		      fi
8557*a67afe4dSAndroid Build Coastguard Worker		    fi
8558*a67afe4dSAndroid Build Coastguard Worker		esac
8559*a67afe4dSAndroid Build Coastguard Worker	      elif test no = "$hardcode_minus_L"; then
8560*a67afe4dSAndroid Build Coastguard Worker		case $host in
8561*a67afe4dSAndroid Build Coastguard Worker		*-*-sunos*) add_shlibpath=$dir ;;
8562*a67afe4dSAndroid Build Coastguard Worker		esac
8563*a67afe4dSAndroid Build Coastguard Worker		add_dir=-L$dir
8564*a67afe4dSAndroid Build Coastguard Worker		add=-l$name
8565*a67afe4dSAndroid Build Coastguard Worker	      elif test no = "$hardcode_shlibpath_var"; then
8566*a67afe4dSAndroid Build Coastguard Worker		add_shlibpath=$dir
8567*a67afe4dSAndroid Build Coastguard Worker		add=-l$name
8568*a67afe4dSAndroid Build Coastguard Worker	      else
8569*a67afe4dSAndroid Build Coastguard Worker		lib_linked=no
8570*a67afe4dSAndroid Build Coastguard Worker	      fi
8571*a67afe4dSAndroid Build Coastguard Worker	      ;;
8572*a67afe4dSAndroid Build Coastguard Worker	    relink)
8573*a67afe4dSAndroid Build Coastguard Worker	      if test yes = "$hardcode_direct" &&
8574*a67afe4dSAndroid Build Coastguard Worker	         test no = "$hardcode_direct_absolute"; then
8575*a67afe4dSAndroid Build Coastguard Worker		add=$dir/$linklib
8576*a67afe4dSAndroid Build Coastguard Worker	      elif test yes = "$hardcode_minus_L"; then
8577*a67afe4dSAndroid Build Coastguard Worker		add_dir=-L$absdir
8578*a67afe4dSAndroid Build Coastguard Worker		# Try looking first in the location we're being installed to.
8579*a67afe4dSAndroid Build Coastguard Worker		if test -n "$inst_prefix_dir"; then
8580*a67afe4dSAndroid Build Coastguard Worker		  case $libdir in
8581*a67afe4dSAndroid Build Coastguard Worker		    [\\/]*)
8582*a67afe4dSAndroid Build Coastguard Worker		      func_append add_dir " -L$inst_prefix_dir$libdir"
8583*a67afe4dSAndroid Build Coastguard Worker		      ;;
8584*a67afe4dSAndroid Build Coastguard Worker		  esac
8585*a67afe4dSAndroid Build Coastguard Worker		fi
8586*a67afe4dSAndroid Build Coastguard Worker		add=-l$name
8587*a67afe4dSAndroid Build Coastguard Worker	      elif test yes = "$hardcode_shlibpath_var"; then
8588*a67afe4dSAndroid Build Coastguard Worker		add_shlibpath=$dir
8589*a67afe4dSAndroid Build Coastguard Worker		add=-l$name
8590*a67afe4dSAndroid Build Coastguard Worker	      else
8591*a67afe4dSAndroid Build Coastguard Worker		lib_linked=no
8592*a67afe4dSAndroid Build Coastguard Worker	      fi
8593*a67afe4dSAndroid Build Coastguard Worker	      ;;
8594*a67afe4dSAndroid Build Coastguard Worker	    *) lib_linked=no ;;
8595*a67afe4dSAndroid Build Coastguard Worker	    esac
8596*a67afe4dSAndroid Build Coastguard Worker
8597*a67afe4dSAndroid Build Coastguard Worker	    if test yes != "$lib_linked"; then
8598*a67afe4dSAndroid Build Coastguard Worker	      func_fatal_configuration "unsupported hardcode properties"
8599*a67afe4dSAndroid Build Coastguard Worker	    fi
8600*a67afe4dSAndroid Build Coastguard Worker
8601*a67afe4dSAndroid Build Coastguard Worker	    if test -n "$add_shlibpath"; then
8602*a67afe4dSAndroid Build Coastguard Worker	      case :$compile_shlibpath: in
8603*a67afe4dSAndroid Build Coastguard Worker	      *":$add_shlibpath:"*) ;;
8604*a67afe4dSAndroid Build Coastguard Worker	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
8605*a67afe4dSAndroid Build Coastguard Worker	      esac
8606*a67afe4dSAndroid Build Coastguard Worker	    fi
8607*a67afe4dSAndroid Build Coastguard Worker	    if test prog = "$linkmode"; then
8608*a67afe4dSAndroid Build Coastguard Worker	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
8609*a67afe4dSAndroid Build Coastguard Worker	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
8610*a67afe4dSAndroid Build Coastguard Worker	    else
8611*a67afe4dSAndroid Build Coastguard Worker	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
8612*a67afe4dSAndroid Build Coastguard Worker	      test -n "$add" && deplibs="$add $deplibs"
8613*a67afe4dSAndroid Build Coastguard Worker	      if test yes != "$hardcode_direct" &&
8614*a67afe4dSAndroid Build Coastguard Worker		 test yes != "$hardcode_minus_L" &&
8615*a67afe4dSAndroid Build Coastguard Worker		 test yes = "$hardcode_shlibpath_var"; then
8616*a67afe4dSAndroid Build Coastguard Worker		case :$finalize_shlibpath: in
8617*a67afe4dSAndroid Build Coastguard Worker		*":$libdir:"*) ;;
8618*a67afe4dSAndroid Build Coastguard Worker		*) func_append finalize_shlibpath "$libdir:" ;;
8619*a67afe4dSAndroid Build Coastguard Worker		esac
8620*a67afe4dSAndroid Build Coastguard Worker	      fi
8621*a67afe4dSAndroid Build Coastguard Worker	    fi
8622*a67afe4dSAndroid Build Coastguard Worker	  fi
8623*a67afe4dSAndroid Build Coastguard Worker
8624*a67afe4dSAndroid Build Coastguard Worker	  if test prog = "$linkmode" || test relink = "$opt_mode"; then
8625*a67afe4dSAndroid Build Coastguard Worker	    add_shlibpath=
8626*a67afe4dSAndroid Build Coastguard Worker	    add_dir=
8627*a67afe4dSAndroid Build Coastguard Worker	    add=
8628*a67afe4dSAndroid Build Coastguard Worker	    # Finalize command for both is simple: just hardcode it.
8629*a67afe4dSAndroid Build Coastguard Worker	    if test yes = "$hardcode_direct" &&
8630*a67afe4dSAndroid Build Coastguard Worker	       test no = "$hardcode_direct_absolute"; then
8631*a67afe4dSAndroid Build Coastguard Worker	      add=$libdir/$linklib
8632*a67afe4dSAndroid Build Coastguard Worker	    elif test yes = "$hardcode_minus_L"; then
8633*a67afe4dSAndroid Build Coastguard Worker	      add_dir=-L$libdir
8634*a67afe4dSAndroid Build Coastguard Worker	      add=-l$name
8635*a67afe4dSAndroid Build Coastguard Worker	    elif test yes = "$hardcode_shlibpath_var"; then
8636*a67afe4dSAndroid Build Coastguard Worker	      case :$finalize_shlibpath: in
8637*a67afe4dSAndroid Build Coastguard Worker	      *":$libdir:"*) ;;
8638*a67afe4dSAndroid Build Coastguard Worker	      *) func_append finalize_shlibpath "$libdir:" ;;
8639*a67afe4dSAndroid Build Coastguard Worker	      esac
8640*a67afe4dSAndroid Build Coastguard Worker	      add=-l$name
8641*a67afe4dSAndroid Build Coastguard Worker	    elif test yes = "$hardcode_automatic"; then
8642*a67afe4dSAndroid Build Coastguard Worker	      if test -n "$inst_prefix_dir" &&
8643*a67afe4dSAndroid Build Coastguard Worker		 test -f "$inst_prefix_dir$libdir/$linklib"; then
8644*a67afe4dSAndroid Build Coastguard Worker		add=$inst_prefix_dir$libdir/$linklib
8645*a67afe4dSAndroid Build Coastguard Worker	      else
8646*a67afe4dSAndroid Build Coastguard Worker		add=$libdir/$linklib
8647*a67afe4dSAndroid Build Coastguard Worker	      fi
8648*a67afe4dSAndroid Build Coastguard Worker	    else
8649*a67afe4dSAndroid Build Coastguard Worker	      # We cannot seem to hardcode it, guess we'll fake it.
8650*a67afe4dSAndroid Build Coastguard Worker	      add_dir=-L$libdir
8651*a67afe4dSAndroid Build Coastguard Worker	      # Try looking first in the location we're being installed to.
8652*a67afe4dSAndroid Build Coastguard Worker	      if test -n "$inst_prefix_dir"; then
8653*a67afe4dSAndroid Build Coastguard Worker		case $libdir in
8654*a67afe4dSAndroid Build Coastguard Worker		  [\\/]*)
8655*a67afe4dSAndroid Build Coastguard Worker		    func_append add_dir " -L$inst_prefix_dir$libdir"
8656*a67afe4dSAndroid Build Coastguard Worker		    ;;
8657*a67afe4dSAndroid Build Coastguard Worker		esac
8658*a67afe4dSAndroid Build Coastguard Worker	      fi
8659*a67afe4dSAndroid Build Coastguard Worker	      add=-l$name
8660*a67afe4dSAndroid Build Coastguard Worker	    fi
8661*a67afe4dSAndroid Build Coastguard Worker
8662*a67afe4dSAndroid Build Coastguard Worker	    if test prog = "$linkmode"; then
8663*a67afe4dSAndroid Build Coastguard Worker	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
8664*a67afe4dSAndroid Build Coastguard Worker	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
8665*a67afe4dSAndroid Build Coastguard Worker	    else
8666*a67afe4dSAndroid Build Coastguard Worker	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
8667*a67afe4dSAndroid Build Coastguard Worker	      test -n "$add" && deplibs="$add $deplibs"
8668*a67afe4dSAndroid Build Coastguard Worker	    fi
8669*a67afe4dSAndroid Build Coastguard Worker	  fi
8670*a67afe4dSAndroid Build Coastguard Worker	elif test prog = "$linkmode"; then
8671*a67afe4dSAndroid Build Coastguard Worker	  # Here we assume that one of hardcode_direct or hardcode_minus_L
8672*a67afe4dSAndroid Build Coastguard Worker	  # is not unsupported.  This is valid on all known static and
8673*a67afe4dSAndroid Build Coastguard Worker	  # shared platforms.
8674*a67afe4dSAndroid Build Coastguard Worker	  if test unsupported != "$hardcode_direct"; then
8675*a67afe4dSAndroid Build Coastguard Worker	    test -n "$old_library" && linklib=$old_library
8676*a67afe4dSAndroid Build Coastguard Worker	    compile_deplibs="$dir/$linklib $compile_deplibs"
8677*a67afe4dSAndroid Build Coastguard Worker	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
8678*a67afe4dSAndroid Build Coastguard Worker	  else
8679*a67afe4dSAndroid Build Coastguard Worker	    compile_deplibs="-l$name -L$dir $compile_deplibs"
8680*a67afe4dSAndroid Build Coastguard Worker	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
8681*a67afe4dSAndroid Build Coastguard Worker	  fi
8682*a67afe4dSAndroid Build Coastguard Worker	elif test yes = "$build_libtool_libs"; then
8683*a67afe4dSAndroid Build Coastguard Worker	  # Not a shared library
8684*a67afe4dSAndroid Build Coastguard Worker	  if test pass_all != "$deplibs_check_method"; then
8685*a67afe4dSAndroid Build Coastguard Worker	    # We're trying link a shared library against a static one
8686*a67afe4dSAndroid Build Coastguard Worker	    # but the system doesn't support it.
8687*a67afe4dSAndroid Build Coastguard Worker
8688*a67afe4dSAndroid Build Coastguard Worker	    # Just print a warning and add the library to dependency_libs so
8689*a67afe4dSAndroid Build Coastguard Worker	    # that the program can be linked against the static library.
8690*a67afe4dSAndroid Build Coastguard Worker	    echo
8691*a67afe4dSAndroid Build Coastguard Worker	    $ECHO "*** Warning: This system cannot link to static lib archive $lib."
8692*a67afe4dSAndroid Build Coastguard Worker	    echo "*** I have the capability to make that library automatically link in when"
8693*a67afe4dSAndroid Build Coastguard Worker	    echo "*** you link to this library.  But I can only do this if you have a"
8694*a67afe4dSAndroid Build Coastguard Worker	    echo "*** shared version of the library, which you do not appear to have."
8695*a67afe4dSAndroid Build Coastguard Worker	    if test yes = "$module"; then
8696*a67afe4dSAndroid Build Coastguard Worker	      echo "*** But as you try to build a module library, libtool will still create "
8697*a67afe4dSAndroid Build Coastguard Worker	      echo "*** a static module, that should work as long as the dlopening application"
8698*a67afe4dSAndroid Build Coastguard Worker	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
8699*a67afe4dSAndroid Build Coastguard Worker	      if test -z "$global_symbol_pipe"; then
8700*a67afe4dSAndroid Build Coastguard Worker		echo
8701*a67afe4dSAndroid Build Coastguard Worker		echo "*** However, this would only work if libtool was able to extract symbol"
8702*a67afe4dSAndroid Build Coastguard Worker		echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
8703*a67afe4dSAndroid Build Coastguard Worker		echo "*** not find such a program.  So, this module is probably useless."
8704*a67afe4dSAndroid Build Coastguard Worker		echo "*** 'nm' from GNU binutils and a full rebuild may help."
8705*a67afe4dSAndroid Build Coastguard Worker	      fi
8706*a67afe4dSAndroid Build Coastguard Worker	      if test no = "$build_old_libs"; then
8707*a67afe4dSAndroid Build Coastguard Worker		build_libtool_libs=module
8708*a67afe4dSAndroid Build Coastguard Worker		build_old_libs=yes
8709*a67afe4dSAndroid Build Coastguard Worker	      else
8710*a67afe4dSAndroid Build Coastguard Worker		build_libtool_libs=no
8711*a67afe4dSAndroid Build Coastguard Worker	      fi
8712*a67afe4dSAndroid Build Coastguard Worker	    fi
8713*a67afe4dSAndroid Build Coastguard Worker	  else
8714*a67afe4dSAndroid Build Coastguard Worker	    deplibs="$dir/$old_library $deplibs"
8715*a67afe4dSAndroid Build Coastguard Worker	    link_static=yes
8716*a67afe4dSAndroid Build Coastguard Worker	  fi
8717*a67afe4dSAndroid Build Coastguard Worker	fi # link shared/static library?
8718*a67afe4dSAndroid Build Coastguard Worker
8719*a67afe4dSAndroid Build Coastguard Worker	if test lib = "$linkmode"; then
8720*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$dependency_libs" &&
8721*a67afe4dSAndroid Build Coastguard Worker	     { test yes != "$hardcode_into_libs" ||
8722*a67afe4dSAndroid Build Coastguard Worker	       test yes = "$build_old_libs" ||
8723*a67afe4dSAndroid Build Coastguard Worker	       test yes = "$link_static"; }; then
8724*a67afe4dSAndroid Build Coastguard Worker	    # Extract -R from dependency_libs
8725*a67afe4dSAndroid Build Coastguard Worker	    temp_deplibs=
8726*a67afe4dSAndroid Build Coastguard Worker	    for libdir in $dependency_libs; do
8727*a67afe4dSAndroid Build Coastguard Worker	      case $libdir in
8728*a67afe4dSAndroid Build Coastguard Worker	      -R*) func_stripname '-R' '' "$libdir"
8729*a67afe4dSAndroid Build Coastguard Worker	           temp_xrpath=$func_stripname_result
8730*a67afe4dSAndroid Build Coastguard Worker		   case " $xrpath " in
8731*a67afe4dSAndroid Build Coastguard Worker		   *" $temp_xrpath "*) ;;
8732*a67afe4dSAndroid Build Coastguard Worker		   *) func_append xrpath " $temp_xrpath";;
8733*a67afe4dSAndroid Build Coastguard Worker		   esac;;
8734*a67afe4dSAndroid Build Coastguard Worker	      *) func_append temp_deplibs " $libdir";;
8735*a67afe4dSAndroid Build Coastguard Worker	      esac
8736*a67afe4dSAndroid Build Coastguard Worker	    done
8737*a67afe4dSAndroid Build Coastguard Worker	    dependency_libs=$temp_deplibs
8738*a67afe4dSAndroid Build Coastguard Worker	  fi
8739*a67afe4dSAndroid Build Coastguard Worker
8740*a67afe4dSAndroid Build Coastguard Worker	  func_append newlib_search_path " $absdir"
8741*a67afe4dSAndroid Build Coastguard Worker	  # Link against this library
8742*a67afe4dSAndroid Build Coastguard Worker	  test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
8743*a67afe4dSAndroid Build Coastguard Worker	  # ... and its dependency_libs
8744*a67afe4dSAndroid Build Coastguard Worker	  tmp_libs=
8745*a67afe4dSAndroid Build Coastguard Worker	  for deplib in $dependency_libs; do
8746*a67afe4dSAndroid Build Coastguard Worker	    newdependency_libs="$deplib $newdependency_libs"
8747*a67afe4dSAndroid Build Coastguard Worker	    case $deplib in
8748*a67afe4dSAndroid Build Coastguard Worker              -L*) func_stripname '-L' '' "$deplib"
8749*a67afe4dSAndroid Build Coastguard Worker                   func_resolve_sysroot "$func_stripname_result";;
8750*a67afe4dSAndroid Build Coastguard Worker              *) func_resolve_sysroot "$deplib" ;;
8751*a67afe4dSAndroid Build Coastguard Worker            esac
8752*a67afe4dSAndroid Build Coastguard Worker	    if $opt_preserve_dup_deps; then
8753*a67afe4dSAndroid Build Coastguard Worker	      case "$tmp_libs " in
8754*a67afe4dSAndroid Build Coastguard Worker	      *" $func_resolve_sysroot_result "*)
8755*a67afe4dSAndroid Build Coastguard Worker                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
8756*a67afe4dSAndroid Build Coastguard Worker	      esac
8757*a67afe4dSAndroid Build Coastguard Worker	    fi
8758*a67afe4dSAndroid Build Coastguard Worker	    func_append tmp_libs " $func_resolve_sysroot_result"
8759*a67afe4dSAndroid Build Coastguard Worker	  done
8760*a67afe4dSAndroid Build Coastguard Worker
8761*a67afe4dSAndroid Build Coastguard Worker	  if test no != "$link_all_deplibs"; then
8762*a67afe4dSAndroid Build Coastguard Worker	    # Add the search paths of all dependency libraries
8763*a67afe4dSAndroid Build Coastguard Worker	    for deplib in $dependency_libs; do
8764*a67afe4dSAndroid Build Coastguard Worker	      path=
8765*a67afe4dSAndroid Build Coastguard Worker	      case $deplib in
8766*a67afe4dSAndroid Build Coastguard Worker	      -L*) path=$deplib ;;
8767*a67afe4dSAndroid Build Coastguard Worker	      *.la)
8768*a67afe4dSAndroid Build Coastguard Worker	        func_resolve_sysroot "$deplib"
8769*a67afe4dSAndroid Build Coastguard Worker	        deplib=$func_resolve_sysroot_result
8770*a67afe4dSAndroid Build Coastguard Worker	        func_dirname "$deplib" "" "."
8771*a67afe4dSAndroid Build Coastguard Worker		dir=$func_dirname_result
8772*a67afe4dSAndroid Build Coastguard Worker		# We need an absolute path.
8773*a67afe4dSAndroid Build Coastguard Worker		case $dir in
8774*a67afe4dSAndroid Build Coastguard Worker		[\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;;
8775*a67afe4dSAndroid Build Coastguard Worker		*)
8776*a67afe4dSAndroid Build Coastguard Worker		  absdir=`cd "$dir" && pwd`
8777*a67afe4dSAndroid Build Coastguard Worker		  if test -z "$absdir"; then
8778*a67afe4dSAndroid Build Coastguard Worker		    func_warning "cannot determine absolute directory name of '$dir'"
8779*a67afe4dSAndroid Build Coastguard Worker		    absdir=$dir
8780*a67afe4dSAndroid Build Coastguard Worker		  fi
8781*a67afe4dSAndroid Build Coastguard Worker		  ;;
8782*a67afe4dSAndroid Build Coastguard Worker		esac
8783*a67afe4dSAndroid Build Coastguard Worker		if $GREP "^installed=no" $deplib > /dev/null; then
8784*a67afe4dSAndroid Build Coastguard Worker		case $host in
8785*a67afe4dSAndroid Build Coastguard Worker		*-*-darwin*)
8786*a67afe4dSAndroid Build Coastguard Worker		  depdepl=
8787*a67afe4dSAndroid Build Coastguard Worker		  eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
8788*a67afe4dSAndroid Build Coastguard Worker		  if test -n "$deplibrary_names"; then
8789*a67afe4dSAndroid Build Coastguard Worker		    for tmp in $deplibrary_names; do
8790*a67afe4dSAndroid Build Coastguard Worker		      depdepl=$tmp
8791*a67afe4dSAndroid Build Coastguard Worker		    done
8792*a67afe4dSAndroid Build Coastguard Worker		    if test -f "$absdir/$objdir/$depdepl"; then
8793*a67afe4dSAndroid Build Coastguard Worker		      depdepl=$absdir/$objdir/$depdepl
8794*a67afe4dSAndroid Build Coastguard Worker		      darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
8795*a67afe4dSAndroid Build Coastguard Worker                      if test -z "$darwin_install_name"; then
8796*a67afe4dSAndroid Build Coastguard Worker                          darwin_install_name=`$OTOOL64 -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
8797*a67afe4dSAndroid Build Coastguard Worker                      fi
8798*a67afe4dSAndroid Build Coastguard Worker		      func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl"
8799*a67afe4dSAndroid Build Coastguard Worker		      func_append linker_flags " -dylib_file $darwin_install_name:$depdepl"
8800*a67afe4dSAndroid Build Coastguard Worker		      path=
8801*a67afe4dSAndroid Build Coastguard Worker		    fi
8802*a67afe4dSAndroid Build Coastguard Worker		  fi
8803*a67afe4dSAndroid Build Coastguard Worker		  ;;
8804*a67afe4dSAndroid Build Coastguard Worker		*)
8805*a67afe4dSAndroid Build Coastguard Worker		  path=-L$absdir/$objdir
8806*a67afe4dSAndroid Build Coastguard Worker		  ;;
8807*a67afe4dSAndroid Build Coastguard Worker		esac
8808*a67afe4dSAndroid Build Coastguard Worker		else
8809*a67afe4dSAndroid Build Coastguard Worker		  eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
8810*a67afe4dSAndroid Build Coastguard Worker		  test -z "$libdir" && \
8811*a67afe4dSAndroid Build Coastguard Worker		    func_fatal_error "'$deplib' is not a valid libtool archive"
8812*a67afe4dSAndroid Build Coastguard Worker		  test "$absdir" != "$libdir" && \
8813*a67afe4dSAndroid Build Coastguard Worker		    func_warning "'$deplib' seems to be moved"
8814*a67afe4dSAndroid Build Coastguard Worker
8815*a67afe4dSAndroid Build Coastguard Worker		  path=-L$absdir
8816*a67afe4dSAndroid Build Coastguard Worker		fi
8817*a67afe4dSAndroid Build Coastguard Worker		;;
8818*a67afe4dSAndroid Build Coastguard Worker	      esac
8819*a67afe4dSAndroid Build Coastguard Worker	      case " $deplibs " in
8820*a67afe4dSAndroid Build Coastguard Worker	      *" $path "*) ;;
8821*a67afe4dSAndroid Build Coastguard Worker	      *) deplibs="$path $deplibs" ;;
8822*a67afe4dSAndroid Build Coastguard Worker	      esac
8823*a67afe4dSAndroid Build Coastguard Worker	    done
8824*a67afe4dSAndroid Build Coastguard Worker	  fi # link_all_deplibs != no
8825*a67afe4dSAndroid Build Coastguard Worker	fi # linkmode = lib
8826*a67afe4dSAndroid Build Coastguard Worker      done # for deplib in $libs
8827*a67afe4dSAndroid Build Coastguard Worker      if test link = "$pass"; then
8828*a67afe4dSAndroid Build Coastguard Worker	if test prog = "$linkmode"; then
8829*a67afe4dSAndroid Build Coastguard Worker	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
8830*a67afe4dSAndroid Build Coastguard Worker	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
8831*a67afe4dSAndroid Build Coastguard Worker	else
8832*a67afe4dSAndroid Build Coastguard Worker	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8833*a67afe4dSAndroid Build Coastguard Worker	fi
8834*a67afe4dSAndroid Build Coastguard Worker      fi
8835*a67afe4dSAndroid Build Coastguard Worker      dependency_libs=$newdependency_libs
8836*a67afe4dSAndroid Build Coastguard Worker      if test dlpreopen = "$pass"; then
8837*a67afe4dSAndroid Build Coastguard Worker	# Link the dlpreopened libraries before other libraries
8838*a67afe4dSAndroid Build Coastguard Worker	for deplib in $save_deplibs; do
8839*a67afe4dSAndroid Build Coastguard Worker	  deplibs="$deplib $deplibs"
8840*a67afe4dSAndroid Build Coastguard Worker	done
8841*a67afe4dSAndroid Build Coastguard Worker      fi
8842*a67afe4dSAndroid Build Coastguard Worker      if test dlopen != "$pass"; then
8843*a67afe4dSAndroid Build Coastguard Worker	test conv = "$pass" || {
8844*a67afe4dSAndroid Build Coastguard Worker	  # Make sure lib_search_path contains only unique directories.
8845*a67afe4dSAndroid Build Coastguard Worker	  lib_search_path=
8846*a67afe4dSAndroid Build Coastguard Worker	  for dir in $newlib_search_path; do
8847*a67afe4dSAndroid Build Coastguard Worker	    case "$lib_search_path " in
8848*a67afe4dSAndroid Build Coastguard Worker	    *" $dir "*) ;;
8849*a67afe4dSAndroid Build Coastguard Worker	    *) func_append lib_search_path " $dir" ;;
8850*a67afe4dSAndroid Build Coastguard Worker	    esac
8851*a67afe4dSAndroid Build Coastguard Worker	  done
8852*a67afe4dSAndroid Build Coastguard Worker	  newlib_search_path=
8853*a67afe4dSAndroid Build Coastguard Worker	}
8854*a67afe4dSAndroid Build Coastguard Worker
8855*a67afe4dSAndroid Build Coastguard Worker	if test prog,link = "$linkmode,$pass"; then
8856*a67afe4dSAndroid Build Coastguard Worker	  vars="compile_deplibs finalize_deplibs"
8857*a67afe4dSAndroid Build Coastguard Worker	else
8858*a67afe4dSAndroid Build Coastguard Worker	  vars=deplibs
8859*a67afe4dSAndroid Build Coastguard Worker	fi
8860*a67afe4dSAndroid Build Coastguard Worker	for var in $vars dependency_libs; do
8861*a67afe4dSAndroid Build Coastguard Worker	  # Add libraries to $var in reverse order
8862*a67afe4dSAndroid Build Coastguard Worker	  eval tmp_libs=\"\$$var\"
8863*a67afe4dSAndroid Build Coastguard Worker	  new_libs=
8864*a67afe4dSAndroid Build Coastguard Worker	  for deplib in $tmp_libs; do
8865*a67afe4dSAndroid Build Coastguard Worker	    # FIXME: Pedantically, this is the right thing to do, so
8866*a67afe4dSAndroid Build Coastguard Worker	    #        that some nasty dependency loop isn't accidentally
8867*a67afe4dSAndroid Build Coastguard Worker	    #        broken:
8868*a67afe4dSAndroid Build Coastguard Worker	    #new_libs="$deplib $new_libs"
8869*a67afe4dSAndroid Build Coastguard Worker	    # Pragmatically, this seems to cause very few problems in
8870*a67afe4dSAndroid Build Coastguard Worker	    # practice:
8871*a67afe4dSAndroid Build Coastguard Worker	    case $deplib in
8872*a67afe4dSAndroid Build Coastguard Worker	    -L*) new_libs="$deplib $new_libs" ;;
8873*a67afe4dSAndroid Build Coastguard Worker	    -R*) ;;
8874*a67afe4dSAndroid Build Coastguard Worker	    *)
8875*a67afe4dSAndroid Build Coastguard Worker	      # And here is the reason: when a library appears more
8876*a67afe4dSAndroid Build Coastguard Worker	      # than once as an explicit dependence of a library, or
8877*a67afe4dSAndroid Build Coastguard Worker	      # is implicitly linked in more than once by the
8878*a67afe4dSAndroid Build Coastguard Worker	      # compiler, it is considered special, and multiple
8879*a67afe4dSAndroid Build Coastguard Worker	      # occurrences thereof are not removed.  Compare this
8880*a67afe4dSAndroid Build Coastguard Worker	      # with having the same library being listed as a
8881*a67afe4dSAndroid Build Coastguard Worker	      # dependency of multiple other libraries: in this case,
8882*a67afe4dSAndroid Build Coastguard Worker	      # we know (pedantically, we assume) the library does not
8883*a67afe4dSAndroid Build Coastguard Worker	      # need to be listed more than once, so we keep only the
8884*a67afe4dSAndroid Build Coastguard Worker	      # last copy.  This is not always right, but it is rare
8885*a67afe4dSAndroid Build Coastguard Worker	      # enough that we require users that really mean to play
8886*a67afe4dSAndroid Build Coastguard Worker	      # such unportable linking tricks to link the library
8887*a67afe4dSAndroid Build Coastguard Worker	      # using -Wl,-lname, so that libtool does not consider it
8888*a67afe4dSAndroid Build Coastguard Worker	      # for duplicate removal.
8889*a67afe4dSAndroid Build Coastguard Worker	      case " $specialdeplibs " in
8890*a67afe4dSAndroid Build Coastguard Worker	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
8891*a67afe4dSAndroid Build Coastguard Worker	      *)
8892*a67afe4dSAndroid Build Coastguard Worker		case " $new_libs " in
8893*a67afe4dSAndroid Build Coastguard Worker		*" $deplib "*) ;;
8894*a67afe4dSAndroid Build Coastguard Worker		*) new_libs="$deplib $new_libs" ;;
8895*a67afe4dSAndroid Build Coastguard Worker		esac
8896*a67afe4dSAndroid Build Coastguard Worker		;;
8897*a67afe4dSAndroid Build Coastguard Worker	      esac
8898*a67afe4dSAndroid Build Coastguard Worker	      ;;
8899*a67afe4dSAndroid Build Coastguard Worker	    esac
8900*a67afe4dSAndroid Build Coastguard Worker	  done
8901*a67afe4dSAndroid Build Coastguard Worker	  tmp_libs=
8902*a67afe4dSAndroid Build Coastguard Worker	  for deplib in $new_libs; do
8903*a67afe4dSAndroid Build Coastguard Worker	    case $deplib in
8904*a67afe4dSAndroid Build Coastguard Worker	    -L*)
8905*a67afe4dSAndroid Build Coastguard Worker	      case " $tmp_libs " in
8906*a67afe4dSAndroid Build Coastguard Worker	      *" $deplib "*) ;;
8907*a67afe4dSAndroid Build Coastguard Worker	      *) func_append tmp_libs " $deplib" ;;
8908*a67afe4dSAndroid Build Coastguard Worker	      esac
8909*a67afe4dSAndroid Build Coastguard Worker	      ;;
8910*a67afe4dSAndroid Build Coastguard Worker	    *) func_append tmp_libs " $deplib" ;;
8911*a67afe4dSAndroid Build Coastguard Worker	    esac
8912*a67afe4dSAndroid Build Coastguard Worker	  done
8913*a67afe4dSAndroid Build Coastguard Worker	  eval $var=\"$tmp_libs\"
8914*a67afe4dSAndroid Build Coastguard Worker	done # for var
8915*a67afe4dSAndroid Build Coastguard Worker      fi
8916*a67afe4dSAndroid Build Coastguard Worker
8917*a67afe4dSAndroid Build Coastguard Worker      # Add Sun CC postdeps if required:
8918*a67afe4dSAndroid Build Coastguard Worker      test CXX = "$tagname" && {
8919*a67afe4dSAndroid Build Coastguard Worker        case $host_os in
8920*a67afe4dSAndroid Build Coastguard Worker        linux*)
8921*a67afe4dSAndroid Build Coastguard Worker          case `$CC -V 2>&1 | $SED 5q` in
8922*a67afe4dSAndroid Build Coastguard Worker          *Sun\ C*) # Sun C++ 5.9
8923*a67afe4dSAndroid Build Coastguard Worker            func_suncc_cstd_abi
8924*a67afe4dSAndroid Build Coastguard Worker
8925*a67afe4dSAndroid Build Coastguard Worker            if test no != "$suncc_use_cstd_abi"; then
8926*a67afe4dSAndroid Build Coastguard Worker              func_append postdeps ' -library=Cstd -library=Crun'
8927*a67afe4dSAndroid Build Coastguard Worker            fi
8928*a67afe4dSAndroid Build Coastguard Worker            ;;
8929*a67afe4dSAndroid Build Coastguard Worker          esac
8930*a67afe4dSAndroid Build Coastguard Worker          ;;
8931*a67afe4dSAndroid Build Coastguard Worker
8932*a67afe4dSAndroid Build Coastguard Worker        solaris*)
8933*a67afe4dSAndroid Build Coastguard Worker          func_cc_basename "$CC"
8934*a67afe4dSAndroid Build Coastguard Worker          case $func_cc_basename_result in
8935*a67afe4dSAndroid Build Coastguard Worker          CC* | sunCC*)
8936*a67afe4dSAndroid Build Coastguard Worker            func_suncc_cstd_abi
8937*a67afe4dSAndroid Build Coastguard Worker
8938*a67afe4dSAndroid Build Coastguard Worker            if test no != "$suncc_use_cstd_abi"; then
8939*a67afe4dSAndroid Build Coastguard Worker              func_append postdeps ' -library=Cstd -library=Crun'
8940*a67afe4dSAndroid Build Coastguard Worker            fi
8941*a67afe4dSAndroid Build Coastguard Worker            ;;
8942*a67afe4dSAndroid Build Coastguard Worker          esac
8943*a67afe4dSAndroid Build Coastguard Worker          ;;
8944*a67afe4dSAndroid Build Coastguard Worker        esac
8945*a67afe4dSAndroid Build Coastguard Worker      }
8946*a67afe4dSAndroid Build Coastguard Worker
8947*a67afe4dSAndroid Build Coastguard Worker      # Last step: remove runtime libs from dependency_libs
8948*a67afe4dSAndroid Build Coastguard Worker      # (they stay in deplibs)
8949*a67afe4dSAndroid Build Coastguard Worker      tmp_libs=
8950*a67afe4dSAndroid Build Coastguard Worker      for i in $dependency_libs; do
8951*a67afe4dSAndroid Build Coastguard Worker	case " $predeps $postdeps $compiler_lib_search_path " in
8952*a67afe4dSAndroid Build Coastguard Worker	*" $i "*)
8953*a67afe4dSAndroid Build Coastguard Worker	  i=
8954*a67afe4dSAndroid Build Coastguard Worker	  ;;
8955*a67afe4dSAndroid Build Coastguard Worker	esac
8956*a67afe4dSAndroid Build Coastguard Worker	if test -n "$i"; then
8957*a67afe4dSAndroid Build Coastguard Worker	  func_append tmp_libs " $i"
8958*a67afe4dSAndroid Build Coastguard Worker	fi
8959*a67afe4dSAndroid Build Coastguard Worker      done
8960*a67afe4dSAndroid Build Coastguard Worker      dependency_libs=$tmp_libs
8961*a67afe4dSAndroid Build Coastguard Worker    done # for pass
8962*a67afe4dSAndroid Build Coastguard Worker    if test prog = "$linkmode"; then
8963*a67afe4dSAndroid Build Coastguard Worker      dlfiles=$newdlfiles
8964*a67afe4dSAndroid Build Coastguard Worker    fi
8965*a67afe4dSAndroid Build Coastguard Worker    if test prog = "$linkmode" || test lib = "$linkmode"; then
8966*a67afe4dSAndroid Build Coastguard Worker      dlprefiles=$newdlprefiles
8967*a67afe4dSAndroid Build Coastguard Worker    fi
8968*a67afe4dSAndroid Build Coastguard Worker
8969*a67afe4dSAndroid Build Coastguard Worker    case $linkmode in
8970*a67afe4dSAndroid Build Coastguard Worker    oldlib)
8971*a67afe4dSAndroid Build Coastguard Worker      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
8972*a67afe4dSAndroid Build Coastguard Worker	func_warning "'-dlopen' is ignored for archives"
8973*a67afe4dSAndroid Build Coastguard Worker      fi
8974*a67afe4dSAndroid Build Coastguard Worker
8975*a67afe4dSAndroid Build Coastguard Worker      case " $deplibs" in
8976*a67afe4dSAndroid Build Coastguard Worker      *\ -l* | *\ -L*)
8977*a67afe4dSAndroid Build Coastguard Worker	func_warning "'-l' and '-L' are ignored for archives" ;;
8978*a67afe4dSAndroid Build Coastguard Worker      esac
8979*a67afe4dSAndroid Build Coastguard Worker
8980*a67afe4dSAndroid Build Coastguard Worker      test -n "$rpath" && \
8981*a67afe4dSAndroid Build Coastguard Worker	func_warning "'-rpath' is ignored for archives"
8982*a67afe4dSAndroid Build Coastguard Worker
8983*a67afe4dSAndroid Build Coastguard Worker      test -n "$xrpath" && \
8984*a67afe4dSAndroid Build Coastguard Worker	func_warning "'-R' is ignored for archives"
8985*a67afe4dSAndroid Build Coastguard Worker
8986*a67afe4dSAndroid Build Coastguard Worker      test -n "$vinfo" && \
8987*a67afe4dSAndroid Build Coastguard Worker	func_warning "'-version-info/-version-number' is ignored for archives"
8988*a67afe4dSAndroid Build Coastguard Worker
8989*a67afe4dSAndroid Build Coastguard Worker      test -n "$release" && \
8990*a67afe4dSAndroid Build Coastguard Worker	func_warning "'-release' is ignored for archives"
8991*a67afe4dSAndroid Build Coastguard Worker
8992*a67afe4dSAndroid Build Coastguard Worker      test -n "$export_symbols$export_symbols_regex" && \
8993*a67afe4dSAndroid Build Coastguard Worker	func_warning "'-export-symbols' is ignored for archives"
8994*a67afe4dSAndroid Build Coastguard Worker
8995*a67afe4dSAndroid Build Coastguard Worker      # Now set the variables for building old libraries.
8996*a67afe4dSAndroid Build Coastguard Worker      build_libtool_libs=no
8997*a67afe4dSAndroid Build Coastguard Worker      oldlibs=$output
8998*a67afe4dSAndroid Build Coastguard Worker      func_append objs "$old_deplibs"
8999*a67afe4dSAndroid Build Coastguard Worker      ;;
9000*a67afe4dSAndroid Build Coastguard Worker
9001*a67afe4dSAndroid Build Coastguard Worker    lib)
9002*a67afe4dSAndroid Build Coastguard Worker      # Make sure we only generate libraries of the form 'libNAME.la'.
9003*a67afe4dSAndroid Build Coastguard Worker      case $outputname in
9004*a67afe4dSAndroid Build Coastguard Worker      lib*)
9005*a67afe4dSAndroid Build Coastguard Worker	func_stripname 'lib' '.la' "$outputname"
9006*a67afe4dSAndroid Build Coastguard Worker	name=$func_stripname_result
9007*a67afe4dSAndroid Build Coastguard Worker	eval shared_ext=\"$shrext_cmds\"
9008*a67afe4dSAndroid Build Coastguard Worker	eval libname=\"$libname_spec\"
9009*a67afe4dSAndroid Build Coastguard Worker	;;
9010*a67afe4dSAndroid Build Coastguard Worker      *)
9011*a67afe4dSAndroid Build Coastguard Worker	test no = "$module" \
9012*a67afe4dSAndroid Build Coastguard Worker	  && func_fatal_help "libtool library '$output' must begin with 'lib'"
9013*a67afe4dSAndroid Build Coastguard Worker
9014*a67afe4dSAndroid Build Coastguard Worker	if test no != "$need_lib_prefix"; then
9015*a67afe4dSAndroid Build Coastguard Worker	  # Add the "lib" prefix for modules if required
9016*a67afe4dSAndroid Build Coastguard Worker	  func_stripname '' '.la' "$outputname"
9017*a67afe4dSAndroid Build Coastguard Worker	  name=$func_stripname_result
9018*a67afe4dSAndroid Build Coastguard Worker	  eval shared_ext=\"$shrext_cmds\"
9019*a67afe4dSAndroid Build Coastguard Worker	  eval libname=\"$libname_spec\"
9020*a67afe4dSAndroid Build Coastguard Worker	else
9021*a67afe4dSAndroid Build Coastguard Worker	  func_stripname '' '.la' "$outputname"
9022*a67afe4dSAndroid Build Coastguard Worker	  libname=$func_stripname_result
9023*a67afe4dSAndroid Build Coastguard Worker	fi
9024*a67afe4dSAndroid Build Coastguard Worker	;;
9025*a67afe4dSAndroid Build Coastguard Worker      esac
9026*a67afe4dSAndroid Build Coastguard Worker
9027*a67afe4dSAndroid Build Coastguard Worker      if test -n "$objs"; then
9028*a67afe4dSAndroid Build Coastguard Worker	if test pass_all != "$deplibs_check_method"; then
9029*a67afe4dSAndroid Build Coastguard Worker	  func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs"
9030*a67afe4dSAndroid Build Coastguard Worker	else
9031*a67afe4dSAndroid Build Coastguard Worker	  echo
9032*a67afe4dSAndroid Build Coastguard Worker	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
9033*a67afe4dSAndroid Build Coastguard Worker	  $ECHO "*** objects $objs is not portable!"
9034*a67afe4dSAndroid Build Coastguard Worker	  func_append libobjs " $objs"
9035*a67afe4dSAndroid Build Coastguard Worker	fi
9036*a67afe4dSAndroid Build Coastguard Worker      fi
9037*a67afe4dSAndroid Build Coastguard Worker
9038*a67afe4dSAndroid Build Coastguard Worker      test no = "$dlself" \
9039*a67afe4dSAndroid Build Coastguard Worker	|| func_warning "'-dlopen self' is ignored for libtool libraries"
9040*a67afe4dSAndroid Build Coastguard Worker
9041*a67afe4dSAndroid Build Coastguard Worker      set dummy $rpath
9042*a67afe4dSAndroid Build Coastguard Worker      shift
9043*a67afe4dSAndroid Build Coastguard Worker      test 1 -lt "$#" \
9044*a67afe4dSAndroid Build Coastguard Worker	&& func_warning "ignoring multiple '-rpath's for a libtool library"
9045*a67afe4dSAndroid Build Coastguard Worker
9046*a67afe4dSAndroid Build Coastguard Worker      install_libdir=$1
9047*a67afe4dSAndroid Build Coastguard Worker
9048*a67afe4dSAndroid Build Coastguard Worker      oldlibs=
9049*a67afe4dSAndroid Build Coastguard Worker      if test -z "$rpath"; then
9050*a67afe4dSAndroid Build Coastguard Worker	if test yes = "$build_libtool_libs"; then
9051*a67afe4dSAndroid Build Coastguard Worker	  # Building a libtool convenience library.
9052*a67afe4dSAndroid Build Coastguard Worker	  # Some compilers have problems with a '.al' extension so
9053*a67afe4dSAndroid Build Coastguard Worker	  # convenience libraries should have the same extension an
9054*a67afe4dSAndroid Build Coastguard Worker	  # archive normally would.
9055*a67afe4dSAndroid Build Coastguard Worker	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
9056*a67afe4dSAndroid Build Coastguard Worker	  build_libtool_libs=convenience
9057*a67afe4dSAndroid Build Coastguard Worker	  build_old_libs=yes
9058*a67afe4dSAndroid Build Coastguard Worker	fi
9059*a67afe4dSAndroid Build Coastguard Worker
9060*a67afe4dSAndroid Build Coastguard Worker	test -n "$vinfo" && \
9061*a67afe4dSAndroid Build Coastguard Worker	  func_warning "'-version-info/-version-number' is ignored for convenience libraries"
9062*a67afe4dSAndroid Build Coastguard Worker
9063*a67afe4dSAndroid Build Coastguard Worker	test -n "$release" && \
9064*a67afe4dSAndroid Build Coastguard Worker	  func_warning "'-release' is ignored for convenience libraries"
9065*a67afe4dSAndroid Build Coastguard Worker      else
9066*a67afe4dSAndroid Build Coastguard Worker
9067*a67afe4dSAndroid Build Coastguard Worker	# Parse the version information argument.
9068*a67afe4dSAndroid Build Coastguard Worker	save_ifs=$IFS; IFS=:
9069*a67afe4dSAndroid Build Coastguard Worker	set dummy $vinfo 0 0 0
9070*a67afe4dSAndroid Build Coastguard Worker	shift
9071*a67afe4dSAndroid Build Coastguard Worker	IFS=$save_ifs
9072*a67afe4dSAndroid Build Coastguard Worker
9073*a67afe4dSAndroid Build Coastguard Worker	test -n "$7" && \
9074*a67afe4dSAndroid Build Coastguard Worker	  func_fatal_help "too many parameters to '-version-info'"
9075*a67afe4dSAndroid Build Coastguard Worker
9076*a67afe4dSAndroid Build Coastguard Worker	# convert absolute version numbers to libtool ages
9077*a67afe4dSAndroid Build Coastguard Worker	# this retains compatibility with .la files and attempts
9078*a67afe4dSAndroid Build Coastguard Worker	# to make the code below a bit more comprehensible
9079*a67afe4dSAndroid Build Coastguard Worker
9080*a67afe4dSAndroid Build Coastguard Worker	case $vinfo_number in
9081*a67afe4dSAndroid Build Coastguard Worker	yes)
9082*a67afe4dSAndroid Build Coastguard Worker	  number_major=$1
9083*a67afe4dSAndroid Build Coastguard Worker	  number_minor=$2
9084*a67afe4dSAndroid Build Coastguard Worker	  number_revision=$3
9085*a67afe4dSAndroid Build Coastguard Worker	  #
9086*a67afe4dSAndroid Build Coastguard Worker	  # There are really only two kinds -- those that
9087*a67afe4dSAndroid Build Coastguard Worker	  # use the current revision as the major version
9088*a67afe4dSAndroid Build Coastguard Worker	  # and those that subtract age and use age as
9089*a67afe4dSAndroid Build Coastguard Worker	  # a minor version.  But, then there is irix
9090*a67afe4dSAndroid Build Coastguard Worker	  # that has an extra 1 added just for fun
9091*a67afe4dSAndroid Build Coastguard Worker	  #
9092*a67afe4dSAndroid Build Coastguard Worker	  case $version_type in
9093*a67afe4dSAndroid Build Coastguard Worker	  # correct linux to gnu/linux during the next big refactor
9094*a67afe4dSAndroid Build Coastguard Worker	  darwin|freebsd-elf|linux|midnightbsd-elf|osf|windows|none)
9095*a67afe4dSAndroid Build Coastguard Worker	    func_arith $number_major + $number_minor
9096*a67afe4dSAndroid Build Coastguard Worker	    current=$func_arith_result
9097*a67afe4dSAndroid Build Coastguard Worker	    age=$number_minor
9098*a67afe4dSAndroid Build Coastguard Worker	    revision=$number_revision
9099*a67afe4dSAndroid Build Coastguard Worker	    ;;
9100*a67afe4dSAndroid Build Coastguard Worker	  freebsd-aout|qnx|sunos)
9101*a67afe4dSAndroid Build Coastguard Worker	    current=$number_major
9102*a67afe4dSAndroid Build Coastguard Worker	    revision=$number_minor
9103*a67afe4dSAndroid Build Coastguard Worker	    age=0
9104*a67afe4dSAndroid Build Coastguard Worker	    ;;
9105*a67afe4dSAndroid Build Coastguard Worker	  irix|nonstopux)
9106*a67afe4dSAndroid Build Coastguard Worker	    func_arith $number_major + $number_minor
9107*a67afe4dSAndroid Build Coastguard Worker	    current=$func_arith_result
9108*a67afe4dSAndroid Build Coastguard Worker	    age=$number_minor
9109*a67afe4dSAndroid Build Coastguard Worker	    revision=$number_minor
9110*a67afe4dSAndroid Build Coastguard Worker	    lt_irix_increment=no
9111*a67afe4dSAndroid Build Coastguard Worker	    ;;
9112*a67afe4dSAndroid Build Coastguard Worker	  esac
9113*a67afe4dSAndroid Build Coastguard Worker	  ;;
9114*a67afe4dSAndroid Build Coastguard Worker	no)
9115*a67afe4dSAndroid Build Coastguard Worker	  current=$1
9116*a67afe4dSAndroid Build Coastguard Worker	  revision=$2
9117*a67afe4dSAndroid Build Coastguard Worker	  age=$3
9118*a67afe4dSAndroid Build Coastguard Worker	  ;;
9119*a67afe4dSAndroid Build Coastguard Worker	esac
9120*a67afe4dSAndroid Build Coastguard Worker
9121*a67afe4dSAndroid Build Coastguard Worker	# Check that each of the things are valid numbers.
9122*a67afe4dSAndroid Build Coastguard Worker	case $current in
9123*a67afe4dSAndroid Build Coastguard Worker	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]) ;;
9124*a67afe4dSAndroid Build Coastguard Worker	*)
9125*a67afe4dSAndroid Build Coastguard Worker	  func_error "CURRENT '$current' must be a nonnegative integer"
9126*a67afe4dSAndroid Build Coastguard Worker	  func_fatal_error "'$vinfo' is not valid version information"
9127*a67afe4dSAndroid Build Coastguard Worker	  ;;
9128*a67afe4dSAndroid Build Coastguard Worker	esac
9129*a67afe4dSAndroid Build Coastguard Worker
9130*a67afe4dSAndroid Build Coastguard Worker	case $revision in
9131*a67afe4dSAndroid Build Coastguard Worker	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]) ;;
9132*a67afe4dSAndroid Build Coastguard Worker	*)
9133*a67afe4dSAndroid Build Coastguard Worker	  func_error "REVISION '$revision' must be a nonnegative integer"
9134*a67afe4dSAndroid Build Coastguard Worker	  func_fatal_error "'$vinfo' is not valid version information"
9135*a67afe4dSAndroid Build Coastguard Worker	  ;;
9136*a67afe4dSAndroid Build Coastguard Worker	esac
9137*a67afe4dSAndroid Build Coastguard Worker
9138*a67afe4dSAndroid Build Coastguard Worker	case $age in
9139*a67afe4dSAndroid Build Coastguard Worker	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]) ;;
9140*a67afe4dSAndroid Build Coastguard Worker	*)
9141*a67afe4dSAndroid Build Coastguard Worker	  func_error "AGE '$age' must be a nonnegative integer"
9142*a67afe4dSAndroid Build Coastguard Worker	  func_fatal_error "'$vinfo' is not valid version information"
9143*a67afe4dSAndroid Build Coastguard Worker	  ;;
9144*a67afe4dSAndroid Build Coastguard Worker	esac
9145*a67afe4dSAndroid Build Coastguard Worker
9146*a67afe4dSAndroid Build Coastguard Worker	if test "$age" -gt "$current"; then
9147*a67afe4dSAndroid Build Coastguard Worker	  func_error "AGE '$age' is greater than the current interface number '$current'"
9148*a67afe4dSAndroid Build Coastguard Worker	  func_fatal_error "'$vinfo' is not valid version information"
9149*a67afe4dSAndroid Build Coastguard Worker	fi
9150*a67afe4dSAndroid Build Coastguard Worker
9151*a67afe4dSAndroid Build Coastguard Worker	# Calculate the version variables.
9152*a67afe4dSAndroid Build Coastguard Worker	major=
9153*a67afe4dSAndroid Build Coastguard Worker	versuffix=
9154*a67afe4dSAndroid Build Coastguard Worker	verstring=
9155*a67afe4dSAndroid Build Coastguard Worker	case $version_type in
9156*a67afe4dSAndroid Build Coastguard Worker	none) ;;
9157*a67afe4dSAndroid Build Coastguard Worker
9158*a67afe4dSAndroid Build Coastguard Worker	darwin)
9159*a67afe4dSAndroid Build Coastguard Worker	  # Like Linux, but with the current version available in
9160*a67afe4dSAndroid Build Coastguard Worker	  # verstring for coding it into the library header
9161*a67afe4dSAndroid Build Coastguard Worker	  func_arith $current - $age
9162*a67afe4dSAndroid Build Coastguard Worker	  major=.$func_arith_result
9163*a67afe4dSAndroid Build Coastguard Worker	  versuffix=$major.$age.$revision
9164*a67afe4dSAndroid Build Coastguard Worker	  # Darwin ld doesn't like 0 for these options...
9165*a67afe4dSAndroid Build Coastguard Worker	  func_arith $current + 1
9166*a67afe4dSAndroid Build Coastguard Worker	  minor_current=$func_arith_result
9167*a67afe4dSAndroid Build Coastguard Worker	  xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
9168*a67afe4dSAndroid Build Coastguard Worker	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
9169*a67afe4dSAndroid Build Coastguard Worker          # On Darwin other compilers
9170*a67afe4dSAndroid Build Coastguard Worker          case $CC in
9171*a67afe4dSAndroid Build Coastguard Worker              nagfor*)
9172*a67afe4dSAndroid Build Coastguard Worker                  verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
9173*a67afe4dSAndroid Build Coastguard Worker                  ;;
9174*a67afe4dSAndroid Build Coastguard Worker              *)
9175*a67afe4dSAndroid Build Coastguard Worker                  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
9176*a67afe4dSAndroid Build Coastguard Worker                  ;;
9177*a67afe4dSAndroid Build Coastguard Worker          esac
9178*a67afe4dSAndroid Build Coastguard Worker	  ;;
9179*a67afe4dSAndroid Build Coastguard Worker
9180*a67afe4dSAndroid Build Coastguard Worker	freebsd-aout)
9181*a67afe4dSAndroid Build Coastguard Worker	  major=.$current
9182*a67afe4dSAndroid Build Coastguard Worker	  versuffix=.$current.$revision
9183*a67afe4dSAndroid Build Coastguard Worker	  ;;
9184*a67afe4dSAndroid Build Coastguard Worker
9185*a67afe4dSAndroid Build Coastguard Worker	freebsd-elf | midnightbsd-elf)
9186*a67afe4dSAndroid Build Coastguard Worker	  func_arith $current - $age
9187*a67afe4dSAndroid Build Coastguard Worker	  major=.$func_arith_result
9188*a67afe4dSAndroid Build Coastguard Worker	  versuffix=$major.$age.$revision
9189*a67afe4dSAndroid Build Coastguard Worker	  ;;
9190*a67afe4dSAndroid Build Coastguard Worker
9191*a67afe4dSAndroid Build Coastguard Worker	irix | nonstopux)
9192*a67afe4dSAndroid Build Coastguard Worker	  if test no = "$lt_irix_increment"; then
9193*a67afe4dSAndroid Build Coastguard Worker	    func_arith $current - $age
9194*a67afe4dSAndroid Build Coastguard Worker	  else
9195*a67afe4dSAndroid Build Coastguard Worker	    func_arith $current - $age + 1
9196*a67afe4dSAndroid Build Coastguard Worker	  fi
9197*a67afe4dSAndroid Build Coastguard Worker	  major=$func_arith_result
9198*a67afe4dSAndroid Build Coastguard Worker
9199*a67afe4dSAndroid Build Coastguard Worker	  case $version_type in
9200*a67afe4dSAndroid Build Coastguard Worker	    nonstopux) verstring_prefix=nonstopux ;;
9201*a67afe4dSAndroid Build Coastguard Worker	    *)         verstring_prefix=sgi ;;
9202*a67afe4dSAndroid Build Coastguard Worker	  esac
9203*a67afe4dSAndroid Build Coastguard Worker	  verstring=$verstring_prefix$major.$revision
9204*a67afe4dSAndroid Build Coastguard Worker
9205*a67afe4dSAndroid Build Coastguard Worker	  # Add in all the interfaces that we are compatible with.
9206*a67afe4dSAndroid Build Coastguard Worker	  loop=$revision
9207*a67afe4dSAndroid Build Coastguard Worker	  while test 0 -ne "$loop"; do
9208*a67afe4dSAndroid Build Coastguard Worker	    func_arith $revision - $loop
9209*a67afe4dSAndroid Build Coastguard Worker	    iface=$func_arith_result
9210*a67afe4dSAndroid Build Coastguard Worker	    func_arith $loop - 1
9211*a67afe4dSAndroid Build Coastguard Worker	    loop=$func_arith_result
9212*a67afe4dSAndroid Build Coastguard Worker	    verstring=$verstring_prefix$major.$iface:$verstring
9213*a67afe4dSAndroid Build Coastguard Worker	  done
9214*a67afe4dSAndroid Build Coastguard Worker
9215*a67afe4dSAndroid Build Coastguard Worker	  # Before this point, $major must not contain '.'.
9216*a67afe4dSAndroid Build Coastguard Worker	  major=.$major
9217*a67afe4dSAndroid Build Coastguard Worker	  versuffix=$major.$revision
9218*a67afe4dSAndroid Build Coastguard Worker	  ;;
9219*a67afe4dSAndroid Build Coastguard Worker
9220*a67afe4dSAndroid Build Coastguard Worker	linux) # correct to gnu/linux during the next big refactor
9221*a67afe4dSAndroid Build Coastguard Worker	  func_arith $current - $age
9222*a67afe4dSAndroid Build Coastguard Worker	  major=.$func_arith_result
9223*a67afe4dSAndroid Build Coastguard Worker	  versuffix=$major.$age.$revision
9224*a67afe4dSAndroid Build Coastguard Worker	  ;;
9225*a67afe4dSAndroid Build Coastguard Worker
9226*a67afe4dSAndroid Build Coastguard Worker	osf)
9227*a67afe4dSAndroid Build Coastguard Worker	  func_arith $current - $age
9228*a67afe4dSAndroid Build Coastguard Worker	  major=.$func_arith_result
9229*a67afe4dSAndroid Build Coastguard Worker	  versuffix=.$current.$age.$revision
9230*a67afe4dSAndroid Build Coastguard Worker	  verstring=$current.$age.$revision
9231*a67afe4dSAndroid Build Coastguard Worker
9232*a67afe4dSAndroid Build Coastguard Worker	  # Add in all the interfaces that we are compatible with.
9233*a67afe4dSAndroid Build Coastguard Worker	  loop=$age
9234*a67afe4dSAndroid Build Coastguard Worker	  while test 0 -ne "$loop"; do
9235*a67afe4dSAndroid Build Coastguard Worker	    func_arith $current - $loop
9236*a67afe4dSAndroid Build Coastguard Worker	    iface=$func_arith_result
9237*a67afe4dSAndroid Build Coastguard Worker	    func_arith $loop - 1
9238*a67afe4dSAndroid Build Coastguard Worker	    loop=$func_arith_result
9239*a67afe4dSAndroid Build Coastguard Worker	    verstring=$verstring:$iface.0
9240*a67afe4dSAndroid Build Coastguard Worker	  done
9241*a67afe4dSAndroid Build Coastguard Worker
9242*a67afe4dSAndroid Build Coastguard Worker	  # Make executables depend on our current version.
9243*a67afe4dSAndroid Build Coastguard Worker	  func_append verstring ":$current.0"
9244*a67afe4dSAndroid Build Coastguard Worker	  ;;
9245*a67afe4dSAndroid Build Coastguard Worker
9246*a67afe4dSAndroid Build Coastguard Worker	qnx)
9247*a67afe4dSAndroid Build Coastguard Worker	  major=.$current
9248*a67afe4dSAndroid Build Coastguard Worker	  versuffix=.$current
9249*a67afe4dSAndroid Build Coastguard Worker	  ;;
9250*a67afe4dSAndroid Build Coastguard Worker
9251*a67afe4dSAndroid Build Coastguard Worker	sco)
9252*a67afe4dSAndroid Build Coastguard Worker	  major=.$current
9253*a67afe4dSAndroid Build Coastguard Worker	  versuffix=.$current
9254*a67afe4dSAndroid Build Coastguard Worker	  ;;
9255*a67afe4dSAndroid Build Coastguard Worker
9256*a67afe4dSAndroid Build Coastguard Worker	sunos)
9257*a67afe4dSAndroid Build Coastguard Worker	  major=.$current
9258*a67afe4dSAndroid Build Coastguard Worker	  versuffix=.$current.$revision
9259*a67afe4dSAndroid Build Coastguard Worker	  ;;
9260*a67afe4dSAndroid Build Coastguard Worker
9261*a67afe4dSAndroid Build Coastguard Worker	windows)
9262*a67afe4dSAndroid Build Coastguard Worker	  # Use '-' rather than '.', since we only want one
9263*a67afe4dSAndroid Build Coastguard Worker	  # extension on DOS 8.3 file systems.
9264*a67afe4dSAndroid Build Coastguard Worker	  func_arith $current - $age
9265*a67afe4dSAndroid Build Coastguard Worker	  major=$func_arith_result
9266*a67afe4dSAndroid Build Coastguard Worker	  versuffix=-$major
9267*a67afe4dSAndroid Build Coastguard Worker	  ;;
9268*a67afe4dSAndroid Build Coastguard Worker
9269*a67afe4dSAndroid Build Coastguard Worker	*)
9270*a67afe4dSAndroid Build Coastguard Worker	  func_fatal_configuration "unknown library version type '$version_type'"
9271*a67afe4dSAndroid Build Coastguard Worker	  ;;
9272*a67afe4dSAndroid Build Coastguard Worker	esac
9273*a67afe4dSAndroid Build Coastguard Worker
9274*a67afe4dSAndroid Build Coastguard Worker	# Clear the version info if we defaulted, and they specified a release.
9275*a67afe4dSAndroid Build Coastguard Worker	if test -z "$vinfo" && test -n "$release"; then
9276*a67afe4dSAndroid Build Coastguard Worker	  major=
9277*a67afe4dSAndroid Build Coastguard Worker	  case $version_type in
9278*a67afe4dSAndroid Build Coastguard Worker	  darwin)
9279*a67afe4dSAndroid Build Coastguard Worker	    # we can't check for "0.0" in archive_cmds due to quoting
9280*a67afe4dSAndroid Build Coastguard Worker	    # problems, so we reset it completely
9281*a67afe4dSAndroid Build Coastguard Worker	    verstring=
9282*a67afe4dSAndroid Build Coastguard Worker	    ;;
9283*a67afe4dSAndroid Build Coastguard Worker	  *)
9284*a67afe4dSAndroid Build Coastguard Worker	    verstring=0.0
9285*a67afe4dSAndroid Build Coastguard Worker	    ;;
9286*a67afe4dSAndroid Build Coastguard Worker	  esac
9287*a67afe4dSAndroid Build Coastguard Worker	  if test no = "$need_version"; then
9288*a67afe4dSAndroid Build Coastguard Worker	    versuffix=
9289*a67afe4dSAndroid Build Coastguard Worker	  else
9290*a67afe4dSAndroid Build Coastguard Worker	    versuffix=.0.0
9291*a67afe4dSAndroid Build Coastguard Worker	  fi
9292*a67afe4dSAndroid Build Coastguard Worker	fi
9293*a67afe4dSAndroid Build Coastguard Worker
9294*a67afe4dSAndroid Build Coastguard Worker	# Remove version info from name if versioning should be avoided
9295*a67afe4dSAndroid Build Coastguard Worker	if test yes,no = "$avoid_version,$need_version"; then
9296*a67afe4dSAndroid Build Coastguard Worker	  major=
9297*a67afe4dSAndroid Build Coastguard Worker	  versuffix=
9298*a67afe4dSAndroid Build Coastguard Worker	  verstring=
9299*a67afe4dSAndroid Build Coastguard Worker	fi
9300*a67afe4dSAndroid Build Coastguard Worker
9301*a67afe4dSAndroid Build Coastguard Worker	# Check to see if the archive will have undefined symbols.
9302*a67afe4dSAndroid Build Coastguard Worker	if test yes = "$allow_undefined"; then
9303*a67afe4dSAndroid Build Coastguard Worker	  if test unsupported = "$allow_undefined_flag"; then
9304*a67afe4dSAndroid Build Coastguard Worker	    if test yes = "$build_old_libs"; then
9305*a67afe4dSAndroid Build Coastguard Worker	      func_warning "undefined symbols not allowed in $host shared libraries; building static only"
9306*a67afe4dSAndroid Build Coastguard Worker	      build_libtool_libs=no
9307*a67afe4dSAndroid Build Coastguard Worker	    else
9308*a67afe4dSAndroid Build Coastguard Worker	      func_fatal_error "can't build $host shared library unless -no-undefined is specified"
9309*a67afe4dSAndroid Build Coastguard Worker	    fi
9310*a67afe4dSAndroid Build Coastguard Worker	  fi
9311*a67afe4dSAndroid Build Coastguard Worker	else
9312*a67afe4dSAndroid Build Coastguard Worker	  # Don't allow undefined symbols.
9313*a67afe4dSAndroid Build Coastguard Worker	  allow_undefined_flag=$no_undefined_flag
9314*a67afe4dSAndroid Build Coastguard Worker	fi
9315*a67afe4dSAndroid Build Coastguard Worker
9316*a67afe4dSAndroid Build Coastguard Worker      fi
9317*a67afe4dSAndroid Build Coastguard Worker
9318*a67afe4dSAndroid Build Coastguard Worker      func_generate_dlsyms "$libname" "$libname" :
9319*a67afe4dSAndroid Build Coastguard Worker      func_append libobjs " $symfileobj"
9320*a67afe4dSAndroid Build Coastguard Worker      test " " = "$libobjs" && libobjs=
9321*a67afe4dSAndroid Build Coastguard Worker
9322*a67afe4dSAndroid Build Coastguard Worker      if test relink != "$opt_mode"; then
9323*a67afe4dSAndroid Build Coastguard Worker	# Remove our outputs, but don't remove object files since they
9324*a67afe4dSAndroid Build Coastguard Worker	# may have been created when compiling PIC objects.
9325*a67afe4dSAndroid Build Coastguard Worker	removelist=
9326*a67afe4dSAndroid Build Coastguard Worker	tempremovelist=`$ECHO "$output_objdir/*"`
9327*a67afe4dSAndroid Build Coastguard Worker	for p in $tempremovelist; do
9328*a67afe4dSAndroid Build Coastguard Worker	  case $p in
9329*a67afe4dSAndroid Build Coastguard Worker	    *.$objext | *.gcno)
9330*a67afe4dSAndroid Build Coastguard Worker	       ;;
9331*a67afe4dSAndroid Build Coastguard Worker	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*)
9332*a67afe4dSAndroid Build Coastguard Worker	       if test -n "$precious_files_regex"; then
9333*a67afe4dSAndroid Build Coastguard Worker		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
9334*a67afe4dSAndroid Build Coastguard Worker		 then
9335*a67afe4dSAndroid Build Coastguard Worker		   continue
9336*a67afe4dSAndroid Build Coastguard Worker		 fi
9337*a67afe4dSAndroid Build Coastguard Worker	       fi
9338*a67afe4dSAndroid Build Coastguard Worker	       func_append removelist " $p"
9339*a67afe4dSAndroid Build Coastguard Worker	       ;;
9340*a67afe4dSAndroid Build Coastguard Worker	    *) ;;
9341*a67afe4dSAndroid Build Coastguard Worker	  esac
9342*a67afe4dSAndroid Build Coastguard Worker	done
9343*a67afe4dSAndroid Build Coastguard Worker	test -n "$removelist" && \
9344*a67afe4dSAndroid Build Coastguard Worker	  func_show_eval "${RM}r \$removelist"
9345*a67afe4dSAndroid Build Coastguard Worker      fi
9346*a67afe4dSAndroid Build Coastguard Worker
9347*a67afe4dSAndroid Build Coastguard Worker      # Now set the variables for building old libraries.
9348*a67afe4dSAndroid Build Coastguard Worker      if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then
9349*a67afe4dSAndroid Build Coastguard Worker	func_append oldlibs " $output_objdir/$libname.$libext"
9350*a67afe4dSAndroid Build Coastguard Worker
9351*a67afe4dSAndroid Build Coastguard Worker	# Transform .lo files to .o files.
9352*a67afe4dSAndroid Build Coastguard Worker	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP`
9353*a67afe4dSAndroid Build Coastguard Worker      fi
9354*a67afe4dSAndroid Build Coastguard Worker
9355*a67afe4dSAndroid Build Coastguard Worker      # Eliminate all temporary directories.
9356*a67afe4dSAndroid Build Coastguard Worker      #for path in $notinst_path; do
9357*a67afe4dSAndroid Build Coastguard Worker      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
9358*a67afe4dSAndroid Build Coastguard Worker      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
9359*a67afe4dSAndroid Build Coastguard Worker      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
9360*a67afe4dSAndroid Build Coastguard Worker      #done
9361*a67afe4dSAndroid Build Coastguard Worker
9362*a67afe4dSAndroid Build Coastguard Worker      if test -n "$xrpath"; then
9363*a67afe4dSAndroid Build Coastguard Worker	# If the user specified any rpath flags, then add them.
9364*a67afe4dSAndroid Build Coastguard Worker	temp_xrpath=
9365*a67afe4dSAndroid Build Coastguard Worker	for libdir in $xrpath; do
9366*a67afe4dSAndroid Build Coastguard Worker	  func_replace_sysroot "$libdir"
9367*a67afe4dSAndroid Build Coastguard Worker	  func_append temp_xrpath " -R$func_replace_sysroot_result"
9368*a67afe4dSAndroid Build Coastguard Worker	  case "$finalize_rpath " in
9369*a67afe4dSAndroid Build Coastguard Worker	  *" $libdir "*) ;;
9370*a67afe4dSAndroid Build Coastguard Worker	  *) func_append finalize_rpath " $libdir" ;;
9371*a67afe4dSAndroid Build Coastguard Worker	  esac
9372*a67afe4dSAndroid Build Coastguard Worker	done
9373*a67afe4dSAndroid Build Coastguard Worker	if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then
9374*a67afe4dSAndroid Build Coastguard Worker	  dependency_libs="$temp_xrpath $dependency_libs"
9375*a67afe4dSAndroid Build Coastguard Worker	fi
9376*a67afe4dSAndroid Build Coastguard Worker      fi
9377*a67afe4dSAndroid Build Coastguard Worker
9378*a67afe4dSAndroid Build Coastguard Worker      # Make sure dlfiles contains only unique files that won't be dlpreopened
9379*a67afe4dSAndroid Build Coastguard Worker      old_dlfiles=$dlfiles
9380*a67afe4dSAndroid Build Coastguard Worker      dlfiles=
9381*a67afe4dSAndroid Build Coastguard Worker      for lib in $old_dlfiles; do
9382*a67afe4dSAndroid Build Coastguard Worker	case " $dlprefiles $dlfiles " in
9383*a67afe4dSAndroid Build Coastguard Worker	*" $lib "*) ;;
9384*a67afe4dSAndroid Build Coastguard Worker	*) func_append dlfiles " $lib" ;;
9385*a67afe4dSAndroid Build Coastguard Worker	esac
9386*a67afe4dSAndroid Build Coastguard Worker      done
9387*a67afe4dSAndroid Build Coastguard Worker
9388*a67afe4dSAndroid Build Coastguard Worker      # Make sure dlprefiles contains only unique files
9389*a67afe4dSAndroid Build Coastguard Worker      old_dlprefiles=$dlprefiles
9390*a67afe4dSAndroid Build Coastguard Worker      dlprefiles=
9391*a67afe4dSAndroid Build Coastguard Worker      for lib in $old_dlprefiles; do
9392*a67afe4dSAndroid Build Coastguard Worker	case "$dlprefiles " in
9393*a67afe4dSAndroid Build Coastguard Worker	*" $lib "*) ;;
9394*a67afe4dSAndroid Build Coastguard Worker	*) func_append dlprefiles " $lib" ;;
9395*a67afe4dSAndroid Build Coastguard Worker	esac
9396*a67afe4dSAndroid Build Coastguard Worker      done
9397*a67afe4dSAndroid Build Coastguard Worker
9398*a67afe4dSAndroid Build Coastguard Worker      if test yes = "$build_libtool_libs"; then
9399*a67afe4dSAndroid Build Coastguard Worker	if test -n "$rpath"; then
9400*a67afe4dSAndroid Build Coastguard Worker	  case $host in
9401*a67afe4dSAndroid Build Coastguard Worker	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
9402*a67afe4dSAndroid Build Coastguard Worker	    # these systems don't actually have a c library (as such)!
9403*a67afe4dSAndroid Build Coastguard Worker	    ;;
9404*a67afe4dSAndroid Build Coastguard Worker	  *-*-rhapsody* | *-*-darwin1.[012])
9405*a67afe4dSAndroid Build Coastguard Worker	    # Rhapsody C library is in the System framework
9406*a67afe4dSAndroid Build Coastguard Worker	    func_append deplibs " System.ltframework"
9407*a67afe4dSAndroid Build Coastguard Worker	    ;;
9408*a67afe4dSAndroid Build Coastguard Worker	  *-*-netbsd*)
9409*a67afe4dSAndroid Build Coastguard Worker	    # Don't link with libc until the a.out ld.so is fixed.
9410*a67afe4dSAndroid Build Coastguard Worker	    ;;
9411*a67afe4dSAndroid Build Coastguard Worker	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*)
9412*a67afe4dSAndroid Build Coastguard Worker	    # Do not include libc due to us having libc/libc_r.
9413*a67afe4dSAndroid Build Coastguard Worker	    ;;
9414*a67afe4dSAndroid Build Coastguard Worker	  *-*-sco3.2v5* | *-*-sco5v6*)
9415*a67afe4dSAndroid Build Coastguard Worker	    # Causes problems with __ctype
9416*a67afe4dSAndroid Build Coastguard Worker	    ;;
9417*a67afe4dSAndroid Build Coastguard Worker	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
9418*a67afe4dSAndroid Build Coastguard Worker	    # Compiler inserts libc in the correct place for threads to work
9419*a67afe4dSAndroid Build Coastguard Worker	    ;;
9420*a67afe4dSAndroid Build Coastguard Worker	  *)
9421*a67afe4dSAndroid Build Coastguard Worker	    # Add libc to deplibs on all other systems if necessary.
9422*a67afe4dSAndroid Build Coastguard Worker	    if test yes = "$build_libtool_need_lc"; then
9423*a67afe4dSAndroid Build Coastguard Worker	      func_append deplibs " -lc"
9424*a67afe4dSAndroid Build Coastguard Worker	    fi
9425*a67afe4dSAndroid Build Coastguard Worker	    ;;
9426*a67afe4dSAndroid Build Coastguard Worker	  esac
9427*a67afe4dSAndroid Build Coastguard Worker	fi
9428*a67afe4dSAndroid Build Coastguard Worker
9429*a67afe4dSAndroid Build Coastguard Worker	# Transform deplibs into only deplibs that can be linked in shared.
9430*a67afe4dSAndroid Build Coastguard Worker	name_save=$name
9431*a67afe4dSAndroid Build Coastguard Worker	libname_save=$libname
9432*a67afe4dSAndroid Build Coastguard Worker	release_save=$release
9433*a67afe4dSAndroid Build Coastguard Worker	versuffix_save=$versuffix
9434*a67afe4dSAndroid Build Coastguard Worker	major_save=$major
9435*a67afe4dSAndroid Build Coastguard Worker	# I'm not sure if I'm treating the release correctly.  I think
9436*a67afe4dSAndroid Build Coastguard Worker	# release should show up in the -l (ie -lgmp5) so we don't want to
9437*a67afe4dSAndroid Build Coastguard Worker	# add it in twice.  Is that correct?
9438*a67afe4dSAndroid Build Coastguard Worker	release=
9439*a67afe4dSAndroid Build Coastguard Worker	versuffix=
9440*a67afe4dSAndroid Build Coastguard Worker	major=
9441*a67afe4dSAndroid Build Coastguard Worker	newdeplibs=
9442*a67afe4dSAndroid Build Coastguard Worker	droppeddeps=no
9443*a67afe4dSAndroid Build Coastguard Worker	case $deplibs_check_method in
9444*a67afe4dSAndroid Build Coastguard Worker	pass_all)
9445*a67afe4dSAndroid Build Coastguard Worker	  # Don't check for shared/static.  Everything works.
9446*a67afe4dSAndroid Build Coastguard Worker	  # This might be a little naive.  We might want to check
9447*a67afe4dSAndroid Build Coastguard Worker	  # whether the library exists or not.  But this is on
9448*a67afe4dSAndroid Build Coastguard Worker	  # osf3 & osf4 and I'm not really sure... Just
9449*a67afe4dSAndroid Build Coastguard Worker	  # implementing what was already the behavior.
9450*a67afe4dSAndroid Build Coastguard Worker	  newdeplibs=$deplibs
9451*a67afe4dSAndroid Build Coastguard Worker	  ;;
9452*a67afe4dSAndroid Build Coastguard Worker	test_compile)
9453*a67afe4dSAndroid Build Coastguard Worker	  # This code stresses the "libraries are programs" paradigm to its
9454*a67afe4dSAndroid Build Coastguard Worker	  # limits. Maybe even breaks it.  We compile a program, linking it
9455*a67afe4dSAndroid Build Coastguard Worker	  # against the deplibs as a proxy for the library.  Then we can check
9456*a67afe4dSAndroid Build Coastguard Worker	  # whether they linked in statically or dynamically with ldd.
9457*a67afe4dSAndroid Build Coastguard Worker	  $opt_dry_run || $RM conftest.c
9458*a67afe4dSAndroid Build Coastguard Worker	  cat > conftest.c <<EOF
9459*a67afe4dSAndroid Build Coastguard Worker	  int main() { return 0; }
9460*a67afe4dSAndroid Build Coastguard WorkerEOF
9461*a67afe4dSAndroid Build Coastguard Worker	  $opt_dry_run || $RM conftest
9462*a67afe4dSAndroid Build Coastguard Worker	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
9463*a67afe4dSAndroid Build Coastguard Worker	    ldd_output=`ldd conftest`
9464*a67afe4dSAndroid Build Coastguard Worker	    for i in $deplibs; do
9465*a67afe4dSAndroid Build Coastguard Worker	      case $i in
9466*a67afe4dSAndroid Build Coastguard Worker	      -l*)
9467*a67afe4dSAndroid Build Coastguard Worker		func_stripname -l '' "$i"
9468*a67afe4dSAndroid Build Coastguard Worker		name=$func_stripname_result
9469*a67afe4dSAndroid Build Coastguard Worker		if test yes = "$allow_libtool_libs_with_static_runtimes"; then
9470*a67afe4dSAndroid Build Coastguard Worker		  case " $predeps $postdeps " in
9471*a67afe4dSAndroid Build Coastguard Worker		  *" $i "*)
9472*a67afe4dSAndroid Build Coastguard Worker		    func_append newdeplibs " $i"
9473*a67afe4dSAndroid Build Coastguard Worker		    i=
9474*a67afe4dSAndroid Build Coastguard Worker		    ;;
9475*a67afe4dSAndroid Build Coastguard Worker		  esac
9476*a67afe4dSAndroid Build Coastguard Worker		fi
9477*a67afe4dSAndroid Build Coastguard Worker		if test -n "$i"; then
9478*a67afe4dSAndroid Build Coastguard Worker		  libname=`eval "\\$ECHO \"$libname_spec\""`
9479*a67afe4dSAndroid Build Coastguard Worker		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
9480*a67afe4dSAndroid Build Coastguard Worker		  set dummy $deplib_matches; shift
9481*a67afe4dSAndroid Build Coastguard Worker		  deplib_match=$1
9482*a67afe4dSAndroid Build Coastguard Worker		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
9483*a67afe4dSAndroid Build Coastguard Worker		    func_append newdeplibs " $i"
9484*a67afe4dSAndroid Build Coastguard Worker		  else
9485*a67afe4dSAndroid Build Coastguard Worker		    droppeddeps=yes
9486*a67afe4dSAndroid Build Coastguard Worker		    echo
9487*a67afe4dSAndroid Build Coastguard Worker		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
9488*a67afe4dSAndroid Build Coastguard Worker		    echo "*** I have the capability to make that library automatically link in when"
9489*a67afe4dSAndroid Build Coastguard Worker		    echo "*** you link to this library.  But I can only do this if you have a"
9490*a67afe4dSAndroid Build Coastguard Worker		    echo "*** shared version of the library, which I believe you do not have"
9491*a67afe4dSAndroid Build Coastguard Worker		    echo "*** because a test_compile did reveal that the linker did not use it for"
9492*a67afe4dSAndroid Build Coastguard Worker		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
9493*a67afe4dSAndroid Build Coastguard Worker		  fi
9494*a67afe4dSAndroid Build Coastguard Worker		fi
9495*a67afe4dSAndroid Build Coastguard Worker		;;
9496*a67afe4dSAndroid Build Coastguard Worker	      *)
9497*a67afe4dSAndroid Build Coastguard Worker		func_append newdeplibs " $i"
9498*a67afe4dSAndroid Build Coastguard Worker		;;
9499*a67afe4dSAndroid Build Coastguard Worker	      esac
9500*a67afe4dSAndroid Build Coastguard Worker	    done
9501*a67afe4dSAndroid Build Coastguard Worker	  else
9502*a67afe4dSAndroid Build Coastguard Worker	    # Error occurred in the first compile.  Let's try to salvage
9503*a67afe4dSAndroid Build Coastguard Worker	    # the situation: Compile a separate program for each library.
9504*a67afe4dSAndroid Build Coastguard Worker	    for i in $deplibs; do
9505*a67afe4dSAndroid Build Coastguard Worker	      case $i in
9506*a67afe4dSAndroid Build Coastguard Worker	      -l*)
9507*a67afe4dSAndroid Build Coastguard Worker		func_stripname -l '' "$i"
9508*a67afe4dSAndroid Build Coastguard Worker		name=$func_stripname_result
9509*a67afe4dSAndroid Build Coastguard Worker		$opt_dry_run || $RM conftest
9510*a67afe4dSAndroid Build Coastguard Worker		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
9511*a67afe4dSAndroid Build Coastguard Worker		  ldd_output=`ldd conftest`
9512*a67afe4dSAndroid Build Coastguard Worker		  if test yes = "$allow_libtool_libs_with_static_runtimes"; then
9513*a67afe4dSAndroid Build Coastguard Worker		    case " $predeps $postdeps " in
9514*a67afe4dSAndroid Build Coastguard Worker		    *" $i "*)
9515*a67afe4dSAndroid Build Coastguard Worker		      func_append newdeplibs " $i"
9516*a67afe4dSAndroid Build Coastguard Worker		      i=
9517*a67afe4dSAndroid Build Coastguard Worker		      ;;
9518*a67afe4dSAndroid Build Coastguard Worker		    esac
9519*a67afe4dSAndroid Build Coastguard Worker		  fi
9520*a67afe4dSAndroid Build Coastguard Worker		  if test -n "$i"; then
9521*a67afe4dSAndroid Build Coastguard Worker		    libname=`eval "\\$ECHO \"$libname_spec\""`
9522*a67afe4dSAndroid Build Coastguard Worker		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
9523*a67afe4dSAndroid Build Coastguard Worker		    set dummy $deplib_matches; shift
9524*a67afe4dSAndroid Build Coastguard Worker		    deplib_match=$1
9525*a67afe4dSAndroid Build Coastguard Worker		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
9526*a67afe4dSAndroid Build Coastguard Worker		      func_append newdeplibs " $i"
9527*a67afe4dSAndroid Build Coastguard Worker		    else
9528*a67afe4dSAndroid Build Coastguard Worker		      droppeddeps=yes
9529*a67afe4dSAndroid Build Coastguard Worker		      echo
9530*a67afe4dSAndroid Build Coastguard Worker		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
9531*a67afe4dSAndroid Build Coastguard Worker		      echo "*** I have the capability to make that library automatically link in when"
9532*a67afe4dSAndroid Build Coastguard Worker		      echo "*** you link to this library.  But I can only do this if you have a"
9533*a67afe4dSAndroid Build Coastguard Worker		      echo "*** shared version of the library, which you do not appear to have"
9534*a67afe4dSAndroid Build Coastguard Worker		      echo "*** because a test_compile did reveal that the linker did not use this one"
9535*a67afe4dSAndroid Build Coastguard Worker		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
9536*a67afe4dSAndroid Build Coastguard Worker		    fi
9537*a67afe4dSAndroid Build Coastguard Worker		  fi
9538*a67afe4dSAndroid Build Coastguard Worker		else
9539*a67afe4dSAndroid Build Coastguard Worker		  droppeddeps=yes
9540*a67afe4dSAndroid Build Coastguard Worker		  echo
9541*a67afe4dSAndroid Build Coastguard Worker		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
9542*a67afe4dSAndroid Build Coastguard Worker		  echo "*** make it link in!  You will probably need to install it or some"
9543*a67afe4dSAndroid Build Coastguard Worker		  echo "*** library that it depends on before this library will be fully"
9544*a67afe4dSAndroid Build Coastguard Worker		  echo "*** functional.  Installing it before continuing would be even better."
9545*a67afe4dSAndroid Build Coastguard Worker		fi
9546*a67afe4dSAndroid Build Coastguard Worker		;;
9547*a67afe4dSAndroid Build Coastguard Worker	      *)
9548*a67afe4dSAndroid Build Coastguard Worker		func_append newdeplibs " $i"
9549*a67afe4dSAndroid Build Coastguard Worker		;;
9550*a67afe4dSAndroid Build Coastguard Worker	      esac
9551*a67afe4dSAndroid Build Coastguard Worker	    done
9552*a67afe4dSAndroid Build Coastguard Worker	  fi
9553*a67afe4dSAndroid Build Coastguard Worker	  ;;
9554*a67afe4dSAndroid Build Coastguard Worker	file_magic*)
9555*a67afe4dSAndroid Build Coastguard Worker	  set dummy $deplibs_check_method; shift
9556*a67afe4dSAndroid Build Coastguard Worker	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
9557*a67afe4dSAndroid Build Coastguard Worker	  for a_deplib in $deplibs; do
9558*a67afe4dSAndroid Build Coastguard Worker	    case $a_deplib in
9559*a67afe4dSAndroid Build Coastguard Worker	    -l*)
9560*a67afe4dSAndroid Build Coastguard Worker	      func_stripname -l '' "$a_deplib"
9561*a67afe4dSAndroid Build Coastguard Worker	      name=$func_stripname_result
9562*a67afe4dSAndroid Build Coastguard Worker	      if test yes = "$allow_libtool_libs_with_static_runtimes"; then
9563*a67afe4dSAndroid Build Coastguard Worker		case " $predeps $postdeps " in
9564*a67afe4dSAndroid Build Coastguard Worker		*" $a_deplib "*)
9565*a67afe4dSAndroid Build Coastguard Worker		  func_append newdeplibs " $a_deplib"
9566*a67afe4dSAndroid Build Coastguard Worker		  a_deplib=
9567*a67afe4dSAndroid Build Coastguard Worker		  ;;
9568*a67afe4dSAndroid Build Coastguard Worker		esac
9569*a67afe4dSAndroid Build Coastguard Worker	      fi
9570*a67afe4dSAndroid Build Coastguard Worker	      if test -n "$a_deplib"; then
9571*a67afe4dSAndroid Build Coastguard Worker		libname=`eval "\\$ECHO \"$libname_spec\""`
9572*a67afe4dSAndroid Build Coastguard Worker		if test -n "$file_magic_glob"; then
9573*a67afe4dSAndroid Build Coastguard Worker		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
9574*a67afe4dSAndroid Build Coastguard Worker		else
9575*a67afe4dSAndroid Build Coastguard Worker		  libnameglob=$libname
9576*a67afe4dSAndroid Build Coastguard Worker		fi
9577*a67afe4dSAndroid Build Coastguard Worker		test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob`
9578*a67afe4dSAndroid Build Coastguard Worker		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
9579*a67afe4dSAndroid Build Coastguard Worker		  if test yes = "$want_nocaseglob"; then
9580*a67afe4dSAndroid Build Coastguard Worker		    shopt -s nocaseglob
9581*a67afe4dSAndroid Build Coastguard Worker		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
9582*a67afe4dSAndroid Build Coastguard Worker		    $nocaseglob
9583*a67afe4dSAndroid Build Coastguard Worker		  else
9584*a67afe4dSAndroid Build Coastguard Worker		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
9585*a67afe4dSAndroid Build Coastguard Worker		  fi
9586*a67afe4dSAndroid Build Coastguard Worker		  for potent_lib in $potential_libs; do
9587*a67afe4dSAndroid Build Coastguard Worker		      # Follow soft links.
9588*a67afe4dSAndroid Build Coastguard Worker		      if ls -lLd "$potent_lib" 2>/dev/null |
9589*a67afe4dSAndroid Build Coastguard Worker			 $GREP " -> " >/dev/null; then
9590*a67afe4dSAndroid Build Coastguard Worker			continue
9591*a67afe4dSAndroid Build Coastguard Worker		      fi
9592*a67afe4dSAndroid Build Coastguard Worker		      # The statement above tries to avoid entering an
9593*a67afe4dSAndroid Build Coastguard Worker		      # endless loop below, in case of cyclic links.
9594*a67afe4dSAndroid Build Coastguard Worker		      # We might still enter an endless loop, since a link
9595*a67afe4dSAndroid Build Coastguard Worker		      # loop can be closed while we follow links,
9596*a67afe4dSAndroid Build Coastguard Worker		      # but so what?
9597*a67afe4dSAndroid Build Coastguard Worker		      potlib=$potent_lib
9598*a67afe4dSAndroid Build Coastguard Worker		      while test -h "$potlib" 2>/dev/null; do
9599*a67afe4dSAndroid Build Coastguard Worker			potliblink=`ls -ld $potlib | $SED 's/.* -> //'`
9600*a67afe4dSAndroid Build Coastguard Worker			case $potliblink in
9601*a67afe4dSAndroid Build Coastguard Worker			[\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;;
9602*a67afe4dSAndroid Build Coastguard Worker			*) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";;
9603*a67afe4dSAndroid Build Coastguard Worker			esac
9604*a67afe4dSAndroid Build Coastguard Worker		      done
9605*a67afe4dSAndroid Build Coastguard Worker		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
9606*a67afe4dSAndroid Build Coastguard Worker			 $SED -e 10q |
9607*a67afe4dSAndroid Build Coastguard Worker			 $EGREP "$file_magic_regex" > /dev/null; then
9608*a67afe4dSAndroid Build Coastguard Worker			func_append newdeplibs " $a_deplib"
9609*a67afe4dSAndroid Build Coastguard Worker			a_deplib=
9610*a67afe4dSAndroid Build Coastguard Worker			break 2
9611*a67afe4dSAndroid Build Coastguard Worker		      fi
9612*a67afe4dSAndroid Build Coastguard Worker		  done
9613*a67afe4dSAndroid Build Coastguard Worker		done
9614*a67afe4dSAndroid Build Coastguard Worker	      fi
9615*a67afe4dSAndroid Build Coastguard Worker	      if test -n "$a_deplib"; then
9616*a67afe4dSAndroid Build Coastguard Worker		droppeddeps=yes
9617*a67afe4dSAndroid Build Coastguard Worker		echo
9618*a67afe4dSAndroid Build Coastguard Worker		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
9619*a67afe4dSAndroid Build Coastguard Worker		echo "*** I have the capability to make that library automatically link in when"
9620*a67afe4dSAndroid Build Coastguard Worker		echo "*** you link to this library.  But I can only do this if you have a"
9621*a67afe4dSAndroid Build Coastguard Worker		echo "*** shared version of the library, which you do not appear to have"
9622*a67afe4dSAndroid Build Coastguard Worker		echo "*** because I did check the linker path looking for a file starting"
9623*a67afe4dSAndroid Build Coastguard Worker		if test -z "$potlib"; then
9624*a67afe4dSAndroid Build Coastguard Worker		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
9625*a67afe4dSAndroid Build Coastguard Worker		else
9626*a67afe4dSAndroid Build Coastguard Worker		  $ECHO "*** with $libname and none of the candidates passed a file format test"
9627*a67afe4dSAndroid Build Coastguard Worker		  $ECHO "*** using a file magic. Last file checked: $potlib"
9628*a67afe4dSAndroid Build Coastguard Worker		fi
9629*a67afe4dSAndroid Build Coastguard Worker	      fi
9630*a67afe4dSAndroid Build Coastguard Worker	      ;;
9631*a67afe4dSAndroid Build Coastguard Worker	    *)
9632*a67afe4dSAndroid Build Coastguard Worker	      # Add a -L argument.
9633*a67afe4dSAndroid Build Coastguard Worker	      func_append newdeplibs " $a_deplib"
9634*a67afe4dSAndroid Build Coastguard Worker	      ;;
9635*a67afe4dSAndroid Build Coastguard Worker	    esac
9636*a67afe4dSAndroid Build Coastguard Worker	  done # Gone through all deplibs.
9637*a67afe4dSAndroid Build Coastguard Worker	  ;;
9638*a67afe4dSAndroid Build Coastguard Worker	match_pattern*)
9639*a67afe4dSAndroid Build Coastguard Worker	  set dummy $deplibs_check_method; shift
9640*a67afe4dSAndroid Build Coastguard Worker	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
9641*a67afe4dSAndroid Build Coastguard Worker	  for a_deplib in $deplibs; do
9642*a67afe4dSAndroid Build Coastguard Worker	    case $a_deplib in
9643*a67afe4dSAndroid Build Coastguard Worker	    -l*)
9644*a67afe4dSAndroid Build Coastguard Worker	      func_stripname -l '' "$a_deplib"
9645*a67afe4dSAndroid Build Coastguard Worker	      name=$func_stripname_result
9646*a67afe4dSAndroid Build Coastguard Worker	      if test yes = "$allow_libtool_libs_with_static_runtimes"; then
9647*a67afe4dSAndroid Build Coastguard Worker		case " $predeps $postdeps " in
9648*a67afe4dSAndroid Build Coastguard Worker		*" $a_deplib "*)
9649*a67afe4dSAndroid Build Coastguard Worker		  func_append newdeplibs " $a_deplib"
9650*a67afe4dSAndroid Build Coastguard Worker		  a_deplib=
9651*a67afe4dSAndroid Build Coastguard Worker		  ;;
9652*a67afe4dSAndroid Build Coastguard Worker		esac
9653*a67afe4dSAndroid Build Coastguard Worker	      fi
9654*a67afe4dSAndroid Build Coastguard Worker	      if test -n "$a_deplib"; then
9655*a67afe4dSAndroid Build Coastguard Worker		libname=`eval "\\$ECHO \"$libname_spec\""`
9656*a67afe4dSAndroid Build Coastguard Worker		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
9657*a67afe4dSAndroid Build Coastguard Worker		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
9658*a67afe4dSAndroid Build Coastguard Worker		  for potent_lib in $potential_libs; do
9659*a67afe4dSAndroid Build Coastguard Worker		    potlib=$potent_lib # see symlink-check above in file_magic test
9660*a67afe4dSAndroid Build Coastguard Worker		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
9661*a67afe4dSAndroid Build Coastguard Worker		       $EGREP "$match_pattern_regex" > /dev/null; then
9662*a67afe4dSAndroid Build Coastguard Worker		      func_append newdeplibs " $a_deplib"
9663*a67afe4dSAndroid Build Coastguard Worker		      a_deplib=
9664*a67afe4dSAndroid Build Coastguard Worker		      break 2
9665*a67afe4dSAndroid Build Coastguard Worker		    fi
9666*a67afe4dSAndroid Build Coastguard Worker		  done
9667*a67afe4dSAndroid Build Coastguard Worker		done
9668*a67afe4dSAndroid Build Coastguard Worker	      fi
9669*a67afe4dSAndroid Build Coastguard Worker	      if test -n "$a_deplib"; then
9670*a67afe4dSAndroid Build Coastguard Worker		droppeddeps=yes
9671*a67afe4dSAndroid Build Coastguard Worker		echo
9672*a67afe4dSAndroid Build Coastguard Worker		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
9673*a67afe4dSAndroid Build Coastguard Worker		echo "*** I have the capability to make that library automatically link in when"
9674*a67afe4dSAndroid Build Coastguard Worker		echo "*** you link to this library.  But I can only do this if you have a"
9675*a67afe4dSAndroid Build Coastguard Worker		echo "*** shared version of the library, which you do not appear to have"
9676*a67afe4dSAndroid Build Coastguard Worker		echo "*** because I did check the linker path looking for a file starting"
9677*a67afe4dSAndroid Build Coastguard Worker		if test -z "$potlib"; then
9678*a67afe4dSAndroid Build Coastguard Worker		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
9679*a67afe4dSAndroid Build Coastguard Worker		else
9680*a67afe4dSAndroid Build Coastguard Worker		  $ECHO "*** with $libname and none of the candidates passed a file format test"
9681*a67afe4dSAndroid Build Coastguard Worker		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
9682*a67afe4dSAndroid Build Coastguard Worker		fi
9683*a67afe4dSAndroid Build Coastguard Worker	      fi
9684*a67afe4dSAndroid Build Coastguard Worker	      ;;
9685*a67afe4dSAndroid Build Coastguard Worker	    *)
9686*a67afe4dSAndroid Build Coastguard Worker	      # Add a -L argument.
9687*a67afe4dSAndroid Build Coastguard Worker	      func_append newdeplibs " $a_deplib"
9688*a67afe4dSAndroid Build Coastguard Worker	      ;;
9689*a67afe4dSAndroid Build Coastguard Worker	    esac
9690*a67afe4dSAndroid Build Coastguard Worker	  done # Gone through all deplibs.
9691*a67afe4dSAndroid Build Coastguard Worker	  ;;
9692*a67afe4dSAndroid Build Coastguard Worker	none | unknown | *)
9693*a67afe4dSAndroid Build Coastguard Worker	  newdeplibs=
9694*a67afe4dSAndroid Build Coastguard Worker	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
9695*a67afe4dSAndroid Build Coastguard Worker	  if test yes = "$allow_libtool_libs_with_static_runtimes"; then
9696*a67afe4dSAndroid Build Coastguard Worker	    for i in $predeps $postdeps; do
9697*a67afe4dSAndroid Build Coastguard Worker	      # can't use Xsed below, because $i might contain '/'
9698*a67afe4dSAndroid Build Coastguard Worker	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"`
9699*a67afe4dSAndroid Build Coastguard Worker	    done
9700*a67afe4dSAndroid Build Coastguard Worker	  fi
9701*a67afe4dSAndroid Build Coastguard Worker	  case $tmp_deplibs in
9702*a67afe4dSAndroid Build Coastguard Worker	  *[!\	\ ]*)
9703*a67afe4dSAndroid Build Coastguard Worker	    echo
9704*a67afe4dSAndroid Build Coastguard Worker	    if test none = "$deplibs_check_method"; then
9705*a67afe4dSAndroid Build Coastguard Worker	      echo "*** Warning: inter-library dependencies are not supported in this platform."
9706*a67afe4dSAndroid Build Coastguard Worker	    else
9707*a67afe4dSAndroid Build Coastguard Worker	      echo "*** Warning: inter-library dependencies are not known to be supported."
9708*a67afe4dSAndroid Build Coastguard Worker	    fi
9709*a67afe4dSAndroid Build Coastguard Worker	    echo "*** All declared inter-library dependencies are being dropped."
9710*a67afe4dSAndroid Build Coastguard Worker	    droppeddeps=yes
9711*a67afe4dSAndroid Build Coastguard Worker	    ;;
9712*a67afe4dSAndroid Build Coastguard Worker	  esac
9713*a67afe4dSAndroid Build Coastguard Worker	  ;;
9714*a67afe4dSAndroid Build Coastguard Worker	esac
9715*a67afe4dSAndroid Build Coastguard Worker	versuffix=$versuffix_save
9716*a67afe4dSAndroid Build Coastguard Worker	major=$major_save
9717*a67afe4dSAndroid Build Coastguard Worker	release=$release_save
9718*a67afe4dSAndroid Build Coastguard Worker	libname=$libname_save
9719*a67afe4dSAndroid Build Coastguard Worker	name=$name_save
9720*a67afe4dSAndroid Build Coastguard Worker
9721*a67afe4dSAndroid Build Coastguard Worker	case $host in
9722*a67afe4dSAndroid Build Coastguard Worker	*-*-rhapsody* | *-*-darwin1.[012])
9723*a67afe4dSAndroid Build Coastguard Worker	  # On Rhapsody replace the C library with the System framework
9724*a67afe4dSAndroid Build Coastguard Worker	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
9725*a67afe4dSAndroid Build Coastguard Worker	  ;;
9726*a67afe4dSAndroid Build Coastguard Worker	esac
9727*a67afe4dSAndroid Build Coastguard Worker
9728*a67afe4dSAndroid Build Coastguard Worker	if test yes = "$droppeddeps"; then
9729*a67afe4dSAndroid Build Coastguard Worker	  if test yes = "$module"; then
9730*a67afe4dSAndroid Build Coastguard Worker	    echo
9731*a67afe4dSAndroid Build Coastguard Worker	    echo "*** Warning: libtool could not satisfy all declared inter-library"
9732*a67afe4dSAndroid Build Coastguard Worker	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
9733*a67afe4dSAndroid Build Coastguard Worker	    echo "*** a static module, that should work as long as the dlopening"
9734*a67afe4dSAndroid Build Coastguard Worker	    echo "*** application is linked with the -dlopen flag."
9735*a67afe4dSAndroid Build Coastguard Worker	    if test -z "$global_symbol_pipe"; then
9736*a67afe4dSAndroid Build Coastguard Worker	      echo
9737*a67afe4dSAndroid Build Coastguard Worker	      echo "*** However, this would only work if libtool was able to extract symbol"
9738*a67afe4dSAndroid Build Coastguard Worker	      echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
9739*a67afe4dSAndroid Build Coastguard Worker	      echo "*** not find such a program.  So, this module is probably useless."
9740*a67afe4dSAndroid Build Coastguard Worker	      echo "*** 'nm' from GNU binutils and a full rebuild may help."
9741*a67afe4dSAndroid Build Coastguard Worker	    fi
9742*a67afe4dSAndroid Build Coastguard Worker	    if test no = "$build_old_libs"; then
9743*a67afe4dSAndroid Build Coastguard Worker	      oldlibs=$output_objdir/$libname.$libext
9744*a67afe4dSAndroid Build Coastguard Worker	      build_libtool_libs=module
9745*a67afe4dSAndroid Build Coastguard Worker	      build_old_libs=yes
9746*a67afe4dSAndroid Build Coastguard Worker	    else
9747*a67afe4dSAndroid Build Coastguard Worker	      build_libtool_libs=no
9748*a67afe4dSAndroid Build Coastguard Worker	    fi
9749*a67afe4dSAndroid Build Coastguard Worker	  else
9750*a67afe4dSAndroid Build Coastguard Worker	    echo "*** The inter-library dependencies that have been dropped here will be"
9751*a67afe4dSAndroid Build Coastguard Worker	    echo "*** automatically added whenever a program is linked with this library"
9752*a67afe4dSAndroid Build Coastguard Worker	    echo "*** or is declared to -dlopen it."
9753*a67afe4dSAndroid Build Coastguard Worker
9754*a67afe4dSAndroid Build Coastguard Worker	    if test no = "$allow_undefined"; then
9755*a67afe4dSAndroid Build Coastguard Worker	      echo
9756*a67afe4dSAndroid Build Coastguard Worker	      echo "*** Since this library must not contain undefined symbols,"
9757*a67afe4dSAndroid Build Coastguard Worker	      echo "*** because either the platform does not support them or"
9758*a67afe4dSAndroid Build Coastguard Worker	      echo "*** it was explicitly requested with -no-undefined,"
9759*a67afe4dSAndroid Build Coastguard Worker	      echo "*** libtool will only create a static version of it."
9760*a67afe4dSAndroid Build Coastguard Worker	      if test no = "$build_old_libs"; then
9761*a67afe4dSAndroid Build Coastguard Worker		oldlibs=$output_objdir/$libname.$libext
9762*a67afe4dSAndroid Build Coastguard Worker		build_libtool_libs=module
9763*a67afe4dSAndroid Build Coastguard Worker		build_old_libs=yes
9764*a67afe4dSAndroid Build Coastguard Worker	      else
9765*a67afe4dSAndroid Build Coastguard Worker		build_libtool_libs=no
9766*a67afe4dSAndroid Build Coastguard Worker	      fi
9767*a67afe4dSAndroid Build Coastguard Worker	    fi
9768*a67afe4dSAndroid Build Coastguard Worker	  fi
9769*a67afe4dSAndroid Build Coastguard Worker	fi
9770*a67afe4dSAndroid Build Coastguard Worker	# Done checking deplibs!
9771*a67afe4dSAndroid Build Coastguard Worker	deplibs=$newdeplibs
9772*a67afe4dSAndroid Build Coastguard Worker      fi
9773*a67afe4dSAndroid Build Coastguard Worker      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
9774*a67afe4dSAndroid Build Coastguard Worker      case $host in
9775*a67afe4dSAndroid Build Coastguard Worker	*-*-darwin*)
9776*a67afe4dSAndroid Build Coastguard Worker	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
9777*a67afe4dSAndroid Build Coastguard Worker	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
9778*a67afe4dSAndroid Build Coastguard Worker	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
9779*a67afe4dSAndroid Build Coastguard Worker	  ;;
9780*a67afe4dSAndroid Build Coastguard Worker      esac
9781*a67afe4dSAndroid Build Coastguard Worker
9782*a67afe4dSAndroid Build Coastguard Worker      # move library search paths that coincide with paths to not yet
9783*a67afe4dSAndroid Build Coastguard Worker      # installed libraries to the beginning of the library search list
9784*a67afe4dSAndroid Build Coastguard Worker      new_libs=
9785*a67afe4dSAndroid Build Coastguard Worker      for path in $notinst_path; do
9786*a67afe4dSAndroid Build Coastguard Worker	case " $new_libs " in
9787*a67afe4dSAndroid Build Coastguard Worker	*" -L$path/$objdir "*) ;;
9788*a67afe4dSAndroid Build Coastguard Worker	*)
9789*a67afe4dSAndroid Build Coastguard Worker	  case " $deplibs " in
9790*a67afe4dSAndroid Build Coastguard Worker	  *" -L$path/$objdir "*)
9791*a67afe4dSAndroid Build Coastguard Worker	    func_append new_libs " -L$path/$objdir" ;;
9792*a67afe4dSAndroid Build Coastguard Worker	  esac
9793*a67afe4dSAndroid Build Coastguard Worker	  ;;
9794*a67afe4dSAndroid Build Coastguard Worker	esac
9795*a67afe4dSAndroid Build Coastguard Worker      done
9796*a67afe4dSAndroid Build Coastguard Worker      for deplib in $deplibs; do
9797*a67afe4dSAndroid Build Coastguard Worker	case $deplib in
9798*a67afe4dSAndroid Build Coastguard Worker	-L*)
9799*a67afe4dSAndroid Build Coastguard Worker	  case " $new_libs " in
9800*a67afe4dSAndroid Build Coastguard Worker	  *" $deplib "*) ;;
9801*a67afe4dSAndroid Build Coastguard Worker	  *) func_append new_libs " $deplib" ;;
9802*a67afe4dSAndroid Build Coastguard Worker	  esac
9803*a67afe4dSAndroid Build Coastguard Worker	  ;;
9804*a67afe4dSAndroid Build Coastguard Worker	*) func_append new_libs " $deplib" ;;
9805*a67afe4dSAndroid Build Coastguard Worker	esac
9806*a67afe4dSAndroid Build Coastguard Worker      done
9807*a67afe4dSAndroid Build Coastguard Worker      deplibs=$new_libs
9808*a67afe4dSAndroid Build Coastguard Worker
9809*a67afe4dSAndroid Build Coastguard Worker      # All the library-specific variables (install_libdir is set above).
9810*a67afe4dSAndroid Build Coastguard Worker      library_names=
9811*a67afe4dSAndroid Build Coastguard Worker      old_library=
9812*a67afe4dSAndroid Build Coastguard Worker      dlname=
9813*a67afe4dSAndroid Build Coastguard Worker
9814*a67afe4dSAndroid Build Coastguard Worker      # Test again, we may have decided not to build it any more
9815*a67afe4dSAndroid Build Coastguard Worker      if test yes = "$build_libtool_libs"; then
9816*a67afe4dSAndroid Build Coastguard Worker	# Remove $wl instances when linking with ld.
9817*a67afe4dSAndroid Build Coastguard Worker	# FIXME: should test the right _cmds variable.
9818*a67afe4dSAndroid Build Coastguard Worker	case $archive_cmds in
9819*a67afe4dSAndroid Build Coastguard Worker	  *\$LD\ *) wl= ;;
9820*a67afe4dSAndroid Build Coastguard Worker        esac
9821*a67afe4dSAndroid Build Coastguard Worker	if test yes = "$hardcode_into_libs"; then
9822*a67afe4dSAndroid Build Coastguard Worker	  # Hardcode the library paths
9823*a67afe4dSAndroid Build Coastguard Worker	  hardcode_libdirs=
9824*a67afe4dSAndroid Build Coastguard Worker	  dep_rpath=
9825*a67afe4dSAndroid Build Coastguard Worker	  rpath=$finalize_rpath
9826*a67afe4dSAndroid Build Coastguard Worker	  test relink = "$opt_mode" || rpath=$compile_rpath$rpath
9827*a67afe4dSAndroid Build Coastguard Worker	  for libdir in $rpath; do
9828*a67afe4dSAndroid Build Coastguard Worker	    if test -n "$hardcode_libdir_flag_spec"; then
9829*a67afe4dSAndroid Build Coastguard Worker	      if test -n "$hardcode_libdir_separator"; then
9830*a67afe4dSAndroid Build Coastguard Worker		func_replace_sysroot "$libdir"
9831*a67afe4dSAndroid Build Coastguard Worker		libdir=$func_replace_sysroot_result
9832*a67afe4dSAndroid Build Coastguard Worker		if test -z "$hardcode_libdirs"; then
9833*a67afe4dSAndroid Build Coastguard Worker		  hardcode_libdirs=$libdir
9834*a67afe4dSAndroid Build Coastguard Worker		else
9835*a67afe4dSAndroid Build Coastguard Worker		  # Just accumulate the unique libdirs.
9836*a67afe4dSAndroid Build Coastguard Worker		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
9837*a67afe4dSAndroid Build Coastguard Worker		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
9838*a67afe4dSAndroid Build Coastguard Worker		    ;;
9839*a67afe4dSAndroid Build Coastguard Worker		  *)
9840*a67afe4dSAndroid Build Coastguard Worker		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
9841*a67afe4dSAndroid Build Coastguard Worker		    ;;
9842*a67afe4dSAndroid Build Coastguard Worker		  esac
9843*a67afe4dSAndroid Build Coastguard Worker		fi
9844*a67afe4dSAndroid Build Coastguard Worker	      else
9845*a67afe4dSAndroid Build Coastguard Worker		eval flag=\"$hardcode_libdir_flag_spec\"
9846*a67afe4dSAndroid Build Coastguard Worker		func_append dep_rpath " $flag"
9847*a67afe4dSAndroid Build Coastguard Worker	      fi
9848*a67afe4dSAndroid Build Coastguard Worker	    elif test -n "$runpath_var"; then
9849*a67afe4dSAndroid Build Coastguard Worker	      case "$perm_rpath " in
9850*a67afe4dSAndroid Build Coastguard Worker	      *" $libdir "*) ;;
9851*a67afe4dSAndroid Build Coastguard Worker	      *) func_append perm_rpath " $libdir" ;;
9852*a67afe4dSAndroid Build Coastguard Worker	      esac
9853*a67afe4dSAndroid Build Coastguard Worker	    fi
9854*a67afe4dSAndroid Build Coastguard Worker	  done
9855*a67afe4dSAndroid Build Coastguard Worker	  # Substitute the hardcoded libdirs into the rpath.
9856*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$hardcode_libdir_separator" &&
9857*a67afe4dSAndroid Build Coastguard Worker	     test -n "$hardcode_libdirs"; then
9858*a67afe4dSAndroid Build Coastguard Worker	    libdir=$hardcode_libdirs
9859*a67afe4dSAndroid Build Coastguard Worker	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
9860*a67afe4dSAndroid Build Coastguard Worker	  fi
9861*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
9862*a67afe4dSAndroid Build Coastguard Worker	    # We should set the runpath_var.
9863*a67afe4dSAndroid Build Coastguard Worker	    rpath=
9864*a67afe4dSAndroid Build Coastguard Worker	    for dir in $perm_rpath; do
9865*a67afe4dSAndroid Build Coastguard Worker	      func_append rpath "$dir:"
9866*a67afe4dSAndroid Build Coastguard Worker	    done
9867*a67afe4dSAndroid Build Coastguard Worker	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
9868*a67afe4dSAndroid Build Coastguard Worker	  fi
9869*a67afe4dSAndroid Build Coastguard Worker	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
9870*a67afe4dSAndroid Build Coastguard Worker	fi
9871*a67afe4dSAndroid Build Coastguard Worker
9872*a67afe4dSAndroid Build Coastguard Worker	shlibpath=$finalize_shlibpath
9873*a67afe4dSAndroid Build Coastguard Worker	test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath
9874*a67afe4dSAndroid Build Coastguard Worker	if test -n "$shlibpath"; then
9875*a67afe4dSAndroid Build Coastguard Worker	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
9876*a67afe4dSAndroid Build Coastguard Worker	fi
9877*a67afe4dSAndroid Build Coastguard Worker
9878*a67afe4dSAndroid Build Coastguard Worker	# Get the real and link names of the library.
9879*a67afe4dSAndroid Build Coastguard Worker	eval shared_ext=\"$shrext_cmds\"
9880*a67afe4dSAndroid Build Coastguard Worker	eval library_names=\"$library_names_spec\"
9881*a67afe4dSAndroid Build Coastguard Worker	set dummy $library_names
9882*a67afe4dSAndroid Build Coastguard Worker	shift
9883*a67afe4dSAndroid Build Coastguard Worker	realname=$1
9884*a67afe4dSAndroid Build Coastguard Worker	shift
9885*a67afe4dSAndroid Build Coastguard Worker
9886*a67afe4dSAndroid Build Coastguard Worker	if test -n "$soname_spec"; then
9887*a67afe4dSAndroid Build Coastguard Worker	  eval soname=\"$soname_spec\"
9888*a67afe4dSAndroid Build Coastguard Worker	else
9889*a67afe4dSAndroid Build Coastguard Worker	  soname=$realname
9890*a67afe4dSAndroid Build Coastguard Worker	fi
9891*a67afe4dSAndroid Build Coastguard Worker	if test -z "$dlname"; then
9892*a67afe4dSAndroid Build Coastguard Worker	  dlname=$soname
9893*a67afe4dSAndroid Build Coastguard Worker	fi
9894*a67afe4dSAndroid Build Coastguard Worker
9895*a67afe4dSAndroid Build Coastguard Worker	lib=$output_objdir/$realname
9896*a67afe4dSAndroid Build Coastguard Worker	linknames=
9897*a67afe4dSAndroid Build Coastguard Worker	for link
9898*a67afe4dSAndroid Build Coastguard Worker	do
9899*a67afe4dSAndroid Build Coastguard Worker	  func_append linknames " $link"
9900*a67afe4dSAndroid Build Coastguard Worker	done
9901*a67afe4dSAndroid Build Coastguard Worker
9902*a67afe4dSAndroid Build Coastguard Worker	# Use standard objects if they are pic
9903*a67afe4dSAndroid Build Coastguard Worker	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
9904*a67afe4dSAndroid Build Coastguard Worker	test "X$libobjs" = "X " && libobjs=
9905*a67afe4dSAndroid Build Coastguard Worker
9906*a67afe4dSAndroid Build Coastguard Worker	delfiles=
9907*a67afe4dSAndroid Build Coastguard Worker	if test -n "$export_symbols" && test -n "$include_expsyms"; then
9908*a67afe4dSAndroid Build Coastguard Worker	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
9909*a67afe4dSAndroid Build Coastguard Worker	  export_symbols=$output_objdir/$libname.uexp
9910*a67afe4dSAndroid Build Coastguard Worker	  func_append delfiles " $export_symbols"
9911*a67afe4dSAndroid Build Coastguard Worker	fi
9912*a67afe4dSAndroid Build Coastguard Worker
9913*a67afe4dSAndroid Build Coastguard Worker	orig_export_symbols=
9914*a67afe4dSAndroid Build Coastguard Worker	case $host_os in
9915*a67afe4dSAndroid Build Coastguard Worker	cygwin* | mingw* | cegcc*)
9916*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
9917*a67afe4dSAndroid Build Coastguard Worker	    # exporting using user supplied symfile
9918*a67afe4dSAndroid Build Coastguard Worker	    func_dll_def_p "$export_symbols" || {
9919*a67afe4dSAndroid Build Coastguard Worker	      # and it's NOT already a .def file. Must figure out
9920*a67afe4dSAndroid Build Coastguard Worker	      # which of the given symbols are data symbols and tag
9921*a67afe4dSAndroid Build Coastguard Worker	      # them as such. So, trigger use of export_symbols_cmds.
9922*a67afe4dSAndroid Build Coastguard Worker	      # export_symbols gets reassigned inside the "prepare
9923*a67afe4dSAndroid Build Coastguard Worker	      # the list of exported symbols" if statement, so the
9924*a67afe4dSAndroid Build Coastguard Worker	      # include_expsyms logic still works.
9925*a67afe4dSAndroid Build Coastguard Worker	      orig_export_symbols=$export_symbols
9926*a67afe4dSAndroid Build Coastguard Worker	      export_symbols=
9927*a67afe4dSAndroid Build Coastguard Worker	      always_export_symbols=yes
9928*a67afe4dSAndroid Build Coastguard Worker	    }
9929*a67afe4dSAndroid Build Coastguard Worker	  fi
9930*a67afe4dSAndroid Build Coastguard Worker	  ;;
9931*a67afe4dSAndroid Build Coastguard Worker	esac
9932*a67afe4dSAndroid Build Coastguard Worker
9933*a67afe4dSAndroid Build Coastguard Worker	# Prepare the list of exported symbols
9934*a67afe4dSAndroid Build Coastguard Worker	if test -z "$export_symbols"; then
9935*a67afe4dSAndroid Build Coastguard Worker	  if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then
9936*a67afe4dSAndroid Build Coastguard Worker	    func_verbose "generating symbol list for '$libname.la'"
9937*a67afe4dSAndroid Build Coastguard Worker	    export_symbols=$output_objdir/$libname.exp
9938*a67afe4dSAndroid Build Coastguard Worker	    $opt_dry_run || $RM $export_symbols
9939*a67afe4dSAndroid Build Coastguard Worker	    cmds=$export_symbols_cmds
9940*a67afe4dSAndroid Build Coastguard Worker	    save_ifs=$IFS; IFS='~'
9941*a67afe4dSAndroid Build Coastguard Worker	    for cmd1 in $cmds; do
9942*a67afe4dSAndroid Build Coastguard Worker	      IFS=$save_ifs
9943*a67afe4dSAndroid Build Coastguard Worker	      # Take the normal branch if the nm_file_list_spec branch
9944*a67afe4dSAndroid Build Coastguard Worker	      # doesn't work or if tool conversion is not needed.
9945*a67afe4dSAndroid Build Coastguard Worker	      case $nm_file_list_spec~$to_tool_file_cmd in
9946*a67afe4dSAndroid Build Coastguard Worker		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
9947*a67afe4dSAndroid Build Coastguard Worker		  try_normal_branch=yes
9948*a67afe4dSAndroid Build Coastguard Worker		  eval cmd=\"$cmd1\"
9949*a67afe4dSAndroid Build Coastguard Worker		  func_len " $cmd"
9950*a67afe4dSAndroid Build Coastguard Worker		  len=$func_len_result
9951*a67afe4dSAndroid Build Coastguard Worker		  ;;
9952*a67afe4dSAndroid Build Coastguard Worker		*)
9953*a67afe4dSAndroid Build Coastguard Worker		  try_normal_branch=no
9954*a67afe4dSAndroid Build Coastguard Worker		  ;;
9955*a67afe4dSAndroid Build Coastguard Worker	      esac
9956*a67afe4dSAndroid Build Coastguard Worker	      if test yes = "$try_normal_branch" \
9957*a67afe4dSAndroid Build Coastguard Worker		 && { test "$len" -lt "$max_cmd_len" \
9958*a67afe4dSAndroid Build Coastguard Worker		      || test "$max_cmd_len" -le -1; }
9959*a67afe4dSAndroid Build Coastguard Worker	      then
9960*a67afe4dSAndroid Build Coastguard Worker		func_show_eval "$cmd" 'exit $?'
9961*a67afe4dSAndroid Build Coastguard Worker		skipped_export=false
9962*a67afe4dSAndroid Build Coastguard Worker	      elif test -n "$nm_file_list_spec"; then
9963*a67afe4dSAndroid Build Coastguard Worker		func_basename "$output"
9964*a67afe4dSAndroid Build Coastguard Worker		output_la=$func_basename_result
9965*a67afe4dSAndroid Build Coastguard Worker		save_libobjs=$libobjs
9966*a67afe4dSAndroid Build Coastguard Worker		save_output=$output
9967*a67afe4dSAndroid Build Coastguard Worker		output=$output_objdir/$output_la.nm
9968*a67afe4dSAndroid Build Coastguard Worker		func_to_tool_file "$output"
9969*a67afe4dSAndroid Build Coastguard Worker		libobjs=$nm_file_list_spec$func_to_tool_file_result
9970*a67afe4dSAndroid Build Coastguard Worker		func_append delfiles " $output"
9971*a67afe4dSAndroid Build Coastguard Worker		func_verbose "creating $NM input file list: $output"
9972*a67afe4dSAndroid Build Coastguard Worker		for obj in $save_libobjs; do
9973*a67afe4dSAndroid Build Coastguard Worker		  func_to_tool_file "$obj"
9974*a67afe4dSAndroid Build Coastguard Worker		  $ECHO "$func_to_tool_file_result"
9975*a67afe4dSAndroid Build Coastguard Worker		done > "$output"
9976*a67afe4dSAndroid Build Coastguard Worker		eval cmd=\"$cmd1\"
9977*a67afe4dSAndroid Build Coastguard Worker		func_show_eval "$cmd" 'exit $?'
9978*a67afe4dSAndroid Build Coastguard Worker		output=$save_output
9979*a67afe4dSAndroid Build Coastguard Worker		libobjs=$save_libobjs
9980*a67afe4dSAndroid Build Coastguard Worker		skipped_export=false
9981*a67afe4dSAndroid Build Coastguard Worker	      else
9982*a67afe4dSAndroid Build Coastguard Worker		# The command line is too long to execute in one step.
9983*a67afe4dSAndroid Build Coastguard Worker		func_verbose "using reloadable object file for export list..."
9984*a67afe4dSAndroid Build Coastguard Worker		skipped_export=:
9985*a67afe4dSAndroid Build Coastguard Worker		# Break out early, otherwise skipped_export may be
9986*a67afe4dSAndroid Build Coastguard Worker		# set to false by a later but shorter cmd.
9987*a67afe4dSAndroid Build Coastguard Worker		break
9988*a67afe4dSAndroid Build Coastguard Worker	      fi
9989*a67afe4dSAndroid Build Coastguard Worker	    done
9990*a67afe4dSAndroid Build Coastguard Worker	    IFS=$save_ifs
9991*a67afe4dSAndroid Build Coastguard Worker	    if test -n "$export_symbols_regex" && test : != "$skipped_export"; then
9992*a67afe4dSAndroid Build Coastguard Worker	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
9993*a67afe4dSAndroid Build Coastguard Worker	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
9994*a67afe4dSAndroid Build Coastguard Worker	    fi
9995*a67afe4dSAndroid Build Coastguard Worker	  fi
9996*a67afe4dSAndroid Build Coastguard Worker	fi
9997*a67afe4dSAndroid Build Coastguard Worker
9998*a67afe4dSAndroid Build Coastguard Worker	if test -n "$export_symbols" && test -n "$include_expsyms"; then
9999*a67afe4dSAndroid Build Coastguard Worker	  tmp_export_symbols=$export_symbols
10000*a67afe4dSAndroid Build Coastguard Worker	  test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
10001*a67afe4dSAndroid Build Coastguard Worker	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
10002*a67afe4dSAndroid Build Coastguard Worker	fi
10003*a67afe4dSAndroid Build Coastguard Worker
10004*a67afe4dSAndroid Build Coastguard Worker	if test : != "$skipped_export" && test -n "$orig_export_symbols"; then
10005*a67afe4dSAndroid Build Coastguard Worker	  # The given exports_symbols file has to be filtered, so filter it.
10006*a67afe4dSAndroid Build Coastguard Worker	  func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
10007*a67afe4dSAndroid Build Coastguard Worker	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
10008*a67afe4dSAndroid Build Coastguard Worker	  # 's' commands, which not all seds can handle. GNU sed should be fine
10009*a67afe4dSAndroid Build Coastguard Worker	  # though. Also, the filter scales superlinearly with the number of
10010*a67afe4dSAndroid Build Coastguard Worker	  # global variables. join(1) would be nice here, but unfortunately
10011*a67afe4dSAndroid Build Coastguard Worker	  # isn't a blessed tool.
10012*a67afe4dSAndroid Build Coastguard Worker	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
10013*a67afe4dSAndroid Build Coastguard Worker	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
10014*a67afe4dSAndroid Build Coastguard Worker	  export_symbols=$output_objdir/$libname.def
10015*a67afe4dSAndroid Build Coastguard Worker	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
10016*a67afe4dSAndroid Build Coastguard Worker	fi
10017*a67afe4dSAndroid Build Coastguard Worker
10018*a67afe4dSAndroid Build Coastguard Worker	tmp_deplibs=
10019*a67afe4dSAndroid Build Coastguard Worker	for test_deplib in $deplibs; do
10020*a67afe4dSAndroid Build Coastguard Worker	  case " $convenience " in
10021*a67afe4dSAndroid Build Coastguard Worker	  *" $test_deplib "*) ;;
10022*a67afe4dSAndroid Build Coastguard Worker	  *)
10023*a67afe4dSAndroid Build Coastguard Worker	    func_append tmp_deplibs " $test_deplib"
10024*a67afe4dSAndroid Build Coastguard Worker	    ;;
10025*a67afe4dSAndroid Build Coastguard Worker	  esac
10026*a67afe4dSAndroid Build Coastguard Worker	done
10027*a67afe4dSAndroid Build Coastguard Worker	deplibs=$tmp_deplibs
10028*a67afe4dSAndroid Build Coastguard Worker
10029*a67afe4dSAndroid Build Coastguard Worker	if test -n "$convenience"; then
10030*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$whole_archive_flag_spec" &&
10031*a67afe4dSAndroid Build Coastguard Worker	    test yes = "$compiler_needs_object" &&
10032*a67afe4dSAndroid Build Coastguard Worker	    test -z "$libobjs"; then
10033*a67afe4dSAndroid Build Coastguard Worker	    # extract the archives, so we have objects to list.
10034*a67afe4dSAndroid Build Coastguard Worker	    # TODO: could optimize this to just extract one archive.
10035*a67afe4dSAndroid Build Coastguard Worker	    whole_archive_flag_spec=
10036*a67afe4dSAndroid Build Coastguard Worker	  fi
10037*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$whole_archive_flag_spec"; then
10038*a67afe4dSAndroid Build Coastguard Worker	    save_libobjs=$libobjs
10039*a67afe4dSAndroid Build Coastguard Worker	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
10040*a67afe4dSAndroid Build Coastguard Worker	    test "X$libobjs" = "X " && libobjs=
10041*a67afe4dSAndroid Build Coastguard Worker	  else
10042*a67afe4dSAndroid Build Coastguard Worker	    gentop=$output_objdir/${outputname}x
10043*a67afe4dSAndroid Build Coastguard Worker	    func_append generated " $gentop"
10044*a67afe4dSAndroid Build Coastguard Worker
10045*a67afe4dSAndroid Build Coastguard Worker	    func_extract_archives $gentop $convenience
10046*a67afe4dSAndroid Build Coastguard Worker	    func_append libobjs " $func_extract_archives_result"
10047*a67afe4dSAndroid Build Coastguard Worker	    test "X$libobjs" = "X " && libobjs=
10048*a67afe4dSAndroid Build Coastguard Worker	  fi
10049*a67afe4dSAndroid Build Coastguard Worker	fi
10050*a67afe4dSAndroid Build Coastguard Worker
10051*a67afe4dSAndroid Build Coastguard Worker	if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then
10052*a67afe4dSAndroid Build Coastguard Worker	  eval flag=\"$thread_safe_flag_spec\"
10053*a67afe4dSAndroid Build Coastguard Worker	  func_append linker_flags " $flag"
10054*a67afe4dSAndroid Build Coastguard Worker	fi
10055*a67afe4dSAndroid Build Coastguard Worker
10056*a67afe4dSAndroid Build Coastguard Worker	# Make a backup of the uninstalled library when relinking
10057*a67afe4dSAndroid Build Coastguard Worker	if test relink = "$opt_mode"; then
10058*a67afe4dSAndroid Build Coastguard Worker	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
10059*a67afe4dSAndroid Build Coastguard Worker	fi
10060*a67afe4dSAndroid Build Coastguard Worker
10061*a67afe4dSAndroid Build Coastguard Worker	# Do each of the archive commands.
10062*a67afe4dSAndroid Build Coastguard Worker	if test yes = "$module" && test -n "$module_cmds"; then
10063*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
10064*a67afe4dSAndroid Build Coastguard Worker	    eval test_cmds=\"$module_expsym_cmds\"
10065*a67afe4dSAndroid Build Coastguard Worker	    cmds=$module_expsym_cmds
10066*a67afe4dSAndroid Build Coastguard Worker	  else
10067*a67afe4dSAndroid Build Coastguard Worker	    eval test_cmds=\"$module_cmds\"
10068*a67afe4dSAndroid Build Coastguard Worker	    cmds=$module_cmds
10069*a67afe4dSAndroid Build Coastguard Worker	  fi
10070*a67afe4dSAndroid Build Coastguard Worker	else
10071*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
10072*a67afe4dSAndroid Build Coastguard Worker	    eval test_cmds=\"$archive_expsym_cmds\"
10073*a67afe4dSAndroid Build Coastguard Worker	    cmds=$archive_expsym_cmds
10074*a67afe4dSAndroid Build Coastguard Worker	  else
10075*a67afe4dSAndroid Build Coastguard Worker	    eval test_cmds=\"$archive_cmds\"
10076*a67afe4dSAndroid Build Coastguard Worker	    cmds=$archive_cmds
10077*a67afe4dSAndroid Build Coastguard Worker	  fi
10078*a67afe4dSAndroid Build Coastguard Worker	fi
10079*a67afe4dSAndroid Build Coastguard Worker
10080*a67afe4dSAndroid Build Coastguard Worker	if test : != "$skipped_export" &&
10081*a67afe4dSAndroid Build Coastguard Worker	   func_len " $test_cmds" &&
10082*a67afe4dSAndroid Build Coastguard Worker	   len=$func_len_result &&
10083*a67afe4dSAndroid Build Coastguard Worker	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
10084*a67afe4dSAndroid Build Coastguard Worker	  :
10085*a67afe4dSAndroid Build Coastguard Worker	else
10086*a67afe4dSAndroid Build Coastguard Worker	  # The command line is too long to link in one step, link piecewise
10087*a67afe4dSAndroid Build Coastguard Worker	  # or, if using GNU ld and skipped_export is not :, use a linker
10088*a67afe4dSAndroid Build Coastguard Worker	  # script.
10089*a67afe4dSAndroid Build Coastguard Worker
10090*a67afe4dSAndroid Build Coastguard Worker	  # Save the value of $output and $libobjs because we want to
10091*a67afe4dSAndroid Build Coastguard Worker	  # use them later.  If we have whole_archive_flag_spec, we
10092*a67afe4dSAndroid Build Coastguard Worker	  # want to use save_libobjs as it was before
10093*a67afe4dSAndroid Build Coastguard Worker	  # whole_archive_flag_spec was expanded, because we can't
10094*a67afe4dSAndroid Build Coastguard Worker	  # assume the linker understands whole_archive_flag_spec.
10095*a67afe4dSAndroid Build Coastguard Worker	  # This may have to be revisited, in case too many
10096*a67afe4dSAndroid Build Coastguard Worker	  # convenience libraries get linked in and end up exceeding
10097*a67afe4dSAndroid Build Coastguard Worker	  # the spec.
10098*a67afe4dSAndroid Build Coastguard Worker	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
10099*a67afe4dSAndroid Build Coastguard Worker	    save_libobjs=$libobjs
10100*a67afe4dSAndroid Build Coastguard Worker	  fi
10101*a67afe4dSAndroid Build Coastguard Worker	  save_output=$output
10102*a67afe4dSAndroid Build Coastguard Worker	  func_basename "$output"
10103*a67afe4dSAndroid Build Coastguard Worker	  output_la=$func_basename_result
10104*a67afe4dSAndroid Build Coastguard Worker
10105*a67afe4dSAndroid Build Coastguard Worker	  # Clear the reloadable object creation command queue and
10106*a67afe4dSAndroid Build Coastguard Worker	  # initialize k to one.
10107*a67afe4dSAndroid Build Coastguard Worker	  test_cmds=
10108*a67afe4dSAndroid Build Coastguard Worker	  concat_cmds=
10109*a67afe4dSAndroid Build Coastguard Worker	  objlist=
10110*a67afe4dSAndroid Build Coastguard Worker	  last_robj=
10111*a67afe4dSAndroid Build Coastguard Worker	  k=1
10112*a67afe4dSAndroid Build Coastguard Worker
10113*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
10114*a67afe4dSAndroid Build Coastguard Worker	    output=$output_objdir/$output_la.lnkscript
10115*a67afe4dSAndroid Build Coastguard Worker	    func_verbose "creating GNU ld script: $output"
10116*a67afe4dSAndroid Build Coastguard Worker	    echo 'INPUT (' > $output
10117*a67afe4dSAndroid Build Coastguard Worker	    for obj in $save_libobjs
10118*a67afe4dSAndroid Build Coastguard Worker	    do
10119*a67afe4dSAndroid Build Coastguard Worker	      func_to_tool_file "$obj"
10120*a67afe4dSAndroid Build Coastguard Worker	      $ECHO "$func_to_tool_file_result" >> $output
10121*a67afe4dSAndroid Build Coastguard Worker	    done
10122*a67afe4dSAndroid Build Coastguard Worker	    echo ')' >> $output
10123*a67afe4dSAndroid Build Coastguard Worker	    func_append delfiles " $output"
10124*a67afe4dSAndroid Build Coastguard Worker	    func_to_tool_file "$output"
10125*a67afe4dSAndroid Build Coastguard Worker	    output=$func_to_tool_file_result
10126*a67afe4dSAndroid Build Coastguard Worker	  elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
10127*a67afe4dSAndroid Build Coastguard Worker	    output=$output_objdir/$output_la.lnk
10128*a67afe4dSAndroid Build Coastguard Worker	    func_verbose "creating linker input file list: $output"
10129*a67afe4dSAndroid Build Coastguard Worker	    : > $output
10130*a67afe4dSAndroid Build Coastguard Worker	    set x $save_libobjs
10131*a67afe4dSAndroid Build Coastguard Worker	    shift
10132*a67afe4dSAndroid Build Coastguard Worker	    firstobj=
10133*a67afe4dSAndroid Build Coastguard Worker	    if test yes = "$compiler_needs_object"; then
10134*a67afe4dSAndroid Build Coastguard Worker	      firstobj="$1 "
10135*a67afe4dSAndroid Build Coastguard Worker	      shift
10136*a67afe4dSAndroid Build Coastguard Worker	    fi
10137*a67afe4dSAndroid Build Coastguard Worker	    for obj
10138*a67afe4dSAndroid Build Coastguard Worker	    do
10139*a67afe4dSAndroid Build Coastguard Worker	      func_to_tool_file "$obj"
10140*a67afe4dSAndroid Build Coastguard Worker	      $ECHO "$func_to_tool_file_result" >> $output
10141*a67afe4dSAndroid Build Coastguard Worker	    done
10142*a67afe4dSAndroid Build Coastguard Worker	    func_append delfiles " $output"
10143*a67afe4dSAndroid Build Coastguard Worker	    func_to_tool_file "$output"
10144*a67afe4dSAndroid Build Coastguard Worker	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
10145*a67afe4dSAndroid Build Coastguard Worker	  else
10146*a67afe4dSAndroid Build Coastguard Worker	    if test -n "$save_libobjs"; then
10147*a67afe4dSAndroid Build Coastguard Worker	      func_verbose "creating reloadable object files..."
10148*a67afe4dSAndroid Build Coastguard Worker	      output=$output_objdir/$output_la-$k.$objext
10149*a67afe4dSAndroid Build Coastguard Worker	      eval test_cmds=\"$reload_cmds\"
10150*a67afe4dSAndroid Build Coastguard Worker	      func_len " $test_cmds"
10151*a67afe4dSAndroid Build Coastguard Worker	      len0=$func_len_result
10152*a67afe4dSAndroid Build Coastguard Worker	      len=$len0
10153*a67afe4dSAndroid Build Coastguard Worker
10154*a67afe4dSAndroid Build Coastguard Worker	      # Loop over the list of objects to be linked.
10155*a67afe4dSAndroid Build Coastguard Worker	      for obj in $save_libobjs
10156*a67afe4dSAndroid Build Coastguard Worker	      do
10157*a67afe4dSAndroid Build Coastguard Worker		func_len " $obj"
10158*a67afe4dSAndroid Build Coastguard Worker		func_arith $len + $func_len_result
10159*a67afe4dSAndroid Build Coastguard Worker		len=$func_arith_result
10160*a67afe4dSAndroid Build Coastguard Worker		if test -z "$objlist" ||
10161*a67afe4dSAndroid Build Coastguard Worker		   test "$len" -lt "$max_cmd_len"; then
10162*a67afe4dSAndroid Build Coastguard Worker		  func_append objlist " $obj"
10163*a67afe4dSAndroid Build Coastguard Worker		else
10164*a67afe4dSAndroid Build Coastguard Worker		  # The command $test_cmds is almost too long, add a
10165*a67afe4dSAndroid Build Coastguard Worker		  # command to the queue.
10166*a67afe4dSAndroid Build Coastguard Worker		  if test 1 -eq "$k"; then
10167*a67afe4dSAndroid Build Coastguard Worker		    # The first file doesn't have a previous command to add.
10168*a67afe4dSAndroid Build Coastguard Worker		    reload_objs=$objlist
10169*a67afe4dSAndroid Build Coastguard Worker		    eval concat_cmds=\"$reload_cmds\"
10170*a67afe4dSAndroid Build Coastguard Worker		  else
10171*a67afe4dSAndroid Build Coastguard Worker		    # All subsequent reloadable object files will link in
10172*a67afe4dSAndroid Build Coastguard Worker		    # the last one created.
10173*a67afe4dSAndroid Build Coastguard Worker		    reload_objs="$objlist $last_robj"
10174*a67afe4dSAndroid Build Coastguard Worker		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
10175*a67afe4dSAndroid Build Coastguard Worker		  fi
10176*a67afe4dSAndroid Build Coastguard Worker		  last_robj=$output_objdir/$output_la-$k.$objext
10177*a67afe4dSAndroid Build Coastguard Worker		  func_arith $k + 1
10178*a67afe4dSAndroid Build Coastguard Worker		  k=$func_arith_result
10179*a67afe4dSAndroid Build Coastguard Worker		  output=$output_objdir/$output_la-$k.$objext
10180*a67afe4dSAndroid Build Coastguard Worker		  objlist=" $obj"
10181*a67afe4dSAndroid Build Coastguard Worker		  func_len " $last_robj"
10182*a67afe4dSAndroid Build Coastguard Worker		  func_arith $len0 + $func_len_result
10183*a67afe4dSAndroid Build Coastguard Worker		  len=$func_arith_result
10184*a67afe4dSAndroid Build Coastguard Worker		fi
10185*a67afe4dSAndroid Build Coastguard Worker	      done
10186*a67afe4dSAndroid Build Coastguard Worker	      # Handle the remaining objects by creating one last
10187*a67afe4dSAndroid Build Coastguard Worker	      # reloadable object file.  All subsequent reloadable object
10188*a67afe4dSAndroid Build Coastguard Worker	      # files will link in the last one created.
10189*a67afe4dSAndroid Build Coastguard Worker	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
10190*a67afe4dSAndroid Build Coastguard Worker	      reload_objs="$objlist $last_robj"
10191*a67afe4dSAndroid Build Coastguard Worker	      eval concat_cmds=\"\$concat_cmds$reload_cmds\"
10192*a67afe4dSAndroid Build Coastguard Worker	      if test -n "$last_robj"; then
10193*a67afe4dSAndroid Build Coastguard Worker	        eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
10194*a67afe4dSAndroid Build Coastguard Worker	      fi
10195*a67afe4dSAndroid Build Coastguard Worker	      func_append delfiles " $output"
10196*a67afe4dSAndroid Build Coastguard Worker
10197*a67afe4dSAndroid Build Coastguard Worker	    else
10198*a67afe4dSAndroid Build Coastguard Worker	      output=
10199*a67afe4dSAndroid Build Coastguard Worker	    fi
10200*a67afe4dSAndroid Build Coastguard Worker
10201*a67afe4dSAndroid Build Coastguard Worker	    ${skipped_export-false} && {
10202*a67afe4dSAndroid Build Coastguard Worker	      func_verbose "generating symbol list for '$libname.la'"
10203*a67afe4dSAndroid Build Coastguard Worker	      export_symbols=$output_objdir/$libname.exp
10204*a67afe4dSAndroid Build Coastguard Worker	      $opt_dry_run || $RM $export_symbols
10205*a67afe4dSAndroid Build Coastguard Worker	      libobjs=$output
10206*a67afe4dSAndroid Build Coastguard Worker	      # Append the command to create the export file.
10207*a67afe4dSAndroid Build Coastguard Worker	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
10208*a67afe4dSAndroid Build Coastguard Worker	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
10209*a67afe4dSAndroid Build Coastguard Worker	      if test -n "$last_robj"; then
10210*a67afe4dSAndroid Build Coastguard Worker		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
10211*a67afe4dSAndroid Build Coastguard Worker	      fi
10212*a67afe4dSAndroid Build Coastguard Worker	    }
10213*a67afe4dSAndroid Build Coastguard Worker
10214*a67afe4dSAndroid Build Coastguard Worker	    test -n "$save_libobjs" &&
10215*a67afe4dSAndroid Build Coastguard Worker	      func_verbose "creating a temporary reloadable object file: $output"
10216*a67afe4dSAndroid Build Coastguard Worker
10217*a67afe4dSAndroid Build Coastguard Worker	    # Loop through the commands generated above and execute them.
10218*a67afe4dSAndroid Build Coastguard Worker	    save_ifs=$IFS; IFS='~'
10219*a67afe4dSAndroid Build Coastguard Worker	    for cmd in $concat_cmds; do
10220*a67afe4dSAndroid Build Coastguard Worker	      IFS=$save_ifs
10221*a67afe4dSAndroid Build Coastguard Worker	      $opt_quiet || {
10222*a67afe4dSAndroid Build Coastguard Worker		  func_quote_arg expand,pretty "$cmd"
10223*a67afe4dSAndroid Build Coastguard Worker		  eval "func_echo $func_quote_arg_result"
10224*a67afe4dSAndroid Build Coastguard Worker	      }
10225*a67afe4dSAndroid Build Coastguard Worker	      $opt_dry_run || eval "$cmd" || {
10226*a67afe4dSAndroid Build Coastguard Worker		lt_exit=$?
10227*a67afe4dSAndroid Build Coastguard Worker
10228*a67afe4dSAndroid Build Coastguard Worker		# Restore the uninstalled library and exit
10229*a67afe4dSAndroid Build Coastguard Worker		if test relink = "$opt_mode"; then
10230*a67afe4dSAndroid Build Coastguard Worker		  ( cd "$output_objdir" && \
10231*a67afe4dSAndroid Build Coastguard Worker		    $RM "${realname}T" && \
10232*a67afe4dSAndroid Build Coastguard Worker		    $MV "${realname}U" "$realname" )
10233*a67afe4dSAndroid Build Coastguard Worker		fi
10234*a67afe4dSAndroid Build Coastguard Worker
10235*a67afe4dSAndroid Build Coastguard Worker		exit $lt_exit
10236*a67afe4dSAndroid Build Coastguard Worker	      }
10237*a67afe4dSAndroid Build Coastguard Worker	    done
10238*a67afe4dSAndroid Build Coastguard Worker	    IFS=$save_ifs
10239*a67afe4dSAndroid Build Coastguard Worker
10240*a67afe4dSAndroid Build Coastguard Worker	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
10241*a67afe4dSAndroid Build Coastguard Worker	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
10242*a67afe4dSAndroid Build Coastguard Worker	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
10243*a67afe4dSAndroid Build Coastguard Worker	    fi
10244*a67afe4dSAndroid Build Coastguard Worker	  fi
10245*a67afe4dSAndroid Build Coastguard Worker
10246*a67afe4dSAndroid Build Coastguard Worker          ${skipped_export-false} && {
10247*a67afe4dSAndroid Build Coastguard Worker	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
10248*a67afe4dSAndroid Build Coastguard Worker	      tmp_export_symbols=$export_symbols
10249*a67afe4dSAndroid Build Coastguard Worker	      test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
10250*a67afe4dSAndroid Build Coastguard Worker	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
10251*a67afe4dSAndroid Build Coastguard Worker	    fi
10252*a67afe4dSAndroid Build Coastguard Worker
10253*a67afe4dSAndroid Build Coastguard Worker	    if test -n "$orig_export_symbols"; then
10254*a67afe4dSAndroid Build Coastguard Worker	      # The given exports_symbols file has to be filtered, so filter it.
10255*a67afe4dSAndroid Build Coastguard Worker	      func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
10256*a67afe4dSAndroid Build Coastguard Worker	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
10257*a67afe4dSAndroid Build Coastguard Worker	      # 's' commands, which not all seds can handle. GNU sed should be fine
10258*a67afe4dSAndroid Build Coastguard Worker	      # though. Also, the filter scales superlinearly with the number of
10259*a67afe4dSAndroid Build Coastguard Worker	      # global variables. join(1) would be nice here, but unfortunately
10260*a67afe4dSAndroid Build Coastguard Worker	      # isn't a blessed tool.
10261*a67afe4dSAndroid Build Coastguard Worker	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
10262*a67afe4dSAndroid Build Coastguard Worker	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
10263*a67afe4dSAndroid Build Coastguard Worker	      export_symbols=$output_objdir/$libname.def
10264*a67afe4dSAndroid Build Coastguard Worker	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
10265*a67afe4dSAndroid Build Coastguard Worker	    fi
10266*a67afe4dSAndroid Build Coastguard Worker	  }
10267*a67afe4dSAndroid Build Coastguard Worker
10268*a67afe4dSAndroid Build Coastguard Worker	  libobjs=$output
10269*a67afe4dSAndroid Build Coastguard Worker	  # Restore the value of output.
10270*a67afe4dSAndroid Build Coastguard Worker	  output=$save_output
10271*a67afe4dSAndroid Build Coastguard Worker
10272*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
10273*a67afe4dSAndroid Build Coastguard Worker	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
10274*a67afe4dSAndroid Build Coastguard Worker	    test "X$libobjs" = "X " && libobjs=
10275*a67afe4dSAndroid Build Coastguard Worker	  fi
10276*a67afe4dSAndroid Build Coastguard Worker	  # Expand the library linking commands again to reset the
10277*a67afe4dSAndroid Build Coastguard Worker	  # value of $libobjs for piecewise linking.
10278*a67afe4dSAndroid Build Coastguard Worker
10279*a67afe4dSAndroid Build Coastguard Worker	  # Do each of the archive commands.
10280*a67afe4dSAndroid Build Coastguard Worker	  if test yes = "$module" && test -n "$module_cmds"; then
10281*a67afe4dSAndroid Build Coastguard Worker	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
10282*a67afe4dSAndroid Build Coastguard Worker	      cmds=$module_expsym_cmds
10283*a67afe4dSAndroid Build Coastguard Worker	    else
10284*a67afe4dSAndroid Build Coastguard Worker	      cmds=$module_cmds
10285*a67afe4dSAndroid Build Coastguard Worker	    fi
10286*a67afe4dSAndroid Build Coastguard Worker	  else
10287*a67afe4dSAndroid Build Coastguard Worker	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
10288*a67afe4dSAndroid Build Coastguard Worker	      cmds=$archive_expsym_cmds
10289*a67afe4dSAndroid Build Coastguard Worker	    else
10290*a67afe4dSAndroid Build Coastguard Worker	      cmds=$archive_cmds
10291*a67afe4dSAndroid Build Coastguard Worker	    fi
10292*a67afe4dSAndroid Build Coastguard Worker	  fi
10293*a67afe4dSAndroid Build Coastguard Worker	fi
10294*a67afe4dSAndroid Build Coastguard Worker
10295*a67afe4dSAndroid Build Coastguard Worker	if test -n "$delfiles"; then
10296*a67afe4dSAndroid Build Coastguard Worker	  # Append the command to remove temporary files to $cmds.
10297*a67afe4dSAndroid Build Coastguard Worker	  eval cmds=\"\$cmds~\$RM $delfiles\"
10298*a67afe4dSAndroid Build Coastguard Worker	fi
10299*a67afe4dSAndroid Build Coastguard Worker
10300*a67afe4dSAndroid Build Coastguard Worker	# Add any objects from preloaded convenience libraries
10301*a67afe4dSAndroid Build Coastguard Worker	if test -n "$dlprefiles"; then
10302*a67afe4dSAndroid Build Coastguard Worker	  gentop=$output_objdir/${outputname}x
10303*a67afe4dSAndroid Build Coastguard Worker	  func_append generated " $gentop"
10304*a67afe4dSAndroid Build Coastguard Worker
10305*a67afe4dSAndroid Build Coastguard Worker	  func_extract_archives $gentop $dlprefiles
10306*a67afe4dSAndroid Build Coastguard Worker	  func_append libobjs " $func_extract_archives_result"
10307*a67afe4dSAndroid Build Coastguard Worker	  test "X$libobjs" = "X " && libobjs=
10308*a67afe4dSAndroid Build Coastguard Worker	fi
10309*a67afe4dSAndroid Build Coastguard Worker
10310*a67afe4dSAndroid Build Coastguard Worker	save_ifs=$IFS; IFS='~'
10311*a67afe4dSAndroid Build Coastguard Worker	for cmd in $cmds; do
10312*a67afe4dSAndroid Build Coastguard Worker	  IFS=$sp$nl
10313*a67afe4dSAndroid Build Coastguard Worker	  eval cmd=\"$cmd\"
10314*a67afe4dSAndroid Build Coastguard Worker	  IFS=$save_ifs
10315*a67afe4dSAndroid Build Coastguard Worker	  $opt_quiet || {
10316*a67afe4dSAndroid Build Coastguard Worker	    func_quote_arg expand,pretty "$cmd"
10317*a67afe4dSAndroid Build Coastguard Worker	    eval "func_echo $func_quote_arg_result"
10318*a67afe4dSAndroid Build Coastguard Worker	  }
10319*a67afe4dSAndroid Build Coastguard Worker	  $opt_dry_run || eval "$cmd" || {
10320*a67afe4dSAndroid Build Coastguard Worker	    lt_exit=$?
10321*a67afe4dSAndroid Build Coastguard Worker
10322*a67afe4dSAndroid Build Coastguard Worker	    # Restore the uninstalled library and exit
10323*a67afe4dSAndroid Build Coastguard Worker	    if test relink = "$opt_mode"; then
10324*a67afe4dSAndroid Build Coastguard Worker	      ( cd "$output_objdir" && \
10325*a67afe4dSAndroid Build Coastguard Worker	        $RM "${realname}T" && \
10326*a67afe4dSAndroid Build Coastguard Worker		$MV "${realname}U" "$realname" )
10327*a67afe4dSAndroid Build Coastguard Worker	    fi
10328*a67afe4dSAndroid Build Coastguard Worker
10329*a67afe4dSAndroid Build Coastguard Worker	    exit $lt_exit
10330*a67afe4dSAndroid Build Coastguard Worker	  }
10331*a67afe4dSAndroid Build Coastguard Worker	done
10332*a67afe4dSAndroid Build Coastguard Worker	IFS=$save_ifs
10333*a67afe4dSAndroid Build Coastguard Worker
10334*a67afe4dSAndroid Build Coastguard Worker	# Restore the uninstalled library and exit
10335*a67afe4dSAndroid Build Coastguard Worker	if test relink = "$opt_mode"; then
10336*a67afe4dSAndroid Build Coastguard Worker	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
10337*a67afe4dSAndroid Build Coastguard Worker
10338*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$convenience"; then
10339*a67afe4dSAndroid Build Coastguard Worker	    if test -z "$whole_archive_flag_spec"; then
10340*a67afe4dSAndroid Build Coastguard Worker	      func_show_eval '${RM}r "$gentop"'
10341*a67afe4dSAndroid Build Coastguard Worker	    fi
10342*a67afe4dSAndroid Build Coastguard Worker	  fi
10343*a67afe4dSAndroid Build Coastguard Worker
10344*a67afe4dSAndroid Build Coastguard Worker	  exit $EXIT_SUCCESS
10345*a67afe4dSAndroid Build Coastguard Worker	fi
10346*a67afe4dSAndroid Build Coastguard Worker
10347*a67afe4dSAndroid Build Coastguard Worker	# Create links to the real library.
10348*a67afe4dSAndroid Build Coastguard Worker	for linkname in $linknames; do
10349*a67afe4dSAndroid Build Coastguard Worker	  if test "$realname" != "$linkname"; then
10350*a67afe4dSAndroid Build Coastguard Worker	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
10351*a67afe4dSAndroid Build Coastguard Worker	  fi
10352*a67afe4dSAndroid Build Coastguard Worker	done
10353*a67afe4dSAndroid Build Coastguard Worker
10354*a67afe4dSAndroid Build Coastguard Worker	# If -module or -export-dynamic was specified, set the dlname.
10355*a67afe4dSAndroid Build Coastguard Worker	if test yes = "$module" || test yes = "$export_dynamic"; then
10356*a67afe4dSAndroid Build Coastguard Worker	  # On all known operating systems, these are identical.
10357*a67afe4dSAndroid Build Coastguard Worker	  dlname=$soname
10358*a67afe4dSAndroid Build Coastguard Worker	fi
10359*a67afe4dSAndroid Build Coastguard Worker      fi
10360*a67afe4dSAndroid Build Coastguard Worker      ;;
10361*a67afe4dSAndroid Build Coastguard Worker
10362*a67afe4dSAndroid Build Coastguard Worker    obj)
10363*a67afe4dSAndroid Build Coastguard Worker      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
10364*a67afe4dSAndroid Build Coastguard Worker	func_warning "'-dlopen' is ignored for objects"
10365*a67afe4dSAndroid Build Coastguard Worker      fi
10366*a67afe4dSAndroid Build Coastguard Worker
10367*a67afe4dSAndroid Build Coastguard Worker      case " $deplibs" in
10368*a67afe4dSAndroid Build Coastguard Worker      *\ -l* | *\ -L*)
10369*a67afe4dSAndroid Build Coastguard Worker	func_warning "'-l' and '-L' are ignored for objects" ;;
10370*a67afe4dSAndroid Build Coastguard Worker      esac
10371*a67afe4dSAndroid Build Coastguard Worker
10372*a67afe4dSAndroid Build Coastguard Worker      test -n "$rpath" && \
10373*a67afe4dSAndroid Build Coastguard Worker	func_warning "'-rpath' is ignored for objects"
10374*a67afe4dSAndroid Build Coastguard Worker
10375*a67afe4dSAndroid Build Coastguard Worker      test -n "$xrpath" && \
10376*a67afe4dSAndroid Build Coastguard Worker	func_warning "'-R' is ignored for objects"
10377*a67afe4dSAndroid Build Coastguard Worker
10378*a67afe4dSAndroid Build Coastguard Worker      test -n "$vinfo" && \
10379*a67afe4dSAndroid Build Coastguard Worker	func_warning "'-version-info' is ignored for objects"
10380*a67afe4dSAndroid Build Coastguard Worker
10381*a67afe4dSAndroid Build Coastguard Worker      test -n "$release" && \
10382*a67afe4dSAndroid Build Coastguard Worker	func_warning "'-release' is ignored for objects"
10383*a67afe4dSAndroid Build Coastguard Worker
10384*a67afe4dSAndroid Build Coastguard Worker      case $output in
10385*a67afe4dSAndroid Build Coastguard Worker      *.lo)
10386*a67afe4dSAndroid Build Coastguard Worker	test -n "$objs$old_deplibs" && \
10387*a67afe4dSAndroid Build Coastguard Worker	  func_fatal_error "cannot build library object '$output' from non-libtool objects"
10388*a67afe4dSAndroid Build Coastguard Worker
10389*a67afe4dSAndroid Build Coastguard Worker	libobj=$output
10390*a67afe4dSAndroid Build Coastguard Worker	func_lo2o "$libobj"
10391*a67afe4dSAndroid Build Coastguard Worker	obj=$func_lo2o_result
10392*a67afe4dSAndroid Build Coastguard Worker	;;
10393*a67afe4dSAndroid Build Coastguard Worker      *)
10394*a67afe4dSAndroid Build Coastguard Worker	libobj=
10395*a67afe4dSAndroid Build Coastguard Worker	obj=$output
10396*a67afe4dSAndroid Build Coastguard Worker	;;
10397*a67afe4dSAndroid Build Coastguard Worker      esac
10398*a67afe4dSAndroid Build Coastguard Worker
10399*a67afe4dSAndroid Build Coastguard Worker      # Delete the old objects.
10400*a67afe4dSAndroid Build Coastguard Worker      $opt_dry_run || $RM $obj $libobj
10401*a67afe4dSAndroid Build Coastguard Worker
10402*a67afe4dSAndroid Build Coastguard Worker      # Objects from convenience libraries.  This assumes
10403*a67afe4dSAndroid Build Coastguard Worker      # single-version convenience libraries.  Whenever we create
10404*a67afe4dSAndroid Build Coastguard Worker      # different ones for PIC/non-PIC, this we'll have to duplicate
10405*a67afe4dSAndroid Build Coastguard Worker      # the extraction.
10406*a67afe4dSAndroid Build Coastguard Worker      reload_conv_objs=
10407*a67afe4dSAndroid Build Coastguard Worker      gentop=
10408*a67afe4dSAndroid Build Coastguard Worker      # if reload_cmds runs $LD directly, get rid of -Wl from
10409*a67afe4dSAndroid Build Coastguard Worker      # whole_archive_flag_spec and hope we can get by with turning comma
10410*a67afe4dSAndroid Build Coastguard Worker      # into space.
10411*a67afe4dSAndroid Build Coastguard Worker      case $reload_cmds in
10412*a67afe4dSAndroid Build Coastguard Worker        *\$LD[\ \$]*) wl= ;;
10413*a67afe4dSAndroid Build Coastguard Worker      esac
10414*a67afe4dSAndroid Build Coastguard Worker      if test -n "$convenience"; then
10415*a67afe4dSAndroid Build Coastguard Worker	if test -n "$whole_archive_flag_spec"; then
10416*a67afe4dSAndroid Build Coastguard Worker	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
10417*a67afe4dSAndroid Build Coastguard Worker	  test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
10418*a67afe4dSAndroid Build Coastguard Worker	  reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags
10419*a67afe4dSAndroid Build Coastguard Worker	else
10420*a67afe4dSAndroid Build Coastguard Worker	  gentop=$output_objdir/${obj}x
10421*a67afe4dSAndroid Build Coastguard Worker	  func_append generated " $gentop"
10422*a67afe4dSAndroid Build Coastguard Worker
10423*a67afe4dSAndroid Build Coastguard Worker	  func_extract_archives $gentop $convenience
10424*a67afe4dSAndroid Build Coastguard Worker	  reload_conv_objs="$reload_objs $func_extract_archives_result"
10425*a67afe4dSAndroid Build Coastguard Worker	fi
10426*a67afe4dSAndroid Build Coastguard Worker      fi
10427*a67afe4dSAndroid Build Coastguard Worker
10428*a67afe4dSAndroid Build Coastguard Worker      # If we're not building shared, we need to use non_pic_objs
10429*a67afe4dSAndroid Build Coastguard Worker      test yes = "$build_libtool_libs" || libobjs=$non_pic_objects
10430*a67afe4dSAndroid Build Coastguard Worker
10431*a67afe4dSAndroid Build Coastguard Worker      # Create the old-style object.
10432*a67afe4dSAndroid Build Coastguard Worker      reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs
10433*a67afe4dSAndroid Build Coastguard Worker
10434*a67afe4dSAndroid Build Coastguard Worker      output=$obj
10435*a67afe4dSAndroid Build Coastguard Worker      func_execute_cmds "$reload_cmds" 'exit $?'
10436*a67afe4dSAndroid Build Coastguard Worker
10437*a67afe4dSAndroid Build Coastguard Worker      # Exit if we aren't doing a library object file.
10438*a67afe4dSAndroid Build Coastguard Worker      if test -z "$libobj"; then
10439*a67afe4dSAndroid Build Coastguard Worker	if test -n "$gentop"; then
10440*a67afe4dSAndroid Build Coastguard Worker	  func_show_eval '${RM}r "$gentop"'
10441*a67afe4dSAndroid Build Coastguard Worker	fi
10442*a67afe4dSAndroid Build Coastguard Worker
10443*a67afe4dSAndroid Build Coastguard Worker	exit $EXIT_SUCCESS
10444*a67afe4dSAndroid Build Coastguard Worker      fi
10445*a67afe4dSAndroid Build Coastguard Worker
10446*a67afe4dSAndroid Build Coastguard Worker      test yes = "$build_libtool_libs" || {
10447*a67afe4dSAndroid Build Coastguard Worker	if test -n "$gentop"; then
10448*a67afe4dSAndroid Build Coastguard Worker	  func_show_eval '${RM}r "$gentop"'
10449*a67afe4dSAndroid Build Coastguard Worker	fi
10450*a67afe4dSAndroid Build Coastguard Worker
10451*a67afe4dSAndroid Build Coastguard Worker	# Create an invalid libtool object if no PIC, so that we don't
10452*a67afe4dSAndroid Build Coastguard Worker	# accidentally link it into a program.
10453*a67afe4dSAndroid Build Coastguard Worker	# $show "echo timestamp > $libobj"
10454*a67afe4dSAndroid Build Coastguard Worker	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
10455*a67afe4dSAndroid Build Coastguard Worker	exit $EXIT_SUCCESS
10456*a67afe4dSAndroid Build Coastguard Worker      }
10457*a67afe4dSAndroid Build Coastguard Worker
10458*a67afe4dSAndroid Build Coastguard Worker      if test -n "$pic_flag" || test default != "$pic_mode"; then
10459*a67afe4dSAndroid Build Coastguard Worker	# Only do commands if we really have different PIC objects.
10460*a67afe4dSAndroid Build Coastguard Worker	reload_objs="$libobjs $reload_conv_objs"
10461*a67afe4dSAndroid Build Coastguard Worker	output=$libobj
10462*a67afe4dSAndroid Build Coastguard Worker	func_execute_cmds "$reload_cmds" 'exit $?'
10463*a67afe4dSAndroid Build Coastguard Worker      fi
10464*a67afe4dSAndroid Build Coastguard Worker
10465*a67afe4dSAndroid Build Coastguard Worker      if test -n "$gentop"; then
10466*a67afe4dSAndroid Build Coastguard Worker	func_show_eval '${RM}r "$gentop"'
10467*a67afe4dSAndroid Build Coastguard Worker      fi
10468*a67afe4dSAndroid Build Coastguard Worker
10469*a67afe4dSAndroid Build Coastguard Worker      exit $EXIT_SUCCESS
10470*a67afe4dSAndroid Build Coastguard Worker      ;;
10471*a67afe4dSAndroid Build Coastguard Worker
10472*a67afe4dSAndroid Build Coastguard Worker    prog)
10473*a67afe4dSAndroid Build Coastguard Worker      case $host in
10474*a67afe4dSAndroid Build Coastguard Worker	*cygwin*) func_stripname '' '.exe' "$output"
10475*a67afe4dSAndroid Build Coastguard Worker	          output=$func_stripname_result.exe;;
10476*a67afe4dSAndroid Build Coastguard Worker      esac
10477*a67afe4dSAndroid Build Coastguard Worker      test -n "$vinfo" && \
10478*a67afe4dSAndroid Build Coastguard Worker	func_warning "'-version-info' is ignored for programs"
10479*a67afe4dSAndroid Build Coastguard Worker
10480*a67afe4dSAndroid Build Coastguard Worker      test -n "$release" && \
10481*a67afe4dSAndroid Build Coastguard Worker	func_warning "'-release' is ignored for programs"
10482*a67afe4dSAndroid Build Coastguard Worker
10483*a67afe4dSAndroid Build Coastguard Worker      $preload \
10484*a67afe4dSAndroid Build Coastguard Worker	&& test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \
10485*a67afe4dSAndroid Build Coastguard Worker	&& func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support."
10486*a67afe4dSAndroid Build Coastguard Worker
10487*a67afe4dSAndroid Build Coastguard Worker      case $host in
10488*a67afe4dSAndroid Build Coastguard Worker      *-*-rhapsody* | *-*-darwin1.[012])
10489*a67afe4dSAndroid Build Coastguard Worker	# On Rhapsody replace the C library is the System framework
10490*a67afe4dSAndroid Build Coastguard Worker	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
10491*a67afe4dSAndroid Build Coastguard Worker	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
10492*a67afe4dSAndroid Build Coastguard Worker	;;
10493*a67afe4dSAndroid Build Coastguard Worker      esac
10494*a67afe4dSAndroid Build Coastguard Worker
10495*a67afe4dSAndroid Build Coastguard Worker      case $host in
10496*a67afe4dSAndroid Build Coastguard Worker      *-*-darwin*)
10497*a67afe4dSAndroid Build Coastguard Worker	# Don't allow lazy linking, it breaks C++ global constructors
10498*a67afe4dSAndroid Build Coastguard Worker	# But is supposedly fixed on 10.4 or later (yay!).
10499*a67afe4dSAndroid Build Coastguard Worker	if test CXX = "$tagname"; then
10500*a67afe4dSAndroid Build Coastguard Worker	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
10501*a67afe4dSAndroid Build Coastguard Worker	    10.[0123])
10502*a67afe4dSAndroid Build Coastguard Worker	      func_append compile_command " $wl-bind_at_load"
10503*a67afe4dSAndroid Build Coastguard Worker	      func_append finalize_command " $wl-bind_at_load"
10504*a67afe4dSAndroid Build Coastguard Worker	    ;;
10505*a67afe4dSAndroid Build Coastguard Worker	  esac
10506*a67afe4dSAndroid Build Coastguard Worker	fi
10507*a67afe4dSAndroid Build Coastguard Worker	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
10508*a67afe4dSAndroid Build Coastguard Worker	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
10509*a67afe4dSAndroid Build Coastguard Worker	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
10510*a67afe4dSAndroid Build Coastguard Worker	;;
10511*a67afe4dSAndroid Build Coastguard Worker      esac
10512*a67afe4dSAndroid Build Coastguard Worker
10513*a67afe4dSAndroid Build Coastguard Worker
10514*a67afe4dSAndroid Build Coastguard Worker      # move library search paths that coincide with paths to not yet
10515*a67afe4dSAndroid Build Coastguard Worker      # installed libraries to the beginning of the library search list
10516*a67afe4dSAndroid Build Coastguard Worker      new_libs=
10517*a67afe4dSAndroid Build Coastguard Worker      for path in $notinst_path; do
10518*a67afe4dSAndroid Build Coastguard Worker	case " $new_libs " in
10519*a67afe4dSAndroid Build Coastguard Worker	*" -L$path/$objdir "*) ;;
10520*a67afe4dSAndroid Build Coastguard Worker	*)
10521*a67afe4dSAndroid Build Coastguard Worker	  case " $compile_deplibs " in
10522*a67afe4dSAndroid Build Coastguard Worker	  *" -L$path/$objdir "*)
10523*a67afe4dSAndroid Build Coastguard Worker	    func_append new_libs " -L$path/$objdir" ;;
10524*a67afe4dSAndroid Build Coastguard Worker	  esac
10525*a67afe4dSAndroid Build Coastguard Worker	  ;;
10526*a67afe4dSAndroid Build Coastguard Worker	esac
10527*a67afe4dSAndroid Build Coastguard Worker      done
10528*a67afe4dSAndroid Build Coastguard Worker      for deplib in $compile_deplibs; do
10529*a67afe4dSAndroid Build Coastguard Worker	case $deplib in
10530*a67afe4dSAndroid Build Coastguard Worker	-L*)
10531*a67afe4dSAndroid Build Coastguard Worker	  case " $new_libs " in
10532*a67afe4dSAndroid Build Coastguard Worker	  *" $deplib "*) ;;
10533*a67afe4dSAndroid Build Coastguard Worker	  *) func_append new_libs " $deplib" ;;
10534*a67afe4dSAndroid Build Coastguard Worker	  esac
10535*a67afe4dSAndroid Build Coastguard Worker	  ;;
10536*a67afe4dSAndroid Build Coastguard Worker	*) func_append new_libs " $deplib" ;;
10537*a67afe4dSAndroid Build Coastguard Worker	esac
10538*a67afe4dSAndroid Build Coastguard Worker      done
10539*a67afe4dSAndroid Build Coastguard Worker      compile_deplibs=$new_libs
10540*a67afe4dSAndroid Build Coastguard Worker
10541*a67afe4dSAndroid Build Coastguard Worker
10542*a67afe4dSAndroid Build Coastguard Worker      func_append compile_command " $compile_deplibs"
10543*a67afe4dSAndroid Build Coastguard Worker      func_append finalize_command " $finalize_deplibs"
10544*a67afe4dSAndroid Build Coastguard Worker
10545*a67afe4dSAndroid Build Coastguard Worker      if test -n "$rpath$xrpath"; then
10546*a67afe4dSAndroid Build Coastguard Worker	# If the user specified any rpath flags, then add them.
10547*a67afe4dSAndroid Build Coastguard Worker	for libdir in $rpath $xrpath; do
10548*a67afe4dSAndroid Build Coastguard Worker	  # This is the magic to use -rpath.
10549*a67afe4dSAndroid Build Coastguard Worker	  case "$finalize_rpath " in
10550*a67afe4dSAndroid Build Coastguard Worker	  *" $libdir "*) ;;
10551*a67afe4dSAndroid Build Coastguard Worker	  *) func_append finalize_rpath " $libdir" ;;
10552*a67afe4dSAndroid Build Coastguard Worker	  esac
10553*a67afe4dSAndroid Build Coastguard Worker	done
10554*a67afe4dSAndroid Build Coastguard Worker      fi
10555*a67afe4dSAndroid Build Coastguard Worker
10556*a67afe4dSAndroid Build Coastguard Worker      # Now hardcode the library paths
10557*a67afe4dSAndroid Build Coastguard Worker      rpath=
10558*a67afe4dSAndroid Build Coastguard Worker      hardcode_libdirs=
10559*a67afe4dSAndroid Build Coastguard Worker      for libdir in $compile_rpath $finalize_rpath; do
10560*a67afe4dSAndroid Build Coastguard Worker	if test -n "$hardcode_libdir_flag_spec"; then
10561*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$hardcode_libdir_separator"; then
10562*a67afe4dSAndroid Build Coastguard Worker	    if test -z "$hardcode_libdirs"; then
10563*a67afe4dSAndroid Build Coastguard Worker	      hardcode_libdirs=$libdir
10564*a67afe4dSAndroid Build Coastguard Worker	    else
10565*a67afe4dSAndroid Build Coastguard Worker	      # Just accumulate the unique libdirs.
10566*a67afe4dSAndroid Build Coastguard Worker	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
10567*a67afe4dSAndroid Build Coastguard Worker	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
10568*a67afe4dSAndroid Build Coastguard Worker		;;
10569*a67afe4dSAndroid Build Coastguard Worker	      *)
10570*a67afe4dSAndroid Build Coastguard Worker		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
10571*a67afe4dSAndroid Build Coastguard Worker		;;
10572*a67afe4dSAndroid Build Coastguard Worker	      esac
10573*a67afe4dSAndroid Build Coastguard Worker	    fi
10574*a67afe4dSAndroid Build Coastguard Worker	  else
10575*a67afe4dSAndroid Build Coastguard Worker	    eval flag=\"$hardcode_libdir_flag_spec\"
10576*a67afe4dSAndroid Build Coastguard Worker	    func_append rpath " $flag"
10577*a67afe4dSAndroid Build Coastguard Worker	  fi
10578*a67afe4dSAndroid Build Coastguard Worker	elif test -n "$runpath_var"; then
10579*a67afe4dSAndroid Build Coastguard Worker	  case "$perm_rpath " in
10580*a67afe4dSAndroid Build Coastguard Worker	  *" $libdir "*) ;;
10581*a67afe4dSAndroid Build Coastguard Worker	  *) func_append perm_rpath " $libdir" ;;
10582*a67afe4dSAndroid Build Coastguard Worker	  esac
10583*a67afe4dSAndroid Build Coastguard Worker	fi
10584*a67afe4dSAndroid Build Coastguard Worker	case $host in
10585*a67afe4dSAndroid Build Coastguard Worker	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
10586*a67afe4dSAndroid Build Coastguard Worker	  testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
10587*a67afe4dSAndroid Build Coastguard Worker	  case :$dllsearchpath: in
10588*a67afe4dSAndroid Build Coastguard Worker	  *":$libdir:"*) ;;
10589*a67afe4dSAndroid Build Coastguard Worker	  ::) dllsearchpath=$libdir;;
10590*a67afe4dSAndroid Build Coastguard Worker	  *) func_append dllsearchpath ":$libdir";;
10591*a67afe4dSAndroid Build Coastguard Worker	  esac
10592*a67afe4dSAndroid Build Coastguard Worker	  case :$dllsearchpath: in
10593*a67afe4dSAndroid Build Coastguard Worker	  *":$testbindir:"*) ;;
10594*a67afe4dSAndroid Build Coastguard Worker	  ::) dllsearchpath=$testbindir;;
10595*a67afe4dSAndroid Build Coastguard Worker	  *) func_append dllsearchpath ":$testbindir";;
10596*a67afe4dSAndroid Build Coastguard Worker	  esac
10597*a67afe4dSAndroid Build Coastguard Worker	  ;;
10598*a67afe4dSAndroid Build Coastguard Worker	esac
10599*a67afe4dSAndroid Build Coastguard Worker      done
10600*a67afe4dSAndroid Build Coastguard Worker      # Substitute the hardcoded libdirs into the rpath.
10601*a67afe4dSAndroid Build Coastguard Worker      if test -n "$hardcode_libdir_separator" &&
10602*a67afe4dSAndroid Build Coastguard Worker	 test -n "$hardcode_libdirs"; then
10603*a67afe4dSAndroid Build Coastguard Worker	libdir=$hardcode_libdirs
10604*a67afe4dSAndroid Build Coastguard Worker	eval rpath=\" $hardcode_libdir_flag_spec\"
10605*a67afe4dSAndroid Build Coastguard Worker      fi
10606*a67afe4dSAndroid Build Coastguard Worker      compile_rpath=$rpath
10607*a67afe4dSAndroid Build Coastguard Worker
10608*a67afe4dSAndroid Build Coastguard Worker      rpath=
10609*a67afe4dSAndroid Build Coastguard Worker      hardcode_libdirs=
10610*a67afe4dSAndroid Build Coastguard Worker      for libdir in $finalize_rpath; do
10611*a67afe4dSAndroid Build Coastguard Worker	if test -n "$hardcode_libdir_flag_spec"; then
10612*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$hardcode_libdir_separator"; then
10613*a67afe4dSAndroid Build Coastguard Worker	    if test -z "$hardcode_libdirs"; then
10614*a67afe4dSAndroid Build Coastguard Worker	      hardcode_libdirs=$libdir
10615*a67afe4dSAndroid Build Coastguard Worker	    else
10616*a67afe4dSAndroid Build Coastguard Worker	      # Just accumulate the unique libdirs.
10617*a67afe4dSAndroid Build Coastguard Worker	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
10618*a67afe4dSAndroid Build Coastguard Worker	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
10619*a67afe4dSAndroid Build Coastguard Worker		;;
10620*a67afe4dSAndroid Build Coastguard Worker	      *)
10621*a67afe4dSAndroid Build Coastguard Worker		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
10622*a67afe4dSAndroid Build Coastguard Worker		;;
10623*a67afe4dSAndroid Build Coastguard Worker	      esac
10624*a67afe4dSAndroid Build Coastguard Worker	    fi
10625*a67afe4dSAndroid Build Coastguard Worker	  else
10626*a67afe4dSAndroid Build Coastguard Worker	    eval flag=\"$hardcode_libdir_flag_spec\"
10627*a67afe4dSAndroid Build Coastguard Worker	    func_append rpath " $flag"
10628*a67afe4dSAndroid Build Coastguard Worker	  fi
10629*a67afe4dSAndroid Build Coastguard Worker	elif test -n "$runpath_var"; then
10630*a67afe4dSAndroid Build Coastguard Worker	  case "$finalize_perm_rpath " in
10631*a67afe4dSAndroid Build Coastguard Worker	  *" $libdir "*) ;;
10632*a67afe4dSAndroid Build Coastguard Worker	  *) func_append finalize_perm_rpath " $libdir" ;;
10633*a67afe4dSAndroid Build Coastguard Worker	  esac
10634*a67afe4dSAndroid Build Coastguard Worker	fi
10635*a67afe4dSAndroid Build Coastguard Worker      done
10636*a67afe4dSAndroid Build Coastguard Worker      # Substitute the hardcoded libdirs into the rpath.
10637*a67afe4dSAndroid Build Coastguard Worker      if test -n "$hardcode_libdir_separator" &&
10638*a67afe4dSAndroid Build Coastguard Worker	 test -n "$hardcode_libdirs"; then
10639*a67afe4dSAndroid Build Coastguard Worker	libdir=$hardcode_libdirs
10640*a67afe4dSAndroid Build Coastguard Worker	eval rpath=\" $hardcode_libdir_flag_spec\"
10641*a67afe4dSAndroid Build Coastguard Worker      fi
10642*a67afe4dSAndroid Build Coastguard Worker      finalize_rpath=$rpath
10643*a67afe4dSAndroid Build Coastguard Worker
10644*a67afe4dSAndroid Build Coastguard Worker      if test -n "$libobjs" && test yes = "$build_old_libs"; then
10645*a67afe4dSAndroid Build Coastguard Worker	# Transform all the library objects into standard objects.
10646*a67afe4dSAndroid Build Coastguard Worker	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
10647*a67afe4dSAndroid Build Coastguard Worker	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
10648*a67afe4dSAndroid Build Coastguard Worker      fi
10649*a67afe4dSAndroid Build Coastguard Worker
10650*a67afe4dSAndroid Build Coastguard Worker      func_generate_dlsyms "$outputname" "@PROGRAM@" false
10651*a67afe4dSAndroid Build Coastguard Worker
10652*a67afe4dSAndroid Build Coastguard Worker      # template prelinking step
10653*a67afe4dSAndroid Build Coastguard Worker      if test -n "$prelink_cmds"; then
10654*a67afe4dSAndroid Build Coastguard Worker	func_execute_cmds "$prelink_cmds" 'exit $?'
10655*a67afe4dSAndroid Build Coastguard Worker      fi
10656*a67afe4dSAndroid Build Coastguard Worker
10657*a67afe4dSAndroid Build Coastguard Worker      wrappers_required=:
10658*a67afe4dSAndroid Build Coastguard Worker      case $host in
10659*a67afe4dSAndroid Build Coastguard Worker      *cegcc* | *mingw32ce*)
10660*a67afe4dSAndroid Build Coastguard Worker        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
10661*a67afe4dSAndroid Build Coastguard Worker        wrappers_required=false
10662*a67afe4dSAndroid Build Coastguard Worker        ;;
10663*a67afe4dSAndroid Build Coastguard Worker      *cygwin* | *mingw* )
10664*a67afe4dSAndroid Build Coastguard Worker        test yes = "$build_libtool_libs" || wrappers_required=false
10665*a67afe4dSAndroid Build Coastguard Worker        ;;
10666*a67afe4dSAndroid Build Coastguard Worker      *)
10667*a67afe4dSAndroid Build Coastguard Worker        if test no = "$need_relink" || test yes != "$build_libtool_libs"; then
10668*a67afe4dSAndroid Build Coastguard Worker          wrappers_required=false
10669*a67afe4dSAndroid Build Coastguard Worker        fi
10670*a67afe4dSAndroid Build Coastguard Worker        ;;
10671*a67afe4dSAndroid Build Coastguard Worker      esac
10672*a67afe4dSAndroid Build Coastguard Worker      $wrappers_required || {
10673*a67afe4dSAndroid Build Coastguard Worker	# Replace the output file specification.
10674*a67afe4dSAndroid Build Coastguard Worker	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
10675*a67afe4dSAndroid Build Coastguard Worker	link_command=$compile_command$compile_rpath
10676*a67afe4dSAndroid Build Coastguard Worker
10677*a67afe4dSAndroid Build Coastguard Worker	# We have no uninstalled library dependencies, so finalize right now.
10678*a67afe4dSAndroid Build Coastguard Worker	exit_status=0
10679*a67afe4dSAndroid Build Coastguard Worker	func_show_eval "$link_command" 'exit_status=$?'
10680*a67afe4dSAndroid Build Coastguard Worker
10681*a67afe4dSAndroid Build Coastguard Worker	if test -n "$postlink_cmds"; then
10682*a67afe4dSAndroid Build Coastguard Worker	  func_to_tool_file "$output"
10683*a67afe4dSAndroid Build Coastguard Worker	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
10684*a67afe4dSAndroid Build Coastguard Worker	  func_execute_cmds "$postlink_cmds" 'exit $?'
10685*a67afe4dSAndroid Build Coastguard Worker	fi
10686*a67afe4dSAndroid Build Coastguard Worker
10687*a67afe4dSAndroid Build Coastguard Worker	# Delete the generated files.
10688*a67afe4dSAndroid Build Coastguard Worker	if test -f "$output_objdir/${outputname}S.$objext"; then
10689*a67afe4dSAndroid Build Coastguard Worker	  func_show_eval '$RM "$output_objdir/${outputname}S.$objext"'
10690*a67afe4dSAndroid Build Coastguard Worker	fi
10691*a67afe4dSAndroid Build Coastguard Worker
10692*a67afe4dSAndroid Build Coastguard Worker	exit $exit_status
10693*a67afe4dSAndroid Build Coastguard Worker      }
10694*a67afe4dSAndroid Build Coastguard Worker
10695*a67afe4dSAndroid Build Coastguard Worker      if test -n "$compile_shlibpath$finalize_shlibpath"; then
10696*a67afe4dSAndroid Build Coastguard Worker	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
10697*a67afe4dSAndroid Build Coastguard Worker      fi
10698*a67afe4dSAndroid Build Coastguard Worker      if test -n "$finalize_shlibpath"; then
10699*a67afe4dSAndroid Build Coastguard Worker	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
10700*a67afe4dSAndroid Build Coastguard Worker      fi
10701*a67afe4dSAndroid Build Coastguard Worker
10702*a67afe4dSAndroid Build Coastguard Worker      compile_var=
10703*a67afe4dSAndroid Build Coastguard Worker      finalize_var=
10704*a67afe4dSAndroid Build Coastguard Worker      if test -n "$runpath_var"; then
10705*a67afe4dSAndroid Build Coastguard Worker	if test -n "$perm_rpath"; then
10706*a67afe4dSAndroid Build Coastguard Worker	  # We should set the runpath_var.
10707*a67afe4dSAndroid Build Coastguard Worker	  rpath=
10708*a67afe4dSAndroid Build Coastguard Worker	  for dir in $perm_rpath; do
10709*a67afe4dSAndroid Build Coastguard Worker	    func_append rpath "$dir:"
10710*a67afe4dSAndroid Build Coastguard Worker	  done
10711*a67afe4dSAndroid Build Coastguard Worker	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
10712*a67afe4dSAndroid Build Coastguard Worker	fi
10713*a67afe4dSAndroid Build Coastguard Worker	if test -n "$finalize_perm_rpath"; then
10714*a67afe4dSAndroid Build Coastguard Worker	  # We should set the runpath_var.
10715*a67afe4dSAndroid Build Coastguard Worker	  rpath=
10716*a67afe4dSAndroid Build Coastguard Worker	  for dir in $finalize_perm_rpath; do
10717*a67afe4dSAndroid Build Coastguard Worker	    func_append rpath "$dir:"
10718*a67afe4dSAndroid Build Coastguard Worker	  done
10719*a67afe4dSAndroid Build Coastguard Worker	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
10720*a67afe4dSAndroid Build Coastguard Worker	fi
10721*a67afe4dSAndroid Build Coastguard Worker      fi
10722*a67afe4dSAndroid Build Coastguard Worker
10723*a67afe4dSAndroid Build Coastguard Worker      if test yes = "$no_install"; then
10724*a67afe4dSAndroid Build Coastguard Worker	# We don't need to create a wrapper script.
10725*a67afe4dSAndroid Build Coastguard Worker	link_command=$compile_var$compile_command$compile_rpath
10726*a67afe4dSAndroid Build Coastguard Worker	# Replace the output file specification.
10727*a67afe4dSAndroid Build Coastguard Worker	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
10728*a67afe4dSAndroid Build Coastguard Worker	# Delete the old output file.
10729*a67afe4dSAndroid Build Coastguard Worker	$opt_dry_run || $RM $output
10730*a67afe4dSAndroid Build Coastguard Worker	# Link the executable and exit
10731*a67afe4dSAndroid Build Coastguard Worker	func_show_eval "$link_command" 'exit $?'
10732*a67afe4dSAndroid Build Coastguard Worker
10733*a67afe4dSAndroid Build Coastguard Worker	if test -n "$postlink_cmds"; then
10734*a67afe4dSAndroid Build Coastguard Worker	  func_to_tool_file "$output"
10735*a67afe4dSAndroid Build Coastguard Worker	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
10736*a67afe4dSAndroid Build Coastguard Worker	  func_execute_cmds "$postlink_cmds" 'exit $?'
10737*a67afe4dSAndroid Build Coastguard Worker	fi
10738*a67afe4dSAndroid Build Coastguard Worker
10739*a67afe4dSAndroid Build Coastguard Worker	exit $EXIT_SUCCESS
10740*a67afe4dSAndroid Build Coastguard Worker      fi
10741*a67afe4dSAndroid Build Coastguard Worker
10742*a67afe4dSAndroid Build Coastguard Worker      case $hardcode_action,$fast_install in
10743*a67afe4dSAndroid Build Coastguard Worker        relink,*)
10744*a67afe4dSAndroid Build Coastguard Worker	  # Fast installation is not supported
10745*a67afe4dSAndroid Build Coastguard Worker	  link_command=$compile_var$compile_command$compile_rpath
10746*a67afe4dSAndroid Build Coastguard Worker	  relink_command=$finalize_var$finalize_command$finalize_rpath
10747*a67afe4dSAndroid Build Coastguard Worker
10748*a67afe4dSAndroid Build Coastguard Worker	  func_warning "this platform does not like uninstalled shared libraries"
10749*a67afe4dSAndroid Build Coastguard Worker	  func_warning "'$output' will be relinked during installation"
10750*a67afe4dSAndroid Build Coastguard Worker	  ;;
10751*a67afe4dSAndroid Build Coastguard Worker        *,yes)
10752*a67afe4dSAndroid Build Coastguard Worker	  link_command=$finalize_var$compile_command$finalize_rpath
10753*a67afe4dSAndroid Build Coastguard Worker	  relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
10754*a67afe4dSAndroid Build Coastguard Worker          ;;
10755*a67afe4dSAndroid Build Coastguard Worker	*,no)
10756*a67afe4dSAndroid Build Coastguard Worker	  link_command=$compile_var$compile_command$compile_rpath
10757*a67afe4dSAndroid Build Coastguard Worker	  relink_command=$finalize_var$finalize_command$finalize_rpath
10758*a67afe4dSAndroid Build Coastguard Worker          ;;
10759*a67afe4dSAndroid Build Coastguard Worker	*,needless)
10760*a67afe4dSAndroid Build Coastguard Worker	  link_command=$finalize_var$compile_command$finalize_rpath
10761*a67afe4dSAndroid Build Coastguard Worker	  relink_command=
10762*a67afe4dSAndroid Build Coastguard Worker          ;;
10763*a67afe4dSAndroid Build Coastguard Worker      esac
10764*a67afe4dSAndroid Build Coastguard Worker
10765*a67afe4dSAndroid Build Coastguard Worker      # Replace the output file specification.
10766*a67afe4dSAndroid Build Coastguard Worker      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
10767*a67afe4dSAndroid Build Coastguard Worker
10768*a67afe4dSAndroid Build Coastguard Worker      # Delete the old output files.
10769*a67afe4dSAndroid Build Coastguard Worker      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
10770*a67afe4dSAndroid Build Coastguard Worker
10771*a67afe4dSAndroid Build Coastguard Worker      func_show_eval "$link_command" 'exit $?'
10772*a67afe4dSAndroid Build Coastguard Worker
10773*a67afe4dSAndroid Build Coastguard Worker      if test -n "$postlink_cmds"; then
10774*a67afe4dSAndroid Build Coastguard Worker	func_to_tool_file "$output_objdir/$outputname"
10775*a67afe4dSAndroid Build Coastguard Worker	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'`
10776*a67afe4dSAndroid Build Coastguard Worker	func_execute_cmds "$postlink_cmds" 'exit $?'
10777*a67afe4dSAndroid Build Coastguard Worker      fi
10778*a67afe4dSAndroid Build Coastguard Worker
10779*a67afe4dSAndroid Build Coastguard Worker      # Now create the wrapper script.
10780*a67afe4dSAndroid Build Coastguard Worker      func_verbose "creating $output"
10781*a67afe4dSAndroid Build Coastguard Worker
10782*a67afe4dSAndroid Build Coastguard Worker      # Quote the relink command for shipping.
10783*a67afe4dSAndroid Build Coastguard Worker      if test -n "$relink_command"; then
10784*a67afe4dSAndroid Build Coastguard Worker	# Preserve any variables that may affect compiler behavior
10785*a67afe4dSAndroid Build Coastguard Worker	for var in $variables_saved_for_relink; do
10786*a67afe4dSAndroid Build Coastguard Worker	  if eval test -z \"\${$var+set}\"; then
10787*a67afe4dSAndroid Build Coastguard Worker	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
10788*a67afe4dSAndroid Build Coastguard Worker	  elif eval var_value=\$$var; test -z "$var_value"; then
10789*a67afe4dSAndroid Build Coastguard Worker	    relink_command="$var=; export $var; $relink_command"
10790*a67afe4dSAndroid Build Coastguard Worker	  else
10791*a67afe4dSAndroid Build Coastguard Worker	    func_quote_arg pretty "$var_value"
10792*a67afe4dSAndroid Build Coastguard Worker	    relink_command="$var=$func_quote_arg_result; export $var; $relink_command"
10793*a67afe4dSAndroid Build Coastguard Worker	  fi
10794*a67afe4dSAndroid Build Coastguard Worker	done
10795*a67afe4dSAndroid Build Coastguard Worker	func_quote eval cd "`pwd`"
10796*a67afe4dSAndroid Build Coastguard Worker	func_quote_arg pretty,unquoted "($func_quote_result; $relink_command)"
10797*a67afe4dSAndroid Build Coastguard Worker	relink_command=$func_quote_arg_unquoted_result
10798*a67afe4dSAndroid Build Coastguard Worker      fi
10799*a67afe4dSAndroid Build Coastguard Worker
10800*a67afe4dSAndroid Build Coastguard Worker      # Only actually do things if not in dry run mode.
10801*a67afe4dSAndroid Build Coastguard Worker      $opt_dry_run || {
10802*a67afe4dSAndroid Build Coastguard Worker	# win32 will think the script is a binary if it has
10803*a67afe4dSAndroid Build Coastguard Worker	# a .exe suffix, so we strip it off here.
10804*a67afe4dSAndroid Build Coastguard Worker	case $output in
10805*a67afe4dSAndroid Build Coastguard Worker	  *.exe) func_stripname '' '.exe' "$output"
10806*a67afe4dSAndroid Build Coastguard Worker	         output=$func_stripname_result ;;
10807*a67afe4dSAndroid Build Coastguard Worker	esac
10808*a67afe4dSAndroid Build Coastguard Worker	# test for cygwin because mv fails w/o .exe extensions
10809*a67afe4dSAndroid Build Coastguard Worker	case $host in
10810*a67afe4dSAndroid Build Coastguard Worker	  *cygwin*)
10811*a67afe4dSAndroid Build Coastguard Worker	    exeext=.exe
10812*a67afe4dSAndroid Build Coastguard Worker	    func_stripname '' '.exe' "$outputname"
10813*a67afe4dSAndroid Build Coastguard Worker	    outputname=$func_stripname_result ;;
10814*a67afe4dSAndroid Build Coastguard Worker	  *) exeext= ;;
10815*a67afe4dSAndroid Build Coastguard Worker	esac
10816*a67afe4dSAndroid Build Coastguard Worker	case $host in
10817*a67afe4dSAndroid Build Coastguard Worker	  *cygwin* | *mingw* )
10818*a67afe4dSAndroid Build Coastguard Worker	    func_dirname_and_basename "$output" "" "."
10819*a67afe4dSAndroid Build Coastguard Worker	    output_name=$func_basename_result
10820*a67afe4dSAndroid Build Coastguard Worker	    output_path=$func_dirname_result
10821*a67afe4dSAndroid Build Coastguard Worker	    cwrappersource=$output_path/$objdir/lt-$output_name.c
10822*a67afe4dSAndroid Build Coastguard Worker	    cwrapper=$output_path/$output_name.exe
10823*a67afe4dSAndroid Build Coastguard Worker	    $RM $cwrappersource $cwrapper
10824*a67afe4dSAndroid Build Coastguard Worker	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
10825*a67afe4dSAndroid Build Coastguard Worker
10826*a67afe4dSAndroid Build Coastguard Worker	    func_emit_cwrapperexe_src > $cwrappersource
10827*a67afe4dSAndroid Build Coastguard Worker
10828*a67afe4dSAndroid Build Coastguard Worker	    # The wrapper executable is built using the $host compiler,
10829*a67afe4dSAndroid Build Coastguard Worker	    # because it contains $host paths and files. If cross-
10830*a67afe4dSAndroid Build Coastguard Worker	    # compiling, it, like the target executable, must be
10831*a67afe4dSAndroid Build Coastguard Worker	    # executed on the $host or under an emulation environment.
10832*a67afe4dSAndroid Build Coastguard Worker	    $opt_dry_run || {
10833*a67afe4dSAndroid Build Coastguard Worker	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
10834*a67afe4dSAndroid Build Coastguard Worker	      $STRIP $cwrapper
10835*a67afe4dSAndroid Build Coastguard Worker	    }
10836*a67afe4dSAndroid Build Coastguard Worker
10837*a67afe4dSAndroid Build Coastguard Worker	    # Now, create the wrapper script for func_source use:
10838*a67afe4dSAndroid Build Coastguard Worker	    func_ltwrapper_scriptname $cwrapper
10839*a67afe4dSAndroid Build Coastguard Worker	    $RM $func_ltwrapper_scriptname_result
10840*a67afe4dSAndroid Build Coastguard Worker	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
10841*a67afe4dSAndroid Build Coastguard Worker	    $opt_dry_run || {
10842*a67afe4dSAndroid Build Coastguard Worker	      # note: this script will not be executed, so do not chmod.
10843*a67afe4dSAndroid Build Coastguard Worker	      if test "x$build" = "x$host"; then
10844*a67afe4dSAndroid Build Coastguard Worker		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
10845*a67afe4dSAndroid Build Coastguard Worker	      else
10846*a67afe4dSAndroid Build Coastguard Worker		func_emit_wrapper no > $func_ltwrapper_scriptname_result
10847*a67afe4dSAndroid Build Coastguard Worker	      fi
10848*a67afe4dSAndroid Build Coastguard Worker	    }
10849*a67afe4dSAndroid Build Coastguard Worker	  ;;
10850*a67afe4dSAndroid Build Coastguard Worker	  * )
10851*a67afe4dSAndroid Build Coastguard Worker	    $RM $output
10852*a67afe4dSAndroid Build Coastguard Worker	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
10853*a67afe4dSAndroid Build Coastguard Worker
10854*a67afe4dSAndroid Build Coastguard Worker	    func_emit_wrapper no > $output
10855*a67afe4dSAndroid Build Coastguard Worker	    chmod +x $output
10856*a67afe4dSAndroid Build Coastguard Worker	  ;;
10857*a67afe4dSAndroid Build Coastguard Worker	esac
10858*a67afe4dSAndroid Build Coastguard Worker      }
10859*a67afe4dSAndroid Build Coastguard Worker      exit $EXIT_SUCCESS
10860*a67afe4dSAndroid Build Coastguard Worker      ;;
10861*a67afe4dSAndroid Build Coastguard Worker    esac
10862*a67afe4dSAndroid Build Coastguard Worker
10863*a67afe4dSAndroid Build Coastguard Worker    # See if we need to build an old-fashioned archive.
10864*a67afe4dSAndroid Build Coastguard Worker    for oldlib in $oldlibs; do
10865*a67afe4dSAndroid Build Coastguard Worker
10866*a67afe4dSAndroid Build Coastguard Worker      case $build_libtool_libs in
10867*a67afe4dSAndroid Build Coastguard Worker        convenience)
10868*a67afe4dSAndroid Build Coastguard Worker	  oldobjs="$libobjs_save $symfileobj"
10869*a67afe4dSAndroid Build Coastguard Worker	  addlibs=$convenience
10870*a67afe4dSAndroid Build Coastguard Worker	  build_libtool_libs=no
10871*a67afe4dSAndroid Build Coastguard Worker	  ;;
10872*a67afe4dSAndroid Build Coastguard Worker	module)
10873*a67afe4dSAndroid Build Coastguard Worker	  oldobjs=$libobjs_save
10874*a67afe4dSAndroid Build Coastguard Worker	  addlibs=$old_convenience
10875*a67afe4dSAndroid Build Coastguard Worker	  build_libtool_libs=no
10876*a67afe4dSAndroid Build Coastguard Worker          ;;
10877*a67afe4dSAndroid Build Coastguard Worker	*)
10878*a67afe4dSAndroid Build Coastguard Worker	  oldobjs="$old_deplibs $non_pic_objects"
10879*a67afe4dSAndroid Build Coastguard Worker	  $preload && test -f "$symfileobj" \
10880*a67afe4dSAndroid Build Coastguard Worker	    && func_append oldobjs " $symfileobj"
10881*a67afe4dSAndroid Build Coastguard Worker	  addlibs=$old_convenience
10882*a67afe4dSAndroid Build Coastguard Worker	  ;;
10883*a67afe4dSAndroid Build Coastguard Worker      esac
10884*a67afe4dSAndroid Build Coastguard Worker
10885*a67afe4dSAndroid Build Coastguard Worker      if test -n "$addlibs"; then
10886*a67afe4dSAndroid Build Coastguard Worker	gentop=$output_objdir/${outputname}x
10887*a67afe4dSAndroid Build Coastguard Worker	func_append generated " $gentop"
10888*a67afe4dSAndroid Build Coastguard Worker
10889*a67afe4dSAndroid Build Coastguard Worker	func_extract_archives $gentop $addlibs
10890*a67afe4dSAndroid Build Coastguard Worker	func_append oldobjs " $func_extract_archives_result"
10891*a67afe4dSAndroid Build Coastguard Worker      fi
10892*a67afe4dSAndroid Build Coastguard Worker
10893*a67afe4dSAndroid Build Coastguard Worker      # Do each command in the archive commands.
10894*a67afe4dSAndroid Build Coastguard Worker      if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then
10895*a67afe4dSAndroid Build Coastguard Worker	cmds=$old_archive_from_new_cmds
10896*a67afe4dSAndroid Build Coastguard Worker      else
10897*a67afe4dSAndroid Build Coastguard Worker
10898*a67afe4dSAndroid Build Coastguard Worker	# Add any objects from preloaded convenience libraries
10899*a67afe4dSAndroid Build Coastguard Worker	if test -n "$dlprefiles"; then
10900*a67afe4dSAndroid Build Coastguard Worker	  gentop=$output_objdir/${outputname}x
10901*a67afe4dSAndroid Build Coastguard Worker	  func_append generated " $gentop"
10902*a67afe4dSAndroid Build Coastguard Worker
10903*a67afe4dSAndroid Build Coastguard Worker	  func_extract_archives $gentop $dlprefiles
10904*a67afe4dSAndroid Build Coastguard Worker	  func_append oldobjs " $func_extract_archives_result"
10905*a67afe4dSAndroid Build Coastguard Worker	fi
10906*a67afe4dSAndroid Build Coastguard Worker
10907*a67afe4dSAndroid Build Coastguard Worker	# POSIX demands no paths to be encoded in archives.  We have
10908*a67afe4dSAndroid Build Coastguard Worker	# to avoid creating archives with duplicate basenames if we
10909*a67afe4dSAndroid Build Coastguard Worker	# might have to extract them afterwards, e.g., when creating a
10910*a67afe4dSAndroid Build Coastguard Worker	# static archive out of a convenience library, or when linking
10911*a67afe4dSAndroid Build Coastguard Worker	# the entirety of a libtool archive into another (currently
10912*a67afe4dSAndroid Build Coastguard Worker	# not supported by libtool).
10913*a67afe4dSAndroid Build Coastguard Worker	if (for obj in $oldobjs
10914*a67afe4dSAndroid Build Coastguard Worker	    do
10915*a67afe4dSAndroid Build Coastguard Worker	      func_basename "$obj"
10916*a67afe4dSAndroid Build Coastguard Worker	      $ECHO "$func_basename_result"
10917*a67afe4dSAndroid Build Coastguard Worker	    done | sort | sort -uc >/dev/null 2>&1); then
10918*a67afe4dSAndroid Build Coastguard Worker	  :
10919*a67afe4dSAndroid Build Coastguard Worker	else
10920*a67afe4dSAndroid Build Coastguard Worker	  echo "copying selected object files to avoid basename conflicts..."
10921*a67afe4dSAndroid Build Coastguard Worker	  gentop=$output_objdir/${outputname}x
10922*a67afe4dSAndroid Build Coastguard Worker	  func_append generated " $gentop"
10923*a67afe4dSAndroid Build Coastguard Worker	  func_mkdir_p "$gentop"
10924*a67afe4dSAndroid Build Coastguard Worker	  save_oldobjs=$oldobjs
10925*a67afe4dSAndroid Build Coastguard Worker	  oldobjs=
10926*a67afe4dSAndroid Build Coastguard Worker	  counter=1
10927*a67afe4dSAndroid Build Coastguard Worker	  for obj in $save_oldobjs
10928*a67afe4dSAndroid Build Coastguard Worker	  do
10929*a67afe4dSAndroid Build Coastguard Worker	    func_basename "$obj"
10930*a67afe4dSAndroid Build Coastguard Worker	    objbase=$func_basename_result
10931*a67afe4dSAndroid Build Coastguard Worker	    case " $oldobjs " in
10932*a67afe4dSAndroid Build Coastguard Worker	    " ") oldobjs=$obj ;;
10933*a67afe4dSAndroid Build Coastguard Worker	    *[\ /]"$objbase "*)
10934*a67afe4dSAndroid Build Coastguard Worker	      while :; do
10935*a67afe4dSAndroid Build Coastguard Worker		# Make sure we don't pick an alternate name that also
10936*a67afe4dSAndroid Build Coastguard Worker		# overlaps.
10937*a67afe4dSAndroid Build Coastguard Worker		newobj=lt$counter-$objbase
10938*a67afe4dSAndroid Build Coastguard Worker		func_arith $counter + 1
10939*a67afe4dSAndroid Build Coastguard Worker		counter=$func_arith_result
10940*a67afe4dSAndroid Build Coastguard Worker		case " $oldobjs " in
10941*a67afe4dSAndroid Build Coastguard Worker		*[\ /]"$newobj "*) ;;
10942*a67afe4dSAndroid Build Coastguard Worker		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
10943*a67afe4dSAndroid Build Coastguard Worker		esac
10944*a67afe4dSAndroid Build Coastguard Worker	      done
10945*a67afe4dSAndroid Build Coastguard Worker	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
10946*a67afe4dSAndroid Build Coastguard Worker	      func_append oldobjs " $gentop/$newobj"
10947*a67afe4dSAndroid Build Coastguard Worker	      ;;
10948*a67afe4dSAndroid Build Coastguard Worker	    *) func_append oldobjs " $obj" ;;
10949*a67afe4dSAndroid Build Coastguard Worker	    esac
10950*a67afe4dSAndroid Build Coastguard Worker	  done
10951*a67afe4dSAndroid Build Coastguard Worker	fi
10952*a67afe4dSAndroid Build Coastguard Worker	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
10953*a67afe4dSAndroid Build Coastguard Worker	tool_oldlib=$func_to_tool_file_result
10954*a67afe4dSAndroid Build Coastguard Worker	eval cmds=\"$old_archive_cmds\"
10955*a67afe4dSAndroid Build Coastguard Worker
10956*a67afe4dSAndroid Build Coastguard Worker	func_len " $cmds"
10957*a67afe4dSAndroid Build Coastguard Worker	len=$func_len_result
10958*a67afe4dSAndroid Build Coastguard Worker	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
10959*a67afe4dSAndroid Build Coastguard Worker	  cmds=$old_archive_cmds
10960*a67afe4dSAndroid Build Coastguard Worker	elif test -n "$archiver_list_spec"; then
10961*a67afe4dSAndroid Build Coastguard Worker	  func_verbose "using command file archive linking..."
10962*a67afe4dSAndroid Build Coastguard Worker	  for obj in $oldobjs
10963*a67afe4dSAndroid Build Coastguard Worker	  do
10964*a67afe4dSAndroid Build Coastguard Worker	    func_to_tool_file "$obj"
10965*a67afe4dSAndroid Build Coastguard Worker	    $ECHO "$func_to_tool_file_result"
10966*a67afe4dSAndroid Build Coastguard Worker	  done > $output_objdir/$libname.libcmd
10967*a67afe4dSAndroid Build Coastguard Worker	  func_to_tool_file "$output_objdir/$libname.libcmd"
10968*a67afe4dSAndroid Build Coastguard Worker	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
10969*a67afe4dSAndroid Build Coastguard Worker	  cmds=$old_archive_cmds
10970*a67afe4dSAndroid Build Coastguard Worker	else
10971*a67afe4dSAndroid Build Coastguard Worker	  # the command line is too long to link in one step, link in parts
10972*a67afe4dSAndroid Build Coastguard Worker	  func_verbose "using piecewise archive linking..."
10973*a67afe4dSAndroid Build Coastguard Worker	  save_RANLIB=$RANLIB
10974*a67afe4dSAndroid Build Coastguard Worker	  RANLIB=:
10975*a67afe4dSAndroid Build Coastguard Worker	  objlist=
10976*a67afe4dSAndroid Build Coastguard Worker	  concat_cmds=
10977*a67afe4dSAndroid Build Coastguard Worker	  save_oldobjs=$oldobjs
10978*a67afe4dSAndroid Build Coastguard Worker	  oldobjs=
10979*a67afe4dSAndroid Build Coastguard Worker	  # Is there a better way of finding the last object in the list?
10980*a67afe4dSAndroid Build Coastguard Worker	  for obj in $save_oldobjs
10981*a67afe4dSAndroid Build Coastguard Worker	  do
10982*a67afe4dSAndroid Build Coastguard Worker	    last_oldobj=$obj
10983*a67afe4dSAndroid Build Coastguard Worker	  done
10984*a67afe4dSAndroid Build Coastguard Worker	  eval test_cmds=\"$old_archive_cmds\"
10985*a67afe4dSAndroid Build Coastguard Worker	  func_len " $test_cmds"
10986*a67afe4dSAndroid Build Coastguard Worker	  len0=$func_len_result
10987*a67afe4dSAndroid Build Coastguard Worker	  len=$len0
10988*a67afe4dSAndroid Build Coastguard Worker	  for obj in $save_oldobjs
10989*a67afe4dSAndroid Build Coastguard Worker	  do
10990*a67afe4dSAndroid Build Coastguard Worker	    func_len " $obj"
10991*a67afe4dSAndroid Build Coastguard Worker	    func_arith $len + $func_len_result
10992*a67afe4dSAndroid Build Coastguard Worker	    len=$func_arith_result
10993*a67afe4dSAndroid Build Coastguard Worker	    func_append objlist " $obj"
10994*a67afe4dSAndroid Build Coastguard Worker	    if test "$len" -lt "$max_cmd_len"; then
10995*a67afe4dSAndroid Build Coastguard Worker	      :
10996*a67afe4dSAndroid Build Coastguard Worker	    else
10997*a67afe4dSAndroid Build Coastguard Worker	      # the above command should be used before it gets too long
10998*a67afe4dSAndroid Build Coastguard Worker	      oldobjs=$objlist
10999*a67afe4dSAndroid Build Coastguard Worker	      if test "$obj" = "$last_oldobj"; then
11000*a67afe4dSAndroid Build Coastguard Worker		RANLIB=$save_RANLIB
11001*a67afe4dSAndroid Build Coastguard Worker	      fi
11002*a67afe4dSAndroid Build Coastguard Worker	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
11003*a67afe4dSAndroid Build Coastguard Worker	      eval concat_cmds=\"\$concat_cmds$old_archive_cmds\"
11004*a67afe4dSAndroid Build Coastguard Worker	      objlist=
11005*a67afe4dSAndroid Build Coastguard Worker	      len=$len0
11006*a67afe4dSAndroid Build Coastguard Worker	    fi
11007*a67afe4dSAndroid Build Coastguard Worker	  done
11008*a67afe4dSAndroid Build Coastguard Worker	  RANLIB=$save_RANLIB
11009*a67afe4dSAndroid Build Coastguard Worker	  oldobjs=$objlist
11010*a67afe4dSAndroid Build Coastguard Worker	  if test -z "$oldobjs"; then
11011*a67afe4dSAndroid Build Coastguard Worker	    eval cmds=\"\$concat_cmds\"
11012*a67afe4dSAndroid Build Coastguard Worker	  else
11013*a67afe4dSAndroid Build Coastguard Worker	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
11014*a67afe4dSAndroid Build Coastguard Worker	  fi
11015*a67afe4dSAndroid Build Coastguard Worker	fi
11016*a67afe4dSAndroid Build Coastguard Worker      fi
11017*a67afe4dSAndroid Build Coastguard Worker      func_execute_cmds "$cmds" 'exit $?'
11018*a67afe4dSAndroid Build Coastguard Worker    done
11019*a67afe4dSAndroid Build Coastguard Worker
11020*a67afe4dSAndroid Build Coastguard Worker    test -n "$generated" && \
11021*a67afe4dSAndroid Build Coastguard Worker      func_show_eval "${RM}r$generated"
11022*a67afe4dSAndroid Build Coastguard Worker
11023*a67afe4dSAndroid Build Coastguard Worker    # Now create the libtool archive.
11024*a67afe4dSAndroid Build Coastguard Worker    case $output in
11025*a67afe4dSAndroid Build Coastguard Worker    *.la)
11026*a67afe4dSAndroid Build Coastguard Worker      old_library=
11027*a67afe4dSAndroid Build Coastguard Worker      test yes = "$build_old_libs" && old_library=$libname.$libext
11028*a67afe4dSAndroid Build Coastguard Worker      func_verbose "creating $output"
11029*a67afe4dSAndroid Build Coastguard Worker
11030*a67afe4dSAndroid Build Coastguard Worker      # Preserve any variables that may affect compiler behavior
11031*a67afe4dSAndroid Build Coastguard Worker      for var in $variables_saved_for_relink; do
11032*a67afe4dSAndroid Build Coastguard Worker	if eval test -z \"\${$var+set}\"; then
11033*a67afe4dSAndroid Build Coastguard Worker	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
11034*a67afe4dSAndroid Build Coastguard Worker	elif eval var_value=\$$var; test -z "$var_value"; then
11035*a67afe4dSAndroid Build Coastguard Worker	  relink_command="$var=; export $var; $relink_command"
11036*a67afe4dSAndroid Build Coastguard Worker	else
11037*a67afe4dSAndroid Build Coastguard Worker	  func_quote_arg pretty,unquoted "$var_value"
11038*a67afe4dSAndroid Build Coastguard Worker	  relink_command="$var=$func_quote_arg_unquoted_result; export $var; $relink_command"
11039*a67afe4dSAndroid Build Coastguard Worker	fi
11040*a67afe4dSAndroid Build Coastguard Worker      done
11041*a67afe4dSAndroid Build Coastguard Worker      # Quote the link command for shipping.
11042*a67afe4dSAndroid Build Coastguard Worker      func_quote eval cd "`pwd`"
11043*a67afe4dSAndroid Build Coastguard Worker      relink_command="($func_quote_result; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
11044*a67afe4dSAndroid Build Coastguard Worker      func_quote_arg pretty,unquoted "$relink_command"
11045*a67afe4dSAndroid Build Coastguard Worker      relink_command=$func_quote_arg_unquoted_result
11046*a67afe4dSAndroid Build Coastguard Worker      if test yes = "$hardcode_automatic"; then
11047*a67afe4dSAndroid Build Coastguard Worker	relink_command=
11048*a67afe4dSAndroid Build Coastguard Worker      fi
11049*a67afe4dSAndroid Build Coastguard Worker
11050*a67afe4dSAndroid Build Coastguard Worker      # Only create the output if not a dry run.
11051*a67afe4dSAndroid Build Coastguard Worker      $opt_dry_run || {
11052*a67afe4dSAndroid Build Coastguard Worker	for installed in no yes; do
11053*a67afe4dSAndroid Build Coastguard Worker	  if test yes = "$installed"; then
11054*a67afe4dSAndroid Build Coastguard Worker	    if test -z "$install_libdir"; then
11055*a67afe4dSAndroid Build Coastguard Worker	      break
11056*a67afe4dSAndroid Build Coastguard Worker	    fi
11057*a67afe4dSAndroid Build Coastguard Worker	    output=$output_objdir/${outputname}i
11058*a67afe4dSAndroid Build Coastguard Worker	    # Replace all uninstalled libtool libraries with the installed ones
11059*a67afe4dSAndroid Build Coastguard Worker	    newdependency_libs=
11060*a67afe4dSAndroid Build Coastguard Worker	    for deplib in $dependency_libs; do
11061*a67afe4dSAndroid Build Coastguard Worker	      case $deplib in
11062*a67afe4dSAndroid Build Coastguard Worker	      *.la)
11063*a67afe4dSAndroid Build Coastguard Worker		func_basename "$deplib"
11064*a67afe4dSAndroid Build Coastguard Worker		name=$func_basename_result
11065*a67afe4dSAndroid Build Coastguard Worker		func_resolve_sysroot "$deplib"
11066*a67afe4dSAndroid Build Coastguard Worker		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
11067*a67afe4dSAndroid Build Coastguard Worker		test -z "$libdir" && \
11068*a67afe4dSAndroid Build Coastguard Worker		  func_fatal_error "'$deplib' is not a valid libtool archive"
11069*a67afe4dSAndroid Build Coastguard Worker		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
11070*a67afe4dSAndroid Build Coastguard Worker		;;
11071*a67afe4dSAndroid Build Coastguard Worker	      -L*)
11072*a67afe4dSAndroid Build Coastguard Worker		func_stripname -L '' "$deplib"
11073*a67afe4dSAndroid Build Coastguard Worker		func_replace_sysroot "$func_stripname_result"
11074*a67afe4dSAndroid Build Coastguard Worker		func_append newdependency_libs " -L$func_replace_sysroot_result"
11075*a67afe4dSAndroid Build Coastguard Worker		;;
11076*a67afe4dSAndroid Build Coastguard Worker	      -R*)
11077*a67afe4dSAndroid Build Coastguard Worker		func_stripname -R '' "$deplib"
11078*a67afe4dSAndroid Build Coastguard Worker		func_replace_sysroot "$func_stripname_result"
11079*a67afe4dSAndroid Build Coastguard Worker		func_append newdependency_libs " -R$func_replace_sysroot_result"
11080*a67afe4dSAndroid Build Coastguard Worker		;;
11081*a67afe4dSAndroid Build Coastguard Worker	      *) func_append newdependency_libs " $deplib" ;;
11082*a67afe4dSAndroid Build Coastguard Worker	      esac
11083*a67afe4dSAndroid Build Coastguard Worker	    done
11084*a67afe4dSAndroid Build Coastguard Worker	    dependency_libs=$newdependency_libs
11085*a67afe4dSAndroid Build Coastguard Worker	    newdlfiles=
11086*a67afe4dSAndroid Build Coastguard Worker
11087*a67afe4dSAndroid Build Coastguard Worker	    for lib in $dlfiles; do
11088*a67afe4dSAndroid Build Coastguard Worker	      case $lib in
11089*a67afe4dSAndroid Build Coastguard Worker	      *.la)
11090*a67afe4dSAndroid Build Coastguard Worker	        func_basename "$lib"
11091*a67afe4dSAndroid Build Coastguard Worker		name=$func_basename_result
11092*a67afe4dSAndroid Build Coastguard Worker		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
11093*a67afe4dSAndroid Build Coastguard Worker		test -z "$libdir" && \
11094*a67afe4dSAndroid Build Coastguard Worker		  func_fatal_error "'$lib' is not a valid libtool archive"
11095*a67afe4dSAndroid Build Coastguard Worker		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
11096*a67afe4dSAndroid Build Coastguard Worker		;;
11097*a67afe4dSAndroid Build Coastguard Worker	      *) func_append newdlfiles " $lib" ;;
11098*a67afe4dSAndroid Build Coastguard Worker	      esac
11099*a67afe4dSAndroid Build Coastguard Worker	    done
11100*a67afe4dSAndroid Build Coastguard Worker	    dlfiles=$newdlfiles
11101*a67afe4dSAndroid Build Coastguard Worker	    newdlprefiles=
11102*a67afe4dSAndroid Build Coastguard Worker	    for lib in $dlprefiles; do
11103*a67afe4dSAndroid Build Coastguard Worker	      case $lib in
11104*a67afe4dSAndroid Build Coastguard Worker	      *.la)
11105*a67afe4dSAndroid Build Coastguard Worker		# Only pass preopened files to the pseudo-archive (for
11106*a67afe4dSAndroid Build Coastguard Worker		# eventual linking with the app. that links it) if we
11107*a67afe4dSAndroid Build Coastguard Worker		# didn't already link the preopened objects directly into
11108*a67afe4dSAndroid Build Coastguard Worker		# the library:
11109*a67afe4dSAndroid Build Coastguard Worker		func_basename "$lib"
11110*a67afe4dSAndroid Build Coastguard Worker		name=$func_basename_result
11111*a67afe4dSAndroid Build Coastguard Worker		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
11112*a67afe4dSAndroid Build Coastguard Worker		test -z "$libdir" && \
11113*a67afe4dSAndroid Build Coastguard Worker		  func_fatal_error "'$lib' is not a valid libtool archive"
11114*a67afe4dSAndroid Build Coastguard Worker		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
11115*a67afe4dSAndroid Build Coastguard Worker		;;
11116*a67afe4dSAndroid Build Coastguard Worker	      esac
11117*a67afe4dSAndroid Build Coastguard Worker	    done
11118*a67afe4dSAndroid Build Coastguard Worker	    dlprefiles=$newdlprefiles
11119*a67afe4dSAndroid Build Coastguard Worker	  else
11120*a67afe4dSAndroid Build Coastguard Worker	    newdlfiles=
11121*a67afe4dSAndroid Build Coastguard Worker	    for lib in $dlfiles; do
11122*a67afe4dSAndroid Build Coastguard Worker	      case $lib in
11123*a67afe4dSAndroid Build Coastguard Worker		[\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
11124*a67afe4dSAndroid Build Coastguard Worker		*) abs=`pwd`"/$lib" ;;
11125*a67afe4dSAndroid Build Coastguard Worker	      esac
11126*a67afe4dSAndroid Build Coastguard Worker	      func_append newdlfiles " $abs"
11127*a67afe4dSAndroid Build Coastguard Worker	    done
11128*a67afe4dSAndroid Build Coastguard Worker	    dlfiles=$newdlfiles
11129*a67afe4dSAndroid Build Coastguard Worker	    newdlprefiles=
11130*a67afe4dSAndroid Build Coastguard Worker	    for lib in $dlprefiles; do
11131*a67afe4dSAndroid Build Coastguard Worker	      case $lib in
11132*a67afe4dSAndroid Build Coastguard Worker		[\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
11133*a67afe4dSAndroid Build Coastguard Worker		*) abs=`pwd`"/$lib" ;;
11134*a67afe4dSAndroid Build Coastguard Worker	      esac
11135*a67afe4dSAndroid Build Coastguard Worker	      func_append newdlprefiles " $abs"
11136*a67afe4dSAndroid Build Coastguard Worker	    done
11137*a67afe4dSAndroid Build Coastguard Worker	    dlprefiles=$newdlprefiles
11138*a67afe4dSAndroid Build Coastguard Worker	  fi
11139*a67afe4dSAndroid Build Coastguard Worker	  $RM $output
11140*a67afe4dSAndroid Build Coastguard Worker	  # place dlname in correct position for cygwin
11141*a67afe4dSAndroid Build Coastguard Worker	  # In fact, it would be nice if we could use this code for all target
11142*a67afe4dSAndroid Build Coastguard Worker	  # systems that can't hard-code library paths into their executables
11143*a67afe4dSAndroid Build Coastguard Worker	  # and that have no shared library path variable independent of PATH,
11144*a67afe4dSAndroid Build Coastguard Worker	  # but it turns out we can't easily determine that from inspecting
11145*a67afe4dSAndroid Build Coastguard Worker	  # libtool variables, so we have to hard-code the OSs to which it
11146*a67afe4dSAndroid Build Coastguard Worker	  # applies here; at the moment, that means platforms that use the PE
11147*a67afe4dSAndroid Build Coastguard Worker	  # object format with DLL files.  See the long comment at the top of
11148*a67afe4dSAndroid Build Coastguard Worker	  # tests/bindir.at for full details.
11149*a67afe4dSAndroid Build Coastguard Worker	  tdlname=$dlname
11150*a67afe4dSAndroid Build Coastguard Worker	  case $host,$output,$installed,$module,$dlname in
11151*a67afe4dSAndroid Build Coastguard Worker	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
11152*a67afe4dSAndroid Build Coastguard Worker	      # If a -bindir argument was supplied, place the dll there.
11153*a67afe4dSAndroid Build Coastguard Worker	      if test -n "$bindir"; then
11154*a67afe4dSAndroid Build Coastguard Worker		func_relative_path "$install_libdir" "$bindir"
11155*a67afe4dSAndroid Build Coastguard Worker		tdlname=$func_relative_path_result/$dlname
11156*a67afe4dSAndroid Build Coastguard Worker	      else
11157*a67afe4dSAndroid Build Coastguard Worker		# Otherwise fall back on heuristic.
11158*a67afe4dSAndroid Build Coastguard Worker		tdlname=../bin/$dlname
11159*a67afe4dSAndroid Build Coastguard Worker	      fi
11160*a67afe4dSAndroid Build Coastguard Worker	      ;;
11161*a67afe4dSAndroid Build Coastguard Worker	  esac
11162*a67afe4dSAndroid Build Coastguard Worker	  $ECHO > $output "\
11163*a67afe4dSAndroid Build Coastguard Worker# $outputname - a libtool library file
11164*a67afe4dSAndroid Build Coastguard Worker# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
11165*a67afe4dSAndroid Build Coastguard Worker#
11166*a67afe4dSAndroid Build Coastguard Worker# Please DO NOT delete this file!
11167*a67afe4dSAndroid Build Coastguard Worker# It is necessary for linking the library.
11168*a67afe4dSAndroid Build Coastguard Worker
11169*a67afe4dSAndroid Build Coastguard Worker# The name that we can dlopen(3).
11170*a67afe4dSAndroid Build Coastguard Workerdlname='$tdlname'
11171*a67afe4dSAndroid Build Coastguard Worker
11172*a67afe4dSAndroid Build Coastguard Worker# Names of this library.
11173*a67afe4dSAndroid Build Coastguard Workerlibrary_names='$library_names'
11174*a67afe4dSAndroid Build Coastguard Worker
11175*a67afe4dSAndroid Build Coastguard Worker# The name of the static archive.
11176*a67afe4dSAndroid Build Coastguard Workerold_library='$old_library'
11177*a67afe4dSAndroid Build Coastguard Worker
11178*a67afe4dSAndroid Build Coastguard Worker# Linker flags that cannot go in dependency_libs.
11179*a67afe4dSAndroid Build Coastguard Workerinherited_linker_flags='$new_inherited_linker_flags'
11180*a67afe4dSAndroid Build Coastguard Worker
11181*a67afe4dSAndroid Build Coastguard Worker# Libraries that this one depends upon.
11182*a67afe4dSAndroid Build Coastguard Workerdependency_libs='$dependency_libs'
11183*a67afe4dSAndroid Build Coastguard Worker
11184*a67afe4dSAndroid Build Coastguard Worker# Names of additional weak libraries provided by this library
11185*a67afe4dSAndroid Build Coastguard Workerweak_library_names='$weak_libs'
11186*a67afe4dSAndroid Build Coastguard Worker
11187*a67afe4dSAndroid Build Coastguard Worker# Version information for $libname.
11188*a67afe4dSAndroid Build Coastguard Workercurrent=$current
11189*a67afe4dSAndroid Build Coastguard Workerage=$age
11190*a67afe4dSAndroid Build Coastguard Workerrevision=$revision
11191*a67afe4dSAndroid Build Coastguard Worker
11192*a67afe4dSAndroid Build Coastguard Worker# Is this an already installed library?
11193*a67afe4dSAndroid Build Coastguard Workerinstalled=$installed
11194*a67afe4dSAndroid Build Coastguard Worker
11195*a67afe4dSAndroid Build Coastguard Worker# Should we warn about portability when linking against -modules?
11196*a67afe4dSAndroid Build Coastguard Workershouldnotlink=$module
11197*a67afe4dSAndroid Build Coastguard Worker
11198*a67afe4dSAndroid Build Coastguard Worker# Files to dlopen/dlpreopen
11199*a67afe4dSAndroid Build Coastguard Workerdlopen='$dlfiles'
11200*a67afe4dSAndroid Build Coastguard Workerdlpreopen='$dlprefiles'
11201*a67afe4dSAndroid Build Coastguard Worker
11202*a67afe4dSAndroid Build Coastguard Worker# Directory that this library needs to be installed in:
11203*a67afe4dSAndroid Build Coastguard Workerlibdir='$install_libdir'"
11204*a67afe4dSAndroid Build Coastguard Worker	  if test no,yes = "$installed,$need_relink"; then
11205*a67afe4dSAndroid Build Coastguard Worker	    $ECHO >> $output "\
11206*a67afe4dSAndroid Build Coastguard Workerrelink_command=\"$relink_command\""
11207*a67afe4dSAndroid Build Coastguard Worker	  fi
11208*a67afe4dSAndroid Build Coastguard Worker	done
11209*a67afe4dSAndroid Build Coastguard Worker      }
11210*a67afe4dSAndroid Build Coastguard Worker
11211*a67afe4dSAndroid Build Coastguard Worker      # Do a symbolic link so that the libtool archive can be found in
11212*a67afe4dSAndroid Build Coastguard Worker      # LD_LIBRARY_PATH before the program is installed.
11213*a67afe4dSAndroid Build Coastguard Worker      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
11214*a67afe4dSAndroid Build Coastguard Worker      ;;
11215*a67afe4dSAndroid Build Coastguard Worker    esac
11216*a67afe4dSAndroid Build Coastguard Worker    exit $EXIT_SUCCESS
11217*a67afe4dSAndroid Build Coastguard Worker}
11218*a67afe4dSAndroid Build Coastguard Worker
11219*a67afe4dSAndroid Build Coastguard Workerif test link = "$opt_mode" || test relink = "$opt_mode"; then
11220*a67afe4dSAndroid Build Coastguard Worker  func_mode_link ${1+"$@"}
11221*a67afe4dSAndroid Build Coastguard Workerfi
11222*a67afe4dSAndroid Build Coastguard Worker
11223*a67afe4dSAndroid Build Coastguard Worker
11224*a67afe4dSAndroid Build Coastguard Worker# func_mode_uninstall arg...
11225*a67afe4dSAndroid Build Coastguard Workerfunc_mode_uninstall ()
11226*a67afe4dSAndroid Build Coastguard Worker{
11227*a67afe4dSAndroid Build Coastguard Worker    $debug_cmd
11228*a67afe4dSAndroid Build Coastguard Worker
11229*a67afe4dSAndroid Build Coastguard Worker    RM=$nonopt
11230*a67afe4dSAndroid Build Coastguard Worker    files=
11231*a67afe4dSAndroid Build Coastguard Worker    rmforce=false
11232*a67afe4dSAndroid Build Coastguard Worker    exit_status=0
11233*a67afe4dSAndroid Build Coastguard Worker
11234*a67afe4dSAndroid Build Coastguard Worker    # This variable tells wrapper scripts just to set variables rather
11235*a67afe4dSAndroid Build Coastguard Worker    # than running their programs.
11236*a67afe4dSAndroid Build Coastguard Worker    libtool_install_magic=$magic
11237*a67afe4dSAndroid Build Coastguard Worker
11238*a67afe4dSAndroid Build Coastguard Worker    for arg
11239*a67afe4dSAndroid Build Coastguard Worker    do
11240*a67afe4dSAndroid Build Coastguard Worker      case $arg in
11241*a67afe4dSAndroid Build Coastguard Worker      -f) func_append RM " $arg"; rmforce=: ;;
11242*a67afe4dSAndroid Build Coastguard Worker      -*) func_append RM " $arg" ;;
11243*a67afe4dSAndroid Build Coastguard Worker      *) func_append files " $arg" ;;
11244*a67afe4dSAndroid Build Coastguard Worker      esac
11245*a67afe4dSAndroid Build Coastguard Worker    done
11246*a67afe4dSAndroid Build Coastguard Worker
11247*a67afe4dSAndroid Build Coastguard Worker    test -z "$RM" && \
11248*a67afe4dSAndroid Build Coastguard Worker      func_fatal_help "you must specify an RM program"
11249*a67afe4dSAndroid Build Coastguard Worker
11250*a67afe4dSAndroid Build Coastguard Worker    rmdirs=
11251*a67afe4dSAndroid Build Coastguard Worker
11252*a67afe4dSAndroid Build Coastguard Worker    for file in $files; do
11253*a67afe4dSAndroid Build Coastguard Worker      func_dirname "$file" "" "."
11254*a67afe4dSAndroid Build Coastguard Worker      dir=$func_dirname_result
11255*a67afe4dSAndroid Build Coastguard Worker      if test . = "$dir"; then
11256*a67afe4dSAndroid Build Coastguard Worker	odir=$objdir
11257*a67afe4dSAndroid Build Coastguard Worker      else
11258*a67afe4dSAndroid Build Coastguard Worker	odir=$dir/$objdir
11259*a67afe4dSAndroid Build Coastguard Worker      fi
11260*a67afe4dSAndroid Build Coastguard Worker      func_basename "$file"
11261*a67afe4dSAndroid Build Coastguard Worker      name=$func_basename_result
11262*a67afe4dSAndroid Build Coastguard Worker      test uninstall = "$opt_mode" && odir=$dir
11263*a67afe4dSAndroid Build Coastguard Worker
11264*a67afe4dSAndroid Build Coastguard Worker      # Remember odir for removal later, being careful to avoid duplicates
11265*a67afe4dSAndroid Build Coastguard Worker      if test clean = "$opt_mode"; then
11266*a67afe4dSAndroid Build Coastguard Worker	case " $rmdirs " in
11267*a67afe4dSAndroid Build Coastguard Worker	  *" $odir "*) ;;
11268*a67afe4dSAndroid Build Coastguard Worker	  *) func_append rmdirs " $odir" ;;
11269*a67afe4dSAndroid Build Coastguard Worker	esac
11270*a67afe4dSAndroid Build Coastguard Worker      fi
11271*a67afe4dSAndroid Build Coastguard Worker
11272*a67afe4dSAndroid Build Coastguard Worker      # Don't error if the file doesn't exist and rm -f was used.
11273*a67afe4dSAndroid Build Coastguard Worker      if { test -L "$file"; } >/dev/null 2>&1 ||
11274*a67afe4dSAndroid Build Coastguard Worker	 { test -h "$file"; } >/dev/null 2>&1 ||
11275*a67afe4dSAndroid Build Coastguard Worker	 test -f "$file"; then
11276*a67afe4dSAndroid Build Coastguard Worker	:
11277*a67afe4dSAndroid Build Coastguard Worker      elif test -d "$file"; then
11278*a67afe4dSAndroid Build Coastguard Worker	exit_status=1
11279*a67afe4dSAndroid Build Coastguard Worker	continue
11280*a67afe4dSAndroid Build Coastguard Worker      elif $rmforce; then
11281*a67afe4dSAndroid Build Coastguard Worker	continue
11282*a67afe4dSAndroid Build Coastguard Worker      fi
11283*a67afe4dSAndroid Build Coastguard Worker
11284*a67afe4dSAndroid Build Coastguard Worker      rmfiles=$file
11285*a67afe4dSAndroid Build Coastguard Worker
11286*a67afe4dSAndroid Build Coastguard Worker      case $name in
11287*a67afe4dSAndroid Build Coastguard Worker      *.la)
11288*a67afe4dSAndroid Build Coastguard Worker	# Possibly a libtool archive, so verify it.
11289*a67afe4dSAndroid Build Coastguard Worker	if func_lalib_p "$file"; then
11290*a67afe4dSAndroid Build Coastguard Worker	  func_source $dir/$name
11291*a67afe4dSAndroid Build Coastguard Worker
11292*a67afe4dSAndroid Build Coastguard Worker	  # Delete the libtool libraries and symlinks.
11293*a67afe4dSAndroid Build Coastguard Worker	  for n in $library_names; do
11294*a67afe4dSAndroid Build Coastguard Worker	    func_append rmfiles " $odir/$n"
11295*a67afe4dSAndroid Build Coastguard Worker	  done
11296*a67afe4dSAndroid Build Coastguard Worker	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
11297*a67afe4dSAndroid Build Coastguard Worker
11298*a67afe4dSAndroid Build Coastguard Worker	  case $opt_mode in
11299*a67afe4dSAndroid Build Coastguard Worker	  clean)
11300*a67afe4dSAndroid Build Coastguard Worker	    case " $library_names " in
11301*a67afe4dSAndroid Build Coastguard Worker	    *" $dlname "*) ;;
11302*a67afe4dSAndroid Build Coastguard Worker	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
11303*a67afe4dSAndroid Build Coastguard Worker	    esac
11304*a67afe4dSAndroid Build Coastguard Worker	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
11305*a67afe4dSAndroid Build Coastguard Worker	    ;;
11306*a67afe4dSAndroid Build Coastguard Worker	  uninstall)
11307*a67afe4dSAndroid Build Coastguard Worker	    if test -n "$library_names"; then
11308*a67afe4dSAndroid Build Coastguard Worker	      # Do each command in the postuninstall commands.
11309*a67afe4dSAndroid Build Coastguard Worker	      func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1'
11310*a67afe4dSAndroid Build Coastguard Worker	    fi
11311*a67afe4dSAndroid Build Coastguard Worker
11312*a67afe4dSAndroid Build Coastguard Worker	    if test -n "$old_library"; then
11313*a67afe4dSAndroid Build Coastguard Worker	      # Do each command in the old_postuninstall commands.
11314*a67afe4dSAndroid Build Coastguard Worker	      func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1'
11315*a67afe4dSAndroid Build Coastguard Worker	    fi
11316*a67afe4dSAndroid Build Coastguard Worker	    # FIXME: should reinstall the best remaining shared library.
11317*a67afe4dSAndroid Build Coastguard Worker	    ;;
11318*a67afe4dSAndroid Build Coastguard Worker	  esac
11319*a67afe4dSAndroid Build Coastguard Worker	fi
11320*a67afe4dSAndroid Build Coastguard Worker	;;
11321*a67afe4dSAndroid Build Coastguard Worker
11322*a67afe4dSAndroid Build Coastguard Worker      *.lo)
11323*a67afe4dSAndroid Build Coastguard Worker	# Possibly a libtool object, so verify it.
11324*a67afe4dSAndroid Build Coastguard Worker	if func_lalib_p "$file"; then
11325*a67afe4dSAndroid Build Coastguard Worker
11326*a67afe4dSAndroid Build Coastguard Worker	  # Read the .lo file
11327*a67afe4dSAndroid Build Coastguard Worker	  func_source $dir/$name
11328*a67afe4dSAndroid Build Coastguard Worker
11329*a67afe4dSAndroid Build Coastguard Worker	  # Add PIC object to the list of files to remove.
11330*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$pic_object" && test none != "$pic_object"; then
11331*a67afe4dSAndroid Build Coastguard Worker	    func_append rmfiles " $dir/$pic_object"
11332*a67afe4dSAndroid Build Coastguard Worker	  fi
11333*a67afe4dSAndroid Build Coastguard Worker
11334*a67afe4dSAndroid Build Coastguard Worker	  # Add non-PIC object to the list of files to remove.
11335*a67afe4dSAndroid Build Coastguard Worker	  if test -n "$non_pic_object" && test none != "$non_pic_object"; then
11336*a67afe4dSAndroid Build Coastguard Worker	    func_append rmfiles " $dir/$non_pic_object"
11337*a67afe4dSAndroid Build Coastguard Worker	  fi
11338*a67afe4dSAndroid Build Coastguard Worker	fi
11339*a67afe4dSAndroid Build Coastguard Worker	;;
11340*a67afe4dSAndroid Build Coastguard Worker
11341*a67afe4dSAndroid Build Coastguard Worker      *)
11342*a67afe4dSAndroid Build Coastguard Worker	if test clean = "$opt_mode"; then
11343*a67afe4dSAndroid Build Coastguard Worker	  noexename=$name
11344*a67afe4dSAndroid Build Coastguard Worker	  case $file in
11345*a67afe4dSAndroid Build Coastguard Worker	  *.exe)
11346*a67afe4dSAndroid Build Coastguard Worker	    func_stripname '' '.exe' "$file"
11347*a67afe4dSAndroid Build Coastguard Worker	    file=$func_stripname_result
11348*a67afe4dSAndroid Build Coastguard Worker	    func_stripname '' '.exe' "$name"
11349*a67afe4dSAndroid Build Coastguard Worker	    noexename=$func_stripname_result
11350*a67afe4dSAndroid Build Coastguard Worker	    # $file with .exe has already been added to rmfiles,
11351*a67afe4dSAndroid Build Coastguard Worker	    # add $file without .exe
11352*a67afe4dSAndroid Build Coastguard Worker	    func_append rmfiles " $file"
11353*a67afe4dSAndroid Build Coastguard Worker	    ;;
11354*a67afe4dSAndroid Build Coastguard Worker	  esac
11355*a67afe4dSAndroid Build Coastguard Worker	  # Do a test to see if this is a libtool program.
11356*a67afe4dSAndroid Build Coastguard Worker	  if func_ltwrapper_p "$file"; then
11357*a67afe4dSAndroid Build Coastguard Worker	    if func_ltwrapper_executable_p "$file"; then
11358*a67afe4dSAndroid Build Coastguard Worker	      func_ltwrapper_scriptname "$file"
11359*a67afe4dSAndroid Build Coastguard Worker	      relink_command=
11360*a67afe4dSAndroid Build Coastguard Worker	      func_source $func_ltwrapper_scriptname_result
11361*a67afe4dSAndroid Build Coastguard Worker	      func_append rmfiles " $func_ltwrapper_scriptname_result"
11362*a67afe4dSAndroid Build Coastguard Worker	    else
11363*a67afe4dSAndroid Build Coastguard Worker	      relink_command=
11364*a67afe4dSAndroid Build Coastguard Worker	      func_source $dir/$noexename
11365*a67afe4dSAndroid Build Coastguard Worker	    fi
11366*a67afe4dSAndroid Build Coastguard Worker
11367*a67afe4dSAndroid Build Coastguard Worker	    # note $name still contains .exe if it was in $file originally
11368*a67afe4dSAndroid Build Coastguard Worker	    # as does the version of $file that was added into $rmfiles
11369*a67afe4dSAndroid Build Coastguard Worker	    func_append rmfiles " $odir/$name $odir/${name}S.$objext"
11370*a67afe4dSAndroid Build Coastguard Worker	    if test yes = "$fast_install" && test -n "$relink_command"; then
11371*a67afe4dSAndroid Build Coastguard Worker	      func_append rmfiles " $odir/lt-$name"
11372*a67afe4dSAndroid Build Coastguard Worker	    fi
11373*a67afe4dSAndroid Build Coastguard Worker	    if test "X$noexename" != "X$name"; then
11374*a67afe4dSAndroid Build Coastguard Worker	      func_append rmfiles " $odir/lt-$noexename.c"
11375*a67afe4dSAndroid Build Coastguard Worker	    fi
11376*a67afe4dSAndroid Build Coastguard Worker	  fi
11377*a67afe4dSAndroid Build Coastguard Worker	fi
11378*a67afe4dSAndroid Build Coastguard Worker	;;
11379*a67afe4dSAndroid Build Coastguard Worker      esac
11380*a67afe4dSAndroid Build Coastguard Worker      func_show_eval "$RM $rmfiles" 'exit_status=1'
11381*a67afe4dSAndroid Build Coastguard Worker    done
11382*a67afe4dSAndroid Build Coastguard Worker
11383*a67afe4dSAndroid Build Coastguard Worker    # Try to remove the $objdir's in the directories where we deleted files
11384*a67afe4dSAndroid Build Coastguard Worker    for dir in $rmdirs; do
11385*a67afe4dSAndroid Build Coastguard Worker      if test -d "$dir"; then
11386*a67afe4dSAndroid Build Coastguard Worker	func_show_eval "rmdir $dir >/dev/null 2>&1"
11387*a67afe4dSAndroid Build Coastguard Worker      fi
11388*a67afe4dSAndroid Build Coastguard Worker    done
11389*a67afe4dSAndroid Build Coastguard Worker
11390*a67afe4dSAndroid Build Coastguard Worker    exit $exit_status
11391*a67afe4dSAndroid Build Coastguard Worker}
11392*a67afe4dSAndroid Build Coastguard Worker
11393*a67afe4dSAndroid Build Coastguard Workerif test uninstall = "$opt_mode" || test clean = "$opt_mode"; then
11394*a67afe4dSAndroid Build Coastguard Worker  func_mode_uninstall ${1+"$@"}
11395*a67afe4dSAndroid Build Coastguard Workerfi
11396*a67afe4dSAndroid Build Coastguard Worker
11397*a67afe4dSAndroid Build Coastguard Workertest -z "$opt_mode" && {
11398*a67afe4dSAndroid Build Coastguard Worker  help=$generic_help
11399*a67afe4dSAndroid Build Coastguard Worker  func_fatal_help "you must specify a MODE"
11400*a67afe4dSAndroid Build Coastguard Worker}
11401*a67afe4dSAndroid Build Coastguard Worker
11402*a67afe4dSAndroid Build Coastguard Workertest -z "$exec_cmd" && \
11403*a67afe4dSAndroid Build Coastguard Worker  func_fatal_help "invalid operation mode '$opt_mode'"
11404*a67afe4dSAndroid Build Coastguard Worker
11405*a67afe4dSAndroid Build Coastguard Workerif test -n "$exec_cmd"; then
11406*a67afe4dSAndroid Build Coastguard Worker  eval exec "$exec_cmd"
11407*a67afe4dSAndroid Build Coastguard Worker  exit $EXIT_FAILURE
11408*a67afe4dSAndroid Build Coastguard Workerfi
11409*a67afe4dSAndroid Build Coastguard Worker
11410*a67afe4dSAndroid Build Coastguard Workerexit $exit_status
11411*a67afe4dSAndroid Build Coastguard Worker
11412*a67afe4dSAndroid Build Coastguard Worker
11413*a67afe4dSAndroid Build Coastguard Worker# The TAGs below are defined such that we never get into a situation
11414*a67afe4dSAndroid Build Coastguard Worker# where we disable both kinds of libraries.  Given conflicting
11415*a67afe4dSAndroid Build Coastguard Worker# choices, we go for a static library, that is the most portable,
11416*a67afe4dSAndroid Build Coastguard Worker# since we can't tell whether shared libraries were disabled because
11417*a67afe4dSAndroid Build Coastguard Worker# the user asked for that or because the platform doesn't support
11418*a67afe4dSAndroid Build Coastguard Worker# them.  This is particularly important on AIX, because we don't
11419*a67afe4dSAndroid Build Coastguard Worker# support having both static and shared libraries enabled at the same
11420*a67afe4dSAndroid Build Coastguard Worker# time on that platform, so we default to a shared-only configuration.
11421*a67afe4dSAndroid Build Coastguard Worker# If a disable-shared tag is given, we'll fallback to a static-only
11422*a67afe4dSAndroid Build Coastguard Worker# configuration.  But we'll never go from static-only to shared-only.
11423*a67afe4dSAndroid Build Coastguard Worker
11424*a67afe4dSAndroid Build Coastguard Worker# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
11425*a67afe4dSAndroid Build Coastguard Workerbuild_libtool_libs=no
11426*a67afe4dSAndroid Build Coastguard Workerbuild_old_libs=yes
11427*a67afe4dSAndroid Build Coastguard Worker# ### END LIBTOOL TAG CONFIG: disable-shared
11428*a67afe4dSAndroid Build Coastguard Worker
11429*a67afe4dSAndroid Build Coastguard Worker# ### BEGIN LIBTOOL TAG CONFIG: disable-static
11430*a67afe4dSAndroid Build Coastguard Workerbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
11431*a67afe4dSAndroid Build Coastguard Worker# ### END LIBTOOL TAG CONFIG: disable-static
11432*a67afe4dSAndroid Build Coastguard Worker
11433*a67afe4dSAndroid Build Coastguard Worker# Local Variables:
11434*a67afe4dSAndroid Build Coastguard Worker# mode:shell-script
11435*a67afe4dSAndroid Build Coastguard Worker# sh-indentation:2
11436*a67afe4dSAndroid Build Coastguard Worker# End:
11437